From a98c2a4542e19ce4fb632bc32fc47c18273161cc Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Sun, 1 Mar 2026 19:32:52 -0600 Subject: convert from PHP to Go --- vendor/autoload.php | 7 - vendor/composer/ClassLoader.php | 445 -- vendor/composer/LICENSE | 21 - vendor/composer/autoload_classmap.php | 17 - vendor/composer/autoload_files.php | 17 - vendor/composer/autoload_namespaces.php | 11 - vendor/composer/autoload_psr4.php | 17 - vendor/composer/autoload_real.php | 73 - vendor/composer/autoload_static.php | 113 - vendor/composer/installed.json | 748 --- vendor/eher/oauth/.gitignore | 4 - vendor/eher/oauth/.travis.yml | 9 - vendor/eher/oauth/README.md | 3 - vendor/eher/oauth/composer.json | 17 - vendor/eher/oauth/phpunit.xml.dist | 7 - vendor/eher/oauth/src/Eher/OAuth/Consumer.php | 19 - vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php | 31 - .../eher/oauth/src/Eher/OAuth/OAuthDataStore.php | 30 - .../eher/oauth/src/Eher/OAuth/OAuthException.php | 9 - vendor/eher/oauth/src/Eher/OAuth/OAuthServer.php | 225 - vendor/eher/oauth/src/Eher/OAuth/PlainText.php | 36 - vendor/eher/oauth/src/Eher/OAuth/Request.php | 264 - vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php | 70 - .../eher/oauth/src/Eher/OAuth/SignatureMethod.php | 40 - vendor/eher/oauth/src/Eher/OAuth/Token.php | 34 - vendor/eher/oauth/src/Eher/OAuth/Util.php | 155 - vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php | 18 - vendor/eher/oauth/test/Eher/OAuth/RequestTest.php | 40 - vendor/guzzlehttp/guzzle/.php_cs | 23 - vendor/guzzlehttp/guzzle/CHANGELOG.md | 1338 ----- vendor/guzzlehttp/guzzle/Dockerfile | 18 - vendor/guzzlehttp/guzzle/LICENSE | 19 - vendor/guzzlehttp/guzzle/README.md | 90 - vendor/guzzlehttp/guzzle/UPGRADING.md | 1203 ---- vendor/guzzlehttp/guzzle/composer.json | 59 - vendor/guzzlehttp/guzzle/src/Client.php | 501 -- vendor/guzzlehttp/guzzle/src/ClientInterface.php | 87 - vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php | 316 -- .../guzzle/src/Cookie/CookieJarInterface.php | 84 - .../guzzlehttp/guzzle/src/Cookie/FileCookieJar.php | 91 - .../guzzle/src/Cookie/SessionCookieJar.php | 72 - vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php | 403 -- .../guzzle/src/Exception/BadResponseException.php | 27 - .../guzzle/src/Exception/ClientException.php | 9 - .../guzzle/src/Exception/ConnectException.php | 37 - .../guzzle/src/Exception/GuzzleException.php | 23 - .../src/Exception/InvalidArgumentException.php | 7 - .../guzzle/src/Exception/RequestException.php | 192 - .../guzzle/src/Exception/SeekException.php | 27 - .../guzzle/src/Exception/ServerException.php | 9 - .../src/Exception/TooManyRedirectsException.php | 6 - .../guzzle/src/Exception/TransferException.php | 6 - .../guzzlehttp/guzzle/src/Handler/CurlFactory.php | 585 -- .../guzzle/src/Handler/CurlFactoryInterface.php | 27 - .../guzzlehttp/guzzle/src/Handler/CurlHandler.php | 45 - .../guzzle/src/Handler/CurlMultiHandler.php | 219 - .../guzzlehttp/guzzle/src/Handler/EasyHandle.php | 92 - .../guzzlehttp/guzzle/src/Handler/MockHandler.php | 195 - vendor/guzzlehttp/guzzle/src/Handler/Proxy.php | 55 - .../guzzle/src/Handler/StreamHandler.php | 545 -- vendor/guzzlehttp/guzzle/src/HandlerStack.php | 277 - vendor/guzzlehttp/guzzle/src/MessageFormatter.php | 185 - vendor/guzzlehttp/guzzle/src/Middleware.php | 254 - vendor/guzzlehttp/guzzle/src/Pool.php | 134 - .../guzzle/src/PrepareBodyMiddleware.php | 111 - .../guzzlehttp/guzzle/src/RedirectMiddleware.php | 255 - vendor/guzzlehttp/guzzle/src/RequestOptions.php | 263 - vendor/guzzlehttp/guzzle/src/RetryMiddleware.php | 128 - vendor/guzzlehttp/guzzle/src/TransferStats.php | 126 - vendor/guzzlehttp/guzzle/src/UriTemplate.php | 237 - vendor/guzzlehttp/guzzle/src/Utils.php | 92 - vendor/guzzlehttp/guzzle/src/functions.php | 334 -- vendor/guzzlehttp/guzzle/src/functions_include.php | 6 - vendor/guzzlehttp/promises/CHANGELOG.md | 65 - vendor/guzzlehttp/promises/LICENSE | 19 - vendor/guzzlehttp/promises/Makefile | 13 - vendor/guzzlehttp/promises/README.md | 504 -- vendor/guzzlehttp/promises/composer.json | 34 - .../guzzlehttp/promises/src/AggregateException.php | 16 - .../promises/src/CancellationException.php | 9 - vendor/guzzlehttp/promises/src/Coroutine.php | 151 - vendor/guzzlehttp/promises/src/EachPromise.php | 229 - .../guzzlehttp/promises/src/FulfilledPromise.php | 82 - vendor/guzzlehttp/promises/src/Promise.php | 280 - .../guzzlehttp/promises/src/PromiseInterface.php | 93 - .../guzzlehttp/promises/src/PromisorInterface.php | 15 - vendor/guzzlehttp/promises/src/RejectedPromise.php | 87 - .../guzzlehttp/promises/src/RejectionException.php | 47 - vendor/guzzlehttp/promises/src/TaskQueue.php | 66 - .../guzzlehttp/promises/src/TaskQueueInterface.php | 25 - vendor/guzzlehttp/promises/src/functions.php | 457 -- .../guzzlehttp/promises/src/functions_include.php | 6 - vendor/guzzlehttp/psr7/CHANGELOG.md | 246 - vendor/guzzlehttp/psr7/LICENSE | 19 - vendor/guzzlehttp/psr7/README.md | 745 --- vendor/guzzlehttp/psr7/composer.json | 49 - vendor/guzzlehttp/psr7/src/AppendStream.php | 241 - vendor/guzzlehttp/psr7/src/BufferStream.php | 137 - vendor/guzzlehttp/psr7/src/CachingStream.php | 138 - vendor/guzzlehttp/psr7/src/DroppingStream.php | 42 - vendor/guzzlehttp/psr7/src/FnStream.php | 158 - vendor/guzzlehttp/psr7/src/InflateStream.php | 52 - vendor/guzzlehttp/psr7/src/LazyOpenStream.php | 39 - vendor/guzzlehttp/psr7/src/LimitStream.php | 155 - vendor/guzzlehttp/psr7/src/MessageTrait.php | 213 - vendor/guzzlehttp/psr7/src/MultipartStream.php | 153 - vendor/guzzlehttp/psr7/src/NoSeekStream.php | 22 - vendor/guzzlehttp/psr7/src/PumpStream.php | 165 - vendor/guzzlehttp/psr7/src/Request.php | 151 - vendor/guzzlehttp/psr7/src/Response.php | 154 - vendor/guzzlehttp/psr7/src/Rfc7230.php | 18 - vendor/guzzlehttp/psr7/src/ServerRequest.php | 376 -- vendor/guzzlehttp/psr7/src/Stream.php | 267 - .../guzzlehttp/psr7/src/StreamDecoratorTrait.php | 149 - vendor/guzzlehttp/psr7/src/StreamWrapper.php | 161 - vendor/guzzlehttp/psr7/src/UploadedFile.php | 316 -- vendor/guzzlehttp/psr7/src/Uri.php | 760 --- vendor/guzzlehttp/psr7/src/UriNormalizer.php | 216 - vendor/guzzlehttp/psr7/src/UriResolver.php | 219 - vendor/guzzlehttp/psr7/src/functions.php | 899 --- vendor/guzzlehttp/psr7/src/functions_include.php | 6 - vendor/paragonie/random_compat/LICENSE | 22 - vendor/paragonie/random_compat/build-phar.sh | 5 - vendor/paragonie/random_compat/composer.json | 34 - .../random_compat/dist/random_compat.phar.pubkey | 5 - .../dist/random_compat.phar.pubkey.asc | 11 - vendor/paragonie/random_compat/lib/random.php | 32 - .../paragonie/random_compat/other/build_phar.php | 57 - vendor/paragonie/random_compat/psalm-autoload.php | 9 - vendor/paragonie/random_compat/psalm.xml | 19 - vendor/psr/http-message/CHANGELOG.md | 36 - vendor/psr/http-message/LICENSE | 19 - vendor/psr/http-message/README.md | 13 - vendor/psr/http-message/composer.json | 26 - vendor/psr/http-message/src/MessageInterface.php | 187 - vendor/psr/http-message/src/RequestInterface.php | 129 - vendor/psr/http-message/src/ResponseInterface.php | 68 - .../http-message/src/ServerRequestInterface.php | 261 - vendor/psr/http-message/src/StreamInterface.php | 158 - .../psr/http-message/src/UploadedFileInterface.php | 123 - vendor/psr/http-message/src/UriInterface.php | 323 -- vendor/ralouphie/getallheaders/LICENSE | 21 - vendor/ralouphie/getallheaders/README.md | 27 - vendor/ralouphie/getallheaders/composer.json | 26 - .../ralouphie/getallheaders/src/getallheaders.php | 46 - vendor/symfony/polyfill-intl-idn/Idn.php | 915 ---- vendor/symfony/polyfill-intl-idn/Info.php | 23 - vendor/symfony/polyfill-intl-idn/LICENSE | 19 - vendor/symfony/polyfill-intl-idn/README.md | 12 - .../Resources/unidata/DisallowedRanges.php | 375 -- .../polyfill-intl-idn/Resources/unidata/Regex.php | 24 - .../Resources/unidata/deviation.php | 8 - .../Resources/unidata/disallowed.php | 2638 --------- .../Resources/unidata/disallowed_STD3_mapped.php | 308 -- .../Resources/unidata/disallowed_STD3_valid.php | 71 - .../Resources/unidata/ignored.php | 273 - .../polyfill-intl-idn/Resources/unidata/mapped.php | 5778 -------------------- .../polyfill-intl-idn/Resources/unidata/virama.php | 65 - vendor/symfony/polyfill-intl-idn/bootstrap.php | 141 - vendor/symfony/polyfill-intl-idn/composer.json | 45 - vendor/symfony/polyfill-intl-normalizer/LICENSE | 19 - .../polyfill-intl-normalizer/Normalizer.php | 308 -- vendor/symfony/polyfill-intl-normalizer/README.md | 14 - .../Resources/stubs/Normalizer.php | 17 - .../Resources/unidata/canonicalComposition.php | 945 ---- .../Resources/unidata/canonicalDecomposition.php | 2065 ------- .../Resources/unidata/combiningClass.php | 876 --- .../unidata/compatibilityDecomposition.php | 3695 ------------- .../symfony/polyfill-intl-normalizer/bootstrap.php | 19 - .../symfony/polyfill-intl-normalizer/composer.json | 39 - vendor/symfony/polyfill-php70/LICENSE | 19 - vendor/symfony/polyfill-php70/Php70.php | 74 - vendor/symfony/polyfill-php70/README.md | 28 - .../Resources/stubs/ArithmeticError.php | 5 - .../Resources/stubs/AssertionError.php | 5 - .../Resources/stubs/DivisionByZeroError.php | 5 - .../polyfill-php70/Resources/stubs/Error.php | 5 - .../polyfill-php70/Resources/stubs/ParseError.php | 5 - .../SessionUpdateTimestampHandlerInterface.php | 23 - .../polyfill-php70/Resources/stubs/TypeError.php | 5 - vendor/symfony/polyfill-php70/bootstrap.php | 30 - vendor/symfony/polyfill-php70/composer.json | 37 - vendor/symfony/polyfill-php72/LICENSE | 19 - vendor/symfony/polyfill-php72/Php72.php | 217 - vendor/symfony/polyfill-php72/README.md | 28 - vendor/symfony/polyfill-php72/bootstrap.php | 57 - vendor/symfony/polyfill-php72/composer.json | 35 - vendor/tumblr/tumblr/.gitignore | 12 - vendor/tumblr/tumblr/.travis.yml | 12 - vendor/tumblr/tumblr/CONTRIBUTING.md | 22 - vendor/tumblr/tumblr/LICENSE | 202 - vendor/tumblr/tumblr/README.md | 109 - vendor/tumblr/tumblr/composer.json | 39 - vendor/tumblr/tumblr/lib/Tumblr/API/Client.php | 502 -- .../tumblr/lib/Tumblr/API/RequestException.php | 35 - .../tumblr/lib/Tumblr/API/RequestHandler.php | 151 - vendor/tumblr/tumblr/phpunit.xml | 15 - vendor/tumblr/tumblr/test/BlogTest.php | 67 - vendor/tumblr/tumblr/test/PostTest.php | 30 - vendor/tumblr/tumblr/test/RequestExceptionTest.php | 28 - vendor/tumblr/tumblr/test/RequestHandlerTest.php | 71 - vendor/tumblr/tumblr/test/TaggedTest.php | 16 - vendor/tumblr/tumblr/test/TumblrTest.php | 51 - vendor/tumblr/tumblr/test/UserTest.php | 40 - vendor/tumblr/tumblr/test/bootstrap.php | 8 - 205 files changed, 42112 deletions(-) delete mode 100644 vendor/autoload.php delete mode 100644 vendor/composer/ClassLoader.php delete mode 100644 vendor/composer/LICENSE delete mode 100644 vendor/composer/autoload_classmap.php delete mode 100644 vendor/composer/autoload_files.php delete mode 100644 vendor/composer/autoload_namespaces.php delete mode 100644 vendor/composer/autoload_psr4.php delete mode 100644 vendor/composer/autoload_real.php delete mode 100644 vendor/composer/autoload_static.php delete mode 100644 vendor/composer/installed.json delete mode 100644 vendor/eher/oauth/.gitignore delete mode 100644 vendor/eher/oauth/.travis.yml delete mode 100644 vendor/eher/oauth/README.md delete mode 100644 vendor/eher/oauth/composer.json delete mode 100644 vendor/eher/oauth/phpunit.xml.dist delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/Consumer.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/OAuthException.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/OAuthServer.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/PlainText.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/Request.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/Token.php delete mode 100644 vendor/eher/oauth/src/Eher/OAuth/Util.php delete mode 100644 vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php delete mode 100644 vendor/eher/oauth/test/Eher/OAuth/RequestTest.php delete mode 100644 vendor/guzzlehttp/guzzle/.php_cs delete mode 100644 vendor/guzzlehttp/guzzle/CHANGELOG.md delete mode 100644 vendor/guzzlehttp/guzzle/Dockerfile delete mode 100644 vendor/guzzlehttp/guzzle/LICENSE delete mode 100644 vendor/guzzlehttp/guzzle/README.md delete mode 100644 vendor/guzzlehttp/guzzle/UPGRADING.md delete mode 100644 vendor/guzzlehttp/guzzle/composer.json delete mode 100644 vendor/guzzlehttp/guzzle/src/Client.php delete mode 100644 vendor/guzzlehttp/guzzle/src/ClientInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ClientException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/RequestException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/SeekException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/ServerException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Exception/TransferException.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/Proxy.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php delete mode 100644 vendor/guzzlehttp/guzzle/src/HandlerStack.php delete mode 100644 vendor/guzzlehttp/guzzle/src/MessageFormatter.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Middleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Pool.php delete mode 100644 vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/RequestOptions.php delete mode 100644 vendor/guzzlehttp/guzzle/src/RetryMiddleware.php delete mode 100644 vendor/guzzlehttp/guzzle/src/TransferStats.php delete mode 100644 vendor/guzzlehttp/guzzle/src/UriTemplate.php delete mode 100644 vendor/guzzlehttp/guzzle/src/Utils.php delete mode 100644 vendor/guzzlehttp/guzzle/src/functions.php delete mode 100644 vendor/guzzlehttp/guzzle/src/functions_include.php delete mode 100644 vendor/guzzlehttp/promises/CHANGELOG.md delete mode 100644 vendor/guzzlehttp/promises/LICENSE delete mode 100644 vendor/guzzlehttp/promises/Makefile delete mode 100644 vendor/guzzlehttp/promises/README.md delete mode 100644 vendor/guzzlehttp/promises/composer.json delete mode 100644 vendor/guzzlehttp/promises/src/AggregateException.php delete mode 100644 vendor/guzzlehttp/promises/src/CancellationException.php delete mode 100644 vendor/guzzlehttp/promises/src/Coroutine.php delete mode 100644 vendor/guzzlehttp/promises/src/EachPromise.php delete mode 100644 vendor/guzzlehttp/promises/src/FulfilledPromise.php delete mode 100644 vendor/guzzlehttp/promises/src/Promise.php delete mode 100644 vendor/guzzlehttp/promises/src/PromiseInterface.php delete mode 100644 vendor/guzzlehttp/promises/src/PromisorInterface.php delete mode 100644 vendor/guzzlehttp/promises/src/RejectedPromise.php delete mode 100644 vendor/guzzlehttp/promises/src/RejectionException.php delete mode 100644 vendor/guzzlehttp/promises/src/TaskQueue.php delete mode 100644 vendor/guzzlehttp/promises/src/TaskQueueInterface.php delete mode 100644 vendor/guzzlehttp/promises/src/functions.php delete mode 100644 vendor/guzzlehttp/promises/src/functions_include.php delete mode 100644 vendor/guzzlehttp/psr7/CHANGELOG.md delete mode 100644 vendor/guzzlehttp/psr7/LICENSE delete mode 100644 vendor/guzzlehttp/psr7/README.md delete mode 100644 vendor/guzzlehttp/psr7/composer.json delete mode 100644 vendor/guzzlehttp/psr7/src/AppendStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/BufferStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/CachingStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/DroppingStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/FnStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/InflateStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/LazyOpenStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/LimitStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/MessageTrait.php delete mode 100644 vendor/guzzlehttp/psr7/src/MultipartStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/NoSeekStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/PumpStream.php delete mode 100644 vendor/guzzlehttp/psr7/src/Request.php delete mode 100644 vendor/guzzlehttp/psr7/src/Response.php delete mode 100644 vendor/guzzlehttp/psr7/src/Rfc7230.php delete mode 100644 vendor/guzzlehttp/psr7/src/ServerRequest.php delete mode 100644 vendor/guzzlehttp/psr7/src/Stream.php delete mode 100644 vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php delete mode 100644 vendor/guzzlehttp/psr7/src/StreamWrapper.php delete mode 100644 vendor/guzzlehttp/psr7/src/UploadedFile.php delete mode 100644 vendor/guzzlehttp/psr7/src/Uri.php delete mode 100644 vendor/guzzlehttp/psr7/src/UriNormalizer.php delete mode 100644 vendor/guzzlehttp/psr7/src/UriResolver.php delete mode 100644 vendor/guzzlehttp/psr7/src/functions.php delete mode 100644 vendor/guzzlehttp/psr7/src/functions_include.php delete mode 100644 vendor/paragonie/random_compat/LICENSE delete mode 100644 vendor/paragonie/random_compat/build-phar.sh delete mode 100644 vendor/paragonie/random_compat/composer.json delete mode 100644 vendor/paragonie/random_compat/dist/random_compat.phar.pubkey delete mode 100644 vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc delete mode 100644 vendor/paragonie/random_compat/lib/random.php delete mode 100644 vendor/paragonie/random_compat/other/build_phar.php delete mode 100644 vendor/paragonie/random_compat/psalm-autoload.php delete mode 100644 vendor/paragonie/random_compat/psalm.xml delete mode 100644 vendor/psr/http-message/CHANGELOG.md delete mode 100644 vendor/psr/http-message/LICENSE delete mode 100644 vendor/psr/http-message/README.md delete mode 100644 vendor/psr/http-message/composer.json delete mode 100644 vendor/psr/http-message/src/MessageInterface.php delete mode 100644 vendor/psr/http-message/src/RequestInterface.php delete mode 100644 vendor/psr/http-message/src/ResponseInterface.php delete mode 100644 vendor/psr/http-message/src/ServerRequestInterface.php delete mode 100644 vendor/psr/http-message/src/StreamInterface.php delete mode 100644 vendor/psr/http-message/src/UploadedFileInterface.php delete mode 100644 vendor/psr/http-message/src/UriInterface.php delete mode 100644 vendor/ralouphie/getallheaders/LICENSE delete mode 100644 vendor/ralouphie/getallheaders/README.md delete mode 100644 vendor/ralouphie/getallheaders/composer.json delete mode 100644 vendor/ralouphie/getallheaders/src/getallheaders.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Idn.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Info.php delete mode 100644 vendor/symfony/polyfill-intl-idn/LICENSE delete mode 100644 vendor/symfony/polyfill-intl-idn/README.md delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php delete mode 100644 vendor/symfony/polyfill-intl-idn/bootstrap.php delete mode 100644 vendor/symfony/polyfill-intl-idn/composer.json delete mode 100644 vendor/symfony/polyfill-intl-normalizer/LICENSE delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Normalizer.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/README.md delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/bootstrap.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/composer.json delete mode 100644 vendor/symfony/polyfill-php70/LICENSE delete mode 100644 vendor/symfony/polyfill-php70/Php70.php delete mode 100644 vendor/symfony/polyfill-php70/README.md delete mode 100644 vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php delete mode 100644 vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php delete mode 100644 vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php delete mode 100644 vendor/symfony/polyfill-php70/Resources/stubs/Error.php delete mode 100644 vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php delete mode 100644 vendor/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php delete mode 100644 vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php delete mode 100644 vendor/symfony/polyfill-php70/bootstrap.php delete mode 100644 vendor/symfony/polyfill-php70/composer.json delete mode 100644 vendor/symfony/polyfill-php72/LICENSE delete mode 100644 vendor/symfony/polyfill-php72/Php72.php delete mode 100644 vendor/symfony/polyfill-php72/README.md delete mode 100644 vendor/symfony/polyfill-php72/bootstrap.php delete mode 100644 vendor/symfony/polyfill-php72/composer.json delete mode 100644 vendor/tumblr/tumblr/.gitignore delete mode 100644 vendor/tumblr/tumblr/.travis.yml delete mode 100644 vendor/tumblr/tumblr/CONTRIBUTING.md delete mode 100644 vendor/tumblr/tumblr/LICENSE delete mode 100644 vendor/tumblr/tumblr/README.md delete mode 100644 vendor/tumblr/tumblr/composer.json delete mode 100644 vendor/tumblr/tumblr/lib/Tumblr/API/Client.php delete mode 100644 vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php delete mode 100644 vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php delete mode 100644 vendor/tumblr/tumblr/phpunit.xml delete mode 100644 vendor/tumblr/tumblr/test/BlogTest.php delete mode 100644 vendor/tumblr/tumblr/test/PostTest.php delete mode 100644 vendor/tumblr/tumblr/test/RequestExceptionTest.php delete mode 100644 vendor/tumblr/tumblr/test/RequestHandlerTest.php delete mode 100644 vendor/tumblr/tumblr/test/TaggedTest.php delete mode 100644 vendor/tumblr/tumblr/test/TumblrTest.php delete mode 100644 vendor/tumblr/tumblr/test/UserTest.php delete mode 100644 vendor/tumblr/tumblr/test/bootstrap.php (limited to 'vendor') diff --git a/vendor/autoload.php b/vendor/autoload.php deleted file mode 100644 index 527cadb..0000000 --- a/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see http://www.php-fig.org/psr/psr-0/ - * @see http://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - // PSR-4 - private $prefixLengthsPsr4 = array(); - private $prefixDirsPsr4 = array(); - private $fallbackDirsPsr4 = array(); - - // PSR-0 - private $prefixesPsr0 = array(); - private $fallbackDirsPsr0 = array(); - - private $useIncludePath = false; - private $classMap = array(); - private $classMapAuthoritative = false; - private $missingClasses = array(); - private $apcuPrefix; - - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', $this->prefixesPsr0); - } - - return array(); - } - - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param array|string $paths The PSR-0 base directories - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param array|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - } - - /** - * Unregisters this instance as an autoloader. - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - */ -function includeFile($file) -{ - include $file; -} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE deleted file mode 100644 index f27399a..0000000 --- a/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php deleted file mode 100644 index 6e0d84a..0000000 --- a/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,17 +0,0 @@ - $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php', - 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php', - 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', - 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php', - 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', - 'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php', - 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', -); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php deleted file mode 100644 index 851b997..0000000 --- a/vendor/composer/autoload_files.php +++ /dev/null @@ -1,17 +0,0 @@ - $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', - 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', - 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', - 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 412af9e..0000000 --- a/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,11 +0,0 @@ - array($vendorDir . '/tumblr/tumblr/lib'), - 'Eher\\OAuth' => array($vendorDir . '/eher/oauth/src'), -); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php deleted file mode 100644 index 1e17d6c..0000000 --- a/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,17 +0,0 @@ - array($vendorDir . '/symfony/polyfill-php72'), - 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), - 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), - 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), - 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), - 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), -); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php deleted file mode 100644 index 91bd6bb..0000000 --- a/vendor/composer/autoload_real.php +++ /dev/null @@ -1,73 +0,0 @@ -= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); - if ($useStaticLoader) { - require_once __DIR__ . '/autoload_static.php'; - - call_user_func(\Composer\Autoload\ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::getInitializer($loader)); - } else { - $map = require __DIR__ . '/autoload_namespaces.php'; - foreach ($map as $namespace => $path) { - $loader->set($namespace, $path); - } - - $map = require __DIR__ . '/autoload_psr4.php'; - foreach ($map as $namespace => $path) { - $loader->setPsr4($namespace, $path); - } - - $classMap = require __DIR__ . '/autoload_classmap.php'; - if ($classMap) { - $loader->addClassMap($classMap); - } - } - - $loader->register(true); - - if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$files; - } else { - $includeFiles = require __DIR__ . '/autoload_files.php'; - } - foreach ($includeFiles as $fileIdentifier => $file) { - composerRequiref8d6d64bba203612c5380d5c06f720ff($fileIdentifier, $file); - } - - return $loader; - } -} - -function composerRequiref8d6d64bba203612c5380d5c06f720ff($fileIdentifier, $file) -{ - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - require $file; - - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - } -} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php deleted file mode 100644 index 9846f92..0000000 --- a/vendor/composer/autoload_static.php +++ /dev/null @@ -1,113 +0,0 @@ - __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', - 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', - 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', - 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'S' => - array ( - 'Symfony\\Polyfill\\Php72\\' => 23, - 'Symfony\\Polyfill\\Php70\\' => 23, - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, - 'Symfony\\Polyfill\\Intl\\Idn\\' => 26, - ), - 'P' => - array ( - 'Psr\\Http\\Message\\' => 17, - ), - 'G' => - array ( - 'GuzzleHttp\\Psr7\\' => 16, - 'GuzzleHttp\\Promise\\' => 19, - 'GuzzleHttp\\' => 11, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Symfony\\Polyfill\\Php72\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php72', - ), - 'Symfony\\Polyfill\\Php70\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php70', - ), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', - ), - 'Symfony\\Polyfill\\Intl\\Idn\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn', - ), - 'Psr\\Http\\Message\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-message/src', - ), - 'GuzzleHttp\\Psr7\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', - ), - 'GuzzleHttp\\Promise\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', - ), - 'GuzzleHttp\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', - ), - ); - - public static $prefixesPsr0 = array ( - 'T' => - array ( - 'Tumblr\\API' => - array ( - 0 => __DIR__ . '/..' . '/tumblr/tumblr/lib', - ), - ), - 'E' => - array ( - 'Eher\\OAuth' => - array ( - 0 => __DIR__ . '/..' . '/eher/oauth/src', - ), - ), - ); - - public static $classMap = array ( - 'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php', - 'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php', - 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php', - 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php', - 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php', - 'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php', - 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$prefixesPsr0; - $loader->classMap = ComposerStaticInitf8d6d64bba203612c5380d5c06f720ff::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json deleted file mode 100644 index 6cfbe5b..0000000 --- a/vendor/composer/installed.json +++ /dev/null @@ -1,748 +0,0 @@ -[ - { - "name": "eher/oauth", - "version": "1.0.7", - "version_normalized": "1.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/EHER/OAuth.git", - "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/EHER/OAuth/zipball/935c1f7709d1c1457de9e250d0e5f29cac06e507", - "reference": "935c1f7709d1c1457de9e250d0e5f29cac06e507", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "eher/phpunit": "1.6" - }, - "time": "2012-12-13T23:48:10+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Eher\\OAuth": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "OAuth 1 PHP Library" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.5.5", - "version_normalized": "6.5.5.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "time": "2020-06-16T21:01:06+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ] - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "version_normalized": "1.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "time": "2016-12-20T10:07:11+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ] - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "version_normalized": "1.6.1.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "time": "2019-07-01T23:21:34+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ] - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "version_normalized": "9.99.99.0", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "time": "2018-07-02T15:55:56+00:00", - "type": "library", - "installation-source": "dist", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ] - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "time": "2016-08-06T14:39:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ] - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "time": "2019-03-08T08:55:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders." - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.18.1", - "version_normalized": "1.18.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2020-08-04T06:02:08+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ] - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.18.1", - "version_normalized": "1.18.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2020-07-14T12:35:20+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ] - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.18.1", - "version_normalized": "1.18.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "time": "2020-07-14T12:35:20+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ] - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.18.1", - "version_normalized": "1.18.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "639447d008615574653fb3bc60d1986d7172eaae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", - "reference": "639447d008615574653fb3bc60d1986d7172eaae", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2020-07-14T12:35:20+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ] - }, - { - "name": "tumblr/tumblr", - "version": "v0.4.0", - "version_normalized": "0.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/tumblr/tumblr.php.git", - "reference": "308ad2a8a840ae8a8b70e96a19701b7ef1b00d0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tumblr/tumblr.php/zipball/308ad2a8a840ae8a8b70e96a19701b7ef1b00d0d", - "reference": "308ad2a8a840ae8a8b70e96a19701b7ef1b00d0d", - "shasum": "" - }, - "require": { - "eher/oauth": "1.0.*", - "guzzlehttp/guzzle": "6.*" - }, - "require-dev": { - "phpunit/phpunit": "5.3.*" - }, - "time": "2017-09-29T21:32:48+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-0": { - "Tumblr\\API": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "John Crepezzi", - "email": "john.crepezzi@gmail.com", - "homepage": "https://github.com/seejohnrun", - "role": "developer" - } - ], - "description": "Official Tumblr PHP Client", - "homepage": "https://github.com/tumblr/tumblr.php", - "keywords": [ - "api", - "gif", - "sdk", - "tumblr" - ] - } -] diff --git a/vendor/eher/oauth/.gitignore b/vendor/eher/oauth/.gitignore deleted file mode 100644 index eeeaea3..0000000 --- a/vendor/eher/oauth/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.swp -composer.phar -composer.lock -vendor diff --git a/vendor/eher/oauth/.travis.yml b/vendor/eher/oauth/.travis.yml deleted file mode 100644 index f64de41..0000000 --- a/vendor/eher/oauth/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: php - -php: - - 5.3 - - 5.4 - -before_script: - - wget -c http://getcomposer.org/composer.phar - - php composer.phar install diff --git a/vendor/eher/oauth/README.md b/vendor/eher/oauth/README.md deleted file mode 100644 index c288c8c..0000000 --- a/vendor/eher/oauth/README.md +++ /dev/null @@ -1,3 +0,0 @@ -#OAuth 1 PHP Library[![Build Status](https://secure.travis-ci.org/EHER/OAuth.png?branch=master)](http://travis-ci.org/EHER/OAuth) - -Based on [Andy Smith's](http://term.ie/) [basic php library](http://oauth.googlecode.com/svn/code/php/) for OAuth. diff --git a/vendor/eher/oauth/composer.json b/vendor/eher/oauth/composer.json deleted file mode 100644 index 29bf4d9..0000000 --- a/vendor/eher/oauth/composer.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "eher/oauth", - "type": "library", - "license": "BSD-3-Clause", - "description": "OAuth 1 PHP Library", - "require": { - "php": ">=5.3.0" - }, - "autoload": { - "psr-0": { - "Eher\\OAuth": "src" - } - }, - "require-dev": { - "eher/phpunit": "1.6" - } -} diff --git a/vendor/eher/oauth/phpunit.xml.dist b/vendor/eher/oauth/phpunit.xml.dist deleted file mode 100644 index 9735ad4..0000000 --- a/vendor/eher/oauth/phpunit.xml.dist +++ /dev/null @@ -1,7 +0,0 @@ - - - - test - - - diff --git a/vendor/eher/oauth/src/Eher/OAuth/Consumer.php b/vendor/eher/oauth/src/Eher/OAuth/Consumer.php deleted file mode 100644 index 44dbc59..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/Consumer.php +++ /dev/null @@ -1,19 +0,0 @@ -key = $key; - $this->secret = $secret; - $this->callback_url = $callback_url; - } - - function __toString() { - return "Consumer[key=$this->key,secret=$this->secret]"; - } -} - diff --git a/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php b/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php deleted file mode 100644 index be7da63..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/HmacSha1.php +++ /dev/null @@ -1,31 +0,0 @@ -get_signature_base_string(); - $request->base_string = $base_string; - - $key_parts = array( - $consumer->secret, - ($token) ? $token->secret : "" - ); - - $key_parts = Util::urlencode_rfc3986($key_parts); - $key = implode('&', $key_parts); - - return base64_encode(hash_hmac('sha1', $base_string, $key, true)); - } -} diff --git a/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php b/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php deleted file mode 100644 index 8ad2f30..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/OAuthDataStore.php +++ /dev/null @@ -1,30 +0,0 @@ -data_store = $data_store; - } - - public function add_signature_method($signature_method) { - $this->signature_methods[$signature_method->get_name()] = - $signature_method; - } - - // high level functions - - /** - * process a request_token request - * returns the request token on success - */ - public function fetch_request_token(&$request) { - $this->get_version($request); - - $consumer = $this->get_consumer($request); - - // no token required for the initial token request - $token = NULL; - - $this->check_signature($request, $consumer, $token); - - // Rev A change - $callback = $request->get_parameter('oauth_callback'); - $new_token = $this->data_store->new_request_token($consumer, $callback); - - return $new_token; - } - - /** - * process an access_token request - * returns the access token on success - */ - public function fetch_access_token(&$request) { - $this->get_version($request); - - $consumer = $this->get_consumer($request); - - // requires authorized request token - $token = $this->get_token($request, $consumer, "request"); - - $this->check_signature($request, $consumer, $token); - - // Rev A change - $verifier = $request->get_parameter('oauth_verifier'); - $new_token = $this->data_store->new_access_token($token, $consumer, $verifier); - - return $new_token; - } - - /** - * verify an api call, checks all the parameters - */ - public function verify_request(&$request) { - $this->get_version($request); - $consumer = $this->get_consumer($request); - $token = $this->get_token($request, $consumer, "access"); - $this->check_signature($request, $consumer, $token); - return array($consumer, $token); - } - - // Internals from here - /** - * version 1 - */ - private function get_version(&$request) { - $version = $request->get_parameter("oauth_version"); - if (!$version) { - // Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present. - // Chapter 7.0 ("Accessing Protected Ressources") - $version = '1.0'; - } - if ($version !== $this->version) { - throw new OAuthException("OAuth version '$version' not supported"); - } - return $version; - } - - /** - * figure out the signature with some defaults - */ - private function get_signature_method($request) { - $signature_method = $request instanceof Request - ? $request->get_parameter("oauth_signature_method") - : NULL; - - if (!$signature_method) { - // According to chapter 7 ("Accessing Protected Ressources") the signature-method - // parameter is required, and we can't just fallback to PLAINTEXT - throw new OAuthException('No signature method parameter. This parameter is required'); - } - - if (!in_array($signature_method, - array_keys($this->signature_methods))) { - throw new OAuthException( - "Signature method '$signature_method' not supported " . - "try one of the following: " . - implode(", ", array_keys($this->signature_methods)) - ); - } - return $this->signature_methods[$signature_method]; - } - - /** - * try to find the consumer for the provided request's consumer key - */ - private function get_consumer($request) { - $consumer_key = $request instanceof Request - ? $request->get_parameter("oauth_consumer_key") - : NULL; - - if (!$consumer_key) { - throw new OAuthException("Invalid consumer key"); - } - - $consumer = $this->data_store->lookup_consumer($consumer_key); - if (!$consumer) { - throw new OAuthException("Invalid consumer"); - } - - return $consumer; - } - - /** - * try to find the token for the provided request's token key - */ - private function get_token($request, $consumer, $token_type="access") { - $token_field = $request instanceof Request - ? $request->get_parameter('oauth_token') - : NULL; - - $token = $this->data_store->lookup_token( - $consumer, $token_type, $token_field - ); - if (!$token) { - throw new OAuthException("Invalid $token_type token: $token_field"); - } - return $token; - } - - /** - * all-in-one function to check the signature on a request - * should guess the signature method appropriately - */ - private function check_signature($request, $consumer, $token) { - // this should probably be in a different method - $timestamp = $request instanceof Request - ? $request->get_parameter('oauth_timestamp') - : NULL; - $nonce = $request instanceof Request - ? $request->get_parameter('oauth_nonce') - : NULL; - - $this->check_timestamp($timestamp); - $this->check_nonce($consumer, $token, $nonce, $timestamp); - - $signature_method = $this->get_signature_method($request); - - $signature = $request->get_parameter('oauth_signature'); - $valid_sig = $signature_method->check_signature( - $request, - $consumer, - $token, - Util::urldecode_rfc3986($signature) - ); - - if (!$valid_sig) { - throw new OAuthException("Invalid signature"); - } - } - - /** - * check that the timestamp is new enough - */ - private function check_timestamp($timestamp) { - if( ! $timestamp ) - throw new OAuthException( - 'Missing timestamp parameter. The parameter is required' - ); - - // verify that timestamp is recentish - $now = time(); - if (abs($now - $timestamp) > $this->timestamp_threshold) { - throw new OAuthException( - "Expired timestamp, yours $timestamp, ours $now" - ); - } - } - - /** - * check that the nonce is not repeated - */ - private function check_nonce($consumer, $token, $nonce, $timestamp) { - if( ! $nonce ) - throw new OAuthException( - 'Missing nonce parameter. The parameter is required' - ); - - // verify that the nonce is uniqueish - $found = $this->data_store->lookup_nonce( - $consumer, - $token, - $nonce, - $timestamp - ); - if ($found) { - throw new OAuthException("Nonce already used: $nonce"); - } - } - -} diff --git a/vendor/eher/oauth/src/Eher/OAuth/PlainText.php b/vendor/eher/oauth/src/Eher/OAuth/PlainText.php deleted file mode 100644 index 895aeed..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/PlainText.php +++ /dev/null @@ -1,36 +0,0 @@ -secret, - ($token) ? $token->secret : "" - ); - - $key_parts = Util::urlencode_rfc3986($key_parts); - $key = implode('&', $key_parts); - $request->base_string = $key; - - return $key; - } -} diff --git a/vendor/eher/oauth/src/Eher/OAuth/Request.php b/vendor/eher/oauth/src/Eher/OAuth/Request.php deleted file mode 100644 index afb2b20..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/Request.php +++ /dev/null @@ -1,264 +0,0 @@ -parameters = $parameters; - $this->http_method = $http_method; - $this->http_url = $http_url; - } - - - /** - * attempt to build up a request from what was passed to the server - */ - public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) { - $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") - ? 'http' - : 'https'; - $http_url = ($http_url) ? $http_url : $scheme . - '://' . $_SERVER['HTTP_HOST'] . - ':' . - $_SERVER['SERVER_PORT'] . - $_SERVER['REQUEST_URI']; - $http_method = ($http_method) ? $http_method : $_SERVER['REQUEST_METHOD']; - - // We weren't handed any parameters, so let's find the ones relevant to - // this request. - // If you run XML-RPC or similar you should use this to provide your own - // parsed parameter-list - if (!$parameters) { - // Find request headers - $request_headers = Util::get_headers(); - - // Parse the query-string to find GET parameters - $parameters = Util::parse_parameters($_SERVER['QUERY_STRING']); - - // It's a POST request of the proper content-type, so parse POST - // parameters and add those overriding any duplicates from GET - if ($http_method == "POST" - && isset($request_headers['Content-Type']) - && strstr($request_headers['Content-Type'], - 'application/x-www-form-urlencoded') - ) { - $post_data = Util::parse_parameters( - file_get_contents(self::$POST_INPUT) - ); - $parameters = array_merge($parameters, $post_data); - } - - // We have a Authorization-header with OAuth data. Parse the header - // and add those overriding any duplicates from GET or POST - if (isset($request_headers['Authorization']) && substr($request_headers['Authorization'], 0, 6) == 'OAuth ') { - $header_parameters = Util::split_header( - $request_headers['Authorization'] - ); - $parameters = array_merge($parameters, $header_parameters); - } - - } - - return new Request($http_method, $http_url, $parameters); - } - - /** - * pretty much a helper function to set up the request - */ - public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) { - $parameters = ($parameters) ? $parameters : array(); - $defaults = array("oauth_version" => Request::$version, - "oauth_nonce" => Request::generate_nonce(), - "oauth_timestamp" => Request::generate_timestamp(), - "oauth_consumer_key" => $consumer->key); - if ($token) - $defaults['oauth_token'] = $token->key; - - $parameters = array_merge($defaults, $parameters); - - return new Request($http_method, $http_url, $parameters); - } - - public function set_parameter($name, $value, $allow_duplicates = true) { - if ($allow_duplicates && isset($this->parameters[$name])) { - // We have already added parameter(s) with this name, so add to the list - if (is_scalar($this->parameters[$name])) { - // This is the first duplicate, so transform scalar (string) - // into an array so we can add the duplicates - $this->parameters[$name] = array($this->parameters[$name]); - } - - $this->parameters[$name][] = $value; - } else { - $this->parameters[$name] = $value; - } - } - - public function get_parameter($name) { - return isset($this->parameters[$name]) ? $this->parameters[$name] : null; - } - - public function get_parameters() { - return $this->parameters; - } - - public function unset_parameter($name) { - unset($this->parameters[$name]); - } - - /** - * The request parameters, sorted and concatenated into a normalized string. - * @return string - */ - public function get_signable_parameters() { - // Grab all parameters - $params = $this->parameters; - - // Remove oauth_signature if present - // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.") - if (isset($params['oauth_signature'])) { - unset($params['oauth_signature']); - } - - return Util::build_http_query($params); - } - - /** - * Returns the base string of this request - * - * The base string defined as the method, the url - * and the parameters (normalized), each urlencoded - * and the concated with &. - */ - public function get_signature_base_string() { - $parts = array( - $this->get_normalized_http_method(), - $this->get_normalized_http_url(), - $this->get_signable_parameters() - ); - - $parts = Util::urlencode_rfc3986($parts); - - return implode('&', $parts); - } - - /** - * just uppercases the http method - */ - public function get_normalized_http_method() { - return strtoupper($this->http_method); - } - - /** - * parses the url and rebuilds it to be - * scheme://host/path - */ - public function get_normalized_http_url() { - $parts = parse_url($this->http_url); - - $scheme = (isset($parts['scheme'])) ? $parts['scheme'] : 'http'; - $port = (isset($parts['port'])) ? $parts['port'] : (($scheme == 'https') ? '443' : '80'); - $host = (isset($parts['host'])) ? $parts['host'] : ''; - $path = (isset($parts['path'])) ? $parts['path'] : ''; - - if (($scheme == 'https' && $port != '443') - || ($scheme == 'http' && $port != '80')) { - $host = "$host:$port"; - } - return "$scheme://$host$path"; - } - - /** - * builds a url usable for a GET request - */ - public function to_url() { - $post_data = $this->to_postdata(); - $out = $this->get_normalized_http_url(); - if ($post_data) { - $out .= '?'.$post_data; - } - return $out; - } - - /** - * builds the data one would send in a POST request - */ - public function to_postdata() { - return Util::build_http_query($this->parameters); - } - - /** - * builds the Authorization: header - */ - public function to_header($realm=null) { - $first = true; - if($realm) { - $out = 'Authorization: OAuth realm="' . Util::urlencode_rfc3986($realm) . '"'; - $first = false; - } else - $out = 'Authorization: OAuth'; - - $total = array(); - foreach ($this->parameters as $k => $v) { - if (substr($k, 0, 5) != "oauth") continue; - if (is_array($v)) { - throw new OAuthException('Arrays not supported in headers'); - } - $out .= ($first) ? ' ' : ','; - $out .= Util::urlencode_rfc3986($k) . - '="' . - Util::urlencode_rfc3986($v) . - '"'; - $first = false; - } - return $out; - } - - public function __toString() { - return $this->to_url(); - } - - - public function sign_request($signature_method, $consumer, $token) { - $this->set_parameter( - "oauth_signature_method", - $signature_method->get_name(), - false - ); - $signature = $this->build_signature($signature_method, $consumer, $token); - $this->set_parameter("oauth_signature", $signature, false); - } - - public function build_signature($signature_method, $consumer, $token) { - $signature = $signature_method->build_signature($this, $consumer, $token); - return $signature; - } - - /** - * util function: current timestamp - */ - private static function generate_timestamp() { - return time(); - } - - /** - * util function: current nonce - */ - private static function generate_nonce() { - $mt = microtime(); - $rand = mt_rand(); - - return md5($mt . $rand); // md5s look nicer than numbers - } -} - diff --git a/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php b/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php deleted file mode 100644 index a749ce3..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/RsaSha1.php +++ /dev/null @@ -1,70 +0,0 @@ -get_signature_base_string(); - $request->base_string = $base_string; - - // Fetch the private key cert based on the request - $cert = $this->fetch_private_cert($request); - - // Pull the private key ID from the certificate - $privatekeyid = openssl_get_privatekey($cert); - - // Sign using the key - $ok = openssl_sign($base_string, $signature, $privatekeyid); - - // Release the key resource - openssl_free_key($privatekeyid); - - return base64_encode($signature); - } - - public function check_signature($request, $consumer, $token, $signature) { - $decoded_sig = base64_decode($signature); - - $base_string = $request->get_signature_base_string(); - - // Fetch the public key cert based on the request - $cert = $this->fetch_public_cert($request); - - // Pull the public key ID from the certificate - $publickeyid = openssl_get_publickey($cert); - - // Check the computed signature against the one passed in the query - $ok = openssl_verify($base_string, $decoded_sig, $publickeyid); - - // Release the key resource - openssl_free_key($publickeyid); - - return $ok == 1; - } -} diff --git a/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php b/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php deleted file mode 100644 index d938632..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/SignatureMethod.php +++ /dev/null @@ -1,40 +0,0 @@ -build_signature($request, $consumer, $token); - return $built == $signature; - } -} diff --git a/vendor/eher/oauth/src/Eher/OAuth/Token.php b/vendor/eher/oauth/src/Eher/OAuth/Token.php deleted file mode 100644 index e1d9f65..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/Token.php +++ /dev/null @@ -1,34 +0,0 @@ -key = $key; - $this->secret = $secret; - } - - /** - * generates the basic string serialization of a token that a server - * would respond to request_token and access_token calls with - */ - function to_string() { - return "oauth_token=" . - Util::urlencode_rfc3986($this->key) . - "&oauth_token_secret=" . - Util::urlencode_rfc3986($this->secret); - } - - function __toString() { - return $this->to_string(); - } -} - diff --git a/vendor/eher/oauth/src/Eher/OAuth/Util.php b/vendor/eher/oauth/src/Eher/OAuth/Util.php deleted file mode 100644 index 1feee44..0000000 --- a/vendor/eher/oauth/src/Eher/OAuth/Util.php +++ /dev/null @@ -1,155 +0,0 @@ - $h) { - $params[$h] = Util::urldecode_rfc3986(empty($matches[3][$i]) ? $matches[4][$i] : $matches[3][$i]); - } - if (isset($params['realm'])) { - unset($params['realm']); - } - } - return $params; - } - - // helper to try to sort out headers for people who aren't running apache - public static function get_headers() { - if (function_exists('apache_request_headers')) { - // we need this to get the actual Authorization: header - // because apache tends to tell us it doesn't exist - $headers = apache_request_headers(); - - // sanitize the output of apache_request_headers because - // we always want the keys to be Cased-Like-This and arh() - // returns the headers in the same case as they are in the - // request - $out = array(); - foreach ($headers AS $key => $value) { - $key = str_replace( - " ", - "-", - ucwords(strtolower(str_replace("-", " ", $key))) - ); - $out[$key] = $value; - } - } else { - // otherwise we don't have apache and are just going to have to hope - // that $_SERVER actually contains what we need - $out = array(); - if( isset($_SERVER['CONTENT_TYPE']) ) - $out['Content-Type'] = $_SERVER['CONTENT_TYPE']; - if( isset($_ENV['CONTENT_TYPE']) ) - $out['Content-Type'] = $_ENV['CONTENT_TYPE']; - - foreach ($_SERVER as $key => $value) { - if (substr($key, 0, 5) == "HTTP_") { - // this is chaos, basically it is just there to capitalize the first - // letter of every word that is not an initial HTTP and strip HTTP - // code from przemek - $key = str_replace( - " ", - "-", - ucwords(strtolower(str_replace("_", " ", substr($key, 5)))) - ); - $out[$key] = $value; - } - } - } - return $out; - } - - // This function takes a input like a=b&a=c&d=e and returns the parsed - // parameters like this - // array('a' => array('b','c'), 'd' => 'e') - public static function parse_parameters( $input ) { - if (!isset($input) || !$input) return array(); - - $pairs = explode('&', $input); - - $parsed_parameters = array(); - foreach ($pairs as $pair) { - $split = explode('=', $pair, 2); - $parameter = Util::urldecode_rfc3986($split[0]); - $value = isset($split[1]) ? Util::urldecode_rfc3986($split[1]) : ''; - - if (isset($parsed_parameters[$parameter])) { - // We have already recieved parameter(s) with this name, so add to the list - // of parameters with this name - - if (is_scalar($parsed_parameters[$parameter])) { - // This is the first duplicate, so transform scalar (string) into an array - // so we can add the duplicates - $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]); - } - - $parsed_parameters[$parameter][] = $value; - } else { - $parsed_parameters[$parameter] = $value; - } - } - return $parsed_parameters; - } - - public static function build_http_query($params) { - if (!$params) return ''; - - // Urlencode both keys and values - $keys = Util::urlencode_rfc3986(array_keys($params)); - $values = Util::urlencode_rfc3986(array_values($params)); - $params = array_combine($keys, $values); - - // Parameters are sorted by name, using lexicographical byte value ordering. - // Ref: Spec: 9.1.1 (1) - uksort($params, 'strcmp'); - - $pairs = array(); - foreach ($params as $parameter => $value) { - if (is_array($value)) { - // If two or more parameters share the same name, they are sorted by their value - // Ref: Spec: 9.1.1 (1) - // June 12th, 2010 - changed to sort because of issue 164 by hidetaka - sort($value, SORT_STRING); - foreach ($value as $duplicate_value) { - $pairs[] = $parameter . '=' . $duplicate_value; - } - } else { - $pairs[] = $parameter . '=' . $value; - } - } - // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61) - // Each name-value pair is separated by an '&' character (ASCII code 38) - return implode('&', $pairs); - } -} - diff --git a/vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php b/vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php deleted file mode 100644 index 3ce742c..0000000 --- a/vendor/eher/oauth/test/Eher/OAuth/ConsumerTest.php +++ /dev/null @@ -1,18 +0,0 @@ -assertEquals( - 'Consumer[key=ConsumerKey,secret=ConsumerSecret]', - (string) $consumer - ); - } -} diff --git a/vendor/eher/oauth/test/Eher/OAuth/RequestTest.php b/vendor/eher/oauth/test/Eher/OAuth/RequestTest.php deleted file mode 100644 index 4551695..0000000 --- a/vendor/eher/oauth/test/Eher/OAuth/RequestTest.php +++ /dev/null @@ -1,40 +0,0 @@ -sign_request($signatureMethod, $consumer, null); - - $once = $request->get_parameter('oauth_nonce'); - $timestamp = $request->get_parameter('oauth_timestamp'); - $signature = $request->get_parameter('oauth_signature'); - $expectedUrl = "http://www.endpoint.url/?" - . "oauth_consumer_key=ConsumerKey" - . "&oauth_nonce=" . $once - . "&oauth_signature=" . Util::urlencode_rfc3986($signature) - . "&oauth_signature_method=HMAC-SHA1" - . "&oauth_timestamp=" . $timestamp - . "&oauth_version=1.0"; - $this->assertEquals( $expectedUrl, (string) $request); - } -} diff --git a/vendor/guzzlehttp/guzzle/.php_cs b/vendor/guzzlehttp/guzzle/.php_cs deleted file mode 100644 index 2dd5036..0000000 --- a/vendor/guzzlehttp/guzzle/.php_cs +++ /dev/null @@ -1,23 +0,0 @@ -setRiskyAllowed(true) - ->setRules([ - '@PSR2' => true, - 'array_syntax' => ['syntax' => 'short'], - 'declare_strict_types' => false, - 'concat_space' => ['spacing'=>'one'], - 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'], - 'ordered_imports' => true, - // 'phpdoc_align' => ['align'=>'vertical'], - // 'native_function_invocation' => true, - ]) - ->setFinder( - PhpCsFixer\Finder::create() - ->in(__DIR__.'/src') - ->in(__DIR__.'/tests') - ->name('*.php') - ) -; - -return $config; diff --git a/vendor/guzzlehttp/guzzle/CHANGELOG.md b/vendor/guzzlehttp/guzzle/CHANGELOG.md deleted file mode 100644 index 464cf1c..0000000 --- a/vendor/guzzlehttp/guzzle/CHANGELOG.md +++ /dev/null @@ -1,1338 +0,0 @@ -# Change Log - -## 6.5.5 - 2020-06-16 - -* Unpin version constraint for `symfony/polyfill-intl-idn` [#2678](https://github.com/guzzle/guzzle/pull/2678) - -## 6.5.4 - 2020-05-25 - -* Fix various intl icu issues [#2626](https://github.com/guzzle/guzzle/pull/2626) - -## 6.5.3 - 2020-04-18 - -* Use Symfony intl-idn polyfill [#2550](https://github.com/guzzle/guzzle/pull/2550) -* Remove use of internal functions [#2548](https://github.com/guzzle/guzzle/pull/2548) - -## 6.5.2 - 2019-12-23 - -* idn_to_ascii() fix for old PHP versions [#2489](https://github.com/guzzle/guzzle/pull/2489) - -## 6.5.1 - 2019-12-21 - -* Better defaults for PHP installations with old ICU lib [#2454](https://github.com/guzzle/guzzle/pull/2454) -* IDN support for redirects [#2424](https://github.com/guzzle/guzzle/pull/2424) - -## 6.5.0 - 2019-12-07 - -* Improvement: Added support for reset internal queue in MockHandler. [#2143](https://github.com/guzzle/guzzle/pull/2143) -* Improvement: Added support to pass arbitrary options to `curl_multi_init`. [#2287](https://github.com/guzzle/guzzle/pull/2287) -* Fix: Gracefully handle passing `null` to the `header` option. [#2132](https://github.com/guzzle/guzzle/pull/2132) -* Fix: `RetryMiddleware` did not do exponential delay between retries due unit mismatch. [#2132](https://github.com/guzzle/guzzle/pull/2132) - Previously, `RetryMiddleware` would sleep for 1 millisecond, then 2 milliseconds, then 4 milliseconds. - **After this change, `RetryMiddleware` will sleep for 1 second, then 2 seconds, then 4 seconds.** - `Middleware::retry()` accepts a second callback parameter to override the default timeouts if needed. -* Fix: Prevent undefined offset when using array for ssl_key options. [#2348](https://github.com/guzzle/guzzle/pull/2348) -* Deprecated `ClientInterface::VERSION` - -## 6.4.1 - 2019-10-23 - -* No `guzzle.phar` was created in 6.4.0 due expired API token. This release will fix that -* Added `parent::__construct()` to `FileCookieJar` and `SessionCookieJar` - -## 6.4.0 - 2019-10-23 - -* Improvement: Improved error messages when using curl < 7.21.2 [#2108](https://github.com/guzzle/guzzle/pull/2108) -* Fix: Test if response is readable before returning a summary in `RequestException::getResponseBodySummary()` [#2081](https://github.com/guzzle/guzzle/pull/2081) -* Fix: Add support for GUZZLE_CURL_SELECT_TIMEOUT environment variable [#2161](https://github.com/guzzle/guzzle/pull/2161) -* Improvement: Added `GuzzleHttp\Exception\InvalidArgumentException` [#2163](https://github.com/guzzle/guzzle/pull/2163) -* Improvement: Added `GuzzleHttp\_current_time()` to use `hrtime()` if that function exists. [#2242](https://github.com/guzzle/guzzle/pull/2242) -* Improvement: Added curl's `appconnect_time` in `TransferStats` [#2284](https://github.com/guzzle/guzzle/pull/2284) -* Improvement: Make GuzzleException extend Throwable wherever it's available [#2273](https://github.com/guzzle/guzzle/pull/2273) -* Fix: Prevent concurrent writes to file when saving `CookieJar` [#2335](https://github.com/guzzle/guzzle/pull/2335) -* Improvement: Update `MockHandler` so we can test transfer time [#2362](https://github.com/guzzle/guzzle/pull/2362) - -## 6.3.3 - 2018-04-22 - -* Fix: Default headers when decode_content is specified - - -## 6.3.2 - 2018-03-26 - -* Fix: Release process - - -## 6.3.1 - 2018-03-26 - -* Bug fix: Parsing 0 epoch expiry times in cookies [#2014](https://github.com/guzzle/guzzle/pull/2014) -* Improvement: Better ConnectException detection [#2012](https://github.com/guzzle/guzzle/pull/2012) -* Bug fix: Malformed domain that contains a "/" [#1999](https://github.com/guzzle/guzzle/pull/1999) -* Bug fix: Undefined offset when a cookie has no first key-value pair [#1998](https://github.com/guzzle/guzzle/pull/1998) -* Improvement: Support PHPUnit 6 [#1953](https://github.com/guzzle/guzzle/pull/1953) -* Bug fix: Support empty headers [#1915](https://github.com/guzzle/guzzle/pull/1915) -* Bug fix: Ignore case during header modifications [#1916](https://github.com/guzzle/guzzle/pull/1916) - -+ Minor code cleanups, documentation fixes and clarifications. - - -## 6.3.0 - 2017-06-22 - -* Feature: force IP resolution (ipv4 or ipv6) [#1608](https://github.com/guzzle/guzzle/pull/1608), [#1659](https://github.com/guzzle/guzzle/pull/1659) -* Improvement: Don't include summary in exception message when body is empty [#1621](https://github.com/guzzle/guzzle/pull/1621) -* Improvement: Handle `on_headers` option in MockHandler [#1580](https://github.com/guzzle/guzzle/pull/1580) -* Improvement: Added SUSE Linux CA path [#1609](https://github.com/guzzle/guzzle/issues/1609) -* Improvement: Use class reference for getting the name of the class instead of using hardcoded strings [#1641](https://github.com/guzzle/guzzle/pull/1641) -* Feature: Added `read_timeout` option [#1611](https://github.com/guzzle/guzzle/pull/1611) -* Bug fix: PHP 7.x fixes [#1685](https://github.com/guzzle/guzzle/pull/1685), [#1686](https://github.com/guzzle/guzzle/pull/1686), [#1811](https://github.com/guzzle/guzzle/pull/1811) -* Deprecation: BadResponseException instantiation without a response [#1642](https://github.com/guzzle/guzzle/pull/1642) -* Feature: Added NTLM auth [#1569](https://github.com/guzzle/guzzle/pull/1569) -* Feature: Track redirect HTTP status codes [#1711](https://github.com/guzzle/guzzle/pull/1711) -* Improvement: Check handler type during construction [#1745](https://github.com/guzzle/guzzle/pull/1745) -* Improvement: Always include the Content-Length if there's a body [#1721](https://github.com/guzzle/guzzle/pull/1721) -* Feature: Added convenience method to access a cookie by name [#1318](https://github.com/guzzle/guzzle/pull/1318) -* Bug fix: Fill `CURLOPT_CAPATH` and `CURLOPT_CAINFO` properly [#1684](https://github.com/guzzle/guzzle/pull/1684) -* Improvement: Use `\GuzzleHttp\Promise\rejection_for` function instead of object init [#1827](https://github.com/guzzle/guzzle/pull/1827) - - -+ Minor code cleanups, documentation fixes and clarifications. - -## 6.2.3 - 2017-02-28 - -* Fix deprecations with guzzle/psr7 version 1.4 - -## 6.2.2 - 2016-10-08 - -* Allow to pass nullable Response to delay callable -* Only add scheme when host is present -* Fix drain case where content-length is the literal string zero -* Obfuscate in-URL credentials in exceptions - -## 6.2.1 - 2016-07-18 - -* Address HTTP_PROXY security vulnerability, CVE-2016-5385: - https://httpoxy.org/ -* Fixing timeout bug with StreamHandler: - https://github.com/guzzle/guzzle/pull/1488 -* Only read up to `Content-Length` in PHP StreamHandler to avoid timeouts when - a server does not honor `Connection: close`. -* Ignore URI fragment when sending requests. - -## 6.2.0 - 2016-03-21 - -* Feature: added `GuzzleHttp\json_encode` and `GuzzleHttp\json_decode`. - https://github.com/guzzle/guzzle/pull/1389 -* Bug fix: Fix sleep calculation when waiting for delayed requests. - https://github.com/guzzle/guzzle/pull/1324 -* Feature: More flexible history containers. - https://github.com/guzzle/guzzle/pull/1373 -* Bug fix: defer sink stream opening in StreamHandler. - https://github.com/guzzle/guzzle/pull/1377 -* Bug fix: do not attempt to escape cookie values. - https://github.com/guzzle/guzzle/pull/1406 -* Feature: report original content encoding and length on decoded responses. - https://github.com/guzzle/guzzle/pull/1409 -* Bug fix: rewind seekable request bodies before dispatching to cURL. - https://github.com/guzzle/guzzle/pull/1422 -* Bug fix: provide an empty string to `http_build_query` for HHVM workaround. - https://github.com/guzzle/guzzle/pull/1367 - -## 6.1.1 - 2015-11-22 - -* Bug fix: Proxy::wrapSync() now correctly proxies to the appropriate handler - https://github.com/guzzle/guzzle/commit/911bcbc8b434adce64e223a6d1d14e9a8f63e4e4 -* Feature: HandlerStack is now more generic. - https://github.com/guzzle/guzzle/commit/f2102941331cda544745eedd97fc8fd46e1ee33e -* Bug fix: setting verify to false in the StreamHandler now disables peer - verification. https://github.com/guzzle/guzzle/issues/1256 -* Feature: Middleware now uses an exception factory, including more error - context. https://github.com/guzzle/guzzle/pull/1282 -* Feature: better support for disabled functions. - https://github.com/guzzle/guzzle/pull/1287 -* Bug fix: fixed regression where MockHandler was not using `sink`. - https://github.com/guzzle/guzzle/pull/1292 - -## 6.1.0 - 2015-09-08 - -* Feature: Added the `on_stats` request option to provide access to transfer - statistics for requests. https://github.com/guzzle/guzzle/pull/1202 -* Feature: Added the ability to persist session cookies in CookieJars. - https://github.com/guzzle/guzzle/pull/1195 -* Feature: Some compatibility updates for Google APP Engine - https://github.com/guzzle/guzzle/pull/1216 -* Feature: Added support for NO_PROXY to prevent the use of a proxy based on - a simple set of rules. https://github.com/guzzle/guzzle/pull/1197 -* Feature: Cookies can now contain square brackets. - https://github.com/guzzle/guzzle/pull/1237 -* Bug fix: Now correctly parsing `=` inside of quotes in Cookies. - https://github.com/guzzle/guzzle/pull/1232 -* Bug fix: Cusotm cURL options now correctly override curl options of the - same name. https://github.com/guzzle/guzzle/pull/1221 -* Bug fix: Content-Type header is now added when using an explicitly provided - multipart body. https://github.com/guzzle/guzzle/pull/1218 -* Bug fix: Now ignoring Set-Cookie headers that have no name. -* Bug fix: Reason phrase is no longer cast to an int in some cases in the - cURL handler. https://github.com/guzzle/guzzle/pull/1187 -* Bug fix: Remove the Authorization header when redirecting if the Host - header changes. https://github.com/guzzle/guzzle/pull/1207 -* Bug fix: Cookie path matching fixes - https://github.com/guzzle/guzzle/issues/1129 -* Bug fix: Fixing the cURL `body_as_string` setting - https://github.com/guzzle/guzzle/pull/1201 -* Bug fix: quotes are no longer stripped when parsing cookies. - https://github.com/guzzle/guzzle/issues/1172 -* Bug fix: `form_params` and `query` now always uses the `&` separator. - https://github.com/guzzle/guzzle/pull/1163 -* Bug fix: Adding a Content-Length to PHP stream wrapper requests if not set. - https://github.com/guzzle/guzzle/pull/1189 - -## 6.0.2 - 2015-07-04 - -* Fixed a memory leak in the curl handlers in which references to callbacks - were not being removed by `curl_reset`. -* Cookies are now extracted properly before redirects. -* Cookies now allow more character ranges. -* Decoded Content-Encoding responses are now modified to correctly reflect - their state if the encoding was automatically removed by a handler. This - means that the `Content-Encoding` header may be removed an the - `Content-Length` modified to reflect the message size after removing the - encoding. -* Added a more explicit error message when trying to use `form_params` and - `multipart` in the same request. -* Several fixes for HHVM support. -* Functions are now conditionally required using an additional level of - indirection to help with global Composer installations. - -## 6.0.1 - 2015-05-27 - -* Fixed a bug with serializing the `query` request option where the `&` - separator was missing. -* Added a better error message for when `body` is provided as an array. Please - use `form_params` or `multipart` instead. -* Various doc fixes. - -## 6.0.0 - 2015-05-26 - -* See the UPGRADING.md document for more information. -* Added `multipart` and `form_params` request options. -* Added `synchronous` request option. -* Added the `on_headers` request option. -* Fixed `expect` handling. -* No longer adding default middlewares in the client ctor. These need to be - present on the provided handler in order to work. -* Requests are no longer initiated when sending async requests with the - CurlMultiHandler. This prevents unexpected recursion from requests completing - while ticking the cURL loop. -* Removed the semantics of setting `default` to `true`. This is no longer - required now that the cURL loop is not ticked for async requests. -* Added request and response logging middleware. -* No longer allowing self signed certificates when using the StreamHandler. -* Ensuring that `sink` is valid if saving to a file. -* Request exceptions now include a "handler context" which provides handler - specific contextual information. -* Added `GuzzleHttp\RequestOptions` to allow request options to be applied - using constants. -* `$maxHandles` has been removed from CurlMultiHandler. -* `MultipartPostBody` is now part of the `guzzlehttp/psr7` package. - -## 5.3.0 - 2015-05-19 - -* Mock now supports `save_to` -* Marked `AbstractRequestEvent::getTransaction()` as public. -* Fixed a bug in which multiple headers using different casing would overwrite - previous headers in the associative array. -* Added `Utils::getDefaultHandler()` -* Marked `GuzzleHttp\Client::getDefaultUserAgent` as deprecated. -* URL scheme is now always lowercased. - -## 6.0.0-beta.1 - -* Requires PHP >= 5.5 -* Updated to use PSR-7 - * Requires immutable messages, which basically means an event based system - owned by a request instance is no longer possible. - * Utilizing the [Guzzle PSR-7 package](https://github.com/guzzle/psr7). - * Removed the dependency on `guzzlehttp/streams`. These stream abstractions - are available in the `guzzlehttp/psr7` package under the `GuzzleHttp\Psr7` - namespace. -* Added middleware and handler system - * Replaced the Guzzle event and subscriber system with a middleware system. - * No longer depends on RingPHP, but rather places the HTTP handlers directly - in Guzzle, operating on PSR-7 messages. - * Retry logic is now encapsulated in `GuzzleHttp\Middleware::retry`, which - means the `guzzlehttp/retry-subscriber` is now obsolete. - * Mocking responses is now handled using `GuzzleHttp\Handler\MockHandler`. -* Asynchronous responses - * No longer supports the `future` request option to send an async request. - Instead, use one of the `*Async` methods of a client (e.g., `requestAsync`, - `getAsync`, etc.). - * Utilizing `GuzzleHttp\Promise` instead of React's promise library to avoid - recursion required by chaining and forwarding react promises. See - https://github.com/guzzle/promises - * Added `requestAsync` and `sendAsync` to send request asynchronously. - * Added magic methods for `getAsync()`, `postAsync()`, etc. to send requests - asynchronously. -* Request options - * POST and form updates - * Added the `form_fields` and `form_files` request options. - * Removed the `GuzzleHttp\Post` namespace. - * The `body` request option no longer accepts an array for POST requests. - * The `exceptions` request option has been deprecated in favor of the - `http_errors` request options. - * The `save_to` request option has been deprecated in favor of `sink` request - option. -* Clients no longer accept an array of URI template string and variables for - URI variables. You will need to expand URI templates before passing them - into a client constructor or request method. -* Client methods `get()`, `post()`, `put()`, `patch()`, `options()`, etc. are - now magic methods that will send synchronous requests. -* Replaced `Utils.php` with plain functions in `functions.php`. -* Removed `GuzzleHttp\Collection`. -* Removed `GuzzleHttp\BatchResults`. Batched pool results are now returned as - an array. -* Removed `GuzzleHttp\Query`. Query string handling is now handled using an - associative array passed into the `query` request option. The query string - is serialized using PHP's `http_build_query`. If you need more control, you - can pass the query string in as a string. -* `GuzzleHttp\QueryParser` has been replaced with the - `GuzzleHttp\Psr7\parse_query`. - -## 5.2.0 - 2015-01-27 - -* Added `AppliesHeadersInterface` to make applying headers to a request based - on the body more generic and not specific to `PostBodyInterface`. -* Reduced the number of stack frames needed to send requests. -* Nested futures are now resolved in the client rather than the RequestFsm -* Finishing state transitions is now handled in the RequestFsm rather than the - RingBridge. -* Added a guard in the Pool class to not use recursion for request retries. - -## 5.1.0 - 2014-12-19 - -* Pool class no longer uses recursion when a request is intercepted. -* The size of a Pool can now be dynamically adjusted using a callback. - See https://github.com/guzzle/guzzle/pull/943. -* Setting a request option to `null` when creating a request with a client will - ensure that the option is not set. This allows you to overwrite default - request options on a per-request basis. - See https://github.com/guzzle/guzzle/pull/937. -* Added the ability to limit which protocols are allowed for redirects by - specifying a `protocols` array in the `allow_redirects` request option. -* Nested futures due to retries are now resolved when waiting for synchronous - responses. See https://github.com/guzzle/guzzle/pull/947. -* `"0"` is now an allowed URI path. See - https://github.com/guzzle/guzzle/pull/935. -* `Query` no longer typehints on the `$query` argument in the constructor, - allowing for strings and arrays. -* Exceptions thrown in the `end` event are now correctly wrapped with Guzzle - specific exceptions if necessary. - -## 5.0.3 - 2014-11-03 - -This change updates query strings so that they are treated as un-encoded values -by default where the value represents an un-encoded value to send over the -wire. A Query object then encodes the value before sending over the wire. This -means that even value query string values (e.g., ":") are url encoded. This -makes the Query class match PHP's http_build_query function. However, if you -want to send requests over the wire using valid query string characters that do -not need to be encoded, then you can provide a string to Url::setQuery() and -pass true as the second argument to specify that the query string is a raw -string that should not be parsed or encoded (unless a call to getQuery() is -subsequently made, forcing the query-string to be converted into a Query -object). - -## 5.0.2 - 2014-10-30 - -* Added a trailing `\r\n` to multipart/form-data payloads. See - https://github.com/guzzle/guzzle/pull/871 -* Added a `GuzzleHttp\Pool::send()` convenience method to match the docs. -* Status codes are now returned as integers. See - https://github.com/guzzle/guzzle/issues/881 -* No longer overwriting an existing `application/x-www-form-urlencoded` header - when sending POST requests, allowing for customized headers. See - https://github.com/guzzle/guzzle/issues/877 -* Improved path URL serialization. - - * No longer double percent-encoding characters in the path or query string if - they are already encoded. - * Now properly encoding the supplied path to a URL object, instead of only - encoding ' ' and '?'. - * Note: This has been changed in 5.0.3 to now encode query string values by - default unless the `rawString` argument is provided when setting the query - string on a URL: Now allowing many more characters to be present in the - query string without being percent encoded. See http://tools.ietf.org/html/rfc3986#appendix-A - -## 5.0.1 - 2014-10-16 - -Bugfix release. - -* Fixed an issue where connection errors still returned response object in - error and end events event though the response is unusable. This has been - corrected so that a response is not returned in the `getResponse` method of - these events if the response did not complete. https://github.com/guzzle/guzzle/issues/867 -* Fixed an issue where transfer statistics were not being populated in the - RingBridge. https://github.com/guzzle/guzzle/issues/866 - -## 5.0.0 - 2014-10-12 - -Adding support for non-blocking responses and some minor API cleanup. - -### New Features - -* Added support for non-blocking responses based on `guzzlehttp/guzzle-ring`. -* Added a public API for creating a default HTTP adapter. -* Updated the redirect plugin to be non-blocking so that redirects are sent - concurrently. Other plugins like this can now be updated to be non-blocking. -* Added a "progress" event so that you can get upload and download progress - events. -* Added `GuzzleHttp\Pool` which implements FutureInterface and transfers - requests concurrently using a capped pool size as efficiently as possible. -* Added `hasListeners()` to EmitterInterface. -* Removed `GuzzleHttp\ClientInterface::sendAll` and marked - `GuzzleHttp\Client::sendAll` as deprecated (it's still there, just not the - recommended way). - -### Breaking changes - -The breaking changes in this release are relatively minor. The biggest thing to -look out for is that request and response objects no longer implement fluent -interfaces. - -* Removed the fluent interfaces (i.e., `return $this`) from requests, - responses, `GuzzleHttp\Collection`, `GuzzleHttp\Url`, - `GuzzleHttp\Query`, `GuzzleHttp\Post\PostBody`, and - `GuzzleHttp\Cookie\SetCookie`. This blog post provides a good outline of - why I did this: http://ocramius.github.io/blog/fluent-interfaces-are-evil/. - This also makes the Guzzle message interfaces compatible with the current - PSR-7 message proposal. -* Removed "functions.php", so that Guzzle is truly PSR-4 compliant. Except - for the HTTP request functions from function.php, these functions are now - implemented in `GuzzleHttp\Utils` using camelCase. `GuzzleHttp\json_decode` - moved to `GuzzleHttp\Utils::jsonDecode`. `GuzzleHttp\get_path` moved to - `GuzzleHttp\Utils::getPath`. `GuzzleHttp\set_path` moved to - `GuzzleHttp\Utils::setPath`. `GuzzleHttp\batch` should now be - `GuzzleHttp\Pool::batch`, which returns an `objectStorage`. Using functions.php - caused problems for many users: they aren't PSR-4 compliant, require an - explicit include, and needed an if-guard to ensure that the functions are not - declared multiple times. -* Rewrote adapter layer. - * Removing all classes from `GuzzleHttp\Adapter`, these are now - implemented as callables that are stored in `GuzzleHttp\Ring\Client`. - * Removed the concept of "parallel adapters". Sending requests serially or - concurrently is now handled using a single adapter. - * Moved `GuzzleHttp\Adapter\Transaction` to `GuzzleHttp\Transaction`. The - Transaction object now exposes the request, response, and client as public - properties. The getters and setters have been removed. -* Removed the "headers" event. This event was only useful for changing the - body a response once the headers of the response were known. You can implement - a similar behavior in a number of ways. One example might be to use a - FnStream that has access to the transaction being sent. For example, when the - first byte is written, you could check if the response headers match your - expectations, and if so, change the actual stream body that is being - written to. -* Removed the `asArray` parameter from - `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header - value as an array, then use the newly added `getHeaderAsArray()` method of - `MessageInterface`. This change makes the Guzzle interfaces compatible with - the PSR-7 interfaces. -* `GuzzleHttp\Message\MessageFactory` no longer allows subclasses to add - custom request options using double-dispatch (this was an implementation - detail). Instead, you should now provide an associative array to the - constructor which is a mapping of the request option name mapping to a - function that applies the option value to a request. -* Removed the concept of "throwImmediately" from exceptions and error events. - This control mechanism was used to stop a transfer of concurrent requests - from completing. This can now be handled by throwing the exception or by - cancelling a pool of requests or each outstanding future request individually. -* Updated to "GuzzleHttp\Streams" 3.0. - * `GuzzleHttp\Stream\StreamInterface::getContents()` no longer accepts a - `maxLen` parameter. This update makes the Guzzle streams project - compatible with the current PSR-7 proposal. - * `GuzzleHttp\Stream\Stream::__construct`, - `GuzzleHttp\Stream\Stream::factory`, and - `GuzzleHttp\Stream\Utils::create` no longer accept a size in the second - argument. They now accept an associative array of options, including the - "size" key and "metadata" key which can be used to provide custom metadata. - -## 4.2.2 - 2014-09-08 - -* Fixed a memory leak in the CurlAdapter when reusing cURL handles. -* No longer using `request_fulluri` in stream adapter proxies. -* Relative redirects are now based on the last response, not the first response. - -## 4.2.1 - 2014-08-19 - -* Ensuring that the StreamAdapter does not always add a Content-Type header -* Adding automated github releases with a phar and zip - -## 4.2.0 - 2014-08-17 - -* Now merging in default options using a case-insensitive comparison. - Closes https://github.com/guzzle/guzzle/issues/767 -* Added the ability to automatically decode `Content-Encoding` response bodies - using the `decode_content` request option. This is set to `true` by default - to decode the response body if it comes over the wire with a - `Content-Encoding`. Set this value to `false` to disable decoding the - response content, and pass a string to provide a request `Accept-Encoding` - header and turn on automatic response decoding. This feature now allows you - to pass an `Accept-Encoding` header in the headers of a request but still - disable automatic response decoding. - Closes https://github.com/guzzle/guzzle/issues/764 -* Added the ability to throw an exception immediately when transferring - requests in parallel. Closes https://github.com/guzzle/guzzle/issues/760 -* Updating guzzlehttp/streams dependency to ~2.1 -* No longer utilizing the now deprecated namespaced methods from the stream - package. - -## 4.1.8 - 2014-08-14 - -* Fixed an issue in the CurlFactory that caused setting the `stream=false` - request option to throw an exception. - See: https://github.com/guzzle/guzzle/issues/769 -* TransactionIterator now calls rewind on the inner iterator. - See: https://github.com/guzzle/guzzle/pull/765 -* You can now set the `Content-Type` header to `multipart/form-data` - when creating POST requests to force multipart bodies. - See https://github.com/guzzle/guzzle/issues/768 - -## 4.1.7 - 2014-08-07 - -* Fixed an error in the HistoryPlugin that caused the same request and response - to be logged multiple times when an HTTP protocol error occurs. -* Ensuring that cURL does not add a default Content-Type when no Content-Type - has been supplied by the user. This prevents the adapter layer from modifying - the request that is sent over the wire after any listeners may have already - put the request in a desired state (e.g., signed the request). -* Throwing an exception when you attempt to send requests that have the - "stream" set to true in parallel using the MultiAdapter. -* Only calling curl_multi_select when there are active cURL handles. This was - previously changed and caused performance problems on some systems due to PHP - always selecting until the maximum select timeout. -* Fixed a bug where multipart/form-data POST fields were not correctly - aggregated (e.g., values with "&"). - -## 4.1.6 - 2014-08-03 - -* Added helper methods to make it easier to represent messages as strings, - including getting the start line and getting headers as a string. - -## 4.1.5 - 2014-08-02 - -* Automatically retrying cURL "Connection died, retrying a fresh connect" - errors when possible. -* cURL implementation cleanup -* Allowing multiple event subscriber listeners to be registered per event by - passing an array of arrays of listener configuration. - -## 4.1.4 - 2014-07-22 - -* Fixed a bug that caused multi-part POST requests with more than one field to - serialize incorrectly. -* Paths can now be set to "0" -* `ResponseInterface::xml` now accepts a `libxml_options` option and added a - missing default argument that was required when parsing XML response bodies. -* A `save_to` stream is now created lazily, which means that files are not - created on disk unless a request succeeds. - -## 4.1.3 - 2014-07-15 - -* Various fixes to multipart/form-data POST uploads -* Wrapping function.php in an if-statement to ensure Guzzle can be used - globally and in a Composer install -* Fixed an issue with generating and merging in events to an event array -* POST headers are only applied before sending a request to allow you to change - the query aggregator used before uploading -* Added much more robust query string parsing -* Fixed various parsing and normalization issues with URLs -* Fixing an issue where multi-valued headers were not being utilized correctly - in the StreamAdapter - -## 4.1.2 - 2014-06-18 - -* Added support for sending payloads with GET requests - -## 4.1.1 - 2014-06-08 - -* Fixed an issue related to using custom message factory options in subclasses -* Fixed an issue with nested form fields in a multi-part POST -* Fixed an issue with using the `json` request option for POST requests -* Added `ToArrayInterface` to `GuzzleHttp\Cookie\CookieJar` - -## 4.1.0 - 2014-05-27 - -* Added a `json` request option to easily serialize JSON payloads. -* Added a `GuzzleHttp\json_decode()` wrapper to safely parse JSON. -* Added `setPort()` and `getPort()` to `GuzzleHttp\Message\RequestInterface`. -* Added the ability to provide an emitter to a client in the client constructor. -* Added the ability to persist a cookie session using $_SESSION. -* Added a trait that can be used to add event listeners to an iterator. -* Removed request method constants from RequestInterface. -* Fixed warning when invalid request start-lines are received. -* Updated MessageFactory to work with custom request option methods. -* Updated cacert bundle to latest build. - -4.0.2 (2014-04-16) ------------------- - -* Proxy requests using the StreamAdapter now properly use request_fulluri (#632) -* Added the ability to set scalars as POST fields (#628) - -## 4.0.1 - 2014-04-04 - -* The HTTP status code of a response is now set as the exception code of - RequestException objects. -* 303 redirects will now correctly switch from POST to GET requests. -* The default parallel adapter of a client now correctly uses the MultiAdapter. -* HasDataTrait now initializes the internal data array as an empty array so - that the toArray() method always returns an array. - -## 4.0.0 - 2014-03-29 - -* For more information on the 4.0 transition, see: - http://mtdowling.com/blog/2014/03/15/guzzle-4-rc/ -* For information on changes and upgrading, see: - https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40 -* Added `GuzzleHttp\batch()` as a convenience function for sending requests in - parallel without needing to write asynchronous code. -* Restructured how events are added to `GuzzleHttp\ClientInterface::sendAll()`. - You can now pass a callable or an array of associative arrays where each - associative array contains the "fn", "priority", and "once" keys. - -## 4.0.0.rc-2 - 2014-03-25 - -* Removed `getConfig()` and `setConfig()` from clients to avoid confusion - around whether things like base_url, message_factory, etc. should be able to - be retrieved or modified. -* Added `getDefaultOption()` and `setDefaultOption()` to ClientInterface -* functions.php functions were renamed using snake_case to match PHP idioms -* Added support for `HTTP_PROXY`, `HTTPS_PROXY`, and - `GUZZLE_CURL_SELECT_TIMEOUT` environment variables -* Added the ability to specify custom `sendAll()` event priorities -* Added the ability to specify custom stream context options to the stream - adapter. -* Added a functions.php function for `get_path()` and `set_path()` -* CurlAdapter and MultiAdapter now use a callable to generate curl resources -* MockAdapter now properly reads a body and emits a `headers` event -* Updated Url class to check if a scheme and host are set before adding ":" - and "//". This allows empty Url (e.g., "") to be serialized as "". -* Parsing invalid XML no longer emits warnings -* Curl classes now properly throw AdapterExceptions -* Various performance optimizations -* Streams are created with the faster `Stream\create()` function -* Marked deprecation_proxy() as internal -* Test server is now a collection of static methods on a class - -## 4.0.0-rc.1 - 2014-03-15 - -* See https://github.com/guzzle/guzzle/blob/master/UPGRADING.md#3x-to-40 - -## 3.8.1 - 2014-01-28 - -* Bug: Always using GET requests when redirecting from a 303 response -* Bug: CURLOPT_SSL_VERIFYHOST is now correctly set to false when setting `$certificateAuthority` to false in - `Guzzle\Http\ClientInterface::setSslVerification()` -* Bug: RedirectPlugin now uses strict RFC 3986 compliance when combining a base URL with a relative URL -* Bug: The body of a request can now be set to `"0"` -* Sending PHP stream requests no longer forces `HTTP/1.0` -* Adding more information to ExceptionCollection exceptions so that users have more context, including a stack trace of - each sub-exception -* Updated the `$ref` attribute in service descriptions to merge over any existing parameters of a schema (rather than - clobbering everything). -* Merging URLs will now use the query string object from the relative URL (thus allowing custom query aggregators) -* Query strings are now parsed in a way that they do no convert empty keys with no value to have a dangling `=`. - For example `foo&bar=baz` is now correctly parsed and recognized as `foo&bar=baz` rather than `foo=&bar=baz`. -* Now properly escaping the regular expression delimiter when matching Cookie domains. -* Network access is now disabled when loading XML documents - -## 3.8.0 - 2013-12-05 - -* Added the ability to define a POST name for a file -* JSON response parsing now properly walks additionalProperties -* cURL error code 18 is now retried automatically in the BackoffPlugin -* Fixed a cURL error when URLs contain fragments -* Fixed an issue in the BackoffPlugin retry event where it was trying to access all exceptions as if they were - CurlExceptions -* CURLOPT_PROGRESS function fix for PHP 5.5 (69fcc1e) -* Added the ability for Guzzle to work with older versions of cURL that do not support `CURLOPT_TIMEOUT_MS` -* Fixed a bug that was encountered when parsing empty header parameters -* UriTemplate now has a `setRegex()` method to match the docs -* The `debug` request parameter now checks if it is truthy rather than if it exists -* Setting the `debug` request parameter to true shows verbose cURL output instead of using the LogPlugin -* Added the ability to combine URLs using strict RFC 3986 compliance -* Command objects can now return the validation errors encountered by the command -* Various fixes to cache revalidation (#437 and 29797e5) -* Various fixes to the AsyncPlugin -* Cleaned up build scripts - -## 3.7.4 - 2013-10-02 - -* Bug fix: 0 is now an allowed value in a description parameter that has a default value (#430) -* Bug fix: SchemaFormatter now returns an integer when formatting to a Unix timestamp - (see https://github.com/aws/aws-sdk-php/issues/147) -* Bug fix: Cleaned up and fixed URL dot segment removal to properly resolve internal dots -* Minimum PHP version is now properly specified as 5.3.3 (up from 5.3.2) (#420) -* Updated the bundled cacert.pem (#419) -* OauthPlugin now supports adding authentication to headers or query string (#425) - -## 3.7.3 - 2013-09-08 - -* Added the ability to get the exception associated with a request/command when using `MultiTransferException` and - `CommandTransferException`. -* Setting `additionalParameters` of a response to false is now honored when parsing responses with a service description -* Schemas are only injected into response models when explicitly configured. -* No longer guessing Content-Type based on the path of a request. Content-Type is now only guessed based on the path of - an EntityBody. -* Bug fix: ChunkedIterator can now properly chunk a \Traversable as well as an \Iterator. -* Bug fix: FilterIterator now relies on `\Iterator` instead of `\Traversable`. -* Bug fix: Gracefully handling malformed responses in RequestMediator::writeResponseBody() -* Bug fix: Replaced call to canCache with canCacheRequest in the CallbackCanCacheStrategy of the CachePlugin -* Bug fix: Visiting XML attributes first before visiting XML children when serializing requests -* Bug fix: Properly parsing headers that contain commas contained in quotes -* Bug fix: mimetype guessing based on a filename is now case-insensitive - -## 3.7.2 - 2013-08-02 - -* Bug fix: Properly URL encoding paths when using the PHP-only version of the UriTemplate expander - See https://github.com/guzzle/guzzle/issues/371 -* Bug fix: Cookie domains are now matched correctly according to RFC 6265 - See https://github.com/guzzle/guzzle/issues/377 -* Bug fix: GET parameters are now used when calculating an OAuth signature -* Bug fix: Fixed an issue with cache revalidation where the If-None-Match header was being double quoted -* `Guzzle\Common\AbstractHasDispatcher::dispatch()` now returns the event that was dispatched -* `Guzzle\Http\QueryString::factory()` now guesses the most appropriate query aggregator to used based on the input. - See https://github.com/guzzle/guzzle/issues/379 -* Added a way to add custom domain objects to service description parsing using the `operation.parse_class` event. See - https://github.com/guzzle/guzzle/pull/380 -* cURL multi cleanup and optimizations - -## 3.7.1 - 2013-07-05 - -* Bug fix: Setting default options on a client now works -* Bug fix: Setting options on HEAD requests now works. See #352 -* Bug fix: Moving stream factory before send event to before building the stream. See #353 -* Bug fix: Cookies no longer match on IP addresses per RFC 6265 -* Bug fix: Correctly parsing header parameters that are in `<>` and quotes -* Added `cert` and `ssl_key` as request options -* `Host` header can now diverge from the host part of a URL if the header is set manually -* `Guzzle\Service\Command\LocationVisitor\Request\XmlVisitor` was rewritten to change from using SimpleXML to XMLWriter -* OAuth parameters are only added via the plugin if they aren't already set -* Exceptions are now thrown when a URL cannot be parsed -* Returning `false` if `Guzzle\Http\EntityBody::getContentMd5()` fails -* Not setting a `Content-MD5` on a command if calculating the Content-MD5 fails via the CommandContentMd5Plugin - -## 3.7.0 - 2013-06-10 - -* See UPGRADING.md for more information on how to upgrade. -* Requests now support the ability to specify an array of $options when creating a request to more easily modify a - request. You can pass a 'request.options' configuration setting to a client to apply default request options to - every request created by a client (e.g. default query string variables, headers, curl options, etc.). -* Added a static facade class that allows you to use Guzzle with static methods and mount the class to `\Guzzle`. - See `Guzzle\Http\StaticClient::mount`. -* Added `command.request_options` to `Guzzle\Service\Command\AbstractCommand` to pass request options to requests - created by a command (e.g. custom headers, query string variables, timeout settings, etc.). -* Stream size in `Guzzle\Stream\PhpStreamRequestFactory` will now be set if Content-Length is returned in the - headers of a response -* Added `Guzzle\Common\Collection::setPath($path, $value)` to set a value into an array using a nested key - (e.g. `$collection->setPath('foo/baz/bar', 'test'); echo $collection['foo']['bar']['bar'];`) -* ServiceBuilders now support storing and retrieving arbitrary data -* CachePlugin can now purge all resources for a given URI -* CachePlugin can automatically purge matching cached items when a non-idempotent request is sent to a resource -* CachePlugin now uses the Vary header to determine if a resource is a cache hit -* `Guzzle\Http\Message\Response` now implements `\Serializable` -* Added `Guzzle\Cache\CacheAdapterFactory::fromCache()` to more easily create cache adapters -* `Guzzle\Service\ClientInterface::execute()` now accepts an array, single command, or Traversable -* Fixed a bug in `Guzzle\Http\Message\Header\Link::addLink()` -* Better handling of calculating the size of a stream in `Guzzle\Stream\Stream` using fstat() and caching the size -* `Guzzle\Common\Exception\ExceptionCollection` now creates a more readable exception message -* Fixing BC break: Added back the MonologLogAdapter implementation rather than extending from PsrLog so that older - Symfony users can still use the old version of Monolog. -* Fixing BC break: Added the implementation back in for `Guzzle\Http\Message\AbstractMessage::getTokenizedHeader()`. - Now triggering an E_USER_DEPRECATED warning when used. Use `$message->getHeader()->parseParams()`. -* Several performance improvements to `Guzzle\Common\Collection` -* Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: - createRequest, head, delete, put, patch, post, options, prepareRequest -* Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` -* Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` -* Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to - `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a - resource, string, or EntityBody into the $options parameter to specify the download location of the response. -* Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a - default `array()` -* Added `Guzzle\Stream\StreamInterface::isRepeatable` -* Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use - $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or - $client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))`. -* Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use $client->getConfig()->getPath('request.options/headers')`. -* Removed `Guzzle\Http\ClientInterface::expandTemplate()` -* Removed `Guzzle\Http\ClientInterface::setRequestFactory()` -* Removed `Guzzle\Http\ClientInterface::getCurlMulti()` -* Removed `Guzzle\Http\Message\RequestInterface::canCache` -* Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect` -* Removed `Guzzle\Http\Message\RequestInterface::isRedirect` -* Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. -* You can now enable E_USER_DEPRECATED warnings to see if you are using a deprecated method by setting - `Guzzle\Common\Version::$emitWarnings` to true. -* Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use - `$request->getResponseBody()->isRepeatable()` instead. -* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use - `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -* Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use - `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -* Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. -* Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. -* Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated -* Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. - These will work through Guzzle 4.0 -* Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use [request.options][params]. -* Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. -* Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use $client->getConfig()->getPath('request.options/headers')`. -* Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use $client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. -* Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. -* Marked `Guzzle\Common\Collection::inject()` as deprecated. -* Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest');` -* CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a - CacheStorageInterface. These two objects and interface will be removed in a future version. -* Always setting X-cache headers on cached responses -* Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin -* `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface - $request, Response $response);` -* `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` -* `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` -* Added `CacheStorageInterface::purge($url)` -* `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin - $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, - CanCacheStrategyInterface $canCache = null)` -* Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` - -## 3.6.0 - 2013-05-29 - -* ServiceDescription now implements ToArrayInterface -* Added command.hidden_params to blacklist certain headers from being treated as additionalParameters -* Guzzle can now correctly parse incomplete URLs -* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. -* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution -* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). -* Specific header implementations can be created for complex headers. When a message creates a header, it uses a - HeaderFactory which can map specific headers to specific header classes. There is now a Link header and - CacheControl header implementation. -* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate -* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() -* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in - Guzzle\Http\Curl\RequestMediator -* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. -* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface -* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() -* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() -* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). -* All response header helper functions return a string rather than mixing Header objects and strings inconsistently -* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle - directly via interfaces -* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist - but are a no-op until removed. -* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a - `Guzzle\Service\Command\ArrayCommandInterface`. -* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response - on a request while the request is still being transferred -* The ability to case-insensitively search for header values -* Guzzle\Http\Message\Header::hasExactHeader -* Guzzle\Http\Message\Header::raw. Use getAll() -* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object - instead. -* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess -* Added the ability to cast Model objects to a string to view debug information. - -## 3.5.0 - 2013-05-13 - -* Bug: Fixed a regression so that request responses are parsed only once per oncomplete event rather than multiple times -* Bug: Better cleanup of one-time events across the board (when an event is meant to fire once, it will now remove - itself from the EventDispatcher) -* Bug: `Guzzle\Log\MessageFormatter` now properly writes "total_time" and "connect_time" values -* Bug: Cloning an EntityEnclosingRequest now clones the EntityBody too -* Bug: Fixed an undefined index error when parsing nested JSON responses with a sentAs parameter that reference a - non-existent key -* Bug: All __call() method arguments are now required (helps with mocking frameworks) -* Deprecating Response::getRequest() and now using a shallow clone of a request object to remove a circular reference - to help with refcount based garbage collection of resources created by sending a request -* Deprecating ZF1 cache and log adapters. These will be removed in the next major version. -* Deprecating `Response::getPreviousResponse()` (method signature still exists, but it's deprecated). Use the - HistoryPlugin for a history. -* Added a `responseBody` alias for the `response_body` location -* Refactored internals to no longer rely on Response::getRequest() -* HistoryPlugin can now be cast to a string -* HistoryPlugin now logs transactions rather than requests and responses to more accurately keep track of the requests - and responses that are sent over the wire -* Added `getEffectiveUrl()` and `getRedirectCount()` to Response objects - -## 3.4.3 - 2013-04-30 - -* Bug fix: Fixing bug introduced in 3.4.2 where redirect responses are duplicated on the final redirected response -* Added a check to re-extract the temp cacert bundle from the phar before sending each request - -## 3.4.2 - 2013-04-29 - -* Bug fix: Stream objects now work correctly with "a" and "a+" modes -* Bug fix: Removing `Transfer-Encoding: chunked` header when a Content-Length is present -* Bug fix: AsyncPlugin no longer forces HEAD requests -* Bug fix: DateTime timezones are now properly handled when using the service description schema formatter -* Bug fix: CachePlugin now properly handles stale-if-error directives when a request to the origin server fails -* Setting a response on a request will write to the custom request body from the response body if one is specified -* LogPlugin now writes to php://output when STDERR is undefined -* Added the ability to set multiple POST files for the same key in a single call -* application/x-www-form-urlencoded POSTs now use the utf-8 charset by default -* Added the ability to queue CurlExceptions to the MockPlugin -* Cleaned up how manual responses are queued on requests (removed "queued_response" and now using request.before_send) -* Configuration loading now allows remote files - -## 3.4.1 - 2013-04-16 - -* Large refactoring to how CurlMulti handles work. There is now a proxy that sits in front of a pool of CurlMulti - handles. This greatly simplifies the implementation, fixes a couple bugs, and provides a small performance boost. -* Exceptions are now properly grouped when sending requests in parallel -* Redirects are now properly aggregated when a multi transaction fails -* Redirects now set the response on the original object even in the event of a failure -* Bug fix: Model names are now properly set even when using $refs -* Added support for PHP 5.5's CurlFile to prevent warnings with the deprecated @ syntax -* Added support for oauth_callback in OAuth signatures -* Added support for oauth_verifier in OAuth signatures -* Added support to attempt to retrieve a command first literally, then ucfirst, the with inflection - -## 3.4.0 - 2013-04-11 - -* Bug fix: URLs are now resolved correctly based on http://tools.ietf.org/html/rfc3986#section-5.2. #289 -* Bug fix: Absolute URLs with a path in a service description will now properly override the base URL. #289 -* Bug fix: Parsing a query string with a single PHP array value will now result in an array. #263 -* Bug fix: Better normalization of the User-Agent header to prevent duplicate headers. #264. -* Bug fix: Added `number` type to service descriptions. -* Bug fix: empty parameters are removed from an OAuth signature -* Bug fix: Revalidating a cache entry prefers the Last-Modified over the Date header -* Bug fix: Fixed "array to string" error when validating a union of types in a service description -* Bug fix: Removed code that attempted to determine the size of a stream when data is written to the stream -* Bug fix: Not including an `oauth_token` if the value is null in the OauthPlugin. -* Bug fix: Now correctly aggregating successful requests and failed requests in CurlMulti when a redirect occurs. -* The new default CURLOPT_TIMEOUT setting has been increased to 150 seconds so that Guzzle works on poor connections. -* Added a feature to EntityEnclosingRequest::setBody() that will automatically set the Content-Type of the request if - the Content-Type can be determined based on the entity body or the path of the request. -* Added the ability to overwrite configuration settings in a client when grabbing a throwaway client from a builder. -* Added support for a PSR-3 LogAdapter. -* Added a `command.after_prepare` event -* Added `oauth_callback` parameter to the OauthPlugin -* Added the ability to create a custom stream class when using a stream factory -* Added a CachingEntityBody decorator -* Added support for `additionalParameters` in service descriptions to define how custom parameters are serialized. -* The bundled SSL certificate is now provided in the phar file and extracted when running Guzzle from a phar. -* You can now send any EntityEnclosingRequest with POST fields or POST files and cURL will handle creating bodies -* POST requests using a custom entity body are now treated exactly like PUT requests but with a custom cURL method. This - means that the redirect behavior of POST requests with custom bodies will not be the same as POST requests that use - POST fields or files (the latter is only used when emulating a form POST in the browser). -* Lots of cleanup to CurlHandle::factory and RequestFactory::createRequest - -## 3.3.1 - 2013-03-10 - -* Added the ability to create PHP streaming responses from HTTP requests -* Bug fix: Running any filters when parsing response headers with service descriptions -* Bug fix: OauthPlugin fixes to allow for multi-dimensional array signing, and sorting parameters before signing -* Bug fix: Removed the adding of default empty arrays and false Booleans to responses in order to be consistent across - response location visitors. -* Bug fix: Removed the possibility of creating configuration files with circular dependencies -* RequestFactory::create() now uses the key of a POST file when setting the POST file name -* Added xmlAllowEmpty to serialize an XML body even if no XML specific parameters are set - -## 3.3.0 - 2013-03-03 - -* A large number of performance optimizations have been made -* Bug fix: Added 'wb' as a valid write mode for streams -* Bug fix: `Guzzle\Http\Message\Response::json()` now allows scalar values to be returned -* Bug fix: Fixed bug in `Guzzle\Http\Message\Response` where wrapping quotes were stripped from `getEtag()` -* BC: Removed `Guzzle\Http\Utils` class -* BC: Setting a service description on a client will no longer modify the client's command factories. -* BC: Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using - the 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' -* BC: `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getSteamType()` are no longer converted to - lowercase -* Operation parameter objects are now lazy loaded internally -* Added ErrorResponsePlugin that can throw errors for responses defined in service description operations' errorResponses -* Added support for instantiating responseType=class responseClass classes. Classes must implement - `Guzzle\Service\Command\ResponseClassInterface` -* Added support for additionalProperties for top-level parameters in responseType=model responseClasses. These - additional properties also support locations and can be used to parse JSON responses where the outermost part of the - JSON is an array -* Added support for nested renaming of JSON models (rename sentAs to name) -* CachePlugin - * Added support for stale-if-error so that the CachePlugin can now serve stale content from the cache on error - * Debug headers can now added to cached response in the CachePlugin - -## 3.2.0 - 2013-02-14 - -* CurlMulti is no longer reused globally. A new multi object is created per-client. This helps to isolate clients. -* URLs with no path no longer contain a "/" by default -* Guzzle\Http\QueryString does no longer manages the leading "?". This is now handled in Guzzle\Http\Url. -* BadResponseException no longer includes the full request and response message -* Adding setData() to Guzzle\Service\Description\ServiceDescriptionInterface -* Adding getResponseBody() to Guzzle\Http\Message\RequestInterface -* Various updates to classes to use ServiceDescriptionInterface type hints rather than ServiceDescription -* Header values can now be normalized into distinct values when multiple headers are combined with a comma separated list -* xmlEncoding can now be customized for the XML declaration of a XML service description operation -* Guzzle\Http\QueryString now uses Guzzle\Http\QueryAggregator\QueryAggregatorInterface objects to add custom value - aggregation and no longer uses callbacks -* The URL encoding implementation of Guzzle\Http\QueryString can now be customized -* Bug fix: Filters were not always invoked for array service description parameters -* Bug fix: Redirects now use a target response body rather than a temporary response body -* Bug fix: The default exponential backoff BackoffPlugin was not giving when the request threshold was exceeded -* Bug fix: Guzzle now takes the first found value when grabbing Cache-Control directives - -## 3.1.2 - 2013-01-27 - -* Refactored how operation responses are parsed. Visitors now include a before() method responsible for parsing the - response body. For example, the XmlVisitor now parses the XML response into an array in the before() method. -* Fixed an issue where cURL would not automatically decompress responses when the Accept-Encoding header was sent -* CURLOPT_SSL_VERIFYHOST is never set to 1 because it is deprecated (see 5e0ff2ef20f839e19d1eeb298f90ba3598784444) -* Fixed a bug where redirect responses were not chained correctly using getPreviousResponse() -* Setting default headers on a client after setting the user-agent will not erase the user-agent setting - -## 3.1.1 - 2013-01-20 - -* Adding wildcard support to Guzzle\Common\Collection::getPath() -* Adding alias support to ServiceBuilder configs -* Adding Guzzle\Service\Resource\CompositeResourceIteratorFactory and cleaning up factory interface - -## 3.1.0 - 2013-01-12 - -* BC: CurlException now extends from RequestException rather than BadResponseException -* BC: Renamed Guzzle\Plugin\Cache\CanCacheStrategyInterface::canCache() to canCacheRequest() and added CanCacheResponse() -* Added getData to ServiceDescriptionInterface -* Added context array to RequestInterface::setState() -* Bug: Removing hard dependency on the BackoffPlugin from Guzzle\Http -* Bug: Adding required content-type when JSON request visitor adds JSON to a command -* Bug: Fixing the serialization of a service description with custom data -* Made it easier to deal with exceptions thrown when transferring commands or requests in parallel by providing - an array of successful and failed responses -* Moved getPath from Guzzle\Service\Resource\Model to Guzzle\Common\Collection -* Added Guzzle\Http\IoEmittingEntityBody -* Moved command filtration from validators to location visitors -* Added `extends` attributes to service description parameters -* Added getModels to ServiceDescriptionInterface - -## 3.0.7 - 2012-12-19 - -* Fixing phar detection when forcing a cacert to system if null or true -* Allowing filename to be passed to `Guzzle\Http\Message\Request::setResponseBody()` -* Cleaning up `Guzzle\Common\Collection::inject` method -* Adding a response_body location to service descriptions - -## 3.0.6 - 2012-12-09 - -* CurlMulti performance improvements -* Adding setErrorResponses() to Operation -* composer.json tweaks - -## 3.0.5 - 2012-11-18 - -* Bug: Fixing an infinite recursion bug caused from revalidating with the CachePlugin -* Bug: Response body can now be a string containing "0" -* Bug: Using Guzzle inside of a phar uses system by default but now allows for a custom cacert -* Bug: QueryString::fromString now properly parses query string parameters that contain equal signs -* Added support for XML attributes in service description responses -* DefaultRequestSerializer now supports array URI parameter values for URI template expansion -* Added better mimetype guessing to requests and post files - -## 3.0.4 - 2012-11-11 - -* Bug: Fixed a bug when adding multiple cookies to a request to use the correct glue value -* Bug: Cookies can now be added that have a name, domain, or value set to "0" -* Bug: Using the system cacert bundle when using the Phar -* Added json and xml methods to Response to make it easier to parse JSON and XML response data into data structures -* Enhanced cookie jar de-duplication -* Added the ability to enable strict cookie jars that throw exceptions when invalid cookies are added -* Added setStream to StreamInterface to actually make it possible to implement custom rewind behavior for entity bodies -* Added the ability to create any sort of hash for a stream rather than just an MD5 hash - -## 3.0.3 - 2012-11-04 - -* Implementing redirects in PHP rather than cURL -* Added PECL URI template extension and using as default parser if available -* Bug: Fixed Content-Length parsing of Response factory -* Adding rewind() method to entity bodies and streams. Allows for custom rewinding of non-repeatable streams. -* Adding ToArrayInterface throughout library -* Fixing OauthPlugin to create unique nonce values per request - -## 3.0.2 - 2012-10-25 - -* Magic methods are enabled by default on clients -* Magic methods return the result of a command -* Service clients no longer require a base_url option in the factory -* Bug: Fixed an issue with URI templates where null template variables were being expanded - -## 3.0.1 - 2012-10-22 - -* Models can now be used like regular collection objects by calling filter, map, etc. -* Models no longer require a Parameter structure or initial data in the constructor -* Added a custom AppendIterator to get around a PHP bug with the `\AppendIterator` - -## 3.0.0 - 2012-10-15 - -* Rewrote service description format to be based on Swagger - * Now based on JSON schema - * Added nested input structures and nested response models - * Support for JSON and XML input and output models - * Renamed `commands` to `operations` - * Removed dot class notation - * Removed custom types -* Broke the project into smaller top-level namespaces to be more component friendly -* Removed support for XML configs and descriptions. Use arrays or JSON files. -* Removed the Validation component and Inspector -* Moved all cookie code to Guzzle\Plugin\Cookie -* Magic methods on a Guzzle\Service\Client now return the command un-executed. -* Calling getResult() or getResponse() on a command will lazily execute the command if needed. -* Now shipping with cURL's CA certs and using it by default -* Added previousResponse() method to response objects -* No longer sending Accept and Accept-Encoding headers on every request -* Only sending an Expect header by default when a payload is greater than 1MB -* Added/moved client options: - * curl.blacklist to curl.option.blacklist - * Added ssl.certificate_authority -* Added a Guzzle\Iterator component -* Moved plugins from Guzzle\Http\Plugin to Guzzle\Plugin -* Added a more robust backoff retry strategy (replaced the ExponentialBackoffPlugin) -* Added a more robust caching plugin -* Added setBody to response objects -* Updating LogPlugin to use a more flexible MessageFormatter -* Added a completely revamped build process -* Cleaning up Collection class and removing default values from the get method -* Fixed ZF2 cache adapters - -## 2.8.8 - 2012-10-15 - -* Bug: Fixed a cookie issue that caused dot prefixed domains to not match where popular browsers did - -## 2.8.7 - 2012-09-30 - -* Bug: Fixed config file aliases for JSON includes -* Bug: Fixed cookie bug on a request object by using CookieParser to parse cookies on requests -* Bug: Removing the path to a file when sending a Content-Disposition header on a POST upload -* Bug: Hardening request and response parsing to account for missing parts -* Bug: Fixed PEAR packaging -* Bug: Fixed Request::getInfo -* Bug: Fixed cases where CURLM_CALL_MULTI_PERFORM return codes were causing curl transactions to fail -* Adding the ability for the namespace Iterator factory to look in multiple directories -* Added more getters/setters/removers from service descriptions -* Added the ability to remove POST fields from OAuth signatures -* OAuth plugin now supports 2-legged OAuth - -## 2.8.6 - 2012-09-05 - -* Added the ability to modify and build service descriptions -* Added the use of visitors to apply parameters to locations in service descriptions using the dynamic command -* Added a `json` parameter location -* Now allowing dot notation for classes in the CacheAdapterFactory -* Using the union of two arrays rather than an array_merge when extending service builder services and service params -* Ensuring that a service is a string before doing strpos() checks on it when substituting services for references - in service builder config files. -* Services defined in two different config files that include one another will by default replace the previously - defined service, but you can now create services that extend themselves and merge their settings over the previous -* The JsonLoader now supports aliasing filenames with different filenames. This allows you to alias something like - '_default' with a default JSON configuration file. - -## 2.8.5 - 2012-08-29 - -* Bug: Suppressed empty arrays from URI templates -* Bug: Added the missing $options argument from ServiceDescription::factory to enable caching -* Added support for HTTP responses that do not contain a reason phrase in the start-line -* AbstractCommand commands are now invokable -* Added a way to get the data used when signing an Oauth request before a request is sent - -## 2.8.4 - 2012-08-15 - -* Bug: Custom delay time calculations are no longer ignored in the ExponentialBackoffPlugin -* Added the ability to transfer entity bodies as a string rather than streamed. This gets around curl error 65. Set `body_as_string` in a request's curl options to enable. -* Added a StreamInterface, EntityBodyInterface, and added ftell() to Guzzle\Common\Stream -* Added an AbstractEntityBodyDecorator and a ReadLimitEntityBody decorator to transfer only a subset of a decorated stream -* Stream and EntityBody objects will now return the file position to the previous position after a read required operation (e.g. getContentMd5()) -* Added additional response status codes -* Removed SSL information from the default User-Agent header -* DELETE requests can now send an entity body -* Added an EventDispatcher to the ExponentialBackoffPlugin and added an ExponentialBackoffLogger to log backoff retries -* Added the ability of the MockPlugin to consume mocked request bodies -* LogPlugin now exposes request and response objects in the extras array - -## 2.8.3 - 2012-07-30 - -* Bug: Fixed a case where empty POST requests were sent as GET requests -* Bug: Fixed a bug in ExponentialBackoffPlugin that caused fatal errors when retrying an EntityEnclosingRequest that does not have a body -* Bug: Setting the response body of a request to null after completing a request, not when setting the state of a request to new -* Added multiple inheritance to service description commands -* Added an ApiCommandInterface and added `getParamNames()` and `hasParam()` -* Removed the default 2mb size cutoff from the Md5ValidatorPlugin so that it now defaults to validating everything -* Changed CurlMulti::perform to pass a smaller timeout to CurlMulti::executeHandles - -## 2.8.2 - 2012-07-24 - -* Bug: Query string values set to 0 are no longer dropped from the query string -* Bug: A Collection object is no longer created each time a call is made to `Guzzle\Service\Command\AbstractCommand::getRequestHeaders()` -* Bug: `+` is now treated as an encoded space when parsing query strings -* QueryString and Collection performance improvements -* Allowing dot notation for class paths in filters attribute of a service descriptions - -## 2.8.1 - 2012-07-16 - -* Loosening Event Dispatcher dependency -* POST redirects can now be customized using CURLOPT_POSTREDIR - -## 2.8.0 - 2012-07-15 - -* BC: Guzzle\Http\Query - * Query strings with empty variables will always show an equal sign unless the variable is set to QueryString::BLANK (e.g. ?acl= vs ?acl) - * Changed isEncodingValues() and isEncodingFields() to isUrlEncoding() - * Changed setEncodeValues(bool) and setEncodeFields(bool) to useUrlEncoding(bool) - * Changed the aggregation functions of QueryString to be static methods - * Can now use fromString() with querystrings that have a leading ? -* cURL configuration values can be specified in service descriptions using `curl.` prefixed parameters -* Content-Length is set to 0 before emitting the request.before_send event when sending an empty request body -* Cookies are no longer URL decoded by default -* Bug: URI template variables set to null are no longer expanded - -## 2.7.2 - 2012-07-02 - -* BC: Moving things to get ready for subtree splits. Moving Inflection into Common. Moving Guzzle\Http\Parser to Guzzle\Parser. -* BC: Removing Guzzle\Common\Batch\Batch::count() and replacing it with isEmpty() -* CachePlugin now allows for a custom request parameter function to check if a request can be cached -* Bug fix: CachePlugin now only caches GET and HEAD requests by default -* Bug fix: Using header glue when transferring headers over the wire -* Allowing deeply nested arrays for composite variables in URI templates -* Batch divisors can now return iterators or arrays - -## 2.7.1 - 2012-06-26 - -* Minor patch to update version number in UA string -* Updating build process - -## 2.7.0 - 2012-06-25 - -* BC: Inflection classes moved to Guzzle\Inflection. No longer static methods. Can now inject custom inflectors into classes. -* BC: Removed magic setX methods from commands -* BC: Magic methods mapped to service description commands are now inflected in the command factory rather than the client __call() method -* Verbose cURL options are no longer enabled by default. Set curl.debug to true on a client to enable. -* Bug: Now allowing colons in a response start-line (e.g. HTTP/1.1 503 Service Unavailable: Back-end server is at capacity) -* Guzzle\Service\Resource\ResourceIteratorApplyBatched now internally uses the Guzzle\Common\Batch namespace -* Added Guzzle\Service\Plugin namespace and a PluginCollectionPlugin -* Added the ability to set POST fields and files in a service description -* Guzzle\Http\EntityBody::factory() now accepts objects with a __toString() method -* Adding a command.before_prepare event to clients -* Added BatchClosureTransfer and BatchClosureDivisor -* BatchTransferException now includes references to the batch divisor and transfer strategies -* Fixed some tests so that they pass more reliably -* Added Guzzle\Common\Log\ArrayLogAdapter - -## 2.6.6 - 2012-06-10 - -* BC: Removing Guzzle\Http\Plugin\BatchQueuePlugin -* BC: Removing Guzzle\Service\Command\CommandSet -* Adding generic batching system (replaces the batch queue plugin and command set) -* Updating ZF cache and log adapters and now using ZF's composer repository -* Bug: Setting the name of each ApiParam when creating through an ApiCommand -* Adding result_type, result_doc, deprecated, and doc_url to service descriptions -* Bug: Changed the default cookie header casing back to 'Cookie' - -## 2.6.5 - 2012-06-03 - -* BC: Renaming Guzzle\Http\Message\RequestInterface::getResourceUri() to getResource() -* BC: Removing unused AUTH_BASIC and AUTH_DIGEST constants from -* BC: Guzzle\Http\Cookie is now used to manage Set-Cookie data, not Cookie data -* BC: Renaming methods in the CookieJarInterface -* Moving almost all cookie logic out of the CookiePlugin and into the Cookie or CookieJar implementations -* Making the default glue for HTTP headers ';' instead of ',' -* Adding a removeValue to Guzzle\Http\Message\Header -* Adding getCookies() to request interface. -* Making it easier to add event subscribers to HasDispatcherInterface classes. Can now directly call addSubscriber() - -## 2.6.4 - 2012-05-30 - -* BC: Cleaning up how POST files are stored in EntityEnclosingRequest objects. Adding PostFile class. -* BC: Moving ApiCommand specific functionality from the Inspector and on to the ApiCommand -* Bug: Fixing magic method command calls on clients -* Bug: Email constraint only validates strings -* Bug: Aggregate POST fields when POST files are present in curl handle -* Bug: Fixing default User-Agent header -* Bug: Only appending or prepending parameters in commands if they are specified -* Bug: Not requiring response reason phrases or status codes to match a predefined list of codes -* Allowing the use of dot notation for class namespaces when using instance_of constraint -* Added any_match validation constraint -* Added an AsyncPlugin -* Passing request object to the calculateWait method of the ExponentialBackoffPlugin -* Allowing the result of a command object to be changed -* Parsing location and type sub values when instantiating a service description rather than over and over at runtime - -## 2.6.3 - 2012-05-23 - -* [BC] Guzzle\Common\FromConfigInterface no longer requires any config options. -* [BC] Refactoring how POST files are stored on an EntityEnclosingRequest. They are now separate from POST fields. -* You can now use an array of data when creating PUT request bodies in the request factory. -* Removing the requirement that HTTPS requests needed a Cache-Control: public directive to be cacheable. -* [Http] Adding support for Content-Type in multipart POST uploads per upload -* [Http] Added support for uploading multiple files using the same name (foo[0], foo[1]) -* Adding more POST data operations for easier manipulation of POST data. -* You can now set empty POST fields. -* The body of a request is only shown on EntityEnclosingRequest objects that do not use POST files. -* Split the Guzzle\Service\Inspector::validateConfig method into two methods. One to initialize when a command is created, and one to validate. -* CS updates - -## 2.6.2 - 2012-05-19 - -* [Http] Better handling of nested scope requests in CurlMulti. Requests are now always prepares in the send() method rather than the addRequest() method. - -## 2.6.1 - 2012-05-19 - -* [BC] Removing 'path' support in service descriptions. Use 'uri'. -* [BC] Guzzle\Service\Inspector::parseDocBlock is now protected. Adding getApiParamsForClass() with cache. -* [BC] Removing Guzzle\Common\NullObject. Use https://github.com/mtdowling/NullObject if you need it. -* [BC] Removing Guzzle\Common\XmlElement. -* All commands, both dynamic and concrete, have ApiCommand objects. -* Adding a fix for CurlMulti so that if all of the connections encounter some sort of curl error, then the loop exits. -* Adding checks to EntityEnclosingRequest so that empty POST files and fields are ignored. -* Making the method signature of Guzzle\Service\Builder\ServiceBuilder::factory more flexible. - -## 2.6.0 - 2012-05-15 - -* [BC] Moving Guzzle\Service\Builder to Guzzle\Service\Builder\ServiceBuilder -* [BC] Executing a Command returns the result of the command rather than the command -* [BC] Moving all HTTP parsing logic to Guzzle\Http\Parsers. Allows for faster C implementations if needed. -* [BC] Changing the Guzzle\Http\Message\Response::setProtocol() method to accept a protocol and version in separate args. -* [BC] Moving ResourceIterator* to Guzzle\Service\Resource -* [BC] Completely refactored ResourceIterators to iterate over a cloned command object -* [BC] Moved Guzzle\Http\UriTemplate to Guzzle\Http\Parser\UriTemplate\UriTemplate -* [BC] Guzzle\Guzzle is now deprecated -* Moving Guzzle\Common\Guzzle::inject to Guzzle\Common\Collection::inject -* Adding Guzzle\Version class to give version information about Guzzle -* Adding Guzzle\Http\Utils class to provide getDefaultUserAgent() and getHttpDate() -* Adding Guzzle\Curl\CurlVersion to manage caching curl_version() data -* ServiceDescription and ServiceBuilder are now cacheable using similar configs -* Changing the format of XML and JSON service builder configs. Backwards compatible. -* Cleaned up Cookie parsing -* Trimming the default Guzzle User-Agent header -* Adding a setOnComplete() method to Commands that is called when a command completes -* Keeping track of requests that were mocked in the MockPlugin -* Fixed a caching bug in the CacheAdapterFactory -* Inspector objects can be injected into a Command object -* Refactoring a lot of code and tests to be case insensitive when dealing with headers -* Adding Guzzle\Http\Message\HeaderComparison for easy comparison of HTTP headers using a DSL -* Adding the ability to set global option overrides to service builder configs -* Adding the ability to include other service builder config files from within XML and JSON files -* Moving the parseQuery method out of Url and on to QueryString::fromString() as a static factory method. - -## 2.5.0 - 2012-05-08 - -* Major performance improvements -* [BC] Simplifying Guzzle\Common\Collection. Please check to see if you are using features that are now deprecated. -* [BC] Using a custom validation system that allows a flyweight implementation for much faster validation. No longer using Symfony2 Validation component. -* [BC] No longer supporting "{{ }}" for injecting into command or UriTemplates. Use "{}" -* Added the ability to passed parameters to all requests created by a client -* Added callback functionality to the ExponentialBackoffPlugin -* Using microtime in ExponentialBackoffPlugin to allow more granular backoff strategies. -* Rewinding request stream bodies when retrying requests -* Exception is thrown when JSON response body cannot be decoded -* Added configurable magic method calls to clients and commands. This is off by default. -* Fixed a defect that added a hash to every parsed URL part -* Fixed duplicate none generation for OauthPlugin. -* Emitting an event each time a client is generated by a ServiceBuilder -* Using an ApiParams object instead of a Collection for parameters of an ApiCommand -* cache.* request parameters should be renamed to params.cache.* -* Added the ability to set arbitrary curl options on requests (disable_wire, progress, etc.). See CurlHandle. -* Added the ability to disable type validation of service descriptions -* ServiceDescriptions and ServiceBuilders are now Serializable diff --git a/vendor/guzzlehttp/guzzle/Dockerfile b/vendor/guzzlehttp/guzzle/Dockerfile deleted file mode 100644 index f6a0952..0000000 --- a/vendor/guzzlehttp/guzzle/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM composer:latest as setup - -RUN mkdir /guzzle - -WORKDIR /guzzle - -RUN set -xe \ - && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="MĂĄrk SĂĄgi-KazĂĄr " --no-interaction \ - && composer require guzzlehttp/guzzle - - -FROM php:7.3 - -RUN mkdir /guzzle - -WORKDIR /guzzle - -COPY --from=setup /guzzle /guzzle diff --git a/vendor/guzzlehttp/guzzle/LICENSE b/vendor/guzzlehttp/guzzle/LICENSE deleted file mode 100644 index 50a177b..0000000 --- a/vendor/guzzlehttp/guzzle/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/guzzlehttp/guzzle/README.md b/vendor/guzzlehttp/guzzle/README.md deleted file mode 100644 index 5fdb6c5..0000000 --- a/vendor/guzzlehttp/guzzle/README.md +++ /dev/null @@ -1,90 +0,0 @@ -Guzzle, PHP HTTP client -======================= - -[![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases) -[![Build Status](https://img.shields.io/travis/guzzle/guzzle.svg?style=flat-square)](https://travis-ci.org/guzzle/guzzle) -[![Total Downloads](https://img.shields.io/packagist/dt/guzzlehttp/guzzle.svg?style=flat-square)](https://packagist.org/packages/guzzlehttp/guzzle) - -Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and -trivial to integrate with web services. - -- Simple interface for building query strings, POST requests, streaming large - uploads, streaming large downloads, using HTTP cookies, uploading JSON data, - etc... -- Can send both synchronous and asynchronous requests using the same interface. -- Uses PSR-7 interfaces for requests, responses, and streams. This allows you - to utilize other PSR-7 compatible libraries with Guzzle. -- Abstracts away the underlying HTTP transport, allowing you to write - environment and transport agnostic code; i.e., no hard dependency on cURL, - PHP streams, sockets, or non-blocking event loops. -- Middleware system allows you to augment and compose client behavior. - -```php -$client = new \GuzzleHttp\Client(); -$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle'); - -echo $response->getStatusCode(); # 200 -echo $response->getHeaderLine('content-type'); # 'application/json; charset=utf8' -echo $response->getBody(); # '{"id": 1420053, "name": "guzzle", ...}' - -# Send an asynchronous request. -$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org'); -$promise = $client->sendAsync($request)->then(function ($response) { - echo 'I completed! ' . $response->getBody(); -}); - -$promise->wait(); -``` - -## Help and docs - -- [Documentation](http://guzzlephp.org/) -- [Stack Overflow](http://stackoverflow.com/questions/tagged/guzzle) -- [Gitter](https://gitter.im/guzzle/guzzle) - - -## Installing Guzzle - -The recommended way to install Guzzle is through -[Composer](http://getcomposer.org). - -```bash -# Install Composer -curl -sS https://getcomposer.org/installer | php -``` - -Next, run the Composer command to install the latest stable version of Guzzle: - -```bash -composer require guzzlehttp/guzzle -``` - -After installing, you need to require Composer's autoloader: - -```php -require 'vendor/autoload.php'; -``` - -You can then later update Guzzle using composer: - - ```bash -composer update - ``` - - -## Version Guidance - -| Version | Status | Packagist | Namespace | Repo | Docs | PSR-7 | PHP Version | -|---------|------------|---------------------|--------------|---------------------|---------------------|-------|-------------| -| 3.x | EOL | `guzzle/guzzle` | `Guzzle` | [v3][guzzle-3-repo] | [v3][guzzle-3-docs] | No | >= 5.3.3 | -| 4.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v4][guzzle-4-repo] | N/A | No | >= 5.4 | -| 5.x | EOL | `guzzlehttp/guzzle` | `GuzzleHttp` | [v5][guzzle-5-repo] | [v5][guzzle-5-docs] | No | >= 5.4 | -| 6.x | Latest | `guzzlehttp/guzzle` | `GuzzleHttp` | [v6][guzzle-6-repo] | [v6][guzzle-6-docs] | Yes | >= 5.5 | - -[guzzle-3-repo]: https://github.com/guzzle/guzzle3 -[guzzle-4-repo]: https://github.com/guzzle/guzzle/tree/4.x -[guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3 -[guzzle-6-repo]: https://github.com/guzzle/guzzle -[guzzle-3-docs]: http://guzzle3.readthedocs.org -[guzzle-5-docs]: http://guzzle.readthedocs.org/en/5.3/ -[guzzle-6-docs]: http://guzzle.readthedocs.org/en/latest/ diff --git a/vendor/guzzlehttp/guzzle/UPGRADING.md b/vendor/guzzlehttp/guzzle/UPGRADING.md deleted file mode 100644 index 91d1dcc..0000000 --- a/vendor/guzzlehttp/guzzle/UPGRADING.md +++ /dev/null @@ -1,1203 +0,0 @@ -Guzzle Upgrade Guide -==================== - -5.0 to 6.0 ----------- - -Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages. -Due to the fact that these messages are immutable, this prompted a refactoring -of Guzzle to use a middleware based system rather than an event system. Any -HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be -updated to work with the new immutable PSR-7 request and response objects. Any -event listeners or subscribers need to be updated to become middleware -functions that wrap handlers (or are injected into a -`GuzzleHttp\HandlerStack`). - -- Removed `GuzzleHttp\BatchResults` -- Removed `GuzzleHttp\Collection` -- Removed `GuzzleHttp\HasDataTrait` -- Removed `GuzzleHttp\ToArrayInterface` -- The `guzzlehttp/streams` dependency has been removed. Stream functionality - is now present in the `GuzzleHttp\Psr7` namespace provided by the - `guzzlehttp/psr7` package. -- Guzzle no longer uses ReactPHP promises and now uses the - `guzzlehttp/promises` library. We use a custom promise library for three - significant reasons: - 1. React promises (at the time of writing this) are recursive. Promise - chaining and promise resolution will eventually blow the stack. Guzzle - promises are not recursive as they use a sort of trampolining technique. - Note: there has been movement in the React project to modify promises to - no longer utilize recursion. - 2. Guzzle needs to have the ability to synchronously block on a promise to - wait for a result. Guzzle promises allows this functionality (and does - not require the use of recursion). - 3. Because we need to be able to wait on a result, doing so using React - promises requires wrapping react promises with RingPHP futures. This - overhead is no longer needed, reducing stack sizes, reducing complexity, - and improving performance. -- `GuzzleHttp\Mimetypes` has been moved to a function in - `GuzzleHttp\Psr7\mimetype_from_extension` and - `GuzzleHttp\Psr7\mimetype_from_filename`. -- `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query - strings must now be passed into request objects as strings, or provided to - the `query` request option when creating requests with clients. The `query` - option uses PHP's `http_build_query` to convert an array to a string. If you - need a different serialization technique, you will need to pass the query - string in as a string. There are a couple helper functions that will make - working with query strings easier: `GuzzleHttp\Psr7\parse_query` and - `GuzzleHttp\Psr7\build_query`. -- Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware - system based on PSR-7, using RingPHP and it's middleware system as well adds - more complexity than the benefits it provides. All HTTP handlers that were - present in RingPHP have been modified to work directly with PSR-7 messages - and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces - complexity in Guzzle, removes a dependency, and improves performance. RingPHP - will be maintained for Guzzle 5 support, but will no longer be a part of - Guzzle 6. -- As Guzzle now uses a middleware based systems the event system and RingPHP - integration has been removed. Note: while the event system has been removed, - it is possible to add your own type of event system that is powered by the - middleware system. - - Removed the `Event` namespace. - - Removed the `Subscriber` namespace. - - Removed `Transaction` class - - Removed `RequestFsm` - - Removed `RingBridge` - - `GuzzleHttp\Subscriber\Cookie` is now provided by - `GuzzleHttp\Middleware::cookies` - - `GuzzleHttp\Subscriber\HttpError` is now provided by - `GuzzleHttp\Middleware::httpError` - - `GuzzleHttp\Subscriber\History` is now provided by - `GuzzleHttp\Middleware::history` - - `GuzzleHttp\Subscriber\Mock` is now provided by - `GuzzleHttp\Handler\MockHandler` - - `GuzzleHttp\Subscriber\Prepare` is now provided by - `GuzzleHttp\PrepareBodyMiddleware` - - `GuzzleHttp\Subscriber\Redirect` is now provided by - `GuzzleHttp\RedirectMiddleware` -- Guzzle now uses `Psr\Http\Message\UriInterface` (implements in - `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone. -- Static functions in `GuzzleHttp\Utils` have been moved to namespaced - functions under the `GuzzleHttp` namespace. This requires either a Composer - based autoloader or you to include functions.php. -- `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to - `GuzzleHttp\ClientInterface::getConfig`. -- `GuzzleHttp\ClientInterface::setDefaultOption` has been removed. -- The `json` and `xml` methods of response objects has been removed. With the - migration to strictly adhering to PSR-7 as the interface for Guzzle messages, - adding methods to message interfaces would actually require Guzzle messages - to extend from PSR-7 messages rather then work with them directly. - -## Migrating to middleware - -The change to PSR-7 unfortunately required significant refactoring to Guzzle -due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event -system from plugins. The event system relied on mutability of HTTP messages and -side effects in order to work. With immutable messages, you have to change your -workflow to become more about either returning a value (e.g., functional -middlewares) or setting a value on an object. Guzzle v6 has chosen the -functional middleware approach. - -Instead of using the event system to listen for things like the `before` event, -you now create a stack based middleware function that intercepts a request on -the way in and the promise of the response on the way out. This is a much -simpler and more predictable approach than the event system and works nicely -with PSR-7 middleware. Due to the use of promises, the middleware system is -also asynchronous. - -v5: - -```php -use GuzzleHttp\Event\BeforeEvent; -$client = new GuzzleHttp\Client(); -// Get the emitter and listen to the before event. -$client->getEmitter()->on('before', function (BeforeEvent $e) { - // Guzzle v5 events relied on mutation - $e->getRequest()->setHeader('X-Foo', 'Bar'); -}); -``` - -v6: - -In v6, you can modify the request before it is sent using the `mapRequest` -middleware. The idiomatic way in v6 to modify the request/response lifecycle is -to setup a handler middleware stack up front and inject the handler into a -client. - -```php -use GuzzleHttp\Middleware; -// Create a handler stack that has all of the default middlewares attached -$handler = GuzzleHttp\HandlerStack::create(); -// Push the handler onto the handler stack -$handler->push(Middleware::mapRequest(function (RequestInterface $request) { - // Notice that we have to return a request object - return $request->withHeader('X-Foo', 'Bar'); -})); -// Inject the handler into the client -$client = new GuzzleHttp\Client(['handler' => $handler]); -``` - -## POST Requests - -This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params) -and `multipart` request options. `form_params` is an associative array of -strings or array of strings and is used to serialize an -`application/x-www-form-urlencoded` POST request. The -[`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart) -option is now used to send a multipart/form-data POST request. - -`GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add -POST files to a multipart/form-data request. - -The `body` option no longer accepts an array to send POST requests. Please use -`multipart` or `form_params` instead. - -The `base_url` option has been renamed to `base_uri`. - -4.x to 5.0 ----------- - -## Rewritten Adapter Layer - -Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send -HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor -is still supported, but it has now been renamed to `handler`. Instead of -passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP -`callable` that follows the RingPHP specification. - -## Removed Fluent Interfaces - -[Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil) -from the following classes: - -- `GuzzleHttp\Collection` -- `GuzzleHttp\Url` -- `GuzzleHttp\Query` -- `GuzzleHttp\Post\PostBody` -- `GuzzleHttp\Cookie\SetCookie` - -## Removed functions.php - -Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following -functions can be used as replacements. - -- `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode` -- `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath` -- `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path` -- `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however, - deprecated in favor of using `GuzzleHttp\Pool::batch()`. - -The "procedural" global client has been removed with no replacement (e.g., -`GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client` -object as a replacement. - -## `throwImmediately` has been removed - -The concept of "throwImmediately" has been removed from exceptions and error -events. This control mechanism was used to stop a transfer of concurrent -requests from completing. This can now be handled by throwing the exception or -by cancelling a pool of requests or each outstanding future request -individually. - -## headers event has been removed - -Removed the "headers" event. This event was only useful for changing the -body a response once the headers of the response were known. You can implement -a similar behavior in a number of ways. One example might be to use a -FnStream that has access to the transaction being sent. For example, when the -first byte is written, you could check if the response headers match your -expectations, and if so, change the actual stream body that is being -written to. - -## Updates to HTTP Messages - -Removed the `asArray` parameter from -`GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header -value as an array, then use the newly added `getHeaderAsArray()` method of -`MessageInterface`. This change makes the Guzzle interfaces compatible with -the PSR-7 interfaces. - -3.x to 4.0 ----------- - -## Overarching changes: - -- Now requires PHP 5.4 or greater. -- No longer requires cURL to send requests. -- Guzzle no longer wraps every exception it throws. Only exceptions that are - recoverable are now wrapped by Guzzle. -- Various namespaces have been removed or renamed. -- No longer requiring the Symfony EventDispatcher. A custom event dispatcher - based on the Symfony EventDispatcher is - now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant - speed and functionality improvements). - -Changes per Guzzle 3.x namespace are described below. - -## Batch - -The `Guzzle\Batch` namespace has been removed. This is best left to -third-parties to implement on top of Guzzle's core HTTP library. - -## Cache - -The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement -has been implemented yet, but hoping to utilize a PSR cache interface). - -## Common - -- Removed all of the wrapped exceptions. It's better to use the standard PHP - library for unrecoverable exceptions. -- `FromConfigInterface` has been removed. -- `Guzzle\Common\Version` has been removed. The VERSION constant can be found - at `GuzzleHttp\ClientInterface::VERSION`. - -### Collection - -- `getAll` has been removed. Use `toArray` to convert a collection to an array. -- `inject` has been removed. -- `keySearch` has been removed. -- `getPath` no longer supports wildcard expressions. Use something better like - JMESPath for this. -- `setPath` now supports appending to an existing array via the `[]` notation. - -### Events - -Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses -`GuzzleHttp\Event\Emitter`. - -- `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by - `GuzzleHttp\Event\EmitterInterface`. -- `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by - `GuzzleHttp\Event\Emitter`. -- `Symfony\Component\EventDispatcher\Event` is replaced by - `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in - `GuzzleHttp\Event\EventInterface`. -- `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and - `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the - event emitter of a request, client, etc. now uses the `getEmitter` method - rather than the `getDispatcher` method. - -#### Emitter - -- Use the `once()` method to add a listener that automatically removes itself - the first time it is invoked. -- Use the `listeners()` method to retrieve a list of event listeners rather than - the `getListeners()` method. -- Use `emit()` instead of `dispatch()` to emit an event from an emitter. -- Use `attach()` instead of `addSubscriber()` and `detach()` instead of - `removeSubscriber()`. - -```php -$mock = new Mock(); -// 3.x -$request->getEventDispatcher()->addSubscriber($mock); -$request->getEventDispatcher()->removeSubscriber($mock); -// 4.x -$request->getEmitter()->attach($mock); -$request->getEmitter()->detach($mock); -``` - -Use the `on()` method to add a listener rather than the `addListener()` method. - -```php -// 3.x -$request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } ); -// 4.x -$request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } ); -``` - -## Http - -### General changes - -- The cacert.pem certificate has been moved to `src/cacert.pem`. -- Added the concept of adapters that are used to transfer requests over the - wire. -- Simplified the event system. -- Sending requests in parallel is still possible, but batching is no longer a - concept of the HTTP layer. Instead, you must use the `complete` and `error` - events to asynchronously manage parallel request transfers. -- `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`. -- `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`. -- QueryAggregators have been rewritten so that they are simply callable - functions. -- `GuzzleHttp\StaticClient` has been removed. Use the functions provided in - `functions.php` for an easy to use static client instance. -- Exceptions in `GuzzleHttp\Exception` have been updated to all extend from - `GuzzleHttp\Exception\TransferException`. - -### Client - -Calling methods like `get()`, `post()`, `head()`, etc. no longer create and -return a request, but rather creates a request, sends the request, and returns -the response. - -```php -// 3.0 -$request = $client->get('/'); -$response = $request->send(); - -// 4.0 -$response = $client->get('/'); - -// or, to mirror the previous behavior -$request = $client->createRequest('GET', '/'); -$response = $client->send($request); -``` - -`GuzzleHttp\ClientInterface` has changed. - -- The `send` method no longer accepts more than one request. Use `sendAll` to - send multiple requests in parallel. -- `setUserAgent()` has been removed. Use a default request option instead. You - could, for example, do something like: - `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`. -- `setSslVerification()` has been removed. Use default request options instead, - like `$client->setConfig('defaults/verify', true)`. - -`GuzzleHttp\Client` has changed. - -- The constructor now accepts only an associative array. You can include a - `base_url` string or array to use a URI template as the base URL of a client. - You can also specify a `defaults` key that is an associative array of default - request options. You can pass an `adapter` to use a custom adapter, - `batch_adapter` to use a custom adapter for sending requests in parallel, or - a `message_factory` to change the factory used to create HTTP requests and - responses. -- The client no longer emits a `client.create_request` event. -- Creating requests with a client no longer automatically utilize a URI - template. You must pass an array into a creational method (e.g., - `createRequest`, `get`, `put`, etc.) in order to expand a URI template. - -### Messages - -Messages no longer have references to their counterparts (i.e., a request no -longer has a reference to it's response, and a response no loger has a -reference to its request). This association is now managed through a -`GuzzleHttp\Adapter\TransactionInterface` object. You can get references to -these transaction objects using request events that are emitted over the -lifecycle of a request. - -#### Requests with a body - -- `GuzzleHttp\Message\EntityEnclosingRequest` and - `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The - separation between requests that contain a body and requests that do not - contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface` - handles both use cases. -- Any method that previously accepts a `GuzzleHttp\Response` object now accept a - `GuzzleHttp\Message\ResponseInterface`. -- `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to - `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create - both requests and responses and is implemented in - `GuzzleHttp\Message\MessageFactory`. -- POST field and file methods have been removed from the request object. You - must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface` - to control the format of a POST body. Requests that are created using a - standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use - a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if - the method is POST and no body is provided. - -```php -$request = $client->createRequest('POST', '/'); -$request->getBody()->setField('foo', 'bar'); -$request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r'))); -``` - -#### Headers - -- `GuzzleHttp\Message\Header` has been removed. Header values are now simply - represented by an array of values or as a string. Header values are returned - as a string by default when retrieving a header value from a message. You can - pass an optional argument of `true` to retrieve a header value as an array - of strings instead of a single concatenated string. -- `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to - `GuzzleHttp\Post`. This interface has been simplified and now allows the - addition of arbitrary headers. -- Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most - of the custom headers are now handled separately in specific - subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has - been updated to properly handle headers that contain parameters (like the - `Link` header). - -#### Responses - -- `GuzzleHttp\Message\Response::getInfo()` and - `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event - system to retrieve this type of information. -- `GuzzleHttp\Message\Response::getRawHeaders()` has been removed. -- `GuzzleHttp\Message\Response::getMessage()` has been removed. -- `GuzzleHttp\Message\Response::calculateAge()` and other cache specific - methods have moved to the CacheSubscriber. -- Header specific helper functions like `getContentMd5()` have been removed. - Just use `getHeader('Content-MD5')` instead. -- `GuzzleHttp\Message\Response::setRequest()` and - `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event - system to work with request and response objects as a transaction. -- `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the - Redirect subscriber instead. -- `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have - been removed. Use `getStatusCode()` instead. - -#### Streaming responses - -Streaming requests can now be created by a client directly, returning a -`GuzzleHttp\Message\ResponseInterface` object that contains a body stream -referencing an open PHP HTTP stream. - -```php -// 3.0 -use Guzzle\Stream\PhpStreamRequestFactory; -$request = $client->get('/'); -$factory = new PhpStreamRequestFactory(); -$stream = $factory->fromRequest($request); -$data = $stream->read(1024); - -// 4.0 -$response = $client->get('/', ['stream' => true]); -// Read some data off of the stream in the response body -$data = $response->getBody()->read(1024); -``` - -#### Redirects - -The `configureRedirects()` method has been removed in favor of a -`allow_redirects` request option. - -```php -// Standard redirects with a default of a max of 5 redirects -$request = $client->createRequest('GET', '/', ['allow_redirects' => true]); - -// Strict redirects with a custom number of redirects -$request = $client->createRequest('GET', '/', [ - 'allow_redirects' => ['max' => 5, 'strict' => true] -]); -``` - -#### EntityBody - -EntityBody interfaces and classes have been removed or moved to -`GuzzleHttp\Stream`. All classes and interfaces that once required -`GuzzleHttp\EntityBodyInterface` now require -`GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no -longer uses `GuzzleHttp\EntityBody::factory` but now uses -`GuzzleHttp\Stream\Stream::factory` or even better: -`GuzzleHttp\Stream\create()`. - -- `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface` -- `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream` -- `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream` -- `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream` -- `Guzzle\Http\IoEmittyinEntityBody` has been removed. - -#### Request lifecycle events - -Requests previously submitted a large number of requests. The number of events -emitted over the lifecycle of a request has been significantly reduced to make -it easier to understand how to extend the behavior of a request. All events -emitted during the lifecycle of a request now emit a custom -`GuzzleHttp\Event\EventInterface` object that contains context providing -methods and a way in which to modify the transaction at that specific point in -time (e.g., intercept the request and set a response on the transaction). - -- `request.before_send` has been renamed to `before` and now emits a - `GuzzleHttp\Event\BeforeEvent` -- `request.complete` has been renamed to `complete` and now emits a - `GuzzleHttp\Event\CompleteEvent`. -- `request.sent` has been removed. Use `complete`. -- `request.success` has been removed. Use `complete`. -- `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`. -- `request.exception` has been removed. Use `error`. -- `request.receive.status_line` has been removed. -- `curl.callback.progress` has been removed. Use a custom `StreamInterface` to - maintain a status update. -- `curl.callback.write` has been removed. Use a custom `StreamInterface` to - intercept writes. -- `curl.callback.read` has been removed. Use a custom `StreamInterface` to - intercept reads. - -`headers` is a new event that is emitted after the response headers of a -request have been received before the body of the response is downloaded. This -event emits a `GuzzleHttp\Event\HeadersEvent`. - -You can intercept a request and inject a response using the `intercept()` event -of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and -`GuzzleHttp\Event\ErrorEvent` event. - -See: http://docs.guzzlephp.org/en/latest/events.html - -## Inflection - -The `Guzzle\Inflection` namespace has been removed. This is not a core concern -of Guzzle. - -## Iterator - -The `Guzzle\Iterator` namespace has been removed. - -- `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and - `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of - Guzzle itself. -- `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent - class is shipped with PHP 5.4. -- `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because - it's easier to just wrap an iterator in a generator that maps values. - -For a replacement of these iterators, see https://github.com/nikic/iter - -## Log - -The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The -`Guzzle\Log` namespace has been removed. Guzzle now relies on -`Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been -moved to `GuzzleHttp\Subscriber\Log\Formatter`. - -## Parser - -The `Guzzle\Parser` namespace has been removed. This was previously used to -make it possible to plug in custom parsers for cookies, messages, URI -templates, and URLs; however, this level of complexity is not needed in Guzzle -so it has been removed. - -- Cookie: Cookie parsing logic has been moved to - `GuzzleHttp\Cookie\SetCookie::fromString`. -- Message: Message parsing logic for both requests and responses has been moved - to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only - used in debugging or deserializing messages, so it doesn't make sense for - Guzzle as a library to add this level of complexity to parsing messages. -- UriTemplate: URI template parsing has been moved to - `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL - URI template library if it is installed. -- Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously - it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary, - then developers are free to subclass `GuzzleHttp\Url`. - -## Plugin - -The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`. -Several plugins are shipping with the core Guzzle library under this namespace. - -- `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar - code has moved to `GuzzleHttp\Cookie`. -- `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin. -- `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is - received. -- `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin. -- `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before - sending. This subscriber is attached to all requests by default. -- `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin. - -The following plugins have been removed (third-parties are free to re-implement -these if needed): - -- `GuzzleHttp\Plugin\Async` has been removed. -- `GuzzleHttp\Plugin\CurlAuth` has been removed. -- `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This - functionality should instead be implemented with event listeners that occur - after normal response parsing occurs in the guzzle/command package. - -The following plugins are not part of the core Guzzle package, but are provided -in separate repositories: - -- `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler - to build custom retry policies using simple functions rather than various - chained classes. See: https://github.com/guzzle/retry-subscriber -- `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to - https://github.com/guzzle/cache-subscriber -- `Guzzle\Http\Plugin\Log\LogPlugin` has moved to - https://github.com/guzzle/log-subscriber -- `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to - https://github.com/guzzle/message-integrity-subscriber -- `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to - `GuzzleHttp\Subscriber\MockSubscriber`. -- `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to - https://github.com/guzzle/oauth-subscriber - -## Service - -The service description layer of Guzzle has moved into two separate packages: - -- http://github.com/guzzle/command Provides a high level abstraction over web - services by representing web service operations using commands. -- http://github.com/guzzle/guzzle-services Provides an implementation of - guzzle/command that provides request serialization and response parsing using - Guzzle service descriptions. - -## Stream - -Stream have moved to a separate package available at -https://github.com/guzzle/streams. - -`Guzzle\Stream\StreamInterface` has been given a large update to cleanly take -on the responsibilities of `Guzzle\Http\EntityBody` and -`Guzzle\Http\EntityBodyInterface` now that they have been removed. The number -of methods implemented by the `StreamInterface` has been drastically reduced to -allow developers to more easily extend and decorate stream behavior. - -## Removed methods from StreamInterface - -- `getStream` and `setStream` have been removed to better encapsulate streams. -- `getMetadata` and `setMetadata` have been removed in favor of - `GuzzleHttp\Stream\MetadataStreamInterface`. -- `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been - removed. This data is accessible when - using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`. -- `rewind` has been removed. Use `seek(0)` for a similar behavior. - -## Renamed methods - -- `detachStream` has been renamed to `detach`. -- `feof` has been renamed to `eof`. -- `ftell` has been renamed to `tell`. -- `readLine` has moved from an instance method to a static class method of - `GuzzleHttp\Stream\Stream`. - -## Metadata streams - -`GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams -that contain additional metadata accessible via `getMetadata()`. -`GuzzleHttp\Stream\StreamInterface::getMetadata` and -`GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed. - -## StreamRequestFactory - -The entire concept of the StreamRequestFactory has been removed. The way this -was used in Guzzle 3 broke the actual interface of sending streaming requests -(instead of getting back a Response, you got a StreamInterface). Streaming -PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`. - -3.6 to 3.7 ----------- - -### Deprecations - -- You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.: - -```php -\Guzzle\Common\Version::$emitWarnings = true; -``` - -The following APIs and options have been marked as deprecated: - -- Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead. -- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -- Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead. -- Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead. -- Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead. -- Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated -- Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client. -- Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8. -- Marked `Guzzle\Common\Collection::inject()` as deprecated. -- Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use - `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or - `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` - -3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational -request methods. When paired with a client's configuration settings, these options allow you to specify default settings -for various aspects of a request. Because these options make other previous configuration options redundant, several -configuration options and methods of a client and AbstractCommand have been deprecated. - -- Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`. -- Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`. -- Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')` -- Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0 - - $command = $client->getCommand('foo', array( - 'command.headers' => array('Test' => '123'), - 'command.response_body' => '/path/to/file' - )); - - // Should be changed to: - - $command = $client->getCommand('foo', array( - 'command.request_options' => array( - 'headers' => array('Test' => '123'), - 'save_as' => '/path/to/file' - ) - )); - -### Interface changes - -Additions and changes (you will need to update any implementations or subclasses you may have created): - -- Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`: - createRequest, head, delete, put, patch, post, options, prepareRequest -- Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()` -- Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface` -- Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to - `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a - resource, string, or EntityBody into the $options parameter to specify the download location of the response. -- Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a - default `array()` -- Added `Guzzle\Stream\StreamInterface::isRepeatable` -- Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods. - -The following methods were removed from interfaces. All of these methods are still available in the concrete classes -that implement them, but you should update your code to use alternative methods: - -- Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use - `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or - `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or - `$client->setDefaultOption('headers/{header_name}', 'value')`. or - `$client->setDefaultOption('headers', array('header_name' => 'value'))`. -- Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`. -- Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail. -- Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail. -- Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail. -- Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin. -- Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin. -- Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin. - -### Cache plugin breaking changes - -- CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a - CacheStorageInterface. These two objects and interface will be removed in a future version. -- Always setting X-cache headers on cached responses -- Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin -- `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface - $request, Response $response);` -- `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);` -- `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);` -- Added `CacheStorageInterface::purge($url)` -- `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin - $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache, - CanCacheStrategyInterface $canCache = null)` -- Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)` - -3.5 to 3.6 ----------- - -* Mixed casing of headers are now forced to be a single consistent casing across all values for that header. -* Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution -* Removed the whole changedHeader() function system of messages because all header changes now go through addHeader(). - For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader(). - Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request. -* Specific header implementations can be created for complex headers. When a message creates a header, it uses a - HeaderFactory which can map specific headers to specific header classes. There is now a Link header and - CacheControl header implementation. -* Moved getLinks() from Response to just be used on a Link header object. - -If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the -HeaderInterface (e.g. toArray(), getAll(), etc.). - -### Interface changes - -* Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate -* Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti() -* Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in - Guzzle\Http\Curl\RequestMediator -* Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string. -* Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface -* Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders() - -### Removed deprecated functions - -* Removed Guzzle\Parser\ParserRegister::get(). Use getParser() -* Removed Guzzle\Parser\ParserRegister::set(). Use registerParser(). - -### Deprecations - -* The ability to case-insensitively search for header values -* Guzzle\Http\Message\Header::hasExactHeader -* Guzzle\Http\Message\Header::raw. Use getAll() -* Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object - instead. - -### Other changes - -* All response header helper functions return a string rather than mixing Header objects and strings inconsistently -* Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle - directly via interfaces -* Removed the injecting of a request object onto a response object. The methods to get and set a request still exist - but are a no-op until removed. -* Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a - `Guzzle\Service\Command\ArrayCommandInterface`. -* Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response - on a request while the request is still being transferred -* `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess - -3.3 to 3.4 ----------- - -Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs. - -3.2 to 3.3 ----------- - -### Response::getEtag() quote stripping removed - -`Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header - -### Removed `Guzzle\Http\Utils` - -The `Guzzle\Http\Utils` class was removed. This class was only used for testing. - -### Stream wrapper and type - -`Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase. - -### curl.emit_io became emit_io - -Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the -'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io' - -3.1 to 3.2 ----------- - -### CurlMulti is no longer reused globally - -Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added -to a single client can pollute requests dispatched from other clients. - -If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the -ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is -created. - -```php -$multi = new Guzzle\Http\Curl\CurlMulti(); -$builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json'); -$builder->addListener('service_builder.create_client', function ($event) use ($multi) { - $event['client']->setCurlMulti($multi); -} -}); -``` - -### No default path - -URLs no longer have a default path value of '/' if no path was specified. - -Before: - -```php -$request = $client->get('http://www.foo.com'); -echo $request->getUrl(); -// >> http://www.foo.com/ -``` - -After: - -```php -$request = $client->get('http://www.foo.com'); -echo $request->getUrl(); -// >> http://www.foo.com -``` - -### Less verbose BadResponseException - -The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and -response information. You can, however, get access to the request and response object by calling `getRequest()` or -`getResponse()` on the exception object. - -### Query parameter aggregation - -Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a -setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is -responsible for handling the aggregation of multi-valued query string variables into a flattened hash. - -2.8 to 3.x ----------- - -### Guzzle\Service\Inspector - -Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig` - -**Before** - -```php -use Guzzle\Service\Inspector; - -class YourClient extends \Guzzle\Service\Client -{ - public static function factory($config = array()) - { - $default = array(); - $required = array('base_url', 'username', 'api_key'); - $config = Inspector::fromConfig($config, $default, $required); - - $client = new self( - $config->get('base_url'), - $config->get('username'), - $config->get('api_key') - ); - $client->setConfig($config); - - $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); - - return $client; - } -``` - -**After** - -```php -use Guzzle\Common\Collection; - -class YourClient extends \Guzzle\Service\Client -{ - public static function factory($config = array()) - { - $default = array(); - $required = array('base_url', 'username', 'api_key'); - $config = Collection::fromConfig($config, $default, $required); - - $client = new self( - $config->get('base_url'), - $config->get('username'), - $config->get('api_key') - ); - $client->setConfig($config); - - $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json')); - - return $client; - } -``` - -### Convert XML Service Descriptions to JSON - -**Before** - -```xml - - - - - - Get a list of groups - - - Uses a search query to get a list of groups - - - - Create a group - - - - - Delete a group by ID - - - - - - - Update a group - - - - - - -``` - -**After** - -```json -{ - "name": "Zendesk REST API v2", - "apiVersion": "2012-12-31", - "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users", - "operations": { - "list_groups": { - "httpMethod":"GET", - "uri": "groups.json", - "summary": "Get a list of groups" - }, - "search_groups":{ - "httpMethod":"GET", - "uri": "search.json?query=\"{query} type:group\"", - "summary": "Uses a search query to get a list of groups", - "parameters":{ - "query":{ - "location": "uri", - "description":"Zendesk Search Query", - "type": "string", - "required": true - } - } - }, - "create_group": { - "httpMethod":"POST", - "uri": "groups.json", - "summary": "Create a group", - "parameters":{ - "data": { - "type": "array", - "location": "body", - "description":"Group JSON", - "filters": "json_encode", - "required": true - }, - "Content-Type":{ - "type": "string", - "location":"header", - "static": "application/json" - } - } - }, - "delete_group": { - "httpMethod":"DELETE", - "uri": "groups/{id}.json", - "summary": "Delete a group", - "parameters":{ - "id":{ - "location": "uri", - "description":"Group to delete by ID", - "type": "integer", - "required": true - } - } - }, - "get_group": { - "httpMethod":"GET", - "uri": "groups/{id}.json", - "summary": "Get a ticket", - "parameters":{ - "id":{ - "location": "uri", - "description":"Group to get by ID", - "type": "integer", - "required": true - } - } - }, - "update_group": { - "httpMethod":"PUT", - "uri": "groups/{id}.json", - "summary": "Update a group", - "parameters":{ - "id": { - "location": "uri", - "description":"Group to update by ID", - "type": "integer", - "required": true - }, - "data": { - "type": "array", - "location": "body", - "description":"Group JSON", - "filters": "json_encode", - "required": true - }, - "Content-Type":{ - "type": "string", - "location":"header", - "static": "application/json" - } - } - } -} -``` - -### Guzzle\Service\Description\ServiceDescription - -Commands are now called Operations - -**Before** - -```php -use Guzzle\Service\Description\ServiceDescription; - -$sd = new ServiceDescription(); -$sd->getCommands(); // @returns ApiCommandInterface[] -$sd->hasCommand($name); -$sd->getCommand($name); // @returns ApiCommandInterface|null -$sd->addCommand($command); // @param ApiCommandInterface $command -``` - -**After** - -```php -use Guzzle\Service\Description\ServiceDescription; - -$sd = new ServiceDescription(); -$sd->getOperations(); // @returns OperationInterface[] -$sd->hasOperation($name); -$sd->getOperation($name); // @returns OperationInterface|null -$sd->addOperation($operation); // @param OperationInterface $operation -``` - -### Guzzle\Common\Inflection\Inflector - -Namespace is now `Guzzle\Inflection\Inflector` - -### Guzzle\Http\Plugin - -Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below. - -### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log - -Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively. - -**Before** - -```php -use Guzzle\Common\Log\ClosureLogAdapter; -use Guzzle\Http\Plugin\LogPlugin; - -/** @var \Guzzle\Http\Client */ -$client; - -// $verbosity is an integer indicating desired message verbosity level -$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE); -``` - -**After** - -```php -use Guzzle\Log\ClosureLogAdapter; -use Guzzle\Log\MessageFormatter; -use Guzzle\Plugin\Log\LogPlugin; - -/** @var \Guzzle\Http\Client */ -$client; - -// $format is a string indicating desired message format -- @see MessageFormatter -$client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT); -``` - -### Guzzle\Http\Plugin\CurlAuthPlugin - -Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`. - -### Guzzle\Http\Plugin\ExponentialBackoffPlugin - -Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes. - -**Before** - -```php -use Guzzle\Http\Plugin\ExponentialBackoffPlugin; - -$backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge( - ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429) - )); - -$client->addSubscriber($backoffPlugin); -``` - -**After** - -```php -use Guzzle\Plugin\Backoff\BackoffPlugin; -use Guzzle\Plugin\Backoff\HttpBackoffStrategy; - -// Use convenient factory method instead -- see implementation for ideas of what -// you can do with chaining backoff strategies -$backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge( - HttpBackoffStrategy::getDefaultFailureCodes(), array(429) - )); -$client->addSubscriber($backoffPlugin); -``` - -### Known Issues - -#### [BUG] Accept-Encoding header behavior changed unintentionally. - -(See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e) - -In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to -properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen. -See issue #217 for a workaround, or use a version containing the fix. diff --git a/vendor/guzzlehttp/guzzle/composer.json b/vendor/guzzlehttp/guzzle/composer.json deleted file mode 100644 index c01864f..0000000 --- a/vendor/guzzlehttp/guzzle/composer.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "guzzlehttp/guzzle", - "type": "library", - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "framework", - "http", - "rest", - "web service", - "curl", - "client", - "HTTP client" - ], - "homepage": "http://guzzlephp.org/", - "license": "MIT", - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "require": { - "php": ">=5.5", - "ext-json": "*", - "symfony/polyfill-intl-idn": "^1.17.0", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "config": { - "sort-packages": true - }, - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "autoload-dev": { - "psr-4": { - "GuzzleHttp\\Tests\\": "tests/" - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Client.php b/vendor/guzzlehttp/guzzle/src/Client.php deleted file mode 100644 index 315a022..0000000 --- a/vendor/guzzlehttp/guzzle/src/Client.php +++ /dev/null @@ -1,501 +0,0 @@ - 'http://www.foo.com/1.0/', - * 'timeout' => 0, - * 'allow_redirects' => false, - * 'proxy' => '192.168.16.1:10' - * ]); - * - * Client configuration settings include the following options: - * - * - handler: (callable) Function that transfers HTTP requests over the - * wire. The function is called with a Psr7\Http\Message\RequestInterface - * and array of transfer options, and must return a - * GuzzleHttp\Promise\PromiseInterface that is fulfilled with a - * Psr7\Http\Message\ResponseInterface on success. - * If no handler is provided, a default handler will be created - * that enables all of the request options below by attaching all of the - * default middleware to the handler. - * - base_uri: (string|UriInterface) Base URI of the client that is merged - * into relative URIs. Can be a string or instance of UriInterface. - * - **: any request option - * - * @param array $config Client configuration settings. - * - * @see \GuzzleHttp\RequestOptions for a list of available request options. - */ - public function __construct(array $config = []) - { - if (!isset($config['handler'])) { - $config['handler'] = HandlerStack::create(); - } elseif (!is_callable($config['handler'])) { - throw new \InvalidArgumentException('handler must be a callable'); - } - - // Convert the base_uri to a UriInterface - if (isset($config['base_uri'])) { - $config['base_uri'] = Psr7\uri_for($config['base_uri']); - } - - $this->configureDefaults($config); - } - - /** - * @param string $method - * @param array $args - * - * @return Promise\PromiseInterface - */ - public function __call($method, $args) - { - if (count($args) < 1) { - throw new \InvalidArgumentException('Magic request methods require a URI and optional options array'); - } - - $uri = $args[0]; - $opts = isset($args[1]) ? $args[1] : []; - - return substr($method, -5) === 'Async' - ? $this->requestAsync(substr($method, 0, -5), $uri, $opts) - : $this->request($method, $uri, $opts); - } - - /** - * Asynchronously send an HTTP request. - * - * @param array $options Request options to apply to the given - * request and to the transfer. See \GuzzleHttp\RequestOptions. - * - * @return Promise\PromiseInterface - */ - public function sendAsync(RequestInterface $request, array $options = []) - { - // Merge the base URI into the request URI if needed. - $options = $this->prepareDefaults($options); - - return $this->transfer( - $request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')), - $options - ); - } - - /** - * Send an HTTP request. - * - * @param array $options Request options to apply to the given - * request and to the transfer. See \GuzzleHttp\RequestOptions. - * - * @return ResponseInterface - * @throws GuzzleException - */ - public function send(RequestInterface $request, array $options = []) - { - $options[RequestOptions::SYNCHRONOUS] = true; - return $this->sendAsync($request, $options)->wait(); - } - - /** - * Create and send an asynchronous HTTP request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. Use an array to provide a URL - * template and additional variables to use in the URL template expansion. - * - * @param string $method HTTP method - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions. - * - * @return Promise\PromiseInterface - */ - public function requestAsync($method, $uri = '', array $options = []) - { - $options = $this->prepareDefaults($options); - // Remove request modifying parameter because it can be done up-front. - $headers = isset($options['headers']) ? $options['headers'] : []; - $body = isset($options['body']) ? $options['body'] : null; - $version = isset($options['version']) ? $options['version'] : '1.1'; - // Merge the URI into the base URI. - $uri = $this->buildUri($uri, $options); - if (is_array($body)) { - $this->invalidBody(); - } - $request = new Psr7\Request($method, $uri, $headers, $body, $version); - // Remove the option so that they are not doubly-applied. - unset($options['headers'], $options['body'], $options['version']); - - return $this->transfer($request, $options); - } - - /** - * Create and send an HTTP request. - * - * Use an absolute path to override the base path of the client, or a - * relative path to append to the base path of the client. The URL can - * contain the query string as well. - * - * @param string $method HTTP method. - * @param string|UriInterface $uri URI object or string. - * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions. - * - * @return ResponseInterface - * @throws GuzzleException - */ - public function request($method, $uri = '', array $options = []) - { - $options[RequestOptions::SYNCHRONOUS] = true; - return $this->requestAsync($method, $uri, $options)->wait(); - } - - /** - * Get a client configuration option. - * - * These options include default request options of the client, a "handler" - * (if utilized by the concrete client), and a "base_uri" if utilized by - * the concrete client. - * - * @param string|null $option The config option to retrieve. - * - * @return mixed - */ - public function getConfig($option = null) - { - return $option === null - ? $this->config - : (isset($this->config[$option]) ? $this->config[$option] : null); - } - - /** - * @param string|null $uri - * - * @return UriInterface - */ - private function buildUri($uri, array $config) - { - // for BC we accept null which would otherwise fail in uri_for - $uri = Psr7\uri_for($uri === null ? '' : $uri); - - if (isset($config['base_uri'])) { - $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri); - } - - if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) { - $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion']; - $uri = Utils::idnUriConvert($uri, $idnOptions); - } - - return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri; - } - - /** - * Configures the default options for a client. - * - * @param array $config - * @return void - */ - private function configureDefaults(array $config) - { - $defaults = [ - 'allow_redirects' => RedirectMiddleware::$defaultSettings, - 'http_errors' => true, - 'decode_content' => true, - 'verify' => true, - 'cookies' => false, - 'idn_conversion' => true, - ]; - - // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. - - // We can only trust the HTTP_PROXY environment variable in a CLI - // process due to the fact that PHP has no reliable mechanism to - // get environment variables that start with "HTTP_". - if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) { - $defaults['proxy']['http'] = getenv('HTTP_PROXY'); - } - - if ($proxy = getenv('HTTPS_PROXY')) { - $defaults['proxy']['https'] = $proxy; - } - - if ($noProxy = getenv('NO_PROXY')) { - $cleanedNoProxy = str_replace(' ', '', $noProxy); - $defaults['proxy']['no'] = explode(',', $cleanedNoProxy); - } - - $this->config = $config + $defaults; - - if (!empty($config['cookies']) && $config['cookies'] === true) { - $this->config['cookies'] = new CookieJar(); - } - - // Add the default user-agent header. - if (!isset($this->config['headers'])) { - $this->config['headers'] = ['User-Agent' => default_user_agent()]; - } else { - // Add the User-Agent header if one was not already set. - foreach (array_keys($this->config['headers']) as $name) { - if (strtolower($name) === 'user-agent') { - return; - } - } - $this->config['headers']['User-Agent'] = default_user_agent(); - } - } - - /** - * Merges default options into the array. - * - * @param array $options Options to modify by reference - * - * @return array - */ - private function prepareDefaults(array $options) - { - $defaults = $this->config; - - if (!empty($defaults['headers'])) { - // Default headers are only added if they are not present. - $defaults['_conditional'] = $defaults['headers']; - unset($defaults['headers']); - } - - // Special handling for headers is required as they are added as - // conditional headers and as headers passed to a request ctor. - if (array_key_exists('headers', $options)) { - // Allows default headers to be unset. - if ($options['headers'] === null) { - $defaults['_conditional'] = []; - unset($options['headers']); - } elseif (!is_array($options['headers'])) { - throw new \InvalidArgumentException('headers must be an array'); - } - } - - // Shallow merge defaults underneath options. - $result = $options + $defaults; - - // Remove null values. - foreach ($result as $k => $v) { - if ($v === null) { - unset($result[$k]); - } - } - - return $result; - } - - /** - * Transfers the given request and applies request options. - * - * The URI of the request is not modified and the request options are used - * as-is without merging in default options. - * - * @param array $options See \GuzzleHttp\RequestOptions. - * - * @return Promise\PromiseInterface - */ - private function transfer(RequestInterface $request, array $options) - { - // save_to -> sink - if (isset($options['save_to'])) { - $options['sink'] = $options['save_to']; - unset($options['save_to']); - } - - // exceptions -> http_errors - if (isset($options['exceptions'])) { - $options['http_errors'] = $options['exceptions']; - unset($options['exceptions']); - } - - $request = $this->applyOptions($request, $options); - /** @var HandlerStack $handler */ - $handler = $options['handler']; - - try { - return Promise\promise_for($handler($request, $options)); - } catch (\Exception $e) { - return Promise\rejection_for($e); - } - } - - /** - * Applies the array of request options to a request. - * - * @param RequestInterface $request - * @param array $options - * - * @return RequestInterface - */ - private function applyOptions(RequestInterface $request, array &$options) - { - $modify = [ - 'set_headers' => [], - ]; - - if (isset($options['headers'])) { - $modify['set_headers'] = $options['headers']; - unset($options['headers']); - } - - if (isset($options['form_params'])) { - if (isset($options['multipart'])) { - throw new \InvalidArgumentException('You cannot use ' - . 'form_params and multipart at the same time. Use the ' - . 'form_params option if you want to send application/' - . 'x-www-form-urlencoded requests, and the multipart ' - . 'option to send multipart/form-data requests.'); - } - $options['body'] = http_build_query($options['form_params'], '', '&'); - unset($options['form_params']); - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); - $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded'; - } - - if (isset($options['multipart'])) { - $options['body'] = new Psr7\MultipartStream($options['multipart']); - unset($options['multipart']); - } - - if (isset($options['json'])) { - $options['body'] = \GuzzleHttp\json_encode($options['json']); - unset($options['json']); - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); - $options['_conditional']['Content-Type'] = 'application/json'; - } - - if (!empty($options['decode_content']) - && $options['decode_content'] !== true - ) { - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']); - $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; - } - - if (isset($options['body'])) { - if (is_array($options['body'])) { - $this->invalidBody(); - } - $modify['body'] = Psr7\stream_for($options['body']); - unset($options['body']); - } - - if (!empty($options['auth']) && is_array($options['auth'])) { - $value = $options['auth']; - $type = isset($value[2]) ? strtolower($value[2]) : 'basic'; - switch ($type) { - case 'basic': - // Ensure that we don't have the header in different case and set the new value. - $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']); - $modify['set_headers']['Authorization'] = 'Basic ' - . base64_encode("$value[0]:$value[1]"); - break; - case 'digest': - // @todo: Do not rely on curl - $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST; - $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]"; - break; - case 'ntlm': - $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_NTLM; - $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]"; - break; - } - } - - if (isset($options['query'])) { - $value = $options['query']; - if (is_array($value)) { - $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986); - } - if (!is_string($value)) { - throw new \InvalidArgumentException('query must be a string or array'); - } - $modify['query'] = $value; - unset($options['query']); - } - - // Ensure that sink is not an invalid value. - if (isset($options['sink'])) { - // TODO: Add more sink validation? - if (is_bool($options['sink'])) { - throw new \InvalidArgumentException('sink must not be a boolean'); - } - } - - $request = Psr7\modify_request($request, $modify); - if ($request->getBody() instanceof Psr7\MultipartStream) { - // Use a multipart/form-data POST if a Content-Type is not set. - // Ensure that we don't have the header in different case and set the new value. - $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']); - $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' - . $request->getBody()->getBoundary(); - } - - // Merge in conditional headers if they are not present. - if (isset($options['_conditional'])) { - // Build up the changes so it's in a single clone of the message. - $modify = []; - foreach ($options['_conditional'] as $k => $v) { - if (!$request->hasHeader($k)) { - $modify['set_headers'][$k] = $v; - } - } - $request = Psr7\modify_request($request, $modify); - // Don't pass this internal value along to middleware/handlers. - unset($options['_conditional']); - } - - return $request; - } - - /** - * Throw Exception with pre-set message. - * @return void - * @throws \InvalidArgumentException Invalid body. - */ - private function invalidBody() - { - throw new \InvalidArgumentException('Passing in the "body" request ' - . 'option as an array to send a POST request has been deprecated. ' - . 'Please use the "form_params" request option to send a ' - . 'application/x-www-form-urlencoded request, or the "multipart" ' - . 'request option to send a multipart/form-data request.'); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/ClientInterface.php b/vendor/guzzlehttp/guzzle/src/ClientInterface.php deleted file mode 100644 index 638b75d..0000000 --- a/vendor/guzzlehttp/guzzle/src/ClientInterface.php +++ /dev/null @@ -1,87 +0,0 @@ -strictMode = $strictMode; - - foreach ($cookieArray as $cookie) { - if (!($cookie instanceof SetCookie)) { - $cookie = new SetCookie($cookie); - } - $this->setCookie($cookie); - } - } - - /** - * Create a new Cookie jar from an associative array and domain. - * - * @param array $cookies Cookies to create the jar from - * @param string $domain Domain to set the cookies to - * - * @return self - */ - public static function fromArray(array $cookies, $domain) - { - $cookieJar = new self(); - foreach ($cookies as $name => $value) { - $cookieJar->setCookie(new SetCookie([ - 'Domain' => $domain, - 'Name' => $name, - 'Value' => $value, - 'Discard' => true - ])); - } - - return $cookieJar; - } - - /** - * @deprecated - */ - public static function getCookieValue($value) - { - return $value; - } - - /** - * Evaluate if this cookie should be persisted to storage - * that survives between requests. - * - * @param SetCookie $cookie Being evaluated. - * @param bool $allowSessionCookies If we should persist session cookies - * @return bool - */ - public static function shouldPersist( - SetCookie $cookie, - $allowSessionCookies = false - ) { - if ($cookie->getExpires() || $allowSessionCookies) { - if (!$cookie->getDiscard()) { - return true; - } - } - - return false; - } - - /** - * Finds and returns the cookie based on the name - * - * @param string $name cookie name to search for - * @return SetCookie|null cookie that was found or null if not found - */ - public function getCookieByName($name) - { - // don't allow a non string name - if ($name === null || !is_scalar($name)) { - return null; - } - foreach ($this->cookies as $cookie) { - if ($cookie->getName() !== null && strcasecmp($cookie->getName(), $name) === 0) { - return $cookie; - } - } - - return null; - } - - public function toArray() - { - return array_map(function (SetCookie $cookie) { - return $cookie->toArray(); - }, $this->getIterator()->getArrayCopy()); - } - - public function clear($domain = null, $path = null, $name = null) - { - if (!$domain) { - $this->cookies = []; - return; - } elseif (!$path) { - $this->cookies = array_filter( - $this->cookies, - function (SetCookie $cookie) use ($domain) { - return !$cookie->matchesDomain($domain); - } - ); - } elseif (!$name) { - $this->cookies = array_filter( - $this->cookies, - function (SetCookie $cookie) use ($path, $domain) { - return !($cookie->matchesPath($path) && - $cookie->matchesDomain($domain)); - } - ); - } else { - $this->cookies = array_filter( - $this->cookies, - function (SetCookie $cookie) use ($path, $domain, $name) { - return !($cookie->getName() == $name && - $cookie->matchesPath($path) && - $cookie->matchesDomain($domain)); - } - ); - } - } - - public function clearSessionCookies() - { - $this->cookies = array_filter( - $this->cookies, - function (SetCookie $cookie) { - return !$cookie->getDiscard() && $cookie->getExpires(); - } - ); - } - - public function setCookie(SetCookie $cookie) - { - // If the name string is empty (but not 0), ignore the set-cookie - // string entirely. - $name = $cookie->getName(); - if (!$name && $name !== '0') { - return false; - } - - // Only allow cookies with set and valid domain, name, value - $result = $cookie->validate(); - if ($result !== true) { - if ($this->strictMode) { - throw new \RuntimeException('Invalid cookie: ' . $result); - } else { - $this->removeCookieIfEmpty($cookie); - return false; - } - } - - // Resolve conflicts with previously set cookies - foreach ($this->cookies as $i => $c) { - - // Two cookies are identical, when their path, and domain are - // identical. - if ($c->getPath() != $cookie->getPath() || - $c->getDomain() != $cookie->getDomain() || - $c->getName() != $cookie->getName() - ) { - continue; - } - - // The previously set cookie is a discard cookie and this one is - // not so allow the new cookie to be set - if (!$cookie->getDiscard() && $c->getDiscard()) { - unset($this->cookies[$i]); - continue; - } - - // If the new cookie's expiration is further into the future, then - // replace the old cookie - if ($cookie->getExpires() > $c->getExpires()) { - unset($this->cookies[$i]); - continue; - } - - // If the value has changed, we better change it - if ($cookie->getValue() !== $c->getValue()) { - unset($this->cookies[$i]); - continue; - } - - // The cookie exists, so no need to continue - return false; - } - - $this->cookies[] = $cookie; - - return true; - } - - public function count() - { - return count($this->cookies); - } - - public function getIterator() - { - return new \ArrayIterator(array_values($this->cookies)); - } - - public function extractCookies( - RequestInterface $request, - ResponseInterface $response - ) { - if ($cookieHeader = $response->getHeader('Set-Cookie')) { - foreach ($cookieHeader as $cookie) { - $sc = SetCookie::fromString($cookie); - if (!$sc->getDomain()) { - $sc->setDomain($request->getUri()->getHost()); - } - if (0 !== strpos($sc->getPath(), '/')) { - $sc->setPath($this->getCookiePathFromRequest($request)); - } - $this->setCookie($sc); - } - } - } - - /** - * Computes cookie path following RFC 6265 section 5.1.4 - * - * @link https://tools.ietf.org/html/rfc6265#section-5.1.4 - * - * @param RequestInterface $request - * @return string - */ - private function getCookiePathFromRequest(RequestInterface $request) - { - $uriPath = $request->getUri()->getPath(); - if ('' === $uriPath) { - return '/'; - } - if (0 !== strpos($uriPath, '/')) { - return '/'; - } - if ('/' === $uriPath) { - return '/'; - } - if (0 === $lastSlashPos = strrpos($uriPath, '/')) { - return '/'; - } - - return substr($uriPath, 0, $lastSlashPos); - } - - public function withCookieHeader(RequestInterface $request) - { - $values = []; - $uri = $request->getUri(); - $scheme = $uri->getScheme(); - $host = $uri->getHost(); - $path = $uri->getPath() ?: '/'; - - foreach ($this->cookies as $cookie) { - if ($cookie->matchesPath($path) && - $cookie->matchesDomain($host) && - !$cookie->isExpired() && - (!$cookie->getSecure() || $scheme === 'https') - ) { - $values[] = $cookie->getName() . '=' - . $cookie->getValue(); - } - } - - return $values - ? $request->withHeader('Cookie', implode('; ', $values)) - : $request; - } - - /** - * If a cookie already exists and the server asks to set it again with a - * null value, the cookie must be deleted. - * - * @param SetCookie $cookie - */ - private function removeCookieIfEmpty(SetCookie $cookie) - { - $cookieValue = $cookie->getValue(); - if ($cookieValue === null || $cookieValue === '') { - $this->clear( - $cookie->getDomain(), - $cookie->getPath(), - $cookie->getName() - ); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php b/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php deleted file mode 100644 index 6ee1188..0000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +++ /dev/null @@ -1,84 +0,0 @@ -filename = $cookieFile; - $this->storeSessionCookies = $storeSessionCookies; - - if (file_exists($cookieFile)) { - $this->load($cookieFile); - } - } - - /** - * Saves the file when shutting down - */ - public function __destruct() - { - $this->save($this->filename); - } - - /** - * Saves the cookies to a file. - * - * @param string $filename File to save - * @throws \RuntimeException if the file cannot be found or created - */ - public function save($filename) - { - $json = []; - foreach ($this as $cookie) { - /** @var SetCookie $cookie */ - if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { - $json[] = $cookie->toArray(); - } - } - - $jsonStr = \GuzzleHttp\json_encode($json); - if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) { - throw new \RuntimeException("Unable to save file {$filename}"); - } - } - - /** - * Load cookies from a JSON formatted file. - * - * Old cookies are kept unless overwritten by newly loaded ones. - * - * @param string $filename Cookie file to load. - * @throws \RuntimeException if the file cannot be loaded. - */ - public function load($filename) - { - $json = file_get_contents($filename); - if (false === $json) { - throw new \RuntimeException("Unable to load file {$filename}"); - } elseif ($json === '') { - return; - } - - $data = \GuzzleHttp\json_decode($json, true); - if (is_array($data)) { - foreach (json_decode($json, true) as $cookie) { - $this->setCookie(new SetCookie($cookie)); - } - } elseif (strlen($data)) { - throw new \RuntimeException("Invalid cookie file: {$filename}"); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php b/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php deleted file mode 100644 index 0224a24..0000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php +++ /dev/null @@ -1,72 +0,0 @@ -sessionKey = $sessionKey; - $this->storeSessionCookies = $storeSessionCookies; - $this->load(); - } - - /** - * Saves cookies to session when shutting down - */ - public function __destruct() - { - $this->save(); - } - - /** - * Save cookies to the client session - */ - public function save() - { - $json = []; - foreach ($this as $cookie) { - /** @var SetCookie $cookie */ - if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { - $json[] = $cookie->toArray(); - } - } - - $_SESSION[$this->sessionKey] = json_encode($json); - } - - /** - * Load the contents of the client session into the data array - */ - protected function load() - { - if (!isset($_SESSION[$this->sessionKey])) { - return; - } - $data = json_decode($_SESSION[$this->sessionKey], true); - if (is_array($data)) { - foreach ($data as $cookie) { - $this->setCookie(new SetCookie($cookie)); - } - } elseif (strlen($data)) { - throw new \RuntimeException("Invalid cookie data"); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php b/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php deleted file mode 100644 index 3d776a7..0000000 --- a/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php +++ /dev/null @@ -1,403 +0,0 @@ - null, - 'Value' => null, - 'Domain' => null, - 'Path' => '/', - 'Max-Age' => null, - 'Expires' => null, - 'Secure' => false, - 'Discard' => false, - 'HttpOnly' => false - ]; - - /** @var array Cookie data */ - private $data; - - /** - * Create a new SetCookie object from a string - * - * @param string $cookie Set-Cookie header string - * - * @return self - */ - public static function fromString($cookie) - { - // Create the default return array - $data = self::$defaults; - // Explode the cookie string using a series of semicolons - $pieces = array_filter(array_map('trim', explode(';', $cookie))); - // The name of the cookie (first kvp) must exist and include an equal sign. - if (empty($pieces[0]) || !strpos($pieces[0], '=')) { - return new self($data); - } - - // Add the cookie pieces into the parsed data array - foreach ($pieces as $part) { - $cookieParts = explode('=', $part, 2); - $key = trim($cookieParts[0]); - $value = isset($cookieParts[1]) - ? trim($cookieParts[1], " \n\r\t\0\x0B") - : true; - - // Only check for non-cookies when cookies have been found - if (empty($data['Name'])) { - $data['Name'] = $key; - $data['Value'] = $value; - } else { - foreach (array_keys(self::$defaults) as $search) { - if (!strcasecmp($search, $key)) { - $data[$search] = $value; - continue 2; - } - } - $data[$key] = $value; - } - } - - return new self($data); - } - - /** - * @param array $data Array of cookie data provided by a Cookie parser - */ - public function __construct(array $data = []) - { - $this->data = array_replace(self::$defaults, $data); - // Extract the Expires value and turn it into a UNIX timestamp if needed - if (!$this->getExpires() && $this->getMaxAge()) { - // Calculate the Expires date - $this->setExpires(time() + $this->getMaxAge()); - } elseif ($this->getExpires() && !is_numeric($this->getExpires())) { - $this->setExpires($this->getExpires()); - } - } - - public function __toString() - { - $str = $this->data['Name'] . '=' . $this->data['Value'] . '; '; - foreach ($this->data as $k => $v) { - if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) { - if ($k === 'Expires') { - $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; '; - } else { - $str .= ($v === true ? $k : "{$k}={$v}") . '; '; - } - } - } - - return rtrim($str, '; '); - } - - public function toArray() - { - return $this->data; - } - - /** - * Get the cookie name - * - * @return string - */ - public function getName() - { - return $this->data['Name']; - } - - /** - * Set the cookie name - * - * @param string $name Cookie name - */ - public function setName($name) - { - $this->data['Name'] = $name; - } - - /** - * Get the cookie value - * - * @return string - */ - public function getValue() - { - return $this->data['Value']; - } - - /** - * Set the cookie value - * - * @param string $value Cookie value - */ - public function setValue($value) - { - $this->data['Value'] = $value; - } - - /** - * Get the domain - * - * @return string|null - */ - public function getDomain() - { - return $this->data['Domain']; - } - - /** - * Set the domain of the cookie - * - * @param string $domain - */ - public function setDomain($domain) - { - $this->data['Domain'] = $domain; - } - - /** - * Get the path - * - * @return string - */ - public function getPath() - { - return $this->data['Path']; - } - - /** - * Set the path of the cookie - * - * @param string $path Path of the cookie - */ - public function setPath($path) - { - $this->data['Path'] = $path; - } - - /** - * Maximum lifetime of the cookie in seconds - * - * @return int|null - */ - public function getMaxAge() - { - return $this->data['Max-Age']; - } - - /** - * Set the max-age of the cookie - * - * @param int $maxAge Max age of the cookie in seconds - */ - public function setMaxAge($maxAge) - { - $this->data['Max-Age'] = $maxAge; - } - - /** - * The UNIX timestamp when the cookie Expires - * - * @return mixed - */ - public function getExpires() - { - return $this->data['Expires']; - } - - /** - * Set the unix timestamp for which the cookie will expire - * - * @param int $timestamp Unix timestamp - */ - public function setExpires($timestamp) - { - $this->data['Expires'] = is_numeric($timestamp) - ? (int) $timestamp - : strtotime($timestamp); - } - - /** - * Get whether or not this is a secure cookie - * - * @return bool|null - */ - public function getSecure() - { - return $this->data['Secure']; - } - - /** - * Set whether or not the cookie is secure - * - * @param bool $secure Set to true or false if secure - */ - public function setSecure($secure) - { - $this->data['Secure'] = $secure; - } - - /** - * Get whether or not this is a session cookie - * - * @return bool|null - */ - public function getDiscard() - { - return $this->data['Discard']; - } - - /** - * Set whether or not this is a session cookie - * - * @param bool $discard Set to true or false if this is a session cookie - */ - public function setDiscard($discard) - { - $this->data['Discard'] = $discard; - } - - /** - * Get whether or not this is an HTTP only cookie - * - * @return bool - */ - public function getHttpOnly() - { - return $this->data['HttpOnly']; - } - - /** - * Set whether or not this is an HTTP only cookie - * - * @param bool $httpOnly Set to true or false if this is HTTP only - */ - public function setHttpOnly($httpOnly) - { - $this->data['HttpOnly'] = $httpOnly; - } - - /** - * Check if the cookie matches a path value. - * - * A request-path path-matches a given cookie-path if at least one of - * the following conditions holds: - * - * - The cookie-path and the request-path are identical. - * - The cookie-path is a prefix of the request-path, and the last - * character of the cookie-path is %x2F ("/"). - * - The cookie-path is a prefix of the request-path, and the first - * character of the request-path that is not included in the cookie- - * path is a %x2F ("/") character. - * - * @param string $requestPath Path to check against - * - * @return bool - */ - public function matchesPath($requestPath) - { - $cookiePath = $this->getPath(); - - // Match on exact matches or when path is the default empty "/" - if ($cookiePath === '/' || $cookiePath == $requestPath) { - return true; - } - - // Ensure that the cookie-path is a prefix of the request path. - if (0 !== strpos($requestPath, $cookiePath)) { - return false; - } - - // Match if the last character of the cookie-path is "/" - if (substr($cookiePath, -1, 1) === '/') { - return true; - } - - // Match if the first character not included in cookie path is "/" - return substr($requestPath, strlen($cookiePath), 1) === '/'; - } - - /** - * Check if the cookie matches a domain value - * - * @param string $domain Domain to check against - * - * @return bool - */ - public function matchesDomain($domain) - { - // Remove the leading '.' as per spec in RFC 6265. - // http://tools.ietf.org/html/rfc6265#section-5.2.3 - $cookieDomain = ltrim($this->getDomain(), '.'); - - // Domain not set or exact match. - if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) { - return true; - } - - // Matching the subdomain according to RFC 6265. - // http://tools.ietf.org/html/rfc6265#section-5.1.3 - if (filter_var($domain, FILTER_VALIDATE_IP)) { - return false; - } - - return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/', $domain); - } - - /** - * Check if the cookie is expired - * - * @return bool - */ - public function isExpired() - { - return $this->getExpires() !== null && time() > $this->getExpires(); - } - - /** - * Check if the cookie is valid according to RFC 6265 - * - * @return bool|string Returns true if valid or an error message if invalid - */ - public function validate() - { - // Names must not be empty, but can be 0 - $name = $this->getName(); - if (empty($name) && !is_numeric($name)) { - return 'The cookie name must not be empty'; - } - - // Check if any of the invalid characters are present in the cookie name - if (preg_match( - '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/', - $name - )) { - return 'Cookie name must not contain invalid characters: ASCII ' - . 'Control characters (0-31;127), space, tab and the ' - . 'following characters: ()<>@,;:\"/?={}'; - } - - // Value must not be empty, but can be 0 - $value = $this->getValue(); - if (empty($value) && !is_numeric($value)) { - return 'The cookie value must not be empty'; - } - - // Domains must not be empty, but can be 0 - // A "0" is not a valid internet domain, but may be used as server name - // in a private network. - $domain = $this->getDomain(); - if (empty($domain) && !is_numeric($domain)) { - return 'The cookie domain must not be empty'; - } - - return true; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php b/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php deleted file mode 100644 index 427d896..0000000 --- a/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php +++ /dev/null @@ -1,27 +0,0 @@ -getStatusCode() - : 0; - parent::__construct($message, $code, $previous); - $this->request = $request; - $this->response = $response; - $this->handlerContext = $handlerContext; - } - - /** - * Wrap non-RequestExceptions with a RequestException - * - * @param RequestInterface $request - * @param \Exception $e - * - * @return RequestException - */ - public static function wrapException(RequestInterface $request, \Exception $e) - { - return $e instanceof RequestException - ? $e - : new RequestException($e->getMessage(), $request, null, $e); - } - - /** - * Factory method to create a new exception with a normalized error message - * - * @param RequestInterface $request Request - * @param ResponseInterface $response Response received - * @param \Exception $previous Previous exception - * @param array $ctx Optional handler context. - * - * @return self - */ - public static function create( - RequestInterface $request, - ResponseInterface $response = null, - \Exception $previous = null, - array $ctx = [] - ) { - if (!$response) { - return new self( - 'Error completing request', - $request, - null, - $previous, - $ctx - ); - } - - $level = (int) floor($response->getStatusCode() / 100); - if ($level === 4) { - $label = 'Client error'; - $className = ClientException::class; - } elseif ($level === 5) { - $label = 'Server error'; - $className = ServerException::class; - } else { - $label = 'Unsuccessful request'; - $className = __CLASS__; - } - - $uri = $request->getUri(); - $uri = static::obfuscateUri($uri); - - // Client Error: `GET /` resulted in a `404 Not Found` response: - // ... (truncated) - $message = sprintf( - '%s: `%s %s` resulted in a `%s %s` response', - $label, - $request->getMethod(), - $uri, - $response->getStatusCode(), - $response->getReasonPhrase() - ); - - $summary = static::getResponseBodySummary($response); - - if ($summary !== null) { - $message .= ":\n{$summary}\n"; - } - - return new $className($message, $request, $response, $previous, $ctx); - } - - /** - * Get a short summary of the response - * - * Will return `null` if the response is not printable. - * - * @param ResponseInterface $response - * - * @return string|null - */ - public static function getResponseBodySummary(ResponseInterface $response) - { - return \GuzzleHttp\Psr7\get_message_body_summary($response); - } - - /** - * Obfuscates URI if there is a username and a password present - * - * @param UriInterface $uri - * - * @return UriInterface - */ - private static function obfuscateUri(UriInterface $uri) - { - $userInfo = $uri->getUserInfo(); - - if (false !== ($pos = strpos($userInfo, ':'))) { - return $uri->withUserInfo(substr($userInfo, 0, $pos), '***'); - } - - return $uri; - } - - /** - * Get the request that caused the exception - * - * @return RequestInterface - */ - public function getRequest() - { - return $this->request; - } - - /** - * Get the associated response - * - * @return ResponseInterface|null - */ - public function getResponse() - { - return $this->response; - } - - /** - * Check if a response was received - * - * @return bool - */ - public function hasResponse() - { - return $this->response !== null; - } - - /** - * Get contextual information about the error from the underlying handler. - * - * The contents of this array will vary depending on which handler you are - * using. It may also be just an empty array. Relying on this data will - * couple you to a specific handler, but can give more debug information - * when needed. - * - * @return array - */ - public function getHandlerContext() - { - return $this->handlerContext; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php b/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php deleted file mode 100644 index a77c289..0000000 --- a/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php +++ /dev/null @@ -1,27 +0,0 @@ -stream = $stream; - $msg = $msg ?: 'Could not seek the stream to position ' . $pos; - parent::__construct($msg); - } - - /** - * @return StreamInterface - */ - public function getStream() - { - return $this->stream; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php b/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php deleted file mode 100644 index 127094c..0000000 --- a/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php +++ /dev/null @@ -1,9 +0,0 @@ -maxHandles = $maxHandles; - } - - public function create(RequestInterface $request, array $options) - { - if (isset($options['curl']['body_as_string'])) { - $options['_body_as_string'] = $options['curl']['body_as_string']; - unset($options['curl']['body_as_string']); - } - - $easy = new EasyHandle; - $easy->request = $request; - $easy->options = $options; - $conf = $this->getDefaultConf($easy); - $this->applyMethod($easy, $conf); - $this->applyHandlerOptions($easy, $conf); - $this->applyHeaders($easy, $conf); - unset($conf['_headers']); - - // Add handler options from the request configuration options - if (isset($options['curl'])) { - $conf = array_replace($conf, $options['curl']); - } - - $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy); - $easy->handle = $this->handles - ? array_pop($this->handles) - : curl_init(); - curl_setopt_array($easy->handle, $conf); - - return $easy; - } - - public function release(EasyHandle $easy) - { - $resource = $easy->handle; - unset($easy->handle); - - if (count($this->handles) >= $this->maxHandles) { - curl_close($resource); - } else { - // Remove all callback functions as they can hold onto references - // and are not cleaned up by curl_reset. Using curl_setopt_array - // does not work for some reason, so removing each one - // individually. - curl_setopt($resource, CURLOPT_HEADERFUNCTION, null); - curl_setopt($resource, CURLOPT_READFUNCTION, null); - curl_setopt($resource, CURLOPT_WRITEFUNCTION, null); - curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null); - curl_reset($resource); - $this->handles[] = $resource; - } - } - - /** - * Completes a cURL transaction, either returning a response promise or a - * rejected promise. - * - * @param callable $handler - * @param EasyHandle $easy - * @param CurlFactoryInterface $factory Dictates how the handle is released - * - * @return \GuzzleHttp\Promise\PromiseInterface - */ - public static function finish( - callable $handler, - EasyHandle $easy, - CurlFactoryInterface $factory - ) { - if (isset($easy->options['on_stats'])) { - self::invokeStats($easy); - } - - if (!$easy->response || $easy->errno) { - return self::finishError($handler, $easy, $factory); - } - - // Return the response if it is present and there is no error. - $factory->release($easy); - - // Rewind the body of the response if possible. - $body = $easy->response->getBody(); - if ($body->isSeekable()) { - $body->rewind(); - } - - return new FulfilledPromise($easy->response); - } - - private static function invokeStats(EasyHandle $easy) - { - $curlStats = curl_getinfo($easy->handle); - $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME); - $stats = new TransferStats( - $easy->request, - $easy->response, - $curlStats['total_time'], - $easy->errno, - $curlStats - ); - call_user_func($easy->options['on_stats'], $stats); - } - - private static function finishError( - callable $handler, - EasyHandle $easy, - CurlFactoryInterface $factory - ) { - // Get error information and release the handle to the factory. - $ctx = [ - 'errno' => $easy->errno, - 'error' => curl_error($easy->handle), - 'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME), - ] + curl_getinfo($easy->handle); - $ctx[self::CURL_VERSION_STR] = curl_version()['version']; - $factory->release($easy); - - // Retry when nothing is present or when curl failed to rewind. - if (empty($easy->options['_err_message']) - && (!$easy->errno || $easy->errno == 65) - ) { - return self::retryFailedRewind($handler, $easy, $ctx); - } - - return self::createRejection($easy, $ctx); - } - - private static function createRejection(EasyHandle $easy, array $ctx) - { - static $connectionErrors = [ - CURLE_OPERATION_TIMEOUTED => true, - CURLE_COULDNT_RESOLVE_HOST => true, - CURLE_COULDNT_CONNECT => true, - CURLE_SSL_CONNECT_ERROR => true, - CURLE_GOT_NOTHING => true, - ]; - - // If an exception was encountered during the onHeaders event, then - // return a rejected promise that wraps that exception. - if ($easy->onHeadersException) { - return \GuzzleHttp\Promise\rejection_for( - new RequestException( - 'An error was encountered during the on_headers event', - $easy->request, - $easy->response, - $easy->onHeadersException, - $ctx - ) - ); - } - if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) { - $message = sprintf( - 'cURL error %s: %s (%s)', - $ctx['errno'], - $ctx['error'], - 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html' - ); - } else { - $message = sprintf( - 'cURL error %s: %s (%s) for %s', - $ctx['errno'], - $ctx['error'], - 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html', - $easy->request->getUri() - ); - } - - // Create a connection exception if it was a specific error code. - $error = isset($connectionErrors[$easy->errno]) - ? new ConnectException($message, $easy->request, null, $ctx) - : new RequestException($message, $easy->request, $easy->response, null, $ctx); - - return \GuzzleHttp\Promise\rejection_for($error); - } - - private function getDefaultConf(EasyHandle $easy) - { - $conf = [ - '_headers' => $easy->request->getHeaders(), - CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), - CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), - CURLOPT_RETURNTRANSFER => false, - CURLOPT_HEADER => false, - CURLOPT_CONNECTTIMEOUT => 150, - ]; - - if (defined('CURLOPT_PROTOCOLS')) { - $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS; - } - - $version = $easy->request->getProtocolVersion(); - if ($version == 1.1) { - $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1; - } elseif ($version == 2.0) { - $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0; - } else { - $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0; - } - - return $conf; - } - - private function applyMethod(EasyHandle $easy, array &$conf) - { - $body = $easy->request->getBody(); - $size = $body->getSize(); - - if ($size === null || $size > 0) { - $this->applyBody($easy->request, $easy->options, $conf); - return; - } - - $method = $easy->request->getMethod(); - if ($method === 'PUT' || $method === 'POST') { - // See http://tools.ietf.org/html/rfc7230#section-3.3.2 - if (!$easy->request->hasHeader('Content-Length')) { - $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0'; - } - } elseif ($method === 'HEAD') { - $conf[CURLOPT_NOBODY] = true; - unset( - $conf[CURLOPT_WRITEFUNCTION], - $conf[CURLOPT_READFUNCTION], - $conf[CURLOPT_FILE], - $conf[CURLOPT_INFILE] - ); - } - } - - private function applyBody(RequestInterface $request, array $options, array &$conf) - { - $size = $request->hasHeader('Content-Length') - ? (int) $request->getHeaderLine('Content-Length') - : null; - - // Send the body as a string if the size is less than 1MB OR if the - // [curl][body_as_string] request value is set. - if (($size !== null && $size < 1000000) || - !empty($options['_body_as_string']) - ) { - $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody(); - // Don't duplicate the Content-Length header - $this->removeHeader('Content-Length', $conf); - $this->removeHeader('Transfer-Encoding', $conf); - } else { - $conf[CURLOPT_UPLOAD] = true; - if ($size !== null) { - $conf[CURLOPT_INFILESIZE] = $size; - $this->removeHeader('Content-Length', $conf); - } - $body = $request->getBody(); - if ($body->isSeekable()) { - $body->rewind(); - } - $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) { - return $body->read($length); - }; - } - - // If the Expect header is not present, prevent curl from adding it - if (!$request->hasHeader('Expect')) { - $conf[CURLOPT_HTTPHEADER][] = 'Expect:'; - } - - // cURL sometimes adds a content-type by default. Prevent this. - if (!$request->hasHeader('Content-Type')) { - $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:'; - } - } - - private function applyHeaders(EasyHandle $easy, array &$conf) - { - foreach ($conf['_headers'] as $name => $values) { - foreach ($values as $value) { - $value = (string) $value; - if ($value === '') { - // cURL requires a special format for empty headers. - // See https://github.com/guzzle/guzzle/issues/1882 for more details. - $conf[CURLOPT_HTTPHEADER][] = "$name;"; - } else { - $conf[CURLOPT_HTTPHEADER][] = "$name: $value"; - } - } - } - - // Remove the Accept header if one was not set - if (!$easy->request->hasHeader('Accept')) { - $conf[CURLOPT_HTTPHEADER][] = 'Accept:'; - } - } - - /** - * Remove a header from the options array. - * - * @param string $name Case-insensitive header to remove - * @param array $options Array of options to modify - */ - private function removeHeader($name, array &$options) - { - foreach (array_keys($options['_headers']) as $key) { - if (!strcasecmp($key, $name)) { - unset($options['_headers'][$key]); - return; - } - } - } - - private function applyHandlerOptions(EasyHandle $easy, array &$conf) - { - $options = $easy->options; - if (isset($options['verify'])) { - if ($options['verify'] === false) { - unset($conf[CURLOPT_CAINFO]); - $conf[CURLOPT_SSL_VERIFYHOST] = 0; - $conf[CURLOPT_SSL_VERIFYPEER] = false; - } else { - $conf[CURLOPT_SSL_VERIFYHOST] = 2; - $conf[CURLOPT_SSL_VERIFYPEER] = true; - if (is_string($options['verify'])) { - // Throw an error if the file/folder/link path is not valid or doesn't exist. - if (!file_exists($options['verify'])) { - throw new \InvalidArgumentException( - "SSL CA bundle not found: {$options['verify']}" - ); - } - // If it's a directory or a link to a directory use CURLOPT_CAPATH. - // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO. - if (is_dir($options['verify']) || - (is_link($options['verify']) && is_dir(readlink($options['verify'])))) { - $conf[CURLOPT_CAPATH] = $options['verify']; - } else { - $conf[CURLOPT_CAINFO] = $options['verify']; - } - } - } - } - - if (!empty($options['decode_content'])) { - $accept = $easy->request->getHeaderLine('Accept-Encoding'); - if ($accept) { - $conf[CURLOPT_ENCODING] = $accept; - } else { - $conf[CURLOPT_ENCODING] = ''; - // Don't let curl send the header over the wire - $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; - } - } - - if (isset($options['sink'])) { - $sink = $options['sink']; - if (!is_string($sink)) { - $sink = \GuzzleHttp\Psr7\stream_for($sink); - } elseif (!is_dir(dirname($sink))) { - // Ensure that the directory exists before failing in curl. - throw new \RuntimeException(sprintf( - 'Directory %s does not exist for sink value of %s', - dirname($sink), - $sink - )); - } else { - $sink = new LazyOpenStream($sink, 'w+'); - } - $easy->sink = $sink; - $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) { - return $sink->write($write); - }; - } else { - // Use a default temp stream if no sink was set. - $conf[CURLOPT_FILE] = fopen('php://temp', 'w+'); - $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]); - } - $timeoutRequiresNoSignal = false; - if (isset($options['timeout'])) { - $timeoutRequiresNoSignal |= $options['timeout'] < 1; - $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000; - } - - // CURL default value is CURL_IPRESOLVE_WHATEVER - if (isset($options['force_ip_resolve'])) { - if ('v4' === $options['force_ip_resolve']) { - $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; - } elseif ('v6' === $options['force_ip_resolve']) { - $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6; - } - } - - if (isset($options['connect_timeout'])) { - $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1; - $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000; - } - - if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') { - $conf[CURLOPT_NOSIGNAL] = true; - } - - if (isset($options['proxy'])) { - if (!is_array($options['proxy'])) { - $conf[CURLOPT_PROXY] = $options['proxy']; - } else { - $scheme = $easy->request->getUri()->getScheme(); - if (isset($options['proxy'][$scheme])) { - $host = $easy->request->getUri()->getHost(); - if (!isset($options['proxy']['no']) || - !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no']) - ) { - $conf[CURLOPT_PROXY] = $options['proxy'][$scheme]; - } - } - } - } - - if (isset($options['cert'])) { - $cert = $options['cert']; - if (is_array($cert)) { - $conf[CURLOPT_SSLCERTPASSWD] = $cert[1]; - $cert = $cert[0]; - } - if (!file_exists($cert)) { - throw new \InvalidArgumentException( - "SSL certificate not found: {$cert}" - ); - } - $conf[CURLOPT_SSLCERT] = $cert; - } - - if (isset($options['ssl_key'])) { - if (is_array($options['ssl_key'])) { - if (count($options['ssl_key']) === 2) { - list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key']; - } else { - list($sslKey) = $options['ssl_key']; - } - } - - $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key']; - - if (!file_exists($sslKey)) { - throw new \InvalidArgumentException( - "SSL private key not found: {$sslKey}" - ); - } - $conf[CURLOPT_SSLKEY] = $sslKey; - } - - if (isset($options['progress'])) { - $progress = $options['progress']; - if (!is_callable($progress)) { - throw new \InvalidArgumentException( - 'progress client option must be callable' - ); - } - $conf[CURLOPT_NOPROGRESS] = false; - $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) { - $args = func_get_args(); - // PHP 5.5 pushed the handle onto the start of the args - if (is_resource($args[0])) { - array_shift($args); - } - call_user_func_array($progress, $args); - }; - } - - if (!empty($options['debug'])) { - $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']); - $conf[CURLOPT_VERBOSE] = true; - } - } - - /** - * This function ensures that a response was set on a transaction. If one - * was not set, then the request is retried if possible. This error - * typically means you are sending a payload, curl encountered a - * "Connection died, retrying a fresh connect" error, tried to rewind the - * stream, and then encountered a "necessary data rewind wasn't possible" - * error, causing the request to be sent through curl_multi_info_read() - * without an error status. - */ - private static function retryFailedRewind( - callable $handler, - EasyHandle $easy, - array $ctx - ) { - try { - // Only rewind if the body has been read from. - $body = $easy->request->getBody(); - if ($body->tell() > 0) { - $body->rewind(); - } - } catch (\RuntimeException $e) { - $ctx['error'] = 'The connection unexpectedly failed without ' - . 'providing an error. The request would have been retried, ' - . 'but attempting to rewind the request body failed. ' - . 'Exception: ' . $e; - return self::createRejection($easy, $ctx); - } - - // Retry no more than 3 times before giving up. - if (!isset($easy->options['_curl_retries'])) { - $easy->options['_curl_retries'] = 1; - } elseif ($easy->options['_curl_retries'] == 2) { - $ctx['error'] = 'The cURL request was retried 3 times ' - . 'and did not succeed. The most likely reason for the failure ' - . 'is that cURL was unable to rewind the body of the request ' - . 'and subsequent retries resulted in the same error. Turn on ' - . 'the debug option to see what went wrong. See ' - . 'https://bugs.php.net/bug.php?id=47204 for more information.'; - return self::createRejection($easy, $ctx); - } else { - $easy->options['_curl_retries']++; - } - - return $handler($easy->request, $easy->options); - } - - private function createHeaderFn(EasyHandle $easy) - { - if (isset($easy->options['on_headers'])) { - $onHeaders = $easy->options['on_headers']; - - if (!is_callable($onHeaders)) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - } else { - $onHeaders = null; - } - - return function ($ch, $h) use ( - $onHeaders, - $easy, - &$startingResponse - ) { - $value = trim($h); - if ($value === '') { - $startingResponse = true; - $easy->createResponse(); - if ($onHeaders !== null) { - try { - $onHeaders($easy->response); - } catch (\Exception $e) { - // Associate the exception with the handle and trigger - // a curl header write error by returning 0. - $easy->onHeadersException = $e; - return -1; - } - } - } elseif ($startingResponse) { - $startingResponse = false; - $easy->headers = [$value]; - } else { - $easy->headers[] = $value; - } - return strlen($h); - }; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php deleted file mode 100644 index b0fc236..0000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -factory = isset($options['handle_factory']) - ? $options['handle_factory'] - : new CurlFactory(3); - } - - public function __invoke(RequestInterface $request, array $options) - { - if (isset($options['delay'])) { - usleep($options['delay'] * 1000); - } - - $easy = $this->factory->create($request, $options); - curl_exec($easy->handle); - $easy->errno = curl_errno($easy->handle); - - return CurlFactory::finish($this, $easy, $this->factory); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php deleted file mode 100644 index 564c95f..0000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +++ /dev/null @@ -1,219 +0,0 @@ -factory = isset($options['handle_factory']) - ? $options['handle_factory'] : new CurlFactory(50); - - if (isset($options['select_timeout'])) { - $this->selectTimeout = $options['select_timeout']; - } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) { - $this->selectTimeout = $selectTimeout; - } else { - $this->selectTimeout = 1; - } - - $this->options = isset($options['options']) ? $options['options'] : []; - } - - public function __get($name) - { - if ($name === '_mh') { - $this->_mh = curl_multi_init(); - - foreach ($this->options as $option => $value) { - // A warning is raised in case of a wrong option. - curl_multi_setopt($this->_mh, $option, $value); - } - - // Further calls to _mh will return the value directly, without entering the - // __get() method at all. - return $this->_mh; - } - - throw new \BadMethodCallException(); - } - - public function __destruct() - { - if (isset($this->_mh)) { - curl_multi_close($this->_mh); - unset($this->_mh); - } - } - - public function __invoke(RequestInterface $request, array $options) - { - $easy = $this->factory->create($request, $options); - $id = (int) $easy->handle; - - $promise = new Promise( - [$this, 'execute'], - function () use ($id) { - return $this->cancel($id); - } - ); - - $this->addRequest(['easy' => $easy, 'deferred' => $promise]); - - return $promise; - } - - /** - * Ticks the curl event loop. - */ - public function tick() - { - // Add any delayed handles if needed. - if ($this->delays) { - $currentTime = Utils::currentTime(); - foreach ($this->delays as $id => $delay) { - if ($currentTime >= $delay) { - unset($this->delays[$id]); - curl_multi_add_handle( - $this->_mh, - $this->handles[$id]['easy']->handle - ); - } - } - } - - // Step through the task queue which may add additional requests. - P\queue()->run(); - - if ($this->active && - curl_multi_select($this->_mh, $this->selectTimeout) === -1 - ) { - // Perform a usleep if a select returns -1. - // See: https://bugs.php.net/bug.php?id=61141 - usleep(250); - } - - while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM); - - $this->processMessages(); - } - - /** - * Runs until all outstanding connections have completed. - */ - public function execute() - { - $queue = P\queue(); - - while ($this->handles || !$queue->isEmpty()) { - // If there are no transfers, then sleep for the next delay - if (!$this->active && $this->delays) { - usleep($this->timeToNext()); - } - $this->tick(); - } - } - - private function addRequest(array $entry) - { - $easy = $entry['easy']; - $id = (int) $easy->handle; - $this->handles[$id] = $entry; - if (empty($easy->options['delay'])) { - curl_multi_add_handle($this->_mh, $easy->handle); - } else { - $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000); - } - } - - /** - * Cancels a handle from sending and removes references to it. - * - * @param int $id Handle ID to cancel and remove. - * - * @return bool True on success, false on failure. - */ - private function cancel($id) - { - // Cannot cancel if it has been processed. - if (!isset($this->handles[$id])) { - return false; - } - - $handle = $this->handles[$id]['easy']->handle; - unset($this->delays[$id], $this->handles[$id]); - curl_multi_remove_handle($this->_mh, $handle); - curl_close($handle); - - return true; - } - - private function processMessages() - { - while ($done = curl_multi_info_read($this->_mh)) { - $id = (int) $done['handle']; - curl_multi_remove_handle($this->_mh, $done['handle']); - - if (!isset($this->handles[$id])) { - // Probably was cancelled. - continue; - } - - $entry = $this->handles[$id]; - unset($this->handles[$id], $this->delays[$id]); - $entry['easy']->errno = $done['result']; - $entry['deferred']->resolve( - CurlFactory::finish( - $this, - $entry['easy'], - $this->factory - ) - ); - } - } - - private function timeToNext() - { - $currentTime = Utils::currentTime(); - $nextTime = PHP_INT_MAX; - foreach ($this->delays as $time) { - if ($time < $nextTime) { - $nextTime = $time; - } - } - - return max(0, $nextTime - $currentTime) * 1000000; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php deleted file mode 100644 index 7754e91..0000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php +++ /dev/null @@ -1,92 +0,0 @@ -headers)) { - throw new \RuntimeException('No headers have been received'); - } - - // HTTP-version SP status-code SP reason-phrase - $startLine = explode(' ', array_shift($this->headers), 3); - $headers = \GuzzleHttp\headers_from_lines($this->headers); - $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers); - - if (!empty($this->options['decode_content']) - && isset($normalizedKeys['content-encoding']) - ) { - $headers['x-encoded-content-encoding'] - = $headers[$normalizedKeys['content-encoding']]; - unset($headers[$normalizedKeys['content-encoding']]); - if (isset($normalizedKeys['content-length'])) { - $headers['x-encoded-content-length'] - = $headers[$normalizedKeys['content-length']]; - - $bodyLength = (int) $this->sink->getSize(); - if ($bodyLength) { - $headers[$normalizedKeys['content-length']] = $bodyLength; - } else { - unset($headers[$normalizedKeys['content-length']]); - } - } - } - - // Attach a response to the easy handle with the parsed headers. - $this->response = new Response( - $startLine[1], - $headers, - $this->sink, - substr($startLine[0], 5), - isset($startLine[2]) ? (string) $startLine[2] : null - ); - } - - public function __get($name) - { - $msg = $name === 'handle' - ? 'The EasyHandle has been released' - : 'Invalid property: ' . $name; - throw new \BadMethodCallException($msg); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php b/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php deleted file mode 100644 index 5b312bc..0000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php +++ /dev/null @@ -1,195 +0,0 @@ -onFulfilled = $onFulfilled; - $this->onRejected = $onRejected; - - if ($queue) { - call_user_func_array([$this, 'append'], $queue); - } - } - - public function __invoke(RequestInterface $request, array $options) - { - if (!$this->queue) { - throw new \OutOfBoundsException('Mock queue is empty'); - } - - if (isset($options['delay']) && is_numeric($options['delay'])) { - usleep($options['delay'] * 1000); - } - - $this->lastRequest = $request; - $this->lastOptions = $options; - $response = array_shift($this->queue); - - if (isset($options['on_headers'])) { - if (!is_callable($options['on_headers'])) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - try { - $options['on_headers']($response); - } catch (\Exception $e) { - $msg = 'An error was encountered during the on_headers event'; - $response = new RequestException($msg, $request, $response, $e); - } - } - - if (is_callable($response)) { - $response = call_user_func($response, $request, $options); - } - - $response = $response instanceof \Exception - ? \GuzzleHttp\Promise\rejection_for($response) - : \GuzzleHttp\Promise\promise_for($response); - - return $response->then( - function ($value) use ($request, $options) { - $this->invokeStats($request, $options, $value); - if ($this->onFulfilled) { - call_user_func($this->onFulfilled, $value); - } - if (isset($options['sink'])) { - $contents = (string) $value->getBody(); - $sink = $options['sink']; - - if (is_resource($sink)) { - fwrite($sink, $contents); - } elseif (is_string($sink)) { - file_put_contents($sink, $contents); - } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) { - $sink->write($contents); - } - } - - return $value; - }, - function ($reason) use ($request, $options) { - $this->invokeStats($request, $options, null, $reason); - if ($this->onRejected) { - call_user_func($this->onRejected, $reason); - } - return \GuzzleHttp\Promise\rejection_for($reason); - } - ); - } - - /** - * Adds one or more variadic requests, exceptions, callables, or promises - * to the queue. - */ - public function append() - { - foreach (func_get_args() as $value) { - if ($value instanceof ResponseInterface - || $value instanceof \Exception - || $value instanceof PromiseInterface - || is_callable($value) - ) { - $this->queue[] = $value; - } else { - throw new \InvalidArgumentException('Expected a response or ' - . 'exception. Found ' . \GuzzleHttp\describe_type($value)); - } - } - } - - /** - * Get the last received request. - * - * @return RequestInterface - */ - public function getLastRequest() - { - return $this->lastRequest; - } - - /** - * Get the last received request options. - * - * @return array - */ - public function getLastOptions() - { - return $this->lastOptions; - } - - /** - * Returns the number of remaining items in the queue. - * - * @return int - */ - public function count() - { - return count($this->queue); - } - - public function reset() - { - $this->queue = []; - } - - private function invokeStats( - RequestInterface $request, - array $options, - ResponseInterface $response = null, - $reason = null - ) { - if (isset($options['on_stats'])) { - $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0; - $stats = new TransferStats($request, $response, $transferTime, $reason); - call_user_func($options['on_stats'], $stats); - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php b/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php deleted file mode 100644 index f8b00be..0000000 --- a/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php +++ /dev/null @@ -1,55 +0,0 @@ -withoutHeader('Expect'); - - // Append a content-length header if body size is zero to match - // cURL's behavior. - if (0 === $request->getBody()->getSize()) { - $request = $request->withHeader('Content-Length', '0'); - } - - return $this->createResponse( - $request, - $options, - $this->createStream($request, $options), - $startTime - ); - } catch (\InvalidArgumentException $e) { - throw $e; - } catch (\Exception $e) { - // Determine if the error was a networking error. - $message = $e->getMessage(); - // This list can probably get more comprehensive. - if (strpos($message, 'getaddrinfo') // DNS lookup failed - || strpos($message, 'Connection refused') - || strpos($message, "couldn't connect to host") // error on HHVM - || strpos($message, "connection attempt failed") - ) { - $e = new ConnectException($e->getMessage(), $request, $e); - } - $e = RequestException::wrapException($request, $e); - $this->invokeStats($options, $request, $startTime, null, $e); - - return \GuzzleHttp\Promise\rejection_for($e); - } - } - - private function invokeStats( - array $options, - RequestInterface $request, - $startTime, - ResponseInterface $response = null, - $error = null - ) { - if (isset($options['on_stats'])) { - $stats = new TransferStats( - $request, - $response, - Utils::currentTime() - $startTime, - $error, - [] - ); - call_user_func($options['on_stats'], $stats); - } - } - - private function createResponse( - RequestInterface $request, - array $options, - $stream, - $startTime - ) { - $hdrs = $this->lastHeaders; - $this->lastHeaders = []; - $parts = explode(' ', array_shift($hdrs), 3); - $ver = explode('/', $parts[0])[1]; - $status = $parts[1]; - $reason = isset($parts[2]) ? $parts[2] : null; - $headers = \GuzzleHttp\headers_from_lines($hdrs); - list($stream, $headers) = $this->checkDecode($options, $headers, $stream); - $stream = Psr7\stream_for($stream); - $sink = $stream; - - if (strcasecmp('HEAD', $request->getMethod())) { - $sink = $this->createSink($stream, $options); - } - - $response = new Psr7\Response($status, $headers, $sink, $ver, $reason); - - if (isset($options['on_headers'])) { - try { - $options['on_headers']($response); - } catch (\Exception $e) { - $msg = 'An error was encountered during the on_headers event'; - $ex = new RequestException($msg, $request, $response, $e); - return \GuzzleHttp\Promise\rejection_for($ex); - } - } - - // Do not drain when the request is a HEAD request because they have - // no body. - if ($sink !== $stream) { - $this->drain( - $stream, - $sink, - $response->getHeaderLine('Content-Length') - ); - } - - $this->invokeStats($options, $request, $startTime, $response, null); - - return new FulfilledPromise($response); - } - - private function createSink(StreamInterface $stream, array $options) - { - if (!empty($options['stream'])) { - return $stream; - } - - $sink = isset($options['sink']) - ? $options['sink'] - : fopen('php://temp', 'r+'); - - return is_string($sink) - ? new Psr7\LazyOpenStream($sink, 'w+') - : Psr7\stream_for($sink); - } - - private function checkDecode(array $options, array $headers, $stream) - { - // Automatically decode responses when instructed. - if (!empty($options['decode_content'])) { - $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers); - if (isset($normalizedKeys['content-encoding'])) { - $encoding = $headers[$normalizedKeys['content-encoding']]; - if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') { - $stream = new Psr7\InflateStream( - Psr7\stream_for($stream) - ); - $headers['x-encoded-content-encoding'] - = $headers[$normalizedKeys['content-encoding']]; - // Remove content-encoding header - unset($headers[$normalizedKeys['content-encoding']]); - // Fix content-length header - if (isset($normalizedKeys['content-length'])) { - $headers['x-encoded-content-length'] - = $headers[$normalizedKeys['content-length']]; - - $length = (int) $stream->getSize(); - if ($length === 0) { - unset($headers[$normalizedKeys['content-length']]); - } else { - $headers[$normalizedKeys['content-length']] = [$length]; - } - } - } - } - } - - return [$stream, $headers]; - } - - /** - * Drains the source stream into the "sink" client option. - * - * @param StreamInterface $source - * @param StreamInterface $sink - * @param string $contentLength Header specifying the amount of - * data to read. - * - * @return StreamInterface - * @throws \RuntimeException when the sink option is invalid. - */ - private function drain( - StreamInterface $source, - StreamInterface $sink, - $contentLength - ) { - // If a content-length header is provided, then stop reading once - // that number of bytes has been read. This can prevent infinitely - // reading from a stream when dealing with servers that do not honor - // Connection: Close headers. - Psr7\copy_to_stream( - $source, - $sink, - (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1 - ); - - $sink->seek(0); - $source->close(); - - return $sink; - } - - /** - * Create a resource and check to ensure it was created successfully - * - * @param callable $callback Callable that returns stream resource - * - * @return resource - * @throws \RuntimeException on error - */ - private function createResource(callable $callback) - { - $errors = null; - set_error_handler(function ($_, $msg, $file, $line) use (&$errors) { - $errors[] = [ - 'message' => $msg, - 'file' => $file, - 'line' => $line - ]; - return true; - }); - - $resource = $callback(); - restore_error_handler(); - - if (!$resource) { - $message = 'Error creating resource: '; - foreach ($errors as $err) { - foreach ($err as $key => $value) { - $message .= "[$key] $value" . PHP_EOL; - } - } - throw new \RuntimeException(trim($message)); - } - - return $resource; - } - - private function createStream(RequestInterface $request, array $options) - { - static $methods; - if (!$methods) { - $methods = array_flip(get_class_methods(__CLASS__)); - } - - // HTTP/1.1 streams using the PHP stream wrapper require a - // Connection: close header - if ($request->getProtocolVersion() == '1.1' - && !$request->hasHeader('Connection') - ) { - $request = $request->withHeader('Connection', 'close'); - } - - // Ensure SSL is verified by default - if (!isset($options['verify'])) { - $options['verify'] = true; - } - - $params = []; - $context = $this->getDefaultContext($request); - - if (isset($options['on_headers']) && !is_callable($options['on_headers'])) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - - if (!empty($options)) { - foreach ($options as $key => $value) { - $method = "add_{$key}"; - if (isset($methods[$method])) { - $this->{$method}($request, $context, $value, $params); - } - } - } - - if (isset($options['stream_context'])) { - if (!is_array($options['stream_context'])) { - throw new \InvalidArgumentException('stream_context must be an array'); - } - $context = array_replace_recursive( - $context, - $options['stream_context'] - ); - } - - // Microsoft NTLM authentication only supported with curl handler - if (isset($options['auth']) - && is_array($options['auth']) - && isset($options['auth'][2]) - && 'ntlm' == $options['auth'][2] - ) { - throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler'); - } - - $uri = $this->resolveHost($request, $options); - - $context = $this->createResource( - function () use ($context, $params) { - return stream_context_create($context, $params); - } - ); - - return $this->createResource( - function () use ($uri, &$http_response_header, $context, $options) { - $resource = fopen((string) $uri, 'r', null, $context); - $this->lastHeaders = $http_response_header; - - if (isset($options['read_timeout'])) { - $readTimeout = $options['read_timeout']; - $sec = (int) $readTimeout; - $usec = ($readTimeout - $sec) * 100000; - stream_set_timeout($resource, $sec, $usec); - } - - return $resource; - } - ); - } - - private function resolveHost(RequestInterface $request, array $options) - { - $uri = $request->getUri(); - - if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) { - if ('v4' === $options['force_ip_resolve']) { - $records = dns_get_record($uri->getHost(), DNS_A); - if (!isset($records[0]['ip'])) { - throw new ConnectException( - sprintf( - "Could not resolve IPv4 address for host '%s'", - $uri->getHost() - ), - $request - ); - } - $uri = $uri->withHost($records[0]['ip']); - } elseif ('v6' === $options['force_ip_resolve']) { - $records = dns_get_record($uri->getHost(), DNS_AAAA); - if (!isset($records[0]['ipv6'])) { - throw new ConnectException( - sprintf( - "Could not resolve IPv6 address for host '%s'", - $uri->getHost() - ), - $request - ); - } - $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']'); - } - } - - return $uri; - } - - private function getDefaultContext(RequestInterface $request) - { - $headers = ''; - foreach ($request->getHeaders() as $name => $value) { - foreach ($value as $val) { - $headers .= "$name: $val\r\n"; - } - } - - $context = [ - 'http' => [ - 'method' => $request->getMethod(), - 'header' => $headers, - 'protocol_version' => $request->getProtocolVersion(), - 'ignore_errors' => true, - 'follow_location' => 0, - ], - ]; - - $body = (string) $request->getBody(); - - if (!empty($body)) { - $context['http']['content'] = $body; - // Prevent the HTTP handler from adding a Content-Type header. - if (!$request->hasHeader('Content-Type')) { - $context['http']['header'] .= "Content-Type:\r\n"; - } - } - - $context['http']['header'] = rtrim($context['http']['header']); - - return $context; - } - - private function add_proxy(RequestInterface $request, &$options, $value, &$params) - { - if (!is_array($value)) { - $options['http']['proxy'] = $value; - } else { - $scheme = $request->getUri()->getScheme(); - if (isset($value[$scheme])) { - if (!isset($value['no']) - || !\GuzzleHttp\is_host_in_noproxy( - $request->getUri()->getHost(), - $value['no'] - ) - ) { - $options['http']['proxy'] = $value[$scheme]; - } - } - } - } - - private function add_timeout(RequestInterface $request, &$options, $value, &$params) - { - if ($value > 0) { - $options['http']['timeout'] = $value; - } - } - - private function add_verify(RequestInterface $request, &$options, $value, &$params) - { - if ($value === true) { - // PHP 5.6 or greater will find the system cert by default. When - // < 5.6, use the Guzzle bundled cacert. - if (PHP_VERSION_ID < 50600) { - $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle(); - } - } elseif (is_string($value)) { - $options['ssl']['cafile'] = $value; - if (!file_exists($value)) { - throw new \RuntimeException("SSL CA bundle not found: $value"); - } - } elseif ($value === false) { - $options['ssl']['verify_peer'] = false; - $options['ssl']['verify_peer_name'] = false; - return; - } else { - throw new \InvalidArgumentException('Invalid verify request option'); - } - - $options['ssl']['verify_peer'] = true; - $options['ssl']['verify_peer_name'] = true; - $options['ssl']['allow_self_signed'] = false; - } - - private function add_cert(RequestInterface $request, &$options, $value, &$params) - { - if (is_array($value)) { - $options['ssl']['passphrase'] = $value[1]; - $value = $value[0]; - } - - if (!file_exists($value)) { - throw new \RuntimeException("SSL certificate not found: {$value}"); - } - - $options['ssl']['local_cert'] = $value; - } - - private function add_progress(RequestInterface $request, &$options, $value, &$params) - { - $this->addNotification( - $params, - function ($code, $a, $b, $c, $transferred, $total) use ($value) { - if ($code == STREAM_NOTIFY_PROGRESS) { - $value($total, $transferred, null, null); - } - } - ); - } - - private function add_debug(RequestInterface $request, &$options, $value, &$params) - { - if ($value === false) { - return; - } - - static $map = [ - STREAM_NOTIFY_CONNECT => 'CONNECT', - STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', - STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', - STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', - STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', - STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', - STREAM_NOTIFY_PROGRESS => 'PROGRESS', - STREAM_NOTIFY_FAILURE => 'FAILURE', - STREAM_NOTIFY_COMPLETED => 'COMPLETED', - STREAM_NOTIFY_RESOLVE => 'RESOLVE', - ]; - static $args = ['severity', 'message', 'message_code', - 'bytes_transferred', 'bytes_max']; - - $value = \GuzzleHttp\debug_resource($value); - $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment(''); - $this->addNotification( - $params, - function () use ($ident, $value, $map, $args) { - $passed = func_get_args(); - $code = array_shift($passed); - fprintf($value, '<%s> [%s] ', $ident, $map[$code]); - foreach (array_filter($passed) as $i => $v) { - fwrite($value, $args[$i] . ': "' . $v . '" '); - } - fwrite($value, "\n"); - } - ); - } - - private function addNotification(array &$params, callable $notify) - { - // Wrap the existing function if needed. - if (!isset($params['notification'])) { - $params['notification'] = $notify; - } else { - $params['notification'] = $this->callArray([ - $params['notification'], - $notify - ]); - } - } - - private function callArray(array $functions) - { - return function () use ($functions) { - $args = func_get_args(); - foreach ($functions as $fn) { - call_user_func_array($fn, $args); - } - }; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/HandlerStack.php b/vendor/guzzlehttp/guzzle/src/HandlerStack.php deleted file mode 100644 index 6a49cc0..0000000 --- a/vendor/guzzlehttp/guzzle/src/HandlerStack.php +++ /dev/null @@ -1,277 +0,0 @@ -push(Middleware::httpErrors(), 'http_errors'); - $stack->push(Middleware::redirect(), 'allow_redirects'); - $stack->push(Middleware::cookies(), 'cookies'); - $stack->push(Middleware::prepareBody(), 'prepare_body'); - - return $stack; - } - - /** - * @param callable $handler Underlying HTTP handler. - */ - public function __construct(callable $handler = null) - { - $this->handler = $handler; - } - - /** - * Invokes the handler stack as a composed handler - * - * @param RequestInterface $request - * @param array $options - * - * @return ResponseInterface|PromiseInterface - */ - public function __invoke(RequestInterface $request, array $options) - { - $handler = $this->resolve(); - - return $handler($request, $options); - } - - /** - * Dumps a string representation of the stack. - * - * @return string - */ - public function __toString() - { - $depth = 0; - $stack = []; - if ($this->handler) { - $stack[] = "0) Handler: " . $this->debugCallable($this->handler); - } - - $result = ''; - foreach (array_reverse($this->stack) as $tuple) { - $depth++; - $str = "{$depth}) Name: '{$tuple[1]}', "; - $str .= "Function: " . $this->debugCallable($tuple[0]); - $result = "> {$str}\n{$result}"; - $stack[] = $str; - } - - foreach (array_keys($stack) as $k) { - $result .= "< {$stack[$k]}\n"; - } - - return $result; - } - - /** - * Set the HTTP handler that actually returns a promise. - * - * @param callable $handler Accepts a request and array of options and - * returns a Promise. - */ - public function setHandler(callable $handler) - { - $this->handler = $handler; - $this->cached = null; - } - - /** - * Returns true if the builder has a handler. - * - * @return bool - */ - public function hasHandler() - { - return (bool) $this->handler; - } - - /** - * Unshift a middleware to the bottom of the stack. - * - * @param callable $middleware Middleware function - * @param string $name Name to register for this middleware. - */ - public function unshift(callable $middleware, $name = null) - { - array_unshift($this->stack, [$middleware, $name]); - $this->cached = null; - } - - /** - * Push a middleware to the top of the stack. - * - * @param callable $middleware Middleware function - * @param string $name Name to register for this middleware. - */ - public function push(callable $middleware, $name = '') - { - $this->stack[] = [$middleware, $name]; - $this->cached = null; - } - - /** - * Add a middleware before another middleware by name. - * - * @param string $findName Middleware to find - * @param callable $middleware Middleware function - * @param string $withName Name to register for this middleware. - */ - public function before($findName, callable $middleware, $withName = '') - { - $this->splice($findName, $withName, $middleware, true); - } - - /** - * Add a middleware after another middleware by name. - * - * @param string $findName Middleware to find - * @param callable $middleware Middleware function - * @param string $withName Name to register for this middleware. - */ - public function after($findName, callable $middleware, $withName = '') - { - $this->splice($findName, $withName, $middleware, false); - } - - /** - * Remove a middleware by instance or name from the stack. - * - * @param callable|string $remove Middleware to remove by instance or name. - */ - public function remove($remove) - { - $this->cached = null; - $idx = is_callable($remove) ? 0 : 1; - $this->stack = array_values(array_filter( - $this->stack, - function ($tuple) use ($idx, $remove) { - return $tuple[$idx] !== $remove; - } - )); - } - - /** - * Compose the middleware and handler into a single callable function. - * - * @return callable - */ - public function resolve() - { - if (!$this->cached) { - if (!($prev = $this->handler)) { - throw new \LogicException('No handler has been specified'); - } - - foreach (array_reverse($this->stack) as $fn) { - $prev = $fn[0]($prev); - } - - $this->cached = $prev; - } - - return $this->cached; - } - - /** - * @param string $name - * @return int - */ - private function findByName($name) - { - foreach ($this->stack as $k => $v) { - if ($v[1] === $name) { - return $k; - } - } - - throw new \InvalidArgumentException("Middleware not found: $name"); - } - - /** - * Splices a function into the middleware list at a specific position. - * - * @param string $findName - * @param string $withName - * @param callable $middleware - * @param bool $before - */ - private function splice($findName, $withName, callable $middleware, $before) - { - $this->cached = null; - $idx = $this->findByName($findName); - $tuple = [$middleware, $withName]; - - if ($before) { - if ($idx === 0) { - array_unshift($this->stack, $tuple); - } else { - $replacement = [$tuple, $this->stack[$idx]]; - array_splice($this->stack, $idx, 1, $replacement); - } - } elseif ($idx === count($this->stack) - 1) { - $this->stack[] = $tuple; - } else { - $replacement = [$this->stack[$idx], $tuple]; - array_splice($this->stack, $idx, 1, $replacement); - } - } - - /** - * Provides a debug string for a given callable. - * - * @param array|callable $fn Function to write as a string. - * - * @return string - */ - private function debugCallable($fn) - { - if (is_string($fn)) { - return "callable({$fn})"; - } - - if (is_array($fn)) { - return is_string($fn[0]) - ? "callable({$fn[0]}::{$fn[1]})" - : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])"; - } - - return 'callable(' . spl_object_hash($fn) . ')'; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php b/vendor/guzzlehttp/guzzle/src/MessageFormatter.php deleted file mode 100644 index dc36bb5..0000000 --- a/vendor/guzzlehttp/guzzle/src/MessageFormatter.php +++ /dev/null @@ -1,185 +0,0 @@ ->>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; - const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; - - /** @var string Template used to format log messages */ - private $template; - - /** - * @param string $template Log message template - */ - public function __construct($template = self::CLF) - { - $this->template = $template ?: self::CLF; - } - - /** - * Returns a formatted message string. - * - * @param RequestInterface $request Request that was sent - * @param ResponseInterface $response Response that was received - * @param \Exception $error Exception that was received - * - * @return string - */ - public function format( - RequestInterface $request, - ResponseInterface $response = null, - \Exception $error = null - ) { - $cache = []; - - return preg_replace_callback( - '/{\s*([A-Za-z_\-\.0-9]+)\s*}/', - function (array $matches) use ($request, $response, $error, &$cache) { - if (isset($cache[$matches[1]])) { - return $cache[$matches[1]]; - } - - $result = ''; - switch ($matches[1]) { - case 'request': - $result = Psr7\str($request); - break; - case 'response': - $result = $response ? Psr7\str($response) : ''; - break; - case 'req_headers': - $result = trim($request->getMethod() - . ' ' . $request->getRequestTarget()) - . ' HTTP/' . $request->getProtocolVersion() . "\r\n" - . $this->headers($request); - break; - case 'res_headers': - $result = $response ? - sprintf( - 'HTTP/%s %d %s', - $response->getProtocolVersion(), - $response->getStatusCode(), - $response->getReasonPhrase() - ) . "\r\n" . $this->headers($response) - : 'NULL'; - break; - case 'req_body': - $result = $request->getBody(); - break; - case 'res_body': - $result = $response ? $response->getBody() : 'NULL'; - break; - case 'ts': - case 'date_iso_8601': - $result = gmdate('c'); - break; - case 'date_common_log': - $result = date('d/M/Y:H:i:s O'); - break; - case 'method': - $result = $request->getMethod(); - break; - case 'version': - $result = $request->getProtocolVersion(); - break; - case 'uri': - case 'url': - $result = $request->getUri(); - break; - case 'target': - $result = $request->getRequestTarget(); - break; - case 'req_version': - $result = $request->getProtocolVersion(); - break; - case 'res_version': - $result = $response - ? $response->getProtocolVersion() - : 'NULL'; - break; - case 'host': - $result = $request->getHeaderLine('Host'); - break; - case 'hostname': - $result = gethostname(); - break; - case 'code': - $result = $response ? $response->getStatusCode() : 'NULL'; - break; - case 'phrase': - $result = $response ? $response->getReasonPhrase() : 'NULL'; - break; - case 'error': - $result = $error ? $error->getMessage() : 'NULL'; - break; - default: - // handle prefixed dynamic headers - if (strpos($matches[1], 'req_header_') === 0) { - $result = $request->getHeaderLine(substr($matches[1], 11)); - } elseif (strpos($matches[1], 'res_header_') === 0) { - $result = $response - ? $response->getHeaderLine(substr($matches[1], 11)) - : 'NULL'; - } - } - - $cache[$matches[1]] = $result; - return $result; - }, - $this->template - ); - } - - /** - * Get headers from message as string - * - * @return string - */ - private function headers(MessageInterface $message) - { - $result = ''; - foreach ($message->getHeaders() as $name => $values) { - $result .= $name . ': ' . implode(', ', $values) . "\r\n"; - } - - return trim($result); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Middleware.php b/vendor/guzzlehttp/guzzle/src/Middleware.php deleted file mode 100644 index bffc197..0000000 --- a/vendor/guzzlehttp/guzzle/src/Middleware.php +++ /dev/null @@ -1,254 +0,0 @@ -withCookieHeader($request); - return $handler($request, $options) - ->then( - function ($response) use ($cookieJar, $request) { - $cookieJar->extractCookies($request, $response); - return $response; - } - ); - }; - }; - } - - /** - * Middleware that throws exceptions for 4xx or 5xx responses when the - * "http_error" request option is set to true. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function httpErrors() - { - return function (callable $handler) { - return function ($request, array $options) use ($handler) { - if (empty($options['http_errors'])) { - return $handler($request, $options); - } - return $handler($request, $options)->then( - function (ResponseInterface $response) use ($request) { - $code = $response->getStatusCode(); - if ($code < 400) { - return $response; - } - throw RequestException::create($request, $response); - } - ); - }; - }; - } - - /** - * Middleware that pushes history data to an ArrayAccess container. - * - * @param array|\ArrayAccess $container Container to hold the history (by reference). - * - * @return callable Returns a function that accepts the next handler. - * @throws \InvalidArgumentException if container is not an array or ArrayAccess. - */ - public static function history(&$container) - { - if (!is_array($container) && !$container instanceof \ArrayAccess) { - throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess'); - } - - return function (callable $handler) use (&$container) { - return function ($request, array $options) use ($handler, &$container) { - return $handler($request, $options)->then( - function ($value) use ($request, &$container, $options) { - $container[] = [ - 'request' => $request, - 'response' => $value, - 'error' => null, - 'options' => $options - ]; - return $value; - }, - function ($reason) use ($request, &$container, $options) { - $container[] = [ - 'request' => $request, - 'response' => null, - 'error' => $reason, - 'options' => $options - ]; - return \GuzzleHttp\Promise\rejection_for($reason); - } - ); - }; - }; - } - - /** - * Middleware that invokes a callback before and after sending a request. - * - * The provided listener cannot modify or alter the response. It simply - * "taps" into the chain to be notified before returning the promise. The - * before listener accepts a request and options array, and the after - * listener accepts a request, options array, and response promise. - * - * @param callable $before Function to invoke before forwarding the request. - * @param callable $after Function invoked after forwarding. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function tap(callable $before = null, callable $after = null) - { - return function (callable $handler) use ($before, $after) { - return function ($request, array $options) use ($handler, $before, $after) { - if ($before) { - $before($request, $options); - } - $response = $handler($request, $options); - if ($after) { - $after($request, $options, $response); - } - return $response; - }; - }; - } - - /** - * Middleware that handles request redirects. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function redirect() - { - return function (callable $handler) { - return new RedirectMiddleware($handler); - }; - } - - /** - * Middleware that retries requests based on the boolean result of - * invoking the provided "decider" function. - * - * If no delay function is provided, a simple implementation of exponential - * backoff will be utilized. - * - * @param callable $decider Function that accepts the number of retries, - * a request, [response], and [exception] and - * returns true if the request is to be retried. - * @param callable $delay Function that accepts the number of retries and - * returns the number of milliseconds to delay. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function retry(callable $decider, callable $delay = null) - { - return function (callable $handler) use ($decider, $delay) { - return new RetryMiddleware($decider, $handler, $delay); - }; - } - - /** - * Middleware that logs requests, responses, and errors using a message - * formatter. - * - * @param LoggerInterface $logger Logs messages. - * @param MessageFormatter $formatter Formatter used to create message strings. - * @param string $logLevel Level at which to log requests. - * - * @return callable Returns a function that accepts the next handler. - */ - public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */) - { - return function (callable $handler) use ($logger, $formatter, $logLevel) { - return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) { - return $handler($request, $options)->then( - function ($response) use ($logger, $request, $formatter, $logLevel) { - $message = $formatter->format($request, $response); - $logger->log($logLevel, $message); - return $response; - }, - function ($reason) use ($logger, $request, $formatter) { - $response = $reason instanceof RequestException - ? $reason->getResponse() - : null; - $message = $formatter->format($request, $response, $reason); - $logger->notice($message); - return \GuzzleHttp\Promise\rejection_for($reason); - } - ); - }; - }; - } - - /** - * This middleware adds a default content-type if possible, a default - * content-length or transfer-encoding header, and the expect header. - * - * @return callable - */ - public static function prepareBody() - { - return function (callable $handler) { - return new PrepareBodyMiddleware($handler); - }; - } - - /** - * Middleware that applies a map function to the request before passing to - * the next handler. - * - * @param callable $fn Function that accepts a RequestInterface and returns - * a RequestInterface. - * @return callable - */ - public static function mapRequest(callable $fn) - { - return function (callable $handler) use ($fn) { - return function ($request, array $options) use ($handler, $fn) { - return $handler($fn($request), $options); - }; - }; - } - - /** - * Middleware that applies a map function to the resolved promise's - * response. - * - * @param callable $fn Function that accepts a ResponseInterface and - * returns a ResponseInterface. - * @return callable - */ - public static function mapResponse(callable $fn) - { - return function (callable $handler) use ($fn) { - return function ($request, array $options) use ($handler, $fn) { - return $handler($request, $options)->then($fn); - }; - }; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Pool.php b/vendor/guzzlehttp/guzzle/src/Pool.php deleted file mode 100644 index 5838db4..0000000 --- a/vendor/guzzlehttp/guzzle/src/Pool.php +++ /dev/null @@ -1,134 +0,0 @@ - $rfn) { - if ($rfn instanceof RequestInterface) { - yield $key => $client->sendAsync($rfn, $opts); - } elseif (is_callable($rfn)) { - yield $key => $rfn($opts); - } else { - throw new \InvalidArgumentException('Each value yielded by ' - . 'the iterator must be a Psr7\Http\Message\RequestInterface ' - . 'or a callable that returns a promise that fulfills ' - . 'with a Psr7\Message\Http\ResponseInterface object.'); - } - } - }; - - $this->each = new EachPromise($requests(), $config); - } - - /** - * Get promise - * - * @return PromiseInterface - */ - public function promise() - { - return $this->each->promise(); - } - - /** - * Sends multiple requests concurrently and returns an array of responses - * and exceptions that uses the same ordering as the provided requests. - * - * IMPORTANT: This method keeps every request and response in memory, and - * as such, is NOT recommended when sending a large number or an - * indeterminate number of requests concurrently. - * - * @param ClientInterface $client Client used to send the requests - * @param array|\Iterator $requests Requests to send concurrently. - * @param array $options Passes through the options available in - * {@see GuzzleHttp\Pool::__construct} - * - * @return array Returns an array containing the response or an exception - * in the same order that the requests were sent. - * @throws \InvalidArgumentException if the event format is incorrect. - */ - public static function batch( - ClientInterface $client, - $requests, - array $options = [] - ) { - $res = []; - self::cmpCallback($options, 'fulfilled', $res); - self::cmpCallback($options, 'rejected', $res); - $pool = new static($client, $requests, $options); - $pool->promise()->wait(); - ksort($res); - - return $res; - } - - /** - * Execute callback(s) - * - * @return void - */ - private static function cmpCallback(array &$options, $name, array &$results) - { - if (!isset($options[$name])) { - $options[$name] = function ($v, $k) use (&$results) { - $results[$k] = $v; - }; - } else { - $currentFn = $options[$name]; - $options[$name] = function ($v, $k) use (&$results, $currentFn) { - $currentFn($v, $k); - $results[$k] = $v; - }; - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php b/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php deleted file mode 100644 index 568a1e9..0000000 --- a/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +++ /dev/null @@ -1,111 +0,0 @@ -nextHandler = $nextHandler; - } - - /** - * @param RequestInterface $request - * @param array $options - * - * @return PromiseInterface - */ - public function __invoke(RequestInterface $request, array $options) - { - $fn = $this->nextHandler; - - // Don't do anything if the request has no body. - if ($request->getBody()->getSize() === 0) { - return $fn($request, $options); - } - - $modify = []; - - // Add a default content-type if possible. - if (!$request->hasHeader('Content-Type')) { - if ($uri = $request->getBody()->getMetadata('uri')) { - if ($type = Psr7\mimetype_from_filename($uri)) { - $modify['set_headers']['Content-Type'] = $type; - } - } - } - - // Add a default content-length or transfer-encoding header. - if (!$request->hasHeader('Content-Length') - && !$request->hasHeader('Transfer-Encoding') - ) { - $size = $request->getBody()->getSize(); - if ($size !== null) { - $modify['set_headers']['Content-Length'] = $size; - } else { - $modify['set_headers']['Transfer-Encoding'] = 'chunked'; - } - } - - // Add the expect header if needed. - $this->addExpectHeader($request, $options, $modify); - - return $fn(Psr7\modify_request($request, $modify), $options); - } - - /** - * Add expect header - * - * @return void - */ - private function addExpectHeader( - RequestInterface $request, - array $options, - array &$modify - ) { - // Determine if the Expect header should be used - if ($request->hasHeader('Expect')) { - return; - } - - $expect = isset($options['expect']) ? $options['expect'] : null; - - // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0 - if ($expect === false || $request->getProtocolVersion() < 1.1) { - return; - } - - // The expect header is unconditionally enabled - if ($expect === true) { - $modify['set_headers']['Expect'] = '100-Continue'; - return; - } - - // By default, send the expect header when the payload is > 1mb - if ($expect === null) { - $expect = 1048576; - } - - // Always add if the body cannot be rewound, the size cannot be - // determined, or the size is greater than the cutoff threshold - $body = $request->getBody(); - $size = $body->getSize(); - - if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { - $modify['set_headers']['Expect'] = '100-Continue'; - } - } -} diff --git a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php b/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php deleted file mode 100644 index e4644b7..0000000 --- a/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +++ /dev/null @@ -1,255 +0,0 @@ - 5, - 'protocols' => ['http', 'https'], - 'strict' => false, - 'referer' => false, - 'track_redirects' => false, - ]; - - /** @var callable */ - private $nextHandler; - - /** - * @param callable $nextHandler Next handler to invoke. - */ - public function __construct(callable $nextHandler) - { - $this->nextHandler = $nextHandler; - } - - /** - * @param RequestInterface $request - * @param array $options - * - * @return PromiseInterface - */ - public function __invoke(RequestInterface $request, array $options) - { - $fn = $this->nextHandler; - - if (empty($options['allow_redirects'])) { - return $fn($request, $options); - } - - if ($options['allow_redirects'] === true) { - $options['allow_redirects'] = self::$defaultSettings; - } elseif (!is_array($options['allow_redirects'])) { - throw new \InvalidArgumentException('allow_redirects must be true, false, or array'); - } else { - // Merge the default settings with the provided settings - $options['allow_redirects'] += self::$defaultSettings; - } - - if (empty($options['allow_redirects']['max'])) { - return $fn($request, $options); - } - - return $fn($request, $options) - ->then(function (ResponseInterface $response) use ($request, $options) { - return $this->checkRedirect($request, $options, $response); - }); - } - - /** - * @param RequestInterface $request - * @param array $options - * @param ResponseInterface $response - * - * @return ResponseInterface|PromiseInterface - */ - public function checkRedirect( - RequestInterface $request, - array $options, - ResponseInterface $response - ) { - if (substr($response->getStatusCode(), 0, 1) != '3' - || !$response->hasHeader('Location') - ) { - return $response; - } - - $this->guardMax($request, $options); - $nextRequest = $this->modifyRequest($request, $options, $response); - - if (isset($options['allow_redirects']['on_redirect'])) { - call_user_func( - $options['allow_redirects']['on_redirect'], - $request, - $response, - $nextRequest->getUri() - ); - } - - /** @var PromiseInterface|ResponseInterface $promise */ - $promise = $this($nextRequest, $options); - - // Add headers to be able to track history of redirects. - if (!empty($options['allow_redirects']['track_redirects'])) { - return $this->withTracking( - $promise, - (string) $nextRequest->getUri(), - $response->getStatusCode() - ); - } - - return $promise; - } - - /** - * Enable tracking on promise. - * - * @return PromiseInterface - */ - private function withTracking(PromiseInterface $promise, $uri, $statusCode) - { - return $promise->then( - function (ResponseInterface $response) use ($uri, $statusCode) { - // Note that we are pushing to the front of the list as this - // would be an earlier response than what is currently present - // in the history header. - $historyHeader = $response->getHeader(self::HISTORY_HEADER); - $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER); - array_unshift($historyHeader, $uri); - array_unshift($statusHeader, $statusCode); - return $response->withHeader(self::HISTORY_HEADER, $historyHeader) - ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader); - } - ); - } - - /** - * Check for too many redirects - * - * @return void - * - * @throws TooManyRedirectsException Too many redirects. - */ - private function guardMax(RequestInterface $request, array &$options) - { - $current = isset($options['__redirect_count']) - ? $options['__redirect_count'] - : 0; - $options['__redirect_count'] = $current + 1; - $max = $options['allow_redirects']['max']; - - if ($options['__redirect_count'] > $max) { - throw new TooManyRedirectsException( - "Will not follow more than {$max} redirects", - $request - ); - } - } - - /** - * @param RequestInterface $request - * @param array $options - * @param ResponseInterface $response - * - * @return RequestInterface - */ - public function modifyRequest( - RequestInterface $request, - array $options, - ResponseInterface $response - ) { - // Request modifications to apply. - $modify = []; - $protocols = $options['allow_redirects']['protocols']; - - // Use a GET request if this is an entity enclosing request and we are - // not forcing RFC compliance, but rather emulating what all browsers - // would do. - $statusCode = $response->getStatusCode(); - if ($statusCode == 303 || - ($statusCode <= 302 && !$options['allow_redirects']['strict']) - ) { - $modify['method'] = 'GET'; - $modify['body'] = ''; - } - - $uri = $this->redirectUri($request, $response, $protocols); - if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) { - $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion']; - $uri = Utils::idnUriConvert($uri, $idnOptions); - } - - $modify['uri'] = $uri; - Psr7\rewind_body($request); - - // Add the Referer header if it is told to do so and only - // add the header if we are not redirecting from https to http. - if ($options['allow_redirects']['referer'] - && $modify['uri']->getScheme() === $request->getUri()->getScheme() - ) { - $uri = $request->getUri()->withUserInfo(''); - $modify['set_headers']['Referer'] = (string) $uri; - } else { - $modify['remove_headers'][] = 'Referer'; - } - - // Remove Authorization header if host is different. - if ($request->getUri()->getHost() !== $modify['uri']->getHost()) { - $modify['remove_headers'][] = 'Authorization'; - } - - return Psr7\modify_request($request, $modify); - } - - /** - * Set the appropriate URL on the request based on the location header - * - * @param RequestInterface $request - * @param ResponseInterface $response - * @param array $protocols - * - * @return UriInterface - */ - private function redirectUri( - RequestInterface $request, - ResponseInterface $response, - array $protocols - ) { - $location = Psr7\UriResolver::resolve( - $request->getUri(), - new Psr7\Uri($response->getHeaderLine('Location')) - ); - - // Ensure that the redirect URI is allowed based on the protocols. - if (!in_array($location->getScheme(), $protocols)) { - throw new BadResponseException( - sprintf( - 'Redirect URI, %s, does not use one of the allowed redirect protocols: %s', - $location, - implode(', ', $protocols) - ), - $request, - $response - ); - } - - return $location; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/RequestOptions.php b/vendor/guzzlehttp/guzzle/src/RequestOptions.php deleted file mode 100644 index 355f658..0000000 --- a/vendor/guzzlehttp/guzzle/src/RequestOptions.php +++ /dev/null @@ -1,263 +0,0 @@ -decider = $decider; - $this->nextHandler = $nextHandler; - $this->delay = $delay ?: __CLASS__ . '::exponentialDelay'; - } - - /** - * Default exponential backoff delay function. - * - * @param int $retries - * - * @return int milliseconds. - */ - public static function exponentialDelay($retries) - { - return (int) pow(2, $retries - 1) * 1000; - } - - /** - * @param RequestInterface $request - * @param array $options - * - * @return PromiseInterface - */ - public function __invoke(RequestInterface $request, array $options) - { - if (!isset($options['retries'])) { - $options['retries'] = 0; - } - - $fn = $this->nextHandler; - return $fn($request, $options) - ->then( - $this->onFulfilled($request, $options), - $this->onRejected($request, $options) - ); - } - - /** - * Execute fulfilled closure - * - * @return mixed - */ - private function onFulfilled(RequestInterface $req, array $options) - { - return function ($value) use ($req, $options) { - if (!call_user_func( - $this->decider, - $options['retries'], - $req, - $value, - null - )) { - return $value; - } - return $this->doRetry($req, $options, $value); - }; - } - - /** - * Execute rejected closure - * - * @return callable - */ - private function onRejected(RequestInterface $req, array $options) - { - return function ($reason) use ($req, $options) { - if (!call_user_func( - $this->decider, - $options['retries'], - $req, - null, - $reason - )) { - return \GuzzleHttp\Promise\rejection_for($reason); - } - return $this->doRetry($req, $options); - }; - } - - /** - * @return self - */ - private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null) - { - $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response); - - return $this($request, $options); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/TransferStats.php b/vendor/guzzlehttp/guzzle/src/TransferStats.php deleted file mode 100644 index 87fb3c0..0000000 --- a/vendor/guzzlehttp/guzzle/src/TransferStats.php +++ /dev/null @@ -1,126 +0,0 @@ -request = $request; - $this->response = $response; - $this->transferTime = $transferTime; - $this->handlerErrorData = $handlerErrorData; - $this->handlerStats = $handlerStats; - } - - /** - * @return RequestInterface - */ - public function getRequest() - { - return $this->request; - } - - /** - * Returns the response that was received (if any). - * - * @return ResponseInterface|null - */ - public function getResponse() - { - return $this->response; - } - - /** - * Returns true if a response was received. - * - * @return bool - */ - public function hasResponse() - { - return $this->response !== null; - } - - /** - * Gets handler specific error data. - * - * This might be an exception, a integer representing an error code, or - * anything else. Relying on this value assumes that you know what handler - * you are using. - * - * @return mixed - */ - public function getHandlerErrorData() - { - return $this->handlerErrorData; - } - - /** - * Get the effective URI the request was sent to. - * - * @return UriInterface - */ - public function getEffectiveUri() - { - return $this->request->getUri(); - } - - /** - * Get the estimated time the request was being transferred by the handler. - * - * @return float|null Time in seconds. - */ - public function getTransferTime() - { - return $this->transferTime; - } - - /** - * Gets an array of all of the handler specific transfer data. - * - * @return array - */ - public function getHandlerStats() - { - return $this->handlerStats; - } - - /** - * Get a specific handler statistic from the handler by name. - * - * @param string $stat Handler specific transfer stat to retrieve. - * - * @return mixed|null - */ - public function getHandlerStat($stat) - { - return isset($this->handlerStats[$stat]) - ? $this->handlerStats[$stat] - : null; - } -} diff --git a/vendor/guzzlehttp/guzzle/src/UriTemplate.php b/vendor/guzzlehttp/guzzle/src/UriTemplate.php deleted file mode 100644 index 96dcfd0..0000000 --- a/vendor/guzzlehttp/guzzle/src/UriTemplate.php +++ /dev/null @@ -1,237 +0,0 @@ - ['prefix' => '', 'joiner' => ',', 'query' => false], - '+' => ['prefix' => '', 'joiner' => ',', 'query' => false], - '#' => ['prefix' => '#', 'joiner' => ',', 'query' => false], - '.' => ['prefix' => '.', 'joiner' => '.', 'query' => false], - '/' => ['prefix' => '/', 'joiner' => '/', 'query' => false], - ';' => ['prefix' => ';', 'joiner' => ';', 'query' => true], - '?' => ['prefix' => '?', 'joiner' => '&', 'query' => true], - '&' => ['prefix' => '&', 'joiner' => '&', 'query' => true] - ]; - - /** @var array Delimiters */ - private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$', - '&', '\'', '(', ')', '*', '+', ',', ';', '=']; - - /** @var array Percent encoded delimiters */ - private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D', - '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C', - '%3B', '%3D']; - - public function expand($template, array $variables) - { - if (false === strpos($template, '{')) { - return $template; - } - - $this->template = $template; - $this->variables = $variables; - - return preg_replace_callback( - '/\{([^\}]+)\}/', - [$this, 'expandMatch'], - $this->template - ); - } - - /** - * Parse an expression into parts - * - * @param string $expression Expression to parse - * - * @return array Returns an associative array of parts - */ - private function parseExpression($expression) - { - $result = []; - - if (isset(self::$operatorHash[$expression[0]])) { - $result['operator'] = $expression[0]; - $expression = substr($expression, 1); - } else { - $result['operator'] = ''; - } - - foreach (explode(',', $expression) as $value) { - $value = trim($value); - $varspec = []; - if ($colonPos = strpos($value, ':')) { - $varspec['value'] = substr($value, 0, $colonPos); - $varspec['modifier'] = ':'; - $varspec['position'] = (int) substr($value, $colonPos + 1); - } elseif (substr($value, -1) === '*') { - $varspec['modifier'] = '*'; - $varspec['value'] = substr($value, 0, -1); - } else { - $varspec['value'] = (string) $value; - $varspec['modifier'] = ''; - } - $result['values'][] = $varspec; - } - - return $result; - } - - /** - * Process an expansion - * - * @param array $matches Matches met in the preg_replace_callback - * - * @return string Returns the replacement string - */ - private function expandMatch(array $matches) - { - static $rfc1738to3986 = ['+' => '%20', '%7e' => '~']; - - $replacements = []; - $parsed = self::parseExpression($matches[1]); - $prefix = self::$operatorHash[$parsed['operator']]['prefix']; - $joiner = self::$operatorHash[$parsed['operator']]['joiner']; - $useQuery = self::$operatorHash[$parsed['operator']]['query']; - - foreach ($parsed['values'] as $value) { - if (!isset($this->variables[$value['value']])) { - continue; - } - - $variable = $this->variables[$value['value']]; - $actuallyUseQuery = $useQuery; - $expanded = ''; - - if (is_array($variable)) { - $isAssoc = $this->isAssoc($variable); - $kvp = []; - foreach ($variable as $key => $var) { - if ($isAssoc) { - $key = rawurlencode($key); - $isNestedArray = is_array($var); - } else { - $isNestedArray = false; - } - - if (!$isNestedArray) { - $var = rawurlencode($var); - if ($parsed['operator'] === '+' || - $parsed['operator'] === '#' - ) { - $var = $this->decodeReserved($var); - } - } - - if ($value['modifier'] === '*') { - if ($isAssoc) { - if ($isNestedArray) { - // Nested arrays must allow for deeply nested - // structures. - $var = strtr( - http_build_query([$key => $var]), - $rfc1738to3986 - ); - } else { - $var = $key . '=' . $var; - } - } elseif ($key > 0 && $actuallyUseQuery) { - $var = $value['value'] . '=' . $var; - } - } - - $kvp[$key] = $var; - } - - if (empty($variable)) { - $actuallyUseQuery = false; - } elseif ($value['modifier'] === '*') { - $expanded = implode($joiner, $kvp); - if ($isAssoc) { - // Don't prepend the value name when using the explode - // modifier with an associative array. - $actuallyUseQuery = false; - } - } else { - if ($isAssoc) { - // When an associative array is encountered and the - // explode modifier is not set, then the result must be - // a comma separated list of keys followed by their - // respective values. - foreach ($kvp as $k => &$v) { - $v = $k . ',' . $v; - } - } - $expanded = implode(',', $kvp); - } - } else { - if ($value['modifier'] === ':') { - $variable = substr($variable, 0, $value['position']); - } - $expanded = rawurlencode($variable); - if ($parsed['operator'] === '+' || $parsed['operator'] === '#') { - $expanded = $this->decodeReserved($expanded); - } - } - - if ($actuallyUseQuery) { - if (!$expanded && $joiner !== '&') { - $expanded = $value['value']; - } else { - $expanded = $value['value'] . '=' . $expanded; - } - } - - $replacements[] = $expanded; - } - - $ret = implode($joiner, $replacements); - if ($ret && $prefix) { - return $prefix . $ret; - } - - return $ret; - } - - /** - * Determines if an array is associative. - * - * This makes the assumption that input arrays are sequences or hashes. - * This assumption is a tradeoff for accuracy in favor of speed, but it - * should work in almost every case where input is supplied for a URI - * template. - * - * @param array $array Array to check - * - * @return bool - */ - private function isAssoc(array $array) - { - return $array && array_keys($array)[0] !== 0; - } - - /** - * Removes percent encoding on reserved characters (used with + and # - * modifiers). - * - * @param string $string String to fix - * - * @return string - */ - private function decodeReserved($string) - { - return str_replace(self::$delimsPct, self::$delims, $string); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/Utils.php b/vendor/guzzlehttp/guzzle/src/Utils.php deleted file mode 100644 index c698acb..0000000 --- a/vendor/guzzlehttp/guzzle/src/Utils.php +++ /dev/null @@ -1,92 +0,0 @@ -getHost()) { - $asciiHost = self::idnToAsci($uri->getHost(), $options, $info); - if ($asciiHost === false) { - $errorBitSet = isset($info['errors']) ? $info['errors'] : 0; - - $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) { - return substr($name, 0, 11) === 'IDNA_ERROR_'; - }); - - $errors = []; - foreach ($errorConstants as $errorConstant) { - if ($errorBitSet & constant($errorConstant)) { - $errors[] = $errorConstant; - } - } - - $errorMessage = 'IDN conversion failed'; - if ($errors) { - $errorMessage .= ' (errors: ' . implode(', ', $errors) . ')'; - } - - throw new InvalidArgumentException($errorMessage); - } else { - if ($uri->getHost() !== $asciiHost) { - // Replace URI only if the ASCII version is different - $uri = $uri->withHost($asciiHost); - } - } - } - - return $uri; - } - - /** - * @param string $domain - * @param int $options - * @param array $info - * - * @return string|false - */ - private static function idnToAsci($domain, $options, &$info = []) - { - if (\preg_match('%^[ -~]+$%', $domain) === 1) { - return $domain; - } - - if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) { - return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info); - } - - /* - * The Idn class is marked as @internal. Verify that class and method exists. - */ - if (method_exists(Idn::class, 'idn_to_ascii')) { - return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info); - } - - throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old'); - } -} diff --git a/vendor/guzzlehttp/guzzle/src/functions.php b/vendor/guzzlehttp/guzzle/src/functions.php deleted file mode 100644 index c2afd8c..0000000 --- a/vendor/guzzlehttp/guzzle/src/functions.php +++ /dev/null @@ -1,334 +0,0 @@ -expand($template, $variables); -} - -/** - * Debug function used to describe the provided value type and class. - * - * @param mixed $input - * - * @return string Returns a string containing the type of the variable and - * if a class is provided, the class name. - */ -function describe_type($input) -{ - switch (gettype($input)) { - case 'object': - return 'object(' . get_class($input) . ')'; - case 'array': - return 'array(' . count($input) . ')'; - default: - ob_start(); - var_dump($input); - // normalize float vs double - return str_replace('double(', 'float(', rtrim(ob_get_clean())); - } -} - -/** - * Parses an array of header lines into an associative array of headers. - * - * @param iterable $lines Header lines array of strings in the following - * format: "Name: Value" - * @return array - */ -function headers_from_lines($lines) -{ - $headers = []; - - foreach ($lines as $line) { - $parts = explode(':', $line, 2); - $headers[trim($parts[0])][] = isset($parts[1]) - ? trim($parts[1]) - : null; - } - - return $headers; -} - -/** - * Returns a debug stream based on the provided variable. - * - * @param mixed $value Optional value - * - * @return resource - */ -function debug_resource($value = null) -{ - if (is_resource($value)) { - return $value; - } elseif (defined('STDOUT')) { - return STDOUT; - } - - return fopen('php://output', 'w'); -} - -/** - * Chooses and creates a default handler to use based on the environment. - * - * The returned handler is not wrapped by any default middlewares. - * - * @return callable Returns the best handler for the given system. - * @throws \RuntimeException if no viable Handler is available. - */ -function choose_handler() -{ - $handler = null; - if (function_exists('curl_multi_exec') && function_exists('curl_exec')) { - $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler()); - } elseif (function_exists('curl_exec')) { - $handler = new CurlHandler(); - } elseif (function_exists('curl_multi_exec')) { - $handler = new CurlMultiHandler(); - } - - if (ini_get('allow_url_fopen')) { - $handler = $handler - ? Proxy::wrapStreaming($handler, new StreamHandler()) - : new StreamHandler(); - } elseif (!$handler) { - throw new \RuntimeException('GuzzleHttp requires cURL, the ' - . 'allow_url_fopen ini setting, or a custom HTTP handler.'); - } - - return $handler; -} - -/** - * Get the default User-Agent string to use with Guzzle - * - * @return string - */ -function default_user_agent() -{ - static $defaultAgent = ''; - - if (!$defaultAgent) { - $defaultAgent = 'GuzzleHttp/' . Client::VERSION; - if (extension_loaded('curl') && function_exists('curl_version')) { - $defaultAgent .= ' curl/' . \curl_version()['version']; - } - $defaultAgent .= ' PHP/' . PHP_VERSION; - } - - return $defaultAgent; -} - -/** - * Returns the default cacert bundle for the current system. - * - * First, the openssl.cafile and curl.cainfo php.ini settings are checked. - * If those settings are not configured, then the common locations for - * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X - * and Windows are checked. If any of these file locations are found on - * disk, they will be utilized. - * - * Note: the result of this function is cached for subsequent calls. - * - * @return string - * @throws \RuntimeException if no bundle can be found. - */ -function default_ca_bundle() -{ - static $cached = null; - static $cafiles = [ - // Red Hat, CentOS, Fedora (provided by the ca-certificates package) - '/etc/pki/tls/certs/ca-bundle.crt', - // Ubuntu, Debian (provided by the ca-certificates package) - '/etc/ssl/certs/ca-certificates.crt', - // FreeBSD (provided by the ca_root_nss package) - '/usr/local/share/certs/ca-root-nss.crt', - // SLES 12 (provided by the ca-certificates package) - '/var/lib/ca-certificates/ca-bundle.pem', - // OS X provided by homebrew (using the default path) - '/usr/local/etc/openssl/cert.pem', - // Google app engine - '/etc/ca-certificates.crt', - // Windows? - 'C:\\windows\\system32\\curl-ca-bundle.crt', - 'C:\\windows\\curl-ca-bundle.crt', - ]; - - if ($cached) { - return $cached; - } - - if ($ca = ini_get('openssl.cafile')) { - return $cached = $ca; - } - - if ($ca = ini_get('curl.cainfo')) { - return $cached = $ca; - } - - foreach ($cafiles as $filename) { - if (file_exists($filename)) { - return $cached = $filename; - } - } - - throw new \RuntimeException( - <<< EOT -No system CA bundle could be found in any of the the common system locations. -PHP versions earlier than 5.6 are not properly configured to use the system's -CA bundle by default. In order to verify peer certificates, you will need to -supply the path on disk to a certificate bundle to the 'verify' request -option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not -need a specific certificate bundle, then Mozilla provides a commonly used CA -bundle which can be downloaded here (provided by the maintainer of cURL): -https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once -you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP -ini setting to point to the path to the file, allowing you to omit the 'verify' -request option. See http://curl.haxx.se/docs/sslcerts.html for more -information. -EOT - ); -} - -/** - * Creates an associative array of lowercase header names to the actual - * header casing. - * - * @param array $headers - * - * @return array - */ -function normalize_header_keys(array $headers) -{ - $result = []; - foreach (array_keys($headers) as $key) { - $result[strtolower($key)] = $key; - } - - return $result; -} - -/** - * Returns true if the provided host matches any of the no proxy areas. - * - * This method will strip a port from the host if it is present. Each pattern - * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a - * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" == - * "baz.foo.com", but ".foo.com" != "foo.com"). - * - * Areas are matched in the following cases: - * 1. "*" (without quotes) always matches any hosts. - * 2. An exact match. - * 3. The area starts with "." and the area is the last part of the host. e.g. - * '.mit.edu' will match any host that ends with '.mit.edu'. - * - * @param string $host Host to check against the patterns. - * @param array $noProxyArray An array of host patterns. - * - * @return bool - */ -function is_host_in_noproxy($host, array $noProxyArray) -{ - if (strlen($host) === 0) { - throw new \InvalidArgumentException('Empty host provided'); - } - - // Strip port if present. - if (strpos($host, ':')) { - $host = explode($host, ':', 2)[0]; - } - - foreach ($noProxyArray as $area) { - // Always match on wildcards. - if ($area === '*') { - return true; - } elseif (empty($area)) { - // Don't match on empty values. - continue; - } elseif ($area === $host) { - // Exact matches. - return true; - } else { - // Special match if the area when prefixed with ".". Remove any - // existing leading "." and add a new leading ".". - $area = '.' . ltrim($area, '.'); - if (substr($host, -(strlen($area))) === $area) { - return true; - } - } - } - - return false; -} - -/** - * Wrapper for json_decode that throws when an error occurs. - * - * @param string $json JSON data to parse - * @param bool $assoc When true, returned objects will be converted - * into associative arrays. - * @param int $depth User specified recursion depth. - * @param int $options Bitmask of JSON decode options. - * - * @return mixed - * @throws Exception\InvalidArgumentException if the JSON cannot be decoded. - * @link http://www.php.net/manual/en/function.json-decode.php - */ -function json_decode($json, $assoc = false, $depth = 512, $options = 0) -{ - $data = \json_decode($json, $assoc, $depth, $options); - if (JSON_ERROR_NONE !== json_last_error()) { - throw new Exception\InvalidArgumentException( - 'json_decode error: ' . json_last_error_msg() - ); - } - - return $data; -} - -/** - * Wrapper for JSON encoding that throws when an error occurs. - * - * @param mixed $value The value being encoded - * @param int $options JSON encode option bitmask - * @param int $depth Set the maximum depth. Must be greater than zero. - * - * @return string - * @throws Exception\InvalidArgumentException if the JSON cannot be encoded. - * @link http://www.php.net/manual/en/function.json-encode.php - */ -function json_encode($value, $options = 0, $depth = 512) -{ - $json = \json_encode($value, $options, $depth); - if (JSON_ERROR_NONE !== json_last_error()) { - throw new Exception\InvalidArgumentException( - 'json_encode error: ' . json_last_error_msg() - ); - } - - return $json; -} diff --git a/vendor/guzzlehttp/guzzle/src/functions_include.php b/vendor/guzzlehttp/guzzle/src/functions_include.php deleted file mode 100644 index a93393a..0000000 --- a/vendor/guzzlehttp/guzzle/src/functions_include.php +++ /dev/null @@ -1,6 +0,0 @@ - - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/guzzlehttp/promises/Makefile b/vendor/guzzlehttp/promises/Makefile deleted file mode 100644 index 8d5b3ef..0000000 --- a/vendor/guzzlehttp/promises/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -all: clean test - -test: - vendor/bin/phpunit - -coverage: - vendor/bin/phpunit --coverage-html=artifacts/coverage - -view-coverage: - open artifacts/coverage/index.html - -clean: - rm -rf artifacts/* diff --git a/vendor/guzzlehttp/promises/README.md b/vendor/guzzlehttp/promises/README.md deleted file mode 100644 index 7b607e2..0000000 --- a/vendor/guzzlehttp/promises/README.md +++ /dev/null @@ -1,504 +0,0 @@ -# Guzzle Promises - -[Promises/A+](https://promisesaplus.com/) implementation that handles promise -chaining and resolution iteratively, allowing for "infinite" promise chaining -while keeping the stack size constant. Read [this blog post](https://blog.domenic.me/youre-missing-the-point-of-promises/) -for a general introduction to promises. - -- [Features](#features) -- [Quick start](#quick-start) -- [Synchronous wait](#synchronous-wait) -- [Cancellation](#cancellation) -- [API](#api) - - [Promise](#promise) - - [FulfilledPromise](#fulfilledpromise) - - [RejectedPromise](#rejectedpromise) -- [Promise interop](#promise-interop) -- [Implementation notes](#implementation-notes) - - -# Features - -- [Promises/A+](https://promisesaplus.com/) implementation. -- Promise resolution and chaining is handled iteratively, allowing for - "infinite" promise chaining. -- Promises have a synchronous `wait` method. -- Promises can be cancelled. -- Works with any object that has a `then` function. -- C# style async/await coroutine promises using - `GuzzleHttp\Promise\coroutine()`. - - -# Quick start - -A *promise* represents the eventual result of an asynchronous operation. The -primary way of interacting with a promise is through its `then` method, which -registers callbacks to receive either a promise's eventual value or the reason -why the promise cannot be fulfilled. - - -## Callbacks - -Callbacks are registered with the `then` method by providing an optional -`$onFulfilled` followed by an optional `$onRejected` function. - - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise->then( - // $onFulfilled - function ($value) { - echo 'The promise was fulfilled.'; - }, - // $onRejected - function ($reason) { - echo 'The promise was rejected.'; - } -); -``` - -*Resolving* a promise means that you either fulfill a promise with a *value* or -reject a promise with a *reason*. Resolving a promises triggers callbacks -registered with the promises's `then` method. These callbacks are triggered -only once and in the order in which they were added. - - -## Resolving a promise - -Promises are fulfilled using the `resolve($value)` method. Resolving a promise -with any value other than a `GuzzleHttp\Promise\RejectedPromise` will trigger -all of the onFulfilled callbacks (resolving a promise with a rejected promise -will reject the promise and trigger the `$onRejected` callbacks). - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise - ->then(function ($value) { - // Return a value and don't break the chain - return "Hello, " . $value; - }) - // This then is executed after the first then and receives the value - // returned from the first then. - ->then(function ($value) { - echo $value; - }); - -// Resolving the promise triggers the $onFulfilled callbacks and outputs -// "Hello, reader". -$promise->resolve('reader.'); -``` - - -## Promise forwarding - -Promises can be chained one after the other. Each then in the chain is a new -promise. The return value of a promise is what's forwarded to the next -promise in the chain. Returning a promise in a `then` callback will cause the -subsequent promises in the chain to only be fulfilled when the returned promise -has been fulfilled. The next promise in the chain will be invoked with the -resolved value of the promise. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$nextPromise = new Promise(); - -$promise - ->then(function ($value) use ($nextPromise) { - echo $value; - return $nextPromise; - }) - ->then(function ($value) { - echo $value; - }); - -// Triggers the first callback and outputs "A" -$promise->resolve('A'); -// Triggers the second callback and outputs "B" -$nextPromise->resolve('B'); -``` - -## Promise rejection - -When a promise is rejected, the `$onRejected` callbacks are invoked with the -rejection reason. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise->then(null, function ($reason) { - echo $reason; -}); - -$promise->reject('Error!'); -// Outputs "Error!" -``` - -## Rejection forwarding - -If an exception is thrown in an `$onRejected` callback, subsequent -`$onRejected` callbacks are invoked with the thrown exception as the reason. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise(); -$promise->then(null, function ($reason) { - throw new \Exception($reason); -})->then(null, function ($reason) { - assert($reason->getMessage() === 'Error!'); -}); - -$promise->reject('Error!'); -``` - -You can also forward a rejection down the promise chain by returning a -`GuzzleHttp\Promise\RejectedPromise` in either an `$onFulfilled` or -`$onRejected` callback. - -```php -use GuzzleHttp\Promise\Promise; -use GuzzleHttp\Promise\RejectedPromise; - -$promise = new Promise(); -$promise->then(null, function ($reason) { - return new RejectedPromise($reason); -})->then(null, function ($reason) { - assert($reason === 'Error!'); -}); - -$promise->reject('Error!'); -``` - -If an exception is not thrown in a `$onRejected` callback and the callback -does not return a rejected promise, downstream `$onFulfilled` callbacks are -invoked using the value returned from the `$onRejected` callback. - -```php -use GuzzleHttp\Promise\Promise; -use GuzzleHttp\Promise\RejectedPromise; - -$promise = new Promise(); -$promise - ->then(null, function ($reason) { - return "It's ok"; - }) - ->then(function ($value) { - assert($value === "It's ok"); - }); - -$promise->reject('Error!'); -``` - -# Synchronous wait - -You can synchronously force promises to complete using a promise's `wait` -method. When creating a promise, you can provide a wait function that is used -to synchronously force a promise to complete. When a wait function is invoked -it is expected to deliver a value to the promise or reject the promise. If the -wait function does not deliver a value, then an exception is thrown. The wait -function provided to a promise constructor is invoked when the `wait` function -of the promise is called. - -```php -$promise = new Promise(function () use (&$promise) { - $promise->resolve('foo'); -}); - -// Calling wait will return the value of the promise. -echo $promise->wait(); // outputs "foo" -``` - -If an exception is encountered while invoking the wait function of a promise, -the promise is rejected with the exception and the exception is thrown. - -```php -$promise = new Promise(function () use (&$promise) { - throw new \Exception('foo'); -}); - -$promise->wait(); // throws the exception. -``` - -Calling `wait` on a promise that has been fulfilled will not trigger the wait -function. It will simply return the previously resolved value. - -```php -$promise = new Promise(function () { die('this is not called!'); }); -$promise->resolve('foo'); -echo $promise->wait(); // outputs "foo" -``` - -Calling `wait` on a promise that has been rejected will throw an exception. If -the rejection reason is an instance of `\Exception` the reason is thrown. -Otherwise, a `GuzzleHttp\Promise\RejectionException` is thrown and the reason -can be obtained by calling the `getReason` method of the exception. - -```php -$promise = new Promise(); -$promise->reject('foo'); -$promise->wait(); -``` - -> PHP Fatal error: Uncaught exception 'GuzzleHttp\Promise\RejectionException' with message 'The promise was rejected with value: foo' - - -## Unwrapping a promise - -When synchronously waiting on a promise, you are joining the state of the -promise into the current state of execution (i.e., return the value of the -promise if it was fulfilled or throw an exception if it was rejected). This is -called "unwrapping" the promise. Waiting on a promise will by default unwrap -the promise state. - -You can force a promise to resolve and *not* unwrap the state of the promise -by passing `false` to the first argument of the `wait` function: - -```php -$promise = new Promise(); -$promise->reject('foo'); -// This will not throw an exception. It simply ensures the promise has -// been resolved. -$promise->wait(false); -``` - -When unwrapping a promise, the resolved value of the promise will be waited -upon until the unwrapped value is not a promise. This means that if you resolve -promise A with a promise B and unwrap promise A, the value returned by the -wait function will be the value delivered to promise B. - -**Note**: when you do not unwrap the promise, no value is returned. - - -# Cancellation - -You can cancel a promise that has not yet been fulfilled using the `cancel()` -method of a promise. When creating a promise you can provide an optional -cancel function that when invoked cancels the action of computing a resolution -of the promise. - - -# API - - -## Promise - -When creating a promise object, you can provide an optional `$waitFn` and -`$cancelFn`. `$waitFn` is a function that is invoked with no arguments and is -expected to resolve the promise. `$cancelFn` is a function with no arguments -that is expected to cancel the computation of a promise. It is invoked when the -`cancel()` method of a promise is called. - -```php -use GuzzleHttp\Promise\Promise; - -$promise = new Promise( - function () use (&$promise) { - $promise->resolve('waited'); - }, - function () { - // do something that will cancel the promise computation (e.g., close - // a socket, cancel a database query, etc...) - } -); - -assert('waited' === $promise->wait()); -``` - -A promise has the following methods: - -- `then(callable $onFulfilled, callable $onRejected) : PromiseInterface` - - Appends fulfillment and rejection handlers to the promise, and returns a new promise resolving to the return value of the called handler. - -- `otherwise(callable $onRejected) : PromiseInterface` - - Appends a rejection handler callback to the promise, and returns a new promise resolving to the return value of the callback if it is called, or to its original fulfillment value if the promise is instead fulfilled. - -- `wait($unwrap = true) : mixed` - - Synchronously waits on the promise to complete. - - `$unwrap` controls whether or not the value of the promise is returned for a - fulfilled promise or if an exception is thrown if the promise is rejected. - This is set to `true` by default. - -- `cancel()` - - Attempts to cancel the promise if possible. The promise being cancelled and - the parent most ancestor that has not yet been resolved will also be - cancelled. Any promises waiting on the cancelled promise to resolve will also - be cancelled. - -- `getState() : string` - - Returns the state of the promise. One of `pending`, `fulfilled`, or - `rejected`. - -- `resolve($value)` - - Fulfills the promise with the given `$value`. - -- `reject($reason)` - - Rejects the promise with the given `$reason`. - - -## FulfilledPromise - -A fulfilled promise can be created to represent a promise that has been -fulfilled. - -```php -use GuzzleHttp\Promise\FulfilledPromise; - -$promise = new FulfilledPromise('value'); - -// Fulfilled callbacks are immediately invoked. -$promise->then(function ($value) { - echo $value; -}); -``` - - -## RejectedPromise - -A rejected promise can be created to represent a promise that has been -rejected. - -```php -use GuzzleHttp\Promise\RejectedPromise; - -$promise = new RejectedPromise('Error'); - -// Rejected callbacks are immediately invoked. -$promise->then(null, function ($reason) { - echo $reason; -}); -``` - - -# Promise interop - -This library works with foreign promises that have a `then` method. This means -you can use Guzzle promises with [React promises](https://github.com/reactphp/promise) -for example. When a foreign promise is returned inside of a then method -callback, promise resolution will occur recursively. - -```php -// Create a React promise -$deferred = new React\Promise\Deferred(); -$reactPromise = $deferred->promise(); - -// Create a Guzzle promise that is fulfilled with a React promise. -$guzzlePromise = new \GuzzleHttp\Promise\Promise(); -$guzzlePromise->then(function ($value) use ($reactPromise) { - // Do something something with the value... - // Return the React promise - return $reactPromise; -}); -``` - -Please note that wait and cancel chaining is no longer possible when forwarding -a foreign promise. You will need to wrap a third-party promise with a Guzzle -promise in order to utilize wait and cancel functions with foreign promises. - - -## Event Loop Integration - -In order to keep the stack size constant, Guzzle promises are resolved -asynchronously using a task queue. When waiting on promises synchronously, the -task queue will be automatically run to ensure that the blocking promise and -any forwarded promises are resolved. When using promises asynchronously in an -event loop, you will need to run the task queue on each tick of the loop. If -you do not run the task queue, then promises will not be resolved. - -You can run the task queue using the `run()` method of the global task queue -instance. - -```php -// Get the global task queue -$queue = \GuzzleHttp\Promise\queue(); -$queue->run(); -``` - -For example, you could use Guzzle promises with React using a periodic timer: - -```php -$loop = React\EventLoop\Factory::create(); -$loop->addPeriodicTimer(0, [$queue, 'run']); -``` - -*TODO*: Perhaps adding a `futureTick()` on each tick would be faster? - - -# Implementation notes - - -## Promise resolution and chaining is handled iteratively - -By shuffling pending handlers from one owner to another, promises are -resolved iteratively, allowing for "infinite" then chaining. - -```php -then(function ($v) { - // The stack size remains constant (a good thing) - echo xdebug_get_stack_depth() . ', '; - return $v + 1; - }); -} - -$parent->resolve(0); -var_dump($p->wait()); // int(1000) - -``` - -When a promise is fulfilled or rejected with a non-promise value, the promise -then takes ownership of the handlers of each child promise and delivers values -down the chain without using recursion. - -When a promise is resolved with another promise, the original promise transfers -all of its pending handlers to the new promise. When the new promise is -eventually resolved, all of the pending handlers are delivered the forwarded -value. - - -## A promise is the deferred. - -Some promise libraries implement promises using a deferred object to represent -a computation and a promise object to represent the delivery of the result of -the computation. This is a nice separation of computation and delivery because -consumers of the promise cannot modify the value that will be eventually -delivered. - -One side effect of being able to implement promise resolution and chaining -iteratively is that you need to be able for one promise to reach into the state -of another promise to shuffle around ownership of handlers. In order to achieve -this without making the handlers of a promise publicly mutable, a promise is -also the deferred value, allowing promises of the same parent class to reach -into and modify the private properties of promises of the same type. While this -does allow consumers of the value to modify the resolution or rejection of the -deferred, it is a small price to pay for keeping the stack size constant. - -```php -$promise = new Promise(); -$promise->then(function ($value) { echo $value; }); -// The promise is the deferred value, so you can deliver a value to it. -$promise->resolve('foo'); -// prints "foo" -``` diff --git a/vendor/guzzlehttp/promises/composer.json b/vendor/guzzlehttp/promises/composer.json deleted file mode 100644 index ec41a61..0000000 --- a/vendor/guzzlehttp/promises/composer.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "guzzlehttp/promises", - "description": "Guzzle promises library", - "keywords": ["promise"], - "license": "MIT", - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": ["src/functions_include.php"] - }, - "scripts": { - "test": "vendor/bin/phpunit", - "test-ci": "vendor/bin/phpunit --coverage-text" - }, - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - } -} diff --git a/vendor/guzzlehttp/promises/src/AggregateException.php b/vendor/guzzlehttp/promises/src/AggregateException.php deleted file mode 100644 index 6a5690c..0000000 --- a/vendor/guzzlehttp/promises/src/AggregateException.php +++ /dev/null @@ -1,16 +0,0 @@ -then(function ($v) { echo $v; }); - * - * @param callable $generatorFn Generator function to wrap into a promise. - * - * @return Promise - * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration - */ -final class Coroutine implements PromiseInterface -{ - /** - * @var PromiseInterface|null - */ - private $currentPromise; - - /** - * @var Generator - */ - private $generator; - - /** - * @var Promise - */ - private $result; - - public function __construct(callable $generatorFn) - { - $this->generator = $generatorFn(); - $this->result = new Promise(function () { - while (isset($this->currentPromise)) { - $this->currentPromise->wait(); - } - }); - $this->nextCoroutine($this->generator->current()); - } - - public function then( - callable $onFulfilled = null, - callable $onRejected = null - ) { - return $this->result->then($onFulfilled, $onRejected); - } - - public function otherwise(callable $onRejected) - { - return $this->result->otherwise($onRejected); - } - - public function wait($unwrap = true) - { - return $this->result->wait($unwrap); - } - - public function getState() - { - return $this->result->getState(); - } - - public function resolve($value) - { - $this->result->resolve($value); - } - - public function reject($reason) - { - $this->result->reject($reason); - } - - public function cancel() - { - $this->currentPromise->cancel(); - $this->result->cancel(); - } - - private function nextCoroutine($yielded) - { - $this->currentPromise = promise_for($yielded) - ->then([$this, '_handleSuccess'], [$this, '_handleFailure']); - } - - /** - * @internal - */ - public function _handleSuccess($value) - { - unset($this->currentPromise); - try { - $next = $this->generator->send($value); - if ($this->generator->valid()) { - $this->nextCoroutine($next); - } else { - $this->result->resolve($value); - } - } catch (Exception $exception) { - $this->result->reject($exception); - } catch (Throwable $throwable) { - $this->result->reject($throwable); - } - } - - /** - * @internal - */ - public function _handleFailure($reason) - { - unset($this->currentPromise); - try { - $nextYield = $this->generator->throw(exception_for($reason)); - // The throw was caught, so keep iterating on the coroutine - $this->nextCoroutine($nextYield); - } catch (Exception $exception) { - $this->result->reject($exception); - } catch (Throwable $throwable) { - $this->result->reject($throwable); - } - } -} diff --git a/vendor/guzzlehttp/promises/src/EachPromise.php b/vendor/guzzlehttp/promises/src/EachPromise.php deleted file mode 100644 index d0ddf60..0000000 --- a/vendor/guzzlehttp/promises/src/EachPromise.php +++ /dev/null @@ -1,229 +0,0 @@ -iterable = iter_for($iterable); - - if (isset($config['concurrency'])) { - $this->concurrency = $config['concurrency']; - } - - if (isset($config['fulfilled'])) { - $this->onFulfilled = $config['fulfilled']; - } - - if (isset($config['rejected'])) { - $this->onRejected = $config['rejected']; - } - } - - public function promise() - { - if ($this->aggregate) { - return $this->aggregate; - } - - try { - $this->createPromise(); - $this->iterable->rewind(); - $this->refillPending(); - } catch (\Throwable $e) { - $this->aggregate->reject($e); - } catch (\Exception $e) { - $this->aggregate->reject($e); - } - - return $this->aggregate; - } - - private function createPromise() - { - $this->mutex = false; - $this->aggregate = new Promise(function () { - reset($this->pending); - if (empty($this->pending) && !$this->iterable->valid()) { - $this->aggregate->resolve(null); - return; - } - - // Consume a potentially fluctuating list of promises while - // ensuring that indexes are maintained (precluding array_shift). - while ($promise = current($this->pending)) { - next($this->pending); - $promise->wait(); - if ($this->aggregate->getState() !== PromiseInterface::PENDING) { - return; - } - } - }); - - // Clear the references when the promise is resolved. - $clearFn = function () { - $this->iterable = $this->concurrency = $this->pending = null; - $this->onFulfilled = $this->onRejected = null; - }; - - $this->aggregate->then($clearFn, $clearFn); - } - - private function refillPending() - { - if (!$this->concurrency) { - // Add all pending promises. - while ($this->addPending() && $this->advanceIterator()); - return; - } - - // Add only up to N pending promises. - $concurrency = is_callable($this->concurrency) - ? call_user_func($this->concurrency, count($this->pending)) - : $this->concurrency; - $concurrency = max($concurrency - count($this->pending), 0); - // Concurrency may be set to 0 to disallow new promises. - if (!$concurrency) { - return; - } - // Add the first pending promise. - $this->addPending(); - // Note this is special handling for concurrency=1 so that we do - // not advance the iterator after adding the first promise. This - // helps work around issues with generators that might not have the - // next value to yield until promise callbacks are called. - while (--$concurrency - && $this->advanceIterator() - && $this->addPending()); - } - - private function addPending() - { - if (!$this->iterable || !$this->iterable->valid()) { - return false; - } - - $promise = promise_for($this->iterable->current()); - $idx = $this->iterable->key(); - - $this->pending[$idx] = $promise->then( - function ($value) use ($idx) { - if ($this->onFulfilled) { - call_user_func( - $this->onFulfilled, $value, $idx, $this->aggregate - ); - } - $this->step($idx); - }, - function ($reason) use ($idx) { - if ($this->onRejected) { - call_user_func( - $this->onRejected, $reason, $idx, $this->aggregate - ); - } - $this->step($idx); - } - ); - - return true; - } - - private function advanceIterator() - { - // Place a lock on the iterator so that we ensure to not recurse, - // preventing fatal generator errors. - if ($this->mutex) { - return false; - } - - $this->mutex = true; - - try { - $this->iterable->next(); - $this->mutex = false; - return true; - } catch (\Throwable $e) { - $this->aggregate->reject($e); - $this->mutex = false; - return false; - } catch (\Exception $e) { - $this->aggregate->reject($e); - $this->mutex = false; - return false; - } - } - - private function step($idx) - { - // If the promise was already resolved, then ignore this step. - if ($this->aggregate->getState() !== PromiseInterface::PENDING) { - return; - } - - unset($this->pending[$idx]); - - // Only refill pending promises if we are not locked, preventing the - // EachPromise to recursively invoke the provided iterator, which - // cause a fatal error: "Cannot resume an already running generator" - if ($this->advanceIterator() && !$this->checkIfFinished()) { - // Add more pending promises if possible. - $this->refillPending(); - } - } - - private function checkIfFinished() - { - if (!$this->pending && !$this->iterable->valid()) { - // Resolve the promise if there's nothing left to do. - $this->aggregate->resolve(null); - return true; - } - - return false; - } -} diff --git a/vendor/guzzlehttp/promises/src/FulfilledPromise.php b/vendor/guzzlehttp/promises/src/FulfilledPromise.php deleted file mode 100644 index dbbeeb9..0000000 --- a/vendor/guzzlehttp/promises/src/FulfilledPromise.php +++ /dev/null @@ -1,82 +0,0 @@ -value = $value; - } - - public function then( - callable $onFulfilled = null, - callable $onRejected = null - ) { - // Return itself if there is no onFulfilled function. - if (!$onFulfilled) { - return $this; - } - - $queue = queue(); - $p = new Promise([$queue, 'run']); - $value = $this->value; - $queue->add(static function () use ($p, $value, $onFulfilled) { - if ($p->getState() === self::PENDING) { - try { - $p->resolve($onFulfilled($value)); - } catch (\Throwable $e) { - $p->reject($e); - } catch (\Exception $e) { - $p->reject($e); - } - } - }); - - return $p; - } - - public function otherwise(callable $onRejected) - { - return $this->then(null, $onRejected); - } - - public function wait($unwrap = true, $defaultDelivery = null) - { - return $unwrap ? $this->value : null; - } - - public function getState() - { - return self::FULFILLED; - } - - public function resolve($value) - { - if ($value !== $this->value) { - throw new \LogicException("Cannot resolve a fulfilled promise"); - } - } - - public function reject($reason) - { - throw new \LogicException("Cannot reject a fulfilled promise"); - } - - public function cancel() - { - // pass - } -} diff --git a/vendor/guzzlehttp/promises/src/Promise.php b/vendor/guzzlehttp/promises/src/Promise.php deleted file mode 100644 index 844ada0..0000000 --- a/vendor/guzzlehttp/promises/src/Promise.php +++ /dev/null @@ -1,280 +0,0 @@ -waitFn = $waitFn; - $this->cancelFn = $cancelFn; - } - - public function then( - callable $onFulfilled = null, - callable $onRejected = null - ) { - if ($this->state === self::PENDING) { - $p = new Promise(null, [$this, 'cancel']); - $this->handlers[] = [$p, $onFulfilled, $onRejected]; - $p->waitList = $this->waitList; - $p->waitList[] = $this; - return $p; - } - - // Return a fulfilled promise and immediately invoke any callbacks. - if ($this->state === self::FULFILLED) { - return $onFulfilled - ? promise_for($this->result)->then($onFulfilled) - : promise_for($this->result); - } - - // It's either cancelled or rejected, so return a rejected promise - // and immediately invoke any callbacks. - $rejection = rejection_for($this->result); - return $onRejected ? $rejection->then(null, $onRejected) : $rejection; - } - - public function otherwise(callable $onRejected) - { - return $this->then(null, $onRejected); - } - - public function wait($unwrap = true) - { - $this->waitIfPending(); - - $inner = $this->result instanceof PromiseInterface - ? $this->result->wait($unwrap) - : $this->result; - - if ($unwrap) { - if ($this->result instanceof PromiseInterface - || $this->state === self::FULFILLED - ) { - return $inner; - } else { - // It's rejected so "unwrap" and throw an exception. - throw exception_for($inner); - } - } - } - - public function getState() - { - return $this->state; - } - - public function cancel() - { - if ($this->state !== self::PENDING) { - return; - } - - $this->waitFn = $this->waitList = null; - - if ($this->cancelFn) { - $fn = $this->cancelFn; - $this->cancelFn = null; - try { - $fn(); - } catch (\Throwable $e) { - $this->reject($e); - } catch (\Exception $e) { - $this->reject($e); - } - } - - // Reject the promise only if it wasn't rejected in a then callback. - if ($this->state === self::PENDING) { - $this->reject(new CancellationException('Promise has been cancelled')); - } - } - - public function resolve($value) - { - $this->settle(self::FULFILLED, $value); - } - - public function reject($reason) - { - $this->settle(self::REJECTED, $reason); - } - - private function settle($state, $value) - { - if ($this->state !== self::PENDING) { - // Ignore calls with the same resolution. - if ($state === $this->state && $value === $this->result) { - return; - } - throw $this->state === $state - ? new \LogicException("The promise is already {$state}.") - : new \LogicException("Cannot change a {$this->state} promise to {$state}"); - } - - if ($value === $this) { - throw new \LogicException('Cannot fulfill or reject a promise with itself'); - } - - // Clear out the state of the promise but stash the handlers. - $this->state = $state; - $this->result = $value; - $handlers = $this->handlers; - $this->handlers = null; - $this->waitList = $this->waitFn = null; - $this->cancelFn = null; - - if (!$handlers) { - return; - } - - // If the value was not a settled promise or a thenable, then resolve - // it in the task queue using the correct ID. - if (!method_exists($value, 'then')) { - $id = $state === self::FULFILLED ? 1 : 2; - // It's a success, so resolve the handlers in the queue. - queue()->add(static function () use ($id, $value, $handlers) { - foreach ($handlers as $handler) { - self::callHandler($id, $value, $handler); - } - }); - } elseif ($value instanceof Promise - && $value->getState() === self::PENDING - ) { - // We can just merge our handlers onto the next promise. - $value->handlers = array_merge($value->handlers, $handlers); - } else { - // Resolve the handlers when the forwarded promise is resolved. - $value->then( - static function ($value) use ($handlers) { - foreach ($handlers as $handler) { - self::callHandler(1, $value, $handler); - } - }, - static function ($reason) use ($handlers) { - foreach ($handlers as $handler) { - self::callHandler(2, $reason, $handler); - } - } - ); - } - } - - /** - * Call a stack of handlers using a specific callback index and value. - * - * @param int $index 1 (resolve) or 2 (reject). - * @param mixed $value Value to pass to the callback. - * @param array $handler Array of handler data (promise and callbacks). - * - * @return array Returns the next group to resolve. - */ - private static function callHandler($index, $value, array $handler) - { - /** @var PromiseInterface $promise */ - $promise = $handler[0]; - - // The promise may have been cancelled or resolved before placing - // this thunk in the queue. - if ($promise->getState() !== self::PENDING) { - return; - } - - try { - if (isset($handler[$index])) { - $promise->resolve($handler[$index]($value)); - } elseif ($index === 1) { - // Forward resolution values as-is. - $promise->resolve($value); - } else { - // Forward rejections down the chain. - $promise->reject($value); - } - } catch (\Throwable $reason) { - $promise->reject($reason); - } catch (\Exception $reason) { - $promise->reject($reason); - } - } - - private function waitIfPending() - { - if ($this->state !== self::PENDING) { - return; - } elseif ($this->waitFn) { - $this->invokeWaitFn(); - } elseif ($this->waitList) { - $this->invokeWaitList(); - } else { - // If there's not wait function, then reject the promise. - $this->reject('Cannot wait on a promise that has ' - . 'no internal wait function. You must provide a wait ' - . 'function when constructing the promise to be able to ' - . 'wait on a promise.'); - } - - queue()->run(); - - if ($this->state === self::PENDING) { - $this->reject('Invoking the wait callback did not resolve the promise'); - } - } - - private function invokeWaitFn() - { - try { - $wfn = $this->waitFn; - $this->waitFn = null; - $wfn(true); - } catch (\Exception $reason) { - if ($this->state === self::PENDING) { - // The promise has not been resolved yet, so reject the promise - // with the exception. - $this->reject($reason); - } else { - // The promise was already resolved, so there's a problem in - // the application. - throw $reason; - } - } - } - - private function invokeWaitList() - { - $waitList = $this->waitList; - $this->waitList = null; - - foreach ($waitList as $result) { - while (true) { - $result->waitIfPending(); - - if ($result->result instanceof Promise) { - $result = $result->result; - } else { - if ($result->result instanceof PromiseInterface) { - $result->result->wait(false); - } - break; - } - } - } - } -} diff --git a/vendor/guzzlehttp/promises/src/PromiseInterface.php b/vendor/guzzlehttp/promises/src/PromiseInterface.php deleted file mode 100644 index 8f5f4b9..0000000 --- a/vendor/guzzlehttp/promises/src/PromiseInterface.php +++ /dev/null @@ -1,93 +0,0 @@ -reason = $reason; - } - - public function then( - callable $onFulfilled = null, - callable $onRejected = null - ) { - // If there's no onRejected callback then just return self. - if (!$onRejected) { - return $this; - } - - $queue = queue(); - $reason = $this->reason; - $p = new Promise([$queue, 'run']); - $queue->add(static function () use ($p, $reason, $onRejected) { - if ($p->getState() === self::PENDING) { - try { - // Return a resolved promise if onRejected does not throw. - $p->resolve($onRejected($reason)); - } catch (\Throwable $e) { - // onRejected threw, so return a rejected promise. - $p->reject($e); - } catch (\Exception $e) { - // onRejected threw, so return a rejected promise. - $p->reject($e); - } - } - }); - - return $p; - } - - public function otherwise(callable $onRejected) - { - return $this->then(null, $onRejected); - } - - public function wait($unwrap = true, $defaultDelivery = null) - { - if ($unwrap) { - throw exception_for($this->reason); - } - } - - public function getState() - { - return self::REJECTED; - } - - public function resolve($value) - { - throw new \LogicException("Cannot resolve a rejected promise"); - } - - public function reject($reason) - { - if ($reason !== $this->reason) { - throw new \LogicException("Cannot reject a rejected promise"); - } - } - - public function cancel() - { - // pass - } -} diff --git a/vendor/guzzlehttp/promises/src/RejectionException.php b/vendor/guzzlehttp/promises/src/RejectionException.php deleted file mode 100644 index 07c1136..0000000 --- a/vendor/guzzlehttp/promises/src/RejectionException.php +++ /dev/null @@ -1,47 +0,0 @@ -reason = $reason; - - $message = 'The promise was rejected'; - - if ($description) { - $message .= ' with reason: ' . $description; - } elseif (is_string($reason) - || (is_object($reason) && method_exists($reason, '__toString')) - ) { - $message .= ' with reason: ' . $this->reason; - } elseif ($reason instanceof \JsonSerializable) { - $message .= ' with reason: ' - . json_encode($this->reason, JSON_PRETTY_PRINT); - } - - parent::__construct($message); - } - - /** - * Returns the rejection reason. - * - * @return mixed - */ - public function getReason() - { - return $this->reason; - } -} diff --git a/vendor/guzzlehttp/promises/src/TaskQueue.php b/vendor/guzzlehttp/promises/src/TaskQueue.php deleted file mode 100644 index 6e8a2a0..0000000 --- a/vendor/guzzlehttp/promises/src/TaskQueue.php +++ /dev/null @@ -1,66 +0,0 @@ -run(); - */ -class TaskQueue implements TaskQueueInterface -{ - private $enableShutdown = true; - private $queue = []; - - public function __construct($withShutdown = true) - { - if ($withShutdown) { - register_shutdown_function(function () { - if ($this->enableShutdown) { - // Only run the tasks if an E_ERROR didn't occur. - $err = error_get_last(); - if (!$err || ($err['type'] ^ E_ERROR)) { - $this->run(); - } - } - }); - } - } - - public function isEmpty() - { - return !$this->queue; - } - - public function add(callable $task) - { - $this->queue[] = $task; - } - - public function run() - { - /** @var callable $task */ - while ($task = array_shift($this->queue)) { - $task(); - } - } - - /** - * The task queue will be run and exhausted by default when the process - * exits IFF the exit is not the result of a PHP E_ERROR error. - * - * You can disable running the automatic shutdown of the queue by calling - * this function. If you disable the task queue shutdown process, then you - * MUST either run the task queue (as a result of running your event loop - * or manually using the run() method) or wait on each outstanding promise. - * - * Note: This shutdown will occur before any destructors are triggered. - */ - public function disableShutdown() - { - $this->enableShutdown = false; - } -} diff --git a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php b/vendor/guzzlehttp/promises/src/TaskQueueInterface.php deleted file mode 100644 index ac8306e..0000000 --- a/vendor/guzzlehttp/promises/src/TaskQueueInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * while ($eventLoop->isRunning()) { - * GuzzleHttp\Promise\queue()->run(); - * } - * - * - * @param TaskQueueInterface $assign Optionally specify a new queue instance. - * - * @return TaskQueueInterface - */ -function queue(TaskQueueInterface $assign = null) -{ - static $queue; - - if ($assign) { - $queue = $assign; - } elseif (!$queue) { - $queue = new TaskQueue(); - } - - return $queue; -} - -/** - * Adds a function to run in the task queue when it is next `run()` and returns - * a promise that is fulfilled or rejected with the result. - * - * @param callable $task Task function to run. - * - * @return PromiseInterface - */ -function task(callable $task) -{ - $queue = queue(); - $promise = new Promise([$queue, 'run']); - $queue->add(function () use ($task, $promise) { - try { - $promise->resolve($task()); - } catch (\Throwable $e) { - $promise->reject($e); - } catch (\Exception $e) { - $promise->reject($e); - } - }); - - return $promise; -} - -/** - * Creates a promise for a value if the value is not a promise. - * - * @param mixed $value Promise or value. - * - * @return PromiseInterface - */ -function promise_for($value) -{ - if ($value instanceof PromiseInterface) { - return $value; - } - - // Return a Guzzle promise that shadows the given promise. - if (method_exists($value, 'then')) { - $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null; - $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null; - $promise = new Promise($wfn, $cfn); - $value->then([$promise, 'resolve'], [$promise, 'reject']); - return $promise; - } - - return new FulfilledPromise($value); -} - -/** - * Creates a rejected promise for a reason if the reason is not a promise. If - * the provided reason is a promise, then it is returned as-is. - * - * @param mixed $reason Promise or reason. - * - * @return PromiseInterface - */ -function rejection_for($reason) -{ - if ($reason instanceof PromiseInterface) { - return $reason; - } - - return new RejectedPromise($reason); -} - -/** - * Create an exception for a rejected promise value. - * - * @param mixed $reason - * - * @return \Exception|\Throwable - */ -function exception_for($reason) -{ - return $reason instanceof \Exception || $reason instanceof \Throwable - ? $reason - : new RejectionException($reason); -} - -/** - * Returns an iterator for the given value. - * - * @param mixed $value - * - * @return \Iterator - */ -function iter_for($value) -{ - if ($value instanceof \Iterator) { - return $value; - } elseif (is_array($value)) { - return new \ArrayIterator($value); - } else { - return new \ArrayIterator([$value]); - } -} - -/** - * Synchronously waits on a promise to resolve and returns an inspection state - * array. - * - * Returns a state associative array containing a "state" key mapping to a - * valid promise state. If the state of the promise is "fulfilled", the array - * will contain a "value" key mapping to the fulfilled value of the promise. If - * the promise is rejected, the array will contain a "reason" key mapping to - * the rejection reason of the promise. - * - * @param PromiseInterface $promise Promise or value. - * - * @return array - */ -function inspect(PromiseInterface $promise) -{ - try { - return [ - 'state' => PromiseInterface::FULFILLED, - 'value' => $promise->wait() - ]; - } catch (RejectionException $e) { - return ['state' => PromiseInterface::REJECTED, 'reason' => $e->getReason()]; - } catch (\Throwable $e) { - return ['state' => PromiseInterface::REJECTED, 'reason' => $e]; - } catch (\Exception $e) { - return ['state' => PromiseInterface::REJECTED, 'reason' => $e]; - } -} - -/** - * Waits on all of the provided promises, but does not unwrap rejected promises - * as thrown exception. - * - * Returns an array of inspection state arrays. - * - * @param PromiseInterface[] $promises Traversable of promises to wait upon. - * - * @return array - * @see GuzzleHttp\Promise\inspect for the inspection state array format. - */ -function inspect_all($promises) -{ - $results = []; - foreach ($promises as $key => $promise) { - $results[$key] = inspect($promise); - } - - return $results; -} - -/** - * Waits on all of the provided promises and returns the fulfilled values. - * - * Returns an array that contains the value of each promise (in the same order - * the promises were provided). An exception is thrown if any of the promises - * are rejected. - * - * @param mixed $promises Iterable of PromiseInterface objects to wait on. - * - * @return array - * @throws \Exception on error - * @throws \Throwable on error in PHP >=7 - */ -function unwrap($promises) -{ - $results = []; - foreach ($promises as $key => $promise) { - $results[$key] = $promise->wait(); - } - - return $results; -} - -/** - * Given an array of promises, return a promise that is fulfilled when all the - * items in the array are fulfilled. - * - * The promise's fulfillment value is an array with fulfillment values at - * respective positions to the original array. If any promise in the array - * rejects, the returned promise is rejected with the rejection reason. - * - * @param mixed $promises Promises or values. - * - * @return PromiseInterface - */ -function all($promises) -{ - $results = []; - return each( - $promises, - function ($value, $idx) use (&$results) { - $results[$idx] = $value; - }, - function ($reason, $idx, Promise $aggregate) { - $aggregate->reject($reason); - } - )->then(function () use (&$results) { - ksort($results); - return $results; - }); -} - -/** - * Initiate a competitive race between multiple promises or values (values will - * become immediately fulfilled promises). - * - * When count amount of promises have been fulfilled, the returned promise is - * fulfilled with an array that contains the fulfillment values of the winners - * in order of resolution. - * - * This prommise is rejected with a {@see GuzzleHttp\Promise\AggregateException} - * if the number of fulfilled promises is less than the desired $count. - * - * @param int $count Total number of promises. - * @param mixed $promises Promises or values. - * - * @return PromiseInterface - */ -function some($count, $promises) -{ - $results = []; - $rejections = []; - - return each( - $promises, - function ($value, $idx, PromiseInterface $p) use (&$results, $count) { - if ($p->getState() !== PromiseInterface::PENDING) { - return; - } - $results[$idx] = $value; - if (count($results) >= $count) { - $p->resolve(null); - } - }, - function ($reason) use (&$rejections) { - $rejections[] = $reason; - } - )->then( - function () use (&$results, &$rejections, $count) { - if (count($results) !== $count) { - throw new AggregateException( - 'Not enough promises to fulfill count', - $rejections - ); - } - ksort($results); - return array_values($results); - } - ); -} - -/** - * Like some(), with 1 as count. However, if the promise fulfills, the - * fulfillment value is not an array of 1 but the value directly. - * - * @param mixed $promises Promises or values. - * - * @return PromiseInterface - */ -function any($promises) -{ - return some(1, $promises)->then(function ($values) { return $values[0]; }); -} - -/** - * Returns a promise that is fulfilled when all of the provided promises have - * been fulfilled or rejected. - * - * The returned promise is fulfilled with an array of inspection state arrays. - * - * @param mixed $promises Promises or values. - * - * @return PromiseInterface - * @see GuzzleHttp\Promise\inspect for the inspection state array format. - */ -function settle($promises) -{ - $results = []; - - return each( - $promises, - function ($value, $idx) use (&$results) { - $results[$idx] = ['state' => PromiseInterface::FULFILLED, 'value' => $value]; - }, - function ($reason, $idx) use (&$results) { - $results[$idx] = ['state' => PromiseInterface::REJECTED, 'reason' => $reason]; - } - )->then(function () use (&$results) { - ksort($results); - return $results; - }); -} - -/** - * Given an iterator that yields promises or values, returns a promise that is - * fulfilled with a null value when the iterator has been consumed or the - * aggregate promise has been fulfilled or rejected. - * - * $onFulfilled is a function that accepts the fulfilled value, iterator - * index, and the aggregate promise. The callback can invoke any necessary side - * effects and choose to resolve or reject the aggregate promise if needed. - * - * $onRejected is a function that accepts the rejection reason, iterator - * index, and the aggregate promise. The callback can invoke any necessary side - * effects and choose to resolve or reject the aggregate promise if needed. - * - * @param mixed $iterable Iterator or array to iterate over. - * @param callable $onFulfilled - * @param callable $onRejected - * - * @return PromiseInterface - */ -function each( - $iterable, - callable $onFulfilled = null, - callable $onRejected = null -) { - return (new EachPromise($iterable, [ - 'fulfilled' => $onFulfilled, - 'rejected' => $onRejected - ]))->promise(); -} - -/** - * Like each, but only allows a certain number of outstanding promises at any - * given time. - * - * $concurrency may be an integer or a function that accepts the number of - * pending promises and returns a numeric concurrency limit value to allow for - * dynamic a concurrency size. - * - * @param mixed $iterable - * @param int|callable $concurrency - * @param callable $onFulfilled - * @param callable $onRejected - * - * @return PromiseInterface - */ -function each_limit( - $iterable, - $concurrency, - callable $onFulfilled = null, - callable $onRejected = null -) { - return (new EachPromise($iterable, [ - 'fulfilled' => $onFulfilled, - 'rejected' => $onRejected, - 'concurrency' => $concurrency - ]))->promise(); -} - -/** - * Like each_limit, but ensures that no promise in the given $iterable argument - * is rejected. If any promise is rejected, then the aggregate promise is - * rejected with the encountered rejection. - * - * @param mixed $iterable - * @param int|callable $concurrency - * @param callable $onFulfilled - * - * @return PromiseInterface - */ -function each_limit_all( - $iterable, - $concurrency, - callable $onFulfilled = null -) { - return each_limit( - $iterable, - $concurrency, - $onFulfilled, - function ($reason, $idx, PromiseInterface $aggregate) { - $aggregate->reject($reason); - } - ); -} - -/** - * Returns true if a promise is fulfilled. - * - * @param PromiseInterface $promise - * - * @return bool - */ -function is_fulfilled(PromiseInterface $promise) -{ - return $promise->getState() === PromiseInterface::FULFILLED; -} - -/** - * Returns true if a promise is rejected. - * - * @param PromiseInterface $promise - * - * @return bool - */ -function is_rejected(PromiseInterface $promise) -{ - return $promise->getState() === PromiseInterface::REJECTED; -} - -/** - * Returns true if a promise is fulfilled or rejected. - * - * @param PromiseInterface $promise - * - * @return bool - */ -function is_settled(PromiseInterface $promise) -{ - return $promise->getState() !== PromiseInterface::PENDING; -} - -/** - * @see Coroutine - * - * @param callable $generatorFn - * - * @return PromiseInterface - */ -function coroutine(callable $generatorFn) -{ - return new Coroutine($generatorFn); -} diff --git a/vendor/guzzlehttp/promises/src/functions_include.php b/vendor/guzzlehttp/promises/src/functions_include.php deleted file mode 100644 index 34cd171..0000000 --- a/vendor/guzzlehttp/promises/src/functions_include.php +++ /dev/null @@ -1,6 +0,0 @@ -withPath('foo')->withHost('example.com')` will throw an exception - because the path of a URI with an authority must start with a slash "/" or be empty - - `(new Uri())->withScheme('http')` will return `'http://localhost'` - -### Deprecated - -- `Uri::resolve` in favor of `UriResolver::resolve` -- `Uri::removeDotSegments` in favor of `UriResolver::removeDotSegments` - -### Fixed - -- `Stream::read` when length parameter <= 0. -- `copy_to_stream` reads bytes in chunks instead of `maxLen` into memory. -- `ServerRequest::getUriFromGlobals` when `Host` header contains port. -- Compatibility of URIs with `file` scheme and empty host. - - -## [1.3.1] - 2016-06-25 - -### Fixed - -- `Uri::__toString` for network path references, e.g. `//example.org`. -- Missing lowercase normalization for host. -- Handling of URI components in case they are `'0'` in a lot of places, - e.g. as a user info password. -- `Uri::withAddedHeader` to correctly merge headers with different case. -- Trimming of header values in `Uri::withAddedHeader`. Header values may - be surrounded by whitespace which should be ignored according to RFC 7230 - Section 3.2.4. This does not apply to header names. -- `Uri::withAddedHeader` with an array of header values. -- `Uri::resolve` when base path has no slash and handling of fragment. -- Handling of encoding in `Uri::with(out)QueryValue` so one can pass the - key/value both in encoded as well as decoded form to those methods. This is - consistent with withPath, withQuery etc. -- `ServerRequest::withoutAttribute` when attribute value is null. - - -## [1.3.0] - 2016-04-13 - -### Added - -- Remaining interfaces needed for full PSR7 compatibility - (ServerRequestInterface, UploadedFileInterface, etc.). -- Support for stream_for from scalars. - -### Changed - -- Can now extend Uri. - -### Fixed -- A bug in validating request methods by making it more permissive. - - -## [1.2.3] - 2016-02-18 - -### Fixed - -- Support in `GuzzleHttp\Psr7\CachingStream` for seeking forward on remote - streams, which can sometimes return fewer bytes than requested with `fread`. -- Handling of gzipped responses with FNAME headers. - - -## [1.2.2] - 2016-01-22 - -### Added - -- Support for URIs without any authority. -- Support for HTTP 451 'Unavailable For Legal Reasons.' -- Support for using '0' as a filename. -- Support for including non-standard ports in Host headers. - - -## [1.2.1] - 2015-11-02 - -### Changes - -- Now supporting negative offsets when seeking to SEEK_END. - - -## [1.2.0] - 2015-08-15 - -### Changed - -- Body as `"0"` is now properly added to a response. -- Now allowing forward seeking in CachingStream. -- Now properly parsing HTTP requests that contain proxy targets in - `parse_request`. -- functions.php is now conditionally required. -- user-info is no longer dropped when resolving URIs. - - -## [1.1.0] - 2015-06-24 - -### Changed - -- URIs can now be relative. -- `multipart/form-data` headers are now overridden case-insensitively. -- URI paths no longer encode the following characters because they are allowed - in URIs: "(", ")", "*", "!", "'" -- A port is no longer added to a URI when the scheme is missing and no port is - present. - - -## 1.0.0 - 2015-05-19 - -Initial release. - -Currently unsupported: - -- `Psr\Http\Message\ServerRequestInterface` -- `Psr\Http\Message\UploadedFileInterface` - - - -[Unreleased]: https://github.com/guzzle/psr7/compare/1.6.0...HEAD -[1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0 -[1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2 -[1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1 -[1.5.0]: https://github.com/guzzle/psr7/compare/1.4.2...1.5.0 -[1.4.2]: https://github.com/guzzle/psr7/compare/1.4.1...1.4.2 -[1.4.1]: https://github.com/guzzle/psr7/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/guzzle/psr7/compare/1.3.1...1.4.0 -[1.3.1]: https://github.com/guzzle/psr7/compare/1.3.0...1.3.1 -[1.3.0]: https://github.com/guzzle/psr7/compare/1.2.3...1.3.0 -[1.2.3]: https://github.com/guzzle/psr7/compare/1.2.2...1.2.3 -[1.2.2]: https://github.com/guzzle/psr7/compare/1.2.1...1.2.2 -[1.2.1]: https://github.com/guzzle/psr7/compare/1.2.0...1.2.1 -[1.2.0]: https://github.com/guzzle/psr7/compare/1.1.0...1.2.0 -[1.1.0]: https://github.com/guzzle/psr7/compare/1.0.0...1.1.0 diff --git a/vendor/guzzlehttp/psr7/LICENSE b/vendor/guzzlehttp/psr7/LICENSE deleted file mode 100644 index 581d95f..0000000 --- a/vendor/guzzlehttp/psr7/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/guzzlehttp/psr7/README.md b/vendor/guzzlehttp/psr7/README.md deleted file mode 100644 index c60a6a3..0000000 --- a/vendor/guzzlehttp/psr7/README.md +++ /dev/null @@ -1,745 +0,0 @@ -# PSR-7 Message Implementation - -This repository contains a full [PSR-7](http://www.php-fig.org/psr/psr-7/) -message implementation, several stream decorators, and some helpful -functionality like query string parsing. - - -[![Build Status](https://travis-ci.org/guzzle/psr7.svg?branch=master)](https://travis-ci.org/guzzle/psr7) - - -# Stream implementation - -This package comes with a number of stream implementations and stream -decorators. - - -## AppendStream - -`GuzzleHttp\Psr7\AppendStream` - -Reads from multiple streams, one after the other. - -```php -use GuzzleHttp\Psr7; - -$a = Psr7\stream_for('abc, '); -$b = Psr7\stream_for('123.'); -$composed = new Psr7\AppendStream([$a, $b]); - -$composed->addStream(Psr7\stream_for(' Above all listen to me')); - -echo $composed; // abc, 123. Above all listen to me. -``` - - -## BufferStream - -`GuzzleHttp\Psr7\BufferStream` - -Provides a buffer stream that can be written to fill a buffer, and read -from to remove bytes from the buffer. - -This stream returns a "hwm" metadata value that tells upstream consumers -what the configured high water mark of the stream is, or the maximum -preferred size of the buffer. - -```php -use GuzzleHttp\Psr7; - -// When more than 1024 bytes are in the buffer, it will begin returning -// false to writes. This is an indication that writers should slow down. -$buffer = new Psr7\BufferStream(1024); -``` - - -## CachingStream - -The CachingStream is used to allow seeking over previously read bytes on -non-seekable streams. This can be useful when transferring a non-seekable -entity body fails due to needing to rewind the stream (for example, resulting -from a redirect). Data that is read from the remote stream will be buffered in -a PHP temp stream so that previously read bytes are cached first in memory, -then on disk. - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\stream_for(fopen('http://www.google.com', 'r')); -$stream = new Psr7\CachingStream($original); - -$stream->read(1024); -echo $stream->tell(); -// 1024 - -$stream->seek(0); -echo $stream->tell(); -// 0 -``` - - -## DroppingStream - -`GuzzleHttp\Psr7\DroppingStream` - -Stream decorator that begins dropping data once the size of the underlying -stream becomes too full. - -```php -use GuzzleHttp\Psr7; - -// Create an empty stream -$stream = Psr7\stream_for(); - -// Start dropping data when the stream has more than 10 bytes -$dropping = new Psr7\DroppingStream($stream, 10); - -$dropping->write('01234567890123456789'); -echo $stream; // 0123456789 -``` - - -## FnStream - -`GuzzleHttp\Psr7\FnStream` - -Compose stream implementations based on a hash of functions. - -Allows for easy testing and extension of a provided stream without needing -to create a concrete class for a simple extension point. - -```php - -use GuzzleHttp\Psr7; - -$stream = Psr7\stream_for('hi'); -$fnStream = Psr7\FnStream::decorate($stream, [ - 'rewind' => function () use ($stream) { - echo 'About to rewind - '; - $stream->rewind(); - echo 'rewound!'; - } -]); - -$fnStream->rewind(); -// Outputs: About to rewind - rewound! -``` - - -## InflateStream - -`GuzzleHttp\Psr7\InflateStream` - -Uses PHP's zlib.inflate filter to inflate deflate or gzipped content. - -This stream decorator skips the first 10 bytes of the given stream to remove -the gzip header, converts the provided stream to a PHP stream resource, -then appends the zlib.inflate filter. The stream is then converted back -to a Guzzle stream resource to be used as a Guzzle stream. - - -## LazyOpenStream - -`GuzzleHttp\Psr7\LazyOpenStream` - -Lazily reads or writes to a file that is opened only after an IO operation -take place on the stream. - -```php -use GuzzleHttp\Psr7; - -$stream = new Psr7\LazyOpenStream('/path/to/file', 'r'); -// The file has not yet been opened... - -echo $stream->read(10); -// The file is opened and read from only when needed. -``` - - -## LimitStream - -`GuzzleHttp\Psr7\LimitStream` - -LimitStream can be used to read a subset or slice of an existing stream object. -This can be useful for breaking a large file into smaller pieces to be sent in -chunks (e.g. Amazon S3's multipart upload API). - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\stream_for(fopen('/tmp/test.txt', 'r+')); -echo $original->getSize(); -// >>> 1048576 - -// Limit the size of the body to 1024 bytes and start reading from byte 2048 -$stream = new Psr7\LimitStream($original, 1024, 2048); -echo $stream->getSize(); -// >>> 1024 -echo $stream->tell(); -// >>> 0 -``` - - -## MultipartStream - -`GuzzleHttp\Psr7\MultipartStream` - -Stream that when read returns bytes for a streaming multipart or -multipart/form-data stream. - - -## NoSeekStream - -`GuzzleHttp\Psr7\NoSeekStream` - -NoSeekStream wraps a stream and does not allow seeking. - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\stream_for('foo'); -$noSeek = new Psr7\NoSeekStream($original); - -echo $noSeek->read(3); -// foo -var_export($noSeek->isSeekable()); -// false -$noSeek->seek(0); -var_export($noSeek->read(3)); -// NULL -``` - - -## PumpStream - -`GuzzleHttp\Psr7\PumpStream` - -Provides a read only stream that pumps data from a PHP callable. - -When invoking the provided callable, the PumpStream will pass the amount of -data requested to read to the callable. The callable can choose to ignore -this value and return fewer or more bytes than requested. Any extra data -returned by the provided callable is buffered internally until drained using -the read() function of the PumpStream. The provided callable MUST return -false when there is no more data to read. - - -## Implementing stream decorators - -Creating a stream decorator is very easy thanks to the -`GuzzleHttp\Psr7\StreamDecoratorTrait`. This trait provides methods that -implement `Psr\Http\Message\StreamInterface` by proxying to an underlying -stream. Just `use` the `StreamDecoratorTrait` and implement your custom -methods. - -For example, let's say we wanted to call a specific function each time the last -byte is read from a stream. This could be implemented by overriding the -`read()` method. - -```php -use Psr\Http\Message\StreamInterface; -use GuzzleHttp\Psr7\StreamDecoratorTrait; - -class EofCallbackStream implements StreamInterface -{ - use StreamDecoratorTrait; - - private $callback; - - public function __construct(StreamInterface $stream, callable $cb) - { - $this->stream = $stream; - $this->callback = $cb; - } - - public function read($length) - { - $result = $this->stream->read($length); - - // Invoke the callback when EOF is hit. - if ($this->eof()) { - call_user_func($this->callback); - } - - return $result; - } -} -``` - -This decorator could be added to any existing stream and used like so: - -```php -use GuzzleHttp\Psr7; - -$original = Psr7\stream_for('foo'); - -$eofStream = new EofCallbackStream($original, function () { - echo 'EOF!'; -}); - -$eofStream->read(2); -$eofStream->read(1); -// echoes "EOF!" -$eofStream->seek(0); -$eofStream->read(3); -// echoes "EOF!" -``` - - -## PHP StreamWrapper - -You can use the `GuzzleHttp\Psr7\StreamWrapper` class if you need to use a -PSR-7 stream as a PHP stream resource. - -Use the `GuzzleHttp\Psr7\StreamWrapper::getResource()` method to create a PHP -stream from a PSR-7 stream. - -```php -use GuzzleHttp\Psr7\StreamWrapper; - -$stream = GuzzleHttp\Psr7\stream_for('hello!'); -$resource = StreamWrapper::getResource($stream); -echo fread($resource, 6); // outputs hello! -``` - - -# Function API - -There are various functions available under the `GuzzleHttp\Psr7` namespace. - - -## `function str` - -`function str(MessageInterface $message)` - -Returns the string representation of an HTTP message. - -```php -$request = new GuzzleHttp\Psr7\Request('GET', 'http://example.com'); -echo GuzzleHttp\Psr7\str($request); -``` - - -## `function uri_for` - -`function uri_for($uri)` - -This function accepts a string or `Psr\Http\Message\UriInterface` and returns a -UriInterface for the given value. If the value is already a `UriInterface`, it -is returned as-is. - -```php -$uri = GuzzleHttp\Psr7\uri_for('http://example.com'); -assert($uri === GuzzleHttp\Psr7\uri_for($uri)); -``` - - -## `function stream_for` - -`function stream_for($resource = '', array $options = [])` - -Create a new stream based on the input type. - -Options is an associative array that can contain the following keys: - -* - metadata: Array of custom metadata. -* - size: Size of the stream. - -This method accepts the following `$resource` types: - -- `Psr\Http\Message\StreamInterface`: Returns the value as-is. -- `string`: Creates a stream object that uses the given string as the contents. -- `resource`: Creates a stream object that wraps the given PHP stream resource. -- `Iterator`: If the provided value implements `Iterator`, then a read-only - stream object will be created that wraps the given iterable. Each time the - stream is read from, data from the iterator will fill a buffer and will be - continuously called until the buffer is equal to the requested read size. - Subsequent read calls will first read from the buffer and then call `next` - on the underlying iterator until it is exhausted. -- `object` with `__toString()`: If the object has the `__toString()` method, - the object will be cast to a string and then a stream will be returned that - uses the string value. -- `NULL`: When `null` is passed, an empty stream object is returned. -- `callable` When a callable is passed, a read-only stream object will be - created that invokes the given callable. The callable is invoked with the - number of suggested bytes to read. The callable can return any number of - bytes, but MUST return `false` when there is no more data to return. The - stream object that wraps the callable will invoke the callable until the - number of requested bytes are available. Any additional bytes will be - buffered and used in subsequent reads. - -```php -$stream = GuzzleHttp\Psr7\stream_for('foo'); -$stream = GuzzleHttp\Psr7\stream_for(fopen('/path/to/file', 'r')); - -$generator = function ($bytes) { - for ($i = 0; $i < $bytes; $i++) { - yield ' '; - } -} - -$stream = GuzzleHttp\Psr7\stream_for($generator(100)); -``` - - -## `function parse_header` - -`function parse_header($header)` - -Parse an array of header values containing ";" separated data into an array of -associative arrays representing the header key value pair data of the header. -When a parameter does not contain a value, but just contains a key, this -function will inject a key with a '' string value. - - -## `function normalize_header` - -`function normalize_header($header)` - -Converts an array of header values that may contain comma separated headers -into an array of headers with no comma separated values. - - -## `function modify_request` - -`function modify_request(RequestInterface $request, array $changes)` - -Clone and modify a request with the given changes. This method is useful for -reducing the number of clones needed to mutate a message. - -The changes can be one of: - -- method: (string) Changes the HTTP method. -- set_headers: (array) Sets the given headers. -- remove_headers: (array) Remove the given headers. -- body: (mixed) Sets the given body. -- uri: (UriInterface) Set the URI. -- query: (string) Set the query string value of the URI. -- version: (string) Set the protocol version. - - -## `function rewind_body` - -`function rewind_body(MessageInterface $message)` - -Attempts to rewind a message body and throws an exception on failure. The body -of the message will only be rewound if a call to `tell()` returns a value other -than `0`. - - -## `function try_fopen` - -`function try_fopen($filename, $mode)` - -Safely opens a PHP stream resource using a filename. - -When fopen fails, PHP normally raises a warning. This function adds an error -handler that checks for errors and throws an exception instead. - - -## `function copy_to_string` - -`function copy_to_string(StreamInterface $stream, $maxLen = -1)` - -Copy the contents of a stream into a string until the given number of bytes -have been read. - - -## `function copy_to_stream` - -`function copy_to_stream(StreamInterface $source, StreamInterface $dest, $maxLen = -1)` - -Copy the contents of a stream into another stream until the given number of -bytes have been read. - - -## `function hash` - -`function hash(StreamInterface $stream, $algo, $rawOutput = false)` - -Calculate a hash of a Stream. This method reads the entire stream to calculate -a rolling hash (based on PHP's hash_init functions). - - -## `function readline` - -`function readline(StreamInterface $stream, $maxLength = null)` - -Read a line from the stream up to the maximum allowed buffer length. - - -## `function parse_request` - -`function parse_request($message)` - -Parses a request message string into a request object. - - -## `function parse_response` - -`function parse_response($message)` - -Parses a response message string into a response object. - - -## `function parse_query` - -`function parse_query($str, $urlEncoding = true)` - -Parse a query string into an associative array. - -If multiple values are found for the same key, the value of that key value pair -will become an array. This function does not parse nested PHP style arrays into -an associative array (e.g., `foo[a]=1&foo[b]=2` will be parsed into -`['foo[a]' => '1', 'foo[b]' => '2']`). - - -## `function build_query` - -`function build_query(array $params, $encoding = PHP_QUERY_RFC3986)` - -Build a query string from an array of key value pairs. - -This function can use the return value of parse_query() to build a query string. -This function does not modify the provided keys when an array is encountered -(like http_build_query would). - - -## `function mimetype_from_filename` - -`function mimetype_from_filename($filename)` - -Determines the mimetype of a file by looking at its extension. - - -## `function mimetype_from_extension` - -`function mimetype_from_extension($extension)` - -Maps a file extensions to a mimetype. - - -# Additional URI Methods - -Aside from the standard `Psr\Http\Message\UriInterface` implementation in form of the `GuzzleHttp\Psr7\Uri` class, -this library also provides additional functionality when working with URIs as static methods. - -## URI Types - -An instance of `Psr\Http\Message\UriInterface` can either be an absolute URI or a relative reference. -An absolute URI has a scheme. A relative reference is used to express a URI relative to another URI, -the base URI. Relative references can be divided into several forms according to -[RFC 3986 Section 4.2](https://tools.ietf.org/html/rfc3986#section-4.2): - -- network-path references, e.g. `//example.com/path` -- absolute-path references, e.g. `/path` -- relative-path references, e.g. `subpath` - -The following methods can be used to identify the type of the URI. - -### `GuzzleHttp\Psr7\Uri::isAbsolute` - -`public static function isAbsolute(UriInterface $uri): bool` - -Whether the URI is absolute, i.e. it has a scheme. - -### `GuzzleHttp\Psr7\Uri::isNetworkPathReference` - -`public static function isNetworkPathReference(UriInterface $uri): bool` - -Whether the URI is a network-path reference. A relative reference that begins with two slash characters is -termed an network-path reference. - -### `GuzzleHttp\Psr7\Uri::isAbsolutePathReference` - -`public static function isAbsolutePathReference(UriInterface $uri): bool` - -Whether the URI is a absolute-path reference. A relative reference that begins with a single slash character is -termed an absolute-path reference. - -### `GuzzleHttp\Psr7\Uri::isRelativePathReference` - -`public static function isRelativePathReference(UriInterface $uri): bool` - -Whether the URI is a relative-path reference. A relative reference that does not begin with a slash character is -termed a relative-path reference. - -### `GuzzleHttp\Psr7\Uri::isSameDocumentReference` - -`public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null): bool` - -Whether the URI is a same-document reference. A same-document reference refers to a URI that is, aside from its -fragment component, identical to the base URI. When no base URI is given, only an empty URI reference -(apart from its fragment) is considered a same-document reference. - -## URI Components - -Additional methods to work with URI components. - -### `GuzzleHttp\Psr7\Uri::isDefaultPort` - -`public static function isDefaultPort(UriInterface $uri): bool` - -Whether the URI has the default port of the current scheme. `Psr\Http\Message\UriInterface::getPort` may return null -or the standard port. This method can be used independently of the implementation. - -### `GuzzleHttp\Psr7\Uri::composeComponents` - -`public static function composeComponents($scheme, $authority, $path, $query, $fragment): string` - -Composes a URI reference string from its various components according to -[RFC 3986 Section 5.3](https://tools.ietf.org/html/rfc3986#section-5.3). Usually this method does not need to be called -manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__toString`. - -### `GuzzleHttp\Psr7\Uri::fromParts` - -`public static function fromParts(array $parts): UriInterface` - -Creates a URI from a hash of [`parse_url`](http://php.net/manual/en/function.parse-url.php) components. - - -### `GuzzleHttp\Psr7\Uri::withQueryValue` - -`public static function withQueryValue(UriInterface $uri, $key, $value): UriInterface` - -Creates a new URI with a specific query string value. Any existing query string values that exactly match the -provided key are removed and replaced with the given key value pair. A value of null will set the query string -key without a value, e.g. "key" instead of "key=value". - -### `GuzzleHttp\Psr7\Uri::withQueryValues` - -`public static function withQueryValues(UriInterface $uri, array $keyValueArray): UriInterface` - -Creates a new URI with multiple query string values. It has the same behavior as `withQueryValue()` but for an -associative array of key => value. - -### `GuzzleHttp\Psr7\Uri::withoutQueryValue` - -`public static function withoutQueryValue(UriInterface $uri, $key): UriInterface` - -Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the -provided key are removed. - -## Reference Resolution - -`GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according -to [RFC 3986 Section 5](https://tools.ietf.org/html/rfc3986#section-5). This is for example also what web browsers -do when resolving a link in a website based on the current request URI. - -### `GuzzleHttp\Psr7\UriResolver::resolve` - -`public static function resolve(UriInterface $base, UriInterface $rel): UriInterface` - -Converts the relative URI into a new URI that is resolved against the base URI. - -### `GuzzleHttp\Psr7\UriResolver::removeDotSegments` - -`public static function removeDotSegments(string $path): string` - -Removes dot segments from a path and returns the new path according to -[RFC 3986 Section 5.2.4](https://tools.ietf.org/html/rfc3986#section-5.2.4). - -### `GuzzleHttp\Psr7\UriResolver::relativize` - -`public static function relativize(UriInterface $base, UriInterface $target): UriInterface` - -Returns the target URI as a relative reference from the base URI. This method is the counterpart to resolve(): - -```php -(string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) -``` - -One use-case is to use the current request URI as base URI and then generate relative links in your documents -to reduce the document size or offer self-contained downloadable document archives. - -```php -$base = new Uri('http://example.com/a/b/'); -echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. -echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. -echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. -echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. -``` - -## Normalization and Comparison - -`GuzzleHttp\Psr7\UriNormalizer` provides methods to normalize and compare URIs according to -[RFC 3986 Section 6](https://tools.ietf.org/html/rfc3986#section-6). - -### `GuzzleHttp\Psr7\UriNormalizer::normalize` - -`public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS): UriInterface` - -Returns a normalized URI. The scheme and host component are already normalized to lowercase per PSR-7 UriInterface. -This methods adds additional normalizations that can be configured with the `$flags` parameter which is a bitmask -of normalizations to apply. The following normalizations are available: - -- `UriNormalizer::PRESERVING_NORMALIZATIONS` - - Default normalizations which only include the ones that preserve semantics. - -- `UriNormalizer::CAPITALIZE_PERCENT_ENCODING` - - All letters within a percent-encoding triplet (e.g., "%3A") are case-insensitive, and should be capitalized. - - Example: `http://example.org/a%c2%b1b` → `http://example.org/a%C2%B1b` - -- `UriNormalizer::DECODE_UNRESERVED_CHARACTERS` - - Decodes percent-encoded octets of unreserved characters. For consistency, percent-encoded octets in the ranges of - ALPHA (%41–%5A and %61–%7A), DIGIT (%30–%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E) should - not be created by URI producers and, when found in a URI, should be decoded to their corresponding unreserved - characters by URI normalizers. - - Example: `http://example.org/%7Eusern%61me/` → `http://example.org/~username/` - -- `UriNormalizer::CONVERT_EMPTY_PATH` - - Converts the empty path to "/" for http and https URIs. - - Example: `http://example.org` → `http://example.org/` - -- `UriNormalizer::REMOVE_DEFAULT_HOST` - - Removes the default host of the given URI scheme from the URI. Only the "file" scheme defines the default host - "localhost". All of `file:/myfile`, `file:///myfile`, and `file://localhost/myfile` are equivalent according to - RFC 3986. - - Example: `file://localhost/myfile` → `file:///myfile` - -- `UriNormalizer::REMOVE_DEFAULT_PORT` - - Removes the default port of the given URI scheme from the URI. - - Example: `http://example.org:80/` → `http://example.org/` - -- `UriNormalizer::REMOVE_DOT_SEGMENTS` - - Removes unnecessary dot-segments. Dot-segments in relative-path references are not removed as it would - change the semantics of the URI reference. - - Example: `http://example.org/../a/b/../c/./d.html` → `http://example.org/a/c/d.html` - -- `UriNormalizer::REMOVE_DUPLICATE_SLASHES` - - Paths which include two or more adjacent slashes are converted to one. Webservers usually ignore duplicate slashes - and treat those URIs equivalent. But in theory those URIs do not need to be equivalent. So this normalization - may change the semantics. Encoded slashes (%2F) are not removed. - - Example: `http://example.org//foo///bar.html` → `http://example.org/foo/bar.html` - -- `UriNormalizer::SORT_QUERY_PARAMETERS` - - Sort query parameters with their values in alphabetical order. However, the order of parameters in a URI may be - significant (this is not defined by the standard). So this normalization is not safe and may change the semantics - of the URI. - - Example: `?lang=en&article=fred` → `?article=fred&lang=en` - -### `GuzzleHttp\Psr7\UriNormalizer::isEquivalent` - -`public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS): bool` - -Whether two URIs can be considered equivalent. Both URIs are normalized automatically before comparison with the given -`$normalizations` bitmask. The method also accepts relative URI references and returns true when they are equivalent. -This of course assumes they will be resolved against the same base URI. If this is not the case, determination of -equivalence or difference of relative references does not mean anything. diff --git a/vendor/guzzlehttp/psr7/composer.json b/vendor/guzzlehttp/psr7/composer.json deleted file mode 100644 index 168a055..0000000 --- a/vendor/guzzlehttp/psr7/composer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "guzzlehttp/psr7", - "type": "library", - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": ["request", "response", "message", "stream", "http", "uri", "url", "psr-7"], - "license": "MIT", - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8", - "ext-zlib": "*" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": ["src/functions_include.php"] - }, - "autoload-dev": { - "psr-4": { - "GuzzleHttp\\Tests\\Psr7\\": "tests/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/AppendStream.php b/vendor/guzzlehttp/psr7/src/AppendStream.php deleted file mode 100644 index 472a0d6..0000000 --- a/vendor/guzzlehttp/psr7/src/AppendStream.php +++ /dev/null @@ -1,241 +0,0 @@ -addStream($stream); - } - } - - public function __toString() - { - try { - $this->rewind(); - return $this->getContents(); - } catch (\Exception $e) { - return ''; - } - } - - /** - * Add a stream to the AppendStream - * - * @param StreamInterface $stream Stream to append. Must be readable. - * - * @throws \InvalidArgumentException if the stream is not readable - */ - public function addStream(StreamInterface $stream) - { - if (!$stream->isReadable()) { - throw new \InvalidArgumentException('Each stream must be readable'); - } - - // The stream is only seekable if all streams are seekable - if (!$stream->isSeekable()) { - $this->seekable = false; - } - - $this->streams[] = $stream; - } - - public function getContents() - { - return copy_to_string($this); - } - - /** - * Closes each attached stream. - * - * {@inheritdoc} - */ - public function close() - { - $this->pos = $this->current = 0; - $this->seekable = true; - - foreach ($this->streams as $stream) { - $stream->close(); - } - - $this->streams = []; - } - - /** - * Detaches each attached stream. - * - * Returns null as it's not clear which underlying stream resource to return. - * - * {@inheritdoc} - */ - public function detach() - { - $this->pos = $this->current = 0; - $this->seekable = true; - - foreach ($this->streams as $stream) { - $stream->detach(); - } - - $this->streams = []; - } - - public function tell() - { - return $this->pos; - } - - /** - * Tries to calculate the size by adding the size of each stream. - * - * If any of the streams do not return a valid number, then the size of the - * append stream cannot be determined and null is returned. - * - * {@inheritdoc} - */ - public function getSize() - { - $size = 0; - - foreach ($this->streams as $stream) { - $s = $stream->getSize(); - if ($s === null) { - return null; - } - $size += $s; - } - - return $size; - } - - public function eof() - { - return !$this->streams || - ($this->current >= count($this->streams) - 1 && - $this->streams[$this->current]->eof()); - } - - public function rewind() - { - $this->seek(0); - } - - /** - * Attempts to seek to the given position. Only supports SEEK_SET. - * - * {@inheritdoc} - */ - public function seek($offset, $whence = SEEK_SET) - { - if (!$this->seekable) { - throw new \RuntimeException('This AppendStream is not seekable'); - } elseif ($whence !== SEEK_SET) { - throw new \RuntimeException('The AppendStream can only seek with SEEK_SET'); - } - - $this->pos = $this->current = 0; - - // Rewind each stream - foreach ($this->streams as $i => $stream) { - try { - $stream->rewind(); - } catch (\Exception $e) { - throw new \RuntimeException('Unable to seek stream ' - . $i . ' of the AppendStream', 0, $e); - } - } - - // Seek to the actual position by reading from each stream - while ($this->pos < $offset && !$this->eof()) { - $result = $this->read(min(8096, $offset - $this->pos)); - if ($result === '') { - break; - } - } - } - - /** - * Reads from all of the appended streams until the length is met or EOF. - * - * {@inheritdoc} - */ - public function read($length) - { - $buffer = ''; - $total = count($this->streams) - 1; - $remaining = $length; - $progressToNext = false; - - while ($remaining > 0) { - - // Progress to the next stream if needed. - if ($progressToNext || $this->streams[$this->current]->eof()) { - $progressToNext = false; - if ($this->current === $total) { - break; - } - $this->current++; - } - - $result = $this->streams[$this->current]->read($remaining); - - // Using a loose comparison here to match on '', false, and null - if ($result == null) { - $progressToNext = true; - continue; - } - - $buffer .= $result; - $remaining = $length - strlen($buffer); - } - - $this->pos += strlen($buffer); - - return $buffer; - } - - public function isReadable() - { - return true; - } - - public function isWritable() - { - return false; - } - - public function isSeekable() - { - return $this->seekable; - } - - public function write($string) - { - throw new \RuntimeException('Cannot write to an AppendStream'); - } - - public function getMetadata($key = null) - { - return $key ? null : []; - } -} diff --git a/vendor/guzzlehttp/psr7/src/BufferStream.php b/vendor/guzzlehttp/psr7/src/BufferStream.php deleted file mode 100644 index af4d4c2..0000000 --- a/vendor/guzzlehttp/psr7/src/BufferStream.php +++ /dev/null @@ -1,137 +0,0 @@ -hwm = $hwm; - } - - public function __toString() - { - return $this->getContents(); - } - - public function getContents() - { - $buffer = $this->buffer; - $this->buffer = ''; - - return $buffer; - } - - public function close() - { - $this->buffer = ''; - } - - public function detach() - { - $this->close(); - } - - public function getSize() - { - return strlen($this->buffer); - } - - public function isReadable() - { - return true; - } - - public function isWritable() - { - return true; - } - - public function isSeekable() - { - return false; - } - - public function rewind() - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET) - { - throw new \RuntimeException('Cannot seek a BufferStream'); - } - - public function eof() - { - return strlen($this->buffer) === 0; - } - - public function tell() - { - throw new \RuntimeException('Cannot determine the position of a BufferStream'); - } - - /** - * Reads data from the buffer. - */ - public function read($length) - { - $currentLength = strlen($this->buffer); - - if ($length >= $currentLength) { - // No need to slice the buffer because we don't have enough data. - $result = $this->buffer; - $this->buffer = ''; - } else { - // Slice up the result to provide a subset of the buffer. - $result = substr($this->buffer, 0, $length); - $this->buffer = substr($this->buffer, $length); - } - - return $result; - } - - /** - * Writes data to the buffer. - */ - public function write($string) - { - $this->buffer .= $string; - - // TODO: What should happen here? - if (strlen($this->buffer) >= $this->hwm) { - return false; - } - - return strlen($string); - } - - public function getMetadata($key = null) - { - if ($key == 'hwm') { - return $this->hwm; - } - - return $key ? null : []; - } -} diff --git a/vendor/guzzlehttp/psr7/src/CachingStream.php b/vendor/guzzlehttp/psr7/src/CachingStream.php deleted file mode 100644 index ed68f08..0000000 --- a/vendor/guzzlehttp/psr7/src/CachingStream.php +++ /dev/null @@ -1,138 +0,0 @@ -remoteStream = $stream; - $this->stream = $target ?: new Stream(fopen('php://temp', 'r+')); - } - - public function getSize() - { - return max($this->stream->getSize(), $this->remoteStream->getSize()); - } - - public function rewind() - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET) - { - if ($whence == SEEK_SET) { - $byte = $offset; - } elseif ($whence == SEEK_CUR) { - $byte = $offset + $this->tell(); - } elseif ($whence == SEEK_END) { - $size = $this->remoteStream->getSize(); - if ($size === null) { - $size = $this->cacheEntireStream(); - } - $byte = $size + $offset; - } else { - throw new \InvalidArgumentException('Invalid whence'); - } - - $diff = $byte - $this->stream->getSize(); - - if ($diff > 0) { - // Read the remoteStream until we have read in at least the amount - // of bytes requested, or we reach the end of the file. - while ($diff > 0 && !$this->remoteStream->eof()) { - $this->read($diff); - $diff = $byte - $this->stream->getSize(); - } - } else { - // We can just do a normal seek since we've already seen this byte. - $this->stream->seek($byte); - } - } - - public function read($length) - { - // Perform a regular read on any previously read data from the buffer - $data = $this->stream->read($length); - $remaining = $length - strlen($data); - - // More data was requested so read from the remote stream - if ($remaining) { - // If data was written to the buffer in a position that would have - // been filled from the remote stream, then we must skip bytes on - // the remote stream to emulate overwriting bytes from that - // position. This mimics the behavior of other PHP stream wrappers. - $remoteData = $this->remoteStream->read( - $remaining + $this->skipReadBytes - ); - - if ($this->skipReadBytes) { - $len = strlen($remoteData); - $remoteData = substr($remoteData, $this->skipReadBytes); - $this->skipReadBytes = max(0, $this->skipReadBytes - $len); - } - - $data .= $remoteData; - $this->stream->write($remoteData); - } - - return $data; - } - - public function write($string) - { - // When appending to the end of the currently read stream, you'll want - // to skip bytes from being read from the remote stream to emulate - // other stream wrappers. Basically replacing bytes of data of a fixed - // length. - $overflow = (strlen($string) + $this->tell()) - $this->remoteStream->tell(); - if ($overflow > 0) { - $this->skipReadBytes += $overflow; - } - - return $this->stream->write($string); - } - - public function eof() - { - return $this->stream->eof() && $this->remoteStream->eof(); - } - - /** - * Close both the remote stream and buffer stream - */ - public function close() - { - $this->remoteStream->close() && $this->stream->close(); - } - - private function cacheEntireStream() - { - $target = new FnStream(['write' => 'strlen']); - copy_to_stream($this, $target); - - return $this->tell(); - } -} diff --git a/vendor/guzzlehttp/psr7/src/DroppingStream.php b/vendor/guzzlehttp/psr7/src/DroppingStream.php deleted file mode 100644 index 8935c80..0000000 --- a/vendor/guzzlehttp/psr7/src/DroppingStream.php +++ /dev/null @@ -1,42 +0,0 @@ -stream = $stream; - $this->maxLength = $maxLength; - } - - public function write($string) - { - $diff = $this->maxLength - $this->stream->getSize(); - - // Begin returning 0 when the underlying stream is too large. - if ($diff <= 0) { - return 0; - } - - // Write the stream or a subset of the stream if needed. - if (strlen($string) < $diff) { - return $this->stream->write($string); - } - - return $this->stream->write(substr($string, 0, $diff)); - } -} diff --git a/vendor/guzzlehttp/psr7/src/FnStream.php b/vendor/guzzlehttp/psr7/src/FnStream.php deleted file mode 100644 index 73daea6..0000000 --- a/vendor/guzzlehttp/psr7/src/FnStream.php +++ /dev/null @@ -1,158 +0,0 @@ -methods = $methods; - - // Create the functions on the class - foreach ($methods as $name => $fn) { - $this->{'_fn_' . $name} = $fn; - } - } - - /** - * Lazily determine which methods are not implemented. - * @throws \BadMethodCallException - */ - public function __get($name) - { - throw new \BadMethodCallException(str_replace('_fn_', '', $name) - . '() is not implemented in the FnStream'); - } - - /** - * The close method is called on the underlying stream only if possible. - */ - public function __destruct() - { - if (isset($this->_fn_close)) { - call_user_func($this->_fn_close); - } - } - - /** - * An unserialize would allow the __destruct to run when the unserialized value goes out of scope. - * @throws \LogicException - */ - public function __wakeup() - { - throw new \LogicException('FnStream should never be unserialized'); - } - - /** - * Adds custom functionality to an underlying stream by intercepting - * specific method calls. - * - * @param StreamInterface $stream Stream to decorate - * @param array $methods Hash of method name to a closure - * - * @return FnStream - */ - public static function decorate(StreamInterface $stream, array $methods) - { - // If any of the required methods were not provided, then simply - // proxy to the decorated stream. - foreach (array_diff(self::$slots, array_keys($methods)) as $diff) { - $methods[$diff] = [$stream, $diff]; - } - - return new self($methods); - } - - public function __toString() - { - return call_user_func($this->_fn___toString); - } - - public function close() - { - return call_user_func($this->_fn_close); - } - - public function detach() - { - return call_user_func($this->_fn_detach); - } - - public function getSize() - { - return call_user_func($this->_fn_getSize); - } - - public function tell() - { - return call_user_func($this->_fn_tell); - } - - public function eof() - { - return call_user_func($this->_fn_eof); - } - - public function isSeekable() - { - return call_user_func($this->_fn_isSeekable); - } - - public function rewind() - { - call_user_func($this->_fn_rewind); - } - - public function seek($offset, $whence = SEEK_SET) - { - call_user_func($this->_fn_seek, $offset, $whence); - } - - public function isWritable() - { - return call_user_func($this->_fn_isWritable); - } - - public function write($string) - { - return call_user_func($this->_fn_write, $string); - } - - public function isReadable() - { - return call_user_func($this->_fn_isReadable); - } - - public function read($length) - { - return call_user_func($this->_fn_read, $length); - } - - public function getContents() - { - return call_user_func($this->_fn_getContents); - } - - public function getMetadata($key = null) - { - return call_user_func($this->_fn_getMetadata, $key); - } -} diff --git a/vendor/guzzlehttp/psr7/src/InflateStream.php b/vendor/guzzlehttp/psr7/src/InflateStream.php deleted file mode 100644 index 5e4f602..0000000 --- a/vendor/guzzlehttp/psr7/src/InflateStream.php +++ /dev/null @@ -1,52 +0,0 @@ -read(10); - $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header); - // Skip the header, that is 10 + length of filename + 1 (nil) bytes - $stream = new LimitStream($stream, -1, 10 + $filenameHeaderLength); - $resource = StreamWrapper::getResource($stream); - stream_filter_append($resource, 'zlib.inflate', STREAM_FILTER_READ); - $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource)); - } - - /** - * @param StreamInterface $stream - * @param $header - * @return int - */ - private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header) - { - $filename_header_length = 0; - - if (substr(bin2hex($header), 6, 2) === '08') { - // we have a filename, read until nil - $filename_header_length = 1; - while ($stream->read(1) !== chr(0)) { - $filename_header_length++; - } - } - - return $filename_header_length; - } -} diff --git a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php b/vendor/guzzlehttp/psr7/src/LazyOpenStream.php deleted file mode 100644 index 02cec3a..0000000 --- a/vendor/guzzlehttp/psr7/src/LazyOpenStream.php +++ /dev/null @@ -1,39 +0,0 @@ -filename = $filename; - $this->mode = $mode; - } - - /** - * Creates the underlying stream lazily when required. - * - * @return StreamInterface - */ - protected function createStream() - { - return stream_for(try_fopen($this->filename, $this->mode)); - } -} diff --git a/vendor/guzzlehttp/psr7/src/LimitStream.php b/vendor/guzzlehttp/psr7/src/LimitStream.php deleted file mode 100644 index e4f239e..0000000 --- a/vendor/guzzlehttp/psr7/src/LimitStream.php +++ /dev/null @@ -1,155 +0,0 @@ -stream = $stream; - $this->setLimit($limit); - $this->setOffset($offset); - } - - public function eof() - { - // Always return true if the underlying stream is EOF - if ($this->stream->eof()) { - return true; - } - - // No limit and the underlying stream is not at EOF - if ($this->limit == -1) { - return false; - } - - return $this->stream->tell() >= $this->offset + $this->limit; - } - - /** - * Returns the size of the limited subset of data - * {@inheritdoc} - */ - public function getSize() - { - if (null === ($length = $this->stream->getSize())) { - return null; - } elseif ($this->limit == -1) { - return $length - $this->offset; - } else { - return min($this->limit, $length - $this->offset); - } - } - - /** - * Allow for a bounded seek on the read limited stream - * {@inheritdoc} - */ - public function seek($offset, $whence = SEEK_SET) - { - if ($whence !== SEEK_SET || $offset < 0) { - throw new \RuntimeException(sprintf( - 'Cannot seek to offset %s with whence %s', - $offset, - $whence - )); - } - - $offset += $this->offset; - - if ($this->limit !== -1) { - if ($offset > $this->offset + $this->limit) { - $offset = $this->offset + $this->limit; - } - } - - $this->stream->seek($offset); - } - - /** - * Give a relative tell() - * {@inheritdoc} - */ - public function tell() - { - return $this->stream->tell() - $this->offset; - } - - /** - * Set the offset to start limiting from - * - * @param int $offset Offset to seek to and begin byte limiting from - * - * @throws \RuntimeException if the stream cannot be seeked. - */ - public function setOffset($offset) - { - $current = $this->stream->tell(); - - if ($current !== $offset) { - // If the stream cannot seek to the offset position, then read to it - if ($this->stream->isSeekable()) { - $this->stream->seek($offset); - } elseif ($current > $offset) { - throw new \RuntimeException("Could not seek to stream offset $offset"); - } else { - $this->stream->read($offset - $current); - } - } - - $this->offset = $offset; - } - - /** - * Set the limit of bytes that the decorator allows to be read from the - * stream. - * - * @param int $limit Number of bytes to allow to be read from the stream. - * Use -1 for no limit. - */ - public function setLimit($limit) - { - $this->limit = $limit; - } - - public function read($length) - { - if ($this->limit == -1) { - return $this->stream->read($length); - } - - // Check if the current position is less than the total allowed - // bytes + original offset - $remaining = ($this->offset + $this->limit) - $this->stream->tell(); - if ($remaining > 0) { - // Only return the amount of requested data, ensuring that the byte - // limit is not exceeded - return $this->stream->read(min($remaining, $length)); - } - - return ''; - } -} diff --git a/vendor/guzzlehttp/psr7/src/MessageTrait.php b/vendor/guzzlehttp/psr7/src/MessageTrait.php deleted file mode 100644 index a7966d1..0000000 --- a/vendor/guzzlehttp/psr7/src/MessageTrait.php +++ /dev/null @@ -1,213 +0,0 @@ - array of values */ - private $headers = []; - - /** @var array Map of lowercase header name => original name at registration */ - private $headerNames = []; - - /** @var string */ - private $protocol = '1.1'; - - /** @var StreamInterface */ - private $stream; - - public function getProtocolVersion() - { - return $this->protocol; - } - - public function withProtocolVersion($version) - { - if ($this->protocol === $version) { - return $this; - } - - $new = clone $this; - $new->protocol = $version; - return $new; - } - - public function getHeaders() - { - return $this->headers; - } - - public function hasHeader($header) - { - return isset($this->headerNames[strtolower($header)]); - } - - public function getHeader($header) - { - $header = strtolower($header); - - if (!isset($this->headerNames[$header])) { - return []; - } - - $header = $this->headerNames[$header]; - - return $this->headers[$header]; - } - - public function getHeaderLine($header) - { - return implode(', ', $this->getHeader($header)); - } - - public function withHeader($header, $value) - { - $this->assertHeader($header); - $value = $this->normalizeHeaderValue($value); - $normalized = strtolower($header); - - $new = clone $this; - if (isset($new->headerNames[$normalized])) { - unset($new->headers[$new->headerNames[$normalized]]); - } - $new->headerNames[$normalized] = $header; - $new->headers[$header] = $value; - - return $new; - } - - public function withAddedHeader($header, $value) - { - $this->assertHeader($header); - $value = $this->normalizeHeaderValue($value); - $normalized = strtolower($header); - - $new = clone $this; - if (isset($new->headerNames[$normalized])) { - $header = $this->headerNames[$normalized]; - $new->headers[$header] = array_merge($this->headers[$header], $value); - } else { - $new->headerNames[$normalized] = $header; - $new->headers[$header] = $value; - } - - return $new; - } - - public function withoutHeader($header) - { - $normalized = strtolower($header); - - if (!isset($this->headerNames[$normalized])) { - return $this; - } - - $header = $this->headerNames[$normalized]; - - $new = clone $this; - unset($new->headers[$header], $new->headerNames[$normalized]); - - return $new; - } - - public function getBody() - { - if (!$this->stream) { - $this->stream = stream_for(''); - } - - return $this->stream; - } - - public function withBody(StreamInterface $body) - { - if ($body === $this->stream) { - return $this; - } - - $new = clone $this; - $new->stream = $body; - return $new; - } - - private function setHeaders(array $headers) - { - $this->headerNames = $this->headers = []; - foreach ($headers as $header => $value) { - if (is_int($header)) { - // Numeric array keys are converted to int by PHP but having a header name '123' is not forbidden by the spec - // and also allowed in withHeader(). So we need to cast it to string again for the following assertion to pass. - $header = (string) $header; - } - $this->assertHeader($header); - $value = $this->normalizeHeaderValue($value); - $normalized = strtolower($header); - if (isset($this->headerNames[$normalized])) { - $header = $this->headerNames[$normalized]; - $this->headers[$header] = array_merge($this->headers[$header], $value); - } else { - $this->headerNames[$normalized] = $header; - $this->headers[$header] = $value; - } - } - } - - private function normalizeHeaderValue($value) - { - if (!is_array($value)) { - return $this->trimHeaderValues([$value]); - } - - if (count($value) === 0) { - throw new \InvalidArgumentException('Header value can not be an empty array.'); - } - - return $this->trimHeaderValues($value); - } - - /** - * Trims whitespace from the header values. - * - * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field. - * - * header-field = field-name ":" OWS field-value OWS - * OWS = *( SP / HTAB ) - * - * @param string[] $values Header values - * - * @return string[] Trimmed header values - * - * @see https://tools.ietf.org/html/rfc7230#section-3.2.4 - */ - private function trimHeaderValues(array $values) - { - return array_map(function ($value) { - if (!is_scalar($value) && null !== $value) { - throw new \InvalidArgumentException(sprintf( - 'Header value must be scalar or null but %s provided.', - is_object($value) ? get_class($value) : gettype($value) - )); - } - - return trim((string) $value, " \t"); - }, $values); - } - - private function assertHeader($header) - { - if (!is_string($header)) { - throw new \InvalidArgumentException(sprintf( - 'Header name must be a string but %s provided.', - is_object($header) ? get_class($header) : gettype($header) - )); - } - - if ($header === '') { - throw new \InvalidArgumentException('Header name can not be empty.'); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/MultipartStream.php b/vendor/guzzlehttp/psr7/src/MultipartStream.php deleted file mode 100644 index c0fd584..0000000 --- a/vendor/guzzlehttp/psr7/src/MultipartStream.php +++ /dev/null @@ -1,153 +0,0 @@ -boundary = $boundary ?: sha1(uniqid('', true)); - $this->stream = $this->createStream($elements); - } - - /** - * Get the boundary - * - * @return string - */ - public function getBoundary() - { - return $this->boundary; - } - - public function isWritable() - { - return false; - } - - /** - * Get the headers needed before transferring the content of a POST file - */ - private function getHeaders(array $headers) - { - $str = ''; - foreach ($headers as $key => $value) { - $str .= "{$key}: {$value}\r\n"; - } - - return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n"; - } - - /** - * Create the aggregate stream that will be used to upload the POST data - */ - protected function createStream(array $elements) - { - $stream = new AppendStream(); - - foreach ($elements as $element) { - $this->addElement($stream, $element); - } - - // Add the trailing boundary with CRLF - $stream->addStream(stream_for("--{$this->boundary}--\r\n")); - - return $stream; - } - - private function addElement(AppendStream $stream, array $element) - { - foreach (['contents', 'name'] as $key) { - if (!array_key_exists($key, $element)) { - throw new \InvalidArgumentException("A '{$key}' key is required"); - } - } - - $element['contents'] = stream_for($element['contents']); - - if (empty($element['filename'])) { - $uri = $element['contents']->getMetadata('uri'); - if (substr($uri, 0, 6) !== 'php://') { - $element['filename'] = $uri; - } - } - - list($body, $headers) = $this->createElement( - $element['name'], - $element['contents'], - isset($element['filename']) ? $element['filename'] : null, - isset($element['headers']) ? $element['headers'] : [] - ); - - $stream->addStream(stream_for($this->getHeaders($headers))); - $stream->addStream($body); - $stream->addStream(stream_for("\r\n")); - } - - /** - * @return array - */ - private function createElement($name, StreamInterface $stream, $filename, array $headers) - { - // Set a default content-disposition header if one was no provided - $disposition = $this->getHeader($headers, 'content-disposition'); - if (!$disposition) { - $headers['Content-Disposition'] = ($filename === '0' || $filename) - ? sprintf('form-data; name="%s"; filename="%s"', - $name, - basename($filename)) - : "form-data; name=\"{$name}\""; - } - - // Set a default content-length header if one was no provided - $length = $this->getHeader($headers, 'content-length'); - if (!$length) { - if ($length = $stream->getSize()) { - $headers['Content-Length'] = (string) $length; - } - } - - // Set a default Content-Type if one was not supplied - $type = $this->getHeader($headers, 'content-type'); - if (!$type && ($filename === '0' || $filename)) { - if ($type = mimetype_from_filename($filename)) { - $headers['Content-Type'] = $type; - } - } - - return [$stream, $headers]; - } - - private function getHeader(array $headers, $key) - { - $lowercaseHeader = strtolower($key); - foreach ($headers as $k => $v) { - if (strtolower($k) === $lowercaseHeader) { - return $v; - } - } - - return null; - } -} diff --git a/vendor/guzzlehttp/psr7/src/NoSeekStream.php b/vendor/guzzlehttp/psr7/src/NoSeekStream.php deleted file mode 100644 index 2332218..0000000 --- a/vendor/guzzlehttp/psr7/src/NoSeekStream.php +++ /dev/null @@ -1,22 +0,0 @@ -source = $source; - $this->size = isset($options['size']) ? $options['size'] : null; - $this->metadata = isset($options['metadata']) ? $options['metadata'] : []; - $this->buffer = new BufferStream(); - } - - public function __toString() - { - try { - return copy_to_string($this); - } catch (\Exception $e) { - return ''; - } - } - - public function close() - { - $this->detach(); - } - - public function detach() - { - $this->tellPos = false; - $this->source = null; - } - - public function getSize() - { - return $this->size; - } - - public function tell() - { - return $this->tellPos; - } - - public function eof() - { - return !$this->source; - } - - public function isSeekable() - { - return false; - } - - public function rewind() - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET) - { - throw new \RuntimeException('Cannot seek a PumpStream'); - } - - public function isWritable() - { - return false; - } - - public function write($string) - { - throw new \RuntimeException('Cannot write to a PumpStream'); - } - - public function isReadable() - { - return true; - } - - public function read($length) - { - $data = $this->buffer->read($length); - $readLen = strlen($data); - $this->tellPos += $readLen; - $remaining = $length - $readLen; - - if ($remaining) { - $this->pump($remaining); - $data .= $this->buffer->read($remaining); - $this->tellPos += strlen($data) - $readLen; - } - - return $data; - } - - public function getContents() - { - $result = ''; - while (!$this->eof()) { - $result .= $this->read(1000000); - } - - return $result; - } - - public function getMetadata($key = null) - { - if (!$key) { - return $this->metadata; - } - - return isset($this->metadata[$key]) ? $this->metadata[$key] : null; - } - - private function pump($length) - { - if ($this->source) { - do { - $data = call_user_func($this->source, $length); - if ($data === false || $data === null) { - $this->source = null; - return; - } - $this->buffer->write($data); - $length -= strlen($data); - } while ($length > 0); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/Request.php b/vendor/guzzlehttp/psr7/src/Request.php deleted file mode 100644 index 59f337d..0000000 --- a/vendor/guzzlehttp/psr7/src/Request.php +++ /dev/null @@ -1,151 +0,0 @@ -assertMethod($method); - if (!($uri instanceof UriInterface)) { - $uri = new Uri($uri); - } - - $this->method = strtoupper($method); - $this->uri = $uri; - $this->setHeaders($headers); - $this->protocol = $version; - - if (!isset($this->headerNames['host'])) { - $this->updateHostFromUri(); - } - - if ($body !== '' && $body !== null) { - $this->stream = stream_for($body); - } - } - - public function getRequestTarget() - { - if ($this->requestTarget !== null) { - return $this->requestTarget; - } - - $target = $this->uri->getPath(); - if ($target == '') { - $target = '/'; - } - if ($this->uri->getQuery() != '') { - $target .= '?' . $this->uri->getQuery(); - } - - return $target; - } - - public function withRequestTarget($requestTarget) - { - if (preg_match('#\s#', $requestTarget)) { - throw new InvalidArgumentException( - 'Invalid request target provided; cannot contain whitespace' - ); - } - - $new = clone $this; - $new->requestTarget = $requestTarget; - return $new; - } - - public function getMethod() - { - return $this->method; - } - - public function withMethod($method) - { - $this->assertMethod($method); - $new = clone $this; - $new->method = strtoupper($method); - return $new; - } - - public function getUri() - { - return $this->uri; - } - - public function withUri(UriInterface $uri, $preserveHost = false) - { - if ($uri === $this->uri) { - return $this; - } - - $new = clone $this; - $new->uri = $uri; - - if (!$preserveHost || !isset($this->headerNames['host'])) { - $new->updateHostFromUri(); - } - - return $new; - } - - private function updateHostFromUri() - { - $host = $this->uri->getHost(); - - if ($host == '') { - return; - } - - if (($port = $this->uri->getPort()) !== null) { - $host .= ':' . $port; - } - - if (isset($this->headerNames['host'])) { - $header = $this->headerNames['host']; - } else { - $header = 'Host'; - $this->headerNames['host'] = 'Host'; - } - // Ensure Host is the first header. - // See: http://tools.ietf.org/html/rfc7230#section-5.4 - $this->headers = [$header => [$host]] + $this->headers; - } - - private function assertMethod($method) - { - if (!is_string($method) || $method === '') { - throw new \InvalidArgumentException('Method must be a non-empty string.'); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/Response.php b/vendor/guzzlehttp/psr7/src/Response.php deleted file mode 100644 index e7e04d8..0000000 --- a/vendor/guzzlehttp/psr7/src/Response.php +++ /dev/null @@ -1,154 +0,0 @@ - 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-status', - 208 => 'Already Reported', - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 306 => 'Switch Proxy', - 307 => 'Temporary Redirect', - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Time-out', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Large', - 415 => 'Unsupported Media Type', - 416 => 'Requested range not satisfiable', - 417 => 'Expectation Failed', - 418 => 'I\'m a teapot', - 422 => 'Unprocessable Entity', - 423 => 'Locked', - 424 => 'Failed Dependency', - 425 => 'Unordered Collection', - 426 => 'Upgrade Required', - 428 => 'Precondition Required', - 429 => 'Too Many Requests', - 431 => 'Request Header Fields Too Large', - 451 => 'Unavailable For Legal Reasons', - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Time-out', - 505 => 'HTTP Version not supported', - 506 => 'Variant Also Negotiates', - 507 => 'Insufficient Storage', - 508 => 'Loop Detected', - 511 => 'Network Authentication Required', - ]; - - /** @var string */ - private $reasonPhrase = ''; - - /** @var int */ - private $statusCode = 200; - - /** - * @param int $status Status code - * @param array $headers Response headers - * @param string|null|resource|StreamInterface $body Response body - * @param string $version Protocol version - * @param string|null $reason Reason phrase (when empty a default will be used based on the status code) - */ - public function __construct( - $status = 200, - array $headers = [], - $body = null, - $version = '1.1', - $reason = null - ) { - $this->assertStatusCodeIsInteger($status); - $status = (int) $status; - $this->assertStatusCodeRange($status); - - $this->statusCode = $status; - - if ($body !== '' && $body !== null) { - $this->stream = stream_for($body); - } - - $this->setHeaders($headers); - if ($reason == '' && isset(self::$phrases[$this->statusCode])) { - $this->reasonPhrase = self::$phrases[$this->statusCode]; - } else { - $this->reasonPhrase = (string) $reason; - } - - $this->protocol = $version; - } - - public function getStatusCode() - { - return $this->statusCode; - } - - public function getReasonPhrase() - { - return $this->reasonPhrase; - } - - public function withStatus($code, $reasonPhrase = '') - { - $this->assertStatusCodeIsInteger($code); - $code = (int) $code; - $this->assertStatusCodeRange($code); - - $new = clone $this; - $new->statusCode = $code; - if ($reasonPhrase == '' && isset(self::$phrases[$new->statusCode])) { - $reasonPhrase = self::$phrases[$new->statusCode]; - } - $new->reasonPhrase = $reasonPhrase; - return $new; - } - - private function assertStatusCodeIsInteger($statusCode) - { - if (filter_var($statusCode, FILTER_VALIDATE_INT) === false) { - throw new \InvalidArgumentException('Status code must be an integer value.'); - } - } - - private function assertStatusCodeRange($statusCode) - { - if ($statusCode < 100 || $statusCode >= 600) { - throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.'); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/Rfc7230.php b/vendor/guzzlehttp/psr7/src/Rfc7230.php deleted file mode 100644 index 505e474..0000000 --- a/vendor/guzzlehttp/psr7/src/Rfc7230.php +++ /dev/null @@ -1,18 +0,0 @@ -@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m"; - const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)"; -} diff --git a/vendor/guzzlehttp/psr7/src/ServerRequest.php b/vendor/guzzlehttp/psr7/src/ServerRequest.php deleted file mode 100644 index 1a09a6c..0000000 --- a/vendor/guzzlehttp/psr7/src/ServerRequest.php +++ /dev/null @@ -1,376 +0,0 @@ -serverParams = $serverParams; - - parent::__construct($method, $uri, $headers, $body, $version); - } - - /** - * Return an UploadedFile instance array. - * - * @param array $files A array which respect $_FILES structure - * @throws InvalidArgumentException for unrecognized values - * @return array - */ - public static function normalizeFiles(array $files) - { - $normalized = []; - - foreach ($files as $key => $value) { - if ($value instanceof UploadedFileInterface) { - $normalized[$key] = $value; - } elseif (is_array($value) && isset($value['tmp_name'])) { - $normalized[$key] = self::createUploadedFileFromSpec($value); - } elseif (is_array($value)) { - $normalized[$key] = self::normalizeFiles($value); - continue; - } else { - throw new InvalidArgumentException('Invalid value in files specification'); - } - } - - return $normalized; - } - - /** - * Create and return an UploadedFile instance from a $_FILES specification. - * - * If the specification represents an array of values, this method will - * delegate to normalizeNestedFileSpec() and return that return value. - * - * @param array $value $_FILES struct - * @return array|UploadedFileInterface - */ - private static function createUploadedFileFromSpec(array $value) - { - if (is_array($value['tmp_name'])) { - return self::normalizeNestedFileSpec($value); - } - - return new UploadedFile( - $value['tmp_name'], - (int) $value['size'], - (int) $value['error'], - $value['name'], - $value['type'] - ); - } - - /** - * Normalize an array of file specifications. - * - * Loops through all nested files and returns a normalized array of - * UploadedFileInterface instances. - * - * @param array $files - * @return UploadedFileInterface[] - */ - private static function normalizeNestedFileSpec(array $files = []) - { - $normalizedFiles = []; - - foreach (array_keys($files['tmp_name']) as $key) { - $spec = [ - 'tmp_name' => $files['tmp_name'][$key], - 'size' => $files['size'][$key], - 'error' => $files['error'][$key], - 'name' => $files['name'][$key], - 'type' => $files['type'][$key], - ]; - $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); - } - - return $normalizedFiles; - } - - /** - * Return a ServerRequest populated with superglobals: - * $_GET - * $_POST - * $_COOKIE - * $_FILES - * $_SERVER - * - * @return ServerRequestInterface - */ - public static function fromGlobals() - { - $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; - $headers = getallheaders(); - $uri = self::getUriFromGlobals(); - $body = new CachingStream(new LazyOpenStream('php://input', 'r+')); - $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; - - $serverRequest = new ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); - - return $serverRequest - ->withCookieParams($_COOKIE) - ->withQueryParams($_GET) - ->withParsedBody($_POST) - ->withUploadedFiles(self::normalizeFiles($_FILES)); - } - - private static function extractHostAndPortFromAuthority($authority) - { - $uri = 'http://'.$authority; - $parts = parse_url($uri); - if (false === $parts) { - return [null, null]; - } - - $host = isset($parts['host']) ? $parts['host'] : null; - $port = isset($parts['port']) ? $parts['port'] : null; - - return [$host, $port]; - } - - /** - * Get a Uri populated with values from $_SERVER. - * - * @return UriInterface - */ - public static function getUriFromGlobals() - { - $uri = new Uri(''); - - $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http'); - - $hasPort = false; - if (isset($_SERVER['HTTP_HOST'])) { - list($host, $port) = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']); - if ($host !== null) { - $uri = $uri->withHost($host); - } - - if ($port !== null) { - $hasPort = true; - $uri = $uri->withPort($port); - } - } elseif (isset($_SERVER['SERVER_NAME'])) { - $uri = $uri->withHost($_SERVER['SERVER_NAME']); - } elseif (isset($_SERVER['SERVER_ADDR'])) { - $uri = $uri->withHost($_SERVER['SERVER_ADDR']); - } - - if (!$hasPort && isset($_SERVER['SERVER_PORT'])) { - $uri = $uri->withPort($_SERVER['SERVER_PORT']); - } - - $hasQuery = false; - if (isset($_SERVER['REQUEST_URI'])) { - $requestUriParts = explode('?', $_SERVER['REQUEST_URI'], 2); - $uri = $uri->withPath($requestUriParts[0]); - if (isset($requestUriParts[1])) { - $hasQuery = true; - $uri = $uri->withQuery($requestUriParts[1]); - } - } - - if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) { - $uri = $uri->withQuery($_SERVER['QUERY_STRING']); - } - - return $uri; - } - - - /** - * {@inheritdoc} - */ - public function getServerParams() - { - return $this->serverParams; - } - - /** - * {@inheritdoc} - */ - public function getUploadedFiles() - { - return $this->uploadedFiles; - } - - /** - * {@inheritdoc} - */ - public function withUploadedFiles(array $uploadedFiles) - { - $new = clone $this; - $new->uploadedFiles = $uploadedFiles; - - return $new; - } - - /** - * {@inheritdoc} - */ - public function getCookieParams() - { - return $this->cookieParams; - } - - /** - * {@inheritdoc} - */ - public function withCookieParams(array $cookies) - { - $new = clone $this; - $new->cookieParams = $cookies; - - return $new; - } - - /** - * {@inheritdoc} - */ - public function getQueryParams() - { - return $this->queryParams; - } - - /** - * {@inheritdoc} - */ - public function withQueryParams(array $query) - { - $new = clone $this; - $new->queryParams = $query; - - return $new; - } - - /** - * {@inheritdoc} - */ - public function getParsedBody() - { - return $this->parsedBody; - } - - /** - * {@inheritdoc} - */ - public function withParsedBody($data) - { - $new = clone $this; - $new->parsedBody = $data; - - return $new; - } - - /** - * {@inheritdoc} - */ - public function getAttributes() - { - return $this->attributes; - } - - /** - * {@inheritdoc} - */ - public function getAttribute($attribute, $default = null) - { - if (false === array_key_exists($attribute, $this->attributes)) { - return $default; - } - - return $this->attributes[$attribute]; - } - - /** - * {@inheritdoc} - */ - public function withAttribute($attribute, $value) - { - $new = clone $this; - $new->attributes[$attribute] = $value; - - return $new; - } - - /** - * {@inheritdoc} - */ - public function withoutAttribute($attribute) - { - if (false === array_key_exists($attribute, $this->attributes)) { - return $this; - } - - $new = clone $this; - unset($new->attributes[$attribute]); - - return $new; - } -} diff --git a/vendor/guzzlehttp/psr7/src/Stream.php b/vendor/guzzlehttp/psr7/src/Stream.php deleted file mode 100644 index d9e7409..0000000 --- a/vendor/guzzlehttp/psr7/src/Stream.php +++ /dev/null @@ -1,267 +0,0 @@ -size = $options['size']; - } - - $this->customMetadata = isset($options['metadata']) - ? $options['metadata'] - : []; - - $this->stream = $stream; - $meta = stream_get_meta_data($this->stream); - $this->seekable = $meta['seekable']; - $this->readable = (bool)preg_match(self::READABLE_MODES, $meta['mode']); - $this->writable = (bool)preg_match(self::WRITABLE_MODES, $meta['mode']); - $this->uri = $this->getMetadata('uri'); - } - - /** - * Closes the stream when the destructed - */ - public function __destruct() - { - $this->close(); - } - - public function __toString() - { - try { - $this->seek(0); - return (string) stream_get_contents($this->stream); - } catch (\Exception $e) { - return ''; - } - } - - public function getContents() - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - $contents = stream_get_contents($this->stream); - - if ($contents === false) { - throw new \RuntimeException('Unable to read stream contents'); - } - - return $contents; - } - - public function close() - { - if (isset($this->stream)) { - if (is_resource($this->stream)) { - fclose($this->stream); - } - $this->detach(); - } - } - - public function detach() - { - if (!isset($this->stream)) { - return null; - } - - $result = $this->stream; - unset($this->stream); - $this->size = $this->uri = null; - $this->readable = $this->writable = $this->seekable = false; - - return $result; - } - - public function getSize() - { - if ($this->size !== null) { - return $this->size; - } - - if (!isset($this->stream)) { - return null; - } - - // Clear the stat cache if the stream has a URI - if ($this->uri) { - clearstatcache(true, $this->uri); - } - - $stats = fstat($this->stream); - if (isset($stats['size'])) { - $this->size = $stats['size']; - return $this->size; - } - - return null; - } - - public function isReadable() - { - return $this->readable; - } - - public function isWritable() - { - return $this->writable; - } - - public function isSeekable() - { - return $this->seekable; - } - - public function eof() - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - return feof($this->stream); - } - - public function tell() - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - - $result = ftell($this->stream); - - if ($result === false) { - throw new \RuntimeException('Unable to determine stream position'); - } - - return $result; - } - - public function rewind() - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET) - { - $whence = (int) $whence; - - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->seekable) { - throw new \RuntimeException('Stream is not seekable'); - } - if (fseek($this->stream, $offset, $whence) === -1) { - throw new \RuntimeException('Unable to seek to stream position ' - . $offset . ' with whence ' . var_export($whence, true)); - } - } - - public function read($length) - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->readable) { - throw new \RuntimeException('Cannot read from non-readable stream'); - } - if ($length < 0) { - throw new \RuntimeException('Length parameter cannot be negative'); - } - - if (0 === $length) { - return ''; - } - - $string = fread($this->stream, $length); - if (false === $string) { - throw new \RuntimeException('Unable to read from stream'); - } - - return $string; - } - - public function write($string) - { - if (!isset($this->stream)) { - throw new \RuntimeException('Stream is detached'); - } - if (!$this->writable) { - throw new \RuntimeException('Cannot write to a non-writable stream'); - } - - // We can't know the size after writing anything - $this->size = null; - $result = fwrite($this->stream, $string); - - if ($result === false) { - throw new \RuntimeException('Unable to write to stream'); - } - - return $result; - } - - public function getMetadata($key = null) - { - if (!isset($this->stream)) { - return $key ? null : []; - } elseif (!$key) { - return $this->customMetadata + stream_get_meta_data($this->stream); - } elseif (isset($this->customMetadata[$key])) { - return $this->customMetadata[$key]; - } - - $meta = stream_get_meta_data($this->stream); - - return isset($meta[$key]) ? $meta[$key] : null; - } -} diff --git a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php deleted file mode 100644 index daec6f5..0000000 --- a/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php +++ /dev/null @@ -1,149 +0,0 @@ -stream = $stream; - } - - /** - * Magic method used to create a new stream if streams are not added in - * the constructor of a decorator (e.g., LazyOpenStream). - * - * @param string $name Name of the property (allows "stream" only). - * - * @return StreamInterface - */ - public function __get($name) - { - if ($name == 'stream') { - $this->stream = $this->createStream(); - return $this->stream; - } - - throw new \UnexpectedValueException("$name not found on class"); - } - - public function __toString() - { - try { - if ($this->isSeekable()) { - $this->seek(0); - } - return $this->getContents(); - } catch (\Exception $e) { - // Really, PHP? https://bugs.php.net/bug.php?id=53648 - trigger_error('StreamDecorator::__toString exception: ' - . (string) $e, E_USER_ERROR); - return ''; - } - } - - public function getContents() - { - return copy_to_string($this); - } - - /** - * Allow decorators to implement custom methods - * - * @param string $method Missing method name - * @param array $args Method arguments - * - * @return mixed - */ - public function __call($method, array $args) - { - $result = call_user_func_array([$this->stream, $method], $args); - - // Always return the wrapped object if the result is a return $this - return $result === $this->stream ? $this : $result; - } - - public function close() - { - $this->stream->close(); - } - - public function getMetadata($key = null) - { - return $this->stream->getMetadata($key); - } - - public function detach() - { - return $this->stream->detach(); - } - - public function getSize() - { - return $this->stream->getSize(); - } - - public function eof() - { - return $this->stream->eof(); - } - - public function tell() - { - return $this->stream->tell(); - } - - public function isReadable() - { - return $this->stream->isReadable(); - } - - public function isWritable() - { - return $this->stream->isWritable(); - } - - public function isSeekable() - { - return $this->stream->isSeekable(); - } - - public function rewind() - { - $this->seek(0); - } - - public function seek($offset, $whence = SEEK_SET) - { - $this->stream->seek($offset, $whence); - } - - public function read($length) - { - return $this->stream->read($length); - } - - public function write($string) - { - return $this->stream->write($string); - } - - /** - * Implement in subclasses to dynamically create streams when requested. - * - * @return StreamInterface - * @throws \BadMethodCallException - */ - protected function createStream() - { - throw new \BadMethodCallException('Not implemented'); - } -} diff --git a/vendor/guzzlehttp/psr7/src/StreamWrapper.php b/vendor/guzzlehttp/psr7/src/StreamWrapper.php deleted file mode 100644 index 0f3a285..0000000 --- a/vendor/guzzlehttp/psr7/src/StreamWrapper.php +++ /dev/null @@ -1,161 +0,0 @@ -isReadable()) { - $mode = $stream->isWritable() ? 'r+' : 'r'; - } elseif ($stream->isWritable()) { - $mode = 'w'; - } else { - throw new \InvalidArgumentException('The stream must be readable, ' - . 'writable, or both.'); - } - - return fopen('guzzle://stream', $mode, null, self::createStreamContext($stream)); - } - - /** - * Creates a stream context that can be used to open a stream as a php stream resource. - * - * @param StreamInterface $stream - * - * @return resource - */ - public static function createStreamContext(StreamInterface $stream) - { - return stream_context_create([ - 'guzzle' => ['stream' => $stream] - ]); - } - - /** - * Registers the stream wrapper if needed - */ - public static function register() - { - if (!in_array('guzzle', stream_get_wrappers())) { - stream_wrapper_register('guzzle', __CLASS__); - } - } - - public function stream_open($path, $mode, $options, &$opened_path) - { - $options = stream_context_get_options($this->context); - - if (!isset($options['guzzle']['stream'])) { - return false; - } - - $this->mode = $mode; - $this->stream = $options['guzzle']['stream']; - - return true; - } - - public function stream_read($count) - { - return $this->stream->read($count); - } - - public function stream_write($data) - { - return (int) $this->stream->write($data); - } - - public function stream_tell() - { - return $this->stream->tell(); - } - - public function stream_eof() - { - return $this->stream->eof(); - } - - public function stream_seek($offset, $whence) - { - $this->stream->seek($offset, $whence); - - return true; - } - - public function stream_cast($cast_as) - { - $stream = clone($this->stream); - - return $stream->detach(); - } - - public function stream_stat() - { - static $modeMap = [ - 'r' => 33060, - 'rb' => 33060, - 'r+' => 33206, - 'w' => 33188, - 'wb' => 33188 - ]; - - return [ - 'dev' => 0, - 'ino' => 0, - 'mode' => $modeMap[$this->mode], - 'nlink' => 0, - 'uid' => 0, - 'gid' => 0, - 'rdev' => 0, - 'size' => $this->stream->getSize() ?: 0, - 'atime' => 0, - 'mtime' => 0, - 'ctime' => 0, - 'blksize' => 0, - 'blocks' => 0 - ]; - } - - public function url_stat($path, $flags) - { - return [ - 'dev' => 0, - 'ino' => 0, - 'mode' => 0, - 'nlink' => 0, - 'uid' => 0, - 'gid' => 0, - 'rdev' => 0, - 'size' => 0, - 'atime' => 0, - 'mtime' => 0, - 'ctime' => 0, - 'blksize' => 0, - 'blocks' => 0 - ]; - } -} diff --git a/vendor/guzzlehttp/psr7/src/UploadedFile.php b/vendor/guzzlehttp/psr7/src/UploadedFile.php deleted file mode 100644 index e62bd5c..0000000 --- a/vendor/guzzlehttp/psr7/src/UploadedFile.php +++ /dev/null @@ -1,316 +0,0 @@ -setError($errorStatus); - $this->setSize($size); - $this->setClientFilename($clientFilename); - $this->setClientMediaType($clientMediaType); - - if ($this->isOk()) { - $this->setStreamOrFile($streamOrFile); - } - } - - /** - * Depending on the value set file or stream variable - * - * @param mixed $streamOrFile - * @throws InvalidArgumentException - */ - private function setStreamOrFile($streamOrFile) - { - if (is_string($streamOrFile)) { - $this->file = $streamOrFile; - } elseif (is_resource($streamOrFile)) { - $this->stream = new Stream($streamOrFile); - } elseif ($streamOrFile instanceof StreamInterface) { - $this->stream = $streamOrFile; - } else { - throw new InvalidArgumentException( - 'Invalid stream or file provided for UploadedFile' - ); - } - } - - /** - * @param int $error - * @throws InvalidArgumentException - */ - private function setError($error) - { - if (false === is_int($error)) { - throw new InvalidArgumentException( - 'Upload file error status must be an integer' - ); - } - - if (false === in_array($error, UploadedFile::$errors)) { - throw new InvalidArgumentException( - 'Invalid error status for UploadedFile' - ); - } - - $this->error = $error; - } - - /** - * @param int $size - * @throws InvalidArgumentException - */ - private function setSize($size) - { - if (false === is_int($size)) { - throw new InvalidArgumentException( - 'Upload file size must be an integer' - ); - } - - $this->size = $size; - } - - /** - * @param mixed $param - * @return boolean - */ - private function isStringOrNull($param) - { - return in_array(gettype($param), ['string', 'NULL']); - } - - /** - * @param mixed $param - * @return boolean - */ - private function isStringNotEmpty($param) - { - return is_string($param) && false === empty($param); - } - - /** - * @param string|null $clientFilename - * @throws InvalidArgumentException - */ - private function setClientFilename($clientFilename) - { - if (false === $this->isStringOrNull($clientFilename)) { - throw new InvalidArgumentException( - 'Upload file client filename must be a string or null' - ); - } - - $this->clientFilename = $clientFilename; - } - - /** - * @param string|null $clientMediaType - * @throws InvalidArgumentException - */ - private function setClientMediaType($clientMediaType) - { - if (false === $this->isStringOrNull($clientMediaType)) { - throw new InvalidArgumentException( - 'Upload file client media type must be a string or null' - ); - } - - $this->clientMediaType = $clientMediaType; - } - - /** - * Return true if there is no upload error - * - * @return boolean - */ - private function isOk() - { - return $this->error === UPLOAD_ERR_OK; - } - - /** - * @return boolean - */ - public function isMoved() - { - return $this->moved; - } - - /** - * @throws RuntimeException if is moved or not ok - */ - private function validateActive() - { - if (false === $this->isOk()) { - throw new RuntimeException('Cannot retrieve stream due to upload error'); - } - - if ($this->isMoved()) { - throw new RuntimeException('Cannot retrieve stream after it has already been moved'); - } - } - - /** - * {@inheritdoc} - * @throws RuntimeException if the upload was not successful. - */ - public function getStream() - { - $this->validateActive(); - - if ($this->stream instanceof StreamInterface) { - return $this->stream; - } - - return new LazyOpenStream($this->file, 'r+'); - } - - /** - * {@inheritdoc} - * - * @see http://php.net/is_uploaded_file - * @see http://php.net/move_uploaded_file - * @param string $targetPath Path to which to move the uploaded file. - * @throws RuntimeException if the upload was not successful. - * @throws InvalidArgumentException if the $path specified is invalid. - * @throws RuntimeException on any error during the move operation, or on - * the second or subsequent call to the method. - */ - public function moveTo($targetPath) - { - $this->validateActive(); - - if (false === $this->isStringNotEmpty($targetPath)) { - throw new InvalidArgumentException( - 'Invalid path provided for move operation; must be a non-empty string' - ); - } - - if ($this->file) { - $this->moved = php_sapi_name() == 'cli' - ? rename($this->file, $targetPath) - : move_uploaded_file($this->file, $targetPath); - } else { - copy_to_stream( - $this->getStream(), - new LazyOpenStream($targetPath, 'w') - ); - - $this->moved = true; - } - - if (false === $this->moved) { - throw new RuntimeException( - sprintf('Uploaded file could not be moved to %s', $targetPath) - ); - } - } - - /** - * {@inheritdoc} - * - * @return int|null The file size in bytes or null if unknown. - */ - public function getSize() - { - return $this->size; - } - - /** - * {@inheritdoc} - * - * @see http://php.net/manual/en/features.file-upload.errors.php - * @return int One of PHP's UPLOAD_ERR_XXX constants. - */ - public function getError() - { - return $this->error; - } - - /** - * {@inheritdoc} - * - * @return string|null The filename sent by the client or null if none - * was provided. - */ - public function getClientFilename() - { - return $this->clientFilename; - } - - /** - * {@inheritdoc} - */ - public function getClientMediaType() - { - return $this->clientMediaType; - } -} diff --git a/vendor/guzzlehttp/psr7/src/Uri.php b/vendor/guzzlehttp/psr7/src/Uri.php deleted file mode 100644 index 825a25e..0000000 --- a/vendor/guzzlehttp/psr7/src/Uri.php +++ /dev/null @@ -1,760 +0,0 @@ - 80, - 'https' => 443, - 'ftp' => 21, - 'gopher' => 70, - 'nntp' => 119, - 'news' => 119, - 'telnet' => 23, - 'tn3270' => 23, - 'imap' => 143, - 'pop' => 110, - 'ldap' => 389, - ]; - - private static $charUnreserved = 'a-zA-Z0-9_\-\.~'; - private static $charSubDelims = '!\$&\'\(\)\*\+,;='; - private static $replaceQuery = ['=' => '%3D', '&' => '%26']; - - /** @var string Uri scheme. */ - private $scheme = ''; - - /** @var string Uri user info. */ - private $userInfo = ''; - - /** @var string Uri host. */ - private $host = ''; - - /** @var int|null Uri port. */ - private $port; - - /** @var string Uri path. */ - private $path = ''; - - /** @var string Uri query string. */ - private $query = ''; - - /** @var string Uri fragment. */ - private $fragment = ''; - - /** - * @param string $uri URI to parse - */ - public function __construct($uri = '') - { - // weak type check to also accept null until we can add scalar type hints - if ($uri != '') { - $parts = parse_url($uri); - if ($parts === false) { - throw new \InvalidArgumentException("Unable to parse URI: $uri"); - } - $this->applyParts($parts); - } - } - - public function __toString() - { - return self::composeComponents( - $this->scheme, - $this->getAuthority(), - $this->path, - $this->query, - $this->fragment - ); - } - - /** - * Composes a URI reference string from its various components. - * - * Usually this method does not need to be called manually but instead is used indirectly via - * `Psr\Http\Message\UriInterface::__toString`. - * - * PSR-7 UriInterface treats an empty component the same as a missing component as - * getQuery(), getFragment() etc. always return a string. This explains the slight - * difference to RFC 3986 Section 5.3. - * - * Another adjustment is that the authority separator is added even when the authority is missing/empty - * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with - * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But - * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to - * that format). - * - * @param string $scheme - * @param string $authority - * @param string $path - * @param string $query - * @param string $fragment - * - * @return string - * - * @link https://tools.ietf.org/html/rfc3986#section-5.3 - */ - public static function composeComponents($scheme, $authority, $path, $query, $fragment) - { - $uri = ''; - - // weak type checks to also accept null until we can add scalar type hints - if ($scheme != '') { - $uri .= $scheme . ':'; - } - - if ($authority != ''|| $scheme === 'file') { - $uri .= '//' . $authority; - } - - $uri .= $path; - - if ($query != '') { - $uri .= '?' . $query; - } - - if ($fragment != '') { - $uri .= '#' . $fragment; - } - - return $uri; - } - - /** - * Whether the URI has the default port of the current scheme. - * - * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used - * independently of the implementation. - * - * @param UriInterface $uri - * - * @return bool - */ - public static function isDefaultPort(UriInterface $uri) - { - return $uri->getPort() === null - || (isset(self::$defaultPorts[$uri->getScheme()]) && $uri->getPort() === self::$defaultPorts[$uri->getScheme()]); - } - - /** - * Whether the URI is absolute, i.e. it has a scheme. - * - * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true - * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative - * to another URI, the base URI. Relative references can be divided into several forms: - * - network-path references, e.g. '//example.com/path' - * - absolute-path references, e.g. '/path' - * - relative-path references, e.g. 'subpath' - * - * @param UriInterface $uri - * - * @return bool - * @see Uri::isNetworkPathReference - * @see Uri::isAbsolutePathReference - * @see Uri::isRelativePathReference - * @link https://tools.ietf.org/html/rfc3986#section-4 - */ - public static function isAbsolute(UriInterface $uri) - { - return $uri->getScheme() !== ''; - } - - /** - * Whether the URI is a network-path reference. - * - * A relative reference that begins with two slash characters is termed an network-path reference. - * - * @param UriInterface $uri - * - * @return bool - * @link https://tools.ietf.org/html/rfc3986#section-4.2 - */ - public static function isNetworkPathReference(UriInterface $uri) - { - return $uri->getScheme() === '' && $uri->getAuthority() !== ''; - } - - /** - * Whether the URI is a absolute-path reference. - * - * A relative reference that begins with a single slash character is termed an absolute-path reference. - * - * @param UriInterface $uri - * - * @return bool - * @link https://tools.ietf.org/html/rfc3986#section-4.2 - */ - public static function isAbsolutePathReference(UriInterface $uri) - { - return $uri->getScheme() === '' - && $uri->getAuthority() === '' - && isset($uri->getPath()[0]) - && $uri->getPath()[0] === '/'; - } - - /** - * Whether the URI is a relative-path reference. - * - * A relative reference that does not begin with a slash character is termed a relative-path reference. - * - * @param UriInterface $uri - * - * @return bool - * @link https://tools.ietf.org/html/rfc3986#section-4.2 - */ - public static function isRelativePathReference(UriInterface $uri) - { - return $uri->getScheme() === '' - && $uri->getAuthority() === '' - && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/'); - } - - /** - * Whether the URI is a same-document reference. - * - * A same-document reference refers to a URI that is, aside from its fragment - * component, identical to the base URI. When no base URI is given, only an empty - * URI reference (apart from its fragment) is considered a same-document reference. - * - * @param UriInterface $uri The URI to check - * @param UriInterface|null $base An optional base URI to compare against - * - * @return bool - * @link https://tools.ietf.org/html/rfc3986#section-4.4 - */ - public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null) - { - if ($base !== null) { - $uri = UriResolver::resolve($base, $uri); - - return ($uri->getScheme() === $base->getScheme()) - && ($uri->getAuthority() === $base->getAuthority()) - && ($uri->getPath() === $base->getPath()) - && ($uri->getQuery() === $base->getQuery()); - } - - return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === ''; - } - - /** - * Removes dot segments from a path and returns the new path. - * - * @param string $path - * - * @return string - * - * @deprecated since version 1.4. Use UriResolver::removeDotSegments instead. - * @see UriResolver::removeDotSegments - */ - public static function removeDotSegments($path) - { - return UriResolver::removeDotSegments($path); - } - - /** - * Converts the relative URI into a new URI that is resolved against the base URI. - * - * @param UriInterface $base Base URI - * @param string|UriInterface $rel Relative URI - * - * @return UriInterface - * - * @deprecated since version 1.4. Use UriResolver::resolve instead. - * @see UriResolver::resolve - */ - public static function resolve(UriInterface $base, $rel) - { - if (!($rel instanceof UriInterface)) { - $rel = new self($rel); - } - - return UriResolver::resolve($base, $rel); - } - - /** - * Creates a new URI with a specific query string value removed. - * - * Any existing query string values that exactly match the provided key are - * removed. - * - * @param UriInterface $uri URI to use as a base. - * @param string $key Query string key to remove. - * - * @return UriInterface - */ - public static function withoutQueryValue(UriInterface $uri, $key) - { - $result = self::getFilteredQueryString($uri, [$key]); - - return $uri->withQuery(implode('&', $result)); - } - - /** - * Creates a new URI with a specific query string value. - * - * Any existing query string values that exactly match the provided key are - * removed and replaced with the given key value pair. - * - * A value of null will set the query string key without a value, e.g. "key" - * instead of "key=value". - * - * @param UriInterface $uri URI to use as a base. - * @param string $key Key to set. - * @param string|null $value Value to set - * - * @return UriInterface - */ - public static function withQueryValue(UriInterface $uri, $key, $value) - { - $result = self::getFilteredQueryString($uri, [$key]); - - $result[] = self::generateQueryString($key, $value); - - return $uri->withQuery(implode('&', $result)); - } - - /** - * Creates a new URI with multiple specific query string values. - * - * It has the same behavior as withQueryValue() but for an associative array of key => value. - * - * @param UriInterface $uri URI to use as a base. - * @param array $keyValueArray Associative array of key and values - * - * @return UriInterface - */ - public static function withQueryValues(UriInterface $uri, array $keyValueArray) - { - $result = self::getFilteredQueryString($uri, array_keys($keyValueArray)); - - foreach ($keyValueArray as $key => $value) { - $result[] = self::generateQueryString($key, $value); - } - - return $uri->withQuery(implode('&', $result)); - } - - /** - * Creates a URI from a hash of `parse_url` components. - * - * @param array $parts - * - * @return UriInterface - * @link http://php.net/manual/en/function.parse-url.php - * - * @throws \InvalidArgumentException If the components do not form a valid URI. - */ - public static function fromParts(array $parts) - { - $uri = new self(); - $uri->applyParts($parts); - $uri->validateState(); - - return $uri; - } - - public function getScheme() - { - return $this->scheme; - } - - public function getAuthority() - { - $authority = $this->host; - if ($this->userInfo !== '') { - $authority = $this->userInfo . '@' . $authority; - } - - if ($this->port !== null) { - $authority .= ':' . $this->port; - } - - return $authority; - } - - public function getUserInfo() - { - return $this->userInfo; - } - - public function getHost() - { - return $this->host; - } - - public function getPort() - { - return $this->port; - } - - public function getPath() - { - return $this->path; - } - - public function getQuery() - { - return $this->query; - } - - public function getFragment() - { - return $this->fragment; - } - - public function withScheme($scheme) - { - $scheme = $this->filterScheme($scheme); - - if ($this->scheme === $scheme) { - return $this; - } - - $new = clone $this; - $new->scheme = $scheme; - $new->removeDefaultPort(); - $new->validateState(); - - return $new; - } - - public function withUserInfo($user, $password = null) - { - $info = $this->filterUserInfoComponent($user); - if ($password !== null) { - $info .= ':' . $this->filterUserInfoComponent($password); - } - - if ($this->userInfo === $info) { - return $this; - } - - $new = clone $this; - $new->userInfo = $info; - $new->validateState(); - - return $new; - } - - public function withHost($host) - { - $host = $this->filterHost($host); - - if ($this->host === $host) { - return $this; - } - - $new = clone $this; - $new->host = $host; - $new->validateState(); - - return $new; - } - - public function withPort($port) - { - $port = $this->filterPort($port); - - if ($this->port === $port) { - return $this; - } - - $new = clone $this; - $new->port = $port; - $new->removeDefaultPort(); - $new->validateState(); - - return $new; - } - - public function withPath($path) - { - $path = $this->filterPath($path); - - if ($this->path === $path) { - return $this; - } - - $new = clone $this; - $new->path = $path; - $new->validateState(); - - return $new; - } - - public function withQuery($query) - { - $query = $this->filterQueryAndFragment($query); - - if ($this->query === $query) { - return $this; - } - - $new = clone $this; - $new->query = $query; - - return $new; - } - - public function withFragment($fragment) - { - $fragment = $this->filterQueryAndFragment($fragment); - - if ($this->fragment === $fragment) { - return $this; - } - - $new = clone $this; - $new->fragment = $fragment; - - return $new; - } - - /** - * Apply parse_url parts to a URI. - * - * @param array $parts Array of parse_url parts to apply. - */ - private function applyParts(array $parts) - { - $this->scheme = isset($parts['scheme']) - ? $this->filterScheme($parts['scheme']) - : ''; - $this->userInfo = isset($parts['user']) - ? $this->filterUserInfoComponent($parts['user']) - : ''; - $this->host = isset($parts['host']) - ? $this->filterHost($parts['host']) - : ''; - $this->port = isset($parts['port']) - ? $this->filterPort($parts['port']) - : null; - $this->path = isset($parts['path']) - ? $this->filterPath($parts['path']) - : ''; - $this->query = isset($parts['query']) - ? $this->filterQueryAndFragment($parts['query']) - : ''; - $this->fragment = isset($parts['fragment']) - ? $this->filterQueryAndFragment($parts['fragment']) - : ''; - if (isset($parts['pass'])) { - $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']); - } - - $this->removeDefaultPort(); - } - - /** - * @param string $scheme - * - * @return string - * - * @throws \InvalidArgumentException If the scheme is invalid. - */ - private function filterScheme($scheme) - { - if (!is_string($scheme)) { - throw new \InvalidArgumentException('Scheme must be a string'); - } - - return strtolower($scheme); - } - - /** - * @param string $component - * - * @return string - * - * @throws \InvalidArgumentException If the user info is invalid. - */ - private function filterUserInfoComponent($component) - { - if (!is_string($component)) { - throw new \InvalidArgumentException('User info must be a string'); - } - - return preg_replace_callback( - '/(?:[^%' . self::$charUnreserved . self::$charSubDelims . ']+|%(?![A-Fa-f0-9]{2}))/', - [$this, 'rawurlencodeMatchZero'], - $component - ); - } - - /** - * @param string $host - * - * @return string - * - * @throws \InvalidArgumentException If the host is invalid. - */ - private function filterHost($host) - { - if (!is_string($host)) { - throw new \InvalidArgumentException('Host must be a string'); - } - - return strtolower($host); - } - - /** - * @param int|null $port - * - * @return int|null - * - * @throws \InvalidArgumentException If the port is invalid. - */ - private function filterPort($port) - { - if ($port === null) { - return null; - } - - $port = (int) $port; - if (0 > $port || 0xffff < $port) { - throw new \InvalidArgumentException( - sprintf('Invalid port: %d. Must be between 0 and 65535', $port) - ); - } - - return $port; - } - - /** - * @param UriInterface $uri - * @param array $keys - * - * @return array - */ - private static function getFilteredQueryString(UriInterface $uri, array $keys) - { - $current = $uri->getQuery(); - - if ($current === '') { - return []; - } - - $decodedKeys = array_map('rawurldecode', $keys); - - return array_filter(explode('&', $current), function ($part) use ($decodedKeys) { - return !in_array(rawurldecode(explode('=', $part)[0]), $decodedKeys, true); - }); - } - - /** - * @param string $key - * @param string|null $value - * - * @return string - */ - private static function generateQueryString($key, $value) - { - // Query string separators ("=", "&") within the key or value need to be encoded - // (while preventing double-encoding) before setting the query string. All other - // chars that need percent-encoding will be encoded by withQuery(). - $queryString = strtr($key, self::$replaceQuery); - - if ($value !== null) { - $queryString .= '=' . strtr($value, self::$replaceQuery); - } - - return $queryString; - } - - private function removeDefaultPort() - { - if ($this->port !== null && self::isDefaultPort($this)) { - $this->port = null; - } - } - - /** - * Filters the path of a URI - * - * @param string $path - * - * @return string - * - * @throws \InvalidArgumentException If the path is invalid. - */ - private function filterPath($path) - { - if (!is_string($path)) { - throw new \InvalidArgumentException('Path must be a string'); - } - - return preg_replace_callback( - '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/]++|%(?![A-Fa-f0-9]{2}))/', - [$this, 'rawurlencodeMatchZero'], - $path - ); - } - - /** - * Filters the query string or fragment of a URI. - * - * @param string $str - * - * @return string - * - * @throws \InvalidArgumentException If the query or fragment is invalid. - */ - private function filterQueryAndFragment($str) - { - if (!is_string($str)) { - throw new \InvalidArgumentException('Query and fragment must be a string'); - } - - return preg_replace_callback( - '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/\?]++|%(?![A-Fa-f0-9]{2}))/', - [$this, 'rawurlencodeMatchZero'], - $str - ); - } - - private function rawurlencodeMatchZero(array $match) - { - return rawurlencode($match[0]); - } - - private function validateState() - { - if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) { - $this->host = self::HTTP_DEFAULT_HOST; - } - - if ($this->getAuthority() === '') { - if (0 === strpos($this->path, '//')) { - throw new \InvalidArgumentException('The path of a URI without an authority must not start with two slashes "//"'); - } - if ($this->scheme === '' && false !== strpos(explode('/', $this->path, 2)[0], ':')) { - throw new \InvalidArgumentException('A relative URI must not have a path beginning with a segment containing a colon'); - } - } elseif (isset($this->path[0]) && $this->path[0] !== '/') { - @trigger_error( - 'The path of a URI with an authority must start with a slash "/" or be empty. Automagically fixing the URI ' . - 'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.', - E_USER_DEPRECATED - ); - $this->path = '/'. $this->path; - //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty'); - } - } -} diff --git a/vendor/guzzlehttp/psr7/src/UriNormalizer.php b/vendor/guzzlehttp/psr7/src/UriNormalizer.php deleted file mode 100644 index 384c29e..0000000 --- a/vendor/guzzlehttp/psr7/src/UriNormalizer.php +++ /dev/null @@ -1,216 +0,0 @@ -getPath() === '' && - ($uri->getScheme() === 'http' || $uri->getScheme() === 'https') - ) { - $uri = $uri->withPath('/'); - } - - if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') { - $uri = $uri->withHost(''); - } - - if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && Uri::isDefaultPort($uri)) { - $uri = $uri->withPort(null); - } - - if ($flags & self::REMOVE_DOT_SEGMENTS && !Uri::isRelativePathReference($uri)) { - $uri = $uri->withPath(UriResolver::removeDotSegments($uri->getPath())); - } - - if ($flags & self::REMOVE_DUPLICATE_SLASHES) { - $uri = $uri->withPath(preg_replace('#//++#', '/', $uri->getPath())); - } - - if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') { - $queryKeyValues = explode('&', $uri->getQuery()); - sort($queryKeyValues); - $uri = $uri->withQuery(implode('&', $queryKeyValues)); - } - - return $uri; - } - - /** - * Whether two URIs can be considered equivalent. - * - * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also - * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be - * resolved against the same base URI. If this is not the case, determination of equivalence or difference of - * relative references does not mean anything. - * - * @param UriInterface $uri1 An URI to compare - * @param UriInterface $uri2 An URI to compare - * @param int $normalizations A bitmask of normalizations to apply, see constants - * - * @return bool - * @link https://tools.ietf.org/html/rfc3986#section-6.1 - */ - public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS) - { - return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations); - } - - private static function capitalizePercentEncoding(UriInterface $uri) - { - $regex = '/(?:%[A-Fa-f0-9]{2})++/'; - - $callback = function (array $match) { - return strtoupper($match[0]); - }; - - return - $uri->withPath( - preg_replace_callback($regex, $callback, $uri->getPath()) - )->withQuery( - preg_replace_callback($regex, $callback, $uri->getQuery()) - ); - } - - private static function decodeUnreservedCharacters(UriInterface $uri) - { - $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i'; - - $callback = function (array $match) { - return rawurldecode($match[0]); - }; - - return - $uri->withPath( - preg_replace_callback($regex, $callback, $uri->getPath()) - )->withQuery( - preg_replace_callback($regex, $callback, $uri->getQuery()) - ); - } - - private function __construct() - { - // cannot be instantiated - } -} diff --git a/vendor/guzzlehttp/psr7/src/UriResolver.php b/vendor/guzzlehttp/psr7/src/UriResolver.php deleted file mode 100644 index c1cb8a2..0000000 --- a/vendor/guzzlehttp/psr7/src/UriResolver.php +++ /dev/null @@ -1,219 +0,0 @@ -getScheme() != '') { - return $rel->withPath(self::removeDotSegments($rel->getPath())); - } - - if ($rel->getAuthority() != '') { - $targetAuthority = $rel->getAuthority(); - $targetPath = self::removeDotSegments($rel->getPath()); - $targetQuery = $rel->getQuery(); - } else { - $targetAuthority = $base->getAuthority(); - if ($rel->getPath() === '') { - $targetPath = $base->getPath(); - $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery(); - } else { - if ($rel->getPath()[0] === '/') { - $targetPath = $rel->getPath(); - } else { - if ($targetAuthority != '' && $base->getPath() === '') { - $targetPath = '/' . $rel->getPath(); - } else { - $lastSlashPos = strrpos($base->getPath(), '/'); - if ($lastSlashPos === false) { - $targetPath = $rel->getPath(); - } else { - $targetPath = substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath(); - } - } - } - $targetPath = self::removeDotSegments($targetPath); - $targetQuery = $rel->getQuery(); - } - } - - return new Uri(Uri::composeComponents( - $base->getScheme(), - $targetAuthority, - $targetPath, - $targetQuery, - $rel->getFragment() - )); - } - - /** - * Returns the target URI as a relative reference from the base URI. - * - * This method is the counterpart to resolve(): - * - * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) - * - * One use-case is to use the current request URI as base URI and then generate relative links in your documents - * to reduce the document size or offer self-contained downloadable document archives. - * - * $base = new Uri('http://example.com/a/b/'); - * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. - * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. - * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. - * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. - * - * This method also accepts a target that is already relative and will try to relativize it further. Only a - * relative-path reference will be returned as-is. - * - * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well - * - * @param UriInterface $base Base URI - * @param UriInterface $target Target URI - * - * @return UriInterface The relative URI reference - */ - public static function relativize(UriInterface $base, UriInterface $target) - { - if ($target->getScheme() !== '' && - ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '') - ) { - return $target; - } - - if (Uri::isRelativePathReference($target)) { - // As the target is already highly relative we return it as-is. It would be possible to resolve - // the target with `$target = self::resolve($base, $target);` and then try make it more relative - // by removing a duplicate query. But let's not do that automatically. - return $target; - } - - if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) { - return $target->withScheme(''); - } - - // We must remove the path before removing the authority because if the path starts with two slashes, the URI - // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also - // invalid. - $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost(''); - - if ($base->getPath() !== $target->getPath()) { - return $emptyPathUri->withPath(self::getRelativePath($base, $target)); - } - - if ($base->getQuery() === $target->getQuery()) { - // Only the target fragment is left. And it must be returned even if base and target fragment are the same. - return $emptyPathUri->withQuery(''); - } - - // If the base URI has a query but the target has none, we cannot return an empty path reference as it would - // inherit the base query component when resolving. - if ($target->getQuery() === '') { - $segments = explode('/', $target->getPath()); - $lastSegment = end($segments); - - return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment); - } - - return $emptyPathUri; - } - - private static function getRelativePath(UriInterface $base, UriInterface $target) - { - $sourceSegments = explode('/', $base->getPath()); - $targetSegments = explode('/', $target->getPath()); - array_pop($sourceSegments); - $targetLastSegment = array_pop($targetSegments); - foreach ($sourceSegments as $i => $segment) { - if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) { - unset($sourceSegments[$i], $targetSegments[$i]); - } else { - break; - } - } - $targetSegments[] = $targetLastSegment; - $relativePath = str_repeat('../', count($sourceSegments)) . implode('/', $targetSegments); - - // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./". - // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used - // as the first segment of a relative-path reference, as it would be mistaken for a scheme name. - if ('' === $relativePath || false !== strpos(explode('/', $relativePath, 2)[0], ':')) { - $relativePath = "./$relativePath"; - } elseif ('/' === $relativePath[0]) { - if ($base->getAuthority() != '' && $base->getPath() === '') { - // In this case an extra slash is added by resolve() automatically. So we must not add one here. - $relativePath = ".$relativePath"; - } else { - $relativePath = "./$relativePath"; - } - } - - return $relativePath; - } - - private function __construct() - { - // cannot be instantiated - } -} diff --git a/vendor/guzzlehttp/psr7/src/functions.php b/vendor/guzzlehttp/psr7/src/functions.php deleted file mode 100644 index 8e6dafe..0000000 --- a/vendor/guzzlehttp/psr7/src/functions.php +++ /dev/null @@ -1,899 +0,0 @@ -getMethod() . ' ' - . $message->getRequestTarget()) - . ' HTTP/' . $message->getProtocolVersion(); - if (!$message->hasHeader('host')) { - $msg .= "\r\nHost: " . $message->getUri()->getHost(); - } - } elseif ($message instanceof ResponseInterface) { - $msg = 'HTTP/' . $message->getProtocolVersion() . ' ' - . $message->getStatusCode() . ' ' - . $message->getReasonPhrase(); - } else { - throw new \InvalidArgumentException('Unknown message type'); - } - - foreach ($message->getHeaders() as $name => $values) { - $msg .= "\r\n{$name}: " . implode(', ', $values); - } - - return "{$msg}\r\n\r\n" . $message->getBody(); -} - -/** - * Returns a UriInterface for the given value. - * - * This function accepts a string or {@see Psr\Http\Message\UriInterface} and - * returns a UriInterface for the given value. If the value is already a - * `UriInterface`, it is returned as-is. - * - * @param string|UriInterface $uri - * - * @return UriInterface - * @throws \InvalidArgumentException - */ -function uri_for($uri) -{ - if ($uri instanceof UriInterface) { - return $uri; - } elseif (is_string($uri)) { - return new Uri($uri); - } - - throw new \InvalidArgumentException('URI must be a string or UriInterface'); -} - -/** - * Create a new stream based on the input type. - * - * Options is an associative array that can contain the following keys: - * - metadata: Array of custom metadata. - * - size: Size of the stream. - * - * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data - * @param array $options Additional options - * - * @return StreamInterface - * @throws \InvalidArgumentException if the $resource arg is not valid. - */ -function stream_for($resource = '', array $options = []) -{ - if (is_scalar($resource)) { - $stream = fopen('php://temp', 'r+'); - if ($resource !== '') { - fwrite($stream, $resource); - fseek($stream, 0); - } - return new Stream($stream, $options); - } - - switch (gettype($resource)) { - case 'resource': - return new Stream($resource, $options); - case 'object': - if ($resource instanceof StreamInterface) { - return $resource; - } elseif ($resource instanceof \Iterator) { - return new PumpStream(function () use ($resource) { - if (!$resource->valid()) { - return false; - } - $result = $resource->current(); - $resource->next(); - return $result; - }, $options); - } elseif (method_exists($resource, '__toString')) { - return stream_for((string) $resource, $options); - } - break; - case 'NULL': - return new Stream(fopen('php://temp', 'r+'), $options); - } - - if (is_callable($resource)) { - return new PumpStream($resource, $options); - } - - throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource)); -} - -/** - * Parse an array of header values containing ";" separated data into an - * array of associative arrays representing the header key value pair - * data of the header. When a parameter does not contain a value, but just - * contains a key, this function will inject a key with a '' string value. - * - * @param string|array $header Header to parse into components. - * - * @return array Returns the parsed header values. - */ -function parse_header($header) -{ - static $trimmed = "\"' \n\t\r"; - $params = $matches = []; - - foreach (normalize_header($header) as $val) { - $part = []; - foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) { - if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) { - $m = $matches[0]; - if (isset($m[1])) { - $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed); - } else { - $part[] = trim($m[0], $trimmed); - } - } - } - if ($part) { - $params[] = $part; - } - } - - return $params; -} - -/** - * Converts an array of header values that may contain comma separated - * headers into an array of headers with no comma separated values. - * - * @param string|array $header Header to normalize. - * - * @return array Returns the normalized header field values. - */ -function normalize_header($header) -{ - if (!is_array($header)) { - return array_map('trim', explode(',', $header)); - } - - $result = []; - foreach ($header as $value) { - foreach ((array) $value as $v) { - if (strpos($v, ',') === false) { - $result[] = $v; - continue; - } - foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) { - $result[] = trim($vv); - } - } - } - - return $result; -} - -/** - * Clone and modify a request with the given changes. - * - * The changes can be one of: - * - method: (string) Changes the HTTP method. - * - set_headers: (array) Sets the given headers. - * - remove_headers: (array) Remove the given headers. - * - body: (mixed) Sets the given body. - * - uri: (UriInterface) Set the URI. - * - query: (string) Set the query string value of the URI. - * - version: (string) Set the protocol version. - * - * @param RequestInterface $request Request to clone and modify. - * @param array $changes Changes to apply. - * - * @return RequestInterface - */ -function modify_request(RequestInterface $request, array $changes) -{ - if (!$changes) { - return $request; - } - - $headers = $request->getHeaders(); - - if (!isset($changes['uri'])) { - $uri = $request->getUri(); - } else { - // Remove the host header if one is on the URI - if ($host = $changes['uri']->getHost()) { - $changes['set_headers']['Host'] = $host; - - if ($port = $changes['uri']->getPort()) { - $standardPorts = ['http' => 80, 'https' => 443]; - $scheme = $changes['uri']->getScheme(); - if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) { - $changes['set_headers']['Host'] .= ':'.$port; - } - } - } - $uri = $changes['uri']; - } - - if (!empty($changes['remove_headers'])) { - $headers = _caseless_remove($changes['remove_headers'], $headers); - } - - if (!empty($changes['set_headers'])) { - $headers = _caseless_remove(array_keys($changes['set_headers']), $headers); - $headers = $changes['set_headers'] + $headers; - } - - if (isset($changes['query'])) { - $uri = $uri->withQuery($changes['query']); - } - - if ($request instanceof ServerRequestInterface) { - return (new ServerRequest( - isset($changes['method']) ? $changes['method'] : $request->getMethod(), - $uri, - $headers, - isset($changes['body']) ? $changes['body'] : $request->getBody(), - isset($changes['version']) - ? $changes['version'] - : $request->getProtocolVersion(), - $request->getServerParams() - )) - ->withParsedBody($request->getParsedBody()) - ->withQueryParams($request->getQueryParams()) - ->withCookieParams($request->getCookieParams()) - ->withUploadedFiles($request->getUploadedFiles()); - } - - return new Request( - isset($changes['method']) ? $changes['method'] : $request->getMethod(), - $uri, - $headers, - isset($changes['body']) ? $changes['body'] : $request->getBody(), - isset($changes['version']) - ? $changes['version'] - : $request->getProtocolVersion() - ); -} - -/** - * Attempts to rewind a message body and throws an exception on failure. - * - * The body of the message will only be rewound if a call to `tell()` returns a - * value other than `0`. - * - * @param MessageInterface $message Message to rewind - * - * @throws \RuntimeException - */ -function rewind_body(MessageInterface $message) -{ - $body = $message->getBody(); - - if ($body->tell()) { - $body->rewind(); - } -} - -/** - * Safely opens a PHP stream resource using a filename. - * - * When fopen fails, PHP normally raises a warning. This function adds an - * error handler that checks for errors and throws an exception instead. - * - * @param string $filename File to open - * @param string $mode Mode used to open the file - * - * @return resource - * @throws \RuntimeException if the file cannot be opened - */ -function try_fopen($filename, $mode) -{ - $ex = null; - set_error_handler(function () use ($filename, $mode, &$ex) { - $ex = new \RuntimeException(sprintf( - 'Unable to open %s using mode %s: %s', - $filename, - $mode, - func_get_args()[1] - )); - }); - - $handle = fopen($filename, $mode); - restore_error_handler(); - - if ($ex) { - /** @var $ex \RuntimeException */ - throw $ex; - } - - return $handle; -} - -/** - * Copy the contents of a stream into a string until the given number of - * bytes have been read. - * - * @param StreamInterface $stream Stream to read - * @param int $maxLen Maximum number of bytes to read. Pass -1 - * to read the entire stream. - * @return string - * @throws \RuntimeException on error. - */ -function copy_to_string(StreamInterface $stream, $maxLen = -1) -{ - $buffer = ''; - - if ($maxLen === -1) { - while (!$stream->eof()) { - $buf = $stream->read(1048576); - // Using a loose equality here to match on '' and false. - if ($buf == null) { - break; - } - $buffer .= $buf; - } - return $buffer; - } - - $len = 0; - while (!$stream->eof() && $len < $maxLen) { - $buf = $stream->read($maxLen - $len); - // Using a loose equality here to match on '' and false. - if ($buf == null) { - break; - } - $buffer .= $buf; - $len = strlen($buffer); - } - - return $buffer; -} - -/** - * Copy the contents of a stream into another stream until the given number - * of bytes have been read. - * - * @param StreamInterface $source Stream to read from - * @param StreamInterface $dest Stream to write to - * @param int $maxLen Maximum number of bytes to read. Pass -1 - * to read the entire stream. - * - * @throws \RuntimeException on error. - */ -function copy_to_stream( - StreamInterface $source, - StreamInterface $dest, - $maxLen = -1 -) { - $bufferSize = 8192; - - if ($maxLen === -1) { - while (!$source->eof()) { - if (!$dest->write($source->read($bufferSize))) { - break; - } - } - } else { - $remaining = $maxLen; - while ($remaining > 0 && !$source->eof()) { - $buf = $source->read(min($bufferSize, $remaining)); - $len = strlen($buf); - if (!$len) { - break; - } - $remaining -= $len; - $dest->write($buf); - } - } -} - -/** - * Calculate a hash of a Stream - * - * @param StreamInterface $stream Stream to calculate the hash for - * @param string $algo Hash algorithm (e.g. md5, crc32, etc) - * @param bool $rawOutput Whether or not to use raw output - * - * @return string Returns the hash of the stream - * @throws \RuntimeException on error. - */ -function hash( - StreamInterface $stream, - $algo, - $rawOutput = false -) { - $pos = $stream->tell(); - - if ($pos > 0) { - $stream->rewind(); - } - - $ctx = hash_init($algo); - while (!$stream->eof()) { - hash_update($ctx, $stream->read(1048576)); - } - - $out = hash_final($ctx, (bool) $rawOutput); - $stream->seek($pos); - - return $out; -} - -/** - * Read a line from the stream up to the maximum allowed buffer length - * - * @param StreamInterface $stream Stream to read from - * @param int $maxLength Maximum buffer length - * - * @return string - */ -function readline(StreamInterface $stream, $maxLength = null) -{ - $buffer = ''; - $size = 0; - - while (!$stream->eof()) { - // Using a loose equality here to match on '' and false. - if (null == ($byte = $stream->read(1))) { - return $buffer; - } - $buffer .= $byte; - // Break when a new line is found or the max length - 1 is reached - if ($byte === "\n" || ++$size === $maxLength - 1) { - break; - } - } - - return $buffer; -} - -/** - * Parses a request message string into a request object. - * - * @param string $message Request message string. - * - * @return Request - */ -function parse_request($message) -{ - $data = _parse_message($message); - $matches = []; - if (!preg_match('/^[\S]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) { - throw new \InvalidArgumentException('Invalid request string'); - } - $parts = explode(' ', $data['start-line'], 3); - $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1'; - - $request = new Request( - $parts[0], - $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1], - $data['headers'], - $data['body'], - $version - ); - - return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); -} - -/** - * Parses a response message string into a response object. - * - * @param string $message Response message string. - * - * @return Response - */ -function parse_response($message) -{ - $data = _parse_message($message); - // According to https://tools.ietf.org/html/rfc7230#section-3.1.2 the space - // between status-code and reason-phrase is required. But browsers accept - // responses without space and reason as well. - if (!preg_match('/^HTTP\/.* [0-9]{3}( .*|$)/', $data['start-line'])) { - throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']); - } - $parts = explode(' ', $data['start-line'], 3); - - return new Response( - $parts[1], - $data['headers'], - $data['body'], - explode('/', $parts[0])[1], - isset($parts[2]) ? $parts[2] : null - ); -} - -/** - * Parse a query string into an associative array. - * - * If multiple values are found for the same key, the value of that key - * value pair will become an array. This function does not parse nested - * PHP style arrays into an associative array (e.g., foo[a]=1&foo[b]=2 will - * be parsed into ['foo[a]' => '1', 'foo[b]' => '2']). - * - * @param string $str Query string to parse - * @param int|bool $urlEncoding How the query string is encoded - * - * @return array - */ -function parse_query($str, $urlEncoding = true) -{ - $result = []; - - if ($str === '') { - return $result; - } - - if ($urlEncoding === true) { - $decoder = function ($value) { - return rawurldecode(str_replace('+', ' ', $value)); - }; - } elseif ($urlEncoding === PHP_QUERY_RFC3986) { - $decoder = 'rawurldecode'; - } elseif ($urlEncoding === PHP_QUERY_RFC1738) { - $decoder = 'urldecode'; - } else { - $decoder = function ($str) { return $str; }; - } - - foreach (explode('&', $str) as $kvp) { - $parts = explode('=', $kvp, 2); - $key = $decoder($parts[0]); - $value = isset($parts[1]) ? $decoder($parts[1]) : null; - if (!isset($result[$key])) { - $result[$key] = $value; - } else { - if (!is_array($result[$key])) { - $result[$key] = [$result[$key]]; - } - $result[$key][] = $value; - } - } - - return $result; -} - -/** - * Build a query string from an array of key value pairs. - * - * This function can use the return value of parse_query() to build a query - * string. This function does not modify the provided keys when an array is - * encountered (like http_build_query would). - * - * @param array $params Query string parameters. - * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 - * to encode using RFC3986, or PHP_QUERY_RFC1738 - * to encode using RFC1738. - * @return string - */ -function build_query(array $params, $encoding = PHP_QUERY_RFC3986) -{ - if (!$params) { - return ''; - } - - if ($encoding === false) { - $encoder = function ($str) { return $str; }; - } elseif ($encoding === PHP_QUERY_RFC3986) { - $encoder = 'rawurlencode'; - } elseif ($encoding === PHP_QUERY_RFC1738) { - $encoder = 'urlencode'; - } else { - throw new \InvalidArgumentException('Invalid type'); - } - - $qs = ''; - foreach ($params as $k => $v) { - $k = $encoder($k); - if (!is_array($v)) { - $qs .= $k; - if ($v !== null) { - $qs .= '=' . $encoder($v); - } - $qs .= '&'; - } else { - foreach ($v as $vv) { - $qs .= $k; - if ($vv !== null) { - $qs .= '=' . $encoder($vv); - } - $qs .= '&'; - } - } - } - - return $qs ? (string) substr($qs, 0, -1) : ''; -} - -/** - * Determines the mimetype of a file by looking at its extension. - * - * @param $filename - * - * @return null|string - */ -function mimetype_from_filename($filename) -{ - return mimetype_from_extension(pathinfo($filename, PATHINFO_EXTENSION)); -} - -/** - * Maps a file extensions to a mimetype. - * - * @param $extension string The file extension. - * - * @return string|null - * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types - */ -function mimetype_from_extension($extension) -{ - static $mimetypes = [ - '3gp' => 'video/3gpp', - '7z' => 'application/x-7z-compressed', - 'aac' => 'audio/x-aac', - 'ai' => 'application/postscript', - 'aif' => 'audio/x-aiff', - 'asc' => 'text/plain', - 'asf' => 'video/x-ms-asf', - 'atom' => 'application/atom+xml', - 'avi' => 'video/x-msvideo', - 'bmp' => 'image/bmp', - 'bz2' => 'application/x-bzip2', - 'cer' => 'application/pkix-cert', - 'crl' => 'application/pkix-crl', - 'crt' => 'application/x-x509-ca-cert', - 'css' => 'text/css', - 'csv' => 'text/csv', - 'cu' => 'application/cu-seeme', - 'deb' => 'application/x-debian-package', - 'doc' => 'application/msword', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dvi' => 'application/x-dvi', - 'eot' => 'application/vnd.ms-fontobject', - 'eps' => 'application/postscript', - 'epub' => 'application/epub+zip', - 'etx' => 'text/x-setext', - 'flac' => 'audio/flac', - 'flv' => 'video/x-flv', - 'gif' => 'image/gif', - 'gz' => 'application/gzip', - 'htm' => 'text/html', - 'html' => 'text/html', - 'ico' => 'image/x-icon', - 'ics' => 'text/calendar', - 'ini' => 'text/plain', - 'iso' => 'application/x-iso9660-image', - 'jar' => 'application/java-archive', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'js' => 'text/javascript', - 'json' => 'application/json', - 'latex' => 'application/x-latex', - 'log' => 'text/plain', - 'm4a' => 'audio/mp4', - 'm4v' => 'video/mp4', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mov' => 'video/quicktime', - 'mkv' => 'video/x-matroska', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mp4a' => 'audio/mp4', - 'mp4v' => 'video/mp4', - 'mpe' => 'video/mpeg', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpg4' => 'video/mp4', - 'oga' => 'audio/ogg', - 'ogg' => 'audio/ogg', - 'ogv' => 'video/ogg', - 'ogx' => 'application/ogg', - 'pbm' => 'image/x-portable-bitmap', - 'pdf' => 'application/pdf', - 'pgm' => 'image/x-portable-graymap', - 'png' => 'image/png', - 'pnm' => 'image/x-portable-anymap', - 'ppm' => 'image/x-portable-pixmap', - 'ppt' => 'application/vnd.ms-powerpoint', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'ps' => 'application/postscript', - 'qt' => 'video/quicktime', - 'rar' => 'application/x-rar-compressed', - 'ras' => 'image/x-cmu-raster', - 'rss' => 'application/rss+xml', - 'rtf' => 'application/rtf', - 'sgm' => 'text/sgml', - 'sgml' => 'text/sgml', - 'svg' => 'image/svg+xml', - 'swf' => 'application/x-shockwave-flash', - 'tar' => 'application/x-tar', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'torrent' => 'application/x-bittorrent', - 'ttf' => 'application/x-font-ttf', - 'txt' => 'text/plain', - 'wav' => 'audio/x-wav', - 'webm' => 'video/webm', - 'webp' => 'image/webp', - 'wma' => 'audio/x-ms-wma', - 'wmv' => 'video/x-ms-wmv', - 'woff' => 'application/x-font-woff', - 'wsdl' => 'application/wsdl+xml', - 'xbm' => 'image/x-xbitmap', - 'xls' => 'application/vnd.ms-excel', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xml' => 'application/xml', - 'xpm' => 'image/x-xpixmap', - 'xwd' => 'image/x-xwindowdump', - 'yaml' => 'text/yaml', - 'yml' => 'text/yaml', - 'zip' => 'application/zip', - ]; - - $extension = strtolower($extension); - - return isset($mimetypes[$extension]) - ? $mimetypes[$extension] - : null; -} - -/** - * Parses an HTTP message into an associative array. - * - * The array contains the "start-line" key containing the start line of - * the message, "headers" key containing an associative array of header - * array values, and a "body" key containing the body of the message. - * - * @param string $message HTTP request or response to parse. - * - * @return array - * @internal - */ -function _parse_message($message) -{ - if (!$message) { - throw new \InvalidArgumentException('Invalid message'); - } - - $message = ltrim($message, "\r\n"); - - $messageParts = preg_split("/\r?\n\r?\n/", $message, 2); - - if ($messageParts === false || count($messageParts) !== 2) { - throw new \InvalidArgumentException('Invalid message: Missing header delimiter'); - } - - list($rawHeaders, $body) = $messageParts; - $rawHeaders .= "\r\n"; // Put back the delimiter we split previously - $headerParts = preg_split("/\r?\n/", $rawHeaders, 2); - - if ($headerParts === false || count($headerParts) !== 2) { - throw new \InvalidArgumentException('Invalid message: Missing status line'); - } - - list($startLine, $rawHeaders) = $headerParts; - - if (preg_match("/(?:^HTTP\/|^[A-Z]+ \S+ HTTP\/)(\d+(?:\.\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') { - // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0 - $rawHeaders = preg_replace(Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders); - } - - /** @var array[] $headerLines */ - $count = preg_match_all(Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, PREG_SET_ORDER); - - // If these aren't the same, then one line didn't match and there's an invalid header. - if ($count !== substr_count($rawHeaders, "\n")) { - // Folding is deprecated, see https://tools.ietf.org/html/rfc7230#section-3.2.4 - if (preg_match(Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) { - throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding'); - } - - throw new \InvalidArgumentException('Invalid header syntax'); - } - - $headers = []; - - foreach ($headerLines as $headerLine) { - $headers[$headerLine[1]][] = $headerLine[2]; - } - - return [ - 'start-line' => $startLine, - 'headers' => $headers, - 'body' => $body, - ]; -} - -/** - * Constructs a URI for an HTTP request message. - * - * @param string $path Path from the start-line - * @param array $headers Array of headers (each value an array). - * - * @return string - * @internal - */ -function _parse_request_uri($path, array $headers) -{ - $hostKey = array_filter(array_keys($headers), function ($k) { - return strtolower($k) === 'host'; - }); - - // If no host is found, then a full URI cannot be constructed. - if (!$hostKey) { - return $path; - } - - $host = $headers[reset($hostKey)][0]; - $scheme = substr($host, -4) === ':443' ? 'https' : 'http'; - - return $scheme . '://' . $host . '/' . ltrim($path, '/'); -} - -/** - * Get a short summary of the message body - * - * Will return `null` if the response is not printable. - * - * @param MessageInterface $message The message to get the body summary - * @param int $truncateAt The maximum allowed size of the summary - * - * @return null|string - */ -function get_message_body_summary(MessageInterface $message, $truncateAt = 120) -{ - $body = $message->getBody(); - - if (!$body->isSeekable() || !$body->isReadable()) { - return null; - } - - $size = $body->getSize(); - - if ($size === 0) { - return null; - } - - $summary = $body->read($truncateAt); - $body->rewind(); - - if ($size > $truncateAt) { - $summary .= ' (truncated...)'; - } - - // Matches any printable character, including unicode characters: - // letters, marks, numbers, punctuation, spacing, and separators. - if (preg_match('/[^\pL\pM\pN\pP\pS\pZ\n\r\t]/', $summary)) { - return null; - } - - return $summary; -} - -/** @internal */ -function _caseless_remove($keys, array $data) -{ - $result = []; - - foreach ($keys as &$key) { - $key = strtolower($key); - } - - foreach ($data as $k => $v) { - if (!in_array(strtolower($k), $keys)) { - $result[$k] = $v; - } - } - - return $result; -} diff --git a/vendor/guzzlehttp/psr7/src/functions_include.php b/vendor/guzzlehttp/psr7/src/functions_include.php deleted file mode 100644 index 96a4a83..0000000 --- a/vendor/guzzlehttp/psr7/src/functions_include.php +++ /dev/null @@ -1,6 +0,0 @@ -buildFromDirectory(dirname(__DIR__).'/lib'); -rename( - dirname(__DIR__).'/lib/index.php', - dirname(__DIR__).'/lib/random.php' -); - -/** - * If we pass an (optional) path to a private key as a second argument, we will - * sign the Phar with OpenSSL. - * - * If you leave this out, it will produce an unsigned .phar! - */ -if ($argc > 1) { - if (!@is_readable($argv[1])) { - echo 'Could not read the private key file:', $argv[1], "\n"; - exit(255); - } - $pkeyFile = file_get_contents($argv[1]); - - $private = openssl_get_privatekey($pkeyFile); - if ($private !== false) { - $pkey = ''; - openssl_pkey_export($private, $pkey); - $phar->setSignatureAlgorithm(Phar::OPENSSL, $pkey); - - /** - * Save the corresponding public key to the file - */ - if (!@is_readable($dist.'/random_compat.phar.pubkey')) { - $details = openssl_pkey_get_details($private); - file_put_contents( - $dist.'/random_compat.phar.pubkey', - $details['key'] - ); - } - } else { - echo 'An error occurred reading the private key from OpenSSL.', "\n"; - exit(255); - } -} diff --git a/vendor/paragonie/random_compat/psalm-autoload.php b/vendor/paragonie/random_compat/psalm-autoload.php deleted file mode 100644 index d71d1b8..0000000 --- a/vendor/paragonie/random_compat/psalm-autoload.php +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/vendor/psr/http-message/CHANGELOG.md b/vendor/psr/http-message/CHANGELOG.md deleted file mode 100644 index 74b1ef9..0000000 --- a/vendor/psr/http-message/CHANGELOG.md +++ /dev/null @@ -1,36 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file, in reverse chronological order by release. - -## 1.0.1 - 2016-08-06 - -### Added - -- Nothing. - -### Deprecated - -- Nothing. - -### Removed - -- Nothing. - -### Fixed - -- Updated all `@return self` annotation references in interfaces to use - `@return static`, which more closelly follows the semantics of the - specification. -- Updated the `MessageInterface::getHeaders()` return annotation to use the - value `string[][]`, indicating the format is a nested array of strings. -- Updated the `@link` annotation for `RequestInterface::withRequestTarget()` - to point to the correct section of RFC 7230. -- Updated the `ServerRequestInterface::withUploadedFiles()` parameter annotation - to add the parameter name (`$uploadedFiles`). -- Updated a `@throws` annotation for the `UploadedFileInterface::moveTo()` - method to correctly reference the method parameter (it was referencing an - incorrect parameter name previously). - -## 1.0.0 - 2016-05-18 - -Initial stable release; reflects accepted PSR-7 specification. diff --git a/vendor/psr/http-message/LICENSE b/vendor/psr/http-message/LICENSE deleted file mode 100644 index c2d8e45..0000000 --- a/vendor/psr/http-message/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014 PHP Framework Interoperability Group - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/psr/http-message/README.md b/vendor/psr/http-message/README.md deleted file mode 100644 index 2818533..0000000 --- a/vendor/psr/http-message/README.md +++ /dev/null @@ -1,13 +0,0 @@ -PSR Http Message -================ - -This repository holds all interfaces/classes/traits related to -[PSR-7](http://www.php-fig.org/psr/psr-7/). - -Note that this is not a HTTP message implementation of its own. It is merely an -interface that describes a HTTP message. See the specification for more details. - -Usage ------ - -We'll certainly need some stuff in here. \ No newline at end of file diff --git a/vendor/psr/http-message/composer.json b/vendor/psr/http-message/composer.json deleted file mode 100644 index b0d2937..0000000 --- a/vendor/psr/http-message/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "psr/http-message", - "description": "Common interface for HTTP messages", - "keywords": ["psr", "psr-7", "http", "http-message", "request", "response"], - "homepage": "https://github.com/php-fig/http-message", - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "require": { - "php": ">=5.3.0" - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php deleted file mode 100644 index dd46e5e..0000000 --- a/vendor/psr/http-message/src/MessageInterface.php +++ /dev/null @@ -1,187 +0,0 @@ -getHeaders() as $name => $values) { - * echo $name . ": " . implode(", ", $values); - * } - * - * // Emit headers iteratively: - * foreach ($message->getHeaders() as $name => $values) { - * foreach ($values as $value) { - * header(sprintf('%s: %s', $name, $value), false); - * } - * } - * - * While header names are not case-sensitive, getHeaders() will preserve the - * exact case in which headers were originally specified. - * - * @return string[][] Returns an associative array of the message's headers. Each - * key MUST be a header name, and each value MUST be an array of strings - * for that header. - */ - public function getHeaders(); - - /** - * Checks if a header exists by the given case-insensitive name. - * - * @param string $name Case-insensitive header field name. - * @return bool Returns true if any header names match the given header - * name using a case-insensitive string comparison. Returns false if - * no matching header name is found in the message. - */ - public function hasHeader($name); - - /** - * Retrieves a message header value by the given case-insensitive name. - * - * This method returns an array of all the header values of the given - * case-insensitive header name. - * - * If the header does not appear in the message, this method MUST return an - * empty array. - * - * @param string $name Case-insensitive header field name. - * @return string[] An array of string values as provided for the given - * header. If the header does not appear in the message, this method MUST - * return an empty array. - */ - public function getHeader($name); - - /** - * Retrieves a comma-separated string of the values for a single header. - * - * This method returns all of the header values of the given - * case-insensitive header name as a string concatenated together using - * a comma. - * - * NOTE: Not all header values may be appropriately represented using - * comma concatenation. For such headers, use getHeader() instead - * and supply your own delimiter when concatenating. - * - * If the header does not appear in the message, this method MUST return - * an empty string. - * - * @param string $name Case-insensitive header field name. - * @return string A string of values as provided for the given header - * concatenated together using a comma. If the header does not appear in - * the message, this method MUST return an empty string. - */ - public function getHeaderLine($name); - - /** - * Return an instance with the provided value replacing the specified header. - * - * While header names are case-insensitive, the casing of the header will - * be preserved by this function, and returned from getHeaders(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new and/or updated header and value. - * - * @param string $name Case-insensitive header field name. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withHeader($name, $value); - - /** - * Return an instance with the specified header appended with the given value. - * - * Existing values for the specified header will be maintained. The new - * value(s) will be appended to the existing list. If the header did not - * exist previously, it will be added. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new header and/or value. - * - * @param string $name Case-insensitive header field name to add. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withAddedHeader($name, $value); - - /** - * Return an instance without the specified header. - * - * Header resolution MUST be done without case-sensitivity. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the named header. - * - * @param string $name Case-insensitive header field name to remove. - * @return static - */ - public function withoutHeader($name); - - /** - * Gets the body of the message. - * - * @return StreamInterface Returns the body as a stream. - */ - public function getBody(); - - /** - * Return an instance with the specified message body. - * - * The body MUST be a StreamInterface object. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return a new instance that has the - * new body stream. - * - * @param StreamInterface $body Body. - * @return static - * @throws \InvalidArgumentException When the body is not valid. - */ - public function withBody(StreamInterface $body); -} diff --git a/vendor/psr/http-message/src/RequestInterface.php b/vendor/psr/http-message/src/RequestInterface.php deleted file mode 100644 index a96d4fd..0000000 --- a/vendor/psr/http-message/src/RequestInterface.php +++ /dev/null @@ -1,129 +0,0 @@ -getQuery()` - * or from the `QUERY_STRING` server param. - * - * @return array - */ - public function getQueryParams(); - - /** - * Return an instance with the specified query string arguments. - * - * These values SHOULD remain immutable over the course of the incoming - * request. They MAY be injected during instantiation, such as from PHP's - * $_GET superglobal, or MAY be derived from some other value such as the - * URI. In cases where the arguments are parsed from the URI, the data - * MUST be compatible with what PHP's parse_str() would return for - * purposes of how duplicate query parameters are handled, and how nested - * sets are handled. - * - * Setting query string arguments MUST NOT change the URI stored by the - * request, nor the values in the server params. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated query string arguments. - * - * @param array $query Array of query string arguments, typically from - * $_GET. - * @return static - */ - public function withQueryParams(array $query); - - /** - * Retrieve normalized file upload data. - * - * This method returns upload metadata in a normalized tree, with each leaf - * an instance of Psr\Http\Message\UploadedFileInterface. - * - * These values MAY be prepared from $_FILES or the message body during - * instantiation, or MAY be injected via withUploadedFiles(). - * - * @return array An array tree of UploadedFileInterface instances; an empty - * array MUST be returned if no data is present. - */ - public function getUploadedFiles(); - - /** - * Create a new instance with the specified uploaded files. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param array $uploadedFiles An array tree of UploadedFileInterface instances. - * @return static - * @throws \InvalidArgumentException if an invalid structure is provided. - */ - public function withUploadedFiles(array $uploadedFiles); - - /** - * Retrieve any parameters provided in the request body. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, this method MUST - * return the contents of $_POST. - * - * Otherwise, this method may return any results of deserializing - * the request body content; as parsing returns structured content, the - * potential types MUST be arrays or objects only. A null value indicates - * the absence of body content. - * - * @return null|array|object The deserialized body parameters, if any. - * These will typically be an array or object. - */ - public function getParsedBody(); - - /** - * Return an instance with the specified body parameters. - * - * These MAY be injected during instantiation. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, use this method - * ONLY to inject the contents of $_POST. - * - * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of - * deserializing the request body content. Deserialization/parsing returns - * structured data, and, as such, this method ONLY accepts arrays or objects, - * or a null value if nothing was available to parse. - * - * As an example, if content negotiation determines that the request data - * is a JSON payload, this method could be used to create a request - * instance with the deserialized parameters. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param null|array|object $data The deserialized body data. This will - * typically be in an array or object. - * @return static - * @throws \InvalidArgumentException if an unsupported argument type is - * provided. - */ - public function withParsedBody($data); - - /** - * Retrieve attributes derived from the request. - * - * The request "attributes" may be used to allow injection of any - * parameters derived from the request: e.g., the results of path - * match operations; the results of decrypting cookies; the results of - * deserializing non-form-encoded message bodies; etc. Attributes - * will be application and request specific, and CAN be mutable. - * - * @return array Attributes derived from the request. - */ - public function getAttributes(); - - /** - * Retrieve a single derived request attribute. - * - * Retrieves a single derived request attribute as described in - * getAttributes(). If the attribute has not been previously set, returns - * the default value as provided. - * - * This method obviates the need for a hasAttribute() method, as it allows - * specifying a default value to return if the attribute is not found. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $default Default value to return if the attribute does not exist. - * @return mixed - */ - public function getAttribute($name, $default = null); - - /** - * Return an instance with the specified derived request attribute. - * - * This method allows setting a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $value The value of the attribute. - * @return static - */ - public function withAttribute($name, $value); - - /** - * Return an instance that removes the specified derived request attribute. - * - * This method allows removing a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @return static - */ - public function withoutAttribute($name); -} diff --git a/vendor/psr/http-message/src/StreamInterface.php b/vendor/psr/http-message/src/StreamInterface.php deleted file mode 100644 index f68f391..0000000 --- a/vendor/psr/http-message/src/StreamInterface.php +++ /dev/null @@ -1,158 +0,0 @@ - - * [user-info@]host[:port] - * - * - * If the port component is not set or is the standard port for the current - * scheme, it SHOULD NOT be included. - * - * @see https://tools.ietf.org/html/rfc3986#section-3.2 - * @return string The URI authority, in "[user-info@]host[:port]" format. - */ - public function getAuthority(); - - /** - * Retrieve the user information component of the URI. - * - * If no user information is present, this method MUST return an empty - * string. - * - * If a user is present in the URI, this will return that value; - * additionally, if the password is also present, it will be appended to the - * user value, with a colon (":") separating the values. - * - * The trailing "@" character is not part of the user information and MUST - * NOT be added. - * - * @return string The URI user information, in "username[:password]" format. - */ - public function getUserInfo(); - - /** - * Retrieve the host component of the URI. - * - * If no host is present, this method MUST return an empty string. - * - * The value returned MUST be normalized to lowercase, per RFC 3986 - * Section 3.2.2. - * - * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 - * @return string The URI host. - */ - public function getHost(); - - /** - * Retrieve the port component of the URI. - * - * If a port is present, and it is non-standard for the current scheme, - * this method MUST return it as an integer. If the port is the standard port - * used with the current scheme, this method SHOULD return null. - * - * If no port is present, and no scheme is present, this method MUST return - * a null value. - * - * If no port is present, but a scheme is present, this method MAY return - * the standard port for that scheme, but SHOULD return null. - * - * @return null|int The URI port. - */ - public function getPort(); - - /** - * Retrieve the path component of the URI. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * Normally, the empty path "" and absolute path "/" are considered equal as - * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically - * do this normalization because in contexts with a trimmed base path, e.g. - * the front controller, this difference becomes significant. It's the task - * of the user to handle both "" and "/". - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.3. - * - * As an example, if the value should include a slash ("/") not intended as - * delimiter between path segments, that value MUST be passed in encoded - * form (e.g., "%2F") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.3 - * @return string The URI path. - */ - public function getPath(); - - /** - * Retrieve the query string of the URI. - * - * If no query string is present, this method MUST return an empty string. - * - * The leading "?" character is not part of the query and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.4. - * - * As an example, if a value in a key/value pair of the query string should - * include an ampersand ("&") not intended as a delimiter between values, - * that value MUST be passed in encoded form (e.g., "%26") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.4 - * @return string The URI query string. - */ - public function getQuery(); - - /** - * Retrieve the fragment component of the URI. - * - * If no fragment is present, this method MUST return an empty string. - * - * The leading "#" character is not part of the fragment and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.5. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.5 - * @return string The URI fragment. - */ - public function getFragment(); - - /** - * Return an instance with the specified scheme. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified scheme. - * - * Implementations MUST support the schemes "http" and "https" case - * insensitively, and MAY accommodate other schemes if required. - * - * An empty scheme is equivalent to removing the scheme. - * - * @param string $scheme The scheme to use with the new instance. - * @return static A new instance with the specified scheme. - * @throws \InvalidArgumentException for invalid or unsupported schemes. - */ - public function withScheme($scheme); - - /** - * Return an instance with the specified user information. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified user information. - * - * Password is optional, but the user information MUST include the - * user; an empty string for the user is equivalent to removing user - * information. - * - * @param string $user The user name to use for authority. - * @param null|string $password The password associated with $user. - * @return static A new instance with the specified user information. - */ - public function withUserInfo($user, $password = null); - - /** - * Return an instance with the specified host. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified host. - * - * An empty host value is equivalent to removing the host. - * - * @param string $host The hostname to use with the new instance. - * @return static A new instance with the specified host. - * @throws \InvalidArgumentException for invalid hostnames. - */ - public function withHost($host); - - /** - * Return an instance with the specified port. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified port. - * - * Implementations MUST raise an exception for ports outside the - * established TCP and UDP port ranges. - * - * A null value provided for the port is equivalent to removing the port - * information. - * - * @param null|int $port The port to use with the new instance; a null value - * removes the port information. - * @return static A new instance with the specified port. - * @throws \InvalidArgumentException for invalid ports. - */ - public function withPort($port); - - /** - * Return an instance with the specified path. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified path. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * If the path is intended to be domain-relative rather than path relative then - * it must begin with a slash ("/"). Paths not starting with a slash ("/") - * are assumed to be relative to some base path known to the application or - * consumer. - * - * Users can provide both encoded and decoded path characters. - * Implementations ensure the correct encoding as outlined in getPath(). - * - * @param string $path The path to use with the new instance. - * @return static A new instance with the specified path. - * @throws \InvalidArgumentException for invalid paths. - */ - public function withPath($path); - - /** - * Return an instance with the specified query string. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified query string. - * - * Users can provide both encoded and decoded query characters. - * Implementations ensure the correct encoding as outlined in getQuery(). - * - * An empty query string value is equivalent to removing the query string. - * - * @param string $query The query string to use with the new instance. - * @return static A new instance with the specified query string. - * @throws \InvalidArgumentException for invalid query strings. - */ - public function withQuery($query); - - /** - * Return an instance with the specified URI fragment. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified URI fragment. - * - * Users can provide both encoded and decoded fragment characters. - * Implementations ensure the correct encoding as outlined in getFragment(). - * - * An empty fragment value is equivalent to removing the fragment. - * - * @param string $fragment The fragment to use with the new instance. - * @return static A new instance with the specified fragment. - */ - public function withFragment($fragment); - - /** - * Return the string representation as a URI reference. - * - * Depending on which components of the URI are present, the resulting - * string is either a full URI or relative reference according to RFC 3986, - * Section 4.1. The method concatenates the various components of the URI, - * using the appropriate delimiters: - * - * - If a scheme is present, it MUST be suffixed by ":". - * - If an authority is present, it MUST be prefixed by "//". - * - The path can be concatenated without delimiters. But there are two - * cases where the path has to be adjusted to make the URI reference - * valid as PHP does not allow to throw an exception in __toString(): - * - If the path is rootless and an authority is present, the path MUST - * be prefixed by "/". - * - If the path is starting with more than one "/" and no authority is - * present, the starting slashes MUST be reduced to one. - * - If a query is present, it MUST be prefixed by "?". - * - If a fragment is present, it MUST be prefixed by "#". - * - * @see http://tools.ietf.org/html/rfc3986#section-4.1 - * @return string - */ - public function __toString(); -} diff --git a/vendor/ralouphie/getallheaders/LICENSE b/vendor/ralouphie/getallheaders/LICENSE deleted file mode 100644 index be5540c..0000000 --- a/vendor/ralouphie/getallheaders/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Ralph Khattar - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/ralouphie/getallheaders/README.md b/vendor/ralouphie/getallheaders/README.md deleted file mode 100644 index 9430d76..0000000 --- a/vendor/ralouphie/getallheaders/README.md +++ /dev/null @@ -1,27 +0,0 @@ -getallheaders -============= - -PHP `getallheaders()` polyfill. Compatible with PHP >= 5.3. - -[![Build Status](https://travis-ci.org/ralouphie/getallheaders.svg?branch=master)](https://travis-ci.org/ralouphie/getallheaders) -[![Coverage Status](https://coveralls.io/repos/ralouphie/getallheaders/badge.png?branch=master)](https://coveralls.io/r/ralouphie/getallheaders?branch=master) -[![Latest Stable Version](https://poser.pugx.org/ralouphie/getallheaders/v/stable.png)](https://packagist.org/packages/ralouphie/getallheaders) -[![Latest Unstable Version](https://poser.pugx.org/ralouphie/getallheaders/v/unstable.png)](https://packagist.org/packages/ralouphie/getallheaders) -[![License](https://poser.pugx.org/ralouphie/getallheaders/license.png)](https://packagist.org/packages/ralouphie/getallheaders) - - -This is a simple polyfill for [`getallheaders()`](http://www.php.net/manual/en/function.getallheaders.php). - -## Install - -For PHP version **`>= 5.6`**: - -``` -composer require ralouphie/getallheaders -``` - -For PHP version **`< 5.6`**: - -``` -composer require ralouphie/getallheaders "^2" -``` diff --git a/vendor/ralouphie/getallheaders/composer.json b/vendor/ralouphie/getallheaders/composer.json deleted file mode 100644 index de8ce62..0000000 --- a/vendor/ralouphie/getallheaders/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "ralouphie/getallheaders", - "description": "A polyfill for getallheaders.", - "license": "MIT", - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "require": { - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "^5 || ^6.5", - "php-coveralls/php-coveralls": "^2.1" - }, - "autoload": { - "files": ["src/getallheaders.php"] - }, - "autoload-dev": { - "psr-4": { - "getallheaders\\Tests\\": "tests/" - } - } -} diff --git a/vendor/ralouphie/getallheaders/src/getallheaders.php b/vendor/ralouphie/getallheaders/src/getallheaders.php deleted file mode 100644 index c7285a5..0000000 --- a/vendor/ralouphie/getallheaders/src/getallheaders.php +++ /dev/null @@ -1,46 +0,0 @@ - 'Content-Type', - 'CONTENT_LENGTH' => 'Content-Length', - 'CONTENT_MD5' => 'Content-Md5', - ); - - foreach ($_SERVER as $key => $value) { - if (substr($key, 0, 5) === 'HTTP_') { - $key = substr($key, 5); - if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) { - $key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key)))); - $headers[$key] = $value; - } - } elseif (isset($copy_server[$key])) { - $headers[$copy_server[$key]] = $value; - } - } - - if (!isset($headers['Authorization'])) { - if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) { - $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; - } elseif (isset($_SERVER['PHP_AUTH_USER'])) { - $basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; - $headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass); - } elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) { - $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST']; - } - } - - return $headers; - } - -} diff --git a/vendor/symfony/polyfill-intl-idn/Idn.php b/vendor/symfony/polyfill-intl-idn/Idn.php deleted file mode 100644 index 127437e..0000000 --- a/vendor/symfony/polyfill-intl-idn/Idn.php +++ /dev/null @@ -1,915 +0,0 @@ - and Trevor Rowbotham - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Intl\Idn; - -use Exception; -use Normalizer; -use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges; -use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex; - -/** - * @see https://www.unicode.org/reports/tr46/ - * - * @internal - */ -final class Idn -{ - const ERROR_EMPTY_LABEL = 1; - const ERROR_LABEL_TOO_LONG = 2; - const ERROR_DOMAIN_NAME_TOO_LONG = 4; - const ERROR_LEADING_HYPHEN = 8; - const ERROR_TRAILING_HYPHEN = 0x10; - const ERROR_HYPHEN_3_4 = 0x20; - const ERROR_LEADING_COMBINING_MARK = 0x40; - const ERROR_DISALLOWED = 0x80; - const ERROR_PUNYCODE = 0x100; - const ERROR_LABEL_HAS_DOT = 0x200; - const ERROR_INVALID_ACE_LABEL = 0x400; - const ERROR_BIDI = 0x800; - const ERROR_CONTEXTJ = 0x1000; - const ERROR_CONTEXTO_PUNCTUATION = 0x2000; - const ERROR_CONTEXTO_DIGITS = 0x4000; - - const INTL_IDNA_VARIANT_2003 = 0; - const INTL_IDNA_VARIANT_UTS46 = 1; - - const MAX_DOMAIN_SIZE = 253; - const MAX_LABEL_SIZE = 63; - - const BASE = 36; - const TMIN = 1; - const TMAX = 26; - const SKEW = 38; - const DAMP = 700; - const INITIAL_BIAS = 72; - const INITIAL_N = 128; - const DELIMITER = '-'; - const MAX_INT = 2147483647; - - /** - * Contains the numeric value of a basic code point (for use in representing integers) in the - * range 0 to BASE-1, or -1 if b is does not represent a value. - * - * @var array - */ - private static $basicToDigit = array( - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, - - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, - - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - ); - - /** - * @var array - */ - private static $virama; - - /** - * @var array - */ - private static $mapped; - - /** - * @var array - */ - private static $ignored; - - /** - * @var array - */ - private static $deviation; - - /** - * @var array - */ - private static $disallowed; - - /** - * @var array - */ - private static $disallowed_STD3_mapped; - - /** - * @var array - */ - private static $disallowed_STD3_valid; - - /** - * @var bool - */ - private static $mappingTableLoaded = false; - - /** - * @see https://www.unicode.org/reports/tr46/#ToASCII - * - * @param string $domainName - * @param int $options - * @param int $variant - * @param array $idna_info - * - * @return string|false - */ - public static function idn_to_ascii($domainName, $options = IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) - { - if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) { - @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED); - } - - $options = array( - 'CheckHyphens' => true, - 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI), - 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ), - 'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES), - 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_ASCII), - 'VerifyDnsLength' => true, - ); - $info = new Info(); - $labels = self::process((string) $domainName, $options, $info); - - foreach ($labels as $i => $label) { - // Only convert labels to punycode that contain non-ASCII code points - if (1 === preg_match('/[^\x00-\x7F]/', $label)) { - try { - $label = 'xn--'.self::punycodeEncode($label); - } catch (Exception $e) { - $info->errors |= self::ERROR_PUNYCODE; - } - - $labels[$i] = $label; - } - } - - if ($options['VerifyDnsLength']) { - self::validateDomainAndLabelLength($labels, $info); - } - - $idna_info = array( - 'result' => implode('.', $labels), - 'isTransitionalDifferent' => $info->transitionalDifferent, - 'errors' => $info->errors, - ); - - return 0 === $info->errors ? $idna_info['result'] : false; - } - - /** - * @see https://www.unicode.org/reports/tr46/#ToUnicode - * - * @param string $domainName - * @param int $options - * @param int $variant - * @param array $idna_info - * - * @return string|false - */ - public static function idn_to_utf8($domainName, $options = IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) - { - if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) { - @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', E_USER_DEPRECATED); - } - - $info = new Info(); - $labels = self::process((string) $domainName, array( - 'CheckHyphens' => true, - 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI), - 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ), - 'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES), - 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_UNICODE), - ), $info); - $idna_info = array( - 'result' => implode('.', $labels), - 'isTransitionalDifferent' => $info->transitionalDifferent, - 'errors' => $info->errors, - ); - - return 0 === $info->errors ? $idna_info['result'] : false; - } - - /** - * @param string $label - * - * @return bool - */ - private static function isValidContextJ(array $codePoints, $label) - { - if (!isset(self::$virama)) { - self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php'; - } - - $offset = 0; - - foreach ($codePoints as $i => $codePoint) { - if (0x200C !== $codePoint && 0x200D !== $codePoint) { - continue; - } - - if (!isset($codePoints[$i - 1])) { - return false; - } - - // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True; - if (isset(self::$virama[$codePoints[$i - 1]])) { - continue; - } - - // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then - // True; - // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}] - if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, PREG_OFFSET_CAPTURE, $offset)) { - $offset += \strlen($matches[1][0]); - - continue; - } - - return false; - } - - return true; - } - - /** - * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap - * - * @param string $input - * @param array $options - * - * @return string - */ - private static function mapCodePoints($input, array $options, Info $info) - { - $str = ''; - $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules']; - $transitional = $options['Transitional_Processing']; - - foreach (self::utf8Decode($input) as $codePoint) { - $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules); - - switch ($data['status']) { - case 'disallowed': - $info->errors |= self::ERROR_DISALLOWED; - - // no break. - - case 'valid': - $str .= mb_chr($codePoint, 'utf-8'); - - break; - - case 'ignored': - // Do nothing. - break; - - case 'mapped': - $str .= $data['mapping']; - - break; - - case 'deviation': - $info->transitionalDifferent = true; - $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8')); - - break; - } - } - - return $str; - } - - /** - * @see https://www.unicode.org/reports/tr46/#Processing - * - * @param string $domain - * @param array $options - * - * @return array - */ - private static function process($domain, array $options, Info $info) - { - // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and - // we need to respect the VerifyDnsLength option. - $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength']; - - if ($checkForEmptyLabels && '' === $domain) { - $info->errors |= self::ERROR_EMPTY_LABEL; - - return array($domain); - } - - // Step 1. Map each code point in the domain name string - $domain = self::mapCodePoints($domain, $options, $info); - - // Step 2. Normalize the domain name string to Unicode Normalization Form C. - if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) { - $domain = Normalizer::normalize($domain, Normalizer::FORM_C); - } - - // Step 3. Break the string into labels at U+002E (.) FULL STOP. - $labels = explode('.', $domain); - $lastLabelIndex = \count($labels) - 1; - - // Step 4. Convert and validate each label in the domain name string. - foreach ($labels as $i => $label) { - $validationOptions = $options; - - if ('xn--' === substr($label, 0, 4)) { - try { - $label = self::punycodeDecode(substr($label, 4)); - } catch (Exception $e) { - $info->errors |= self::ERROR_PUNYCODE; - - continue; - } - - $validationOptions['Transitional_Processing'] = false; - $labels[$i] = $label; - } - - self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex); - } - - if ($info->bidiDomain && !$info->validBidiDomain) { - $info->errors |= self::ERROR_BIDI; - } - - // Any input domain name string that does not record an error has been successfully - // processed according to this specification. Conversely, if an input domain_name string - // causes an error, then the processing of the input domain_name string fails. Determining - // what to do with error input is up to the caller, and not in the scope of this document. - return $labels; - } - - /** - * @see https://tools.ietf.org/html/rfc5893#section-2 - * - * @param string $label - */ - private static function validateBidiLabel($label, Info $info) - { - if (1 === preg_match(Regex::RTL_LABEL, $label)) { - $info->bidiDomain = true; - - // Step 1. The first character must be a character with Bidi property L, R, or AL. - // If it has the R or AL property, it is an RTL label - if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES, - // CS, ET, ON, BN, or NSM are allowed. - if (1 === preg_match(Regex::BIDI_STEP_2, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 3. In an RTL label, the end of the label must be a character with Bidi property - // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM. - if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa. - if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) { - $info->validBidiDomain = false; - - return; - } - - return; - } - - // We are a LTR label - // Step 1. The first character must be a character with Bidi property L, R, or AL. - // If it has the L property, it is an LTR label. - if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 5. In an LTR label, only characters with the Bidi properties L, EN, - // ES, CS, ET, ON, BN, or NSM are allowed. - if (1 === preg_match(Regex::BIDI_STEP_5, $label)) { - $info->validBidiDomain = false; - - return; - } - - // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or - // EN, followed by zero or more characters with Bidi property NSM. - if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) { - $info->validBidiDomain = false; - - return; - } - } - - /** - * @param array $labels - */ - private static function validateDomainAndLabelLength(array $labels, Info $info) - { - $maxDomainSize = self::MAX_DOMAIN_SIZE; - $length = \count($labels); - - // Number of "." delimiters. - $domainLength = $length - 1; - - // If the last label is empty and it is not the first label, then it is the root label. - // Increase the max size by 1, making it 254, to account for the root label's "." - // delimiter. This also means we don't need to check the last label's length for being too - // long. - if ($length > 1 && '' === $labels[$length - 1]) { - ++$maxDomainSize; - --$length; - } - - for ($i = 0; $i < $length; ++$i) { - $bytes = \strlen($labels[$i]); - $domainLength += $bytes; - - if ($bytes > self::MAX_LABEL_SIZE) { - $info->errors |= self::ERROR_LABEL_TOO_LONG; - } - } - - if ($domainLength > $maxDomainSize) { - $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG; - } - } - - /** - * @see https://www.unicode.org/reports/tr46/#Validity_Criteria - * - * @param string $label - * @param array $options - * @param bool $canBeEmpty - */ - private static function validateLabel($label, Info $info, array $options, $canBeEmpty) - { - if ('' === $label) { - if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) { - $info->errors |= self::ERROR_EMPTY_LABEL; - } - - return; - } - - // Step 1. The label must be in Unicode Normalization Form C. - if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) { - $info->errors |= self::ERROR_INVALID_ACE_LABEL; - } - - $codePoints = self::utf8Decode($label); - - if ($options['CheckHyphens']) { - // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character - // in both the thrid and fourth positions. - if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) { - $info->errors |= self::ERROR_HYPHEN_3_4; - } - - // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D - // HYPHEN-MINUS character. - if ('-' === substr($label, 0, 1)) { - $info->errors |= self::ERROR_LEADING_HYPHEN; - } - - if ('-' === substr($label, -1, 1)) { - $info->errors |= self::ERROR_TRAILING_HYPHEN; - } - } - - // Step 4. The label must not contain a U+002E (.) FULL STOP. - if (false !== strpos($label, '.')) { - $info->errors |= self::ERROR_LABEL_HAS_DOT; - } - - // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark. - if (1 === preg_match(Regex::COMBINING_MARK, $label)) { - $info->errors |= self::ERROR_LEADING_COMBINING_MARK; - } - - // Step 6. Each code point in the label must only have certain status values according to - // Section 5, IDNA Mapping Table: - $transitional = $options['Transitional_Processing']; - $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules']; - - foreach ($codePoints as $codePoint) { - $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules); - $status = $data['status']; - - if ('valid' === $status || (!$transitional && 'deviation' === $status)) { - continue; - } - - $info->errors |= self::ERROR_DISALLOWED; - - break; - } - - // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in - // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA) - // [IDNA2008]. - if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) { - $info->errors |= self::ERROR_CONTEXTJ; - } - - // Step 8. If CheckBidi, and if the domain name is a Bidi domain name, then the label must - // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2. - if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) { - self::validateBidiLabel($label, $info); - } - } - - /** - * @see https://tools.ietf.org/html/rfc3492#section-6.2 - * - * @param string $input - * - * @return string - */ - private static function punycodeDecode($input) - { - $n = self::INITIAL_N; - $out = 0; - $i = 0; - $bias = self::INITIAL_BIAS; - $lastDelimIndex = strrpos($input, self::DELIMITER); - $b = false === $lastDelimIndex ? 0 : $lastDelimIndex; - $inputLength = \strlen($input); - $output = array(); - $bytes = array_map('ord', str_split($input)); - - for ($j = 0; $j < $b; ++$j) { - if ($bytes[$j] > 0x7F) { - throw new Exception('Invalid input'); - } - - $output[$out++] = $input[$j]; - } - - if ($b > 0) { - ++$b; - } - - for ($in = $b; $in < $inputLength; ++$out) { - $oldi = $i; - $w = 1; - - for ($k = self::BASE; /* no condition */; $k += self::BASE) { - if ($in >= $inputLength) { - throw new Exception('Invalid input'); - } - - $digit = self::$basicToDigit[$bytes[$in++] & 0xFF]; - - if ($digit < 0) { - throw new Exception('Invalid input'); - } - - if ($digit > intdiv(self::MAX_INT - $i, $w)) { - throw new Exception('Integer overflow'); - } - - $i += $digit * $w; - - if ($k <= $bias) { - $t = self::TMIN; - } elseif ($k >= $bias + self::TMAX) { - $t = self::TMAX; - } else { - $t = $k - $bias; - } - - if ($digit < $t) { - break; - } - - $baseMinusT = self::BASE - $t; - - if ($w > intdiv(self::MAX_INT, $baseMinusT)) { - throw new Exception('Integer overflow'); - } - - $w *= $baseMinusT; - } - - $outPlusOne = $out + 1; - $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi); - - if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) { - throw new Exception('Integer overflow'); - } - - $n += intdiv($i, $outPlusOne); - $i %= $outPlusOne; - array_splice($output, $i++, 0, array(mb_chr($n, 'utf-8'))); - } - - return implode('', $output); - } - - /** - * @see https://tools.ietf.org/html/rfc3492#section-6.3 - * - * @param string $input - * - * @return string - */ - private static function punycodeEncode($input) - { - $n = self::INITIAL_N; - $delta = 0; - $out = 0; - $bias = self::INITIAL_BIAS; - $inputLength = 0; - $output = ''; - $iter = self::utf8Decode($input); - - foreach ($iter as $codePoint) { - ++$inputLength; - - if ($codePoint < 0x80) { - $output .= \chr($codePoint); - ++$out; - } - } - - $h = $out; - $b = $out; - - if ($b > 0) { - $output .= self::DELIMITER; - ++$out; - } - - while ($h < $inputLength) { - $m = self::MAX_INT; - - foreach ($iter as $codePoint) { - if ($codePoint >= $n && $codePoint < $m) { - $m = $codePoint; - } - } - - if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) { - throw new Exception('Integer overflow'); - } - - $delta += ($m - $n) * ($h + 1); - $n = $m; - - foreach ($iter as $codePoint) { - if ($codePoint < $n && 0 === ++$delta) { - throw new Exception('Integer overflow'); - } elseif ($codePoint === $n) { - $q = $delta; - - for ($k = self::BASE; /* no condition */; $k += self::BASE) { - if ($k <= $bias) { - $t = self::TMIN; - } elseif ($k >= $bias + self::TMAX) { - $t = self::TMAX; - } else { - $t = $k - $bias; - } - - if ($q < $t) { - break; - } - - $qMinusT = $q - $t; - $baseMinusT = self::BASE - $t; - $output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false); - ++$out; - $q = intdiv($qMinusT, $baseMinusT); - } - - $output .= self::encodeDigit($q, false); - ++$out; - $bias = self::adaptBias($delta, $h + 1, $h === $b); - $delta = 0; - ++$h; - } - } - - ++$delta; - ++$n; - } - - return $output; - } - - /** - * @see https://tools.ietf.org/html/rfc3492#section-6.1 - * - * @param int $delta - * @param int $numPoints - * @param bool $firstTime - * - * @return int - */ - private static function adaptBias($delta, $numPoints, $firstTime) - { - // xxx >> 1 is a faster way of doing intdiv(xxx, 2) - $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1; - $delta += intdiv($delta, $numPoints); - $k = 0; - - while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) { - $delta = intdiv($delta, self::BASE - self::TMIN); - $k += self::BASE; - } - - return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW); - } - - /** - * @param int $d - * @param bool $flag - * - * @return string - */ - private static function encodeDigit($d, $flag) - { - return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5)); - } - - /** - * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any - * invalid byte sequences will be replaced by a U+FFFD replacement code point. - * - * @see https://encoding.spec.whatwg.org/#utf-8-decoder - * - * @param string $input - * - * @return array - */ - private static function utf8Decode($input) - { - $bytesSeen = 0; - $bytesNeeded = 0; - $lowerBoundary = 0x80; - $upperBoundary = 0xBF; - $codePoint = 0; - $codePoints = array(); - $length = \strlen($input); - - for ($i = 0; $i < $length; ++$i) { - $byte = \ord($input[$i]); - - if (0 === $bytesNeeded) { - if ($byte >= 0x00 && $byte <= 0x7F) { - $codePoints[] = $byte; - - continue; - } - - if ($byte >= 0xC2 && $byte <= 0xDF) { - $bytesNeeded = 1; - $codePoint = $byte & 0x1F; - } elseif ($byte >= 0xE0 && $byte <= 0xEF) { - if (0xE0 === $byte) { - $lowerBoundary = 0xA0; - } elseif (0xED === $byte) { - $upperBoundary = 0x9F; - } - - $bytesNeeded = 2; - $codePoint = $byte & 0xF; - } elseif ($byte >= 0xF0 && $byte <= 0xF4) { - if (0xF0 === $byte) { - $lowerBoundary = 0x90; - } elseif (0xF4 === $byte) { - $upperBoundary = 0x8F; - } - - $bytesNeeded = 3; - $codePoint = $byte & 0x7; - } else { - $codePoints[] = 0xFFFD; - } - - continue; - } - - if ($byte < $lowerBoundary || $byte > $upperBoundary) { - $codePoint = 0; - $bytesNeeded = 0; - $bytesSeen = 0; - $lowerBoundary = 0x80; - $upperBoundary = 0xBF; - --$i; - $codePoints[] = 0xFFFD; - - continue; - } - - $lowerBoundary = 0x80; - $upperBoundary = 0xBF; - $codePoint = ($codePoint << 6) | ($byte & 0x3F); - - if (++$bytesSeen !== $bytesNeeded) { - continue; - } - - $codePoints[] = $codePoint; - $codePoint = 0; - $bytesNeeded = 0; - $bytesSeen = 0; - } - - // String unexpectedly ended, so append a U+FFFD code point. - if (0 !== $bytesNeeded) { - $codePoints[] = 0xFFFD; - } - - return $codePoints; - } - - /** - * @param int $codePoint - * @param bool $useSTD3ASCIIRules - * - * @return array{status: string, mapping?: string} - */ - private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules) - { - if (!self::$mappingTableLoaded) { - self::$mappingTableLoaded = true; - self::$mapped = require __DIR__.'/Resources/unidata/mapped.php'; - self::$ignored = require __DIR__.'/Resources/unidata/ignored.php'; - self::$deviation = require __DIR__.'/Resources/unidata/deviation.php'; - self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php'; - self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php'; - self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php'; - } - - if (isset(self::$mapped[$codePoint])) { - return array('status' => 'mapped', 'mapping' => self::$mapped[$codePoint]); - } - - if (isset(self::$ignored[$codePoint])) { - return array('status' => 'ignored'); - } - - if (isset(self::$deviation[$codePoint])) { - return array('status' => 'deviation', 'mapping' => self::$deviation[$codePoint]); - } - - if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) { - return array('status' => 'disallowed'); - } - - $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]); - - if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) { - $status = 'disallowed'; - - if (!$useSTD3ASCIIRules) { - $status = $isDisallowedMapped ? 'mapped' : 'valid'; - } - - if ($isDisallowedMapped) { - return array('status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]); - } - - return array('status' => $status); - } - - return array('status' => 'valid'); - } -} diff --git a/vendor/symfony/polyfill-intl-idn/Info.php b/vendor/symfony/polyfill-intl-idn/Info.php deleted file mode 100644 index 25c3582..0000000 --- a/vendor/symfony/polyfill-intl-idn/Info.php +++ /dev/null @@ -1,23 +0,0 @@ - and Trevor Rowbotham - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Intl\Idn; - -/** - * @internal - */ -class Info -{ - public $bidiDomain = false; - public $errors = 0; - public $validBidiDomain = true; - public $transitionalDifferent = false; -} diff --git a/vendor/symfony/polyfill-intl-idn/LICENSE b/vendor/symfony/polyfill-intl-idn/LICENSE deleted file mode 100644 index 03c5e25..0000000 --- a/vendor/symfony/polyfill-intl-idn/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/polyfill-intl-idn/README.md b/vendor/symfony/polyfill-intl-idn/README.md deleted file mode 100644 index 2e75f2e..0000000 --- a/vendor/symfony/polyfill-intl-idn/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Symfony Polyfill / Intl: Idn -============================ - -This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension. - -More information can be found in the -[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). - -License -======= - -This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php deleted file mode 100644 index 5bb70e4..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php +++ /dev/null @@ -1,375 +0,0 @@ -= 128 && $codePoint <= 159) { - return true; - } - - if ($codePoint >= 2155 && $codePoint <= 2207) { - return true; - } - - if ($codePoint >= 3676 && $codePoint <= 3712) { - return true; - } - - if ($codePoint >= 3808 && $codePoint <= 3839) { - return true; - } - - if ($codePoint >= 4059 && $codePoint <= 4095) { - return true; - } - - if ($codePoint >= 4256 && $codePoint <= 4293) { - return true; - } - - if ($codePoint >= 6849 && $codePoint <= 6911) { - return true; - } - - if ($codePoint >= 11859 && $codePoint <= 11903) { - return true; - } - - if ($codePoint >= 42955 && $codePoint <= 42996) { - return true; - } - - if ($codePoint >= 55296 && $codePoint <= 57343) { - return true; - } - - if ($codePoint >= 57344 && $codePoint <= 63743) { - return true; - } - - if ($codePoint >= 64218 && $codePoint <= 64255) { - return true; - } - - if ($codePoint >= 64976 && $codePoint <= 65007) { - return true; - } - - if ($codePoint >= 65630 && $codePoint <= 65663) { - return true; - } - - if ($codePoint >= 65953 && $codePoint <= 65999) { - return true; - } - - if ($codePoint >= 66046 && $codePoint <= 66175) { - return true; - } - - if ($codePoint >= 66518 && $codePoint <= 66559) { - return true; - } - - if ($codePoint >= 66928 && $codePoint <= 67071) { - return true; - } - - if ($codePoint >= 67432 && $codePoint <= 67583) { - return true; - } - - if ($codePoint >= 67760 && $codePoint <= 67807) { - return true; - } - - if ($codePoint >= 67904 && $codePoint <= 67967) { - return true; - } - - if ($codePoint >= 68256 && $codePoint <= 68287) { - return true; - } - - if ($codePoint >= 68528 && $codePoint <= 68607) { - return true; - } - - if ($codePoint >= 68681 && $codePoint <= 68735) { - return true; - } - - if ($codePoint >= 68922 && $codePoint <= 69215) { - return true; - } - - if ($codePoint >= 69298 && $codePoint <= 69375) { - return true; - } - - if ($codePoint >= 69466 && $codePoint <= 69551) { - return true; - } - - if ($codePoint >= 70207 && $codePoint <= 70271) { - return true; - } - - if ($codePoint >= 70517 && $codePoint <= 70655) { - return true; - } - - if ($codePoint >= 70874 && $codePoint <= 71039) { - return true; - } - - if ($codePoint >= 71134 && $codePoint <= 71167) { - return true; - } - - if ($codePoint >= 71370 && $codePoint <= 71423) { - return true; - } - - if ($codePoint >= 71488 && $codePoint <= 71679) { - return true; - } - - if ($codePoint >= 71740 && $codePoint <= 71839) { - return true; - } - - if ($codePoint >= 72026 && $codePoint <= 72095) { - return true; - } - - if ($codePoint >= 72441 && $codePoint <= 72703) { - return true; - } - - if ($codePoint >= 72887 && $codePoint <= 72959) { - return true; - } - - if ($codePoint >= 73130 && $codePoint <= 73439) { - return true; - } - - if ($codePoint >= 73465 && $codePoint <= 73647) { - return true; - } - - if ($codePoint >= 74650 && $codePoint <= 74751) { - return true; - } - - if ($codePoint >= 75076 && $codePoint <= 77823) { - return true; - } - - if ($codePoint >= 78905 && $codePoint <= 82943) { - return true; - } - - if ($codePoint >= 83527 && $codePoint <= 92159) { - return true; - } - - if ($codePoint >= 92784 && $codePoint <= 92879) { - return true; - } - - if ($codePoint >= 93072 && $codePoint <= 93759) { - return true; - } - - if ($codePoint >= 93851 && $codePoint <= 93951) { - return true; - } - - if ($codePoint >= 94112 && $codePoint <= 94175) { - return true; - } - - if ($codePoint >= 101590 && $codePoint <= 101631) { - return true; - } - - if ($codePoint >= 101641 && $codePoint <= 110591) { - return true; - } - - if ($codePoint >= 110879 && $codePoint <= 110927) { - return true; - } - - if ($codePoint >= 111356 && $codePoint <= 113663) { - return true; - } - - if ($codePoint >= 113828 && $codePoint <= 118783) { - return true; - } - - if ($codePoint >= 119366 && $codePoint <= 119519) { - return true; - } - - if ($codePoint >= 119673 && $codePoint <= 119807) { - return true; - } - - if ($codePoint >= 121520 && $codePoint <= 122879) { - return true; - } - - if ($codePoint >= 122923 && $codePoint <= 123135) { - return true; - } - - if ($codePoint >= 123216 && $codePoint <= 123583) { - return true; - } - - if ($codePoint >= 123648 && $codePoint <= 124927) { - return true; - } - - if ($codePoint >= 125143 && $codePoint <= 125183) { - return true; - } - - if ($codePoint >= 125280 && $codePoint <= 126064) { - return true; - } - - if ($codePoint >= 126133 && $codePoint <= 126208) { - return true; - } - - if ($codePoint >= 126270 && $codePoint <= 126463) { - return true; - } - - if ($codePoint >= 126652 && $codePoint <= 126703) { - return true; - } - - if ($codePoint >= 126706 && $codePoint <= 126975) { - return true; - } - - if ($codePoint >= 127406 && $codePoint <= 127461) { - return true; - } - - if ($codePoint >= 127590 && $codePoint <= 127743) { - return true; - } - - if ($codePoint >= 129202 && $codePoint <= 129279) { - return true; - } - - if ($codePoint >= 129751 && $codePoint <= 129791) { - return true; - } - - if ($codePoint >= 129995 && $codePoint <= 130031) { - return true; - } - - if ($codePoint >= 130042 && $codePoint <= 131069) { - return true; - } - - if ($codePoint >= 173790 && $codePoint <= 173823) { - return true; - } - - if ($codePoint >= 191457 && $codePoint <= 194559) { - return true; - } - - if ($codePoint >= 195102 && $codePoint <= 196605) { - return true; - } - - if ($codePoint >= 201547 && $codePoint <= 262141) { - return true; - } - - if ($codePoint >= 262144 && $codePoint <= 327677) { - return true; - } - - if ($codePoint >= 327680 && $codePoint <= 393213) { - return true; - } - - if ($codePoint >= 393216 && $codePoint <= 458749) { - return true; - } - - if ($codePoint >= 458752 && $codePoint <= 524285) { - return true; - } - - if ($codePoint >= 524288 && $codePoint <= 589821) { - return true; - } - - if ($codePoint >= 589824 && $codePoint <= 655357) { - return true; - } - - if ($codePoint >= 655360 && $codePoint <= 720893) { - return true; - } - - if ($codePoint >= 720896 && $codePoint <= 786429) { - return true; - } - - if ($codePoint >= 786432 && $codePoint <= 851965) { - return true; - } - - if ($codePoint >= 851968 && $codePoint <= 917501) { - return true; - } - - if ($codePoint >= 917536 && $codePoint <= 917631) { - return true; - } - - if ($codePoint >= 917632 && $codePoint <= 917759) { - return true; - } - - if ($codePoint >= 918000 && $codePoint <= 983037) { - return true; - } - - if ($codePoint >= 983040 && $codePoint <= 1048573) { - return true; - } - - if ($codePoint >= 1048576 && $codePoint <= 1114109) { - return true; - } - - return false; - } -} diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php deleted file mode 100644 index 5c1c51d..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php +++ /dev/null @@ -1,24 +0,0 @@ - 'ss', - 962 => 'σ', - 8204 => '', - 8205 => '', -); diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php deleted file mode 100644 index 25a5f56..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php +++ /dev/null @@ -1,2638 +0,0 @@ - true, - 889 => true, - 896 => true, - 897 => true, - 898 => true, - 899 => true, - 907 => true, - 909 => true, - 930 => true, - 1216 => true, - 1328 => true, - 1367 => true, - 1368 => true, - 1419 => true, - 1420 => true, - 1424 => true, - 1480 => true, - 1481 => true, - 1482 => true, - 1483 => true, - 1484 => true, - 1485 => true, - 1486 => true, - 1487 => true, - 1515 => true, - 1516 => true, - 1517 => true, - 1518 => true, - 1525 => true, - 1526 => true, - 1527 => true, - 1528 => true, - 1529 => true, - 1530 => true, - 1531 => true, - 1532 => true, - 1533 => true, - 1534 => true, - 1535 => true, - 1536 => true, - 1537 => true, - 1538 => true, - 1539 => true, - 1540 => true, - 1541 => true, - 1564 => true, - 1565 => true, - 1757 => true, - 1806 => true, - 1807 => true, - 1867 => true, - 1868 => true, - 1970 => true, - 1971 => true, - 1972 => true, - 1973 => true, - 1974 => true, - 1975 => true, - 1976 => true, - 1977 => true, - 1978 => true, - 1979 => true, - 1980 => true, - 1981 => true, - 1982 => true, - 1983 => true, - 2043 => true, - 2044 => true, - 2094 => true, - 2095 => true, - 2111 => true, - 2140 => true, - 2141 => true, - 2143 => true, - 2229 => true, - 2248 => true, - 2249 => true, - 2250 => true, - 2251 => true, - 2252 => true, - 2253 => true, - 2254 => true, - 2255 => true, - 2256 => true, - 2257 => true, - 2258 => true, - 2274 => true, - 2436 => true, - 2445 => true, - 2446 => true, - 2449 => true, - 2450 => true, - 2473 => true, - 2481 => true, - 2483 => true, - 2484 => true, - 2485 => true, - 2490 => true, - 2491 => true, - 2501 => true, - 2502 => true, - 2505 => true, - 2506 => true, - 2511 => true, - 2512 => true, - 2513 => true, - 2514 => true, - 2515 => true, - 2516 => true, - 2517 => true, - 2518 => true, - 2520 => true, - 2521 => true, - 2522 => true, - 2523 => true, - 2526 => true, - 2532 => true, - 2533 => true, - 2559 => true, - 2560 => true, - 2564 => true, - 2571 => true, - 2572 => true, - 2573 => true, - 2574 => true, - 2577 => true, - 2578 => true, - 2601 => true, - 2609 => true, - 2612 => true, - 2615 => true, - 2618 => true, - 2619 => true, - 2621 => true, - 2627 => true, - 2628 => true, - 2629 => true, - 2630 => true, - 2633 => true, - 2634 => true, - 2638 => true, - 2639 => true, - 2640 => true, - 2642 => true, - 2643 => true, - 2644 => true, - 2645 => true, - 2646 => true, - 2647 => true, - 2648 => true, - 2653 => true, - 2655 => true, - 2656 => true, - 2657 => true, - 2658 => true, - 2659 => true, - 2660 => true, - 2661 => true, - 2679 => true, - 2680 => true, - 2681 => true, - 2682 => true, - 2683 => true, - 2684 => true, - 2685 => true, - 2686 => true, - 2687 => true, - 2688 => true, - 2692 => true, - 2702 => true, - 2706 => true, - 2729 => true, - 2737 => true, - 2740 => true, - 2746 => true, - 2747 => true, - 2758 => true, - 2762 => true, - 2766 => true, - 2767 => true, - 2769 => true, - 2770 => true, - 2771 => true, - 2772 => true, - 2773 => true, - 2774 => true, - 2775 => true, - 2776 => true, - 2777 => true, - 2778 => true, - 2779 => true, - 2780 => true, - 2781 => true, - 2782 => true, - 2783 => true, - 2788 => true, - 2789 => true, - 2802 => true, - 2803 => true, - 2804 => true, - 2805 => true, - 2806 => true, - 2807 => true, - 2808 => true, - 2816 => true, - 2820 => true, - 2829 => true, - 2830 => true, - 2833 => true, - 2834 => true, - 2857 => true, - 2865 => true, - 2868 => true, - 2874 => true, - 2875 => true, - 2885 => true, - 2886 => true, - 2889 => true, - 2890 => true, - 2894 => true, - 2895 => true, - 2896 => true, - 2897 => true, - 2898 => true, - 2899 => true, - 2900 => true, - 2904 => true, - 2905 => true, - 2906 => true, - 2907 => true, - 2910 => true, - 2916 => true, - 2917 => true, - 2936 => true, - 2937 => true, - 2938 => true, - 2939 => true, - 2940 => true, - 2941 => true, - 2942 => true, - 2943 => true, - 2944 => true, - 2945 => true, - 2948 => true, - 2955 => true, - 2956 => true, - 2957 => true, - 2961 => true, - 2966 => true, - 2967 => true, - 2968 => true, - 2971 => true, - 2973 => true, - 2976 => true, - 2977 => true, - 2978 => true, - 2981 => true, - 2982 => true, - 2983 => true, - 2987 => true, - 2988 => true, - 2989 => true, - 3002 => true, - 3003 => true, - 3004 => true, - 3005 => true, - 3011 => true, - 3012 => true, - 3013 => true, - 3017 => true, - 3022 => true, - 3023 => true, - 3025 => true, - 3026 => true, - 3027 => true, - 3028 => true, - 3029 => true, - 3030 => true, - 3032 => true, - 3033 => true, - 3034 => true, - 3035 => true, - 3036 => true, - 3037 => true, - 3038 => true, - 3039 => true, - 3040 => true, - 3041 => true, - 3042 => true, - 3043 => true, - 3044 => true, - 3045 => true, - 3067 => true, - 3068 => true, - 3069 => true, - 3070 => true, - 3071 => true, - 3085 => true, - 3089 => true, - 3113 => true, - 3130 => true, - 3131 => true, - 3132 => true, - 3141 => true, - 3145 => true, - 3150 => true, - 3151 => true, - 3152 => true, - 3153 => true, - 3154 => true, - 3155 => true, - 3156 => true, - 3159 => true, - 3163 => true, - 3164 => true, - 3165 => true, - 3166 => true, - 3167 => true, - 3172 => true, - 3173 => true, - 3184 => true, - 3185 => true, - 3186 => true, - 3187 => true, - 3188 => true, - 3189 => true, - 3190 => true, - 3213 => true, - 3217 => true, - 3241 => true, - 3252 => true, - 3258 => true, - 3259 => true, - 3269 => true, - 3273 => true, - 3278 => true, - 3279 => true, - 3280 => true, - 3281 => true, - 3282 => true, - 3283 => true, - 3284 => true, - 3287 => true, - 3288 => true, - 3289 => true, - 3290 => true, - 3291 => true, - 3292 => true, - 3293 => true, - 3295 => true, - 3300 => true, - 3301 => true, - 3312 => true, - 3315 => true, - 3316 => true, - 3317 => true, - 3318 => true, - 3319 => true, - 3320 => true, - 3321 => true, - 3322 => true, - 3323 => true, - 3324 => true, - 3325 => true, - 3326 => true, - 3327 => true, - 3341 => true, - 3345 => true, - 3397 => true, - 3401 => true, - 3408 => true, - 3409 => true, - 3410 => true, - 3411 => true, - 3428 => true, - 3429 => true, - 3456 => true, - 3460 => true, - 3479 => true, - 3480 => true, - 3481 => true, - 3506 => true, - 3516 => true, - 3518 => true, - 3519 => true, - 3527 => true, - 3528 => true, - 3529 => true, - 3531 => true, - 3532 => true, - 3533 => true, - 3534 => true, - 3541 => true, - 3543 => true, - 3552 => true, - 3553 => true, - 3554 => true, - 3555 => true, - 3556 => true, - 3557 => true, - 3568 => true, - 3569 => true, - 3573 => true, - 3574 => true, - 3575 => true, - 3576 => true, - 3577 => true, - 3578 => true, - 3579 => true, - 3580 => true, - 3581 => true, - 3582 => true, - 3583 => true, - 3584 => true, - 3643 => true, - 3644 => true, - 3645 => true, - 3646 => true, - 3715 => true, - 3717 => true, - 3723 => true, - 3748 => true, - 3750 => true, - 3774 => true, - 3775 => true, - 3781 => true, - 3783 => true, - 3790 => true, - 3791 => true, - 3802 => true, - 3803 => true, - 3912 => true, - 3949 => true, - 3950 => true, - 3951 => true, - 3952 => true, - 3992 => true, - 4029 => true, - 4045 => true, - 4294 => true, - 4296 => true, - 4297 => true, - 4298 => true, - 4299 => true, - 4300 => true, - 4302 => true, - 4303 => true, - 4447 => true, - 4448 => true, - 4681 => true, - 4686 => true, - 4687 => true, - 4695 => true, - 4697 => true, - 4702 => true, - 4703 => true, - 4745 => true, - 4750 => true, - 4751 => true, - 4785 => true, - 4790 => true, - 4791 => true, - 4799 => true, - 4801 => true, - 4806 => true, - 4807 => true, - 4823 => true, - 4881 => true, - 4886 => true, - 4887 => true, - 4955 => true, - 4956 => true, - 4989 => true, - 4990 => true, - 4991 => true, - 5018 => true, - 5019 => true, - 5020 => true, - 5021 => true, - 5022 => true, - 5023 => true, - 5110 => true, - 5111 => true, - 5118 => true, - 5119 => true, - 5760 => true, - 5789 => true, - 5790 => true, - 5791 => true, - 5881 => true, - 5882 => true, - 5883 => true, - 5884 => true, - 5885 => true, - 5886 => true, - 5887 => true, - 5901 => true, - 5909 => true, - 5910 => true, - 5911 => true, - 5912 => true, - 5913 => true, - 5914 => true, - 5915 => true, - 5916 => true, - 5917 => true, - 5918 => true, - 5919 => true, - 5943 => true, - 5944 => true, - 5945 => true, - 5946 => true, - 5947 => true, - 5948 => true, - 5949 => true, - 5950 => true, - 5951 => true, - 5972 => true, - 5973 => true, - 5974 => true, - 5975 => true, - 5976 => true, - 5977 => true, - 5978 => true, - 5979 => true, - 5980 => true, - 5981 => true, - 5982 => true, - 5983 => true, - 5997 => true, - 6001 => true, - 6004 => true, - 6005 => true, - 6006 => true, - 6007 => true, - 6008 => true, - 6009 => true, - 6010 => true, - 6011 => true, - 6012 => true, - 6013 => true, - 6014 => true, - 6015 => true, - 6068 => true, - 6069 => true, - 6110 => true, - 6111 => true, - 6122 => true, - 6123 => true, - 6124 => true, - 6125 => true, - 6126 => true, - 6127 => true, - 6138 => true, - 6139 => true, - 6140 => true, - 6141 => true, - 6142 => true, - 6143 => true, - 6150 => true, - 6158 => true, - 6159 => true, - 6170 => true, - 6171 => true, - 6172 => true, - 6173 => true, - 6174 => true, - 6175 => true, - 6265 => true, - 6266 => true, - 6267 => true, - 6268 => true, - 6269 => true, - 6270 => true, - 6271 => true, - 6315 => true, - 6316 => true, - 6317 => true, - 6318 => true, - 6319 => true, - 6390 => true, - 6391 => true, - 6392 => true, - 6393 => true, - 6394 => true, - 6395 => true, - 6396 => true, - 6397 => true, - 6398 => true, - 6399 => true, - 6431 => true, - 6444 => true, - 6445 => true, - 6446 => true, - 6447 => true, - 6460 => true, - 6461 => true, - 6462 => true, - 6463 => true, - 6465 => true, - 6466 => true, - 6467 => true, - 6510 => true, - 6511 => true, - 6517 => true, - 6518 => true, - 6519 => true, - 6520 => true, - 6521 => true, - 6522 => true, - 6523 => true, - 6524 => true, - 6525 => true, - 6526 => true, - 6527 => true, - 6572 => true, - 6573 => true, - 6574 => true, - 6575 => true, - 6602 => true, - 6603 => true, - 6604 => true, - 6605 => true, - 6606 => true, - 6607 => true, - 6619 => true, - 6620 => true, - 6621 => true, - 6684 => true, - 6685 => true, - 6751 => true, - 6781 => true, - 6782 => true, - 6794 => true, - 6795 => true, - 6796 => true, - 6797 => true, - 6798 => true, - 6799 => true, - 6810 => true, - 6811 => true, - 6812 => true, - 6813 => true, - 6814 => true, - 6815 => true, - 6830 => true, - 6831 => true, - 6988 => true, - 6989 => true, - 6990 => true, - 6991 => true, - 7037 => true, - 7038 => true, - 7039 => true, - 7156 => true, - 7157 => true, - 7158 => true, - 7159 => true, - 7160 => true, - 7161 => true, - 7162 => true, - 7163 => true, - 7224 => true, - 7225 => true, - 7226 => true, - 7242 => true, - 7243 => true, - 7244 => true, - 7305 => true, - 7306 => true, - 7307 => true, - 7308 => true, - 7309 => true, - 7310 => true, - 7311 => true, - 7355 => true, - 7356 => true, - 7368 => true, - 7369 => true, - 7370 => true, - 7371 => true, - 7372 => true, - 7373 => true, - 7374 => true, - 7375 => true, - 7419 => true, - 7420 => true, - 7421 => true, - 7422 => true, - 7423 => true, - 7674 => true, - 7958 => true, - 7959 => true, - 7966 => true, - 7967 => true, - 8006 => true, - 8007 => true, - 8014 => true, - 8015 => true, - 8024 => true, - 8026 => true, - 8028 => true, - 8030 => true, - 8062 => true, - 8063 => true, - 8117 => true, - 8133 => true, - 8148 => true, - 8149 => true, - 8156 => true, - 8176 => true, - 8177 => true, - 8181 => true, - 8191 => true, - 8206 => true, - 8207 => true, - 8228 => true, - 8229 => true, - 8230 => true, - 8232 => true, - 8233 => true, - 8234 => true, - 8235 => true, - 8236 => true, - 8237 => true, - 8238 => true, - 8289 => true, - 8290 => true, - 8291 => true, - 8293 => true, - 8294 => true, - 8295 => true, - 8296 => true, - 8297 => true, - 8298 => true, - 8299 => true, - 8300 => true, - 8301 => true, - 8302 => true, - 8303 => true, - 8306 => true, - 8307 => true, - 8335 => true, - 8349 => true, - 8350 => true, - 8351 => true, - 8384 => true, - 8385 => true, - 8386 => true, - 8387 => true, - 8388 => true, - 8389 => true, - 8390 => true, - 8391 => true, - 8392 => true, - 8393 => true, - 8394 => true, - 8395 => true, - 8396 => true, - 8397 => true, - 8398 => true, - 8399 => true, - 8433 => true, - 8434 => true, - 8435 => true, - 8436 => true, - 8437 => true, - 8438 => true, - 8439 => true, - 8440 => true, - 8441 => true, - 8442 => true, - 8443 => true, - 8444 => true, - 8445 => true, - 8446 => true, - 8447 => true, - 8498 => true, - 8579 => true, - 8588 => true, - 8589 => true, - 8590 => true, - 8591 => true, - 9255 => true, - 9256 => true, - 9257 => true, - 9258 => true, - 9259 => true, - 9260 => true, - 9261 => true, - 9262 => true, - 9263 => true, - 9264 => true, - 9265 => true, - 9266 => true, - 9267 => true, - 9268 => true, - 9269 => true, - 9270 => true, - 9271 => true, - 9272 => true, - 9273 => true, - 9274 => true, - 9275 => true, - 9276 => true, - 9277 => true, - 9278 => true, - 9279 => true, - 9291 => true, - 9292 => true, - 9293 => true, - 9294 => true, - 9295 => true, - 9296 => true, - 9297 => true, - 9298 => true, - 9299 => true, - 9300 => true, - 9301 => true, - 9302 => true, - 9303 => true, - 9304 => true, - 9305 => true, - 9306 => true, - 9307 => true, - 9308 => true, - 9309 => true, - 9310 => true, - 9311 => true, - 9352 => true, - 9353 => true, - 9354 => true, - 9355 => true, - 9356 => true, - 9357 => true, - 9358 => true, - 9359 => true, - 9360 => true, - 9361 => true, - 9362 => true, - 9363 => true, - 9364 => true, - 9365 => true, - 9366 => true, - 9367 => true, - 9368 => true, - 9369 => true, - 9370 => true, - 9371 => true, - 11124 => true, - 11125 => true, - 11158 => true, - 11311 => true, - 11359 => true, - 11508 => true, - 11509 => true, - 11510 => true, - 11511 => true, - 11512 => true, - 11558 => true, - 11560 => true, - 11561 => true, - 11562 => true, - 11563 => true, - 11564 => true, - 11566 => true, - 11567 => true, - 11624 => true, - 11625 => true, - 11626 => true, - 11627 => true, - 11628 => true, - 11629 => true, - 11630 => true, - 11633 => true, - 11634 => true, - 11635 => true, - 11636 => true, - 11637 => true, - 11638 => true, - 11639 => true, - 11640 => true, - 11641 => true, - 11642 => true, - 11643 => true, - 11644 => true, - 11645 => true, - 11646 => true, - 11671 => true, - 11672 => true, - 11673 => true, - 11674 => true, - 11675 => true, - 11676 => true, - 11677 => true, - 11678 => true, - 11679 => true, - 11687 => true, - 11695 => true, - 11703 => true, - 11711 => true, - 11719 => true, - 11727 => true, - 11735 => true, - 11743 => true, - 11930 => true, - 12020 => true, - 12021 => true, - 12022 => true, - 12023 => true, - 12024 => true, - 12025 => true, - 12026 => true, - 12027 => true, - 12028 => true, - 12029 => true, - 12030 => true, - 12031 => true, - 12246 => true, - 12247 => true, - 12248 => true, - 12249 => true, - 12250 => true, - 12251 => true, - 12252 => true, - 12253 => true, - 12254 => true, - 12255 => true, - 12256 => true, - 12257 => true, - 12258 => true, - 12259 => true, - 12260 => true, - 12261 => true, - 12262 => true, - 12263 => true, - 12264 => true, - 12265 => true, - 12266 => true, - 12267 => true, - 12268 => true, - 12269 => true, - 12270 => true, - 12271 => true, - 12272 => true, - 12273 => true, - 12274 => true, - 12275 => true, - 12276 => true, - 12277 => true, - 12278 => true, - 12279 => true, - 12280 => true, - 12281 => true, - 12282 => true, - 12283 => true, - 12284 => true, - 12285 => true, - 12286 => true, - 12287 => true, - 12352 => true, - 12439 => true, - 12440 => true, - 12544 => true, - 12545 => true, - 12546 => true, - 12547 => true, - 12548 => true, - 12592 => true, - 12644 => true, - 12687 => true, - 12772 => true, - 12773 => true, - 12774 => true, - 12775 => true, - 12776 => true, - 12777 => true, - 12778 => true, - 12779 => true, - 12780 => true, - 12781 => true, - 12782 => true, - 12783 => true, - 12831 => true, - 13250 => true, - 13255 => true, - 13272 => true, - 40957 => true, - 40958 => true, - 40959 => true, - 42125 => true, - 42126 => true, - 42127 => true, - 42183 => true, - 42184 => true, - 42185 => true, - 42186 => true, - 42187 => true, - 42188 => true, - 42189 => true, - 42190 => true, - 42191 => true, - 42540 => true, - 42541 => true, - 42542 => true, - 42543 => true, - 42544 => true, - 42545 => true, - 42546 => true, - 42547 => true, - 42548 => true, - 42549 => true, - 42550 => true, - 42551 => true, - 42552 => true, - 42553 => true, - 42554 => true, - 42555 => true, - 42556 => true, - 42557 => true, - 42558 => true, - 42559 => true, - 42744 => true, - 42745 => true, - 42746 => true, - 42747 => true, - 42748 => true, - 42749 => true, - 42750 => true, - 42751 => true, - 42944 => true, - 42945 => true, - 43053 => true, - 43054 => true, - 43055 => true, - 43066 => true, - 43067 => true, - 43068 => true, - 43069 => true, - 43070 => true, - 43071 => true, - 43128 => true, - 43129 => true, - 43130 => true, - 43131 => true, - 43132 => true, - 43133 => true, - 43134 => true, - 43135 => true, - 43206 => true, - 43207 => true, - 43208 => true, - 43209 => true, - 43210 => true, - 43211 => true, - 43212 => true, - 43213 => true, - 43226 => true, - 43227 => true, - 43228 => true, - 43229 => true, - 43230 => true, - 43231 => true, - 43348 => true, - 43349 => true, - 43350 => true, - 43351 => true, - 43352 => true, - 43353 => true, - 43354 => true, - 43355 => true, - 43356 => true, - 43357 => true, - 43358 => true, - 43389 => true, - 43390 => true, - 43391 => true, - 43470 => true, - 43482 => true, - 43483 => true, - 43484 => true, - 43485 => true, - 43519 => true, - 43575 => true, - 43576 => true, - 43577 => true, - 43578 => true, - 43579 => true, - 43580 => true, - 43581 => true, - 43582 => true, - 43583 => true, - 43598 => true, - 43599 => true, - 43610 => true, - 43611 => true, - 43715 => true, - 43716 => true, - 43717 => true, - 43718 => true, - 43719 => true, - 43720 => true, - 43721 => true, - 43722 => true, - 43723 => true, - 43724 => true, - 43725 => true, - 43726 => true, - 43727 => true, - 43728 => true, - 43729 => true, - 43730 => true, - 43731 => true, - 43732 => true, - 43733 => true, - 43734 => true, - 43735 => true, - 43736 => true, - 43737 => true, - 43738 => true, - 43767 => true, - 43768 => true, - 43769 => true, - 43770 => true, - 43771 => true, - 43772 => true, - 43773 => true, - 43774 => true, - 43775 => true, - 43776 => true, - 43783 => true, - 43784 => true, - 43791 => true, - 43792 => true, - 43799 => true, - 43800 => true, - 43801 => true, - 43802 => true, - 43803 => true, - 43804 => true, - 43805 => true, - 43806 => true, - 43807 => true, - 43815 => true, - 43823 => true, - 43884 => true, - 43885 => true, - 43886 => true, - 43887 => true, - 44014 => true, - 44015 => true, - 44026 => true, - 44027 => true, - 44028 => true, - 44029 => true, - 44030 => true, - 44031 => true, - 55204 => true, - 55205 => true, - 55206 => true, - 55207 => true, - 55208 => true, - 55209 => true, - 55210 => true, - 55211 => true, - 55212 => true, - 55213 => true, - 55214 => true, - 55215 => true, - 55239 => true, - 55240 => true, - 55241 => true, - 55242 => true, - 55292 => true, - 55293 => true, - 55294 => true, - 55295 => true, - 64110 => true, - 64111 => true, - 64263 => true, - 64264 => true, - 64265 => true, - 64266 => true, - 64267 => true, - 64268 => true, - 64269 => true, - 64270 => true, - 64271 => true, - 64272 => true, - 64273 => true, - 64274 => true, - 64280 => true, - 64281 => true, - 64282 => true, - 64283 => true, - 64284 => true, - 64311 => true, - 64317 => true, - 64319 => true, - 64322 => true, - 64325 => true, - 64450 => true, - 64451 => true, - 64452 => true, - 64453 => true, - 64454 => true, - 64455 => true, - 64456 => true, - 64457 => true, - 64458 => true, - 64459 => true, - 64460 => true, - 64461 => true, - 64462 => true, - 64463 => true, - 64464 => true, - 64465 => true, - 64466 => true, - 64832 => true, - 64833 => true, - 64834 => true, - 64835 => true, - 64836 => true, - 64837 => true, - 64838 => true, - 64839 => true, - 64840 => true, - 64841 => true, - 64842 => true, - 64843 => true, - 64844 => true, - 64845 => true, - 64846 => true, - 64847 => true, - 64912 => true, - 64913 => true, - 64968 => true, - 64969 => true, - 64970 => true, - 64971 => true, - 64972 => true, - 64973 => true, - 64974 => true, - 64975 => true, - 65022 => true, - 65023 => true, - 65042 => true, - 65049 => true, - 65050 => true, - 65051 => true, - 65052 => true, - 65053 => true, - 65054 => true, - 65055 => true, - 65072 => true, - 65106 => true, - 65107 => true, - 65127 => true, - 65132 => true, - 65133 => true, - 65134 => true, - 65135 => true, - 65141 => true, - 65277 => true, - 65278 => true, - 65280 => true, - 65440 => true, - 65471 => true, - 65472 => true, - 65473 => true, - 65480 => true, - 65481 => true, - 65488 => true, - 65489 => true, - 65496 => true, - 65497 => true, - 65501 => true, - 65502 => true, - 65503 => true, - 65511 => true, - 65519 => true, - 65520 => true, - 65521 => true, - 65522 => true, - 65523 => true, - 65524 => true, - 65525 => true, - 65526 => true, - 65527 => true, - 65528 => true, - 65529 => true, - 65530 => true, - 65531 => true, - 65532 => true, - 65533 => true, - 65534 => true, - 65535 => true, - 65548 => true, - 65575 => true, - 65595 => true, - 65598 => true, - 65614 => true, - 65615 => true, - 65787 => true, - 65788 => true, - 65789 => true, - 65790 => true, - 65791 => true, - 65795 => true, - 65796 => true, - 65797 => true, - 65798 => true, - 65844 => true, - 65845 => true, - 65846 => true, - 65935 => true, - 65949 => true, - 65950 => true, - 65951 => true, - 66205 => true, - 66206 => true, - 66207 => true, - 66257 => true, - 66258 => true, - 66259 => true, - 66260 => true, - 66261 => true, - 66262 => true, - 66263 => true, - 66264 => true, - 66265 => true, - 66266 => true, - 66267 => true, - 66268 => true, - 66269 => true, - 66270 => true, - 66271 => true, - 66300 => true, - 66301 => true, - 66302 => true, - 66303 => true, - 66340 => true, - 66341 => true, - 66342 => true, - 66343 => true, - 66344 => true, - 66345 => true, - 66346 => true, - 66347 => true, - 66348 => true, - 66379 => true, - 66380 => true, - 66381 => true, - 66382 => true, - 66383 => true, - 66427 => true, - 66428 => true, - 66429 => true, - 66430 => true, - 66431 => true, - 66462 => true, - 66500 => true, - 66501 => true, - 66502 => true, - 66503 => true, - 66718 => true, - 66719 => true, - 66730 => true, - 66731 => true, - 66732 => true, - 66733 => true, - 66734 => true, - 66735 => true, - 66772 => true, - 66773 => true, - 66774 => true, - 66775 => true, - 66812 => true, - 66813 => true, - 66814 => true, - 66815 => true, - 66856 => true, - 66857 => true, - 66858 => true, - 66859 => true, - 66860 => true, - 66861 => true, - 66862 => true, - 66863 => true, - 66916 => true, - 66917 => true, - 66918 => true, - 66919 => true, - 66920 => true, - 66921 => true, - 66922 => true, - 66923 => true, - 66924 => true, - 66925 => true, - 66926 => true, - 67383 => true, - 67384 => true, - 67385 => true, - 67386 => true, - 67387 => true, - 67388 => true, - 67389 => true, - 67390 => true, - 67391 => true, - 67414 => true, - 67415 => true, - 67416 => true, - 67417 => true, - 67418 => true, - 67419 => true, - 67420 => true, - 67421 => true, - 67422 => true, - 67423 => true, - 67590 => true, - 67591 => true, - 67593 => true, - 67638 => true, - 67641 => true, - 67642 => true, - 67643 => true, - 67645 => true, - 67646 => true, - 67670 => true, - 67743 => true, - 67744 => true, - 67745 => true, - 67746 => true, - 67747 => true, - 67748 => true, - 67749 => true, - 67750 => true, - 67827 => true, - 67830 => true, - 67831 => true, - 67832 => true, - 67833 => true, - 67834 => true, - 67868 => true, - 67869 => true, - 67870 => true, - 67898 => true, - 67899 => true, - 67900 => true, - 67901 => true, - 67902 => true, - 68024 => true, - 68025 => true, - 68026 => true, - 68027 => true, - 68048 => true, - 68049 => true, - 68100 => true, - 68103 => true, - 68104 => true, - 68105 => true, - 68106 => true, - 68107 => true, - 68116 => true, - 68120 => true, - 68150 => true, - 68151 => true, - 68155 => true, - 68156 => true, - 68157 => true, - 68158 => true, - 68169 => true, - 68170 => true, - 68171 => true, - 68172 => true, - 68173 => true, - 68174 => true, - 68175 => true, - 68185 => true, - 68186 => true, - 68187 => true, - 68188 => true, - 68189 => true, - 68190 => true, - 68191 => true, - 68327 => true, - 68328 => true, - 68329 => true, - 68330 => true, - 68343 => true, - 68344 => true, - 68345 => true, - 68346 => true, - 68347 => true, - 68348 => true, - 68349 => true, - 68350 => true, - 68351 => true, - 68406 => true, - 68407 => true, - 68408 => true, - 68438 => true, - 68439 => true, - 68467 => true, - 68468 => true, - 68469 => true, - 68470 => true, - 68471 => true, - 68498 => true, - 68499 => true, - 68500 => true, - 68501 => true, - 68502 => true, - 68503 => true, - 68504 => true, - 68509 => true, - 68510 => true, - 68511 => true, - 68512 => true, - 68513 => true, - 68514 => true, - 68515 => true, - 68516 => true, - 68517 => true, - 68518 => true, - 68519 => true, - 68520 => true, - 68787 => true, - 68788 => true, - 68789 => true, - 68790 => true, - 68791 => true, - 68792 => true, - 68793 => true, - 68794 => true, - 68795 => true, - 68796 => true, - 68797 => true, - 68798 => true, - 68799 => true, - 68851 => true, - 68852 => true, - 68853 => true, - 68854 => true, - 68855 => true, - 68856 => true, - 68857 => true, - 68904 => true, - 68905 => true, - 68906 => true, - 68907 => true, - 68908 => true, - 68909 => true, - 68910 => true, - 68911 => true, - 69247 => true, - 69290 => true, - 69294 => true, - 69295 => true, - 69416 => true, - 69417 => true, - 69418 => true, - 69419 => true, - 69420 => true, - 69421 => true, - 69422 => true, - 69423 => true, - 69580 => true, - 69581 => true, - 69582 => true, - 69583 => true, - 69584 => true, - 69585 => true, - 69586 => true, - 69587 => true, - 69588 => true, - 69589 => true, - 69590 => true, - 69591 => true, - 69592 => true, - 69593 => true, - 69594 => true, - 69595 => true, - 69596 => true, - 69597 => true, - 69598 => true, - 69599 => true, - 69623 => true, - 69624 => true, - 69625 => true, - 69626 => true, - 69627 => true, - 69628 => true, - 69629 => true, - 69630 => true, - 69631 => true, - 69710 => true, - 69711 => true, - 69712 => true, - 69713 => true, - 69744 => true, - 69745 => true, - 69746 => true, - 69747 => true, - 69748 => true, - 69749 => true, - 69750 => true, - 69751 => true, - 69752 => true, - 69753 => true, - 69754 => true, - 69755 => true, - 69756 => true, - 69757 => true, - 69758 => true, - 69821 => true, - 69826 => true, - 69827 => true, - 69828 => true, - 69829 => true, - 69830 => true, - 69831 => true, - 69832 => true, - 69833 => true, - 69834 => true, - 69835 => true, - 69836 => true, - 69837 => true, - 69838 => true, - 69839 => true, - 69865 => true, - 69866 => true, - 69867 => true, - 69868 => true, - 69869 => true, - 69870 => true, - 69871 => true, - 69882 => true, - 69883 => true, - 69884 => true, - 69885 => true, - 69886 => true, - 69887 => true, - 69941 => true, - 69960 => true, - 69961 => true, - 69962 => true, - 69963 => true, - 69964 => true, - 69965 => true, - 69966 => true, - 69967 => true, - 70007 => true, - 70008 => true, - 70009 => true, - 70010 => true, - 70011 => true, - 70012 => true, - 70013 => true, - 70014 => true, - 70015 => true, - 70112 => true, - 70133 => true, - 70134 => true, - 70135 => true, - 70136 => true, - 70137 => true, - 70138 => true, - 70139 => true, - 70140 => true, - 70141 => true, - 70142 => true, - 70143 => true, - 70162 => true, - 70279 => true, - 70281 => true, - 70286 => true, - 70302 => true, - 70314 => true, - 70315 => true, - 70316 => true, - 70317 => true, - 70318 => true, - 70319 => true, - 70379 => true, - 70380 => true, - 70381 => true, - 70382 => true, - 70383 => true, - 70394 => true, - 70395 => true, - 70396 => true, - 70397 => true, - 70398 => true, - 70399 => true, - 70404 => true, - 70413 => true, - 70414 => true, - 70417 => true, - 70418 => true, - 70441 => true, - 70449 => true, - 70452 => true, - 70458 => true, - 70469 => true, - 70470 => true, - 70473 => true, - 70474 => true, - 70478 => true, - 70479 => true, - 70481 => true, - 70482 => true, - 70483 => true, - 70484 => true, - 70485 => true, - 70486 => true, - 70488 => true, - 70489 => true, - 70490 => true, - 70491 => true, - 70492 => true, - 70500 => true, - 70501 => true, - 70509 => true, - 70510 => true, - 70511 => true, - 70748 => true, - 70754 => true, - 70755 => true, - 70756 => true, - 70757 => true, - 70758 => true, - 70759 => true, - 70760 => true, - 70761 => true, - 70762 => true, - 70763 => true, - 70764 => true, - 70765 => true, - 70766 => true, - 70767 => true, - 70768 => true, - 70769 => true, - 70770 => true, - 70771 => true, - 70772 => true, - 70773 => true, - 70774 => true, - 70775 => true, - 70776 => true, - 70777 => true, - 70778 => true, - 70779 => true, - 70780 => true, - 70781 => true, - 70782 => true, - 70783 => true, - 70856 => true, - 70857 => true, - 70858 => true, - 70859 => true, - 70860 => true, - 70861 => true, - 70862 => true, - 70863 => true, - 71094 => true, - 71095 => true, - 71237 => true, - 71238 => true, - 71239 => true, - 71240 => true, - 71241 => true, - 71242 => true, - 71243 => true, - 71244 => true, - 71245 => true, - 71246 => true, - 71247 => true, - 71258 => true, - 71259 => true, - 71260 => true, - 71261 => true, - 71262 => true, - 71263 => true, - 71277 => true, - 71278 => true, - 71279 => true, - 71280 => true, - 71281 => true, - 71282 => true, - 71283 => true, - 71284 => true, - 71285 => true, - 71286 => true, - 71287 => true, - 71288 => true, - 71289 => true, - 71290 => true, - 71291 => true, - 71292 => true, - 71293 => true, - 71294 => true, - 71295 => true, - 71353 => true, - 71354 => true, - 71355 => true, - 71356 => true, - 71357 => true, - 71358 => true, - 71359 => true, - 71451 => true, - 71452 => true, - 71468 => true, - 71469 => true, - 71470 => true, - 71471 => true, - 71923 => true, - 71924 => true, - 71925 => true, - 71926 => true, - 71927 => true, - 71928 => true, - 71929 => true, - 71930 => true, - 71931 => true, - 71932 => true, - 71933 => true, - 71934 => true, - 71943 => true, - 71944 => true, - 71946 => true, - 71947 => true, - 71956 => true, - 71959 => true, - 71990 => true, - 71993 => true, - 71994 => true, - 72007 => true, - 72008 => true, - 72009 => true, - 72010 => true, - 72011 => true, - 72012 => true, - 72013 => true, - 72014 => true, - 72015 => true, - 72104 => true, - 72105 => true, - 72152 => true, - 72153 => true, - 72165 => true, - 72166 => true, - 72167 => true, - 72168 => true, - 72169 => true, - 72170 => true, - 72171 => true, - 72172 => true, - 72173 => true, - 72174 => true, - 72175 => true, - 72176 => true, - 72177 => true, - 72178 => true, - 72179 => true, - 72180 => true, - 72181 => true, - 72182 => true, - 72183 => true, - 72184 => true, - 72185 => true, - 72186 => true, - 72187 => true, - 72188 => true, - 72189 => true, - 72190 => true, - 72191 => true, - 72264 => true, - 72265 => true, - 72266 => true, - 72267 => true, - 72268 => true, - 72269 => true, - 72270 => true, - 72271 => true, - 72355 => true, - 72356 => true, - 72357 => true, - 72358 => true, - 72359 => true, - 72360 => true, - 72361 => true, - 72362 => true, - 72363 => true, - 72364 => true, - 72365 => true, - 72366 => true, - 72367 => true, - 72368 => true, - 72369 => true, - 72370 => true, - 72371 => true, - 72372 => true, - 72373 => true, - 72374 => true, - 72375 => true, - 72376 => true, - 72377 => true, - 72378 => true, - 72379 => true, - 72380 => true, - 72381 => true, - 72382 => true, - 72383 => true, - 72713 => true, - 72759 => true, - 72774 => true, - 72775 => true, - 72776 => true, - 72777 => true, - 72778 => true, - 72779 => true, - 72780 => true, - 72781 => true, - 72782 => true, - 72783 => true, - 72813 => true, - 72814 => true, - 72815 => true, - 72848 => true, - 72849 => true, - 72872 => true, - 72967 => true, - 72970 => true, - 73015 => true, - 73016 => true, - 73017 => true, - 73019 => true, - 73022 => true, - 73032 => true, - 73033 => true, - 73034 => true, - 73035 => true, - 73036 => true, - 73037 => true, - 73038 => true, - 73039 => true, - 73050 => true, - 73051 => true, - 73052 => true, - 73053 => true, - 73054 => true, - 73055 => true, - 73062 => true, - 73065 => true, - 73103 => true, - 73106 => true, - 73113 => true, - 73114 => true, - 73115 => true, - 73116 => true, - 73117 => true, - 73118 => true, - 73119 => true, - 73649 => true, - 73650 => true, - 73651 => true, - 73652 => true, - 73653 => true, - 73654 => true, - 73655 => true, - 73656 => true, - 73657 => true, - 73658 => true, - 73659 => true, - 73660 => true, - 73661 => true, - 73662 => true, - 73663 => true, - 73714 => true, - 73715 => true, - 73716 => true, - 73717 => true, - 73718 => true, - 73719 => true, - 73720 => true, - 73721 => true, - 73722 => true, - 73723 => true, - 73724 => true, - 73725 => true, - 73726 => true, - 74863 => true, - 74869 => true, - 74870 => true, - 74871 => true, - 74872 => true, - 74873 => true, - 74874 => true, - 74875 => true, - 74876 => true, - 74877 => true, - 74878 => true, - 74879 => true, - 78895 => true, - 78896 => true, - 78897 => true, - 78898 => true, - 78899 => true, - 78900 => true, - 78901 => true, - 78902 => true, - 78903 => true, - 78904 => true, - 92729 => true, - 92730 => true, - 92731 => true, - 92732 => true, - 92733 => true, - 92734 => true, - 92735 => true, - 92767 => true, - 92778 => true, - 92779 => true, - 92780 => true, - 92781 => true, - 92910 => true, - 92911 => true, - 92918 => true, - 92919 => true, - 92920 => true, - 92921 => true, - 92922 => true, - 92923 => true, - 92924 => true, - 92925 => true, - 92926 => true, - 92927 => true, - 92998 => true, - 92999 => true, - 93000 => true, - 93001 => true, - 93002 => true, - 93003 => true, - 93004 => true, - 93005 => true, - 93006 => true, - 93007 => true, - 93018 => true, - 93026 => true, - 93048 => true, - 93049 => true, - 93050 => true, - 93051 => true, - 93052 => true, - 94027 => true, - 94028 => true, - 94029 => true, - 94030 => true, - 94088 => true, - 94089 => true, - 94090 => true, - 94091 => true, - 94092 => true, - 94093 => true, - 94094 => true, - 94181 => true, - 94182 => true, - 94183 => true, - 94184 => true, - 94185 => true, - 94186 => true, - 94187 => true, - 94188 => true, - 94189 => true, - 94190 => true, - 94191 => true, - 94194 => true, - 94195 => true, - 94196 => true, - 94197 => true, - 94198 => true, - 94199 => true, - 94200 => true, - 94201 => true, - 94202 => true, - 94203 => true, - 94204 => true, - 94205 => true, - 94206 => true, - 94207 => true, - 100344 => true, - 100345 => true, - 100346 => true, - 100347 => true, - 100348 => true, - 100349 => true, - 100350 => true, - 100351 => true, - 110931 => true, - 110932 => true, - 110933 => true, - 110934 => true, - 110935 => true, - 110936 => true, - 110937 => true, - 110938 => true, - 110939 => true, - 110940 => true, - 110941 => true, - 110942 => true, - 110943 => true, - 110944 => true, - 110945 => true, - 110946 => true, - 110947 => true, - 110952 => true, - 110953 => true, - 110954 => true, - 110955 => true, - 110956 => true, - 110957 => true, - 110958 => true, - 110959 => true, - 113771 => true, - 113772 => true, - 113773 => true, - 113774 => true, - 113775 => true, - 113789 => true, - 113790 => true, - 113791 => true, - 113801 => true, - 113802 => true, - 113803 => true, - 113804 => true, - 113805 => true, - 113806 => true, - 113807 => true, - 113818 => true, - 113819 => true, - 119030 => true, - 119031 => true, - 119032 => true, - 119033 => true, - 119034 => true, - 119035 => true, - 119036 => true, - 119037 => true, - 119038 => true, - 119039 => true, - 119079 => true, - 119080 => true, - 119155 => true, - 119156 => true, - 119157 => true, - 119158 => true, - 119159 => true, - 119160 => true, - 119161 => true, - 119162 => true, - 119273 => true, - 119274 => true, - 119275 => true, - 119276 => true, - 119277 => true, - 119278 => true, - 119279 => true, - 119280 => true, - 119281 => true, - 119282 => true, - 119283 => true, - 119284 => true, - 119285 => true, - 119286 => true, - 119287 => true, - 119288 => true, - 119289 => true, - 119290 => true, - 119291 => true, - 119292 => true, - 119293 => true, - 119294 => true, - 119295 => true, - 119540 => true, - 119541 => true, - 119542 => true, - 119543 => true, - 119544 => true, - 119545 => true, - 119546 => true, - 119547 => true, - 119548 => true, - 119549 => true, - 119550 => true, - 119551 => true, - 119639 => true, - 119640 => true, - 119641 => true, - 119642 => true, - 119643 => true, - 119644 => true, - 119645 => true, - 119646 => true, - 119647 => true, - 119893 => true, - 119965 => true, - 119968 => true, - 119969 => true, - 119971 => true, - 119972 => true, - 119975 => true, - 119976 => true, - 119981 => true, - 119994 => true, - 119996 => true, - 120004 => true, - 120070 => true, - 120075 => true, - 120076 => true, - 120085 => true, - 120093 => true, - 120122 => true, - 120127 => true, - 120133 => true, - 120135 => true, - 120136 => true, - 120137 => true, - 120145 => true, - 120486 => true, - 120487 => true, - 120780 => true, - 120781 => true, - 121484 => true, - 121485 => true, - 121486 => true, - 121487 => true, - 121488 => true, - 121489 => true, - 121490 => true, - 121491 => true, - 121492 => true, - 121493 => true, - 121494 => true, - 121495 => true, - 121496 => true, - 121497 => true, - 121498 => true, - 121504 => true, - 122887 => true, - 122905 => true, - 122906 => true, - 122914 => true, - 122917 => true, - 123181 => true, - 123182 => true, - 123183 => true, - 123198 => true, - 123199 => true, - 123210 => true, - 123211 => true, - 123212 => true, - 123213 => true, - 123642 => true, - 123643 => true, - 123644 => true, - 123645 => true, - 123646 => true, - 125125 => true, - 125126 => true, - 125260 => true, - 125261 => true, - 125262 => true, - 125263 => true, - 125274 => true, - 125275 => true, - 125276 => true, - 125277 => true, - 126468 => true, - 126496 => true, - 126499 => true, - 126501 => true, - 126502 => true, - 126504 => true, - 126515 => true, - 126520 => true, - 126522 => true, - 126524 => true, - 126525 => true, - 126526 => true, - 126527 => true, - 126528 => true, - 126529 => true, - 126531 => true, - 126532 => true, - 126533 => true, - 126534 => true, - 126536 => true, - 126538 => true, - 126540 => true, - 126544 => true, - 126547 => true, - 126549 => true, - 126550 => true, - 126552 => true, - 126554 => true, - 126556 => true, - 126558 => true, - 126560 => true, - 126563 => true, - 126565 => true, - 126566 => true, - 126571 => true, - 126579 => true, - 126584 => true, - 126589 => true, - 126591 => true, - 126602 => true, - 126620 => true, - 126621 => true, - 126622 => true, - 126623 => true, - 126624 => true, - 126628 => true, - 126634 => true, - 127020 => true, - 127021 => true, - 127022 => true, - 127023 => true, - 127124 => true, - 127125 => true, - 127126 => true, - 127127 => true, - 127128 => true, - 127129 => true, - 127130 => true, - 127131 => true, - 127132 => true, - 127133 => true, - 127134 => true, - 127135 => true, - 127151 => true, - 127152 => true, - 127168 => true, - 127184 => true, - 127222 => true, - 127223 => true, - 127224 => true, - 127225 => true, - 127226 => true, - 127227 => true, - 127228 => true, - 127229 => true, - 127230 => true, - 127231 => true, - 127232 => true, - 127491 => true, - 127492 => true, - 127493 => true, - 127494 => true, - 127495 => true, - 127496 => true, - 127497 => true, - 127498 => true, - 127499 => true, - 127500 => true, - 127501 => true, - 127502 => true, - 127503 => true, - 127548 => true, - 127549 => true, - 127550 => true, - 127551 => true, - 127561 => true, - 127562 => true, - 127563 => true, - 127564 => true, - 127565 => true, - 127566 => true, - 127567 => true, - 127570 => true, - 127571 => true, - 127572 => true, - 127573 => true, - 127574 => true, - 127575 => true, - 127576 => true, - 127577 => true, - 127578 => true, - 127579 => true, - 127580 => true, - 127581 => true, - 127582 => true, - 127583 => true, - 128728 => true, - 128729 => true, - 128730 => true, - 128731 => true, - 128732 => true, - 128733 => true, - 128734 => true, - 128735 => true, - 128749 => true, - 128750 => true, - 128751 => true, - 128765 => true, - 128766 => true, - 128767 => true, - 128884 => true, - 128885 => true, - 128886 => true, - 128887 => true, - 128888 => true, - 128889 => true, - 128890 => true, - 128891 => true, - 128892 => true, - 128893 => true, - 128894 => true, - 128895 => true, - 128985 => true, - 128986 => true, - 128987 => true, - 128988 => true, - 128989 => true, - 128990 => true, - 128991 => true, - 129004 => true, - 129005 => true, - 129006 => true, - 129007 => true, - 129008 => true, - 129009 => true, - 129010 => true, - 129011 => true, - 129012 => true, - 129013 => true, - 129014 => true, - 129015 => true, - 129016 => true, - 129017 => true, - 129018 => true, - 129019 => true, - 129020 => true, - 129021 => true, - 129022 => true, - 129023 => true, - 129036 => true, - 129037 => true, - 129038 => true, - 129039 => true, - 129096 => true, - 129097 => true, - 129098 => true, - 129099 => true, - 129100 => true, - 129101 => true, - 129102 => true, - 129103 => true, - 129114 => true, - 129115 => true, - 129116 => true, - 129117 => true, - 129118 => true, - 129119 => true, - 129160 => true, - 129161 => true, - 129162 => true, - 129163 => true, - 129164 => true, - 129165 => true, - 129166 => true, - 129167 => true, - 129198 => true, - 129199 => true, - 129401 => true, - 129484 => true, - 129620 => true, - 129621 => true, - 129622 => true, - 129623 => true, - 129624 => true, - 129625 => true, - 129626 => true, - 129627 => true, - 129628 => true, - 129629 => true, - 129630 => true, - 129631 => true, - 129646 => true, - 129647 => true, - 129653 => true, - 129654 => true, - 129655 => true, - 129659 => true, - 129660 => true, - 129661 => true, - 129662 => true, - 129663 => true, - 129671 => true, - 129672 => true, - 129673 => true, - 129674 => true, - 129675 => true, - 129676 => true, - 129677 => true, - 129678 => true, - 129679 => true, - 129705 => true, - 129706 => true, - 129707 => true, - 129708 => true, - 129709 => true, - 129710 => true, - 129711 => true, - 129719 => true, - 129720 => true, - 129721 => true, - 129722 => true, - 129723 => true, - 129724 => true, - 129725 => true, - 129726 => true, - 129727 => true, - 129731 => true, - 129732 => true, - 129733 => true, - 129734 => true, - 129735 => true, - 129736 => true, - 129737 => true, - 129738 => true, - 129739 => true, - 129740 => true, - 129741 => true, - 129742 => true, - 129743 => true, - 129939 => true, - 131070 => true, - 131071 => true, - 177973 => true, - 177974 => true, - 177975 => true, - 177976 => true, - 177977 => true, - 177978 => true, - 177979 => true, - 177980 => true, - 177981 => true, - 177982 => true, - 177983 => true, - 178206 => true, - 178207 => true, - 183970 => true, - 183971 => true, - 183972 => true, - 183973 => true, - 183974 => true, - 183975 => true, - 183976 => true, - 183977 => true, - 183978 => true, - 183979 => true, - 183980 => true, - 183981 => true, - 183982 => true, - 183983 => true, - 194664 => true, - 194676 => true, - 194847 => true, - 194911 => true, - 195007 => true, - 196606 => true, - 196607 => true, - 262142 => true, - 262143 => true, - 327678 => true, - 327679 => true, - 393214 => true, - 393215 => true, - 458750 => true, - 458751 => true, - 524286 => true, - 524287 => true, - 589822 => true, - 589823 => true, - 655358 => true, - 655359 => true, - 720894 => true, - 720895 => true, - 786430 => true, - 786431 => true, - 851966 => true, - 851967 => true, - 917502 => true, - 917503 => true, - 917504 => true, - 917505 => true, - 917506 => true, - 917507 => true, - 917508 => true, - 917509 => true, - 917510 => true, - 917511 => true, - 917512 => true, - 917513 => true, - 917514 => true, - 917515 => true, - 917516 => true, - 917517 => true, - 917518 => true, - 917519 => true, - 917520 => true, - 917521 => true, - 917522 => true, - 917523 => true, - 917524 => true, - 917525 => true, - 917526 => true, - 917527 => true, - 917528 => true, - 917529 => true, - 917530 => true, - 917531 => true, - 917532 => true, - 917533 => true, - 917534 => true, - 917535 => true, - 983038 => true, - 983039 => true, - 1048574 => true, - 1048575 => true, - 1114110 => true, - 1114111 => true, -); diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php deleted file mode 100644 index 54f21cc..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php +++ /dev/null @@ -1,308 +0,0 @@ - ' ', - 168 => ' ̈', - 175 => ' ̄', - 180 => ' ́', - 184 => ' ̧', - 728 => ' ̆', - 729 => ' ̇', - 730 => ' ̊', - 731 => ' Ìš', - 732 => ' ̃', - 733 => ' ̋', - 890 => ' Îč', - 894 => ';', - 900 => ' ́', - 901 => ' ̈́', - 8125 => ' ̓', - 8127 => ' ̓', - 8128 => ' ͂', - 8129 => ' ̈͂', - 8141 => ' ̓̀', - 8142 => ' ̓́', - 8143 => ' ̓͂', - 8157 => ' ̔̀', - 8158 => ' ̔́', - 8159 => ' ̔͂', - 8173 => ' ̈̀', - 8174 => ' ̈́', - 8175 => '`', - 8189 => ' ́', - 8190 => ' ̔', - 8192 => ' ', - 8193 => ' ', - 8194 => ' ', - 8195 => ' ', - 8196 => ' ', - 8197 => ' ', - 8198 => ' ', - 8199 => ' ', - 8200 => ' ', - 8201 => ' ', - 8202 => ' ', - 8215 => ' Ìł', - 8239 => ' ', - 8252 => '!!', - 8254 => ' ̅', - 8263 => '??', - 8264 => '?!', - 8265 => '!?', - 8287 => ' ', - 8314 => '+', - 8316 => '=', - 8317 => '(', - 8318 => ')', - 8330 => '+', - 8332 => '=', - 8333 => '(', - 8334 => ')', - 8448 => 'a/c', - 8449 => 'a/s', - 8453 => 'c/o', - 8454 => 'c/u', - 9332 => '(1)', - 9333 => '(2)', - 9334 => '(3)', - 9335 => '(4)', - 9336 => '(5)', - 9337 => '(6)', - 9338 => '(7)', - 9339 => '(8)', - 9340 => '(9)', - 9341 => '(10)', - 9342 => '(11)', - 9343 => '(12)', - 9344 => '(13)', - 9345 => '(14)', - 9346 => '(15)', - 9347 => '(16)', - 9348 => '(17)', - 9349 => '(18)', - 9350 => '(19)', - 9351 => '(20)', - 9372 => '(a)', - 9373 => '(b)', - 9374 => '(c)', - 9375 => '(d)', - 9376 => '(e)', - 9377 => '(f)', - 9378 => '(g)', - 9379 => '(h)', - 9380 => '(i)', - 9381 => '(j)', - 9382 => '(k)', - 9383 => '(l)', - 9384 => '(m)', - 9385 => '(n)', - 9386 => '(o)', - 9387 => '(p)', - 9388 => '(q)', - 9389 => '(r)', - 9390 => '(s)', - 9391 => '(t)', - 9392 => '(u)', - 9393 => '(v)', - 9394 => '(w)', - 9395 => '(x)', - 9396 => '(y)', - 9397 => '(z)', - 10868 => '::=', - 10869 => '==', - 10870 => '===', - 12288 => ' ', - 12443 => ' ゙', - 12444 => ' ゚', - 12800 => '(ᄀ)', - 12801 => '(ᄂ)', - 12802 => '(ᄃ)', - 12803 => '(ᄅ)', - 12804 => '(ᄆ)', - 12805 => '(ᄇ)', - 12806 => '(ᄉ)', - 12807 => '(ᄋ)', - 12808 => '(ᄌ)', - 12809 => '(ᄎ)', - 12810 => '(ᄏ)', - 12811 => '(ᄐ)', - 12812 => '(ᄑ)', - 12813 => '(ᄒ)', - 12814 => '(가)', - 12815 => '(나)', - 12816 => '(ë‹€)', - 12817 => '(띌)', - 12818 => '(마)', - 12819 => '(바)', - 12820 => '(ì‚Ź)', - 12821 => '(아)', - 12822 => '(자)', - 12823 => '(ì°š)', - 12824 => '(ìčŽ)', - 12825 => '(타)', - 12826 => '(파)', - 12827 => '(하)', - 12828 => '(ìŁŒ)', - 12829 => '(였전)', - 12830 => '(였후)', - 12832 => '(侀)', - 12833 => '(äșŒ)', - 12834 => '(侉)', - 12835 => '(曛)', - 12836 => '(äș”)', - 12837 => '(慭)', - 12838 => '(䞃)', - 12839 => '(ć…«)', - 12840 => '(äč)', - 12841 => '(捁)', - 12842 => '(月)', - 12843 => '(火)', - 12844 => '(æ°Ž)', - 12845 => '(朚)', - 12846 => '(金)', - 12847 => '(㜟)', - 12848 => '(æ—„)', - 12849 => '(æ Ș)', - 12850 => '(有)', - 12851 => '(瀟)', - 12852 => '(損)', - 12853 => '(ç‰č)', - 12854 => '(èČĄ)', - 12855 => '(焝)', - 12856 => '(抮)', - 12857 => '(代)', - 12858 => '(ć‘Œ)', - 12859 => '(ć­Š)', - 12860 => '(監)', - 12861 => '(䌁)', - 12862 => '(èł‡)', - 12863 => '(捔)', - 12864 => '(ç„­)', - 12865 => '(䌑)', - 12866 => '(è‡Ș)', - 12867 => '(è‡ł)', - 64297 => '+', - 64606 => ' ٌّ', - 64607 => ' ٍّ', - 64608 => ' َّ', - 64609 => ' ُّ', - 64610 => ' ِّ', - 64611 => ' ّٰ', - 65018 => 'Ű”Ù„Ù‰ Ű§Ù„Ù„Ù‡ Űčليه ÙˆŰłÙ„Ù…', - 65019 => 'ŰŹÙ„ ŰŹÙ„Ű§Ù„Ù‡', - 65040 => ',', - 65043 => ':', - 65044 => ';', - 65045 => '!', - 65046 => '?', - 65075 => '_', - 65076 => '_', - 65077 => '(', - 65078 => ')', - 65079 => '{', - 65080 => '}', - 65095 => '[', - 65096 => ']', - 65097 => ' ̅', - 65098 => ' ̅', - 65099 => ' ̅', - 65100 => ' ̅', - 65101 => '_', - 65102 => '_', - 65103 => '_', - 65104 => ',', - 65108 => ';', - 65109 => ':', - 65110 => '?', - 65111 => '!', - 65113 => '(', - 65114 => ')', - 65115 => '{', - 65116 => '}', - 65119 => '#', - 65120 => '&', - 65121 => '*', - 65122 => '+', - 65124 => '<', - 65125 => '>', - 65126 => '=', - 65128 => '\\', - 65129 => '$', - 65130 => '%', - 65131 => '@', - 65136 => ' ً', - 65138 => ' ٌ', - 65140 => ' ٍ', - 65142 => ' َ', - 65144 => ' ُ', - 65146 => ' ِ', - 65148 => ' ّ', - 65150 => ' ْ', - 65281 => '!', - 65282 => '"', - 65283 => '#', - 65284 => '$', - 65285 => '%', - 65286 => '&', - 65287 => '\'', - 65288 => '(', - 65289 => ')', - 65290 => '*', - 65291 => '+', - 65292 => ',', - 65295 => '/', - 65306 => ':', - 65307 => ';', - 65308 => '<', - 65309 => '=', - 65310 => '>', - 65311 => '?', - 65312 => '@', - 65339 => '[', - 65340 => '\\', - 65341 => ']', - 65342 => '^', - 65343 => '_', - 65344 => '`', - 65371 => '{', - 65372 => '|', - 65373 => '}', - 65374 => '~', - 65507 => ' ̄', - 127233 => '0,', - 127234 => '1,', - 127235 => '2,', - 127236 => '3,', - 127237 => '4,', - 127238 => '5,', - 127239 => '6,', - 127240 => '7,', - 127241 => '8,', - 127242 => '9,', - 127248 => '(a)', - 127249 => '(b)', - 127250 => '(c)', - 127251 => '(d)', - 127252 => '(e)', - 127253 => '(f)', - 127254 => '(g)', - 127255 => '(h)', - 127256 => '(i)', - 127257 => '(j)', - 127258 => '(k)', - 127259 => '(l)', - 127260 => '(m)', - 127261 => '(n)', - 127262 => '(o)', - 127263 => '(p)', - 127264 => '(q)', - 127265 => '(r)', - 127266 => '(s)', - 127267 => '(t)', - 127268 => '(u)', - 127269 => '(v)', - 127270 => '(w)', - 127271 => '(x)', - 127272 => '(y)', - 127273 => '(z)', -); diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php deleted file mode 100644 index 223396e..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php +++ /dev/null @@ -1,71 +0,0 @@ - true, - 1 => true, - 2 => true, - 3 => true, - 4 => true, - 5 => true, - 6 => true, - 7 => true, - 8 => true, - 9 => true, - 10 => true, - 11 => true, - 12 => true, - 13 => true, - 14 => true, - 15 => true, - 16 => true, - 17 => true, - 18 => true, - 19 => true, - 20 => true, - 21 => true, - 22 => true, - 23 => true, - 24 => true, - 25 => true, - 26 => true, - 27 => true, - 28 => true, - 29 => true, - 30 => true, - 31 => true, - 32 => true, - 33 => true, - 34 => true, - 35 => true, - 36 => true, - 37 => true, - 38 => true, - 39 => true, - 40 => true, - 41 => true, - 42 => true, - 43 => true, - 44 => true, - 47 => true, - 58 => true, - 59 => true, - 60 => true, - 61 => true, - 62 => true, - 63 => true, - 64 => true, - 91 => true, - 92 => true, - 93 => true, - 94 => true, - 95 => true, - 96 => true, - 123 => true, - 124 => true, - 125 => true, - 126 => true, - 127 => true, - 8800 => true, - 8814 => true, - 8815 => true, -); diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php deleted file mode 100644 index b377844..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php +++ /dev/null @@ -1,273 +0,0 @@ - true, - 847 => true, - 6155 => true, - 6156 => true, - 6157 => true, - 8203 => true, - 8288 => true, - 8292 => true, - 65024 => true, - 65025 => true, - 65026 => true, - 65027 => true, - 65028 => true, - 65029 => true, - 65030 => true, - 65031 => true, - 65032 => true, - 65033 => true, - 65034 => true, - 65035 => true, - 65036 => true, - 65037 => true, - 65038 => true, - 65039 => true, - 65279 => true, - 113824 => true, - 113825 => true, - 113826 => true, - 113827 => true, - 917760 => true, - 917761 => true, - 917762 => true, - 917763 => true, - 917764 => true, - 917765 => true, - 917766 => true, - 917767 => true, - 917768 => true, - 917769 => true, - 917770 => true, - 917771 => true, - 917772 => true, - 917773 => true, - 917774 => true, - 917775 => true, - 917776 => true, - 917777 => true, - 917778 => true, - 917779 => true, - 917780 => true, - 917781 => true, - 917782 => true, - 917783 => true, - 917784 => true, - 917785 => true, - 917786 => true, - 917787 => true, - 917788 => true, - 917789 => true, - 917790 => true, - 917791 => true, - 917792 => true, - 917793 => true, - 917794 => true, - 917795 => true, - 917796 => true, - 917797 => true, - 917798 => true, - 917799 => true, - 917800 => true, - 917801 => true, - 917802 => true, - 917803 => true, - 917804 => true, - 917805 => true, - 917806 => true, - 917807 => true, - 917808 => true, - 917809 => true, - 917810 => true, - 917811 => true, - 917812 => true, - 917813 => true, - 917814 => true, - 917815 => true, - 917816 => true, - 917817 => true, - 917818 => true, - 917819 => true, - 917820 => true, - 917821 => true, - 917822 => true, - 917823 => true, - 917824 => true, - 917825 => true, - 917826 => true, - 917827 => true, - 917828 => true, - 917829 => true, - 917830 => true, - 917831 => true, - 917832 => true, - 917833 => true, - 917834 => true, - 917835 => true, - 917836 => true, - 917837 => true, - 917838 => true, - 917839 => true, - 917840 => true, - 917841 => true, - 917842 => true, - 917843 => true, - 917844 => true, - 917845 => true, - 917846 => true, - 917847 => true, - 917848 => true, - 917849 => true, - 917850 => true, - 917851 => true, - 917852 => true, - 917853 => true, - 917854 => true, - 917855 => true, - 917856 => true, - 917857 => true, - 917858 => true, - 917859 => true, - 917860 => true, - 917861 => true, - 917862 => true, - 917863 => true, - 917864 => true, - 917865 => true, - 917866 => true, - 917867 => true, - 917868 => true, - 917869 => true, - 917870 => true, - 917871 => true, - 917872 => true, - 917873 => true, - 917874 => true, - 917875 => true, - 917876 => true, - 917877 => true, - 917878 => true, - 917879 => true, - 917880 => true, - 917881 => true, - 917882 => true, - 917883 => true, - 917884 => true, - 917885 => true, - 917886 => true, - 917887 => true, - 917888 => true, - 917889 => true, - 917890 => true, - 917891 => true, - 917892 => true, - 917893 => true, - 917894 => true, - 917895 => true, - 917896 => true, - 917897 => true, - 917898 => true, - 917899 => true, - 917900 => true, - 917901 => true, - 917902 => true, - 917903 => true, - 917904 => true, - 917905 => true, - 917906 => true, - 917907 => true, - 917908 => true, - 917909 => true, - 917910 => true, - 917911 => true, - 917912 => true, - 917913 => true, - 917914 => true, - 917915 => true, - 917916 => true, - 917917 => true, - 917918 => true, - 917919 => true, - 917920 => true, - 917921 => true, - 917922 => true, - 917923 => true, - 917924 => true, - 917925 => true, - 917926 => true, - 917927 => true, - 917928 => true, - 917929 => true, - 917930 => true, - 917931 => true, - 917932 => true, - 917933 => true, - 917934 => true, - 917935 => true, - 917936 => true, - 917937 => true, - 917938 => true, - 917939 => true, - 917940 => true, - 917941 => true, - 917942 => true, - 917943 => true, - 917944 => true, - 917945 => true, - 917946 => true, - 917947 => true, - 917948 => true, - 917949 => true, - 917950 => true, - 917951 => true, - 917952 => true, - 917953 => true, - 917954 => true, - 917955 => true, - 917956 => true, - 917957 => true, - 917958 => true, - 917959 => true, - 917960 => true, - 917961 => true, - 917962 => true, - 917963 => true, - 917964 => true, - 917965 => true, - 917966 => true, - 917967 => true, - 917968 => true, - 917969 => true, - 917970 => true, - 917971 => true, - 917972 => true, - 917973 => true, - 917974 => true, - 917975 => true, - 917976 => true, - 917977 => true, - 917978 => true, - 917979 => true, - 917980 => true, - 917981 => true, - 917982 => true, - 917983 => true, - 917984 => true, - 917985 => true, - 917986 => true, - 917987 => true, - 917988 => true, - 917989 => true, - 917990 => true, - 917991 => true, - 917992 => true, - 917993 => true, - 917994 => true, - 917995 => true, - 917996 => true, - 917997 => true, - 917998 => true, - 917999 => true, -); diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php deleted file mode 100644 index 9b85fe9..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php +++ /dev/null @@ -1,5778 +0,0 @@ - 'a', - 66 => 'b', - 67 => 'c', - 68 => 'd', - 69 => 'e', - 70 => 'f', - 71 => 'g', - 72 => 'h', - 73 => 'i', - 74 => 'j', - 75 => 'k', - 76 => 'l', - 77 => 'm', - 78 => 'n', - 79 => 'o', - 80 => 'p', - 81 => 'q', - 82 => 'r', - 83 => 's', - 84 => 't', - 85 => 'u', - 86 => 'v', - 87 => 'w', - 88 => 'x', - 89 => 'y', - 90 => 'z', - 170 => 'a', - 178 => '2', - 179 => '3', - 181 => 'ÎŒ', - 185 => '1', - 186 => 'o', - 188 => '1⁄4', - 189 => '1⁄2', - 190 => '3⁄4', - 192 => 'Ă ', - 193 => 'ĂĄ', - 194 => 'Ăą', - 195 => 'ĂŁ', - 196 => 'Ă€', - 197 => 'Ă„', - 198 => 'ĂŠ', - 199 => 'ç', - 200 => 'Ăš', - 201 => 'Ă©', - 202 => 'ĂȘ', - 203 => 'Ă«', - 204 => 'ĂŹ', - 205 => 'Ă­', - 206 => 'Ăź', - 207 => 'ĂŻ', - 208 => 'ð', - 209 => 'ñ', - 210 => 'ĂČ', - 211 => 'Ăł', - 212 => 'ĂŽ', - 213 => 'Ă”', - 214 => 'ö', - 216 => 'Ăž', - 217 => 'Ăč', - 218 => 'Ăș', - 219 => 'Ă»', - 220 => 'ĂŒ', - 221 => 'Ăœ', - 222 => 'ĂŸ', - 256 => 'ā', - 258 => 'ă', - 260 => 'ą', - 262 => 'ć', - 264 => 'ĉ', - 266 => 'ċ', - 268 => 'č', - 270 => 'ď', - 272 => 'đ', - 274 => 'ē', - 276 => 'ĕ', - 278 => 'ė', - 280 => 'ę', - 282 => 'ě', - 284 => 'ĝ', - 286 => 'ğ', - 288 => 'ÄĄ', - 290 => 'ÄŁ', - 292 => 'Ä„', - 294 => 'ħ', - 296 => 'Ä©', - 298 => 'Ä«', - 300 => 'Ä­', - 302 => 'ÄŻ', - 304 => 'i̇', - 306 => 'ij', - 307 => 'ij', - 308 => 'Ä”', - 310 => 'Ä·', - 313 => 'Äș', - 315 => 'ÄŒ', - 317 => 'ÄŸ', - 319 => 'l·', - 320 => 'l·', - 321 => 'Ƃ', - 323 => 'Ƅ', - 325 => 'Ɔ', - 327 => 'ƈ', - 329 => 'ÊŒn', - 330 => 'Ƌ', - 332 => 'ƍ', - 334 => 'Ə', - 336 => 'Ƒ', - 338 => 'Ɠ', - 340 => 'ƕ', - 342 => 'Ɨ', - 344 => 'ƙ', - 346 => 'ƛ', - 348 => 'Ɲ', - 350 => 'ß', - 352 => 'ĆĄ', - 354 => 'ĆŁ', - 356 => 'Ć„', - 358 => 'Ƨ', - 360 => 'Ć©', - 362 => 'Ć«', - 364 => 'Ć­', - 366 => 'ĆŻ', - 368 => 'Ʊ', - 370 => 'Ćł', - 372 => 'Ć”', - 374 => 'Ć·', - 376 => 'Ăż', - 377 => 'Ćș', - 379 => 'ĆŒ', - 381 => 'ĆŸ', - 383 => 's', - 385 => 'ɓ', - 386 => 'ƃ', - 388 => 'ƅ', - 390 => 'ɔ', - 391 => 'ƈ', - 393 => 'ɖ', - 394 => 'ɗ', - 395 => 'ƌ', - 398 => 'ǝ', - 399 => 'ə', - 400 => 'ɛ', - 401 => 'ƒ', - 403 => 'É ', - 404 => 'ÉŁ', - 406 => 'É©', - 407 => 'Éš', - 408 => 'ƙ', - 412 => 'ÉŻ', - 413 => 'ÉČ', - 415 => 'É”', - 416 => 'ÆĄ', - 418 => 'ÆŁ', - 420 => 'Æ„', - 422 => 'ʀ', - 423 => 'Æš', - 425 => 'ʃ', - 428 => 'Æ­', - 430 => 'ʈ', - 431 => 'ư', - 433 => 'ʊ', - 434 => 'ʋ', - 435 => 'ÆŽ', - 437 => 'ƶ', - 439 => 'ʒ', - 440 => 'Æč', - 444 => 'Æœ', - 452 => 'dĆŸ', - 453 => 'dĆŸ', - 454 => 'dĆŸ', - 455 => 'lj', - 456 => 'lj', - 457 => 'lj', - 458 => 'nj', - 459 => 'nj', - 460 => 'nj', - 461 => 'ǎ', - 463 => 'ǐ', - 465 => 'ǒ', - 467 => 'ǔ', - 469 => 'ǖ', - 471 => 'ǘ', - 473 => 'ǚ', - 475 => 'ǜ', - 478 => 'ǟ', - 480 => 'ÇĄ', - 482 => 'ÇŁ', - 484 => 'Ç„', - 486 => 'ǧ', - 488 => 'Ç©', - 490 => 'Ç«', - 492 => 'Ç­', - 494 => 'ÇŻ', - 497 => 'dz', - 498 => 'dz', - 499 => 'dz', - 500 => 'Ç”', - 502 => 'ƕ', - 503 => 'Æż', - 504 => 'Çč', - 506 => 'Ç»', - 508 => 'Çœ', - 510 => 'Çż', - 512 => 'ȁ', - 514 => 'ȃ', - 516 => 'ȅ', - 518 => 'ȇ', - 520 => 'ȉ', - 522 => 'ȋ', - 524 => 'ȍ', - 526 => 'ȏ', - 528 => 'ȑ', - 530 => 'ȓ', - 532 => 'ȕ', - 534 => 'ȗ', - 536 => 'ș', - 538 => 'ț', - 540 => 'ȝ', - 542 => 'ȟ', - 544 => 'ƞ', - 546 => 'ÈŁ', - 548 => 'È„', - 550 => 'ȧ', - 552 => 'È©', - 554 => 'È«', - 556 => 'È­', - 558 => 'ÈŻ', - 560 => 'ȱ', - 562 => 'Èł', - 570 => 'ⱄ', - 571 => 'ÈŒ', - 573 => 'ƚ', - 574 => 'ⱊ', - 577 => 'ɂ', - 579 => 'ƀ', - 580 => 'ʉ', - 581 => 'ʌ', - 582 => 'ɇ', - 584 => 'ɉ', - 586 => 'ɋ', - 588 => 'ɍ', - 590 => 'ɏ', - 688 => 'h', - 689 => 'ÉŠ', - 690 => 'j', - 691 => 'r', - 692 => 'Éč', - 693 => 'É»', - 694 => 'ʁ', - 695 => 'w', - 696 => 'y', - 736 => 'ÉŁ', - 737 => 'l', - 738 => 's', - 739 => 'x', - 740 => 'ʕ', - 832 => '̀', - 833 => '́', - 835 => '̓', - 836 => '̈́', - 837 => 'Îč', - 880 => 'ͱ', - 882 => 'Íł', - 884 => 'Êč', - 886 => 'Í·', - 895 => 'Ïł', - 902 => 'ÎŹ', - 903 => '·', - 904 => 'έ', - 905 => 'Îź', - 906 => 'ÎŻ', - 908 => 'ό', - 910 => 'ύ', - 911 => 'ώ', - 913 => 'α', - 914 => 'ÎČ', - 915 => 'Îł', - 916 => 'ÎŽ', - 917 => 'Δ', - 918 => 'ζ', - 919 => 'η', - 920 => 'Ξ', - 921 => 'Îč', - 922 => 'Îș', - 923 => 'λ', - 924 => 'ÎŒ', - 925 => 'Μ', - 926 => 'Ο', - 927 => 'Îż', - 928 => 'π', - 929 => 'ρ', - 931 => 'σ', - 932 => 'τ', - 933 => 'υ', - 934 => 'φ', - 935 => 'χ', - 936 => 'ψ', - 937 => 'ω', - 938 => 'ϊ', - 939 => 'ϋ', - 975 => 'ϗ', - 976 => 'ÎČ', - 977 => 'Ξ', - 978 => 'υ', - 979 => 'ύ', - 980 => 'ϋ', - 981 => 'φ', - 982 => 'π', - 984 => 'ϙ', - 986 => 'ϛ', - 988 => 'ϝ', - 990 => 'ϟ', - 992 => 'ÏĄ', - 994 => 'ÏŁ', - 996 => 'Ï„', - 998 => 'ϧ', - 1000 => 'Ï©', - 1002 => 'Ï«', - 1004 => 'Ï­', - 1006 => 'ÏŻ', - 1008 => 'Îș', - 1009 => 'ρ', - 1010 => 'σ', - 1012 => 'Ξ', - 1013 => 'Δ', - 1015 => 'Ïž', - 1017 => 'σ', - 1018 => 'Ï»', - 1021 => 'Í»', - 1022 => 'ÍŒ', - 1023 => 'Íœ', - 1024 => 'ѐ', - 1025 => 'ё', - 1026 => 'ђ', - 1027 => 'ѓ', - 1028 => 'є', - 1029 => 'ѕ', - 1030 => 'і', - 1031 => 'ї', - 1032 => 'ј', - 1033 => 'љ', - 1034 => 'њ', - 1035 => 'ћ', - 1036 => 'ќ', - 1037 => 'ѝ', - 1038 => 'ў', - 1039 => 'џ', - 1040 => 'а', - 1041 => 'б', - 1042 => 'ĐČ', - 1043 => 'Đł', - 1044 => 'ĐŽ', - 1045 => 'Đ”', - 1046 => 'ж', - 1047 => 'Đ·', - 1048 => 'Đž', - 1049 => 'Đč', - 1050 => 'Đș', - 1051 => 'Đ»', - 1052 => 'ĐŒ', - 1053 => 'Đœ', - 1054 => 'ĐŸ', - 1055 => 'Đż', - 1056 => 'р', - 1057 => 'с', - 1058 => 'т', - 1059 => 'у', - 1060 => 'ф', - 1061 => 'х', - 1062 => 'ц', - 1063 => 'ч', - 1064 => 'ш', - 1065 => 'щ', - 1066 => 'ъ', - 1067 => 'ы', - 1068 => 'ь', - 1069 => 'э', - 1070 => 'ю', - 1071 => 'я', - 1120 => 'ŃĄ', - 1122 => 'ŃŁ', - 1124 => 'Ń„', - 1126 => 'ѧ', - 1128 => 'Ń©', - 1130 => 'Ń«', - 1132 => 'Ń­', - 1134 => 'ŃŻ', - 1136 => 'ѱ', - 1138 => 'Ńł', - 1140 => 'Ń”', - 1142 => 'Ń·', - 1144 => 'Ńč', - 1146 => 'Ń»', - 1148 => 'Ńœ', - 1150 => 'Ńż', - 1152 => 'ҁ', - 1162 => 'ҋ', - 1164 => 'ҍ', - 1166 => 'ҏ', - 1168 => 'ґ', - 1170 => 'ғ', - 1172 => 'ҕ', - 1174 => 'җ', - 1176 => 'ҙ', - 1178 => 'қ', - 1180 => 'ҝ', - 1182 => 'ҟ', - 1184 => 'ÒĄ', - 1186 => 'ÒŁ', - 1188 => 'Ò„', - 1190 => 'Ò§', - 1192 => 'Ò©', - 1194 => 'Ò«', - 1196 => 'Ò­', - 1198 => 'ÒŻ', - 1200 => 'Ò±', - 1202 => 'Òł', - 1204 => 'Ò”', - 1206 => 'Ò·', - 1208 => 'Òč', - 1210 => 'Ò»', - 1212 => 'Òœ', - 1214 => 'Òż', - 1217 => 'ӂ', - 1219 => 'ӄ', - 1221 => 'ӆ', - 1223 => 'ӈ', - 1225 => 'ӊ', - 1227 => 'ӌ', - 1229 => 'ӎ', - 1232 => 'ӑ', - 1234 => 'ӓ', - 1236 => 'ӕ', - 1238 => 'ӗ', - 1240 => 'ә', - 1242 => 'ӛ', - 1244 => 'ӝ', - 1246 => 'ӟ', - 1248 => 'ÓĄ', - 1250 => 'ÓŁ', - 1252 => 'Ó„', - 1254 => 'Ó§', - 1256 => 'Ó©', - 1258 => 'Ó«', - 1260 => 'Ó­', - 1262 => 'ÓŻ', - 1264 => 'Ó±', - 1266 => 'Ół', - 1268 => 'Ó”', - 1270 => 'Ó·', - 1272 => 'Óč', - 1274 => 'Ó»', - 1276 => 'Óœ', - 1278 => 'Óż', - 1280 => 'ԁ', - 1282 => 'ԃ', - 1284 => 'ԅ', - 1286 => 'ԇ', - 1288 => 'ԉ', - 1290 => 'ԋ', - 1292 => 'ԍ', - 1294 => 'ԏ', - 1296 => 'ԑ', - 1298 => 'ԓ', - 1300 => 'ԕ', - 1302 => 'ԗ', - 1304 => 'ԙ', - 1306 => 'ԛ', - 1308 => 'ԝ', - 1310 => 'ԟ', - 1312 => 'ÔĄ', - 1314 => 'ÔŁ', - 1316 => 'Ô„', - 1318 => 'Ô§', - 1320 => 'Ô©', - 1322 => 'Ô«', - 1324 => 'Ô­', - 1326 => 'ÔŻ', - 1329 => 'ŐĄ', - 1330 => 'Őą', - 1331 => 'ŐŁ', - 1332 => 'Ő€', - 1333 => 'Ő„', - 1334 => 'ŐŠ', - 1335 => 'Ő§', - 1336 => 'Őš', - 1337 => 'Ő©', - 1338 => 'ŐȘ', - 1339 => 'Ő«', - 1340 => 'ŐŹ', - 1341 => 'Ő­', - 1342 => 'Őź', - 1343 => 'ŐŻ', - 1344 => 'Ő°', - 1345 => 'Ő±', - 1346 => 'ŐČ', - 1347 => 'Őł', - 1348 => 'ŐŽ', - 1349 => 'Ő”', - 1350 => 'Ő¶', - 1351 => 'Ő·', - 1352 => 'Őž', - 1353 => 'Őč', - 1354 => 'Őș', - 1355 => 'Ő»', - 1356 => 'ŐŒ', - 1357 => 'Őœ', - 1358 => 'ŐŸ', - 1359 => 'Őż', - 1360 => 'ր', - 1361 => 'ց', - 1362 => 'ւ', - 1363 => 'փ', - 1364 => 'ք', - 1365 => 'օ', - 1366 => 'ֆ', - 1415 => 'Ő„Ö‚', - 1653 => 'Ű§ÙŽ', - 1654 => 'ÙˆÙŽ', - 1655 => 'Û‡ÙŽ', - 1656 => 'ÙŠÙŽ', - 2392 => 'à€•à€Œ', - 2393 => 'à€–à€Œ', - 2394 => 'à€—à€Œ', - 2395 => 'à€œà€Œ', - 2396 => 'à€Ąà€Œ', - 2397 => 'à€ąà€Œ', - 2398 => 'à€«à€Œ', - 2399 => 'à€Żà€Œ', - 2524 => 'àŠĄàŠŒ', - 2525 => 'àŠąàŠŒ', - 2527 => 'àŠŻàŠŒ', - 2611 => 'àšČàšŒ', - 2614 => 'àšžàšŒ', - 2649 => 'àš–àšŒ', - 2650 => 'àš—àšŒ', - 2651 => 'àšœàšŒ', - 2654 => 'àš«àšŒ', - 2908 => 'àŹĄàŹŒ', - 2909 => 'àŹąàŹŒ', - 3635 => 'àčàžČ', - 3763 => 'ໍàșČ', - 3804 => 'àș«àș™', - 3805 => 'àș«àșĄ', - 3852 => 'àŒ‹', - 3907 => 'àœ‚àŸ·', - 3917 => 'àœŒàŸ·', - 3922 => 'àœ‘àŸ·', - 3927 => 'àœ–àŸ·', - 3932 => 'àœ›àŸ·', - 3945 => 'àœ€àŸ”', - 3955 => 'àœ±àœČ', - 3957 => 'àœ±àœŽ', - 3958 => 'àŸČàŸ€', - 3959 => 'àŸČàœ±àŸ€', - 3960 => 'àŸłàŸ€', - 3961 => 'àŸłàœ±àŸ€', - 3969 => 'àœ±àŸ€', - 3987 => 'àŸ’àŸ·', - 3997 => 'àŸœàŸ·', - 4002 => 'àŸĄàŸ·', - 4007 => 'àŸŠàŸ·', - 4012 => 'àŸ«àŸ·', - 4025 => 'àŸàŸ”', - 4295 => '⎧', - 4301 => '⎭', - 4348 => 'ნ', - 5112 => 'Ᏸ', - 5113 => 'Ᏹ', - 5114 => 'áČ', - 5115 => 'Ᏻ', - 5116 => 'Ꮞ', - 5117 => 'Ꮤ', - 7296 => 'ĐČ', - 7297 => 'ĐŽ', - 7298 => 'ĐŸ', - 7299 => 'с', - 7300 => 'т', - 7301 => 'т', - 7302 => 'ъ', - 7303 => 'ŃŁ', - 7304 => 'ꙋ', - 7312 => 'ა', - 7313 => 'ბ', - 7314 => 'გ', - 7315 => 'დ', - 7316 => 'ე', - 7317 => 'ვ', - 7318 => 'ზ', - 7319 => 'თ', - 7320 => 'ი', - 7321 => 'კ', - 7322 => 'ლ', - 7323 => 'მ', - 7324 => 'ნ', - 7325 => 'ო', - 7326 => 'პ', - 7327 => 'ჟ', - 7328 => 'რ', - 7329 => 'ქ', - 7330 => 'ჹ', - 7331 => 'უ', - 7332 => 'Ⴠ', - 7333 => 'Ⴤ', - 7334 => '჊', - 7335 => 'ყ', - 7336 => 'ლ', - 7337 => 'ჩ', - 7338 => 'áƒȘ', - 7339 => 'ძ', - 7340 => '჏', - 7341 => 'ჭ', - 7342 => 'ჟ', - 7343 => 'ჯ', - 7344 => 'ჰ', - 7345 => 'ჱ', - 7346 => 'áƒČ', - 7347 => 'ჳ', - 7348 => '჎', - 7349 => 'ე', - 7350 => 'ჶ', - 7351 => 'ჷ', - 7352 => 'პ', - 7353 => 'áƒč', - 7354 => 'áƒș', - 7357 => 'ნ', - 7358 => 'ჟ', - 7359 => 'ჿ', - 7468 => 'a', - 7469 => 'ĂŠ', - 7470 => 'b', - 7472 => 'd', - 7473 => 'e', - 7474 => 'ǝ', - 7475 => 'g', - 7476 => 'h', - 7477 => 'i', - 7478 => 'j', - 7479 => 'k', - 7480 => 'l', - 7481 => 'm', - 7482 => 'n', - 7484 => 'o', - 7485 => 'ÈŁ', - 7486 => 'p', - 7487 => 'r', - 7488 => 't', - 7489 => 'u', - 7490 => 'w', - 7491 => 'a', - 7492 => 'ɐ', - 7493 => 'ɑ', - 7494 => 'ᮂ', - 7495 => 'b', - 7496 => 'd', - 7497 => 'e', - 7498 => 'ə', - 7499 => 'ɛ', - 7500 => 'ɜ', - 7501 => 'g', - 7503 => 'k', - 7504 => 'm', - 7505 => 'Ƌ', - 7506 => 'o', - 7507 => 'ɔ', - 7508 => 'ᮖ', - 7509 => 'ᮗ', - 7510 => 'p', - 7511 => 't', - 7512 => 'u', - 7513 => '᎝', - 7514 => 'ÉŻ', - 7515 => 'v', - 7516 => 'ᎄ', - 7517 => 'ÎČ', - 7518 => 'Îł', - 7519 => 'ÎŽ', - 7520 => 'φ', - 7521 => 'χ', - 7522 => 'i', - 7523 => 'r', - 7524 => 'u', - 7525 => 'v', - 7526 => 'ÎČ', - 7527 => 'Îł', - 7528 => 'ρ', - 7529 => 'φ', - 7530 => 'χ', - 7544 => 'Đœ', - 7579 => 'ɒ', - 7580 => 'c', - 7581 => 'ɕ', - 7582 => 'ð', - 7583 => 'ɜ', - 7584 => 'f', - 7585 => 'ɟ', - 7586 => 'ÉĄ', - 7587 => 'É„', - 7588 => 'Éš', - 7589 => 'É©', - 7590 => 'ÉȘ', - 7591 => 'á”»', - 7592 => 'ʝ', - 7593 => 'É­', - 7594 => 'ᶅ', - 7595 => 'ʟ', - 7596 => 'ɱ', - 7597 => 'ɰ', - 7598 => 'ÉČ', - 7599 => 'Éł', - 7600 => 'ÉŽ', - 7601 => 'É”', - 7602 => 'Éž', - 7603 => 'ʂ', - 7604 => 'ʃ', - 7605 => 'Æ«', - 7606 => 'ʉ', - 7607 => 'ʊ', - 7608 => 'ᮜ', - 7609 => 'ʋ', - 7610 => 'ʌ', - 7611 => 'z', - 7612 => 'ʐ', - 7613 => 'ʑ', - 7614 => 'ʒ', - 7615 => 'Ξ', - 7680 => 'ខ', - 7682 => 'ឃ', - 7684 => 'ᾅ', - 7686 => 'ᾇ', - 7688 => 'ᾉ', - 7690 => 'ᾋ', - 7692 => 'ឍ', - 7694 => 'ត', - 7696 => 'ᾑ', - 7698 => 'ᾓ', - 7700 => 'ᾕ', - 7702 => 'ᾗ', - 7704 => 'ᾙ', - 7706 => 'ᾛ', - 7708 => 'ឝ', - 7710 => 'ᾟ', - 7712 => 'ឥ', - 7714 => 'ឣ', - 7716 => 'áž„', - 7718 => 'áž§', - 7720 => 'áž©', - 7722 => 'áž«', - 7724 => 'áž­', - 7726 => 'ឯ', - 7728 => 'áž±', - 7730 => 'ážł', - 7732 => 'áž”', - 7734 => 'áž·', - 7736 => 'ážč', - 7738 => 'áž»', - 7740 => 'ážœ', - 7742 => 'ážż', - 7744 => 'áč', - 7746 => 'áčƒ', - 7748 => 'áč…', - 7750 => 'áč‡', - 7752 => 'áč‰', - 7754 => 'áč‹', - 7756 => 'áč', - 7758 => 'áč', - 7760 => 'áč‘', - 7762 => 'áč“', - 7764 => 'áč•', - 7766 => 'áč—', - 7768 => 'áč™', - 7770 => 'áč›', - 7772 => 'áč', - 7774 => 'áčŸ', - 7776 => 'áčĄ', - 7778 => 'áčŁ', - 7780 => 'áč„', - 7782 => 'áč§', - 7784 => 'áč©', - 7786 => 'áč«', - 7788 => 'áč­', - 7790 => 'áčŻ', - 7792 => 'áč±', - 7794 => 'áčł', - 7796 => 'áč”', - 7798 => 'áč·', - 7800 => 'áčč', - 7802 => 'áč»', - 7804 => 'áčœ', - 7806 => 'áčż', - 7808 => 'áș', - 7810 => 'áșƒ', - 7812 => 'áș…', - 7814 => 'áș‡', - 7816 => 'áș‰', - 7818 => 'áș‹', - 7820 => 'áș', - 7822 => 'áș', - 7824 => 'áș‘', - 7826 => 'áș“', - 7828 => 'áș•', - 7834 => 'aÊŸ', - 7835 => 'áčĄ', - 7838 => 'ss', - 7840 => 'áșĄ', - 7842 => 'áșŁ', - 7844 => 'áș„', - 7846 => 'áș§', - 7848 => 'áș©', - 7850 => 'áș«', - 7852 => 'áș­', - 7854 => 'áșŻ', - 7856 => 'áș±', - 7858 => 'áșł', - 7860 => 'áș”', - 7862 => 'áș·', - 7864 => 'áșč', - 7866 => 'áș»', - 7868 => 'áșœ', - 7870 => 'áșż', - 7872 => 'ề', - 7874 => 'ể', - 7876 => 'ễ', - 7878 => 'ệ', - 7880 => 'ỉ', - 7882 => 'ị', - 7884 => 'ọ', - 7886 => 'ỏ', - 7888 => 'ố', - 7890 => 'ồ', - 7892 => 'ổ', - 7894 => 'ỗ', - 7896 => 'ộ', - 7898 => 'ớ', - 7900 => 'ờ', - 7902 => 'ở', - 7904 => 'ụ', - 7906 => 'ợ', - 7908 => 'Ễ', - 7910 => 'á»§', - 7912 => 'ứ', - 7914 => 'ừ', - 7916 => 'á»­', - 7918 => 'ữ', - 7920 => 'á»±', - 7922 => 'ỳ', - 7924 => 'á»”', - 7926 => 'á»·', - 7928 => 'á»č', - 7930 => 'á»»', - 7932 => 'Ờ', - 7934 => 'ỿ', - 7944 => 'ጀ', - 7945 => 'ጁ', - 7946 => 'ጂ', - 7947 => 'ጃ', - 7948 => 'ጄ', - 7949 => 'ጅ', - 7950 => 'ጆ', - 7951 => 'ጇ', - 7960 => 'ጐ', - 7961 => '጑', - 7962 => 'ጒ', - 7963 => 'ጓ', - 7964 => 'ጔ', - 7965 => 'ጕ', - 7976 => 'ጠ', - 7977 => 'áŒĄ', - 7978 => 'áŒą', - 7979 => 'áŒŁ', - 7980 => 'ጀ', - 7981 => 'ጄ', - 7982 => 'ጊ', - 7983 => 'ጧ', - 7992 => 'ጰ', - 7993 => 'ጱ', - 7994 => 'áŒČ', - 7995 => 'áŒł', - 7996 => 'ጎ', - 7997 => 'ጔ', - 7998 => 'ጶ', - 7999 => 'ጷ', - 8008 => 'ᜀ', - 8009 => 'ᜁ', - 8010 => 'ᜂ', - 8011 => 'ᜃ', - 8012 => 'ᜄ', - 8013 => 'ᜅ', - 8025 => 'ᜑ', - 8027 => 'ᜓ', - 8029 => '᜕', - 8031 => '᜗', - 8040 => 'ᜠ', - 8041 => 'áœĄ', - 8042 => 'áœą', - 8043 => 'áœŁ', - 8044 => 'ᜀ', - 8045 => 'ᜄ', - 8046 => 'ᜊ', - 8047 => 'ᜧ', - 8049 => 'ÎŹ', - 8051 => 'έ', - 8053 => 'Îź', - 8055 => 'ÎŻ', - 8057 => 'ό', - 8059 => 'ύ', - 8061 => 'ώ', - 8064 => 'ጀÎč', - 8065 => 'ጁÎč', - 8066 => 'ጂÎč', - 8067 => 'ጃÎč', - 8068 => 'ጄÎč', - 8069 => 'ጅÎč', - 8070 => 'ጆÎč', - 8071 => 'ጇÎč', - 8072 => 'ጀÎč', - 8073 => 'ጁÎč', - 8074 => 'ጂÎč', - 8075 => 'ጃÎč', - 8076 => 'ጄÎč', - 8077 => 'ጅÎč', - 8078 => 'ጆÎč', - 8079 => 'ጇÎč', - 8080 => 'ጠÎč', - 8081 => 'áŒĄÎč', - 8082 => 'áŒąÎč', - 8083 => 'áŒŁÎč', - 8084 => 'ጀÎč', - 8085 => 'ጄÎč', - 8086 => 'ጊÎč', - 8087 => 'ጧÎč', - 8088 => 'ጠÎč', - 8089 => 'áŒĄÎč', - 8090 => 'áŒąÎč', - 8091 => 'áŒŁÎč', - 8092 => 'ጀÎč', - 8093 => 'ጄÎč', - 8094 => 'ጊÎč', - 8095 => 'ጧÎč', - 8096 => 'ᜠÎč', - 8097 => 'áœĄÎč', - 8098 => 'áœąÎč', - 8099 => 'áœŁÎč', - 8100 => 'ᜀÎč', - 8101 => 'ᜄÎč', - 8102 => 'ᜊÎč', - 8103 => 'ᜧÎč', - 8104 => 'ᜠÎč', - 8105 => 'áœĄÎč', - 8106 => 'áœąÎč', - 8107 => 'áœŁÎč', - 8108 => 'ᜀÎč', - 8109 => 'ᜄÎč', - 8110 => 'ᜊÎč', - 8111 => 'ᜧÎč', - 8114 => 'ᜰÎč', - 8115 => 'αÎč', - 8116 => 'ÎŹÎč', - 8119 => '៶Îč', - 8120 => '៰', - 8121 => '៱', - 8122 => 'ᜰ', - 8123 => 'ÎŹ', - 8124 => 'αÎč', - 8126 => 'Îč', - 8130 => 'ᜎÎč', - 8131 => 'ηÎč', - 8132 => 'ÎźÎč', - 8135 => 'ῆÎč', - 8136 => 'áœČ', - 8137 => 'έ', - 8138 => 'ᜎ', - 8139 => 'Îź', - 8140 => 'ηÎč', - 8147 => 'ΐ', - 8152 => 'ῐ', - 8153 => 'ῑ', - 8154 => '᜶', - 8155 => 'ÎŻ', - 8163 => 'ΰ', - 8168 => 'áż ', - 8169 => 'ῥ', - 8170 => 'áœș', - 8171 => 'ύ', - 8172 => 'áż„', - 8178 => 'ᜌÎč', - 8179 => 'ωÎč', - 8180 => 'ώÎč', - 8183 => 'áż¶Îč', - 8184 => '᜞', - 8185 => 'ό', - 8186 => 'ᜌ', - 8187 => 'ώ', - 8188 => 'ωÎč', - 8209 => '‐', - 8243 => 'â€Čâ€Č', - 8244 => 'â€Čâ€Čâ€Č', - 8246 => '——', - 8247 => '———', - 8279 => 'â€Čâ€Čâ€Čâ€Č', - 8304 => '0', - 8305 => 'i', - 8308 => '4', - 8309 => '5', - 8310 => '6', - 8311 => '7', - 8312 => '8', - 8313 => '9', - 8315 => '−', - 8319 => 'n', - 8320 => '0', - 8321 => '1', - 8322 => '2', - 8323 => '3', - 8324 => '4', - 8325 => '5', - 8326 => '6', - 8327 => '7', - 8328 => '8', - 8329 => '9', - 8331 => '−', - 8336 => 'a', - 8337 => 'e', - 8338 => 'o', - 8339 => 'x', - 8340 => 'ə', - 8341 => 'h', - 8342 => 'k', - 8343 => 'l', - 8344 => 'm', - 8345 => 'n', - 8346 => 'p', - 8347 => 's', - 8348 => 't', - 8360 => 'rs', - 8450 => 'c', - 8451 => '°c', - 8455 => 'ɛ', - 8457 => '°f', - 8458 => 'g', - 8459 => 'h', - 8460 => 'h', - 8461 => 'h', - 8462 => 'h', - 8463 => 'ħ', - 8464 => 'i', - 8465 => 'i', - 8466 => 'l', - 8467 => 'l', - 8469 => 'n', - 8470 => 'no', - 8473 => 'p', - 8474 => 'q', - 8475 => 'r', - 8476 => 'r', - 8477 => 'r', - 8480 => 'sm', - 8481 => 'tel', - 8482 => 'tm', - 8484 => 'z', - 8486 => 'ω', - 8488 => 'z', - 8490 => 'k', - 8491 => 'Ă„', - 8492 => 'b', - 8493 => 'c', - 8495 => 'e', - 8496 => 'e', - 8497 => 'f', - 8499 => 'm', - 8500 => 'o', - 8501 => 'ڐ', - 8502 => 'Ś‘', - 8503 => 'Ś’', - 8504 => 'Ś“', - 8505 => 'i', - 8507 => 'fax', - 8508 => 'π', - 8509 => 'Îł', - 8510 => 'Îł', - 8511 => 'π', - 8512 => '∑', - 8517 => 'd', - 8518 => 'd', - 8519 => 'e', - 8520 => 'i', - 8521 => 'j', - 8528 => '1⁄7', - 8529 => '1⁄9', - 8530 => '1⁄10', - 8531 => '1⁄3', - 8532 => '2⁄3', - 8533 => '1⁄5', - 8534 => '2⁄5', - 8535 => '3⁄5', - 8536 => '4⁄5', - 8537 => '1⁄6', - 8538 => '5⁄6', - 8539 => '1⁄8', - 8540 => '3⁄8', - 8541 => '5⁄8', - 8542 => '7⁄8', - 8543 => '1⁄', - 8544 => 'i', - 8545 => 'ii', - 8546 => 'iii', - 8547 => 'iv', - 8548 => 'v', - 8549 => 'vi', - 8550 => 'vii', - 8551 => 'viii', - 8552 => 'ix', - 8553 => 'x', - 8554 => 'xi', - 8555 => 'xii', - 8556 => 'l', - 8557 => 'c', - 8558 => 'd', - 8559 => 'm', - 8560 => 'i', - 8561 => 'ii', - 8562 => 'iii', - 8563 => 'iv', - 8564 => 'v', - 8565 => 'vi', - 8566 => 'vii', - 8567 => 'viii', - 8568 => 'ix', - 8569 => 'x', - 8570 => 'xi', - 8571 => 'xii', - 8572 => 'l', - 8573 => 'c', - 8574 => 'd', - 8575 => 'm', - 8585 => '0⁄3', - 8748 => '∫∫', - 8749 => '∫∫∫', - 8751 => '∟∟', - 8752 => '∟∟∟', - 9001 => '〈', - 9002 => '〉', - 9312 => '1', - 9313 => '2', - 9314 => '3', - 9315 => '4', - 9316 => '5', - 9317 => '6', - 9318 => '7', - 9319 => '8', - 9320 => '9', - 9321 => '10', - 9322 => '11', - 9323 => '12', - 9324 => '13', - 9325 => '14', - 9326 => '15', - 9327 => '16', - 9328 => '17', - 9329 => '18', - 9330 => '19', - 9331 => '20', - 9398 => 'a', - 9399 => 'b', - 9400 => 'c', - 9401 => 'd', - 9402 => 'e', - 9403 => 'f', - 9404 => 'g', - 9405 => 'h', - 9406 => 'i', - 9407 => 'j', - 9408 => 'k', - 9409 => 'l', - 9410 => 'm', - 9411 => 'n', - 9412 => 'o', - 9413 => 'p', - 9414 => 'q', - 9415 => 'r', - 9416 => 's', - 9417 => 't', - 9418 => 'u', - 9419 => 'v', - 9420 => 'w', - 9421 => 'x', - 9422 => 'y', - 9423 => 'z', - 9424 => 'a', - 9425 => 'b', - 9426 => 'c', - 9427 => 'd', - 9428 => 'e', - 9429 => 'f', - 9430 => 'g', - 9431 => 'h', - 9432 => 'i', - 9433 => 'j', - 9434 => 'k', - 9435 => 'l', - 9436 => 'm', - 9437 => 'n', - 9438 => 'o', - 9439 => 'p', - 9440 => 'q', - 9441 => 'r', - 9442 => 's', - 9443 => 't', - 9444 => 'u', - 9445 => 'v', - 9446 => 'w', - 9447 => 'x', - 9448 => 'y', - 9449 => 'z', - 9450 => '0', - 10764 => '∫∫∫∫', - 10972 => '⫝̞', - 11264 => 'â°°', - 11265 => 'â°±', - 11266 => 'â°Č', - 11267 => 'â°ł', - 11268 => 'â°Ž', - 11269 => 'â°”', - 11270 => 'â°¶', - 11271 => 'â°·', - 11272 => 'â°ž', - 11273 => 'â°č', - 11274 => 'â°ș', - 11275 => 'â°»', - 11276 => 'â°Œ', - 11277 => 'â°œ', - 11278 => 'â°Ÿ', - 11279 => 'â°ż', - 11280 => 'ⱀ', - 11281 => 'ⱁ', - 11282 => 'ⱂ', - 11283 => 'ⱃ', - 11284 => 'ⱄ', - 11285 => 'ⱅ', - 11286 => 'ⱆ', - 11287 => 'ⱇ', - 11288 => 'ⱈ', - 11289 => 'ⱉ', - 11290 => 'ⱊ', - 11291 => 'ⱋ', - 11292 => 'ⱌ', - 11293 => 'ⱍ', - 11294 => 'ⱎ', - 11295 => 'ⱏ', - 11296 => 'ⱐ', - 11297 => 'ⱑ', - 11298 => 'ⱒ', - 11299 => 'ⱓ', - 11300 => 'ⱔ', - 11301 => 'ⱕ', - 11302 => 'ⱖ', - 11303 => 'ⱗ', - 11304 => 'ⱘ', - 11305 => 'ⱙ', - 11306 => 'ⱚ', - 11307 => 'ⱛ', - 11308 => 'ⱜ', - 11309 => 'ⱝ', - 11310 => 'ⱞ', - 11360 => 'ⱥ', - 11362 => 'É«', - 11363 => 'ᔜ', - 11364 => 'Éœ', - 11367 => 'ⱚ', - 11369 => 'â±Ș', - 11371 => 'ⱏ', - 11373 => 'ɑ', - 11374 => 'ɱ', - 11375 => 'ɐ', - 11376 => 'ɒ', - 11378 => 'ⱳ', - 11381 => 'â±¶', - 11388 => 'j', - 11389 => 'v', - 11390 => 'Èż', - 11391 => 'ɀ', - 11392 => 'âȁ', - 11394 => 'âȃ', - 11396 => 'âȅ', - 11398 => 'âȇ', - 11400 => 'âȉ', - 11402 => 'âȋ', - 11404 => 'âȍ', - 11406 => 'âȏ', - 11408 => 'âȑ', - 11410 => 'âȓ', - 11412 => 'âȕ', - 11414 => 'âȗ', - 11416 => 'âș', - 11418 => 'âț', - 11420 => 'âȝ', - 11422 => 'âȟ', - 11424 => 'âČĄ', - 11426 => 'âČŁ', - 11428 => 'âČ„', - 11430 => 'âȧ', - 11432 => 'âČ©', - 11434 => 'âČ«', - 11436 => 'âČ­', - 11438 => 'âČŻ', - 11440 => 'âȱ', - 11442 => 'âČł', - 11444 => 'âČ”', - 11446 => 'âČ·', - 11448 => 'âČč', - 11450 => 'âČ»', - 11452 => 'âČœ', - 11454 => 'âČż', - 11456 => 'ⳁ', - 11458 => 'ⳃ', - 11460 => 'ⳅ', - 11462 => 'ⳇ', - 11464 => 'ⳉ', - 11466 => 'ⳋ', - 11468 => 'ⳍ', - 11470 => 'ⳏ', - 11472 => 'ⳑ', - 11474 => 'ⳓ', - 11476 => 'ⳕ', - 11478 => 'ⳗ', - 11480 => 'ⳙ', - 11482 => 'ⳛ', - 11484 => 'ⳝ', - 11486 => 'ⳟ', - 11488 => '⳥', - 11490 => 'ⳣ', - 11499 => 'ⳏ', - 11501 => 'âłź', - 11506 => 'âłł', - 11631 => '┥', - 11935 => 'æŻ', - 12019 => '韟', - 12032 => '侀', - 12033 => 'äžš', - 12034 => 'äž¶', - 12035 => 'äžż', - 12036 => 'äč™', - 12037 => 'äș…', - 12038 => 'äșŒ', - 12039 => 'äș ', - 12040 => 'äșș', - 12041 => '愿', - 12042 => 'ć…„', - 12043 => 'ć…«', - 12044 => '憂', - 12045 => '憖', - 12046 => '憫', - 12047 => '懠', - 12048 => '懔', - 12049 => '戀', - 12050 => '抛', - 12051 => 'ć‹č', - 12052 => '挕', - 12053 => '㌚', - 12054 => '挾', - 12055 => '捁', - 12056 => '捜', - 12057 => 'ć©', - 12058 => '掂', - 12059 => '掶', - 12060 => '揈', - 12061 => '揣', - 12062 => '曗', - 12063 => '㜟', - 12064 => '棫', - 12065 => '怂', - 12066 => '《', - 12067 => '怕', - 12068 => '性', - 12069 => '愳', - 12070 => '歐', - 12071 => '漀', - 12072 => '毞', - 12073 => '氏', - 12074 => 'ć°ą', - 12075 => 'ć°ž', - 12076 => '江', - 12077 => 'ć±±', - 12078 => 'ć·›', - 12079 => 'ć·„', - 12080 => 'ć·±', - 12081 => 'ć·Ÿ', - 12082 => 'ćčČ', - 12083 => 'ćčș', - 12084 => 'ćčż', - 12085 => '滎', - 12086 => 'ć»Ÿ', - 12087 => 'ćŒ‹', - 12088 => 'ćŒ“', - 12089 => 'ćœ', - 12090 => 'ćœĄ', - 12091 => 'ćœł', - 12092 => '濃', - 12093 => '戈', - 12094 => '戶', - 12095 => '手', - 12096 => 'æ”Ż', - 12097 => '攎', - 12098 => '文', - 12099 => '斗', - 12100 => 'æ–€', - 12101 => 'æ–č', - 12102 => '无', - 12103 => 'æ—„', - 12104 => '曰', - 12105 => '月', - 12106 => '朚', - 12107 => 'æŹ ', - 12108 => 'æ­ą', - 12109 => 'æ­č', - 12110 => 'æźł', - 12111 => 'æŻ‹', - 12112 => 'æŻ”', - 12113 => 'æŻ›', - 12114 => '氏', - 12115 => '气', - 12116 => 'æ°Ž', - 12117 => '火', - 12118 => 'çˆȘ', - 12119 => '父', - 12120 => '爻', - 12121 => '爿', - 12122 => '片', - 12123 => '牙', - 12124 => '牛', - 12125 => '犬', - 12126 => '玄', - 12127 => '玉', - 12128 => '瓜', - 12129 => '瓩', - 12130 => '甘', - 12131 => '生', - 12132 => '甹', - 12133 => '田', - 12134 => '疋', - 12135 => '疒', - 12136 => '癶', - 12137 => '癜', - 12138 => '皼', - 12139 => '皿', - 12140 => '盼', - 12141 => '矛', - 12142 => '矱', - 12143 => '石', - 12144 => 'ç€ș', - 12145 => '犞', - 12146 => '犟', - 12147 => '穎', - 12148 => '立', - 12149 => 'ç«č', - 12150 => '米', - 12151 => 'çłž', - 12152 => '猶', - 12153 => '眑', - 12154 => '矊', - 12155 => '矜', - 12156 => '老', - 12157 => '而', - 12158 => '耒', - 12159 => 'è€ł', - 12160 => 'èż', - 12161 => '肉', - 12162 => 'è‡Ł', - 12163 => 'è‡Ș', - 12164 => 'è‡ł', - 12165 => '臌', - 12166 => '舌', - 12167 => '舛', - 12168 => '舟', - 12169 => 'è‰ź', - 12170 => 'è‰Č', - 12171 => '艞', - 12172 => '虍', - 12173 => '虫', - 12174 => 'èĄ€', - 12175 => 'èĄŒ', - 12176 => 'èĄŁ', - 12177 => '脟', - 12178 => '芋', - 12179 => '角', - 12180 => '蚀', - 12181 => 'è°·', - 12182 => '豆', - 12183 => '豕', - 12184 => '豞', - 12185 => 'èȝ', - 12186 => '蔀', - 12187 => 'è”°', - 12188 => 'è¶ł', - 12189 => 'èș«', - 12190 => '車', - 12191 => '蟛', - 12192 => '蟰', - 12193 => '蟔', - 12194 => '邑', - 12195 => '酉', - 12196 => '釆', - 12197 => '里', - 12198 => '金', - 12199 => '長', - 12200 => '門', - 12201 => '阜', - 12202 => '隶', - 12203 => 'éšč', - 12204 => '雹', - 12205 => '靑', - 12206 => '非', - 12207 => '靱', - 12208 => '革', - 12209 => '韋', - 12210 => '韭', - 12211 => '音', - 12212 => '頁', - 12213 => 'éąš', - 12214 => '飛', - 12215 => '食', - 12216 => '驖', - 12217 => '驙', - 12218 => '銏', - 12219 => 'éȘš', - 12220 => '高', - 12221 => '髟', - 12222 => '鏄', - 12223 => '鏯', - 12224 => 'éŹČ', - 12225 => 'éŹŒ', - 12226 => '魚', - 12227 => 'éł„', - 12228 => 'éč”', - 12229 => 'éčż', - 12230 => 'éș„', - 12231 => 'éș»', - 12232 => '黃', - 12233 => '黍', - 12234 => '黑', - 12235 => 'é»č', - 12236 => '黜', - 12237 => '錎', - 12238 => '錓', - 12239 => '錠', - 12240 => '錻', - 12241 => '霊', - 12242 => '霒', - 12243 => '韍', - 12244 => '韜', - 12245 => '韠', - 12290 => '.', - 12342 => '〒', - 12344 => '捁', - 12345 => '捄', - 12346 => '捅', - 12447 => 'より', - 12543 => 'コト', - 12593 => 'ᄀ', - 12594 => 'ᄁ', - 12595 => 'á†Ș', - 12596 => 'ᄂ', - 12597 => 'ᆬ', - 12598 => 'ᆭ', - 12599 => 'ᄃ', - 12600 => 'ᄄ', - 12601 => 'ᄅ', - 12602 => 'ᆰ', - 12603 => 'ᆱ', - 12604 => 'á†Č', - 12605 => 'ᆳ', - 12606 => 'ᆮ', - 12607 => 'ᆔ', - 12608 => 'ᄚ', - 12609 => 'ᄆ', - 12610 => 'ᄇ', - 12611 => 'ᄈ', - 12612 => 'ᄡ', - 12613 => 'ᄉ', - 12614 => 'ᄊ', - 12615 => 'ᄋ', - 12616 => 'ᄌ', - 12617 => 'ᄍ', - 12618 => 'ᄎ', - 12619 => 'ᄏ', - 12620 => 'ᄐ', - 12621 => 'ᄑ', - 12622 => 'ᄒ', - 12623 => 'ᅡ', - 12624 => 'ᅱ', - 12625 => 'ᅣ', - 12626 => 'á…€', - 12627 => 'á…„', - 12628 => 'ᅩ', - 12629 => 'ᅧ', - 12630 => 'ᅹ', - 12631 => 'ᅩ', - 12632 => 'á…Ș', - 12633 => 'ᅫ', - 12634 => 'ᅬ', - 12635 => 'ᅭ', - 12636 => 'ᅼ', - 12637 => 'ᅯ', - 12638 => 'ᅰ', - 12639 => 'ᅱ', - 12640 => 'á…Č', - 12641 => 'ᅳ', - 12642 => 'ᅮ', - 12643 => 'á…”', - 12645 => 'ᄔ', - 12646 => 'ᄕ', - 12647 => 'ᇇ', - 12648 => 'ᇈ', - 12649 => 'ᇌ', - 12650 => 'ᇎ', - 12651 => 'ᇓ', - 12652 => 'ᇗ', - 12653 => 'ᇙ', - 12654 => 'ᄜ', - 12655 => 'ᇝ', - 12656 => 'ᇟ', - 12657 => 'ᄝ', - 12658 => 'ᄞ', - 12659 => 'ᄠ', - 12660 => 'ᄱ', - 12661 => 'ᄣ', - 12662 => 'ᄧ', - 12663 => 'ᄩ', - 12664 => 'ᄫ', - 12665 => 'ᄬ', - 12666 => 'ᄭ', - 12667 => 'ᄼ', - 12668 => 'ᄯ', - 12669 => 'á„Č', - 12670 => 'ᄶ', - 12671 => 'ᅀ', - 12672 => 'ᅇ', - 12673 => 'ᅌ', - 12674 => 'ᇱ', - 12675 => 'á‡Č', - 12676 => 'ᅗ', - 12677 => 'ᅘ', - 12678 => 'ᅙ', - 12679 => 'ᆄ', - 12680 => 'ᆅ', - 12681 => 'ᆈ', - 12682 => 'ᆑ', - 12683 => 'ᆒ', - 12684 => 'ᆔ', - 12685 => 'ᆞ', - 12686 => 'ᆡ', - 12690 => '侀', - 12691 => 'äșŒ', - 12692 => '侉', - 12693 => '曛', - 12694 => '侊', - 12695 => 'äž­', - 12696 => '例', - 12697 => 'ç”Č', - 12698 => 'äč™', - 12699 => '侙', - 12700 => '䞁', - 12701 => '怩', - 12702 => '㜰', - 12703 => 'äșș', - 12868 => '敏', - 12869 => 'ćčŒ', - 12870 => '文', - 12871 => '缏', - 12880 => 'pte', - 12881 => '21', - 12882 => '22', - 12883 => '23', - 12884 => '24', - 12885 => '25', - 12886 => '26', - 12887 => '27', - 12888 => '28', - 12889 => '29', - 12890 => '30', - 12891 => '31', - 12892 => '32', - 12893 => '33', - 12894 => '34', - 12895 => '35', - 12896 => 'ᄀ', - 12897 => 'ᄂ', - 12898 => 'ᄃ', - 12899 => 'ᄅ', - 12900 => 'ᄆ', - 12901 => 'ᄇ', - 12902 => 'ᄉ', - 12903 => 'ᄋ', - 12904 => 'ᄌ', - 12905 => 'ᄎ', - 12906 => 'ᄏ', - 12907 => 'ᄐ', - 12908 => 'ᄑ', - 12909 => 'ᄒ', - 12910 => '가', - 12911 => '나', - 12912 => 'ë‹€', - 12913 => '띌', - 12914 => '마', - 12915 => '바', - 12916 => 'ì‚Ź', - 12917 => '아', - 12918 => '자', - 12919 => 'ì°š', - 12920 => 'ìčŽ', - 12921 => '타', - 12922 => '파', - 12923 => '하', - 12924 => 'ì°žêł ', - 12925 => 'ìŁŒì˜', - 12926 => '우', - 12928 => '侀', - 12929 => 'äșŒ', - 12930 => '侉', - 12931 => '曛', - 12932 => 'äș”', - 12933 => '慭', - 12934 => '䞃', - 12935 => 'ć…«', - 12936 => 'äč', - 12937 => '捁', - 12938 => '月', - 12939 => '火', - 12940 => 'æ°Ž', - 12941 => '朚', - 12942 => '金', - 12943 => '㜟', - 12944 => 'æ—„', - 12945 => 'æ Ș', - 12946 => '有', - 12947 => '瀟', - 12948 => '損', - 12949 => 'ç‰č', - 12950 => 'èČĄ', - 12951 => '焝', - 12952 => '抮', - 12953 => '秘', - 12954 => '男', - 12955 => '愳', - 12956 => '適', - 12957 => 'ć„Ș', - 12958 => '捰', - 12959 => 'æłš', - 12960 => '項', - 12961 => '䌑', - 12962 => '憙', - 12963 => 'æ­Ł', - 12964 => '侊', - 12965 => 'äž­', - 12966 => '例', - 12967 => 'ć·Š', - 12968 => '揳', - 12969 => '㌻', - 12970 => '漗', - 12971 => 'ć­Š', - 12972 => '監', - 12973 => '䌁', - 12974 => 'èł‡', - 12975 => '捔', - 12976 => '〜', - 12977 => '36', - 12978 => '37', - 12979 => '38', - 12980 => '39', - 12981 => '40', - 12982 => '41', - 12983 => '42', - 12984 => '43', - 12985 => '44', - 12986 => '45', - 12987 => '46', - 12988 => '47', - 12989 => '48', - 12990 => '49', - 12991 => '50', - 12992 => '1月', - 12993 => '2月', - 12994 => '3月', - 12995 => '4月', - 12996 => '5月', - 12997 => '6月', - 12998 => '7月', - 12999 => '8月', - 13000 => '9月', - 13001 => '10月', - 13002 => '11月', - 13003 => '12月', - 13004 => 'hg', - 13005 => 'erg', - 13006 => 'ev', - 13007 => 'ltd', - 13008 => 'ケ', - 13009 => 'ă‚€', - 13010 => 'ォ', - 13011 => 'ス', - 13012 => 'ă‚Ș', - 13013 => 'ă‚«', - 13014 => 'キ', - 13015 => 'ク', - 13016 => 'ケ', - 13017 => 'コ', - 13018 => 'ă‚”', - 13019 => 'ă‚·', - 13020 => 'ă‚č', - 13021 => 'ă‚»', - 13022 => 'ă‚œ', - 13023 => 'タ', - 13024 => 'チ', - 13025 => 'ツ', - 13026 => 'テ', - 13027 => 'ト', - 13028 => 'ナ', - 13029 => 'ニ', - 13030 => 'ヌ', - 13031 => 'ネ', - 13032 => 'ノ', - 13033 => 'ハ', - 13034 => 'ヒ', - 13035 => 'フ', - 13036 => 'ヘ', - 13037 => 'ホ', - 13038 => 'マ', - 13039 => 'ミ', - 13040 => 'ム', - 13041 => 'ュ', - 13042 => 'ヹ', - 13043 => 'ダ', - 13044 => 'ナ', - 13045 => 'ペ', - 13046 => 'ラ', - 13047 => 'ăƒȘ', - 13048 => 'ル', - 13049 => 'ハ', - 13050 => 'ロ', - 13051 => 'ワ', - 13052 => 'ヰ', - 13053 => 'ヱ', - 13054 => 'ăƒČ', - 13055 => 'ä»€ć’Œ', - 13056 => 'ă‚ąăƒ‘ăƒŒăƒˆ', - 13057 => 'ă‚ąăƒ«ăƒ•ă‚Ą', - 13058 => 'ケンペケ', - 13059 => 'ă‚ąăƒŒăƒ«', - 13060 => 'ă‚€ăƒ‹ăƒłă‚°', - 13061 => 'ă‚€ăƒłăƒ', - 13062 => 'ă‚Šă‚©ăƒł', - 13063 => 'スă‚čă‚ŻăƒŒăƒ‰', - 13064 => 'ă‚šăƒŒă‚«ăƒŒ', - 13065 => 'ă‚Șンă‚č', - 13066 => 'ă‚ȘăƒŒăƒ ', - 13067 => 'ă‚«ă‚€ăƒȘ', - 13068 => 'ă‚«ăƒ©ăƒƒăƒˆ', - 13069 => 'ă‚«ăƒ­ăƒȘăƒŒ', - 13070 => 'ガロン', - 13071 => 'ガンマ', - 13072 => 'ゼガ', - 13073 => 'ă‚źăƒ‹ăƒŒ', - 13074 => 'ă‚­ăƒ„ăƒȘăƒŒ', - 13075 => 'ă‚źăƒ«ăƒ€ăƒŒ', - 13076 => 'キロ', - 13077 => 'ă‚­ăƒ­ă‚°ăƒ©ăƒ ', - 13078 => 'ă‚­ăƒ­ăƒĄăƒŒăƒˆăƒ«', - 13079 => 'キロワット', - 13080 => 'ă‚°ăƒ©ăƒ ', - 13081 => 'ă‚°ăƒ©ăƒ ăƒˆăƒł', - 13082 => 'ă‚Żăƒ«ă‚Œă‚€ăƒ­', - 13083 => 'ă‚Żăƒ­ăƒŒăƒ', - 13084 => 'ă‚±ăƒŒă‚č', - 13085 => 'ă‚łăƒ«ăƒŠ', - 13086 => 'ă‚łăƒŒăƒ', - 13087 => 'ă‚”ă‚€ă‚Żăƒ«', - 13088 => 'ă‚”ăƒłăƒăƒŒăƒ ', - 13089 => 'ă‚·ăƒȘング', - 13090 => 'ă‚»ăƒłăƒ', - 13091 => 'ă‚»ăƒłăƒˆ', - 13092 => 'ăƒ€ăƒŒă‚č', - 13093 => 'ăƒ‡ă‚·', - 13094 => 'ăƒ‰ăƒ«', - 13095 => 'トン', - 13096 => 'ナノ', - 13097 => 'ノット', - 13098 => 'ăƒă‚€ăƒ„', - 13099 => 'ăƒ‘ăƒŒă‚»ăƒłăƒˆ', - 13100 => 'ăƒ‘ăƒŒăƒ„', - 13101 => 'ăƒăƒŒăƒŹăƒ«', - 13102 => 'ピケă‚čトル', - 13103 => 'ăƒ”ă‚Żăƒ«', - 13104 => 'ピコ', - 13105 => 'ăƒ“ăƒ«', - 13106 => 'ăƒ•ă‚Ąăƒ©ăƒƒăƒ‰', - 13107 => 'ăƒ•ă‚ŁăƒŒăƒˆ', - 13108 => 'ăƒ–ăƒƒă‚·ă‚§ăƒ«', - 13109 => 'ăƒ•ăƒ©ăƒł', - 13110 => 'ăƒ˜ă‚Żă‚żăƒŒăƒ«', - 13111 => 'ăƒšă‚œ', - 13112 => 'ペニヒ', - 13113 => 'ăƒ˜ăƒ«ăƒ„', - 13114 => 'ペンă‚č', - 13115 => 'ăƒšăƒŒă‚ž', - 13116 => 'ăƒ™ăƒŒă‚ż', - 13117 => 'ăƒă‚€ăƒłăƒˆ', - 13118 => 'ăƒœăƒ«ăƒˆ', - 13119 => 'ホン', - 13120 => 'ポンド', - 13121 => 'ăƒ›ăƒŒăƒ«', - 13122 => 'ăƒ›ăƒŒăƒł', - 13123 => 'ăƒžă‚€ă‚Żăƒ­', - 13124 => 'ăƒžă‚€ăƒ«', - 13125 => 'マッハ', - 13126 => 'ăƒžăƒ«ă‚Ż', - 13127 => 'ăƒžăƒłă‚·ăƒ§ăƒł', - 13128 => 'ミクロン', - 13129 => 'ミăƒȘ', - 13130 => 'ミăƒȘăƒăƒŒăƒ«', - 13131 => 'メガ', - 13132 => 'メガトン', - 13133 => 'ăƒĄăƒŒăƒˆăƒ«', - 13134 => 'ăƒ€ăƒŒăƒ‰', - 13135 => 'ăƒ€ăƒŒăƒ«', - 13136 => 'ラケン', - 13137 => 'ăƒȘットル', - 13138 => 'ăƒȘラ', - 13139 => 'ăƒ«ăƒ”ăƒŒ', - 13140 => 'ăƒ«ăƒŒăƒ–ăƒ«', - 13141 => 'ハム', - 13142 => 'ハントă‚Čン', - 13143 => 'ワット', - 13144 => '0ç‚č', - 13145 => '1ç‚č', - 13146 => '2ç‚č', - 13147 => '3ç‚č', - 13148 => '4ç‚č', - 13149 => '5ç‚č', - 13150 => '6ç‚č', - 13151 => '7ç‚č', - 13152 => '8ç‚č', - 13153 => '9ç‚č', - 13154 => '10ç‚č', - 13155 => '11ç‚č', - 13156 => '12ç‚č', - 13157 => '13ç‚č', - 13158 => '14ç‚č', - 13159 => '15ç‚č', - 13160 => '16ç‚č', - 13161 => '17ç‚č', - 13162 => '18ç‚č', - 13163 => '19ç‚č', - 13164 => '20ç‚č', - 13165 => '21ç‚č', - 13166 => '22ç‚č', - 13167 => '23ç‚č', - 13168 => '24ç‚č', - 13169 => 'hpa', - 13170 => 'da', - 13171 => 'au', - 13172 => 'bar', - 13173 => 'ov', - 13174 => 'pc', - 13175 => 'dm', - 13176 => 'dm2', - 13177 => 'dm3', - 13178 => 'iu', - 13179 => 'ćčłæˆ', - 13180 => 'æ˜­ć’Œ', - 13181 => 'ć€§æ­Ł', - 13182 => '明æČ»', - 13183 => 'æ ȘćŒäŒšç€Ÿ', - 13184 => 'pa', - 13185 => 'na', - 13186 => 'ÎŒa', - 13187 => 'ma', - 13188 => 'ka', - 13189 => 'kb', - 13190 => 'mb', - 13191 => 'gb', - 13192 => 'cal', - 13193 => 'kcal', - 13194 => 'pf', - 13195 => 'nf', - 13196 => 'ÎŒf', - 13197 => 'ÎŒg', - 13198 => 'mg', - 13199 => 'kg', - 13200 => 'hz', - 13201 => 'khz', - 13202 => 'mhz', - 13203 => 'ghz', - 13204 => 'thz', - 13205 => 'ÎŒl', - 13206 => 'ml', - 13207 => 'dl', - 13208 => 'kl', - 13209 => 'fm', - 13210 => 'nm', - 13211 => 'ÎŒm', - 13212 => 'mm', - 13213 => 'cm', - 13214 => 'km', - 13215 => 'mm2', - 13216 => 'cm2', - 13217 => 'm2', - 13218 => 'km2', - 13219 => 'mm3', - 13220 => 'cm3', - 13221 => 'm3', - 13222 => 'km3', - 13223 => 'm∕s', - 13224 => 'm∕s2', - 13225 => 'pa', - 13226 => 'kpa', - 13227 => 'mpa', - 13228 => 'gpa', - 13229 => 'rad', - 13230 => 'rad∕s', - 13231 => 'rad∕s2', - 13232 => 'ps', - 13233 => 'ns', - 13234 => 'ÎŒs', - 13235 => 'ms', - 13236 => 'pv', - 13237 => 'nv', - 13238 => 'ÎŒv', - 13239 => 'mv', - 13240 => 'kv', - 13241 => 'mv', - 13242 => 'pw', - 13243 => 'nw', - 13244 => 'ÎŒw', - 13245 => 'mw', - 13246 => 'kw', - 13247 => 'mw', - 13248 => 'kω', - 13249 => 'mω', - 13251 => 'bq', - 13252 => 'cc', - 13253 => 'cd', - 13254 => 'c∕kg', - 13256 => 'db', - 13257 => 'gy', - 13258 => 'ha', - 13259 => 'hp', - 13260 => 'in', - 13261 => 'kk', - 13262 => 'km', - 13263 => 'kt', - 13264 => 'lm', - 13265 => 'ln', - 13266 => 'log', - 13267 => 'lx', - 13268 => 'mb', - 13269 => 'mil', - 13270 => 'mol', - 13271 => 'ph', - 13273 => 'ppm', - 13274 => 'pr', - 13275 => 'sr', - 13276 => 'sv', - 13277 => 'wb', - 13278 => 'v∕m', - 13279 => 'a∕m', - 13280 => '1æ—„', - 13281 => '2æ—„', - 13282 => '3æ—„', - 13283 => '4æ—„', - 13284 => '5æ—„', - 13285 => '6æ—„', - 13286 => '7æ—„', - 13287 => '8æ—„', - 13288 => '9æ—„', - 13289 => '10æ—„', - 13290 => '11æ—„', - 13291 => '12æ—„', - 13292 => '13æ—„', - 13293 => '14æ—„', - 13294 => '15æ—„', - 13295 => '16æ—„', - 13296 => '17æ—„', - 13297 => '18æ—„', - 13298 => '19æ—„', - 13299 => '20æ—„', - 13300 => '21æ—„', - 13301 => '22æ—„', - 13302 => '23æ—„', - 13303 => '24æ—„', - 13304 => '25æ—„', - 13305 => '26æ—„', - 13306 => '27æ—„', - 13307 => '28æ—„', - 13308 => '29æ—„', - 13309 => '30æ—„', - 13310 => '31æ—„', - 13311 => 'gal', - 42560 => 'ꙁ', - 42562 => 'ꙃ', - 42564 => 'ꙅ', - 42566 => 'ꙇ', - 42568 => 'ꙉ', - 42570 => 'ꙋ', - 42572 => 'ꙍ', - 42574 => 'ꙏ', - 42576 => 'ꙑ', - 42578 => 'ꙓ', - 42580 => 'ꙕ', - 42582 => 'ꙗ', - 42584 => 'ꙙ', - 42586 => 'ꙛ', - 42588 => 'ꙝ', - 42590 => 'ꙟ', - 42592 => 'ê™Ą', - 42594 => 'ê™Ł', - 42596 => 'Ꙅ', - 42598 => 'ꙧ', - 42600 => 'ꙩ', - 42602 => 'ꙫ', - 42604 => 'ꙭ', - 42624 => 'ꚁ', - 42626 => 'ꚃ', - 42628 => 'ꚅ', - 42630 => 'ꚇ', - 42632 => 'ꚉ', - 42634 => 'ꚋ', - 42636 => 'ꚍ', - 42638 => 'ꚏ', - 42640 => 'ꚑ', - 42642 => 'ꚓ', - 42644 => 'ꚕ', - 42646 => 'ꚗ', - 42648 => 'ꚙ', - 42650 => 'ꚛ', - 42652 => 'ъ', - 42653 => 'ь', - 42786 => 'êœŁ', - 42788 => '꜄', - 42790 => 'ꜧ', - 42792 => 'ꜩ', - 42794 => 'ꜫ', - 42796 => 'ꜭ', - 42798 => 'êœŻ', - 42802 => 'êœł', - 42804 => '꜔', - 42806 => 'ꜷ', - 42808 => 'êœč', - 42810 => 'ꜻ', - 42812 => 'ꜜ', - 42814 => 'êœż', - 42816 => 'ꝁ', - 42818 => 'ꝃ', - 42820 => 'ꝅ', - 42822 => 'ꝇ', - 42824 => 'ꝉ', - 42826 => 'ꝋ', - 42828 => 'ꝍ', - 42830 => 'ꝏ', - 42832 => 'ꝑ', - 42834 => 'ꝓ', - 42836 => 'ꝕ', - 42838 => 'ꝗ', - 42840 => 'ꝙ', - 42842 => 'ꝛ', - 42844 => 'ꝝ', - 42846 => 'ꝟ', - 42848 => 'êĄ', - 42850 => 'êŁ', - 42852 => 'Ꝅ', - 42854 => 'ꝧ', - 42856 => 'ꝩ', - 42858 => 'ꝫ', - 42860 => 'ꝭ', - 42862 => 'êŻ', - 42864 => 'êŻ', - 42873 => 'êș', - 42875 => 'Ꝍ', - 42877 => 'á”č', - 42878 => 'êż', - 42880 => 'ꞁ', - 42882 => 'ꞃ', - 42884 => 'ꞅ', - 42886 => 'ꞇ', - 42891 => 'ꞌ', - 42893 => 'É„', - 42896 => 'ꞑ', - 42898 => 'ꞓ', - 42902 => 'ꞗ', - 42904 => 'ꞙ', - 42906 => 'ꞛ', - 42908 => 'ꞝ', - 42910 => 'ꞟ', - 42912 => 'êžĄ', - 42914 => 'êžŁ', - 42916 => 'Ꞅ', - 42918 => 'ꞧ', - 42920 => 'ꞩ', - 42922 => 'ÉŠ', - 42923 => 'ɜ', - 42924 => 'ÉĄ', - 42925 => 'ÉŹ', - 42926 => 'ÉȘ', - 42928 => 'ʞ', - 42929 => 'ʇ', - 42930 => 'ʝ', - 42931 => 'ꭓ', - 42932 => 'ꞔ', - 42934 => 'ꞷ', - 42936 => 'êžč', - 42938 => 'ꞻ', - 42940 => 'Ꞝ', - 42942 => 'êžż', - 42946 => 'ꟃ', - 42948 => 'ꞔ', - 42949 => 'ʂ', - 42950 => 'ᶎ', - 42951 => 'ꟈ', - 42953 => 'ꟊ', - 42997 => 'ꟶ', - 43000 => 'ħ', - 43001 => 'Ɠ', - 43868 => 'ꜧ', - 43869 => 'êŹ·', - 43870 => 'É«', - 43871 => 'ꭒ', - 43881 => 'ʍ', - 43888 => 'Ꭰ', - 43889 => 'Ꭱ', - 43890 => 'Ꮁ', - 43891 => 'Ꭳ', - 43892 => 'ᎀ', - 43893 => 'ᎄ', - 43894 => 'ᎊ', - 43895 => 'Ꭷ', - 43896 => '᎚', - 43897 => 'Ꭹ', - 43898 => 'áŽȘ', - 43899 => 'Ꭻ', - 43900 => 'Ꭼ', - 43901 => 'Ꭽ', - 43902 => 'Ꮌ', - 43903 => 'Ꭿ', - 43904 => 'Ꮀ', - 43905 => 'Ꮁ', - 43906 => 'áŽČ', - 43907 => 'Ꮃ', - 43908 => 'Ꭾ', - 43909 => '᎔', - 43910 => 'Ꮆ', - 43911 => 'Ꮇ', - 43912 => 'Ꮎ', - 43913 => 'áŽč', - 43914 => 'áŽș', - 43915 => 'Ꮋ', - 43916 => 'ᎌ', - 43917 => '᎜', - 43918 => '᎟', - 43919 => 'Ꮏ', - 43920 => 'Ꮐ', - 43921 => 'Ꮑ', - 43922 => 'Ꮒ', - 43923 => 'Ꮓ', - 43924 => 'Ꮔ', - 43925 => 'Ꮕ', - 43926 => 'Ꮖ', - 43927 => 'Ꮗ', - 43928 => 'Ꮘ', - 43929 => 'Ꮙ', - 43930 => 'Ꮚ', - 43931 => 'Ꮛ', - 43932 => 'Ꮜ', - 43933 => 'Ꮝ', - 43934 => 'Ꮞ', - 43935 => 'Ꮟ', - 43936 => 'Ꮠ', - 43937 => 'Ꮡ', - 43938 => 'Ꮢ', - 43939 => 'Ꮣ', - 43940 => 'Ꮤ', - 43941 => 'Ꮥ', - 43942 => 'Ꮦ', - 43943 => 'Ꮧ', - 43944 => 'Ꮨ', - 43945 => 'Ꮩ', - 43946 => 'Ꮪ', - 43947 => 'Ꮫ', - 43948 => 'Ꮬ', - 43949 => 'Ꮭ', - 43950 => 'Ꮮ', - 43951 => 'Ꮯ', - 43952 => 'Ꮰ', - 43953 => 'Ꮱ', - 43954 => 'Ᏹ', - 43955 => 'Ꮳ', - 43956 => 'Ꮐ', - 43957 => 'Ꮔ', - 43958 => 'Ꮚ', - 43959 => 'Ꮷ', - 43960 => 'Ꮪ', - 43961 => 'Ꮹ', - 43962 => 'áȘ', - 43963 => 'Ꮻ', - 43964 => 'Ꮼ', - 43965 => 'Ꮽ', - 43966 => 'ᏼ', - 43967 => 'Ꮿ', - 63744 => '豈', - 63745 => '曎', - 63746 => '車', - 63747 => 'èłˆ', - 63748 => '滑', - 63749 => 'äžČ', - 63750 => 'ć„', - 63751 => '韜', - 63752 => '韜', - 63753 => 'ć„‘', - 63754 => '金', - 63755 => '文', - 63756 => '愈', - 63757 => '懶', - 63758 => '癩', - 63759 => '矅', - 63760 => 'è˜ż', - 63761 => 'èžș', - 63762 => 'èŁž', - 63763 => '邏', - 63764 => 'æš‚', - 63765 => '掛', - 63766 => '烙', - 63767 => '珞', - 63768 => '萜', - 63769 => 'é…Ș', - 63770 => 'é§±', - 63771 => 'äș‚', - 63772 => 'ć”', - 63773 => 'æŹ„', - 63774 => '爛', - 63775 => '蘭', - 63776 => '龞', - 63777 => '攐', - 63778 => 'æż«', - 63779 => '藍', - 63780 => 'è„€', - 63781 => '拉', - 63782 => '臘', - 63783 => '蠟', - 63784 => '㻊', - 63785 => '朗', - 63786 => 'æ”Ș', - 63787 => '狌', - 63788 => '郎', - 63789 => '䟆', - 63790 => '憷', - 63791 => '拞', - 63792 => '擄', - 63793 => '櫓', - 63794 => '爐', - 63795 => '盧', - 63796 => '老', - 63797 => '蘆', - 63798 => '虜', - 63799 => 'è·Ż', - 63800 => 'éœČ', - 63801 => 'é­Ż', - 63802 => 'é·ș', - 63803 => '籌', - 63804 => '焿', - 63805 => 'ç¶ ', - 63806 => '菉', - 63807 => '錄', - 63808 => 'éčż', - 63809 => '論', - 63810 => '棟', - 63811 => 'ćŒ„', - 63812 => 'ç± ', - 63813 => '聟', - 63814 => '牱', - 63815 => '磊', - 63816 => 'èł‚', - 63817 => '雷', - 63818 => '棘', - 63819 => '汹', - 63820 => 'æš“', - 63821 => '淚', - 63822 => '挏', - 63823 => '环', - 63824 => 'çž·', - 63825 => '陋', - 63826 => '拒', - 63827 => '肋', - 63828 => '懜', - 63829 => '懌', - 63830 => '繜', - 63831 => 'ç¶Ÿ', - 63832 => '菱', - 63833 => 'é™”', - 63834 => 'èź€', - 63835 => '拏', - 63836 => 'æš‚', - 63837 => '諟', - 63838 => 'äžč', - 63839 => '毧', - 63840 => '怒', - 63841 => '率', - 63842 => '異', - 63843 => '挗', - 63844 => '磻', - 63845 => 'äŸż', - 63846 => 'ćŸ©', - 63847 => '䞍', - 63848 => 'æłŒ', - 63849 => '敞', - 63850 => '玹', - 63851 => '揃', - 63852 => '桞', - 63853 => '省', - 63854 => '葉', - 63855 => 'èȘȘ', - 63856 => 'æźș', - 63857 => '蟰', - 63858 => 'æČˆ', - 63859 => '拟', - 63860 => 'è‹„', - 63861 => '掠', - 63862 => 'ç•„', - 63863 => 'äșź', - 63864 => 'ć…©', - 63865 => '應', - 63866 => 'æą', - 63867 => 'çł§', - 63868 => 'è‰Ż', - 63869 => '諒', - 63870 => '量', - 63871 => 'ć‹”', - 63872 => '摂', - 63873 => '愳', - 63874 => '滏', - 63875 => '旅', - 63876 => 'æżŸ', - 63877 => 'ç€Ș', - 63878 => '閭', - 63879 => 'é©Ș', - 63880 => 'éș—', - 63881 => '黎', - 63882 => '抛', - 63883 => '曆', - 63884 => 'æ­·', - 63885 => 'èœą', - 63886 => 'ćčŽ', - 63887 => '憐', - 63888 => '戀', - 63889 => '撚', - 63890 => 'æŒŁ', - 63891 => '煉', - 63892 => '璉', - 63893 => '秊', - 63894 => 'ç·Ž', - 63895 => 'èŻ', - 63896 => '茊', - 63897 => 'è“ź', - 63898 => '連', - 63899 => '鍊', - 63900 => '戗', - 63901 => '抣', - 63902 => 'ć’œ', - 63903 => '烈', - 63904 => 'èŁ‚', - 63905 => 'èȘȘ', - 63906 => '滉', - 63907 => 'ćż”', - 63908 => '捻', - 63909 => 'æźź', - 63910 => 'ç°Ÿ', - 63911 => '獔', - 63912 => '什', - 63913 => 'ć›č', - 63914 => '毧', - 63915 => 'ć¶ș', - 63916 => '怜', - 63917 => 'çŽČ', - 63918 => '瑩', - 63919 => '矚', - 63920 => '聆', - 63921 => '鈎', - 63922 => '零', - 63923 => '靈', - 63924 => '領', - 63925 => '䟋', - 63926 => '犟', - 63927 => '醮', - 63928 => '难', - 63929 => 'æƒĄ', - 63930 => 'äș†', - 63931 => 'ペ', - 63932 => '毟', - 63933 => 'ć°ż', - 63934 => '料', - 63935 => 'æš‚', - 63936 => '燎', - 63937 => '療', - 63938 => '蓌', - 63939 => '遌', - 63940 => '韍', - 63941 => '暈', - 63942 => '队', - 63943 => '抉', - 63944 => '杻', - 63945 => 'æŸł', - 63946 => '攁', - 63947 => 'æșœ', - 63948 => '琉', - 63949 => '留', - 63950 => '祫', - 63951 => '玐', - 63952 => '類', - 63953 => '慭', - 63954 => 'æˆź', - 63955 => '陾', - 63956 => '怫', - 63957 => '殙', - 63958 => 'æ·Ș', - 63959 => 'èŒȘ', - 63960 => 'ćŸ‹', - 63961 => '慄', - 63962 => '栗', - 63963 => '率', - 63964 => '隆', - 63965 => '戩', - 63966 => '搏', - 63967 => '汄', - 63968 => '易', - 63969 => '李', - 63970 => 'æąš', - 63971 => 'æł„', - 63972 => '理', - 63973 => '痱', - 63974 => 'çœč', - 63975 => 'èŁ', - 63976 => 'èŁĄ', - 63977 => '里', - 63978 => '雱', - 63979 => '挿', - 63980 => 'æșș', - 63981 => '搝', - 63982 => '燐', - 63983 => '璘', - 63984 => 'è—ș', - 63985 => '隣', - 63986 => '鱗', - 63987 => 'éșŸ', - 63988 => '林', - 63989 => '淋', - 63990 => '臚', - 63991 => '立', - 63992 => '珠', - 63993 => 'çȒ', - 63994 => '狀', - 63995 => '炙', - 63996 => '識', - 63997 => '什', - 63998 => '茶', - 63999 => 'ćˆș', - 64000 => '戇', - 64001 => 'ćșŠ', - 64002 => '拓', - 64003 => '糖', - 64004 => '漅', - 64005 => '掞', - 64006 => '暎', - 64007 => '茻', - 64008 => 'èĄŒ', - 64009 => '降', - 64010 => '芋', - 64011 => '滓', - 64012 => '慀', - 64013 => '旀', - 64016 => '桚', - 64018 => '晎', - 64021 => '懞', - 64022 => 'çŒȘ', - 64023 => '益', - 64024 => '瀌', - 64025 => '焞', - 64026 => 'ç„„', - 64027 => '犏', - 64028 => '靖', - 64029 => 'çČŸ', - 64030 => '矜', - 64032 => '蘒', - 64034 => '諞', - 64037 => '逾', - 64038 => '郜', - 64042 => '飯', - 64043 => 'éŁŒ', - 64044 => '通', - 64045 => 'é¶Ž', - 64046 => '郞', - 64047 => '隷', - 64048 => 'äŸź', - 64049 => '惧', - 64050 => '慍', - 64051 => '拉', - 64052 => 'ć‹€', - 64053 => '捑', - 64054 => '斝', - 64055 => '昆', - 64056 => '晹', - 64057 => '桀', - 64058 => 'ćąš', - 64059 => 'ć±€', - 64060 => '江', - 64061 => '悔', - 64062 => 'æ…š', - 64063 => '憎', - 64064 => 'æ‡Č', - 64065 => '敏', - 64066 => 'æ—ą', - 64067 => '暑', - 64068 => 'æą…', - 64069 => 'æ”·', - 64070 => 'æžš', - 64071 => 'æŒą', - 64072 => '煼', - 64073 => '爫', - 64074 => '琹', - 64075 => '籑', - 64076 => '瀟', - 64077 => '焉', - 64078 => '焈', - 64079 => '焐', - 64080 => 'ç„–', - 64081 => '焝', - 64082 => '犍', - 64083 => '犎', - 64084 => '穀', - 64085 => 'çȘ', - 64086 => '節', - 64087 => 'ç·Ž', - 64088 => '羉', - 64089 => 'çč', - 64090 => 'çœČ', - 64091 => '者', - 64092 => '臭', - 64093 => 'è‰č', - 64094 => 'è‰č', - 64095 => '著', - 64096 => '耐', - 64097 => '芖', - 64098 => 'èŹ', - 64099 => 'èŹč', - 64100 => 'èł“', - 64101 => '莈', - 64102 => '蟶', - 64103 => '逾', - 64104 => '難', - 64105 => '響', - 64106 => 'é »', - 64107 => '恔', - 64108 => 'đ€‹ź', - 64109 => '舘', - 64112 => '䞊', - 64113 => '憔', - 64114 => '慹', - 64115 => '䟀', - 64116 => '慅', - 64117 => '憀', - 64118 => '拇', - 64119 => 'ć‹ș', - 64120 => '斝', - 64121 => '敕', - 64122 => '料', - 64123 => '旱', - 64124 => '桚', - 64125 => 'ćął', - 64126 => 'ć„„', - 64127 => 'ć„”', - 64128 => '橹', - 64129 => '揚', - 64130 => 'ć»’', - 64131 => 'ć»™', - 64132 => 'ćœ©', - 64133 => 'ćŸ­', - 64134 => '惘', - 64135 => '慎', - 64136 => '愈', - 64137 => '憎', - 64138 => '慠', - 64139 => 'æ‡Č', - 64140 => '戎', - 64141 => '揄', - 64142 => '搜', - 64143 => '摒', - 64144 => '敖', - 64145 => '晎', - 64146 => '朗', - 64147 => '望', - 64148 => '杖', - 64149 => 'æ­č', - 64150 => 'æźș', - 64151 => '攁', - 64152 => '滛', - 64153 => '滋', - 64154 => 'æŒą', - 64155 => '瀞', - 64156 => '煼', - 64157 => '瞧', - 64158 => '爔', - 64159 => '犯', - 64160 => 'çŒȘ', - 64161 => '瑱', - 64162 => '甆', - 64163 => '画', - 64164 => '瘝', - 64165 => '瘟', - 64166 => '益', - 64167 => '盛', - 64168 => '目', - 64169 => '睊', - 64170 => '着', - 64171 => '磌', - 64172 => 'çȘ±', - 64173 => '節', - 64174 => 'ç±»', - 64175 => 'ç”›', - 64176 => 'ç·Ž', - 64177 => '猟', - 64178 => '者', - 64179 => '荒', - 64180 => 'èŻ', - 64181 => 'èč', - 64182 => '脁', - 64183 => '芆', - 64184 => '芖', - 64185 => 'èȘż', - 64186 => '諞', - 64187 => '請', - 64188 => 'èŹ', - 64189 => '諟', - 64190 => 'è«­', - 64191 => 'èŹč', - 64192 => 'èźŠ', - 64193 => '莈', - 64194 => '茞', - 64195 => 'éČ', - 64196 => '醙', - 64197 => '鉶', - 64198 => '陌', - 64199 => '難', - 64200 => '靖', - 64201 => '韛', - 64202 => '響', - 64203 => '頋', - 64204 => 'é »', - 64205 => '鬒', - 64206 => '韜', - 64207 => '𱡊', - 64208 => '𱡄', - 64209 => '𣏕', - 64210 => '㼝', - 64211 => '䀘', - 64212 => 'ä€č', - 64213 => 'đ„‰‰', - 64214 => 'đ„ł', - 64215 => '𧻓', - 64216 => '霃', - 64217 => '韎', - 64256 => 'ff', - 64257 => 'fi', - 64258 => 'fl', - 64259 => 'ffi', - 64260 => 'ffl', - 64261 => 'st', - 64262 => 'st', - 64275 => 'ŐŽŐ¶', - 64276 => 'ŐŽŐ„', - 64277 => 'ŐŽŐ«', - 64278 => 'ŐŸŐ¶', - 64279 => 'ŐŽŐ­', - 64285 => 'Ś™ÖŽ', - 64287 => 'ŚČÖ·', - 64288 => 'Śą', - 64289 => 'ڐ', - 64290 => 'Ś“', - 64291 => 'Ś”', - 64292 => 'Ś›', - 64293 => 'ڜ', - 64294 => 'Ś', - 64295 => 'Śš', - 64296 => 'ŚȘ', - 64298 => 'کځ', - 64299 => 'کڂ', - 64300 => 'Ś©ÖŒŚ', - 64301 => 'Ś©ÖŒŚ‚', - 64302 => 'ڐַ', - 64303 => 'ŚÖž', - 64304 => 'ŚÖŒ', - 64305 => 'Ś‘ÖŒ', - 64306 => 'Ś’ÖŒ', - 64307 => 'Ś“ÖŒ', - 64308 => 'Ś”ÖŒ', - 64309 => 'Ś•ÖŒ', - 64310 => 'Ś–ÖŒ', - 64312 => 'Ś˜ÖŒ', - 64313 => 'Ś™ÖŒ', - 64314 => 'ŚšÖŒ', - 64315 => 'Ś›ÖŒ', - 64316 => 'ŚœÖŒ', - 64318 => 'ŚžÖŒ', - 64320 => 'Ś ÖŒ', - 64321 => 'ŚĄÖŒ', - 64323 => 'ŚŁÖŒ', - 64324 => 'Ś€ÖŒ', - 64326 => 'ŚŠÖŒ', - 64327 => 'Ś§ÖŒ', - 64328 => 'ŚšÖŒ', - 64329 => 'Ś©ÖŒ', - 64330 => 'ŚȘÖŒ', - 64331 => 'Ś•Öč', - 64332 => 'Ś‘Öż', - 64333 => 'Ś›Öż', - 64334 => 'Ś€Öż', - 64335 => 'ڐڜ', - 64336 => 'Ù±', - 64337 => 'Ù±', - 64338 => 'Ù»', - 64339 => 'Ù»', - 64340 => 'Ù»', - 64341 => 'Ù»', - 64342 => 'ÙŸ', - 64343 => 'ÙŸ', - 64344 => 'ÙŸ', - 64345 => 'ÙŸ', - 64346 => 'ڀ', - 64347 => 'ڀ', - 64348 => 'ڀ', - 64349 => 'ڀ', - 64350 => 'Ùș', - 64351 => 'Ùș', - 64352 => 'Ùș', - 64353 => 'Ùș', - 64354 => 'Ùż', - 64355 => 'Ùż', - 64356 => 'Ùż', - 64357 => 'Ùż', - 64358 => 'Ùč', - 64359 => 'Ùč', - 64360 => 'Ùč', - 64361 => 'Ùč', - 64362 => 'Ú€', - 64363 => 'Ú€', - 64364 => 'Ú€', - 64365 => 'Ú€', - 64366 => 'ÚŠ', - 64367 => 'ÚŠ', - 64368 => 'ÚŠ', - 64369 => 'ÚŠ', - 64370 => 'ڄ', - 64371 => 'ڄ', - 64372 => 'ڄ', - 64373 => 'ڄ', - 64374 => 'ڃ', - 64375 => 'ڃ', - 64376 => 'ڃ', - 64377 => 'ڃ', - 64378 => 'چ', - 64379 => 'چ', - 64380 => 'چ', - 64381 => 'چ', - 64382 => 'ڇ', - 64383 => 'ڇ', - 64384 => 'ڇ', - 64385 => 'ڇ', - 64386 => 'ڍ', - 64387 => 'ڍ', - 64388 => 'ڌ', - 64389 => 'ڌ', - 64390 => 'ڎ', - 64391 => 'ڎ', - 64392 => 'ڈ', - 64393 => 'ڈ', - 64394 => 'ژ', - 64395 => 'ژ', - 64396 => 'ڑ', - 64397 => 'ڑ', - 64398 => 'Ú©', - 64399 => 'Ú©', - 64400 => 'Ú©', - 64401 => 'Ú©', - 64402 => 'ÚŻ', - 64403 => 'ÚŻ', - 64404 => 'ÚŻ', - 64405 => 'ÚŻ', - 64406 => 'Úł', - 64407 => 'Úł', - 64408 => 'Úł', - 64409 => 'Úł', - 64410 => 'Ú±', - 64411 => 'Ú±', - 64412 => 'Ú±', - 64413 => 'Ú±', - 64414 => 'Úș', - 64415 => 'Úș', - 64416 => 'Ú»', - 64417 => 'Ú»', - 64418 => 'Ú»', - 64419 => 'Ú»', - 64420 => 'ۀ', - 64421 => 'ۀ', - 64422 => 'ہ', - 64423 => 'ہ', - 64424 => 'ہ', - 64425 => 'ہ', - 64426 => 'ÚŸ', - 64427 => 'ÚŸ', - 64428 => 'ÚŸ', - 64429 => 'ÚŸ', - 64430 => 'ے', - 64431 => 'ے', - 64432 => 'ۓ', - 64433 => 'ۓ', - 64467 => 'Ú­', - 64468 => 'Ú­', - 64469 => 'Ú­', - 64470 => 'Ú­', - 64471 => 'ۇ', - 64472 => 'ۇ', - 64473 => 'ۆ', - 64474 => 'ۆ', - 64475 => 'ۈ', - 64476 => 'ۈ', - 64477 => 'Û‡ÙŽ', - 64478 => 'ۋ', - 64479 => 'ۋ', - 64480 => 'ۅ', - 64481 => 'ۅ', - 64482 => 'ۉ', - 64483 => 'ۉ', - 64484 => 'ې', - 64485 => 'ې', - 64486 => 'ې', - 64487 => 'ې', - 64488 => 'ى', - 64489 => 'ى', - 64490 => 'ۊۧ', - 64491 => 'ۊۧ', - 64492 => 'ŰŠÛ•', - 64493 => 'ŰŠÛ•', - 64494 => 'ŰŠÙˆ', - 64495 => 'ŰŠÙˆ', - 64496 => 'ŰŠÛ‡', - 64497 => 'ŰŠÛ‡', - 64498 => 'ŰŠÛ†', - 64499 => 'ŰŠÛ†', - 64500 => 'ŰŠÛˆ', - 64501 => 'ŰŠÛˆ', - 64502 => 'ŰŠÛ', - 64503 => 'ŰŠÛ', - 64504 => 'ŰŠÛ', - 64505 => 'ŰŠÙ‰', - 64506 => 'ŰŠÙ‰', - 64507 => 'ŰŠÙ‰', - 64508 => 'ی', - 64509 => 'ی', - 64510 => 'ی', - 64511 => 'ی', - 64512 => 'ŰŠŰŹ', - 64513 => 'ŰŠŰ­', - 64514 => 'ŰŠÙ…', - 64515 => 'ŰŠÙ‰', - 64516 => 'ŰŠÙŠ', - 64517 => 'ۚۏ', - 64518 => 'ۭۚ', - 64519 => 'ۚ۟', - 64520 => 'ŰšÙ…', - 64521 => 'ŰšÙ‰', - 64522 => 'ŰšÙŠ', - 64523 => 'ŰȘŰŹ', - 64524 => 'ŰȘŰ­', - 64525 => 'ŰȘŰź', - 64526 => 'ŰȘم', - 64527 => 'ŰȘى', - 64528 => 'ŰȘي', - 64529 => '۫ۏ', - 64530 => 'Ű«Ù…', - 64531 => 'Ű«Ù‰', - 64532 => 'Ű«ÙŠ', - 64533 => 'ŰŹŰ­', - 64534 => 'ŰŹÙ…', - 64535 => 'Ű­ŰŹ', - 64536 => 'Ű­Ù…', - 64537 => '۟ۏ', - 64538 => 'ۭ۟', - 64539 => 'ŰźÙ…', - 64540 => '۳ۏ', - 64541 => '۳ۭ', - 64542 => '۳۟', - 64543 => 'ŰłÙ…', - 64544 => '۔ۭ', - 64545 => 'Ű”Ù…', - 64546 => '۶ۏ', - 64547 => '۶ۭ', - 64548 => '۶۟', - 64549 => 'Ű¶Ù…', - 64550 => 'Ű·Ű­', - 64551 => 'Ű·Ù…', - 64552 => 'ŰžÙ…', - 64553 => 'ŰčŰŹ', - 64554 => 'Űčم', - 64555 => 'ŰșŰŹ', - 64556 => 'Űșم', - 64557 => 'ÙŰŹ', - 64558 => 'ÙŰ­', - 64559 => 'ÙŰź', - 64560 => 'فم', - 64561 => 'فى', - 64562 => 'في', - 64563 => 'Ù‚Ű­', - 64564 => 'قم', - 64565 => 'قى', - 64566 => 'قي', - 64567 => 'ÙƒŰ§', - 64568 => 'ÙƒŰŹ', - 64569 => 'ÙƒŰ­', - 64570 => 'ÙƒŰź', - 64571 => 'كل', - 64572 => 'كم', - 64573 => 'كى', - 64574 => 'كي', - 64575 => 'Ù„ŰŹ', - 64576 => 'Ù„Ű­', - 64577 => 'Ù„Űź', - 64578 => 'لم', - 64579 => 'لى', - 64580 => 'لي', - 64581 => 'Ù…ŰŹ', - 64582 => 'Ù…Ű­', - 64583 => 'Ù…Űź', - 64584 => 'مم', - 64585 => 'مى', - 64586 => 'مي', - 64587 => 'Ù†ŰŹ', - 64588 => 'Ù†Ű­', - 64589 => 'Ù†Űź', - 64590 => 'نم', - 64591 => 'نى', - 64592 => 'ني', - 64593 => 'Ù‡ŰŹ', - 64594 => 'هم', - 64595 => 'هى', - 64596 => 'هي', - 64597 => 'ÙŠŰŹ', - 64598 => 'ÙŠŰ­', - 64599 => 'ÙŠŰź', - 64600 => 'يم', - 64601 => 'يى', - 64602 => 'يي', - 64603 => 'Ű°Ù°', - 64604 => 'Ű±Ù°', - 64605 => 'ىٰ', - 64612 => 'ۊ۱', - 64613 => 'ŰŠŰČ', - 64614 => 'ŰŠÙ…', - 64615 => 'ŰŠÙ†', - 64616 => 'ŰŠÙ‰', - 64617 => 'ŰŠÙŠ', - 64618 => 'ۚ۱', - 64619 => 'ŰšŰČ', - 64620 => 'ŰšÙ…', - 64621 => 'ŰšÙ†', - 64622 => 'ŰšÙ‰', - 64623 => 'ŰšÙŠ', - 64624 => 'ŰȘ۱', - 64625 => 'ŰȘŰČ', - 64626 => 'ŰȘم', - 64627 => 'ŰȘن', - 64628 => 'ŰȘى', - 64629 => 'ŰȘي', - 64630 => '۫۱', - 64631 => 'Ű«ŰČ', - 64632 => 'Ű«Ù…', - 64633 => 'Ű«Ù†', - 64634 => 'Ű«Ù‰', - 64635 => 'Ű«ÙŠ', - 64636 => 'فى', - 64637 => 'في', - 64638 => 'قى', - 64639 => 'قي', - 64640 => 'ÙƒŰ§', - 64641 => 'كل', - 64642 => 'كم', - 64643 => 'كى', - 64644 => 'كي', - 64645 => 'لم', - 64646 => 'لى', - 64647 => 'لي', - 64648 => 'Ù…Ű§', - 64649 => 'مم', - 64650 => 'Ù†Ű±', - 64651 => 'نŰČ', - 64652 => 'نم', - 64653 => 'نن', - 64654 => 'نى', - 64655 => 'ني', - 64656 => 'ىٰ', - 64657 => 'ÙŠŰ±', - 64658 => 'يŰČ', - 64659 => 'يم', - 64660 => 'ين', - 64661 => 'يى', - 64662 => 'يي', - 64663 => 'ŰŠŰŹ', - 64664 => 'ŰŠŰ­', - 64665 => 'ŰŠŰź', - 64666 => 'ŰŠÙ…', - 64667 => 'ŰŠÙ‡', - 64668 => 'ۚۏ', - 64669 => 'ۭۚ', - 64670 => 'ۚ۟', - 64671 => 'ŰšÙ…', - 64672 => 'ŰšÙ‡', - 64673 => 'ŰȘŰŹ', - 64674 => 'ŰȘŰ­', - 64675 => 'ŰȘŰź', - 64676 => 'ŰȘم', - 64677 => 'ŰȘه', - 64678 => 'Ű«Ù…', - 64679 => 'ŰŹŰ­', - 64680 => 'ŰŹÙ…', - 64681 => 'Ű­ŰŹ', - 64682 => 'Ű­Ù…', - 64683 => '۟ۏ', - 64684 => 'ŰźÙ…', - 64685 => '۳ۏ', - 64686 => '۳ۭ', - 64687 => '۳۟', - 64688 => 'ŰłÙ…', - 64689 => '۔ۭ', - 64690 => '۔۟', - 64691 => 'Ű”Ù…', - 64692 => '۶ۏ', - 64693 => '۶ۭ', - 64694 => '۶۟', - 64695 => 'Ű¶Ù…', - 64696 => 'Ű·Ű­', - 64697 => 'ŰžÙ…', - 64698 => 'ŰčŰŹ', - 64699 => 'Űčم', - 64700 => 'ŰșŰŹ', - 64701 => 'Űșم', - 64702 => 'ÙŰŹ', - 64703 => 'ÙŰ­', - 64704 => 'ÙŰź', - 64705 => 'فم', - 64706 => 'Ù‚Ű­', - 64707 => 'قم', - 64708 => 'ÙƒŰŹ', - 64709 => 'ÙƒŰ­', - 64710 => 'ÙƒŰź', - 64711 => 'كل', - 64712 => 'كم', - 64713 => 'Ù„ŰŹ', - 64714 => 'Ù„Ű­', - 64715 => 'Ù„Űź', - 64716 => 'لم', - 64717 => 'له', - 64718 => 'Ù…ŰŹ', - 64719 => 'Ù…Ű­', - 64720 => 'Ù…Űź', - 64721 => 'مم', - 64722 => 'Ù†ŰŹ', - 64723 => 'Ù†Ű­', - 64724 => 'Ù†Űź', - 64725 => 'نم', - 64726 => 'نه', - 64727 => 'Ù‡ŰŹ', - 64728 => 'هم', - 64729 => 'هٰ', - 64730 => 'ÙŠŰŹ', - 64731 => 'ÙŠŰ­', - 64732 => 'ÙŠŰź', - 64733 => 'يم', - 64734 => 'يه', - 64735 => 'ŰŠÙ…', - 64736 => 'ŰŠÙ‡', - 64737 => 'ŰšÙ…', - 64738 => 'ŰšÙ‡', - 64739 => 'ŰȘم', - 64740 => 'ŰȘه', - 64741 => 'Ű«Ù…', - 64742 => 'Ű«Ù‡', - 64743 => 'ŰłÙ…', - 64744 => 'ŰłÙ‡', - 64745 => 'ŰŽÙ…', - 64746 => 'ŰŽÙ‡', - 64747 => 'كل', - 64748 => 'كم', - 64749 => 'لم', - 64750 => 'نم', - 64751 => 'نه', - 64752 => 'يم', - 64753 => 'يه', - 64754 => 'ـَّ', - 64755 => 'ـُّ', - 64756 => 'ـِّ', - 64757 => 'Ű·Ù‰', - 64758 => 'Ű·ÙŠ', - 64759 => 'Űčى', - 64760 => 'Űčي', - 64761 => 'Űșى', - 64762 => 'Űșي', - 64763 => 'ŰłÙ‰', - 64764 => 'ŰłÙŠ', - 64765 => 'ŰŽÙ‰', - 64766 => 'ŰŽÙŠ', - 64767 => 'Ű­Ù‰', - 64768 => 'Ű­ÙŠ', - 64769 => 'ŰŹÙ‰', - 64770 => 'ŰŹÙŠ', - 64771 => 'ŰźÙ‰', - 64772 => 'ŰźÙŠ', - 64773 => 'Ű”Ù‰', - 64774 => 'Ű”ÙŠ', - 64775 => 'Ű¶Ù‰', - 64776 => 'Ű¶ÙŠ', - 64777 => 'ŰŽŰŹ', - 64778 => 'ŰŽŰ­', - 64779 => 'ŰŽŰź', - 64780 => 'ŰŽÙ…', - 64781 => 'ێ۱', - 64782 => '۳۱', - 64783 => '۔۱', - 64784 => '۶۱', - 64785 => 'Ű·Ù‰', - 64786 => 'Ű·ÙŠ', - 64787 => 'Űčى', - 64788 => 'Űčي', - 64789 => 'Űșى', - 64790 => 'Űșي', - 64791 => 'ŰłÙ‰', - 64792 => 'ŰłÙŠ', - 64793 => 'ŰŽÙ‰', - 64794 => 'ŰŽÙŠ', - 64795 => 'Ű­Ù‰', - 64796 => 'Ű­ÙŠ', - 64797 => 'ŰŹÙ‰', - 64798 => 'ŰŹÙŠ', - 64799 => 'ŰźÙ‰', - 64800 => 'ŰźÙŠ', - 64801 => 'Ű”Ù‰', - 64802 => 'Ű”ÙŠ', - 64803 => 'Ű¶Ù‰', - 64804 => 'Ű¶ÙŠ', - 64805 => 'ŰŽŰŹ', - 64806 => 'ŰŽŰ­', - 64807 => 'ŰŽŰź', - 64808 => 'ŰŽÙ…', - 64809 => 'ێ۱', - 64810 => '۳۱', - 64811 => '۔۱', - 64812 => '۶۱', - 64813 => 'ŰŽŰŹ', - 64814 => 'ŰŽŰ­', - 64815 => 'ŰŽŰź', - 64816 => 'ŰŽÙ…', - 64817 => 'ŰłÙ‡', - 64818 => 'ŰŽÙ‡', - 64819 => 'Ű·Ù…', - 64820 => '۳ۏ', - 64821 => '۳ۭ', - 64822 => '۳۟', - 64823 => 'ŰŽŰŹ', - 64824 => 'ŰŽŰ­', - 64825 => 'ŰŽŰź', - 64826 => 'Ű·Ù…', - 64827 => 'ŰžÙ…', - 64828 => 'Ű§Ù‹', - 64829 => 'Ű§Ù‹', - 64848 => 'ŰȘŰŹÙ…', - 64849 => 'ŰȘŰ­ŰŹ', - 64850 => 'ŰȘŰ­ŰŹ', - 64851 => 'ŰȘŰ­Ù…', - 64852 => 'ŰȘŰźÙ…', - 64853 => 'ŰȘÙ…ŰŹ', - 64854 => 'ŰȘÙ…Ű­', - 64855 => 'ŰȘÙ…Űź', - 64856 => 'ŰŹÙ…Ű­', - 64857 => 'ŰŹÙ…Ű­', - 64858 => 'Ű­Ù…ÙŠ', - 64859 => 'Ű­Ù…Ù‰', - 64860 => '۳ۭۏ', - 64861 => '۳ۏۭ', - 64862 => 'ŰłŰŹÙ‰', - 64863 => 'ŰłÙ…Ű­', - 64864 => 'ŰłÙ…Ű­', - 64865 => 'ŰłÙ…ŰŹ', - 64866 => 'ŰłÙ…Ù…', - 64867 => 'ŰłÙ…Ù…', - 64868 => '۔ۭۭ', - 64869 => '۔ۭۭ', - 64870 => 'Ű”Ù…Ù…', - 64871 => 'ŰŽŰ­Ù…', - 64872 => 'ŰŽŰ­Ù…', - 64873 => 'ŰŽŰŹÙŠ', - 64874 => 'ŰŽÙ…Űź', - 64875 => 'ŰŽÙ…Űź', - 64876 => 'ŰŽÙ…Ù…', - 64877 => 'ŰŽÙ…Ù…', - 64878 => 'Ű¶Ű­Ù‰', - 64879 => 'Ű¶ŰźÙ…', - 64880 => 'Ű¶ŰźÙ…', - 64881 => 'Ű·Ù…Ű­', - 64882 => 'Ű·Ù…Ű­', - 64883 => 'Ű·Ù…Ù…', - 64884 => 'Ű·Ù…ÙŠ', - 64885 => 'ŰčŰŹÙ…', - 64886 => 'Űčمم', - 64887 => 'Űčمم', - 64888 => 'Űčمى', - 64889 => 'Űșمم', - 64890 => 'Űșمي', - 64891 => 'Űșمى', - 64892 => 'ÙŰźÙ…', - 64893 => 'ÙŰźÙ…', - 64894 => 'Ù‚Ù…Ű­', - 64895 => 'قمم', - 64896 => 'Ù„Ű­Ù…', - 64897 => 'Ù„Ű­ÙŠ', - 64898 => 'Ù„Ű­Ù‰', - 64899 => 'Ù„ŰŹŰŹ', - 64900 => 'Ù„ŰŹŰŹ', - 64901 => 'Ù„ŰźÙ…', - 64902 => 'Ù„ŰźÙ…', - 64903 => 'Ù„Ù…Ű­', - 64904 => 'Ù„Ù…Ű­', - 64905 => 'Ù…Ű­ŰŹ', - 64906 => 'Ù…Ű­Ù…', - 64907 => 'Ù…Ű­ÙŠ', - 64908 => 'Ù…ŰŹŰ­', - 64909 => 'Ù…ŰŹÙ…', - 64910 => 'Ù…ŰźŰŹ', - 64911 => 'Ù…ŰźÙ…', - 64914 => 'Ù…ŰŹŰź', - 64915 => 'Ù‡Ù…ŰŹ', - 64916 => 'همم', - 64917 => 'Ù†Ű­Ù…', - 64918 => 'Ù†Ű­Ù‰', - 64919 => 'Ù†ŰŹÙ…', - 64920 => 'Ù†ŰŹÙ…', - 64921 => 'Ù†ŰŹÙ‰', - 64922 => 'نمي', - 64923 => 'نمى', - 64924 => 'يمم', - 64925 => 'يمم', - 64926 => 'ŰšŰźÙŠ', - 64927 => 'ŰȘŰŹÙŠ', - 64928 => 'ŰȘŰŹÙ‰', - 64929 => 'ŰȘŰźÙŠ', - 64930 => 'ŰȘŰźÙ‰', - 64931 => 'ŰȘمي', - 64932 => 'ŰȘمى', - 64933 => 'ŰŹÙ…ÙŠ', - 64934 => 'ŰŹŰ­Ù‰', - 64935 => 'ŰŹÙ…Ù‰', - 64936 => 'ŰłŰźÙ‰', - 64937 => 'Ű”Ű­ÙŠ', - 64938 => 'ŰŽŰ­ÙŠ', - 64939 => 'Ű¶Ű­ÙŠ', - 64940 => 'Ù„ŰŹÙŠ', - 64941 => 'لمي', - 64942 => 'ÙŠŰ­ÙŠ', - 64943 => 'ÙŠŰŹÙŠ', - 64944 => 'يمي', - 64945 => 'ممي', - 64946 => 'قمي', - 64947 => 'Ù†Ű­ÙŠ', - 64948 => 'Ù‚Ù…Ű­', - 64949 => 'Ù„Ű­Ù…', - 64950 => 'Űčمي', - 64951 => 'كمي', - 64952 => 'Ù†ŰŹŰ­', - 64953 => 'Ù…ŰźÙŠ', - 64954 => 'Ù„ŰŹÙ…', - 64955 => 'كمم', - 64956 => 'Ù„ŰŹÙ…', - 64957 => 'Ù†ŰŹŰ­', - 64958 => 'ŰŹŰ­ÙŠ', - 64959 => 'Ű­ŰŹÙŠ', - 64960 => 'Ù…ŰŹÙŠ', - 64961 => 'فمي', - 64962 => 'ŰšŰ­ÙŠ', - 64963 => 'كمم', - 64964 => 'ŰčŰŹÙ…', - 64965 => 'Ű”Ù…Ù…', - 64966 => 'ŰłŰźÙŠ', - 64967 => 'Ù†ŰŹÙŠ', - 65008 => 'Ű”Ù„Û’', - 65009 => 'قلے', - 65010 => 'Ű§Ù„Ù„Ù‡', - 65011 => 'Ű§ÙƒŰšŰ±', - 65012 => 'Ù…Ű­Ù…ŰŻ', - 65013 => 'Ű”Ù„Űčم', - 65014 => 'Ű±ŰłÙˆÙ„', - 65015 => 'Űčليه', - 65016 => 'ÙˆŰłÙ„Ù…', - 65017 => 'Ű”Ù„Ù‰', - 65020 => 'Ű±ÛŒŰ§Ù„', - 65041 => '、', - 65047 => '〖', - 65048 => '〗', - 65073 => '—', - 65074 => '–', - 65081 => '〔', - 65082 => '〕', - 65083 => '【', - 65084 => '】', - 65085 => '《', - 65086 => '》', - 65087 => '〈', - 65088 => '〉', - 65089 => '「', - 65090 => '」', - 65091 => '『', - 65092 => '』', - 65105 => '、', - 65112 => '—', - 65117 => '〔', - 65118 => '〕', - 65123 => '-', - 65137 => 'ـً', - 65143 => 'ـَ', - 65145 => 'ـُ', - 65147 => 'ـِ', - 65149 => 'ـّ', - 65151 => 'ـْ', - 65152 => 'ŰĄ', - 65153 => 'Űą', - 65154 => 'Űą', - 65155 => 'ŰŁ', - 65156 => 'ŰŁ', - 65157 => 'Ű€', - 65158 => 'Ű€', - 65159 => 'Ű„', - 65160 => 'Ű„', - 65161 => 'ŰŠ', - 65162 => 'ŰŠ', - 65163 => 'ŰŠ', - 65164 => 'ŰŠ', - 65165 => 'ۧ', - 65166 => 'ۧ', - 65167 => 'Űš', - 65168 => 'Űš', - 65169 => 'Űš', - 65170 => 'Űš', - 65171 => 'Ű©', - 65172 => 'Ű©', - 65173 => 'ŰȘ', - 65174 => 'ŰȘ', - 65175 => 'ŰȘ', - 65176 => 'ŰȘ', - 65177 => 'Ű«', - 65178 => 'Ű«', - 65179 => 'Ű«', - 65180 => 'Ű«', - 65181 => 'ŰŹ', - 65182 => 'ŰŹ', - 65183 => 'ŰŹ', - 65184 => 'ŰŹ', - 65185 => 'Ű­', - 65186 => 'Ű­', - 65187 => 'Ű­', - 65188 => 'Ű­', - 65189 => 'Űź', - 65190 => 'Űź', - 65191 => 'Űź', - 65192 => 'Űź', - 65193 => 'ŰŻ', - 65194 => 'ŰŻ', - 65195 => '۰', - 65196 => '۰', - 65197 => '۱', - 65198 => '۱', - 65199 => 'ŰČ', - 65200 => 'ŰČ', - 65201 => 'Űł', - 65202 => 'Űł', - 65203 => 'Űł', - 65204 => 'Űł', - 65205 => 'ŰŽ', - 65206 => 'ŰŽ', - 65207 => 'ŰŽ', - 65208 => 'ŰŽ', - 65209 => 'Ű”', - 65210 => 'Ű”', - 65211 => 'Ű”', - 65212 => 'Ű”', - 65213 => '۶', - 65214 => '۶', - 65215 => '۶', - 65216 => '۶', - 65217 => 'Ű·', - 65218 => 'Ű·', - 65219 => 'Ű·', - 65220 => 'Ű·', - 65221 => 'Űž', - 65222 => 'Űž', - 65223 => 'Űž', - 65224 => 'Űž', - 65225 => 'Űč', - 65226 => 'Űč', - 65227 => 'Űč', - 65228 => 'Űč', - 65229 => 'Űș', - 65230 => 'Űș', - 65231 => 'Űș', - 65232 => 'Űș', - 65233 => 'ف', - 65234 => 'ف', - 65235 => 'ف', - 65236 => 'ف', - 65237 => 'ق', - 65238 => 'ق', - 65239 => 'ق', - 65240 => 'ق', - 65241 => 'ك', - 65242 => 'ك', - 65243 => 'ك', - 65244 => 'ك', - 65245 => 'ل', - 65246 => 'ل', - 65247 => 'ل', - 65248 => 'ل', - 65249 => 'م', - 65250 => 'م', - 65251 => 'م', - 65252 => 'م', - 65253 => 'ن', - 65254 => 'ن', - 65255 => 'ن', - 65256 => 'ن', - 65257 => 'ه', - 65258 => 'ه', - 65259 => 'ه', - 65260 => 'ه', - 65261 => 'و', - 65262 => 'و', - 65263 => 'ى', - 65264 => 'ى', - 65265 => 'ي', - 65266 => 'ي', - 65267 => 'ي', - 65268 => 'ي', - 65269 => 'Ù„Űą', - 65270 => 'Ù„Űą', - 65271 => 'Ù„ŰŁ', - 65272 => 'Ù„ŰŁ', - 65273 => 'Ù„Ű„', - 65274 => 'Ù„Ű„', - 65275 => 'Ù„Ű§', - 65276 => 'Ù„Ű§', - 65293 => '-', - 65294 => '.', - 65296 => '0', - 65297 => '1', - 65298 => '2', - 65299 => '3', - 65300 => '4', - 65301 => '5', - 65302 => '6', - 65303 => '7', - 65304 => '8', - 65305 => '9', - 65313 => 'a', - 65314 => 'b', - 65315 => 'c', - 65316 => 'd', - 65317 => 'e', - 65318 => 'f', - 65319 => 'g', - 65320 => 'h', - 65321 => 'i', - 65322 => 'j', - 65323 => 'k', - 65324 => 'l', - 65325 => 'm', - 65326 => 'n', - 65327 => 'o', - 65328 => 'p', - 65329 => 'q', - 65330 => 'r', - 65331 => 's', - 65332 => 't', - 65333 => 'u', - 65334 => 'v', - 65335 => 'w', - 65336 => 'x', - 65337 => 'y', - 65338 => 'z', - 65345 => 'a', - 65346 => 'b', - 65347 => 'c', - 65348 => 'd', - 65349 => 'e', - 65350 => 'f', - 65351 => 'g', - 65352 => 'h', - 65353 => 'i', - 65354 => 'j', - 65355 => 'k', - 65356 => 'l', - 65357 => 'm', - 65358 => 'n', - 65359 => 'o', - 65360 => 'p', - 65361 => 'q', - 65362 => 'r', - 65363 => 's', - 65364 => 't', - 65365 => 'u', - 65366 => 'v', - 65367 => 'w', - 65368 => 'x', - 65369 => 'y', - 65370 => 'z', - 65375 => '⩅', - 65376 => '⩆', - 65377 => '.', - 65378 => '「', - 65379 => '」', - 65380 => '、', - 65381 => '・', - 65382 => 'ăƒČ', - 65383 => 'ァ', - 65384 => 'ィ', - 65385 => 'ă‚„', - 65386 => 'ェ', - 65387 => 'ă‚©', - 65388 => 'ャ', - 65389 => 'ツ', - 65390 => 'ョ', - 65391 => 'ッ', - 65392 => 'ăƒŒ', - 65393 => 'ケ', - 65394 => 'ă‚€', - 65395 => 'ォ', - 65396 => 'ス', - 65397 => 'ă‚Ș', - 65398 => 'ă‚«', - 65399 => 'キ', - 65400 => 'ク', - 65401 => 'ケ', - 65402 => 'コ', - 65403 => 'ă‚”', - 65404 => 'ă‚·', - 65405 => 'ă‚č', - 65406 => 'ă‚»', - 65407 => 'ă‚œ', - 65408 => 'タ', - 65409 => 'チ', - 65410 => 'ツ', - 65411 => 'テ', - 65412 => 'ト', - 65413 => 'ナ', - 65414 => 'ニ', - 65415 => 'ヌ', - 65416 => 'ネ', - 65417 => 'ノ', - 65418 => 'ハ', - 65419 => 'ヒ', - 65420 => 'フ', - 65421 => 'ヘ', - 65422 => 'ホ', - 65423 => 'マ', - 65424 => 'ミ', - 65425 => 'ム', - 65426 => 'ュ', - 65427 => 'ヹ', - 65428 => 'ダ', - 65429 => 'ナ', - 65430 => 'ペ', - 65431 => 'ラ', - 65432 => 'ăƒȘ', - 65433 => 'ル', - 65434 => 'ハ', - 65435 => 'ロ', - 65436 => 'ワ', - 65437 => 'ン', - 65438 => '゙', - 65439 => '゚', - 65441 => 'ᄀ', - 65442 => 'ᄁ', - 65443 => 'á†Ș', - 65444 => 'ᄂ', - 65445 => 'ᆬ', - 65446 => 'ᆭ', - 65447 => 'ᄃ', - 65448 => 'ᄄ', - 65449 => 'ᄅ', - 65450 => 'ᆰ', - 65451 => 'ᆱ', - 65452 => 'á†Č', - 65453 => 'ᆳ', - 65454 => 'ᆮ', - 65455 => 'ᆔ', - 65456 => 'ᄚ', - 65457 => 'ᄆ', - 65458 => 'ᄇ', - 65459 => 'ᄈ', - 65460 => 'ᄡ', - 65461 => 'ᄉ', - 65462 => 'ᄊ', - 65463 => 'ᄋ', - 65464 => 'ᄌ', - 65465 => 'ᄍ', - 65466 => 'ᄎ', - 65467 => 'ᄏ', - 65468 => 'ᄐ', - 65469 => 'ᄑ', - 65470 => 'ᄒ', - 65474 => 'ᅡ', - 65475 => 'ᅱ', - 65476 => 'ᅣ', - 65477 => 'á…€', - 65478 => 'á…„', - 65479 => 'ᅩ', - 65482 => 'ᅧ', - 65483 => 'ᅹ', - 65484 => 'ᅩ', - 65485 => 'á…Ș', - 65486 => 'ᅫ', - 65487 => 'ᅬ', - 65490 => 'ᅭ', - 65491 => 'ᅼ', - 65492 => 'ᅯ', - 65493 => 'ᅰ', - 65494 => 'ᅱ', - 65495 => 'á…Č', - 65498 => 'ᅳ', - 65499 => 'ᅮ', - 65500 => 'á…”', - 65504 => 'Âą', - 65505 => 'ÂŁ', - 65506 => 'ÂŹ', - 65508 => 'Š', - 65509 => '„', - 65510 => '₩', - 65512 => '│', - 65513 => '←', - 65514 => '↑', - 65515 => '→', - 65516 => '↓', - 65517 => '■', - 65518 => '○', - 66560 => '𐐚', - 66561 => '𐐩', - 66562 => 'đȘ', - 66563 => '𐐫', - 66564 => '𐐏', - 66565 => '𐐭', - 66566 => '𐐟', - 66567 => '𐐯', - 66568 => '𐐰', - 66569 => '𐐱', - 66570 => 'đČ', - 66571 => '𐐳', - 66572 => '𐐎', - 66573 => '𐐔', - 66574 => '𐐶', - 66575 => '𐐷', - 66576 => '𐐞', - 66577 => 'đč', - 66578 => 'đș', - 66579 => '𐐻', - 66580 => 'đŒ', - 66581 => 'đœ', - 66582 => 'đŸ', - 66583 => '𐐿', - 66584 => '𐑀', - 66585 => '𐑁', - 66586 => '𐑂', - 66587 => '𐑃', - 66588 => '𐑄', - 66589 => '𐑅', - 66590 => '𐑆', - 66591 => '𐑇', - 66592 => '𐑈', - 66593 => '𐑉', - 66594 => '𐑊', - 66595 => '𐑋', - 66596 => '𐑌', - 66597 => '𐑍', - 66598 => '𐑎', - 66599 => '𐑏', - 66736 => '𐓘', - 66737 => '𐓙', - 66738 => '𐓚', - 66739 => '𐓛', - 66740 => '𐓜', - 66741 => '𐓝', - 66742 => '𐓞', - 66743 => '𐓟', - 66744 => '𐓠', - 66745 => '𐓡', - 66746 => '𐓱', - 66747 => '𐓣', - 66748 => '𐓀', - 66749 => '𐓄', - 66750 => '𐓩', - 66751 => '𐓧', - 66752 => '𐓹', - 66753 => '𐓩', - 66754 => 'đ“Ș', - 66755 => '𐓫', - 66756 => '𐓬', - 66757 => '𐓭', - 66758 => '𐓼', - 66759 => '𐓯', - 66760 => '𐓰', - 66761 => '𐓱', - 66762 => 'đ“Č', - 66763 => '𐓳', - 66764 => '𐓮', - 66765 => '𐓔', - 66766 => '𐓶', - 66767 => '𐓷', - 66768 => '𐓾', - 66769 => 'đ“č', - 66770 => 'đ“ș', - 66771 => '𐓻', - 68736 => '𐳀', - 68737 => '𐳁', - 68738 => '𐳂', - 68739 => '𐳃', - 68740 => '𐳄', - 68741 => '𐳅', - 68742 => '𐳆', - 68743 => '𐳇', - 68744 => '𐳈', - 68745 => '𐳉', - 68746 => '𐳊', - 68747 => '𐳋', - 68748 => '𐳌', - 68749 => '𐳍', - 68750 => '𐳎', - 68751 => '𐳏', - 68752 => '𐳐', - 68753 => '𐳑', - 68754 => '𐳒', - 68755 => '𐳓', - 68756 => '𐳔', - 68757 => '𐳕', - 68758 => '𐳖', - 68759 => '𐳗', - 68760 => '𐳘', - 68761 => '𐳙', - 68762 => '𐳚', - 68763 => '𐳛', - 68764 => '𐳜', - 68765 => '𐳝', - 68766 => '𐳞', - 68767 => '𐳟', - 68768 => '𐳠', - 68769 => '𐳥', - 68770 => '𐳹', - 68771 => '𐳣', - 68772 => '𐳀', - 68773 => '𐳄', - 68774 => '𐳊', - 68775 => '𐳧', - 68776 => '𐳚', - 68777 => '𐳩', - 68778 => 'đłȘ', - 68779 => '𐳫', - 68780 => '𐳏', - 68781 => '𐳭', - 68782 => '𐳟', - 68783 => '𐳯', - 68784 => '𐳰', - 68785 => '𐳱', - 68786 => 'đłČ', - 71840 => '𑣀', - 71841 => '𑣁', - 71842 => '𑣂', - 71843 => '𑣃', - 71844 => '𑣄', - 71845 => '𑣅', - 71846 => '𑣆', - 71847 => '𑣇', - 71848 => '𑣈', - 71849 => '𑣉', - 71850 => '𑣊', - 71851 => '𑣋', - 71852 => '𑣌', - 71853 => '𑣍', - 71854 => '𑣎', - 71855 => '𑣏', - 71856 => '𑣐', - 71857 => '𑣑', - 71858 => '𑣒', - 71859 => '𑣓', - 71860 => '𑣔', - 71861 => '𑣕', - 71862 => '𑣖', - 71863 => '𑣗', - 71864 => '𑣘', - 71865 => '𑣙', - 71866 => '𑣚', - 71867 => '𑣛', - 71868 => '𑣜', - 71869 => '𑣝', - 71870 => '𑣞', - 71871 => '𑣟', - 93760 => 'đ–č ', - 93761 => 'đ–čĄ', - 93762 => 'đ–čą', - 93763 => 'đ–čŁ', - 93764 => 'đ–č€', - 93765 => 'đ–č„', - 93766 => 'đ–čŠ', - 93767 => 'đ–č§', - 93768 => 'đ–čš', - 93769 => 'đ–č©', - 93770 => 'đ–čȘ', - 93771 => 'đ–č«', - 93772 => 'đ–čŹ', - 93773 => 'đ–č­', - 93774 => 'đ–čź', - 93775 => 'đ–čŻ', - 93776 => 'đ–č°', - 93777 => 'đ–č±', - 93778 => 'đ–čČ', - 93779 => 'đ–čł', - 93780 => 'đ–čŽ', - 93781 => 'đ–č”', - 93782 => 'đ–č¶', - 93783 => 'đ–č·', - 93784 => 'đ–čž', - 93785 => 'đ–čč', - 93786 => 'đ–čș', - 93787 => 'đ–č»', - 93788 => 'đ–čŒ', - 93789 => 'đ–čœ', - 93790 => 'đ–čŸ', - 93791 => 'đ–čż', - 119134 => 'đ…—đ…„', - 119135 => 'đ…˜đ…„', - 119136 => 'đ…˜đ…„đ…ź', - 119137 => 'đ…˜đ…„đ…Ż', - 119138 => 'đ…˜đ…„đ…°', - 119139 => 'đ…˜đ…„đ…±', - 119140 => 'đ…˜đ…„đ…Č', - 119227 => 'đ†čđ…„', - 119228 => 'đ†șđ…„', - 119229 => 'đ†čđ…„đ…ź', - 119230 => 'đ†șđ…„đ…ź', - 119231 => 'đ†čđ…„đ…Ż', - 119232 => 'đ†șđ…„đ…Ż', - 119808 => 'a', - 119809 => 'b', - 119810 => 'c', - 119811 => 'd', - 119812 => 'e', - 119813 => 'f', - 119814 => 'g', - 119815 => 'h', - 119816 => 'i', - 119817 => 'j', - 119818 => 'k', - 119819 => 'l', - 119820 => 'm', - 119821 => 'n', - 119822 => 'o', - 119823 => 'p', - 119824 => 'q', - 119825 => 'r', - 119826 => 's', - 119827 => 't', - 119828 => 'u', - 119829 => 'v', - 119830 => 'w', - 119831 => 'x', - 119832 => 'y', - 119833 => 'z', - 119834 => 'a', - 119835 => 'b', - 119836 => 'c', - 119837 => 'd', - 119838 => 'e', - 119839 => 'f', - 119840 => 'g', - 119841 => 'h', - 119842 => 'i', - 119843 => 'j', - 119844 => 'k', - 119845 => 'l', - 119846 => 'm', - 119847 => 'n', - 119848 => 'o', - 119849 => 'p', - 119850 => 'q', - 119851 => 'r', - 119852 => 's', - 119853 => 't', - 119854 => 'u', - 119855 => 'v', - 119856 => 'w', - 119857 => 'x', - 119858 => 'y', - 119859 => 'z', - 119860 => 'a', - 119861 => 'b', - 119862 => 'c', - 119863 => 'd', - 119864 => 'e', - 119865 => 'f', - 119866 => 'g', - 119867 => 'h', - 119868 => 'i', - 119869 => 'j', - 119870 => 'k', - 119871 => 'l', - 119872 => 'm', - 119873 => 'n', - 119874 => 'o', - 119875 => 'p', - 119876 => 'q', - 119877 => 'r', - 119878 => 's', - 119879 => 't', - 119880 => 'u', - 119881 => 'v', - 119882 => 'w', - 119883 => 'x', - 119884 => 'y', - 119885 => 'z', - 119886 => 'a', - 119887 => 'b', - 119888 => 'c', - 119889 => 'd', - 119890 => 'e', - 119891 => 'f', - 119892 => 'g', - 119894 => 'i', - 119895 => 'j', - 119896 => 'k', - 119897 => 'l', - 119898 => 'm', - 119899 => 'n', - 119900 => 'o', - 119901 => 'p', - 119902 => 'q', - 119903 => 'r', - 119904 => 's', - 119905 => 't', - 119906 => 'u', - 119907 => 'v', - 119908 => 'w', - 119909 => 'x', - 119910 => 'y', - 119911 => 'z', - 119912 => 'a', - 119913 => 'b', - 119914 => 'c', - 119915 => 'd', - 119916 => 'e', - 119917 => 'f', - 119918 => 'g', - 119919 => 'h', - 119920 => 'i', - 119921 => 'j', - 119922 => 'k', - 119923 => 'l', - 119924 => 'm', - 119925 => 'n', - 119926 => 'o', - 119927 => 'p', - 119928 => 'q', - 119929 => 'r', - 119930 => 's', - 119931 => 't', - 119932 => 'u', - 119933 => 'v', - 119934 => 'w', - 119935 => 'x', - 119936 => 'y', - 119937 => 'z', - 119938 => 'a', - 119939 => 'b', - 119940 => 'c', - 119941 => 'd', - 119942 => 'e', - 119943 => 'f', - 119944 => 'g', - 119945 => 'h', - 119946 => 'i', - 119947 => 'j', - 119948 => 'k', - 119949 => 'l', - 119950 => 'm', - 119951 => 'n', - 119952 => 'o', - 119953 => 'p', - 119954 => 'q', - 119955 => 'r', - 119956 => 's', - 119957 => 't', - 119958 => 'u', - 119959 => 'v', - 119960 => 'w', - 119961 => 'x', - 119962 => 'y', - 119963 => 'z', - 119964 => 'a', - 119966 => 'c', - 119967 => 'd', - 119970 => 'g', - 119973 => 'j', - 119974 => 'k', - 119977 => 'n', - 119978 => 'o', - 119979 => 'p', - 119980 => 'q', - 119982 => 's', - 119983 => 't', - 119984 => 'u', - 119985 => 'v', - 119986 => 'w', - 119987 => 'x', - 119988 => 'y', - 119989 => 'z', - 119990 => 'a', - 119991 => 'b', - 119992 => 'c', - 119993 => 'd', - 119995 => 'f', - 119997 => 'h', - 119998 => 'i', - 119999 => 'j', - 120000 => 'k', - 120001 => 'l', - 120002 => 'm', - 120003 => 'n', - 120005 => 'p', - 120006 => 'q', - 120007 => 'r', - 120008 => 's', - 120009 => 't', - 120010 => 'u', - 120011 => 'v', - 120012 => 'w', - 120013 => 'x', - 120014 => 'y', - 120015 => 'z', - 120016 => 'a', - 120017 => 'b', - 120018 => 'c', - 120019 => 'd', - 120020 => 'e', - 120021 => 'f', - 120022 => 'g', - 120023 => 'h', - 120024 => 'i', - 120025 => 'j', - 120026 => 'k', - 120027 => 'l', - 120028 => 'm', - 120029 => 'n', - 120030 => 'o', - 120031 => 'p', - 120032 => 'q', - 120033 => 'r', - 120034 => 's', - 120035 => 't', - 120036 => 'u', - 120037 => 'v', - 120038 => 'w', - 120039 => 'x', - 120040 => 'y', - 120041 => 'z', - 120042 => 'a', - 120043 => 'b', - 120044 => 'c', - 120045 => 'd', - 120046 => 'e', - 120047 => 'f', - 120048 => 'g', - 120049 => 'h', - 120050 => 'i', - 120051 => 'j', - 120052 => 'k', - 120053 => 'l', - 120054 => 'm', - 120055 => 'n', - 120056 => 'o', - 120057 => 'p', - 120058 => 'q', - 120059 => 'r', - 120060 => 's', - 120061 => 't', - 120062 => 'u', - 120063 => 'v', - 120064 => 'w', - 120065 => 'x', - 120066 => 'y', - 120067 => 'z', - 120068 => 'a', - 120069 => 'b', - 120071 => 'd', - 120072 => 'e', - 120073 => 'f', - 120074 => 'g', - 120077 => 'j', - 120078 => 'k', - 120079 => 'l', - 120080 => 'm', - 120081 => 'n', - 120082 => 'o', - 120083 => 'p', - 120084 => 'q', - 120086 => 's', - 120087 => 't', - 120088 => 'u', - 120089 => 'v', - 120090 => 'w', - 120091 => 'x', - 120092 => 'y', - 120094 => 'a', - 120095 => 'b', - 120096 => 'c', - 120097 => 'd', - 120098 => 'e', - 120099 => 'f', - 120100 => 'g', - 120101 => 'h', - 120102 => 'i', - 120103 => 'j', - 120104 => 'k', - 120105 => 'l', - 120106 => 'm', - 120107 => 'n', - 120108 => 'o', - 120109 => 'p', - 120110 => 'q', - 120111 => 'r', - 120112 => 's', - 120113 => 't', - 120114 => 'u', - 120115 => 'v', - 120116 => 'w', - 120117 => 'x', - 120118 => 'y', - 120119 => 'z', - 120120 => 'a', - 120121 => 'b', - 120123 => 'd', - 120124 => 'e', - 120125 => 'f', - 120126 => 'g', - 120128 => 'i', - 120129 => 'j', - 120130 => 'k', - 120131 => 'l', - 120132 => 'm', - 120134 => 'o', - 120138 => 's', - 120139 => 't', - 120140 => 'u', - 120141 => 'v', - 120142 => 'w', - 120143 => 'x', - 120144 => 'y', - 120146 => 'a', - 120147 => 'b', - 120148 => 'c', - 120149 => 'd', - 120150 => 'e', - 120151 => 'f', - 120152 => 'g', - 120153 => 'h', - 120154 => 'i', - 120155 => 'j', - 120156 => 'k', - 120157 => 'l', - 120158 => 'm', - 120159 => 'n', - 120160 => 'o', - 120161 => 'p', - 120162 => 'q', - 120163 => 'r', - 120164 => 's', - 120165 => 't', - 120166 => 'u', - 120167 => 'v', - 120168 => 'w', - 120169 => 'x', - 120170 => 'y', - 120171 => 'z', - 120172 => 'a', - 120173 => 'b', - 120174 => 'c', - 120175 => 'd', - 120176 => 'e', - 120177 => 'f', - 120178 => 'g', - 120179 => 'h', - 120180 => 'i', - 120181 => 'j', - 120182 => 'k', - 120183 => 'l', - 120184 => 'm', - 120185 => 'n', - 120186 => 'o', - 120187 => 'p', - 120188 => 'q', - 120189 => 'r', - 120190 => 's', - 120191 => 't', - 120192 => 'u', - 120193 => 'v', - 120194 => 'w', - 120195 => 'x', - 120196 => 'y', - 120197 => 'z', - 120198 => 'a', - 120199 => 'b', - 120200 => 'c', - 120201 => 'd', - 120202 => 'e', - 120203 => 'f', - 120204 => 'g', - 120205 => 'h', - 120206 => 'i', - 120207 => 'j', - 120208 => 'k', - 120209 => 'l', - 120210 => 'm', - 120211 => 'n', - 120212 => 'o', - 120213 => 'p', - 120214 => 'q', - 120215 => 'r', - 120216 => 's', - 120217 => 't', - 120218 => 'u', - 120219 => 'v', - 120220 => 'w', - 120221 => 'x', - 120222 => 'y', - 120223 => 'z', - 120224 => 'a', - 120225 => 'b', - 120226 => 'c', - 120227 => 'd', - 120228 => 'e', - 120229 => 'f', - 120230 => 'g', - 120231 => 'h', - 120232 => 'i', - 120233 => 'j', - 120234 => 'k', - 120235 => 'l', - 120236 => 'm', - 120237 => 'n', - 120238 => 'o', - 120239 => 'p', - 120240 => 'q', - 120241 => 'r', - 120242 => 's', - 120243 => 't', - 120244 => 'u', - 120245 => 'v', - 120246 => 'w', - 120247 => 'x', - 120248 => 'y', - 120249 => 'z', - 120250 => 'a', - 120251 => 'b', - 120252 => 'c', - 120253 => 'd', - 120254 => 'e', - 120255 => 'f', - 120256 => 'g', - 120257 => 'h', - 120258 => 'i', - 120259 => 'j', - 120260 => 'k', - 120261 => 'l', - 120262 => 'm', - 120263 => 'n', - 120264 => 'o', - 120265 => 'p', - 120266 => 'q', - 120267 => 'r', - 120268 => 's', - 120269 => 't', - 120270 => 'u', - 120271 => 'v', - 120272 => 'w', - 120273 => 'x', - 120274 => 'y', - 120275 => 'z', - 120276 => 'a', - 120277 => 'b', - 120278 => 'c', - 120279 => 'd', - 120280 => 'e', - 120281 => 'f', - 120282 => 'g', - 120283 => 'h', - 120284 => 'i', - 120285 => 'j', - 120286 => 'k', - 120287 => 'l', - 120288 => 'm', - 120289 => 'n', - 120290 => 'o', - 120291 => 'p', - 120292 => 'q', - 120293 => 'r', - 120294 => 's', - 120295 => 't', - 120296 => 'u', - 120297 => 'v', - 120298 => 'w', - 120299 => 'x', - 120300 => 'y', - 120301 => 'z', - 120302 => 'a', - 120303 => 'b', - 120304 => 'c', - 120305 => 'd', - 120306 => 'e', - 120307 => 'f', - 120308 => 'g', - 120309 => 'h', - 120310 => 'i', - 120311 => 'j', - 120312 => 'k', - 120313 => 'l', - 120314 => 'm', - 120315 => 'n', - 120316 => 'o', - 120317 => 'p', - 120318 => 'q', - 120319 => 'r', - 120320 => 's', - 120321 => 't', - 120322 => 'u', - 120323 => 'v', - 120324 => 'w', - 120325 => 'x', - 120326 => 'y', - 120327 => 'z', - 120328 => 'a', - 120329 => 'b', - 120330 => 'c', - 120331 => 'd', - 120332 => 'e', - 120333 => 'f', - 120334 => 'g', - 120335 => 'h', - 120336 => 'i', - 120337 => 'j', - 120338 => 'k', - 120339 => 'l', - 120340 => 'm', - 120341 => 'n', - 120342 => 'o', - 120343 => 'p', - 120344 => 'q', - 120345 => 'r', - 120346 => 's', - 120347 => 't', - 120348 => 'u', - 120349 => 'v', - 120350 => 'w', - 120351 => 'x', - 120352 => 'y', - 120353 => 'z', - 120354 => 'a', - 120355 => 'b', - 120356 => 'c', - 120357 => 'd', - 120358 => 'e', - 120359 => 'f', - 120360 => 'g', - 120361 => 'h', - 120362 => 'i', - 120363 => 'j', - 120364 => 'k', - 120365 => 'l', - 120366 => 'm', - 120367 => 'n', - 120368 => 'o', - 120369 => 'p', - 120370 => 'q', - 120371 => 'r', - 120372 => 's', - 120373 => 't', - 120374 => 'u', - 120375 => 'v', - 120376 => 'w', - 120377 => 'x', - 120378 => 'y', - 120379 => 'z', - 120380 => 'a', - 120381 => 'b', - 120382 => 'c', - 120383 => 'd', - 120384 => 'e', - 120385 => 'f', - 120386 => 'g', - 120387 => 'h', - 120388 => 'i', - 120389 => 'j', - 120390 => 'k', - 120391 => 'l', - 120392 => 'm', - 120393 => 'n', - 120394 => 'o', - 120395 => 'p', - 120396 => 'q', - 120397 => 'r', - 120398 => 's', - 120399 => 't', - 120400 => 'u', - 120401 => 'v', - 120402 => 'w', - 120403 => 'x', - 120404 => 'y', - 120405 => 'z', - 120406 => 'a', - 120407 => 'b', - 120408 => 'c', - 120409 => 'd', - 120410 => 'e', - 120411 => 'f', - 120412 => 'g', - 120413 => 'h', - 120414 => 'i', - 120415 => 'j', - 120416 => 'k', - 120417 => 'l', - 120418 => 'm', - 120419 => 'n', - 120420 => 'o', - 120421 => 'p', - 120422 => 'q', - 120423 => 'r', - 120424 => 's', - 120425 => 't', - 120426 => 'u', - 120427 => 'v', - 120428 => 'w', - 120429 => 'x', - 120430 => 'y', - 120431 => 'z', - 120432 => 'a', - 120433 => 'b', - 120434 => 'c', - 120435 => 'd', - 120436 => 'e', - 120437 => 'f', - 120438 => 'g', - 120439 => 'h', - 120440 => 'i', - 120441 => 'j', - 120442 => 'k', - 120443 => 'l', - 120444 => 'm', - 120445 => 'n', - 120446 => 'o', - 120447 => 'p', - 120448 => 'q', - 120449 => 'r', - 120450 => 's', - 120451 => 't', - 120452 => 'u', - 120453 => 'v', - 120454 => 'w', - 120455 => 'x', - 120456 => 'y', - 120457 => 'z', - 120458 => 'a', - 120459 => 'b', - 120460 => 'c', - 120461 => 'd', - 120462 => 'e', - 120463 => 'f', - 120464 => 'g', - 120465 => 'h', - 120466 => 'i', - 120467 => 'j', - 120468 => 'k', - 120469 => 'l', - 120470 => 'm', - 120471 => 'n', - 120472 => 'o', - 120473 => 'p', - 120474 => 'q', - 120475 => 'r', - 120476 => 's', - 120477 => 't', - 120478 => 'u', - 120479 => 'v', - 120480 => 'w', - 120481 => 'x', - 120482 => 'y', - 120483 => 'z', - 120484 => 'ı', - 120485 => 'È·', - 120488 => 'α', - 120489 => 'ÎČ', - 120490 => 'Îł', - 120491 => 'ÎŽ', - 120492 => 'Δ', - 120493 => 'ζ', - 120494 => 'η', - 120495 => 'Ξ', - 120496 => 'Îč', - 120497 => 'Îș', - 120498 => 'λ', - 120499 => 'ÎŒ', - 120500 => 'Μ', - 120501 => 'Ο', - 120502 => 'Îż', - 120503 => 'π', - 120504 => 'ρ', - 120505 => 'Ξ', - 120506 => 'σ', - 120507 => 'τ', - 120508 => 'υ', - 120509 => 'φ', - 120510 => 'χ', - 120511 => 'ψ', - 120512 => 'ω', - 120513 => '∇', - 120514 => 'α', - 120515 => 'ÎČ', - 120516 => 'Îł', - 120517 => 'ÎŽ', - 120518 => 'Δ', - 120519 => 'ζ', - 120520 => 'η', - 120521 => 'Ξ', - 120522 => 'Îč', - 120523 => 'Îș', - 120524 => 'λ', - 120525 => 'ÎŒ', - 120526 => 'Μ', - 120527 => 'Ο', - 120528 => 'Îż', - 120529 => 'π', - 120530 => 'ρ', - 120531 => 'σ', - 120532 => 'σ', - 120533 => 'τ', - 120534 => 'υ', - 120535 => 'φ', - 120536 => 'χ', - 120537 => 'ψ', - 120538 => 'ω', - 120539 => '∂', - 120540 => 'Δ', - 120541 => 'Ξ', - 120542 => 'Îș', - 120543 => 'φ', - 120544 => 'ρ', - 120545 => 'π', - 120546 => 'α', - 120547 => 'ÎČ', - 120548 => 'Îł', - 120549 => 'ÎŽ', - 120550 => 'Δ', - 120551 => 'ζ', - 120552 => 'η', - 120553 => 'Ξ', - 120554 => 'Îč', - 120555 => 'Îș', - 120556 => 'λ', - 120557 => 'ÎŒ', - 120558 => 'Μ', - 120559 => 'Ο', - 120560 => 'Îż', - 120561 => 'π', - 120562 => 'ρ', - 120563 => 'Ξ', - 120564 => 'σ', - 120565 => 'τ', - 120566 => 'υ', - 120567 => 'φ', - 120568 => 'χ', - 120569 => 'ψ', - 120570 => 'ω', - 120571 => '∇', - 120572 => 'α', - 120573 => 'ÎČ', - 120574 => 'Îł', - 120575 => 'ÎŽ', - 120576 => 'Δ', - 120577 => 'ζ', - 120578 => 'η', - 120579 => 'Ξ', - 120580 => 'Îč', - 120581 => 'Îș', - 120582 => 'λ', - 120583 => 'ÎŒ', - 120584 => 'Μ', - 120585 => 'Ο', - 120586 => 'Îż', - 120587 => 'π', - 120588 => 'ρ', - 120589 => 'σ', - 120590 => 'σ', - 120591 => 'τ', - 120592 => 'υ', - 120593 => 'φ', - 120594 => 'χ', - 120595 => 'ψ', - 120596 => 'ω', - 120597 => '∂', - 120598 => 'Δ', - 120599 => 'Ξ', - 120600 => 'Îș', - 120601 => 'φ', - 120602 => 'ρ', - 120603 => 'π', - 120604 => 'α', - 120605 => 'ÎČ', - 120606 => 'Îł', - 120607 => 'ÎŽ', - 120608 => 'Δ', - 120609 => 'ζ', - 120610 => 'η', - 120611 => 'Ξ', - 120612 => 'Îč', - 120613 => 'Îș', - 120614 => 'λ', - 120615 => 'ÎŒ', - 120616 => 'Μ', - 120617 => 'Ο', - 120618 => 'Îż', - 120619 => 'π', - 120620 => 'ρ', - 120621 => 'Ξ', - 120622 => 'σ', - 120623 => 'τ', - 120624 => 'υ', - 120625 => 'φ', - 120626 => 'χ', - 120627 => 'ψ', - 120628 => 'ω', - 120629 => '∇', - 120630 => 'α', - 120631 => 'ÎČ', - 120632 => 'Îł', - 120633 => 'ÎŽ', - 120634 => 'Δ', - 120635 => 'ζ', - 120636 => 'η', - 120637 => 'Ξ', - 120638 => 'Îč', - 120639 => 'Îș', - 120640 => 'λ', - 120641 => 'ÎŒ', - 120642 => 'Μ', - 120643 => 'Ο', - 120644 => 'Îż', - 120645 => 'π', - 120646 => 'ρ', - 120647 => 'σ', - 120648 => 'σ', - 120649 => 'τ', - 120650 => 'υ', - 120651 => 'φ', - 120652 => 'χ', - 120653 => 'ψ', - 120654 => 'ω', - 120655 => '∂', - 120656 => 'Δ', - 120657 => 'Ξ', - 120658 => 'Îș', - 120659 => 'φ', - 120660 => 'ρ', - 120661 => 'π', - 120662 => 'α', - 120663 => 'ÎČ', - 120664 => 'Îł', - 120665 => 'ÎŽ', - 120666 => 'Δ', - 120667 => 'ζ', - 120668 => 'η', - 120669 => 'Ξ', - 120670 => 'Îč', - 120671 => 'Îș', - 120672 => 'λ', - 120673 => 'ÎŒ', - 120674 => 'Μ', - 120675 => 'Ο', - 120676 => 'Îż', - 120677 => 'π', - 120678 => 'ρ', - 120679 => 'Ξ', - 120680 => 'σ', - 120681 => 'τ', - 120682 => 'υ', - 120683 => 'φ', - 120684 => 'χ', - 120685 => 'ψ', - 120686 => 'ω', - 120687 => '∇', - 120688 => 'α', - 120689 => 'ÎČ', - 120690 => 'Îł', - 120691 => 'ÎŽ', - 120692 => 'Δ', - 120693 => 'ζ', - 120694 => 'η', - 120695 => 'Ξ', - 120696 => 'Îč', - 120697 => 'Îș', - 120698 => 'λ', - 120699 => 'ÎŒ', - 120700 => 'Μ', - 120701 => 'Ο', - 120702 => 'Îż', - 120703 => 'π', - 120704 => 'ρ', - 120705 => 'σ', - 120706 => 'σ', - 120707 => 'τ', - 120708 => 'υ', - 120709 => 'φ', - 120710 => 'χ', - 120711 => 'ψ', - 120712 => 'ω', - 120713 => '∂', - 120714 => 'Δ', - 120715 => 'Ξ', - 120716 => 'Îș', - 120717 => 'φ', - 120718 => 'ρ', - 120719 => 'π', - 120720 => 'α', - 120721 => 'ÎČ', - 120722 => 'Îł', - 120723 => 'ÎŽ', - 120724 => 'Δ', - 120725 => 'ζ', - 120726 => 'η', - 120727 => 'Ξ', - 120728 => 'Îč', - 120729 => 'Îș', - 120730 => 'λ', - 120731 => 'ÎŒ', - 120732 => 'Μ', - 120733 => 'Ο', - 120734 => 'Îż', - 120735 => 'π', - 120736 => 'ρ', - 120737 => 'Ξ', - 120738 => 'σ', - 120739 => 'τ', - 120740 => 'υ', - 120741 => 'φ', - 120742 => 'χ', - 120743 => 'ψ', - 120744 => 'ω', - 120745 => '∇', - 120746 => 'α', - 120747 => 'ÎČ', - 120748 => 'Îł', - 120749 => 'ÎŽ', - 120750 => 'Δ', - 120751 => 'ζ', - 120752 => 'η', - 120753 => 'Ξ', - 120754 => 'Îč', - 120755 => 'Îș', - 120756 => 'λ', - 120757 => 'ÎŒ', - 120758 => 'Μ', - 120759 => 'Ο', - 120760 => 'Îż', - 120761 => 'π', - 120762 => 'ρ', - 120763 => 'σ', - 120764 => 'σ', - 120765 => 'τ', - 120766 => 'υ', - 120767 => 'φ', - 120768 => 'χ', - 120769 => 'ψ', - 120770 => 'ω', - 120771 => '∂', - 120772 => 'Δ', - 120773 => 'Ξ', - 120774 => 'Îș', - 120775 => 'φ', - 120776 => 'ρ', - 120777 => 'π', - 120778 => 'ϝ', - 120779 => 'ϝ', - 120782 => '0', - 120783 => '1', - 120784 => '2', - 120785 => '3', - 120786 => '4', - 120787 => '5', - 120788 => '6', - 120789 => '7', - 120790 => '8', - 120791 => '9', - 120792 => '0', - 120793 => '1', - 120794 => '2', - 120795 => '3', - 120796 => '4', - 120797 => '5', - 120798 => '6', - 120799 => '7', - 120800 => '8', - 120801 => '9', - 120802 => '0', - 120803 => '1', - 120804 => '2', - 120805 => '3', - 120806 => '4', - 120807 => '5', - 120808 => '6', - 120809 => '7', - 120810 => '8', - 120811 => '9', - 120812 => '0', - 120813 => '1', - 120814 => '2', - 120815 => '3', - 120816 => '4', - 120817 => '5', - 120818 => '6', - 120819 => '7', - 120820 => '8', - 120821 => '9', - 120822 => '0', - 120823 => '1', - 120824 => '2', - 120825 => '3', - 120826 => '4', - 120827 => '5', - 120828 => '6', - 120829 => '7', - 120830 => '8', - 120831 => '9', - 125184 => '𞀹', - 125185 => '𞀣', - 125186 => '𞀀', - 125187 => '𞀄', - 125188 => '𞀊', - 125189 => '𞀧', - 125190 => '𞀚', - 125191 => '𞀩', - 125192 => 'đž€Ș', - 125193 => '𞀫', - 125194 => '𞀏', - 125195 => '𞀭', - 125196 => '𞀟', - 125197 => '𞀯', - 125198 => '𞀰', - 125199 => '𞀱', - 125200 => 'đž€Č', - 125201 => '𞀳', - 125202 => '𞀎', - 125203 => '𞀔', - 125204 => '𞀶', - 125205 => '𞀷', - 125206 => '𞀞', - 125207 => 'đž€č', - 125208 => 'đž€ș', - 125209 => '𞀻', - 125210 => 'đž€Œ', - 125211 => 'đž€œ', - 125212 => 'đž€Ÿ', - 125213 => '𞀿', - 125214 => 'đž„€', - 125215 => '𞄁', - 125216 => 'đž„‚', - 125217 => 'đž„ƒ', - 126464 => 'ۧ', - 126465 => 'Űš', - 126466 => 'ŰŹ', - 126467 => 'ŰŻ', - 126469 => 'و', - 126470 => 'ŰČ', - 126471 => 'Ű­', - 126472 => 'Ű·', - 126473 => 'ي', - 126474 => 'ك', - 126475 => 'ل', - 126476 => 'م', - 126477 => 'ن', - 126478 => 'Űł', - 126479 => 'Űč', - 126480 => 'ف', - 126481 => 'Ű”', - 126482 => 'ق', - 126483 => '۱', - 126484 => 'ŰŽ', - 126485 => 'ŰȘ', - 126486 => 'Ű«', - 126487 => 'Űź', - 126488 => '۰', - 126489 => '۶', - 126490 => 'Űž', - 126491 => 'Űș', - 126492 => 'Ùź', - 126493 => 'Úș', - 126494 => 'ÚĄ', - 126495 => 'ÙŻ', - 126497 => 'Űš', - 126498 => 'ŰŹ', - 126500 => 'ه', - 126503 => 'Ű­', - 126505 => 'ي', - 126506 => 'ك', - 126507 => 'ل', - 126508 => 'م', - 126509 => 'ن', - 126510 => 'Űł', - 126511 => 'Űč', - 126512 => 'ف', - 126513 => 'Ű”', - 126514 => 'ق', - 126516 => 'ŰŽ', - 126517 => 'ŰȘ', - 126518 => 'Ű«', - 126519 => 'Űź', - 126521 => '۶', - 126523 => 'Űș', - 126530 => 'ŰŹ', - 126535 => 'Ű­', - 126537 => 'ي', - 126539 => 'ل', - 126541 => 'ن', - 126542 => 'Űł', - 126543 => 'Űč', - 126545 => 'Ű”', - 126546 => 'ق', - 126548 => 'ŰŽ', - 126551 => 'Űź', - 126553 => '۶', - 126555 => 'Űș', - 126557 => 'Úș', - 126559 => 'ÙŻ', - 126561 => 'Űš', - 126562 => 'ŰŹ', - 126564 => 'ه', - 126567 => 'Ű­', - 126568 => 'Ű·', - 126569 => 'ي', - 126570 => 'ك', - 126572 => 'م', - 126573 => 'ن', - 126574 => 'Űł', - 126575 => 'Űč', - 126576 => 'ف', - 126577 => 'Ű”', - 126578 => 'ق', - 126580 => 'ŰŽ', - 126581 => 'ŰȘ', - 126582 => 'Ű«', - 126583 => 'Űź', - 126585 => '۶', - 126586 => 'Űž', - 126587 => 'Űș', - 126588 => 'Ùź', - 126590 => 'ÚĄ', - 126592 => 'ۧ', - 126593 => 'Űš', - 126594 => 'ŰŹ', - 126595 => 'ŰŻ', - 126596 => 'ه', - 126597 => 'و', - 126598 => 'ŰČ', - 126599 => 'Ű­', - 126600 => 'Ű·', - 126601 => 'ي', - 126603 => 'ل', - 126604 => 'م', - 126605 => 'ن', - 126606 => 'Űł', - 126607 => 'Űč', - 126608 => 'ف', - 126609 => 'Ű”', - 126610 => 'ق', - 126611 => '۱', - 126612 => 'ŰŽ', - 126613 => 'ŰȘ', - 126614 => 'Ű«', - 126615 => 'Űź', - 126616 => '۰', - 126617 => '۶', - 126618 => 'Űž', - 126619 => 'Űș', - 126625 => 'Űš', - 126626 => 'ŰŹ', - 126627 => 'ŰŻ', - 126629 => 'و', - 126630 => 'ŰČ', - 126631 => 'Ű­', - 126632 => 'Ű·', - 126633 => 'ي', - 126635 => 'ل', - 126636 => 'م', - 126637 => 'ن', - 126638 => 'Űł', - 126639 => 'Űč', - 126640 => 'ف', - 126641 => 'Ű”', - 126642 => 'ق', - 126643 => '۱', - 126644 => 'ŰŽ', - 126645 => 'ŰȘ', - 126646 => 'Ű«', - 126647 => 'Űź', - 126648 => '۰', - 126649 => '۶', - 126650 => 'Űž', - 126651 => 'Űș', - 127274 => '〔s〕', - 127275 => 'c', - 127276 => 'r', - 127277 => 'cd', - 127278 => 'wz', - 127280 => 'a', - 127281 => 'b', - 127282 => 'c', - 127283 => 'd', - 127284 => 'e', - 127285 => 'f', - 127286 => 'g', - 127287 => 'h', - 127288 => 'i', - 127289 => 'j', - 127290 => 'k', - 127291 => 'l', - 127292 => 'm', - 127293 => 'n', - 127294 => 'o', - 127295 => 'p', - 127296 => 'q', - 127297 => 'r', - 127298 => 's', - 127299 => 't', - 127300 => 'u', - 127301 => 'v', - 127302 => 'w', - 127303 => 'x', - 127304 => 'y', - 127305 => 'z', - 127306 => 'hv', - 127307 => 'mv', - 127308 => 'sd', - 127309 => 'ss', - 127310 => 'ppv', - 127311 => 'wc', - 127338 => 'mc', - 127339 => 'md', - 127340 => 'mr', - 127376 => 'dj', - 127488 => 'ほか', - 127489 => 'ココ', - 127490 => 'ă‚”', - 127504 => '手', - 127505 => '歗', - 127506 => '揌', - 127507 => 'デ', - 127508 => 'äșŒ', - 127509 => '〚', - 127510 => 'è§Ł', - 127511 => '怩', - 127512 => 'äș€', - 127513 => '映', - 127514 => '無', - 127515 => '料', - 127516 => '才', - 127517 => 'ćŸŒ', - 127518 => '憍', - 127519 => '新', - 127520 => '戝', - 127521 => '甂', - 127522 => '生', - 127523 => 'èČ©', - 127524 => '棰', - 127525 => 'ćč', - 127526 => '挔', - 127527 => '投', - 127528 => '捕', - 127529 => '侀', - 127530 => '侉', - 127531 => '遊', - 127532 => 'ć·Š', - 127533 => 'äž­', - 127534 => '揳', - 127535 => '指', - 127536 => 'è”°', - 127537 => '打', - 127538 => '犁', - 127539 => 'ç©ș', - 127540 => '搈', - 127541 => 'æș€', - 127542 => '有', - 127543 => '月', - 127544 => '申', - 127545 => 'ć‰Č', - 127546 => 'ć–¶', - 127547 => '配', - 127552 => 'ă€”æœŹă€•', - 127553 => '〔侉〕', - 127554 => '〔äșŒă€•', - 127555 => '〔漉〕', - 127556 => '〔ç‚č〕', - 127557 => 'ă€”æ‰“ă€•', - 127558 => '〔盗〕', - 127559 => '〔拝〕', - 127560 => 'ă€”æ•—ă€•', - 127568 => 'ćŸ—', - 127569 => '揯', - 130032 => '0', - 130033 => '1', - 130034 => '2', - 130035 => '3', - 130036 => '4', - 130037 => '5', - 130038 => '6', - 130039 => '7', - 130040 => '8', - 130041 => '9', - 194560 => 'äžœ', - 194561 => 'äžž', - 194562 => 'äč', - 194563 => '𠄱', - 194564 => '䜠', - 194565 => 'äŸź', - 194566 => '䟻', - 194567 => '怂', - 194568 => 'ćș', - 194569 => '悙', - 194570 => '惧', - 194571 => '惏', - 194572 => '㒞', - 194573 => 'đ ˜ș', - 194574 => '慍', - 194575 => '慔', - 194576 => 'ć…€', - 194577 => 'ć…·', - 194578 => '𠔜', - 194579 => 'ă’č', - 194580 => '慧', - 194581 => '憍', - 194582 => '𠕋', - 194583 => '憗', - 194584 => '憀', - 194585 => '仌', - 194586 => '憬', - 194587 => '憔', - 194588 => 'đ©‡Ÿ', - 194589 => '懔', - 194590 => '戃', - 194591 => '㓟', - 194592 => '戻', - 194593 => '扆', - 194594 => 'ć‰Č', - 194595 => '扷', - 194596 => '㔕', - 194597 => '拇', - 194598 => '拉', - 194599 => 'ć‹€', - 194600 => 'ć‹ș', - 194601 => '挅', - 194602 => '挆', - 194603 => '挗', - 194604 => '捉', - 194605 => '捑', - 194606 => '捚', - 194607 => '捳', - 194608 => 'ćœ', - 194609 => '捿', - 194610 => '捿', - 194611 => '捿', - 194612 => '𠚏', - 194613 => '灰', - 194614 => '揊', - 194615 => '揟', - 194616 => 'đ ­Ł', - 194617 => 'ć«', - 194618 => 'ć±', - 194619 => '搆', - 194620 => '撞', - 194621 => '搞', - 194622 => '摈', - 194623 => '摹', - 194624 => '撱', - 194625 => 'ć“¶', - 194626 => '攐', - 194627 => '敓', - 194628 => '散', - 194629 => '斄', - 194630 => '斄', - 194631 => '料', - 194632 => 'ć–«', - 194633 => '斳', - 194634 => '旂', - 194635 => '朖', - 194636 => '昆', - 194637 => '朗', - 194638 => '晑', - 194639 => '普', - 194640 => '戇', - 194641 => '棟', - 194642 => '柎', - 194643 => '柮', - 194644 => '栍', - 194645 => '枋', - 194646 => 'ć Č', - 194647 => 'ć ±', - 194648 => '湏', - 194649 => '𥓀', - 194650 => 'ćŁČ', - 194651 => '棷', - 194652 => '怆', - 194653 => '〚', - 194654 => '怹', - 194655 => '愹', - 194656 => '𡚹', - 194657 => 'đĄ›Ș', - 194658 => 'ć§Ź', - 194659 => '湛', - 194660 => 'ćš§', - 194661 => '様', - 194662 => '橊', - 194663 => '㛼', - 194665 => '揈', - 194666 => 'ćŹŸ', - 194667 => 'ćŹŸ', - 194668 => '𥧈', - 194669 => '毃', - 194670 => '毘', - 194671 => '毧', - 194672 => '毳', - 194673 => '𥏘', - 194674 => '毿', - 194675 => '氆', - 194677 => 'ć°ą', - 194678 => '㞁', - 194679 => 'ć± ', - 194680 => '江', - 194681 => '泀', - 194682 => 'ćȍ', - 194683 => '𥷀', - 194684 => '攃', - 194685 => '𥷊', - 194686 => '攟', - 194687 => '攫', - 194688 => 'ć”Œ', - 194689 => 'ć·Ą', - 194690 => 'ć·ą', - 194691 => 'ă Ż', - 194692 => 'ć·œ', - 194693 => 'ćžš', - 194694 => 'ćžœ', - 194695 => 'ćč©', - 194696 => '㥹', - 194697 => '𱆃', - 194698 => 'ăĄŒ', - 194699 => 'ćș°', - 194700 => 'ćșł', - 194701 => 'ćș¶', - 194702 => '㻊', - 194703 => 'đȘŽ’', - 194704 => 'ć»Ÿ', - 194705 => 'đąŒ±', - 194706 => 'đąŒ±', - 194707 => '舁', - 194708 => 'ćŒą', - 194709 => 'ćŒą', - 194710 => '㣇', - 194711 => '𣊾', - 194712 => '𩇚', - 194713 => 'ćœą', - 194714 => 'ćœ«', - 194715 => '㣣', - 194716 => 'ćŸš', - 194717 => '濍', - 194718 => '濗', - 194719 => 'ćżč', - 194720 => '悁', - 194721 => 'ă€ș', - 194722 => 'ă€œ', - 194723 => '悔', - 194724 => '𱛔', - 194725 => '惇', - 194726 => '慈', - 194727 => '慌', - 194728 => '慎', - 194729 => '慌', - 194730 => 'æ…ș', - 194731 => '憎', - 194732 => 'æ†Č', - 194733 => '憀', - 194734 => 'æ†Ż', - 194735 => '懞', - 194736 => 'æ‡Č', - 194737 => '懶', - 194738 => '成', - 194739 => '戛', - 194740 => '扝', - 194741 => '抱', - 194742 => '拔', - 194743 => '捐', - 194744 => '𱬌', - 194745 => '挜', - 194746 => '拌', - 194747 => '捚', - 194748 => '掃', - 194749 => '揀', - 194750 => '𹯱', - 194751 => 'æą', - 194752 => '揅', - 194753 => '掩', - 194754 => 'ăšź', - 194755 => '摩', - 194756 => '摟', - 194757 => '撝', - 194758 => '摷', - 194759 => '㩏', - 194760 => '敏', - 194761 => 'æ•Ź', - 194762 => '𣀊', - 194763 => 'æ—Ł', - 194764 => '曞', - 194765 => '晉', - 194766 => '㬙', - 194767 => '暑', - 194768 => '㏈', - 194769 => 'ă«€', - 194770 => '憒', - 194771 => '憕', - 194772 => '最', - 194773 => '暜', - 194774 => '肭', - 194775 => '䏙', - 194776 => '朗', - 194777 => '望', - 194778 => 'æœĄ', - 194779 => '杞', - 194780 => '杓', - 194781 => '𣏃', - 194782 => '㭉', - 194783 => 'æŸș', - 194784 => '枅', - 194785 => 'æĄ’', - 194786 => 'æą…', - 194787 => '𣑭', - 194788 => 'æąŽ', - 194789 => '栟', - 194790 => '怔', - 194791 => '㼝', - 194792 => 'æ„‚', - 194793 => 'æŠŁ', - 194794 => 'æ§Ș', - 194795 => 'æȘš', - 194796 => '𣚣', - 194797 => '櫛', - 194798 => '㰘', - 194799 => 'æŹĄ', - 194800 => '𣹧', - 194801 => '歔', - 194802 => '㱎', - 194803 => 'æ­Č', - 194804 => 'æźŸ', - 194805 => 'æźș', - 194806 => 'æź»', - 194807 => 'đŁȘ', - 194808 => '𡮋', - 194809 => 'đŁ«ș', - 194810 => '汎', - 194811 => 'đŁČŒ', - 194812 => 'æČż', - 194813 => 'æł', - 194814 => 'æ±§', - 194815 => '掖', - 194816 => '掟', - 194817 => 'æ”·', - 194818 => '攁', - 194819 => '攩', - 194820 => '攞', - 194821 => '涅', - 194822 => '𣮞', - 194823 => '掎', - 194824 => 'æžŻ', - 194825 => 'æčź', - 194826 => '㎳', - 194827 => '滋', - 194828 => '滇', - 194829 => '𣻑', - 194830 => 'æ·č', - 194831 => 'æœź', - 194832 => 'đŁœž', - 194833 => 'đŁŸŽ', - 194834 => 'æż†', - 194835 => 'ç€č', - 194836 => '瀞', - 194837 => '瀛', - 194838 => 'ă¶–', - 194839 => '灊', - 194840 => '灜', - 194841 => '灷', - 194842 => '炭', - 194843 => 'đ ”„', - 194844 => '煅', - 194845 => 'đ€‰Ł', - 194846 => '熜', - 194848 => '爚', - 194849 => '爔', - 194850 => '牐', - 194851 => 'đ€˜ˆ', - 194852 => '犀', - 194853 => '犕', - 194854 => 'đ€œ”', - 194855 => 'đ€ ”', - 194856 => 'çș', - 194857 => '王', - 194858 => 'ășŹ', - 194859 => '玄', - 194860 => 'ășž', - 194861 => 'ășž', - 194862 => '瑇', - 194863 => '瑜', - 194864 => '瑱', - 194865 => '璅', - 194866 => '瓊', - 194867 => 'ăŒ›', - 194868 => '甀', - 194869 => 'đ€°¶', - 194870 => '生', - 194871 => 'đ€Č’', - 194872 => '異', - 194873 => '𱆟', - 194874 => '瘐', - 194875 => 'đ€ŸĄ', - 194876 => 'đ€Ÿž', - 194877 => 'đ„„', - 194878 => 'ăżŒ', - 194879 => '䀈', - 194880 => '目', - 194881 => 'đ„ƒł', - 194882 => 'đ„ƒČ', - 194883 => 'đ„„™', - 194884 => 'đ„„ł', - 194885 => '眞', - 194886 => '真', - 194887 => '真', - 194888 => '睊', - 194889 => 'ä€č', - 194890 => '瞋', - 194891 => '䁆', - 194892 => '䂖', - 194893 => 'đ„', - 194894 => '硎', - 194895 => '籌', - 194896 => '磌', - 194897 => '䃣', - 194898 => 'đ„˜Š', - 194899 => 'ç„–', - 194900 => 'đ„šš', - 194901 => 'đ„›…', - 194902 => '犏', - 194903 => 'ç§«', - 194904 => '䄯', - 194905 => '穀', - 194906 => '穊', - 194907 => '穏', - 194908 => 'đ„„Œ', - 194909 => 'đ„Ș§', - 194910 => 'đ„Ș§', - 194912 => '䈂', - 194913 => 'đ„ź«', - 194914 => '篆', - 194915 => '築', - 194916 => '䈧', - 194917 => 'đ„Ȁ', - 194918 => '糒', - 194919 => '䊠', - 194920 => 'çłš', - 194921 => '糣', - 194922 => '简', - 194923 => 'đ„Ÿ†', - 194924 => '産', - 194925 => '䌁', - 194926 => '緇', - 194927 => '羂', - 194928 => 'çč…', - 194929 => '䌮', - 194930 => '𩈹', - 194931 => '𩉇', - 194932 => '䍙', - 194933 => '𩋙', - 194934 => 'çœș', - 194935 => 'đŠŒŸ', - 194936 => '矕', - 194937 => 'çżș', - 194938 => '者', - 194939 => '𩓚', - 194940 => '𩔣', - 194941 => '聠', - 194942 => '𩖹', - 194943 => '聰', - 194944 => '𣍟', - 194945 => '䏕', - 194946 => 'è‚Č', - 194947 => '脃', - 194948 => '䐋', - 194949 => '脟', - 194950 => 'ćȘ”', - 194951 => '𩞧', - 194952 => 'đŠž”', - 194953 => '𣎓', - 194954 => '𣎜', - 194955 => '舁', - 194956 => '舄', - 194957 => '蟞', - 194958 => '䑫', - 194959 => '芑', - 194960 => '芋', - 194961 => '芝', - 194962 => '抳', - 194963 => '花', - 194964 => 'èŠł', - 194965 => '芜', - 194966 => '苊', - 194967 => 'đŠŹŒ', - 194968 => 'è‹„', - 194969 => '茝', - 194970 => 'èŁ', - 194971 => '莭', - 194972 => 'èŒŁ', - 194973 => '莜', - 194974 => '菧', - 194975 => '著', - 194976 => '荓', - 194977 => '菊', - 194978 => '菌', - 194979 => '菜', - 194980 => 'đŠ°¶', - 194981 => 'đŠ”«', - 194982 => '𩳕', - 194983 => '䔫', - 194984 => '蓱', - 194985 => 'è“ł', - 194986 => '蔖', - 194987 => '𧏊', - 194988 => 'è•€', - 194989 => 'đŠŒŹ', - 194990 => '䕝', - 194991 => '䕡', - 194992 => 'đŠŸ±', - 194993 => '𧃒', - 194994 => '䕫', - 194995 => '虐', - 194996 => '虜', - 194997 => '虧', - 194998 => '虩', - 194999 => '蚩', - 195000 => '蚈', - 195001 => '蜎', - 195002 => 'è›ą', - 195003 => 'èč', - 195004 => '蜚', - 195005 => '蝫', - 195006 => '螆', - 195008 => 'èŸĄ', - 195009 => '蠁', - 195010 => 'ä—č', - 195011 => 'èĄ ', - 195012 => 'èĄŁ', - 195013 => '𧙧', - 195014 => 'èŁ—', - 195015 => 'èŁž', - 195016 => '䘔', - 195017 => 'èŁș', - 195018 => 'ă’»', - 195019 => 'đ§ąź', - 195020 => 'đ§„Š', - 195021 => '䚟', - 195022 => '䛇', - 195023 => 'èȘ ', - 195024 => 'è«­', - 195025 => 'èźŠ', - 195026 => '豕', - 195027 => 'đ§Čš', - 195028 => 'èČ«', - 195029 => 'èł', - 195030 => '莛', - 195031 => 'è”·', - 195032 => 'đ§ŒŻ', - 195033 => '𠠄', - 195034 => '跋', - 195035 => 'è¶Œ', - 195036 => 'è·°', - 195037 => '𠣞', - 195038 => '軔', - 195039 => '茞', - 195040 => '𹗒', - 195041 => '𹗭', - 195042 => '邔', - 195043 => '郱', - 195044 => '鄑', - 195045 => '𹜼', - 195046 => '鄛', - 195047 => '鈞', - 195048 => '鋗', - 195049 => '鋘', - 195050 => '鉌', - 195051 => 'éč', - 195052 => '鐕', - 195053 => 'đšŻș', - 195054 => '開', - 195055 => '䩕', - 195056 => '閷', - 195057 => 'đš”·', - 195058 => 'ä§Š', - 195059 => '雃', - 195060 => 'ć¶Č', - 195061 => '霣', - 195062 => 'đ©……', - 195063 => 'đ©ˆš', - 195064 => '䩟', - 195065 => 'ä©¶', - 195066 => '韠', - 195067 => '𩐊', - 195068 => 'äȘČ', - 195069 => 'đ©’–', - 195070 => '頋', - 195071 => '頋', - 195072 => 'é ©', - 195073 => 'đ©–¶', - 195074 => '飹', - 195075 => '䏳', - 195076 => '逩', - 195077 => '銧', - 195078 => '駂', - 195079 => 'é§Ÿ', - 195080 => '䯎', - 195081 => '𩏰', - 195082 => '鬒', - 195083 => '鱀', - 195084 => 'éłœ', - 195085 => '䳎', - 195086 => 'äł­', - 195087 => 'é”§', - 195088 => 'đȘƒŽ', - 195089 => 'äłž', - 195090 => 'đȘ„…', - 195091 => 'đȘˆŽ', - 195092 => 'đȘŠ‘', - 195093 => 'éș»', - 195094 => 'ä”–', - 195095 => 'é»č', - 195096 => '黟', - 195097 => '錅', - 195098 => '錏', - 195099 => '錖', - 195100 => '錻', - 195101 => 'đȘ˜€', -); diff --git a/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php b/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php deleted file mode 100644 index 1958e37..0000000 --- a/vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php +++ /dev/null @@ -1,65 +0,0 @@ - 9, - 2509 => 9, - 2637 => 9, - 2765 => 9, - 2893 => 9, - 3021 => 9, - 3149 => 9, - 3277 => 9, - 3387 => 9, - 3388 => 9, - 3405 => 9, - 3530 => 9, - 3642 => 9, - 3770 => 9, - 3972 => 9, - 4153 => 9, - 4154 => 9, - 5908 => 9, - 5940 => 9, - 6098 => 9, - 6752 => 9, - 6980 => 9, - 7082 => 9, - 7083 => 9, - 7154 => 9, - 7155 => 9, - 11647 => 9, - 43014 => 9, - 43052 => 9, - 43204 => 9, - 43347 => 9, - 43456 => 9, - 43766 => 9, - 44013 => 9, - 68159 => 9, - 69702 => 9, - 69759 => 9, - 69817 => 9, - 69939 => 9, - 69940 => 9, - 70080 => 9, - 70197 => 9, - 70378 => 9, - 70477 => 9, - 70722 => 9, - 70850 => 9, - 71103 => 9, - 71231 => 9, - 71350 => 9, - 71467 => 9, - 71737 => 9, - 71997 => 9, - 71998 => 9, - 72160 => 9, - 72244 => 9, - 72263 => 9, - 72345 => 9, - 72767 => 9, - 73028 => 9, - 73029 => 9, - 73111 => 9, -); diff --git a/vendor/symfony/polyfill-intl-idn/bootstrap.php b/vendor/symfony/polyfill-intl-idn/bootstrap.php deleted file mode 100644 index f02d5de..0000000 --- a/vendor/symfony/polyfill-intl-idn/bootstrap.php +++ /dev/null @@ -1,141 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Intl\Idn as p; - -if (extension_loaded('intl')) { - return; -} - -if (!defined('U_IDNA_PROHIBITED_ERROR')) { - define('U_IDNA_PROHIBITED_ERROR', 66560); -} -if (!defined('U_IDNA_ERROR_START')) { - define('U_IDNA_ERROR_START', 66560); -} -if (!defined('U_IDNA_UNASSIGNED_ERROR')) { - define('U_IDNA_UNASSIGNED_ERROR', 66561); -} -if (!defined('U_IDNA_CHECK_BIDI_ERROR')) { - define('U_IDNA_CHECK_BIDI_ERROR', 66562); -} -if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) { - define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563); -} -if (!defined('U_IDNA_ACE_PREFIX_ERROR')) { - define('U_IDNA_ACE_PREFIX_ERROR', 66564); -} -if (!defined('U_IDNA_VERIFICATION_ERROR')) { - define('U_IDNA_VERIFICATION_ERROR', 66565); -} -if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) { - define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566); -} -if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) { - define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567); -} -if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) { - define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568); -} -if (!defined('U_IDNA_ERROR_LIMIT')) { - define('U_IDNA_ERROR_LIMIT', 66569); -} -if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) { - define('U_STRINGPREP_PROHIBITED_ERROR', 66560); -} -if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) { - define('U_STRINGPREP_UNASSIGNED_ERROR', 66561); -} -if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) { - define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562); -} -if (!defined('IDNA_DEFAULT')) { - define('IDNA_DEFAULT', 0); -} -if (!defined('IDNA_ALLOW_UNASSIGNED')) { - define('IDNA_ALLOW_UNASSIGNED', 1); -} -if (!defined('IDNA_USE_STD3_RULES')) { - define('IDNA_USE_STD3_RULES', 2); -} -if (!defined('IDNA_CHECK_BIDI')) { - define('IDNA_CHECK_BIDI', 4); -} -if (!defined('IDNA_CHECK_CONTEXTJ')) { - define('IDNA_CHECK_CONTEXTJ', 8); -} -if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) { - define('IDNA_NONTRANSITIONAL_TO_ASCII', 16); -} -if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) { - define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32); -} -if (!defined('INTL_IDNA_VARIANT_2003')) { - define('INTL_IDNA_VARIANT_2003', 0); -} -if (!defined('INTL_IDNA_VARIANT_UTS46')) { - define('INTL_IDNA_VARIANT_UTS46', 1); -} -if (!defined('IDNA_ERROR_EMPTY_LABEL')) { - define('IDNA_ERROR_EMPTY_LABEL', 1); -} -if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) { - define('IDNA_ERROR_LABEL_TOO_LONG', 2); -} -if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) { - define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4); -} -if (!defined('IDNA_ERROR_LEADING_HYPHEN')) { - define('IDNA_ERROR_LEADING_HYPHEN', 8); -} -if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) { - define('IDNA_ERROR_TRAILING_HYPHEN', 16); -} -if (!defined('IDNA_ERROR_HYPHEN_3_4')) { - define('IDNA_ERROR_HYPHEN_3_4', 32); -} -if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) { - define('IDNA_ERROR_LEADING_COMBINING_MARK', 64); -} -if (!defined('IDNA_ERROR_DISALLOWED')) { - define('IDNA_ERROR_DISALLOWED', 128); -} -if (!defined('IDNA_ERROR_PUNYCODE')) { - define('IDNA_ERROR_PUNYCODE', 256); -} -if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) { - define('IDNA_ERROR_LABEL_HAS_DOT', 512); -} -if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) { - define('IDNA_ERROR_INVALID_ACE_LABEL', 1024); -} -if (!defined('IDNA_ERROR_BIDI')) { - define('IDNA_ERROR_BIDI', 2048); -} -if (!defined('IDNA_ERROR_CONTEXTJ')) { - define('IDNA_ERROR_CONTEXTJ', 4096); -} - -if (PHP_VERSION_ID < 70400) { - if (!function_exists('idn_to_ascii')) { - function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); } - } - if (!function_exists('idn_to_utf8')) { - function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_2003, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); } - } -} else { - if (!function_exists('idn_to_ascii')) { - function idn_to_ascii($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_ascii($domain, $options, $variant, $idna_info); } - } - if (!function_exists('idn_to_utf8')) { - function idn_to_utf8($domain, $options = IDNA_DEFAULT, $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = array()) { return p\Idn::idn_to_utf8($domain, $options, $variant, $idna_info); } - } -} diff --git a/vendor/symfony/polyfill-intl-idn/composer.json b/vendor/symfony/polyfill-intl-idn/composer.json deleted file mode 100644 index af34193..0000000 --- a/vendor/symfony/polyfill-intl-idn/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "symfony/polyfill-intl-idn", - "type": "library", - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=5.3.3", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" }, - "files": [ "bootstrap.php" ] - }, - "suggest": { - "ext-intl": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/vendor/symfony/polyfill-intl-normalizer/LICENSE b/vendor/symfony/polyfill-intl-normalizer/LICENSE deleted file mode 100644 index 4cd8bdd..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015-2019 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/polyfill-intl-normalizer/Normalizer.php b/vendor/symfony/polyfill-intl-normalizer/Normalizer.php deleted file mode 100644 index a60fae6..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/Normalizer.php +++ /dev/null @@ -1,308 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Intl\Normalizer; - -/** - * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension. - * - * It has been validated with Unicode 6.3 Normalization Conformance Test. - * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations. - * - * @author Nicolas Grekas - * - * @internal - */ -class Normalizer -{ - const FORM_D = \Normalizer::FORM_D; - const FORM_KD = \Normalizer::FORM_KD; - const FORM_C = \Normalizer::FORM_C; - const FORM_KC = \Normalizer::FORM_KC; - const NFD = \Normalizer::NFD; - const NFKD = \Normalizer::NFKD; - const NFC = \Normalizer::NFC; - const NFKC = \Normalizer::NFKC; - - private static $C; - private static $D; - private static $KD; - private static $cC; - private static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4); - private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"; - - public static function isNormalized($s, $form = self::NFC) - { - if (!\in_array($form, array(self::NFD, self::NFKD, self::NFC, self::NFKC))) { - return false; - } - $s = (string) $s; - if (!isset($s[strspn($s, self::$ASCII)])) { - return true; - } - if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) { - return true; - } - - return self::normalize($s, $form) === $s; - } - - public static function normalize($s, $form = self::NFC) - { - $s = (string) $s; - if (!preg_match('//u', $s)) { - return false; - } - - switch ($form) { - case self::NFC: $C = true; $K = false; break; - case self::NFD: $C = false; $K = false; break; - case self::NFKC: $C = true; $K = true; break; - case self::NFKD: $C = false; $K = true; break; - default: - if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) { - return $s; - } - - return false; - } - - if ('' === $s) { - return ''; - } - - if ($K && null === self::$KD) { - self::$KD = self::getData('compatibilityDecomposition'); - } - - if (null === self::$D) { - self::$D = self::getData('canonicalDecomposition'); - self::$cC = self::getData('combiningClass'); - } - - if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) { - mb_internal_encoding('8bit'); - } - - $r = self::decompose($s, $K); - - if ($C) { - if (null === self::$C) { - self::$C = self::getData('canonicalComposition'); - } - - $r = self::recompose($r); - } - if (null !== $mbEncoding) { - mb_internal_encoding($mbEncoding); - } - - return $r; - } - - private static function recompose($s) - { - $ASCII = self::$ASCII; - $compMap = self::$C; - $combClass = self::$cC; - $ulenMask = self::$ulenMask; - - $result = $tail = ''; - - $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"]; - $len = \strlen($s); - - $lastUchr = substr($s, 0, $i); - $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0; - - while ($i < $len) { - if ($s[$i] < "\x80") { - // ASCII chars - - if ($tail) { - $lastUchr .= $tail; - $tail = ''; - } - - if ($j = strspn($s, $ASCII, $i + 1)) { - $lastUchr .= substr($s, $i, $j); - $i += $j; - } - - $result .= $lastUchr; - $lastUchr = $s[$i]; - $lastUcls = 0; - ++$i; - continue; - } - - $ulen = $ulenMask[$s[$i] & "\xF0"]; - $uchr = substr($s, $i, $ulen); - - if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr - || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr - || $lastUcls) { - // Table lookup and combining chars composition - - $ucls = isset($combClass[$uchr]) ? $combClass[$uchr] : 0; - - if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) { - $lastUchr = $compMap[$lastUchr.$uchr]; - } elseif ($lastUcls = $ucls) { - $tail .= $uchr; - } else { - if ($tail) { - $lastUchr .= $tail; - $tail = ''; - } - - $result .= $lastUchr; - $lastUchr = $uchr; - } - } else { - // Hangul chars - - $L = \ord($lastUchr[2]) - 0x80; - $V = \ord($uchr[2]) - 0xA1; - $T = 0; - - $uchr = substr($s, $i + $ulen, 3); - - if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") { - $T = \ord($uchr[2]) - 0xA7; - 0 > $T && $T += 0x40; - $ulen += 3; - } - - $L = 0xAC00 + ($L * 21 + $V) * 28 + $T; - $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F); - } - - $i += $ulen; - } - - return $result.$lastUchr.$tail; - } - - private static function decompose($s, $c) - { - $result = ''; - - $ASCII = self::$ASCII; - $decompMap = self::$D; - $combClass = self::$cC; - $ulenMask = self::$ulenMask; - if ($c) { - $compatMap = self::$KD; - } - - $c = array(); - $i = 0; - $len = \strlen($s); - - while ($i < $len) { - if ($s[$i] < "\x80") { - // ASCII chars - - if ($c) { - ksort($c); - $result .= implode('', $c); - $c = array(); - } - - $j = 1 + strspn($s, $ASCII, $i + 1); - $result .= substr($s, $i, $j); - $i += $j; - continue; - } - - $ulen = $ulenMask[$s[$i] & "\xF0"]; - $uchr = substr($s, $i, $ulen); - $i += $ulen; - - if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) { - // Table lookup - - if ($uchr !== $j = isset($compatMap[$uchr]) ? $compatMap[$uchr] : (isset($decompMap[$uchr]) ? $decompMap[$uchr] : $uchr)) { - $uchr = $j; - - $j = \strlen($uchr); - $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"]; - - if ($ulen != $j) { - // Put trailing chars in $s - - $j -= $ulen; - $i -= $j; - - if (0 > $i) { - $s = str_repeat(' ', -$i).$s; - $len -= $i; - $i = 0; - } - - while ($j--) { - $s[$i + $j] = $uchr[$ulen + $j]; - } - - $uchr = substr($uchr, 0, $ulen); - } - } - if (isset($combClass[$uchr])) { - // Combining chars, for sorting - - if (!isset($c[$combClass[$uchr]])) { - $c[$combClass[$uchr]] = ''; - } - $c[$combClass[$uchr]] .= $uchr; - continue; - } - } else { - // Hangul chars - - $uchr = unpack('C*', $uchr); - $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80; - - $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588)) - ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28)); - - if ($j %= 28) { - $uchr .= $j < 25 - ? ("\xE1\x86".\chr(0xA7 + $j)) - : ("\xE1\x87".\chr(0x67 + $j)); - } - } - if ($c) { - ksort($c); - $result .= implode('', $c); - $c = array(); - } - - $result .= $uchr; - } - - if ($c) { - ksort($c); - $result .= implode('', $c); - } - - return $result; - } - - private static function getData($file) - { - if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { - return require $file; - } - - return false; - } -} diff --git a/vendor/symfony/polyfill-intl-normalizer/README.md b/vendor/symfony/polyfill-intl-normalizer/README.md deleted file mode 100644 index 15060c5..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/README.md +++ /dev/null @@ -1,14 +0,0 @@ -Symfony Polyfill / Intl: Normalizer -=================================== - -This component provides a fallback implementation for the -[`Normalizer`](https://php.net/Normalizer) class provided -by the [Intl](https://php.net/intl) extension. - -More information can be found in the -[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). - -License -======= - -This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php deleted file mode 100644 index ca18eff..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php +++ /dev/null @@ -1,17 +0,0 @@ - 'À', - 'Á' => 'Á', - 'Â' => 'Â', - 'Ã' => 'Ã', - 'Ä' => 'Ä', - 'Å' => 'Å', - 'Ç' => 'Ç', - 'È' => 'È', - 'É' => 'É', - 'Ê' => 'Ê', - 'Ë' => 'Ë', - 'Ì' => 'Ì', - 'Í' => 'Í', - 'Î' => 'Î', - 'Ï' => 'Ï', - 'Ñ' => 'Ñ', - 'Ò' => 'Ò', - 'Ó' => 'Ó', - 'Ô' => 'Ô', - 'Õ' => 'Õ', - 'Ö' => 'Ö', - 'Ù' => 'Ù', - 'Ú' => 'Ú', - 'Û' => 'Û', - 'Ü' => 'Ü', - 'Ý' => 'Ý', - 'à' => 'Ă ', - 'á' => 'ĂĄ', - 'â' => 'Ăą', - 'ã' => 'ĂŁ', - 'ä' => 'Ă€', - 'å' => 'Ă„', - 'ç' => 'ç', - 'è' => 'Ăš', - 'é' => 'Ă©', - 'ê' => 'ĂȘ', - 'ë' => 'Ă«', - 'ì' => 'ĂŹ', - 'í' => 'Ă­', - 'î' => 'Ăź', - 'ï' => 'ĂŻ', - 'ñ' => 'ñ', - 'ò' => 'ĂČ', - 'ó' => 'Ăł', - 'ô' => 'ĂŽ', - 'õ' => 'Ă”', - 'ö' => 'ö', - 'ù' => 'Ăč', - 'ú' => 'Ăș', - 'û' => 'Ă»', - 'ü' => 'ĂŒ', - 'ý' => 'Ăœ', - 'ÿ' => 'Ăż', - 'Ā' => 'Ā', - 'ā' => 'ā', - 'Ă' => 'Ă', - 'ă' => 'ă', - 'AÌš' => 'Ą', - 'aÌš' => 'ą', - 'Ć' => 'Ć', - 'ć' => 'ć', - 'Ĉ' => 'Ĉ', - 'ĉ' => 'ĉ', - 'Ċ' => 'Ċ', - 'ċ' => 'ċ', - 'Č' => 'Č', - 'č' => 'č', - 'Ď' => 'Ď', - 'ď' => 'ď', - 'Ē' => 'Ē', - 'ē' => 'ē', - 'Ĕ' => 'Ĕ', - 'ĕ' => 'ĕ', - 'Ė' => 'Ė', - 'ė' => 'ė', - 'EÌš' => 'Ę', - 'eÌš' => 'ę', - 'Ě' => 'Ě', - 'ě' => 'ě', - 'Ĝ' => 'Ĝ', - 'ĝ' => 'ĝ', - 'Ğ' => 'Ğ', - 'ğ' => 'ğ', - 'Ġ' => 'Ä ', - 'ġ' => 'ÄĄ', - 'Ģ' => 'Äą', - 'ģ' => 'ÄŁ', - 'Ĥ' => 'Ä€', - 'ĥ' => 'Ä„', - 'Ĩ' => 'Äš', - 'ĩ' => 'Ä©', - 'Ī' => 'ÄȘ', - 'ī' => 'Ä«', - 'Ĭ' => 'ÄŹ', - 'ĭ' => 'Ä­', - 'IÌš' => 'Äź', - 'iÌš' => 'ÄŻ', - 'İ' => 'İ', - 'Ĵ' => 'ÄŽ', - 'ĵ' => 'Ä”', - 'Ķ' => 'Ķ', - 'ķ' => 'Ä·', - 'Ĺ' => 'Äč', - 'ĺ' => 'Äș', - 'Ļ' => 'Ä»', - 'ļ' => 'ÄŒ', - 'Ľ' => 'Äœ', - 'ľ' => 'ÄŸ', - 'Ń' => 'ƃ', - 'ń' => 'Ƅ', - 'Ņ' => 'ƅ', - 'ņ' => 'Ɔ', - 'Ň' => 'Ƈ', - 'ň' => 'ƈ', - 'Ō' => 'Ì', - 'ō' => 'ƍ', - 'Ŏ' => 'Ǝ', - 'ŏ' => 'Ə', - 'Ő' => 'Ɛ', - 'ő' => 'Ƒ', - 'Ŕ' => 'Ɣ', - 'ŕ' => 'ƕ', - 'Ŗ' => 'Ɩ', - 'ŗ' => 'Ɨ', - 'Ř' => 'Ƙ', - 'ř' => 'ƙ', - 'Ś' => 'Ú', - 'ś' => 'ƛ', - 'Ŝ' => 'Ü', - 'ŝ' => 'Ɲ', - 'Ş' => 'ƞ', - 'ş' => 'ß', - 'Š' => 'Ć ', - 'š' => 'ĆĄ', - 'Ţ' => 'Ćą', - 'ţ' => 'ĆŁ', - 'Ť' => 'Ć€', - 'ť' => 'Ć„', - 'Ũ' => 'Ćš', - 'ũ' => 'Ć©', - 'Ū' => 'ĆȘ', - 'ū' => 'Ć«', - 'Ŭ' => 'ĆŹ', - 'ŭ' => 'Ć­', - 'Ů' => 'Ćź', - 'ů' => 'ĆŻ', - 'Ű' => 'ư', - 'ű' => 'Ʊ', - 'UÌš' => 'ĆČ', - 'uÌš' => 'Ćł', - 'Ŵ' => 'ĆŽ', - 'ŵ' => 'Ć”', - 'Ŷ' => 'ƶ', - 'ŷ' => 'Ć·', - 'Ÿ' => 'Ćž', - 'Ź' => 'Ćč', - 'ź' => 'Ćș', - 'Ż' => 'Ć»', - 'ż' => 'ĆŒ', - 'Ž' => 'Ćœ', - 'ž' => 'ĆŸ', - 'Ơ' => 'Æ ', - 'ơ' => 'ÆĄ', - 'Ư' => 'ÆŻ', - 'ư' => 'ư', - 'Ǎ' => 'Ǎ', - 'ǎ' => 'ǎ', - 'Ǐ' => 'Ǐ', - 'ǐ' => 'ǐ', - 'Ǒ' => 'Ǒ', - 'ǒ' => 'ǒ', - 'Ǔ' => 'Ǔ', - 'ǔ' => 'ǔ', - 'ĂœÌ„' => 'Ǖ', - 'ĂŒÌ„' => 'ǖ', - 'ĂœÌ' => 'Ǘ', - 'ĂŒÌ' => 'ǘ', - 'ĂœÌŒ' => 'Ǚ', - 'ĂŒÌŒ' => 'ǚ', - 'ĂœÌ€' => 'Ǜ', - 'ĂŒÌ€' => 'ǜ', - 'Ă„Ì„' => 'Ǟ', - 'Ă€Ì„' => 'ǟ', - 'ÈŠÌ„' => 'Ç ', - 'ǡ' => 'ÇĄ', - 'Ă†Ì„' => 'Çą', - 'ĂŠÌ„' => 'ÇŁ', - 'Ǧ' => 'ÇŠ', - 'ǧ' => 'ǧ', - 'Ǩ' => 'Çš', - 'ǩ' => 'Ç©', - 'OÌš' => 'ÇȘ', - 'oÌš' => 'Ç«', - 'ÇȘ̄' => 'ÇŹ', - 'ǭ' => 'Ç­', - 'Ǯ' => 'Çź', - 'ǯ' => 'ÇŻ', - 'ǰ' => 'ǰ', - 'Ǵ' => 'ÇŽ', - 'ǵ' => 'Ç”', - 'Ǹ' => 'Çž', - 'ǹ' => 'Çč', - 'Ă…Ì' => 'Çș', - 'Ă„Ì' => 'Ç»', - 'Ă†Ì' => 'ÇŒ', - 'ĂŠÌ' => 'Çœ', - 'Ă˜Ì' => 'ÇŸ', - 'ĂžÌ' => 'Çż', - 'Ȁ' => 'Ȁ', - 'ȁ' => 'ȁ', - 'Ȃ' => 'Ȃ', - 'ȃ' => 'ȃ', - 'Ȅ' => 'Ȅ', - 'ȅ' => 'ȅ', - 'Ȇ' => 'Ȇ', - 'ȇ' => 'ȇ', - 'Ȉ' => 'Ȉ', - 'ȉ' => 'ȉ', - 'Ȋ' => 'Ȋ', - 'ȋ' => 'ȋ', - 'Ȍ' => 'Ȍ', - 'ȍ' => 'ȍ', - 'Ȏ' => 'Ȏ', - 'ȏ' => 'ȏ', - 'Ȑ' => 'Ȑ', - 'ȑ' => 'ȑ', - 'Ȓ' => 'Ȓ', - 'ȓ' => 'ȓ', - 'Ȕ' => 'Ȕ', - 'ȕ' => 'ȕ', - 'Ȗ' => 'Ȗ', - 'ȗ' => 'ȗ', - 'SÌŠ' => 'Ș', - 'sÌŠ' => 'ș', - 'TÌŠ' => 'Ț', - 'tÌŠ' => 'ț', - 'Ȟ' => 'Ȟ', - 'ȟ' => 'ȟ', - 'Ȧ' => 'ÈŠ', - 'ȧ' => 'ȧ', - 'Ȩ' => 'Èš', - 'ȩ' => 'È©', - 'Ă–Ì„' => 'ÈȘ', - 'Ă¶Ì„' => 'È«', - 'Ă•Ì„' => 'ÈŹ', - 'Ă”Ì„' => 'È­', - 'Ȯ' => 'Èź', - 'ȯ' => 'ÈŻ', - 'ÈźÌ„' => 'Ȱ', - 'ÈŻÌ„' => 'ȱ', - 'Ȳ' => 'ÈČ', - 'ȳ' => 'Èł', - 'š́' => '΅', - 'Ά' => 'Ά', - 'Έ' => 'Έ', - 'Ή' => 'Ή', - 'Ί' => 'Ί', - 'Ό' => 'Ό', - '΄́' => 'Ύ', - 'Ώ' => 'Ώ', - 'ΐ' => 'ΐ', - 'Ϊ' => 'ÎȘ', - '΄̈' => 'Ϋ', - 'ά' => 'ÎŹ', - 'Δ́' => 'έ', - 'ή' => 'Îź', - 'Îč́' => 'ÎŻ', - 'ΰ' => 'ΰ', - 'Îč̈' => 'ϊ', - 'ϋ' => 'ϋ', - 'ÎżÌ' => 'ό', - 'ύ' => 'ύ', - 'ώ' => 'ώ', - 'ϓ' => 'ϓ', - 'ϔ' => 'ϔ', - 'Đ•Ì€' => 'Ѐ', - 'Đ•Ìˆ' => 'Ё', - 'Đ“Ì' => 'Ѓ', - 'Đ†Ìˆ' => 'Ї', - 'ĐšÌ' => 'Ќ', - 'Đ˜Ì€' => 'Ѝ', - 'ĐŁÌ†' => 'Ў', - 'Đ˜Ì†' => 'Й', - 'ĐžÌ†' => 'Đč', - 'Đ”Ì€' => 'ѐ', - 'Đ”Ìˆ' => 'ё', - 'ĐłÌ' => 'ѓ', - 'Ń–Ìˆ' => 'ї', - 'Đș́' => 'ќ', - 'ĐžÌ€' => 'ѝ', - 'ŃƒÌ†' => 'ў', - 'ŃŽÌ' => 'Ѷ', - 'Ń”Ì' => 'Ń·', - 'Đ–Ì†' => 'Ӂ', - 'Đ¶Ì†' => 'ӂ', - 'ĐÌ†' => 'Ӑ', - 'Đ°Ì†' => 'ӑ', - 'ĐÌˆ' => 'Ӓ', - 'Đ°Ìˆ' => 'ӓ', - 'Đ•Ì†' => 'Ӗ', - 'Đ”Ì†' => 'ӗ', - 'Ӛ' => 'Ӛ', - 'ӛ' => 'ӛ', - 'Đ–Ìˆ' => 'Ӝ', - 'Đ¶Ìˆ' => 'ӝ', - 'Đ—Ìˆ' => 'Ӟ', - 'Đ·Ìˆ' => 'ӟ', - 'Đ˜Ì„' => 'Óą', - 'ĐžÌ„' => 'ÓŁ', - 'Đ˜Ìˆ' => 'Ó€', - 'ĐžÌˆ' => 'Ó„', - 'ĐžÌˆ' => 'ÓŠ', - 'ĐŸÌˆ' => 'Ó§', - 'Ӛ̈' => 'ÓȘ', - 'ӫ' => 'Ó«', - 'Đ­Ìˆ' => 'ÓŹ', - 'ŃÌˆ' => 'Ó­', - 'ĐŁÌ„' => 'Óź', - 'ŃƒÌ„' => 'ÓŻ', - 'ĐŁÌˆ' => 'Ó°', - 'ŃƒÌˆ' => 'Ó±', - 'ĐŁÌ‹' => 'ÓČ', - 'ŃƒÌ‹' => 'Ół', - 'Đ§Ìˆ' => 'ÓŽ', - 'Ń‡Ìˆ' => 'Ó”', - 'Đ«Ìˆ' => 'Óž', - 'Ń‹Ìˆ' => 'Óč', - 'Ű§Ù“' => 'Űą', - 'Ű§Ù”' => 'ŰŁ', - 'ؤ' => 'Ű€', - 'Ű§Ù•' => 'Ű„', - 'ئ' => 'ŰŠ', - 'ۀ' => 'ۀ', - 'ۂ' => 'ۂ', - 'ۓ' => 'ۓ', - 'à€šà€Œ' => 'à€©', - 'à€°à€Œ' => 'à€±', - 'à€łà€Œ' => 'à€Ž', - 'à§‡àŠŸ' => 'ো', - 'ৌ' => 'ৌ', - 'ୈ' => 'ୈ', - 'à­‡àŹŸ' => 'ୋ', - 'ୌ' => 'ୌ', - 'àź’àŻ—' => 'àź”', - 'àŻ†àźŸ' => 'àŻŠ', - 'àŻ‡àźŸ' => 'àŻ‹', - 'àŻ†àŻ—' => 'àŻŒ', - 'ై' => 'ై', - 'àČżàł•' => 'àł€', - 'àł†àł•' => 'àł‡', - 'àł†àł–' => 'àłˆ', - 'àł†àł‚' => 'àłŠ', - 'àłŠàł•' => 'àł‹', - 'à”†àŽŸ' => 'à”Š', - 'à”‡àŽŸ' => 'à”‹', - 'à”†à”—' => 'à”Œ', - 'ේ' => 'ේ', - 'ො' => 'ො', - 'ෝ' => 'ෝ', - 'ෞ' => 'ෞ', - 'ငဟ' => 'ဩ', - 'ᏅᏔ' => 'ᬆ', - 'ᏇᏔ' => 'Ꮘ', - 'ᏉᏔ' => 'ᬊ', - 'ᏋᏔ' => 'ᬌ', - 'áŹáŹ”' => 'ᬎ', - 'ᏑᏔ' => 'ᬒ', - 'áŹșᏔ' => 'ᏻ', - 'áŹŒáŹ”' => 'áŹœ', - 'áŹŸáŹ”' => 'ᭀ', - '᏿Ꮤ' => 'ᭁ', - 'ᭂᏔ' => 'ᭃ', - 'AÌ„' => 'ᾀ', - 'aÌ„' => 'ខ', - 'Ḃ' => 'ᾂ', - 'ḃ' => 'ឃ', - 'BÌŁ' => 'ᾄ', - 'bÌŁ' => 'ᾅ', - 'Ḇ' => 'ᾆ', - 'ḇ' => 'ᾇ', - 'Ă‡Ì' => 'ឈ', - 'Ă§Ì' => 'ᾉ', - 'Ḋ' => 'ᾊ', - 'ḋ' => 'ᾋ', - 'DÌŁ' => 'ᾌ', - 'dÌŁ' => 'ឍ', - 'Ḏ' => 'ᾎ', - 'ḏ' => 'ត', - 'Ḑ' => 'ថ', - 'ḑ' => 'ᾑ', - 'DÌ­' => 'ᾒ', - 'dÌ­' => 'ᾓ', - 'Ḕ' => 'ᾔ', - 'ḕ' => 'ᾕ', - 'Ḗ' => 'ᾖ', - 'ḗ' => 'ᾗ', - 'EÌ­' => 'ម', - 'eÌ­' => 'ᾙ', - 'Ḛ' => 'ᾚ', - 'ḛ' => 'ᾛ', - 'Ț̆' => 'ᾜ', - 'ḝ' => 'ឝ', - 'Ḟ' => 'ᾞ', - 'ḟ' => 'ᾟ', - 'Ḡ' => 'áž ', - 'ḡ' => 'ឥ', - 'Ḣ' => 'ážą', - 'ḣ' => 'ឣ', - 'HÌŁ' => 'ក', - 'hÌŁ' => 'áž„', - 'Ḧ' => 'ដ', - 'ḧ' => 'áž§', - 'Ḩ' => 'ážš', - 'ḩ' => 'áž©', - 'HÌź' => 'ážȘ', - 'hÌź' => 'áž«', - 'Ḭ' => 'ត', - 'ḭ' => 'áž­', - 'ĂÌ' => 'ážź', - 'ĂŻÌ' => 'ឯ', - 'Ḱ' => 'áž°', - 'ḱ' => 'áž±', - 'KÌŁ' => 'ážČ', - 'kÌŁ' => 'ážł', - 'Ḵ' => 'ណ', - 'ḵ' => 'áž”', - 'LÌŁ' => 'áž¶', - 'lÌŁ' => 'áž·', - 'áž¶Ì„' => 'ážž', - 'áž·Ì„' => 'ážč', - 'Ḻ' => 'ážș', - 'ḻ' => 'áž»', - 'LÌ­' => 'ឌ', - 'lÌ­' => 'ážœ', - 'Ḿ' => 'ស', - 'ḿ' => 'ážż', - 'Ṁ' => 'áč€', - 'ṁ' => 'áč', - 'MÌŁ' => 'áč‚', - 'mÌŁ' => 'áčƒ', - 'Ṅ' => 'áč„', - 'ṅ' => 'áč…', - 'NÌŁ' => 'áč†', - 'nÌŁ' => 'áč‡', - 'Ṉ' => 'áčˆ', - 'ṉ' => 'áč‰', - 'NÌ­' => 'áčŠ', - 'nÌ­' => 'áč‹', - 'Ă•Ì' => 'áčŒ', - 'Ă”Ì' => 'áč', - 'Ă•Ìˆ' => 'áčŽ', - 'Ă”Ìˆ' => 'áč', - 'ĆŒÌ€' => 'áč', - 'ĆÌ€' => 'áč‘', - 'ĆŒÌ' => 'áč’', - 'ĆÌ' => 'áč“', - 'Ṕ' => 'áč”', - 'ṕ' => 'áč•', - 'Ṗ' => 'áč–', - 'ṗ' => 'áč—', - 'Ṙ' => 'áč˜', - 'ṙ' => 'áč™', - 'RÌŁ' => 'áčš', - 'rÌŁ' => 'áč›', - 'áčšÌ„' => 'áčœ', - 'áč›Ì„' => 'áč', - 'Ṟ' => 'áčž', - 'ṟ' => 'áčŸ', - 'Ṡ' => 'áč ', - 'ṡ' => 'áčĄ', - 'SÌŁ' => 'áčą', - 'sÌŁ' => 'áčŁ', - 'ĆšÌ‡' => 'áč€', - 'Ć›Ì‡' => 'áč„', - 'Ć Ì‡' => 'áčŠ', - 'ĆĄÌ‡' => 'áč§', - 'áčąÌ‡' => 'áčš', - 'áčŁÌ‡' => 'áč©', - 'Ṫ' => 'áčȘ', - 'ṫ' => 'áč«', - 'TÌŁ' => 'áčŹ', - 'tÌŁ' => 'áč­', - 'Ṯ' => 'áčź', - 'ṯ' => 'áčŻ', - 'TÌ­' => 'áč°', - 'tÌ­' => 'áč±', - 'UÌ€' => 'áčČ', - 'uÌ€' => 'áčł', - 'Ṵ' => 'áčŽ', - 'ṵ' => 'áč”', - 'UÌ­' => 'áč¶', - 'uÌ­' => 'áč·', - 'ĆšÌ' => 'áčž', - 'Ć©Ì' => 'áčč', - 'ĆȘ̈' => 'áčș', - 'Ć«Ìˆ' => 'áč»', - 'Ṽ' => 'áčŒ', - 'ṽ' => 'áčœ', - 'VÌŁ' => 'áčŸ', - 'vÌŁ' => 'áčż', - 'Ẁ' => 'áș€', - 'ẁ' => 'áș', - 'Ẃ' => 'áș‚', - 'ẃ' => 'áșƒ', - 'Ẅ' => 'áș„', - 'ẅ' => 'áș…', - 'Ẇ' => 'áș†', - 'ẇ' => 'áș‡', - 'WÌŁ' => 'áșˆ', - 'wÌŁ' => 'áș‰', - 'Ẋ' => 'áșŠ', - 'ẋ' => 'áș‹', - 'Ẍ' => 'áșŒ', - 'ẍ' => 'áș', - 'Ẏ' => 'áșŽ', - 'ẏ' => 'áș', - 'Ẑ' => 'áș', - 'ẑ' => 'áș‘', - 'ZÌŁ' => 'áș’', - 'zÌŁ' => 'áș“', - 'Ẕ' => 'áș”', - 'ẕ' => 'áș•', - 'ẖ' => 'áș–', - 'ẗ' => 'áș—', - 'ẘ' => 'áș˜', - 'ẙ' => 'áș™', - 'ĆżÌ‡' => 'áș›', - 'AÌŁ' => 'áș ', - 'aÌŁ' => 'áșĄ', - 'Ả' => 'áșą', - 'ả' => 'áșŁ', - 'Ă‚Ì' => 'áș€', - 'ĂąÌ' => 'áș„', - 'Ă‚Ì€' => 'áșŠ', - 'ĂąÌ€' => 'áș§', - 'Ă‚Ì‰' => 'áșš', - 'ĂąÌ‰' => 'áș©', - 'Ă‚Ìƒ' => 'áșȘ', - 'ĂąÌƒ' => 'áș«', - 'áș Ì‚' => 'áșŹ', - 'áșĄÌ‚' => 'áș­', - 'Ắ' => 'áșź', - 'ắ' => 'áșŻ', - 'Ằ' => 'áș°', - 'ằ' => 'áș±', - 'Ẳ' => 'áșČ', - 'ẳ' => 'áșł', - 'Ẵ' => 'áșŽ', - 'ẵ' => 'áș”', - 'áș Ì†' => 'áș¶', - 'áșĄÌ†' => 'áș·', - 'EÌŁ' => 'áșž', - 'eÌŁ' => 'áșč', - 'Ẻ' => 'áșș', - 'ẻ' => 'áș»', - 'Ẽ' => 'áșŒ', - 'ẽ' => 'áșœ', - 'ĂŠÌ' => 'áșŸ', - 'ĂȘ́' => 'áșż', - 'ĂŠÌ€' => 'Ề', - 'ĂȘ̀' => 'ề', - 'ĂŠÌ‰' => 'Ể', - 'ĂȘ̉' => 'ể', - 'ĂŠÌƒ' => 'Ễ', - 'ĂȘ̃' => 'ễ', - 'áșžÌ‚' => 'Ệ', - 'áșč̂' => 'ệ', - 'Ỉ' => 'Ỉ', - 'ỉ' => 'ỉ', - 'IÌŁ' => 'Ị', - 'iÌŁ' => 'ị', - 'OÌŁ' => 'Ọ', - 'oÌŁ' => 'ọ', - 'Ỏ' => 'Ỏ', - 'ỏ' => 'ỏ', - 'Ă”Ì' => 'Ố', - 'ĂŽÌ' => 'ố', - 'Ă”Ì€' => 'Ồ', - 'ĂŽÌ€' => 'ồ', - 'Ă”Ì‰' => 'Ổ', - 'ĂŽÌ‰' => 'ổ', - 'Ă”Ìƒ' => 'Ỗ', - 'ĂŽÌƒ' => 'ỗ', - 'Ộ' => 'Ộ', - 'ộ' => 'ộ', - 'Ớ' => 'Ớ', - 'ÆĄÌ' => 'ớ', - 'Ờ' => 'Ờ', - 'ÆĄÌ€' => 'ờ', - 'Ở' => 'Ở', - 'ÆĄÌ‰' => 'ở', - 'Ỡ' => 'á» ', - 'ÆĄÌƒ' => 'ụ', - 'Æ ÌŁ' => 'ỹ', - 'ÆĄÌŁ' => 'ợ', - 'UÌŁ' => 'Ề', - 'uÌŁ' => 'Ễ', - 'Ủ' => 'Ị', - 'ủ' => 'á»§', - 'ÆŻÌ' => 'Ớ', - 'ứ' => 'ứ', - 'ÆŻÌ€' => 'á»Ș', - 'ừ' => 'ừ', - 'ÆŻÌ‰' => 'ỏ', - 'ử' => 'á»­', - 'ÆŻÌƒ' => 'ở', - 'ữ' => 'ữ', - 'ÆŻÌŁ' => 'á»°', - 'Æ°ÌŁ' => 'á»±', - 'Ỳ' => 'á»Č', - 'ỳ' => 'ỳ', - 'YÌŁ' => 'Ỏ', - 'yÌŁ' => 'á»”', - 'Ỷ' => 'á»¶', - 'ỷ' => 'á»·', - 'Ỹ' => 'Ở', - 'ỹ' => 'á»č', - 'ἀ' => 'ጀ', - 'ἁ' => 'ጁ', - 'ጀ̀' => 'ጂ', - 'ጁ̀' => 'ጃ', - 'ጀ́' => 'ጄ', - 'ጁ́' => 'ጅ', - 'ጀ͂' => 'ጆ', - 'ጁ͂' => 'ጇ', - 'Ἀ' => 'ገ', - 'Ἁ' => 'ጉ', - 'ገ̀' => 'ጊ', - 'ጉ̀' => 'ጋ', - 'ገ́' => 'ጌ', - 'ጉ́' => 'ግ', - 'ገ͂' => 'ጎ', - 'ጉ͂' => 'ጏ', - 'Δ̓' => 'ጐ', - 'Δ̔' => '጑', - 'ጐ̀' => 'ጒ', - '጑̀' => 'ጓ', - 'ጐ́' => 'ጔ', - '጑́' => 'ጕ', - 'Ἐ' => 'ጘ', - 'Ἑ' => 'ጙ', - 'ጘ̀' => 'ጚ', - 'ጙ̀' => 'ጛ', - 'ጘ́' => 'ጜ', - 'ጙ́' => 'ጝ', - 'ἠ' => 'ጠ', - 'ἡ' => 'áŒĄ', - 'ጠ̀' => 'áŒą', - 'áŒĄÌ€' => 'áŒŁ', - 'ጠ́' => 'ጀ', - 'áŒĄÌ' => 'ጄ', - 'ጠ͂' => 'ጊ', - 'áŒĄÍ‚' => 'ጧ', - 'Ἠ' => 'ጚ', - 'Ἡ' => 'ጩ', - 'ጚ̀' => 'áŒȘ', - 'ጩ̀' => 'ጫ', - 'ጚ́' => 'áŒŹ', - 'ጩ́' => 'ጭ', - 'ጚ͂' => 'áŒź', - 'ጩ͂' => 'áŒŻ', - 'Îč̓' => 'ጰ', - 'Îč̔' => 'ጱ', - 'ጰ̀' => 'áŒČ', - 'ጱ̀' => 'áŒł', - 'ጰ́' => 'ጎ', - 'ጱ́' => 'ጔ', - 'ጰ͂' => 'ጶ', - 'ጱ͂' => 'ጷ', - 'Ἰ' => 'ጞ', - 'Ἱ' => 'áŒč', - 'ጞ̀' => 'áŒș', - 'áŒč̀' => 'ጻ', - 'ጞ́' => 'ጌ', - 'áŒč́' => 'ጜ', - 'ጞ͂' => 'ጟ', - 'áŒč͂' => 'áŒż', - 'ÎżÌ“' => 'ᜀ', - 'ÎżÌ”' => 'ᜁ', - 'ᜀ̀' => 'ᜂ', - 'ᜁ̀' => 'ᜃ', - 'ᜀ́' => 'ᜄ', - 'ᜁ́' => 'ᜅ', - 'Ὀ' => 'ᜈ', - 'Ὁ' => 'ᜉ', - 'ᜈ̀' => 'ᜊ', - 'ᜉ̀' => 'ᜋ', - 'ᜈ́' => 'ᜌ', - 'ᜉ́' => 'ᜍ', - 'ὐ' => 'ᜐ', - 'ὑ' => 'ᜑ', - 'ᜐ̀' => 'ᜒ', - 'ᜑ̀' => 'ᜓ', - 'ᜐ́' => '᜔', - 'ᜑ́' => '᜕', - 'ᜐ͂' => '᜖', - 'ᜑ͂' => '᜗', - '΄̔' => '᜙', - '᜙̀' => '᜛', - '᜙́' => '᜝', - '᜙͂' => 'ᜟ', - 'ὠ' => 'ᜠ', - 'ὡ' => 'áœĄ', - 'ᜠ̀' => 'áœą', - 'áœĄÌ€' => 'áœŁ', - 'ᜠ́' => 'ᜀ', - 'áœĄÌ' => 'ᜄ', - 'ᜠ͂' => 'ᜊ', - 'áœĄÍ‚' => 'ᜧ', - 'Ὠ' => '᜚', - 'Ὡ' => 'ᜩ', - '᜚̀' => 'áœȘ', - 'ᜩ̀' => 'ᜫ', - '᜚́' => 'áœŹ', - 'ᜩ́' => 'ᜭ', - '᜚͂' => 'áœź', - 'ᜩ͂' => 'áœŻ', - 'ὰ' => 'ᜰ', - 'Δ̀' => 'áœČ', - 'ὴ' => 'ᜎ', - 'Îč̀' => '᜶', - 'ÎżÌ€' => '᜞', - 'ὺ' => 'áœș', - 'ὼ' => 'ᜌ', - 'ጀͅ' => 'ៀ', - 'ጁͅ' => 'េ', - 'ጂͅ' => 'ែ', - 'ጃͅ' => 'ៃ', - 'ጄͅ' => 'ោ', - 'ጅͅ' => 'ៅ', - 'ጆͅ' => 'ំ', - 'ጇͅ' => 'ះ', - 'ገͅ' => 'ៈ', - 'ጉͅ' => '៉', - 'ጊͅ' => '៊', - 'ጋͅ' => '់', - 'ጌͅ' => '៌', - 'ግͅ' => '៍', - 'ጎͅ' => '៎', - 'ጏͅ' => '៏', - 'ጠͅ' => '័', - 'áŒĄÍ…' => '៑', - 'áŒąÍ…' => '្', - 'áŒŁÍ…' => '៓', - 'ጀͅ' => '។', - 'ጄͅ' => '៕', - 'ጊͅ' => '៖', - 'ጧͅ' => 'ៗ', - 'ጚͅ' => '៘', - 'ጩͅ' => '៙', - 'áŒȘͅ' => '៚', - 'ጫͅ' => '៛', - 'áŒŹÍ…' => 'ៜ', - 'ጭͅ' => '៝', - 'áŒźÍ…' => '៞', - 'áŒŻÍ…' => '៟', - 'ᜠͅ' => '០', - 'áœĄÍ…' => 'áŸĄ', - 'áœąÍ…' => 'áŸą', - 'áœŁÍ…' => 'áŸŁ', - 'ᜀͅ' => 'ៀ', - 'ᜄͅ' => 'ោ', - 'ᜊͅ' => '៊', - 'ᜧͅ' => '៧', - '᜚ͅ' => '៚', - 'ᜩͅ' => '៩', - 'áœȘͅ' => 'áŸȘ', - 'ᜫͅ' => '៫', - 'áœŹÍ…' => 'áŸŹ', - 'ᜭͅ' => '៭', - 'áœźÍ…' => 'áŸź', - 'áœŻÍ…' => 'áŸŻ', - 'ᾰ' => '៰', - 'ᾱ' => '៱', - 'ᜰͅ' => 'áŸČ', - 'ᾳ' => 'áŸł', - 'ᾴ' => '៎', - 'ᾶ' => '៶', - '៶ͅ' => '៷', - 'Ᾰ' => '៞', - 'Ᾱ' => 'áŸč', - 'Ὰ' => 'áŸș', - 'ᾼ' => '៌', - '¹͂' => '῁', - 'ᜎͅ' => 'ῂ', - 'ῃ' => 'ῃ', - 'μͅ' => 'ῄ', - 'ῆ' => 'ῆ', - 'ῇ' => 'ῇ', - 'Ὲ' => 'Ὲ', - 'Ὴ' => 'Ὴ', - 'ῌ' => 'ῌ', - 'áŸżÌ€' => '῍', - 'áŸżÌ' => '῎', - 'áŸżÍ‚' => '῏', - 'Îč̆' => 'ῐ', - 'Îč̄' => 'ῑ', - 'ῒ' => 'ῒ', - 'Îč͂' => 'ῖ', - 'ῗ' => 'ῗ', - 'Ῐ' => 'Ῐ', - 'Ῑ' => 'Ῑ', - 'Ὶ' => 'Ὶ', - 'áżŸÌ€' => '῝', - 'áżŸÌ' => '῞', - 'áżŸÍ‚' => '῟', - 'ῠ' => 'áż ', - 'ῡ' => 'ῥ', - 'ῢ' => 'áżą', - 'ῤ' => '῀', - 'ῥ' => 'áż„', - 'ῦ' => 'Ὴ', - 'ῧ' => 'áż§', - '΄̆' => 'áżš', - '΄̄' => 'áż©', - '΄̀' => 'áżȘ', - 'ÎĄÌ”' => '῏', - 'š̀' => 'áż­', - 'ᜌͅ' => 'áżČ', - 'ῳ' => 'áżł', - 'ῴ' => '῎', - 'ῶ' => 'áż¶', - 'áż¶Í…' => 'áż·', - 'Ὸ' => 'áżž', - 'Ὼ' => 'áżș', - 'ῼ' => 'áżŒ', - '←̞' => '↚', - '→̞' => '↛', - '↔̞' => '↼', - '⇐̞' => '⇍', - '⇔̞' => '⇎', - '⇒̞' => '⇏', - '∃̞' => '∄', - '∈̞' => '∉', - '∋̞' => '∌', - 'âˆŁÌž' => '∀', - '∄̞' => '∊', - '∌̞' => '≁', - '≃̞' => '≄', - '≅̞' => '≇', - '≈̞' => '≉', - '=Ìž' => '≠', - 'â‰ĄÌž' => '≱', - '≍̞' => '≭', - '<Ìž' => '≼', - '>Ìž' => '≯', - '≀̞' => '≰', - '≄̞' => '≱', - 'â‰ČÌž' => '≮', - 'â‰łÌž' => '≔', - '≶̞' => '≾', - '≷̞' => 'â‰č', - 'â‰șÌž' => '⊀', - '≻̞' => '⊁', - '⊂̞' => '⊄', - '⊃̞' => '⊅', - '⊆̞' => '⊈', - '⊇̞' => '⊉', - 'âŠąÌž' => '⊬', - '⊚̞' => '⊭', - '⊩̞' => '⊼', - '⊫̞' => '⊯', - '≌̞' => '⋠', - '≜̞' => '⋡', - '⊑̞' => '⋱', - '⊒̞' => '⋣', - 'âŠČÌž' => 'â‹Ș', - 'âŠłÌž' => '⋫', - '⊎̞' => '⋬', - '⊔̞' => '⋭', - 'が' => 'が', - 'ぎ' => 'ぎ', - 'ぐ' => 'ぐ', - 'げ' => 'げ', - 'ご' => 'ご', - 'ざ' => 'ざ', - 'じ' => 'じ', - 'ず' => 'ず', - 'ぜ' => 'ぜ', - 'ぞ' => 'ぞ', - 'だ' => 'だ', - 'ぢ' => 'べ', - '぀゙' => 'い', - 'ど゙' => 'で', - 'べ゙' => 'ど', - 'ば' => 'ば', - 'ぱ' => 'ぱ', - 'ăČ゙' => 'び', - 'ăČ゚' => 'ぎ', - 'ご゙' => 'ぶ', - 'ご゚' => 'ぷ', - 'ま゙' => 'ăč', - 'ま゚' => 'ăș', - 'ぼ' => 'ăŒ', - 'ぽ' => 'ăœ', - 'ゔ' => 'ゔ', - 'ゞ' => 'ゞ', - 'ă‚«ă‚™' => 'ガ', - 'ギ' => 'ゼ', - 'グ' => 'グ', - 'ゲ' => 'ă‚Č', - 'ゴ' => 'ギ', - 'ゔ゙' => 'ă‚¶', - 'ă‚·ă‚™' => 'ゾ', - 'ă‚č゙' => 'ă‚ș', - 'ゼ' => 'ă‚Œ', - 'ă‚œă‚™' => 'ă‚Ÿ', - 'ダ' => 'ダ', - 'ヂ' => 'ヂ', - 'ヅ' => 'ヅ', - 'デ' => 'デ', - 'ド' => 'ド', - 'バ' => 'バ', - 'パ' => 'パ', - 'ビ' => 'ビ', - 'ピ' => 'ピ', - 'ブ' => 'ブ', - 'プ' => 'プ', - 'ベ' => 'ベ', - 'ペ' => 'ペ', - 'ボ' => 'ボ', - 'ポ' => 'ポ', - 'ォ゙' => 'ノ', - 'ヷ' => 'ヷ', - 'ヸ' => 'マ', - 'ăƒ±ă‚™' => 'ăƒč', - 'ăƒČ゙' => 'ăƒș', - 'ăƒœă‚™' => 'ăƒŸ', - '𑂙đ‘‚ș' => '𑂚', - '𑂛đ‘‚ș' => '𑂜', - 'đ‘‚„đ‘‚ș' => 'đ‘‚«', - '𑄮' => '𑄼', - 'đ‘„Č𑄧' => '𑄯', - 'đ‘‡đ‘ŒŸ' => '𑍋', - '𑍌' => '𑍌', - 'đ‘’čđ‘’ș' => 'đ‘’»', - 'đ‘’č𑒰' => 'đ‘’Œ', - 'đ‘’čđ‘’œ' => 'đ‘’Ÿ', - '𑖾𑖯' => 'đ‘–ș', - 'đ‘–č𑖯' => 'đ‘–»', - '𑀔𑀰' => '𑀞', -); diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php deleted file mode 100644 index 5a3e8e0..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php +++ /dev/null @@ -1,2065 +0,0 @@ - 'À', - 'Á' => 'Á', - 'Â' => 'Â', - 'Ã' => 'Ã', - 'Ä' => 'Ä', - 'Å' => 'Å', - 'Ç' => 'Ç', - 'È' => 'È', - 'É' => 'É', - 'Ê' => 'Ê', - 'Ë' => 'Ë', - 'Ì' => 'Ì', - 'Í' => 'Í', - 'Î' => 'Î', - 'Ï' => 'Ï', - 'Ñ' => 'Ñ', - 'Ò' => 'Ò', - 'Ó' => 'Ó', - 'Ô' => 'Ô', - 'Õ' => 'Õ', - 'Ö' => 'Ö', - 'Ù' => 'Ù', - 'Ú' => 'Ú', - 'Û' => 'Û', - 'Ü' => 'Ü', - 'Ý' => 'Ý', - 'Ă ' => 'à', - 'ĂĄ' => 'á', - 'Ăą' => 'â', - 'ĂŁ' => 'ã', - 'Ă€' => 'ä', - 'Ă„' => 'å', - 'ç' => 'ç', - 'Ăš' => 'è', - 'Ă©' => 'é', - 'ĂȘ' => 'ê', - 'Ă«' => 'ë', - 'ĂŹ' => 'ì', - 'Ă­' => 'í', - 'Ăź' => 'î', - 'ĂŻ' => 'ï', - 'ñ' => 'ñ', - 'ĂČ' => 'ò', - 'Ăł' => 'ó', - 'ĂŽ' => 'ô', - 'Ă”' => 'õ', - 'ö' => 'ö', - 'Ăč' => 'ù', - 'Ăș' => 'ú', - 'Ă»' => 'û', - 'ĂŒ' => 'ü', - 'Ăœ' => 'ý', - 'Ăż' => 'ÿ', - 'Ā' => 'Ā', - 'ā' => 'ā', - 'Ă' => 'Ă', - 'ă' => 'ă', - 'Ą' => 'AÌš', - 'ą' => 'aÌš', - 'Ć' => 'Ć', - 'ć' => 'ć', - 'Ĉ' => 'Ĉ', - 'ĉ' => 'ĉ', - 'Ċ' => 'Ċ', - 'ċ' => 'ċ', - 'Č' => 'Č', - 'č' => 'č', - 'Ď' => 'Ď', - 'ď' => 'ď', - 'Ē' => 'Ē', - 'ē' => 'ē', - 'Ĕ' => 'Ĕ', - 'ĕ' => 'ĕ', - 'Ė' => 'Ė', - 'ė' => 'ė', - 'Ę' => 'EÌš', - 'ę' => 'eÌš', - 'Ě' => 'Ě', - 'ě' => 'ě', - 'Ĝ' => 'Ĝ', - 'ĝ' => 'ĝ', - 'Ğ' => 'Ğ', - 'ğ' => 'ğ', - 'Ä ' => 'Ġ', - 'ÄĄ' => 'ġ', - 'Äą' => 'Ģ', - 'ÄŁ' => 'ģ', - 'Ä€' => 'Ĥ', - 'Ä„' => 'ĥ', - 'Äš' => 'Ĩ', - 'Ä©' => 'ĩ', - 'ÄȘ' => 'Ī', - 'Ä«' => 'ī', - 'ÄŹ' => 'Ĭ', - 'Ä­' => 'ĭ', - 'Äź' => 'IÌš', - 'ÄŻ' => 'iÌš', - 'İ' => 'İ', - 'ÄŽ' => 'Ĵ', - 'Ä”' => 'ĵ', - 'Ķ' => 'Ķ', - 'Ä·' => 'ķ', - 'Äč' => 'Ĺ', - 'Äș' => 'ĺ', - 'Ä»' => 'Ļ', - 'ÄŒ' => 'ļ', - 'Äœ' => 'Ľ', - 'ÄŸ' => 'ľ', - 'ƃ' => 'Ń', - 'Ƅ' => 'ń', - 'ƅ' => 'Ņ', - 'Ɔ' => 'ņ', - 'Ƈ' => 'Ň', - 'ƈ' => 'ň', - 'Ì' => 'Ō', - 'ƍ' => 'ō', - 'Ǝ' => 'Ŏ', - 'Ə' => 'ŏ', - 'Ɛ' => 'Ő', - 'Ƒ' => 'ő', - 'Ɣ' => 'Ŕ', - 'ƕ' => 'ŕ', - 'Ɩ' => 'Ŗ', - 'Ɨ' => 'ŗ', - 'Ƙ' => 'Ř', - 'ƙ' => 'ř', - 'Ú' => 'Ś', - 'ƛ' => 'ś', - 'Ü' => 'Ŝ', - 'Ɲ' => 'ŝ', - 'ƞ' => 'Ş', - 'ß' => 'ş', - 'Ć ' => 'Š', - 'ĆĄ' => 'š', - 'Ćą' => 'Ţ', - 'ĆŁ' => 'ţ', - 'Ć€' => 'Ť', - 'Ć„' => 'ť', - 'Ćš' => 'Ũ', - 'Ć©' => 'ũ', - 'ĆȘ' => 'Ū', - 'Ć«' => 'ū', - 'ĆŹ' => 'Ŭ', - 'Ć­' => 'ŭ', - 'Ćź' => 'Ů', - 'ĆŻ' => 'ů', - 'ư' => 'Ű', - 'Ʊ' => 'ű', - 'ĆČ' => 'UÌš', - 'Ćł' => 'uÌš', - 'ĆŽ' => 'Ŵ', - 'Ć”' => 'ŵ', - 'ƶ' => 'Ŷ', - 'Ć·' => 'ŷ', - 'Ćž' => 'Ÿ', - 'Ćč' => 'Ź', - 'Ćș' => 'ź', - 'Ć»' => 'Ż', - 'ĆŒ' => 'ż', - 'Ćœ' => 'Ž', - 'ĆŸ' => 'ž', - 'Æ ' => 'Ơ', - 'ÆĄ' => 'ơ', - 'ÆŻ' => 'Ư', - 'ư' => 'ư', - 'Ǎ' => 'Ǎ', - 'ǎ' => 'ǎ', - 'Ǐ' => 'Ǐ', - 'ǐ' => 'ǐ', - 'Ǒ' => 'Ǒ', - 'ǒ' => 'ǒ', - 'Ǔ' => 'Ǔ', - 'ǔ' => 'ǔ', - 'Ǖ' => 'Ǖ', - 'ǖ' => 'ǖ', - 'Ǘ' => 'Ǘ', - 'ǘ' => 'ǘ', - 'Ǚ' => 'Ǚ', - 'ǚ' => 'ǚ', - 'Ǜ' => 'Ǜ', - 'ǜ' => 'ǜ', - 'Ǟ' => 'Ǟ', - 'ǟ' => 'ǟ', - 'Ç ' => 'Ǡ', - 'ÇĄ' => 'ǡ', - 'Çą' => 'Ă†Ì„', - 'ÇŁ' => 'ĂŠÌ„', - 'ÇŠ' => 'Ǧ', - 'ǧ' => 'ǧ', - 'Çš' => 'Ǩ', - 'Ç©' => 'ǩ', - 'ÇȘ' => 'OÌš', - 'Ç«' => 'oÌš', - 'ÇŹ' => 'Ō̚', - 'Ç­' => 'ō̚', - 'Çź' => 'Ǯ', - 'ÇŻ' => 'ǯ', - 'ǰ' => 'ǰ', - 'ÇŽ' => 'Ǵ', - 'Ç”' => 'ǵ', - 'Çž' => 'Ǹ', - 'Çč' => 'ǹ', - 'Çș' => 'Ǻ', - 'Ç»' => 'ǻ', - 'ÇŒ' => 'Ă†Ì', - 'Çœ' => 'ĂŠÌ', - 'ÇŸ' => 'Ă˜Ì', - 'Çż' => 'ĂžÌ', - 'Ȁ' => 'Ȁ', - 'ȁ' => 'ȁ', - 'Ȃ' => 'Ȃ', - 'ȃ' => 'ȃ', - 'Ȅ' => 'Ȅ', - 'ȅ' => 'ȅ', - 'Ȇ' => 'Ȇ', - 'ȇ' => 'ȇ', - 'Ȉ' => 'Ȉ', - 'ȉ' => 'ȉ', - 'Ȋ' => 'Ȋ', - 'ȋ' => 'ȋ', - 'Ȍ' => 'Ȍ', - 'ȍ' => 'ȍ', - 'Ȏ' => 'Ȏ', - 'ȏ' => 'ȏ', - 'Ȑ' => 'Ȑ', - 'ȑ' => 'ȑ', - 'Ȓ' => 'Ȓ', - 'ȓ' => 'ȓ', - 'Ȕ' => 'Ȕ', - 'ȕ' => 'ȕ', - 'Ȗ' => 'Ȗ', - 'ȗ' => 'ȗ', - 'Ș' => 'SÌŠ', - 'ș' => 'sÌŠ', - 'Ț' => 'TÌŠ', - 'ț' => 'tÌŠ', - 'Ȟ' => 'Ȟ', - 'ȟ' => 'ȟ', - 'ÈŠ' => 'Ȧ', - 'ȧ' => 'ȧ', - 'Èš' => 'Ȩ', - 'È©' => 'ȩ', - 'ÈȘ' => 'Ȫ', - 'È«' => 'ȫ', - 'ÈŹ' => 'Ȭ', - 'È­' => 'ȭ', - 'Èź' => 'Ȯ', - 'ÈŻ' => 'ȯ', - 'Ȱ' => 'Ȱ', - 'ȱ' => 'ȱ', - 'ÈČ' => 'Ȳ', - 'Èł' => 'ȳ', - '̀' => '̀', - '́' => '́', - '̓' => '̓', - '̈́' => '̈́', - 'ÍŽ' => 'Êč', - 'ÍŸ' => ';', - '΅' => 'š́', - 'Ά' => 'Ά', - '·' => '·', - 'Έ' => 'Έ', - 'Ή' => 'Ή', - 'Ί' => 'Ί', - 'Ό' => 'Ό', - 'Ύ' => '΄́', - 'Ώ' => 'Ώ', - 'ΐ' => 'Îč̈́', - 'ÎȘ' => 'Ϊ', - 'Ϋ' => '΄̈', - 'ÎŹ' => 'ά', - 'έ' => 'Δ́', - 'Îź' => 'ή', - 'ÎŻ' => 'Îč́', - 'ΰ' => 'ΰ', - 'ϊ' => 'Îč̈', - 'ϋ' => 'ϋ', - 'ό' => 'ÎżÌ', - 'ύ' => 'ύ', - 'ώ' => 'ώ', - 'ϓ' => 'ϓ', - 'ϔ' => 'ϔ', - 'Ѐ' => 'Đ•Ì€', - 'Ё' => 'Đ•Ìˆ', - 'Ѓ' => 'Đ“Ì', - 'Ї' => 'Đ†Ìˆ', - 'Ќ' => 'ĐšÌ', - 'Ѝ' => 'Đ˜Ì€', - 'Ў' => 'ĐŁÌ†', - 'Й' => 'Đ˜Ì†', - 'Đč' => 'ĐžÌ†', - 'ѐ' => 'Đ”Ì€', - 'ё' => 'Đ”Ìˆ', - 'ѓ' => 'ĐłÌ', - 'ї' => 'Ń–Ìˆ', - 'ќ' => 'Đș́', - 'ѝ' => 'ĐžÌ€', - 'ў' => 'ŃƒÌ†', - 'Ѷ' => 'ŃŽÌ', - 'Ń·' => 'Ń”Ì', - 'Ӂ' => 'Đ–Ì†', - 'ӂ' => 'Đ¶Ì†', - 'Ӑ' => 'ĐÌ†', - 'ӑ' => 'Đ°Ì†', - 'Ӓ' => 'ĐÌˆ', - 'ӓ' => 'Đ°Ìˆ', - 'Ӗ' => 'Đ•Ì†', - 'ӗ' => 'Đ”Ì†', - 'Ӛ' => 'Ӛ', - 'ӛ' => 'ӛ', - 'Ӝ' => 'Đ–Ìˆ', - 'ӝ' => 'Đ¶Ìˆ', - 'Ӟ' => 'Đ—Ìˆ', - 'ӟ' => 'Đ·Ìˆ', - 'Óą' => 'Đ˜Ì„', - 'ÓŁ' => 'ĐžÌ„', - 'Ó€' => 'Đ˜Ìˆ', - 'Ó„' => 'ĐžÌˆ', - 'ÓŠ' => 'ĐžÌˆ', - 'Ó§' => 'ĐŸÌˆ', - 'ÓȘ' => 'Ӛ̈', - 'Ó«' => 'ӫ', - 'ÓŹ' => 'Đ­Ìˆ', - 'Ó­' => 'ŃÌˆ', - 'Óź' => 'ĐŁÌ„', - 'ÓŻ' => 'ŃƒÌ„', - 'Ó°' => 'ĐŁÌˆ', - 'Ó±' => 'ŃƒÌˆ', - 'ÓČ' => 'ĐŁÌ‹', - 'Ół' => 'ŃƒÌ‹', - 'ÓŽ' => 'Đ§Ìˆ', - 'Ó”' => 'Ń‡Ìˆ', - 'Óž' => 'Đ«Ìˆ', - 'Óč' => 'Ń‹Ìˆ', - 'Űą' => 'Ű§Ù“', - 'ŰŁ' => 'Ű§Ù”', - 'Ű€' => 'ؤ', - 'Ű„' => 'Ű§Ù•', - 'ŰŠ' => 'ئ', - 'ۀ' => 'ۀ', - 'ۂ' => 'ۂ', - 'ۓ' => 'ۓ', - 'à€©' => 'à€šà€Œ', - 'à€±' => 'à€°à€Œ', - 'à€Ž' => 'à€łà€Œ', - 'à„˜' => 'à€•à€Œ', - 'à„™' => 'à€–à€Œ', - 'à„š' => 'à€—à€Œ', - 'à„›' => 'à€œà€Œ', - 'à„œ' => 'à€Ąà€Œ', - 'à„' => 'à€ąà€Œ', - 'à„ž' => 'à€«à€Œ', - 'à„Ÿ' => 'à€Żà€Œ', - 'ো' => 'à§‡àŠŸ', - 'ৌ' => 'ৌ', - 'ড়' => 'àŠĄàŠŒ', - 'ঢ়' => 'àŠąàŠŒ', - 'য়' => 'àŠŻàŠŒ', - 'àšł' => 'àšČàšŒ', - 'àš¶' => 'àšžàšŒ', - 'ਖ਼' => 'àš–àšŒ', - 'ਗ਼' => 'àš—àšŒ', - 'ਜ਼' => 'àšœàšŒ', - 'ਫ਼' => 'àš«àšŒ', - 'ୈ' => 'ୈ', - 'ୋ' => 'à­‡àŹŸ', - 'ୌ' => 'ୌ', - 'ଡ଼' => 'àŹĄàŹŒ', - 'ଢ଼' => 'àŹąàŹŒ', - 'àź”' => 'àź’àŻ—', - 'àŻŠ' => 'àŻ†àźŸ', - 'àŻ‹' => 'àŻ‡àźŸ', - 'àŻŒ' => 'àŻ†àŻ—', - 'ై' => 'ై', - 'àł€' => 'àČżàł•', - 'àł‡' => 'àł†àł•', - 'àłˆ' => 'àł†àł–', - 'àłŠ' => 'àł†àł‚', - 'àł‹' => 'àł†àł‚àł•', - 'à”Š' => 'à”†àŽŸ', - 'à”‹' => 'à”‡àŽŸ', - 'à”Œ' => 'à”†à”—', - 'ේ' => 'ේ', - 'ො' => 'ො', - 'ෝ' => 'ෝ', - 'ෞ' => 'ෞ', - 'àœƒ' => 'àœ‚àŸ·', - 'àœ' => 'àœŒàŸ·', - 'àœ’' => 'àœ‘àŸ·', - 'àœ—' => 'àœ–àŸ·', - 'àœœ' => 'àœ›àŸ·', - 'àœ©' => 'àœ€àŸ”', - 'àœł' => 'àœ±àœČ', - 'àœ”' => 'àœ±àœŽ', - 'àœ¶' => 'àŸČàŸ€', - 'àœž' => 'àŸłàŸ€', - 'àŸ' => 'àœ±àŸ€', - 'àŸ“' => 'àŸ’àŸ·', - 'àŸ' => 'àŸœàŸ·', - 'àŸą' => 'àŸĄàŸ·', - 'àŸ§' => 'àŸŠàŸ·', - 'àŸŹ' => 'àŸ«àŸ·', - 'àŸč' => 'àŸàŸ”', - 'ဩ' => 'ငဟ', - 'ᬆ' => 'ᏅᏔ', - 'Ꮘ' => 'ᏇᏔ', - 'ᬊ' => 'ᏉᏔ', - 'ᬌ' => 'ᏋᏔ', - 'ᬎ' => 'áŹáŹ”', - 'ᬒ' => 'ᏑᏔ', - 'ᏻ' => 'áŹșᏔ', - 'áŹœ' => 'áŹŒáŹ”', - 'ᭀ' => 'áŹŸáŹ”', - 'ᭁ' => '᏿Ꮤ', - 'ᭃ' => 'ᭂᏔ', - 'ᾀ' => 'AÌ„', - 'ខ' => 'aÌ„', - 'ᾂ' => 'Ḃ', - 'ឃ' => 'ḃ', - 'ᾄ' => 'BÌŁ', - 'ᾅ' => 'bÌŁ', - 'ᾆ' => 'Ḇ', - 'ᾇ' => 'ḇ', - 'ឈ' => 'Ḉ', - 'ᾉ' => 'ḉ', - 'ᾊ' => 'Ḋ', - 'ᾋ' => 'ḋ', - 'ᾌ' => 'DÌŁ', - 'ឍ' => 'dÌŁ', - 'ᾎ' => 'Ḏ', - 'ត' => 'ḏ', - 'ថ' => 'Ḑ', - 'ᾑ' => 'ḑ', - 'ᾒ' => 'DÌ­', - 'ᾓ' => 'dÌ­', - 'ᾔ' => 'Ḕ', - 'ᾕ' => 'ḕ', - 'ᾖ' => 'Ḗ', - 'ᾗ' => 'ḗ', - 'ម' => 'EÌ­', - 'ᾙ' => 'eÌ­', - 'ᾚ' => 'Ḛ', - 'ᾛ' => 'ḛ', - 'ᾜ' => 'Ḝ', - 'ឝ' => 'ḝ', - 'ᾞ' => 'Ḟ', - 'ᾟ' => 'ḟ', - 'áž ' => 'Ḡ', - 'ឥ' => 'ḡ', - 'ážą' => 'Ḣ', - 'ឣ' => 'ḣ', - 'ក' => 'HÌŁ', - 'áž„' => 'hÌŁ', - 'ដ' => 'Ḧ', - 'áž§' => 'ḧ', - 'ážš' => 'Ḩ', - 'áž©' => 'ḩ', - 'ážȘ' => 'HÌź', - 'áž«' => 'hÌź', - 'ត' => 'Ḭ', - 'áž­' => 'ḭ', - 'ážź' => 'Ḯ', - 'ឯ' => 'ḯ', - 'áž°' => 'Ḱ', - 'áž±' => 'ḱ', - 'ážČ' => 'KÌŁ', - 'ážł' => 'kÌŁ', - 'ណ' => 'Ḵ', - 'áž”' => 'ḵ', - 'áž¶' => 'LÌŁ', - 'áž·' => 'lÌŁ', - 'ážž' => 'LÌŁÌ„', - 'ážč' => 'lÌŁÌ„', - 'ážș' => 'Ḻ', - 'áž»' => 'ḻ', - 'ឌ' => 'LÌ­', - 'ážœ' => 'lÌ­', - 'ស' => 'Ḿ', - 'ážż' => 'ḿ', - 'áč€' => 'Ṁ', - 'áč' => 'ṁ', - 'áč‚' => 'MÌŁ', - 'áčƒ' => 'mÌŁ', - 'áč„' => 'Ṅ', - 'áč…' => 'ṅ', - 'áč†' => 'NÌŁ', - 'áč‡' => 'nÌŁ', - 'áčˆ' => 'Ṉ', - 'áč‰' => 'ṉ', - 'áčŠ' => 'NÌ­', - 'áč‹' => 'nÌ­', - 'áčŒ' => 'Ṍ', - 'áč' => 'ṍ', - 'áčŽ' => 'Ṏ', - 'áč' => 'ṏ', - 'áč' => 'Ṑ', - 'áč‘' => 'ṑ', - 'áč’' => 'Ṓ', - 'áč“' => 'ṓ', - 'áč”' => 'Ṕ', - 'áč•' => 'ṕ', - 'áč–' => 'Ṗ', - 'áč—' => 'ṗ', - 'áč˜' => 'Ṙ', - 'áč™' => 'ṙ', - 'áčš' => 'RÌŁ', - 'áč›' => 'rÌŁ', - 'áčœ' => 'RÌŁÌ„', - 'áč' => 'rÌŁÌ„', - 'áčž' => 'Ṟ', - 'áčŸ' => 'ṟ', - 'áč ' => 'Ṡ', - 'áčĄ' => 'ṡ', - 'áčą' => 'SÌŁ', - 'áčŁ' => 'sÌŁ', - 'áč€' => 'Ṥ', - 'áč„' => 'ṥ', - 'áčŠ' => 'Ṧ', - 'áč§' => 'ṧ', - 'áčš' => 'SÌŁÌ‡', - 'áč©' => 'sÌŁÌ‡', - 'áčȘ' => 'Ṫ', - 'áč«' => 'ṫ', - 'áčŹ' => 'TÌŁ', - 'áč­' => 'tÌŁ', - 'áčź' => 'Ṯ', - 'áčŻ' => 'ṯ', - 'áč°' => 'TÌ­', - 'áč±' => 'tÌ­', - 'áčČ' => 'UÌ€', - 'áčł' => 'uÌ€', - 'áčŽ' => 'Ṵ', - 'áč”' => 'ṵ', - 'áč¶' => 'UÌ­', - 'áč·' => 'uÌ­', - 'áčž' => 'Ṹ', - 'áčč' => 'ṹ', - 'áčș' => 'Ṻ', - 'áč»' => 'ṻ', - 'áčŒ' => 'Ṽ', - 'áčœ' => 'ṽ', - 'áčŸ' => 'VÌŁ', - 'áčż' => 'vÌŁ', - 'áș€' => 'Ẁ', - 'áș' => 'ẁ', - 'áș‚' => 'Ẃ', - 'áșƒ' => 'ẃ', - 'áș„' => 'Ẅ', - 'áș…' => 'ẅ', - 'áș†' => 'Ẇ', - 'áș‡' => 'ẇ', - 'áșˆ' => 'WÌŁ', - 'áș‰' => 'wÌŁ', - 'áșŠ' => 'Ẋ', - 'áș‹' => 'ẋ', - 'áșŒ' => 'Ẍ', - 'áș' => 'ẍ', - 'áșŽ' => 'Ẏ', - 'áș' => 'ẏ', - 'áș' => 'Ẑ', - 'áș‘' => 'ẑ', - 'áș’' => 'ZÌŁ', - 'áș“' => 'zÌŁ', - 'áș”' => 'Ẕ', - 'áș•' => 'ẕ', - 'áș–' => 'ẖ', - 'áș—' => 'ẗ', - 'áș˜' => 'ẘ', - 'áș™' => 'ẙ', - 'áș›' => 'ĆżÌ‡', - 'áș ' => 'AÌŁ', - 'áșĄ' => 'aÌŁ', - 'áșą' => 'Ả', - 'áșŁ' => 'ả', - 'áș€' => 'Ấ', - 'áș„' => 'ấ', - 'áșŠ' => 'Ầ', - 'áș§' => 'ầ', - 'áșš' => 'Ẩ', - 'áș©' => 'ẩ', - 'áșȘ' => 'Ẫ', - 'áș«' => 'ẫ', - 'áșŹ' => 'AÌŁÌ‚', - 'áș­' => 'aÌŁÌ‚', - 'áșź' => 'Ắ', - 'áșŻ' => 'ắ', - 'áș°' => 'Ằ', - 'áș±' => 'ằ', - 'áșČ' => 'Ẳ', - 'áșł' => 'ẳ', - 'áșŽ' => 'Ẵ', - 'áș”' => 'ẵ', - 'áș¶' => 'AÌŁÌ†', - 'áș·' => 'aÌŁÌ†', - 'áșž' => 'EÌŁ', - 'áșč' => 'eÌŁ', - 'áșș' => 'Ẻ', - 'áș»' => 'ẻ', - 'áșŒ' => 'Ẽ', - 'áșœ' => 'ẽ', - 'áșŸ' => 'Ế', - 'áșż' => 'ế', - 'Ề' => 'Ề', - 'ề' => 'ề', - 'Ể' => 'Ể', - 'ể' => 'ể', - 'Ễ' => 'Ễ', - 'ễ' => 'ễ', - 'Ệ' => 'EÌŁÌ‚', - 'ệ' => 'eÌŁÌ‚', - 'Ỉ' => 'Ỉ', - 'ỉ' => 'ỉ', - 'Ị' => 'IÌŁ', - 'ị' => 'iÌŁ', - 'Ọ' => 'OÌŁ', - 'ọ' => 'oÌŁ', - 'Ỏ' => 'Ỏ', - 'ỏ' => 'ỏ', - 'Ố' => 'Ố', - 'ố' => 'ố', - 'Ồ' => 'Ồ', - 'ồ' => 'ồ', - 'Ổ' => 'Ổ', - 'ổ' => 'ổ', - 'Ỗ' => 'Ỗ', - 'ỗ' => 'ỗ', - 'Ộ' => 'OÌŁÌ‚', - 'ộ' => 'oÌŁÌ‚', - 'Ớ' => 'Ớ', - 'ớ' => 'ớ', - 'Ờ' => 'Ờ', - 'ờ' => 'ờ', - 'Ở' => 'Ở', - 'ở' => 'ở', - 'á» ' => 'Ỡ', - 'ụ' => 'ỡ', - 'ỹ' => 'OÌ›ÌŁ', - 'ợ' => 'oÌ›ÌŁ', - 'Ề' => 'UÌŁ', - 'Ễ' => 'uÌŁ', - 'Ị' => 'Ủ', - 'á»§' => 'ủ', - 'Ớ' => 'Ứ', - 'ứ' => 'ứ', - 'á»Ș' => 'Ừ', - 'ừ' => 'ừ', - 'ỏ' => 'Ử', - 'á»­' => 'ử', - 'ở' => 'Ữ', - 'ữ' => 'ữ', - 'á»°' => 'UÌ›ÌŁ', - 'á»±' => 'uÌ›ÌŁ', - 'á»Č' => 'Ỳ', - 'ỳ' => 'ỳ', - 'Ỏ' => 'YÌŁ', - 'á»”' => 'yÌŁ', - 'á»¶' => 'Ỷ', - 'á»·' => 'ỷ', - 'Ở' => 'Ỹ', - 'á»č' => 'ỹ', - 'ጀ' => 'ἀ', - 'ጁ' => 'ἁ', - 'ጂ' => 'ἂ', - 'ጃ' => 'ἃ', - 'ጄ' => 'ἄ', - 'ጅ' => 'ἅ', - 'ጆ' => 'ἆ', - 'ጇ' => 'ἇ', - 'ገ' => 'Ἀ', - 'ጉ' => 'Ἁ', - 'ጊ' => 'Ἂ', - 'ጋ' => 'Ἃ', - 'ጌ' => 'Ἄ', - 'ግ' => 'Ἅ', - 'ጎ' => 'Ἆ', - 'ጏ' => 'Ἇ', - 'ጐ' => 'Δ̓', - '጑' => 'Δ̔', - 'ጒ' => 'Δ̓̀', - 'ጓ' => 'Δ̔̀', - 'ጔ' => 'Δ̓́', - 'ጕ' => 'Δ̔́', - 'ጘ' => 'Ἐ', - 'ጙ' => 'Ἑ', - 'ጚ' => 'Ἒ', - 'ጛ' => 'Ἓ', - 'ጜ' => 'Ἔ', - 'ጝ' => 'Ἕ', - 'ጠ' => 'ἠ', - 'áŒĄ' => 'ἡ', - 'áŒą' => 'ἢ', - 'áŒŁ' => 'ἣ', - 'ጀ' => 'ἤ', - 'ጄ' => 'ἥ', - 'ጊ' => 'ἦ', - 'ጧ' => 'ἧ', - 'ጚ' => 'Ἠ', - 'ጩ' => 'Ἡ', - 'áŒȘ' => 'Ἢ', - 'ጫ' => 'Ἣ', - 'áŒŹ' => 'Ἤ', - 'ጭ' => 'Ἥ', - 'áŒź' => 'Ἦ', - 'áŒŻ' => 'Ἧ', - 'ጰ' => 'Îč̓', - 'ጱ' => 'Îč̔', - 'áŒČ' => 'Îč̓̀', - 'áŒł' => 'Îč̔̀', - 'ጎ' => 'Îč̓́', - 'ጔ' => 'Îč̔́', - 'ጶ' => 'Îč̓͂', - 'ጷ' => 'Îč̔͂', - 'ጞ' => 'Ἰ', - 'áŒč' => 'Ἱ', - 'áŒș' => 'Ἲ', - 'ጻ' => 'Ἳ', - 'ጌ' => 'Ἴ', - 'ጜ' => 'Ἵ', - 'ጟ' => 'Ἶ', - 'áŒż' => 'Ἷ', - 'ᜀ' => 'ÎżÌ“', - 'ᜁ' => 'ÎżÌ”', - 'ᜂ' => 'ÎżÌ“Ì€', - 'ᜃ' => 'ÎżÌ”Ì€', - 'ᜄ' => 'ÎżÌ“Ì', - 'ᜅ' => 'ÎżÌ”Ì', - 'ᜈ' => 'Ὀ', - 'ᜉ' => 'Ὁ', - 'ᜊ' => 'Ὂ', - 'ᜋ' => 'Ὃ', - 'ᜌ' => 'Ὄ', - 'ᜍ' => 'Ὅ', - 'ᜐ' => 'ὐ', - 'ᜑ' => 'ὑ', - 'ᜒ' => 'ὒ', - 'ᜓ' => 'ὓ', - '᜔' => 'ὔ', - '᜕' => 'ὕ', - '᜖' => 'ὖ', - '᜗' => 'ὗ', - '᜙' => '΄̔', - '᜛' => '΄̔̀', - '᜝' => '΄̔́', - 'ᜟ' => '΄̔͂', - 'ᜠ' => 'ὠ', - 'áœĄ' => 'ὡ', - 'áœą' => 'ὢ', - 'áœŁ' => 'ὣ', - 'ᜀ' => 'ὤ', - 'ᜄ' => 'ὥ', - 'ᜊ' => 'ὦ', - 'ᜧ' => 'ὧ', - '᜚' => 'Ὠ', - 'ᜩ' => 'Ὡ', - 'áœȘ' => 'Ὢ', - 'ᜫ' => 'Ὣ', - 'áœŹ' => 'Ὤ', - 'ᜭ' => 'Ὥ', - 'áœź' => 'Ὦ', - 'áœŻ' => 'Ὧ', - 'ᜰ' => 'ὰ', - 'ᜱ' => 'ά', - 'áœČ' => 'Δ̀', - 'áœł' => 'Δ́', - 'ᜎ' => 'ὴ', - '᜔' => 'ή', - '᜶' => 'Îč̀', - '᜷' => 'Îč́', - '᜞' => 'ÎżÌ€', - 'áœč' => 'ÎżÌ', - 'áœș' => 'ὺ', - '᜻' => 'ύ', - 'ᜌ' => 'ὼ', - '᜜' => 'ώ', - 'ៀ' => 'ᾀ', - 'េ' => 'ᾁ', - 'ែ' => 'ᾂ', - 'ៃ' => 'ᾃ', - 'ោ' => 'ᾄ', - 'ៅ' => 'ᾅ', - 'ំ' => 'ᾆ', - 'ះ' => 'ᾇ', - 'ៈ' => 'ᾈ', - '៉' => 'ᾉ', - '៊' => 'ᾊ', - '់' => 'ᾋ', - '៌' => 'ᾌ', - '៍' => 'ᾍ', - '៎' => 'ᾎ', - '៏' => 'ᾏ', - '័' => 'ᾐ', - '៑' => 'ᾑ', - '្' => 'ᾒ', - '៓' => 'ᾓ', - '។' => 'ᾔ', - '៕' => 'ᾕ', - '៖' => 'ᾖ', - 'ៗ' => 'ᾗ', - '៘' => 'ᾘ', - '៙' => 'ᾙ', - '៚' => 'ᾚ', - '៛' => 'ᾛ', - 'ៜ' => 'ᾜ', - '៝' => 'ᾝ', - '៞' => 'ᾞ', - '៟' => 'ᾟ', - '០' => 'ᾠ', - 'áŸĄ' => 'ᾡ', - 'áŸą' => 'ᾢ', - 'áŸŁ' => 'ᾣ', - 'ៀ' => 'ᾤ', - 'ោ' => 'ᾥ', - '៊' => 'ᾦ', - '៧' => 'ᾧ', - '៚' => 'ᾨ', - '៩' => 'ᾩ', - 'áŸȘ' => 'ᾪ', - '៫' => 'ᾫ', - 'áŸŹ' => 'ᾬ', - '៭' => 'ᾭ', - 'áŸź' => 'ᾮ', - 'áŸŻ' => 'ᾯ', - '៰' => 'ᾰ', - '៱' => 'ᾱ', - 'áŸČ' => 'ᾲ', - 'áŸł' => 'ᾳ', - '៎' => 'ᾴ', - '៶' => 'ᾶ', - '៷' => 'ᾷ', - '៞' => 'Ᾰ', - 'áŸč' => 'Ᾱ', - 'áŸș' => 'Ὰ', - '៻' => 'Ά', - '៌' => 'ᾼ', - '៟' => 'Îč', - '῁' => '¹͂', - 'ῂ' => 'ῂ', - 'ῃ' => 'ῃ', - 'ῄ' => 'ῄ', - 'ῆ' => 'ῆ', - 'ῇ' => 'ῇ', - 'Ὲ' => 'Ὲ', - 'Έ' => 'Έ', - 'Ὴ' => 'Ὴ', - 'Ή' => 'Ή', - 'ῌ' => 'ῌ', - '῍' => 'áŸżÌ€', - '῎' => 'áŸżÌ', - '῏' => 'áŸżÍ‚', - 'ῐ' => 'Îč̆', - 'ῑ' => 'Îč̄', - 'ῒ' => 'Îč̈̀', - 'ΐ' => 'Îč̈́', - 'ῖ' => 'Îč͂', - 'ῗ' => 'Îč̈͂', - 'Ῐ' => 'Ῐ', - 'Ῑ' => 'Ῑ', - 'Ὶ' => 'Ὶ', - 'Ί' => 'Ί', - '῝' => 'áżŸÌ€', - '῞' => 'áżŸÌ', - '῟' => 'áżŸÍ‚', - 'áż ' => 'ῠ', - 'ῥ' => 'ῡ', - 'áżą' => 'ῢ', - 'ΰ' => 'ΰ', - '῀' => 'ῤ', - 'áż„' => 'ῥ', - 'Ὴ' => 'ῦ', - 'áż§' => 'ῧ', - 'áżš' => '΄̆', - 'áż©' => '΄̄', - 'áżȘ' => '΄̀', - 'áż«' => '΄́', - '῏' => 'ÎĄÌ”', - 'áż­' => 'š̀', - 'áżź' => 'š́', - '`' => '`', - 'áżČ' => 'ῲ', - 'áżł' => 'ῳ', - '῎' => 'ῴ', - 'áż¶' => 'ῶ', - 'áż·' => 'ῷ', - 'áżž' => 'Ὸ', - 'áżč' => 'Ό', - 'áżș' => 'Ὼ', - 'áż»' => 'Ώ', - 'áżŒ' => 'ῼ', - 'áżœ' => 'ÂŽ', - ' ' => ' ', - ' ' => ' ', - '℩' => 'Ω', - 'â„Ș' => 'K', - 'Å' => 'Å', - '↚' => '←̞', - '↛' => '→̞', - '↼' => '↔̞', - '⇍' => '⇐̞', - '⇎' => '⇔̞', - '⇏' => '⇒̞', - '∄' => '∃̞', - '∉' => '∈̞', - '∌' => '∋̞', - '∀' => 'âˆŁÌž', - '∊' => '∄̞', - '≁' => '∌̞', - '≄' => '≃̞', - '≇' => '≅̞', - '≉' => '≈̞', - '≠' => '=Ìž', - '≱' => 'â‰ĄÌž', - '≭' => '≍̞', - '≼' => '<Ìž', - '≯' => '>Ìž', - '≰' => '≀̞', - '≱' => '≄̞', - '≮' => 'â‰ČÌž', - '≔' => 'â‰łÌž', - '≾' => '≶̞', - 'â‰č' => '≷̞', - '⊀' => 'â‰șÌž', - '⊁' => '≻̞', - '⊄' => '⊂̞', - '⊅' => '⊃̞', - '⊈' => '⊆̞', - '⊉' => '⊇̞', - '⊬' => 'âŠąÌž', - '⊭' => '⊚̞', - '⊼' => '⊩̞', - '⊯' => '⊫̞', - '⋠' => '≌̞', - '⋡' => '≜̞', - '⋱' => '⊑̞', - '⋣' => '⊒̞', - 'â‹Ș' => 'âŠČÌž', - '⋫' => 'âŠłÌž', - '⋬' => '⊎̞', - '⋭' => '⊔̞', - '〈' => '〈', - 'âŒȘ' => '〉', - '⫝̸' => '⫝̞', - 'が' => 'が', - 'ぎ' => 'ぎ', - 'ぐ' => 'ぐ', - 'げ' => 'げ', - 'ご' => 'ご', - 'ざ' => 'ざ', - 'じ' => 'じ', - 'ず' => 'ず', - 'ぜ' => 'ぜ', - 'ぞ' => 'ぞ', - 'だ' => 'だ', - 'べ' => 'ぢ', - 'い' => '぀゙', - 'で' => 'ど゙', - 'ど' => 'べ゙', - 'ば' => 'ば', - 'ぱ' => 'ぱ', - 'び' => 'ăČ゙', - 'ぎ' => 'ăČ゚', - 'ぶ' => 'ご゙', - 'ぷ' => 'ご゚', - 'ăč' => 'ま゙', - 'ăș' => 'ま゚', - 'ăŒ' => 'ぼ', - 'ăœ' => 'ぽ', - 'ゔ' => 'ゔ', - 'ゞ' => 'ゞ', - 'ガ' => 'ă‚«ă‚™', - 'ゼ' => 'ギ', - 'グ' => 'グ', - 'ă‚Č' => 'ゲ', - 'ギ' => 'ゴ', - 'ă‚¶' => 'ゔ゙', - 'ゾ' => 'ă‚·ă‚™', - 'ă‚ș' => 'ă‚č゙', - 'ă‚Œ' => 'ゼ', - 'ă‚Ÿ' => 'ă‚œă‚™', - 'ダ' => 'ダ', - 'ヂ' => 'ヂ', - 'ヅ' => 'ヅ', - 'デ' => 'デ', - 'ド' => 'ド', - 'バ' => 'バ', - 'パ' => 'パ', - 'ビ' => 'ビ', - 'ピ' => 'ピ', - 'ブ' => 'ブ', - 'プ' => 'プ', - 'ベ' => 'ベ', - 'ペ' => 'ペ', - 'ボ' => 'ボ', - 'ポ' => 'ポ', - 'ノ' => 'ォ゙', - 'ヷ' => 'ヷ', - 'マ' => 'ヸ', - 'ăƒč' => 'ăƒ±ă‚™', - 'ăƒș' => 'ăƒČ゙', - 'ăƒŸ' => 'ăƒœă‚™', - '' => '豈', - '' => '曎', - '' => '車', - '' => 'èłˆ', - '' => '滑', - '' => 'äžČ', - '' => 'ć„', - '' => '韜', - '' => '韜', - '' => 'ć„‘', - '' => '金', - '' => '文', - '' => '愈', - '' => '懶', - '' => '癩', - '' => '矅', - '' => 'è˜ż', - '' => 'èžș', - '' => 'èŁž', - '' => '邏', - '' => 'æš‚', - '' => '掛', - '' => '烙', - '' => '珞', - '' => '萜', - '' => 'é…Ș', - '' => 'é§±', - '' => 'äș‚', - '' => 'ć”', - '' => 'æŹ„', - '' => '爛', - '' => '蘭', - '' => '龞', - 'ï€Ą' => '攐', - 'ï€ą' => 'æż«', - 'ï€Ł' => '藍', - '' => 'è„€', - '' => '拉', - '' => '臘', - '' => '蠟', - '' => '㻊', - '' => '朗', - 'ï€Ș' => 'æ”Ș', - '' => '狌', - 'ï€Ź' => '郎', - '' => '䟆', - 'ï€ź' => '憷', - 'ï€Ż' => '拞', - '' => '擄', - '' => '櫓', - 'ï€Č' => '爐', - 'ï€ł' => '盧', - '' => '老', - '' => '蘆', - '' => '虜', - '' => 'è·Ż', - '' => 'éœČ', - 'ï€č' => 'é­Ż', - 'ï€ș' => 'é·ș', - '' => '籌', - '' => '焿', - '' => 'ç¶ ', - '' => '菉', - 'ï€ż' => '錄', - 'ï„€' => 'éčż', - '' => '論', - 'ï„‚' => '棟', - '' => 'ćŒ„', - 'ï„„' => 'ç± ', - 'ï„…' => '聟', - '' => '牱', - '' => '磊', - '' => 'èł‚', - '' => '雷', - '' => '棘', - 'ï„‹' => '汹', - '' => 'æš“', - '' => '淚', - '' => '挏', - '' => '环', - '' => 'çž·', - 'ï„‘' => '陋', - 'ï„’' => '拒', - 'ï„“' => '肋', - 'ï„”' => '懜', - 'ï„•' => '懌', - 'ï„–' => '繜', - 'ï„—' => 'ç¶Ÿ', - '' => '菱', - 'ï„™' => 'é™”', - '' => 'èź€', - 'ï„›' => '拏', - '' => 'æš‚', - '' => '諟', - '' => 'äžč', - '' => '毧', - 'ï„ ' => '怒', - 'ï„Ą' => '率', - 'ï„ą' => '異', - 'ï„Ł' => '挗', - 'ï„€' => '磻', - 'ï„„' => 'äŸż', - '' => 'ćŸ©', - 'ï„§' => '䞍', - '' => 'æłŒ', - 'ï„©' => '敞', - 'ï„Ș' => '玹', - 'ï„«' => '揃', - 'ï„Ź' => '桞', - 'ï„­' => '省', - 'ï„ź' => '葉', - 'ï„Ż' => 'èȘȘ', - 'ï„°' => 'æźș', - '' => '蟰', - 'ï„Č' => 'æČˆ', - 'ï„ł' => '拟', - '' => 'è‹„', - 'ï„”' => '掠', - 'ï„¶' => 'ç•„', - 'ï„·' => 'äșź', - '' => 'ć…©', - 'ï„č' => '應', - 'ï„ș' => 'æą', - 'ï„»' => 'çł§', - '' => 'è‰Ż', - '' => '諒', - '' => '量', - 'ï„ż' => 'ć‹”', - '' => '摂', - '' => '愳', - '' => '滏', - '' => '旅', - '' => 'æżŸ', - '' => 'ç€Ș', - '' => '閭', - '' => 'é©Ș', - '' => 'éș—', - '' => '黎', - '' => '抛', - '' => '曆', - '' => 'æ­·', - '' => 'èœą', - '' => 'ćčŽ', - '' => '憐', - '' => '戀', - '' => '撚', - '' => 'æŒŁ', - '' => '煉', - '' => '璉', - '' => '秊', - '' => 'ç·Ž', - '' => 'èŻ', - '' => '茊', - '' => 'è“ź', - '' => '連', - '' => '鍊', - '' => '戗', - '' => '抣', - '' => 'ć’œ', - '' => '烈', - '' => 'èŁ‚', - 'ïŠĄ' => 'èȘȘ', - 'ïŠą' => '滉', - 'ïŠŁ' => 'ćż”', - '' => '捻', - '' => 'æźź', - '' => 'ç°Ÿ', - '' => '獔', - '' => '什', - '' => 'ć›č', - 'ïŠȘ' => '毧', - '' => 'ć¶ș', - 'ïŠŹ' => '怜', - '' => 'çŽČ', - 'ïŠź' => '瑩', - 'ïŠŻ' => '矚', - '' => '聆', - '' => '鈎', - 'ïŠČ' => '零', - 'ïŠł' => '靈', - '' => '領', - '' => '䟋', - '' => '犟', - '' => '醮', - '' => '难', - 'ïŠč' => 'æƒĄ', - 'ïŠș' => 'äș†', - '' => 'ペ', - '' => '毟', - '' => 'ć°ż', - '' => '料', - 'ïŠż' => 'æš‚', - '燎' => '燎', - '療' => '療', - '蓼' => '蓌', - '遼' => '遌', - '龍' => '韍', - '暈' => '暈', - '阮' => '队', - '劉' => '抉', - '杻' => '杻', - '柳' => 'æŸł', - '流' => '攁', - '溜' => 'æșœ', - '琉' => '琉', - '留' => '留', - '硫' => '祫', - '紐' => '玐', - '類' => '類', - '六' => '慭', - '戮' => 'æˆź', - '陸' => '陾', - '倫' => '怫', - '崙' => '殙', - '淪' => 'æ·Ș', - '輪' => 'èŒȘ', - '律' => 'ćŸ‹', - '慄' => '慄', - '栗' => '栗', - '率' => '率', - '隆' => '隆', - '利' => '戩', - '吏' => '搏', - '履' => '汄', - 'ï§ ' => '易', - 'ï§Ą' => '李', - 'ï§ą' => 'æąš', - 'ï§Ł' => 'æł„', - 'ï§€' => '理', - 'ï§„' => '痱', - 'ï§Š' => 'çœč', - 'ï§§' => 'èŁ', - 'ï§š' => 'èŁĄ', - 'ï§©' => '里', - 'ï§Ș' => '雱', - 'ï§«' => '挿', - 'ï§Ź' => 'æșș', - 'ï§­' => '搝', - 'ï§ź' => '燐', - 'ï§Ż' => '璘', - 'ï§°' => 'è—ș', - 'ï§±' => '隣', - 'ï§Č' => '鱗', - 'ï§ł' => 'éșŸ', - 'ï§Ž' => '林', - 'ï§”' => '淋', - 'ï§¶' => '臚', - 'ï§·' => '立', - 'ï§ž' => '珠', - 'ï§č' => 'çȒ', - 'ï§ș' => '狀', - 'ï§»' => '炙', - 'ï§Œ' => '識', - 'ï§œ' => '什', - 'ï§Ÿ' => '茶', - 'ï§ż' => 'ćˆș', - '' => '戇', - '' => 'ćșŠ', - 'ïš‚' => '拓', - '' => '糖', - 'ïš„' => '漅', - 'ïš…' => '掞', - '' => '暎', - '' => '茻', - '' => 'èĄŒ', - '' => '降', - '' => '芋', - 'ïš‹' => '滓', - '' => '慀', - '' => '旀', - '' => '桚', - 'ïš’' => '晎', - 'ïš•' => '懞', - 'ïš–' => 'çŒȘ', - 'ïš—' => '益', - '' => '瀌', - 'ïš™' => '焞', - 'ïšš' => 'ç„„', - 'ïš›' => '犏', - 'ïšœ' => '靖', - '' => 'çČŸ', - '' => '矜', - 'ïš ' => '蘒', - 'ïšą' => '諞', - 'ïš„' => '逾', - '' => '郜', - 'ïšȘ' => '飯', - 'ïš«' => 'éŁŒ', - 'ïšŹ' => '通', - 'ïš­' => 'é¶Ž', - 'ïšź' => '郞', - 'ïšŻ' => '隷', - 'ïš°' => 'äŸź', - 'ïš±' => '惧', - 'ïšČ' => '慍', - 'ïšł' => '拉', - '' => 'ć‹€', - 'ïš”' => '捑', - 'ïš¶' => '斝', - 'ïš·' => '昆', - 'ïšž' => '晹', - 'ïšč' => '桀', - 'ïšș' => 'ćąš', - 'ïš»' => 'ć±€', - '' => '江', - 'ïšœ' => '悔', - '' => 'æ…š', - 'ïšż' => '憎', - '懲' => 'æ‡Č', - '敏' => '敏', - '既' => 'æ—ą', - '暑' => '暑', - '梅' => 'æą…', - '海' => 'æ”·', - '渚' => 'æžš', - '漢' => 'æŒą', - '煮' => '煼', - '爫' => '爫', - '琢' => '琹', - '碑' => '籑', - '社' => '瀟', - '祉' => '焉', - '祈' => '焈', - '祐' => '焐', - '祖' => 'ç„–', - '祝' => '焝', - '禍' => '犍', - '禎' => '犎', - '穀' => '穀', - '突' => 'çȘ', - '節' => '節', - '練' => 'ç·Ž', - '縉' => '羉', - '繁' => 'çč', - '署' => 'çœČ', - '者' => '者', - '臭' => '臭', - '艹' => 'è‰č', - '艹' => 'è‰č', - '著' => '著', - 'ï© ' => '耐', - 'ï©Ą' => '芖', - 'ï©ą' => 'èŹ', - 'ï©Ł' => 'èŹč', - 'ï©€' => 'èł“', - 'ï©„' => '莈', - '琢' => '蟶', - 'ï©§' => '逾', - '署' => '難', - 'ï©©' => '響', - 'ï©Ș' => 'é »', - 'ï©«' => '恔', - 'ï©Ź' => 'đ€‹ź', - 'ï©­' => '舘', - 'ï©°' => '䞊', - '况' => '憔', - 'ï©Č' => '慹', - 'ï©ł' => '䟀', - '祈' => '慅', - 'ï©”' => '憀', - 'ï©¶' => '拇', - 'ï©·' => 'ć‹ș', - '艹' => '斝', - 'ï©č' => '敕', - 'ï©ș' => '料', - 'ï©»' => '旱', - '社' => '桚', - '臭' => 'ćął', - '著' => 'ć„„', - 'ï©ż' => 'ć„”', - 'ïȘ€' => '橹', - 'ïȘ' => '揚', - 'ïȘ‚' => 'ć»’', - 'ïȘƒ' => 'ć»™', - 'ïȘ„' => 'ćœ©', - 'ïȘ…' => 'ćŸ­', - 'ïȘ†' => '惘', - 'ïȘ‡' => '慎', - 'ïȘˆ' => '愈', - 'ïȘ‰' => '憎', - 'ïȘŠ' => '慠', - 'ïȘ‹' => 'æ‡Č', - 'ïȘŒ' => '戎', - 'ïȘ' => '揄', - 'ïȘŽ' => '搜', - 'ïȘ' => '摒', - 'ïȘ' => '敖', - 'ïȘ‘' => '晎', - 'ïȘ’' => '朗', - 'ïȘ“' => '望', - 'ïȘ”' => '杖', - 'ïȘ•' => 'æ­č', - 'ïȘ–' => 'æźș', - 'ïȘ—' => '攁', - 'ïȘ˜' => '滛', - 'ïȘ™' => '滋', - 'ïȘš' => 'æŒą', - 'ïȘ›' => '瀞', - 'ïȘœ' => '煼', - 'ïȘ' => '瞧', - 'ïȘž' => '爔', - 'ïȘŸ' => '犯', - 'ïȘ ' => 'çŒȘ', - 'ïȘĄ' => '瑱', - 'ïȘą' => '甆', - 'ïȘŁ' => '画', - 'ïȘ€' => '瘝', - 'ïȘ„' => '瘟', - 'ïȘŠ' => '益', - 'ïȘ§' => '盛', - 'ïȘš' => '目', - 'ïȘ©' => '睊', - 'ïȘȘ' => '着', - 'ïȘ«' => '磌', - 'ïȘŹ' => 'çȘ±', - 'ïȘ­' => '節', - 'ïȘź' => 'ç±»', - 'ïȘŻ' => 'ç”›', - 'ïȘ°' => 'ç·Ž', - 'ïȘ±' => '猟', - 'ïȘČ' => '者', - 'ïȘł' => '荒', - 'ïȘŽ' => 'èŻ', - 'ïȘ”' => 'èč', - 'ïȘ¶' => '脁', - 'ïȘ·' => '芆', - 'ïȘž' => '芖', - 'ïȘč' => 'èȘż', - 'ïȘș' => '諞', - 'ïȘ»' => '請', - 'ïȘŒ' => 'èŹ', - 'ïȘœ' => '諟', - 'ïȘŸ' => 'è«­', - 'ïȘż' => 'èŹč', - '變' => 'èźŠ', - '贈' => '莈', - '輸' => '茞', - '遲' => 'éČ', - '醙' => '醙', - '鉶' => '鉶', - '陼' => '陌', - '難' => '難', - '靖' => '靖', - '韛' => '韛', - '響' => '響', - '頋' => '頋', - '頻' => 'é »', - '鬒' => '鬒', - '龜' => '韜', - '𢡊' => '𱡊', - '𢡄' => '𱡄', - '𣏕' => '𣏕', - '㮝' => '㼝', - '䀘' => '䀘', - '䀹' => 'ä€č', - '𥉉' => 'đ„‰‰', - '𥳐' => 'đ„ł', - '𧻓' => '𧻓', - '齃' => '霃', - '龎' => '韎', - 'ïŹ' => 'Ś™ÖŽ', - 'ïŹŸ' => 'ŚČÖ·', - 'ïŹȘ' => 'کځ', - 'ïŹ«' => 'کڂ', - 'ïŹŹ' => 'Ś©ÖŒŚ', - 'ïŹ­' => 'Ś©ÖŒŚ‚', - 'ïŹź' => 'ڐַ', - 'ïŹŻ' => 'ŚÖž', - 'ïŹ°' => 'ŚÖŒ', - 'ïŹ±' => 'Ś‘ÖŒ', - 'ïŹČ' => 'Ś’ÖŒ', - 'ïŹł' => 'Ś“ÖŒ', - 'ïŹŽ' => 'Ś”ÖŒ', - 'ïŹ”' => 'Ś•ÖŒ', - 'ïŹ¶' => 'Ś–ÖŒ', - 'ïŹž' => 'Ś˜ÖŒ', - 'ïŹč' => 'Ś™ÖŒ', - 'ïŹș' => 'ŚšÖŒ', - 'ïŹ»' => 'Ś›ÖŒ', - 'ïŹŒ' => 'ŚœÖŒ', - 'ïŹŸ' => 'ŚžÖŒ', - 'נּ' => 'Ś ÖŒ', - 'סּ' => 'ŚĄÖŒ', - 'ףּ' => 'ŚŁÖŒ', - 'פּ' => 'Ś€ÖŒ', - 'צּ' => 'ŚŠÖŒ', - 'קּ' => 'Ś§ÖŒ', - 'רּ' => 'ŚšÖŒ', - 'שּ' => 'Ś©ÖŒ', - 'תּ' => 'ŚȘÖŒ', - 'וֹ' => 'Ś•Öč', - 'בֿ' => 'Ś‘Öż', - 'כֿ' => 'Ś›Öż', - 'פֿ' => 'Ś€Öż', - '𑂚' => '𑂙đ‘‚ș', - '𑂜' => '𑂛đ‘‚ș', - 'đ‘‚«' => 'đ‘‚„đ‘‚ș', - '𑄼' => '𑄮', - '𑄯' => 'đ‘„Č𑄧', - '𑍋' => 'đ‘‡đ‘ŒŸ', - '𑍌' => '𑍌', - 'đ‘’»' => 'đ‘’čđ‘’ș', - 'đ‘’Œ' => 'đ‘’č𑒰', - 'đ‘’Ÿ' => 'đ‘’čđ‘’œ', - 'đ‘–ș' => '𑖾𑖯', - 'đ‘–»' => 'đ‘–č𑖯', - '𑀞' => '𑀔𑀰', - '𝅗𝅥' => 'đ…—đ…„', - '𝅘𝅥' => 'đ…˜đ…„', - '𝅘𝅥𝅮' => 'đ…˜đ…„đ…ź', - '𝅘𝅥𝅯' => 'đ…˜đ…„đ…Ż', - '𝅱' => 'đ…˜đ…„đ…°', - '𝅘𝅥𝅱' => 'đ…˜đ…„đ…±', - 'đ…€' => 'đ…˜đ…„đ…Č', - 'đ†»' => 'đ†čđ…„', - 'đ†Œ' => 'đ†șđ…„', - 'đ†œ' => 'đ†čđ…„đ…ź', - 'đ†Ÿ' => 'đ†șđ…„đ…ź', - '𝆹𝅥𝅯' => 'đ†čđ…„đ…Ż', - '𝆺𝅥𝅯' => 'đ†șđ…„đ…Ż', - '丽' => 'äžœ', - '丸' => 'äžž', - '乁' => 'äč', - '𠄢' => '𠄱', - '你' => '䜠', - '侮' => 'äŸź', - '侻' => '䟻', - '倂' => '怂', - '偺' => 'ćș', - '備' => '悙', - '僧' => '惧', - '像' => '惏', - '㒞' => '㒞', - '𠘺' => 'đ ˜ș', - '免' => '慍', - '兔' => '慔', - '兤' => 'ć…€', - '具' => 'ć…·', - '𠔜' => '𠔜', - '㒹' => 'ă’č', - '內' => '慧', - '再' => '憍', - '𠕋' => '𠕋', - '冗' => '憗', - '冤' => '憀', - '仌' => '仌', - '冬' => '憬', - '况' => '憔', - '𩇟' => 'đ©‡Ÿ', - '凵' => '懔', - '刃' => '戃', - '㓟' => '㓟', - '刻' => '戻', - '勇' => '扆', - '叫' => 'ć‰Č', - '剷' => '扷', - '丽' => '㔕', - '你' => '拇', - '僧' => '拉', - '勤' => 'ć‹€', - '冬' => 'ć‹ș', - '包' => '挅', - 'đŻ Ș' => '挆', - '北' => '挗', - '兔' => '捉', - '卑' => '捑', - '㓟' => '捚', - '即' => '捳', - '卽' => 'ćœ', - '卿' => '捿', - 'đŻ Č' => '捿', - '卿' => '捿', - '免' => '𠚏', - '內' => '灰', - '及' => '揊', - '叟' => '揟', - '刃' => 'đ ­Ł', - 'đŻ č' => 'ć«', - 'đŻ ș' => 'ć±', - '吆' => '搆', - 'đŻ Œ' => '撞', - 'đŻ œ' => '搞', - 'đŻ Ÿ' => '摈', - '周' => '摹', - '咢' => '撱', - '𥃳' => 'ć“¶', - '唐' => '攐', - '𥄙' => '敓', - '啣' => '散', - '善' => '斄', - '善' => '斄', - '喙' => '料', - '睊' => 'ć–«', - '喳' => '斳', - '嗂' => '旂', - '圖' => '朖', - '嘆' => '昆', - '圗' => '朗', - '噑' => '晑', - '噴' => '普', - '磌' => '戇', - '壮' => '棟', - '城' => '柎', - '埴' => '柮', - '堍' => '栍', - '型' => '枋', - '堲' => 'ć Č', - '報' => 'ć ±', - '䄯' => '湏', - '𡓤' => '𥓀', - '売' => 'ćŁČ', - '壷' => '棷', - '夆' => '怆', - '多' => '〚', - '夢' => '怹', - '奢' => '愹', - '䈂' => '𡚹', - '𥲀' => 'đĄ›Ș', - '翺' => 'ć§Ź', - '築' => '湛', - '直' => 'ćš§', - '𥄳' => '様', - '瞋' => '橊', - '䊠' => '㛼', - '穊' => 'ă›Œ', - '糣' => '揈', - 'đŻĄȘ' => 'ćŹŸ', - '𥾆' => 'ćŹŸ', - '碌' => '𥧈', - '䌁' => '毃', - '竮' => '毘', - '縂' => '毧', - '繅' => '毳', - '䌴' => '𥏘', - 'đŻĄČ' => '毿', - '𦉇' => '氆', - '硎' => 'ćœ“', - '𥚚' => 'ć°ą', - '罺' => '㞁', - '𦌾' => 'ć± ', - '𥪧' => '江', - 'đŻĄč' => '泀', - 'đŻĄș' => 'ćȍ', - '𦓚' => '𥷀', - 'đŻĄŒ' => '攃', - 'đŻĄœ' => '𥷊', - 'đŻĄŸ' => '攟', - '聰' => '攫', - '𯱀' => 'ć”Œ', - '𯹁' => 'ć·Ą', - '𯱂' => 'ć·ą', - '𯹃' => 'ă Ż', - '𯱄' => 'ć·œ', - '𯱅' => 'ćžš', - '𯱆' => 'ćžœ', - '𯱇' => 'ćč©', - '𯹈' => '㥹', - '𯱉' => '𱆃', - '𯱊' => 'ăĄŒ', - '𯱋' => 'ćș°', - '𯱌' => 'ćșł', - '𯱍' => 'ćș¶', - '𯱎' => '㻊', - '𯱏' => 'đȘŽ’', - '𯹐' => 'ć»Ÿ', - '𯱑' => 'đąŒ±', - '𯱒' => 'đąŒ±', - '𯱓' => '舁', - '𯱔' => 'ćŒą', - '𯱕' => 'ćŒą', - '𯱖' => '㣇', - '𯱗' => '𣊾', - '𯹘' => '𩇚', - '𯱙' => 'ćœą', - '𯱚' => 'ćœ«', - '𯱛' => '㣣', - '𯱜' => 'ćŸš', - '𯱝' => '濍', - '𯱞' => '濗', - '𯱟' => 'ćżč', - '𯹠' => '悁', - '𯹥' => 'ă€ș', - '𯹹' => 'ă€œ', - '𯹣' => '悔', - '𯹀' => '𱛔', - '𯹄' => '惇', - '𯹊' => '慈', - '𯹧' => '慌', - '𯹚' => '慎', - '𯹩' => '慌', - 'đŻąȘ' => 'æ…ș', - '𯹫' => '憎', - '𯹏' => 'æ†Č', - '𯹭' => '憀', - '𯹟' => 'æ†Ż', - '𯹯' => '懞', - '𯹰' => 'æ‡Č', - '𯹱' => '懶', - 'đŻąČ' => '成', - '𯹳' => '戛', - '𯹎' => '扝', - '𯹔' => '抱', - '𯹶' => '拔', - '𯹷' => '捐', - '𯹞' => '𱬌', - 'đŻąč' => '挜', - 'đŻąș' => '拌', - '𯹻' => '捚', - 'đŻąŒ' => '掃', - 'đŻąœ' => '揀', - 'đŻąŸ' => '𹯱', - '𯹿' => 'æą', - '揅' => '揅', - '掩' => '掩', - '㨮' => 'ăšź', - '摩' => '摩', - '摾' => '摟', - '撝' => '撝', - '摷' => '摷', - '㩬' => '㩏', - '敏' => '敏', - '敬' => 'æ•Ź', - '𣀊' => '𣀊', - '旣' => 'æ—Ł', - '書' => '曞', - '晉' => '晉', - '㬙' => '㬙', - '暑' => '暑', - '㬈' => '㏈', - '㫤' => 'ă«€', - '冒' => '憒', - '冕' => '憕', - '最' => '最', - '暜' => '暜', - '肭' => '肭', - '䏙' => '䏙', - '朗' => '朗', - '望' => '望', - '朡' => 'æœĄ', - '杞' => '杞', - '杓' => '杓', - '𣏃' => '𣏃', - '㭉' => '㭉', - '柺' => 'æŸș', - '枅' => '枅', - '栟' => 'æĄ’', - '𣫺' => 'æą…', - '𣑭' => '𣑭', - '揅' => 'æąŽ', - '摾' => '栟', - '𣀊' => '怔', - '㮝' => '㼝', - '朡' => 'æ„‚', - '榣' => 'æŠŁ', - 'đŻŁȘ' => 'æ§Ș', - '檨' => 'æȘš', - '暑' => '𣚣', - '櫛' => '櫛', - '柺' => '㰘', - '次' => 'æŹĄ', - '𣢧' => '𣹧', - '歔' => '歔', - 'đŻŁČ' => '㱎', - '歲' => 'æ­Č', - '㬙' => 'æźŸ', - '最' => 'æźș', - '殻' => 'æź»', - '𣪍' => 'đŁȘ', - '㭉' => '𡮋', - 'đŻŁč' => 'đŁ«ș', - 'đŻŁș' => '汎', - '𣲼' => 'đŁČŒ', - 'đŻŁŒ' => 'æČż', - 'đŻŁœ' => 'æł', - 'đŻŁŸ' => 'æ±§', - '洖' => '掖', - '𯀀' => '掟', - '𯀁' => 'æ”·', - '𯀂' => '攁', - '𯀃' => '攩', - '𯀄' => '攞', - '𯀅' => '涅', - '𯀆' => '𣮞', - '𯀇' => '掎', - '𯀈' => 'æžŻ', - '𯀉' => 'æčź', - '𯀊' => '㎳', - '𯀋' => '滋', - 'đŻ€Œ' => '滇', - 'đŻ€' => '𣻑', - '𯀎' => 'æ·č', - 'đŻ€' => 'æœź', - '𯀐' => 'đŁœž', - '𯀑' => 'đŁŸŽ', - '𯀒' => 'æż†', - '𯀓' => 'ç€č', - '𯀔' => '瀞', - '𯀕' => '瀛', - '𯀖' => 'ă¶–', - '𯀗' => '灊', - '𯀘' => '灜', - '𯀙' => '灷', - '𯀚' => '炭', - '𯀛' => 'đ ”„', - 'đŻ€œ' => '煅', - 'đŻ€' => 'đ€‰Ł', - '𯀞' => '熜', - 'đŻ€Ÿ' => 'đ€Ž«', - '𯀠' => '爚', - '𯀥' => '爔', - '𯀹' => '牐', - '𯀣' => 'đ€˜ˆ', - '𯀀' => '犀', - '𯀄' => '犕', - '𯀊' => 'đ€œ”', - '𯀧' => 'đ€ ”', - '𯀚' => 'çș', - '𯀩' => '王', - 'đŻ€Ș' => 'ășŹ', - '𯀫' => '玄', - '𯀏' => 'ășž', - '𯀭' => 'ășž', - '𯀟' => '瑇', - '𯀯' => '瑜', - '𯀰' => '瑱', - '𯀱' => '璅', - 'đŻ€Č' => '瓊', - '𯀳' => 'ăŒ›', - '𯀎' => '甀', - '𯀔' => 'đ€°¶', - '𯀶' => '生', - '𯀷' => 'đ€Č’', - '𯀞' => '異', - 'đŻ€č' => '𱆟', - 'đŻ€ș' => '瘐', - '𯀻' => 'đ€ŸĄ', - 'đŻ€Œ' => 'đ€Ÿž', - 'đŻ€œ' => 'đ„„', - 'đŻ€Ÿ' => 'ăżŒ', - '𯀿' => '䀈', - '𯄀' => '目', - '𯄁' => 'đ„ƒł', - '𯄂' => 'đ„ƒČ', - '𯄃' => 'đ„„™', - '𯄄' => 'đ„„ł', - '𯄅' => '眞', - '𯄆' => '真', - '𯄇' => '真', - '𯄈' => '睊', - '𯄉' => 'ä€č', - '𯄊' => '瞋', - '𯄋' => '䁆', - 'đŻ„Œ' => '䂖', - 'đŻ„' => 'đ„', - '𯄎' => '硎', - 'đŻ„' => '籌', - '𯄐' => '磌', - '𯄑' => '䃣', - '𯄒' => 'đ„˜Š', - '𯄓' => 'ç„–', - '𯄔' => 'đ„šš', - '𯄕' => 'đ„›…', - '𯄖' => '犏', - '𯄗' => 'ç§«', - '𯄘' => '䄯', - '𯄙' => '穀', - '𯄚' => '穊', - '𯄛' => '穏', - 'đŻ„œ' => 'đ„„Œ', - 'đŻ„' => 'đ„Ș§', - '𯄞' => 'đ„Ș§', - 'đŻ„Ÿ' => '竟', - '𯄠' => '䈂', - '𯄥' => 'đ„ź«', - '𯄹' => '篆', - '𯄣' => '築', - '𯄀' => '䈧', - '𯄄' => 'đ„Ȁ', - '𯄊' => '糒', - '𯄧' => '䊠', - '𯄚' => 'çłš', - '𯄩' => '糣', - 'đŻ„Ș' => '简', - '𯄫' => 'đ„Ÿ†', - '𯄏' => '産', - '𯄭' => '䌁', - '𯄟' => '緇', - '𯄯' => '羂', - '𯄰' => 'çč…', - '𯄱' => '䌮', - 'đŻ„Č' => '𩈹', - '𯄳' => '𩉇', - '𯄎' => '䍙', - '𯄔' => '𩋙', - '𯄶' => 'çœș', - '𯄷' => 'đŠŒŸ', - '𯄞' => '矕', - 'đŻ„č' => 'çżș', - 'đŻ„ș' => '者', - '𯄻' => '𩓚', - 'đŻ„Œ' => '𩔣', - 'đŻ„œ' => '聠', - 'đŻ„Ÿ' => '𩖹', - '𯄿' => '聰', - '𯩀' => '𣍟', - '𯊁' => '䏕', - '𯩂' => 'è‚Č', - '𯊃' => '脃', - '𯩄' => '䐋', - '𯩅' => '脟', - '𯩆' => 'ćȘ”', - '𯩇' => '𩞧', - '𯊈' => 'đŠž”', - '𯩉' => '𣎓', - '𯩊' => '𣎜', - '𯩋' => '舁', - '𯩌' => '舄', - '𯩍' => '蟞', - '𯩎' => '䑫', - '𯩏' => '芑', - '𯊐' => '芋', - '𯩑' => '芝', - '𯩒' => '抳', - '𯩓' => '花', - '𯩔' => 'èŠł', - '𯩕' => '芜', - '𯩖' => '苊', - '𯩗' => 'đŠŹŒ', - '𯊘' => 'è‹„', - '𯩙' => '茝', - '𯩚' => 'èŁ', - '𯩛' => '莭', - '𯩜' => 'èŒŁ', - '𯩝' => '莜', - '𯩞' => '菧', - '𯩟' => '著', - '𯊠' => '荓', - '𯊥' => '菊', - '𯊹' => '菌', - '𯊣' => '菜', - '𯊀' => 'đŠ°¶', - '𯊄' => 'đŠ”«', - '𯊊' => '𩳕', - '𯊧' => '䔫', - '𯊚' => '蓱', - '𯊩' => 'è“ł', - 'đŻŠȘ' => '蔖', - '𯊫' => '𧏊', - '𯊏' => 'è•€', - '𯊭' => 'đŠŒŹ', - '𯊟' => '䕝', - '𯊯' => '䕡', - '𯊰' => 'đŠŸ±', - '𯊱' => '𧃒', - 'đŻŠČ' => '䕫', - '𯊳' => '虐', - '𯊎' => '虜', - '𯊔' => '虧', - '𯊶' => '虩', - '𯊷' => '蚩', - '𯊞' => '蚈', - 'đŻŠč' => '蜎', - 'đŻŠș' => 'è›ą', - '𯊻' => 'èč', - 'đŻŠŒ' => '蜚', - 'đŻŠœ' => '蝫', - 'đŻŠŸ' => '螆', - '𯊿' => '䗗', - '蟡' => 'èŸĄ', - '蠁' => '蠁', - '䗹' => 'ä—č', - '衠' => 'èĄ ', - '衣' => 'èĄŁ', - '𧙧' => '𧙧', - '裗' => 'èŁ—', - '裞' => 'èŁž', - '䘵' => '䘔', - '裺' => 'èŁș', - '㒻' => 'ă’»', - '𧢮' => 'đ§ąź', - '𧥦' => 'đ§„Š', - '䚾' => '䚟', - '䛇' => '䛇', - '誠' => 'èȘ ', - '諭' => 'è«­', - '變' => 'èźŠ', - '豕' => '豕', - '𧲨' => 'đ§Čš', - '貫' => 'èČ«', - '賁' => 'èł', - '贛' => '莛', - '起' => 'è”·', - '𧼯' => 'đ§ŒŻ', - '𠠄' => '𠠄', - '跋' => '跋', - '趼' => 'è¶Œ', - '跰' => 'è·°', - '𠣞' => '𠣞', - '軔' => '軔', - '輸' => '茞', - '𨗒' => '𹗒', - '𨜮' => '𹗭', - '䩶' => '邔', - '郱' => '郱', - '蟡' => '鄑', - '衣' => '𹜼', - '㒻' => '鄛', - '鈸' => '鈞', - '跋' => '鋗', - '鋘' => '鋘', - 'đݧȘ' => '鉌', - '鏹' => 'éč', - '誠' => '鐕', - '𨯺' => 'đšŻș', - '輸' => '開', - '䦕' => '䩕', - '閷' => '閷', - '𨵷' => 'đš”·', - 'đݧČ' => 'ä§Š', - '雃' => '雃', - '䛇' => 'ć¶Č', - '貫' => '霣', - '𩅅' => 'đ©……', - '𩈚' => 'đ©ˆš', - '軔' => '䩟', - 'đݧč' => 'ä©¶', - 'đݧș' => '韠', - '𩐊' => '𩐊', - 'đŻ§Œ' => 'äȘČ', - 'đŻ§œ' => 'đ©’–', - 'đŻ§Ÿ' => '頋', - '頋' => '頋', - '𯹀' => 'é ©', - '𯚁' => 'đ©–¶', - '𯹂' => '飹', - '𯚃' => '䏳', - '𯹄' => '逩', - '𯹅' => '銧', - '𯹆' => '駂', - '𯹇' => 'é§Ÿ', - '𯚈' => '䯎', - '𯹉' => '𩏰', - '𯹊' => '鬒', - '𯹋' => '鱀', - '𯹌' => 'éłœ', - '𯹍' => '䳎', - '𯹎' => 'äł­', - '𯹏' => 'é”§', - '𯚐' => 'đȘƒŽ', - '𯹑' => 'äłž', - '𯹒' => 'đȘ„…', - '𯹓' => 'đȘˆŽ', - '𯹔' => 'đȘŠ‘', - '𯹕' => 'éș»', - '𯹖' => 'ä”–', - '𯹗' => 'é»č', - '𯚘' => '黟', - '𯹙' => '錅', - '𯹚' => '錏', - '𯹛' => '錖', - '𯹜' => '錻', - '𯹝' => 'đȘ˜€', -); diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php deleted file mode 100644 index ec90f36..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php +++ /dev/null @@ -1,876 +0,0 @@ - 230, - '́' => 230, - '̂' => 230, - '̃' => 230, - '̄' => 230, - '̅' => 230, - '̆' => 230, - '̇' => 230, - '̈' => 230, - '̉' => 230, - '̊' => 230, - '̋' => 230, - '̌' => 230, - '̍' => 230, - '̎' => 230, - '̏' => 230, - '̐' => 230, - '̑' => 230, - '̒' => 230, - '̓' => 230, - '̔' => 230, - '̕' => 232, - '̖' => 220, - '̗' => 220, - '̘' => 220, - '̙' => 220, - '̚' => 232, - '̛' => 216, - '̜' => 220, - '̝' => 220, - '̞' => 220, - '̟' => 220, - 'Ì ' => 220, - 'ÌĄ' => 202, - 'Ìą' => 202, - 'ÌŁ' => 220, - 'Ì€' => 220, - 'Ì„' => 220, - 'ÌŠ' => 220, - '̧' => 202, - 'Ìš' => 202, - 'Ì©' => 220, - 'ÌȘ' => 220, - 'Ì«' => 220, - 'ÌŹ' => 220, - 'Ì­' => 220, - 'Ìź' => 220, - 'ÌŻ' => 220, - '̰' => 220, - '̱' => 220, - 'ÌČ' => 220, - 'Ìł' => 220, - 'ÌŽ' => 1, - 'Ì”' => 1, - '̶' => 1, - 'Ì·' => 1, - 'Ìž' => 1, - 'Ìč' => 220, - 'Ìș' => 220, - 'Ì»' => 220, - 'ÌŒ' => 220, - 'Ìœ' => 230, - 'ÌŸ' => 230, - 'Ìż' => 230, - '̀' => 230, - '́' => 230, - '͂' => 230, - '̓' => 230, - '̈́' => 230, - 'ͅ' => 240, - '͆' => 230, - '͇' => 220, - '͈' => 220, - '͉' => 220, - '͊' => 230, - '͋' => 230, - '͌' => 230, - '͍' => 220, - '͎' => 220, - '͐' => 230, - '͑' => 230, - '͒' => 230, - '͓' => 220, - '͔' => 220, - '͕' => 220, - '͖' => 220, - '͗' => 230, - '͘' => 232, - '͙' => 220, - '͚' => 220, - '͛' => 230, - '͜' => 233, - '͝' => 234, - '͞' => 234, - '͟' => 233, - 'Í ' => 234, - 'ÍĄ' => 234, - 'Íą' => 233, - 'ÍŁ' => 230, - 'Í€' => 230, - 'Í„' => 230, - 'ÍŠ' => 230, - 'ͧ' => 230, - 'Íš' => 230, - 'Í©' => 230, - 'ÍȘ' => 230, - 'Í«' => 230, - 'ÍŹ' => 230, - 'Í­' => 230, - 'Íź' => 230, - 'ÍŻ' => 230, - '҃' => 230, - '҄' => 230, - '҅' => 230, - '҆' => 230, - '҇' => 230, - '֑' => 220, - '֒' => 230, - '֓' => 230, - '֔' => 230, - '֕' => 230, - '֖' => 220, - '֗' => 230, - '֘' => 230, - '֙' => 230, - '֚' => 222, - '֛' => 220, - '֜' => 230, - '֝' => 230, - '֞' => 230, - '֟' => 230, - 'Ö ' => 230, - 'ÖĄ' => 230, - 'Öą' => 220, - 'ÖŁ' => 220, - 'Ö€' => 220, - 'Ö„' => 220, - 'ÖŠ' => 220, - 'Ö§' => 220, - 'Öš' => 230, - 'Ö©' => 230, - 'ÖȘ' => 220, - 'Ö«' => 230, - 'ÖŹ' => 230, - 'Ö­' => 222, - 'Öź' => 228, - 'ÖŻ' => 230, - 'Ö°' => 10, - 'Ö±' => 11, - 'ÖČ' => 12, - 'Öł' => 13, - 'ÖŽ' => 14, - 'Ö”' => 15, - 'Ö¶' => 16, - 'Ö·' => 17, - 'Öž' => 18, - 'Öč' => 19, - 'Öș' => 19, - 'Ö»' => 20, - 'ÖŒ' => 21, - 'Öœ' => 22, - 'Öż' => 23, - 'ځ' => 24, - 'Ś‚' => 25, - 'Ś„' => 230, - 'Ś…' => 220, - 'ڇ' => 18, - 'ې' => 230, - 'ۑ' => 230, - 'ے' => 230, - 'ۓ' => 230, - '۔' => 230, - 'ە' => 230, - 'ۖ' => 230, - 'ۗ' => 230, - 'ۘ' => 30, - 'ۙ' => 31, - 'ۚ' => 32, - 'ً' => 27, - 'ٌ' => 28, - 'ٍ' => 29, - 'َ' => 30, - 'ُ' => 31, - 'ِ' => 32, - 'ّ' => 33, - 'ْ' => 34, - 'ٓ' => 230, - 'ٔ' => 230, - 'ٕ' => 220, - 'ٖ' => 220, - 'ٗ' => 230, - '٘' => 230, - 'ٙ' => 230, - 'ٚ' => 230, - 'ٛ' => 230, - 'ٜ' => 220, - 'ٝ' => 230, - 'ٞ' => 230, - 'ٟ' => 220, - 'Ù°' => 35, - 'ۖ' => 230, - 'ۗ' => 230, - 'ۘ' => 230, - 'ۙ' => 230, - 'ۚ' => 230, - 'ۛ' => 230, - 'ۜ' => 230, - '۟' => 230, - 'Û ' => 230, - 'ÛĄ' => 230, - 'Ûą' => 230, - 'ÛŁ' => 220, - 'Û€' => 230, - 'Û§' => 230, - 'Ûš' => 230, - 'ÛȘ' => 220, - 'Û«' => 230, - 'ÛŹ' => 230, - 'Û­' => 220, - 'ܑ' => 36, - 'ܰ' => 230, - 'ܱ' => 220, - 'ÜČ' => 230, - 'Üł' => 230, - 'ÜŽ' => 220, - 'Ü”' => 230, - 'ܶ' => 230, - 'Ü·' => 220, - 'Üž' => 220, - 'Üč' => 220, - 'Üș' => 230, - 'Ü»' => 220, - 'ÜŒ' => 220, - 'Üœ' => 230, - 'ÜŸ' => 220, - 'Üż' => 230, - 'ʀ' => 230, - 'ʁ' => 230, - 'ʂ' => 220, - 'ʃ' => 230, - 'ʄ' => 220, - 'ʅ' => 230, - 'ʆ' => 220, - 'ʇ' => 230, - 'ʈ' => 220, - 'ʉ' => 230, - 'Ɗ' => 230, - 'ß«' => 230, - 'ߏ' => 230, - 'ß­' => 230, - 'ßź' => 230, - '߯' => 230, - 'ß°' => 230, - 'ß±' => 230, - 'ßČ' => 220, - 'ßł' => 230, - 'ßœ' => 220, - 'ࠖ' => 230, - 'ࠗ' => 230, - '࠘' => 230, - '࠙' => 230, - 'ࠛ' => 230, - 'ࠜ' => 230, - 'ࠝ' => 230, - 'ࠞ' => 230, - 'ࠟ' => 230, - 'à  ' => 230, - 'à Ą' => 230, - 'à ą' => 230, - 'à Ł' => 230, - 'à „' => 230, - 'à Š' => 230, - 'à §' => 230, - 'à ©' => 230, - 'à Ș' => 230, - 'à «' => 230, - 'à Ź' => 230, - 'à ­' => 230, - 'àĄ™' => 220, - 'àĄš' => 220, - 'àĄ›' => 220, - 'àŁ“' => 220, - 'àŁ”' => 230, - 'àŁ•' => 230, - 'àŁ–' => 230, - 'àŁ—' => 230, - 'àŁ˜' => 230, - 'àŁ™' => 230, - 'àŁš' => 230, - 'àŁ›' => 230, - 'àŁœ' => 230, - 'àŁ' => 230, - 'àŁž' => 230, - 'àŁŸ' => 230, - 'àŁ ' => 230, - 'àŁĄ' => 230, - 'àŁŁ' => 220, - 'àŁ€' => 230, - 'àŁ„' => 230, - 'àŁŠ' => 220, - 'àŁ§' => 230, - 'àŁš' => 230, - 'àŁ©' => 220, - 'àŁȘ' => 230, - 'àŁ«' => 230, - 'àŁŹ' => 230, - 'àŁ­' => 220, - 'àŁź' => 220, - 'àŁŻ' => 220, - 'àŁ°' => 27, - 'àŁ±' => 28, - 'àŁČ' => 29, - 'àŁł' => 230, - 'àŁŽ' => 230, - 'àŁ”' => 230, - 'àŁ¶' => 220, - 'àŁ·' => 230, - 'àŁž' => 230, - 'àŁč' => 220, - 'àŁș' => 220, - 'àŁ»' => 230, - 'àŁŒ' => 230, - 'àŁœ' => 230, - 'àŁŸ' => 230, - 'àŁż' => 230, - 'à€Œ' => 7, - 'à„' => 9, - 'à„‘' => 230, - 'à„’' => 220, - 'à„“' => 230, - 'à„”' => 230, - 'àŠŒ' => 7, - '্' => 9, - 'à§Ÿ' => 230, - 'àšŒ' => 7, - '੍' => 9, - 'àȘŒ' => 7, - '્' => 9, - 'àŹŒ' => 7, - '୍' => 9, - 'àŻ' => 9, - '్' => 9, - 'ౕ' => 84, - 'ౖ' => 91, - 'àČŒ' => 7, - 'àł' => 9, - 'àŽ»' => 9, - 'àŽŒ' => 9, - 'à”' => 9, - '්' => 9, - 'àžž' => 103, - 'àžč' => 103, - 'àžș' => 9, - 'àčˆ' => 107, - 'àč‰' => 107, - 'àčŠ' => 107, - 'àč‹' => 107, - 'àșž' => 118, - 'àșč' => 118, - 'àșș' => 9, - '່' => 122, - '້' => 122, - '໊' => 122, - '໋' => 122, - 'àŒ˜' => 220, - 'àŒ™' => 220, - 'àŒ”' => 220, - 'àŒ·' => 220, - 'àŒč' => 216, - 'àœ±' => 129, - 'àœČ' => 130, - 'àœŽ' => 132, - 'àœș' => 130, - 'àœ»' => 130, - 'àœŒ' => 130, - 'àœœ' => 130, - 'àŸ€' => 130, - 'àŸ‚' => 230, - 'àŸƒ' => 230, - 'àŸ„' => 9, - 'àŸ†' => 230, - 'àŸ‡' => 230, - 'àż†' => 220, - '့' => 7, - 'á€č' => 9, - 'á€ș' => 9, - 'ႍ' => 220, - '፝' => 230, - '፞' => 230, - '፟' => 230, - '᜔' => 9, - 'ᜮ' => 9, - '្' => 9, - '៝' => 230, - 'áą©' => 228, - 'á€č' => 222, - 'á€ș' => 230, - 'ျ' => 220, - 'ṗ' => 230, - 'ᚘ' => 220, - 'á© ' => 9, - 'á©”' => 230, - 'á©¶' => 230, - 'á©·' => 230, - 'ᩞ' => 230, - 'á©č' => 230, - 'á©ș' => 230, - 'á©»' => 230, - 'ᩌ' => 230, - '᩿' => 220, - 'áȘ°' => 230, - 'áȘ±' => 230, - 'áȘČ' => 230, - 'áȘł' => 230, - 'áȘŽ' => 230, - 'áȘ”' => 220, - 'áȘ¶' => 220, - 'áȘ·' => 220, - 'áȘž' => 220, - 'áȘč' => 220, - 'áȘș' => 220, - 'áȘ»' => 230, - 'áȘŒ' => 230, - 'áȘœ' => 220, - 'áȘż' => 220, - 'ᫀ' => 220, - 'Ꮞ' => 7, - '᭄' => 9, - 'á­«' => 230, - 'á­Ź' => 220, - 'á­­' => 230, - 'á­ź' => 230, - 'á­Ż' => 230, - 'á­°' => 230, - 'á­±' => 230, - 'á­Č' => 230, - 'á­ł' => 230, - 'áźȘ' => 9, - 'áź«' => 9, - 'ᯊ' => 7, - 'áŻČ' => 9, - '᯳' => 9, - 'á°·' => 7, - '᳐' => 230, - '᳑' => 230, - '᳒' => 230, - '᳔' => 1, - '᳕' => 220, - '᳖' => 220, - '᳗' => 220, - '᳘' => 220, - '᳙' => 220, - '᳚' => 230, - '᳛' => 230, - '᳜' => 220, - '᳝' => 220, - '᳞' => 220, - '᳟' => 220, - 'áł ' => 230, - 'áłą' => 1, - '᳣' => 1, - '᳀' => 1, - 'áł„' => 1, - '᳊' => 1, - 'áł§' => 1, - 'áłš' => 1, - 'áł­' => 220, - '᳎' => 230, - 'áłž' => 230, - 'áłč' => 230, - '᷀' => 230, - '᷁' => 230, - '᷂' => 220, - '᷃' => 230, - '᷄' => 230, - '᷅' => 230, - '᷆' => 230, - '᷇' => 230, - '᷈' => 230, - '᷉' => 230, - '᷊' => 220, - '᷋' => 230, - '᷌' => 230, - '᷍' => 234, - '᷎' => 214, - '᷏' => 220, - '᷐' => 202, - '᷑' => 230, - '᷒' => 230, - 'ᷓ' => 230, - 'ᷔ' => 230, - 'ᷕ' => 230, - 'ᷖ' => 230, - 'ᷗ' => 230, - 'ᷘ' => 230, - 'ᷙ' => 230, - 'ᷚ' => 230, - 'ᷛ' => 230, - 'ᷜ' => 230, - 'ᷝ' => 230, - 'ᷞ' => 230, - 'ᷟ' => 230, - 'á· ' => 230, - 'á·Ą' => 230, - 'á·ą' => 230, - 'á·Ł' => 230, - 'á·€' => 230, - 'á·„' => 230, - 'á·Š' => 230, - 'á·§' => 230, - 'á·š' => 230, - 'á·©' => 230, - 'á·Ș' => 230, - 'á·«' => 230, - 'á·Ź' => 230, - 'á·­' => 230, - 'á·ź' => 230, - 'á·Ż' => 230, - 'á·°' => 230, - 'á·±' => 230, - 'á·Č' => 230, - 'á·ł' => 230, - 'á·Ž' => 230, - 'á·”' => 230, - 'á·¶' => 232, - 'á··' => 228, - 'á·ž' => 228, - 'á·č' => 220, - 'á·»' => 230, - 'á·Œ' => 233, - 'á·œ' => 220, - 'á·Ÿ' => 230, - 'á·ż' => 220, - '⃐' => 230, - '⃑' => 230, - '⃒' => 1, - '⃓' => 1, - '⃔' => 230, - '⃕' => 230, - '⃖' => 230, - '⃗' => 230, - '⃘' => 1, - '⃙' => 1, - '⃚' => 1, - '⃛' => 230, - '⃜' => 230, - '⃥' => 230, - '⃄' => 1, - '⃊' => 1, - '⃧' => 230, - '⃚' => 220, - '⃩' => 230, - 'âƒȘ' => 1, - '⃫' => 1, - '⃏' => 220, - '⃭' => 220, - '⃟' => 220, - '⃯' => 220, - '⃰' => 230, - '⳯' => 230, - 'âł°' => 230, - 'âł±' => 230, - '┿' => 9, - 'â· ' => 230, - 'â·Ą' => 230, - 'â·ą' => 230, - 'â·Ł' => 230, - 'â·€' => 230, - 'â·„' => 230, - 'â·Š' => 230, - 'â·§' => 230, - 'â·š' => 230, - 'â·©' => 230, - 'â·Ș' => 230, - 'â·«' => 230, - 'â·Ź' => 230, - 'â·­' => 230, - 'â·ź' => 230, - 'â·Ż' => 230, - 'â·°' => 230, - 'â·±' => 230, - 'â·Č' => 230, - 'â·ł' => 230, - 'â·Ž' => 230, - 'â·”' => 230, - 'â·¶' => 230, - 'â··' => 230, - 'â·ž' => 230, - 'â·č' => 230, - 'â·ș' => 230, - 'â·»' => 230, - 'â·Œ' => 230, - 'â·œ' => 230, - 'â·Ÿ' => 230, - 'â·ż' => 230, - 'ă€Ș' => 218, - '〫' => 228, - '〬' => 232, - '〭' => 222, - '〼' => 224, - '〯' => 224, - '゙' => 8, - '゚' => 8, - 'ê™Ż' => 230, - 'Ꙏ' => 230, - 'ê™”' => 230, - 'ꙶ' => 230, - 'ꙷ' => 230, - 'Ꙟ' => 230, - 'ê™č' => 230, - 'ê™ș' => 230, - 'ꙻ' => 230, - 'Ꙍ' => 230, - 'Ꙝ' => 230, - 'ꚞ' => 230, - 'ꚟ' => 230, - '꛰' => 230, - '꛱' => 230, - '꠆' => 9, - 'ê Ź' => 9, - 'êŁ„' => 9, - 'êŁ ' => 230, - 'êŁĄ' => 230, - 'êŁą' => 230, - 'êŁŁ' => 230, - 'êŁ€' => 230, - 'êŁ„' => 230, - 'êŁŠ' => 230, - 'êŁ§' => 230, - 'êŁš' => 230, - 'êŁ©' => 230, - 'êŁȘ' => 230, - 'êŁ«' => 230, - 'êŁŹ' => 230, - 'êŁ­' => 230, - 'êŁź' => 230, - 'êŁŻ' => 230, - 'êŁ°' => 230, - 'êŁ±' => 230, - 'ꀫ' => 220, - 'ê€Ź' => 220, - 'ꀭ' => 220, - 'ê„“' => 9, - 'êŠł' => 7, - '꧀' => 9, - 'êȘ°' => 230, - 'êȘČ' => 230, - 'êȘł' => 230, - 'êȘŽ' => 220, - 'êȘ·' => 230, - 'êȘž' => 230, - 'êȘŸ' => 230, - 'êȘż' => 230, - '꫁' => 230, - 'ê«¶' => 9, - 'êŻ­' => 9, - 'ïŹž' => 26, - 'ïž ' => 230, - 'ïžĄ' => 230, - 'ïžą' => 230, - 'ïžŁ' => 230, - '' => 230, - 'ïž„' => 230, - '' => 230, - 'ïž§' => 220, - 'ïžš' => 220, - 'ïž©' => 220, - 'ïžȘ' => 220, - 'ïž«' => 220, - 'ïžŹ' => 220, - 'ïž­' => 220, - 'ïžź' => 230, - 'ïžŻ' => 230, - 'đ‡œ' => 220, - '𐋠' => 220, - 'đ¶' => 230, - 'đ·' => 230, - '𐍾' => 230, - 'đč' => 230, - 'đș' => 230, - '𐹍' => 220, - '𐹏' => 230, - '𐚞' => 230, - 'đšč' => 1, - 'đšș' => 220, - '𐚿' => 9, - '𐫄' => 230, - '𐫊' => 220, - '𐎀' => 230, - '𐎄' => 230, - '𐎊' => 230, - '𐎧' => 230, - 'đș«' => 230, - 'đșŹ' => 230, - 'đœ†' => 220, - 'đœ‡' => 220, - 'đœˆ' => 230, - 'đœ‰' => 230, - 'đœŠ' => 230, - 'đœ‹' => 220, - 'đœŒ' => 230, - 'đœ' => 220, - 'đœŽ' => 220, - 'đœ' => 220, - 'đœ' => 220, - '𑁆' => 9, - '𑁿' => 9, - 'đ‘‚č' => 9, - 'đ‘‚ș' => 7, - '𑄀' => 230, - '𑄁' => 230, - '𑄂' => 230, - '𑄳' => 9, - '𑄮' => 9, - '𑅳' => 7, - '𑇀' => 9, - '𑇊' => 7, - 'đ‘ˆ”' => 9, - 'đ‘ˆ¶' => 7, - 'đ‘‹©' => 7, - 'đ‘‹Ș' => 9, - 'đ‘Œ»' => 7, - 'đ‘ŒŒ' => 7, - '𑍍' => 9, - '𑍩' => 230, - '𑍧' => 230, - '𑍹' => 230, - 'đ‘©' => 230, - 'đ‘Ș' => 230, - 'đ‘«' => 230, - '𑍬' => 230, - '𑍰' => 230, - 'đ‘±' => 230, - 'đ‘Č' => 230, - '𑍳' => 230, - '𑍮' => 230, - '𑑂' => 9, - '𑑆' => 7, - '𑑞' => 230, - '𑓂' => 9, - '𑓃' => 7, - '𑖿' => 9, - '𑗀' => 7, - '𑘿' => 9, - '𑚶' => 9, - '𑚷' => 7, - 'đ‘œ«' => 9, - 'đ‘ č' => 9, - 'đ‘ ș' => 7, - 'đ‘€œ' => 9, - 'đ‘€Ÿ' => 9, - 'đ‘„ƒ' => 7, - '𑧠' => 9, - '𑹮' => 9, - '𑩇' => 9, - 'đ‘Ș™' => 9, - '𑰿' => 9, - 'đ‘”‚' => 7, - 'đ‘”„' => 9, - 'đ‘”…' => 9, - 'đ‘¶—' => 9, - 'đ–«°' => 1, - 'đ–«±' => 1, - 'đ–«Č' => 1, - 'đ–«ł' => 1, - 'đ–«Ž' => 1, - '𖬰' => 230, - '𖏱' => 230, - 'đ–ŹČ' => 230, - '𖬳' => 230, - '𖬮' => 230, - 'đ–Ź”' => 230, - '𖏶' => 230, - '𖿰' => 6, - 'đ–ż±' => 6, - 'đ›Čž' => 1, - 'đ…„' => 216, - '𝅩' => 216, - '𝅧' => 1, - '𝅹' => 1, - 'đ…©' => 1, - '𝅭' => 226, - '𝅼' => 216, - '𝅯' => 216, - '𝅰' => 216, - 'đ…±' => 216, - 'đ…Č' => 216, - 'đ…»' => 220, - 'đ…Œ' => 220, - 'đ…œ' => 220, - 'đ…Ÿ' => 220, - '𝅿' => 220, - '𝆀' => 220, - '𝆁' => 220, - '𝆂' => 220, - '𝆅' => 230, - '𝆆' => 230, - '𝆇' => 230, - '𝆈' => 230, - '𝆉' => 230, - '𝆊' => 220, - '𝆋' => 220, - 'đ†Ș' => 230, - 'đ†«' => 230, - '𝆬' => 230, - '𝆭' => 230, - '𝉂' => 230, - '𝉃' => 230, - '𝉄' => 230, - '𞀀' => 230, - '𞀁' => 230, - '𞀂' => 230, - '𞀃' => 230, - '𞀄' => 230, - '𞀅' => 230, - '𞀆' => 230, - '𞀈' => 230, - '𞀉' => 230, - '𞀊' => 230, - '𞀋' => 230, - '𞀌' => 230, - '𞀍' => 230, - '𞀎' => 230, - '𞀏' => 230, - '𞀐' => 230, - '𞀑' => 230, - '𞀒' => 230, - '𞀓' => 230, - '𞀔' => 230, - '𞀕' => 230, - '𞀖' => 230, - '𞀗' => 230, - '𞀘' => 230, - '𞀛' => 230, - '𞀜' => 230, - '𞀝' => 230, - '𞀞' => 230, - '𞀟' => 230, - '𞀠' => 230, - '𞀡' => 230, - '𞀣' => 230, - '𞀀' => 230, - '𞀩' => 230, - '𞀧' => 230, - '𞀹' => 230, - '𞀩' => 230, - 'đž€Ș' => 230, - '𞄰' => 230, - '𞄱' => 230, - 'đž„Č' => 230, - '𞄳' => 230, - '𞄮' => 230, - 'đž„”' => 230, - 'đž„¶' => 230, - '𞋬' => 230, - '𞋭' => 230, - '𞋼' => 230, - '𞋯' => 230, - '𞣐' => 220, - '𞣑' => 220, - '𞣒' => 220, - '𞣓' => 220, - '𞣔' => 220, - '𞣕' => 220, - '𞣖' => 220, - 'đž„„' => 230, - 'đž„…' => 230, - '𞄆' => 230, - '𞄇' => 230, - 'đž„ˆ' => 230, - '𞄉' => 230, - '𞄊' => 7, -); diff --git a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php deleted file mode 100644 index 1574902..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php +++ /dev/null @@ -1,3695 +0,0 @@ - ' ', - 'š' => ' ̈', - 'ÂȘ' => 'a', - 'ÂŻ' => ' ̄', - 'ÂČ' => '2', - 'Âł' => '3', - 'ÂŽ' => ' ́', - '”' => 'ÎŒ', - 'ž' => ' ̧', - 'Âč' => '1', - 'Âș' => 'o', - 'ÂŒ' => '1⁄4', - 'œ' => '1⁄2', - 'Ÿ' => '3⁄4', - 'ÄČ' => 'IJ', - 'Äł' => 'ij', - 'Äż' => 'L·', - 'ƀ' => 'l·', - 'Ɖ' => 'ÊŒn', - 'Ćż' => 's', - 'DŽ' => 'DŽ', - 'Dž' => 'Dž', - 'dž' => 'dž', - 'LJ' => 'LJ', - 'Lj' => 'Lj', - 'lj' => 'lj', - 'NJ' => 'NJ', - 'Nj' => 'Nj', - 'nj' => 'nj', - 'DZ' => 'DZ', - 'ÇČ' => 'Dz', - 'Çł' => 'dz', - 'ʰ' => 'h', - 'ʱ' => 'ÉŠ', - 'ÊČ' => 'j', - 'Êł' => 'r', - 'ÊŽ' => 'Éč', - 'Ê”' => 'É»', - 'ʶ' => 'ʁ', - 'Ê·' => 'w', - 'Êž' => 'y', - '˘' => ' ̆', - '˙' => ' ̇', - '˚' => ' ̊', - '˛' => ' Ìš', - '˜' => ' ̃', - '˝' => ' ̋', - 'Ë ' => 'ÉŁ', - 'ËĄ' => 'l', - 'Ëą' => 's', - 'ËŁ' => 'x', - 'Ë€' => 'ʕ', - 'Íș' => ' ͅ', - '΄' => ' ́', - '΅' => ' ̈́', - 'ϐ' => 'ÎČ', - 'ϑ' => 'Ξ', - 'ϒ' => '΄', - 'ϓ' => '΄́', - 'ϔ' => '΄̈', - 'ϕ' => 'φ', - 'ϖ' => 'π', - 'ϰ' => 'Îș', - 'ϱ' => 'ρ', - 'ÏČ' => 'ς', - 'ÏŽ' => 'Θ', - 'Ï”' => 'Δ', - 'Ïč' => 'ÎŁ', - 'և' => 'Ő„Ö‚', - 'Ù”' => 'Ű§ÙŽ', - 'Ù¶' => 'ÙˆÙŽ', - 'Ù·' => 'Û‡ÙŽ', - 'Ùž' => 'ÙŠÙŽ', - 'àžł' => 'àčàžČ', - 'àșł' => 'ໍàșČ', - 'ໜ' => 'àș«àș™', - 'ໝ' => 'àș«àșĄ', - 'àŒŒ' => 'àŒ‹', - 'àœ·' => 'àŸČàœ±àŸ€', - 'àœč' => 'àŸłàœ±àŸ€', - '჌' => 'ნ', - 'ᎏ' => 'A', - 'Ꭽ' => 'Æ', - '᎟' => 'B', - 'Ꮀ' => 'D', - 'Ꮁ' => 'E', - 'áŽČ' => 'Ǝ', - 'Ꮃ' => 'G', - 'ᎎ' => 'H', - '᎔' => 'I', - 'Ꮆ' => 'J', - 'Ꮇ' => 'K', - '᎞' => 'L', - 'áŽč' => 'M', - 'áŽș' => 'N', - 'ᎌ' => 'O', - '᎜' => 'Èą', - '᎟' => 'P', - 'Ꮏ' => 'R', - 'ᔀ' => 'T', - 'ᔁ' => 'U', - 'ᔂ' => 'W', - 'ᔃ' => 'a', - 'ᔄ' => 'ɐ', - 'á”…' => 'ɑ', - 'ᔆ' => 'ᮂ', - 'ᔇ' => 'b', - 'ᔈ' => 'd', - 'ᔉ' => 'e', - 'ᔊ' => 'ə', - 'ᔋ' => 'ɛ', - 'ᔌ' => 'ɜ', - 'ᔍ' => 'g', - 'ᔏ' => 'k', - 'ᔐ' => 'm', - 'ᔑ' => 'Ƌ', - 'á”’' => 'o', - 'ᔓ' => 'ɔ', - 'á””' => 'ᮖ', - 'ᔕ' => 'ᮗ', - 'á”–' => 'p', - 'á”—' => 't', - 'ᔘ' => 'u', - 'á”™' => '᎝', - 'ᔚ' => 'ÉŻ', - 'á”›' => 'v', - 'ᔜ' => 'ᎄ', - 'ᔝ' => 'ÎČ', - 'ᔞ' => 'Îł', - 'ᔟ' => 'ÎŽ', - 'á” ' => 'φ', - 'ᔥ' => 'χ', - 'ᔹ' => 'i', - 'ᔣ' => 'r', - 'ᔀ' => 'u', - 'ᔄ' => 'v', - 'ᔊ' => 'ÎČ', - 'á”§' => 'Îł', - 'ᔚ' => 'ρ', - 'ᔩ' => 'φ', - 'á”Ș' => 'χ', - 'ᔞ' => 'Đœ', - 'ᶛ' => 'ɒ', - 'ᶜ' => 'c', - 'ᶝ' => 'ɕ', - 'ᶞ' => 'ð', - 'ᶟ' => 'ɜ', - 'á¶ ' => 'f', - 'á¶Ą' => 'ɟ', - 'á¶ą' => 'ÉĄ', - 'á¶Ł' => 'É„', - 'á¶€' => 'Éš', - 'á¶„' => 'É©', - 'á¶Š' => 'ÉȘ', - 'á¶§' => 'á”»', - 'á¶š' => 'ʝ', - 'á¶©' => 'É­', - 'á¶Ș' => 'ᶅ', - 'á¶«' => 'ʟ', - 'á¶Ź' => 'ɱ', - 'á¶­' => 'ɰ', - 'á¶ź' => 'ÉČ', - 'á¶Ż' => 'Éł', - 'á¶°' => 'ÉŽ', - 'á¶±' => 'É”', - 'á¶Č' => 'Éž', - 'á¶ł' => 'ʂ', - 'á¶Ž' => 'ʃ', - 'á¶”' => 'Æ«', - 'á¶¶' => 'ʉ', - 'á¶·' => 'ʊ', - 'á¶ž' => 'ᮜ', - 'á¶č' => 'ʋ', - 'á¶ș' => 'ʌ', - 'á¶»' => 'z', - 'á¶Œ' => 'ʐ', - 'á¶œ' => 'ʑ', - 'á¶Ÿ' => 'ʒ', - 'á¶ż' => 'Ξ', - 'áșš' => 'aÊŸ', - 'áș›' => 'ṡ', - 'ៜ' => ' ̓', - 'áŸż' => ' ̓', - '῀' => ' ͂', - '῁' => ' ̈͂', - '῍' => ' ̓̀', - '῎' => ' ̓́', - '῏' => ' ̓͂', - '῝' => ' ̔̀', - '῞' => ' ̔́', - '῟' => ' ̔͂', - 'áż­' => ' ̈̀', - 'áżź' => ' ̈́', - 'áżœ' => ' ́', - 'áżŸ' => ' ̔', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - '‑' => '‐', - '‗' => ' Ìł', - ' ' => '.', - ' ' => '..', - '
' => '...', - ' ' => ' ', - '″' => 'â€Čâ€Č', - '‮' => 'â€Čâ€Čâ€Č', - '‶' => '——', - '‷' => '———', - '‌' => '!!', - '‟' => ' ̅', - '⁇' => '??', - '⁈' => '?!', - '⁉' => '!?', - '⁗' => 'â€Čâ€Čâ€Čâ€Č', - ' ' => ' ', - '⁰' => '0', - 'ⁱ' => 'i', - '⁎' => '4', - '⁔' => '5', - '⁶' => '6', - '⁷' => '7', - '⁞' => '8', - 'âč' => '9', - 'âș' => '+', - '⁻' => '−', - '⁌' => '=', - '⁜' => '(', - ' ' => ')', - 'ⁿ' => 'n', - '₀' => '0', - '₁' => '1', - '₂' => '2', - '₃' => '3', - '₄' => '4', - '₅' => '5', - '₆' => '6', - '₇' => '7', - '₈' => '8', - '₉' => '9', - '₊' => '+', - '₋' => '−', - '₌' => '=', - '₍' => '(', - '₎' => ')', - 'ₐ' => 'a', - 'ₑ' => 'e', - 'ₒ' => 'o', - 'ₓ' => 'x', - 'ₔ' => 'ə', - 'ₕ' => 'h', - 'ₖ' => 'k', - 'ₗ' => 'l', - 'ₘ' => 'm', - 'ₙ' => 'n', - 'ₚ' => 'p', - 'ₛ' => 's', - 'ₜ' => 't', - '₹' => 'Rs', - '℀' => 'a/c', - '℁' => 'a/s', - 'ℂ' => 'C', - '℃' => '°C', - '℅' => 'c/o', - '℆' => 'c/u', - 'ℇ' => 'Ɛ', - '℉' => '°F', - 'ℊ' => 'g', - 'ℋ' => 'H', - 'ℌ' => 'H', - 'ℍ' => 'H', - 'ℎ' => 'h', - 'ℏ' => 'ħ', - 'ℐ' => 'I', - 'ℑ' => 'I', - 'ℒ' => 'L', - 'ℓ' => 'l', - 'ℕ' => 'N', - '№' => 'No', - 'ℙ' => 'P', - 'ℚ' => 'Q', - 'ℛ' => 'R', - 'ℜ' => 'R', - 'ℝ' => 'R', - '℠' => 'SM', - '℡' => 'TEL', - 'ℱ' => 'TM', - 'â„€' => 'Z', - 'ℹ' => 'Z', - 'ℬ' => 'B', - 'ℭ' => 'C', - 'ℯ' => 'e', - 'ℰ' => 'E', - 'ℱ' => 'F', - 'ℳ' => 'M', - '℮' => 'o', - 'â„”' => 'ڐ', - 'ℶ' => 'Ś‘', - 'ℷ' => 'Ś’', - 'ℾ' => 'Ś“', - 'â„č' => 'i', - '℻' => 'FAX', - 'ℌ' => 'π', - 'ℜ' => 'Îł', - '℟' => 'Γ', - 'ℿ' => 'Π', - '⅀' => '∑', - 'ⅅ' => 'D', - 'ⅆ' => 'd', - 'ⅇ' => 'e', - 'ⅈ' => 'i', - 'ⅉ' => 'j', - '⅐' => '1⁄7', - '⅑' => '1⁄9', - '⅒' => '1⁄10', - '⅓' => '1⁄3', - '⅔' => '2⁄3', - '⅕' => '1⁄5', - '⅖' => '2⁄5', - '⅗' => '3⁄5', - '⅘' => '4⁄5', - '⅙' => '1⁄6', - '⅚' => '5⁄6', - '⅛' => '1⁄8', - '⅜' => '3⁄8', - '⅝' => '5⁄8', - '⅞' => '7⁄8', - '⅟' => '1⁄', - 'Ⅰ' => 'I', - 'Ⅱ' => 'II', - 'ⅱ' => 'III', - 'Ⅳ' => 'IV', - 'â…€' => 'V', - 'â…„' => 'VI', - 'Ⅹ' => 'VII', - 'Ⅷ' => 'VIII', - 'ⅹ' => 'IX', - 'Ⅹ' => 'X', - 'â…Ș' => 'XI', - 'Ⅻ' => 'XII', - 'Ⅼ' => 'L', - 'Ⅽ' => 'C', - 'ⅼ' => 'D', - 'Ⅿ' => 'M', - 'ⅰ' => 'i', - 'ⅱ' => 'ii', - 'â…Č' => 'iii', - 'ⅳ' => 'iv', - 'Ⅾ' => 'v', - 'â…”' => 'vi', - 'ⅶ' => 'vii', - 'ⅷ' => 'viii', - 'ⅾ' => 'ix', - 'â…č' => 'x', - 'â…ș' => 'xi', - 'ⅻ' => 'xii', - 'â…Œ' => 'l', - 'â…œ' => 'c', - 'â…Ÿ' => 'd', - 'ⅿ' => 'm', - '↉' => '0⁄3', - '∏' => '∫∫', - '∭' => '∫∫∫', - '∯' => '∟∟', - '∰' => '∟∟∟', - '①' => '1', - '②' => '2', - '⑱' => '3', - '④' => '4', - 'â‘€' => '5', - 'â‘„' => '6', - '⑩' => '7', - '⑧' => '8', - '⑹' => '9', - '⑩' => '10', - 'â‘Ș' => '11', - '⑫' => '12', - '⑬' => '13', - '⑭' => '14', - '⑼' => '15', - '⑯' => '16', - '⑰' => '17', - '⑱' => '18', - 'â‘Č' => '19', - '⑳' => '20', - '⑮' => '(1)', - 'â‘”' => '(2)', - '⑶' => '(3)', - '⑷' => '(4)', - '⑾' => '(5)', - 'â‘č' => '(6)', - 'â‘ș' => '(7)', - '⑻' => '(8)', - '⑌' => '(9)', - '⑜' => '(10)', - '⑟' => '(11)', - '⑿' => '(12)', - '⒀' => '(13)', - '⒁' => '(14)', - '⒂' => '(15)', - '⒃' => '(16)', - '⒄' => '(17)', - '⒅' => '(18)', - '⒆' => '(19)', - '⒇' => '(20)', - '⒈' => '1.', - '⒉' => '2.', - '⒊' => '3.', - '⒋' => '4.', - '⒌' => '5.', - '⒍' => '6.', - '⒎' => '7.', - '⒏' => '8.', - '⒐' => '9.', - '⒑' => '10.', - '⒒' => '11.', - '⒓' => '12.', - '⒔' => '13.', - '⒕' => '14.', - '⒖' => '15.', - '⒗' => '16.', - '⒘' => '17.', - '⒙' => '18.', - '⒚' => '19.', - '⒛' => '20.', - '⒜' => '(a)', - '⒝' => '(b)', - '⒞' => '(c)', - '⒟' => '(d)', - '⒠' => '(e)', - '⒡' => '(f)', - '⒱' => '(g)', - '⒣' => '(h)', - 'â’€' => '(i)', - 'â’„' => '(j)', - '⒩' => '(k)', - '⒧' => '(l)', - 'Ⓓ' => '(m)', - '⒩' => '(n)', - 'â’Ș' => '(o)', - '⒫' => '(p)', - '⒬' => '(q)', - '⒭' => '(r)', - 'Ⓖ' => '(s)', - '⒯' => '(t)', - '⒰' => '(u)', - '⒱' => '(v)', - 'â’Č' => '(w)', - '⒳' => '(x)', - '⒮' => '(y)', - 'â’”' => '(z)', - 'Ⓐ' => 'A', - 'Ⓑ' => 'B', - 'Ⓘ' => 'C', - 'â’č' => 'D', - 'â’ș' => 'E', - 'Ⓕ' => 'F', - 'â’Œ' => 'G', - 'â’œ' => 'H', - 'â’Ÿ' => 'I', - 'Ⓙ' => 'J', - 'Ⓚ' => 'K', - 'Ⓛ' => 'L', - 'Ⓜ' => 'M', - 'Ⓝ' => 'N', - 'Ⓞ' => 'O', - 'Ⓟ' => 'P', - 'Ⓠ' => 'Q', - 'Ⓡ' => 'R', - 'Ⓢ' => 'S', - 'Ⓣ' => 'T', - 'Ⓤ' => 'U', - 'Ⓥ' => 'V', - 'Ⓦ' => 'W', - 'Ⓧ' => 'X', - 'Ⓨ' => 'Y', - 'Ⓩ' => 'Z', - 'ⓐ' => 'a', - 'ⓑ' => 'b', - 'ⓒ' => 'c', - 'ⓓ' => 'd', - 'ⓔ' => 'e', - 'ⓕ' => 'f', - 'ⓖ' => 'g', - 'ⓗ' => 'h', - 'ⓘ' => 'i', - 'ⓙ' => 'j', - 'ⓚ' => 'k', - 'ⓛ' => 'l', - 'ⓜ' => 'm', - 'ⓝ' => 'n', - 'ⓞ' => 'o', - 'ⓟ' => 'p', - 'ⓠ' => 'q', - 'ⓡ' => 'r', - '⓱' => 's', - 'ⓣ' => 't', - 'â“€' => 'u', - 'â“„' => 'v', - 'ⓩ' => 'w', - 'ⓧ' => 'x', - '⓹' => 'y', - 'ⓩ' => 'z', - 'â“Ș' => '0', - '⹌' => '∫∫∫∫', - '⩎' => '::=', - 'â©”' => '==', - 'â©¶' => '===', - 'ⱌ' => 'j', - 'ⱜ' => 'V', - '┯' => '┥', - 'âșŸ' => 'æŻ', - '⻳' => '韟', - '⌀' => '侀', - '⌁' => 'äžš', - '⌂' => 'äž¶', - '⌃' => 'äžż', - '⌄' => 'äč™', - '⌅' => 'äș…', - '⌆' => 'äșŒ', - '⌇' => 'äș ', - '⌈' => 'äșș', - '⌉' => '愿', - '⌊' => 'ć…„', - '⌋' => 'ć…«', - '⌌' => '憂', - '⌍' => '憖', - '⌎' => '憫', - '⌏' => '懠', - '⌐' => '懔', - '⌑' => '戀', - '⌒' => '抛', - '⌓' => 'ć‹č', - '⌔' => '挕', - '⌕' => '㌚', - '⌖' => '挾', - '⌗' => '捁', - '⌘' => '捜', - '⌙' => 'ć©', - '⌚' => '掂', - '⌛' => '掶', - '⌜' => '揈', - '⌝' => '揣', - '⌞' => '曗', - '⌟' => '㜟', - '⌠' => '棫', - 'âŒĄ' => '怂', - 'âŒą' => '《', - 'âŒŁ' => '怕', - '⌀' => '性', - '⌄' => '愳', - '⌊' => '歐', - '⌧' => '漀', - '⌚' => '毞', - '〈' => '氏', - 'âŒȘ' => 'ć°ą', - '⌫' => 'ć°ž', - 'âŒŹ' => '江', - '⌭' => 'ć±±', - 'âŒź' => 'ć·›', - 'âŒŻ' => 'ć·„', - '⌰' => 'ć·±', - '⌱' => 'ć·Ÿ', - 'âŒČ' => 'ćčČ', - 'âŒł' => 'ćčș', - '⌎' => 'ćčż', - '⌔' => '滎', - '⌶' => 'ć»Ÿ', - '⌷' => 'ćŒ‹', - '⌞' => 'ćŒ“', - 'âŒč' => 'ćœ', - 'âŒș' => 'ćœĄ', - '⌻' => 'ćœł', - '⌌' => '濃', - '⌜' => '戈', - '⌟' => '戶', - 'âŒż' => '手', - '✀' => 'æ”Ż', - '✁' => '攎', - '✂' => '文', - '✃' => '斗', - '✄' => 'æ–€', - '✅' => 'æ–č', - '✆' => '无', - '✇' => 'æ—„', - '✈' => '曰', - '✉' => '月', - '✊' => '朚', - '✋' => 'æŹ ', - '✌' => 'æ­ą', - '✍' => 'æ­č', - '✎' => 'æźł', - '✏' => 'æŻ‹', - '✐' => 'æŻ”', - '✑' => 'æŻ›', - '✒' => '氏', - '✓' => '气', - '✔' => 'æ°Ž', - '✕' => '火', - '✖' => 'çˆȘ', - '✗' => '父', - '✘' => '爻', - '✙' => '爿', - '✚' => '片', - '✛' => '牙', - '✜' => '牛', - '✝' => '犬', - '✞' => '玄', - '✟' => '玉', - '✠' => '瓜', - 'âœĄ' => '瓩', - 'âœą' => '甘', - 'âœŁ' => '生', - '✀' => '甹', - '✄' => '田', - '✊' => '疋', - '✧' => '疒', - '✚' => '癶', - '✩' => '癜', - 'âœȘ' => '皼', - '✫' => '皿', - 'âœŹ' => '盼', - '✭' => '矛', - 'âœź' => '矱', - 'âœŻ' => '石', - '✰' => 'ç€ș', - '✱' => '犞', - 'âœČ' => '犟', - 'âœł' => '穎', - '✎' => '立', - '✔' => 'ç«č', - '✶' => '米', - '✷' => 'çłž', - '✞' => '猶', - 'âœč' => '眑', - 'âœș' => '矊', - '✻' => '矜', - '✌' => '老', - '✜' => '而', - '✟' => '耒', - 'âœż' => 'è€ł', - '⟀' => 'èż', - '⟁' => '肉', - '⟂' => 'è‡Ł', - '⟃' => 'è‡Ș', - '⟄' => 'è‡ł', - '⟅' => '臌', - '⟆' => '舌', - '⟇' => '舛', - '⟈' => '舟', - '⟉' => 'è‰ź', - '⟊' => 'è‰Č', - '⟋' => '艞', - '⟌' => '虍', - '⟍' => '虫', - '⟎' => 'èĄ€', - '⟏' => 'èĄŒ', - '⟐' => 'èĄŁ', - '⟑' => '脟', - '⟒' => '芋', - '⟓' => '角', - '⟔' => '蚀', - '⟕' => 'è°·', - '⟖' => '豆', - '⟗' => '豕', - '⟘' => '豞', - '⟙' => 'èȝ', - '⟚' => '蔀', - '⟛' => 'è”°', - '⟜' => 'è¶ł', - '⟝' => 'èș«', - '⟞' => '車', - '⟟' => '蟛', - '⟠' => '蟰', - 'âŸĄ' => '蟔', - 'âŸą' => '邑', - 'âŸŁ' => '酉', - '⟀' => '釆', - '⟄' => '里', - '⟊' => '金', - '⟧' => '長', - '⟚' => '門', - '⟩' => '阜', - 'âŸȘ' => '隶', - '⟫' => 'éšč', - 'âŸŹ' => '雹', - '⟭' => '靑', - 'âŸź' => '非', - 'âŸŻ' => '靱', - '⟰' => '革', - '⟱' => '韋', - 'âŸČ' => '韭', - 'âŸł' => '音', - '⟎' => '頁', - '⟔' => 'éąš', - '⟶' => '飛', - '⟷' => '食', - '⟞' => '驖', - 'âŸč' => '驙', - 'âŸș' => '銏', - '⟻' => 'éȘš', - '⟌' => '高', - '⟜' => '髟', - '⟟' => '鏄', - 'âŸż' => '鏯', - '⿀' => 'éŹČ', - '⿁' => 'éŹŒ', - '⿂' => '魚', - '⿃' => 'éł„', - '⿄' => 'éč”', - '⿅' => 'éčż', - '⿆' => 'éș„', - '⿇' => 'éș»', - '⿈' => '黃', - '⿉' => '黍', - '⿊' => '黑', - '⿋' => 'é»č', - '⿌' => '黜', - '⿍' => '錎', - '⿎' => '錓', - '⿏' => '錠', - '⿐' => '錻', - '⿑' => '霊', - '⿒' => '霒', - '⿓' => '韍', - '⿔' => '韜', - '⿕' => '韠', - ' ' => ' ', - '〶' => '〒', - '〾' => '捁', - 'ă€č' => '捄', - 'ă€ș' => '捅', - '゛' => ' ゙', - '゜' => ' ゚', - 'ゟ' => 'より', - 'ヿ' => 'コト', - 'ㄱ' => 'ᄀ', - 'ă„Č' => 'ᄁ', - 'ㄳ' => 'á†Ș', - 'ㄮ' => 'ᄂ', - 'ă„”' => 'ᆬ', - 'ă„¶' => 'ᆭ', - 'ă„·' => 'ᄃ', - 'ㄾ' => 'ᄄ', - 'ă„č' => 'ᄅ', - 'ă„ș' => 'ᆰ', - 'ă„»' => 'ᆱ', - 'ă„Œ' => 'á†Č', - 'ă„œ' => 'ᆳ', - 'ă„Ÿ' => 'ᆮ', - 'ㄿ' => 'ᆔ', - 'ㅀ' => 'ᄚ', - 'ㅁ' => 'ᄆ', - 'ㅂ' => 'ᄇ', - 'ㅃ' => 'ᄈ', - 'ㅄ' => 'ᄡ', - 'ㅅ' => 'ᄉ', - 'ㅆ' => 'ᄊ', - 'ㅇ' => 'ᄋ', - 'ㅈ' => 'ᄌ', - 'ㅉ' => 'ᄍ', - 'ㅊ' => 'ᄎ', - 'ㅋ' => 'ᄏ', - 'ㅌ' => 'ᄐ', - 'ㅍ' => 'ᄑ', - 'ㅎ' => 'ᄒ', - 'ㅏ' => 'ᅡ', - 'ㅐ' => 'ᅱ', - 'ㅑ' => 'ᅣ', - 'ㅒ' => 'á…€', - 'ㅓ' => 'á…„', - 'ㅔ' => 'ᅩ', - 'ㅕ' => 'ᅧ', - 'ㅖ' => 'ᅹ', - 'ㅗ' => 'ᅩ', - 'ㅘ' => 'á…Ș', - 'ㅙ' => 'ᅫ', - 'ㅚ' => 'ᅬ', - 'ㅛ' => 'ᅭ', - 'ㅜ' => 'ᅼ', - 'ㅝ' => 'ᅯ', - 'ㅞ' => 'ᅰ', - 'ㅟ' => 'ᅱ', - 'ㅠ' => 'á…Č', - 'ㅡ' => 'ᅳ', - 'ㅱ' => 'ᅮ', - 'ㅣ' => 'á…”', - 'ă…€' => 'ᅠ', - 'ă…„' => 'ᄔ', - 'ㅩ' => 'ᄕ', - 'ㅧ' => 'ᇇ', - 'ㅹ' => 'ᇈ', - 'ă…©' => 'ᇌ', - 'ă…Ș' => 'ᇎ', - 'ă…«' => 'ᇓ', - 'ㅬ' => 'ᇗ', - 'ㅭ' => 'ᇙ', - 'ㅼ' => 'ᄜ', - 'ㅯ' => 'ᇝ', - 'ㅰ' => 'ᇟ', - 'ă…±' => 'ᄝ', - 'ă…Č' => 'ᄞ', - 'ㅳ' => 'ᄠ', - 'ㅮ' => 'ᄱ', - 'ă…”' => 'ᄣ', - 'ă…¶' => 'ᄧ', - 'ă…·' => 'ᄩ', - 'ㅾ' => 'ᄫ', - 'ă…č' => 'ᄬ', - 'ă…ș' => 'ᄭ', - 'ă…»' => 'ᄼ', - 'ă…Œ' => 'ᄯ', - 'ă…œ' => 'á„Č', - 'ă…Ÿ' => 'ᄶ', - 'ㅿ' => 'ᅀ', - 'ㆀ' => 'ᅇ', - 'ㆁ' => 'ᅌ', - 'ㆂ' => 'ᇱ', - 'ㆃ' => 'á‡Č', - 'ㆄ' => 'ᅗ', - 'ㆅ' => 'ᅘ', - 'ㆆ' => 'ᅙ', - 'ㆇ' => 'ᆄ', - 'ㆈ' => 'ᆅ', - 'ㆉ' => 'ᆈ', - 'ㆊ' => 'ᆑ', - 'ㆋ' => 'ᆒ', - 'ㆌ' => 'ᆔ', - 'ㆍ' => 'ᆞ', - 'ㆎ' => 'ᆡ', - '㆒' => '侀', - '㆓' => 'äșŒ', - '㆔' => '侉', - '㆕' => '曛', - '㆖' => '侊', - '㆗' => 'äž­', - '㆘' => '例', - '㆙' => 'ç”Č', - '㆚' => 'äč™', - '㆛' => '侙', - '㆜' => '䞁', - '㆝' => '怩', - '㆞' => '㜰', - '㆟' => 'äșș', - '㈀' => '(ᄀ)', - '㈁' => '(ᄂ)', - '㈂' => '(ᄃ)', - '㈃' => '(ᄅ)', - '㈄' => '(ᄆ)', - '㈅' => '(ᄇ)', - '㈆' => '(ᄉ)', - '㈇' => '(ᄋ)', - '㈈' => '(ᄌ)', - '㈉' => '(ᄎ)', - '㈊' => '(ᄏ)', - '㈋' => '(ᄐ)', - '㈌' => '(ᄑ)', - '㈍' => '(ᄒ)', - '㈎' => '(가)', - '㈏' => '(나)', - '㈐' => '(다)', - '㈑' => '(라)', - '㈒' => '(마)', - '㈓' => '(바)', - '㈔' => '(사)', - '㈕' => '(아)', - '㈖' => '(자)', - '㈗' => '(차)', - '㈘' => '(카)', - '㈙' => '(타)', - '㈚' => '(파)', - '㈛' => '(하)', - '㈜' => '(ᄌᅼ)', - '㈝' => '(오ᄌᅄᆫ)', - '㈞' => '(á„‹á…©á„’á…ź)', - '㈠' => '(侀)', - '㈥' => '(äșŒ)', - '㈹' => '(侉)', - '㈣' => '(曛)', - '㈀' => '(äș”)', - '㈄' => '(慭)', - '㈊' => '(䞃)', - '㈧' => '(ć…«)', - '㈚' => '(äč)', - '㈩' => '(捁)', - 'ăˆȘ' => '(月)', - '㈫' => '(火)', - '㈏' => '(æ°Ž)', - '㈭' => '(朚)', - '㈟' => '(金)', - '㈯' => '(㜟)', - '㈰' => '(æ—„)', - '㈱' => '(æ Ș)', - 'ăˆČ' => '(有)', - '㈳' => '(瀟)', - '㈎' => '(損)', - '㈔' => '(ç‰č)', - '㈶' => '(èČĄ)', - '㈷' => '(焝)', - '㈞' => '(抮)', - 'ăˆč' => '(代)', - 'ăˆș' => '(ć‘Œ)', - '㈻' => '(ć­Š)', - 'ăˆŒ' => '(監)', - 'ăˆœ' => '(䌁)', - 'ăˆŸ' => '(èł‡)', - '㈿' => '(捔)', - '㉀' => '(ç„­)', - '㉁' => '(䌑)', - '㉂' => '(è‡Ș)', - '㉃' => '(è‡ł)', - '㉄' => '敏', - '㉅' => 'ćčŒ', - '㉆' => '文', - '㉇' => '缏', - '㉐' => 'PTE', - '㉑' => '21', - '㉒' => '22', - '㉓' => '23', - '㉔' => '24', - '㉕' => '25', - '㉖' => '26', - '㉗' => '27', - '㉘' => '28', - '㉙' => '29', - '㉚' => '30', - '㉛' => '31', - '㉜' => '32', - '㉝' => '33', - '㉞' => '34', - '㉟' => '35', - '㉠' => 'ᄀ', - '㉡' => 'ᄂ', - '㉱' => 'ᄃ', - '㉣' => 'ᄅ', - '㉀' => 'ᄆ', - '㉄' => 'ᄇ', - '㉩' => 'ᄉ', - '㉧' => 'ᄋ', - '㉹' => 'ᄌ', - '㉩' => 'ᄎ', - 'ă‰Ș' => 'ᄏ', - '㉫' => 'ᄐ', - '㉬' => 'ᄑ', - '㉭' => 'ᄒ', - '㉼' => '가', - '㉯' => '나', - '㉰' => '다', - '㉱' => '라', - 'ă‰Č' => '마', - '㉳' => '바', - '㉮' => '사', - '㉔' => '아', - '㉶' => '자', - '㉷' => '차', - '㉾' => '카', - 'ă‰č' => '타', - 'ă‰ș' => '파', - '㉻' => '하', - 'ă‰Œ' => '첨고', - 'ă‰œ' => 'ᄌᅼ우', - 'ă‰Ÿ' => 'ᄋᅼ', - '㊀' => '侀', - '㊁' => 'äșŒ', - '㊂' => '侉', - '㊃' => '曛', - '㊄' => 'äș”', - '㊅' => '慭', - '㊆' => '䞃', - '㊇' => 'ć…«', - '㊈' => 'äč', - '㊉' => '捁', - '㊊' => '月', - '㊋' => '火', - '㊌' => 'æ°Ž', - '㊍' => '朚', - '㊎' => '金', - '㊏' => '㜟', - '㊐' => 'æ—„', - '㊑' => 'æ Ș', - '㊒' => '有', - '㊓' => '瀟', - '㊔' => '損', - '㊕' => 'ç‰č', - '㊖' => 'èČĄ', - '㊗' => '焝', - '㊘' => '抮', - '㊙' => '秘', - '㊚' => '男', - '㊛' => '愳', - '㊜' => '適', - '㊝' => 'ć„Ș', - '㊞' => '捰', - '㊟' => 'æłš', - '㊠' => '項', - '㊡' => '䌑', - '㊱' => '憙', - '㊣' => 'æ­Ł', - '㊀' => '侊', - '㊄' => 'äž­', - '㊩' => '例', - '㊧' => 'ć·Š', - '㊹' => '揳', - '㊩' => '㌻', - 'ăŠȘ' => '漗', - '㊫' => 'ć­Š', - '㊬' => '監', - '㊭' => '䌁', - '㊼' => 'èł‡', - '㊯' => '捔', - '㊰' => '〜', - '㊱' => '36', - 'ăŠČ' => '37', - '㊳' => '38', - '㊮' => '39', - '㊔' => '40', - '㊶' => '41', - '㊷' => '42', - '㊾' => '43', - 'ăŠč' => '44', - 'ăŠș' => '45', - '㊻' => '46', - 'ăŠŒ' => '47', - 'ăŠœ' => '48', - 'ăŠŸ' => '49', - '㊿' => '50', - '㋀' => '1月', - '㋁' => '2月', - '㋂' => '3月', - '㋃' => '4月', - '㋄' => '5月', - '㋅' => '6月', - '㋆' => '7月', - '㋇' => '8月', - '㋈' => '9月', - '㋉' => '10月', - '㋊' => '11月', - '㋋' => '12月', - '㋌' => 'Hg', - '㋍' => 'erg', - '㋎' => 'eV', - '㋏' => 'LTD', - '㋐' => 'ケ', - '㋑' => 'ă‚€', - '㋒' => 'ォ', - '㋓' => 'ス', - '㋔' => 'ă‚Ș', - '㋕' => 'ă‚«', - '㋖' => 'キ', - '㋗' => 'ク', - '㋘' => 'ケ', - '㋙' => 'コ', - '㋚' => 'ă‚”', - '㋛' => 'ă‚·', - '㋜' => 'ă‚č', - '㋝' => 'ă‚»', - '㋞' => 'ă‚œ', - '㋟' => 'タ', - '㋠' => 'チ', - '㋡' => 'ツ', - '㋱' => 'テ', - '㋣' => 'ト', - 'ă‹€' => 'ナ', - 'ă‹„' => 'ニ', - '㋩' => 'ヌ', - '㋧' => 'ネ', - '㋹' => 'ノ', - 'ă‹©' => 'ハ', - 'ă‹Ș' => 'ヒ', - 'ă‹«' => 'フ', - '㋬' => 'ヘ', - '㋭' => 'ホ', - '㋼' => 'マ', - '㋯' => 'ミ', - '㋰' => 'ム', - '㋱' => 'ュ', - 'ă‹Č' => 'ヹ', - '㋳' => 'ダ', - '㋮' => 'ナ', - 'ă‹”' => 'ペ', - 'ă‹¶' => 'ラ', - 'ă‹·' => 'ăƒȘ', - '㋾' => 'ル', - 'ă‹č' => 'ハ', - 'ă‹ș' => 'ロ', - 'ă‹»' => 'ワ', - 'ă‹Œ' => 'ヰ', - 'ă‹œ' => 'ヱ', - 'ă‹Ÿ' => 'ăƒČ', - '㋿' => 'ä»€ć’Œ', - '㌀' => 'ă‚ąăƒă‚šăƒŒăƒˆ', - '㌁' => 'ă‚ąăƒ«ăƒ•ă‚Ą', - '㌂' => 'ケンペケ', - '㌃' => 'ă‚ąăƒŒăƒ«', - '㌄' => 'ă‚€ăƒ‹ăƒłă‚Żă‚™', - '㌅' => 'ă‚€ăƒłăƒ', - '㌆' => 'ă‚Šă‚©ăƒł', - '㌇' => 'スă‚čă‚ŻăƒŒăƒˆă‚™', - '㌈' => 'ă‚šăƒŒă‚«ăƒŒ', - '㌉' => 'ă‚Șンă‚č', - '㌊' => 'ă‚ȘăƒŒăƒ ', - '㌋' => 'ă‚«ă‚€ăƒȘ', - '㌌' => 'ă‚«ăƒ©ăƒƒăƒˆ', - '㌍' => 'ă‚«ăƒ­ăƒȘăƒŒ', - '㌎' => 'ă‚«ă‚™ăƒ­ăƒł', - '㌏' => 'ă‚«ă‚™ăƒłăƒž', - '㌐' => 'ギガ', - '㌑' => 'ă‚­ă‚™ăƒ‹ăƒŒ', - '㌒' => 'ă‚­ăƒ„ăƒȘăƒŒ', - '㌓' => 'ă‚­ă‚™ăƒ«ă‚żă‚™ăƒŒ', - '㌔' => 'キロ', - '㌕' => 'ă‚­ăƒ­ă‚Żă‚™ăƒ©ăƒ ', - '㌖' => 'ă‚­ăƒ­ăƒĄăƒŒăƒˆăƒ«', - '㌗' => 'キロワット', - '㌘' => 'ă‚Żă‚™ăƒ©ăƒ ', - '㌙' => 'ă‚Żă‚™ăƒ©ăƒ ăƒˆăƒł', - '㌚' => 'ă‚Żăƒ«ă‚»ă‚™ă‚€ăƒ­', - '㌛' => 'ă‚Żăƒ­ăƒŒăƒ', - '㌜' => 'ă‚±ăƒŒă‚č', - '㌝' => 'ă‚łăƒ«ăƒŠ', - '㌞' => 'ă‚łăƒŒăƒ›ă‚š', - '㌟' => 'ă‚”ă‚€ă‚Żăƒ«', - '㌠' => 'ă‚”ăƒłăƒăƒŒăƒ ', - '㌡' => 'ă‚·ăƒȘング', - '㌱' => 'ă‚»ăƒłăƒ', - '㌣' => 'ă‚»ăƒłăƒˆ', - 'ăŒ€' => 'ă‚żă‚™ăƒŒă‚č', - 'ăŒ„' => 'ăƒ†ă‚™ă‚·', - '㌩' => 'ăƒˆă‚™ăƒ«', - '㌧' => 'トン', - '㌹' => 'ナノ', - 'ăŒ©' => 'ノット', - 'ăŒȘ' => 'ăƒă‚€ăƒ„', - 'ăŒ«' => 'ăƒă‚šăƒŒă‚»ăƒłăƒˆ', - '㌬' => 'ăƒă‚šăƒŒăƒ„', - '㌭' => 'ăƒă‚™ăƒŒăƒŹăƒ«', - '㌼' => 'ピケă‚čトル', - '㌯' => 'ăƒ’ă‚šă‚Żăƒ«', - '㌰' => 'ピコ', - 'ăŒ±' => 'ăƒ’ă‚™ăƒ«', - 'ăŒČ' => 'ăƒ•ă‚Ąăƒ©ăƒƒăƒˆă‚™', - '㌳' => 'ăƒ•ă‚ŁăƒŒăƒˆ', - '㌮' => 'ăƒ•ă‚™ăƒƒă‚·ă‚§ăƒ«', - 'ăŒ”' => 'ăƒ•ăƒ©ăƒł', - 'ăŒ¶' => 'ăƒ˜ă‚Żă‚żăƒŒăƒ«', - 'ăŒ·' => 'ăƒ˜ă‚šă‚œ', - '㌾' => 'ペニヒ', - 'ăŒč' => 'ăƒ˜ăƒ«ăƒ„', - 'ăŒș' => 'ペンă‚č', - 'ăŒ»' => 'ăƒ˜ă‚šăƒŒă‚·ă‚™', - 'ăŒŒ' => 'ăƒ˜ă‚™ăƒŒă‚ż', - 'ăŒœ' => 'ăƒ›ă‚šă‚€ăƒłăƒˆ', - 'ăŒŸ' => 'ăƒ›ă‚™ăƒ«ăƒˆ', - '㌿' => 'ホン', - '㍀' => 'ポンド', - '㍁' => 'ăƒ›ăƒŒăƒ«', - '㍂' => 'ăƒ›ăƒŒăƒł', - '㍃' => 'ăƒžă‚€ă‚Żăƒ­', - '㍄' => 'ăƒžă‚€ăƒ«', - '㍅' => 'マッハ', - '㍆' => 'ăƒžăƒ«ă‚Ż', - '㍇' => 'ăƒžăƒłă‚·ăƒ§ăƒł', - '㍈' => 'ミクロン', - '㍉' => 'ミăƒȘ', - '㍊' => 'ミăƒȘăƒă‚™ăƒŒăƒ«', - '㍋' => 'ăƒĄă‚«ă‚™', - '㍌' => 'ăƒĄă‚«ă‚™ăƒˆăƒł', - '㍍' => 'ăƒĄăƒŒăƒˆăƒ«', - '㍎' => 'ăƒ€ăƒŒăƒˆă‚™', - '㍏' => 'ăƒ€ăƒŒăƒ«', - '㍐' => 'ラケン', - '㍑' => 'ăƒȘットル', - '㍒' => 'ăƒȘラ', - '㍓' => 'ăƒ«ăƒ’ă‚šăƒŒ', - '㍔' => 'ăƒ«ăƒŒăƒ•ă‚™ăƒ«', - '㍕' => 'ハム', - '㍖' => 'ăƒŹăƒłăƒˆă‚±ă‚™ăƒł', - '㍗' => 'ワット', - '㍘' => '0ç‚č', - '㍙' => '1ç‚č', - '㍚' => '2ç‚č', - '㍛' => '3ç‚č', - '㍜' => '4ç‚č', - '㍝' => '5ç‚č', - '㍞' => '6ç‚č', - '㍟' => '7ç‚č', - '㍠' => '8ç‚č', - '㍡' => '9ç‚č', - '㍱' => '10ç‚č', - '㍣' => '11ç‚č', - 'ă€' => '12ç‚č', - 'ă„' => '13ç‚č', - '㍩' => '14ç‚č', - '㍧' => '15ç‚č', - '㍹' => '16ç‚č', - 'ă©' => '17ç‚č', - 'ăȘ' => '18ç‚č', - 'ă«' => '19ç‚č', - '㍬' => '20ç‚č', - '㍭' => '21ç‚č', - '㍼' => '22ç‚č', - '㍯' => '23ç‚č', - '㍰' => '24ç‚č', - 'ă±' => 'hPa', - 'ăČ' => 'da', - '㍳' => 'AU', - '㍮' => 'bar', - 'ă”' => 'oV', - 'ă¶' => 'pc', - 'ă·' => 'dm', - '㍾' => 'dm2', - 'ăč' => 'dm3', - 'ăș' => 'IU', - 'ă»' => 'ćčłæˆ', - 'ăŒ' => 'æ˜­ć’Œ', - 'ăœ' => 'ć€§æ­Ł', - 'ăŸ' => '明æČ»', - '㍿' => 'æ ȘćŒäŒšç€Ÿ', - '㎀' => 'pA', - '㎁' => 'nA', - '㎂' => 'ÎŒA', - '㎃' => 'mA', - '㎄' => 'kA', - '㎅' => 'KB', - '㎆' => 'MB', - '㎇' => 'GB', - '㎈' => 'cal', - '㎉' => 'kcal', - '㎊' => 'pF', - '㎋' => 'nF', - '㎌' => 'ÎŒF', - '㎍' => 'ÎŒg', - '㎎' => 'mg', - '㎏' => 'kg', - '㎐' => 'Hz', - '㎑' => 'kHz', - '㎒' => 'MHz', - '㎓' => 'GHz', - '㎔' => 'THz', - '㎕' => 'ÎŒl', - '㎖' => 'ml', - '㎗' => 'dl', - '㎘' => 'kl', - '㎙' => 'fm', - '㎚' => 'nm', - '㎛' => 'ÎŒm', - '㎜' => 'mm', - '㎝' => 'cm', - '㎞' => 'km', - '㎟' => 'mm2', - '㎠' => 'cm2', - '㎡' => 'm2', - '㎱' => 'km2', - '㎣' => 'mm3', - '㎀' => 'cm3', - '㎄' => 'm3', - '㎩' => 'km3', - '㎧' => 'm∕s', - '㎹' => 'm∕s2', - '㎩' => 'Pa', - 'ăŽȘ' => 'kPa', - '㎫' => 'MPa', - '㎬' => 'GPa', - '㎭' => 'rad', - '㎼' => 'rad∕s', - '㎯' => 'rad∕s2', - '㎰' => 'ps', - '㎱' => 'ns', - 'ăŽČ' => 'ÎŒs', - '㎳' => 'ms', - '㎮' => 'pV', - '㎔' => 'nV', - '㎶' => 'ÎŒV', - '㎷' => 'mV', - '㎾' => 'kV', - 'ăŽč' => 'MV', - 'ăŽș' => 'pW', - '㎻' => 'nW', - 'ăŽŒ' => 'ÎŒW', - 'ăŽœ' => 'mW', - 'ăŽŸ' => 'kW', - '㎿' => 'MW', - '㏀' => 'kΩ', - '㏁' => 'MΩ', - '㏂' => 'a.m.', - '㏃' => 'Bq', - '㏄' => 'cc', - '㏅' => 'cd', - '㏆' => 'C∕kg', - '㏇' => 'Co.', - '㏈' => 'dB', - '㏉' => 'Gy', - '㏊' => 'ha', - '㏋' => 'HP', - '㏌' => 'in', - '㏍' => 'KK', - '㏎' => 'KM', - '㏏' => 'kt', - '㏐' => 'lm', - '㏑' => 'ln', - '㏒' => 'log', - '㏓' => 'lx', - '㏔' => 'mb', - '㏕' => 'mil', - '㏖' => 'mol', - '㏗' => 'PH', - '㏘' => 'p.m.', - '㏙' => 'PPM', - '㏚' => 'PR', - '㏛' => 'sr', - '㏜' => 'Sv', - '㏝' => 'Wb', - '㏞' => 'V∕m', - '㏟' => 'A∕m', - '㏠' => '1æ—„', - '㏡' => '2æ—„', - '㏱' => '3æ—„', - '㏣' => '4æ—„', - 'ă€' => '5æ—„', - 'ă„' => '6æ—„', - '㏩' => '7æ—„', - '㏧' => '8æ—„', - '㏹' => '9æ—„', - 'ă©' => '10æ—„', - 'ăȘ' => '11æ—„', - 'ă«' => '12æ—„', - '㏬' => '13æ—„', - '㏭' => '14æ—„', - '㏼' => '15æ—„', - '㏯' => '16æ—„', - '㏰' => '17æ—„', - 'ă±' => '18æ—„', - 'ăČ' => '19æ—„', - '㏳' => '20æ—„', - '㏮' => '21æ—„', - 'ă”' => '22æ—„', - 'ă¶' => '23æ—„', - 'ă·' => '24æ—„', - '㏾' => '25æ—„', - 'ăč' => '26æ—„', - 'ăș' => '27æ—„', - 'ă»' => '28æ—„', - 'ăŒ' => '29æ—„', - 'ăœ' => '30æ—„', - 'ăŸ' => '31æ—„', - '㏿' => 'gal', - 'ꚜ' => 'ъ', - 'ꚝ' => 'ь', - 'ꝰ' => 'êŻ', - '꟞' => 'ÄŠ', - 'êŸč' => 'Ɠ', - 'ꭜ' => 'ꜧ', - 'ꭝ' => 'êŹ·', - 'ꭞ' => 'É«', - 'ꭟ' => 'ꭒ', - 'ê­©' => 'ʍ', - 'ïŹ€' => 'ff', - 'ïŹ' => 'fi', - 'ïŹ‚' => 'fl', - 'ïŹƒ' => 'ffi', - 'ïŹ„' => 'ffl', - 'ïŹ…' => 'st', - 'ïŹ†' => 'st', - 'ïŹ“' => 'ŐŽŐ¶', - 'ïŹ”' => 'ŐŽŐ„', - 'ïŹ•' => 'ŐŽŐ«', - 'ïŹ–' => 'ŐŸŐ¶', - 'ïŹ—' => 'ŐŽŐ­', - 'ïŹ ' => 'Śą', - 'ïŹĄ' => 'ڐ', - 'ïŹą' => 'Ś“', - 'ïŹŁ' => 'Ś”', - 'ïŹ€' => 'Ś›', - 'ïŹ„' => 'ڜ', - 'ïŹŠ' => 'Ś', - 'ïŹ§' => 'Śš', - 'ïŹš' => 'ŚȘ', - 'ïŹ©' => '+', - 'ﭏ' => 'ڐڜ', - 'ﭐ' => 'Ù±', - 'ﭑ' => 'Ù±', - 'ﭒ' => 'Ù»', - 'ﭓ' => 'Ù»', - 'ﭔ' => 'Ù»', - 'ﭕ' => 'Ù»', - 'ﭖ' => 'ÙŸ', - 'ﭗ' => 'ÙŸ', - 'ﭘ' => 'ÙŸ', - 'ﭙ' => 'ÙŸ', - 'ﭚ' => 'ڀ', - 'ﭛ' => 'ڀ', - 'ﭜ' => 'ڀ', - 'ﭝ' => 'ڀ', - 'ﭞ' => 'Ùș', - 'ﭟ' => 'Ùș', - 'ï­ ' => 'Ùș', - 'ï­Ą' => 'Ùș', - 'ï­ą' => 'Ùż', - 'ï­Ł' => 'Ùż', - 'ï­€' => 'Ùż', - 'ï­„' => 'Ùż', - 'ï­Š' => 'Ùč', - 'ï­§' => 'Ùč', - 'ï­š' => 'Ùč', - 'ï­©' => 'Ùč', - 'ï­Ș' => 'Ú€', - 'ï­«' => 'Ú€', - 'ï­Ź' => 'Ú€', - 'ï­­' => 'Ú€', - 'ï­ź' => 'ÚŠ', - 'ï­Ż' => 'ÚŠ', - 'ï­°' => 'ÚŠ', - 'ï­±' => 'ÚŠ', - 'ï­Č' => 'ڄ', - 'ï­ł' => 'ڄ', - 'ï­Ž' => 'ڄ', - 'ï­”' => 'ڄ', - 'ï­¶' => 'ڃ', - 'ï­·' => 'ڃ', - 'ï­ž' => 'ڃ', - 'ï­č' => 'ڃ', - 'ï­ș' => 'چ', - 'ï­»' => 'چ', - 'ï­Œ' => 'چ', - 'ï­œ' => 'چ', - 'ï­Ÿ' => 'ڇ', - 'ï­ż' => 'ڇ', - 'ïź€' => 'ڇ', - 'ïź' => 'ڇ', - 'ïź‚' => 'ڍ', - 'ïźƒ' => 'ڍ', - 'ïź„' => 'ڌ', - 'ïź…' => 'ڌ', - 'ïź†' => 'ڎ', - 'ïź‡' => 'ڎ', - 'ïźˆ' => 'ڈ', - 'ïź‰' => 'ڈ', - 'ïźŠ' => 'ژ', - 'ïź‹' => 'ژ', - 'ïźŒ' => 'ڑ', - 'ïź' => 'ڑ', - 'ïźŽ' => 'Ú©', - 'ïź' => 'Ú©', - 'ïź' => 'Ú©', - 'ïź‘' => 'Ú©', - 'ïź’' => 'ÚŻ', - 'ïź“' => 'ÚŻ', - 'ïź”' => 'ÚŻ', - 'ïź•' => 'ÚŻ', - 'ïź–' => 'Úł', - 'ïź—' => 'Úł', - 'ïź˜' => 'Úł', - 'ïź™' => 'Úł', - 'ïźš' => 'Ú±', - 'ïź›' => 'Ú±', - 'ïźœ' => 'Ú±', - 'ïź' => 'Ú±', - 'ïźž' => 'Úș', - 'ïźŸ' => 'Úș', - 'ïź ' => 'Ú»', - 'ïźĄ' => 'Ú»', - 'ïźą' => 'Ú»', - 'ïźŁ' => 'Ú»', - 'ïź€' => 'ۀ', - 'ïź„' => 'ۀ', - 'ïźŠ' => 'ہ', - 'ïź§' => 'ہ', - 'ïźš' => 'ہ', - 'ïź©' => 'ہ', - 'ïźȘ' => 'ÚŸ', - 'ïź«' => 'ÚŸ', - 'ïźŹ' => 'ÚŸ', - 'ïź­' => 'ÚŸ', - 'ïźź' => 'ے', - 'ïźŻ' => 'ے', - 'ïź°' => 'ۓ', - 'ïź±' => 'ۓ', - 'ïŻ“' => 'Ú­', - 'ïŻ”' => 'Ú­', - 'ïŻ•' => 'Ú­', - 'ïŻ–' => 'Ú­', - 'ïŻ—' => 'ۇ', - 'ïŻ˜' => 'ۇ', - 'ïŻ™' => 'ۆ', - 'ïŻš' => 'ۆ', - 'ïŻ›' => 'ۈ', - 'ïŻœ' => 'ۈ', - 'ïŻ' => 'Û‡ÙŽ', - 'ïŻž' => 'ۋ', - 'ïŻŸ' => 'ۋ', - 'ïŻ ' => 'ۅ', - 'ïŻĄ' => 'ۅ', - 'ïŻą' => 'ۉ', - 'ïŻŁ' => 'ۉ', - 'ïŻ€' => 'ې', - 'ïŻ„' => 'ې', - 'ïŻŠ' => 'ې', - 'ïŻ§' => 'ې', - 'ïŻš' => 'ى', - 'ïŻ©' => 'ى', - 'ïŻȘ' => 'ÙŠÙ”Ű§', - 'ïŻ«' => 'ÙŠÙ”Ű§', - 'ïŻŹ' => 'ئە', - 'ïŻ­' => 'ئە', - 'ïŻź' => 'ئو', - 'ïŻŻ' => 'ئو', - 'ïŻ°' => 'ئۇ', - 'ïŻ±' => 'ئۇ', - 'ïŻČ' => 'ئۆ', - 'ïŻł' => 'ئۆ', - 'ïŻŽ' => 'ئۈ', - 'ïŻ”' => 'ئۈ', - 'ïŻ¶' => 'ئې', - 'ïŻ·' => 'ئې', - 'ïŻž' => 'ئې', - 'ïŻč' => 'ئى', - 'ïŻș' => 'ئى', - 'ïŻ»' => 'ئى', - 'ïŻŒ' => 'ی', - 'ïŻœ' => 'ی', - 'ïŻŸ' => 'ی', - 'ïŻż' => 'ی', - 'ﰀ' => 'ÙŠÙ”ŰŹ', - 'ﰁ' => 'ÙŠÙ”Ű­', - 'ﰂ' => 'ئم', - 'ﰃ' => 'ئى', - 'ﰄ' => 'ئي', - 'ﰅ' => 'ۚۏ', - 'ﰆ' => 'ۭۚ', - 'ﰇ' => 'ۚ۟', - 'ﰈ' => 'ŰšÙ…', - 'ﰉ' => 'ŰšÙ‰', - 'ﰊ' => 'ŰšÙŠ', - 'ﰋ' => 'ŰȘŰŹ', - 'ﰌ' => 'ŰȘŰ­', - 'ﰍ' => 'ŰȘŰź', - 'ﰎ' => 'ŰȘم', - 'ﰏ' => 'ŰȘى', - 'ﰐ' => 'ŰȘي', - 'ﰑ' => '۫ۏ', - 'ﰒ' => 'Ű«Ù…', - 'ﰓ' => 'Ű«Ù‰', - 'ﰔ' => 'Ű«ÙŠ', - 'ﰕ' => 'ŰŹŰ­', - 'ﰖ' => 'ŰŹÙ…', - 'ﰗ' => 'Ű­ŰŹ', - 'ﰘ' => 'Ű­Ù…', - 'ﰙ' => '۟ۏ', - 'ﰚ' => 'ۭ۟', - 'ﰛ' => 'ŰźÙ…', - 'ﰜ' => '۳ۏ', - 'ﰝ' => '۳ۭ', - 'ﰞ' => '۳۟', - 'ﰟ' => 'ŰłÙ…', - 'ï° ' => '۔ۭ', - 'ï°Ą' => 'Ű”Ù…', - 'ï°ą' => '۶ۏ', - 'ï°Ł' => '۶ۭ', - 'ï°€' => '۶۟', - 'ï°„' => 'Ű¶Ù…', - 'ï°Š' => 'Ű·Ű­', - 'ï°§' => 'Ű·Ù…', - 'ï°š' => 'ŰžÙ…', - 'ï°©' => 'ŰčŰŹ', - 'ï°Ș' => 'Űčم', - 'ï°«' => 'ŰșŰŹ', - 'ï°Ź' => 'Űșم', - 'ï°­' => 'ÙŰŹ', - 'ï°ź' => 'ÙŰ­', - 'ï°Ż' => 'ÙŰź', - 'ï°°' => 'فم', - 'ï°±' => 'فى', - 'ï°Č' => 'في', - 'ï°ł' => 'Ù‚Ű­', - 'ï°Ž' => 'قم', - 'ï°”' => 'قى', - 'ï°¶' => 'قي', - 'ï°·' => 'ÙƒŰ§', - 'ï°ž' => 'ÙƒŰŹ', - 'ï°č' => 'ÙƒŰ­', - 'ï°ș' => 'ÙƒŰź', - 'ï°»' => 'كل', - 'ï°Œ' => 'كم', - 'ï°œ' => 'كى', - 'ï°Ÿ' => 'كي', - 'ï°ż' => 'Ù„ŰŹ', - 'ﱀ' => 'Ù„Ű­', - 'ﱁ' => 'Ù„Űź', - 'ﱂ' => 'لم', - 'ﱃ' => 'لى', - 'ﱄ' => 'لي', - 'ﱅ' => 'Ù…ŰŹ', - 'ﱆ' => 'Ù…Ű­', - 'ﱇ' => 'Ù…Űź', - 'ﱈ' => 'مم', - 'ﱉ' => 'مى', - 'ﱊ' => 'مي', - 'ﱋ' => 'Ù†ŰŹ', - 'ﱌ' => 'Ù†Ű­', - 'ﱍ' => 'Ù†Űź', - 'ﱎ' => 'نم', - 'ﱏ' => 'نى', - 'ﱐ' => 'ني', - 'ﱑ' => 'Ù‡ŰŹ', - 'ﱒ' => 'هم', - 'ﱓ' => 'هى', - 'ﱔ' => 'هي', - 'ﱕ' => 'ÙŠŰŹ', - 'ﱖ' => 'ÙŠŰ­', - 'ﱗ' => 'ÙŠŰź', - 'ﱘ' => 'يم', - 'ﱙ' => 'يى', - 'ﱚ' => 'يي', - 'ﱛ' => 'Ű°Ù°', - 'ﱜ' => 'Ű±Ù°', - 'ﱝ' => 'ىٰ', - 'ﱞ' => ' ٌّ', - 'ﱟ' => ' ٍّ', - 'ï± ' => ' َّ', - 'ï±Ą' => ' ُّ', - 'ï±ą' => ' ِّ', - 'ï±Ł' => ' ّٰ', - 'ï±€' => 'ÙŠÙ”Ű±', - 'ﱄ' => 'ئŰČ', - 'ﱊ' => 'ئم', - 'ï±§' => 'ئن', - 'ﱚ' => 'ئى', - 'ﱩ' => 'ئي', - 'ï±Ș' => 'ۚ۱', - 'ﱫ' => 'ŰšŰČ', - 'ï±Ź' => 'ŰšÙ…', - 'ï±­' => 'ŰšÙ†', - 'ï±ź' => 'ŰšÙ‰', - 'ï±Ż' => 'ŰšÙŠ', - 'ï±°' => 'ŰȘ۱', - 'ï±±' => 'ŰȘŰČ', - 'ï±Č' => 'ŰȘم', - 'ï±ł' => 'ŰȘن', - 'ﱎ' => 'ŰȘى', - 'ï±”' => 'ŰȘي', - 'ï±¶' => '۫۱', - 'ï±·' => 'Ű«ŰČ', - 'ﱞ' => 'Ű«Ù…', - 'ï±č' => 'Ű«Ù†', - 'ï±ș' => 'Ű«Ù‰', - 'ï±»' => 'Ű«ÙŠ', - 'ﱌ' => 'فى', - 'ﱜ' => 'في', - 'ﱟ' => 'قى', - 'ï±ż' => 'قي', - 'ïȀ' => 'ÙƒŰ§', - 'ïȁ' => 'كل', - 'ïȂ' => 'كم', - 'ïȃ' => 'كى', - 'ïȄ' => 'كي', - 'ïȅ' => 'لم', - 'ïȆ' => 'لى', - 'ïȇ' => 'لي', - 'ïȈ' => 'Ù…Ű§', - 'ïȉ' => 'مم', - 'ïȊ' => 'Ù†Ű±', - 'ïȋ' => 'نŰČ', - 'ïȌ' => 'نم', - 'ïȍ' => 'نن', - 'ïȎ' => 'نى', - 'ïȏ' => 'ني', - 'ïȐ' => 'ىٰ', - 'ïȑ' => 'ÙŠŰ±', - 'ïȒ' => 'يŰČ', - 'ïȓ' => 'يم', - 'ïȔ' => 'ين', - 'ïȕ' => 'يى', - 'ïȖ' => 'يي', - 'ïȗ' => 'ÙŠÙ”ŰŹ', - 'ïȘ' => 'ÙŠÙ”Ű­', - 'ïș' => 'ÙŠÙ”Űź', - 'ïȚ' => 'ئم', - 'ïț' => 'ئه', - 'ïȜ' => 'ۚۏ', - 'ïȝ' => 'ۭۚ', - 'ïȞ' => 'ۚ۟', - 'ïȟ' => 'ŰšÙ…', - 'ïČ ' => 'ŰšÙ‡', - 'ïČĄ' => 'ŰȘŰŹ', - 'ïČą' => 'ŰȘŰ­', - 'ïČŁ' => 'ŰȘŰź', - 'ïČ€' => 'ŰȘم', - 'ïČ„' => 'ŰȘه', - 'ïČŠ' => 'Ű«Ù…', - 'ïȧ' => 'ŰŹŰ­', - 'ïČš' => 'ŰŹÙ…', - 'ïČ©' => 'Ű­ŰŹ', - 'ïČȘ' => 'Ű­Ù…', - 'ïČ«' => '۟ۏ', - 'ïČŹ' => 'ŰźÙ…', - 'ïČ­' => '۳ۏ', - 'ïČź' => '۳ۭ', - 'ïČŻ' => '۳۟', - 'ïȰ' => 'ŰłÙ…', - 'ïȱ' => '۔ۭ', - 'ïČČ' => '۔۟', - 'ïČł' => 'Ű”Ù…', - 'ïČŽ' => '۶ۏ', - 'ïČ”' => '۶ۭ', - 'ïȶ' => '۶۟', - 'ïČ·' => 'Ű¶Ù…', - 'ïČž' => 'Ű·Ű­', - 'ïČč' => 'ŰžÙ…', - 'ïČș' => 'ŰčŰŹ', - 'ïČ»' => 'Űčم', - 'ïČŒ' => 'ŰșŰŹ', - 'ïČœ' => 'Űșم', - 'ïČŸ' => 'ÙŰŹ', - 'ïČż' => 'ÙŰ­', - 'ïł€' => 'ÙŰź', - 'ïł' => 'فم', - 'ïł‚' => 'Ù‚Ű­', - 'ïłƒ' => 'قم', - 'ïł„' => 'ÙƒŰŹ', - 'ïł…' => 'ÙƒŰ­', - 'ïł†' => 'ÙƒŰź', - 'ïł‡' => 'كل', - 'ïłˆ' => 'كم', - 'ïł‰' => 'Ù„ŰŹ', - 'ïłŠ' => 'Ù„Ű­', - 'ïł‹' => 'Ù„Űź', - 'ïłŒ' => 'لم', - 'ïł' => 'له', - 'ïłŽ' => 'Ù…ŰŹ', - 'ïł' => 'Ù…Ű­', - 'ïł' => 'Ù…Űź', - 'ïł‘' => 'مم', - 'ïł’' => 'Ù†ŰŹ', - 'ïł“' => 'Ù†Ű­', - 'ïł”' => 'Ù†Űź', - 'ïł•' => 'نم', - 'ïł–' => 'نه', - 'ïł—' => 'Ù‡ŰŹ', - 'ïł˜' => 'هم', - 'ïł™' => 'هٰ', - 'ïłš' => 'ÙŠŰŹ', - 'ïł›' => 'ÙŠŰ­', - 'ïłœ' => 'ÙŠŰź', - 'ïł' => 'يم', - 'ïłž' => 'يه', - 'ïłŸ' => 'ئم', - 'ïł ' => 'ئه', - 'ïłĄ' => 'ŰšÙ…', - 'ïłą' => 'ŰšÙ‡', - 'ïłŁ' => 'ŰȘم', - 'ïł€' => 'ŰȘه', - 'ïł„' => 'Ű«Ù…', - 'ïłŠ' => 'Ű«Ù‡', - 'ïł§' => 'ŰłÙ…', - 'ïłš' => 'ŰłÙ‡', - 'ïł©' => 'ŰŽÙ…', - 'ïłȘ' => 'ŰŽÙ‡', - 'ïł«' => 'كل', - 'ïłŹ' => 'كم', - 'ïł­' => 'لم', - 'ïłź' => 'نم', - 'ïłŻ' => 'نه', - 'ïł°' => 'يم', - 'ïł±' => 'يه', - 'ïłČ' => 'ـَّ', - 'ïłł' => 'ـُّ', - 'ïłŽ' => 'ـِّ', - 'ïł”' => 'Ű·Ù‰', - 'ïł¶' => 'Ű·ÙŠ', - 'ïł·' => 'Űčى', - 'ïłž' => 'Űčي', - 'ïłč' => 'Űșى', - 'ïłș' => 'Űșي', - 'ïł»' => 'ŰłÙ‰', - 'ïłŒ' => 'ŰłÙŠ', - 'ïłœ' => 'ŰŽÙ‰', - 'ïłŸ' => 'ŰŽÙŠ', - 'ïłż' => 'Ű­Ù‰', - '' => 'Ű­ÙŠ', - '' => 'ŰŹÙ‰', - '' => 'ŰŹÙŠ', - '' => 'ŰźÙ‰', - '' => 'ŰźÙŠ', - '' => 'Ű”Ù‰', - '' => 'Ű”ÙŠ', - '' => 'Ű¶Ù‰', - '' => 'Ű¶ÙŠ', - '' => 'ŰŽŰŹ', - '' => 'ŰŽŰ­', - '' => 'ŰŽŰź', - '' => 'ŰŽÙ…', - '' => 'ێ۱', - '' => '۳۱', - '' => '۔۱', - '' => '۶۱', - '' => 'Ű·Ù‰', - '' => 'Ű·ÙŠ', - '' => 'Űčى', - '' => 'Űčي', - '' => 'Űșى', - '' => 'Űșي', - '' => 'ŰłÙ‰', - '' => 'ŰłÙŠ', - '' => 'ŰŽÙ‰', - '' => 'ŰŽÙŠ', - '' => 'Ű­Ù‰', - '' => 'Ű­ÙŠ', - '' => 'ŰŹÙ‰', - '' => 'ŰŹÙŠ', - '' => 'ŰźÙ‰', - '' => 'ŰźÙŠ', - 'ïŽĄ' => 'Ű”Ù‰', - 'ïŽą' => 'Ű”ÙŠ', - 'ïŽŁ' => 'Ű¶Ù‰', - '' => 'Ű¶ÙŠ', - '' => 'ŰŽŰŹ', - '' => 'ŰŽŰ­', - '' => 'ŰŽŰź', - '' => 'ŰŽÙ…', - '' => 'ێ۱', - 'ïŽȘ' => '۳۱', - '' => '۔۱', - 'ïŽŹ' => '۶۱', - '' => 'ŰŽŰŹ', - 'ïŽź' => 'ŰŽŰ­', - 'ïŽŻ' => 'ŰŽŰź', - '' => 'ŰŽÙ…', - '' => 'ŰłÙ‡', - 'ïŽČ' => 'ŰŽÙ‡', - 'ïŽł' => 'Ű·Ù…', - '' => '۳ۏ', - '' => '۳ۭ', - '' => '۳۟', - '' => 'ŰŽŰŹ', - '' => 'ŰŽŰ­', - 'ïŽč' => 'ŰŽŰź', - 'ïŽș' => 'Ű·Ù…', - '' => 'ŰžÙ…', - '' => 'Ű§Ù‹', - '' => 'Ű§Ù‹', - '' => 'ŰȘŰŹÙ…', - '' => 'ŰȘŰ­ŰŹ', - 'ï”’' => 'ŰȘŰ­ŰŹ', - '' => 'ŰȘŰ­Ù…', - 'ï””' => 'ŰȘŰźÙ…', - '' => 'ŰȘÙ…ŰŹ', - 'ï”–' => 'ŰȘÙ…Ű­', - 'ï”—' => 'ŰȘÙ…Űź', - '' => 'ŰŹÙ…Ű­', - 'ï”™' => 'ŰŹÙ…Ű­', - '' => 'Ű­Ù…ÙŠ', - 'ï”›' => 'Ű­Ù…Ù‰', - '' => '۳ۭۏ', - '' => '۳ۏۭ', - '' => 'ŰłŰŹÙ‰', - '' => 'ŰłÙ…Ű­', - 'ï” ' => 'ŰłÙ…Ű­', - 'ï”Ą' => 'ŰłÙ…ŰŹ', - 'ï”ą' => 'ŰłÙ…Ù…', - 'ï”Ł' => 'ŰłÙ…Ù…', - '' => '۔ۭۭ', - '' => '۔ۭۭ', - '' => 'Ű”Ù…Ù…', - 'ï”§' => 'ŰŽŰ­Ù…', - '' => 'ŰŽŰ­Ù…', - '' => 'ŰŽŰŹÙŠ', - 'ï”Ș' => 'ŰŽÙ…Űź', - '' => 'ŰŽÙ…Űź', - 'ï”Ź' => 'ŰŽÙ…Ù…', - 'ï”­' => 'ŰŽÙ…Ù…', - 'ï”ź' => 'Ű¶Ű­Ù‰', - 'ï”Ż' => 'Ű¶ŰźÙ…', - 'ï”°' => 'Ű¶ŰźÙ…', - 'ï”±' => 'Ű·Ù…Ű­', - 'ï”Č' => 'Ű·Ù…Ű­', - 'ï”ł' => 'Ű·Ù…Ù…', - '' => 'Ű·Ù…ÙŠ', - 'ï””' => 'ŰčŰŹÙ…', - 'ï”¶' => 'Űčمم', - 'ï”·' => 'Űčمم', - '' => 'Űčمى', - 'ï”č' => 'Űșمم', - 'ï”ș' => 'Űșمي', - 'ï”»' => 'Űșمى', - '' => 'ÙŰźÙ…', - '' => 'ÙŰźÙ…', - '' => 'Ù‚Ù…Ű­', - 'ï”ż' => 'قمم', - 'ﶀ' => 'Ù„Ű­Ù…', - 'ﶁ' => 'Ù„Ű­ÙŠ', - 'ﶂ' => 'Ù„Ű­Ù‰', - 'ﶃ' => 'Ù„ŰŹŰŹ', - 'ﶄ' => 'Ù„ŰŹŰŹ', - 'ﶅ' => 'Ù„ŰźÙ…', - 'ﶆ' => 'Ù„ŰźÙ…', - 'ﶇ' => 'Ù„Ù…Ű­', - 'ﶈ' => 'Ù„Ù…Ű­', - 'ﶉ' => 'Ù…Ű­ŰŹ', - 'ﶊ' => 'Ù…Ű­Ù…', - 'ﶋ' => 'Ù…Ű­ÙŠ', - 'ﶌ' => 'Ù…ŰŹŰ­', - 'ﶍ' => 'Ù…ŰŹÙ…', - 'ﶎ' => 'Ù…ŰźŰŹ', - 'ﶏ' => 'Ù…ŰźÙ…', - 'ﶒ' => 'Ù…ŰŹŰź', - 'ﶓ' => 'Ù‡Ù…ŰŹ', - 'ﶔ' => 'همم', - 'ﶕ' => 'Ù†Ű­Ù…', - 'ﶖ' => 'Ù†Ű­Ù‰', - 'ﶗ' => 'Ù†ŰŹÙ…', - 'ﶘ' => 'Ù†ŰŹÙ…', - 'ﶙ' => 'Ù†ŰŹÙ‰', - 'ﶚ' => 'نمي', - 'ﶛ' => 'نمى', - 'ﶜ' => 'يمم', - 'ﶝ' => 'يمم', - 'ﶞ' => 'ŰšŰźÙŠ', - 'ﶟ' => 'ŰȘŰŹÙŠ', - 'ï¶ ' => 'ŰȘŰŹÙ‰', - 'ï¶Ą' => 'ŰȘŰźÙŠ', - 'ï¶ą' => 'ŰȘŰźÙ‰', - 'ï¶Ł' => 'ŰȘمي', - 'ï¶€' => 'ŰȘمى', - 'ï¶„' => 'ŰŹÙ…ÙŠ', - 'ï¶Š' => 'ŰŹŰ­Ù‰', - 'ï¶§' => 'ŰŹÙ…Ù‰', - 'ï¶š' => 'ŰłŰźÙ‰', - 'ï¶©' => 'Ű”Ű­ÙŠ', - 'ï¶Ș' => 'ŰŽŰ­ÙŠ', - 'ï¶«' => 'Ű¶Ű­ÙŠ', - 'ï¶Ź' => 'Ù„ŰŹÙŠ', - 'ï¶­' => 'لمي', - 'ï¶ź' => 'ÙŠŰ­ÙŠ', - 'ï¶Ż' => 'ÙŠŰŹÙŠ', - 'ï¶°' => 'يمي', - 'ï¶±' => 'ممي', - 'ï¶Č' => 'قمي', - 'ï¶ł' => 'Ù†Ű­ÙŠ', - 'ï¶Ž' => 'Ù‚Ù…Ű­', - 'ï¶”' => 'Ù„Ű­Ù…', - 'ï¶¶' => 'Űčمي', - 'ï¶·' => 'كمي', - 'ï¶ž' => 'Ù†ŰŹŰ­', - 'ï¶č' => 'Ù…ŰźÙŠ', - 'ï¶ș' => 'Ù„ŰŹÙ…', - 'ï¶»' => 'كمم', - 'ï¶Œ' => 'Ù„ŰŹÙ…', - 'ï¶œ' => 'Ù†ŰŹŰ­', - 'ï¶Ÿ' => 'ŰŹŰ­ÙŠ', - 'ï¶ż' => 'Ű­ŰŹÙŠ', - 'ﷀ' => 'Ù…ŰŹÙŠ', - 'ﷁ' => 'فمي', - 'ﷂ' => 'ŰšŰ­ÙŠ', - 'ﷃ' => 'كمم', - 'ﷄ' => 'ŰčŰŹÙ…', - 'ﷅ' => 'Ű”Ù…Ù…', - 'ﷆ' => 'ŰłŰźÙŠ', - 'ﷇ' => 'Ù†ŰŹÙŠ', - 'ï·°' => 'Ű”Ù„Û’', - 'ï·±' => 'قلے', - 'ï·Č' => 'Ű§Ù„Ù„Ù‡', - 'ï·ł' => 'Ű§ÙƒŰšŰ±', - 'ï·Ž' => 'Ù…Ű­Ù…ŰŻ', - 'ï·”' => 'Ű”Ù„Űčم', - 'ï·¶' => 'Ű±ŰłÙˆÙ„', - 'ï··' => 'Űčليه', - 'ï·ž' => 'ÙˆŰłÙ„Ù…', - 'ï·č' => 'Ű”Ù„Ù‰', - 'ï·ș' => 'Ű”Ù„Ù‰ Ű§Ù„Ù„Ù‡ Űčليه ÙˆŰłÙ„Ù…', - 'ï·»' => 'ŰŹÙ„ ŰŹÙ„Ű§Ù„Ù‡', - 'ï·Œ' => 'Ű±ÛŒŰ§Ù„', - '' => ',', - 'ïž‘' => '、', - 'ïž’' => '。', - 'ïž“' => ':', - 'ïž”' => ';', - 'ïž•' => '!', - 'ïž–' => '?', - 'ïž—' => '〖', - '' => '〗', - 'ïž™' => '...', - 'ïž°' => '..', - 'ïž±' => '—', - 'ïžČ' => '–', - 'ïžł' => '_', - '' => '_', - 'ïž”' => '(', - 'ïž¶' => ')', - 'ïž·' => '{', - 'ïžž' => '}', - 'ïžč' => '〔', - 'ïžș' => '〕', - 'ïž»' => '【', - '' => '】', - 'ïžœ' => '《', - '' => '》', - 'ïžż' => '〈', - 'ïč€' => '〉', - 'ïč' => '「', - 'ïč‚' => '」', - 'ïčƒ' => '『', - 'ïč„' => '』', - 'ïč‡' => '[', - 'ïčˆ' => ']', - 'ïč‰' => ' ̅', - 'ïčŠ' => ' ̅', - 'ïč‹' => ' ̅', - 'ïčŒ' => ' ̅', - 'ïč' => '_', - 'ïčŽ' => '_', - 'ïč' => '_', - 'ïč' => ',', - 'ïč‘' => '、', - 'ïč’' => '.', - 'ïč”' => ';', - 'ïč•' => ':', - 'ïč–' => '?', - 'ïč—' => '!', - 'ïč˜' => '—', - 'ïč™' => '(', - 'ïčš' => ')', - 'ïč›' => '{', - 'ïčœ' => '}', - 'ïč' => '〔', - 'ïčž' => '〕', - 'ïčŸ' => '#', - 'ïč ' => '&', - 'ïčĄ' => '*', - 'ïčą' => '+', - 'ïčŁ' => '-', - 'ïč€' => '<', - 'ïč„' => '>', - 'ïčŠ' => '=', - 'ïčš' => '\\', - 'ïč©' => '$', - 'ïčȘ' => '%', - 'ïč«' => '@', - 'ïč°' => ' ً', - 'ïč±' => 'ـً', - 'ïčČ' => ' ٌ', - 'ïčŽ' => ' ٍ', - 'ïč¶' => ' َ', - 'ïč·' => 'ـَ', - 'ïčž' => ' ُ', - 'ïčč' => 'ـُ', - 'ïčș' => ' ِ', - 'ïč»' => 'ـِ', - 'ïčŒ' => ' ّ', - 'ïčœ' => 'ـّ', - 'ïčŸ' => ' ْ', - 'ïčż' => 'ـْ', - 'ïș€' => 'ŰĄ', - 'ïș' => 'Ű§Ù“', - 'ïș‚' => 'Ű§Ù“', - 'ïșƒ' => 'Ű§Ù”', - 'ïș„' => 'Ű§Ù”', - 'ïș…' => 'ؤ', - 'ïș†' => 'ؤ', - 'ïș‡' => 'Ű§Ù•', - 'ïșˆ' => 'Ű§Ù•', - 'ïș‰' => 'ئ', - 'ïșŠ' => 'ئ', - 'ïș‹' => 'ئ', - 'ïșŒ' => 'ئ', - 'ïș' => 'ۧ', - 'ïșŽ' => 'ۧ', - 'ïș' => 'Űš', - 'ïș' => 'Űš', - 'ïș‘' => 'Űš', - 'ïș’' => 'Űš', - 'ïș“' => 'Ű©', - 'ïș”' => 'Ű©', - 'ïș•' => 'ŰȘ', - 'ïș–' => 'ŰȘ', - 'ïș—' => 'ŰȘ', - 'ïș˜' => 'ŰȘ', - 'ïș™' => 'Ű«', - 'ïșš' => 'Ű«', - 'ïș›' => 'Ű«', - 'ïșœ' => 'Ű«', - 'ïș' => 'ŰŹ', - 'ïșž' => 'ŰŹ', - 'ïșŸ' => 'ŰŹ', - 'ïș ' => 'ŰŹ', - 'ïșĄ' => 'Ű­', - 'ïșą' => 'Ű­', - 'ïșŁ' => 'Ű­', - 'ïș€' => 'Ű­', - 'ïș„' => 'Űź', - 'ïșŠ' => 'Űź', - 'ïș§' => 'Űź', - 'ïșš' => 'Űź', - 'ïș©' => 'ŰŻ', - 'ïșȘ' => 'ŰŻ', - 'ïș«' => '۰', - 'ïșŹ' => '۰', - 'ïș­' => '۱', - 'ïșź' => '۱', - 'ïșŻ' => 'ŰČ', - 'ïș°' => 'ŰČ', - 'ïș±' => 'Űł', - 'ïșČ' => 'Űł', - 'ïșł' => 'Űł', - 'ïșŽ' => 'Űł', - 'ïș”' => 'ŰŽ', - 'ïș¶' => 'ŰŽ', - 'ïș·' => 'ŰŽ', - 'ïșž' => 'ŰŽ', - 'ïșč' => 'Ű”', - 'ïșș' => 'Ű”', - 'ïș»' => 'Ű”', - 'ïșŒ' => 'Ű”', - 'ïșœ' => '۶', - 'ïșŸ' => '۶', - 'ïșż' => '۶', - 'ﻀ' => '۶', - 'ﻁ' => 'Ű·', - 'ﻂ' => 'Ű·', - 'ﻃ' => 'Ű·', - 'ﻄ' => 'Ű·', - 'ﻅ' => 'Űž', - 'ﻆ' => 'Űž', - 'ﻇ' => 'Űž', - 'ﻈ' => 'Űž', - 'ﻉ' => 'Űč', - 'ﻊ' => 'Űč', - 'ﻋ' => 'Űč', - 'ﻌ' => 'Űč', - 'ﻍ' => 'Űș', - 'ﻎ' => 'Űș', - 'ﻏ' => 'Űș', - 'ﻐ' => 'Űș', - 'ﻑ' => 'ف', - 'ﻒ' => 'ف', - 'ﻓ' => 'ف', - 'ﻔ' => 'ف', - 'ﻕ' => 'ق', - 'ﻖ' => 'ق', - 'ﻗ' => 'ق', - 'ﻘ' => 'ق', - 'ﻙ' => 'ك', - 'ﻚ' => 'ك', - 'ﻛ' => 'ك', - 'ﻜ' => 'ك', - 'ﻝ' => 'ل', - 'ﻞ' => 'ل', - 'ﻟ' => 'ل', - 'ï» ' => 'ل', - 'ï»Ą' => 'م', - 'ï»ą' => 'م', - 'ï»Ł' => 'م', - 'ﻀ' => 'م', - 'ﻄ' => 'ن', - 'ﻊ' => 'ن', - 'ï»§' => 'ن', - 'ﻚ' => 'ن', - 'ﻩ' => 'ه', - 'ï»Ș' => 'ه', - 'ﻫ' => 'ه', - 'ï»Ź' => 'ه', - 'ï»­' => 'و', - 'ï»ź' => 'و', - 'ï»Ż' => 'ى', - 'ï»°' => 'ى', - 'ï»±' => 'ي', - 'ï»Č' => 'ي', - 'ï»ł' => 'ي', - 'ﻎ' => 'ي', - 'ï»”' => 'Ù„Ű§Ù“', - 'ï»¶' => 'Ù„Ű§Ù“', - 'ï»·' => 'Ù„Ű§Ù”', - 'ﻞ' => 'Ù„Ű§Ù”', - 'ï»č' => 'Ù„Ű§Ù•', - 'ï»ș' => 'Ù„Ű§Ù•', - 'ï»»' => 'Ù„Ű§', - 'ﻌ' => 'Ù„Ű§', - '' => '!', - '' => '"', - '' => '#', - '' => '$', - '' => '%', - '' => '&', - '' => '\'', - '' => '(', - '' => ')', - '' => '*', - '' => '+', - '' => ',', - '' => '-', - '' => '.', - '' => '/', - '' => '0', - '' => '1', - '' => '2', - '' => '3', - '' => '4', - '' => '5', - '' => '6', - '' => '7', - '' => '8', - '' => '9', - '' => ':', - '' => ';', - '' => '<', - '' => '=', - '' => '>', - '' => '?', - '' => '@', - 'ïŒĄ' => 'A', - 'ïŒą' => 'B', - 'ïŒŁ' => 'C', - '' => 'D', - '' => 'E', - '' => 'F', - '' => 'G', - '' => 'H', - '' => 'I', - 'ïŒȘ' => 'J', - '' => 'K', - 'ïŒŹ' => 'L', - '' => 'M', - 'ïŒź' => 'N', - 'ïŒŻ' => 'O', - '' => 'P', - '' => 'Q', - 'ïŒČ' => 'R', - 'ïŒł' => 'S', - '' => 'T', - '' => 'U', - '' => 'V', - '' => 'W', - '' => 'X', - 'ïŒč' => 'Y', - 'ïŒș' => 'Z', - '' => '[', - '' => '\\', - '' => ']', - '' => '^', - 'ïŒż' => '_', - '' => '`', - '' => 'a', - '' => 'b', - '' => 'c', - '' => 'd', - '' => 'e', - '' => 'f', - '' => 'g', - '' => 'h', - '' => 'i', - '' => 'j', - '' => 'k', - '' => 'l', - '' => 'm', - '' => 'n', - '' => 'o', - '' => 'p', - '' => 'q', - '' => 'r', - '' => 's', - '' => 't', - '' => 'u', - '' => 'v', - '' => 'w', - '' => 'x', - '' => 'y', - '' => 'z', - '' => '{', - '' => '|', - '' => '}', - '' => '~', - '' => '⩅', - '' => '⩆', - 'ïœĄ' => '。', - 'ïœą' => '「', - 'ïœŁ' => '」', - '' => '、', - '' => '・', - '' => 'ăƒČ', - '' => 'ァ', - '' => 'ィ', - '' => 'ă‚„', - 'ïœȘ' => 'ェ', - '' => 'ă‚©', - 'ïœŹ' => 'ャ', - '' => 'ツ', - 'ïœź' => 'ョ', - 'ïœŻ' => 'ッ', - '' => 'ăƒŒ', - '' => 'ケ', - 'ïœČ' => 'ă‚€', - 'ïœł' => 'ォ', - '' => 'ス', - '' => 'ă‚Ș', - '' => 'ă‚«', - '' => 'キ', - '' => 'ク', - 'ïœč' => 'ケ', - 'ïœș' => 'コ', - '' => 'ă‚”', - '' => 'ă‚·', - '' => 'ă‚č', - '' => 'ă‚»', - 'ïœż' => 'ă‚œ', - '' => 'タ', - '' => 'チ', - '' => 'ツ', - '' => 'テ', - '' => 'ト', - '' => 'ナ', - '' => 'ニ', - '' => 'ヌ', - '' => 'ネ', - '' => 'ノ', - '' => 'ハ', - '' => 'ヒ', - '' => 'フ', - '' => 'ヘ', - '' => 'ホ', - '' => 'マ', - '' => 'ミ', - '' => 'ム', - '' => 'ュ', - '' => 'ヹ', - '' => 'ダ', - '' => 'ナ', - '' => 'ペ', - '' => 'ラ', - '' => 'ăƒȘ', - '' => 'ル', - '' => 'ハ', - '' => 'ロ', - '' => 'ワ', - '' => 'ン', - '' => '゙', - '' => '゚', - '' => 'ᅠ', - 'ïŸĄ' => 'ᄀ', - 'ïŸą' => 'ᄁ', - 'ïŸŁ' => 'á†Ș', - '' => 'ᄂ', - '' => 'ᆬ', - '' => 'ᆭ', - '' => 'ᄃ', - '' => 'ᄄ', - '' => 'ᄅ', - 'ïŸȘ' => 'ᆰ', - '' => 'ᆱ', - 'ïŸŹ' => 'á†Č', - '' => 'ᆳ', - 'ïŸź' => 'ᆮ', - 'ïŸŻ' => 'ᆔ', - '' => 'ᄚ', - '' => 'ᄆ', - 'ïŸČ' => 'ᄇ', - 'ïŸł' => 'ᄈ', - '' => 'ᄡ', - '' => 'ᄉ', - '' => 'ᄊ', - '' => 'ᄋ', - '' => 'ᄌ', - 'ïŸč' => 'ᄍ', - 'ïŸș' => 'ᄎ', - '' => 'ᄏ', - '' => 'ᄐ', - '' => 'ᄑ', - '' => 'ᄒ', - 'ïż‚' => 'ᅡ', - 'ïżƒ' => 'ᅱ', - 'ïż„' => 'ᅣ', - 'ïż…' => 'á…€', - 'ïż†' => 'á…„', - 'ïż‡' => 'ᅩ', - 'ïżŠ' => 'ᅧ', - 'ïż‹' => 'ᅹ', - 'ïżŒ' => 'ᅩ', - 'ïż' => 'á…Ș', - 'ïżŽ' => 'ᅫ', - 'ïż' => 'ᅬ', - 'ïż’' => 'ᅭ', - 'ïż“' => 'ᅼ', - 'ïż”' => 'ᅯ', - 'ïż•' => 'ᅰ', - 'ïż–' => 'ᅱ', - 'ïż—' => 'á…Č', - 'ïżš' => 'ᅳ', - 'ïż›' => 'ᅮ', - 'ïżœ' => 'á…”', - 'ïż ' => 'Âą', - 'ïżĄ' => 'ÂŁ', - 'ïżą' => 'ÂŹ', - 'ïżŁ' => ' ̄', - 'ïż€' => 'Š', - 'ïż„' => '„', - 'ïżŠ' => '₩', - 'ïżš' => '│', - 'ïż©' => '←', - 'ïżȘ' => '↑', - 'ïż«' => '→', - 'ïżŹ' => '↓', - 'ïż­' => '■', - 'ïżź' => '○', - '𝐀' => 'A', - '𝐁' => 'B', - '𝐂' => 'C', - '𝐃' => 'D', - '𝐄' => 'E', - '𝐅' => 'F', - '𝐆' => 'G', - '𝐇' => 'H', - '𝐈' => 'I', - '𝐉' => 'J', - '𝐊' => 'K', - '𝐋' => 'L', - '𝐌' => 'M', - '𝐍' => 'N', - '𝐎' => 'O', - '𝐏' => 'P', - '𝐐' => 'Q', - '𝐑' => 'R', - '𝐒' => 'S', - '𝐓' => 'T', - '𝐔' => 'U', - '𝐕' => 'V', - '𝐖' => 'W', - '𝐗' => 'X', - '𝐘' => 'Y', - '𝐙' => 'Z', - '𝐚' => 'a', - '𝐛' => 'b', - '𝐜' => 'c', - '𝐝' => 'd', - '𝐞' => 'e', - '𝐟' => 'f', - '𝐠' => 'g', - '𝐡' => 'h', - '𝐱' => 'i', - '𝐣' => 'j', - 'đ€' => 'k', - 'đ„' => 'l', - '𝐩' => 'm', - '𝐧' => 'n', - '𝐹' => 'o', - 'đ©' => 'p', - 'đȘ' => 'q', - 'đ«' => 'r', - '𝐬' => 's', - '𝐭' => 't', - '𝐼' => 'u', - '𝐯' => 'v', - '𝐰' => 'w', - 'đ±' => 'x', - 'đČ' => 'y', - '𝐳' => 'z', - '𝐮' => 'A', - 'đ”' => 'B', - 'đ¶' => 'C', - 'đ·' => 'D', - '𝐾' => 'E', - 'đč' => 'F', - 'đș' => 'G', - 'đ»' => 'H', - 'đŒ' => 'I', - 'đœ' => 'J', - 'đŸ' => 'K', - '𝐿' => 'L', - '𝑀' => 'M', - '𝑁' => 'N', - '𝑂' => 'O', - '𝑃' => 'P', - '𝑄' => 'Q', - '𝑅' => 'R', - '𝑆' => 'S', - '𝑇' => 'T', - '𝑈' => 'U', - '𝑉' => 'V', - '𝑊' => 'W', - '𝑋' => 'X', - '𝑌' => 'Y', - '𝑍' => 'Z', - '𝑎' => 'a', - '𝑏' => 'b', - '𝑐' => 'c', - '𝑑' => 'd', - '𝑒' => 'e', - '𝑓' => 'f', - '𝑔' => 'g', - '𝑖' => 'i', - '𝑗' => 'j', - '𝑘' => 'k', - '𝑙' => 'l', - '𝑚' => 'm', - '𝑛' => 'n', - '𝑜' => 'o', - '𝑝' => 'p', - '𝑞' => 'q', - '𝑟' => 'r', - '𝑠' => 's', - '𝑡' => 't', - '𝑱' => 'u', - '𝑣' => 'v', - 'đ‘€' => 'w', - 'đ‘„' => 'x', - '𝑩' => 'y', - '𝑧' => 'z', - '𝑹' => 'A', - 'đ‘©' => 'B', - 'đ‘Ș' => 'C', - 'đ‘«' => 'D', - '𝑬' => 'E', - '𝑭' => 'F', - '𝑼' => 'G', - '𝑯' => 'H', - '𝑰' => 'I', - 'đ‘±' => 'J', - 'đ‘Č' => 'K', - '𝑳' => 'L', - '𝑮' => 'M', - 'đ‘”' => 'N', - 'đ‘¶' => 'O', - 'đ‘·' => 'P', - '𝑾' => 'Q', - 'đ‘č' => 'R', - 'đ‘ș' => 'S', - 'đ‘»' => 'T', - 'đ‘Œ' => 'U', - 'đ‘œ' => 'V', - 'đ‘Ÿ' => 'W', - '𝑿' => 'X', - '𝒀' => 'Y', - '𝒁' => 'Z', - '𝒂' => 'a', - '𝒃' => 'b', - '𝒄' => 'c', - '𝒅' => 'd', - '𝒆' => 'e', - '𝒇' => 'f', - '𝒈' => 'g', - '𝒉' => 'h', - '𝒊' => 'i', - '𝒋' => 'j', - '𝒌' => 'k', - '𝒍' => 'l', - '𝒎' => 'm', - '𝒏' => 'n', - '𝒐' => 'o', - '𝒑' => 'p', - '𝒒' => 'q', - '𝒓' => 'r', - '𝒔' => 's', - '𝒕' => 't', - '𝒖' => 'u', - '𝒗' => 'v', - '𝒘' => 'w', - '𝒙' => 'x', - '𝒚' => 'y', - '𝒛' => 'z', - '𝒜' => 'A', - '𝒞' => 'C', - '𝒟' => 'D', - '𝒱' => 'G', - 'đ’„' => 'J', - '𝒩' => 'K', - 'đ’©' => 'N', - 'đ’Ș' => 'O', - 'đ’«' => 'P', - '𝒬' => 'Q', - '𝒼' => 'S', - '𝒯' => 'T', - '𝒰' => 'U', - 'đ’±' => 'V', - 'đ’Č' => 'W', - '𝒳' => 'X', - '𝒮' => 'Y', - 'đ’”' => 'Z', - 'đ’¶' => 'a', - 'đ’·' => 'b', - '𝒾' => 'c', - 'đ’č' => 'd', - 'đ’»' => 'f', - 'đ’œ' => 'h', - 'đ’Ÿ' => 'i', - '𝒿' => 'j', - '𝓀' => 'k', - '𝓁' => 'l', - '𝓂' => 'm', - '𝓃' => 'n', - '𝓅' => 'p', - '𝓆' => 'q', - '𝓇' => 'r', - '𝓈' => 's', - '𝓉' => 't', - '𝓊' => 'u', - '𝓋' => 'v', - '𝓌' => 'w', - '𝓍' => 'x', - '𝓎' => 'y', - '𝓏' => 'z', - '𝓐' => 'A', - '𝓑' => 'B', - '𝓒' => 'C', - '𝓓' => 'D', - '𝓔' => 'E', - '𝓕' => 'F', - '𝓖' => 'G', - '𝓗' => 'H', - '𝓘' => 'I', - '𝓙' => 'J', - '𝓚' => 'K', - '𝓛' => 'L', - '𝓜' => 'M', - '𝓝' => 'N', - '𝓞' => 'O', - '𝓟' => 'P', - '𝓠' => 'Q', - '𝓡' => 'R', - '𝓱' => 'S', - '𝓣' => 'T', - 'đ“€' => 'U', - 'đ“„' => 'V', - '𝓩' => 'W', - '𝓧' => 'X', - '𝓹' => 'Y', - 'đ“©' => 'Z', - 'đ“Ș' => 'a', - 'đ“«' => 'b', - '𝓬' => 'c', - '𝓭' => 'd', - '𝓼' => 'e', - '𝓯' => 'f', - '𝓰' => 'g', - 'đ“±' => 'h', - 'đ“Č' => 'i', - '𝓳' => 'j', - '𝓮' => 'k', - 'đ“”' => 'l', - 'đ“¶' => 'm', - 'đ“·' => 'n', - '𝓾' => 'o', - 'đ“č' => 'p', - 'đ“ș' => 'q', - 'đ“»' => 'r', - 'đ“Œ' => 's', - 'đ“œ' => 't', - 'đ“Ÿ' => 'u', - '𝓿' => 'v', - '𝔀' => 'w', - '𝔁' => 'x', - '𝔂' => 'y', - '𝔃' => 'z', - '𝔄' => 'A', - '𝔅' => 'B', - '𝔇' => 'D', - '𝔈' => 'E', - '𝔉' => 'F', - '𝔊' => 'G', - '𝔍' => 'J', - '𝔎' => 'K', - '𝔏' => 'L', - '𝔐' => 'M', - '𝔑' => 'N', - '𝔒' => 'O', - '𝔓' => 'P', - '𝔔' => 'Q', - '𝔖' => 'S', - '𝔗' => 'T', - '𝔘' => 'U', - '𝔙' => 'V', - '𝔚' => 'W', - '𝔛' => 'X', - '𝔜' => 'Y', - '𝔞' => 'a', - '𝔟' => 'b', - '𝔠' => 'c', - '𝔡' => 'd', - '𝔱' => 'e', - '𝔣' => 'f', - 'đ”€' => 'g', - 'đ”„' => 'h', - '𝔩' => 'i', - '𝔧' => 'j', - '𝔹' => 'k', - 'đ”©' => 'l', - 'đ”Ș' => 'm', - 'đ”«' => 'n', - '𝔬' => 'o', - '𝔭' => 'p', - '𝔼' => 'q', - '𝔯' => 'r', - '𝔰' => 's', - 'đ”±' => 't', - 'đ”Č' => 'u', - '𝔳' => 'v', - '𝔮' => 'w', - 'đ””' => 'x', - 'đ”¶' => 'y', - 'đ”·' => 'z', - '𝔾' => 'A', - 'đ”č' => 'B', - 'đ”»' => 'D', - 'đ”Œ' => 'E', - 'đ”œ' => 'F', - 'đ”Ÿ' => 'G', - '𝕀' => 'I', - '𝕁' => 'J', - '𝕂' => 'K', - '𝕃' => 'L', - '𝕄' => 'M', - '𝕆' => 'O', - '𝕊' => 'S', - '𝕋' => 'T', - '𝕌' => 'U', - '𝕍' => 'V', - '𝕎' => 'W', - '𝕏' => 'X', - '𝕐' => 'Y', - '𝕒' => 'a', - '𝕓' => 'b', - '𝕔' => 'c', - '𝕕' => 'd', - '𝕖' => 'e', - '𝕗' => 'f', - '𝕘' => 'g', - '𝕙' => 'h', - '𝕚' => 'i', - '𝕛' => 'j', - '𝕜' => 'k', - '𝕝' => 'l', - '𝕞' => 'm', - '𝕟' => 'n', - '𝕠' => 'o', - '𝕡' => 'p', - '𝕱' => 'q', - '𝕣' => 'r', - 'đ•€' => 's', - 'đ•„' => 't', - '𝕩' => 'u', - '𝕧' => 'v', - '𝕹' => 'w', - 'đ•©' => 'x', - 'đ•Ș' => 'y', - 'đ•«' => 'z', - '𝕬' => 'A', - '𝕭' => 'B', - '𝕼' => 'C', - '𝕯' => 'D', - '𝕰' => 'E', - 'đ•±' => 'F', - 'đ•Č' => 'G', - '𝕳' => 'H', - '𝕮' => 'I', - 'đ•”' => 'J', - 'đ•¶' => 'K', - 'đ•·' => 'L', - '𝕾' => 'M', - 'đ•č' => 'N', - 'đ•ș' => 'O', - 'đ•»' => 'P', - 'đ•Œ' => 'Q', - 'đ•œ' => 'R', - 'đ•Ÿ' => 'S', - '𝕿' => 'T', - '𝖀' => 'U', - '𝖁' => 'V', - '𝖂' => 'W', - '𝖃' => 'X', - '𝖄' => 'Y', - '𝖅' => 'Z', - '𝖆' => 'a', - '𝖇' => 'b', - '𝖈' => 'c', - '𝖉' => 'd', - '𝖊' => 'e', - '𝖋' => 'f', - '𝖌' => 'g', - '𝖍' => 'h', - '𝖎' => 'i', - '𝖏' => 'j', - '𝖐' => 'k', - '𝖑' => 'l', - '𝖒' => 'm', - '𝖓' => 'n', - '𝖔' => 'o', - '𝖕' => 'p', - '𝖖' => 'q', - '𝖗' => 'r', - '𝖘' => 's', - '𝖙' => 't', - '𝖚' => 'u', - '𝖛' => 'v', - '𝖜' => 'w', - '𝖝' => 'x', - '𝖞' => 'y', - '𝖟' => 'z', - '𝖠' => 'A', - '𝖡' => 'B', - '𝖱' => 'C', - '𝖣' => 'D', - 'đ–€' => 'E', - 'đ–„' => 'F', - '𝖩' => 'G', - '𝖧' => 'H', - '𝖹' => 'I', - 'đ–©' => 'J', - 'đ–Ș' => 'K', - 'đ–«' => 'L', - '𝖬' => 'M', - '𝖭' => 'N', - '𝖼' => 'O', - '𝖯' => 'P', - '𝖰' => 'Q', - 'đ–±' => 'R', - 'đ–Č' => 'S', - '𝖳' => 'T', - '𝖮' => 'U', - 'đ–”' => 'V', - 'đ–¶' => 'W', - 'đ–·' => 'X', - '𝖾' => 'Y', - 'đ–č' => 'Z', - 'đ–ș' => 'a', - 'đ–»' => 'b', - 'đ–Œ' => 'c', - 'đ–œ' => 'd', - 'đ–Ÿ' => 'e', - '𝖿' => 'f', - '𝗀' => 'g', - '𝗁' => 'h', - '𝗂' => 'i', - '𝗃' => 'j', - '𝗄' => 'k', - '𝗅' => 'l', - '𝗆' => 'm', - '𝗇' => 'n', - '𝗈' => 'o', - '𝗉' => 'p', - '𝗊' => 'q', - '𝗋' => 'r', - '𝗌' => 's', - '𝗍' => 't', - '𝗎' => 'u', - '𝗏' => 'v', - '𝗐' => 'w', - '𝗑' => 'x', - '𝗒' => 'y', - '𝗓' => 'z', - '𝗔' => 'A', - '𝗕' => 'B', - '𝗖' => 'C', - '𝗗' => 'D', - '𝗘' => 'E', - '𝗙' => 'F', - '𝗚' => 'G', - '𝗛' => 'H', - '𝗜' => 'I', - '𝗝' => 'J', - '𝗞' => 'K', - '𝗟' => 'L', - '𝗠' => 'M', - '𝗡' => 'N', - '𝗱' => 'O', - '𝗣' => 'P', - 'đ—€' => 'Q', - 'đ—„' => 'R', - '𝗩' => 'S', - '𝗧' => 'T', - '𝗹' => 'U', - 'đ—©' => 'V', - 'đ—Ș' => 'W', - 'đ—«' => 'X', - '𝗬' => 'Y', - '𝗭' => 'Z', - '𝗼' => 'a', - '𝗯' => 'b', - '𝗰' => 'c', - 'đ—±' => 'd', - 'đ—Č' => 'e', - '𝗳' => 'f', - '𝗮' => 'g', - 'đ—”' => 'h', - 'đ—¶' => 'i', - 'đ—·' => 'j', - '𝗾' => 'k', - 'đ—č' => 'l', - 'đ—ș' => 'm', - 'đ—»' => 'n', - 'đ—Œ' => 'o', - 'đ—œ' => 'p', - 'đ—Ÿ' => 'q', - '𝗿' => 'r', - '𝘀' => 's', - '𝘁' => 't', - '𝘂' => 'u', - '𝘃' => 'v', - '𝘄' => 'w', - '𝘅' => 'x', - '𝘆' => 'y', - '𝘇' => 'z', - '𝘈' => 'A', - '𝘉' => 'B', - '𝘊' => 'C', - '𝘋' => 'D', - '𝘌' => 'E', - '𝘍' => 'F', - '𝘎' => 'G', - '𝘏' => 'H', - '𝘐' => 'I', - '𝘑' => 'J', - '𝘒' => 'K', - '𝘓' => 'L', - '𝘔' => 'M', - '𝘕' => 'N', - '𝘖' => 'O', - '𝘗' => 'P', - '𝘘' => 'Q', - '𝘙' => 'R', - '𝘚' => 'S', - '𝘛' => 'T', - '𝘜' => 'U', - '𝘝' => 'V', - '𝘞' => 'W', - '𝘟' => 'X', - '𝘠' => 'Y', - '𝘡' => 'Z', - '𝘱' => 'a', - '𝘣' => 'b', - 'đ˜€' => 'c', - 'đ˜„' => 'd', - '𝘩' => 'e', - '𝘧' => 'f', - '𝘹' => 'g', - 'đ˜©' => 'h', - 'đ˜Ș' => 'i', - 'đ˜«' => 'j', - '𝘬' => 'k', - '𝘭' => 'l', - '𝘼' => 'm', - '𝘯' => 'n', - '𝘰' => 'o', - 'đ˜±' => 'p', - 'đ˜Č' => 'q', - '𝘳' => 'r', - '𝘮' => 's', - 'đ˜”' => 't', - 'đ˜¶' => 'u', - 'đ˜·' => 'v', - '𝘾' => 'w', - 'đ˜č' => 'x', - 'đ˜ș' => 'y', - 'đ˜»' => 'z', - 'đ˜Œ' => 'A', - 'đ˜œ' => 'B', - 'đ˜Ÿ' => 'C', - '𝘿' => 'D', - '𝙀' => 'E', - '𝙁' => 'F', - '𝙂' => 'G', - '𝙃' => 'H', - '𝙄' => 'I', - '𝙅' => 'J', - '𝙆' => 'K', - '𝙇' => 'L', - '𝙈' => 'M', - '𝙉' => 'N', - '𝙊' => 'O', - '𝙋' => 'P', - '𝙌' => 'Q', - '𝙍' => 'R', - '𝙎' => 'S', - '𝙏' => 'T', - '𝙐' => 'U', - '𝙑' => 'V', - '𝙒' => 'W', - '𝙓' => 'X', - '𝙔' => 'Y', - '𝙕' => 'Z', - '𝙖' => 'a', - '𝙗' => 'b', - '𝙘' => 'c', - '𝙙' => 'd', - '𝙚' => 'e', - '𝙛' => 'f', - '𝙜' => 'g', - '𝙝' => 'h', - '𝙞' => 'i', - '𝙟' => 'j', - '𝙠' => 'k', - '𝙡' => 'l', - '𝙱' => 'm', - '𝙣' => 'n', - 'đ™€' => 'o', - 'đ™„' => 'p', - '𝙩' => 'q', - '𝙧' => 'r', - '𝙹' => 's', - 'đ™©' => 't', - 'đ™Ș' => 'u', - 'đ™«' => 'v', - '𝙬' => 'w', - '𝙭' => 'x', - '𝙼' => 'y', - '𝙯' => 'z', - '𝙰' => 'A', - 'đ™±' => 'B', - 'đ™Č' => 'C', - '𝙳' => 'D', - '𝙮' => 'E', - 'đ™”' => 'F', - 'đ™¶' => 'G', - 'đ™·' => 'H', - '𝙾' => 'I', - 'đ™č' => 'J', - 'đ™ș' => 'K', - 'đ™»' => 'L', - 'đ™Œ' => 'M', - 'đ™œ' => 'N', - 'đ™Ÿ' => 'O', - '𝙿' => 'P', - '𝚀' => 'Q', - '𝚁' => 'R', - '𝚂' => 'S', - '𝚃' => 'T', - '𝚄' => 'U', - '𝚅' => 'V', - '𝚆' => 'W', - '𝚇' => 'X', - '𝚈' => 'Y', - '𝚉' => 'Z', - '𝚊' => 'a', - '𝚋' => 'b', - '𝚌' => 'c', - '𝚍' => 'd', - '𝚎' => 'e', - '𝚏' => 'f', - '𝚐' => 'g', - '𝚑' => 'h', - '𝚒' => 'i', - '𝚓' => 'j', - '𝚔' => 'k', - '𝚕' => 'l', - '𝚖' => 'm', - '𝚗' => 'n', - '𝚘' => 'o', - '𝚙' => 'p', - '𝚚' => 'q', - '𝚛' => 'r', - '𝚜' => 's', - '𝚝' => 't', - '𝚞' => 'u', - '𝚟' => 'v', - '𝚠' => 'w', - '𝚡' => 'x', - '𝚱' => 'y', - '𝚣' => 'z', - 'đš€' => 'ı', - 'đš„' => 'È·', - '𝚹' => 'Α', - 'đš©' => 'Β', - 'đšȘ' => 'Γ', - 'đš«' => 'Δ', - '𝚬' => 'Ε', - '𝚭' => 'Ζ', - '𝚼' => 'Η', - '𝚯' => 'Θ', - '𝚰' => 'Ι', - 'đš±' => 'Κ', - 'đšČ' => 'Λ', - '𝚳' => 'Μ', - '𝚮' => 'Ν', - 'đš”' => 'Ξ', - 'đš¶' => 'Ο', - 'đš·' => 'Π', - '𝚾' => 'ÎĄ', - 'đšč' => 'Θ', - 'đšș' => 'ÎŁ', - 'đš»' => '΀', - 'đšŒ' => '΄', - 'đšœ' => 'Ί', - 'đšŸ' => 'Χ', - '𝚿' => 'Κ', - '𝛀' => 'Ω', - '𝛁' => '∇', - '𝛂' => 'α', - '𝛃' => 'ÎČ', - '𝛄' => 'Îł', - '𝛅' => 'ÎŽ', - '𝛆' => 'Δ', - '𝛇' => 'ζ', - '𝛈' => 'η', - '𝛉' => 'Ξ', - '𝛊' => 'Îč', - '𝛋' => 'Îș', - '𝛌' => 'λ', - '𝛍' => 'ÎŒ', - '𝛎' => 'Μ', - '𝛏' => 'Ο', - '𝛐' => 'Îż', - '𝛑' => 'π', - '𝛒' => 'ρ', - '𝛓' => 'ς', - '𝛔' => 'σ', - '𝛕' => 'τ', - '𝛖' => 'υ', - '𝛗' => 'φ', - '𝛘' => 'χ', - '𝛙' => 'ψ', - '𝛚' => 'ω', - '𝛛' => '∂', - '𝛜' => 'Δ', - '𝛝' => 'Ξ', - '𝛞' => 'Îș', - '𝛟' => 'φ', - '𝛠' => 'ρ', - '𝛡' => 'π', - '𝛱' => 'Α', - '𝛣' => 'Β', - 'đ›€' => 'Γ', - 'đ›„' => 'Δ', - '𝛩' => 'Ε', - '𝛧' => 'Ζ', - '𝛹' => 'Η', - 'đ›©' => 'Θ', - 'đ›Ș' => 'Ι', - 'đ›«' => 'Κ', - '𝛬' => 'Λ', - '𝛭' => 'Μ', - '𝛼' => 'Ν', - '𝛯' => 'Ξ', - '𝛰' => 'Ο', - 'đ›±' => 'Π', - 'đ›Č' => 'ÎĄ', - '𝛳' => 'Θ', - '𝛮' => 'ÎŁ', - 'đ›”' => '΀', - 'đ›¶' => '΄', - 'đ›·' => 'Ί', - '𝛾' => 'Χ', - 'đ›č' => 'Κ', - 'đ›ș' => 'Ω', - 'đ›»' => '∇', - 'đ›Œ' => 'α', - 'đ›œ' => 'ÎČ', - 'đ›Ÿ' => 'Îł', - '𝛿' => 'ÎŽ', - '𝜀' => 'Δ', - '𝜁' => 'ζ', - '𝜂' => 'η', - '𝜃' => 'Ξ', - '𝜄' => 'Îč', - '𝜅' => 'Îș', - '𝜆' => 'λ', - '𝜇' => 'ÎŒ', - '𝜈' => 'Μ', - '𝜉' => 'Ο', - '𝜊' => 'Îż', - '𝜋' => 'π', - '𝜌' => 'ρ', - '𝜍' => 'ς', - '𝜎' => 'σ', - '𝜏' => 'τ', - '𝜐' => 'υ', - '𝜑' => 'φ', - '𝜒' => 'χ', - '𝜓' => 'ψ', - '𝜔' => 'ω', - '𝜕' => '∂', - '𝜖' => 'Δ', - '𝜗' => 'Ξ', - '𝜘' => 'Îș', - '𝜙' => 'φ', - '𝜚' => 'ρ', - '𝜛' => 'π', - '𝜜' => 'Α', - '𝜝' => 'Β', - '𝜞' => 'Γ', - '𝜟' => 'Δ', - '𝜠' => 'Ε', - '𝜡' => 'Ζ', - '𝜱' => 'Η', - '𝜣' => 'Θ', - 'đœ€' => 'Ι', - 'đœ„' => 'Κ', - '𝜩' => 'Λ', - '𝜧' => 'Μ', - '𝜹' => 'Ν', - 'đœ©' => 'Ξ', - 'đœȘ' => 'Ο', - 'đœ«' => 'Π', - '𝜬' => 'ÎĄ', - '𝜭' => 'Θ', - '𝜼' => 'ÎŁ', - '𝜯' => '΀', - '𝜰' => '΄', - 'đœ±' => 'Ί', - 'đœČ' => 'Χ', - '𝜳' => 'Κ', - '𝜮' => 'Ω', - 'đœ”' => '∇', - 'đœ¶' => 'α', - 'đœ·' => 'ÎČ', - '𝜾' => 'Îł', - 'đœč' => 'ÎŽ', - 'đœș' => 'Δ', - 'đœ»' => 'ζ', - 'đœŒ' => 'η', - 'đœœ' => 'Ξ', - 'đœŸ' => 'Îč', - '𝜿' => 'Îș', - '𝝀' => 'λ', - '𝝁' => 'ÎŒ', - '𝝂' => 'Μ', - '𝝃' => 'Ο', - '𝝄' => 'Îż', - '𝝅' => 'π', - '𝝆' => 'ρ', - '𝝇' => 'ς', - '𝝈' => 'σ', - '𝝉' => 'τ', - '𝝊' => 'υ', - '𝝋' => 'φ', - '𝝌' => 'χ', - '𝝍' => 'ψ', - '𝝎' => 'ω', - '𝝏' => '∂', - '𝝐' => 'Δ', - '𝝑' => 'Ξ', - '𝝒' => 'Îș', - '𝝓' => 'φ', - '𝝔' => 'ρ', - '𝝕' => 'π', - '𝝖' => 'Α', - '𝝗' => 'Β', - '𝝘' => 'Γ', - '𝝙' => 'Δ', - '𝝚' => 'Ε', - '𝝛' => 'Ζ', - '𝝜' => 'Η', - '𝝝' => 'Θ', - '𝝞' => 'Ι', - '𝝟' => 'Κ', - '𝝠' => 'Λ', - '𝝡' => 'Μ', - '𝝱' => 'Ν', - '𝝣' => 'Ξ', - 'đ€' => 'Ο', - 'đ„' => 'Π', - '𝝩' => 'ÎĄ', - '𝝧' => 'Θ', - '𝝹' => 'ÎŁ', - 'đ©' => '΀', - 'đȘ' => '΄', - 'đ«' => 'Ί', - '𝝬' => 'Χ', - '𝝭' => 'Κ', - '𝝼' => 'Ω', - '𝝯' => '∇', - '𝝰' => 'α', - 'đ±' => 'ÎČ', - 'đČ' => 'Îł', - '𝝳' => 'ÎŽ', - '𝝮' => 'Δ', - 'đ”' => 'ζ', - 'đ¶' => 'η', - 'đ·' => 'Ξ', - '𝝾' => 'Îč', - 'đč' => 'Îș', - 'đș' => 'λ', - 'đ»' => 'ÎŒ', - 'đŒ' => 'Μ', - 'đœ' => 'Ο', - 'đŸ' => 'Îż', - '𝝿' => 'π', - '𝞀' => 'ρ', - '𝞁' => 'ς', - '𝞂' => 'σ', - '𝞃' => 'τ', - '𝞄' => 'υ', - '𝞅' => 'φ', - '𝞆' => 'χ', - '𝞇' => 'ψ', - '𝞈' => 'ω', - '𝞉' => '∂', - '𝞊' => 'Δ', - '𝞋' => 'Ξ', - '𝞌' => 'Îș', - '𝞍' => 'φ', - '𝞎' => 'ρ', - '𝞏' => 'π', - '𝞐' => 'Α', - '𝞑' => 'Β', - '𝞒' => 'Γ', - '𝞓' => 'Δ', - '𝞔' => 'Ε', - '𝞕' => 'Ζ', - '𝞖' => 'Η', - '𝞗' => 'Θ', - '𝞘' => 'Ι', - '𝞙' => 'Κ', - '𝞚' => 'Λ', - '𝞛' => 'Μ', - '𝞜' => 'Ν', - '𝞝' => 'Ξ', - '𝞞' => 'Ο', - '𝞟' => 'Π', - '𝞠' => 'ÎĄ', - '𝞡' => 'Θ', - '𝞱' => 'ÎŁ', - '𝞣' => '΀', - 'đž€' => '΄', - 'đž„' => 'Ί', - '𝞩' => 'Χ', - '𝞧' => 'Κ', - '𝞹' => 'Ω', - 'đž©' => '∇', - 'đžȘ' => 'α', - 'đž«' => 'ÎČ', - '𝞬' => 'Îł', - '𝞭' => 'ÎŽ', - '𝞼' => 'Δ', - '𝞯' => 'ζ', - '𝞰' => 'η', - 'đž±' => 'Ξ', - 'đžČ' => 'Îč', - '𝞳' => 'Îș', - '𝞮' => 'λ', - 'đž”' => 'ÎŒ', - 'đž¶' => 'Μ', - 'đž·' => 'Ο', - '𝞾' => 'Îż', - 'đžč' => 'π', - 'đžș' => 'ρ', - 'đž»' => 'ς', - 'đžŒ' => 'σ', - 'đžœ' => 'τ', - 'đžŸ' => 'υ', - '𝞿' => 'φ', - '𝟀' => 'χ', - '𝟁' => 'ψ', - '𝟂' => 'ω', - '𝟃' => '∂', - '𝟄' => 'Δ', - '𝟅' => 'Ξ', - '𝟆' => 'Îș', - '𝟇' => 'φ', - '𝟈' => 'ρ', - '𝟉' => 'π', - '𝟊' => 'Ϝ', - '𝟋' => 'ϝ', - '𝟎' => '0', - '𝟏' => '1', - '𝟐' => '2', - '𝟑' => '3', - '𝟒' => '4', - '𝟓' => '5', - '𝟔' => '6', - '𝟕' => '7', - '𝟖' => '8', - '𝟗' => '9', - '𝟘' => '0', - '𝟙' => '1', - '𝟚' => '2', - '𝟛' => '3', - '𝟜' => '4', - '𝟝' => '5', - '𝟞' => '6', - '𝟟' => '7', - '𝟠' => '8', - '𝟡' => '9', - '𝟱' => '0', - '𝟣' => '1', - 'đŸ€' => '2', - 'đŸ„' => '3', - '𝟩' => '4', - '𝟧' => '5', - '𝟹' => '6', - 'đŸ©' => '7', - 'đŸȘ' => '8', - 'đŸ«' => '9', - '𝟬' => '0', - '𝟭' => '1', - '𝟼' => '2', - '𝟯' => '3', - '𝟰' => '4', - 'đŸ±' => '5', - 'đŸČ' => '6', - '𝟳' => '7', - '𝟮' => '8', - 'đŸ”' => '9', - 'đŸ¶' => '0', - 'đŸ·' => '1', - '𝟾' => '2', - 'đŸč' => '3', - 'đŸș' => '4', - 'đŸ»' => '5', - 'đŸŒ' => '6', - 'đŸœ' => '7', - 'đŸŸ' => '8', - '𝟿' => '9', - '𞾀' => 'ۧ', - '𞾁' => 'Űš', - '𞾂' => 'ŰŹ', - '𞾃' => 'ŰŻ', - '𞾅' => 'و', - '𞾆' => 'ŰČ', - '𞾇' => 'Ű­', - '𞾈' => 'Ű·', - '𞾉' => 'ي', - '𞾊' => 'ك', - '𞾋' => 'ل', - '𞾌' => 'م', - '𞾍' => 'ن', - '𞾎' => 'Űł', - '𞾏' => 'Űč', - '𞾐' => 'ف', - '𞾑' => 'Ű”', - '𞾒' => 'ق', - '𞾓' => '۱', - '𞾔' => 'ŰŽ', - '𞾕' => 'ŰȘ', - '𞾖' => 'Ű«', - '𞾗' => 'Űź', - '𞾘' => '۰', - '𞾙' => '۶', - '𞾚' => 'Űž', - '𞾛' => 'Űș', - '𞾜' => 'Ùź', - '𞾝' => 'Úș', - '𞾞' => 'ÚĄ', - '𞾟' => 'ÙŻ', - '𞾡' => 'Űš', - '𞾱' => 'ŰŹ', - '𞞀' => 'ه', - '𞾧' => 'Ű­', - 'đžž©' => 'ي', - 'đžžȘ' => 'ك', - 'đžž«' => 'ل', - '𞾬' => 'م', - '𞾭' => 'ن', - '𞾼' => 'Űł', - '𞾯' => 'Űč', - '𞾰' => 'ف', - 'đžž±' => 'Ű”', - 'đžžČ' => 'ق', - '𞾮' => 'ŰŽ', - 'đžž”' => 'ŰȘ', - 'đžž¶' => 'Ű«', - 'đžž·' => 'Űź', - 'đžžč' => '۶', - 'đžž»' => 'Űș', - 'đžč‚' => 'ŰŹ', - 'đžč‡' => 'Ű­', - 'đžč‰' => 'ي', - 'đžč‹' => 'ل', - 'đžč' => 'ن', - 'đžčŽ' => 'Űł', - 'đžč' => 'Űč', - 'đžč‘' => 'Ű”', - 'đžč’' => 'ق', - 'đžč”' => 'ŰŽ', - 'đžč—' => 'Űź', - 'đžč™' => '۶', - 'đžč›' => 'Űș', - 'đžč' => 'Úș', - 'đžčŸ' => 'ÙŻ', - 'đžčĄ' => 'Űš', - 'đžčą' => 'ŰŹ', - 'đžč€' => 'ه', - 'đžč§' => 'Ű­', - 'đžčš' => 'Ű·', - 'đžč©' => 'ي', - 'đžčȘ' => 'ك', - 'đžčŹ' => 'م', - 'đžč­' => 'ن', - 'đžčź' => 'Űł', - 'đžčŻ' => 'Űč', - 'đžč°' => 'ف', - 'đžč±' => 'Ű”', - 'đžčČ' => 'ق', - 'đžčŽ' => 'ŰŽ', - 'đžč”' => 'ŰȘ', - 'đžč¶' => 'Ű«', - 'đžč·' => 'Űź', - 'đžčč' => '۶', - 'đžčș' => 'Űž', - 'đžč»' => 'Űș', - 'đžčŒ' => 'Ùź', - 'đžčŸ' => 'ÚĄ', - 'đžș€' => 'ۧ', - 'đžș' => 'Űš', - 'đžș‚' => 'ŰŹ', - 'đžșƒ' => 'ŰŻ', - 'đžș„' => 'ه', - 'đžș…' => 'و', - 'đžș†' => 'ŰČ', - 'đžș‡' => 'Ű­', - 'đžșˆ' => 'Ű·', - 'đžș‰' => 'ي', - 'đžș‹' => 'ل', - 'đžșŒ' => 'م', - 'đžș' => 'ن', - 'đžșŽ' => 'Űł', - 'đžș' => 'Űč', - 'đžș' => 'ف', - 'đžș‘' => 'Ű”', - 'đžș’' => 'ق', - 'đžș“' => '۱', - 'đžș”' => 'ŰŽ', - 'đžș•' => 'ŰȘ', - 'đžș–' => 'Ű«', - 'đžș—' => 'Űź', - 'đžș˜' => '۰', - 'đžș™' => '۶', - 'đžșš' => 'Űž', - 'đžș›' => 'Űș', - 'đžșĄ' => 'Űš', - 'đžșą' => 'ŰŹ', - 'đžșŁ' => 'ŰŻ', - 'đžș„' => 'و', - 'đžșŠ' => 'ŰČ', - 'đžș§' => 'Ű­', - 'đžșš' => 'Ű·', - 'đžș©' => 'ي', - 'đžș«' => 'ل', - 'đžșŹ' => 'م', - 'đžș­' => 'ن', - 'đžșź' => 'Űł', - 'đžșŻ' => 'Űč', - 'đžș°' => 'ف', - 'đžș±' => 'Ű”', - 'đžșČ' => 'ق', - 'đžșł' => '۱', - 'đžșŽ' => 'ŰŽ', - 'đžș”' => 'ŰȘ', - 'đžș¶' => 'Ű«', - 'đžș·' => 'Űź', - 'đžșž' => '۰', - 'đžșč' => '۶', - 'đžșș' => 'Űž', - 'đžș»' => 'Űș', - '🄀' => '0.', - '🄁' => '0,', - '🄂' => '1,', - '🄃' => '2,', - '🄄' => '3,', - '🄅' => '4,', - '🄆' => '5,', - '🄇' => '6,', - '🄈' => '7,', - '🄉' => '8,', - '🄊' => '9,', - '🄐' => '(A)', - '🄑' => '(B)', - '🄒' => '(C)', - '🄓' => '(D)', - '🄔' => '(E)', - '🄕' => '(F)', - '🄖' => '(G)', - '🄗' => '(H)', - '🄘' => '(I)', - '🄙' => '(J)', - '🄚' => '(K)', - '🄛' => '(L)', - '🄜' => '(M)', - '🄝' => '(N)', - '🄞' => '(O)', - '🄟' => '(P)', - '🄠' => '(Q)', - '🄡' => '(R)', - '🄱' => '(S)', - '🄣' => '(T)', - 'đŸ„€' => '(U)', - 'đŸ„„' => '(V)', - '🄩' => '(W)', - '🄧' => '(X)', - '🄹' => '(Y)', - 'đŸ„©' => '(Z)', - 'đŸ„Ș' => '〔S〕', - 'đŸ„«' => 'C', - '🄬' => 'R', - '🄭' => 'CD', - '🄼' => 'WZ', - '🄰' => 'A', - 'đŸ„±' => 'B', - 'đŸ„Č' => 'C', - '🄳' => 'D', - '🄮' => 'E', - 'đŸ„”' => 'F', - 'đŸ„¶' => 'G', - 'đŸ„·' => 'H', - '🄾' => 'I', - 'đŸ„č' => 'J', - 'đŸ„ș' => 'K', - 'đŸ„»' => 'L', - 'đŸ„Œ' => 'M', - 'đŸ„œ' => 'N', - 'đŸ„Ÿ' => 'O', - '🄿' => 'P', - '🅀' => 'Q', - '🅁' => 'R', - '🅂' => 'S', - '🅃' => 'T', - '🅄' => 'U', - '🅅' => 'V', - '🅆' => 'W', - '🅇' => 'X', - '🅈' => 'Y', - '🅉' => 'Z', - '🅊' => 'HV', - '🅋' => 'MV', - '🅌' => 'SD', - '🅍' => 'SS', - '🅎' => 'PPV', - '🅏' => 'WC', - 'đŸ…Ș' => 'MC', - 'đŸ…«' => 'MD', - '🅬' => 'MR', - '🆐' => 'DJ', - '🈀' => 'ほか', - '🈁' => 'ココ', - '🈂' => 'ă‚”', - '🈐' => '手', - '🈑' => '歗', - '🈒' => '揌', - '🈓' => 'デ', - '🈔' => 'äșŒ', - '🈕' => '〚', - '🈖' => 'è§Ł', - '🈗' => '怩', - '🈘' => 'äș€', - '🈙' => '映', - '🈚' => '無', - '🈛' => '料', - '🈜' => '才', - '🈝' => 'ćŸŒ', - '🈞' => '憍', - '🈟' => '新', - '🈠' => '戝', - '🈡' => '甂', - '🈱' => '生', - '🈣' => 'èČ©', - 'đŸˆ€' => '棰', - 'đŸˆ„' => 'ćč', - '🈩' => '挔', - '🈧' => '投', - '🈹' => '捕', - 'đŸˆ©' => '侀', - 'đŸˆȘ' => '侉', - 'đŸˆ«' => '遊', - '🈬' => 'ć·Š', - '🈭' => 'äž­', - '🈼' => '揳', - '🈯' => '指', - '🈰' => 'è”°', - 'đŸˆ±' => '打', - 'đŸˆČ' => '犁', - '🈳' => 'ç©ș', - '🈮' => '搈', - 'đŸˆ”' => 'æș€', - 'đŸˆ¶' => '有', - 'đŸˆ·' => '月', - '🈾' => '申', - 'đŸˆč' => 'ć‰Č', - 'đŸˆș' => 'ć–¶', - 'đŸˆ»' => '配', - '🉀' => 'ă€”æœŹă€•', - '🉁' => '〔侉〕', - '🉂' => '〔äșŒă€•', - '🉃' => '〔漉〕', - '🉄' => '〔ç‚č〕', - '🉅' => 'ă€”æ‰“ă€•', - '🉆' => '〔盗〕', - '🉇' => '〔拝〕', - '🉈' => 'ă€”æ•—ă€•', - '🉐' => 'ćŸ—', - '🉑' => '揯', - '🯰' => '0', - 'đŸŻ±' => '1', - 'đŸŻČ' => '2', - '🯳' => '3', - '🯮' => '4', - 'đŸŻ”' => '5', - 'đŸŻ¶' => '6', - 'đŸŻ·' => '7', - '🯾' => '8', - 'đŸŻč' => '9', -); diff --git a/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/vendor/symfony/polyfill-intl-normalizer/bootstrap.php deleted file mode 100644 index ba62006..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/bootstrap.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Intl\Normalizer as p; - -if (!function_exists('normalizer_is_normalized')) { - function normalizer_is_normalized($s, $form = p\Normalizer::NFC) { return p\Normalizer::isNormalized($s, $form); } -} -if (!function_exists('normalizer_normalize')) { - function normalizer_normalize($s, $form = p\Normalizer::NFC) { return p\Normalizer::normalize($s, $form); } -} diff --git a/vendor/symfony/polyfill-intl-normalizer/composer.json b/vendor/symfony/polyfill-intl-normalizer/composer.json deleted file mode 100644 index b0986a8..0000000 --- a/vendor/symfony/polyfill-intl-normalizer/composer.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "symfony/polyfill-intl-normalizer", - "type": "library", - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "normalizer"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=5.3.3" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "files": [ "bootstrap.php" ], - "classmap": [ "Resources/stubs" ] - }, - "suggest": { - "ext-intl": "For best performance" - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/vendor/symfony/polyfill-php70/LICENSE b/vendor/symfony/polyfill-php70/LICENSE deleted file mode 100644 index 4cd8bdd..0000000 --- a/vendor/symfony/polyfill-php70/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015-2019 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/polyfill-php70/Php70.php b/vendor/symfony/polyfill-php70/Php70.php deleted file mode 100644 index 7f1ad08..0000000 --- a/vendor/symfony/polyfill-php70/Php70.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Php70; - -/** - * @author Nicolas Grekas - * - * @internal - */ -final class Php70 -{ - public static function intdiv($dividend, $divisor) - { - $dividend = self::intArg($dividend, __FUNCTION__, 1); - $divisor = self::intArg($divisor, __FUNCTION__, 2); - - if (0 === $divisor) { - throw new \DivisionByZeroError('Division by zero'); - } - if (-1 === $divisor && ~PHP_INT_MAX === $dividend) { - throw new \ArithmeticError('Division of PHP_INT_MIN by -1 is not an integer'); - } - - return ($dividend - ($dividend % $divisor)) / $divisor; - } - - public static function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0) - { - $count = 0; - $result = (string) $subject; - if (0 === $limit = self::intArg($limit, __FUNCTION__, 3)) { - return $result; - } - - foreach ($patterns as $pattern => $callback) { - $result = preg_replace_callback($pattern, $callback, $result, $limit, $c); - $count += $c; - } - - return $result; - } - - public static function error_clear_last() - { - static $handler; - if (!$handler) { - $handler = function () { return false; }; - } - set_error_handler($handler); - @trigger_error(''); - restore_error_handler(); - } - - private static function intArg($value, $caller, $pos) - { - if (\is_int($value)) { - return $value; - } - if (!\is_numeric($value) || PHP_INT_MAX <= ($value += 0) || ~PHP_INT_MAX >= $value) { - throw new \TypeError(sprintf('%s() expects parameter %d to be integer, %s given', $caller, $pos, \gettype($value))); - } - - return (int) $value; - } -} diff --git a/vendor/symfony/polyfill-php70/README.md b/vendor/symfony/polyfill-php70/README.md deleted file mode 100644 index abd5488..0000000 --- a/vendor/symfony/polyfill-php70/README.md +++ /dev/null @@ -1,28 +0,0 @@ -Symfony Polyfill / Php70 -======================== - -This component provides features unavailable in releases prior to PHP 7.0: - -- [`intdiv`](https://php.net/intdiv) -- [`preg_replace_callback_array`](https://php.net/preg_replace_callback_array) -- [`error_clear_last`](https://php.net/error_clear_last) -- `random_bytes` and `random_int` (from [paragonie/random_compat](https://github.com/paragonie/random_compat)) -- [`*Error` throwable classes](https://php.net/Error) -- [`PHP_INT_MIN`](https://php.net/reserved.constants#constant.php-int-min) -- `SessionUpdateTimestampHandlerInterface` - -More information can be found in the -[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). - -Compatibility notes -=================== - -To write portable code between PHP5 and PHP7, some care must be taken: -- `\*Error` exceptions must be caught before `\Exception`; -- after calling `error_clear_last()`, the result of `$e = error_get_last()` must be - verified using `isset($e['message'][0])` instead of `null !== $e`. - -License -======= - -This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php b/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php deleted file mode 100644 index 6819124..0000000 --- a/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php +++ /dev/null @@ -1,5 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Php70 as p; - -if (PHP_VERSION_ID >= 70000) { - return; -} - -if (!defined('PHP_INT_MIN')) { - define('PHP_INT_MIN', ~PHP_INT_MAX); -} - -if (!function_exists('intdiv')) { - function intdiv($dividend, $divisor) { return p\Php70::intdiv($dividend, $divisor); } -} -if (!function_exists('preg_replace_callback_array')) { - function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0) { return p\Php70::preg_replace_callback_array($patterns, $subject, $limit, $count); } -} -if (!function_exists('error_clear_last')) { - function error_clear_last() { return p\Php70::error_clear_last(); } -} diff --git a/vendor/symfony/polyfill-php70/composer.json b/vendor/symfony/polyfill-php70/composer.json deleted file mode 100644 index 771a6f6..0000000 --- a/vendor/symfony/polyfill-php70/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "symfony/polyfill-php70", - "type": "library", - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "keywords": ["polyfill", "shim", "compatibility", "portable"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=5.3.3", - "paragonie/random_compat": "~1.0|~2.0|~9.99" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Php70\\": "" }, - "files": [ "bootstrap.php" ], - "classmap": [ "Resources/stubs" ] - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/vendor/symfony/polyfill-php72/LICENSE b/vendor/symfony/polyfill-php72/LICENSE deleted file mode 100644 index 4cd8bdd..0000000 --- a/vendor/symfony/polyfill-php72/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015-2019 Fabien Potencier - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/symfony/polyfill-php72/Php72.php b/vendor/symfony/polyfill-php72/Php72.php deleted file mode 100644 index 9b3edc7..0000000 --- a/vendor/symfony/polyfill-php72/Php72.php +++ /dev/null @@ -1,217 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Php72; - -/** - * @author Nicolas Grekas - * @author Dariusz RumiƄski - * - * @internal - */ -final class Php72 -{ - private static $hashMask; - - public static function utf8_encode($s) - { - $s .= $s; - $len = \strlen($s); - - for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) { - switch (true) { - case $s[$i] < "\x80": $s[$j] = $s[$i]; break; - case $s[$i] < "\xC0": $s[$j] = "\xC2"; $s[++$j] = $s[$i]; break; - default: $s[$j] = "\xC3"; $s[++$j] = \chr(\ord($s[$i]) - 64); break; - } - } - - return substr($s, 0, $j); - } - - public static function utf8_decode($s) - { - $s = (string) $s; - $len = \strlen($s); - - for ($i = 0, $j = 0; $i < $len; ++$i, ++$j) { - switch ($s[$i] & "\xF0") { - case "\xC0": - case "\xD0": - $c = (\ord($s[$i] & "\x1F") << 6) | \ord($s[++$i] & "\x3F"); - $s[$j] = $c < 256 ? \chr($c) : '?'; - break; - - case "\xF0": - ++$i; - // no break - - case "\xE0": - $s[$j] = '?'; - $i += 2; - break; - - default: - $s[$j] = $s[$i]; - } - } - - return substr($s, 0, $j); - } - - public static function php_os_family() - { - if ('\\' === \DIRECTORY_SEPARATOR) { - return 'Windows'; - } - - $map = array( - 'Darwin' => 'Darwin', - 'DragonFly' => 'BSD', - 'FreeBSD' => 'BSD', - 'NetBSD' => 'BSD', - 'OpenBSD' => 'BSD', - 'Linux' => 'Linux', - 'SunOS' => 'Solaris', - ); - - return isset($map[PHP_OS]) ? $map[PHP_OS] : 'Unknown'; - } - - public static function spl_object_id($object) - { - if (null === self::$hashMask) { - self::initHashMask(); - } - if (null === $hash = spl_object_hash($object)) { - return; - } - - // On 32-bit systems, PHP_INT_SIZE is 4, - return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1))); - } - - public static function sapi_windows_vt100_support($stream, $enable = null) - { - if (!\is_resource($stream)) { - trigger_error('sapi_windows_vt100_support() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING); - - return false; - } - - $meta = stream_get_meta_data($stream); - - if ('STDIO' !== $meta['stream_type']) { - trigger_error('sapi_windows_vt100_support() was not able to analyze the specified stream', E_USER_WARNING); - - return false; - } - - // We cannot actually disable vt100 support if it is set - if (false === $enable || !self::stream_isatty($stream)) { - return false; - } - - // The native function does not apply to stdin - $meta = array_map('strtolower', $meta); - $stdin = 'php://stdin' === $meta['uri'] || 'php://fd/0' === $meta['uri']; - - return !$stdin - && (false !== getenv('ANSICON') - || 'ON' === getenv('ConEmuANSI') - || 'xterm' === getenv('TERM') - || 'Hyper' === getenv('TERM_PROGRAM')); - } - - public static function stream_isatty($stream) - { - if (!\is_resource($stream)) { - trigger_error('stream_isatty() expects parameter 1 to be resource, '.\gettype($stream).' given', E_USER_WARNING); - - return false; - } - - if ('\\' === \DIRECTORY_SEPARATOR) { - $stat = @fstat($stream); - // Check if formatted mode is S_IFCHR - return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; - } - - return \function_exists('posix_isatty') && @posix_isatty($stream); - } - - private static function initHashMask() - { - $obj = (object) array(); - self::$hashMask = -1; - - // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below - $obFuncs = array('ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush'); - foreach (debug_backtrace(\PHP_VERSION_ID >= 50400 ? DEBUG_BACKTRACE_IGNORE_ARGS : false) as $frame) { - if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) { - $frame['line'] = 0; - break; - } - } - if (!empty($frame['line'])) { - ob_start(); - debug_zval_dump($obj); - self::$hashMask = (int) substr(ob_get_clean(), 17); - } - - self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1))); - } - - public static function mb_chr($code, $encoding = null) - { - if (0x80 > $code %= 0x200000) { - $s = \chr($code); - } elseif (0x800 > $code) { - $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); - } elseif (0x10000 > $code) { - $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); - } else { - $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); - } - - if ('UTF-8' !== $encoding) { - $s = mb_convert_encoding($s, $encoding, 'UTF-8'); - } - - return $s; - } - - public static function mb_ord($s, $encoding = null) - { - if (null == $encoding) { - $s = mb_convert_encoding($s, 'UTF-8'); - } elseif ('UTF-8' !== $encoding) { - $s = mb_convert_encoding($s, 'UTF-8', $encoding); - } - - if (1 === \strlen($s)) { - return \ord($s); - } - - $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; - if (0xF0 <= $code) { - return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; - } - if (0xE0 <= $code) { - return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; - } - if (0xC0 <= $code) { - return (($code - 0xC0) << 6) + $s[2] - 0x80; - } - - return $code; - } -} diff --git a/vendor/symfony/polyfill-php72/README.md b/vendor/symfony/polyfill-php72/README.md deleted file mode 100644 index 59dec8a..0000000 --- a/vendor/symfony/polyfill-php72/README.md +++ /dev/null @@ -1,28 +0,0 @@ -Symfony Polyfill / Php72 -======================== - -This component provides functions added to PHP 7.2 core: - -- [`spl_object_id`](https://php.net/spl_object_id) -- [`stream_isatty`](https://php.net/stream_isatty) - -On Windows only: - -- [`sapi_windows_vt100_support`](https://php.net/sapi_windows_vt100_support) - -Moved to core since 7.2 (was in the optional XML extension earlier): - -- [`utf8_encode`](https://php.net/utf8_encode) -- [`utf8_decode`](https://php.net/utf8_decode) - -Also, it provides constants added to PHP 7.2: -- [`PHP_FLOAT_*`](https://php.net/reserved.constants#constant.php-float-dig) -- [`PHP_OS_FAMILY`](https://php.net/reserved.constants#constant.php-os-family) - -More information can be found in the -[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). - -License -======= - -This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-php72/bootstrap.php b/vendor/symfony/polyfill-php72/bootstrap.php deleted file mode 100644 index a27a900..0000000 --- a/vendor/symfony/polyfill-php72/bootstrap.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Php72 as p; - -if (PHP_VERSION_ID >= 70200) { - return; -} - -if (!defined('PHP_FLOAT_DIG')) { - define('PHP_FLOAT_DIG', 15); -} -if (!defined('PHP_FLOAT_EPSILON')) { - define('PHP_FLOAT_EPSILON', 2.2204460492503E-16); -} -if (!defined('PHP_FLOAT_MIN')) { - define('PHP_FLOAT_MIN', 2.2250738585072E-308); -} -if (!defined('PHP_FLOAT_MAX')) { - define('PHP_FLOAT_MAX', 1.7976931348623157E+308); -} -if (!defined('PHP_OS_FAMILY')) { - define('PHP_OS_FAMILY', p\Php72::php_os_family()); -} - -if ('\\' === DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) { - function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); } -} -if (!function_exists('stream_isatty')) { - function stream_isatty($stream) { return p\Php72::stream_isatty($stream); } -} -if (!function_exists('utf8_encode')) { - function utf8_encode($s) { return p\Php72::utf8_encode($s); } -} -if (!function_exists('utf8_decode')) { - function utf8_decode($s) { return p\Php72::utf8_decode($s); } -} -if (!function_exists('spl_object_id')) { - function spl_object_id($s) { return p\Php72::spl_object_id($s); } -} -if (!function_exists('mb_ord')) { - function mb_ord($s, $enc = null) { return p\Php72::mb_ord($s, $enc); } -} -if (!function_exists('mb_chr')) { - function mb_chr($code, $enc = null) { return p\Php72::mb_chr($code, $enc); } -} -if (!function_exists('mb_scrub')) { - function mb_scrub($s, $enc = null) { $enc = null === $enc ? mb_internal_encoding() : $enc; return mb_convert_encoding($s, $enc, $enc); } -} diff --git a/vendor/symfony/polyfill-php72/composer.json b/vendor/symfony/polyfill-php72/composer.json deleted file mode 100644 index e295cab..0000000 --- a/vendor/symfony/polyfill-php72/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "symfony/polyfill-php72", - "type": "library", - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "keywords": ["polyfill", "shim", "compatibility", "portable"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=5.3.3" - }, - "autoload": { - "psr-4": { "Symfony\\Polyfill\\Php72\\": "" }, - "files": [ "bootstrap.php" ] - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - } -} diff --git a/vendor/tumblr/tumblr/.gitignore b/vendor/tumblr/tumblr/.gitignore deleted file mode 100644 index 2e61014..0000000 --- a/vendor/tumblr/tumblr/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -coverage -.DS_Store - -composer.phar - -*.swp -*.swo - -usage.php - -vendor -composer.lock diff --git a/vendor/tumblr/tumblr/.travis.yml b/vendor/tumblr/tumblr/.travis.yml deleted file mode 100644 index 4986ae4..0000000 --- a/vendor/tumblr/tumblr/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: php -before_script: composer install - -php: - - 7.1 - - 7.0 - - 5.6 - - hhvm - -matrix: - allow_failures: - - php: hhvm diff --git a/vendor/tumblr/tumblr/CONTRIBUTING.md b/vendor/tumblr/tumblr/CONTRIBUTING.md deleted file mode 100644 index e6d97d1..0000000 --- a/vendor/tumblr/tumblr/CONTRIBUTING.md +++ /dev/null @@ -1,22 +0,0 @@ -# Contributing - -We want to make contributing to tumblr.php as easy and transparent as possible. If you run into problems, please open an issue. We also actively welcome pull requests. - -## Pull Requests - -1. Fork the repo and create your branch from `master`. -2. If you've added code that should be tested, add tests. -3. If you've changed APIs, update the documentation. -4. Ensure the test suite passes. -5. If you haven't already, complete the Contributor License Agreement ("CLA"). - -## Contributor License Agreement ("CLA") - -In order to accept your pull request, we need you to submit a CLA. - -Complete your CLA [here](http://static.tumblr.com/zyubucd/GaTngbrpr/tumblr_corporate_contributor_license_agreement_v1__10-7-14.pdf) (a more integrated web form is coming soon). - -## License - -By contributing to tumblr.php you agree that your contributions will be licensed under its Apache 2.0 license. - diff --git a/vendor/tumblr/tumblr/LICENSE b/vendor/tumblr/tumblr/LICENSE deleted file mode 100644 index ba74d5c..0000000 --- a/vendor/tumblr/tumblr/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2013 Tumblr, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/tumblr/tumblr/README.md b/vendor/tumblr/tumblr/README.md deleted file mode 100644 index 69a9dd1..0000000 --- a/vendor/tumblr/tumblr/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# tumblr.php - -[![Build Status](https://secure.travis-ci.org/tumblr/tumblr.php.png)](http://travis-ci.org/tumblr/tumblr.php) - -The official PHP client for the -[Tumblr API](http://www.tumblr.com/docs/en/api/v2). - -## Usage - -### Basic Usage - -The first step is setting up a Client: - -``` php -$client = new Tumblr\API\Client($consumerKey, $consumerSecret); -$client->setToken($token, $tokenSecret); -``` - -And then you can do anything you'd like: - -``` php -foreach ($client->getUserInfo()->user->blogs as $blog) { - echo $blog->name . "\n"; -} -``` - -### User Methods - -``` php -$client->getUserInfo(); - -$client->getDashboardPosts($options = null); -$client->getLikedPosts($options = null); -$client->getFollowedBlogs($options = null); - -$client->follow($blogName); -$client->unfollow($blogName); - -$client->like($postId, $reblogKey); -$client->unlike($postId, $reblogKey); -``` - -### Blog Methods - -``` php -$client->getBlogInfo($blogName); - -$client->getBlogAvatar($blogName, $size = null); - -$client->getBlogPosts($blogName, $options = null); -$client->getBlogLikes($blogName, $options = null); -$client->getBlogFollowers($blogName, $options = null); - -$client->getQueuedPosts($blogName, $options = null); -$client->getDraftPosts($blogName, $options = null); -$client->getSubmissionPosts($blogName, $options = null); -``` - -### Post Methods - -``` php -$client->createPost($blogName, $data); -$client->editPost($blogName, $id, $data); -$client->deletePost($blogName, $id, $reblogKey); -$client->reblogPost($blogName, $id, $reblogKey, $options = null); -``` - -### Tagged Methods - -``` php -$client->getTaggedPosts($tag, $options = null); -``` - -## Dependencies - -tumblr.php is available -[on composer](https://packagist.org/packages/tumblr/tumblr) - -* guzzle/guzzle 6.* -* eher/oauth 1.0.x - -If you're using composer (you should!) you can just run -`php composer.phar install` and you'll be good to go. More details on -[getcomposer.org](http://getcomposer.org/). - -## Running tests - -tumblr.php has full unit tests that can be run with PHPUnit like this: - -``` bash -$ phpunit -``` - -That will also generate a coverage report into `./coverage` - -## Copyright and license - -Copyright 2013 Tumblr, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); you may not -use this work except in compliance with the License. You may obtain a copy of -the License in the LICENSE file, or at: - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -License for the specific language governing permissions and limitations. diff --git a/vendor/tumblr/tumblr/composer.json b/vendor/tumblr/tumblr/composer.json deleted file mode 100644 index 748a16b..0000000 --- a/vendor/tumblr/tumblr/composer.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - - "name": "tumblr/tumblr", - - "description": "Official Tumblr PHP Client", - - "keywords": ["tumblr", "api", "sdk", "gif"], - - "homepage": "https://github.com/tumblr/tumblr.php", - - "authors": [ - { - "name": "John Crepezzi", - "email": "john.crepezzi@gmail.com", - "homepage": "https://github.com/seejohnrun", - "role": "developer" - } - ], - - "license": "Apache-2.0", - - "type": "library", - - "require": { - "eher/oauth": "1.0.*", - "guzzlehttp/guzzle": "6.*" - }, - - "require-dev": { - "phpunit/phpunit": "5.3.*" - }, - - "autoload": { - "psr-0": { - "Tumblr\\API": "lib" - } - } - -} diff --git a/vendor/tumblr/tumblr/lib/Tumblr/API/Client.php b/vendor/tumblr/tumblr/lib/Tumblr/API/Client.php deleted file mode 100644 index 7d51138..0000000 --- a/vendor/tumblr/tumblr/lib/Tumblr/API/Client.php +++ /dev/null @@ -1,502 +0,0 @@ -requestHandler = new RequestHandler(); - $this->setConsumer($consumerKey, $consumerSecret); - - if ($token && $secret) { - $this->setToken($token, $secret); - } - } - - /** - * Set the consumer for this client - * - * @param string $consumerKey the consumer key - * @param string $consumerSecret the consumer secret - */ - public function setConsumer($consumerKey, $consumerSecret) - { - $this->apiKey = $consumerKey; - $this->requestHandler->setConsumer($consumerKey, $consumerSecret); - } - - /** - * Set the token for this client - * - * @param string $token the oauth token - * @param string $secret the oauth secret - */ - public function setToken($token, $secret) - { - $this->requestHandler->setToken($token, $secret); - } - - /** - * Retrieve RequestHandler instance - * - * @return RequestHandler - */ - public function getRequestHandler() - { - return $this->requestHandler; - } - - /** - * Get info on the authenticating user - * - * @return array the response array - */ - public function getUserInfo() - { - return $this->getRequest('v2/user/info', null, false); - } - - /** - * Get user dashboard for the authenticating user - * - * @param array $options the options for the call - * @return array the response array - */ - public function getDashboardPosts($options = null) - { - return $this->getRequest('v2/user/dashboard', $options, false); - } - - /** - * Get followings for the authenticating user - * - * @param array $options the options for the call - * @return array the response array - */ - public function getFollowedBlogs($options = null) - { - return $this->getRequest('v2/user/following', $options, false); - } - - /** - * Get likes for the authenticating user - * - * @param array $options the options for the call - * @return array the response array - */ - public function getLikedPosts($options = null) - { - return $this->getRequest('v2/user/likes', $options, false); - } - - /** - * Follow a blog - * - * @param string $blogName the name of the blog to follow - * @return array the response array - */ - public function follow($blogName) - { - $options = array('url' => $this->blogUrl($blogName)); - - return $this->postRequest('v2/user/follow', $options, false); - } - - /** - * Unfollow a blog - * - * @param string $blogName the name of the blog to follow - * @return array the response array - */ - public function unfollow($blogName) - { - $options = array('url' => $this->blogUrl($blogName)); - - return $this->postRequest('v2/user/unfollow', $options, false); - } - - /** - * Like a post - * - * @param int $postId the id of the post - * @param string $reblogKey the reblog_key of the post - * - * @return array the response array - */ - public function like($postId, $reblogKey) - { - $options = array('id' => $postId, 'reblog_key' => $reblogKey); - - return $this->postRequest('v2/user/like', $options, false); - } - - /** - * Unlike a post - * - * @param int $postId the id of the post - * @param string $reblogKey the reblog_key of the post - * - * @return array the response array - */ - public function unlike($postId, $reblogKey) - { - $options = array('id' => $postId, 'reblog_key' => $reblogKey); - - return $this->postRequest('v2/user/unlike', $options, false); - } - - /** - * Delete a post - * - * @param string $blogName the name of the blog the post is on - * @param int $postId the id of the post - * @param string $reblogKey the reblog_key of the post - * - * @return array the response array - */ - public function deletePost($blogName, $postId, $reblogKey) - { - $options = array('id' => $postId, 'reblog_key' => $reblogKey); - $path = $this->blogPath($blogName, '/post/delete'); - - return $this->postRequest($path, $options, false); - } - - /** - * Reblog a post - * - * @param string $blogName the name of the blog - * @param int $postId the id of the post - * @param string $reblogKey the reblog key of the post - * @param array $options the options for the call - * - * @return array the response array - */ - public function reblogPost($blogName, $postId, $reblogKey, $options = null) - { - $params = array('id' => $postId, 'reblog_key' => $reblogKey); - $params = array_merge($options ?: array(), $params); - $path = $this->blogPath($blogName, '/post/reblog'); - - return $this->postRequest($path, $params, false); - } - - /** - * Edit a post - * - * @param string $blogName the name of the blog - * @param int $postId the id of the post to edit - * @param array $data the data to save - * - * @return array the response array - */ - public function editPost($blogName, $postId, $data) - { - $data['id'] = $postId; - $path = $this->blogPath($blogName, '/post/edit'); - - return $this->postRequest($path, $data, false); - } - - /** - * Create a post - * - * @param string $blogName the name of the blog - * @param array $data the data to save - * - * @return array the response array - */ - public function createPost($blogName, $data) - { - $path = $this->blogPath($blogName, '/post'); - - return $this->postRequest($path, $data, false); - } - - /** - * Get tagged posts - * - * @param string $tag the tag to look up - * @param array $options the options for the call - * - * @return array the response array - */ - public function getTaggedPosts($tag, $options = null) - { - if (!$options) { - $options = array(); - } - $options['tag'] = $tag; - - return $this->getRequest('v2/tagged', $options, true); - } - - /** - * Get information about a given blog - * - * @param string $blogName the name of the blog to look up - * @return array the response array - */ - public function getBlogInfo($blogName) - { - $path = $this->blogPath($blogName, '/info'); - - return $this->getRequest($path, null, true); - } - - /** - * Get blog avatar URL - * - * @param string $blogName the nae of the blog to look up - * @param int $size the size to retrieve - * - * @return string the avatar url - */ - public function getBlogAvatar($blogName, $size = null) - { - $path = $this->blogPath($blogName, '/avatar'); - if ($size) { - $path .= "/$size"; - } - - return $this->getRedirect($path, null, true); - } - - /** - * Get blog likes for a given blog - * - * @param string $blogName the name of the blog to look up - * @param array $options the options for the call - * - * @return array the response array - */ - public function getBlogLikes($blogName, $options = null) - { - $path = $this->blogPath($blogName, '/likes'); - - return $this->getRequest($path, $options, true); - } - - /** - * Get blog followers for a given blog - * - * @param string $blogName the name of the blog to look up - * @param array $options the options for the call - * - * @return array the response array - */ - public function getBlogFollowers($blogName, $options = null) - { - $path = $this->blogPath($blogName, '/followers'); - - return $this->getRequest($path, $options, false); - } - - /** - * Get posts for a given blog - * - * @param string $blogName the name of the blog - * @param array $options the options for the call - * - * @return array the response array - */ - public function getBlogPosts($blogName, $options = null) - { - $path = $this->blogPath($blogName, '/posts'); - if ($options && isset($options['type'])) { - $path .= '/' . $options['type']; - unset($options['type']); - } - - return $this->getRequest($path, $options, true); - } - - /** - * Get queue posts for a given blog - * - * @param string $blogName the name of the blog - * @param array $options the options for the call - * - * @return array the response array - */ - public function getQueuedPosts($blogName, $options = null) - { - $path = $this->blogPath($blogName, '/posts/queue'); - - return $this->getRequest($path, $options, false); - } - - /** - * Get draft posts for a given blog - * - * @param string $blogName the name of the blog - * @param array $options the options for the call - * - * @return array the response array - */ - public function getDraftPosts($blogName, $options = null) - { - $path = $this->blogPath($blogName, '/posts/draft'); - - return $this->getRequest($path, $options, false); - } - - /** - * Get submission posts for a given blog - * - * @param string $blogName the name of the blog - * @param array $options the options for the call - * - * @return array the response array - */ - public function getSubmissionPosts($blogName, $options = null) - { - $path = $this->blogPath($blogName, '/posts/submission'); - - return $this->getRequest($path, $options, false); - } - - /** - * Make a GET request to the given endpoint and return the response - * - * @param string $path the path to call on - * @param array $options the options to call with - * @param bool $addApiKey whether or not to add the api key - * - * @return array the response object (parsed) - */ - public function getRequest($path, $options, $addApiKey) - { - $response = $this->makeRequest('GET', $path, $options, $addApiKey); - - return $this->parseResponse($response); - } - - /** - * Make a POST request to the given endpoint and return the response - * - * @param string $path the path to call on - * @param array $options the options to call with - * @param bool $addApiKey whether or not to add the api key - * - * @return array the response object (parsed) - */ - public function postRequest($path, $options, $addApiKey) - { - if (isset($options['source']) && is_array($options['source'])) { - $sources = $options['source']; - unset($options['source']); - foreach ($sources as $i => $source) { - $options["source[$i]"] = $source; - } - } - - $response = $this->makeRequest('POST', $path, $options, $addApiKey); - return $this->parseResponse($response); - } - - /** - * Parse a response and return an appropriate result - * - * @param \stdClass $response the response from the server - * - * @throws RequestException - * @return array the response data - */ - private function parseResponse($response) - { - $response->json = json_decode($response->body); - if ($response->status < 400) { - return $response->json->response; - } else { - throw new RequestException($response); - } - } - - /** - * Make a GET request to the given endpoint and return the response - * - * @param string $path the path to call on - * @param array $options the options to call with - * @param bool $addApiKey whether or not to add the api key - * - * @return string url redirected to (or null) - */ - private function getRedirect($path, $options, $addApiKey) - { - $response = $this->makeRequest('GET', $path, $options, $addApiKey); - if ($response->status === 301 || $response->status === 302) { - return $response->headers['Location'][0]; - } - - return null; - } - - /** - * Make a request to the given endpoint and return the response - * - * @param string $method the method to call: GET, POST - * @param string $path the path to call on - * @param array $options the options to call with - * @param bool $addApiKey whether or not to add the api key - * - * @return \stdClass the response object (not parsed) - */ - private function makeRequest($method, $path, $options, $addApiKey) - { - if ($addApiKey) { - $options = array_merge( - array('api_key' => $this->apiKey), - $options ?: array() - ); - } - - return $this->requestHandler->request($method, $path, $options); - } - - /** - * Expand the given blogName into a base path for the blog - * - * @param string $blogName the name of the blog - * @param string $ext the url extension - * - * @return string the blog base path - */ - private function blogPath($blogName, $ext) - { - $blogUrl = $this->blogUrl($blogName); - - return "v2/blog/$blogUrl$ext"; - } - - /** - * Get the URL of a blog by name or URL - * - * @param string $blogName the name of the blog - * @return string the blog URL - */ - private function blogUrl($blogName) - { - if (strpos($blogName, '.') === false) { - return "$blogName.tumblr.com"; - } - - return $blogName; - } - -} diff --git a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php b/vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php deleted file mode 100644 index 00af04b..0000000 --- a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestException.php +++ /dev/null @@ -1,35 +0,0 @@ -body); - - $errstr = 'Unknown Error'; - if (isset($error->meta)) { - $errstr = $error->meta->msg; - if (isset($error->response->errors)) { - $errstr .= ' ('.$error->response->errors[0].')'; - } - } elseif (isset($error->response->errors)) { - $errstr = $error->response->errors[0]; - } - - $this->statusCode = $response->status; - $this->message = $errstr; - parent::__construct($this->message, $this->statusCode); - } - - public function __toString() - { - return __CLASS__ . ": [$this->statusCode]: $this->message\n"; - } - -} diff --git a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php b/vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php deleted file mode 100644 index c14eefc..0000000 --- a/vendor/tumblr/tumblr/lib/Tumblr/API/RequestHandler.php +++ /dev/null @@ -1,151 +0,0 @@ -baseUrl = 'https://api.tumblr.com/'; - $this->version = '0.1.2'; - - $this->signatureMethod = new \Eher\OAuth\HmacSha1(); - $this->client = new \GuzzleHttp\Client(array( - 'allow_redirects' => false, - )); - } - - /** - * Set the consumer for this request handler - * - * @param string $key the consumer key - * @param string $secret the consumer secret - */ - public function setConsumer($key, $secret) - { - $this->consumer = new \Eher\OAuth\Consumer($key, $secret); - } - - /** - * Set the token for this request handler - * - * @param string $token the oauth token - * @param string $secret the oauth secret - */ - public function setToken($token, $secret) - { - $this->token = new \Eher\OAuth\Token($token, $secret); - } - - /** - * Set the base url for this request handler. - * - * @param string $url The base url (e.g. https://api.tumblr.com) - */ - public function setBaseUrl($url) - { - // Ensure we have a trailing slash since it is expected in {@link request}. - if (substr($url, -1) !== '/') { - $url .= '/'; - } - - $this->baseUrl = $url; - } - - /** - * Make a request with this request handler - * - * @param string $method one of GET, POST - * @param string $path the path to hit - * @param array $options the array of params - * - * @return \stdClass response object - */ - public function request($method, $path, $options) - { - // Ensure we have options - $options = $options ?: array(); - - // Take off the data param, we'll add it back after signing - $file = isset($options['data']) ? $options['data'] : false; - unset($options['data']); - - // Get the oauth signature to put in the request header - $url = $this->baseUrl . $path; - $oauth = \Eher\OAuth\Request::from_consumer_and_token( - $this->consumer, - $this->token, - $method, - $url, - $options - ); - $oauth->sign_request($this->signatureMethod, $this->consumer, $this->token); - $authHeader = $oauth->to_header(); - $pieces = explode(' ', $authHeader, 2); - $authString = $pieces[1]; - - - // Set up the request and get the response - $uri = new \GuzzleHttp\Psr7\Uri($url); - $guzzleOptions = [ - 'headers' => [ - 'Authorization' => $authString, - 'User-Agent' => 'tumblr.php/' . $this->version, - ], - // Swallow exceptions since \Tumblr\API\Client will handle them - 'http_errors' => false, - ]; - if ($method === 'GET') { - $uri = $uri->withQuery(http_build_query($options)); - } elseif ($method === 'POST') { - if (!$file) { - $guzzleOptions['form_params'] = $options; - } else { - // Add the files back now that we have the signature without them - $content_type = 'multipart'; - $form = []; - foreach ($options as $name => $contents) { - $form[] = [ - 'name' => $name, - 'contents' => $contents, - ]; - } - foreach ((array) $file as $idx => $path) { - $form[] = [ - 'name' => "data[$idx]", - 'contents' => file_get_contents($path), - 'filename' => pathinfo($path, PATHINFO_FILENAME), - ]; - } - $guzzleOptions['multipart'] = $form; - } - } - - $response = $this->client->request($method, $uri, $guzzleOptions); - - // Construct the object that the Client expects to see, and return it - $obj = new \stdClass; - $obj->status = $response->getStatusCode(); - // Turn the stream into a string - $obj->body = $response->getBody()->__toString(); - $obj->headers = $response->getHeaders(); - - return $obj; - } - -} diff --git a/vendor/tumblr/tumblr/phpunit.xml b/vendor/tumblr/tumblr/phpunit.xml deleted file mode 100644 index 2e7968c..0000000 --- a/vendor/tumblr/tumblr/phpunit.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - test - - - - - lib - - - - - - diff --git a/vendor/tumblr/tumblr/test/BlogTest.php b/vendor/tumblr/tumblr/test/BlogTest.php deleted file mode 100644 index 22a63bf..0000000 --- a/vendor/tumblr/tumblr/test/BlogTest.php +++ /dev/null @@ -1,67 +0,0 @@ -getBlogInfo('b'); }, 'GET', 'v2/blog/b.tumblr.com/info', array('api_key' => API_KEY)), - - // getBlogAvatar - array(function ($c) use ($test) { - $url = $c->getBlogAvatar('b'); - $test->assertEquals($url, 'url'); - }, 'GET', 'v2/blog/b.tumblr.com/avatar', array('api_key' => API_KEY), 'redirect'), - array(function ($c) use ($test) { - $url = $c->getBlogAvatar('b'); - $test->assertEquals($url, null); - }, 'GET', 'v2/blog/b.tumblr.com/avatar', array('api_key' => API_KEY), 'not_found'), - array(function ($c) { $c->getBlogAvatar('b', 128); }, 'GET', 'v2/blog/b.tumblr.com/avatar/128', array('api_key' => API_KEY)), - - // getBlogLikes - array(function ($c) { $c->getBlogLikes('b.n'); }, 'GET', 'v2/blog/b.n/likes', array('api_key' => API_KEY)), - array(function ($c) { $c->getBlogLikes('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/likes', array('limit' => 10, 'api_key' => API_KEY)), - - // getBlogFollowers - array(function ($c) { $c->getBlogFollowers('b.n'); }, 'GET', 'v2/blog/b.n/followers', null), - array(function ($c) { $c->getBlogFollowers('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/followers', array('limit' => 10)), - - // getBlogPosts - array(function ($c) { $c->getBlogPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts', array('api_key' => API_KEY)), - array(function ($c) { $c->getBlogPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts', array('limit' => 10, 'api_key' => API_KEY)), - array(function ($c) { $c->getBlogPosts('b.n', array('type' => 'text')); }, 'GET', 'v2/blog/b.n/posts/text', array('api_key' => API_KEY)), - - // getQueuedPosts - array(function ($c) { $c->getQueuedPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts/queue', null), - array(function ($c) { $c->getQueuedPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts/queue', array('limit' => 10)), - - // getDraftPosts - array(function ($c) { $c->getDraftPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts/draft', null), - array(function ($c) { $c->getDraftPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts/draft', array('limit' => 10)), - - // getSubmissionPosts - array(function ($c) { $c->getSubmissionPosts('b.n'); }, 'GET', 'v2/blog/b.n/posts/submission', null), - array(function ($c) { $c->getSubmissionPosts('b.n', array('limit' => 10)); }, 'GET', 'v2/blog/b.n/posts/submission', array('limit' => 10)), - - ); - } - - public function testNotFound() - { - try { - $this->testCalls(function ($c) { - $c->getBlogInfo('b'); - }, 'GET', 'v2/blog/b.tumblr.com/info', array('api_key' => API_KEY), 'not_found'); - } catch (\Tumblr\API\RequestException $e) { - $this->assertEquals((string) $e, "Tumblr\API\RequestException: [404]: Unknown Error\n"); - - return; - } - $this->fail('no error thrown'); - } - -} diff --git a/vendor/tumblr/tumblr/test/PostTest.php b/vendor/tumblr/tumblr/test/PostTest.php deleted file mode 100644 index 55d1bdb..0000000 --- a/vendor/tumblr/tumblr/test/PostTest.php +++ /dev/null @@ -1,30 +0,0 @@ -deletePost('b', 123, 'abc'); }, 'POST', 'v2/blog/b.tumblr.com/post/delete', array('id' => 123, 'reblog_key' => 'abc')), - - // reblog post - array(function ($c) { $c->reblogPost('b', 123, 'abc'); }, 'POST', 'v2/blog/b.tumblr.com/post/reblog', array('id' => 123, 'reblog_key' => 'abc')), - array(function ($c) { $c->reblogPost('b', 123, 'abc', array('something' => 'else')); }, 'POST', 'v2/blog/b.tumblr.com/post/reblog', array('id' => 123, 'reblog_key' => 'abc', 'something' => 'else')), - - // edit post - array(function ($c) { $c->editPost('b.n', 123, array('d' => 'ata')); }, 'POST', 'v2/blog/b.n/post/edit', array('d' => 'ata', 'id' => 123)), - - // create post - array(function ($c) { $c->createPost('b.n', array('d' => 'ata')); }, 'POST', 'v2/blog/b.n/post', array('d' => 'ata')), - - // single source - array(function ($c) { $c->createPost('b.n', array('source' => 'remote')); }, 'POST', 'v2/blog/b.n/post', array('source' => 'remote')), - - // multi-source - array(function ($c) { $c->createPost('b.n', array('source' => array('r1', 'r2'))); }, 'POST', 'v2/blog/b.n/post', array('source[0]' => 'r1', 'source[1]' => 'r2')), - - ); - } -} diff --git a/vendor/tumblr/tumblr/test/RequestExceptionTest.php b/vendor/tumblr/tumblr/test/RequestExceptionTest.php deleted file mode 100644 index 6180bca..0000000 --- a/vendor/tumblr/tumblr/test/RequestExceptionTest.php +++ /dev/null @@ -1,28 +0,0 @@ - 401, 'body' => '{}'), "$class_name: [401]: Unknown Error\n"), - - array(array('status' => 404, 'body' => '{"meta":{"msg":"cool story bro"}}'), "$class_name: [404]: cool story bro\n"), - - ); - } - - /** - * @dataProvider provider - */ - public function testErrorString($responseArr, $expectedString) - { - $response = (object) $responseArr; - $err = new \Tumblr\API\RequestException($response); - $this->assertEquals((string) $err, $expectedString); - } - -} diff --git a/vendor/tumblr/tumblr/test/RequestHandlerTest.php b/vendor/tumblr/tumblr/test/RequestHandlerTest.php deleted file mode 100644 index 4dfdcb9..0000000 --- a/vendor/tumblr/tumblr/test/RequestHandlerTest.php +++ /dev/null @@ -1,71 +0,0 @@ -getRequestHandler(); - $this->assertInstanceOf('Tumblr\API\RequestHandler', $rh); - - $rh->setBaseUrl('http://example.com'); - $this->assertAttributeEquals('http://example.com/', 'baseUrl', $rh); - - $rh->setBaseUrl('http://example.com/'); - $this->assertAttributeEquals('http://example.com/', 'baseUrl', $rh); - } - - /** - * @expectedException GuzzleHttp\Exception\ConnectException - */ - public function testRequestThrowsErrorOnMalformedBaseUrl() - { - $client = new Tumblr\API\Client(API_KEY); - $rh = $client->getRequestHandler(); - $rh->setBaseUrl('this is a malformed URL!'); - - $options = array('some kinda option'); - - $rh->request('GET', 'foo', $options); - - } - - /** - * @expectedException Tumblr\API\RequestException - * @expectedExceptionCode 400 - * @expectedExceptionMessage Sadface - */ - public function testRequestThrowsOnBadResponse() - { - // Setup mock handler and response - $mock = new GuzzleHttp\Handler\MockHandler([ - new GuzzleHttp\Psr7\Response(400, [], '{"meta": {"status": 400, "msg": "Sadface"} }'), - ]); - $stack = GuzzleHttp\HandlerStack::create($mock); - $guzzle = new GuzzleHttp\Client(['handler' => $stack]); - - // Attached mocked guzzle client - $client = new Tumblr\API\Client(API_KEY); - $client->getRequestHandler()->client = $guzzle; - - // Throws because it got a 400 back - $client->getBlogInfo('ceyko.tumblr.com'); - } - - public function testRequestGetsJsonResponseField() - { - // Setup mock handler and response - $mock = new GuzzleHttp\Handler\MockHandler([ - new GuzzleHttp\Psr7\Response(200, [], '{"meta": {"status": 200, "msg": "OK"}, "response": "Response Text"}'), - ]); - $stack = GuzzleHttp\HandlerStack::create($mock); - $guzzle = new GuzzleHttp\Client(['handler' => $stack]); - - // Attached mocked guzzle client - $client = new Tumblr\API\Client(API_KEY); - $client->getRequestHandler()->client = $guzzle; - - // Parses out the `reponse` field in json on success - $this->assertEquals($client->getBlogInfo('ceyko.tumblr.com'), 'Response Text'); - } -} diff --git a/vendor/tumblr/tumblr/test/TaggedTest.php b/vendor/tumblr/tumblr/test/TaggedTest.php deleted file mode 100644 index c595508..0000000 --- a/vendor/tumblr/tumblr/test/TaggedTest.php +++ /dev/null @@ -1,16 +0,0 @@ -getTaggedPosts('hey'); }, 'GET', 'v2/tagged', array('tag' => 'hey', 'api_key' => API_KEY)), - array(function ($c) { $c->getTaggedPosts('hey', array('limit' => 10)); }, 'GET', 'v2/tagged', array('limit' => 10, 'tag' => 'hey', 'api_key' => API_KEY)), - - ); - } - -} diff --git a/vendor/tumblr/tumblr/test/TumblrTest.php b/vendor/tumblr/tumblr/test/TumblrTest.php deleted file mode 100644 index a014634..0000000 --- a/vendor/tumblr/tumblr/test/TumblrTest.php +++ /dev/null @@ -1,51 +0,0 @@ -getResponseMock($which_mock); - - // Create request mock and set it to check for the proper response - $request = $this->getMock('Tumblr\API\RequestHandler', array('request')); - $request->expects($this->once()) - ->method('request') - ->with($this->equalTo($type), $this->equalTo($path), $this->equalTo($params)) - ->will($this->returnValue($response)); - - // Create a new client and set it up to use that request handler - $client = new Tumblr\API\Client(API_KEY); - $ref = new ReflectionObject($client); - $prop = $ref->getProperty('requestHandler'); - $prop->setAccessible(true); - $prop->setValue($client, $request); - - // Give it tokens - $client->setToken('t1', 't2'); - - // And then run the callback to check the results - $callable($client); - } - - private function getResponseMock($which) - { - $response = new stdClass; - if ($which == 'perfect') { - $response->status = 200; - $response->body = '{"response":[]}'; - } elseif ($which == 'redirect') { - $response->status = 301; - $response->headers = array('Location' => array('url')); - } elseif ($which == 'not_found') { - $response->status = 404; - $response->body = '{}'; - } - - return $response; - } - -} diff --git a/vendor/tumblr/tumblr/test/UserTest.php b/vendor/tumblr/tumblr/test/UserTest.php deleted file mode 100644 index e42b336..0000000 --- a/vendor/tumblr/tumblr/test/UserTest.php +++ /dev/null @@ -1,40 +0,0 @@ -getUserInfo(); }, 'GET', 'v2/user/info', null), - - // getDashboardPosts - array(function ($c) { $c->getDashboardPosts(); }, 'GET', 'v2/user/dashboard', null), - array(function ($c) { $c->getDashboardPosts(array('limit' => 10)); }, 'GET', 'v2/user/dashboard', array('limit' => 10)), - - // getFollowedBlogs - array(function ($c) { $c->getFollowedBlogs(); }, 'GET', 'v2/user/following', null), - array(function ($c) { $c->getFollowedBlogs(array('limit' => 10)); }, 'GET', 'v2/user/following', array('limit' => 10)), - - // getLikedPosts - array(function ($c) { $c->getLikedPosts(); }, 'GET', 'v2/user/likes', null), - array(function ($c) { $c->getLikedPosts(array('limit' => 10)); }, 'GET', 'v2/user/likes', array('limit' => 10)), - - // follow - array(function ($c) { $c->follow('b'); }, 'POST', 'v2/user/follow', array('url' => 'b.tumblr.com')), - array(function ($c) { $c->follow('b.n'); }, 'POST', 'v2/user/follow', array('url' => 'b.n')), - - // unfollow - array(function ($c) { $c->unfollow('b'); }, 'POST', 'v2/user/unfollow', array('url' => 'b.tumblr.com')), - - // like - array(function ($c) { $c->like(123, 'abc'); }, 'POST', 'v2/user/like', array('id' => 123, 'reblog_key' => 'abc')), - - // unlike - array(function ($c) { $c->unlike(123, 'abc'); }, 'POST', 'v2/user/unlike', array('id' => 123, 'reblog_key' => 'abc')), - - ); - } - -} diff --git a/vendor/tumblr/tumblr/test/bootstrap.php b/vendor/tumblr/tumblr/test/bootstrap.php deleted file mode 100644 index cfa1b00..0000000 --- a/vendor/tumblr/tumblr/test/bootstrap.php +++ /dev/null @@ -1,8 +0,0 @@ -