* [azure-core-cpp] Update to 1.8.0
## 1.8.0 (2023-02-02)
### Features Added
- Added support for parsing space character in place of 'T' in RFC3339 DateTimes.
- Added support for HTTP proxy servers, both unauthenticated and with basic authentication.
- Added universal support for several TLS options:
- Added the ability to set the expected TLS root certificate for TLS connection (useful if a proxy server uses a TLS certificate that is not chained to a known root).
- Added the ability to enable TLS certificate revocation list checks (off by default).
- For libcurl only: Allow TLS connection to succeed if CRL retrieval fails.
- *NOTE*: This change only applies if libcurl is built using the OpenSSL crypto backend. It does NOT apply if libcurl uses the schannel (Windows default) or SecureTransport (macOS/iOS default).
### Breaking Changes
- Changed the name of several distributed tracing HTTP span attributes:
- `requestId` is renamed to `az.client_request_id`
- `serviceRequestId` is renamed to `az.service_request_id`
- Bearer token authentication will not work for endpoint URL protocol schemes other than `"https"`. This ensures token security and is consistent with the Azure SDKs for other languages.
- Removed `noexcept` specification from `Azure::DateTime::clock::now()`.
- Updated retry policy timeouts to conform to Azure guidelines.
- The default delay between retries is changed from 4 seconds to 800ms.
- The maximum retry delay is changed from 2 minutes to 60 seconds (one minute).
If the original behavior is desired, customers can adjust these timeouts by changing the `RetryDelay` and `MaxRetryDelay` fields in the `RetryOptions` structure.
### Bugs Fixed
- Fixed bug in WinHTTP client which caused the `IgnoreUnknownCertificateAuthority` and `EnableCertificateRevocationListCheck` fields to be ignored if they were passed in from `TransportOptions`.
- [[#4206]](https://github.com/Azure/azure-sdk-for-cpp/issues/4206) Fixed connectivity issues in libcurl HTTP transport which can occur if a TCP connection is dropped prematurely. (A community contribution, courtesy of _[ahojnnes](https://github.com/ahojnnes)_)
### Other Changes
- Update distributed tracing attributes to align with current Azure Distributed Tracing Conventions attributes and names.
- Added the ability to consume version 1.1.1n of OpenSSL.
- Added support for Identity token caching, and for configuring token refresh offset in `BearerTokenAuthenticationPolicy`.
- Improved cancellation support for WinHTTP transport.
### Acknowledgments
Thank you to our developer community members who helped to make Azure Core better with their contributions to this release:
- Johannes Schonberger _([GitHub](https://github.com/ahojnnes))_
* [azure-core-tracing-opentelemetry-cpp] Update to 1.0.0-beta.4
## 1.0.0-beta.4 (2023-02-02)
### Features Added
- Aligned OpenTelemetry tracing infrastructure with OpenTelemetry 1.17.0 conventions for use with Azure Monitor.
### Other Changes
- Suppress several warnings from opentelemetry-cpp package.
* [tiff] Fix zstd plus minor changes (#28530)
* Use official zstd config
* Require packages for features
* Test zstd in CI
* Enable libtiffxx on arm
* Update versions
* Assume ZSTD_decompressStream
* Don't put targets into TIFF_LIBRARIES
* [qt5-imageformats] Use libtiff-4.pc
* [zstd] Revise thread lib export
* Mark link libs with LINK_ONLY
* Revert "[zstd] Revise thread lib export"
This reverts commit a99e6378a6.
* [qt5-imageformats] Get all tiff lflags
* [gdk-pixbuf] Use libtiff-4 pc file for msvc
* [qtimageformat] Workaround for QTBUG-95052
* Rename ableton to abletonlink
* Add meta-port for users using the old ableton port
---------
Co-authored-by: Kai Pastor <dg0yt@darc.de>
Co-authored-by: Martijn Otto <martijn@resolume.com>
* [attr] Add new port
* Use VERSION
Co-authored-by: Frank <65999885+FrankXie05@users.noreply.github.com>
* Update version database
Co-authored-by: Frank <65999885+FrankXie05@users.noreply.github.com>
* [angle] Propagate transitive dependencies
* [angle] Add usage info for unofficial CMake targets
Only the unofficial::angle::libGLESv2 and unofficial::angle::libEGL
targets are meant to be used, because they are the targets that no other
depends on.
Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com>
* [ideviceinstaller] Add support !static
* Modify port-version
* x-add-version
* Add getopt as a dependence of argtable2
* Use version
* x-add-version
* Remove space
* Add license
* Fix format error
* x-add-version
* update version
* fix argtable3
* x-add-version
* fix argtable3
* version
* fix gdcm
* format portfile.cmake
* update version
* format vcpkg.json
* x-add-version
* format portfile.cmake
* x-add-version
* Update license
* x-add-version
* Again
* Mistake
Co-authored-by: Lily Wang <494550702@qq.com>
Co-authored-by: Lily Wang <94091114+LilyWangLL@users.noreply.github.com>
* Add AMF port
* Add AMF port and its versions
* add amf port - ci
* add amf port - format
* add amf port - versions
* rename amf to amd-amf
* version
* add ffmpeg qsv port - fix
* add ffmpeg qsv port - fix
* add ffmpeg qsv port - fix indent
* add space line
* update version
* remove space line
* remove space
Co-authored-by: Jonliu1993 <13720414433@163.com>
* [curl] Update to 7.86.0
* [azure-core-cpp] Add missing Ws2_32.lib.
Filed upstream as https://github.com/Azure/azure-sdk-for-cpp/pull/4127
* [aws-sdk-cpp] Lock the selected curl features.
Co-authored-by: FrankXie <v-frankxie@microsoft.com>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* [ace] Upgrade to 7.0.10
* [ace] Upgrade to ACE 7.0.10
* [ace] Upgrade to ace 7.0.10
* Use VERSION and add quotes.
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* Update antlr4 to version 4.11.1 and use GitHub instead of website downloads
* Remove unused patch files
* Run x-add-version
* Remove single-use variable and enforce vcpkg version
* x-add-version
* Use VERSION variable which is generated by vcpkg from vcpkg.json
* Add quotes, remove variable-used-once.
* Minimize patch.
* Update version database.
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* [arrow] Update Apache Arrow to 10.0.0
* Update versions
* Simplify and make more robust
* Use vcpkg_check_features()
* Use lower case for CMake package name
* Update version
* bump qtbase
* add qt3d
* format manifest
* test features in CI
* pass ci baseline stuff
* vulkan is skip in ci so cannot force it.
* remove extra ,
* fix deps
* try to fix promotion
* gstreamer adjustments.
* fix gstreamer on linux
* fix gstreamer stuff
* fix x264 api import macro
* fix gst-rsp-server
* correctly replace
* promote targets....
* enable arm64 qtwebengine
* --trace-expand
* install wrapper for egl.
* add newline
* remove opengl from skip list
* add gl to link
* another try
* retry again
* test dynamic angle linkage
* retry
* link XNVCtrl
* retry
* add libxnvctrl
* retry
* retry again...
* move wrapper to angle
* revert changes to egl-reg
* more debugging
* try again
* fix stuff
* add missing ,
* egl stuff
* wrapper stuff
* fix angle
* remove double dep
* remove libxnvctrl
* format manifest
* revert trace
* bump version
* bump v
* v db
* remove trace
* v db
* refine supports
* v db
* remove qtmultimedia from baseline
* [azure-storage-blobs-cpp] Update to 12.6.2
## 12.6.2 (2022-10-11)
### Other Changes
- No public changes in this release.
* [azure-storage-files-shares-cpp] Update to 12.3.0
## 12.3.0 (2022-10-11)
### Features Added
- New features in `12.3.0-beta.1` are now generally available.
* [azure-security-keyvault-keys-cpp] Update to 4.3.0
## 4.3.0 (2022-10-11)
### Features Added
- Keyvault 7.3 support added for Keys.
* [azure-security-keyvault-secrets-cpp] Update to 4.1.0
## 4.1.0 (2022-10-11)
### Features Added
- Keyvault 7.3 support added for Secrets.
* not-specified
* [azure-storage-blobs-cpp] Update to 12.6.1
## 12.6.1 (2022-09-16)
### Other changes
- No public changes in this release.
* update version database
Co-authored-by: Jinming Hu <jinmhu@microsoft.com>
* [azure-storage-common-cpp] Update to 12.3.0
## 12.3.0 (2022-09-06)
### Features Added
- Features in `12.3.0-beta.1` are now generally available.
* [azure-storage-blobs-cpp] Update to 12.6.0
## 12.6.0 (2022-09-06)
### Features Added
- Features in `12.6.0.beta.1` are now generally available.
### Bugs Fixed
- Empty file or existing file won't be created/overwritten if the blob to be downloaded doesn't exist.
Since it first tries to locate the directory and then unconditionally
adds a subdirectory to it, running this script twice resulted in an
incorrect path (the last node was added multiple times).
We now check whether the script already ran and then abort.
Co-authored-by: Martijn Otto <martijn@resolume.com>
* start of argon2 port
* continue development
* attempt to compile with optimization
* add feature to enable hardware optimizations
* fix symbol visibility
* set symbol visibility
* add pkg-config
* use libs.private for threading
* use last release
* start of argon2 port
* continue development
* attempt to compile with optimization
* add feature to enable hardware optimizations
* fix symbol visibility
* set symbol visibility
* add pkg-config
* use libs.private for threading
* use last release
* publish the command line tool
* Argon2 port
* add version info for argon2
* use preferred vcpkg cmake functions
* update version
* fix compile of x64-windows-static
* update version
* Update ports/argon2/portfile.cmake
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* Update ports/argon2/portfile.cmake
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* install pdbs
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* add argon2 licence
* use target-specific functions for link libraries
* use upstream pkgconfig file
* export library for cmake
* update version hash
* don't use deprecated vcpkg_fixup_cmake_targets
* fix cmake integration
* update version
* fix thread.c includes when building on mingw32
* export header path and thread dependency properly
* don't export the argon2_tool
* fix output clash between library and tool on mingw
* use declspec for symbol visibility with mingw
* update version
* fix missing PDBs for library due to tool/library filename clash
* update argon2 version
* quote filenames for safety
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* update arong2 version
* note upstream PR for visibility patch
* always build with hardware optimizations if supported by compiler
* update argon2 version
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* Use expressive patch name
* Fix BROTLI_INCLUDE_DIR import
* glog is unused (off by default)
* Cleanup portfile, fix 'arrow[core]'
* Add CI test port
* Update to 8.0.1 [skip actions]
* Declare dependency source for substituted packages
* Trim obsolete patch chunks
* Fix static link libs export
* Use substituted targets directly, for proper export
* Fix snappy lib export to pc file
* Update versions
* Add license for test port
* Add =pass entries for the new "vcpkg-ci-Xxx" port.
Co-authored-by: Billy O'Neal <bion@microsoft.com>
* [opentelemetry-cpp] update opentelemetry-cpp to v1.4.1
* enable logs and metrics preview
* update versions database
* update azure-core-tracing-opentelemetry-cpp to use opentelemetry-cpp 1.4.1
* azure-core-tracing-opentelemetry-cpp: remove hard depdency on opentelemetry version instead of using 1.4.1
* Nitpick on using identical patch file.
Co-authored-by: João Soares <joao.soares@xpi.com.br>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
## 1.0.0 (2022-07-07)
### Breaking Changes
- Renamed `Version` field to `ApiVersion` and removed the `ServiceVersion` enumeration.
Co-authored-by: Victor Romero <viromer@microsoft.com>
* [azure-core-tracing-opentelemetry-cpp] Update to 1.0.0-beta.2
## 1.0.0-beta.2 (2022-06-30)
### Breaking Changes
- The `Azure::Core::Tracing::OpenTelemetry::OpenTelemetryProvider` type can only be instantiated via a factory method: `OpenTelemetryProvider::Create()`.
### Other Changes
- Removed `_internal` APIs from the public API surface. Also removed most of the `_internal` APIs from the public `opentelemetry.hpp` headers.
* [azure-core-cpp] Update to 1.7.0
## 1.7.0 (2022-06-30)
### Features Added
- Added prototypes and initial service support for Distributed Tracing.
* Initial port for Ableton Link
* Added missing versions/a-/ableton.json file
* Added double quotes to all relative paths in portfile.cmake
* Removed CMakeLists.txt file from the installed files
* Use Catch2 only in CMakeLists.txt, when test features are enabled
* Made find_package asio conditional too
## 1.0.0-beta.3 (2022-06-07)
### Breaking Changes
- `ValueToSend` field in `TpmAttestationOptions` becomes `Payload`.
- `AddIsolatedModeCertificatesOptions` becomes `AddIsolatedModeCertificateOptions`
- `RemoveIsolatedModeCertificatesOptions` becomes `RemoveIsolatedModeCertificateOptions`
- Renamed `AttestEnclaveOptions` to `AttestSgxEnclaveOptions` and `AttestOpenEnclaveOptions`.
- `AttestationClient` and `AttestationAdministrationClient` creation is now done using the factory method `AttestationClient::Create()` and `AttestationAdministrationClient::Create()`.
* Bump version to 8.0.0
* Update version files
* Update patches
* Update version files
* Add patch for MSVC 2022 compat
* Update version files
* [arrow] Minimize dependencies patch
* [arrow] Fix issue with getting brotli include dir for dynamic targets
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* Fix angle macos build
* Fix angle port version
* Fix angle port version
* Fix angle_common source files for macos
* upgrade angle port version to #4
* Fix angle port version, again...
* Fix angle port version, again, again...
## 1.0.0-beta.2 (2022-05-10)
### Breaking Changes
- Renamed `AttestationOpenIdMetadata` type to `OpenIdMetadata`.
- Renamed `AttestationSigningCertificateResult` type to `TokenValidationCertificateResult` to more accurately reflect the
purpose of the type.
- Removed the `AttestationTokenBase` class and moved its contents to the `AttestationToken` class.
- Empty `AttestationToken` types are now represented with `AttestationToken<void>` rather than `AttestationToken<>` to more idiomatically express the idea of a nullable attestation token.
- Renamed `RuntimeClaims` field to `RunTimeClaims` to align with `InitTimeClaims` type name; standardized spelling of
`InitTimeClaims`.
- Changed input parameter to `AttestTpm` to be `AttestTpmOptions` instead of `std::string`.
- Changed output parameter of `AttestTpm` to be `TpmAttestationResult` instead of `std::string`.
- Renamed `AttestationTokenValidationOptions::ValidationTimeSlack` to `AttestationTokenValidationOptions::TimeValidationSlack`
to improve consistency with other attestation SDKs.
- Removed the unused `AttestationValidationCollateral` API.
- Renamed `AttestOptions` to `AttestEnclaveOptions`
- Renamed `TokenValidationOptions` field in various API Options structures to be `TokenValidationOptionsOverride` to better
reflect the semantics of the field.
- Renamed `PolicyCertificate` types to `IsolatedMode`.
- `PolicyCertificateModificationResult` becomes `IsolatedModeCertificateModificationResult`
- `PolicyCertificateListResult` becomes `IsolatedModeCertificateListResult`
- `GetPolicyManagementCertificateOptions` becomes `GetIsolatedModeCertificatesOptions`
- `AddPolicyManagementCertificatesOptions` becomes `AddIsolatedModeCertificatesOptions`
- `RemovePolicyManagementCertificatesOptions` becomes `RemoveIsolatedModeCertificatesOptions`
- `AttestationAdministrationClient::GetPolicyManagementCertificates` becomes `AttestationAdministrationClient::GetIsolatedModeCertificates`.
- `AttestationAdministrationClient::AddPolicyManagementCertificate` becomes `AttestationAdministrationClient::AddIsolatedModeCertificate`.
- `AttestationAdministrationClient::RemovePolicyManagementCertificate` becomes `AttestationAdministrationClient::RemoveIsolatedModeCertificate`.
- Removed `ClientVersion` API from `AttestationClient` and `AttestationAdministrationClient`
### Other Changes
- Added `Endpoint` property to `AttestationClient` and `AttestationAdministrationClient`
* [zlib] Use readme as copyright
* [soil2] update to 1.3.0
* [bento4] update to 1.6.0-639
* [bento4] fix version db
* [zlib] Format manifest
* [anglescript] Remove local license
* [bustache] Update to master
* [bustache] Don't update
* version
* version
* remove version string
* remove v
* version
* version
* Fix version database.
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* synchronize cmake build scripts.
* version stuff
* fix REMOVE_ITEM and add license
* format manifest
* update version
* use LOGFILE_BASE
* version update
* readd PREFER_NINJA and print a warning that it is deprecated for vcpkg_cmake_configure
* version stuff
* sync build_cmake
* only turn off ninja on windows
* add Z_VCPKG_CHAINLOAD_TOOLCHAIN_FILE
* use z_vcpkg_select_default_vcpkg_chainload_toolchain in meson
* remove VCPKG_CMAKE_GENERATOR
* version stuff
* reduce error to warning
* remove VCPKG_CMAKE_GENERATOR form configure_cmake
* version stuff
* version stuff
* use build_dir_<config>
* version stuff
* use ninja variable insead of pure ninja cmd
* version bump
* use ninja variable instead of calling ninja directly
* acquire ninja
* move the acquire.
* remove setting of cmake_prefix_path
* version stuff
* bump version date
* version stuff
* bump ashes baseline
* remove VCPKG_CMAKE_GENERATOR reference
* fix wrong variable reference due to refactor
* version stuff
Co-authored-by: Alexander Neumann <you@example.com>
Co-authored-by: Billy Robert O'Neal <bion@microsoft.com>
* Update aricpp to 1.1.2
* Update CI baseline
* Mark as header-only, remove vcpkg_copy_pdbs
* Update CI baseline
Co-authored-by: chausner <chausner@users.noreply.github.com>
* [toolchain windows] set CMAKE_SYSTEM_NAME and CMAKE_SYSTEM_PROCESSOR
In specific, I did this for the cpuinfo PR - I realized the reason
that cpuinfo doesn't support arm64 windows cross compilation is because
we don't set CMAKE_SYSTEM_PROCESSOR.
* correctly set CMAKE_CROSSCOMPILING
* start fixin libraries
* more changes:
- gainput: remove line
- glog: remove try_run when cross compiling
- windows.cmake: set CMAKE_SYSTEM_VERSION
* more patches
- mapnik: set BOOST_REGEX_HAS_ICU to avoid check_cxx_source_runs
- orc: set HAS_PRE_1970 and HAS_POST_2038 for same
- seal: change out check_cxx_source_runs for check_cxx_source_compiles
* more changes
* fix x86-windows
* fix qpid-proton, glog
* build corrade-rc
* fix x64-uwp ports
* forgot to _actually_ always build corrade-rc .,.
* Replay #22831
* Dedupe CMAKE_SYSTEM_NAME settings.
* Add quotes for corrade_rc_param
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* Update version DB.
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
* [atkmm, pangomm] Move to GitLab
* version
* Add SHA
* version
* Enable maintainer mode
* version
* [mmcommon] New port
* Format
* Format
* version
* Hash
* version
* Python
* version
* Remove mmcommon
* Keep distfile
* version
* Update download file
* Update hash
* version
* [azure-storage-common-cpp] Update to 12.2.3
## 12.2.3 (2022-04-06)
### Bugs Fixed
- Fixed a bug where we got error when XML request body is too big.
* [azure-storage-blobs-cpp] Update to 12.4.0
## 12.4.0 (2022-04-06)
### Other changes
- No public changes in this release.
* [azure-storage-queues-cpp] Update to 12.0.0
## 12.0.0 (2022-04-06)
### New Features
- This release includes all features from beta.1 to beta.4. This is the first stable release of a ground-up rewrite of our client libraries to ensure consistency, idiomatic design, productivity and an excellent developer experience. It was created following the [Azure SDK Design Guideline for C++](https://azure.github.io/azure-sdk/cpp_introduction.html).
* remove version comparison on openssl
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
* [argtable3] actually don't build examples
* version
* Fix version
* version
* switch back to "version"
* after 0 comes 1!
* ... and after 1 comes 2!
* version
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
* Create package openssl3
* Create package openssl3
* Delete openssl3
* update version to 3.0.1
* Delete openssl3
* Update manifests to 3.0.1
* Fix download url
* Update port version
* Update version
* Remove wrong port version
* Fix errors
* Fix license
* Remove empty folders
* Fix post-build errors
* Add license field
* Fix cmake for uwp
* Remove patch file
* format manifest
* Update version file
* Fix port version
* version
* Test: remove vcvarsall
* version
* fix version
* version
* Fix docs in cmake files as well
* wrong branch
* Add port openssl-1
* Fix directories
* delete openssl-1
* [openssl-1] Add port
* version
* Fix UWP build
* version
* migrate uthenticode
* version
* Fix UWP build for librabbitmq
* version
* Fix UWP warnings
* version
* Fix patch
* version
* Disable C4996 on UWP
* version
* [idevicerestore] disable C4996
* remove warning fixes
* Revert uthenticode
* Final newlines
* version
* Remove winsock replace
* version
* [libwebsockets] Disable /WX on Windows
* version
* Typo
* version
* Disable C4996 in patch instead
* version
* [luasec] Use openssl-1
* version
* revert luasec
* migrate luasec
* version
* revert winsock
* version
* revert winsock
* version
* revert revert
* version
* Fix platform for luasec
* Fix supports
* version
* .
* version
* uthenticode
* libmysql
* azure-c-shared-utility
* version
* remove azure-c-shared-utility
* revert all
* uthenticode
* version
* azure
* version
* libmysql
* version
* remove mysql
* [libdatachannel] disable warnings on UWP
* version
* Fix patches
* version
* Add openssl-1 to CI baseline
* openssl-1: check if copyright exists
* version
* revert azure
* [libssh2] disable c4996
* version
* [aws-sdk-cpp] -Wno-deprecated
* version
* fix aws patch
* version
* fix aws patch
* version
* [qpid-proton] disable warning
* version
* Fix patch
* version
* [librtmp] disable c4996
* version
* [libu2f-server] disablec4996
* switch version scheme
* version
* [idevicerestore] disable c4996
* version
* typo
* version
* fix cmake
* version
* fix cmake again
* version
* [uthenticode] patch to support Openssl 3
* version
* fix idevicerestore
* version
* search for conflicting copyrights
* version
* Fix luasec
* fix version
* version
* fix azure
* version
* Remove debug stuff
* version
* [open62541] patch
* update port version
* version
* [libmysql] patch
* version
* Fix patch
* version
* Format openssl
* Format openssl portfiles
* Check for conflicting copyrights
* Fix typo
* Rename openssl-1 to openssl1
* Rename openssl-1 to openssl1
* version
* Update ci baseline
* version
* resolve conflicting port versions
* version
* apply latest openssl security fix
* version
* Fix qpid-proton
* version
* retrigger Bbuild of qtbase
* version
* revert qtbase
* Remove openssl1
* version
* version
* fix openssl_version_fix
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
## 1.5.0 (2022-03-31)
### Features Added
- When a `RequestFailedException` exception is thrown, the `what()` method now includes information about the HTTP request which failed.
- Adding option `WinHttpTransportOptions.IgnoreUnknownCertificateAuthority`. It can be used to disable verifying server certificate for the `WinHttpTransport`.
### Breaking Changes
- Enforce TLS 1.2 or greater for `CurlTransport` and `WinHttpTransport`.
### Other Changes
- Improve output message for `Azure::Core::Http::TransportException`.