From d47945b57f9ebdcd93bdb0de9597d53f305247cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Tue, 14 Feb 2023 00:12:30 +0100 Subject: [PATCH 01/11] WIP --- Box54346/.box/.requirements.php | 11 + Box54346/.box/bin/check-requirements.php | 24 + Box54346/.box/src/Checker.php | 102 + Box54346/.box/src/IO.php | 127 + .../.box/src/IsExtensionConflictFulfilled.php | 18 + Box54346/.box/src/IsExtensionFulfilled.php | 18 + Box54346/.box/src/IsFulfilled.php | 9 + Box54346/.box/src/IsPhpVersionFulfilled.php | 22 + Box54346/.box/src/Printer.php | 104 + Box54346/.box/src/Requirement.php | 37 + Box54346/.box/src/RequirementCollection.php | 45 + Box54346/.box/src/Terminal.php | 117 + Box54346/.box/vendor/autoload.php | 25 + Box54346/.box/vendor/composer/ClassLoader.php | 585 +++ .../vendor/composer/InstalledVersions.php | 203 + Box54346/.box/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 32 + .../vendor/composer/autoload_namespaces.php | 9 + .../.box/vendor/composer/autoload_psr4.php | 11 + .../.box/vendor/composer/autoload_real.php | 37 + .../.box/vendor/composer/autoload_static.php | 63 + Box54346/.box/vendor/composer/installed.php | 5 + Box54346/.box/vendor/composer/semver/LICENSE | 19 + .../vendor/composer/semver/src/Comparator.php | 40 + .../composer/semver/src/CompilingMatcher.php | 51 + .../composer/semver/src/Constraint/Bound.php | 56 + .../semver/src/Constraint/Constraint.php | 260 ++ .../src/Constraint/ConstraintInterface.php | 17 + .../src/Constraint/MatchAllConstraint.php | 39 + .../src/Constraint/MatchNoneConstraint.php | 39 + .../semver/src/Constraint/MultiConstraint.php | 178 + .../vendor/composer/semver/src/Interval.php | 51 + .../vendor/composer/semver/src/Intervals.php | 307 ++ .../vendor/composer/semver/src/Semver.php | 63 + .../composer/semver/src/VersionParser.php | 336 ++ Box54346/box.json.dist | 1 + Box54346/composer.json | 15 + Box54346/composer.lock | 124 + Box54346/expected-output | 1 + Box54346/index.php | 15 + Box54346/installed_after.json | 5 + Box54346/installed_after.php | 23 + Box54346/vendor/autoload.php | 25 + Box54346/vendor/bin/phpstan | 120 + Box54346/vendor/bin/phpstan.phar | 120 + Box54346/vendor/composer/ClassLoader.php | 585 +++ .../vendor/composer/InstalledVersions.php | 352 ++ Box54346/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 10 + .../vendor/composer/autoload_namespaces.php | 9 + Box54346/vendor/composer/autoload_psr4.php | 9 + Box54346/vendor/composer/autoload_real.php | 38 + Box54346/vendor/composer/autoload_static.php | 20 + Box54346/vendor/composer/installed.json | 118 + Box54346/vendor/composer/installed.php | 41 + Box54346/vendor/composer/platform_check.php | 26 + .../phpstan/extension-installer/LICENSE | 21 + .../phpstan/extension-installer/README.md | 77 + .../build-cs/composer.json | 12 + .../build-cs/composer.lock | 322 ++ .../phpstan/extension-installer/composer.json | 32 + .../src/GeneratedConfig.php | 22 + .../extension-installer/src/Plugin.php | 159 + Box54346/vendor/phpstan/phpstan/LICENSE | 21 + Box54346/vendor/phpstan/phpstan/README.md | 103 + Box54346/vendor/phpstan/phpstan/bootstrap.php | 60 + Box54346/vendor/phpstan/phpstan/composer.json | 19 + .../phpstan/phpstan/conf/bleedingEdge.neon | 2 + Box54346/vendor/phpstan/phpstan/phpstan | 8 + Box54346/vendor/phpstan/phpstan/phpstan.phar | Bin 0 -> 21461092 bytes .../vendor/phpstan/phpstan/phpstan.phar.asc | 16 + composer/LICENSE | 21 + composer/bin/composer | 88 + composer/res/composer-repository-schema.json | 110 + composer/res/composer-schema.json | 1062 +++++ composer/src/Composer/Advisory/Auditor.php | 191 + .../Advisory/PartialSecurityAdvisory.php | 71 + .../Composer/Advisory/SecurityAdvisory.php | 76 + .../Composer/Autoload/AutoloadGenerator.php | 1339 ++++++ .../src/Composer/Autoload/ClassLoader.php | 585 +++ .../Composer/Autoload/ClassMapGenerator.php | 98 + .../src/Composer/Autoload/PhpFileCleaner.php | 247 ++ composer/src/Composer/Cache.php | 389 ++ .../src/Composer/Command/AboutCommand.php | 51 + .../src/Composer/Command/ArchiveCommand.php | 212 + .../src/Composer/Command/AuditCommand.php | 92 + composer/src/Composer/Command/BaseCommand.php | 436 ++ .../Command/BaseDependencyCommand.php | 251 ++ composer/src/Composer/Command/BumpCommand.php | 246 ++ .../Command/CheckPlatformReqsCommand.php | 216 + .../Composer/Command/ClearCacheCommand.php | 101 + .../src/Composer/Command/CompletionTrait.php | 214 + .../src/Composer/Command/ConfigCommand.php | 1064 +++++ .../Composer/Command/CreateProjectCommand.php | 481 +++ .../src/Composer/Command/DependsCommand.php | 58 + .../src/Composer/Command/DiagnoseCommand.php | 741 ++++ .../Composer/Command/DumpAutoloadCommand.php | 116 + composer/src/Composer/Command/ExecCommand.php | 153 + composer/src/Composer/Command/FundCommand.php | 151 + .../src/Composer/Command/GlobalCommand.php | 165 + composer/src/Composer/Command/HomeCommand.php | 167 + composer/src/Composer/Command/InitCommand.php | 636 +++ .../src/Composer/Command/InstallCommand.php | 148 + .../src/Composer/Command/LicensesCommand.php | 153 + .../src/Composer/Command/OutdatedCommand.php | 119 + .../Command/PackageDiscoveryTrait.php | 451 ++ .../src/Composer/Command/ProhibitsCommand.php | 59 + .../src/Composer/Command/ReinstallCommand.php | 173 + .../src/Composer/Command/RemoveCommand.php | 314 ++ .../src/Composer/Command/RequireCommand.php | 635 +++ .../src/Composer/Command/RunScriptCommand.php | 187 + .../Composer/Command/ScriptAliasCommand.php | 76 + .../src/Composer/Command/SearchCommand.php | 127 + .../Composer/Command/SelfUpdateCommand.php | 640 +++ composer/src/Composer/Command/ShowCommand.php | 1416 +++++++ .../src/Composer/Command/StatusCommand.php | 218 + .../src/Composer/Command/SuggestsCommand.php | 103 + .../src/Composer/Command/UpdateCommand.php | 316 ++ .../src/Composer/Command/ValidateCommand.php | 220 + composer/src/Composer/Composer.php | 159 + composer/src/Composer/Config.php | 626 +++ .../Composer/Config/ConfigSourceInterface.php | 84 + .../src/Composer/Config/JsonConfigSource.php | 299 ++ composer/src/Composer/Console/Application.php | 663 +++ .../Composer/Console/GithubActionError.php | 68 + .../Composer/Console/HtmlOutputFormatter.php | 104 + .../Composer/Console/Input/InputArgument.php | 69 + .../Composer/Console/Input/InputOption.php | 72 + .../Composer/DependencyResolver/Decisions.php | 233 ++ .../DependencyResolver/DefaultPolicy.php | 258 ++ .../DependencyResolver/GenericRule.php | 90 + .../LocalRepoTransaction.php | 31 + .../DependencyResolver/LockTransaction.php | 154 + .../DependencyResolver/MultiConflictRule.php | 110 + .../Operation/InstallOperation.php | 56 + .../Operation/MarkAliasInstalledOperation.php | 51 + .../MarkAliasUninstalledOperation.php | 51 + .../Operation/OperationInterface.php | 43 + .../Operation/SolverOperation.php | 42 + .../Operation/UninstallOperation.php | 56 + .../Operation/UpdateOperation.php | 88 + .../DependencyResolver/PolicyInterface.php | 33 + .../src/Composer/DependencyResolver/Pool.php | 265 ++ .../DependencyResolver/PoolBuilder.php | 706 ++++ .../DependencyResolver/PoolOptimizer.php | 475 +++ .../Composer/DependencyResolver/Problem.php | 561 +++ .../Composer/DependencyResolver/Request.php | 236 ++ .../src/Composer/DependencyResolver/Rule.php | 463 +++ .../DependencyResolver/Rule2Literals.php | 117 + .../Composer/DependencyResolver/RuleSet.php | 194 + .../DependencyResolver/RuleSetGenerator.php | 327 ++ .../DependencyResolver/RuleSetIterator.php | 105 + .../DependencyResolver/RuleWatchChain.php | 51 + .../DependencyResolver/RuleWatchGraph.php | 167 + .../DependencyResolver/RuleWatchNode.php | 114 + .../Composer/DependencyResolver/Solver.php | 791 ++++ .../DependencyResolver/SolverBugException.php | 27 + .../SolverProblemsException.php | 148 + .../DependencyResolver/Transaction.php | 357 ++ .../Composer/Downloader/ArchiveDownloader.php | 223 + .../Downloader/ChangeReportInterface.php | 32 + .../Composer/Downloader/DownloadManager.php | 441 ++ .../Downloader/DownloaderInterface.php | 93 + .../Downloader/DvcsDownloaderInterface.php | 32 + .../Composer/Downloader/FileDownloader.php | 511 +++ .../Downloader/FilesystemException.php | 26 + .../Composer/Downloader/FossilDownloader.php | 131 + .../src/Composer/Downloader/GitDownloader.php | 620 +++ .../Composer/Downloader/GzipDownloader.php | 67 + .../src/Composer/Downloader/HgDownloader.php | 119 + .../MaxFileSizeExceededException.php | 17 + .../Composer/Downloader/PathDownloader.php | 313 ++ .../Downloader/PerforceDownloader.php | 128 + .../Composer/Downloader/PharDownloader.php | 41 + .../src/Composer/Downloader/RarDownloader.php | 82 + .../src/Composer/Downloader/SvnDownloader.php | 249 ++ .../src/Composer/Downloader/TarDownloader.php | 36 + .../Downloader/TransportException.php | 89 + .../VcsCapableDownloaderInterface.php | 32 + .../src/Composer/Downloader/VcsDownloader.php | 359 ++ .../src/Composer/Downloader/XzDownloader.php | 39 + .../src/Composer/Downloader/ZipDownloader.php | 272 ++ .../src/Composer/EventDispatcher/Event.php | 103 + .../EventDispatcher/EventDispatcher.php | 623 +++ .../EventSubscriberInterface.php | 48 + .../ScriptExecutionException.php | 22 + .../IrrecoverableDownloadException.php | 20 + .../src/Composer/Exception/NoSslException.php | 22 + composer/src/Composer/Factory.php | 731 ++++ .../IgnoreAllPlatformRequirementFilter.php | 23 + .../IgnoreListPlatformRequirementFilter.php | 88 + ...IgnoreNothingPlatformRequirementFilter.php | 24 + .../PlatformRequirementFilterFactory.php | 47 + .../PlatformRequirementFilterInterface.php | 18 + composer/src/Composer/IO/BaseIO.php | 234 ++ composer/src/Composer/IO/BufferIO.php | 102 + composer/src/Composer/IO/ConsoleIO.php | 345 ++ composer/src/Composer/IO/IOInterface.php | 242 ++ composer/src/Composer/IO/NullIO.php | 129 + composer/src/Composer/InstalledVersions.php | 352 ++ composer/src/Composer/Installer.php | 1461 +++++++ .../Composer/Installer/BinaryInstaller.php | 409 ++ .../Installer/BinaryPresenceInterface.php | 32 + .../Installer/InstallationManager.php | 667 +++ .../src/Composer/Installer/InstallerEvent.php | 85 + .../Composer/Installer/InstallerEvents.php | 26 + .../Composer/Installer/InstallerInterface.php | 118 + .../Composer/Installer/LibraryInstaller.php | 340 ++ .../Installer/MetapackageInstaller.php | 132 + .../src/Composer/Installer/NoopInstaller.php | 118 + .../src/Composer/Installer/PackageEvent.php | 110 + .../src/Composer/Installer/PackageEvents.php | 75 + .../Composer/Installer/PluginInstaller.php | 134 + .../Composer/Installer/ProjectInstaller.php | 124 + .../Installer/SuggestedPackagesReporter.php | 228 + composer/src/Composer/Json/JsonFile.php | 349 ++ composer/src/Composer/Json/JsonFormatter.php | 134 + .../src/Composer/Json/JsonManipulator.php | 570 +++ .../Composer/Json/JsonValidationException.php | 43 + .../PHPStan/ConfigReturnTypeExtension.php | 194 + .../RuleReasonDataReturnTypeExtension.php | 69 + .../src/Composer/Package/AliasPackage.php | 393 ++ .../Archiver/ArchivableFilesFilter.php | 50 + .../Archiver/ArchivableFilesFinder.php | 109 + .../Package/Archiver/ArchiveManager.php | 287 ++ .../Package/Archiver/ArchiverInterface.php | 44 + .../Package/Archiver/BaseExcludeFilter.php | 152 + .../Archiver/ComposerExcludeFilter.php | 31 + .../Package/Archiver/GitExcludeFilter.php | 65 + .../Package/Archiver/PharArchiver.php | 104 + .../Composer/Package/Archiver/ZipArchiver.php | 90 + composer/src/Composer/Package/BasePackage.php | 277 ++ .../Composer/Package/Comparer/Comparer.php | 152 + .../Composer/Package/CompleteAliasPackage.php | 167 + .../src/Composer/Package/CompletePackage.php | 246 ++ .../Package/CompletePackageInterface.php | 188 + .../Composer/Package/Dumper/ArrayDumper.php | 168 + composer/src/Composer/Package/Link.php | 140 + .../Composer/Package/Loader/ArrayLoader.php | 465 +++ .../Loader/InvalidPackageException.php | 63 + .../Composer/Package/Loader/JsonLoader.php | 56 + .../Package/Loader/LoaderInterface.php | 39 + .../Package/Loader/RootPackageLoader.php | 296 ++ .../Package/Loader/ValidatingArrayLoader.php | 623 +++ composer/src/Composer/Package/Locker.php | 545 +++ composer/src/Composer/Package/Package.php | 711 ++++ .../src/Composer/Package/PackageInterface.php | 393 ++ .../src/Composer/Package/RootAliasPackage.php | 223 + composer/src/Composer/Package/RootPackage.php | 132 + .../Composer/Package/RootPackageInterface.php | 169 + .../Package/Version/StabilityFilter.php | 49 + .../Package/Version/VersionBumper.php | 119 + .../Package/Version/VersionGuesser.php | 423 ++ .../Package/Version/VersionParser.php | 94 + .../Package/Version/VersionSelector.php | 259 ++ composer/src/Composer/PartialComposer.php | 115 + .../src/Composer/Platform/HhvmDetector.php | 65 + composer/src/Composer/Platform/Runtime.php | 103 + composer/src/Composer/Platform/Version.php | 90 + .../Composer/Plugin/Capability/Capability.php | 23 + .../Plugin/Capability/CommandProvider.php | 33 + composer/src/Composer/Plugin/Capable.php | 43 + composer/src/Composer/Plugin/CommandEvent.php | 80 + .../Plugin/PluginBlockedException.php | 19 + composer/src/Composer/Plugin/PluginEvents.php | 82 + .../src/Composer/Plugin/PluginInterface.php | 63 + .../src/Composer/Plugin/PluginManager.php | 602 +++ .../Composer/Plugin/PostFileDownloadEvent.php | 139 + .../Composer/Plugin/PreCommandRunEvent.php | 63 + .../Composer/Plugin/PreFileDownloadEvent.php | 158 + .../Composer/Plugin/PrePoolCreateEvent.php | 173 + .../Question/StrictConfirmationQuestion.php | 93 + .../Repository/AdvisoryProviderInterface.php | 34 + .../Composer/Repository/ArrayRepository.php | 341 ++ .../Repository/ArtifactRepository.php | 142 + .../Repository/CanonicalPackagesTrait.php | 55 + .../Repository/ComposerRepository.php | 1755 ++++++++ .../Repository/CompositeRepository.php | 203 + .../ConfigurableRepositoryInterface.php | 26 + .../Repository/FilesystemRepository.php | 309 ++ .../Composer/Repository/FilterRepository.php | 234 ++ .../Repository/InstalledArrayRepository.php | 38 + .../InstalledFilesystemRepository.php | 19 + .../Repository/InstalledRepository.php | 276 ++ .../InstalledRepositoryInterface.php | 33 + .../Repository/InvalidRepositoryException.php | 22 + .../Repository/LockArrayRepository.php | 30 + .../Composer/Repository/PackageRepository.php | 68 + .../Composer/Repository/PathRepository.php | 253 ++ .../Composer/Repository/PearRepository.php | 32 + .../Repository/PlatformRepository.php | 715 ++++ .../Composer/Repository/RepositoryFactory.php | 192 + .../Repository/RepositoryInterface.php | 118 + .../Composer/Repository/RepositoryManager.php | 188 + .../RepositorySecurityException.php | 22 + .../src/Composer/Repository/RepositorySet.php | 402 ++ .../Composer/Repository/RepositoryUtils.php | 78 + .../Repository/RootPackageRepository.php | 35 + .../Composer/Repository/Vcs/FossilDriver.php | 247 ++ .../Repository/Vcs/GitBitbucketDriver.php | 519 +++ .../src/Composer/Repository/Vcs/GitDriver.php | 258 ++ .../Composer/Repository/Vcs/GitHubDriver.php | 621 +++ .../Composer/Repository/Vcs/GitLabDriver.php | 628 +++ .../src/Composer/Repository/Vcs/HgDriver.php | 244 ++ .../Repository/Vcs/PerforceDriver.php | 188 + .../src/Composer/Repository/Vcs/SvnDriver.php | 408 ++ .../src/Composer/Repository/Vcs/VcsDriver.php | 179 + .../Repository/Vcs/VcsDriverInterface.php | 110 + .../src/Composer/Repository/VcsRepository.php | 527 +++ .../Repository/VersionCacheInterface.php | 21 + .../Repository/WritableArrayRepository.php | 73 + .../WritableRepositoryInterface.php | 73 + composer/src/Composer/Script/Event.php | 122 + composer/src/Composer/Script/ScriptEvents.php | 131 + composer/src/Composer/SelfUpdate/Keys.php | 38 + composer/src/Composer/SelfUpdate/Versions.php | 117 + composer/src/Composer/Util/AuthHelper.php | 300 ++ composer/src/Composer/Util/Bitbucket.php | 256 ++ composer/src/Composer/Util/ComposerMirror.php | 77 + .../src/Composer/Util/ConfigValidator.php | 224 + composer/src/Composer/Util/ErrorHandler.php | 82 + composer/src/Composer/Util/Filesystem.php | 917 ++++ composer/src/Composer/Util/Git.php | 512 +++ composer/src/Composer/Util/GitHub.php | 234 ++ composer/src/Composer/Util/GitLab.php | 311 ++ composer/src/Composer/Util/Hg.php | 109 + .../src/Composer/Util/Http/CurlDownloader.php | 653 +++ .../src/Composer/Util/Http/CurlResponse.php | 43 + .../src/Composer/Util/Http/ProxyHelper.php | 181 + .../src/Composer/Util/Http/ProxyManager.php | 180 + .../src/Composer/Util/Http/RequestProxy.php | 89 + composer/src/Composer/Util/Http/Response.php | 123 + composer/src/Composer/Util/HttpDownloader.php | 545 +++ composer/src/Composer/Util/IniHelper.php | 62 + composer/src/Composer/Util/Loop.php | 125 + .../src/Composer/Util/MetadataMinifier.php | 22 + composer/src/Composer/Util/NoProxyPattern.php | 412 ++ composer/src/Composer/Util/PackageInfo.php | 33 + composer/src/Composer/Util/PackageSorter.php | 140 + composer/src/Composer/Util/Perforce.php | 623 +++ composer/src/Composer/Util/Platform.php | 285 ++ .../src/Composer/Util/ProcessExecutor.php | 480 +++ .../src/Composer/Util/RemoteFilesystem.php | 726 ++++ composer/src/Composer/Util/Silencer.php | 77 + .../Composer/Util/StreamContextFactory.php | 254 ++ composer/src/Composer/Util/Svn.php | 361 ++ composer/src/Composer/Util/SyncHelper.php | 65 + composer/src/Composer/Util/Tar.php | 59 + composer/src/Composer/Util/TlsHelper.php | 204 + composer/src/Composer/Util/Url.php | 124 + composer/src/Composer/Util/Zip.php | 101 + composer/src/bootstrap.php | 26 + composer/vendor/autoload.php | 25 + composer/vendor/composer/ClassLoader.php | 585 +++ .../vendor/composer/InstalledVersions.php | 352 ++ .../vendor/composer/autoload_classmap.php | 18 + composer/vendor/composer/autoload_files.php | 19 + .../vendor/composer/autoload_namespaces.php | 9 + composer/vendor/composer/autoload_psr4.php | 37 + composer/vendor/composer/autoload_real.php | 48 + composer/vendor/composer/autoload_static.php | 204 + composer/vendor/composer/ca-bundle/LICENSE | 21 + .../vendor/composer/ca-bundle/res/cacert.pem | 3372 +++++++++++++++ .../composer/ca-bundle/src/CaBundle.php | 431 ++ .../composer/class-map-generator/LICENSE | 21 + .../class-map-generator/src/ClassMap.php | 131 + .../src/ClassMapGenerator.php | 334 ++ .../class-map-generator/src/FileList.php | 42 + .../src/PhpFileCleaner.php | 247 ++ .../class-map-generator/src/PhpFileParser.php | 150 + composer/vendor/composer/installed.php | 281 ++ .../vendor/composer/metadata-minifier/LICENSE | 21 + .../src/MetadataMinifier.php | 89 + composer/vendor/composer/pcre/LICENSE | 21 + .../composer/pcre/src/MatchAllResult.php | 46 + .../pcre/src/MatchAllStrictGroupsResult.php | 46 + .../pcre/src/MatchAllWithOffsetsResult.php | 48 + .../vendor/composer/pcre/src/MatchResult.php | 39 + .../pcre/src/MatchStrictGroupsResult.php | 39 + .../pcre/src/MatchWithOffsetsResult.php | 41 + .../composer/pcre/src/PcreException.php | 60 + composer/vendor/composer/pcre/src/Preg.php | 454 ++ composer/vendor/composer/pcre/src/Regex.php | 159 + .../composer/pcre/src/ReplaceResult.php | 43 + .../pcre/src/UnexpectedNullMatchException.php | 20 + composer/vendor/composer/semver/LICENSE | 21 + .../vendor/composer/semver/src/Comparator.php | 113 + .../composer/semver/src/CompilingMatcher.php | 94 + .../composer/semver/src/Constraint/Bound.php | 122 + .../semver/src/Constraint/Constraint.php | 435 ++ .../src/Constraint/ConstraintInterface.php | 75 + .../src/Constraint/MatchAllConstraint.php | 85 + .../src/Constraint/MatchNoneConstraint.php | 83 + .../semver/src/Constraint/MultiConstraint.php | 325 ++ .../vendor/composer/semver/src/Interval.php | 98 + .../vendor/composer/semver/src/Intervals.php | 478 +++ .../vendor/composer/semver/src/Semver.php | 129 + .../composer/semver/src/VersionParser.php | 586 +++ .../vendor/composer/spdx-licenses/LICENSE | 21 + .../spdx-licenses/res/spdx-exceptions.json | 125 + .../spdx-licenses/res/spdx-licenses.json | 2447 +++++++++++ .../spdx-licenses/src/SpdxLicenses.php | 357 ++ .../vendor/composer/xdebug-handler/LICENSE | 23 + .../composer/xdebug-handler/src/PhpConfig.php | 91 + .../composer/xdebug-handler/src/Process.php | 118 + .../composer/xdebug-handler/src/Status.php | 203 + .../xdebug-handler/src/XdebugHandler.php | 668 +++ .../vendor/justinrainbow/json-schema/LICENSE | 23 + .../JsonSchema/Constraints/BaseConstraint.php | 148 + .../Constraints/CollectionConstraint.php | 121 + .../src/JsonSchema/Constraints/Constraint.php | 218 + .../Constraints/ConstraintInterface.php | 65 + .../JsonSchema/Constraints/EnumConstraint.php | 54 + .../src/JsonSchema/Constraints/Factory.php | 220 + .../Constraints/FormatConstraint.php | 214 + .../Constraints/NumberConstraint.php | 81 + .../Constraints/ObjectConstraint.php | 192 + .../Constraints/SchemaConstraint.php | 94 + .../Constraints/StringConstraint.php | 60 + .../Constraints/TypeCheck/LooseTypeCheck.php | 68 + .../Constraints/TypeCheck/StrictTypeCheck.php | 40 + .../TypeCheck/TypeCheckInterface.php | 18 + .../JsonSchema/Constraints/TypeConstraint.php | 261 ++ .../Constraints/UndefinedConstraint.php | 419 ++ .../src/JsonSchema/Entity/JsonPointer.php | 161 + .../Exception/ExceptionInterface.php | 7 + .../Exception/InvalidArgumentException.php | 17 + .../Exception/InvalidConfigException.php | 17 + .../Exception/InvalidSchemaException.php | 17 + .../InvalidSchemaMediaTypeException.php | 17 + .../Exception/InvalidSourceUriException.php | 17 + .../Exception/JsonDecodingException.php | 40 + .../Exception/ResourceNotFoundException.php | 17 + .../JsonSchema/Exception/RuntimeException.php | 17 + .../UnresolvableJsonPointerException.php | 19 + .../Exception/UriResolverException.php | 17 + .../Exception/ValidationException.php | 14 + .../JsonSchema/Iterator/ObjectIterator.php | 149 + .../json-schema/src/JsonSchema/Rfc3339.php | 30 + .../src/JsonSchema/SchemaStorage.php | 169 + .../src/JsonSchema/SchemaStorageInterface.php | 41 + .../Uri/Retrievers/AbstractRetriever.php | 34 + .../src/JsonSchema/Uri/Retrievers/Curl.php | 83 + .../Uri/Retrievers/FileGetContents.php | 93 + .../Uri/Retrievers/PredefinedArray.php | 56 + .../Uri/Retrievers/UriRetrieverInterface.php | 36 + .../src/JsonSchema/Uri/UriResolver.php | 175 + .../src/JsonSchema/Uri/UriRetriever.php | 349 ++ .../src/JsonSchema/UriResolverInterface.php | 26 + .../src/JsonSchema/UriRetrieverInterface.php | 26 + .../json-schema/src/JsonSchema/Validator.php | 88 + composer/vendor/psr/container/LICENSE | 23 + .../src/ContainerExceptionInterface.php | 10 + .../psr/container/src/ContainerInterface.php | 36 + .../src/NotFoundExceptionInterface.php | 10 + composer/vendor/psr/log/LICENSE | 21 + .../vendor/psr/log/Psr/Log/AbstractLogger.php | 128 + .../log/Psr/Log/InvalidArgumentException.php | 7 + composer/vendor/psr/log/Psr/Log/LogLevel.php | 18 + .../psr/log/Psr/Log/LoggerAwareInterface.php | 18 + .../psr/log/Psr/Log/LoggerAwareTrait.php | 26 + .../psr/log/Psr/Log/LoggerInterface.php | 125 + .../vendor/psr/log/Psr/Log/LoggerTrait.php | 142 + .../vendor/psr/log/Psr/Log/NullLogger.php | 30 + .../vendor/psr/log/Psr/Log/Test/DummyTest.php | 18 + .../log/Psr/Log/Test/LoggerInterfaceTest.php | 138 + .../psr/log/Psr/Log/Test/TestLogger.php | 147 + composer/vendor/react/promise/LICENSE | 26 + .../src/CancellablePromiseInterface.php | 17 + .../react/promise/src/CancellationQueue.php | 55 + .../vendor/react/promise/src/Deferred.php | 65 + .../promise/src/Exception/LengthException.php | 7 + .../promise/src/ExtendedPromiseInterface.php | 98 + .../react/promise/src/FulfilledPromise.php | 71 + .../vendor/react/promise/src/LazyPromise.php | 66 + composer/vendor/react/promise/src/Promise.php | 256 ++ .../react/promise/src/PromiseInterface.php | 41 + .../react/promise/src/PromisorInterface.php | 13 + .../react/promise/src/RejectedPromise.php | 79 + .../src/UnhandledRejectionException.php | 31 + .../vendor/react/promise/src/functions.php | 407 ++ .../react/promise/src/functions_include.php | 5 + composer/vendor/seld/jsonlint/LICENSE | 21 + .../Seld/JsonLint/DuplicateKeyException.php | 48 + .../jsonlint/src/Seld/JsonLint/JsonParser.php | 584 +++ .../seld/jsonlint/src/Seld/JsonLint/Lexer.php | 257 ++ .../src/Seld/JsonLint/ParsingException.php | 38 + .../jsonlint/src/Seld/JsonLint/Undefined.php | 16 + composer/vendor/seld/phar-utils/LICENSE | 21 + .../vendor/seld/phar-utils/src/Linter.php | 115 + .../vendor/seld/phar-utils/src/Timestamps.php | 196 + composer/vendor/seld/signal-handler/LICENSE | 21 + .../seld/signal-handler/src/SignalHandler.php | 567 +++ .../vendor/symfony/console/Application.php | 1301 ++++++ .../symfony/console/Attribute/AsCommand.php | 39 + .../console/CI/GithubActionReporter.php | 99 + composer/vendor/symfony/console/Color.php | 180 + .../symfony/console/Command/Command.php | 710 ++++ .../console/Command/CompleteCommand.php | 205 + .../console/Command/DumpCompletionCommand.php | 139 + .../symfony/console/Command/HelpCommand.php | 101 + .../symfony/console/Command/LazyCommand.php | 218 + .../symfony/console/Command/ListCommand.php | 95 + .../symfony/console/Command/LockableTrait.php | 69 + .../Command/SignalableCommandInterface.php | 30 + .../CommandLoader/CommandLoaderInterface.php | 42 + .../CommandLoader/ContainerCommandLoader.php | 63 + .../CommandLoader/FactoryCommandLoader.php | 62 + .../console/Completion/CompletionInput.php | 249 ++ .../Completion/CompletionSuggestions.php | 99 + .../Output/BashCompletionOutput.php | 33 + .../Output/CompletionOutputInterface.php | 25 + .../symfony/console/Completion/Suggestion.php | 37 + .../vendor/symfony/console/ConsoleEvents.php | 72 + composer/vendor/symfony/console/Cursor.php | 207 + .../AddConsoleCommandPass.php | 148 + .../Descriptor/ApplicationDescription.php | 143 + .../symfony/console/Descriptor/Descriptor.php | 94 + .../Descriptor/DescriptorInterface.php | 24 + .../console/Descriptor/JsonDescriptor.php | 181 + .../console/Descriptor/MarkdownDescriptor.php | 206 + .../console/Descriptor/TextDescriptor.php | 341 ++ .../console/Descriptor/XmlDescriptor.php | 247 ++ .../console/Event/ConsoleCommandEvent.php | 51 + .../console/Event/ConsoleErrorEvent.php | 58 + .../symfony/console/Event/ConsoleEvent.php | 67 + .../console/Event/ConsoleSignalEvent.php | 35 + .../console/Event/ConsoleTerminateEvent.php | 43 + .../console/EventListener/ErrorListener.php | 95 + .../Exception/CommandNotFoundException.php | 43 + .../console/Exception/ExceptionInterface.php | 21 + .../Exception/InvalidArgumentException.php | 19 + .../Exception/InvalidOptionException.php | 21 + .../console/Exception/LogicException.php | 19 + .../Exception/MissingInputException.php | 21 + .../Exception/NamespaceNotFoundException.php | 21 + .../console/Exception/RuntimeException.php | 19 + .../console/Formatter/NullOutputFormatter.php | 69 + .../Formatter/NullOutputFormatterStyle.php | 66 + .../console/Formatter/OutputFormatter.php | 285 ++ .../Formatter/OutputFormatterInterface.php | 60 + .../Formatter/OutputFormatterStyle.php | 108 + .../OutputFormatterStyleInterface.php | 52 + .../Formatter/OutputFormatterStyleStack.php | 110 + .../WrappableOutputFormatterInterface.php | 25 + .../console/Helper/DebugFormatterHelper.php | 107 + .../console/Helper/DescriptorHelper.php | 92 + .../vendor/symfony/console/Helper/Dumper.php | 64 + .../console/Helper/FormatterHelper.php | 92 + .../vendor/symfony/console/Helper/Helper.php | 180 + .../console/Helper/HelperInterface.php | 39 + .../symfony/console/Helper/HelperSet.php | 108 + .../console/Helper/InputAwareHelper.php | 33 + .../symfony/console/Helper/ProcessHelper.php | 144 + .../symfony/console/Helper/ProgressBar.php | 609 +++ .../console/Helper/ProgressIndicator.php | 249 ++ .../symfony/console/Helper/QuestionHelper.php | 616 +++ .../console/Helper/SymfonyQuestionHelper.php | 109 + .../vendor/symfony/console/Helper/Table.php | 915 ++++ .../symfony/console/Helper/TableCell.php | 78 + .../symfony/console/Helper/TableCellStyle.php | 89 + .../symfony/console/Helper/TableRows.php | 30 + .../symfony/console/Helper/TableSeparator.php | 25 + .../symfony/console/Helper/TableStyle.php | 376 ++ .../symfony/console/Input/ArgvInput.php | 378 ++ .../symfony/console/Input/ArrayInput.php | 210 + .../vendor/symfony/console/Input/Input.php | 213 + .../symfony/console/Input/InputArgument.php | 129 + .../console/Input/InputAwareInterface.php | 26 + .../symfony/console/Input/InputDefinition.php | 424 ++ .../symfony/console/Input/InputInterface.php | 151 + .../symfony/console/Input/InputOption.php | 231 ++ .../Input/StreamableInputInterface.php | 37 + .../symfony/console/Input/StringInput.php | 84 + composer/vendor/symfony/console/LICENSE | 21 + .../symfony/console/Logger/ConsoleLogger.php | 126 + .../symfony/console/Output/BufferedOutput.php | 45 + .../symfony/console/Output/ConsoleOutput.php | 172 + .../console/Output/ConsoleOutputInterface.php | 32 + .../console/Output/ConsoleSectionOutput.php | 143 + .../symfony/console/Output/NullOutput.php | 128 + .../vendor/symfony/console/Output/Output.php | 174 + .../console/Output/OutputInterface.php | 110 + .../symfony/console/Output/StreamOutput.php | 115 + .../console/Output/TrimmedBufferOutput.php | 63 + .../console/Question/ChoiceQuestion.php | 183 + .../console/Question/ConfirmationQuestion.php | 57 + .../symfony/console/Question/Question.php | 299 ++ .../console/Resources/bin/hiddeninput.exe | Bin 0 -> 9216 bytes .../symfony/console/Resources/completion.bash | 84 + .../console/SignalRegistry/SignalRegistry.php | 65 + .../console/SingleCommandApplication.php | 72 + .../symfony/console/Style/OutputStyle.php | 153 + .../symfony/console/Style/StyleInterface.php | 132 + .../symfony/console/Style/SymfonyStyle.php | 518 +++ composer/vendor/symfony/console/Terminal.php | 172 + .../console/Tester/ApplicationTester.php | 85 + .../Tester/CommandCompletionTester.php | 56 + .../symfony/console/Tester/CommandTester.php | 76 + .../Tester/Constraint/CommandIsSuccessful.php | 55 + .../symfony/console/Tester/TesterTrait.php | 197 + .../symfony/deprecation-contracts/LICENSE | 21 + .../deprecation-contracts/function.php | 27 + .../Exception/ExceptionInterface.php | 21 + .../Exception/FileNotFoundException.php | 34 + .../filesystem/Exception/IOException.php | 39 + .../Exception/IOExceptionInterface.php | 27 + .../Exception/InvalidArgumentException.php | 19 + .../filesystem/Exception/RuntimeException.php | 19 + .../vendor/symfony/filesystem/Filesystem.php | 769 ++++ composer/vendor/symfony/filesystem/LICENSE | 21 + composer/vendor/symfony/filesystem/Path.php | 819 ++++ .../symfony/finder/Comparator/Comparator.php | 117 + .../finder/Comparator/DateComparator.php | 50 + .../finder/Comparator/NumberComparator.php | 78 + .../Exception/AccessDeniedException.php | 19 + .../Exception/DirectoryNotFoundException.php | 19 + composer/vendor/symfony/finder/Finder.php | 806 ++++ composer/vendor/symfony/finder/Gitignore.php | 93 + composer/vendor/symfony/finder/Glob.php | 111 + .../finder/Iterator/CustomFilterIterator.php | 64 + .../Iterator/DateRangeFilterIterator.php | 61 + .../Iterator/DepthRangeFilterIterator.php | 51 + .../ExcludeDirectoryFilterIterator.php | 96 + .../Iterator/FileTypeFilterIterator.php | 56 + .../Iterator/FilecontentFilterIterator.php | 61 + .../Iterator/FilenameFilterIterator.php | 50 + .../symfony/finder/Iterator/LazyIterator.php | 32 + .../Iterator/MultiplePcreFilterIterator.php | 117 + .../finder/Iterator/PathFilterIterator.php | 59 + .../Iterator/RecursiveDirectoryIterator.php | 168 + .../Iterator/SizeRangeFilterIterator.php | 60 + .../finder/Iterator/SortableIterator.php | 104 + .../Iterator/VcsIgnoredFilterIterator.php | 151 + composer/vendor/symfony/finder/LICENSE | 21 + .../vendor/symfony/finder/SplFileInfo.php | 88 + .../vendor/symfony/polyfill-ctype/Ctype.php | 232 ++ .../vendor/symfony/polyfill-ctype/LICENSE | 21 + .../symfony/polyfill-ctype/bootstrap.php | 50 + .../symfony/polyfill-ctype/bootstrap80.php | 46 + .../polyfill-intl-grapheme/Grapheme.php | 247 ++ .../symfony/polyfill-intl-grapheme/LICENSE | 21 + .../polyfill-intl-grapheme/bootstrap.php | 58 + .../polyfill-intl-grapheme/bootstrap80.php | 50 + .../symfony/polyfill-intl-normalizer/LICENSE | 21 + .../polyfill-intl-normalizer/Normalizer.php | 310 ++ .../Resources/stubs/Normalizer.php | 17 + .../unidata/canonicalComposition.php | 945 +++++ .../unidata/canonicalDecomposition.php | 2065 +++++++++ .../Resources/unidata/combiningClass.php | 876 ++++ .../unidata/compatibilityDecomposition.php | 3695 +++++++++++++++++ .../polyfill-intl-normalizer/bootstrap.php | 23 + .../polyfill-intl-normalizer/bootstrap80.php | 19 + .../vendor/symfony/polyfill-mbstring/LICENSE | 21 + .../symfony/polyfill-mbstring/Mbstring.php | 874 ++++ .../Resources/unidata/lowerCase.php | 1397 +++++++ .../Resources/unidata/titleCaseRegexp.php | 5 + .../Resources/unidata/upperCase.php | 1489 +++++++ .../symfony/polyfill-mbstring/bootstrap.php | 147 + .../symfony/polyfill-mbstring/bootstrap80.php | 143 + .../vendor/symfony/polyfill-php73/LICENSE | 21 + .../vendor/symfony/polyfill-php73/Php73.php | 43 + .../Resources/stubs/JsonException.php | 16 + .../symfony/polyfill-php73/bootstrap.php | 31 + .../vendor/symfony/polyfill-php80/LICENSE | 21 + .../vendor/symfony/polyfill-php80/Php80.php | 115 + .../symfony/polyfill-php80/PhpToken.php | 103 + .../Resources/stubs/Attribute.php | 31 + .../Resources/stubs/PhpToken.php | 16 + .../Resources/stubs/Stringable.php | 20 + .../Resources/stubs/UnhandledMatchError.php | 16 + .../Resources/stubs/ValueError.php | 16 + .../symfony/polyfill-php80/bootstrap.php | 42 + .../vendor/symfony/polyfill-php81/LICENSE | 21 + .../vendor/symfony/polyfill-php81/Php81.php | 37 + .../Resources/stubs/ReturnTypeWillChange.php | 20 + .../symfony/polyfill-php81/bootstrap.php | 28 + .../process/Exception/ExceptionInterface.php | 21 + .../Exception/InvalidArgumentException.php | 21 + .../process/Exception/LogicException.php | 21 + .../Exception/ProcessFailedException.php | 54 + .../Exception/ProcessSignaledException.php | 41 + .../Exception/ProcessTimedOutException.php | 69 + .../process/Exception/RuntimeException.php | 21 + .../symfony/process/ExecutableFinder.php | 86 + .../vendor/symfony/process/InputStream.php | 96 + composer/vendor/symfony/process/LICENSE | 21 + .../symfony/process/PhpExecutableFinder.php | 103 + .../vendor/symfony/process/PhpProcess.php | 72 + .../symfony/process/Pipes/AbstractPipes.php | 180 + .../symfony/process/Pipes/PipesInterface.php | 61 + .../symfony/process/Pipes/UnixPipes.php | 163 + .../symfony/process/Pipes/WindowsPipes.php | 204 + composer/vendor/symfony/process/Process.php | 1652 ++++++++ .../vendor/symfony/process/ProcessUtils.php | 69 + .../service-contracts/Attribute/Required.php | 25 + .../Attribute/SubscribedService.php | 33 + .../vendor/symfony/service-contracts/LICENSE | 21 + .../service-contracts/ResetInterface.php | 30 + .../service-contracts/ServiceLocatorTrait.php | 128 + .../ServiceProviderInterface.php | 36 + .../ServiceSubscriberInterface.php | 53 + .../ServiceSubscriberTrait.php | 109 + .../Test/ServiceLocatorTest.php | 95 + .../vendor/symfony/string/AbstractString.php | 795 ++++ .../symfony/string/AbstractUnicodeString.php | 623 +++ composer/vendor/symfony/string/ByteString.php | 509 +++ .../vendor/symfony/string/CodePointString.php | 270 ++ .../string/Exception/ExceptionInterface.php | 16 + .../Exception/InvalidArgumentException.php | 16 + .../string/Exception/RuntimeException.php | 16 + .../string/Inflector/EnglishInflector.php | 511 +++ .../string/Inflector/FrenchInflector.php | 157 + .../string/Inflector/InflectorInterface.php | 33 + composer/vendor/symfony/string/LICENSE | 21 + composer/vendor/symfony/string/LazyString.php | 164 + .../Resources/data/wcswidth_table_wide.php | 1143 +++++ .../Resources/data/wcswidth_table_zero.php | 1415 +++++++ .../symfony/string/Resources/functions.php | 38 + .../symfony/string/Slugger/AsciiSlugger.php | 183 + .../string/Slugger/SluggerInterface.php | 27 + .../vendor/symfony/string/UnicodeString.php | 377 ++ .../build/dir017/.box_dump/.box_configuration | 221 + fixtures/build/dir017/.gitignore | 2 + fixtures/build/dir017/box.json.dist | 1 + fixtures/build/dir017/composer.json | 15 + fixtures/build/dir017/composer.lock | 124 + fixtures/build/dir017/expected-output | 1 + fixtures/build/dir017/index.php | 15 + src/Composer/ComposerFile.php | 25 +- src/Composer/ComposerFiles.php | 18 +- src/Composer/InstalledJsonFile.php | 51 + src/Configuration/Configuration.php | 17 + tests/Composer/ComposerFileAssertions.php | 13 + tests/Composer/ComposerFilesTest.php | 21 +- tests/Composer/InstalledJsonFileTest.php | 15 + 736 files changed, 136482 insertions(+), 15 deletions(-) create mode 100644 Box54346/.box/.requirements.php create mode 100644 Box54346/.box/bin/check-requirements.php create mode 100644 Box54346/.box/src/Checker.php create mode 100644 Box54346/.box/src/IO.php create mode 100644 Box54346/.box/src/IsExtensionConflictFulfilled.php create mode 100644 Box54346/.box/src/IsExtensionFulfilled.php create mode 100644 Box54346/.box/src/IsFulfilled.php create mode 100644 Box54346/.box/src/IsPhpVersionFulfilled.php create mode 100644 Box54346/.box/src/Printer.php create mode 100644 Box54346/.box/src/Requirement.php create mode 100644 Box54346/.box/src/RequirementCollection.php create mode 100644 Box54346/.box/src/Terminal.php create mode 100644 Box54346/.box/vendor/autoload.php create mode 100644 Box54346/.box/vendor/composer/ClassLoader.php create mode 100644 Box54346/.box/vendor/composer/InstalledVersions.php create mode 100644 Box54346/.box/vendor/composer/LICENSE create mode 100644 Box54346/.box/vendor/composer/autoload_classmap.php create mode 100644 Box54346/.box/vendor/composer/autoload_namespaces.php create mode 100644 Box54346/.box/vendor/composer/autoload_psr4.php create mode 100644 Box54346/.box/vendor/composer/autoload_real.php create mode 100644 Box54346/.box/vendor/composer/autoload_static.php create mode 100644 Box54346/.box/vendor/composer/installed.php create mode 100644 Box54346/.box/vendor/composer/semver/LICENSE create mode 100644 Box54346/.box/vendor/composer/semver/src/Comparator.php create mode 100644 Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/MatchAllConstraint.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Interval.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Intervals.php create mode 100644 Box54346/.box/vendor/composer/semver/src/Semver.php create mode 100644 Box54346/.box/vendor/composer/semver/src/VersionParser.php create mode 100644 Box54346/box.json.dist create mode 100644 Box54346/composer.json create mode 100644 Box54346/composer.lock create mode 100644 Box54346/expected-output create mode 100644 Box54346/index.php create mode 100644 Box54346/installed_after.json create mode 100644 Box54346/installed_after.php create mode 100644 Box54346/vendor/autoload.php create mode 100755 Box54346/vendor/bin/phpstan create mode 100755 Box54346/vendor/bin/phpstan.phar create mode 100644 Box54346/vendor/composer/ClassLoader.php create mode 100644 Box54346/vendor/composer/InstalledVersions.php create mode 100644 Box54346/vendor/composer/LICENSE create mode 100644 Box54346/vendor/composer/autoload_classmap.php create mode 100644 Box54346/vendor/composer/autoload_namespaces.php create mode 100644 Box54346/vendor/composer/autoload_psr4.php create mode 100644 Box54346/vendor/composer/autoload_real.php create mode 100644 Box54346/vendor/composer/autoload_static.php create mode 100644 Box54346/vendor/composer/installed.json create mode 100644 Box54346/vendor/composer/installed.php create mode 100644 Box54346/vendor/composer/platform_check.php create mode 100644 Box54346/vendor/phpstan/extension-installer/LICENSE create mode 100644 Box54346/vendor/phpstan/extension-installer/README.md create mode 100644 Box54346/vendor/phpstan/extension-installer/build-cs/composer.json create mode 100644 Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock create mode 100644 Box54346/vendor/phpstan/extension-installer/composer.json create mode 100644 Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php create mode 100644 Box54346/vendor/phpstan/extension-installer/src/Plugin.php create mode 100644 Box54346/vendor/phpstan/phpstan/LICENSE create mode 100644 Box54346/vendor/phpstan/phpstan/README.md create mode 100644 Box54346/vendor/phpstan/phpstan/bootstrap.php create mode 100644 Box54346/vendor/phpstan/phpstan/composer.json create mode 100644 Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon create mode 100755 Box54346/vendor/phpstan/phpstan/phpstan create mode 100755 Box54346/vendor/phpstan/phpstan/phpstan.phar create mode 100644 Box54346/vendor/phpstan/phpstan/phpstan.phar.asc create mode 100644 composer/LICENSE create mode 100644 composer/bin/composer create mode 100644 composer/res/composer-repository-schema.json create mode 100644 composer/res/composer-schema.json create mode 100644 composer/src/Composer/Advisory/Auditor.php create mode 100644 composer/src/Composer/Advisory/PartialSecurityAdvisory.php create mode 100644 composer/src/Composer/Advisory/SecurityAdvisory.php create mode 100644 composer/src/Composer/Autoload/AutoloadGenerator.php create mode 100644 composer/src/Composer/Autoload/ClassLoader.php create mode 100644 composer/src/Composer/Autoload/ClassMapGenerator.php create mode 100644 composer/src/Composer/Autoload/PhpFileCleaner.php create mode 100644 composer/src/Composer/Cache.php create mode 100644 composer/src/Composer/Command/AboutCommand.php create mode 100644 composer/src/Composer/Command/ArchiveCommand.php create mode 100644 composer/src/Composer/Command/AuditCommand.php create mode 100644 composer/src/Composer/Command/BaseCommand.php create mode 100644 composer/src/Composer/Command/BaseDependencyCommand.php create mode 100644 composer/src/Composer/Command/BumpCommand.php create mode 100644 composer/src/Composer/Command/CheckPlatformReqsCommand.php create mode 100644 composer/src/Composer/Command/ClearCacheCommand.php create mode 100644 composer/src/Composer/Command/CompletionTrait.php create mode 100644 composer/src/Composer/Command/ConfigCommand.php create mode 100644 composer/src/Composer/Command/CreateProjectCommand.php create mode 100644 composer/src/Composer/Command/DependsCommand.php create mode 100644 composer/src/Composer/Command/DiagnoseCommand.php create mode 100644 composer/src/Composer/Command/DumpAutoloadCommand.php create mode 100644 composer/src/Composer/Command/ExecCommand.php create mode 100644 composer/src/Composer/Command/FundCommand.php create mode 100644 composer/src/Composer/Command/GlobalCommand.php create mode 100644 composer/src/Composer/Command/HomeCommand.php create mode 100644 composer/src/Composer/Command/InitCommand.php create mode 100644 composer/src/Composer/Command/InstallCommand.php create mode 100644 composer/src/Composer/Command/LicensesCommand.php create mode 100644 composer/src/Composer/Command/OutdatedCommand.php create mode 100644 composer/src/Composer/Command/PackageDiscoveryTrait.php create mode 100644 composer/src/Composer/Command/ProhibitsCommand.php create mode 100644 composer/src/Composer/Command/ReinstallCommand.php create mode 100644 composer/src/Composer/Command/RemoveCommand.php create mode 100644 composer/src/Composer/Command/RequireCommand.php create mode 100644 composer/src/Composer/Command/RunScriptCommand.php create mode 100644 composer/src/Composer/Command/ScriptAliasCommand.php create mode 100644 composer/src/Composer/Command/SearchCommand.php create mode 100644 composer/src/Composer/Command/SelfUpdateCommand.php create mode 100644 composer/src/Composer/Command/ShowCommand.php create mode 100644 composer/src/Composer/Command/StatusCommand.php create mode 100644 composer/src/Composer/Command/SuggestsCommand.php create mode 100644 composer/src/Composer/Command/UpdateCommand.php create mode 100644 composer/src/Composer/Command/ValidateCommand.php create mode 100644 composer/src/Composer/Composer.php create mode 100644 composer/src/Composer/Config.php create mode 100644 composer/src/Composer/Config/ConfigSourceInterface.php create mode 100644 composer/src/Composer/Config/JsonConfigSource.php create mode 100644 composer/src/Composer/Console/Application.php create mode 100644 composer/src/Composer/Console/GithubActionError.php create mode 100644 composer/src/Composer/Console/HtmlOutputFormatter.php create mode 100644 composer/src/Composer/Console/Input/InputArgument.php create mode 100644 composer/src/Composer/Console/Input/InputOption.php create mode 100644 composer/src/Composer/DependencyResolver/Decisions.php create mode 100644 composer/src/Composer/DependencyResolver/DefaultPolicy.php create mode 100644 composer/src/Composer/DependencyResolver/GenericRule.php create mode 100644 composer/src/Composer/DependencyResolver/LocalRepoTransaction.php create mode 100644 composer/src/Composer/DependencyResolver/LockTransaction.php create mode 100644 composer/src/Composer/DependencyResolver/MultiConflictRule.php create mode 100644 composer/src/Composer/DependencyResolver/Operation/InstallOperation.php create mode 100644 composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php create mode 100644 composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php create mode 100644 composer/src/Composer/DependencyResolver/Operation/OperationInterface.php create mode 100644 composer/src/Composer/DependencyResolver/Operation/SolverOperation.php create mode 100644 composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php create mode 100644 composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php create mode 100644 composer/src/Composer/DependencyResolver/PolicyInterface.php create mode 100644 composer/src/Composer/DependencyResolver/Pool.php create mode 100644 composer/src/Composer/DependencyResolver/PoolBuilder.php create mode 100644 composer/src/Composer/DependencyResolver/PoolOptimizer.php create mode 100644 composer/src/Composer/DependencyResolver/Problem.php create mode 100644 composer/src/Composer/DependencyResolver/Request.php create mode 100644 composer/src/Composer/DependencyResolver/Rule.php create mode 100644 composer/src/Composer/DependencyResolver/Rule2Literals.php create mode 100644 composer/src/Composer/DependencyResolver/RuleSet.php create mode 100644 composer/src/Composer/DependencyResolver/RuleSetGenerator.php create mode 100644 composer/src/Composer/DependencyResolver/RuleSetIterator.php create mode 100644 composer/src/Composer/DependencyResolver/RuleWatchChain.php create mode 100644 composer/src/Composer/DependencyResolver/RuleWatchGraph.php create mode 100644 composer/src/Composer/DependencyResolver/RuleWatchNode.php create mode 100644 composer/src/Composer/DependencyResolver/Solver.php create mode 100644 composer/src/Composer/DependencyResolver/SolverBugException.php create mode 100644 composer/src/Composer/DependencyResolver/SolverProblemsException.php create mode 100644 composer/src/Composer/DependencyResolver/Transaction.php create mode 100644 composer/src/Composer/Downloader/ArchiveDownloader.php create mode 100644 composer/src/Composer/Downloader/ChangeReportInterface.php create mode 100644 composer/src/Composer/Downloader/DownloadManager.php create mode 100644 composer/src/Composer/Downloader/DownloaderInterface.php create mode 100644 composer/src/Composer/Downloader/DvcsDownloaderInterface.php create mode 100644 composer/src/Composer/Downloader/FileDownloader.php create mode 100644 composer/src/Composer/Downloader/FilesystemException.php create mode 100644 composer/src/Composer/Downloader/FossilDownloader.php create mode 100644 composer/src/Composer/Downloader/GitDownloader.php create mode 100644 composer/src/Composer/Downloader/GzipDownloader.php create mode 100644 composer/src/Composer/Downloader/HgDownloader.php create mode 100644 composer/src/Composer/Downloader/MaxFileSizeExceededException.php create mode 100644 composer/src/Composer/Downloader/PathDownloader.php create mode 100644 composer/src/Composer/Downloader/PerforceDownloader.php create mode 100644 composer/src/Composer/Downloader/PharDownloader.php create mode 100644 composer/src/Composer/Downloader/RarDownloader.php create mode 100644 composer/src/Composer/Downloader/SvnDownloader.php create mode 100644 composer/src/Composer/Downloader/TarDownloader.php create mode 100644 composer/src/Composer/Downloader/TransportException.php create mode 100644 composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php create mode 100644 composer/src/Composer/Downloader/VcsDownloader.php create mode 100644 composer/src/Composer/Downloader/XzDownloader.php create mode 100644 composer/src/Composer/Downloader/ZipDownloader.php create mode 100644 composer/src/Composer/EventDispatcher/Event.php create mode 100644 composer/src/Composer/EventDispatcher/EventDispatcher.php create mode 100644 composer/src/Composer/EventDispatcher/EventSubscriberInterface.php create mode 100644 composer/src/Composer/EventDispatcher/ScriptExecutionException.php create mode 100644 composer/src/Composer/Exception/IrrecoverableDownloadException.php create mode 100644 composer/src/Composer/Exception/NoSslException.php create mode 100644 composer/src/Composer/Factory.php create mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php create mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreListPlatformRequirementFilter.php create mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php create mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterFactory.php create mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterInterface.php create mode 100644 composer/src/Composer/IO/BaseIO.php create mode 100644 composer/src/Composer/IO/BufferIO.php create mode 100644 composer/src/Composer/IO/ConsoleIO.php create mode 100644 composer/src/Composer/IO/IOInterface.php create mode 100644 composer/src/Composer/IO/NullIO.php create mode 100644 composer/src/Composer/InstalledVersions.php create mode 100644 composer/src/Composer/Installer.php create mode 100644 composer/src/Composer/Installer/BinaryInstaller.php create mode 100644 composer/src/Composer/Installer/BinaryPresenceInterface.php create mode 100644 composer/src/Composer/Installer/InstallationManager.php create mode 100644 composer/src/Composer/Installer/InstallerEvent.php create mode 100644 composer/src/Composer/Installer/InstallerEvents.php create mode 100644 composer/src/Composer/Installer/InstallerInterface.php create mode 100644 composer/src/Composer/Installer/LibraryInstaller.php create mode 100644 composer/src/Composer/Installer/MetapackageInstaller.php create mode 100644 composer/src/Composer/Installer/NoopInstaller.php create mode 100644 composer/src/Composer/Installer/PackageEvent.php create mode 100644 composer/src/Composer/Installer/PackageEvents.php create mode 100644 composer/src/Composer/Installer/PluginInstaller.php create mode 100644 composer/src/Composer/Installer/ProjectInstaller.php create mode 100644 composer/src/Composer/Installer/SuggestedPackagesReporter.php create mode 100644 composer/src/Composer/Json/JsonFile.php create mode 100644 composer/src/Composer/Json/JsonFormatter.php create mode 100644 composer/src/Composer/Json/JsonManipulator.php create mode 100644 composer/src/Composer/Json/JsonValidationException.php create mode 100644 composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php create mode 100644 composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php create mode 100644 composer/src/Composer/Package/AliasPackage.php create mode 100644 composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php create mode 100644 composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php create mode 100644 composer/src/Composer/Package/Archiver/ArchiveManager.php create mode 100644 composer/src/Composer/Package/Archiver/ArchiverInterface.php create mode 100644 composer/src/Composer/Package/Archiver/BaseExcludeFilter.php create mode 100644 composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php create mode 100644 composer/src/Composer/Package/Archiver/GitExcludeFilter.php create mode 100644 composer/src/Composer/Package/Archiver/PharArchiver.php create mode 100644 composer/src/Composer/Package/Archiver/ZipArchiver.php create mode 100644 composer/src/Composer/Package/BasePackage.php create mode 100644 composer/src/Composer/Package/Comparer/Comparer.php create mode 100644 composer/src/Composer/Package/CompleteAliasPackage.php create mode 100644 composer/src/Composer/Package/CompletePackage.php create mode 100644 composer/src/Composer/Package/CompletePackageInterface.php create mode 100644 composer/src/Composer/Package/Dumper/ArrayDumper.php create mode 100644 composer/src/Composer/Package/Link.php create mode 100644 composer/src/Composer/Package/Loader/ArrayLoader.php create mode 100644 composer/src/Composer/Package/Loader/InvalidPackageException.php create mode 100644 composer/src/Composer/Package/Loader/JsonLoader.php create mode 100644 composer/src/Composer/Package/Loader/LoaderInterface.php create mode 100644 composer/src/Composer/Package/Loader/RootPackageLoader.php create mode 100644 composer/src/Composer/Package/Loader/ValidatingArrayLoader.php create mode 100644 composer/src/Composer/Package/Locker.php create mode 100644 composer/src/Composer/Package/Package.php create mode 100644 composer/src/Composer/Package/PackageInterface.php create mode 100644 composer/src/Composer/Package/RootAliasPackage.php create mode 100644 composer/src/Composer/Package/RootPackage.php create mode 100644 composer/src/Composer/Package/RootPackageInterface.php create mode 100644 composer/src/Composer/Package/Version/StabilityFilter.php create mode 100644 composer/src/Composer/Package/Version/VersionBumper.php create mode 100644 composer/src/Composer/Package/Version/VersionGuesser.php create mode 100644 composer/src/Composer/Package/Version/VersionParser.php create mode 100644 composer/src/Composer/Package/Version/VersionSelector.php create mode 100644 composer/src/Composer/PartialComposer.php create mode 100644 composer/src/Composer/Platform/HhvmDetector.php create mode 100644 composer/src/Composer/Platform/Runtime.php create mode 100644 composer/src/Composer/Platform/Version.php create mode 100644 composer/src/Composer/Plugin/Capability/Capability.php create mode 100644 composer/src/Composer/Plugin/Capability/CommandProvider.php create mode 100644 composer/src/Composer/Plugin/Capable.php create mode 100644 composer/src/Composer/Plugin/CommandEvent.php create mode 100644 composer/src/Composer/Plugin/PluginBlockedException.php create mode 100644 composer/src/Composer/Plugin/PluginEvents.php create mode 100644 composer/src/Composer/Plugin/PluginInterface.php create mode 100644 composer/src/Composer/Plugin/PluginManager.php create mode 100644 composer/src/Composer/Plugin/PostFileDownloadEvent.php create mode 100644 composer/src/Composer/Plugin/PreCommandRunEvent.php create mode 100644 composer/src/Composer/Plugin/PreFileDownloadEvent.php create mode 100644 composer/src/Composer/Plugin/PrePoolCreateEvent.php create mode 100644 composer/src/Composer/Question/StrictConfirmationQuestion.php create mode 100644 composer/src/Composer/Repository/AdvisoryProviderInterface.php create mode 100644 composer/src/Composer/Repository/ArrayRepository.php create mode 100644 composer/src/Composer/Repository/ArtifactRepository.php create mode 100644 composer/src/Composer/Repository/CanonicalPackagesTrait.php create mode 100644 composer/src/Composer/Repository/ComposerRepository.php create mode 100644 composer/src/Composer/Repository/CompositeRepository.php create mode 100644 composer/src/Composer/Repository/ConfigurableRepositoryInterface.php create mode 100644 composer/src/Composer/Repository/FilesystemRepository.php create mode 100644 composer/src/Composer/Repository/FilterRepository.php create mode 100644 composer/src/Composer/Repository/InstalledArrayRepository.php create mode 100644 composer/src/Composer/Repository/InstalledFilesystemRepository.php create mode 100644 composer/src/Composer/Repository/InstalledRepository.php create mode 100644 composer/src/Composer/Repository/InstalledRepositoryInterface.php create mode 100644 composer/src/Composer/Repository/InvalidRepositoryException.php create mode 100644 composer/src/Composer/Repository/LockArrayRepository.php create mode 100644 composer/src/Composer/Repository/PackageRepository.php create mode 100644 composer/src/Composer/Repository/PathRepository.php create mode 100644 composer/src/Composer/Repository/PearRepository.php create mode 100644 composer/src/Composer/Repository/PlatformRepository.php create mode 100644 composer/src/Composer/Repository/RepositoryFactory.php create mode 100644 composer/src/Composer/Repository/RepositoryInterface.php create mode 100644 composer/src/Composer/Repository/RepositoryManager.php create mode 100644 composer/src/Composer/Repository/RepositorySecurityException.php create mode 100644 composer/src/Composer/Repository/RepositorySet.php create mode 100644 composer/src/Composer/Repository/RepositoryUtils.php create mode 100644 composer/src/Composer/Repository/RootPackageRepository.php create mode 100644 composer/src/Composer/Repository/Vcs/FossilDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/GitDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/GitHubDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/GitLabDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/HgDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/PerforceDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/SvnDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/VcsDriver.php create mode 100644 composer/src/Composer/Repository/Vcs/VcsDriverInterface.php create mode 100644 composer/src/Composer/Repository/VcsRepository.php create mode 100644 composer/src/Composer/Repository/VersionCacheInterface.php create mode 100644 composer/src/Composer/Repository/WritableArrayRepository.php create mode 100644 composer/src/Composer/Repository/WritableRepositoryInterface.php create mode 100644 composer/src/Composer/Script/Event.php create mode 100644 composer/src/Composer/Script/ScriptEvents.php create mode 100644 composer/src/Composer/SelfUpdate/Keys.php create mode 100644 composer/src/Composer/SelfUpdate/Versions.php create mode 100644 composer/src/Composer/Util/AuthHelper.php create mode 100644 composer/src/Composer/Util/Bitbucket.php create mode 100644 composer/src/Composer/Util/ComposerMirror.php create mode 100644 composer/src/Composer/Util/ConfigValidator.php create mode 100644 composer/src/Composer/Util/ErrorHandler.php create mode 100644 composer/src/Composer/Util/Filesystem.php create mode 100644 composer/src/Composer/Util/Git.php create mode 100644 composer/src/Composer/Util/GitHub.php create mode 100644 composer/src/Composer/Util/GitLab.php create mode 100644 composer/src/Composer/Util/Hg.php create mode 100644 composer/src/Composer/Util/Http/CurlDownloader.php create mode 100644 composer/src/Composer/Util/Http/CurlResponse.php create mode 100644 composer/src/Composer/Util/Http/ProxyHelper.php create mode 100644 composer/src/Composer/Util/Http/ProxyManager.php create mode 100644 composer/src/Composer/Util/Http/RequestProxy.php create mode 100644 composer/src/Composer/Util/Http/Response.php create mode 100644 composer/src/Composer/Util/HttpDownloader.php create mode 100644 composer/src/Composer/Util/IniHelper.php create mode 100644 composer/src/Composer/Util/Loop.php create mode 100644 composer/src/Composer/Util/MetadataMinifier.php create mode 100644 composer/src/Composer/Util/NoProxyPattern.php create mode 100644 composer/src/Composer/Util/PackageInfo.php create mode 100644 composer/src/Composer/Util/PackageSorter.php create mode 100644 composer/src/Composer/Util/Perforce.php create mode 100644 composer/src/Composer/Util/Platform.php create mode 100644 composer/src/Composer/Util/ProcessExecutor.php create mode 100644 composer/src/Composer/Util/RemoteFilesystem.php create mode 100644 composer/src/Composer/Util/Silencer.php create mode 100644 composer/src/Composer/Util/StreamContextFactory.php create mode 100644 composer/src/Composer/Util/Svn.php create mode 100644 composer/src/Composer/Util/SyncHelper.php create mode 100644 composer/src/Composer/Util/Tar.php create mode 100644 composer/src/Composer/Util/TlsHelper.php create mode 100644 composer/src/Composer/Util/Url.php create mode 100644 composer/src/Composer/Util/Zip.php create mode 100644 composer/src/bootstrap.php create mode 100644 composer/vendor/autoload.php create mode 100644 composer/vendor/composer/ClassLoader.php create mode 100644 composer/vendor/composer/InstalledVersions.php create mode 100644 composer/vendor/composer/autoload_classmap.php create mode 100644 composer/vendor/composer/autoload_files.php create mode 100644 composer/vendor/composer/autoload_namespaces.php create mode 100644 composer/vendor/composer/autoload_psr4.php create mode 100644 composer/vendor/composer/autoload_real.php create mode 100644 composer/vendor/composer/autoload_static.php create mode 100644 composer/vendor/composer/ca-bundle/LICENSE create mode 100644 composer/vendor/composer/ca-bundle/res/cacert.pem create mode 100644 composer/vendor/composer/ca-bundle/src/CaBundle.php create mode 100644 composer/vendor/composer/class-map-generator/LICENSE create mode 100644 composer/vendor/composer/class-map-generator/src/ClassMap.php create mode 100644 composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php create mode 100644 composer/vendor/composer/class-map-generator/src/FileList.php create mode 100644 composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php create mode 100644 composer/vendor/composer/class-map-generator/src/PhpFileParser.php create mode 100644 composer/vendor/composer/installed.php create mode 100644 composer/vendor/composer/metadata-minifier/LICENSE create mode 100644 composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php create mode 100644 composer/vendor/composer/pcre/LICENSE create mode 100644 composer/vendor/composer/pcre/src/MatchAllResult.php create mode 100644 composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php create mode 100644 composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php create mode 100644 composer/vendor/composer/pcre/src/MatchResult.php create mode 100644 composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php create mode 100644 composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php create mode 100644 composer/vendor/composer/pcre/src/PcreException.php create mode 100644 composer/vendor/composer/pcre/src/Preg.php create mode 100644 composer/vendor/composer/pcre/src/Regex.php create mode 100644 composer/vendor/composer/pcre/src/ReplaceResult.php create mode 100644 composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php create mode 100644 composer/vendor/composer/semver/LICENSE create mode 100644 composer/vendor/composer/semver/src/Comparator.php create mode 100644 composer/vendor/composer/semver/src/CompilingMatcher.php create mode 100644 composer/vendor/composer/semver/src/Constraint/Bound.php create mode 100644 composer/vendor/composer/semver/src/Constraint/Constraint.php create mode 100644 composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php create mode 100644 composer/vendor/composer/semver/src/Constraint/MatchAllConstraint.php create mode 100644 composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php create mode 100644 composer/vendor/composer/semver/src/Constraint/MultiConstraint.php create mode 100644 composer/vendor/composer/semver/src/Interval.php create mode 100644 composer/vendor/composer/semver/src/Intervals.php create mode 100644 composer/vendor/composer/semver/src/Semver.php create mode 100644 composer/vendor/composer/semver/src/VersionParser.php create mode 100644 composer/vendor/composer/spdx-licenses/LICENSE create mode 100644 composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json create mode 100644 composer/vendor/composer/spdx-licenses/res/spdx-licenses.json create mode 100644 composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php create mode 100644 composer/vendor/composer/xdebug-handler/LICENSE create mode 100644 composer/vendor/composer/xdebug-handler/src/PhpConfig.php create mode 100644 composer/vendor/composer/xdebug-handler/src/Process.php create mode 100644 composer/vendor/composer/xdebug-handler/src/Status.php create mode 100644 composer/vendor/composer/xdebug-handler/src/XdebugHandler.php create mode 100644 composer/vendor/justinrainbow/json-schema/LICENSE create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php create mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Validator.php create mode 100644 composer/vendor/psr/container/LICENSE create mode 100644 composer/vendor/psr/container/src/ContainerExceptionInterface.php create mode 100644 composer/vendor/psr/container/src/ContainerInterface.php create mode 100644 composer/vendor/psr/container/src/NotFoundExceptionInterface.php create mode 100644 composer/vendor/psr/log/LICENSE create mode 100644 composer/vendor/psr/log/Psr/Log/AbstractLogger.php create mode 100644 composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php create mode 100644 composer/vendor/psr/log/Psr/Log/LogLevel.php create mode 100644 composer/vendor/psr/log/Psr/Log/LoggerAwareInterface.php create mode 100644 composer/vendor/psr/log/Psr/Log/LoggerAwareTrait.php create mode 100644 composer/vendor/psr/log/Psr/Log/LoggerInterface.php create mode 100644 composer/vendor/psr/log/Psr/Log/LoggerTrait.php create mode 100644 composer/vendor/psr/log/Psr/Log/NullLogger.php create mode 100644 composer/vendor/psr/log/Psr/Log/Test/DummyTest.php create mode 100644 composer/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php create mode 100644 composer/vendor/psr/log/Psr/Log/Test/TestLogger.php create mode 100644 composer/vendor/react/promise/LICENSE create mode 100644 composer/vendor/react/promise/src/CancellablePromiseInterface.php create mode 100644 composer/vendor/react/promise/src/CancellationQueue.php create mode 100644 composer/vendor/react/promise/src/Deferred.php create mode 100644 composer/vendor/react/promise/src/Exception/LengthException.php create mode 100644 composer/vendor/react/promise/src/ExtendedPromiseInterface.php create mode 100644 composer/vendor/react/promise/src/FulfilledPromise.php create mode 100644 composer/vendor/react/promise/src/LazyPromise.php create mode 100644 composer/vendor/react/promise/src/Promise.php create mode 100644 composer/vendor/react/promise/src/PromiseInterface.php create mode 100644 composer/vendor/react/promise/src/PromisorInterface.php create mode 100644 composer/vendor/react/promise/src/RejectedPromise.php create mode 100644 composer/vendor/react/promise/src/UnhandledRejectionException.php create mode 100644 composer/vendor/react/promise/src/functions.php create mode 100644 composer/vendor/react/promise/src/functions_include.php create mode 100644 composer/vendor/seld/jsonlint/LICENSE create mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php create mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php create mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php create mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php create mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php create mode 100644 composer/vendor/seld/phar-utils/LICENSE create mode 100644 composer/vendor/seld/phar-utils/src/Linter.php create mode 100644 composer/vendor/seld/phar-utils/src/Timestamps.php create mode 100644 composer/vendor/seld/signal-handler/LICENSE create mode 100644 composer/vendor/seld/signal-handler/src/SignalHandler.php create mode 100644 composer/vendor/symfony/console/Application.php create mode 100644 composer/vendor/symfony/console/Attribute/AsCommand.php create mode 100644 composer/vendor/symfony/console/CI/GithubActionReporter.php create mode 100644 composer/vendor/symfony/console/Color.php create mode 100644 composer/vendor/symfony/console/Command/Command.php create mode 100644 composer/vendor/symfony/console/Command/CompleteCommand.php create mode 100644 composer/vendor/symfony/console/Command/DumpCompletionCommand.php create mode 100644 composer/vendor/symfony/console/Command/HelpCommand.php create mode 100644 composer/vendor/symfony/console/Command/LazyCommand.php create mode 100644 composer/vendor/symfony/console/Command/ListCommand.php create mode 100644 composer/vendor/symfony/console/Command/LockableTrait.php create mode 100644 composer/vendor/symfony/console/Command/SignalableCommandInterface.php create mode 100644 composer/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php create mode 100644 composer/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php create mode 100644 composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php create mode 100644 composer/vendor/symfony/console/Completion/CompletionInput.php create mode 100644 composer/vendor/symfony/console/Completion/CompletionSuggestions.php create mode 100644 composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php create mode 100644 composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php create mode 100644 composer/vendor/symfony/console/Completion/Suggestion.php create mode 100644 composer/vendor/symfony/console/ConsoleEvents.php create mode 100644 composer/vendor/symfony/console/Cursor.php create mode 100644 composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php create mode 100644 composer/vendor/symfony/console/Descriptor/ApplicationDescription.php create mode 100644 composer/vendor/symfony/console/Descriptor/Descriptor.php create mode 100644 composer/vendor/symfony/console/Descriptor/DescriptorInterface.php create mode 100644 composer/vendor/symfony/console/Descriptor/JsonDescriptor.php create mode 100644 composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php create mode 100644 composer/vendor/symfony/console/Descriptor/TextDescriptor.php create mode 100644 composer/vendor/symfony/console/Descriptor/XmlDescriptor.php create mode 100644 composer/vendor/symfony/console/Event/ConsoleCommandEvent.php create mode 100644 composer/vendor/symfony/console/Event/ConsoleErrorEvent.php create mode 100644 composer/vendor/symfony/console/Event/ConsoleEvent.php create mode 100644 composer/vendor/symfony/console/Event/ConsoleSignalEvent.php create mode 100644 composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php create mode 100644 composer/vendor/symfony/console/EventListener/ErrorListener.php create mode 100644 composer/vendor/symfony/console/Exception/CommandNotFoundException.php create mode 100644 composer/vendor/symfony/console/Exception/ExceptionInterface.php create mode 100644 composer/vendor/symfony/console/Exception/InvalidArgumentException.php create mode 100644 composer/vendor/symfony/console/Exception/InvalidOptionException.php create mode 100644 composer/vendor/symfony/console/Exception/LogicException.php create mode 100644 composer/vendor/symfony/console/Exception/MissingInputException.php create mode 100644 composer/vendor/symfony/console/Exception/NamespaceNotFoundException.php create mode 100644 composer/vendor/symfony/console/Exception/RuntimeException.php create mode 100644 composer/vendor/symfony/console/Formatter/NullOutputFormatter.php create mode 100644 composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php create mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatter.php create mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php create mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterStyle.php create mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php create mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php create mode 100644 composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php create mode 100644 composer/vendor/symfony/console/Helper/DebugFormatterHelper.php create mode 100644 composer/vendor/symfony/console/Helper/DescriptorHelper.php create mode 100644 composer/vendor/symfony/console/Helper/Dumper.php create mode 100644 composer/vendor/symfony/console/Helper/FormatterHelper.php create mode 100644 composer/vendor/symfony/console/Helper/Helper.php create mode 100644 composer/vendor/symfony/console/Helper/HelperInterface.php create mode 100644 composer/vendor/symfony/console/Helper/HelperSet.php create mode 100644 composer/vendor/symfony/console/Helper/InputAwareHelper.php create mode 100644 composer/vendor/symfony/console/Helper/ProcessHelper.php create mode 100644 composer/vendor/symfony/console/Helper/ProgressBar.php create mode 100644 composer/vendor/symfony/console/Helper/ProgressIndicator.php create mode 100644 composer/vendor/symfony/console/Helper/QuestionHelper.php create mode 100644 composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php create mode 100644 composer/vendor/symfony/console/Helper/Table.php create mode 100644 composer/vendor/symfony/console/Helper/TableCell.php create mode 100644 composer/vendor/symfony/console/Helper/TableCellStyle.php create mode 100644 composer/vendor/symfony/console/Helper/TableRows.php create mode 100644 composer/vendor/symfony/console/Helper/TableSeparator.php create mode 100644 composer/vendor/symfony/console/Helper/TableStyle.php create mode 100644 composer/vendor/symfony/console/Input/ArgvInput.php create mode 100644 composer/vendor/symfony/console/Input/ArrayInput.php create mode 100644 composer/vendor/symfony/console/Input/Input.php create mode 100644 composer/vendor/symfony/console/Input/InputArgument.php create mode 100644 composer/vendor/symfony/console/Input/InputAwareInterface.php create mode 100644 composer/vendor/symfony/console/Input/InputDefinition.php create mode 100644 composer/vendor/symfony/console/Input/InputInterface.php create mode 100644 composer/vendor/symfony/console/Input/InputOption.php create mode 100644 composer/vendor/symfony/console/Input/StreamableInputInterface.php create mode 100644 composer/vendor/symfony/console/Input/StringInput.php create mode 100644 composer/vendor/symfony/console/LICENSE create mode 100644 composer/vendor/symfony/console/Logger/ConsoleLogger.php create mode 100644 composer/vendor/symfony/console/Output/BufferedOutput.php create mode 100644 composer/vendor/symfony/console/Output/ConsoleOutput.php create mode 100644 composer/vendor/symfony/console/Output/ConsoleOutputInterface.php create mode 100644 composer/vendor/symfony/console/Output/ConsoleSectionOutput.php create mode 100644 composer/vendor/symfony/console/Output/NullOutput.php create mode 100644 composer/vendor/symfony/console/Output/Output.php create mode 100644 composer/vendor/symfony/console/Output/OutputInterface.php create mode 100644 composer/vendor/symfony/console/Output/StreamOutput.php create mode 100644 composer/vendor/symfony/console/Output/TrimmedBufferOutput.php create mode 100644 composer/vendor/symfony/console/Question/ChoiceQuestion.php create mode 100644 composer/vendor/symfony/console/Question/ConfirmationQuestion.php create mode 100644 composer/vendor/symfony/console/Question/Question.php create mode 100644 composer/vendor/symfony/console/Resources/bin/hiddeninput.exe create mode 100644 composer/vendor/symfony/console/Resources/completion.bash create mode 100644 composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php create mode 100644 composer/vendor/symfony/console/SingleCommandApplication.php create mode 100644 composer/vendor/symfony/console/Style/OutputStyle.php create mode 100644 composer/vendor/symfony/console/Style/StyleInterface.php create mode 100644 composer/vendor/symfony/console/Style/SymfonyStyle.php create mode 100644 composer/vendor/symfony/console/Terminal.php create mode 100644 composer/vendor/symfony/console/Tester/ApplicationTester.php create mode 100644 composer/vendor/symfony/console/Tester/CommandCompletionTester.php create mode 100644 composer/vendor/symfony/console/Tester/CommandTester.php create mode 100644 composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php create mode 100644 composer/vendor/symfony/console/Tester/TesterTrait.php create mode 100644 composer/vendor/symfony/deprecation-contracts/LICENSE create mode 100644 composer/vendor/symfony/deprecation-contracts/function.php create mode 100644 composer/vendor/symfony/filesystem/Exception/ExceptionInterface.php create mode 100644 composer/vendor/symfony/filesystem/Exception/FileNotFoundException.php create mode 100644 composer/vendor/symfony/filesystem/Exception/IOException.php create mode 100644 composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php create mode 100644 composer/vendor/symfony/filesystem/Exception/InvalidArgumentException.php create mode 100644 composer/vendor/symfony/filesystem/Exception/RuntimeException.php create mode 100644 composer/vendor/symfony/filesystem/Filesystem.php create mode 100644 composer/vendor/symfony/filesystem/LICENSE create mode 100644 composer/vendor/symfony/filesystem/Path.php create mode 100644 composer/vendor/symfony/finder/Comparator/Comparator.php create mode 100644 composer/vendor/symfony/finder/Comparator/DateComparator.php create mode 100644 composer/vendor/symfony/finder/Comparator/NumberComparator.php create mode 100644 composer/vendor/symfony/finder/Exception/AccessDeniedException.php create mode 100644 composer/vendor/symfony/finder/Exception/DirectoryNotFoundException.php create mode 100644 composer/vendor/symfony/finder/Finder.php create mode 100644 composer/vendor/symfony/finder/Gitignore.php create mode 100644 composer/vendor/symfony/finder/Glob.php create mode 100644 composer/vendor/symfony/finder/Iterator/CustomFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/LazyIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/PathFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/SortableIterator.php create mode 100644 composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php create mode 100644 composer/vendor/symfony/finder/LICENSE create mode 100644 composer/vendor/symfony/finder/SplFileInfo.php create mode 100644 composer/vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 composer/vendor/symfony/polyfill-ctype/LICENSE create mode 100644 composer/vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 composer/vendor/symfony/polyfill-ctype/bootstrap80.php create mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/Grapheme.php create mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/LICENSE create mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php create mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/LICENSE create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Normalizer.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php create mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php create mode 100644 composer/vendor/symfony/polyfill-mbstring/LICENSE create mode 100644 composer/vendor/symfony/polyfill-mbstring/Mbstring.php create mode 100644 composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php create mode 100644 composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php create mode 100644 composer/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php create mode 100644 composer/vendor/symfony/polyfill-mbstring/bootstrap.php create mode 100644 composer/vendor/symfony/polyfill-mbstring/bootstrap80.php create mode 100644 composer/vendor/symfony/polyfill-php73/LICENSE create mode 100644 composer/vendor/symfony/polyfill-php73/Php73.php create mode 100644 composer/vendor/symfony/polyfill-php73/Resources/stubs/JsonException.php create mode 100644 composer/vendor/symfony/polyfill-php73/bootstrap.php create mode 100644 composer/vendor/symfony/polyfill-php80/LICENSE create mode 100644 composer/vendor/symfony/polyfill-php80/Php80.php create mode 100644 composer/vendor/symfony/polyfill-php80/PhpToken.php create mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php create mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php create mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php create mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php create mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php create mode 100644 composer/vendor/symfony/polyfill-php80/bootstrap.php create mode 100644 composer/vendor/symfony/polyfill-php81/LICENSE create mode 100644 composer/vendor/symfony/polyfill-php81/Php81.php create mode 100644 composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php create mode 100644 composer/vendor/symfony/polyfill-php81/bootstrap.php create mode 100644 composer/vendor/symfony/process/Exception/ExceptionInterface.php create mode 100644 composer/vendor/symfony/process/Exception/InvalidArgumentException.php create mode 100644 composer/vendor/symfony/process/Exception/LogicException.php create mode 100644 composer/vendor/symfony/process/Exception/ProcessFailedException.php create mode 100644 composer/vendor/symfony/process/Exception/ProcessSignaledException.php create mode 100644 composer/vendor/symfony/process/Exception/ProcessTimedOutException.php create mode 100644 composer/vendor/symfony/process/Exception/RuntimeException.php create mode 100644 composer/vendor/symfony/process/ExecutableFinder.php create mode 100644 composer/vendor/symfony/process/InputStream.php create mode 100644 composer/vendor/symfony/process/LICENSE create mode 100644 composer/vendor/symfony/process/PhpExecutableFinder.php create mode 100644 composer/vendor/symfony/process/PhpProcess.php create mode 100644 composer/vendor/symfony/process/Pipes/AbstractPipes.php create mode 100644 composer/vendor/symfony/process/Pipes/PipesInterface.php create mode 100644 composer/vendor/symfony/process/Pipes/UnixPipes.php create mode 100644 composer/vendor/symfony/process/Pipes/WindowsPipes.php create mode 100644 composer/vendor/symfony/process/Process.php create mode 100644 composer/vendor/symfony/process/ProcessUtils.php create mode 100644 composer/vendor/symfony/service-contracts/Attribute/Required.php create mode 100644 composer/vendor/symfony/service-contracts/Attribute/SubscribedService.php create mode 100644 composer/vendor/symfony/service-contracts/LICENSE create mode 100644 composer/vendor/symfony/service-contracts/ResetInterface.php create mode 100644 composer/vendor/symfony/service-contracts/ServiceLocatorTrait.php create mode 100644 composer/vendor/symfony/service-contracts/ServiceProviderInterface.php create mode 100644 composer/vendor/symfony/service-contracts/ServiceSubscriberInterface.php create mode 100644 composer/vendor/symfony/service-contracts/ServiceSubscriberTrait.php create mode 100644 composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php create mode 100644 composer/vendor/symfony/string/AbstractString.php create mode 100644 composer/vendor/symfony/string/AbstractUnicodeString.php create mode 100644 composer/vendor/symfony/string/ByteString.php create mode 100644 composer/vendor/symfony/string/CodePointString.php create mode 100644 composer/vendor/symfony/string/Exception/ExceptionInterface.php create mode 100644 composer/vendor/symfony/string/Exception/InvalidArgumentException.php create mode 100644 composer/vendor/symfony/string/Exception/RuntimeException.php create mode 100644 composer/vendor/symfony/string/Inflector/EnglishInflector.php create mode 100644 composer/vendor/symfony/string/Inflector/FrenchInflector.php create mode 100644 composer/vendor/symfony/string/Inflector/InflectorInterface.php create mode 100644 composer/vendor/symfony/string/LICENSE create mode 100644 composer/vendor/symfony/string/LazyString.php create mode 100644 composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php create mode 100644 composer/vendor/symfony/string/Resources/data/wcswidth_table_zero.php create mode 100644 composer/vendor/symfony/string/Resources/functions.php create mode 100644 composer/vendor/symfony/string/Slugger/AsciiSlugger.php create mode 100644 composer/vendor/symfony/string/Slugger/SluggerInterface.php create mode 100644 composer/vendor/symfony/string/UnicodeString.php create mode 100644 fixtures/build/dir017/.box_dump/.box_configuration create mode 100644 fixtures/build/dir017/.gitignore create mode 100644 fixtures/build/dir017/box.json.dist create mode 100644 fixtures/build/dir017/composer.json create mode 100644 fixtures/build/dir017/composer.lock create mode 100644 fixtures/build/dir017/expected-output create mode 100644 fixtures/build/dir017/index.php create mode 100644 src/Composer/InstalledJsonFile.php create mode 100644 tests/Composer/ComposerFileAssertions.php create mode 100644 tests/Composer/InstalledJsonFileTest.php diff --git a/Box54346/.box/.requirements.php b/Box54346/.box/.requirements.php new file mode 100644 index 000000000..3e361d94e --- /dev/null +++ b/Box54346/.box/.requirements.php @@ -0,0 +1,11 @@ + + array ( + 'type' => 'php', + 'condition' => '^8.1', + 'message' => 'The application requires a version matching "^8.1".', + 'helpMessage' => 'The application requires a version matching "^8.1".', + ), +); \ No newline at end of file diff --git a/Box54346/.box/bin/check-requirements.php b/Box54346/.box/bin/check-requirements.php new file mode 100644 index 000000000..d10122705 --- /dev/null +++ b/Box54346/.box/bin/check-requirements.php @@ -0,0 +1,24 @@ +evaluateRequirements(); + $io = new IO(); + self::printCheck($checkPassed, new Printer($io->getVerbosity(), $io->hasColorSupport()), $requirements); + return $checkPassed; + } + public static function printCheck($checkPassed, Printer $printer, RequirementCollection $requirements) : void + { + if (\false === $checkPassed && IO::VERBOSITY_VERY_VERBOSE > $printer->getVerbosity()) { + $printer->setVerbosity(IO::VERBOSITY_VERY_VERBOSE); + } + $verbosity = IO::VERBOSITY_VERY_VERBOSE; + $iniPath = $requirements->getPhpIniPath(); + $printer->title('Box Requirements Checker', $verbosity); + $printer->printv('> Using PHP ', $verbosity); + $printer->printvln(\PHP_VERSION, $verbosity, 'green'); + $printer->printvln('> PHP is using the following php.ini file:', $verbosity); + if ($iniPath) { + $printer->printvln(' ' . $iniPath, $verbosity, 'green'); + } else { + $printer->printvln(' WARNING: No configuration file (php.ini) used by PHP!', $verbosity, 'yellow'); + } + $printer->printvln('', $verbosity); + if (count($requirements) > 0) { + $printer->printvln('> Checking Box requirements:', $verbosity); + $printer->printv(' ', $verbosity); + } else { + $printer->printvln('> No requirements found.', $verbosity); + } + $errorMessages = []; + foreach ($requirements->getRequirements() as $requirement) { + if ($errorMessage = $printer->getRequirementErrorMessage($requirement)) { + if (IO::VERBOSITY_DEBUG === $printer->getVerbosity()) { + $printer->printvln('✘ ' . $requirement->getTestMessage(), IO::VERBOSITY_DEBUG, 'red'); + $printer->printv(' ', IO::VERBOSITY_DEBUG); + $errorMessages[] = $errorMessage; + } else { + $printer->printv('E', $verbosity, 'red'); + $errorMessages[] = $errorMessage; + } + continue; + } + if (IO::VERBOSITY_DEBUG === $printer->getVerbosity()) { + $printer->printvln('✔ ' . $requirement->getTestMessage(), IO::VERBOSITY_DEBUG, 'green'); + $printer->printv(' ', IO::VERBOSITY_DEBUG); + } else { + $printer->printv('.', $verbosity, 'green'); + } + } + if (IO::VERBOSITY_DEBUG !== $printer->getVerbosity() && count($requirements) > 0) { + $printer->printvln('', $verbosity); + } + if ($requirements->evaluateRequirements()) { + $printer->block('OK', 'Your system is ready to run the application.', $verbosity, 'success'); + } else { + $printer->block('ERROR', 'Your system is not ready to run the application.', $verbosity, 'error'); + $printer->title('Fix the following mandatory requirements:', $verbosity, 'red'); + foreach ($errorMessages as $errorMessage) { + $printer->printv(' * ' . $errorMessage, $verbosity); + } + } + $printer->printvln('', $verbosity); + } + private static function retrieveRequirements() : RequirementCollection + { + if (null === self::$requirementsConfig) { + self::$requirementsConfig = __DIR__ . '/../.requirements.php'; + } + $config = (require self::$requirementsConfig); + $requirements = new RequirementCollection(); + foreach ($config as $constraint) { + $requirements->addRequirement(self::createCondition($constraint['type'], $constraint['condition']), $constraint['message'], $constraint['helpMessage']); + } + return $requirements; + } + private static function createCondition($type, $condition) : IsFulfilled + { + switch ($type) { + case 'php': + return new IsPhpVersionFulfilled($condition); + case 'extension': + return new IsExtensionFulfilled($condition); + case 'extension-conflict': + return new IsExtensionConflictFulfilled($condition); + default: + throw new InvalidArgumentException(sprintf('Unknown requirement type "%s".', $type)); + } + } +} diff --git a/Box54346/.box/src/IO.php b/Box54346/.box/src/IO.php new file mode 100644 index 000000000..c11b4fd7c --- /dev/null +++ b/Box54346/.box/src/IO.php @@ -0,0 +1,127 @@ +options = implode(' ', $_SERVER['argv']); + $shellVerbosity = $this->configureVerbosity(); + $this->interactive = $this->checkInteractivity($shellVerbosity); + $this->colorSupport = $this->checkColorSupport(); + } + public function isInteractive() : bool + { + return $this->interactive; + } + public function getVerbosity() : int + { + return $this->verbosity; + } + public function hasColorSupport() : bool + { + return $this->colorSupport; + } + public function hasParameter($values) : bool + { + $values = (array) $values; + foreach ($values as $value) { + $regexp = sprintf('/\\s%s\\b/', str_replace(' ', '\\s+', preg_quote($value, '/'))); + if (1 === preg_match($regexp, $this->options)) { + return \true; + } + } + return \false; + } + private function checkInteractivity(int $shellVerbosity) : bool + { + if (-1 === $shellVerbosity) { + return \false; + } + if (\true === $this->hasParameter(['--no-interaction', '-n'])) { + return \false; + } + if (function_exists('posix_isatty') && !@posix_isatty(STDOUT) && \false === getenv('SHELL_INTERACTIVE')) { + return \false; + } + return \true; + } + private function configureVerbosity() : int + { + switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { + case -1: + $this->verbosity = self::VERBOSITY_QUIET; + break; + case 1: + $this->verbosity = self::VERBOSITY_VERBOSE; + break; + case 2: + $this->verbosity = self::VERBOSITY_VERY_VERBOSE; + break; + case 3: + $this->verbosity = self::VERBOSITY_DEBUG; + break; + default: + $shellVerbosity = 0; + break; + } + if ($this->hasParameter(['--quiet', '-q'])) { + $this->verbosity = self::VERBOSITY_QUIET; + $shellVerbosity = -1; + } elseif ($this->hasParameter(['-vvv', '--verbose=3', '--verbose 3'])) { + $this->verbosity = self::VERBOSITY_DEBUG; + $shellVerbosity = 3; + } elseif ($this->hasParameter(['-vv', '--verbose=2', '--verbose 2'])) { + $this->verbosity = self::VERBOSITY_VERY_VERBOSE; + $shellVerbosity = 2; + } elseif ($this->hasParameter(['-v', '--verbose=1', '--verbose 1', '--verbose'])) { + $this->verbosity = self::VERBOSITY_VERBOSE; + $shellVerbosity = 1; + } + return $shellVerbosity; + } + private function checkColorSupport() : bool + { + if ($this->hasParameter(['--ansi'])) { + return \true; + } + if ($this->hasParameter(['--no-ansi'])) { + return \false; + } + if (DIRECTORY_SEPARATOR === '\\') { + return function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(STDOUT) || \false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI') || 'xterm' === getenv('TERM'); + } + if (function_exists('stream_isatty')) { + return stream_isatty(STDOUT); + } + if (function_exists('posix_isatty')) { + return posix_isatty(STDOUT); + } + $stat = fstat(STDOUT); + return $stat ? 020000 === ($stat['mode'] & 0170000) : \false; + } +} diff --git a/Box54346/.box/src/IsExtensionConflictFulfilled.php b/Box54346/.box/src/IsExtensionConflictFulfilled.php new file mode 100644 index 000000000..fda9e22d1 --- /dev/null +++ b/Box54346/.box/src/IsExtensionConflictFulfilled.php @@ -0,0 +1,18 @@ +conflictingExtension = $requiredExtension; + } + public function __invoke() : bool + { + return !extension_loaded($this->conflictingExtension); + } +} diff --git a/Box54346/.box/src/IsExtensionFulfilled.php b/Box54346/.box/src/IsExtensionFulfilled.php new file mode 100644 index 000000000..25542acdc --- /dev/null +++ b/Box54346/.box/src/IsExtensionFulfilled.php @@ -0,0 +1,18 @@ +requiredExtension = $requiredExtension; + } + public function __invoke() : bool + { + return extension_loaded($this->requiredExtension); + } +} diff --git a/Box54346/.box/src/IsFulfilled.php b/Box54346/.box/src/IsFulfilled.php new file mode 100644 index 000000000..90c2444f8 --- /dev/null +++ b/Box54346/.box/src/IsFulfilled.php @@ -0,0 +1,9 @@ +requiredPhpVersion = $requiredPhpVersion; + } + public function __invoke() : bool + { + return Semver::satisfies(sprintf('%d.%d.%d', PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION), $this->requiredPhpVersion); + } +} diff --git a/Box54346/.box/src/Printer.php b/Box54346/.box/src/Printer.php new file mode 100644 index 000000000..601e6d953 --- /dev/null +++ b/Box54346/.box/src/Printer.php @@ -0,0 +1,104 @@ + "\x1b[0m", 'red' => "\x1b[31m", 'green' => "\x1b[32m", 'yellow' => "\x1b[33m", 'title' => "\x1b[33m", 'error' => "\x1b[37;41m", 'success' => "\x1b[30;42m"]; + private $verbosity; + private $supportColors; + private $width; + public function __construct(int $verbosity, bool $supportColors, ?int $width = null) + { + if (null === $width) { + $terminal = new Terminal(); + $width = $terminal->getWidth(); + } + $this->verbosity = $verbosity; + $this->supportColors = $supportColors; + $this->width = $width ?: 80; + } + public function getVerbosity() : int + { + return $this->verbosity; + } + public function setVerbosity($verbosity) : void + { + $this->verbosity = $verbosity; + } + public function title(string $title, int $verbosity, ?string $style = null) : void + { + if (null === $style) { + $style = 'title'; + } + $this->printvln('', $verbosity, $style); + $this->printvln($title, $verbosity, $style); + $this->printvln(str_repeat('=', min(strlen($title), $this->width)), $verbosity, $style); + $this->printvln('', $verbosity, $style); + } + public function getRequirementErrorMessage(Requirement $requirement) : ?string + { + if ($requirement->isFulfilled()) { + return null; + } + return wordwrap($requirement->getHelpText(), $this->width - 3, PHP_EOL . ' ') . PHP_EOL; + } + public function block(string $title, string $message, int $verbosity, ?string $style = null) : void + { + $prefix = ' [' . $title . '] '; + $lineLength = $this->width - strlen($prefix) - 1; + if ($lineLength < 0) { + $lineLength = 0; + } + $message = $prefix . trim($message); + $lines = []; + $remainingMessage = $message; + $wrapped = wordwrap($remainingMessage, $lineLength, '¬'); + $wrapped = explode('¬', $wrapped); + do { + $line = array_shift($wrapped); + if ($lines && $lineLength > 0) { + $line = str_repeat(' ', strlen($prefix)) . ltrim($line); + } + $lines[] = str_pad($line, $this->width, ' ', \STR_PAD_RIGHT); + } while (count($wrapped)); + $this->printvln('', $verbosity); + $this->printvln(str_repeat(' ', $this->width), $verbosity, $style); + foreach ($lines as $line) { + $this->printvln($line, $verbosity, $style); + } + $this->printv(str_repeat(' ', $this->width), $verbosity, $style); + $this->printvln('', $verbosity); + } + public function printvln(string $message, int $verbosity, ?string $style = null) : void + { + $this->printv($message, $verbosity, $style); + $this->printv(PHP_EOL, $verbosity, null); + } + public function printv(string $message, int $verbosity, ?string $style = null) : void + { + if ($verbosity > $this->verbosity) { + return; + } + $message = wordwrap($message, $this->width); + $message = sprintf('%s%s%s', $this->supportColors && isset($this->styles[$style]) ? $this->styles[$style] : '', $message, $this->supportColors ? $this->styles['reset'] : ''); + if ('1' === \getenv('BOX_REQUIREMENTS_CHECKER_LOG_TO_STDOUT')) { + echo $message; + } else { + \fwrite(\STDERR, $message); + } + } +} diff --git a/Box54346/.box/src/Requirement.php b/Box54346/.box/src/Requirement.php new file mode 100644 index 000000000..1869ae04a --- /dev/null +++ b/Box54346/.box/src/Requirement.php @@ -0,0 +1,37 @@ +checkIsFulfilled = $checkIsFulfilled; + $this->testMessage = $testMessage; + $this->helpText = $helpText; + } + public function isFulfilled() : bool + { + if (!isset($this->fulfilled)) { + $this->fulfilled = $this->checkIsFulfilled->__invoke(); + } + return $this->fulfilled; + } + public function getIsFullfilledChecker() : IsFulfilled + { + return $this->checkIsFulfilled; + } + public function getTestMessage() : string + { + return $this->testMessage; + } + public function getHelpText() : string + { + return $this->helpText; + } +} diff --git a/Box54346/.box/src/RequirementCollection.php b/Box54346/.box/src/RequirementCollection.php new file mode 100644 index 000000000..7918b39f9 --- /dev/null +++ b/Box54346/.box/src/RequirementCollection.php @@ -0,0 +1,45 @@ +requirements); + } + public function count() : int + { + return count($this->requirements); + } + public function add(Requirement $requirement) : void + { + $this->requirements[] = $requirement; + } + public function addRequirement(IsFulfilled $checkIsFulfilled, string $testMessage, string $helpText) : void + { + $this->add(new Requirement($checkIsFulfilled, $testMessage, $helpText)); + } + public function getRequirements() : array + { + return $this->requirements; + } + public function getPhpIniPath() + { + return get_cfg_var('cfg_file_path'); + } + public function evaluateRequirements() + { + return \array_reduce($this->requirements, function (bool $checkPassed, Requirement $requirement) : bool { + return $checkPassed && $requirement->isFulfilled(); + }, \true); + } +} diff --git a/Box54346/.box/src/Terminal.php b/Box54346/.box/src/Terminal.php new file mode 100644 index 000000000..e5b408671 --- /dev/null +++ b/Box54346/.box/src/Terminal.php @@ -0,0 +1,117 @@ +&1', $output, $exitcode); + return self::$stty = 0 === $exitcode; + } + private static function initDimensions() : void + { + if ('\\' === DIRECTORY_SEPARATOR) { + if (preg_match('/^(\\d+)x(\\d+)(?: \\((\\d+)x(\\d+)\\))?$/', trim(getenv('ANSICON')), $matches)) { + self::$width = (int) $matches[1]; + self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; + } elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { + self::initDimensionsUsingStty(); + } elseif (null !== ($dimensions = self::getConsoleMode())) { + self::$width = (int) $dimensions[0]; + self::$height = (int) $dimensions[1]; + } + } else { + self::initDimensionsUsingStty(); + } + } + private static function hasVt100Support() : bool + { + return function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(fopen('php://stdout', 'wb')); + } + private static function initDimensionsUsingStty() : void + { + if ($sttyString = self::getSttyColumns()) { + if (preg_match('/rows.(\\d+);.columns.(\\d+);/i', $sttyString, $matches)) { + self::$width = (int) $matches[2]; + self::$height = (int) $matches[1]; + } elseif (preg_match('/;.(\\d+).rows;.(\\d+).columns/i', $sttyString, $matches)) { + self::$width = (int) $matches[2]; + self::$height = (int) $matches[1]; + } + } + } + private static function getConsoleMode() : ?array + { + $info = self::readFromProcess('mode CON'); + if (null === $info || !preg_match('/--------+\\r?\\n.+?(\\d+)\\r?\\n.+?(\\d+)\\r?\\n/', $info, $matches)) { + return null; + } + return [(int) $matches[2], (int) $matches[1]]; + } + private static function getSttyColumns() : ?string + { + return self::readFromProcess('stty -a | grep columns'); + } + private static function readFromProcess(string $command) : ?string + { + if (!function_exists('proc_open')) { + return null; + } + $descriptorspec = [1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; + $process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => \true]); + if (!is_resource($process)) { + return null; + } + $info = stream_get_contents($pipes[1]); + fclose($pipes[1]); + fclose($pipes[2]); + proc_close($process); + return $info; + } +} diff --git a/Box54346/.box/vendor/autoload.php b/Box54346/.box/vendor/autoload.php new file mode 100644 index 000000000..46e58bc25 --- /dev/null +++ b/Box54346/.box/vendor/autoload.php @@ -0,0 +1,25 @@ + + * 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 https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var \Closure(string):void */ + private static $includeFile; + + /** @var ?string */ + private $vendorDir; + + // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ + private $missingClasses = array(); + + /** @var ?string */ + private $apcuPrefix; + + /** + * @var self[] + */ + private static $registeredLoaders = array(); + + /** + * @param ?string $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return string[] + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array[] + * @psalm-return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return string[] Array of classname => path + * @psalm-return array + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void + */ + 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 string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + 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 string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + 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 string[]|string $paths The PSR-0 base directories + * + * @return void + */ + 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 string[]|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + $includeFile = self::$includeFile; + $includeFile($file); + + return true; + } + + return null; + } + + /** + * 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; + } + + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + 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; + } + + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } +} diff --git a/Box54346/.box/vendor/composer/InstalledVersions.php b/Box54346/.box/vendor/composer/InstalledVersions.php new file mode 100644 index 000000000..6378fbae1 --- /dev/null +++ b/Box54346/.box/vendor/composer/InstalledVersions.php @@ -0,0 +1,203 @@ + $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + return $packagesByType; + } + public static function isInstalled($packageName, $includeDevRequirements = \true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + return \false; + } + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + return $provided->matches($constraint); + } + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (\array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = \array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (\array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = \array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (\array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = \array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + return \implode(' || ', $ranges); + } + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + return $installed['versions'][$packageName]['version']; + } + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + return $installed['versions'][$packageName]['pretty_version']; + } + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + return $installed['versions'][$packageName]['reference']; + } + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + /** + @psalm-return + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + return $installed[0]['root']; + } + /** + @psalm-return + */ + public static function getRawData() + { + @\trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', \E_USER_DEPRECATED); + if (null === self::$installed) { + if (\substr(__DIR__, -8, 1) !== 'C') { + self::$installed = (include __DIR__ . '/installed.php'); + } else { + self::$installed = array(); + } + } + return self::$installed; + } + /** + @psalm-return + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + /** + @psalm-param + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + /** + @psalm-return + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = \method_exists('HumbugBox420\\Composer\\Autoload\\ClassLoader', 'getRegisteredLoaders'); + } + $installed = array(); + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (\is_file($vendorDir . '/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = (require $vendorDir . '/composer/installed.php'); + if (null === self::$installed && \strtr($vendorDir . '/composer', '\\', '/') === \strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[\count($installed) - 1]; + } + } + } + } + if (null === self::$installed) { + if (\substr(__DIR__, -8, 1) !== 'C') { + self::$installed = (require __DIR__ . '/installed.php'); + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + return $installed; + } +} diff --git a/Box54346/.box/vendor/composer/LICENSE b/Box54346/.box/vendor/composer/LICENSE new file mode 100644 index 000000000..f27399a04 --- /dev/null +++ b/Box54346/.box/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +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/Box54346/.box/vendor/composer/autoload_classmap.php b/Box54346/.box/vendor/composer/autoload_classmap.php new file mode 100644 index 000000000..3a598f91c --- /dev/null +++ b/Box54346/.box/vendor/composer/autoload_classmap.php @@ -0,0 +1,32 @@ + $vendorDir . '/composer/InstalledVersions.php', + 'HumbugBox420\\Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', + 'HumbugBox420\\Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', + 'HumbugBox420\\Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php', + 'HumbugBox420\\Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php', + 'HumbugBox420\\Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', + 'HumbugBox420\\Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Checker' => $baseDir . '/src/Checker.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IO' => $baseDir . '/src/IO.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionConflictFulfilled' => $baseDir . '/src/IsExtensionConflictFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionFulfilled' => $baseDir . '/src/IsExtensionFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsFulfilled' => $baseDir . '/src/IsFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsPhpVersionFulfilled' => $baseDir . '/src/IsPhpVersionFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Printer' => $baseDir . '/src/Printer.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Requirement' => $baseDir . '/src/Requirement.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\RequirementCollection' => $baseDir . '/src/RequirementCollection.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Terminal' => $baseDir . '/src/Terminal.php', +); diff --git a/Box54346/.box/vendor/composer/autoload_namespaces.php b/Box54346/.box/vendor/composer/autoload_namespaces.php new file mode 100644 index 000000000..15a2ff3ad --- /dev/null +++ b/Box54346/.box/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($baseDir . '/src'), + 'HumbugBox420\\Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), +); diff --git a/Box54346/.box/vendor/composer/autoload_real.php b/Box54346/.box/vendor/composer/autoload_real.php new file mode 100644 index 000000000..212cc3d59 --- /dev/null +++ b/Box54346/.box/vendor/composer/autoload_real.php @@ -0,0 +1,37 @@ +setClassMapAuthoritative(true); + $loader->register(true); + + return $loader; + } +} diff --git a/Box54346/.box/vendor/composer/autoload_static.php b/Box54346/.box/vendor/composer/autoload_static.php new file mode 100644 index 000000000..e3856d509 --- /dev/null +++ b/Box54346/.box/vendor/composer/autoload_static.php @@ -0,0 +1,63 @@ + + array ( + 'HumbugBox420\\KevinGH\\RequirementChecker\\' => 40, + 'HumbugBox420\\Composer\\Semver\\' => 29, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'HumbugBox420\\KevinGH\\RequirementChecker\\' => + array ( + 0 => __DIR__ . '/../..' . '/src', + ), + 'HumbugBox420\\Composer\\Semver\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/semver/src', + ), + ); + + public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'HumbugBox420\\Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', + 'HumbugBox420\\Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php', + 'HumbugBox420\\Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', + 'HumbugBox420\\Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php', + 'HumbugBox420\\Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php', + 'HumbugBox420\\Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', + 'HumbugBox420\\Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Checker' => __DIR__ . '/../..' . '/src/Checker.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IO' => __DIR__ . '/../..' . '/src/IO.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionConflictFulfilled' => __DIR__ . '/../..' . '/src/IsExtensionConflictFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionFulfilled' => __DIR__ . '/../..' . '/src/IsExtensionFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsFulfilled' => __DIR__ . '/../..' . '/src/IsFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\IsPhpVersionFulfilled' => __DIR__ . '/../..' . '/src/IsPhpVersionFulfilled.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Printer' => __DIR__ . '/../..' . '/src/Printer.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Requirement' => __DIR__ . '/../..' . '/src/Requirement.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\RequirementCollection' => __DIR__ . '/../..' . '/src/RequirementCollection.php', + 'HumbugBox420\\KevinGH\\RequirementChecker\\Terminal' => __DIR__ . '/../..' . '/src/Terminal.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitHumbugBox420::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitHumbugBox420::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitHumbugBox420::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/Box54346/.box/vendor/composer/installed.php b/Box54346/.box/vendor/composer/installed.php new file mode 100644 index 000000000..1f4d0ffe7 --- /dev/null +++ b/Box54346/.box/vendor/composer/installed.php @@ -0,0 +1,5 @@ + array('name' => 'humbug/requirement-checker', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ce244bb2d6c3e030748d4b5e5f23c618a5d0d85e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \true), 'versions' => array('composer/semver' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/instantiator' => array('pretty_version' => '1.4.1', 'version' => '1.4.1.0', 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/instantiator', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/composer-normalize' => array('pretty_version' => '2.29.0', 'version' => '2.29.0.0', 'reference' => 'fad0e99b16c625817a5bfd910e4d7e31999c53b2', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../ergebnis/composer-normalize', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-normalizer' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '2039eb11131a243b9204bf51219baa08935e6b1d', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-normalizer', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-printer' => array('pretty_version' => '3.3.0', 'version' => '3.3.0.0', 'reference' => '18920367473b099633f644f0ca6dc8794345148f', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-printer', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-schema-validator' => array('pretty_version' => '2.0.0', 'version' => '2.0.0.0', 'reference' => 'dacd8a47c1cc2c426ec71e952da3609ebe901fac', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-schema-validator', 'aliases' => array(), 'dev_requirement' => \true), 'fidry/makefile' => array('pretty_version' => '0.2.1', 'version' => '0.2.1.0', 'reference' => '50abe0df37018458b1ab355e56063618d5ba8d10', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/makefile', 'aliases' => array(), 'dev_requirement' => \true), 'humbug/requirement-checker' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ce244bb2d6c3e030748d4b5e5f23c618a5d0d85e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'justinrainbow/json-schema' => array('pretty_version' => '5.2.12', 'version' => '5.2.12.0', 'reference' => 'ad87d5a5ca981228e0e205c2bc7dfb8e24559b60', 'type' => 'library', 'install_path' => __DIR__ . '/../justinrainbow/json-schema', 'aliases' => array(), 'dev_requirement' => \true), 'localheinz/diff' => array('pretty_version' => '1.1.1', 'version' => '1.1.1.0', 'reference' => '851bb20ea8358c86f677f5f111c4ab031b1c764c', 'type' => 'library', 'install_path' => __DIR__ . '/../localheinz/diff', 'aliases' => array(), 'dev_requirement' => \true), 'myclabs/deep-copy' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614', 'type' => 'library', 'install_path' => __DIR__ . '/../myclabs/deep-copy', 'aliases' => array(), 'dev_requirement' => \true), 'nikic/php-parser' => array('pretty_version' => 'v4.14.0', 'version' => '4.14.0.0', 'reference' => '34bea19b6e03d8153165d8f30bba4c3be86184c1', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \true), 'phar-io/manifest' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/manifest', 'aliases' => array(), 'dev_requirement' => \true), 'phar-io/version' => array('pretty_version' => '3.2.1', 'version' => '3.2.1.0', 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/version', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/reflection-common' => array('pretty_version' => '2.2.0', 'version' => '2.2.0.0', 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/reflection-docblock' => array('pretty_version' => '5.3.0', 'version' => '5.3.0.0', 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/type-resolver' => array('pretty_version' => '1.6.1', 'version' => '1.6.1.0', 'reference' => '77a32518733312af16a44300404e945338981de3', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver', 'aliases' => array(), 'dev_requirement' => \true), 'phpspec/prophecy' => array('pretty_version' => 'v1.15.0', 'version' => '1.15.0.0', 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13', 'type' => 'library', 'install_path' => __DIR__ . '/../phpspec/prophecy', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-code-coverage' => array('pretty_version' => '9.2.15', 'version' => '9.2.15.0', 'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-file-iterator' => array('pretty_version' => '3.0.6', 'version' => '3.0.6.0', 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-invoker' => array('pretty_version' => '3.1.1', 'version' => '3.1.1.0', 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-invoker', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-text-template' => array('pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-text-template', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-timer' => array('pretty_version' => '5.0.3', 'version' => '5.0.3.0', 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-timer', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/phpunit' => array('pretty_version' => '9.5.21', 'version' => '9.5.21.0', 'reference' => '0e32b76be457de00e83213528f6bb37e2a38fcb1', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/phpunit', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/cli-parser' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/cli-parser', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/code-unit' => array('pretty_version' => '1.0.8', 'version' => '1.0.8.0', 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/code-unit-reverse-lookup' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/comparator' => array('pretty_version' => '4.0.6', 'version' => '4.0.6.0', 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/comparator', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/complexity' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/complexity', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/diff' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/environment' => array('pretty_version' => '5.1.4', 'version' => '5.1.4.0', 'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/environment', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/exporter' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/exporter', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/global-state' => array('pretty_version' => '5.0.5', 'version' => '5.0.5.0', 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/global-state', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/lines-of-code' => array('pretty_version' => '1.0.3', 'version' => '1.0.3.0', 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/lines-of-code', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/object-enumerator' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-enumerator', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/object-reflector' => array('pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-reflector', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/recursion-context' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/recursion-context', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/resource-operations' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/resource-operations', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/type' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'b233b84bc4465aff7b57cf1c4bc75c86d00d6dad', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/type', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/version' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'c6c1022351a901512170118436c764e473f6de8c', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/version', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-php80' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-php81' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php81', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/yaml' => array('pretty_version' => 'v6.2.5', 'version' => '6.2.5.0', 'reference' => '2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \true), 'thecodingmachine/safe' => array('pretty_version' => 'v2.4.0', 'version' => '2.4.0.0', 'reference' => 'e788f3d09dcd36f806350aedb77eac348fafadd3', 'type' => 'library', 'install_path' => __DIR__ . '/../thecodingmachine/safe', 'aliases' => array(), 'dev_requirement' => \true), 'theseer/tokenizer' => array('pretty_version' => '1.2.1', 'version' => '1.2.1.0', 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e', 'type' => 'library', 'install_path' => __DIR__ . '/../theseer/tokenizer', 'aliases' => array(), 'dev_requirement' => \true), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \true))); diff --git a/Box54346/.box/vendor/composer/semver/LICENSE b/Box54346/.box/vendor/composer/semver/LICENSE new file mode 100644 index 000000000..466975862 --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2015 Composer + +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/Box54346/.box/vendor/composer/semver/src/Comparator.php b/Box54346/.box/vendor/composer/semver/src/Comparator.php new file mode 100644 index 000000000..0376b22ed --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Comparator.php @@ -0,0 +1,40 @@ +', $version2); + } + public static function greaterThanOrEqualTo($version1, $version2) + { + return self::compare($version1, '>=', $version2); + } + public static function lessThan($version1, $version2) + { + return self::compare($version1, '<', $version2); + } + public static function lessThanOrEqualTo($version1, $version2) + { + return self::compare($version1, '<=', $version2); + } + public static function equalTo($version1, $version2) + { + return self::compare($version1, '==', $version2); + } + public static function notEqualTo($version1, $version2) + { + return self::compare($version1, '!=', $version2); + } + /** + @phpstan-param + */ + public static function compare($version1, $operator, $version2) + { + $constraint = new Constraint($operator, $version2); + return $constraint->matchSpecific(new Constraint('==', $version1), \true); + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php b/Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php new file mode 100644 index 000000000..4bfc553b4 --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php @@ -0,0 +1,51 @@ + Constraint::STR_OP_EQ, Constraint::OP_LT => Constraint::STR_OP_LT, Constraint::OP_LE => Constraint::STR_OP_LE, Constraint::OP_GT => Constraint::STR_OP_GT, Constraint::OP_GE => Constraint::STR_OP_GE, Constraint::OP_NE => Constraint::STR_OP_NE); + public static function clear() + { + self::$resultCache = array(); + self::$compiledCheckerCache = array(); + } + /** + @phpstan-param + */ + public static function match(ConstraintInterface $constraint, $operator, $version) + { + $resultCacheKey = $operator . $constraint . ';' . $version; + if (isset(self::$resultCache[$resultCacheKey])) { + return self::$resultCache[$resultCacheKey]; + } + if (self::$enabled === null) { + self::$enabled = !\in_array('eval', \explode(',', (string) \ini_get('disable_functions')), \true); + } + if (!self::$enabled) { + return self::$resultCache[$resultCacheKey] = $constraint->matches(new Constraint(self::$transOpInt[$operator], $version)); + } + $cacheKey = $operator . $constraint; + if (!isset(self::$compiledCheckerCache[$cacheKey])) { + $code = $constraint->compile($operator); + self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return ' . $code . ';};'); + } else { + $function = self::$compiledCheckerCache[$cacheKey]; + } + return self::$resultCache[$resultCacheKey] = $function($version, \strpos($version, 'dev-') === 0); + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php b/Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php new file mode 100644 index 000000000..54618456a --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php @@ -0,0 +1,56 @@ +version = $version; + $this->isInclusive = $isInclusive; + } + public function getVersion() + { + return $this->version; + } + public function isInclusive() + { + return $this->isInclusive; + } + public function isZero() + { + return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive(); + } + public function isPositiveInfinity() + { + return $this->getVersion() === \PHP_INT_MAX . '.0.0.0' && !$this->isInclusive(); + } + public function compareTo(Bound $other, $operator) + { + if (!\in_array($operator, array('<', '>'), \true)) { + throw new \InvalidArgumentException('Does not support any other operator other than > or <.'); + } + if ($this == $other) { + return \false; + } + $compareResult = \version_compare($this->getVersion(), $other->getVersion()); + if (0 !== $compareResult) { + return ('>' === $operator ? 1 : -1) === $compareResult; + } + return '>' === $operator ? $other->isInclusive() : !$other->isInclusive(); + } + public function __toString() + { + return \sprintf('%s [%s]', $this->getVersion(), $this->isInclusive() ? 'inclusive' : 'exclusive'); + } + public static function zero() + { + return new Bound('0.0.0.0-dev', \true); + } + public static function positiveInfinity() + { + return new Bound(\PHP_INT_MAX . '.0.0.0', \false); + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php b/Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php new file mode 100644 index 000000000..ec4050067 --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php @@ -0,0 +1,260 @@ +'; + const STR_OP_GE = '>='; + const STR_OP_NE = '!='; + const STR_OP_NE_ALT = '<>'; + /** + @phpstan-var + */ + private static $transOpStr = array('=' => self::OP_EQ, '==' => self::OP_EQ, '<' => self::OP_LT, '<=' => self::OP_LE, '>' => self::OP_GT, '>=' => self::OP_GE, '<>' => self::OP_NE, '!=' => self::OP_NE); + /** + @phpstan-var + */ + private static $transOpInt = array(self::OP_EQ => '==', self::OP_LT => '<', self::OP_LE => '<=', self::OP_GT => '>', self::OP_GE => '>=', self::OP_NE => '!='); + /** + @phpstan-var + */ + protected $operator; + protected $version; + protected $prettyString; + protected $lowerBound; + protected $upperBound; + /** + @phpstan-param + */ + public function __construct($operator, $version) + { + if (!isset(self::$transOpStr[$operator])) { + throw new \InvalidArgumentException(\sprintf('Invalid operator "%s" given, expected one of: %s', $operator, \implode(', ', self::getSupportedOperators()))); + } + $this->operator = self::$transOpStr[$operator]; + $this->version = $version; + } + public function getVersion() + { + return $this->version; + } + /** + @phpstan-return + */ + public function getOperator() + { + return self::$transOpInt[$this->operator]; + } + public function matches(ConstraintInterface $provider) + { + if ($provider instanceof self) { + return $this->matchSpecific($provider); + } + return $provider->matches($this); + } + public function setPrettyString($prettyString) + { + $this->prettyString = $prettyString; + } + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + return $this->__toString(); + } + /** + @phpstan-return + */ + public static function getSupportedOperators() + { + return \array_keys(self::$transOpStr); + } + /** + @phpstan-param + @phpstan-return + */ + public static function getOperatorConstant($operator) + { + return self::$transOpStr[$operator]; + } + /** + @phpstan-param + */ + public function versionCompare($a, $b, $operator, $compareBranches = \false) + { + if (!isset(self::$transOpStr[$operator])) { + throw new \InvalidArgumentException(\sprintf('Invalid operator "%s" given, expected one of: %s', $operator, \implode(', ', self::getSupportedOperators()))); + } + $aIsBranch = \strpos($a, 'dev-') === 0; + $bIsBranch = \strpos($b, 'dev-') === 0; + if ($operator === '!=' && ($aIsBranch || $bIsBranch)) { + return $a !== $b; + } + if ($aIsBranch && $bIsBranch) { + return $operator === '==' && $a === $b; + } + if (!$compareBranches && ($aIsBranch || $bIsBranch)) { + return \false; + } + return \version_compare($a, $b, $operator); + } + public function compile($otherOperator) + { + if (\strpos($this->version, 'dev-') === 0) { + if (self::OP_EQ === $this->operator) { + if (self::OP_EQ === $otherOperator) { + return \sprintf('$b && $v === %s', \var_export($this->version, \true)); + } + if (self::OP_NE === $otherOperator) { + return \sprintf('!$b || $v !== %s', \var_export($this->version, \true)); + } + return 'false'; + } + if (self::OP_NE === $this->operator) { + if (self::OP_EQ === $otherOperator) { + return \sprintf('!$b || $v !== %s', \var_export($this->version, \true)); + } + if (self::OP_NE === $otherOperator) { + return 'true'; + } + return '!$b'; + } + return 'false'; + } + if (self::OP_EQ === $this->operator) { + if (self::OP_EQ === $otherOperator) { + return \sprintf('\\version_compare($v, %s, \'==\')', \var_export($this->version, \true)); + } + if (self::OP_NE === $otherOperator) { + return \sprintf('$b || \\version_compare($v, %s, \'!=\')', \var_export($this->version, \true)); + } + return \sprintf('!$b && \\version_compare(%s, $v, \'%s\')', \var_export($this->version, \true), self::$transOpInt[$otherOperator]); + } + if (self::OP_NE === $this->operator) { + if (self::OP_EQ === $otherOperator) { + return \sprintf('$b || (!$b && \\version_compare($v, %s, \'!=\'))', \var_export($this->version, \true)); + } + if (self::OP_NE === $otherOperator) { + return 'true'; + } + return '!$b'; + } + if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) { + if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) { + return '!$b'; + } + } else { + if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) { + return '!$b'; + } + } + if (self::OP_NE === $otherOperator) { + return 'true'; + } + $codeComparison = \sprintf('\\version_compare($v, %s, \'%s\')', \var_export($this->version, \true), self::$transOpInt[$this->operator]); + if ($this->operator === self::OP_LE) { + if ($otherOperator === self::OP_GT) { + return \sprintf('!$b && \\version_compare($v, %s, \'!=\') && ', \var_export($this->version, \true)) . $codeComparison; + } + } elseif ($this->operator === self::OP_GE) { + if ($otherOperator === self::OP_LT) { + return \sprintf('!$b && \\version_compare($v, %s, \'!=\') && ', \var_export($this->version, \true)) . $codeComparison; + } + } + return \sprintf('!$b && %s', $codeComparison); + } + public function matchSpecific(Constraint $provider, $compareBranches = \false) + { + $noEqualOp = \str_replace('=', '', self::$transOpInt[$this->operator]); + $providerNoEqualOp = \str_replace('=', '', self::$transOpInt[$provider->operator]); + $isEqualOp = self::OP_EQ === $this->operator; + $isNonEqualOp = self::OP_NE === $this->operator; + $isProviderEqualOp = self::OP_EQ === $provider->operator; + $isProviderNonEqualOp = self::OP_NE === $provider->operator; + if ($isNonEqualOp || $isProviderNonEqualOp) { + if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && \strpos($provider->version, 'dev-') === 0) { + return \false; + } + if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && \strpos($this->version, 'dev-') === 0) { + return \false; + } + if (!$isEqualOp && !$isProviderEqualOp) { + return \true; + } + return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); + } + if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { + return !(\strpos($this->version, 'dev-') === 0 || \strpos($provider->version, 'dev-') === 0); + } + $version1 = $isEqualOp ? $this->version : $provider->version; + $version2 = $isEqualOp ? $provider->version : $this->version; + $operator = $isEqualOp ? $provider->operator : $this->operator; + if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) { + return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp && self::$transOpInt[$this->operator] !== $noEqualOp && \version_compare($provider->version, $this->version, '==')); + } + return \false; + } + public function __toString() + { + return self::$transOpInt[$this->operator] . ' ' . $this->version; + } + public function getLowerBound() + { + $this->extractBounds(); + return $this->lowerBound; + } + public function getUpperBound() + { + $this->extractBounds(); + return $this->upperBound; + } + private function extractBounds() + { + if (null !== $this->lowerBound) { + return; + } + if (\strpos($this->version, 'dev-') === 0) { + $this->lowerBound = Bound::zero(); + $this->upperBound = Bound::positiveInfinity(); + return; + } + switch ($this->operator) { + case self::OP_EQ: + $this->lowerBound = new Bound($this->version, \true); + $this->upperBound = new Bound($this->version, \true); + break; + case self::OP_LT: + $this->lowerBound = Bound::zero(); + $this->upperBound = new Bound($this->version, \false); + break; + case self::OP_LE: + $this->lowerBound = Bound::zero(); + $this->upperBound = new Bound($this->version, \true); + break; + case self::OP_GT: + $this->lowerBound = new Bound($this->version, \false); + $this->upperBound = Bound::positiveInfinity(); + break; + case self::OP_GE: + $this->lowerBound = new Bound($this->version, \true); + $this->upperBound = Bound::positiveInfinity(); + break; + case self::OP_NE: + $this->lowerBound = Bound::zero(); + $this->upperBound = Bound::positiveInfinity(); + break; + } + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php new file mode 100644 index 000000000..680c69d55 --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php @@ -0,0 +1,17 @@ +prettyString = $prettyString; + } + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + return (string) $this; + } + public function __toString() + { + return '*'; + } + public function getUpperBound() + { + return Bound::positiveInfinity(); + } + public function getLowerBound() + { + return Bound::zero(); + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php b/Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php new file mode 100644 index 000000000..c2d37a79b --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php @@ -0,0 +1,39 @@ +prettyString = $prettyString; + } + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + return (string) $this; + } + public function __toString() + { + return '[]'; + } + public function getUpperBound() + { + return new Bound('0.0.0.0-dev', \false); + } + public function getLowerBound() + { + return new Bound('0.0.0.0-dev', \false); + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php b/Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php new file mode 100644 index 000000000..77ad4135d --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php @@ -0,0 +1,178 @@ +constraints = $constraints; + $this->conjunctive = $conjunctive; + } + public function getConstraints() + { + return $this->constraints; + } + public function isConjunctive() + { + return $this->conjunctive; + } + public function isDisjunctive() + { + return !$this->conjunctive; + } + public function compile($otherOperator) + { + $parts = array(); + foreach ($this->constraints as $constraint) { + $code = $constraint->compile($otherOperator); + if ($code === 'true') { + if (!$this->conjunctive) { + return 'true'; + } + } elseif ($code === 'false') { + if ($this->conjunctive) { + return 'false'; + } + } else { + $parts[] = '(' . $code . ')'; + } + } + if (!$parts) { + return $this->conjunctive ? 'true' : 'false'; + } + return $this->conjunctive ? \implode('&&', $parts) : \implode('||', $parts); + } + public function matches(ConstraintInterface $provider) + { + if (\false === $this->conjunctive) { + foreach ($this->constraints as $constraint) { + if ($provider->matches($constraint)) { + return \true; + } + } + return \false; + } + if ($provider instanceof MultiConstraint && $provider->isDisjunctive()) { + return $provider->matches($this); + } + foreach ($this->constraints as $constraint) { + if (!$provider->matches($constraint)) { + return \false; + } + } + return \true; + } + public function setPrettyString($prettyString) + { + $this->prettyString = $prettyString; + } + public function getPrettyString() + { + if ($this->prettyString) { + return $this->prettyString; + } + return (string) $this; + } + public function __toString() + { + if ($this->string !== null) { + return $this->string; + } + $constraints = array(); + foreach ($this->constraints as $constraint) { + $constraints[] = (string) $constraint; + } + return $this->string = '[' . \implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; + } + public function getLowerBound() + { + $this->extractBounds(); + if (null === $this->lowerBound) { + throw new \LogicException('extractBounds should have populated the lowerBound property'); + } + return $this->lowerBound; + } + public function getUpperBound() + { + $this->extractBounds(); + if (null === $this->upperBound) { + throw new \LogicException('extractBounds should have populated the upperBound property'); + } + return $this->upperBound; + } + public static function create(array $constraints, $conjunctive = \true) + { + if (0 === \count($constraints)) { + return new MatchAllConstraint(); + } + if (1 === \count($constraints)) { + return $constraints[0]; + } + $optimized = self::optimizeConstraints($constraints, $conjunctive); + if ($optimized !== null) { + list($constraints, $conjunctive) = $optimized; + if (\count($constraints) === 1) { + return $constraints[0]; + } + } + return new self($constraints, $conjunctive); + } + /** + @phpstan-return + */ + private static function optimizeConstraints(array $constraints, $conjunctive) + { + if (!$conjunctive) { + $left = $constraints[0]; + $mergedConstraints = array(); + $optimized = \false; + for ($i = 1, $l = \count($constraints); $i < $l; $i++) { + $right = $constraints[$i]; + if ($left instanceof self && $left->conjunctive && $right instanceof self && $right->conjunctive && \count($left->constraints) === 2 && \count($right->constraints) === 2 && ($left0 = (string) $left->constraints[0]) && $left0[0] === '>' && $left0[1] === '=' && ($left1 = (string) $left->constraints[1]) && $left1[0] === '<' && ($right0 = (string) $right->constraints[0]) && $right0[0] === '>' && $right0[1] === '=' && ($right1 = (string) $right->constraints[1]) && $right1[0] === '<' && \substr($left1, 2) === \substr($right0, 3)) { + $optimized = \true; + $left = new MultiConstraint(array($left->constraints[0], $right->constraints[1]), \true); + } else { + $mergedConstraints[] = $left; + $left = $right; + } + } + if ($optimized) { + $mergedConstraints[] = $left; + return array($mergedConstraints, \false); + } + } + return null; + } + private function extractBounds() + { + if (null !== $this->lowerBound) { + return; + } + foreach ($this->constraints as $constraint) { + if (null === $this->lowerBound || null === $this->upperBound) { + $this->lowerBound = $constraint->getLowerBound(); + $this->upperBound = $constraint->getUpperBound(); + continue; + } + if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) { + $this->lowerBound = $constraint->getLowerBound(); + } + if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) { + $this->upperBound = $constraint->getUpperBound(); + } + } + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Interval.php b/Box54346/.box/vendor/composer/semver/src/Interval.php new file mode 100644 index 000000000..4d93d37ea --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Interval.php @@ -0,0 +1,51 @@ +start = $start; + $this->end = $end; + } + public function getStart() + { + return $this->start; + } + public function getEnd() + { + return $this->end; + } + public static function fromZero() + { + static $zero; + if (null === $zero) { + $zero = new Constraint('>=', '0.0.0.0-dev'); + } + return $zero; + } + public static function untilPositiveInfinity() + { + static $positiveInfinity; + if (null === $positiveInfinity) { + $positiveInfinity = new Constraint('<', \PHP_INT_MAX . '.0.0.0'); + } + return $positiveInfinity; + } + public static function any() + { + return new self(self::fromZero(), self::untilPositiveInfinity()); + } + public static function anyDev() + { + return array('names' => array(), 'exclude' => \true); + } + public static function noDev() + { + return array('names' => array(), 'exclude' => \false); + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Intervals.php b/Box54346/.box/vendor/composer/semver/src/Intervals.php new file mode 100644 index 000000000..33533a831 --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Intervals.php @@ -0,0 +1,307 @@ +=' => -3, '<' => -2, '>' => 2, '<=' => 3); + public static function clear() + { + self::$intervalsCache = array(); + } + public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint) + { + if ($constraint instanceof MatchAllConstraint) { + return \true; + } + if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) { + return \false; + } + $intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), \true)); + $candidateIntervals = self::get($candidate); + if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) { + return \false; + } + foreach ($intersectionIntervals['numeric'] as $index => $interval) { + if (!isset($candidateIntervals['numeric'][$index])) { + return \false; + } + if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) { + return \false; + } + if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) { + return \false; + } + } + if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) { + return \false; + } + if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) { + return \false; + } + foreach ($intersectionIntervals['branches']['names'] as $index => $name) { + if ($name !== $candidateIntervals['branches']['names'][$index]) { + return \false; + } + } + return \true; + } + public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b) + { + if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) { + return \true; + } + if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) { + return \false; + } + $intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), \true), \true); + return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0; + } + public static function compactConstraint(ConstraintInterface $constraint) + { + if (!$constraint instanceof MultiConstraint) { + return $constraint; + } + $intervals = self::generateIntervals($constraint); + $constraints = array(); + $hasNumericMatchAll = \false; + if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) { + $constraints[] = $intervals['numeric'][0]->getStart(); + $hasNumericMatchAll = \true; + } else { + $unEqualConstraints = array(); + for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) { + $interval = $intervals['numeric'][$i]; + if ($interval->getEnd()->getOperator() === '<' && $i + 1 < $count) { + $nextInterval = $intervals['numeric'][$i + 1]; + if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') { + if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) { + $unEqualConstraints[] = $interval->getStart(); + } + $unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion()); + continue; + } + } + if (\count($unEqualConstraints) > 0) { + if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) { + $unEqualConstraints[] = $interval->getEnd(); + } + if (\count($unEqualConstraints) > 1) { + $constraints[] = new MultiConstraint($unEqualConstraints, \true); + } else { + $constraints[] = $unEqualConstraints[0]; + } + $unEqualConstraints = array(); + continue; + } + if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') { + $constraints[] = new Constraint('==', $interval->getStart()->getVersion()); + continue; + } + if ((string) $interval->getStart() === (string) Interval::fromZero()) { + $constraints[] = $interval->getEnd(); + } elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) { + $constraints[] = $interval->getStart(); + } else { + $constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), \true); + } + } + } + $devConstraints = array(); + if (0 === \count($intervals['branches']['names'])) { + if ($intervals['branches']['exclude']) { + if ($hasNumericMatchAll) { + return new MatchAllConstraint(); + } + } + } else { + foreach ($intervals['branches']['names'] as $branchName) { + if ($intervals['branches']['exclude']) { + $devConstraints[] = new Constraint('!=', $branchName); + } else { + $devConstraints[] = new Constraint('==', $branchName); + } + } + if ($intervals['branches']['exclude']) { + if (\count($constraints) > 1) { + return new MultiConstraint(\array_merge(array(new MultiConstraint($constraints, \false)), $devConstraints), \true); + } + if (\count($constraints) === 1 && (string) $constraints[0] === (string) Interval::fromZero()) { + if (\count($devConstraints) > 1) { + return new MultiConstraint($devConstraints, \true); + } + return $devConstraints[0]; + } + return new MultiConstraint(\array_merge($constraints, $devConstraints), \true); + } + $constraints = \array_merge($constraints, $devConstraints); + } + if (\count($constraints) > 1) { + return new MultiConstraint($constraints, \false); + } + if (\count($constraints) === 1) { + return $constraints[0]; + } + return new MatchNoneConstraint(); + } + /** + @phpstan-return + */ + public static function get(ConstraintInterface $constraint) + { + $key = (string) $constraint; + if (!isset(self::$intervalsCache[$key])) { + self::$intervalsCache[$key] = self::generateIntervals($constraint); + } + return self::$intervalsCache[$key]; + } + /** + @phpstan-return + */ + private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = \false) + { + if ($constraint instanceof MatchAllConstraint) { + return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); + } + if ($constraint instanceof MatchNoneConstraint) { + return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => \false)); + } + if ($constraint instanceof Constraint) { + return self::generateSingleConstraintIntervals($constraint); + } + if (!$constraint instanceof MultiConstraint) { + throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got ' . \get_class($constraint) . '.'); + } + $constraints = $constraint->getConstraints(); + $numericGroups = array(); + $constraintBranches = array(); + foreach ($constraints as $c) { + $res = self::get($c); + $numericGroups[] = $res['numeric']; + $constraintBranches[] = $res['branches']; + } + if ($constraint->isDisjunctive()) { + $branches = Interval::noDev(); + foreach ($constraintBranches as $b) { + if ($b['exclude']) { + if ($branches['exclude']) { + $branches['names'] = \array_intersect($branches['names'], $b['names']); + } else { + $branches['exclude'] = \true; + $branches['names'] = \array_diff($b['names'], $branches['names']); + } + } else { + if ($branches['exclude']) { + $branches['names'] = \array_diff($branches['names'], $b['names']); + } else { + $branches['names'] = \array_merge($branches['names'], $b['names']); + } + } + } + } else { + $branches = Interval::anyDev(); + foreach ($constraintBranches as $b) { + if ($b['exclude']) { + if ($branches['exclude']) { + $branches['names'] = \array_merge($branches['names'], $b['names']); + } else { + $branches['names'] = \array_diff($branches['names'], $b['names']); + } + } else { + if ($branches['exclude']) { + $branches['names'] = \array_diff($b['names'], $branches['names']); + $branches['exclude'] = \false; + } else { + $branches['names'] = \array_intersect($branches['names'], $b['names']); + } + } + } + } + $branches['names'] = \array_unique($branches['names']); + if (\count($numericGroups) === 1) { + return array('numeric' => $numericGroups[0], 'branches' => $branches); + } + $borders = array(); + foreach ($numericGroups as $group) { + foreach ($group as $interval) { + $borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start'); + $borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end'); + } + } + $opSortOrder = self::$opSortOrder; + \usort($borders, function ($a, $b) use($opSortOrder) { + $order = \version_compare($a['version'], $b['version']); + if ($order === 0) { + return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']]; + } + return $order; + }); + $activeIntervals = 0; + $intervals = array(); + $index = 0; + $activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1; + $start = null; + foreach ($borders as $border) { + if ($border['side'] === 'start') { + $activeIntervals++; + } else { + $activeIntervals--; + } + if (!$start && $activeIntervals >= $activationThreshold) { + $start = new Constraint($border['operator'], $border['version']); + } elseif ($start && $activeIntervals < $activationThreshold) { + if (\version_compare($start->getVersion(), $border['version'], '=') && ($start->getOperator() === '>' && $border['operator'] === '<=' || $start->getOperator() === '>=' && $border['operator'] === '<')) { + unset($intervals[$index]); + } else { + $intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version'])); + $index++; + if ($stopOnFirstValidInterval) { + break; + } + } + $start = null; + } + } + return array('numeric' => $intervals, 'branches' => $branches); + } + /** + @phpstan-return + */ + private static function generateSingleConstraintIntervals(Constraint $constraint) + { + $op = $constraint->getOperator(); + if (\strpos($constraint->getVersion(), 'dev-') === 0) { + $intervals = array(); + $branches = array('names' => array(), 'exclude' => \false); + if ($op === '!=') { + $intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity()); + $branches = array('names' => array($constraint->getVersion()), 'exclude' => \true); + } elseif ($op === '==') { + $branches['names'][] = $constraint->getVersion(); + } + return array('numeric' => $intervals, 'branches' => $branches); + } + if ($op[0] === '>') { + return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev()); + } + if ($op[0] === '<') { + return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev()); + } + if ($op === '!=') { + return array('numeric' => array(new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())), new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); + } + return array('numeric' => array(new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion()))), 'branches' => Interval::noDev()); + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/Semver.php b/Box54346/.box/vendor/composer/semver/src/Semver.php new file mode 100644 index 000000000..ac2188d44 --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/Semver.php @@ -0,0 +1,63 @@ +normalize($version)); + $parsedConstraints = $versionParser->parseConstraints($constraints); + return $parsedConstraints->matches($provider); + } + public static function satisfiedBy(array $versions, $constraints) + { + $versions = \array_filter($versions, function ($version) use($constraints) { + return Semver::satisfies($version, $constraints); + }); + return \array_values($versions); + } + public static function sort(array $versions) + { + return self::usort($versions, self::SORT_ASC); + } + public static function rsort(array $versions) + { + return self::usort($versions, self::SORT_DESC); + } + private static function usort(array $versions, $direction) + { + if (null === self::$versionParser) { + self::$versionParser = new VersionParser(); + } + $versionParser = self::$versionParser; + $normalized = array(); + foreach ($versions as $key => $version) { + $normalizedVersion = $versionParser->normalize($version); + $normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); + $normalized[] = array($normalizedVersion, $key); + } + \usort($normalized, function (array $left, array $right) use($direction) { + if ($left[0] === $right[0]) { + return 0; + } + if (Comparator::lessThan($left[0], $right[0])) { + return -$direction; + } + return $direction; + }); + $sorted = array(); + foreach ($normalized as $item) { + $sorted[] = $versions[$item[1]]; + } + return $sorted; + } +} diff --git a/Box54346/.box/vendor/composer/semver/src/VersionParser.php b/Box54346/.box/vendor/composer/semver/src/VersionParser.php new file mode 100644 index 000000000..63ecc9db7 --- /dev/null +++ b/Box54346/.box/vendor/composer/semver/src/VersionParser.php @@ -0,0 +1,336 @@ +expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? \ltrim($matches[$index + 1], '.-') : ''); + } + if (!empty($matches[$index + 2])) { + $version .= '-dev'; + } + return $version; + } + if (\preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { + try { + $normalized = $this->normalizeBranch($match[1]); + if (\strpos($normalized, 'dev-') === \false) { + return $normalized; + } + } catch (\Exception $e) { + } + } + $extraMessage = ''; + if (\preg_match('{ +as +' . \preg_quote($version) . '(?:@(?:' . self::$stabilitiesRegex . '))?$}', $fullVersion)) { + $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; + } elseif (\preg_match('{^' . \preg_quote($version) . '(?:@(?:' . self::$stabilitiesRegex . '))? +as +}', $fullVersion)) { + $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; + } + throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage); + } + public function parseNumericAliasPrefix($branch) + { + if (\preg_match('{^(?P(\\d++\\.)*\\d++)(?:\\.x)?-dev$}i', (string) $branch, $matches)) { + return $matches['version'] . '.'; + } + return \false; + } + public function normalizeBranch($name) + { + $name = \trim((string) $name); + if (\preg_match('{^v?(\\d++)(\\.(?:\\d++|[xX*]))?(\\.(?:\\d++|[xX*]))?(\\.(?:\\d++|[xX*]))?$}i', $name, $matches)) { + $version = ''; + for ($i = 1; $i < 5; ++$i) { + $version .= isset($matches[$i]) ? \str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; + } + return \str_replace('x', '9999999', $version) . '-dev'; + } + return 'dev-' . $name; + } + public function normalizeDefaultBranch($name) + { + if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') { + return '9999999-dev'; + } + return (string) $name; + } + public function parseConstraints($constraints) + { + $prettyConstraint = (string) $constraints; + $orConstraints = \preg_split('{\\s*\\|\\|?\\s*}', \trim((string) $constraints)); + if (\false === $orConstraints) { + throw new \RuntimeException('Failed to preg_split string: ' . $constraints); + } + $orGroups = array(); + foreach ($orConstraints as $constraints) { + $andConstraints = \preg_split('{(?< ,]) *(? 1) { + $constraintObjects = array(); + foreach ($andConstraints as $constraint) { + foreach ($this->parseConstraint($constraint) as $parsedConstraint) { + $constraintObjects[] = $parsedConstraint; + } + } + } else { + $constraintObjects = $this->parseConstraint($andConstraints[0]); + } + if (1 === \count($constraintObjects)) { + $constraint = $constraintObjects[0]; + } else { + $constraint = new MultiConstraint($constraintObjects); + } + $orGroups[] = $constraint; + } + $constraint = MultiConstraint::create($orGroups, \false); + $constraint->setPrettyString($prettyConstraint); + return $constraint; + } + /** + @phpstan-return + */ + private function parseConstraint($constraint) + { + if (\preg_match('{^([^,\\s]++) ++as ++([^,\\s]++)$}', $constraint, $match)) { + $constraint = $match[1]; + } + if (\preg_match('{^([^,\\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) { + $constraint = '' !== $match[1] ? $match[1] : '*'; + if ($match[2] !== 'stable') { + $stabilityModifier = $match[2]; + } + } + if (\preg_match('{^(dev-[^,\\s@]+?|[^,\\s@]+?\\.x-dev)#.+$}i', $constraint, $match)) { + $constraint = $match[1]; + } + if (\preg_match('{^(v)?[xX*](\\.[xX*])*$}i', $constraint, $match)) { + if (!empty($match[1]) || !empty($match[2])) { + return array(new Constraint('>=', '0.0.0.0-dev')); + } + return array(new MatchAllConstraint()); + } + $versionRegex = 'v?(\\d++)(?:\\.(\\d++))?(?:\\.(\\d++))?(?:\\.(\\d++))?(?:' . self::$modifierRegex . '|\\.([xX*][.-]?dev))(?:\\+[^\\s]+)?'; + if (\preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { + if (\strpos($constraint, '~>') === 0) { + throw new \UnexpectedValueException('Could not parse version constraint ' . $constraint . ': ' . 'Invalid operator "~>", you probably meant to use the "~" operator'); + } + if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { + $position = 4; + } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { + $position = 3; + } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { + $position = 2; + } else { + $position = 1; + } + if (!empty($matches[8])) { + $position++; + } + $stabilitySuffix = ''; + if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { + $stabilitySuffix .= '-dev'; + } + $lowVersion = $this->normalize(\substr($constraint . $stabilitySuffix, 1)); + $lowerBound = new Constraint('>=', $lowVersion); + $highPosition = \max(1, $position - 1); + $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; + $upperBound = new Constraint('<', $highVersion); + return array($lowerBound, $upperBound); + } + if (\preg_match('{^\\^' . $versionRegex . '($)}i', $constraint, $matches)) { + if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { + $position = 1; + } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { + $position = 2; + } else { + $position = 3; + } + $stabilitySuffix = ''; + if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { + $stabilitySuffix .= '-dev'; + } + $lowVersion = $this->normalize(\substr($constraint . $stabilitySuffix, 1)); + $lowerBound = new Constraint('>=', $lowVersion); + $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; + $upperBound = new Constraint('<', $highVersion); + return array($lowerBound, $upperBound); + } + if (\preg_match('{^v?(\\d++)(?:\\.(\\d++))?(?:\\.(\\d++))?(?:\\.[xX*])++$}', $constraint, $matches)) { + if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { + $position = 3; + } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { + $position = 2; + } else { + $position = 1; + } + $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; + $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; + if ($lowVersion === '0.0.0.0-dev') { + return array(new Constraint('<', $highVersion)); + } + return array(new Constraint('>=', $lowVersion), new Constraint('<', $highVersion)); + } + if (\preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { + $lowStabilitySuffix = ''; + if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) { + $lowStabilitySuffix = '-dev'; + } + $lowVersion = $this->normalize($matches['from']); + $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); + $empty = function ($x) { + return $x === 0 || $x === '0' ? \false : empty($x); + }; + if (!$empty($matches[12]) && !$empty($matches[13]) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) { + $highVersion = $this->normalize($matches['to']); + $upperBound = new Constraint('<=', $highVersion); + } else { + $highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]); + $this->normalize($matches['to']); + $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev'; + $upperBound = new Constraint('<', $highVersion); + } + return array($lowerBound, $upperBound); + } + if (\preg_match('{^(<>|!=|>=?|<=?|==?)?\\s*(.*)}', $constraint, $matches)) { + try { + try { + $version = $this->normalize($matches[2]); + } catch (\UnexpectedValueException $e) { + if (\substr($matches[2], -4) === '-dev' && \preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) { + $version = $this->normalize('dev-' . \substr($matches[2], 0, -4)); + } else { + throw $e; + } + } + $op = $matches[1] ?: '='; + if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') { + $version .= '-' . $stabilityModifier; + } elseif ('<' === $op || '>=' === $op) { + if (!\preg_match('/-' . self::$modifierRegex . '$/', \strtolower($matches[2]))) { + if (\strpos($matches[2], 'dev-') !== 0) { + $version .= '-dev'; + } + } + } + return array(new Constraint($matches[1] ?: '=', $version)); + } catch (\Exception $e) { + } + } + $message = 'Could not parse version constraint ' . $constraint; + if (isset($e)) { + $message .= ': ' . $e->getMessage(); + } + throw new \UnexpectedValueException($message); + } + /** + @phpstan-param + */ + private function manipulateVersionString(array $matches, $position, $increment = 0, $pad = '0') + { + for ($i = 4; $i > 0; --$i) { + if ($i > $position) { + $matches[$i] = $pad; + } elseif ($i === $position && $increment) { + $matches[$i] += $increment; + if ($matches[$i] < 0) { + $matches[$i] = $pad; + --$position; + if ($i === 1) { + return null; + } + } + } + } + return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; + } + private function expandStability($stability) + { + $stability = \strtolower($stability); + switch ($stability) { + case 'a': + return 'alpha'; + case 'b': + return 'beta'; + case 'p': + case 'pl': + return 'patch'; + case 'rc': + return 'RC'; + default: + return $stability; + } + } +} diff --git a/Box54346/box.json.dist b/Box54346/box.json.dist new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/Box54346/box.json.dist @@ -0,0 +1 @@ +{} diff --git a/Box54346/composer.json b/Box54346/composer.json new file mode 100644 index 000000000..0bb88ac7c --- /dev/null +++ b/Box54346/composer.json @@ -0,0 +1,15 @@ +{ + "bin": "index.php", + "require": { + "php": "^8.1" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpstan/extension-installer": "^1.2" + }, + "config": { + "allow-plugins": { + "phpstan/extension-installer": true + } + } +} diff --git a/Box54346/composer.lock b/Box54346/composer.lock new file mode 100644 index 000000000..677608add --- /dev/null +++ b/Box54346/composer.lock @@ -0,0 +1,124 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "d81279cb2a39d4658ba9a88f221c4c0b", + "packages": [], + "packages-dev": [ + { + "name": "phpstan/extension-installer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.2.0" + }, + "time": "2022-10-17T12:59:16+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.9.17", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/204e459e7822f2c586463029f5ecec31bb45a1f2", + "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.9.17" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-02-08T12:25:00+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/Box54346/expected-output b/Box54346/expected-output new file mode 100644 index 000000000..c168b4865 --- /dev/null +++ b/Box54346/expected-output @@ -0,0 +1 @@ +Everything is fine! diff --git a/Box54346/index.php b/Box54346/index.php new file mode 100644 index 000000000..f4230e5a5 --- /dev/null +++ b/Box54346/index.php @@ -0,0 +1,15 @@ + + * Théo Fidry + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +echo 'Everything is fine!'.PHP_EOL; diff --git a/Box54346/installed_after.json b/Box54346/installed_after.json new file mode 100644 index 000000000..f20a6c47c --- /dev/null +++ b/Box54346/installed_after.json @@ -0,0 +1,5 @@ +{ + "packages": [], + "dev": false, + "dev-package-names": [] +} diff --git a/Box54346/installed_after.php b/Box54346/installed_after.php new file mode 100644 index 000000000..9f9a1d7f4 --- /dev/null +++ b/Box54346/installed_after.php @@ -0,0 +1,23 @@ + array( + 'name' => '__root__', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => false, + ), + 'versions' => array( + '__root__' => array( + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + ), +); diff --git a/Box54346/vendor/autoload.php b/Box54346/vendor/autoload.php new file mode 100644 index 000000000..5d81697be --- /dev/null +++ b/Box54346/vendor/autoload.php @@ -0,0 +1,25 @@ +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if ( + (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) + || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) + ) { + include("phpvfscomposer://" . __DIR__ . '/..'.'/phpstan/phpstan/phpstan'); + exit(0); + } +} + +include __DIR__ . '/..'.'/phpstan/phpstan/phpstan'; diff --git a/Box54346/vendor/bin/phpstan.phar b/Box54346/vendor/bin/phpstan.phar new file mode 100755 index 000000000..caa3e24f8 --- /dev/null +++ b/Box54346/vendor/bin/phpstan.phar @@ -0,0 +1,120 @@ +#!/usr/bin/env php +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if ( + (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) + || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) + ) { + include("phpvfscomposer://" . __DIR__ . '/..'.'/phpstan/phpstan/phpstan.phar'); + exit(0); + } +} + +include __DIR__ . '/..'.'/phpstan/phpstan/phpstan.phar'; diff --git a/Box54346/vendor/composer/ClassLoader.php b/Box54346/vendor/composer/ClassLoader.php new file mode 100644 index 000000000..a72151c77 --- /dev/null +++ b/Box54346/vendor/composer/ClassLoader.php @@ -0,0 +1,585 @@ + + * 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 https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var \Closure(string):void */ + private static $includeFile; + + /** @var ?string */ + private $vendorDir; + + // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ + private $missingClasses = array(); + + /** @var ?string */ + private $apcuPrefix; + + /** + * @var self[] + */ + private static $registeredLoaders = array(); + + /** + * @param ?string $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return string[] + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array[] + * @psalm-return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return string[] Array of classname => path + * @psalm-return array + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void + */ + 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 string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + 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 string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + 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 string[]|string $paths The PSR-0 base directories + * + * @return void + */ + 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 string[]|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + $includeFile = self::$includeFile; + $includeFile($file); + + return true; + } + + return null; + } + + /** + * 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; + } + + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + 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; + } + + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } +} diff --git a/Box54346/vendor/composer/InstalledVersions.php b/Box54346/vendor/composer/InstalledVersions.php new file mode 100644 index 000000000..c6b54af7b --- /dev/null +++ b/Box54346/vendor/composer/InstalledVersions.php @@ -0,0 +1,352 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } +} diff --git a/Box54346/vendor/composer/LICENSE b/Box54346/vendor/composer/LICENSE new file mode 100644 index 000000000..f27399a04 --- /dev/null +++ b/Box54346/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +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/Box54346/vendor/composer/autoload_classmap.php b/Box54346/vendor/composer/autoload_classmap.php new file mode 100644 index 000000000..0fb0a2c19 --- /dev/null +++ b/Box54346/vendor/composer/autoload_classmap.php @@ -0,0 +1,10 @@ + $vendorDir . '/composer/InstalledVersions.php', +); diff --git a/Box54346/vendor/composer/autoload_namespaces.php b/Box54346/vendor/composer/autoload_namespaces.php new file mode 100644 index 000000000..15a2ff3ad --- /dev/null +++ b/Box54346/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ +register(true); + + return $loader; + } +} diff --git a/Box54346/vendor/composer/autoload_static.php b/Box54346/vendor/composer/autoload_static.php new file mode 100644 index 000000000..403483d44 --- /dev/null +++ b/Box54346/vendor/composer/autoload_static.php @@ -0,0 +1,20 @@ + __DIR__ . '/..' . '/composer/InstalledVersions.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->classMap = ComposerStaticInitd675878ac2c7da13231e6f107702b12a::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/Box54346/vendor/composer/installed.json b/Box54346/vendor/composer/installed.json new file mode 100644 index 000000000..ce833874b --- /dev/null +++ b/Box54346/vendor/composer/installed.json @@ -0,0 +1,118 @@ +{ + "packages": [ + { + "name": "phpstan/extension-installer", + "version": "1.2.0", + "version_normalized": "1.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "time": "2022-10-17T12:59:16+00:00", + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.2.0" + }, + "install-path": "../phpstan/extension-installer" + }, + { + "name": "phpstan/phpstan", + "version": "1.9.17", + "version_normalized": "1.9.17.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/204e459e7822f2c586463029f5ecec31bb45a1f2", + "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "time": "2023-02-08T12:25:00+00:00", + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.9.17" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "install-path": "../phpstan/phpstan" + } + ], + "dev": true, + "dev-package-names": [ + "phpstan/extension-installer", + "phpstan/phpstan" + ] +} diff --git a/Box54346/vendor/composer/installed.php b/Box54346/vendor/composer/installed.php new file mode 100644 index 000000000..d188fbb22 --- /dev/null +++ b/Box54346/vendor/composer/installed.php @@ -0,0 +1,41 @@ + array( + 'name' => '__root__', + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => true, + ), + 'versions' => array( + '__root__' => array( + 'pretty_version' => 'dev-main', + 'version' => 'dev-main', + 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'phpstan/extension-installer' => array( + 'pretty_version' => '1.2.0', + 'version' => '1.2.0.0', + 'reference' => 'f06dbb052ddc394e7896fcd1cfcd533f9f6ace40', + 'type' => 'composer-plugin', + 'install_path' => __DIR__ . '/../phpstan/extension-installer', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpstan/phpstan' => array( + 'pretty_version' => '1.9.17', + 'version' => '1.9.17.0', + 'reference' => '204e459e7822f2c586463029f5ecec31bb45a1f2', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpstan/phpstan', + 'aliases' => array(), + 'dev_requirement' => true, + ), + ), +); diff --git a/Box54346/vendor/composer/platform_check.php b/Box54346/vendor/composer/platform_check.php new file mode 100644 index 000000000..4c3a5d68f --- /dev/null +++ b/Box54346/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 80100)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/Box54346/vendor/phpstan/extension-installer/LICENSE b/Box54346/vendor/phpstan/extension-installer/LICENSE new file mode 100644 index 000000000..afe8bee4f --- /dev/null +++ b/Box54346/vendor/phpstan/extension-installer/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Ondřej Mirtes + +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/Box54346/vendor/phpstan/extension-installer/README.md b/Box54346/vendor/phpstan/extension-installer/README.md new file mode 100644 index 000000000..70afa415e --- /dev/null +++ b/Box54346/vendor/phpstan/extension-installer/README.md @@ -0,0 +1,77 @@ +# PHPStan Extension Installer + +[![Build](https://github.com/phpstan/extension-installer/workflows/Build/badge.svg)](https://github.com/phpstan/extension-installer/actions) +[![Latest Stable Version](https://poser.pugx.org/phpstan/extension-installer/v/stable)](https://packagist.org/packages/phpstan/extension-installer) +[![License](https://poser.pugx.org/phpstan/extension-installer/license)](https://packagist.org/packages/phpstan/extension-installer) + +Composer plugin for automatic installation of [PHPStan](https://phpstan.org/) extensions. + +# Motivation + +```diff +diff --git a/phpstan.neon b/phpstan.neon +index db4e3df32e..2ca30fa20a 100644 +--- a/phpstan.neon ++++ b/phpstan.neon +@@ -1,12 +1,3 @@ +-includes: +- - vendor/phpstan/phpstan-doctrine/extension.neon +- - vendor/phpstan/phpstan-doctrine/rules.neon +- - vendor/phpstan/phpstan-nette/extension.neon +- - vendor/phpstan/phpstan-nette/rules.neon +- - vendor/phpstan/phpstan-phpunit/extension.neon +- - vendor/phpstan/phpstan-phpunit/rules.neon +- - vendor/phpstan/phpstan-strict-rules/rules.neon +- + parameters: + autoload_directories: + - %rootDir%/../../../build/SlevomatSniffs +diff --git a/composer.json b/composer.json +index 1b578dd624..f6ebf6e477 100644 +--- a/composer.json ++++ b/composer.json +@@ -142,6 +142,7 @@ + "jakub-onderka/php-parallel-lint": "1.0.0", + "justinrainbow/json-schema": "5.2.8", + "ondrejmirtes/mocktainer": "0.8", ++ "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.11.7", + "phpstan/phpstan-doctrine": "^0.11.3", + "phpstan/phpstan-nette": "^0.11.1", +``` + +## Usage + +```bash +composer require --dev phpstan/extension-installer +``` + +Starting from Composer 2.2.0 you'll get the following question: +``` +phpstan/extension-installer contains a Composer plugin which is currently not in your allow-plugins config. See https://getcomposer.org/allow-plugins +Do you trust "phpstan/extension-installer" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?] +``` + +Answer with `y` to allow the plugin. + +## Instructions for extension developers + +It's best (but optional) to set the extension's composer package [type](https://getcomposer.org/doc/04-schema.md#type) to `phpstan-extension` for this plugin to be able to recognize it and to be [discoverable on Packagist](https://packagist.org/explore/?type=phpstan-extension). + +Add `phpstan` key in the extension `composer.json`'s `extra` section: + +```json +{ + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + } +} +``` + +## Limitations + +The extension installer depends on Composer script events, therefore you cannot use `--no-scripts` flag. diff --git a/Box54346/vendor/phpstan/extension-installer/build-cs/composer.json b/Box54346/vendor/phpstan/extension-installer/build-cs/composer.json new file mode 100644 index 000000000..e30797108 --- /dev/null +++ b/Box54346/vendor/phpstan/extension-installer/build-cs/composer.json @@ -0,0 +1,12 @@ +{ + "require-dev": { + "consistence-community/coding-standard": "^3.10", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "slevomat/coding-standard": "^7.0" + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + } +} diff --git a/Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock b/Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock new file mode 100644 index 000000000..4bcc8de43 --- /dev/null +++ b/Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock @@ -0,0 +1,322 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "4485bbedba7bcc71ace5f69dbb9b6c47", + "packages": [], + "packages-dev": [ + { + "name": "consistence-community/coding-standard", + "version": "3.11.1", + "source": { + "type": "git", + "url": "https://github.com/consistence-community/coding-standard.git", + "reference": "4632fead8c9ee8f50044fcbce9f66c797b34c0df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/consistence-community/coding-standard/zipball/4632fead8c9ee8f50044fcbce9f66c797b34c0df", + "reference": "4632fead8c9ee8f50044fcbce9f66c797b34c0df", + "shasum": "" + }, + "require": { + "php": ">=7.4", + "slevomat/coding-standard": "~7.0", + "squizlabs/php_codesniffer": "~3.6.0" + }, + "replace": { + "consistence/coding-standard": "3.10.*" + }, + "require-dev": { + "phing/phing": "2.16.4", + "php-parallel-lint/php-parallel-lint": "1.3.0", + "phpunit/phpunit": "9.5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Consistence\\": [ + "Consistence" + ] + }, + "classmap": [ + "Consistence" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vašek Purchart", + "email": "me@vasekpurchart.cz", + "homepage": "http://vasekpurchart.cz" + } + ], + "description": "Consistence - Coding Standard - PHP Code Sniffer rules", + "keywords": [ + "Coding Standard", + "PHPCodeSniffer", + "codesniffer", + "coding", + "cs", + "phpcs", + "ruleset", + "sniffer", + "standard" + ], + "support": { + "issues": "https://github.com/consistence-community/coding-standard/issues", + "source": "https://github.com/consistence-community/coding-standard/tree/3.11.1" + }, + "time": "2021-05-03T18:13:22+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.2", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2022-02-04T12:51:07+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "981cc368a216c988e862a75e526b6076987d1b50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", + "reference": "981cc368a216c988e862a75e526b6076987d1b50", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1" + }, + "time": "2022-05-05T11:32:40+00:00" + }, + { + "name": "slevomat/coding-standard", + "version": "7.2.1", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.5.1", + "squizlabs/php_codesniffer": "^3.6.2" + }, + "require-dev": { + "phing/phing": "2.17.3", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.4.10|1.7.1", + "phpstan/phpstan-deprecation-rules": "1.0.0", + "phpstan/phpstan-phpunit": "1.0.0|1.1.1", + "phpstan/phpstan-strict-rules": "1.2.3", + "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/7.2.1" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2022-05-25T10:58:12+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.6.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", + "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2021-12-12T21:44:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/Box54346/vendor/phpstan/extension-installer/composer.json b/Box54346/vendor/phpstan/extension-installer/composer.json new file mode 100644 index 000000000..c57fcfe52 --- /dev/null +++ b/Box54346/vendor/phpstan/extension-installer/composer.json @@ -0,0 +1,32 @@ +{ + "name": "phpstan/extension-installer", + "type": "composer-plugin", + "description": "Composer plugin for automatic installation of PHPStan extensions", + "license": [ + "MIT" + ], + "require": { + "php": "^7.2 || ^8.0", + "composer-plugin-api": "^2.0", + "phpstan/phpstan": "^1.8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "config": { + "sort-packages": true, + "allow-plugins": { + "ocramius/package-versions": true + } + }, + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + } +} diff --git a/Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php b/Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php new file mode 100644 index 000000000..0a1fd5b1b --- /dev/null +++ b/Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php @@ -0,0 +1,22 @@ + + */ + public static function getSubscribedEvents(): array + { + return [ + ScriptEvents::POST_INSTALL_CMD => 'process', + ScriptEvents::POST_UPDATE_CMD => 'process', + ]; + } + + public function process(Event $event): void + { + $io = $event->getIO(); + + if (!file_exists(__DIR__)) { + $io->write('phpstan/extension-installer: Package not found (probably scheduled for removal); extensions installation skipped.'); + return; + } + + $composer = $event->getComposer(); + $installationManager = $composer->getInstallationManager(); + + $generatedConfigFilePath = __DIR__ . '/GeneratedConfig.php'; + $oldGeneratedConfigFileHash = null; + if (is_file($generatedConfigFilePath)) { + $oldGeneratedConfigFileHash = md5_file($generatedConfigFilePath); + } + $notInstalledPackages = []; + $installedPackages = []; + + $data = []; + $fs = new Filesystem(); + foreach ($composer->getRepositoryManager()->getLocalRepository()->getPackages() as $package) { + if ( + $package->getType() !== 'phpstan-extension' + && !isset($package->getExtra()['phpstan']) + ) { + if ( + strpos($package->getName(), 'phpstan') !== false + && !in_array($package->getName(), [ + 'phpstan/phpstan', + 'phpstan/phpstan-shim', + 'phpstan/phpdoc-parser', + 'phpstan/extension-installer', + ], true) + ) { + $notInstalledPackages[$package->getName()] = $package->getFullPrettyVersion(); + } + continue; + } + + $installPath = $installationManager->getInstallPath($package); + + $absoluteInstallPath = $fs->isAbsolutePath($installPath) + ? $installPath + : getcwd() . DIRECTORY_SEPARATOR . $installPath; + + $data[$package->getName()] = [ + 'install_path' => $absoluteInstallPath, + 'relative_install_path' => $fs->findShortestPath(dirname($generatedConfigFilePath), $absoluteInstallPath, true), + 'extra' => $package->getExtra()['phpstan'] ?? null, + 'version' => $package->getFullPrettyVersion(), + ]; + + $installedPackages[$package->getName()] = true; + } + + ksort($data); + ksort($installedPackages); + ksort($notInstalledPackages); + + $generatedConfigFileContents = sprintf(self::$generatedFileTemplate, var_export($data, true), var_export($notInstalledPackages, true)); + file_put_contents($generatedConfigFilePath, $generatedConfigFileContents); + $io->write('phpstan/extension-installer: Extensions installed'); + + if ($oldGeneratedConfigFileHash === md5($generatedConfigFileContents)) { + return; + } + + foreach (array_keys($installedPackages) as $name) { + $io->write(sprintf('> %s: installed', $name)); + } + + foreach (array_keys($notInstalledPackages) as $name) { + $io->write(sprintf('> %s: not supported', $name)); + } + } + +} diff --git a/Box54346/vendor/phpstan/phpstan/LICENSE b/Box54346/vendor/phpstan/phpstan/LICENSE new file mode 100644 index 000000000..7c0f2b7b6 --- /dev/null +++ b/Box54346/vendor/phpstan/phpstan/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Ondřej Mirtes + +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/Box54346/vendor/phpstan/phpstan/README.md b/Box54346/vendor/phpstan/phpstan/README.md new file mode 100644 index 000000000..70f12d894 --- /dev/null +++ b/Box54346/vendor/phpstan/phpstan/README.md @@ -0,0 +1,103 @@ +

PHPStan - PHP Static Analysis Tool

+ +

+ PHPStan +

+ +

+ Build Status + Latest Stable Version + Total Downloads + License + PHPStan Enabled +

+ +------ + +PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs +even before you write tests for the code. It moves PHP closer to compiled languages in the sense that the correctness of each line of the code +can be checked before you run the actual line. + +**[Read more about PHPStan »](https://phpstan.org/)** + +**[Try out PHPStan on the on-line playground! »](https://phpstan.org/try)** + +## Sponsors + +TheCodingMachine +    +Private Packagist +
+Musement +    +Blackfire.io +
+iO +    +TicketSwap +
+ShipMonk +    +Togetter +
+RightCapital +    +ContentKing +
+ZOL +    +Psyonix +
+Shopware +    +Craft CMS +
+Worksome +    +campoint AG +
+Crisp.nl +    +Inviqa +
+CDN77 + + +[**You can now sponsor my open-source work on PHPStan through GitHub Sponsors.**](https://github.com/sponsors/ondrejmirtes) + +Does GitHub already have your 💳? Do you use PHPStan to find 🐛 before they reach production? [Send a couple of 💸 a month my way too.](https://github.com/sponsors/ondrejmirtes) Thank you! + +One-time donations [through PayPal](https://paypal.me/phpstan) are also accepted. To request an invoice, [contact me](mailto:ondrej@mirtes.cz) through e-mail. + +## Documentation + +All the documentation lives on the [phpstan.org website](https://phpstan.org/): + +* [Getting Started & User Guide](https://phpstan.org/user-guide/getting-started) +* [Config Reference](https://phpstan.org/config-reference) +* [PHPDocs Basics](https://phpstan.org/writing-php-code/phpdocs-basics) & [PHPDoc Types](https://phpstan.org/writing-php-code/phpdoc-types) +* [Extension Library](https://phpstan.org/user-guide/extension-library) +* [Developing Extensions](https://phpstan.org/developing-extensions/extension-types) +* [API Reference](https://apiref.phpstan.org/) + +## PHPStan Pro + +PHPStan Pro is a paid add-on on top of open-source PHPStan Static Analysis Tool with these premium features: + +* Web UI for browsing found errors, you can click and open your editor of choice on the offending line. +* Continuous analysis (watch mode): scans changed files in the background, refreshes the UI automatically. +* Interactive fixer: lets you choose the right fix for found errors :blush: + +Try it on PHPStan 0.12.45 or later by running it with the `--pro` option. You can create an account either by following the on-screen instructions, or by visiting [account.phpstan.com](https://account.phpstan.com/). + +After 30-day free trial period it costs 7 EUR for individuals monthly, 70 EUR for teams (up to 25 members). By paying for PHPStan Pro, you're supporting the development of open-source PHPStan. + +You can read more about it on [PHPStan's website](https://phpstan.org/blog/introducing-phpstan-pro). + +## Code of Conduct + +This project adheres to a [Contributor Code of Conduct](https://github.com/phpstan/phpstan/blob/master/CODE_OF_CONDUCT.md). By participating in this project and its community, you are expected to uphold this code. + +## Contributing + +Any contributions are welcome. PHPStan's source code open to pull requests lives at [`phpstan/phpstan-src`](https://github.com/phpstan/phpstan-src). diff --git a/Box54346/vendor/phpstan/phpstan/bootstrap.php b/Box54346/vendor/phpstan/phpstan/bootstrap.php new file mode 100644 index 000000000..204221a3a --- /dev/null +++ b/Box54346/vendor/phpstan/phpstan/bootstrap.php @@ -0,0 +1,60 @@ +loadClass($class); + + return; + } + if (strpos($class, 'PHPStan\\') !== 0 || strpos($class, 'PHPStan\\PhpDocParser\\') === 0) { + return; + } + + if (!in_array('phar', stream_get_wrappers(), true)) { + throw new \Exception('Phar wrapper is not registered. Please review your php.ini settings.'); + } + + $filename = str_replace('\\', DIRECTORY_SEPARATOR, $class); + if (strpos($class, 'PHPStan\\BetterReflection\\') === 0) { + $filename = substr($filename, strlen('PHPStan\\BetterReflection\\')); + $filepath = 'phar://' . __DIR__ . '/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/' . $filename . '.php'; + } else { + $filename = substr($filename, strlen('PHPStan\\')); + $filepath = 'phar://' . __DIR__ . '/phpstan.phar/src/' . $filename . '.php'; + } + + if (!file_exists($filepath)) { + return; + } + + require $filepath; + } +} + +spl_autoload_register([PharAutoloader::class, 'loadClass']); diff --git a/Box54346/vendor/phpstan/phpstan/composer.json b/Box54346/vendor/phpstan/phpstan/composer.json new file mode 100644 index 000000000..55182f6cf --- /dev/null +++ b/Box54346/vendor/phpstan/phpstan/composer.json @@ -0,0 +1,19 @@ +{ + "name": "phpstan/phpstan", + "description": "PHPStan - PHP Static Analysis Tool", + "license": ["MIT"], + "keywords": ["dev", "static analysis"], + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "autoload": { + "files": ["bootstrap.php"] + } +} diff --git a/Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon b/Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon new file mode 100644 index 000000000..01fee972d --- /dev/null +++ b/Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon @@ -0,0 +1,2 @@ +includes: + - phar://phpstan.phar/conf/bleedingEdge.neon diff --git a/Box54346/vendor/phpstan/phpstan/phpstan b/Box54346/vendor/phpstan/phpstan/phpstan new file mode 100755 index 000000000..7a08ef485 --- /dev/null +++ b/Box54346/vendor/phpstan/phpstan/phpstan @@ -0,0 +1,8 @@ +#!/usr/bin/env php +bX66|_yDA)^D>|#Sv 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

JfS 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

)qKO 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

Xo5E6B2!Z+^TvjKA#CfFYyX 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

3G3n5S%nh{^mY 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%0A0$*D zZb92UZb9_fmrb;{Egvi!=Y>G=Lj)_kFis2p8^lMDDdfwfa#h6=TKCyTO3DevMuWJf zWnj>?XGt{~;30cAoPJ-J&;In{=m7L zcs#*{9ZE3So2sz$S-pvr#U`DOa6WrRy6+|!8knD3hM8f#S~GzsrtdYM#LvA;_efy)#jCji0Om^*==jFb%D|#t7e?Q9YRu8R(c8lt zxhx1lVQ|slkA4=sCoZ*lz!(n>sBr$+0xUKCCFLb$J?3S`Z^*D`DKcrF&7HJ;MWabS zBC}7Q%+hI!fg*VMSxP~sqygT${|1%W6TU--0><2mBJB`dL}#}U&XYK>;YPF2c-mGU2Nw#u? zH4t9=FDSf!L1p!xs>)^vH;_hyE>bLPa+SLv|U z2=ws=)kcCw%OP)IJE&7IUk%qW5#iOF_4UWko*o<>>}`C%wFiN?`FwA03lBD)K0ey~ zcIU}s{1r$v;AYOI^dcgM;f|L8M9Mkt1HZz)tn?B4$}z{{){L8ScgBAQaOQ4M-wfkS zUL?KzAVJIJHtIqvbM@7b?a*@F<=jDbiKbcm4U;b)>C{UF zTkuk3VFt@C!lrf{r36-e9iP7H9%4Dm1gjpNhFi-(!Ov2|@V%eN*9DrJb2(3%aAw_kfCH~6N6WP=S2 zwtSF%I8i!d7~^zo9p&T6`atp-`B*o_vB3E0HW7w9!#dF(oY*>j6mbxRC(mu;z#9*_&Ux;-TnzYDN;+V z)u92s>V}BD7_KA2Ie-it$Izm%FfMXK!7I6xPOAhUb@p$Y5zV^5@84M3jUE(SSAKpz zVqG`+@a&xR0I>E4BN40V3@8uGGIRph;r1S^E5iqWdG`E(NWgDfdwaan@sPHcgl0tD zk8D>tydKCcgl`=Aeey#~FC}3W;+rwie)5A`ViL2mfK++LXmdz1d?hj8;=N|5{wZ2>`vj*2+{?SwT_uPeoF%1ss z;uhbB5@XV=9K$WFxZN6nWnDPbAEK-ZR^08JFl$l2A@MGP!YwO1$OibCMRz>mzP_GW z`$lg?DzVjeJR!IuQj*SC3E}YUE26Eqx0H3IGo7WnlKM?+b(EKlK12E#se;g#(?^Ka z)@J+^aLm|@pB6WxkGQ%m`>Ef2Iky%;BxEE7_^J(qMeu}Y!j-$jnqk_Sx^aq2s~g=f z3D7!uA?qtA%d_?UwZ(O7izvZFeyBp8sQH?*ywG~q<6F-z=4kWW4x-MrbVwt=D z?tOy4@+S#U(I=i(bjN*+YaihSv9BkhZ9(lj>G8Y>b+ijO25==@cs9A5OnYbW9LN!T z#{UpKY!K79K-dfln&_f-SlJFcLq z^xE9WI%d=z|H#D{GX9%$aNUWz%9OT&olwzgUiOYVj3IQ6k6F|eUYKqVm1uCk9~?CX ziJoPi#IN3T#zU9}o(+0GI4$$P?&px^K1HFJWf*uu5nyFQusLHPqLT*PUy>puc>q0Bc=TB-E9!ptmFi zcG4TRN2E@?_$1nJM59@EW(tOOx#Cc;C0mUmt*nCUFvD^=CX)A3y$Dskhwvu?o$LxWs_GbfXn}+#FpDx=a*C{*xKiTn{+tiALPqn74G>%B>?fJhFE3yXtf`VTYDc z?(49v$nYZ5k>b+L%zC>_L~zL8@PCx|jsd(luytv#~QI(7|(*OqL8RxrNS7(o`?PEdJU$w$HU-Mkq5 z@bTz4Z%Cn8dUhz2oTv{eDuLnQWkU&u6kC%`A8sSt;qw1Lmz1kW%irM>-uGM`;rS3u zzw~w&oNIcy3uyzdB;2v^FLuT*tt2GJh(X41;wCOu&K@g3*+Wy6DsAj_-j+nyZo;Rf zFTd#={|K$DL+vsLjcvmFQfr`OT5oG_^Oi>W?Gf!wt%aSoueY=>@*Z*;YWI+Tk@w&Z zBDAm+Z?Ld}q`EGNr9F^;m5(5s5tX`K`Iyj|ZNzq8_9pMDJaQo3(6^`RcIW<;_Fk-@PKOv)biij|jbsB(TZ6r3Yx?j0RFGbhiXF4u0hz(NKDY$KUd`!Usw_ER(GvNvZE zlrO^!EAkWu*!ch=Bx~l=+C)SCxY?ODr@bNXQHAZ^5rfGxp~SBquZ94|bkC-KV<)DYpn1ZIA-B63a^SlYkf&i+S0|Vyr5vo{I`{8FKsPw1qk0=qzycPNMjC@5Bi!EZ-mGnx!Ea~i5Bq%7; zVvW+I3dRTh2_MObIbT~}*JBp&MTqMa!y|Yj37W0+YiAqPQpoP~AgZN*rak&C<`et* z`d;&LG#Vf^`+|9?oi09fk;!#^6JX{H2)A|Qc*p7r`*DAi50g4L52FuP1vtc3Y~U=u zqf5*o`Qtk9A2UpHDEKiTq&o?fDz222+4h(4D=7w1>Ep?Iw?Cm)*X$2^uSYm}u!;Ed z@YIO!J{MhF|C9S*HS|v&_nuEQX=n0mIJgXtzwdWaHIi+O);Rv1{$vXXidMj2P7x=e zA7V&XthD~6ne>J-k*G|D5>8-|7};PzZ3Aq~RMjMK(O{(Y_D4dh@mB#9N2kuWRsv{yQcOpdhS`L5-hLLk?RUFA&wdk)_Z? z5i(H-#kQ({LzK<{UOW`t$p*^e+T|swS1MjbU?0CACabKEB-zZt597TsnQ&K zba{}S=L!>t`ROdtMSH2!k5Lu|GEa;?HmR=)-_q^^pQ6UTD1^d-{L-=$nr2s6 z*?=b5d}e4a+*4?;w$b7Z>4YW|^ZQY2o8oDrRM0o*KMVUGC2PbfEBqXuDO^gY=rF-g znZFZ#BL4X{AJIWgFp$f$q=_#R6Zh6C6OlSii$KCo$UT=|>0Nn&)tVTLnJl5Fg0bqH z!Rb(yX+$1OUiY9PlbFe9RpuOh>@M$9h-&^(wFb6btTxf8Om%pNN|g;^LN>`#T~>oi z5pGKyPmOm523nIt$fk8$O$MXy0Rmch0-4zq#EgTUwR1_?0Tyz=S?p}-|ED?O%0 zfToi%!7I!>040RAPqWEwq(J0>PsHrl=H+C({TX_U)QZr9_nm;*Sd)c%(1jO&2?H4| zqze3dz3IhRe19lVMM4{4nx`|XDk@Z2zkvF z2c)!*imelgm#Y*CpzT_{`ZP$9wrmV^su%!)@)t-yNEZncS=22N&1;!3^^^{50A zWCY@XypkA|+GC4lWk-z0CQJ%nq z_C@%uwV^%9IcK>~a&0^8T^c}~Pv{)p8krUsQR%JvIZAKDWl(g}dqP!dEe7~%s`1G) zU@dcgWi+b{H~nTgheW#Lb7s|pf5CYsGHs@;?1!}|LB?vcf-YLxZxu77BmB$;W6BV~ z&BEdRe#^olK`c_k)!>;uQCaRqJ8n}q3jN?(pZ7=HC8}3%Q0a|@u}kl^ok^Bv?pi#k zur+>8pSe-fhkn5Hv5n=+a>J;dy-hP;;t;Y99Bu4Fpwz@lDcN1`fTX+*--|sEnZxj6 zt*5u$c6^9EE^)z~!j0vxI{@VM?XEa+cGJl~Q)}v<8(Q>$S`2J|BD)3g+V*CVeV%^& z*rzSGKj#eYM3a+a#w%ZkOy}szUw#`H3jg9@nav%BhOLeBeg*S(r9GqahYN!1PyK%_ zNB%=Lgr-2?uoljqZyfA=zjd^?b?|)e>CwSoceijD{pmA4e)cr8NW&b%Z-UmCd?+VZ z=yQm%C#vm>AIi)$=n?a}&D-CJ2lhn{ZbLyj9DaAYk z8CGT#eIXYzw_#7mjx!flSN`YlaPs@Z!;c@_`5$PtwhXwUc443ZWSCpD3;{zfn;UL{ zXn!(*hCf&1#)(#IR z)g<^0>LhL-c_`+JZm}k2#b;CXV3X?fqI7Y`FBIi;uC5FD`V}S}us9bt)n9*JZo z40_o@@xAY}9hQa;2zRqiq5=`z==Mnrj!9TvwQKK%OS^QHOl9ZiF%9-4!(2ipX$Hk= z++n<pVCF+c{|$Ne)yKK z^lwN3RfzppY4>e-OAz|TTG+(@$<}pv$n*dbg;%~HX%B%Sxde5p+_5ESQJpNEr_{Aa zjurye2ur>wr3>Tpj;Lewm`ffJK&da!85Mo{-)pj=IhK7y{Bv25bd_f_T!-z5MZ7WS zGxlF&JTj>JCf?^xbX(#nf*v%l-G?S;Wg+ARz~1O~&NbmTw?@J)iaU`Vql!97RJs=b zls?-To{Vy`eW6hBbL{WXmablxr@Okcz7D<5y_8N;%GE9sc!`^GII}&sBI}aRWS{ww z<*&ITqf`K*lwl%*glr2G07e}qKcu+1+i-@VOT0pMVXUJt0LcX=*v8HL5cx8Ai0X)g zw@&(-gRX3<ZM{tY8U$zYvBEDRahi{S@ zh*{@)tD;&71SxPzA9n@+uFVluV}{-ApZCoKj~>e#!95d z_h^{YvbK|YRyaz@8ode8NvFw^3K_a|lSP(@JQ^t;Semc$q>}bJxug>NzJ?kxrs32Ekfor; z?P#zGZd*5|jCv38?6LMFQY^F9}1r6|U zfROH6PrwNggg)I)1aIc~`gnU%kAP7`Qps6&v?cRR<>DT#Y<>^NY>^}yN20yt1IRo? zatj|bd{tSGPNOJnDzK(h5H`Ji&I)k4!Sr2gtwAUTRuCTcBrL4*|HYTT5`9=yJoJ%V z-|6xc#0<$0K57evY=6-g#U4lKF*Z8_!m1?KpWw&_4xleIhJ6}%+Cn4jO68t~MzBw# z5rQlGyrs&}1&h_3BGA(7E;c~;Iv*o*wiIx@tLNC-D6Uf++~ zLKR`n!@y}Z^6*8z+6C4O182hWN}&UI?5K&x$twrnFZd$;ZS55u`qc zK*c$kaMeF@25^6(ZClQ|ypx-B)oI_eIlF#iKJ+k|h^I$9hubDN>2yllgU)Gi!b8u& z6!KYByNKAXx$&3m0dZE?%82SO3xise;$VT1okQ%@4}WMSn}O`;xCfVlUpTOo_v}1N z2)E5Wu0(W0Jw$x}I!Bgd(PCIDvn^zG#dZ(73Cxp!u@%8lbx~38`IQeaae5I! ziZ-!#g(FPtCqZw9X{6~Ffud*VpatGu zS0m44$LRK?lPyWSN~bIAPrnavP(=+%ViX4-6~-@Gd`X^Lz6c33S}YT-FzyWBUq11< zp1;z}&6zhBdi$`nv#WTGbl&*`6uo}l5k6y#{%e$BXsv<4u6c2imC84t%W;lIX+HLlwQFQn^P`tgX?7+alEN{2n zRD?$apbLl_#GyfJ*^x!3+8?2>yC3B-_)(Clcjk98PaW z(zEX`i35km0lIlz8cLO4*(yg9&EQb-Sb#{vOam|;>}a0h?LA%{j)O5_8Zvf0(>Ht= zIwAM`9>K6qw;Z3a_0##14Ti5vTSm6IUzBv5U3$X1vU_TKF@P8bOtxDp5W?qXRTPJI zacJAJ>?4I!TRV#)C;2*mFwedpRQg#^%U-Zi7CpB0m_5>r@NqzyVi>!FeU)kiBoLa5 zu0qPyO%_OC*I%<2Z&x9l6YW}lDsb_%%} zsFXdo^8D$4K7IC=rzj4RF=(YF4#l7PKAQnZcoi?2XnQA}i-8_n2bPpq>40(kM+c1$ z7s|9~OT;l8eF%hGmF3n;zfW6l^36Cq?gQyYP0dI&_&F_U0P0=LD>{aw`ng~sDxtZu;hI_SxgK+lOp9O7A7tMF4kVTy;`_k2n znT=#U4M81xqt{vgr(Sm@dq@t0pu$_PnMW({K?%@>WsazWtj%^B%9LS1Zouj$7D0t; z9w*Z;+Iz;9*KIrZk3Tc-3I1olP;ClXbjwcESK&4Z^>guENb`UYH&JzKps2I2RoY~y z<++QruNIw-$R6T<@g$oBBFvYqRxnpqR^97zE%R|Rhp~@j8y&= z&?B79{0+fxB>qG>SQLEI^Ndr!FWiM{!vKpaw? zb|rksXRby>U>JD?1>d30BJ>>=Qm`BM7A0v6!)}f#LgT#g#G>vUOlm%&y_YV^L0S}& zbQ6$LoxNLYfByE1uTX^daCkWU-Gpa@c@kLROA11-J&OKZ)telDV8s|tF_y=KK(!^B z_$-x!q}Y`|tza=$!W|;SMr$Tn@hdC*Ji)?8*XPLLq)_9^T_*$ofx8EW6Ti{w&=J4B zUcc3%kREiUs`qonil{<;SJRz-Z26sMVR19u#rU|#4fnD)Zr|MWXJ2BTOOqFnzu)YM z_Xu~+L%KC@Ug1u9+$4q&ijyD!d(9y@U=q2)O>#9b3tp1pOYpH{w< ztOQOaR1soeo}7u4^40a0R2M8#w5zx=hsqVvGkcQUYBUCudD@8YeX5oS^G>E}IU~tb zZNwX!>N~#^%H0HIYvfLzp7qA3`5h0cKH(V7MeF(pef3(dYP36~Hcn4*Uj!V@$tHd` zcQK^aR5IWri;NkUzcY!M3hvwx5s+=#_;Q0QZp?TTT%s2LiOT)e`%x751+JlJ?%%(E z2j@y~>u=omBsW&gDVux*MI&A_7x9x-hfGa?WzntDFp07x3!qlPA`H{7NrrY~%I}s} zW?C3D+g|7RRRazFReypwc#0{W+D;y|OalrZt8|!rN!2N5{w_Ekv`vy9f5hnaUCl}~ zFeTYO4k{q~3HDw1%`^wdL6hwK^t^)p_rb+~g+)lFk)8(NC@A!V|qaKsX` z`|{SHxkGC!x z&It0Cd!oO3cKg0G0$h1;4ohZhJRZ3_#;`8E-QKuAa@W;Gubj4NUs?$oy(P;2@*06Y zK5{bfsQZWBA3pu}PrIKV{s-y=;f(okqVf@*S)ztTU-nVZM*f(5XP0vQ#{_yN!0F(w zVEV4KR|GvKG0?k@pE1ra#UI=k{w_dg;cnyR=+XGH@>Z*Hxx2Xli3~s&{L*(5B9-Me zlKAY(w$K+%)$jY0J};i)>hJX?qX9n6A=05+PqAU^HwqqKj3+1=ZfoEg*Dh8IKKS|ZfDyU0ct7?Ydj~Hvt3E`@z-wx@s+zt=S(eyO8+8t!Lm#V>~Is>01hj<713_@ zrGm(RefMNb>xj6g=Yws!WH)%pmp*cf90)SgtdC!HhNnHLntF`07TPHL=EvTpJBnR= zeZ6bxupCDS*YMW4DV%1lOXr5Qd*r%(N01&`DXWIy$?>ZU&bZ!M_R8NB2VNWm2V5)y z5chuG0Iw>S&P~U>o$8Hk6c5+M1UCq1H)4=AAi1OOxAyi?H1BBV@t@jvM4v>r$R*q+ zp_6xGyqIC4pk`N_K~Z1eBDu7S{jH6?&2Nt$@9b@D9z5II+1h6>M|^N})ZA}Y9^Aj5 z{O|9*=}Td|56)kmPsnNE@W5@qaHtkry~Y*5qw#}kGgo6bg=+KJ-qz99f1#)$mq9>U z>6~M$_2{>Kc?>#wCBOaSQ~rZOZWyIA=I``1%QO0^<(G@`fd6*E*yZ1s9rtv;&8xZjadEx(;hvy;nTC@@#VP;ayFU# zx4yoNf9dn9(Q*IZ+@qb-Z^}hdnr(n+V5Vn$#nE%Z`l8bF8!NsS73E(gMTyMZ%@}AB zYWYbq|NnwIn`gVnM!^5*%LM;1=)YX~XT07qavjRm_EDuhswZA|5o5vI@9qvvalZRc z)R@XURH~PP>*YR#9))mqU<4kOnYWCqdHAe~m90`)Ow*8~Z#KiTCF5^O6)tPz0`tB#UZ3UdK zF*yU5s99`&ND0Eq3`V0LFV1gE96^LJgb3EIGqpvf!p0C2*l(Zr@H8m0dE0;a?vb-e zd-3RJS#rq(BDNUWx(2cg{29m+vh*cC^1bhT0Cyk_QQsMOp*;p{+WldE2gl?sS{u>n zA}ba-ZFy_0ciCKG`nf%Lt=^16ZmdJYV%%Y}t0Q)*R$O^sLjN)&FXJ_`2+%I7?Y>u@ z0=(ziE_=#deX)aEM@06S4UU@3pnU#a>$Kuz_B{ZK&|Pq@SwJ`LI2xw)VHyReNI)i2 zYPH8Xrq+FI5W7b30Z^Ol&b&aFh;n_ToZoel8iwW+OM!HLny9N`EIwUN+-+W77N(H2 zkvP7yMkU`b_7V7~d~L*}b#ZnP$n<>b70da4&b{91B@8PToXrp;cASq=5Erma8k}pu zt?tuHCfIC_dgEhAKVu{W+>L3w99UBKV`eR{?q;5#_4Ums8~giP`_UY(F@D4smH=V< z`O{6g_4{UkhJKKl6}_KHGTp<>yTZBpA~d^kkeYgxIBxm zZfqKoy{81b>?F$DDpGy9JHp-yM=OC{x0&J0QJjOP&~;wIUPPG==TT1|c|fpZd0jCJNxy&Z0}Rgzx)5?#%HqPLU;CYwIm`r5ZcN`kSBE&~wh z@&;OD_gB4WE%ZVd5};l@jIMo>=$?PwN*N0_R;xU9+S1BXPyCAJl*YY#=S;67?`}z5 zbJ`I&#$%Y4A3eTzjRW$h@EOO=K_MmL<`e{|vNymN zQj&uGt-Z#KC?CZa*uLHbW57d~5% zN%!L}+?-g8OqjhWOUj69!{um!g24HOdgx2wMZgTTuzy_5>3)mgkc*&0+mPdE6b8&8 z)x&QLZp9a$#MBj$zle8GPZaG~Uzeu&9>Coc`@LTCYC1iitUq{gic-rLFYh0Z&K~$+ zU*>gwfR|_e>4S%#fBtWsPyhAb|NYbB&pz*d-hJ8Yeb#;W^5M&qm!F?>x}W{wv(NtU z`6n+w`F~j0f9;Q-{}C5{y!`BsfB5|K?q{EW_J=?G>+$EG9KSsI;~$Pc`TWy=_p2b3 zOJ5ULA;cC|S5O}u0TIx`;URr}jNs5;i2n=fB2>1B(9q$-pcQ1;8YJWH?jJpWy0^8z zwTGL2cK5cncmC^W`f5CSBi>5)OA7=)A1BXg8C{R9x3fYqbITB(;tcF)a52Sc@fM9a z%&3+kk}THiuHn4$V$Qi4O)~S|!%g#GiOSO!bGeYZl72c*_fR0P`d;ynJ#Zzhqs|)& z+Hk}emVnW$KSN!+FuMEVoI!N1bdi&A2bGMhJ){Q0$cEBA8g}6bN=-brx=~mK3~(0& z)f?xDos60{y#^&iSEh~3L0qq7hE3-bu|;w1Ny0C8Yyq!+SFv;cv{3e<(2522X9>%o zznk){+e(Oq5)9S)+w|$y*l#O^4YqZCcbOV`w1`8{_2&|L3tP;3BZSE=vwi6GNwIyZ zJI?nbY%(zllb%wg@S_<9RotWBde+y??7pbCXmR3!m)L`GGtX3Q1R;QymGUd^#4A9| z?LujP1N$)^y|yJ2^wpN=iW_sGzLi{cd)5pwn+Q!O?}hNaV?W$L>VLlPeD`kK2AvOL z(*W{&I@qR!Cf$PJo$qSqk^PJb2Daz*QR-ak#xW?dTNCBio(pe@w%E1x-y77E9QQ`3 z7}@Py*%qQ;Kw+Qzxj6JuoyKF)GpVzCR)B?BRKKcG8e}eFCBtb#Y354wjQV;SVoqs6 zX1T#R4wpD~`$exZ@|wlrZ944Hb9kH16*xRKj~N0b9nOTlfsW;y=(T)q<>MC->xp}T zPHPsTwT+W8p}x;@AL^7e8``` z;=^x&za^4qaZiPfb^{h|n^VV#5EqAV>ekbn;MBQF9jq!dSG}7C-nK&J@H?H%=uQwi zLt=zYNh8i>->$Fgar8Z8IMKPG_FX0UyDhht-iE<*HhSIb@=xT};K%{^81rf- zBZwPj5lmq7N!kt8aY{R{6Q|kSYhGSV(N-Ni6ug#z)2ubU`=|G9yylbpf4Kk9W#uR& z`(jZdN%8o{xXXsOQiwH4Ptv3rouEGYxEDs4_>Fj{j}q16o+tmXhS>{?CokaDix$av zc9N;I_UL%f>x{*+m>*r9y1aBO%VZjLoga)!W8!iy+mwX&3m?R-=I73(7o&PR?K>zm2#uVw6Ab_4;d!4=A^A%730;atw$=SsZH&_Db z@#U~{)<1U9?0#=j{B+;)gLbU|lYABmCGT5u*v_!+=*Ko|8H1b~e@Nc#>&y5iuwVYg zpMZQEX+z#v`0I|iki_x1` zv5n;X0}8ql*@b~xpUQoc@zYX!BH~4&+RFs9vceo=3-1j3`|8V znY%r}+)En;{5|?Yxj^)QO;S=RZIDLF%POEK?OI`+QMbiK03Zdv8Bh`tXbdwHW&bB= zX3i9}JN++ICshEL3MFCvC;^aSIZNej)i9GNv@LdWyG_)Z({8^@GDEd4ii4%%>WxEz zL%@a_Cq-zv@|s|bUhQ{+LnoH1v@+0JulsOCKU$zNOD@YDvp}`a$2}yF9mCJkjqB(W z%4`SAD1Sk8(LpQGP)nh;k{<s zV^&@n%X`#`jT^&e)*}ttKmmY#O`{q0Tl(Ef86;7Rz98wz31x_Xj>W&7r5og(TdCkQ zc#1E}=TQ9mESL*rOXiJ>dzvR4K|@(2z-FSzr#KNB+Cnd);6lpDWL9De*c@~AB9pfb z%FovxO-K83tS{b~WDBCyczDGr46WB4QLm(l_;ws$n#70kT_dtaM}hFTSfc(H&F2sQ z@bF;{Fni=riUs6;X-d6c*TZeN_%8p?1t{U9kJ~5Zh`&LZ$}#P57JChhiQiU}X7=Ml z)HYUDRe>D{COt;-)Bkg@@^246sbi%sA<`+dp|E51zO=zyFdn{3FlLVa=*#BcFnX0X z7R5q+A%%m5Gx7_sgtoskwvIjW$L za#Z%_OE~#h@lm^8wB~b@A>BAt*##YdL)68VfGHx2zvbNDOb)&)>)Ntln>2r<&}{uf zJIFKVGwJU;xo9R+l~wDXW6;Ya@>wiOCn6{2&!E(O;-uOKws>ACb#)17f!qjGAUXau zXZRR11tFI}VD|r>cT&%Vg%A|`sJYta&d2puwZ#h^+%b9;1w-~wz*xYRZBYAq_TDVI zB#aze{u7z5ZmUK2Wo4}^p*fbKpa$r9o{%{5~y0kaGqEBz<=cmtq17qbG6wvk^EZB7ZDeK)Xxq zsYEcM@y>~SD~pIj;z%-Q3=>(a*5DqqRwu7m*a(&zW1XP^OcSx+p!MAUB#*_`0MW0(Z6%sHrDq_k9orUL~Q z%pt;6CleK9$;aW_AkjScl+=gLnZ#UuD_3h)KaX5NvmylB#+l2EdoE|6Cm@GdA;;={ zVtFoU=`m>yztaU9qmy9VdPQf&p!XAzT`%`y)I--?5S;|4Ra;})83Qb>)wF9 zZoC2i^q%!-vM-X?NT3pY+d+HyKbE`M3J)27@<7Y^NNwqnWxRmOSV6&gIK=PV;HB3c$ge9+-|0CXhBu*paAn|ZLB1-Erd$fho)mm!A({N zZoURy?fic!IfZ3NEfvL+1%x`@o}sc*Q);`TW9TMlP+X`pum{myqqU91gpg(2q9Wbz zgl`TI$wSXRP$;tZca*G*7G^L;T(jv75WGvJTD#l0sOsv<|EwM!j=ws@eL07dkMABH ze*EBnFo+-e@bD9)p5PuG{976w@C3L83j{tXCKNOjhbn{;BUHg_)8Nn5s2_G=IR*b4 z$#pTt@f)Do84M~=g`?(-?7m(>1=)<2SyT4@$9Mim>THtKLnmd@x;jC%BKuiZus>uc zL3QSOlNl6B(m4Gg+$rW8*m0w*U@a=r^R9QtA^sW3TUp+00p6d?l$d2)-U*`c+E!T@ zK9;J=jJ?2(MyYURx4efZ9kAAj)p`XrSOEp#)z*@DO2^X2H^!&Az93M=A86v0cQ#6h zzWqK<7Le%vikx<6-Qh@8!u060mn&EkK`$|t7k-JLQekPxN{6QEGC{zFrz7{f zB(AERLvM>E(FTJOH_1xBVMT?sqwZ3gj$bTbcp4d0H>3L?KNt0hur(+EU>U{*NkThC8p+G{!UvK$di)V>Lc%KBulg>2E`A$zS-kA6c+(|B;sXYZ-+%QqC z+-$zz*8+!I=F>t4*X?^c(S18qfv(g1Er(!EL62rsb6R#(r*0 z3n8%JhMj-BV3UyXvrtwbGs>bT_J1vBQk}nT*Oe z`V0*#-2v>gjZh%tVDvsHVLF;c2MWVGpn@U~74+J~ml^aUL063g%8u|d-fxs#5?Q!B zq1LKL`4bXeL2R(&HdOqLFI*0 zrZ)+br1IVJekX>C=)uL$<~qqUg)7iV5L4_Jk_nTL12xERK}^gutBE}1{PWEedMJFX z9cF!%dLa#`vVvc!E#0z}16YdcpnkLt8^=G>Sz!f?u* ztEk`Yopde+Q`G3heWN1v#5&1Hf_Vp$>nVEn(OKtwmG=t4=!Z($`{{guxvZ|-r+(_X zH>WG7Z&Q~}c$V$s2I)W#A2z?2ga({%`@}uNlT{t-#iv^TC5Er+=yC(R-z{F^cZAd_Ty zh&Q+kNkgAdDqlc0Qu9;aQobcx1j986^dupH^GRobE4HjS{*Jr*T!MV}8v9cNc4noq z8`rlxlIAWZTwhOdqp|Fmy|;)}QZCXHOR(w`0U0)BU#gZZxo!TClXnPI5a1+R+9>S6 zfDz9_v@lrV@-i|bTt27w0_DRI!2aY2?-7acALU;~*ee1?Tf(;vP_kKoH2ek{`;M`cT9}k{Tyh=Z*bQbpoSBAtuJ4!;jR`>TlnBPRvtMKD8_=oyd~nG zt(1Rlsy7|t#DUZvi_aRBLE0L2WxQW*-N?0}?y_*$O>ku4BFn=ky`S*kt+R`PWHjoX zd*QWyReqY@x;f`UN?eTjSb3+rY|L&NtzIVSzdQ85IXG%Vr58kQOs0qK3QI~u{OSH$ zs+Z*Yz(apZD0zI14if|RraBGRx!qKcSMP^8Cpp@#vJTqM1uvuMbQPQ{ce4d)((7(w zzh1MW?~v--{|8csuGtT$z+}cXds?RXb5uDy-0ly%fnJ^spWt#prDxbzNR7^~B8u`FGymq9qW8WD@SbM|?z!mfebXz>+_zt3=sV-y$v_l?Iiq=rr6Ot3 z$#_wAQ{9JKv1axd#7!MiR_nUnDp$Agj6t!3TRVQ{R2JQDy4C24<&DhAUo*g&$X(N} z)vpIfi2;;=a@AYi=RODed~{9?s<#Se7vH;fuSpmX;tuiE+V>j2SKRqj|M$H{={&lH z&H6I1(o5+pDO0Xk@41ip0>u%_4Vtq1u*?8cuq%x`>>T2l2T1*sN{e`NhJ97}I3Xww zkx-5{QUyP+up3{M*UC+Irct~s=)8`N0G+c##t{QcniXbm-a=z$`A8litx=N6=FJk+ z%)*5B;&=|qLanFdDPsDq3Tp`7ls`Gx1J8<$mvk|>Ix$`y#l{WH$q|2Myzr~9;MOR; z&{_v&txN9J%k*=b=nJO00k=gZONu7CFBuq&`4Q@XuxUkMT%hGfNn_30=}fUhb;l!x z?}xkQ4=NM1CplR{PiNWkr6~4oSohb^8y+fZa}&+J%jjk{bkR&eU^=Opp!o(dXyM_P zjjXM9Y#hB%MzS<< zM^mjwXGB)?EJnDkE2nF@jw#G2e#>i0F3z{BKEK+H-@q}ffc>sZf4uz}_Rg<{)m@Va z>ZEgCCjU?aBD2u{baca*XLqaok0zoni*h8=cSpU+@DP{#FnY_9Rfg~T&0n!|8hqkz z;l>9i{nHCxxPC5o&kioJK8Nsp9|>`}gtvQ*crdMmi|2SZw`whyX+Zou-zD}B&c?Z& zgtP6k8#d`z!95S58^3*yM;F7XuCsq;`OSa2C6Nc%7rikK$TO+{wu)bLtHr&#a^bd< zTorR56#ksYTiZKNap-&R&(FWZaq#`4&1cW?4>YzHpWbW!;7V%AP~yY(8#NxlLK>A# zs?qlE8M1*w0cpDJ&cO1fbDeGXZgE5Mq$tD*N9lrJe*zS|nfGD8cBt}>pLR)yW`qCG&`!nn-q z`_8z}7}-tX{)U2KqUsdcJ4#KWrv5Q_@l2-s=ic-Ql+kde%2;mV;r6T?fl|_na6lU& z@V>8#;oB&Il~%RV7=&OLvt(6=<2ydei<7eMXwBVLRxET&o)LyOzpIDHpi2dx_dCFL zP5GM>Ned+l4#Tf>^UrA)bZ2u(i)KsRX%P_~ns3spb(O(PdS0ciNzbda)f9xqS}q@= zRZGPAP7Yy8Jm3o`Q@VAVmR5F-~3H{p!c z!wd?>tu<0uYI5E?min%^*=LBV!53!;x#Wd^_oV3DL^wI~poXKUC)6f}vC*{-*-hU5 zYf%fl0TAybw*ZZO(%S6#2Q`N8zjMyYI{gJE9Pw~p5}}q7Qfwt$9GR+1H8L)|Y&+xp z%eE_o%v7uJ`~B#sKYTs$68_-PL@UVS%XJh1QR-8SEIq;rHQ7N55?V9 z0#T0tD7{#ft1~Tcnb{!hfIk9r2@-8K9}4ZpC;i>gcEKXB_xv}QpZ2u<#QgaIk7-|N zi-k~bM13Pze+Tf{=6TQX1x&g*#mX=jsKuk<#85v>2Rzm9(6CaHwJP^kd(O?R<=9`& z1*P(O*ceuN-GAm7^P*h0z_}|~@&y*4R!I{$0c?Zf@j;w{E9p28bacK}G@!s?u%B}8 ze#CTa`$H&ef2~Lr2dRbsc-pT7n;&x$hkp^!2^-51K%`rtJZQPMwMPT$4ZUER;8G+i zN}hR*#u}3fU&!n9&-L}4$MDSUZ0~IC9c@0@*x$d)>j>WCpxe)%Zc07K_dM?Av#0w9 z8&40SkVdxI#Iwmu6DBa)6zC^Z0p6W&-!p9C;YYon`nW|Xv#!MPe$qMam0!bM)SvoS zEw7OZ2O*g)_TIzgn5mmyn&`O#^`EcxPu6%^P6f-F@nI@>-pnfdnG}An7OG0f#e&J< z@(~!isV|@UnFVHnmemDBuZ-Hm<*T20#LWLxkW~9jd9I4yN?;*|D8>iw2VG)z(u-TF z_QVzdBcJirLGe9Z2b>tIR|h2~;5t@rJgnxoo=RBc(PjHiH$(Q&ouSH}^7ab&SM#Tn zBgIPgJe}_oxJlp&0(f-!%#@+^g zwIDgQGd&43+k5N}3H=3Lfzg`@&Y->Wd;A=KNH|u4RKnxmDyN48bvjHmuho^qL#DV$ zVKHgD0NHy0l95N_{wd>-e255@j2|7v+3%gBVhWupUp9~1NT|Y$qrddRNVoKr#KUL= zPH%3FpYyDoL^>X<=ya$(+<{-4MINX(CiSUlAn}B;A11dX<%2*as6p}nt-k22{o{w< zqr3!aO+3K=R`37*uGE=`;efX025m)JWE723!^g<+RB3m_RoWr9}3jxhua&Cqzs=s zwnqr$b1l^IkVQZJS+77~>&;5M?ra4MNzP&VGnWK_dy~f|tx270jfROM< z*)9*}>6WGq<2#HEB>mjEOOyZ=uyY)xkUcsP2AOn#y9@uQi@9=NzRR&@z0RUceiJr{ z{8g&M$QPwaTSaiCl0ebYk*De~fa9Vt|74fNfi-)CDthanap+bnSYlM!<5CGR-*237 ziq1HC%EgAQFNy+CQHXrA{Y&VSXS*2Ai-edX)!8f|f%@cCxk!EF^d_H;ggHPAf8 zHGarZlI!H*op+e?0}J&Tl7nKgDx$Xlkz?Kwp07`Vit=|5#tj*2jBBgDQ}wE+d4-k@ z#fG~s1#h_y((JZO{{qv3FTDMb=fLL#^^uWuEN3}_18#FPxHuaYLS|`%B%X^B0E&~j zPf}>zTW5rqtvEU34eqUj`)#eRDlM=ck_TW&NS|*#;feMFzQR1FSDlGZdtO~hl9^i? zieqzYQAMW~1v>lC5al3ru`l6f9MvX31s6+i-YB+L1q8mpe90)g##3%#& z-J%e{-v9zrcMm9F+CL6{YUtTY@)b0Jx}wZjh_^PmS>UrbJXL`r8xX=$JgX5qQx(RN zZdne{IbWq^&WC4Gqxg-)mt-77)lV(oK3;qW%Ostvi8jTi({eTjLkUWp1lcOLD$K%df|6=ms z{we&X7cbX+KhQ&wczatK{D7(hsKwEIw{y@u!L8FnWX!DMkGr>SZH~?_VfwwAHmk>X zn@=Bp@_Dm2>b!>a@#M+o{ad$od*ieIg!OyroMkTdF?mb+L3kNQIv&T>p zPtgW0-Oli`IY(JPM!8=yHyB=a1iz0l&MoocqMOO+WXh{U@G%18lga3~4^(uKR(vdZ z=^$$~KLNv;G^_Oc-rjdDZo`+2LAt%p;Fj|e+bi)Lk1nQISn9e`?tvlHM1)WI#xH1b#*bn*>B2W~LFLlG{a8Z~cTp{yK1v2TItTPGLeVSn;U?-uUD zQ$CUr|IYiZ(1xF%j0S_z8%_;t-IeV3$@(o>=*~;tT}7Ph+73rx6pC&}XA}rsRrd-9 z1`+&v$?8W$7{=`nZ}E{$2eYFAfQ9cPTlsu6CI-D@-arS%9DKXg>_6K+_{+xLRsxCeQrP7Yc?8qZVq-fpFi2yYj&US?LOPz!tjsL?bDs7+j|&g zi#gTzF)E%lTi@f4X8+rbCr>!kt&Qh^evj}qo6mOty0`P^Zx5PppFMfJg@@m40kVy6 zo^0t*m=r=kJKx=F9&dcN@n=G}*E~Znd$;(RLf8D|+burgcpLbi1Z_AC1X2$6@aH|u za__)5{mah&7VZVx+u0{Vw)dWWckdR_i5BP`ouJ)QxT$azn4nq^$$$iDV%H9O9Wc7reS{R*?#a&P*3t#z}Ld0F2>k1tOvunJ-Bs?&hyDRtp%I(p&blF`l)C_A2$*lc!KH{xD4Fi zB#y+2W_N#Y?IF$s}A~U`yCN zILE{Q#aMd>BPIXSi^(|!+@-4ccY`1~z1v+~*}ptH84WLWtRapF!O?Pb1Ow;j=>EzB z2&(guJf$Wuqdi)MpV0mU!m9UXH2zU)ddAQqNw-gNC<|rLjo!F5h|Q`sUGPLC&9H#a zq}LfABZPP=eK~dpa>eXdS!oIs((G z=C?bP9H5ZiPaR&c1tD|NT#hc_k-8*rWq?CqM+WayRwi=K}D9 zF64N#+G>V%8BRu+Bqw3H=Xaqde4HT;tBp-^(jVij$Y3=3Q5tX)C|HQA%3bv&Z?~jS zEkDLiaMhhuTtQArKWGSX3~BHZDD&dS7V|-9ruk{GVX(y{FYP5$l6%c*|1}rn;@r4| zuo8!&2_eK@zieJ&zxrG@H+h)qxT0~4N?j4PTQ^^WR9*oU+ntwvfVewiL=IP>HD8>_ zldmUA&s4F5<5+{mxK0BW)FUCA>h|W%8#ubo*PvP5AB|5RoKMF5|Jp;r-lAWB#;+f^ z!*$WDf@Ru#P0bbido)4Htuq?$uJc@tsjyZ|%ozc99HG<505c-cq6f1dmy({hMA14# zAjXgThl_~HluOk5142likVqGxKj+gg7=W{WuFlfRQbZF&hHR|3-&bL{uhio2WEsyao?%a19io z7eCBKLyt&!cvEYz3=)z-ZQe?B5)XDZn-TmS@Yjen17cUs-kQq4Mz%J2|FA~4Ga(jE z^&LdDbHS5DZMYebS~F+~;8J3BKrNpQFsHl#k@K?(jfuTBJQcZIEkhp>uwG zu`8Q1Owyx|8-1K2i2vq9BB+(p!lss6Hb z2Q_oQk7f|ef|wV!2Ua}?>&BX^z$;JkuxlkGiU1jaN-&K`nZ#M=Jez<>?SeJvv|7;1i!GDPUI#7^8^w+ZL2+3dCPY2_QnD6BCYu=cCtg~AU? z@!EF3zNz9|IZ2tH>^b9=b~B7I(u|nT-qN6ljW$q+rUf*A0B_mOLr6Prd26v+G?r{;(z<1k)9bVRB1h)}^_S7j^UP^=(U zJ?GgcweDN}MYPQ>ipe&7aSd=QP0MhnbDImUswV`HKf2iQp7R~xGyok02;S%-Bl9YJ zC#ncs|2?Qzu~1c21Q!~x?GG9IgL{xFTrkaW>M0DBMZUQNGb)Z zy)282;qgqMBbqAG(;^*a%sJ_wV=U4~dn)NvlTKrxCNp9^s zy*k5w;QP4eyuio>M}Y6NVfLG%#otn9dcn{7i{m<20%PZ&i8CukLe|3#vU8W4V7VBm zj*(V(awB^HmSF#)4!SLVGa>-4X(O2!J5KQ8hzF&hUkbOJByRl7+Vp(y=sy!5-mz5M z>uj2Cg7zkv(Y@l8AGn`r*YHVkyYt00z^ybb!=27;F1Y>!1-vE)%($vcfLTl3k(fqh zo$o-gPV)~`K4pj{WZavQU1lQ8+Tt>^R=ydLE}KOIDz($htG73B%6hmacDM`JC;-jb z1>_}kO63rkgbxW#EJOPK?F`J2cM~nT_7{0S4ULe&L8wwRD=vauZgtXHh=NpQBmRUX zCBCQ+=VBX+w(GRWNEcNOK5RMz6l?5W`sfne^&SQ3UQJ|C3B;QdzpdUq1#`;LY7}=O zCcGhbLW>=B-rsy@W2?QbXKd+szJiE_W%k2122%4%@%k}VpGlJxjm-8K(fYVyLyBTl zw}_3ISYB;A%H;0Dn%wpMEGqp(@l_a1@-1WPlsPm_nRM;K#x7E4LKvocD^xkBsP?-Y z6)d8;88Vk5gq%@)Y`r8)%Pp%vj-y95^^K@#Mk!Sd&4cx>^eRwRNw2y-by3r)QbEy4 z^Fh#xcS8=@+^nFjY`O#Fbs=jCcVE@h6zGEzH=DQ^Cl!-M42Uck=1A95@DjW(OL)jS z&S}%JrB)~|Yo^StEr2#5T9Ipp=C}=Pgp7wC@(Q5NL6S5f`-AV1A%|x!xGlb7-@s<+ z(ba3C${~Qba-UaYG8qE$8M~f}6R%CvE%wPtw%W?SB?-uEm6qrg0tik(NmhD=#7tV;gq=# z1XmC!)d$P6h^ez*-qruWTi89+L`-B=p zjDOG%@PCg%1;(0*W_f*#)u2+0=m9rr4bzSaB2+u{R$0@A$J?B!R+v(4hnVk$d=+q7 z4jHdjqq*bi3bd<`IUP-f4)_;M$6Dke^dcx4*}YM2n$6b^19Qp8IGh9_WW-9$VRAk= zvQcs9TQeV36H@0j&Yd!uQno4Sg86(QlmU}TVT0mHr-H01k03j;^l1aRv8)qOTvKUv zl8(Q!pPG%WX$CloserbVB=T|PhH@_0UECE~YaM}6()BKosXkq;HGYu~ncsT9ctdh+ z!WzLN*lnu;&xeMBrO9zo61wn1w6;z{G|_kBm?)7=kxY1yJI7s4Cf7i{I*;0@V_J>s zMj8MWp3m)ujEdfv1x_j)-p=-eL{+wmeMQ@hQC2Ej(pA1!xnWc+9I%)Ps9TbgaRx*- zi}(QE^e0vdtIW#$7IeBnE(K)INN%>rDGFf9!6|Ezqc+Za1mQUbSR~~%(JJ$L!xJwxvDzh5c#Zsh{Vhts-Nh-5umOvpC;Uv8kbdUCkki?w%@q4bl{Ap(Q znmKa|s1!xnJ?Gf9huia7_=C(Ts&R>#?+XT)7%R{xOo@Su)gS?Pcho=d3T|8qitB$l zpI`}1*FOxR)N$jZIotq$Qkf2R5mibI7XM#e{iYj-#>1vjjg$8a#g?k7H+qlKCLfGB zDX{rK!|;e)Oo{T8k5^UyUMJ9ff+tng)ND$jhcR|zwX^we+9~)nJywU_N*?7@<&u6q z+GwSJvpyq=PAUCMxBA@sIH@pjwx9my|F*^Z8%|HW{)#iyG*~n(4qr|>@=Pc8`{jM3 zrmt#Q_$?g@Ct?gI?*H@!GdNW7_E@W%Uzq8>ef#S>XG)pSHBWtCl}j*`GmYTi{!EGg z`75r{;P%Qi!nsiQBL<3{H+uOe75suz1xD8+OqHA~F3O0XYn0=0395~fr;?(-qHn;h z6g4)}O^Tk{(8EazIAuC@Dp>r_=$Wt0DBf5nrrfC=H0{N%P25@aNzhXzoRP5~Y)stM z2LKDd=KkL)-D=MtoFDmqK@9^!Bc;JJNYu1+Do0cJ3Kh}f|z5ac1G|g z4E3+agQv;&y@&em|2`dT`SNW>y1nltd0G{QuElN>c$5UwESJD?t3&bsTNS_gH*yE2SZPci{M0%d z=!dI@P7xz7=3=mh(D|7#5X`@JEb8teTws3lfBp$KvHsP7_L?nO(f|Hcug;M?i-DjZ z@Y_%)C8e%p#tYq^l!lsq=E#`-rw%N=#%yXfvJ%3NSnZ>7?J|Hl!FMy6AaJaWm6(;f zm*R90O~ldkk7DtRJ0^m#|5H6T%EeB{U0)148zcqUm@Ns5L4TU2(d&Eq|7w5kK3n!T z^yl=q!{2m&>vi_7p`bqL8%$7aPS*i*>>``WI?3moh(Bi97kOz^h_l}EdnlB@Z|6o{ zy(WZPn*HX}>kK9$;4!yZV^`DY7p{+?vKVEBcDB4Vm0BC|Q$-zs5D;p(>Yu#U&J=C^ zpE$}s-kK&#tY6e>+Uq{jFDqrU&`9y8|idLB92Q?&ZAY_fR;0{e2d@nF8;TP&3xV!l$_u zqrTr1_EnAHRplyIPgs4!1=Y_bg4(M%0{^60=f92nib)aA3+@$xNuc^O@5s$0nyxFF z(bjkv>A&csI;sEVx+-$ObZNoG4jZ>Rt)m+&^zz}Bm8nwxAAh<*cm=vn-_Wbmv@@Zc z)*I!UO>&+33TM^njnhA^*0{lqC5A>%0SeNFU>t}eVGt0#oF-&GpwSpt6`{*4U7eeF zQVGywSNd_r8UL5Nuln!*{tR#&U9u113I-|n<6wvC@+}&YiZMD5Yy(-_X_V1g+ zE9`?_(*U>J2uK4cJQ?RGlZVyz7O!^H0^YtEk4Qa=DPU0PdC=F#Z7D#e}Mu_d_eCmz`L zQ%u>_szootLeoiOfK+Af?oQBRpMPfplSyGMc=)G}4T8V0WGi%?o{8Pm^b$m^qD2WP z`er<)*Pni`4txfcoQYf`EQtV_lJk&pe3~B0z;}rc-`VguuCdX4P@%2(9Gwl5gVPhD zp%tqB(0_Qiyzb8dtK>1{8x?VeKHzkcrQE#!`nbZ8blibt`NxGBk#_R zPw}y#NnKFl8BlB@sRuHi@eOdtO8iP)@}f%}Mx|IthJpjzOCH8`)rf=Y5{EJWK_MC_ zJQWAiC7xiurs*FV|8f1P^nNbX9I?=8d$YvYqp{Ma zD^#)|j!o(nWD^7?W3HCp-Tl%wM{nQI=~Br;y3RNL#?Zk~stL*)Oij^8*;r-1jL`~6 z;Zk`}dO34H1_52FfV;Fnmy+hK+wu$>xtOx5cXOBwV>3@4C|MAZ5_oMX6kNobl6dTY zq4kz(9Rx6GJP3FciY7AnZxDnM6!f1U3>E{tD*^XZ9~2Cwio*PcfK6eyIxLkm2*?Br z0Y$SG$QAulT!KsG$;!=cOEu{nK{kU$)l26=y2aJXrd_od8$`3^(qi?@TWl_o28`#` z87S0{-(AYPJNIKS`z}@Ceu}$6qBx}XH}y8yM@ZVwd#pMGUze~>za8vB~N0`h;+yE@}Oy-^>!lmTtj>FJkQ zqHtZ(FdnBUbOj6G{IYF6Mio(_00ug9+69X@Rhuw`Wtw$VlPxF)mQBjWv<3m}3yJ_A z1yrd*D7apG5dM7xjs$0iJ5T_S>iynj`x0w~udu8{4q_J*A`*+;=y7DGcGndfr|w)yOtTIZDgm8Ce9;cO}M^@uo|A0F*F*byJp~LJLo>kFyCw zSn-)r2iK*YAil$48M8T$j=?*t#&eL5YHOYnc|dTA0H-i$99gaRYU^M96}vUmTeXLB zkM|a?+Gd0JxxO+|JOiM@{tY*d5~`)kax zDvbxh4NNhg(m{955HGzh@dg&13cd>FNny8MQ&>E%km$NSBjpL*afyv|2$Du#e zpX%mIEzHQsicRwdA(2Cylp}u`8f(R-`4tbm?1qI82#ZhU*TC|;!Eu%EeBT^eyxQfhdm7MI zK9_tV@aE9s2yASB4yUk@%C|vhG4P?qS#69Oe7Q6*E}d5m`q|L8$l=U?jjW!i*A0$K z=hdU93h>fu?{~RD(`gHpGz#dbBQ7(bE_oDK8}Lwd+9>1&MyFJCn2363v_l{CExhpO zwz%{%X6S=t(2WJEBQ1}TK^*+td*WvVdS1uD@Nj!@96o}y$>YG7zDJ78<{c^HaCF{X z;7^;J0o>ruz69B(k3-W@Spl+5&H<)AjOkuoCt0AFj2zpQcRVqw3jj6-aq!#bh*v5D zCoo3XF1;68XDi|Zoydz}K6Q+bnvrJ=0$(@Hcz5TZ&)rYxn_{06i*JnzvWd&L$+5U& z5F&n=@K`$u7pnv&Oxz-oWyGYO$p3(XLr@?y9DRd38uX%|&pSBFN2%3t)TWI<-eR=N z1Jo(~aPET`Q|A);v2=WZ7?4ioM={Qe!I)$d95=#yy)B>UF+#(Nc_a4O7LJw9n#}a#Jn9E{IMOU#XrcNBwX~N3m z5Yy26e)y?HgacC*{gCl$+pSc;ZMN=+l9wxB8Rt~%X=e6ss#J(*kX(rV1}~j9cDBzZ zF;)>Sy~lHoc^vMyZPnF69-ZGX!uYzT_bE5;oBBQCA>ql*ZFP8NRlR^^I%ijBA{9Tt z-eJUabO$uOO!}Bkm!4NJqvUM#+vi=$YN}m^JCg_t4MLgy zWIw3@mF1g0wl;_`oIl{RgIgMms?tv?Kz&0dF=B?%f*BA zF?@U%_N)8y619{zBU$y8J|>U5!uaqA?vXrJ0_ws>M)6BV^fE5SYaf zl9vy-E~HMX*uxFHMU%Gh8_qJmDi4_HUYGYHd|5W{Ju=kZyGlabIQ#5;S+< z`RY2XEFo0;mJ~yHOhGizr43rlJW-zJC;H`W^XqDROqJD#rNeZD-$Tt2w^>@32F#Jv z4!SaNL!5J#g-nvwYnC5sTIIfNdS#GU(*`OX1A4Ow0aJ6oOFP-DcIf2>Jqm7-oW#1@z8pe_bca*&{S&t`J`Et{k~$m!&d0-muk|!T#Xn3FXLUM5xtpO`+qU5mS7ppuj}LN z5skFop>r$YE~oGn!pCEC4FULG!mXsWV^~f#BD7!$=;bt9{ACo|)66g7VT-+tQnf<6 z*8}>D(O*|tXL_+Q$1=*_m50Y>_AFm+d(+6vsHDk z+I*s$UMKG7{>DqzpwJ=WNQxy2Y$`@Zg9n^<`-nr({XwD|WiF=KvS3HVjzmW!34V4{ zJuDAY?V7Gv0v_)>)${QvWev=s7ZdPIt+YiJ3r3Wzbqt=V73(cH@U1HIJG`=i4b}W! zw&&R?e4buA7J4c7&f(`NHj9TRIHB;xqQ7c3&$Otqq^m3-kn(H@k4t`IVHNx@_6 zT%{Q9d5$TkcF6A=jhU#fx^?;bBycty3|5=R|At5 zz&i-HG`*zT9B7ummKyDKnN1$(br5dhc}agc&@6x1am%90(ig8gpDiY6z;)x`E*08?w|7ocUW_azTLkrmW#n~r^A1toOsxl&CMT^i;iVE z^=5F_LBCWnOo$fC1C0e~DEH!dm=Z0P2RlN0@jOh47R!Ske7txL#x#rRcOTss&%zAT za=9=c=$FsLglMrm(D>lR^$$r>v>$hPn*kqa6FE|av%mo@+S#+$WpXx7~a8lrA%tn2(vyUmt7QVhEQY$9xbLR5V7Ei!vKQ%V`<|$|d!dl)JkE%j_wk6digo z1($2JAD89)H$jw(T272ZVv5jjSE+4z_1Xsw=AFawsxZAHdfS}r4{ui07U3Zhhh77k z0&u-jop5AG$7{eF;{qI+*`L?+P~KviXVEj%8n-W|&){V!Qe}aT_+9zbRKH_-r+=}S zLJe1p;4=i{6O4P25A-hKo^ER5(mOq_ZGXL(a0^IvcS^HJ2I#QEZPV4><+YC)(q#9# zhu65QR&Gw}rha~Ej(a_iUC~LhSNf<=@(%s5!*G-ZgK?o;oo*Y7hjaP|WM`f#J0JGL zJ?*}nPfWFEzhF?lAg_7|-q?Rw&qA#h|p2J(XMi>W^V#|=N z`h7F(UoLAr)wj$yy{pReBnxOaP5XsJ56~A-i-RCK-k9pi7p@%YoJkKpTkq|cQPn8- zmo?(smoHF3f?P}F#1!R==3vT^rkvXM>0^njUM5t7cnM+HL-+8~1gXxZ+|V*dwc4A% zX^urIu|dQ##~40WuN^wQpypYMOx=1I_Hv?U@G}+Lp6%r{&oX4HemS)R2b%O>J??H0@9c^4I{Tiuc$7Dg z-dhauvM!RnK|Tf&UZ9x#WXtCT#f5loSg%kk(8){3+9j%KVBvA#pkk06JeSp{TO>o> z%zr@q0wv>NS|k@Qt$l#MjAAtEGd!*E0*`)Hml7`X`h2%T<_f-%?9Xoc*IJ?SC^h9 z2|V5){_yHbKbIBtI>szxIf>4n0e)dZ?;wUrO#A{1SRmYjiC3!S0nC%`Mkm zQiQ1n0safa*BiPywwKEgZNeeq16>2#m-M2-ACj>N>&s=(EFj`kC`F5K?;QUj+4OL~ zTxQKBXj`TJu=1SYeeq1H8)jQn-ak5*1LB3V`3~{W%z*4ogIIRDYk1)t`bqz=+?~{$ zfm>g&dHQoZ7V)CF|Nkeu1J-5oceQU%%;2YN7oSYnCQ!`LES7;k>>H0E&sTbir~$9>0Crtn?U`)&1j(>$VKb>h4p!zQNZSgVWsMh-w^qANSiS`iWXr}q~Ird@c1&C!I@e= z9I7pCoop%K*`XI(<+RxzpHf#B2o)P79#EMyx~PB`FZKrt#FlsFK+Bo~lu0s2_~|g^ z5`w01A~|l=$vsX$!mjAGd7OhytYpen4%t3R&<9S{_`d0*EF*7-DN;tgTvlL0<*5!u zNZvoJo^?db$e7}Z1pQJTE>`=)S+mA;!S}{4W5r#mnSjkpX&am(!Yn&-jQNf;<*5tspHQU)>A_LCh{<0I@EU=ZJH73Z>7bOb~b zlQ4_x+;n_7CXvr7$YoC>PZS2d=e3&UGLOauo{Lleq)rFSzfICdz#!a&bRXBl9ttIj zYN5j^c++h@r#&!}E`&#YnX+JDj?;#4X>{E_bCIX1=dl|sDbpLgdpfV9el9oNUjD?b zE;(Ln>80jk+jAvx+-Cl1XTz%WUY8FT*7#lz?ouM+fle4zX%hx}r5WH*-$WmRRZS-= z^~=^LyWO_ZFhO&g$ZRxe@q(tGp|@eLmf+oWaTw%5nHw#QYc<)=hg%_c1ew+cQX zXapKun>LKA-gfLgTgY;V$0)+2ODgo8wHYvf>ZD=Rv*Xha+mrZ!V~JtUQa@`FW>JqR zV$bDiMbC!a-MvC=g)OcHyf5)uJw4Ft{w-XShG`2wj7*N27wiwu=GDhEF+LEXlnzopm1GU#XQg#vJjYF!3=fhTB<9j$e(%N?z7VY+v7TvH+4AGgeMiWo=oYMEL2 z8zv4T;~Dea(en&y?+Nb2n~l%q!&C*x;|?3q8X4;q-En`_51USWwz7gPv6r!d#+bc)%vOs9xo%NyI}y4C_{(5PuI}dCkk-0&vXp~h*TMmJDi`)(BSM-1?ZUfxJQ#AVt|n- z1o0cHjBeYR=g@!Hmujs_Jvtp7)Y$JIInH(0O2+^vDv0deSOx_VB_10@8Lpe=&{rE} z7#qwo(CRK7q|?$CbFqUNpPIbW5eM2t*s8~x`~8nY7}5Hxu6wn&%jV+qMwY3 z7F_I|fSS}yY@9ie!FL7`1`25w^@L8uLJIAKIwxp6oiu_PI+Et_0*BEkjgBMpuEDVr z--fq?GN~e}Oe$7p2Wca?)Xt)%p%X=rRHKO1aGfZGbo~AI=j##|g0TOD&6US^am-r; zINl$(TM@;)L4X0@a=gB6?|jPg6SWQU9v+!X`KtbrgD2?&_#&@O69vG{XmHY@14L3Wy zwRgB@Wp0pm7MF$_W`zJpI`9^CNtb;tTXaLg#fF|;F>B^!Lzy=?0=B9VwS!RR9Y+6B z3=_r?FIyg=?ZI8zu`FQhx$Nk?$~y6rx_zXfC`~A+G*4n;645Z4g(l z3YvOoYq(m-4OK_8n5egZ2UY>Hv&QuZFwsY>B6;zd1Xx~wE!RgnK=wM?MUImOQFpi= zfxDP0;sZ`0|M&7)Z}sgw14UJcg| zp-meAzM`o-U0S6|YW@;{HYsR7!lvec^MOsuAgG!|J)fXOJ>bSoaIR_xMqOeCGF}=r zPc_p*XV4p3O3_a*B2ep}5(Z@upcqxg0Q4v&A2T-U83C*00d$)5RqL*@G6p_AlK{(y zT75hT+|4p0b;oBCVEMIb569Iu0^CbAi$y!X2nc~-SoS9qzrZs|vZ)IDgH0Yo*Y^qM z>xjjox=k0_cvx3hSmWVQ$_OT%{oddhYy{9IW1_{JXyN9AX22~7xQ+-EH2T1l0e$C5 zJACM6d@4$t6tfmS%^e2Zq1t+t;e@Wb>m{BHQq=a{nz@~9{-8|`FoO`#z9 z{e)peS{ufZQx4`JDGN2YsBP*Bh0q`cp_6kuDXlrF=>yZllhk3&$97AT_uYXDKVuMN zu=7J2ak-8;v?Xjj6tD~OU6i<_9o)$_1pS0T#P{VFJ-SeDA((*!r;tO2K}IOV4#~~o z=|C$Vdk)vUNsI-pCfK61s~9NiYFzA2oN>JVV`LHGI6PiASgvF>S=!?qqz+?0QUDn^ z;;dXFtd)2B-in_j529Zq4%O%KLw($r8;aZe>KQRqf7P#spKmw?%R&fisMe2KeXy*r zU9upW-h^e~^%DjWZz)h0X3Fi^Wus_fVChQK-e5v=NTf68+ieB>Tww|blDDTkINY1^!N#|d*KS+pEUw88&S_V%AMMfLDhR(1;Yo5K1~?Y91xj9FTAMD%CtOdM0}U#0h5K#G?qrWU1DR$eF>C$~mV) zjdZ+i83)b7iAB|)DHhivJ~A;(`dCsqxvbs6te$eHYJe%0SADJO zWn48zl1fqeKq#(7)Xae;30h7~A4x1leRNN8lCyW-R5Cm_U9|qg;iSpPs=HbNL8Otx ziwp1@lw=9{A4~0r{5o-4eodT44yuHO5qrceSN1cK+}qmGRUb?$Nbeo?5t8Lhp`>DN z%I*D9J=zSGRL*UQ(F2Bii+E=aOe~0wjW08jQ4vH2P+~Dy9z5Art33uqi0rV8ll+*; z@|G3WM@x}JHw@Irwhxrt4 z(Mx$xY2Qym(p%62pj07?h>#2;dY+&kbNMZXEdTacn6;KyOR}Wb$kg#(3zIHlFnL%& z%>Yj*%U(u6yjNrrhfoJ#sp7(@SrRkqkUP?-Gb^viY6r)bf4Xn>Y6n^`BmGe0q_{Or>>CCc40?6iwFPY+;Ox~Y`j{XvMj&>eSv+y)DEbyW4y`AAkW3ZRxSEE-u4q}5lOt~V ztE0-tk903B7KYK~$7>hN)meGJI&N{I%&=i4ClJiokokqViE2xX2g4!-OPn8HMs7Yt@)wWrG(%r=5V6m=Xy>tw`^BR}9D;#WE^V*0;pRr#~khD88Appg9M{hy$ z(Va=0W^e`|$}mVB2k*A?qsU#-IP72(Jc>L>9S3)NwNYS~QUK~ohL7${7&K-}Hx6zR z#vv8E-V%wT_R=ze(I$APNXUTf_O{}vUD`OX+gOUix|DHHyFY}XF2@bSN3M4E~`0oFQ? zn>ElJ7q@eQ)nHMgT87hvsON{tedxH$>u&aVA&V{z2PZZ*?!iS?9s24_QaN~#Lti4s z(#Gz1iZ~`}g~NNhOeZdeY3Ds+aZ$Q-OZk-MwOc$dZDZMad~FzfRy?kDwZ{czA=Su; z#T1IPXtH3hY3rmcR9HS$d*AKqp@&S`FfP4nPpejUclM{S_id`e{vd@HmbRsFd=q=A zfd4p_$A|+bq{=3V=mO7o#@ft0owl4M?VcgS)OEXUzLcAr<45XE_bPBw_wTMpoiEic zVZp?S>#6I8qC?=i8^pQ4=&4r67uVxV_k|xORSwz)MRi0}-}|lJMobhm1xl5)*Di9C z#cXMQz)Xo5m29?9jZiOavRqR*h~1gqEanx*k>jG(jrurRs9^J1J)D1F;ufp-r;P&js#)H@o{#~wiU|xjLms3ArT}t!-G+!%) zPw7IEtwXQTFPMiYtg1N*nt7z!C3OpL}B|Q!UYrPP(UJfPp<-9p9bD zmY+NQCS33G$apJ|FTDq~s4hH?yT=}KZoTNqGl&bQG{Il@8r&1pMBu^^-ZBa))*PPq z*Aktj~)hIC?eTNA5six z?(QNy*CpPgpvPxC5kmQupG~x230>`5`z0>hiw1X|eXr;wP%d& zSKHP4)3(|l7HtLH%Ktomeh#{>Q7vFBsy>9hgz_)+DxZ?AwqO_59zxGofAgu@y^!<( zbh2(b?evk3Xro5n;5++7zc90E^KY5`r9mm81o1qyIMUn>H+JKnqZy+plPW-UTo@7V zyV@Ql^VsqDuwH_a(DyJ->irl0<2#)q{g}+0rG&G?i}drr2AiQ0VU+Q_Ua7mi70&ADwh=APsR@In!dp;VtPr;p{TLZMlwac&=NxZjPtBxk z^jT$>;fS(t8|BshLl<~x4vLfAp?NKtoLwc1mfpAnWHO|mbkKxe`#67v$9?Jt+bG`P zq*|BV$bq{qVeyUy!&Rd*m8m5N!c}6wxS3iaFbp+_K8QmCbbVx8#o~36tWZKTwh6@E zswUUrg%Zg!zRfu_X1Onon*At_jRjQy%Rb z92@ksa8@A%?0Ew8*d#|n5P>HG<)?PEI>)<>3zioG_G|%mSV@x~^aKberLUf{C*D*E z@&6c(SWxE_t}m>F&XP^4zY@7V2%`wabh+T>fBdOSCgiSvnxY@`au-2iuJ*;<2PoJ7 zQ6RQQ9Fn{gW=#3C^1Dx_3{pE{{chYp-d()bFKJjDR-N-1^YVMstWf^+-_vb{=#}GY z#FGGXoF?~S2;OJJ<213+g ziOd^Q`y2t>L0_M>=>Ns~asd(CFJGU2Rtxv5ciUE ztMCz*Rv4@BaV1A_I^DndRnEMdx4Cn*z`*sR0-8i+(CL z0Lzp+emY}3Sm3FPp(Kj2+3P-aX>z7GiGmiZdt-+&fU_lAFW}F#mhBfEfM&{e4`-xR zK(D!!-sVJF<(z;ifK&pbF7TRx)5Jhb7ilw$Khvt!jLZNgTWJ1fy84_g={qYakUeh6 zGN7WK(y=ZONHOuae#D;1-&$`7nw*K!F}0lMJmMt}ge=-s>ObAxKoytd8vp9?I@uL4 zqyNuXvB|WD_Y$U_37e*iu`Xd6T5-r!kRO}|YVMglLjyhq4y02MLJ>>PhDU@Irh6RE z>^YoK8`P(8WX7S>UpJZ_>VQz%O!xGY zN8w+sKh*068)GHnRGDIrmGzuWl!y*S;0%3DQ7P+(Un>;>=Hzf_tB=P+$?69f5K$Re z%Rm9t?mY2%{X@IKJoxZ@g<0w9f#qZtNK}fs9NKm9ZWW8s`v#5W)Veq7^%Jo=FyWsd z1Vyy%>X|-2I>_q@{q?_>&+2hK-z6*EM3tcp>N>Pz5h9QkUBgqB^nxvoXQJ)Okos)J z#K>wYZ_kuPOVZEE{edon9$U0LZf0i<*_0n@9Pj@mq#GD z1~^O_Ld7}t!`9|`Z&&pA$G*HNYs_-6({^}{RwKQXGGi2FqNxnc zjILIdFGQ>QQYeOg;wZ9OAX2yU;ndF<0ogmyw~uXee0bC|*=UU;chHxLg~Sszd>ewT zU~0yqQ=a2bRaJ6ic*cxRXI-60J8v$h=ekzq)sm7Ci^`3QmHAn@-r_|`&gzy*4;Kdk zWD;`NN46|tx_Wf8LV$^9u8)TnJQ5mP;(M+9bzZAKn2UPW#jnE&yd)o05i*74@_IzKHe(~OkcNeq_Z`o?nVBuaMQZ-<1qIoBM@joG%sy#YS0 zTBU&D3;-*)6uo;(3vnutE1!AJjzy@VXmIoA60@M+mtSPVv4H`PqS3vU8*_JDM zPs9$h@aG28i}+q3y%3^diU^8O%=_lBfEXW&P|PKT^`efNG^IMm1HzRut02Dd*ejp_ zf>gvs)9f*2vt=KxuP&vIBnn5)AaF&THNQO~f;td(vsnr@+)hahhAZdwc3+;~=O_sv za7E+^@L03S-Ec;&MbKx@?l*Eaue*9wbb}i&Qido|YnhRv?K1=nPZu!j>5PyePKF@; zT_3`w%bG*uihH*@tRE?WB3`$ZeRpOoxuoxp6nVU>f0wv_LyxZPb6T?ulq;21L~*m& zbzhhFXVtw56Lg^V79ZL=%Yp;Nm33RT^{Rcgj?3{I2Z}3;P7z|~R_(XlziRPX@}tN_ zUi$+JzEc*a6~OqPXX%Cqi?H!16wz6F!yO;z^-7svLbTwW(;Ogg%+&Gr+oHi#gZGHuXV zwIgLROpxHw+fUVpY&<6lB7l z_$fBv5Ni~(ohXG#UD(7t=-x+$MsOwPJOCYbB4LHkm`hD-Afqinb~g3$$BcCXxgGeKjc+Y2j>oEDp;{&2|9G`a7NaOiLa*Au=QZvBmSu>m{!5i^B_+k1W zLDk}HZ{*P#^{KI;LLRU=)jo$XX*Yp(((%o;Ke{!*=xEwn>|L0@p>2@(E5+W&mmJKe zH0z<`DG2+jaIw*d&Q3p^j4(NKe4;lr6sw6DWegR#=9XEjjVMn3>OO;H@K zAe9IHs!LD8jHQTlPjgXQr>O^o3Y>+m4hmR#M$q%2qm1};=NU$?C{%$gdF3=#$rn`5os zNV^WbF0V0%NrR~7lR=B{-R5G{HMUjGm~q(f`K{=28*IwPPMBM!kqL+8y2PCm6`+F6 zGBV+?(1Hw|d`3YY$~M*^+3c93^PLf&s`+9;h6BpbRMuK3S|31)1nsc*$L)5%x-V5+ zdXWn{EgqzFQJfCO0>u|5d>(W#0+ie%yph?%k+tlOl{@<4E9Y@0ozsiibq^Mb(8R7N|j)V$up z&<;(Rw5rF(x$qVz#L+Vfs=%Bjm(<>Mvn4z_9LvkLJJ{<%VTu_XUZvB3_)v5m9`#SO z5-Mf<)o-9sLlU!& zOnJ1f0lD0=yNr2LA?>(?SjFp@$JRV@y;7cDy94$T0b}v3teaK-QHRT;?Gy5A*TjlR zMzPWQw(NSPt_6)Pd8BmmPnq*Sd_xl+jqMNlP8?W-NX|EiXHwl)dc8clM>3Nim$ zhp6gvmnwvXC`4bHc0)ss29oO|4(OJvPYA@sIBaE&=|;<(ZHQPu$)eAwgxX9$T@bIT zc^gs}{e&SzG}6^(by!iAj~3x1aRm9XA)lXo#1Wm<+B`3IUSs*y{)%<`Pxm9(^kCqy z1ksv`0gbhE%RMq-)0i`B8iqC=*b%wZI^nEthmXs^@fpBS`KgT+J&KzUMe*iAlHh@jrojO)RR?p8kn+H=55^yBd|oM z6F!61%FX<|C5!ZYyDcBg!FAoxbdIRc;?l=35{2mcl_z9~!4tw*MCSB1=L{T{AYCB* zg-=^0=j;T8qB?B_MMvx!o1H_9?URBXy5}6>`ZHgVExFkjro-YCCaGn ziJWi7tYH$R?Hp5Bt!d_A&w8I7VkHMT7@KCIq8h zoU=+7F=HlbVD#t}>;si-U+Lt`=+^(YUTIej=kIvQDR6?tIA5f~` z>g*hA$rD>KF}|_j7S;V8_0U>Cu5RA!wHFgIK5NdQ*Ao*_uQxW~(|CI;M!PZ-H{Z8{ zBZBVf(?jYs1E2zCe_!SeIh4P(4PIkHbU@;yar8M2;`r?;Xde`y`!59i#CN|OSppgD+C85#6sDx=lY;?Bj%J_rHjNfP^G zEJflKb4ptEg49g+x=P?oK+`!%poopf^^py*u-g2Fi_B#w$^|IGuc8rwI1tR<&8lM)crJp%74wF!YZ?L1-Fs}oPQPp49&0YSK0mNnQE}n8^2`E|^$yi{&eCXC zoOU&64nZh_UZ1(Fx6iMh^*F>rio0aDsujaa6u6YIDGpbVUCOZttoOT2V)}}D?YRQF zC1NW<(5~l=xzv`Bzh~FW_`I={8c*)6+iHii(acW7(sqVY%C6tSe)Oi45|7Qf^pQ4M zM&Eeo`JRQfkT8sbm_-v&B^XZmkOVCw1R?c|t#hXPOe(5bj7%Z&q8X`3C=!d1P!xSr zNzQ#^GeNcVK`bEy*^&$qsbc!%SSX1s?3*h%`raE4f zpd$qCwTx&uqRw%M0qC*k3ZT+}KW`h`1$E$pQi-61#2~a>`E_@9hd+;aD5{HybhSdT zrZ&3$qwR~3d4yiYs|z(xU`J!x#hgX|9@K$!9=jGcU5@`M+r};|)%};WgpAu;PCa3wEoJL*)5-PxV z2`niz@_P1NLOuIVUeCTusAu2F>)Ce+_3S%&J^L=9o_#N`0^cW8f$!y2;QNFs@V&eW ze4kJSzL!^l?-Qzk+-C_clY1<|VRC;ZxJ%w(nCyD`bl25eiGNMpX7DxCwY-1l!>@*{UonjKZ^_gXL-T@ zEH3z;(<}ozO>sXi}j|L4xjP?csN>Sa1Tp!$TVx{O3BFGowSdT23q&ndJ#$xd~XAGH? zub*~@=m8EZ2yfWgZ zY>wLvdeFD4-HskiGf&~ocM`tTv(UE)EetmyC;+|S^rmT_)G;6WH9ZMA&tQy-d7Chg z8a3^C_`|eeTyxiu2Rup~MyB%Q!S+*zF)iLrb8Oe;MYE>(*>BLTHtloR=ON1oCz|$o zeP6cpmZgP>kjG6R1Z&G;LI2GP9Ajpi@5^^ z+wP})>tqLv z&4u*x+C~;UlDDh99)z<=1{Q3R%lmtLZY3n0g^mnwio!LIDx@jzAYCu5>Tv)sqji9^U$yQU-D zDEebR46PGOB;t}$fGDVp27H<-(DDKLP^Ep8{4wV)wJNgG_ z#Bj+B)k(e4LmP(sr<~3@jXZeCf}H3W-48Cip-UHJ+U2$T=~eg1kYu-KCd%iVZL^Av z=4>_2qb6}`*xP^zzoBxgM{5uItZjr9zzHcNQt>}3Kt)4Yjqd0!LPE{6j)L1mpa z4CGJ8lAv0vKK*!18xe2H7Q^7cbwkxYB9Sd6}gie=bR~1dmArK8!(PD-y9G?dF^#qoIL^{ zQ;_2IzJRHHfS(@!!U8S+OG~od%TR$lQ{rN35h9`WU#bluRGTJ*^L5wM^z03ukc*CP zaJzJrIDkxxv$_M2U~uI`_)V(6Mxz@rh%fOhpd znYyQZ)q-)4nRtL_CUp$ET2prHu894B#5m@y;#_xk=DD@e94*dQ%o_?QSuM)2ShmiF zLu4PoazjlItiH_k)^nHVw*zT8}JHTY^i(J zDdgSoGl9D^mQcG6QNZYIBt)iybS+IlII)!w_sT>-*|U<8wR@asi7%y&TMRMwO(nE= zv+eSpI(R`2osER(UG)_q`(#AUMnaTSPdXzx)o&Hv_c$KZ2TPbiO*;mVNT9Zh2jdc) zJF=9LMt4HTwKT1l5jvETOL9W#Pud4;5MsUX&|<9m;M;dcO8e0-?6+#pTuL8b3m$ut zSmTSr#tO$md+&-yN8)o_(e=hzDh$sBeG26X7EYYLyYTH{h(&T zfvk*^#!;yy#sMi+1gk$Ji2(MKhEVAoj)~SCLhL0Ap#A;0KhP0Lix{hcv*`o)ZkQC1 z>e2*oF7Q>-({8IY060w?ME+eJ1duKbQ`B3k0JC-hKC|8kOWEp3&@RNs7#6vqQvl~Z zE`!9@#9W#X4i>q->Q_JU;lYrDGiJm|5|2@c3H3VCkg4iNT5&fj4%E0VQ9#f9KsSmi z7#ZtBL^`&8BCMEq$8PxD66yjbs(>0IwxbDJ;H4f0vb>~_htLO*{JUeBCYEe zJR*(_ScSMA5oXX1!e3!!dt+BaXEq7~RR&S23ocAt4$erOJ|62&Ia(MPJR!~Y_*CaA ziGeVsJblEA>DgLhC_FL8mU>aMWtdW1sDxr5EGgJ)*k(E<0>PGnF~xoXDG?a19E`=L zViJoA9^%6B!-QhVf||UR6$Ic)P>)Wy`Yitr zyOM$$78Y07o2uPsc0E+yVHB>Ii`4>J!XR8JuB@^v4+DuM3hPRl%_@w*6H&Gg?z5Ta zns+=XmaO;X*UU;BMqr7!YAV{ou!XeGa}OVlDK5A6Ts0vCmIy5MWQ~gPrHVlCWR#oZ z+STI3ulRKggehgW#idJIXOgwVP?%!q-bTKd7z#_wO}T2giFN2Eg25BAt+FfgO$37{WEVk+&cM;v+{8e5QjSlyXfkUt2Z$v}T~cF= zOE^yAVnv0icbToHJgp%nh=UOmLTfjF{Sh%buxw-s%&L+%Eg4u;+WOt<@Tj+-FI!sr zOi;wZhzU_EzN~pjq{R3@EJ^22yKPCk;I4AZ9i$|&fZ~$WwJW?Bze#TS<_1+5Lm=d~ zSwcz(g(>Du+u#7O-nYt?#KVdT)1hF}8@q`m699-yIMx{-@>5)&3z>`P)4Je+1P?@1 z#sT{jXVpXH^5OxCbuL_-sGwuJ{iQ@?k^9CLZhDoKU~z<<*VQ4RmxBzCWsLL;JGnZv zigkvZo`t~|l5&xPmee{KUIdniW35g+Ci=l|%^_EdrJq-btc3fH?U916Oz&evS_=7r zg(DG^+(i0n{2&}DR|vS#YPHkODyY22_NbC#Zfnbq4XD1AgTWJ`TX3e5 z7)Vq~)zFVuEblkSv3Z6BFdyRgIn%rn(w7 z=27ElWwIAEe-I%m!i*x8n3da7WnsmHVc<;jymF%^*2ym7!f@nJh?OiMVE~4N-oZH| z#QI$R`GIFda140|e9fBs&B|__XNePl#iSw3mfI58%RLn{kJ7i4mvm>mjoHTp(6Uso z*Ohx94iJ@4tGkKT328I)a~4Qk%3)J|7Eg9C(U~=i((O+&a~%apmcaVTo%{HsS7Y#v zyt{)r#Z$}n0RtrN2fK8btA>da7j$lp>*oq$;=~2r96zqd04;)VoRdFm3xfO(GQGbR2R5+>2@dO#Sk-((ZBnM zDJD(}9A4MhZ9|X=TT|syBv5f#R!71Z;dm%dA6G4+NtfvpEM!T778O_Gvh+qzkJ3g!dc8S_5EW6a+a_;7 z`i=n+mr=i4ea)yVRm46fzy_(+`{GteLeu2~MI{}dKH?;xia&1!C4X7oi@;*i)a{lJ ztvlwQEQ=2mmvq4MFAMCgUEy>D4=5_B`C`jW-uqnzjic0U`QTfR;*JIoL@AEJ5kg0x z?2>1KBOoJ!5Ep@q;_bm4dQaG&M9d$+=ni1ZOC)9Nv zEptW7gX7E7!=`0C$H3wXvwh4m(pYG5af4Ig=_}sXB^M|viQ;?P8kPRvDc#G=%LL0`P^wVI*4|GX)y!iw|uSf+0iARkBpX z5EvqEn~Z1;D2%W@L%?rMi?cGllf>yg*P#`FF{EWJO2Ri`dxn5R=7JkEL?IY5aNP3^ zg41u^W?WK};h;pt(6Va!x~y824VcI1)z%FKl#)9jWE!Pys|UO$k+)-X%L0i?8N~Fl zomcu`fA}F{;Kc;~N^gN-y?}04wC*jx#+ijMtfSnKd}s@47^&l!2x6Jwa^=#y0fb2YyfIkY}-}+``$fJ!PNXNeY1EUJ+WlgL+l z?WYL77*0U|B~4782xlE456_7RB4VxLM29LNAXFL-4&wzXk~D}-Ey2asQS52N3BI+7 z@SyM!JeAJzMx48fbKy}4k?|t2fJX>x-Sako)rTS-#2GOYS2soY$wa+3ZWvho0BeaigX5`F5aHw)T zNIX#o+I8%U>XYfnlRVgmiRH_t&B>d?h>_u3V%gp!l4K5B2NI*x2P`rwhX#nz&}VnQ z%gj{=5~D+}xq8aTl(LVKwE9464v&F|QK<FV5m%C>k>-JScY-$?#`NZI(PwVF9E{YAc#Zz8oS9yRr0UDs-26Z zDxkjH9yq1~J1r4)@MGSl^{}Ze-vm!8yAbAEoG;(nhoD8;6|^yDFkp<-ARGe@an}#2 z88K|w@~}uOVzuSI0IkLGkgD%kz1pJISNHdH)-xfW7NoEkEV85m98i_MnrBnp-CfbS zLRy4-Uw%2M%~5=M{g z7{bB|z4$Vf^-GlNn<1)55#CVwf@7BpduxO$QiMp;>&KUH(-c^wi=tldSNG*hNSnnL zs#E7jE-DI8vArp=EJq9F3zw@oVd7&EDW=13P2HU&eF?t?Ig-@Aq{;!dP@USwSh%#W z>D^9zE!7ahJ26pTX*`ongE5e`wJKbE-r6HDylQv-aVqjdp2}96&sw zv&=ZDmf$Etw&nqbv*Q!4GbiF};{f^_M4C@V*Tw;KtdaD0=|qEX^#-T4=WwWL0WD}I z`pSuQKmpcYD{T2Bts79jjCCB}){n$286Jxg=cC<_hAtN^l0WQ<^uajvRHYW9AA<4d z@wVO2EYJ0b6FNcU2%-LLxZy8uJf;YXJ`{@@6%-wDt=D^&sR&f*Czu>DSRkk8q8FCq zK@A8}5A`Ni1$vw}3~jH^Clgoz9?dUpbKGTfDU=`~7MgK+`YRnvNM-9mM5wT+oU+nR zHB+C%_ARti3M|K9!8$b)WE)gZ38;qQu<;q9tCg5X<#3_G^^myCIL4T=>Zu$^8PKeR z!evY@uZ}KWXv(i$c%59oc1WCD?)TM0okyu4*j$&%?OOX(v0d&2d^i=26NAl2c-WR|V`9d#eCJ%*2A}pFvLcLz4 z&Wk1j2unnNR()Qe-Cg3rm+G^K_+3>WQw}Zl`cYd26_kv;S*Q)-VG0@X(HwotZT#02^fwW)dU*4qykDqwIXJn9>+0cgNfio@EdxPr7AOFqFc|Ti z-l~1h{JdHa0iXM%gE68Y?ZMmwK zD-wq%D-vzCSdmybkqA3D$ZCn!wU~*~KJPlTDKeJon2ZYHx58L0_O0mfM83$M57-7@aOVTo;O-8?_+=U>Z$8i? z&YTZeq=Gjeu*vW4-ZzH@`vZ$6DsdRO*1L@N`-mbb*|Q_-*n&AbvgvW;FmrZfkqX}I z$R@wLbJLk+eDB~yj#pOsvm=|UqQjHPc%paI7WzovXs{Fki+-eyj+Bq|4P6b{KUR6G zq+O|4IF?V;Dk++BX1%m998Nu=&*pS63{DCzk$7jSTLQBnEWUl7M-h~hv$ROb%pOhN zz6Am4y%Nsmg{Gwm=K`z>hUrtf0CL2+%&gj~@~Uyzv^ajTKvoHbO{t?mEWm1j*u?t8 z>jK0Eh)w*V-j_?bS>teM-38hF?al78t-@llu@z8U^tuwD zy$*)Wxty0Z`2dfh;(%XePW}Br`O4qX=wKN6Q;D+|vKx_*>l(QVz#|UOjZ@Ju8>8srx zLYRmGC++o|Gwa$}m6#VY)4Tg))|AAu*6-p|3 zZ<5H0AryoAx=aqJpcYCLs|5-3A(uAfZL&jq7(p@>Ln@U;83*BYbof+!ZOtISax?BI z;|b(Eroy1G81aVuYPV0XhB|YFg%NS;1zWg3dGlh#-T|_7TrA>kgTi8bx5C*J9Ir~> zt}!|8fP}oXHj6Ng$=|&RzYhBt{s?L#9K~?irxRnj)x1N)sj=|gfH?tpEjqcUpL&7N z#6@90>@Ra@)fNeNCNPxq#IIa09y{Q4C&=3qRZ2G3JiIXo1g}`FMP074m zol?-6NDr<&*lju{*G82!w-3t6A0^J2J!x-R6fR?CSLCwE>4G}nW|pJ+vU74sBalok z1;OJ&%*11EYd};Kg~DLe0h?)|7SW&6KWS8iLnuCXo^K5+r$wGMnN$sj<@Ne8lSd&i z{P!A_lYDHVYFgPz(AMJA~@;l?I$|wW|Q#bw0 z@@NOc;cSwRn5(?KZ^AJ+C=rEqPJS7nD>Vzk$dyfM|IG5I1+jlJ`1NDUc|EqlV6f@U zU+m*$Wz(Us8T0a|`8Ykz&6g^B`fM;5dDDB$S*~PkQ|or2R(W#2NEU>XH+mBoeBJXC zdHI~cC27EIg>AJ;K31ywA?t)LXN3Yy6m->=>k=1b(<9UPRCUN)X?e|zvyiCz=-c*L ztubZR2o1u>Ti(fjV}30=E=Q>ms%|x zK#&F>FIqnAPBx^{O@Lyw)oN3%ueP{u_t>f z>XZ+tE)V@ci7%)WzF3FDvpPCjwzhtxWM>Y?m$80YT$RQ(fX%8+IfpY)Us#|Kt@7Vo zmiEt2_f7p=?3(TKeYM?wg9j;p{A{zoS^@2)>Li!u-VIdoqa&YZakEq5kwed`y3^2v9eE`o2)<8PGpy=pWe7 zKPc!Q7|=gz=pWh8KPu=S0*CzkEgM?e6oEczdLQaX^cUN5qfQg5 z8)pK&$;gaBl#E_&$H)kIT)o2U z?OWv2{xny7Ym>fMufF-H(yOdl6F%M5x&@U!dAi-A_%Un<67FE2xP~^VjMT}m4=POc zK81a1pQ?mj`o6rs$340vArtc?9by+~gCwr0>jVWqHBQnn@tQ!w#8#?+>VEK5OV`R= zr5~7x`Py>!X~r2Eq?Dpxmk;Gvp8Hf%IsT4jijo?7UG_|*d>`ua>kcRQ%MD%h(_gdD z6Qolwh7kB_{;?@P9v{rpm}&%o^Rf3;xFo+Sqi^)5xK;fnKGxbWow{u>?4F(KxXjNH zYqMlpTCARr-y34pR>`CTuLo=OOpXV}F$u4+vxR9xjUfg7czFF(9kA0j$B7r4bkd^x ziAEF-Lj7bB5{cagUA_Vbl_*86pXSR@Ffj>ls!jWhLC@}Zit_=d&5>^KjQ>8T<(>?S z_3rr18ix3fved(&0a&7fvugEF)7VT%?(7nI=^p42OHJr<(10&@c>l}%MkvIZ6=R%5 zgrP&S1Ub5TFp0A0MW9}d(SH?6(nf`;g!*s!a?b1fCR0uaktqj{jXgaN@|WhKDNd#^ z?I4Uy5M5$^c{R|`O}Py*G6lW;VuFe06x|3UThi6z^PYmo=4l$DWQw}jqwih7Ra2ZL zgblNrR@arXAyB5Y_tX{Vlwl8G2`T7(n>Jfd4<%O=M*ItOQZ#WGz+}q0#Dl7r_2tc* z)l-G1RlUzL#(Szcq)c)4>;4J{a5p*HW`HuK-F&Kc%lK^$DO22UPt|&X?rQ?GfUIGk zlh%2Wt|3mQuz#w)r`OigbWLCqWxZDyk}vN~J4YDRH<$s;?v@3br3WRh2^%qQ4~HF= zP~nl)gIb>cuVcAC=zBG81~%`chvE^&-{3YM*?x08R9iK1xi050Qq<^a_$d~x6Q#@m z#B{vJo+%uG7Zr~*uf9AUF7K~b^+R~EttP92T!5WLOsY$}*fZFho!b^Ld|v1t?F8MU-?ndNatB0_5VD6GwD=UD{QeMg^;ObTO>&V_36zHI7b=6%sK z&ys=GoS~w#P7rZc-dA-+SAK5RILxu)R9xL2v8_8aO<;dpZt;x!>;k)|)Qv>~*E!e4 zw8*|XR3EEtb$Cu7x@cCO?Qu_@w1JFC_q@!~(uq?DUL7m%ImJnDV?GDQCWTJqI-M)A z^SWw_4&Y=>8$3{cA_y|x1EO;kwmnHTbe5^y=8$9uB$Y4$NL6x z1axk!hE5RQ^U*Aam63I#2G=H%{V{`(s)aR!pDmPxIs3SM+?19fJ9Se4=n(I~Kml%m~y5<|JeMOO^PHVmI-EK4KwBi8zGWz23(yeu8XdHiFT-X5N|bPTwD z@LlxLJyPepp#`&&pI^SL!%RPGcPsu7GF7u*mas~r~AWTe`L$)%TEkk9MpV{?eD*|e1Co2^#@D50=I&id(Vq31(#uv?TDuP3<@xx5KM&Lm9!mf4`qbNokb}yA#?waPJ z{2FSwLkg8x1WzPfCsA4%ICi|*;7BV5r~U1A^^A`4iNf?qxb(xK)-shjjg_nt7+-Ch z^(U2KG40Safm=6_(?{$Li^)f}$?S>5iQd+6!P4A4vQ5bGMMWR)tvJg)y98D}k`$A6 zW+F~~_n+Hnb!riT_bTt)M`m(~H*m^Dcg@NIc`sMJPao@z^n@fGccYNh>xa!(`uQKz2zs}j9KCjP3ud)$5V zVAnm=SgH@v9XMf@Uf&o~4T|vWeQ-zB$_T$hNaR;<@+Rm0bo!=mpe>H_ZuTwG$qhhK z&T%0lIL(T|YN!J{FvCMY4|dYmJb^ABqRWsqZuKfY>!o2b#4n zY9#xA2$ST6=t_8`3}nmW!**xJ9m&}@_DT5;MB(QY{xtYLyX@T_QgXf>LQ>9A2Hpp1 zI9WILsoc4R4*HyOhq((in_d7tkTgGF@fBnBbOG8vk-K?nuz2ojQHF{UQmP(&|3b?y zyYRpV*IpDr8vDLALBi7A;2@F|U~Nx@H%;cZ0O{;>fXyCqKKbH%+Je(LC@nb5HbBb~ zcG^7AU4%ts^|7)<*)O;E^%#M#`dC?_s9#&eO%5na&ac(poPAwH)Cew3+Vd{3-WTa+ zXmZ44)kmQ9#fb82;JUzGot0K|Ic=jZL%>8xG(N!P?@OkPV_PBhYd!y`E~I|Gyq7Rr z(?VG$^U}S^Bw8{|X2lxLaeX*?o&i$rf9h+OV`rVrAD*iRs1xcjo=^$idYNHU7Q)O$ z=OR-c+4SQ^H8*$VPf}^jEkR+9=tizO7cQZ4MnW>3I|-Av5Yiy(U$x;LS(%pDj5$}p z6W(*Z{20D~)h+zpbji5{INys$RB0v5@5LTLmz+t^#kJC*6YbI@hfTbW`GGEEn$51a ztNkN~MA_(FE;8X}tH*SKC?G;6GD%=!l~FH4-1T4Uw>?(QnFq6u?(VDROD(HYygl`C zwf@9+ptX?s?+k~hZY$4oK)cisxw?&qrJiY&vT3oSv(c%>YI(RP+#~CAdM2kW{SIy?a9+hL|b%r$;`XmujTXn zIaF_UixXp&%=%?dv1ZhrYhjLimZ|KoR!@lOBIDII$&A(E;}Q2U4_DQ$q&FdFE41I= zuO{}%N{*Y&?3vR5IhmyLomRnsLVnhsVLErao_`xBL`ycwjHuN6$7=Sy$N;CYN@rD% ziZ{nS7L{ey8rR0?J#uZD%74~2_3W6~pJio|%J)lkczgVKqJ|B^hBPqE;KzHVGDm|L zHmQt%FY8ZLEzGMiO69!8p}|wn0d;@DTB~GMoC>Uj8O1grY*HD2D_h@9d4D#IQ3~hl z`m>wWLaLc2efaoj->(R}51p`0ZIrMnMqGK1WnTKm4I8 zi?Lw}xrv@ACm$Q8k?(gn#~BW{Nba9x9hZNHmMQdfJGX4d8SzztiH3ReBq8c>y1Wc9 zRmS(p*`-i_*s1G%8=BNQAhru;t&?Q5;UV&DCHT-YVv(Y!?WURd%ftNYHIZ$bhvEu< zB9)t9Y70J-Ql3S8C?qzsEA)RqQK`cbfJpGJuiioDcE{%TG zDDG{O^`1=vrKMx^siJbA1Y(8|vHT zP|JE0$E?i~h(B!7-9Be4k)S`Ylf{~NYx5Y&xG6Rpy|EU!^f)YR8_=v^UUR(G!)`SI zv9|Q$vnJ-`Qm0g})RWe<{8>W5XTzE}W@pQkK#xcwdQpStD{v$A^=JCgpJ94{lEN4@ zJ2fPC7KvnrTE=ILk|-~#kEJ+^&M2KSA)|^lC$AsG8Pyi@Tt?gFsM^R{Wv_;cDkmkD z=Y_0X8)8??ft8%}rh2GX+r4@1m(4mfOQ2PYo_cH`a;;u1?F{AAx7GR+I`kvmL7|^9 z9yQ4rVPFUzalBmqS2A|6qF4Ze!jLdb3MI7f17Fmw>6oG&9s+m76G|JU^Q}ivwbf=HU`V+mL z;0?MrB^=tMQU>Duc`2E}{;u^PRks3isxEs|^eVO|qY&ZRshvEx6qt?6hNLM3`;u0^ z^l4uG!C@0lO~nFUKkW|BR9z+1BO@^>m93O>Xd|XPuPZv3%X6(sEGD@q>xaYRMTIx+ z%Z9VzU0(2VU#!TZrh)j+9#5QO8~we8z^B zSd>W~A!E(b^$25TXPYKLS0GdE1sNaM$*5i5dv~Y0f9yf7k1ZZ?Iv5%IuA}8Ba(G1) zE?KBiMqQciN>e2UfR+%a`?>|hje(NIxn9TQJXMY~usy&WpoUZf+ zB|dxRcZ|h^owiof-vB_W7V5AgYbkRIoSBpt?{So9&Vil!KAlZ1WpVu;dJ#30bieTT z8GT-tycn6wh2Tl44Z@GtyhpFt(DiUaWq9Hu>fe_6($4 zA|8`CkwaL9at^ zYC6$u#r6#%7P`zM&I=j29)wj~T9dPpGO90vBwsxPDVG|HV56pe_6GZyv_?I)=!}G% zI4UQrjC}(+m%x!A(y65^ddMQo)yPQ5`Jt}9$_NJ*32XvK5|zx8svgpa2@k~Yv6~Vb zzxD>vBO7kc4CC1mZ>4;t<7UTpEuoz=OybsAb-hKPhv_B`ntWs_WViE{guKt2Ci0JR z!OFiCFtQaYxP5G!Wvy|} zI61GsVg20m&f08OpvjF@0xK53*wqJVV+=RXPxnpzZ00SsKEI1_CC!#@x$kz{YOU^w z&T;OwEd|e^^b{-5CeNd_ue?A3mfN15uo}+dw|0dy%hGXres_mxUXL~c*>$PjiJU!C zH1@^mc`;|2r>EJ@ukuaEDPbm+^7@5(6&oq8Q1?xnz$b&S0%MrG%P(5(LbNpyW{L6YsPKH+_rrnDeD(db#p{atvzX- zy|Km8*27p#;pOoFcTs4a{UeIlI7I)JS;W?f+NhXAT3qf}sZ3bjjJbU(g;7Eu?_ zDd~xF2#cws$4xpaVJQxc7t{1^)qdLG#fD^EQ-H;^-Qu;$WL-n!#WelnX`3u*V4I~# zM@_&`v&1wNu|3+hY3Z#p`YWei4eX17dA=?he)YRoMaEV|)8<~^tc(}br1F}ks54zs z55-&&J7;OH=plKUTY9z&`sKE4pXlkLGELObJWrPmL*>>pSdo&(gNN>xf*Ey8P?l2Z znA{hPRljUDi>dum%6!3kW%_(53#+_TXTh8^k~EGmmQsk|wADIM+0b?=MenNp9vet% zzMLp*7Gf!V^ltcmw_2BzRwpZ0Kh9E0agCj>0VFzcY@Ma*P18QD4hI@xP>^Fiqj$gL zIL;+5W&mDL+s)y5K4$K?R}KnPC`+l#^4`e!g*1u27oF!u;vC8gsZ1!_k;0cOSB33d zAZsIYG9A=QdK2Mg<^#U?o6DS51+$b+wY^PC%_An~5SeeIa9O(b3!-;-XXVG^gKHW3 zw;Y{1B^Dp1<_qbvYf1^4hNjEt!A2NwrfNN-3>M)|FP@R*B5K6tp$!(~7BwhS9QqGu zxuBYxk~JG1=zz^43e@OTJ-MOb1ub`Mx`-ZJ3tr|v{^u*wM}BY(825pf}%%HbN}JEh(ro8`Q5Q|?yk$fZ<p9>sKY#%@rk+ou9yq;Uu(9U z4hmoB22=dHpw$eF7t@4bK2=@OhPhBrXSkS_RM$AW#gypvT%kv_(GnW;!EfrtRnfcr z@df!17E))IfJK6=QI-b%UYpx`^grJ=UeeGh?XIK#Tb2^NUeQHG)_>=CM5lDYk@a5} z(PH*g#Zm@#%PSF8VB?*EBnPmhHpF3|elOKo1M@|6b!+E>TGSaWqCxBpZLlD>D{Fxh zv|IR5ao3fKOl|dpJDk}&0?AV~ zZ<{BGW{G!qx{Pp!8{^q!*MfUq6vnElAtJ#7^qRS$5udxrbh}(3&*|&al@}g&zqT)@3)AFd}RF(7^ zUH|7$Z-dnWSdur4VeiMKl;8mzI6UN%AFTN2c;_X zSy@-*#{HU6b}nr(i?EQov#Q1Xs%f7^C$UU{b`t$CIXZRyXZT7d%%Q^7ZoCWEw84!L zlWmtai*Va~WaR7@B+H>WNB>BBbLcpZ`$O}D*URx6`&)(po3xm-Uq%^q2G^_lp-dO& zfmldixjQ`O3iMzsqYw>od)$<+6{b5fjI@kes4H)ucNxV!kFcD&byMT=#v$E}BybjF zIgK^W(B=u8A}phhE`Qr@L(;?a?UqrZ!zJO#h;^IcD?iFIDz8?D$Mlk%S}&stuSw&^ zXZ5-3RZ_~-kFt!)|Bt)_r7o7l;=z!GpppDv1eK&tAL0XfdCK)1OhknU+b^O z36WffZN|e*qHZ&YesVYG+|u!?>s%gtak%X&5EFg5kk|s>h6-{z*xus5FH#dD+GeU9xsfR9HOuykEYB4OK2)rxpMn zkRZ;uOvDf=UW@J3!|Loyycs6!Gpf~vA(hRLyDVLg>3qdDaQDo}sp)R7=uac|RInYZ z)&vgDU#~>wK;re9KthSvEv2EWG{OI8_(BmeX$c`(s~!qrC>ZsCDB1)&%GYhCeu5`2 zUxhIy8AJ?)dN2MiYAwbGYG{oY6`EiTt)Vx_tr5iP)dBMQiKl5s>kQf-7Ounc1P#6l zaE4;s>O_q?%(Wq4YdlL8(DfU#orMe{VD9enj9!Bd3en{eX-IZS)58i|vT_|vlrx;4 z20(;3x1Vnw^d|vbi>FH3pr>UD6D`^Z0^7m zujv1y#hu06*+>U~5Y4xdHhb(7r?Fk{nD|(J`&_nDY~7MFovr82a=v?P^Y|7-yKy3k zQn^C?G(KNeF!0nGCvJcgzMu$DIuO9{+X4zR4U#s!{k zeXxf=hnCtWg{poZv z8)6pm#?D~kO?r5d-s??fgTdJKhDla6RXoz_g9&@{7rsmq?dMX!T&` z`L)cUA!w8+6|~E|-gG*ejQl~@bJ=9t0Vc;CO?%@$rflD5(}{z1G0Cc~pc75s zx5&M~CC?&j^JN5S+jLF}Q-OCeGjx+uhzXpRC>40OvSj3>wcH@htpAK)aea|ov2O8?SYy)4v{BYzh`MPWT<6iy0rCg zRLdvTqrkdV?78lE%mnfC{Y&c;jzNi1 z$xprMz;ip@;h@*=IBtK+hBJRM?L+AO-oU~7I_mr5QHoUqlFt&sz6F1ed{Iv{tsl{L zbFpBHqs3fi$Iepv@~su0ao23MK;~EBmdv0-g*vT2{kir04~eBXvNMbP`urhq@L=8J z3PC=$_EmTMsx!g=Cm5++IM=f0ux4|LB@9}}=}cY6@67z(#PMjc9}Zk+#Mq!aWUNQK zwb2;+ha|V!`Vo`BzSTl7TW)xMd-ut9Btn!JX(^*VvE-A)vx+4o?t5de<9P0*H|Tb- zy8HcpZ`d9Ajz1a>XV^&edTikK{5?rL6v82dPV1hX#|IN1knqL!D!SQ_|s`;)|b_-)VQ^_57(bV4WWGM()_@`p#(VI?0}GM6r464Q4&+W}IB{mvf#YMF z=6BrY_r|ntX$c%c+{keuP6|v#Ez}jegw)g!6Lo&Egs8_|EQyn$*N3Cn!?ZDmu)96D z*qp(r$EN;p=HdvXalg;2Hi??I{t#kbt%Ggg2G&~wu`;ICsti#>;HhE>Q4igo>rcl$ zxO`mbZ-3m!7Qu76;|_DMVelAp{qB^d%$`Oj5G{d2h9}7k>mN3i8CBdq3<{n*^8uQ`wt;%+>EA>R4ZA-Q!HkX;>kL{ zSVGop)bEWLJn}I6COAT!(TRxfdDC8}H}$8(?%2n4;-psLMrIHtfI|rT(|j{m$)ZhH zMr~ab3p>A9LfCG1;x4p>>i+E>@Y+T2HtS!4@WLe8)jYX7$$uz z`)t(d54?c~zmL=W1eq(1M6=S7K02a|6qWuHPGkfl(SJv1dO}AdK4dEXJj;Jwa3r({ z0{F(M(<&W%j!QzZy01{8^hl!H8L{!K?{^R(G=*c1YzH>OL6GMRrdY>@lhJH|wJg!} z=e4bdRO?Io$3)!uqvY|)T{yE%8#}2Lj^9?+e&@276|8qCQZDcT9Q)p&H-(d#jR)Qo z(S@C^*K-F`SjSz*osAvrO;Y>C+5%4tV9yd?A}o`&XNd2Fb?mIHrXw6OBeE^2bg`+3 zmnao?-1+A7~VO^b?7j}u1vAX#vU7CE5li`Pa6_68h#iF zixggVQtrWcDfV6P5~a#K!s&5uI2%uU@H8VXW!!TR1T+~qI7lAD*H2zL#4V>zBO8*j zZ2Dp3ykzpJ0@E!Xri^~+lz|eZQbrhZZ!-2K@W^>H5-b9PSa0HD_uTDcgFT#ehRofA zD^3hy-tfc7n2zS}>5XygKsN}xEbNMxC>8b;bMc^qa7~!zP;Ku0oQ@D8+x2HY8^cl@ z`(qr>CP#NeDjk==VWhqeX2JGo5jfcD+07#qcw9DFqeQ9DSr13v{r&)FR>MhmG;neB z?GNDSN8J5j;10;&5AV^wgdP*XVPw8>AK0T~Cv6I?Pl+IAg76Zh(w<`XiT zeC)9i0^Nq)VSnPz;3ku!x>*=;;Alk{GtV*Fxa<|RtS+@TvK zeGhw1f9fN|sz1aAlR2~AaOk=|d_`>R^xWxmPcw;V`QD{G|2TJ*cL=u}>@*s4Lzy8W zij)c)M}gSQcO2TfOqkc{QTVJgf;-NKjG@*&%-o&+9)z6~z`i98kKEdMY`b$f0Ji*Y zyOqrQr9qp#M7hAH12*dRhPc(xpN%GTrvw)t1{0jmxE2G96Dk zecYw$kLlW_=R4y`4LrdZV$eya72h&$g$rT9e^)Kt@Hku0+f zQKDSaeR#^pll}-%;0T7qOpZYD;Rrj-(a7l_mI+oPuCg`npGr1<@3KyWC974{AW%8$ z5aScw94s>zsgqK!ri3G9G??^ps@U(bad(Q_$GCds`s41*8^KLGz(t@zf8tE{5Clwn zp;(}HhD7$?De9*8(WJsD2F)hJ;-e%{q`Vgp7>uo{*Xj5!ESmuv(_p~%)J3!zZoVPH zuRBGwS>x6udLbo(Mx!Wc3IuTB z25`5B3#+)pmtoIT;+M9xj!^VeMm2h@Hy_ zURBR8xqIUaD3P%<9qsG)2;3TWBo$AgmiE6Q3>e!aCn>iTp#hP(3EJNh0hw#nG- z!djboh(`5s)7Zn+;sPI4;~F26$^O-zMi<{TQ5so9nPC1#RGgLaPiY@tyoC`(N|hh+ zR=7aWoxnqg8(_GOG)A=s4{8xUw`F51nzRhvRz>IX&F{%0DiK1ImBC{1kk& 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 %oHvs<$L3QSPz@ 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

G^o4!mU6J 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¬He= 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%0DJTyoIuY(9VX!}r@eA@LDh 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 z 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

#n<|i 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%0Apv{{*wl~wUlyLsIvOE8#YG+HX~zM4 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�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

    {5pV+tQJY?6%XL; z$w^%#q%GkNIm*ozdrb!e2n}6y#Wo8MLAzHe<6hM8Y|5i)OJmP$X~ZV7N0=-#z0 zf>aF@qJywJhy>74@9ad}AUSr@#A0)%W)&kz>^MzvfPI_wSOc%rZWGRqzIxFR*mlE2 z(o&g8iv~n4-)cRgDd~`eQo$rYLYn|C|CDTJ49VV)l9vHf9X!ZZ&`!CiJwlXT8V5

    5mIM;WYGf>3=^g`BH%T__T8kN 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ɄyD4(~<;>LQHmMs~4; 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%0DVorr41ZSxay36TTnB`9Ppv&N_OSVJwmwm6k=S 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¸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

    ByEW22CNiY>FuO9is7F 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%0DtiKmlMKY+>S7K-sdEn4LpN8S!d(~h+ELL+;O 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�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⪖C(c6K<@7fxXlf>u{8Fg{PP!E_`eEeI$|9h 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

    Kb1TC_W^xhH+Fhfr9zKZN1|pCOmf)}4HIA+ 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 z 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 z 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 z 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 z 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

    ;bD2tX1`5W@;3;3iX7gsf5c)4q`+yKf^9i{ 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äIV85ZVl+o1EDcs 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℘ituBh+otXd0ULcW}N6e!dX=cJR#Bitiu@)pJtnfx55$p z#0AQcBXr()C`Q#W3ucoJy6|!8DVrB~TC>~_IbR6ueG3wvRI0u`G+2?e+B&M|%3*=h zN}i*bwD=+FTz2jap4KTV_X24Q2&zE{T&%^-c+6{&RoSycZfq_mKTDE+`qjcRi>Bgi zuLZ5w+C|B^_vLzxprbJ6{c$s^+Jk|*(wyH^9_L;uZ4h;Jwf!TB>GY`SOK-k_6{_0Z zStaNEnBJYDbt4abb|kYZ8W$Q)fZu)IVu*mXWufUPGJ{LK_4hL;RJiG!?=ZbvOT&)i z8Ga}{DCk55FA$X|#7Glm{N4aXh()T<`S_Tbm|?UBbfNFfYN7A-Zk3%kELmI2|CpZ3 zoP75a1aWW?eug5Ah9C*ZFs%;*4ulf&g?j5^f_4&G7=@^(P`82r!+etoLsk*ZpT+Y| z;&XlPieN(1cL&1%j%KekVbh3BTtu=NApz;X`&9RY`w}BTYIpom+I?LbG6guD4uEwj z2$J7r4?4{Uf`J_kY}y&3fsX95@k+ahB66fbimyV{zLHp8@+&x-XZR2Q4yBzyt$a(8 zb2MU*Dk&WQObr8%j@+m`Qw6pQ3^az@4I7ap8zY%+{7onvKAK`oET7G}l5XJ9Z2oL= z3IXPXuRC9fs$Yq!NWETjRFhwkh%nW~1Vrs2YMp+J*oGxG^%8D0t?C80?F*_W}5X@)>z)$mVBwMngGzQyL2eVdZ#u<;lKxvN{L3E4|1s(B8RRLJxUTL!@R zc{p)C7n`zRo~j8+_oL-0Oj1AFWn&7$$##RXvE?!5PwXu(M#Ie;6|1P=V}z8rvGS%79CQtOKvh=G%(dEP8}kB zkro0;gtYX|JUfA$?hsSz#Y}Gfb|-vEb1IIAh4WQi^i<+;1K_gn)!~A0PR~; z7+Y8+zgxAKniaT0EsV5SfgRRJ0!2e$T)om2Os9X5j#d#Qb;2X6C}g=Z=TGPnWElUv zhUj9NQBZazp39{2)zN|r$jJepL|6v^8sfvV8fw_Pa7kronNKOfH2vmK zYM>Zejvg1PvV%tHIU=GK%JiW8p138fA_(gJnC<$hb;Qm#Lh96?@FN_~kRb~!>6wu6 zy&Wf*6ePgbH4WAR-?SJjxBV%;G$eQvjjm(y3iT!g7|->s>PB_{+{VB*YC4pH3=w$U z2K2Gbo>gKmJx%HOQkB`>T()>Rj3z4^ob>qq5|cnF>8p9n!X846JXFOweE8!Ewc}9) z|8=v;9tuECP+@-6ZAIB`DNz*p*HoFL>~~?7Q?j&)B`_ND#H3TH*d0lc^u!Uf zN~eBT?%oSs1e@FuC~CLTLL%*uo>&*H8ZT*l4lM)#io^*3v<8Xxm!K-`Qtw4}b3_hS z75Y<{=m_15Fes(Mym=)!ZG#uK25p~!oOR9;BYpsl|A~cabZEo~y-zVh;_6*D$ibUQ z)-Us%Bl1YCB=o=>E~)(?K}RcmlA44?<8JJ{SdqsetSYN6XMm!_EIs4TPi`3+I)nw>q1KY-={l+%0uaVS?3Z?{a1G+j6g5PK_vHAdRFuCNWio>4B z&|Ruh+eUQe`HNnflF5QMK~}N>dMQg<;LQ=2d<>;8$Kx3a;;oV>nNyfMqqB?UDs1BD z)na~z8hL$WXPd~`{J-1MsNAoWWFpfj2zOtQS6Zs#i|B=As9R#gfo%kVo-X{IoUegx zlwF3keAJ<|29SlB|7>+A=3+-_f4e7?wG&B5@KciE+I(BFw{R@wy55CG}niFNDPvG$I3~SB9+1x*h~M zg<^_Ilax^ay4hL*Z49QFdI7<2N3Nwev2Bd(7d6*PA+DGe-^Nu>#h@GXZonrT-`!4Jt}>XlzUT; zRC`gy2>KEJ7c{oeK$NmI%BAc722@wq`>koOZp^DFu&$eRI;OpypqZIn9AXugX#||8I`KaQ!OPMSkHH%)){VZ3l725LOw6cx!(P=7Ne;rvk;#sC6byQ8{|UBa;Jy0zv*H8Iyzf*6CP;h;lUjOid2uiZ}7NRPg4e zJum6b6Rs@!U2gDp8qqy0z)$=<5}d|tcZt;O#Z1qI-ir+nB$807M`uW=~ZuP4fnNLehOy{9L47v_-n_eOSLdK%QbD@J4FvZ(MY)(5Fm?88dSWAmjDEPw4VBk4)<5zVF}snoUrNMmqR1`Xj2Ds4bbm@aX>3Y;`n)0}~Dtntqc^)jbTkzl*7 zK}A+Xx)_u7AciX}xO`=ysyALt!66Nxb>`V>bn`8Ql@F*#`t z8F1@b4W(vnj6qd;<#h7u<-9#f24W8Gec8@m%fq4zh96_pjs*G2`m0eMP>gKH5Pb4M z__Jrd;Y4x~GW|gb4-ay8aL4W04A_riv_IMiT`D8sLn1XupLcC*$_XBJD&wr1kY)M2 znl6?|b4F19&c7tDb2*tiqkqw%_{&6m&s@=4+~!=wRVOK2K%Y=VsLq~wF-byjQqzdF zI5@S5MF?Gc92@&D5eb#%Y>qNxQYuMKj*m;&bhsn=1b?>X@a!(Im*iK?&v`LRFowDT zEA`^oWrA-0(S6kIcsnU(7OHwsCN*%A9?NxSB$_pla}fUM-1#XdZwpb*frsI~vc#eF ztMo5H>-%V2KAt|%-`XLc)-nkb_Qd`xLvme+aQI)i%N|MgGH))TxkvW#RR#_RVqh@j zHh4?27_0(Aj~?nCUvUWBHa7}hmMj<+`*oF8Ef8*LAOn= z<4$|)yY170inGSTiUw1EjI*OJFB(TRKT7$?tX_f;O7_*+Vkk3D<*n?Ek6GfXm1t`N zaui9&%7>C;BV2%WA8aVA1yQ3BW>}}_*qT#j%FYMmyg2BmUDB)TbnpWPs12IoqquOT zU^eWEKb>X1!tqDks=iJC=3veL5;z<)VlsfMHrTs2xFZ>qO(z=fv8**s^RniMag=#E z=|4>kiwK=!mmM5*GS$uH$N3uazY<1qQ0#ikEg8<3-@9i3tN?kgEP$`mj9KQZSB-WFc@!*Gim}e$XXvdc*&VGjzsJ= zKNazD@3~;VZSuyq`HJgL^mIAFsDa3-ufM0GXCD_JwDgD6&=g^nF7^4fDls=`3Kc7n z3(jq6Jo$49Ce_Ltm$GoW;k{*3D2HcOmoaOqLKlp&%gh>ky#~k|Fff{gMQF=p$+9{R z4c~YIu3|5AyKuvHLZKISm-MX%MC<6qp(b|_eCu+CaJoGQO5{Sh1Es^3IH8hbA{H&) zbbmIVy+4~@fF_qzc{XS zYK@WalD!VL==uI{!jgCMOfZ^w;Yi5&U9troLaN1ShuI?*CbSFDicgC8#%P0%2ELZV zZ*S%&;yI!{|9BmsB`rJepi-Z!aXpyH5 zsrq@Bb!6)NVPUFamYr8$Teh%~vw3_dv#a~ZRa zzvgWcwp8lH6-|XE3P-P9sM~Bz(DFz=9ZwgvM$zHX`?Bq?xxZM9-&4xYzvq*~uTfEZ zGM+WwKA6woznHBK?U%l;tW9jpEqIL!KI$WPnrnt#qxGZH`FPcMXR#>Zzp2(*Wxdum z?st81wPsHFvy^L2Nb)Az%M?6Z>Yd$eVPO!OH8A|xwh_T8mPVO zbW=w!_ECS+>7WA%e%pE2`K$>inSKk1+KtNI9{EKo(^`ICEv43;3jrFxM$N`(6@bDX z&OxnSdVWNTWF(pM4n+fv!*XK)9fTjbf$UK%>FB4B>J}~`ZFufS>EpgyhrTbb=BT$l zz(}2@q0W=sh*oWYw1xeP^Yi%vH6f){=%N{bVKrK?LEbu*jQ@Up60_hQbc{^yohbzF zQB@NlRT7m%?L6Hx;tPVg&O}r$C&13~5>ipDYga6+!(UE&+yIYhI`Z9nFE6I2CtkDS z=*fP?zudw)hey`MO%x*JuD2V%<_IuR#nl?p2>@kcYymCi2G^gVSDK1WuIX#em%k-Z zTYWTny;|zWC=gfVfTQ$F5Fa@Cbhz2y^XA2uiXU zuDX9H2S-ydZt|KoZiFFf9HUslbat`UP0O|$qjZx_lp6^wD_7mB$e3@f18S4#*ES;= zVNDsM6J34b)lwWv_`B1Tm@SD5C2fm`!g_5uPJ<#oo4o6O(%D7;X9l+5tkc{K{;;yg zTKueh7dJAkS@XY*4D-}WDC}`d5D4axxM0NjNLx|_TRcJq5^I+EDhHIg1D)d32OrDy zi42VIqL#3e-W8(?j>NI_Lq=9abt{<1B=Vxt&Xm`v53gxIw4L>vl(ID)4{m5ZJEeS0 z*TY*z<$O(#&e*V~WnFt6^bu+LnuZ;Dd`3g#LVf5J|_2b%fJRIE2RJXgU z5&e&{@=L`ei({SZ5E3LTflx}g>Iz2m*2UF21FWx!V?#^WpTvNZQC6z@gs?#RuK53M zf@A{%-n`mBFnwVJy!4OIr{g!Hp_!CAsWKI`*o!O8B*jpE_F1E7P=HK`nGd(aq4fsS z646b-I|IR&s>cZ=MKvS8b8GW6F*n%3!{+&5{t`w7?j`Xs!?S>d45{uuUw@=4AGP>r zl7h^IVZ_0-*lWB^^9J3OYCPe;xy>^@7noM<-M5(HXto|A;^6>0XXOf=Xtos7LZu8Q zr6w)TCnC!C6IgRkyvtOdM9jog2&I&-yBzWFN-jlanv^BvDTcXS!i=7IR+plcH;ZJw z>VAEzXY(dwlk%C5iaf=(S~g)tT0ZE)&K`+k;L{r?!sg6sA-z zac$D1gJ;MJm17W~IzY-4K(M*v@g}q>$sOKTTCwlUSaaI4m5JX*dZJ*;qf{~d;ylYO zuk`Whq@2DD=(>U9Umld}#9Rn8Bkcnc@9ypul1n4>F^{kzI$;6vwar5$;&$9wi3*pR z4CTTaVAe#Z-RRhZW7r1G!egnNgNQRg%w}4NZ-m6UJi{%W$0#JLSxv7pP$Y{z;FN0$ z;*1Bdu$Iwq^J&P4@6PVIq&L;CyP>kywQ44znfx#s!3L_+^_=VmiY(uZPv-AX+;$aC zIu%LclB@%Nh_b;&12g3rk4HSZ;g9B`hw13nbt2Rqb`)}9s@i-4*DqVg5W(7ogy))u ziwjDrFwG`eE=%4jsVw<(5xDt}K8|q=(b!ynUb$0qtqS25=@o|ulx$+9waX|Cg?Jz2 z{Me;P&vh*#=)rkYr4d7wiJrW1p5u>I^xci96ft^0PH>rJzge}PeSEB<|7lk5&YN_F zo=6paIat4>I*{TD5w7BS!W6`znXwUQzxT=~#*kQ-AWg18Ih`O01tt>;=*Z^q;iZN2 zYpcQ^b4a1)JkK^h7V3Wiz2@gxmr_7U`QlF@OLxN>hjA;sB{+6UVb^zDlsMEOrM}@Y zx8EC4s~y)$^UIf9!3m_+ZdrbPZHt3c-Wntm(X4&LaDTP3hSvE|OFZibd@RSmvn?pW zoi+dlW@U0Q-td-$4p>>nh$c5o|C#|ex+QViQ4-w zuS9CxkjvLdt!_c=SLjEqDJjKF3lb7vwyUI8hiH^ZJti4iM@-_Fy$F@jlk~~QN~r`d z4w)TZF~;a4@5^)$TkDDIx$47p<1H^?Q1XJH7&-FdzOhM8tul!C`>uz|#9@kBsfL5= z2u(DRtQE>5iIJ|8^!D*W2=mQJq{W&fpng+8uLl3E`nIyPdvTQ%>icDtbeaAu6nl)e zF|fO9(A9l+J$ky?sc5K>W-79mP9q;*-->|mj5yrY)|rJc-qKjEQ&TOZoFJSN++;4} zXLOO9STfCj(&M}uplqe1PuL9dQ0eFe;aF2drhg`pmIe*3>h|Kh%uyyH*Z3r2`f&9x z8_yZ7%`mC5SqFO}(VVUKsyv|B;L59Ta!`n>D~lLDI6*%yfShx~RQ(#*ysG9|u7N;o z&Fcph9=gVhQf%1TkQ#$>JKOaS%gOM| zU9U58hLpBofi25+WR0kEnUaq$j-?{gkgDP0cE(D*aT|Z0$n)i8m?dXl6hN=rv2!Q; zW(MpaI^;TIeV8Du=1teLVtVzt6nNv#CyO#br5zPhoms zL!uiFkr~SJuNJRj{I^FAsGDI|ObZELGh9RAO#gt`h`RwGrE_-6_u%9Z0dEpgf^(Q7 zd0D`jkU2yuf9T%DKm;|KFI-ev8(lR2jdlW5NEOgaxI5$RI$9P;BWBZVyJ z6D6|k7#c1OazX^h9SeU+^O62K5ijD5Nvp4gx`4Pz%|*Xf2Rb#Ep0ALTjip2_*lC~p z>kCFmYc3+QfKf8|My#>c{kAl86`BO-aoKH{H)bhcLL3@a)*_DMXDJY@%v2h?nI@3s z0%MipWI`iCv3O9Hy>}diT>=h_uX0CkKm{*gL0J3~9uG9=2Tr=P&u&_A#@n+3tnoq6o5q6>TjZ!IX%3xH|iS zOEjK2M6rYaa}dr&nsCt;Dgc`$s%1w?&$~hGF)ZX5*(R$(ppJrbD|XyX#mmOLpegFA z*w`Kk`J)|$CCe?9*2^!sWb|p*ATV7L&d7->!q@suD5j}X_IbcP2M3qE4}qO&3PF1C zH-$J8h;m^wk)_U%;P~s!W)uYhibe8AF^6yJam=<(VwXqk-Q5uQx)UW60*YLM6epN1 zQiL41CtlGoKS8r-CV4qAKZCH2I7>2)>au?WC;s*}-1XbbZ5P-UiuwN>$j2UC5o=7< ziCE;s3)*eYbw92e%_gp!+AhNCV5?Y zc|1(kv1mtj!tCJ<>ElN?tc_nyo&3XPY7&w#TlBK3uQMoF%Nw}QO9XamaM-b*<}$CY z_8U?_*6F}oAq+!^L|DQAoi(o5F~VH6>tJ)H)~(5~c%Z(3Gzxf4ZaJv%Waox%TI8ii zGQi8Y0D_%URQ0P5CW8JN)Bh$Tn%O@t(Q6eglmC?l*v!=Lhq?wc{}r$HOp?{wN|VC+ z9+bryQ!R)>S5V_S>{+Krl`Pbhic$UStP*uTT^`9-#Rqt-HBpM^QCAT`ZS=#8n%$#N z=QUMRRsQ-xtl&+q-wUO>0eum3^zu@DrGDcb*=ZR2M(VtrY9U8^*5I?<0m(PJPd(%G z3)bpl3QA<6@YWGfa>$1~=c$^QHlv)yM!aZjLL+F|;EW|C*wk`xKVu#TW1C;*ZF!qUAjPf_I zB6PY?3B62E&hq(||MK#AO&7D}WVKU*7*`|Z-6yp+Sx4*F+eJ_$;?eECoyFxZ<|;x) z)@zLAG9so(@)xzcgeq{}N3_8U93sK{oyu7l{c7}l+rwj9?qiz)C0^7Dnuk59*ozfmkwZ$^0>jRI83TC@&z&@exV;wNdI3%_6<3Ln!iW(10< zWu`-ELufWUeE8$};*ga70d1(f#)|#jy+^2)y&l$1hnVwiscaw`i1=r^^z`n%Adwkw z;Rm=8FAmA0c|1ocorLKefIqT^d>}~p+kA2a2!r3fhUuUI8vwiUJ+`7y(htB{sgwgoqGBQIJ!vsZ1lPeA~zKGpK8;DikAC3}6Hv+y~l(8#RGJ zE&SQSJIZuK?u0{p0!p=befOT+q*p;9!i%W#Y3yMt6}yioFqfNvxGx-*y|uSF^#v-c!8)ug&*+-#mPLu=i;1;WJL;zckx@ z|M1}cH}?l@zLJ5kDold|Fz8Pzl4c-?FgF-(P32;io|cMa}dz7t?55y z1$Pv?L15HsI>8;)JQ@bRxPe|DG%W=LXgPj8X()cF%jesn<@O7#*y;-CKpZTb-IWsk z<>d6$?ylceZK)*1FFs(nkcF=Rg`f+4(D|7*B{F6EkH5nq$RC4$%m6ZB&oySogE(9c^Eez5PtwQsP(ueuQUdF{6sSVsbnB6PRY?;vf( z*`|(9@tA!9Qud#`KgIuUf3(h5`h&J8{jHg$9GY&Y2h;OPpR4J)TW)LN{+xAt-iumJ zWq_mt4Hze#)9xr{HmHnYniWS72%IwdX#1PfwaJdZ?ZB3B)sS&El$ckK8^8=)I1QVXKm4)AQW#orn|hhy*QgrKMp z3I0~65Pw4?SAGUkJL7p220Ya$ty@IhxPJaIe2RkgGDZHDhW11(pCXS{YBzL>I02X{&upM&R*}oKYKYpT^?Y*jY;}W5io{^+uu#b zi`nRGzCcLTYV>BcI$!R7`Q`bWb0F*Ni}~X9mk>M`cVA!Nyng8hySvoUwtLYp9r6gm z^r$h(3O1&16rkzv1h6(-6Ol@-JtXvLm#e8I(-<`?S9$Z~mvTHye6~hALT;qom3%aO zt=5CFXdN`oyuD5%lBsQLmF28aR3Xx~7Vfmi%}D3wgNJJYK=fKHxgdm5h7#HIu5!Jv zB2C6M7xF^vGC`OiX>?Cr2&#ob9rF9-q5MZ;L;UZboq%yT063jj^jsM)2-U9KSw~?R z5JDXzP#(nW;Q3@ZLWN{xqEDBrJha3sQAyL=T3CP!q&)JAv~(Yzo75*&*%JL1RVw`X zUf>9c3HsA1EYF3pDUEga-iIy!&EF|v$~Oro(i{yn<5acLRf1li5P{Q87R*f?eFwG` zQ6eVsH!xw5wQ4b-KB=~+lbLBuv(3!txuG$g2hDu1T7%Eyy; zN8xSI_WBZXC>F=-&f+io(cYpx9lTl0-%*$;++ww`zUi#$S&JStu!tm~<2px+S5DUrjY*UGj60WA6wZ*(@2ZUYOsR@EkUA$O`uQ^lz@wz zN+r6(D>}*&*f6t=*LeXB!=>w%s`*UKGeTXecInaI{$`9e-{nAQ=Pk%+I&sft##=p%j(v_vzW$#frE>p;;YJB^?Mb^p^T`*lB(vH7Ko! z#iXDA`bF2MsE}X>8yOM%=c7&$Ov%r8i_6tx!pVw>69Da)3s;Nx1reNq#v0-xs6BS$ z_{854NwGpj^qqL_P}$?hXoc5|n-<%f zLmaK^7xsPbI5B2y8KqQuu znm^yx2}7V^y>a=YT(IzGZ6@~G$^n-NH!mgHcJyNQnt>}4bbx(%GCp4Ce|YgSZuvJ_mNkKl6`M zaKZ5VmSYUVA*RLuTlbF^^D|{_94K{N3@I`fse9|W-}SsrzrEAMI^l)2=+QqCH88t; zLKU`G>IhfiX7Rq>oCz4Rl(gp4)ZWqj0oYZNm3}55%v^32$Fw5MJ6DXi?n(~6B*ai4 zx&=Y?Ny=Rlosj%+PZrbHQ$)V-jD-9{nTNTPWQKd<@t0rA^$B5?H>|TNxFdX@cBrx~ z30B=rl!zDG_&(LBO-q2d?u3Mh)F#JLg$s+W3Xv*g;C+770VC3y?V>dnMmK>p9T z&SeXHe&;h3XvW(}lRx7rg5)%H1XiVj711UX=aY@tLzvBPFmd_AVQ^(FuAp%NGf2;o zZV9$fah3}9*=F~2z$hV_TO$HfA`|_yCV`}L@zcm0neLj$)Z}cnPghNn!P@XrqRLY2 zGkN#vxkseD4Nn=aETJojzdk~&#C-9-(k91xZ4fc4rW!}ie+3(L)g zPay?xfnNLN-|H?<>4mH61mgny(FB3r)4_g_{F4JfPjBk!y6HIu@=bvF1ShzWGwS(eqg@ z8b_LJlvuddAYpiM!_pb~&8IHL$}8H!@=3@_#?miZ*^yD(p_xv*0KZIZoUq4y0O+F< zuLx_0vvEXftn-&xGcn5_!C{1R)rpqsUlZ&Ba?!vH+b8t>zC=+aoZ-YmVkFysE^#}* z*$8m5wl%0%b_hcSNCgq9CJJ#TRlABt*%bPFtFOnPoNpCrX%}hq7;O!*j5sYR;01Wo zfOLNahtqQP1Og=m-r2k>vY1~JtJ!{PqS)x4e?yB57OIRMwhlvq5RIgJN`{Y2u+{rJ zu!SJFlerzU`DpU$6=LMSaFrHF*=)Z_P(APH3L!Qpuz0sD&G~*g*~z)a?yiU`SXnoz zlfx#)z4dB*y0oq9u&3Q!zMkL`!-Qj7(!S5b%VNOnoGvLe&Zib-KUrkP$K(pS~NvU*a@l!}*GLPXFw-uM4)S z3~tDCIfM@2!lfLo01jeiO>s1`68K(I|vLn1QGhdc%f)1MvW?BvBLiOV}yuFXJ} zEKEr`4`HNUn$+2+0O(7V zAR7RPx@39GYwVPUmEw?>0ee9VA0~Tg2zc_2^w14;b@{6U(pwP3f&igH2CxcZ1S7mR ztB??mSMXR1OhjT)2q)x?xj_*ZVHMBg?c~Ni)$S7dATMgEkvf_t^&xV8@;8!2 zlm5Xb$az7OC}@|?il5B;2T7lVQC3@ zIs9QYJzYX+XJ`|gAKU@xmO$S1{&H>%73!Rj_t_!PGu;;u9dF59_>FoIC}Ezn}^Saxatk6 zp0PZ|?yO!Vib7~?YOBa$UuPlbZf{6q`uIrNM_BaYcMZ;w8jyXYzm#@dorf6EZh>{& zkPg3uo_j%Z_LTNvoDRvz+eTnIc3w!-uSvPezmZ2c)7P-9ZohJWx|FG{v*~Plc5(Lj z;_T&Q@#K{a)fs|)_#x!))aUQ=A%5qFm_c>G-lkK~34UM;r(*^FCCRCFh`K;%-Rf6} zwnSF1@X5XLwoHR4QE%-?iJOTE&To{ZLA^tVuy&^w$qzrq8}Ym2m(p?|`U{@ly>~G~ z`q+Pz?>YC%a`Gj)#c`|$d4(uGa`UngL$j|CAlX0w18-rVXiNtI6UXC=*Kby%m+wcU z{0DO$yj)Z#ZHj`5n>K)THYNyrZ75r@S#}sI5i48gr-(rN^ZXPnJi>$asoMU;UOBi3 zX%9jLg~0h>C1luyw$o?jK82TpMY0xcCcTNm?@@!hC-tbFR%RI_Mqre@edE@E94s6Y z`Z#0=x2fz=Hny_vV3{jtER(1-Z_F$KjvuD{u*NzNtJvxLdS_5UqYWWYL1c%L=_K7H zX)pxMFfRe6I8`)sb^$;aR|y20L@C2`4Pb%x?reVsaoJpFT?E3&Qq+t`knu?H%SHPI z{B*J_id0heY<)8pT@`YtbmcC(r#d8qphK}9jb6hxIg<|U(K0-vPcEQs2P4Xk*BR>! zSkY!dT6 zU%dDg{`uUQOj({_|9o;Rk%7bz(*cSb>t^aG6&$?KERgSj-v7_eAHRAz!O@!B`|Mvo{|unOgYzKb+&erx z`PJu#hg+Zj@%i0fz4#*mHTw07zu~`!+t2^UXDE8{$Gd+-qkrX-!!P*T=YQNDeSsK9 zgU}LxZT}y)ge`Cx=;GW+CD6FPS{~g$J;ja+7GUmSj(0}6gzlC>U z92nhUWLL^Ut=)v0QL5QH0EV21v;t5{1pMa zQ4QQww@4yupY@>8JHrLCo*MRqq7|r3`JtX0JtgHtAU)9N%;~O;4p30mG8W2SuM)Z` zj6KEe8+0(cOV^sTGyq;N6%DVcKL_pW3nWz+3a_PuY#yY04@~G7Q z6S&cG!dinGR^U=745|ArD55Kdq+o9HO9!utuIPFe!C7q9v;u=t)6@WIK!wYlZQCwL z_&|l_oB74*iP;KRU{Q)Aivuz&DO$FX!hjG+Nn?8zRCF1fk}Rac<`@#sA39qx*x~Jb zYC}rBei<{&gz0jjEiMXxTsnKb`H1yZX}9TyfQ=Sm(?g8q!X`*iZ49J{i}d?TeES#? zZPBTJ^Zc{SLwgMS#&Y~>@&v&NoJuXezRv)^H>A>ZVt#uwM#RFOftV6Ke`?#dxc|$r zX5n~-*i=o^u^PZ2aRSK6vZ~|5; zYt}p!ffN*d47(#sV#o<;LfMN4{G0!0sL&OB)IFP6mlDK9s;r_6cdVo$xlOBgw*U^f zM)i){ag>Y6`FyeZe*FGrtO8S{HF~#s&tii={LYAilbaA^lKg=MR{D_}0*-)++}6QN zR0P%ji;hM9$;V0@IkLI5T$Pv7-`e=&Lo-U3rrmM*b=ZDc?%|HRR*ZV9`7&~*pqVyy0 z&EC%cg9fhSaC8x#q`ve2n9bkK?8CzL?P3CiNKDh!;kMQn7{~n+S&1-l$qG5^7#`!O@I@II z#`>m%E%pz;yfc!!u37L}R)}g_^bJueWNh4xtTUzbL?N7JwScxz>ODdgcqO z(d)4{)COV~K1Z3*45q*Hj?f=sg?^*9rS5CQ0ed9x%1|Y?BXW_(1umm9nuHZ&VJd(5 zGbQ}MRv-zz0}zz(2|j}`tmqa<>CpuE;C0Y5g<4GJscillLbq(~b1wT@+2i zZ?xFJ=V*H$R4kd3Jf;TL?YiSkEh(2189TdaMYe&JK$FR^QaQqYY-MV zZT3}Dv;;W4J>ikqxYhW*6Hdl}AnF>}16^=3Yb=Nb4^`lfBBI3m6uQtvL$MhkiB3YT z!zLhzE8YZVt8y^=oQC~CMNdMWIec4o-rygjUi!Z-ri+Q_xmW0m&bDjo3|0A7qf>_8 zUt_13;SKc4W#7HNl?xcl{#uNUjj2nrHh0%qr!$NANrDH@{2H5L4}j|991lyV=}xXNwzK~(~S@c}-xCCnMamAFlL_f@UVnk{a zy*eBIFO-?JgpUCf|4mJ%OB&T+1eIDI>IZ$E9H1h1T5Ey8X4>JUd+O?jm+q>q!(F<| z9=-6=eb%(XOLsO*C$x=KrO5t@+iZGQk5*{kGvzf57u!!*Pz^mZdzbk!KQ(nnuW5x-`t9sE46!X1LH3Xl8sQ6TWSbl3WJzOYZ{ zMS(rkvzg%CsZ^7AI$pi0dA@~(=H=<~aaHZ(zpdw91<*Eezk#$m82 zlv1=f6T8iv7%8#S+3MZPvO8h}jS$@%#*+O)Fs8F8y;ZC`lOz?V9-Pmv)6eIluSUNu zr)AcRsy)SCwoM)8k@+WsBCVPy;^%^`;|$e8rsuQ>qsa4e_i*;v@}D5@QW3EB4q|si zYX(=GU-8L>rDW4_7HV&l+{#JR{c$|kVv{*S8V#wk$ zh1(YI8dyE2FW>XD{(KEkoSlPwgS+RA)(8$cR@HkvkC|fi&e{=jVm2}u^YA|yFM$-K z)upYi-H8uJ(QgL`Dh~fW!?H6mB-9R|0amik1U&rlcMHL*F3n#0Dfdf1exAc@a*KR_ zMHtE-DUgIAs@*8fo~_egorcv#@tf+4&gXvFGA|cMq>Zn~ct|;$KyDKNMuH@d{_7XNLHORu z2$Jw*F~A=}j7Z{69o5d%^BI1)-JI^xECLm3(oqtF?=t$*=inQOk6}2 zCn*EAO`e&V)%OS)LE=O@z%M$jVsklve#4)*4q|kBQt%HNp-X}fmmMdS0ID79zo3Jo zKe1jb(lF_=m++k=;|So~?MVL9TGQS+hR6b&C;Q%LuG|+)(=I28ka2>j<{SA&#N>QE znp9~U=RQ`Yp!UHB_H0w_%bfn6^TeVf8zfE>1uGj z6*XWc23noPQueDY>pNcVh~tE}TeZ!tIsnAUa*2S6T3?yp9+A5gTVb8$d!oFmU|DMs zwzOlm@RXRWSg3L8;O;$!cr`P~`Na^kEPEXsT2_u;mF0(wx}|Vllh&|VyqVtm;irgw zidTQ+*Rw`Zr^X?*i*RvSym|Q-5w7;M&kiYMmBcl-{3*FDWy!+ISIu6H+D6;PM?}tJ z?>vFUwKTYzCB>s~5}R81@+A*5lJ(iB&|k%})G!n!iv!Pd`b*JD=}I}+Cc&x{->Dhh zBK4d>Yr39jte}u5s3fZlO^vv1a57^x%(s&Vpn zr&3U$0zPrf@d*}}*-yNy)219QYg2vKB=5H`sd%FkP{X0BN&=&1ND-q z*E3XlIvF9m0hb4>vrOFbOb6f>cik6cPN-*rm@zIF*GrtvXRlGvAzIVKW~MYf0y$Fi zpEj0Q3iFs|y-BU34JmLdI6{bOJ_%1%_hz%n!lu_lQm;ywXzBfhmChM}=mNbFiONYd zMya8f_LGR7Od$%cw=YJdU%c#zNkwuk7HttQW})_ZEOZ__!>uZ~*mXJ51j;)+`C~Lb zzkAACMD)_k(96nQnC8j+40FDk=+(O)bx8~dBt*%Xw@+E-PwjD( z3XD+CQgVGm;_EIzHM#n-sD(wpMCw~VNq>J77omklIF+Cre!-avbPK_5h$pMd33dJ~ zTB-nqc1S>!O_PX6q038l8;2pWa5sqs(IGevFbqdzXt7;hI~Nyy$FeiLhJ zH+oS0-zMUGheiOys4@!bZGIXj?b?Pmk^0H4wsCH*VY}0?4%fEqbR&tDcYK}ExdjV} zRPE&a>6Zyl58jMfRaN0%>}mQo6i1Q5b@9`?_d=PC5zCL7(=i?9a-Qw0t1x``%GHFu zF(dhO{toMyNqv809z&`)kIAyf+~eAwG$uk+~}RbL|IQw9-g&QZk#>3E{2>zG@6CQ=W#10 z9p{d|YL!rIxW+;dF+8M4E&{@BK+e=Uqw9HMUl~6;cInLMf$tO217z;?jvLHT@GV53 zq^mYjwQ|LoL=!^T5g1-j>5-C!?YqbhGbA`C25*%6=jjg!%jZfG2Gca4o`JLs3ZY^k z(#7fr;Zh0VVIHb{@M#x@B~uf@*7rA>P2P>fFv0#+YkD+6ee<38g4R7;U3Gf;{{Ooe zpRxk}$<8(*zU`$d_MF&)8|QnJsvN(bh}q4!u5F&s*h+0zonbt98pAAQ*cjTJHb4Hs z$;Usq97GpH+>I)HS*&$ft=3vcYbvs8$5!#QUXZocZBceryV2#c{E8IpXfJCvytHbN zf8+7`_vz&HB*I&4x%Y7KUXF|@eL<%bcQ(1u!lNqM!A2~IVEF??g3vx6C!taLO-E$; zD(ytSxc$KNePUtG=H>LHxFPg$ zB2PNKfuKaeL@TRH{8O=>{ADQTm$%`Vhu=?soJgU^%DY}`&Gh<`+TZ{ip9YIyfQNxH zZkz$=^5R$x(sfzvOsf;wkYP_qhWiAvTK_m>mA)DxS*Y`WE#DxL7Vgd4Z>M%r6oSSx=J}j3IXA>0gV=7q&huC2Xx=cNRyI1=s?};x0 zJ1IvMX~f{8?5F(X@*Ierd#x($5)Zu)x#uscC)TiI)Bu42B|#uXO{ZtB{(XAr0FoXu z_(v>cGMf)NCrmv7kFmmi^}Y63bI#`P$)kB+@FG#!lIe1|3Lj$OoRTq+L7Q zCxS7sgXG$*#mWK^d3S9bOiHwgtOifzitDp0it;M_#Y!phO2v!VQMJK3+ej2vT1PS* zf*P?Dh}+HegxT`n;5PbRDYIN`$A@IUxSq$(9Uo~x6RH?5nDVAi(r(L1@Go6$NAA6U z)ngr6VW20thCQ>ZO5fQjyT;Aa+s-&{+CmoYvk6-A=^ zj7^+)JfF#(2h-yxFaL@l1WrP5BRthwt`(fnTP3l$*Aw`er^oz|5Lx0vrUF53WD~=% zjA&=r@W~u1p}1xdN-=%)9y_^|OzH8s69{lj^ z@zIkQp)9F>}zvNO41nZ8?EWG>;B=Z&>*-{8h7Au_!AGW@Vg%t(2|4UCb}eQRL~q!Ebl>;Qq63 zapC!+A09tA*n9FAw9o|5?O^4(R$EFO`R8*i+JRRlYR5@m;rf--hv4vks*{mJ_~Y3) zRAOo9g^=`5SZqNAwd4$hA>iqFv79UpyOzT~mLbFlx5)Xb!`&Y8DLjjAlQj&+SGU03 zD7fM5@qG2?@%i~=_VCB!$vI;PbM8h-b(m6vQ$dHfd?2iI3Eu2xy3=W7`R(h4un z-E6~BUp;48X*3rQK)R00HG21M4e6=D?TYcp?TSa&#qBC!zu_~jcC*c#pQ|^hx-DL; z7M^;WMN+tK$1f_{2G2SX1baoNS~?^S(iu}d;jEB!xbw|M?ZY#Z?(HGY1b)-41qVLMxqFsnI+Rk zgqJZQXPs|Q&;yEG!g~CX&vv5Tz}myXUbo4b8yssL{nEXHsvH}-_92UHw9%St%(99S z)UAq+SrsJlj;;yP1C&0 zkWfG+xUWvfNE!MRaTmWX$y%!;rUslZ;3rsADXg2G`V5Ia zk*x{jG%l_sQiGJ##&Oqk3!9qYT*JW#e+Kd-Z7DE@2PY)1nnbkRNpMVs8~m&pSBy}$ z9v`NC9@ep<{(!ME|5kr55NY6Hk$Tgkiy7H5J5lco?!kJ0xZP6)?bp5v8UWIo_yOc( z)=G=Z>;gmbM0wA5xVYy16NB|ec` z1!+l6>Bjb?VNb&?jnZDqARF^eE2+bEQ4f4(P^xN?`NG+`jcD|pH&TVCl=6JWOBaD? zxGE>OzH)BU7+iKmIkY=K(#*`vmM=uU${(3!hpJq;!cFL!A;t|8GL>LeWuH;AcXF#> zsmMx2pi7{BK3p>Cs+q_`09o=v3G(52u4x-&x_0VPxFaWt8+f-vpfW>N{yLw|wqM|u z-qqp)WidBe0c;HY)lQrpfNfRp|4lgv3ZQ^C+((5IK!NR2f@@k4@kAq49?#M4H|dSu zs9YVYQ~tj@RLq1;9Tr3VHod7{-rT>-6cocfwrP*^qtGso8K;Yl!e*hC!^-pj9TIRL z4*q5Mr6j9=P|CtJ;3v!tmAueK6q&scxff&nnC_H{`g*(;-ohaq0GtLyh)ch^Jn5aS zbEPhJqRGFUN2mRzCstxo?^f7LQew|GDV~;#IEsPgdE-gUJ~KqwDdLYH8_4N|83gA@88V(di;)L> z?(YBIQv1mmh5p{3%`cWodtxNFSwVQdLY!gE@#dR`xv%-+I*lWPS5vbvaGo?Rw3b!- z#w`(5ft33HENtDX(->-8BMrIlqg;9^N!IcsJy}=tHIeBIa3ASQlN7nb*F%v$(wC=5 zC!RGz;Ht)(p_M&y&qyxdBz^lZ%7~qOxArGLgPho^t%!8&=brYOI6Nh|OBs7a0<9(2 z)U7eK92sSXrNP3RWNQ7_6IL5Wm)fw@jBC%0H&fRuC$)(cCCB+2rq0pwkxmoWSM!M_ z%~LEIwJ)6^=Gq;IN{e|qFv0eLzhr`I!e}36Cu+4D*sZU~c}$INI^hw?IXalS;WkKe z>}sn-Rc8gWTrdFG+sOv!tC>B6o8+_UFLMIx%BK>%<3Qw$+f#Avdr$g#)uv`hht&XmrUp)lQaQ=qHU6owb zQb{`QT`XcA;ntNhNMI*kBuYY)_Sp6pLNYL5TA^BHASz>bynG^Z2JyRgMO~V^cNKNI zA<|an&Btl(z7bEFKlv3;jID!gG`pydml`7C^K-KSbAc2#Po`MNTNEIez21L+_Hur@ zJU~SSym)yrJw4g^ynb24E2B2Rxi(y(QQ3T|aCLYs8~q2lda;~kY9(;j;i`yUB1Oz8 z(zOq{ck+7fn@k7*o4X*2^8<26xspVZlf&7^PRgA`z7hH94cszmC^!JS$OEq7c1gp% zE{YL03HQ@)HpidHg9l%G&WV3QMxPbAeasSrRORyNiG3daJ+626onC-9nbgnP05-5vcX>)hpi6(jzM%8viW=S5ZZCxf<>7ee>|>;iE?n zA0SEoyS=AJF|lBuns0R4}LDb^mK9rdUeDio)B)9+tSsx{Q2Vw4x!(|Cp1OL*%dFc!{3Lm#;424i#w?g z$tO5kgfA6k(eO9&;lbi!_2xalW8jGY3>V`bO@3tI>kYmP2cZ;xQV`Yk30S3_%p329 z$wt>A{wOghC$ovsPK1X7i*Heu!5%L4NSMsld>gB{yY_)N_k0z(6gGXMt(SXs0N%?l5tkD=Z!6tU9L?gx1I|f{7oly^l zaw&WnpmFyeq{u{C;BMD@UQ;iGoDtx}@i_s8m>F3=Jh?bKC+P;MNDmJ{#~>FS9^%Fu zq_M4gp9(kk^&$lXQRe6YdK|;*_x_S`ZL%=TYqhhSoW9!K?V;VzGr+&-h{Sk*I%WL@ zKm~zU3Y`4e(>X6Yo6i^(6sh}GmAqqvHl0!0E}ph6UPq*?>k;O4j=PNh5D0(K5S!1* zp2VrQ8j9d5*C`;ZFtQUeo8D-(50TAqUi=BfAw;U7E3l<5(y`^=Jp;P(NUQnR^ZDrn z_dWo_r%UiPM6iYY;~Xe|fAKtSky9f$rDU#7M-`;}+4vnqEoSVnjO3JaWq@NzFW7_9 zA-wb?4IkIqvVDb?@-cssn5lnb-=|CN_qxqwbIyZv4D^+WsjS7_nueAHFA;?zK@K~c zN#1=Jgem{|p&;(HhGbW@1+@q50;Kyy;on7jsX`#COFlz8wyjwXpJ9D2<@e2TYDZe_ zCX+=7o=Tyay0hXkD2uDx4!y*s>HpE)ynL4VU$Uv)dHjex_86smz~Va55~(5s6q0+U&FealT5>>;4s|oT8eO=T;^!EeO4e zk)ZtA%WtOpaYaQtE()ThRCMj`2PfHBO}-LqbZOH7k{rk2!RKJ;Q0;gPr4)pP8*U;B zVV1<_WUqB@P@C8_*aJ`n3bM~+fg1-WBbc}Mc>N~vI4&BY%TNhVmZPLyNn}K9@X3cy zE?;mX8y~i}*z1sCxsw%@NKAO~cJbd|*X;IApc(VRiN$qHGW7<2Z#SV|Wv=m#L96U# zGIi2YW0Ukq{2`-1jnAjNfhD2B{nK~j_sbualM|(GcF*cVA_EN|*!3Ftr_1!^&V%q( z8V*Lt@XS&Wu6N0quPV0+^%|`rM(5vfqumVwSu~XKh)wd+1R!#uNoGGXFk!St104k|Bb(gLkwaqiXSV1#nmF{MO&i+WBol z*Fa|D$tw@%Hxm@G17SISzc*t6Wt=RwrAEs1&SSac^}F%^exHt2<3L9D9MiQXXSCv# zB-_A-+OF%4xAhi|dGsZ${qXsVzfl9Q`<%?Kxg}hLgaZ&DayD&uy%147Fx(Xt`#w$p zW7p+j@g}=7xbT_Dabs{-Lv1L7^N7I$WfWRO9M3?t^GHUGj>hKuuvyX{b)Y z=;K?OAt=sCM2G#!;_dW!vi$n}!T9w~!K|@tDA+)W;XA*(`|!UXJbb*5`m9F>_rG=0 zS(1{%3F*wyfOL7epnG6yq&<6fD8|inI&xCpNB$A^z(O{-t%V4hf0tN5>$&$y26pO> zAiw`AP3j&GhMww2tfyxi!)6WI-#jV#wChLX+%0R}*+?Kj?qvL~aXL~19*^{wZGCO9 zP0ZB^WVgbrR6V0YhfV3~3dR%K!)wOnP-Fhy^y7y%!4w|&xs{5JuM8WN__jV{r6g@hd zpg5d<8s*K9j$J%mTMtXbz=A}o6k54GDxE$s4NmrB6g?sEAQkRvN&uV5<;8~F3atxr zIb(NZpSvXKvSnkk&?MvsjLvGr5L&8*ODMc9g%k3Abc%XYW?*gMapVO zi}{nrc1LF?Jf*wj4JEGg#T+scTvfbW%7~LUd=}J2@X%jlfPF2*~q3MZ!$r$^eqKA@)Uz5jPHi zOMOd6G1}f+F4O+iaYy&BmewMD4vg%#nRA9e@#RE{D?`JT4fs%bcXtuqwjzk3T5lZG zZxAT<Z!da{&Wrkj?^zd{@;KR(P4uOfUE7_=28DP*K63g z88-AEAwj@E61T5EMc`^X=1<(3+yI-`HEh*!@GEhN!%~Qx_aKqxq^$%d6v(Zys%z5J zH!vU<7N%fJ5y*`)%L5q6HuNg$HD4HDmtTz6S+GK_;|l*BV8hCl>5G?TA-$TJ=jUO` zPLXdy$RC((IX=%7k%XaZ^s4xMw9KSWi!Py5snNXk{2`^p-j_d-YIOxAN`$b{69l9# zrYB^h2KeEIoi(`|P@TV-AAdhVROv~)k1beJOG~6Tc}k%t_3_ucXjph8R;T`j$ad6) z>aUHcP%JNJwuud>rm}w2kf`ez9i(Iy1?`U-k{Z8ugz_cwbX5%rYS?Nn+#i-sRYPDh zIROLH$2(mOEZZQbF={MG>d*x=G{|+S9GgMVg_I@U9*1>{r}N@6%A8Ks5Y2UX-E&r{ z3|Q>-KC!7rIBCdC)iN98n9HhBO#T7Eo}ki`-k~1Ic2Kh) zQMOphm0u$y9Lz^AC!v+@j4|0LoydGOmjVvBKO%@&|Ja5z4!_S=@Uc!#5EooIDys4h z*&3VS&tbQ@3yA`x@|M*FVlxdmC1KfcCqqBI+iBqLGzvS)&5Uh$O^G09b7zMhoS)O~ zq@B?drtG6fv?{lyrmp2%t{ppS0jrS8Wz-qFM}26IH85UN*KV@dRA&z4@r_r8@k+4T zB=S!{5#LWLZnX{ZnXqCw32slYF^xinD+7=y3IiFenIo~?h(J*NpbvqwwKfZQO2{pC z?pDdv##768@k%@`cpPgytcI?7sx1B^dd708?DA6JA0Kr1iWmews96BVFS#^o!ol7d zLfof_`P{S6${5t&c~hQuVcFA8GfA+qX{BR9si5OfCV4QZ)q2ADY4nufpOctG#aN^k zp+y2)Q9LT5B@zd$i8t`e%CgTJAunO>3?oVtN>d2*E)B8?Y}WK0=?&NB<|?AWTA;}a zj|1*xl1RDBYo=klXMHIcuHuN#;%pxw-7`9&t`KO;ey%He^0fAqdSP$LEZ2V>br$=X14l!2a%M=0>Zc}&G7q{ z5bEfL&`D_KOm35%ftfAOk%(|2_|l4q97a3g$g6bf5i4R7j@fqzw~f_4etLY8Llbs* za`Mf1HRh9+#k}=g%Q@%qb`r}NiezL~$f8y?;by)W+yPAs?4!^WED6+GqYySu8eAGDWLE&Z^| z87tBom-kf%@}2?i&5q}1=b)3wp!`N_?m!y`;X;Zf=X661u`{QeW{6l2ywGHUDVz6E zsEStV{GXzVt+aNIBiJYVv8$vuLFn@o%uzUK>I!4>xCro0sr9n*vd&9%d#MJ3{1_PB z5^q^YIV1ajvY5W6`-lfIgwDw<%$>aGnB84e|C*n^ogAPF z$OUqu!whW>MUQC*tij!TE7Lu+?@saVCOU3 z{D!xIXlS@AtV|FPrjEL1MtG4H!Xf(=OOADLxUw1-O;yZMbdlLJ#^_&+I=JtI*e*ba;T;?a6eye+---ghOxZZ96p&!r6J?k^= zrx8WyKO>L!e>+J_{o=mA)Y#8cg@|&t;Axa;hzHIeQ8!%wXP1?gQISUx!upqR9A#T+ zPegq2t>LcQc6hN}O0m5%I(x&#qLPG_Z8OXF*eu}u7y8f)TBytaZl*)LZuL%_^a#L2 z-f=@p1Y|3kzAWFS*oso(NSl((HX)Kk-2j*_T&~{>XM}K>cCBBM(F`aE9r5FGPYD&g zH1&w{^vwlv?4?)yNRPNJLS02ncD;N)VmYeL&A$9*kc_J{cp91RM*Ed7s1RutOFR90 z%{7i%Vf7{ShOX#2$l~f^F(Uzc5DW;@QwZ_czVrrv=**tQ#x#(ILnSdq=}p#+nHLS+ zw5Oml$8HlqD^PLs$hu}cB4{p3qkY99r9PyPGw2u+ zz@vce{fcpd+KfBnB=}sS*xeOBs0Qp9Edx&~kFlJVGIG?lkBUPYvj%HKH6BMRlLR)# z&?HW{#F1gs)~}R;=sYt5)kp~Je5FgMrXcY!6gB{Su1KiW;b^__*!z*?Kq=sLUJH)NpMd0XKSPh; zG4WB;2E;9D_N&3@L!-&#U~8=xUGfw6cf?DF8)Pe-XN8pFnzL_kB?7%jIAW)_ORwUv zhO5F8YIJG_&kGET45Li6DuS`I7{8&zmxSry!`q`}iK+#j68M*jZTi+LXQ5Tgps}tj zz;R9Hvz&irCq#%lqr$Qh5b0PS)Wr=qk*=hB4M=W{(Qk(j56M<$-gs?0t-(AN1^pu#4#t0rE?BA{2MN>8P9C# zRd-4nq8c|oGhNaN?m~z!g1hCUIETPoy-iDzVH+l z9I)Nw#^9z1-cnna?+NT;Se>kl|WZge_>5tvFc=j z)tLKQ$xpUJZj&KF;9o+aK1BW%rouPT)riW}0-rUxa@p90>Ym-JmxcK1Zwo#k|^Tc#wp zVys7ql;?Jc4h95*62>IJ1wh#xwZHrQ{W9y3^*T5JNji!^&?2n zgFdjY=`oYI3Mn4rLW7|u658iCZEdQ@K(&Yg8*a(&9Y)vKQ_pf^y9NxBWgJxv#qF%I zUpH8ij`i)pxs|6~??6_)lfYXSrjvZn+w8>VrwQ$EwQV*DvzZ~!MHVNQ|1?xp@1g4q1Z|k0$d$Z< zW~{2`sp?gaz(&s7+y{@~i=26o?MB76FxbDnvln|-t*ZJV4W9=@y#gWE0+oakBcF+Slj??nwK*wVh0Wr z1+swvQ2V>tPdL;e8>?TQ#IVjg1N@qg|L^4l$9x#3d9BuPr|nHP2cvK~z-4~8arY*h z1(dhaE(gDR!+=&=3{>dSVJJOyPXG9q3xxbFPysM525;b$oXTXYzHY*KyNGCq&NB)0 zs|KxdbdE{;z0XpI{SHg?RH*7 zSED34fm~cY4niS&2e^|4XSb$`9mN$i@;o zoUM;4K9I~+I2HTXA+ArIKKzBj|KW;}pbM`IE)@+TrixdFY!%`Aud)9(9JxKu$5Y(o z<{zo)i$UDNLEI`_A4Jo-#T@n{Zf#Q8ibtC=_d&7GDOG4+d!%m=!05HdjT`ZLBnj3Y z{jS`f1@hP(I+AfWhk&z%6&YSR2KOb@1}<~6>zhY0sTwkcnre^OcciNee(c*lPgyah z)p0_b;2+bNrun@lYY`_y#Ea!D#FM^JuCutlp>3NBc4OTVRssx#R49C^=5}>lULOx* z_{TT8BO!edQ4m?r$2YpKXKITWF_xq;wy$Mkt5vJ(x3_)ll#-ooNQN&L!CW$(a6 z=`+Em&bHHqB^p&bvNd3y<_3HZd%I#~8{}+Z+kHGA!CUN3gx&ba7V6R0Vav$eSA&aN z8JW6Epn`m4A3}%cz|%r?{F6n+jj(l6kl}isgLNAyodxT*(6-~(ZK=a0ux?W|FTlEO z2xC!SplpS2xkH@H;C;#lN3% zzj<9;=gM2z$dO&@==X9ik0K3&e2Gto<{sf#%XleL)MKJ1xeAHvFbI;ak3 z)`!LK!aNv3JiA;T0JRTKPr1{#xf;Nl29*u*pB7r>_Uj^rMhBrvB$=9Iw?Q@;vC3SLhQQ4bI65phxWMog;$63c1WO##KtMEB&~*sYWlq%B)iH>}Lz51A**>Kq%o zf#V!yet*mDc8hE;+ch3HE)d0sKgFLDnr7nX{u$yf`HujRL&0{OsI%%OAIHET{*v1~ z$0yGuF9K#Lk4KGNMC?@KP9?zf#dvXfw&X-R@YB`BG^10Ad_A0rsSxzMx~P&&YW@{A zdgsg0WInpYowz5YN%Y2;2<-kJjAlk@tY8?<12{`{M&r(ni63^c!m7CGyzUL;TEF+o z-iR#saftOHwZkc?`-w{of^=dg6$7M|Oqjm)TB@|~%0;xYbsqrhyUM4>U|CdKiZ8oW z%6ei+i~v%YRztTzh;BqNk#>|wZ7)#b>zK%Us?cS3ySNdjjlZ>8cj_4lGzA?xdD#UN zbFuHt`sA-6h^)PDJrXMz#eDYjf^^JT@$g|j4*8-+-+{(WRVKUf zC!d)D$+t;Rl2d&-%Gek`6{6G^Im3*k%J&Z7$oHZ{KtMOF$WRe$n(1)0%_hUmdPI>gEiHq? zJxBN-32|spr0=3W%p&~%i7fHk%XJtnB6XUGIh0)ELZYhVaOP1&)uZHy%yYdZPr+rC zM(|WK6d^@R-3YlbXyf9@-HO)uKzk0wh|3S(8>U1oK(-ZssW{igmUjlG#_3j`2CpJG zzCXSjl?=Bs3zE2HBfv<;$ihCJyHG`nDv=SnyZ3M(+R5c;y!g-IduV9Yfe7KsS-4Ya{@<|WAm`!dlf`VRF3Gxt(M8;> zr1Bt_1Xk>H9+hjh>ow12fri{#0dCa6n+^Xa;aa*?E+E7V5syl1QCQPGD(DnQ4QtRF znY4EjBQx*Y%Z94Nb14eqWGl0-ad40UmznsRj0Gby^FrQTW4luuP>)vRh@}*C@S4Rg zN|$smpqn=dN(bXJMCwN6iYj2eF;z7n#~yNT&$j2vo580u^+lyYW6FUQEB}s+lt$f( zT1}R});y~grC2sYYRop=EG$$o)^a{NiL246_2>2;T?Mtlw}`oFw&SzmnnA-{R76xK z(v8TuEziY-dhSmY<$?g7F6IWE>+Kn-6be?Uzic95mum7v2W00MYLpZF4c;x>%0L&X zjR_B$h!U9=*M~y`oxsg1-su&45PDM1gyD;c7heX1#7ES44_tU_<8@GoTkqu>b2&n( zla;m}&xkbYi`784m-uQ?D1+J!smya{`@!rvek{e~`OiDzi*khKY{AOZ7px}JBnzn4 znaV8*QZNeuER*xv)<4~TLL8x4Dg6i|?{XDkl;sn`sJ*s?QGFi>s*E^kkcE|cLb`jnT&kPyGa_qg~ zv&r>cu9Uu>5Ald)Aluiq1EbcJpQJer+mX8=`mD0V=(o`5Izo&24T`lV!?{cm>c59c8JD9BNds9i+)zm~oX?MhQG zU_5@0fF{Foew7;$Q_A2^6{2&qcw_n^QKZ@4B%_kVic($ZMt^5zQcX8Af!leVy0u zCqIoJAhpPRBB#1BG27+I+U>Mvi^?7%*2O88lf=&FM4RQuEjpyK()`DI@d0gro;1tr34u$nD#Qw+ zl^?&E&gQy9-0RL)k2#&Z&(H6x%QyDQhJ7A|6u6al*h@3FBx-@McQ}DO3}QMwU3r3{*cDTOt9uu+Oa_VA z4JN$DP>1Ag?lUT?YN&2_gf%0H@3QCVidy?%)Rnecp501O%H>)Ue#w!8T}M|h=Hs^Y z4i!#u9dUsD_bW|3nT|R%S9*28@h?iom38_=6{ft$QZmN2T$NO0N1+?^uRq3K7n76z@J>NVs*W0D1Zj2yDj!DVCs`xHurVjI)GEayVs*Tjx1KhG$Mr zC+@0wz=R8}Bkrm?pgyb~kI8BVhhxA?wSc)NX|o0FeZm#?D!@Jlrm6K1+Y5&AJ5C<1 z^rd9ZZ!wmoi#XO$Ghabl_GPL7C$Bngp5hcdL*^~ac)Hlait4Mg_MdjSq$`_zcvBEm zphNX3zD)E$Hfy<2aN`64zUHCflo{NTRF;#Aoth}#+k5i(;NbDo?~WfIK74Wi+wUJ9 z|8W2Nmk*B*|Mnbz9zTz+m5A)f%W@W66Us7D7&q>g*m!J3sLDOvmz}uCI5-61$**AM z@j{xdH{2`O#MBiZVg40U zP6yoqD1;`*+gIJ>aQO1Y)8l849vwe@_VoC>hfg2Ac)WkS|JR56|8axV;A3trUkO*- zR(ZPCyjKmC;uxRXns~7L#pDgV43~4m^Kl$pZ5^iN+YW2(I#x>;K(}qcFi4$PhW5wZ zIFEFz>?KDNQUixI;m;FKE7EHkxvoAhVALP_*u960u-E}Zao6SgQITIHpiq@eZf*$; z>*;}9h4Ff2RqgUGdnlbRCBG*-<6%}G!pN1)ICMCkcKI$O%OuYkyhPZ??mgMZ84vYL zHY-HroQO~H^>`=e!WO?y$$DMg;Liy1recU_G`x zY$m34IAor0HbF2tx-e3)|!d?ws!O{%hTkfNDq~ts2>7ytPokrOX%cX@ zRE7i>ewZfpTI^RC~g`yvZuC|o5jzx+pSkWw5 z72vovp3i4}d97dnR#F#n#onO}1pLG9VD;J1=m%=xsnxWQBU)9mmK2TY|m| zQ18an7TpXTT;PC;zt-f#X83oo_VrNg^Kv}~KKO;CduT&d4`lz-pZ?Y9jh0ECY~M)z zxGKEbZ>Rc0D+5oR2DEWHk07@Di}P~3$Rw6Xn;}czI7bI7ud6@^Hat-evKqNc9J#J>G@ascooO)0$pmeK< zT-fayo#G~r@%-DX!};a%?Ui_Jcf>4%ilWy-eT!pJ^Q&hUM~FL8$p;SOO)$c;dk>l> z0zPTXg<29X_h^iWj@TS|>drPzm2J3|jOnK76jbi2Y-*3OJvMJpbqRmsBnp4_5;>fe z`z&{>SvZsj$8PHK-y}OA)E_magoT)v_l+f#@REggXETL@90S)9oyid5blOA`i4`xH zL|^_mIaEM0-$LgAnFn*(#zTt9#~S(K>Lfs=F56~vtk-V06GLmY?sQh7ECn4%)0Jpd zFQ}HnR?N~C?M+GNx10-9jgwD>V*LB4Li0)b%gu_*nh=?}r)2k@+{H`<+cDGOYFp#R zrx5!s=YlhgI=0?)uZj{)wn<*&N~@Edud1>qo8=F!HCKY?KS0DWTrcgE4IAj;2iVdZ zo=yInK7y8>oJK9D=WBmAz#Y`w@De3>F`$y^Q#4R*u}(L){rP10W-GHh8{-bRV( zQhYQ$WAA*53$E5KB^m8Gm!-J2T)l>B3_q1CKu#Wi-IPN7dBj~aEzV?t6bbxqlmx=d#d&6Z zDK_+5j%rj&L?FIu6{$xGXPk^Q8sUM|`NxSJ_d$aR51`-h2w4ljfH-u1l5#Jno}4Nr zV*tcD(da8qLAz92q1)|TyDMPyWG4{H0kJq37LN1DU!<`WAh?6rmvQV>AbJJMyPyz3 zdWOsl)Ci`kG#ZON>3p{LOg;BGbQqSLgYF8;Oy zN*C`x&JO4g!dY5o|MV-SYBn1qXp0>kAeoRP>@=2UFK1Uf$I1(h0fif^lpD2^V=(7!)YE0;>re$hQ%v@s62zgLc_9 zXcC4-!Q2_h((?NjASh-$7wi6gu+hBt7x#vm8v z2uJ}+Tvz3uGhLMuf-DG%8 zJUbup>AIYN^B}YpSW|{qi$_U{B4mJD3+wR21_aU$Sr2=!F_l`s zhDWJPbO9;FlxspuJ*XFYT5oqFPijLr+uebV_Vex{Lseh}kVx^XlWuwir@GU#W#lno zD_SQ=QE@4wOX9m$U_?$+7{9;OL3*?;ptr-;brDV#40Ww;u=Z6E6{L_2MV*Gff(7j_ z!*LWwC>d&#E&xMTtSsQFsrI?VD6DfSM2%1qcRwV!p)I4QnYi34NoG@XYjFl*Q>D^2 zT%zYg5H}6c?c=tNYuF{Ojt^3(;`23B4N)nwcEnMf+c~W=CUi9|A}WbA&u^7?jmPjl zw)4o0kP2?8Z3WvWoIGjpHHDPj z=M4vQj(2a6yLdx!Ys4fN-eRI8+{gaex{b`oJP>082DF7-&sksT!bN}S_=;#|Y%#)C z1+%CP#J?;7Y=nr+!{qkS=7>ozjx#VJ3+L%0MTx0Wg;+#dZ747w-`7J zCxdh?2W zuzQa~GZ8biSPK)Jj1csNzkP3|b8{+nnt`>~3?e2xq%{7k6D7i#z!vJAlvN#iG@hLf z0^84(Ixn>IR$nS+_o>xNW%vj*t8!KLJAE9Wv`5dxt%Qrmn5EqVp;Lw5C4z2&_bRND zc5a+~y-J0?D}P4W-<6eQLC^)^Kw0+~a!(wr6#~6=GMUpoN?a2-NoPq+nOO!?7{i4$ z8lOlpx@;n2B5!juAQ5IIFUs-C8ZjcM=%0D5Mjo76-LglYV$-wlel{4}@gHcNI6-Ek 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

    PR{-$6J<*&u&_f8DvM@h>OUp=ot&6z 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

  1. Ky;PLv}=AQ!Vu8*nBOvPi;<1 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

    K3X7PhKB{N*yl^M9LR^0 z8dHW9&93)WLqX=9`k-vUG8K~NOJI8)P}SQ96#N8VujE-un~}+44oI!b9K1^mxwp>jx-h7+ZLZpYP6>6<70V@2EGwAgtEOaP7R7%-_h_#X zz}4qXFmV6;r`Yg%+kO^EOpux<`vRpcODm^={^r7SdVA%Pjuhzuy|622*(_T6*A!F2 zEQEU

    r2`n*isALJ%IC1t~DWDoo7wXb9q4#-bga0LslaIgtE>0lkW2%wkntwoq@-pe* z=yaW&RT}1w@T%AJoKBb0M&wamU`>EHLn^FHqTh}Ff{a)iEnk^+AO4a5rDx!NqAS~Y zGl<5C$zifw`*Z`t&`kk(vDv(`&j~l9ps>IEI(~PDyS?ZC0)R{BB08`{d2;Mm<9Ga( zqQqBn{Ca$Bv6)#)*IY@*==n=Pb!Pya8cKprKA;w#0Wnb)%#rQycT`yW(O*As?PVrc zwu8~rFeP@}g?wl;{&se@p;40M?r~+F7g~%>N#PAmL|fv8`X2XXsL9u0sk1}5$LPJE z_R)n$0fsX_+ep52$;V%tBp?>p?;SggJV0NtnBlhwCt@|85i0d`C9ICpl3_3hT&^cy z+(GPwwTm_i&>V6USb|3)$XGMz1!M`Crm=$A`m5Rczm}u`M_x4^n5hzepDn&HpVRM1 zjH0Qtyqr+h*qg6CAW|VYTyz%z(#a-IqhLA}`hGt8gt~nirhzU^q-qZ`UHc;W1Z_mS zz8H}R9VRzv((W{%r2F{Y1Jms@;w!ZgQbY#EKs}w}t_7z>)1%vOrXxxLCoUqFY&}|^ zQ@{!-^7JYwH+e%z`is#||L*lrb>7(vLjG*Qaq;h?&#j9MRnz=!A(diW}&K}$*29-W?pt- zAPeeIeEnT-6h+ID&A2KDj);4AMsOXJhlU$FC=Kp!{QZ(rnsM)fQtxj}fgZ0O0`K#s zj;HTpun$e@lJR{b;|Kq%w~Pm=(TCF__AHg{k^Sy#ciyl?xG}r)S3!4^c1JCa*q=_b z^VwF?9HK8MFl;+& zQM_znN<~&Dy$eda+;3+KE|3RbG4bovQIo4NeP!U6hkhgUXPQ@Qoedu{5SF zNE>%Cir0%6-zajdZ<4vhg(1xCP!`oi1Q04ivdpDc-OTmc?J15#lv3TZGdw#e0EqhXl_H3v&NgsY zMN0626nFG4DCg>nE4lngOtXUxlPgRtN4I5y*0Bw5SC;u5SKW-MMwpRo7RJ2=i=hL> z3)+QHP|A~{%m6TL$kqZBeoK=C29}vfsutLUCivm+z9n@I&8!_plcJFbeJu)Fp?^S( zA&ruS))rH(br2!?Vbn5nOsq)P44yrH{UD`qqt@RLmntj`y;K9p@spDyDoFR2F?JhT zRh~yNN$-$wkkvKe!%q(fT*=_jhb1`lG5P!|x1q!PPvmyQY7mdF!J4T0bIh5dYBtSD zX<80N5Kqh@=7gT4d`^>sOX`yMVK@@F(cnZM`=JP8B7v0xgA`KXYY=@*h;Q8ARQoQu zy{?UxCFuKERPg}((R4bm9J}1igavgR;2uY2%t8GEv-_gQo~BsGf~TsF;0J8|IWR=t zX(fSdxD}=i6n!uq6-%HWr@|n2hHfrXSUg!)kWXOGC5>2Y_R`%@@wV!7Ky}&cc<=oj zCj&i3VH;&NDItdE0@Bc66B)f*JjB4su7FHzu?Y^Wyx|WT#b(J&XZ#J_a)|;pw%lR+ z8vw$Q4b1=j=+l(JfZI@*rkM>|-+%xUbMO9q{Ew^0t1YEe%>t=TRg({8c&L?1gzj|z z8~J9j+KaIh=aqC3f9kP~b>7-;RD;+EvLm=mB*(Jr{Vi=8;uO0T1Q z;3s+vufTli)^?}lewSOO^9>a}r{_mz|ClE8j%!Bn7f-0_(hQ}wD49ur1^qee%cIHn zwXms434$_pWaZ3BPmXYF>!!|6I?J#<`dX2a=_)x5$y6(Pt0^2lz${oJ?~u(FIM0m7 z8`cy%H@xu^7f2Ms_;dM?#_zg@6x<7#naYS_Fr6ck6WT!|Dq1H>)S$H8sgyX~&~D6% zNVc+mc+Dvpk>bLyiPDSx@J>k|XDJx%UxH5Qu>b8;tLMP3TfzIth4ZkmI z&DDI2`PHDV3ejyClEaO(?PMfsL&{!mkcSRwC$U^R9h@LA5u6y zO{asuC8n-KZaqqbx;3{w2jz<2hnmMuuax&Ysn@k@h@Z!|PcdQ{hiMhm0$$}Xy^?ts zAcPrk+ZAg=chKlzI!boU<1S|Eq)YZ}{r^o@ONwGt_v)Xxpu;7V0)^cw98d7tEs)9= zvmEoP<}N9^7`PrmJ|ADbCbO9aFAVTlCCsqx@lt?pdKRsW)duNR&N<{YeS~_VRDGKx z1FjnM>&wk(xtL#JZ!_C)Y4O)nx>ka!-Sq4ih3}|p`I;}0tVTbNuOv76a*cA{{!BxH zIa-i8N`Cg2JLs`TInjtYP>59&uDB;U!94fzjV#27#PQ;{%0d&lOGVWNownxb%c#C3 zMp03@=}4(N<^Wcn^`VAiL`Q1Bp4|`H~=rZ20EAs9Oc4= z_8uJVha9-7r$U^UhZ4;hg&d~n^(4OVl`_n6A*fkkSzuSj(UxJL#5R90xM%y|tO8$J zvuBSzt%X0b><&TwYB6Y<7USJ!_GbpFHv3H<1mq*5R_hbA54~^3Vr2CRs)>da=rGKi9nR!YQ)kQ#6DKnb zztRsA8H`)!u#N0#y($rDhTS;10dA&U0D1~a5NpHcuGV;CQSs|bbJ&fALl{bc@CzC3 zKv7T_jB!U}jS-hX53ZCc>^SzW`t7yuNo&tgZyNe*d?^E?(A9~&#NMF-ImV;l7K z5o`V7p%hJtZ0VgfvAt`qqU+$MjbT1s04Yw$()4Mdtr>Hku?_6CenA9)VC_xnn+4!e z_$7QympHwBYz1t>=psPg$WR=Iibg=CiSZ?|s7Dn~QqW%*jfWJRKx8b$A2)6@0<1iB z{A9eso$aPOONJ>xzDKzXAR3#OQSWhC486w1?WI8Nj8(9>~6d{?~-B+_k^ z&^L%Is9|NjNE3@_?@lGfsk97TGA_E#+8~d@JSQW=RKEAL@+{UK)=tKJ@u7f}ldfb- zsUS}%#-s3UE?xYzaSE0-PO7Z9T3Dh^3W*0FUPkUCig-X^MJ{L@ia4wWWDrqLZn^k_ zFXNGp4#^>89daFa*DdldjIkx_Oty|#gtO1W zvg_t*$-Wb3$x6@)UL|j^KB>?0j9w5Ky9DVlg;|~|HBJ@9rcOVw38XQ9F)Np=VbfgUb-pIT@u~()*sP&1||B>!1&2 zmMdhudbOtb7;2tOk2vkx0_e4D=~_v92h2e#d*=yw!52Ya(j1IFqkEt){b+W1MNKL- zeKn&bQ@&F6U_KkKpHA1yIlbYaPq@^}GGXBPpxW zNga5|pG#p@$~9%}V2!d5g&@(Zlq{O=&r@WDGo`Ez^WwcZ`uw z(m*?#fITP*m*@ZhwGai^?WJDu?92IbeYr{=TlNfme7Sin^{3lUGJiRzVqD)&&tFeh zxCgmjKUl1PrXY$d1E+!sh3-$dNBCPRvz6Mp0#rSk@{`V|)6?|j)KWA1Y^I8w zhgWL+tv+!XwS2xB&o=85dcMkYfIliw5Ssey82V&g&n`252&lWUtpwcN`tjKr`59sw zX0PXL|GIlU<#1BZ0eruZmu60J%aYzES}*yXcZ0Qz)QxgEn6l z#HHW18K`AHN_wbkS5K8EL>OeIbhQG3gIv6z5-?K(xCV{-{R47cuBWLHR zYy~_(6K7FhKjTlvGK$6~Y}Fzd56>^?{#FjO&Ps#~;a{I75K(|A`KXAbx(o6qns-04 z8(__QFZxH45T>g@0t-3pWBLoX+nB<1W_+J>_weCh%%Q8Yvx@)0g8cW*auqF1e*eQ_ z#!^+;kVL(PkXc46kDf9<%QkB~9NR@CFJ6i`;-H6L#%ViCoWSAkWO~XxMX?FmTCr_N z$Q9gE#M7NJCo(O73NtB$+$C@p<}QcZ{hw*r%V1@qUY)}oIns|2OHtG3WB9m-T^^d5 zJ0ftH49Bqwcp*1fkPgsgJ(7FR_3O-PTKiwJme3(Aw7KRS+iy62T4p>vEUBn_@em7;Fh}fmEtx8N7LG5>A-Oj#CGN$9JasoKh#s-Qb1~L0NR>MGDU)vY2fsytpD59T`1dvmMmEZOAL>P zB7cFy_wGB=SbF#Fhi{tW*=MoGgE_r}H^(#Oi_`g(d;p4Ny@kLIrpDe*0a?5EiO3d2nsrk(s z|A%6iyewmB`N8dT$g!YOm~@VPNNhSZO|9P3idfn0B3J|_dQ+ab z6rR^eqxViPTc{8mIg+u$s`9yoERU%30o<>h;})+33YK7(D$b%zj2i*zA*u=!>> zUT+>#;OAQLVbqhjdD1<`X%=^TC1KAxz(?RBa*Ax)$ z_Hs(mHl>&COo!%>gpGJR(YIw_=`{OP%7OE znIQDbr}&Hh*B#^AEEzhz&pVjBSOa@%6&a}Hu!Zp^pOsbF`5Bw|+^98U2;0;0sn1}n zmD3}Oy4M!S~spO7w%d12bh>(=DCe-*aundz~t;eH- zbjgWT%pW3{DxkU(jlQ_A1sXEizW8tY6lTK2_lmwFW6U$Nl(Q2qLF z%y>;Vkgl<=Wu-~ z42N%Fu6Ts;`I{#^6&QzI1+D&i@4mZ)Btf*2@bUptP$G-b+u;RnI^RLDMKdHT=Uq^o z0`B~ylFYg%kJ2P4%$IEpFz0dgvwFsxa9Ar(WJ5Ajmz=;#FY=$A%cc;m2r_{_3ZdA9cwv zGN+l^d-rKKOd0;0=gV)Flx6&d9{SRj)Yy&c#PayOnpk}*;|^-6D9S73W;G_t*3+Yj z+X#*hCa*ESVn+(&NY*F8z}Yr@kAnRGBq>rzA~|(G!Te7(muWkUCT|H|uHaEL5T{HWI;}6V+UMH$A;|cR-mo4p$sf zv`UYrDOupfp$r+CmVKq+i0q4GEzQ2Ktf_mta*DeaQPQ{^G%Z(GC;m5#r*JpNe}D3~ zkh)N5t5L!2?mn5IVS$bec9`#l);MW6(c^~4um8(kwJo$PU8s;|KL6JFw1o>c@(pdT z|9+X?vXQTT!mE80@FJ~GuG)Zw-*0B~b>Z5sn^O<;=9oX*kUa^3Iz{2830>_t9etn5 z7LbpRX&cG?ao~mB*mQhKl|4^Kk`*;tx-=bsBby8?Gqd)=1Ss|ad>EhW@gu@;`U^vTSvzu-i@)N{$M`W0f&uY*i99&#H4oN zq98U=Y3daZg6_j}=}7#WVqjIf4hr!5jW{IB!GQ(6ZG^rlU~F75?2ixpi&d7zJqHgc z_;C!^^HKRw{u}t9pZcH%HicFh11X01uUjJk$e2Z3S6cx2o&JCK(WbmDnD)@0b&ME<9rj_%Sy4)6JxAq@8VcdYl79#Q)1B9Z`p%fBK5J98A ze7S3}wVfO?j{1=x@hW}<;TA91RdSkdBZ35X`!-agBy#la}&Yq2Qz5TJBZwu z&m@xW*@|^?+2;sUio=lZ(dlv|UH3k|82t7l%maJ9M;LeA!w6%5 zTa0PuEl&sAvicuqBmC~!DlXdp2*Ss3cTH8_H| z1*;rq+<`&t-n&$zG%P8Z2vP-aLlm=JPZ!TH6use3hWdhH#+Z=$G6{L_a($Z0Ok6x( ze81q}5d~oX>~dL$gg1GiVOp9?(auXx3O(Kx?s+NkzV)_%k-M66oxRgp<-L@dw zkS`-_$={1TCz6@l8!RtXe>uU2QKz!gkpfWQNTSJYEY%34gPo@n7U+^{4))Z>ShGM* zPOf}ca9%N5?+i2@)-$U9wwZEf_i$IID28kaZ?Sz(=Wa8E!-rTPguNw!nih{^G=lt(sTaJ?#C1Ho;n1LlTYyz_fH2 zqCk#2-W!Y99Q4!JB-J4qruNr_)Djl-@Jw?Z0^<~3U?4sTe}&&1jPQDed{r=kNiIr1 zYe>KkCSmSB>B$TLwphj8h+FMrY4ts*{t7fRsP-%gsZh_ERa$<-8 zz47XYIY7mn`AW&^_!u!5b};Tz-L2$ONZwJ;NW)bWy`3WEu6|pjsl2gBw)aJ)u_H@0 z1w$*M0}F6c6jT#UgRJnElUKPvUF+BomuNdg_3hl{8~()FF7tZ}m=Mv_1(#m>4P^{I z?P5e`bI)`SBI7xgLD z=$zvSlpIy5^Zp`COAr+q$f9nt4uMS4B^2A^GQ#PVr?Oh2OHkiXGi}%BOuix=dp{zuZ7~l8+H!#rr04W^TA4CNFLbd!yqT-`)sUtFS;{P{H9U;aZL?jHTKX z6M^2caCfj(W3^_KuQRm+Bqe4GSWc<7c+JBNO9Awz;n~~e<^1%!C3))<09`zM2Tl`n zV*c4{Kgl;>r*78$FQ%YLp}D4kyMH+}A2O2~9d!BNda4+4kG2DvQ82eBK)y>zg@SrC z_o`NCOY63Kw!^0ssLAKAq)VC`uT=WaCv>}YleF!4jsoVw_opO+i)Ar!-V3Xu7v3}b~R!R(zrMp}uX9GgSl&9UiAD&@fP*pm57U~~zfMwh{3nG8wKPy_%`5Q<7zp2Vt{JE!Utsmi@d8h5Pf%%jI{M9e^fNt};tIdYCXZ7k?y?Tk6D{3U zU}LueVi10SSkbVAT&T2qjTn|G+Zx0AVY+&~T+cRF-=J>p@i8Y}ki!x92T=cV$%||9 zM9f$J3a#J`@w69be|?AER{oFFYe__5U6tUb#2d6Vhq*9>6c{je)i(F$BJGSpl|!U~ z5VR>ed200`hiw6OvO?&v^U=u@SW{z=SLi`2WW$zk-FVfYc-_7G;I5llg4OLQ{cNWD z+umR>OmA70?J8a!byJ#^53@Fmztd3HdL-K}9D)_}3TtK7H z@3vo9@>J=*U;Dj8(Gkmxd-q!bV7tpB5bRHxQlpp~VbXif*;CtiM0RTc{&cwy8tvw} zTx@S$fj$szP8p!4W-qo4TfO;$=n_@Nq4lN2K9rxmcYi+q$JOJN)?p@l0$OMW_KeZ` z5V&!i6Tv3_sE*6`ymw!x?Gk&x{^oyn^cL+~Ws9xYcsy4M$Tny_6{8qX<2b^E*%^Z{nD zr?EB&GjU^;3_`V+?{2WLue2Huecc3DX60 zUZX)_!+2+eJR<#^m(LCTmx4-V4%OiYql2)iTZ$Q0So6&;G?36vnv%p??95F_6eGh= zfafQI1gBhglie|l1-2xwrL zwtG#U_K)$$LAGclbb@k}4m6opJW=}HBebfGiB%Fa_{JdZf*cFNJq!aQ?hm&ctz7}q zYV*$3UNtz3RC3Sg@x;aE?C20ru;E!V49UdA9pB8-uYgQ}TlBHCD>0z9#2$b+n61B| zH#}gZW~2L&@gtGl8+{t2t{A!7Yt)Agrj4|YE5_Q0xoz+4i{RoE1NRJ`WYj)h%uz-k zF1Y{PDX=`$c61;Jt10*XfRn=t+?YdG?bm)$}VQ&yoh6epe{T_FJlNM2UBk7f=IgO+$>=+wDPDs+V$DLP<9 zagicOdX(_D^xP9xYq8-q^#*MT+x#im;Hd^+gN0NXL3!vkDJ5nSgy1I`S#O1i(Zqkb z<-x!I_)oP)a<4hiZO+!VUQ(bMZo<3wF#VAZO;uhn`~p)wO5|blQFn9(0;@;ywAWP5 zml9!)k1zS^4<+RCs#Gol9V+sY?kIe0pzb-KupynNYtNb28LPfwmlzboB+}Uid5O_wy)~Uh>)iVwrTOW!AP$ho z89{hs4GN8)c&@1e8R{ImJ_@sOmC;Af<%DEJ^J~dfM)#r>9XjQ39?)b=)M@k=Wr?(L z)Ks*L`WLj!aKvhvK?W@|qkZouJ6S zV`2dAqZB~cri;B~HLf02LqV}hnsH~E0Bqu5Q>)6s1KN~#>apgrmP;s--79sK9Xs$$ z#5tLi>GS0gXc8YxehZuiGW_&G2tC07jRcDW4DtZBAP?X<@T>-y@Ld=h4@+CQ9Y8u~ zdt^}AmBH(kPF4Xg*adSM3?S?AfN$csWYfWqJF^e-l#kEW`4bj(!R5VWqgeW@Dy7O&N*lt~4fOz8Ix zu!0C_)vRzqbe?SWx+mx!?!p$7=IbA*^BcR_v%ug}N&2Xk-gSOA3+T?O?F)jUAbhC6YKF zO_8z_|_dMT63^Tqj$@?y4R5m^tUIjy&~ zfx`?w{4`JA09!A8yrmD1a`*G}-KJ>UF|wVnM)jeG6g zhG*cb20SHnEA##Bbn|w3>bV-!D&cR6%yFe^xW!%9fZVM#-WiDl47d)=n{e8(Q9Na_ zk&Nef6=^P1MuutD2Aa8f-W}&Kp?jf0575`YU`ft&WYV6le3~pmF4bs@|mqQHIOfJSbj8xu&paI zU>aD``l?&#^MH~A=(zVW-Nd}bBa5i)J4li`Up9C~w+4A^c{rq7cFz%09u`^2(R3-N zA#=dsR3qudc~E(~hnNvNV4#m?tMw)WP&|RVB?2u|JYdL3!T3duxJdAT0qbBn$>W!! z&W79pgN@X~fcV9zw4r&xu&s_52)B9E6_Wc7nv#ZbQ*PMGN;k2Sx}4V=;P*uKAC>xF zzlhN##P%QMV^oAf$$?+QFjH##kMkRP2IID?sLbueu&@Ma|9C87GNQN!vbRM6P1anC# zGIs(g=M8sAvXlptUl6n0QyQIDc<`=Y+y`7NCa(+C&BFyU3@N+QqV$lF5kdLIAYF*$8hI%4nOijt3Q{eQ%vUo6jz8yTlEReT6;K zTX-aK8D2@?d@q{6=2ue6{J$=-_d?zjem+RK{BB0nmtPmlTdxIy#J+=CPsgjt+q(D{ z)9LA)-M^cad>7uP(CwfO45Z#nc{@9kV`tuh<!vg1d>BC2sm`<%!JwAUKl zuE1BdS|gf)n)Th~LKRWocYW07qCrXA!>!!@pnBmEL?2GllW66!g}I zTg4w8-d1e-jw*%>i?Qxy>@lx9bU|qBFZ$>7LeOm=lhD|IOgON*^@DOm_8*li1aaGi z<;mI%B6o7KiAh< zsnj?(cidSdyAMfk5M~ zW7T}cOc_8!q6HsntV-jqWA)C^Z62&Aa@WxYzx&oIanPHm}?NQjmg*zv=x*bvC9%zlovQC2~KX&x4@lA!N;huLj;n{}B{Uzr(+AQkZ_Dq6%dk^4@vRiWCJ%Ms*A^h6WzHoU^iK zRFcp@zjb|*LTND)&q(M82_Rnz$|-0Sio$q`MRJv;ENKp(Lx&83fjBfZ(>I+4L2Y$H z;iWb}OO@QKs-3MCbg||)S4*8ul7wk4EG=qJ;RV+QoFjW{vJ@@!lpIJW9a~GoRCfbs z0U_{-;V~DtnLeQ17H17`!8Un%il*ai?TleMnu?wUF#YAk!h@LQmjO1QK8ON&LRxk@ zl$n^v1s-K1Wv8SuaE3s`sgzi zgToW9^hmaT0``pyhwfyO9N7A#@53F#OByY&jx~Y{w85NsLQ=KoN$0;^t8sT^*QRQi z70ToQLi&`IlZw~lTH@3e+Ip(=kEB(N^nJK?$m8F(I=GI9qtMd>7vbFjSJVZLaEH&76e zs3@V4Z6RJgot`g$nigYDfd70c4ItSPEP+jDjHt01M_QtR_)-to00raAd9npdQWjxoo=A2EH zp@O^P^U?Y2-Sm_cU&|3v1xD5jjk39QEv>%v>J{a;zrv@}BR07fz!2`Caw1;h^Ysvk zfES05?)va0$@xO6B=V=>dF8{Gk(~2kO*Cr=D(u|2xP5-b|7 z%}VI{4pHK^<&v#u^hN|^3%oF7VO>=JN!9|Z)aoRTo}=u#8Ctt+`kXH1fA;)7s}c{> zF~rwQcMZDu6!H`!HDHk7Q_<<#fUmTYTTfx2JK(Q-u@~=nMi00Ew6SqmKY3}k?a4cM z@iJYc(bAc1OBOy33o!l)gc_Le;QXH@&`g+f-h9KbIK^lJLcfrJW4h%3>!Z&;zj%A` z(MPA#$((AV^Ybz_ZR@h_-U@A_gqnU3rmC4c(pBg+07J$ZXU8Gh^O>g2oS z>Gb5`yNlI{6g2#jY~!D#&EK9pqr!YA59rZ_D>QwE3eL6fG9oo<_w$2=$dN^ZL&Cw%aykNDJQd@;l7GsFFWGmK8i4xq0nqQ$jN*97IG z_pH6?{)?1_x7r-HTyIc4S~#0FoUH}?v&)MMde44(dL(}bvS@eBg&@NxcO6OKB>AAk z-@801(~*-GD=feydA(c`+o1y~32Wx8gz>h-&Vq9lxO>o|gr0(_B+J{PY=OnSmE)@` zng+9p(~-BUC2t72)MFc|w}lAnq}U&=mghncG-R+yMcvT#?#K!j1Qh)EJ%}%z#;DX; zumxmOzFJOBpfoTl|gmMjbwcjr-wGE_IjR|!I74$ zNJ=*3)hjYJWalm?8-C0O92UP9zug^q=wz=H(jCV1Uhol627daDQ0V#f5BM$_7 zb^nKqRaUmj&SAEo%XG6-vCHK6r!?@h-1NMO?hEist~^JFzkB%f>EoxrJEYg!(ZrAM z2#<^0#oBK?gabgmci&2!=tjTTb^CI*nq1Oq3(2yc6|Y(AdJUk35qodiq4V<4`4Z%! zpI~Oklz@VSH4^$@cQGCaxjGnh>XA4}#cgxko-O28d0$kNCY80}Xu*5QC{x~Sy}F#x zGZM26txq)%f|vMjr%0ZVvK0>&>z^rtn3yE9tmL;IVmoA-(uVD)*?8X7!|v<;^bv*D zW}DHs>`t(z-zz}ElX)T9|uV3(UmG%H~lIS1g9({{JebjlwUvjT%TBqTt-Cx zb}?CXbs%?R#S>?wIAYPO=5)~sO2;WG>-KcnWwsQFytQIcehidOL-!4{o4UUXkJak` zaxK!HeK(ja-Vo|~_T6$Jhg5w$rOir@yZ}dB+31j~U=f|G0SEcIya@^}jaOISEZ@u~ zg_R#mG~P7_ZN;y}4Uuwfl}7Th_?9|vLx~-A>tf z0DwtJ!R9C3aWwo>ghZV45Y09&d&P0nd-r9v7b#)g4ttCu1(vZDN*rLSPRwkWo_=v9 z*eURC$6vzf21D)@ofsY;D~#+3xKvobupeC?RcJZZWiW^U&LFUxa^ z3(t1OfrD^s6JOgY7%Nmdvm`H!cho#9GJ&Zr!#qjj$?*+tnfd-sM=H*QC}ys2Y{|;) z&H!;%r~hZ>8aQXv{D4w$(aYh9YE_5}Mz%s$xT1~pGxhdxr)euKC~UZ!a&Qieo8NvA zw@n-r&GWQxKt7v3_H0d9}Y#a7_e$n2YJ2X|+(_dPpkoF^tiRG0<2h?IkF;^01C zU2fi988|Kf)?C7)Rn~M$)-@wPrNK0Iu`Jb=ee9K5oh6OcqtYqj?h4O7sCkLD|1^zmgKyV3WBO!rE5+- zElhvd(K9{Qfxx~la~<%NIqa8RFMF;Bg=Nr=81`)!_G2%(^2<%zOB*Hs*Y^1%lG}3WpCcxmB{Z1s{M-_ z>DKb0y&+h&S9C^s4Ywp5Wttbaf1&Pe6_ldaa^Q=13c&fM=v?Lh(Bm3c#X?nn&}S>7 zckKC8MGU`GKYA>YX_fXOaw2Hwg|krL{PPr<9DR^!7Ot;>9K51^56|dr!TNgFsqkHTT2pA!cZs0ixOF{btY&7u7MQ(>8)rRBa zGde`Tr>mc+qU5J^){3mBQi!-8gij&})#X-Y*5AAKN*X3vDNakW*>Zc(AA$9LuVVnp zoFSfdf9fOlTn`G%pdB&XtReMWELcexJauu|NPJM2sfU@mR9MzD6+8x39S9Px~ zrbfA^E)A0D-NF6o+M3MP>Ep83IH&=y(QXs@Br(%kYF-(FdhNV#A*j3n?Hg|V01Zer z8?vo7L?zWXFTg;s`(VfnuHKq1ixIO$J%xBapp^NA5B4^M@O;U>Mqpn85!%gjAbUe% zUgFpvO#1}JHcBOqy?h@n){M$cHG2}&u4=znBf45?Vk7ALA&*|3dW=d!6r*auDd{OQ2M9K|N znxWoOtv1DcKKXv3*J}g?_1`Qv^v!Spin7m?RV9DST^_<_cezLh0q8`!`fL zK&~%o=4JuhcT>6^2&xL-$;UF|a$q)GV=uC7bIb2?PIr(?YZgtcer_6jy5XV}J;`Fa zww!BBUF%?VI)p_`DTtmJpKZvvz1a<=hta~Rxsed5WaVm{*CttF6*1Pf>@VfxSKy_@ z%N9{vrd7Jok)tC5^40WgOu9t*Vl>V;rIW6TMTInq{Q`SBP5_D-j(#px^4lzL^}K-d zH-$;ie+hBnw<3mo7N)2qSJB-IHS?i_;=u3#mqg{(k29Be)yRBLd9RkKN+FetbK%2a zY4VqlQbY!B-^5%X49rm#Fo0T$HW@GEWXV}@s#Vi-AC>dO!_p~Fpjx;oZldeP5$4+B zjW3yVg)6Zgil!sYWMkoK4ITm5qK2$plbXAus_*7%7l2*`5th)tro!Tns7AgvN?SB} zNxj2zu0+tkvY;2)+iyS(s9TM(0ne9FVqx_fHmMxEOYvWJ(%cA4OHW9<1f6HbYlXzu^SEN+9m2r3thnBcNV` zEg8ivorw~tmX467swMWiI&lu&j@s(sqDTziMDC-pzL#42s55az8*C*r?R?aqCVOJI zrBE!0mM}uQ=oE2htP!*p0W|A)ztAHCF<;u_&K+pE)+l?ESWgW!mj;7FRF&k<`iUKYCgcJvIzj(yI;U>NGCt9UZ)(XFczZ-q_ZF%h4g>QM#=wGvn>_7%P*^}W zpItap-WuXwjtz6{Ias+VDG}sOYti#?F~=J^wg$cZNn?)D!lDZ6(^E;YZc26C_Yksx z&U9@K@on!j$r2LVxrJtMIj$U;1<^u9^Zw!D^8Cy3+Jy|qh1UzJF}k>S2cGLVKx|Rg z!q+1fM;r_gA|OoXSDOYsWV2W)m<7dXE*yzCbo`|7N?k=%=#?^H3?cZ!YR@zq7GG z!^QumrH?4lyZYBbkizaw7pg7ouqTo3Z6VOzWOoC7i@nBdE#2EF_&VPX!*KoENL-S@ z4rn}tHX>s&w&GY1%Rym5YxlN7;~}(1qn2jt6-fcK(YWG{+IVYh37ih3%LQLQ+#PEI zs1q$T_G%w!BS3Am-^?hta6I1`YXYZ@lutheB@E^cvoC|xM*PFlRa~}70)0b_v$b?@ zqmXiBI}Awyw9t^tt1Fi0-+;wD?cNVn|1ul7XBaR>P&yFzuNzXt7i9csdFY2;8VGG^OkFixE-nt=9C0roZ#ZC6}AXK-icNy8|GM{rafgS z71C`4pC;C5J5$fkCI+TyKf2Kq=#sgk1ZLh@IhV#1l`?5H$omnX9WEy##TWEA2i5Nr zj!0G*<-6d|;n`-&fIKg0&x|sJA0#yQtw0#}qm(9B($S3pN9dIKqoo|%ilwFjWzTM@ zYFQGuQZBPk>Ze==qwYCwKW~)M9a-eT^q7YFyc|EDCmhm`cn3OQCDwinDt))E93UV9 z@!E)Z7&$6)iCKoiB@_9Ea8f^9t(i}Hi!3IsW>49OYT{klp4raPl=IKWjbGEW98Wgk zbu|OpEwMX1-BPKXVs<};oa?^V=J>`W2R2dJ&VjFOryyb{UbNZgG6^jj&tpq`h&cd3$>;Sm&QI{A$f1=s8enYT? z6Rv#`o*!G8wN0ijKG@q3!g1BUMqrPlgm!Z#wKpW@5Ndxg?U~ayQ1^W8%Ffin>Hy|y z)c{|NCX^_(I|REV;B~*`@gjbrU0$Q8UPaCNR*qlTF%Gh?J9~l7 zujoO*p2ZqcJx{9n^|82ZkN@Vk>2|s%`uO#K(e-2~r=1X~R{Nx5cd4NN1(A|2b=?-F zj3&Lj;8T__+_lF3Da+enrnR?;xnCB#f(SaAO!Oi5R^hy-;vh0Zrn_RJe?Q1Qk6j0| z)$NUKgiC5AdHi0f!u5iF=a1W9C0SLm_EV>xcQkgDL!?ycg$KlEa5F1#tRL+`O%sUM zHaEPf($v|$7lO7CE~%8F@k%wZcOl?1ZMEQc*+`OBCuVJMZM-%_$eGZNd+6agGnTpP zEA?Pq@0_Ku=ijr(gB4c_#L`=$|Cm0Z*!~QULC0PWx59tasnu$)=%lySTMPG_=>ms@ zgyD!U#>dET)6(H>@1ESLz-Be3+wkit>H2sxn}oQKi^Oh-(mNyarg4eS1Afn|AJ#Ga z_}CS-#U*r4pXnm5HCq46N7eVt|1c-6*W>)^^8Ebjg#VjQ$5_~gB-2amX85j8A9V?O z^r|f`RWt)&v-Tp5?)7-`V~>@fin9VpN%5XfkMT07ooNXGdedMnRXk88$%iTn-?d_% zzG7RUpV(x8FMKH<(~PFaUdx++>aLiBeVQH#IBbDr(zZM4O{GDd!ZkvFP+>0h_Sp~ZqO!>=~+C2=llLdv*UpDkDC(^KuI2O(wVcA!$%H^x{EQ|LW? z^89*PiG&M&VD5EqUI}y@fpweC{{gFqsmFVNxU`cbio^ zk)&(rVTbI7gaJ98m1k5Hy#k}zB!jyxb4iv?bw96rJ}DkQqb7UV5ciu?oyfI8(1Ap2 zjO;63`+(8{G!qozE!rS=TE*FVKq9(zZ2NA(HIMw-!XvY_OCrBU3_gGS8gUFsKHp9d zK5zUQMqg7{Tmu6&q4HwWeI&Sq(+<9;AUMr1!Ajpf@9K#s7~a_`Kl?;|ls z@c(>#1-qc+gQgQ~uf=tW&Q1pjIPCrLs^IYa8t}ZMmT z_%X}IpxOH0AoSL6YKdv|p#q7U?3Uxx12JvOtBCtWqkav(rP1WXFa0(6Mu+($e@vuN zpk0D*Jrw);@=Zw|AH8Q~sXnFD=I(;Q03UO?*#hSdjoNSH)8tpSGz`2tsw!c`LBE(hK8X4ss{A<+( zV&P^?H(-^OM^L5_E~BmPj#!HBG!h4QlEBBq=&``^Wi$X9MK^4z%r9$LdcPLU-K4)G z1kl@?q;PzNO-k_!QV}6otUqqXTeZ|9N&0?4jO%az~@*7z+SMH(DIYyG4Br6%X2PZnl|O^ zj<_vl&`igZw<94J@cjtj#E#eUOioG+1P=vcIXg-;dz4^g8nB@cN%G9nm;gWmYd(&^ zRUTYMWBk;3Q5Yba2Nl9!_^DzX{r0z`l$7)F)oYqJB_044*f3jMk}HM3>`#ujDw++| z>xu!yomqPd8c-stF;6;|TEq^nepD;2;;}339{cMaW)6Go5N?vN<#14lxv^kVr z&(rDTa)p}!f4v;9PQ#XG^cOrF2W#-+Wx9=VS$S+Ir|;l1=)DEISGpLl#^)50n9p%@ z;OLG^*E_%`$j}ze`JMa6ZImuw&neMAP5WD2E{swgXrr%)Ua?{ z#Ob2iN?P64o6$E9pFMl^?8(C~zkc-fmo(Z>g_yX}w~wDbw2l6w)ad!cZ=Zbg;Q7N> z51#(@`)?n9_ne^pAJUMtSkxaZuB-oQ`esJ^+$-P7sj~DX+Y+m`#sFA_Vv4+XX!rdD zz`3ZEy*&eh1{;X+`jXD03Hex?>5+j<69t1zriN239pDSW@RD%VzWMxfHof@zNLm|@ z)9GKOudqT0XU>l=X5QkI?ZKQ<^PgSNji0mGgpb$(IvGQR)D2uHh;+!2ISBnZ`KsHa zkF;|e^qcAV#hm2$VD;wme7e{S=Rl_W5gBPPYPS9+<@f95a$e@QbH1H!Qskk)b1U&2 z*|#Zo2P2C(+(!1i#LK}5Gkz-4orAY7$QfdQ*PBgIJ7i0xkt|9tmo15B- zKon(azOU&mnxy8vmzzC0n8VwK7cb`s<)!A3b{HhhLp8P~eEvk#8LHj#ckI@ygzfs0 zce*fBWL8bFKMcKy5@&cGd^eDadrbi0np67-)RTN63jTLbSOjn13D%{7%XQEr;>1kUJ+zxe|yicJUV_pdpA9$2&3MIC-;(!ry=T$VT}n7CBv=jVDvSZS?=nHgDNc z<;)s7TbM3R8@shsyvR>LE*E-BRE*P*#J4Imez2e-ADiVWLhJqKiGl)0KL?wtfEa5S zBIEu%`EZBQ)tbtu0SV(06v6}QKlqe4AF=4u*qLE0D23)B^x%PZ2Q~`3V5=%XW#TKf z?POP%YYKzJ1uL5@Y3$e=#22^Mwf40gf31CclW!*?Yx{^Qxi2qQ6VBTB#RW`KQDFrD zV`@y(@AnfXX-MB7DoWdYU(o_PT$O{;-T3HZLr?C1IK;CTaP}eU&o9a$m&Q^DczH0GC+x$FDv|FEC{N z*berSJ1_5!UhsJoe)$ytq5pB7TJyXsxk|e|>$4;M@4Lxr@NGL0Kl{LrttE4O22L>!N~=DxrvbUx77G~C0|8wr@cdKs=o()&VBb8SqWg2UzgR7Q zq)RIDPb|m44EObepXo%xvs@bc7!faXujp9}+VB*=;xqI0pIl(wI)7}J9lw^Y| zs*vV^KXu6`A!EyJ93}gtqxXxK@itR)Q+US(bs;h^UGg1kCt&QMY1_s?VkC*`S#RZY zVejbRHFNv!h?!+US$_tU`803Eg+!QuS;$92PV^J79S+?s1oV;PpIhG0PI}3Itu&n>>=b8Hgyhh5 z09gCo^wQ}wt-w!oAIlp*`VS8L&iGY;^0$1O0uuqVz2Pp(6q9)*fe|;~D4UhbJbJ0E z3$+Dfx;h4C1mH>#hXI<=97LqUUM5+5P7YR_v$f(5_V}O+x=~)e!mz(!jy*n#O(2AF zQ+xNMVndyf_NEs*LT{AUlsUNAP+-UItz;`K=nxuOUiQf%peHCdc)m;%1)OCDx{Pwn zOnkAQooC0M(M@4l7-A)d`2L9}-{NVm%fZ?WX?lu=en}YpB~Q`w9F5F+j*U*6BcNoq z`N=sZ;JuJR%wemYw5(oL`Hr#$c%4j*X&IN9DjuJ+4+%zEQsPgfYt@>{Nm{zNChHy< zO>!LQ_=C-e8u4H<3=gp)u;gi66=w0;2tAo zM&k|^1pwj~I58)}8s|V*%cIvcI>rZi#p%)~9K%=!pYz^P+cSEt=e1cr;P( z&}HfA8yt2Su?226c-M8JKK(n@CRi6w0-;*E$1N;QAG7XRzL(~eBTdR#m)4!(-1joi zCJwG;@miWl7}}hdRM;#wu;$paNsFfG8Lx7NB zHjPZY_?+l44350omSSGg<1CVxu3oeQdlq>Ke8Qg7neaHp*;J4TP3||-1kL9;j&x6e zsg}3upd{H>GzlXK4)Wc0xAtAM;vJAh?uq!#%ty+ZVOKH$gaAxKjfAlfk zti$Z`uqqC!+Q``4CVc}}!_uxS@=PyJ%l)1uVXO$3N?w-rr{X!~jhz%mkijL~Q7G^i zmwBB8H@+AyEKJ3^ku~!WTl~tdoPR;DjQzBnQ=XYGq9MnWF={?;1%9pd8-H!jGVi>M zEQAf@$~Eg-lSpPV*g*#=E^l4 znQ6WYLRs|w&|2!KY?KpajLGr)`LCv>-pp9yKa%nO4Bsd!?R%t3&-y;iaquZ(DVXT~EUwhGF#pqiyX=LxLY;!b z3PlxMQJ~<5@%(c7?F_Xxqdhg(JEPBSL=D~W6LlTGD|a2gOS}GSG^M93ldy0GuR;pb znL^AuSBNQg4%>YOGhfmja4M9*g+CMCm?%xWqNFlDK0c!qKYY5P+?ylp@M!NGL%Tb= z_h}x|VHzmuuuKDuYg-y3?BjRzmJSp3`w9)LWq}tSD-~fp2;}Lee2-z)vh8jpq2S*h7cTyra%=`e2Dwod8#9z0p8VG5Ye*+{crm+sDTmbKyIB zygKKBnEjbTMZ>RjRlQKv zyj`=#pZQ3_8x@*+#YImjYZE&*|FzFvZFF`rRCy*3J34I7D>_gH!0)%emH{YZFE%|%iuS}!BlHu zhwP>kqA9_*Q=$&tw(6ig%!{3C>Rb9HNLu9i=pf^7Jdz}R%Z3>kU;%(kg_x=0XvCjM zJIfwvWk0z~ckapFHOes04SI^i7X^1V-#R#sZEYc?IGXV*w{$i2 zDv02KuHlFa(eIeg(d&i9%VfN$#R_KN!wFO&bH7AcYaOE*`s=oc0 zp}K7W$*3|5RV}3Jomg0}c#eD=B*KaxR`NuO73=~TBor>OxHD@b#!|X=(6Zu z1|q|F|MLN|y)aIg$*d;NjIqQWb+`Oab1DAP!W^ zP2NNRxdUx;MxfMXjyT;xhgp9xMV!^Cj*z*xgH<=^Xuq3z=tB(pPGeeI|Wi{((gl*y<`K{CHq} zIPNuhC&G1#lA%>&iR-~5m=qcZ?E`5*eaLRu(1Oz-OaRwJ7?{EpjV&ue01&!@W&!uq z1vHJN?um}iXHIMg=C+x(hk_0d&iV_^*}Q&Tv{6}C{WT@ zU%K>eO!fTRLUy0&n`QIqcMbkzO^W=`R{KdPlVfnblAVvT_Tt`Ks}=YTDrVk@D=#f zyVnH@>*@Y4I(KKpP=N@!`A(Mu;w>H~H8~3OUj!p9Pm)Ntc!y|h?$6HiKIkk7eBYV4eAhj(=9hG?r@|}E(#Kx5NnV2LdmJpUei&}=F4$A zA@%koX0l7!;>-uAgD0Nx;3UU*0&+Ucuc?`Q&vb7U_1qEwBcO2+nfYm=>aR(g|1L?J zX6dep+B*jAm2QWXfs!^iI6c1B^w#J~()D7ZIPdwz=ISN}wOl-+5(_th>Ki&FT8-y7 zFsLuFoC_W?Mc1f!KP+db*QyLRk&e9Wg<|htlegD$5~7^JcpZj-%tcO;RQ`S95<9GM zyX{jIvE#72!CQ7?(|OUm2i3luFV~kVy-4Znq0;^dkFK3i8l{UN`LA#i6UUXh(lNi7 zZfKH+=Vqus%&DJ#wghoo3@ozw-*b^Xcl1n+yr2i)ERDH9eJ`_Lxwl!i8!*l-c?f zqfY3gkLh%t-!;s?p)$28=s9^n=Sj=+)Bh{^#HSoban1E+b+JtOK_70GoY$^3Z!zs4 z2;w=#HC!Mwe%txk|NQ#NtM49v^^ndNijO}(dHm$n^Z$JE@YS~up1gYY{K1$1lUlkL zpvekL-ZCaXXVAQOnZNIRa87qbR##t+CvS14Y;u(4aNWU})gE{@-M@r52*xL}czOIs zoK^QvLoRKo}C+`zl~s$KsYlaM-1%g~7J# zfZwrxma&Yht8MBJMakvK@>_-t>!d~;(9+$%&Cw1jrNY;LOBu%c-QAJs06navf~JpH zma%BKK_)P5YniMq?PqsKHK&9QPb&<(I|7en_@jfs3VQ?rruf6!^vGYwNcN+UW3Atc zP8dL*5$NatC^gI2;d*4BS2|k`g|7C~tYeK?=wACS0}^+NjqK3$O7&BHAUZP(F zj4!i18M_bnnIf6TU_pe*RTERKTxE=FLis_PX+bTH0=;y*ldeEQvdnpR0rkbpI}ump z4ya*qAS{TJJWmp*x_r+(5hQH%qps52&9AN@P%`Y#t0jz_pVp_BQ>3}_+;OiYLO%4fyX}zaTM}$SC|fTn z=bBnDBAH4b(VQL89h=eQYC_vH$`!kyCk(07_m#K8d!g8D-gIL3pgx<|nhc6mkk{kM zkHM7nfEK1WhU65yM?XT67Q`J4ASJxKE^IXsdh0^Rv=H;6yH_>yqq;%UW!+o;yTPWJ zt0pKME9<{B6o1q>5ISS}IR(y)!n+F6U&%gB)(AoHd`YT}R%&?VV`Bq&6&CKf{@Ds4 z`@s9OA^+t6{J+x)-X0!7qG1cl=ss`WKYcSoP0>U{%vG+s2pdC1IgVyN}=CJ4dO=+WNqL9rnF<u(_r|hnX!y&8#b$g=tytWVi*(L;Q)yoDZkoe~sv#2|4ChN%5%KEiE+$_69|OrYc_&dQH_Y z#;fspQjaZ@A40|}qsf{t73R)G1b;Hh) zWWJT*T8Dt<6>*T*FXv?RMka0B94i@m^hG?IJ#-$@XLN$)IO9wBaD^NQm!Pv$%ka%t z6%3*#Ad~}NIT-VC41(Q6D^(xR3xP@%tp6&t5C$vJKyx@6!Ek!gyg0KfFe~R>jYG6n_)5>3|Mcv%Ld3&Fc*@C;P&=j8c{e zE*5-#btC1di z7Uvtf+UbG6gQhUxNHeuP3k82fEW-z2llG&z!%W8Co>iFQpVL%GtSqY`#%lB8!GV)! zoAb>HTZwOGKN2h6N1+|eLD}hG(4r6suq&^4(^DRN2^7FNbBd(=<70mS9xE~01x3YQ z_-W52szu;wtl5>KOWK$M^GVB}&J?u|eLTDlL6w5Z- zTQ)AWqc;u|Jjf0>DQrL-DSN9C5nNM~)dIDfyi(9M?ZJkEW3Mmit+2xwIo&6Aaod(^ z#DfU(5h>+U4pcSej0P<0?x}{R_!%-`(7vZgIDf|;Bb}Utb0lX!ng23Y`7cEu4o^-F z&8`6$^{0&47;IU4*?>ba%KR&>zix3Nfg;T2{7W+5q9Lq46pnP+e)QBw1#+|+Ffs9} zT^@)C)X&hy0w8NzNukhNw$4BL>WoS}Y?rXNxHe`{dZjX6+>BonEv>Z6@McA@n5qB@ zs;RRjJSoha;juFG;^Cvq1(z-_+N=TPuV_o?Fe2R67IiwQFc5>?0xi90$mS`zaU0KpA(N3jAzpNEGl=gVJ%e%Xj z%*Z~U{e7Np{Agf+nc3x1u^qD#Yi9;%G#dR2jRxR_X?sg39-{x(BY5yiY^uT5bEfS< z7c+T?{C5ZEXyN){QLWIa1~l67L&Cec9PoozvH_v2Iz8a%wgX3-orP$p@Jj$Ey zWQbDP^Jqx_Y`k20=Vv-@39A)04r4uR3B@*+Hi!|DKo(miXUaosRY=nm3KHT0i=>2J zM4%lveEO>V_r_d2i;{8RpK-!F z+$SIKaP*2$^+gw4i@*nG?O%tyV`v=rbqEAA{NYQa%Gc`K^ix<()$8FUj30(yImH&K zvEz?zj!vDQ^eHNRVJ~e*T%UDKjzEg8y9XCzhZbOb8?BfP!co4XP-$9RoFve?i{8M8 zy>f7cw!@!zi{ELyDsdCCG46K57?bRZj}SANTpjn7{IUUli)Ls!SG*4@f`PpdQ3n6( zgY?(M{PJQzIf)3ZQSRR9_=5K-&u4uYJeo}>v*vGyUpSvanUhLMxLdVhpbu%LD z5?r*3v*gjE*~#?sw81=t!&#WO8U6zE1j`PESe&gTCECkA%l7@zm+Sko!8@Z}f}BQC zBd_~NFfC~ikBR{`sw)&-*Ru}Tba;@N;q&Pe54abZmteNKp%I&;I|Xf)zDm_uxAev^ zZqL-{fT}~M**ztHdXuOmp48qRl~Rv-Hl-lncm_!hTW%NaA$HV-rHF~hjHpU+nL-T1 z@>3}a4E}Dr}!uNQ+E%ebXu4_etNEyCwk0*h)$222RUtbTN zKEZCfCxS!tH$lZ=&^VcXXph7uL|T&@ zMLh{KT!(kp<->5i=kJz2tgJM+ZDX8Oo7Ed)&vtL?PPEf!w&AjwgI6 zq)6Umgeh~X_q&RmDyt7km>67}``2tZ=g@KR&Qx~^ps$xr^x8`85fb^cuggh|`q{FYFmM|(eQi8^dW6+j!DJ#soATAW4^3ja2dIHgR)mK`kN zf-x889uYxm02!n*)r>-mV0r4}AuD1LvNF5cvV6jvJD%7TaQ=@z*dZ+uQxM#wBS zn3$s>;S`dBe?h5p0Ho_N>&>QYYU%X9A&4m=;D}Vyw7zOpL%H*Hx^1mrfn+3my#!lb+QOQTpe|+- zde|)^x?OHDX|j`@sHjjNK?O58qTNa!l- zK!B=4upl($Ic-@$nPY?<+r{IYhN4Em-DZm=>|Zw<`jVatKr!Mfojvd>)H#kt)}#av zlOEsHO`tDhq#W;ti@oUQ7UJ{@8|iU$m`AVnZ#NygzXs|GiUaJdM}@vNw>oR3-yY)j>&LjiL;`hzulS=M zn`?FbytKsb=MFQlED|TMCmqhyOxDkJ5nZC}e&M~`+l`jrIhw9Jc98U>n*DvZ@x*>& z5;~{^by%T#-%xgqbz$9;7?y`WS+IeU*Cil1lT8;w#C(GffNQ}gD&U#6lRh~rr9Lat z3tH&L{w+=<&89jc z`J9WFgFB*PB~^`?@D}CH2@IhY67V?Z`Lt$9Hgnz6;USwS1K{YrB>AtcKMjs#c_rToN6H3LoxSp^7@J) zRSHHSBrQfPe>7IWj9gNBbhoX#*264f zw&^C7jNh7}iKZUX&1@~|5}{u_I4Tb6&RF-hqU)J52vacS45aznJ$0ZGjdu&bK+Q+E zRc5i0`JU+|%zPM5#ML;d1K?an3{o%ooso}h6H=t%HSzoa7pySP6(pM2k(YViZ-RP|Q7?Q5mF4JWsXKeU5mo`_He zuOe0#$wtf>>fIhWOjESX>#PB~=xn(pb_AGvVl5s@`vDG;MG%j_CRZ7;q0ubqc6wvk z&cwVaR@E_%a>aL%NBI=^G%m*Az8}(5j6G)Ol!j$|Rcgk6_uaX3_q~5bD1|wJ-v*nE zh--z?XvP$e`5<(4C@-ueZ9DQ2M)WQGnayq(@~)<|vV_S?lCn3`MIAl;Z|jsR*o~l8 z5$a73!8F_SWkO<}B`j#3z28A@*NJV3-vvsrFwEi8AWr(q!wPS6S~)$Gowmq}NEs*| zeg64qcQ(Jn-@DeJL^f9WU_2=V7l{lI$LZH@B7qHcg6=1 zf0vW;0zADybwoQNXT{Rwz}ewGP^V=482MT(K{*$)17gB+4>Ju$Cw1;NpS*(DAq{|zRvJcUmp9v>XTXgYSC8kfC;naq z8|ksP)}_dk9gYs%g@ED53t9E&w?gS~OJehE(VR?}R$C|)!@Px$70BN-i&yjIWOenp zdD~32UXaspmb@&axI=eU);ZhbtxNSJ>pK?bPMWw|1Igg1i~kZ&Zc8s%D&#}4m{}s}xM?vz zM5LvE9i|u*VJGseO9_x>TB{pk7h9bZbLcAAPAkpI1Ldy(jh((NU50-KJ#r#*Mw}zq zdGTb*BDi78+-0eB?7|=|AMxmER4nuwV{mA+tWQ^GxZmCWi}^{#!JoNO6X&qEYT_5E!r_Aj7twtgv(fHrI^)gg#NtBvW$F3fc}+YTC?j z=k9oRx>p*Huf|uexH#9vE^z1tv%QQ{fMzD99v2R57esWIu>KAQYJS=3Iaz;m*e7qs zv)4^V&CeBe-xH;=u>0l>6~+vhOG{<4#9(S!G2py7y>i(Q`f#qVh-(S7GPLkXVc9vn3;XXvswr0rZn8=k-`WWPO# zC;%CK)iB4;H0!BuiQnwfe4KK`?|l;-ZzXNlvOYP?OLUVKEd`{xT~0S@r}|Te&~Io{ z!A*)H?s_n)cTZmguhc6aYoWZzr{h|p2vy2`WEnN5L<2^Wrm)?Ix8vz$yAx%AIOLnK z=!BMW%O-L}GB|1+-OTS2YuyPk4hCWIZ$}Uoy$MXJ23>a;HXOp4C9;;uNx-eP)irc)%j4qPJeui z3pS4Vw$Z~6EP#H#;2Z!47pqZ0lP@(wMC-E4vs>+##!SEXkz5lPHazbG)@6x*BeS?7T&3G{x&-{IK7WUC0 z(`J@OkHbA4<5zmkn|vt1cNLz@XF=i$RYI6R*I!Ea=M@78lD^?$WUw=*6K*|5k}Enf znjitO;cb=6EOEyA*LhM+yJIf!z+hDSqw6)bAq#Z$l0__!CKqK9U&-eYVQvL7;0XP9 zbAqb?uLEQ?#)$>jgfTh09uCcP86z>SuX@*Am}9p(KWkot*-o|LT%p@=NGUtYQ7#{4 z;SZb;LW-2XP0q^i*#kd4c9>P-I<9GY2g&$x44pTq2#9xR2FDbDw}R@P>gEH{;HOAX z^U>kO?+Nj0Hjxt^@|Q$_+EgqXnCPQN)~q&gDBarxzUA5~_(x}(fc9jqf_(rYZvr?D zN*Ofnvsa!L;DPhst3Y5Not1MW9x#UKRI5FNF_vYmK{l}B8m~li;^0~8|M{7$23BJb zI?X#P&hhc`45`qZ=evH8ER~}CRGt8&q)7VtWpg%0?wrmJgW04U+6EnFE7sD7L-vKAa;*uBOh2V+uY;Um%2v^1|KvI&G3k~manx$!38>e$w>YSwBdbhSvd!L?ho99*+N;=a0_ly?#2E*b2S_=5Q95~#>p;6T@k3j?~> zIuq78hbL!RP~X~eBwShsVryDd@}wn1TGbwx6&8i?stm;RlRQ|b>S0-4f<#jc5 zhGVhuB|uv}pZnlBu@I>HY z;2cvXy28#CZ#JIMJNT_m*%*fFU@Nwv-EF;|oV8w&6s?zzB)k6plWU}tkS>E`I*FS* zFVh7uoKu{KyX5kE9N0BP3%I&FS|{>91PB`@#~4T4pIZq$hwqZ6oATV(RA|I_?K zxU$wWZ&Al5R80J+e28!(!RpPLL!@=GA<~!iA@bh~L-ZB1Y-JeyF>abC>e4%qKmPGyjz7neUnk%{>GIua?c?NOHn!-!2gKKbvU(uug3A&H@1T z{e>&I01vK^qLdbm>t08?TO_{t^KWeC5$-2x7H7P8M$y*Nv4JbB^*mq#6mzpu>9ro0 zOk_oHm$I^^^v&nK@Q_3yXd_sPXQp~{x|gHKY!51q{QYf*Bx$P|w6|q7Jf{Wx0woGH z31>KEbe2Lw(X`8J;UEL*7G(!u6cx#4NVa z7abSR+puOHUi2$rNf|F&)HFET zC*OmBn5(9p5M^m^D%v_|W%M|EF)~y}c=z`YoN zwK>SZ8c!=7tiWJ?={GSLVHixiX0dpPX}@mEa04;BKnyv>TVz5Lz}Cb<+~-aryP!l@ zgKI`wtQ7r({qI1P>nJg64!5@T`UX3XL{O_Mru=HwK?@^Gtxe+NQ(+{{*8*kD*A^x1w>sr~sTzy=@1ApX ze&h(^KX#MNmja05V3_ZDwH)aP?GcQ=n5ruimOJa3i+I&T)QX3!lNs-&Wuyt`KaptKDt;jzH4bO?;0v z5^kq%PV?Y?wZb!I&^OQkOPxo}>znJJ_3VH*XuzDjos6ez04Kj4eLY)9nvBOEEw1J( ze2Ji|9mxQAWP3quW#7I87?xP3>dbxb3UMWYijLq`F(gqd9|9f2V|k%U3@O?9U^TS# z1be-8VWb*cvT#g{DYV!|l2dFKYibAe{Krtg6JuZc`cWN?BH(l`CicJbJH}ht?2{$d zE2onaUQgjp3DNoZI)NdAN7_moRK8Z^5`&VGrk;&==d<2eM{HT>(fd4H(rUv(waVO? zpQZSIA3R`%r4gB+^(Ovy$Grf?Cm?JYoO(dlL~r|HxsFNQ5O2tw15olLsKx0;bWAjg zp{Z@fy*hf==ZAgRAQVH0ey4wlkXzUuIAAzUP_=}Favx@Pw7Tm@fUSS38wGricM{0K z4WstX_10FSb-#b|;F||w-M8#5pNwZD%W~;_3+(y3hWFn)2-vFZotWYl_8w`v2E#-3 zb+){v&GW-|CYQ$pXhw(8BaDC5Wh~Nc80H;Nqa&Jy#ID;JFc+88)Nj9OzS33#h2a0= zawu+Gy-}X3wmNK7YEzpn4@AOMigKH$BE^Q`9yuz5c$563%E~)2H_cPNoxoMd5<~vY zOz&puw*1%ARlP0y0yjqN$iQ|xlPMuYAI9_z*DHWtDl&hHBz zq;S0;P?#Y4b;+ty_q5zjLe=ngA5Ip_EoXBLZ~QUF^Iz3*-|n_D$%gkjA^C@I-V*%- zw?0|MRm6@t(KR&VWa;(Z&A0TFyN#eDPH(;`xw7Tv{FKQu&)d3&h8^PLYjctNO4F^m zBt&tpwRy*Tae=O1AD1?^nLFkfxUk#92MoLI0aEC4tUhlyiW}MjiOR=0y!A&a`Pr)M ztrN2IdN4VM{dxv&U~0tWEOe>3aEVc1!tjM~KA@`!@Zl299$@M{~em0$4e8BF@K9nW4@`481Y>5OCS(497uWH)Gw#*E;s^Z4v1D0yY3s0Sf)Sma6E7d*eAKzh)G!n!Xh#9CM0=-UdfNQm%X3*TgDJF5zLNf>Bb2Sw%7QxEZTkH>9=*a-OAe3kL zSs7Q5c9-$7?0e7N7f)!_4f2QBfyD__Wq-UP!UA!FytvRKmrxZ(B6cG0w_F?NDy28I z=^aI}rh3_yjj$Czt(ongv%B(S4iJI0&i=-QFacZk$lcTIH%RL#6NoM85z+0-W02o# zFQ#@SE16yG!sX6NrbP7$nb;fdl1uJ==*+d)ECq%MJbO zWq)7&9uQTK3`rR%QLt`stx z>)6eYcC^mgozbKxIk60+lJv?rNN@*hr|g7eDZy`eJ(9u2WV5>``9;^{_=|tO+!^5?6DiR zaFV0+3dcE`;~UvSIesRUxPY)bA;gH6x&6_zgz5rdiB)kqD#!qS%>ofz-Ig zPZ$Ju`SF}fRwq}nJrR{JC(DcJ_(~59+N)>y<(F?u6c^eCB4uoS1+ak&w6mRu_vf_fU`U2 zxkU9L_c@hsNa}Z@+NxGONRDh&Kr%#-NJSsaP`Zw(?DP;&aU2y^#i&PhPA@~GEOQx! z^r@Rgp%iOhR_DYdGOHhv=*8$a>(S!o2)I+TJMg4%ljR+pT#G~4n$bt}I(=Iu&!W=} zMyk3i~qN29H zA1%@Oxip2Ik3NU(2*;-u%sN?`L!>wd227bnz!^1_xd#1w>HW%^;!D7{L{IqgUpryn zSu|McI^jv@eiDq4i_GR=DU$URk+U7Ju zBq;fuu+7fH)!;h;6+kn#D7Px7SNs-Ay3KsaRYbV!dSFQivEJ}7u)M$NpmsJVyHkip zIa8zagZ|azfK~h630092ws1hFljZ6&S}=?)NVpJcZ1%U+lCUbKIzz(QieijtPhGW(ASl?i9@DV{kkVs=-TyBMO+L*$M%hCMZYNk zDJQg1f^Dk7__|s>$?V?{hE31k5QOhV%&#uT5{C6-V<@&Kn*piq7bqj%m-}C<)sx3x zt5(d(uNBsGZk=)QT-1Sb08!2p!Q1R;^S}oy*7d=*8!mS?WO~OjFD@CzobPQXub1(< zZVq}GD%2#Tv@?~wT2TnJLDg#~c9${g%g-*?+G3h@xq+T+>2js(COuc6_T?_us`aKI zYegGMvXdsCz!H~_?si5p!IZvA?_A`XSuN!rcceg9d-|+(C{zFZb1T`*)h<*MlFKz# zbDPkZs!R8!?mhG*Cf8cD$%ko+T}{QL$l-N#YP*(4w3>?}wn-i6)U~Q%;%n{{Z}$o| zvUbCGnY0N&e_Qxg;65pxHCjWWcy4H|aQO_-T4~FyLp<`xG($>T#vD@Ku-A~{-Px+O zF5?`muCpvVs&$=9S*zBa5n8Jy5pbnOn1T$UNb&5)S|gRL%W`p86E9pF%!yo8Cqki1 zZBeQ={?|o=qZ;L$wY78t@OD*)Hg4?iqZ#6@%h9UAHS1`7v_jXH&gi;-M!w9O1{n|8!A2INTEI`&+G$+mEEnbsGA9vdK z36V=$D25U}L;{qFf$I#PCGyP1O`o4PtINdmdvN}!zqD0b=aX2uR6ftP^ z&{3$!5&bS;V4hP8V7X_X>J+0`jJc&vwT}@7tkcWd`4Sv7YqaN{dptS4z>MWeIowh! z_ljfO!4}{iTXS?izPNyJ^T?#j*KfE`{_*Im$?G>O56qE)6g8U!h8RzIJWOiF!qq6vGf2#Y7u<2d+Wll3X?b?4MM@{}=e&~e<+pah zyVO_k2(Gn@sfx$Ph`${3ZL=qgZ2=Gio-Me&3*uzt?GY-DLe97paQ)BhT82qR{U%bWx3g$P<_3X0LDUk9gGuX5qj8>Z{%A`0F8JtKSbePZ#1A(^{w)Q?ZbCvTc#hwQG&Tanxw*7R^{7th)rG=!(fYKq1-BUh`sCSiqx|qDib>~yRyi1+gRsKcmJeaQ1WoUeRl&-&P z=Y#qR8=O=R2-m=FdtL4c>@_%+q>*X{mnHzXaA$oVlj_GFjXnQEnWrjYPB(_+?w}f3 z-{;de7&DP25T zm00O9oLF=uq|(|?Urx?9>0@i1kVIuKiyyAh&lWsCoSGGEyCNuTFkZe1w`7|4#Jt`@ zKOD3z_oAj1_G%wC?MVqxEhKN(+Rf=KFzvOc8md6O)IC1C1=>d+)eDgMLxL$u+UM3nlnc>kU#@l4LD@n zz-1>>bX%iq?y!kB8{B}rbqkukisT;rx-0BTIg%^fOG5b77>bkz3a6?gLck7gT@H_) zB{~6D*f#!4W{_(}VP_hb!(Nww$q7kswt|=q=9{BE3bo083b z8Xl;HOk-7e_tCU~>s8hkx$Ux1w^xLr9DRYaXBZmQkkZ4+6vx8dfV)GWx$t}Dn&Df) zF;QbJ;C~KC_7lehem`wecV^Ph=DY-sa`?sB11 zsgQahw-bC7qP8I^(xD6v;et0S(b#QZsyMo_UAtH5Od~}q6Gm&zl5oTAkzhR9iP%?^ zlcg5bkbRCS$l16EjYZ>AELhZ47G_H^_35NYzsk60G=YM83e32sLf&<00q>QL(5C8& zd8=(v(_U27)bqdy15I~MpDN@H6kwnV`}m8}f-hF*t0TW`-V@a<2U~K7yx@GeRr!1h zkSIGo^v6LK$Xx;O35;Y%d}7# z(FflnH;|Df%)v?58m5gYS3pzsZL8N%McHK1p*nIA+aip0IYkFO+!iCttBtPshDnDNf z-8PM@MmP~Dgls7iy! zAeUGJ&to+UVClKtxSaQ3U0|U#@%3iv!S|EZvpMiAg?k@zHZ{EpWzt|h8P+#*orHm4 zMngL_kv_}uQAW*`#c+VD#npi>#X2e!bcH&fC76u6Wdw3O=N-^;t#+%OtZHZbF6`K9 zH|T~o?22M&fuMZ1UbZwr8$Ro`-^Pk1SFk@MS)yDgm7sba=A$7p*q;$m>2+1>Y=YZi zi_-=oS0imz`E26CK{UkTt+9WVdUPk)F;7*BtvqPu}zdxOA=T(ae>m zINo@EP=a2nYQ2Bnj+%C{nD1&DT&{4H1x?Pe&ymMUwj?Rq9a_k-ZN-eSTIR9tWR*5{ zRaV?U9Vg@di&Mj;r7rJA{@JY(`-J0rNRNB{;nL&6L8p@FTwac%@t>S{1f^hEST5Y5 zsZvB)ICoS_D@bKv*p&rBG^eyXGC{R3zS58M2DKGS8L5PcLFYPgByhsG5@2 zyLFQt7iaLcI4~(^WFrAJ_{`G3XYDNMlv1gx{ZxRJZ^agqfd!fOiV`T7ns+7CW=#v zyNqSxn0ihXEvfD$w4E$ytOBTN6n2H(NZH)$ zr#5$4plfRt;+8hlrBqnj=@gIUAictRR2Y#GKR>PV1bygHDzSTO>J(2*8Hs<5UMUIC zFG-~oy%bUChzZT#`Rp5*>qK<+IHAY^V81tjz-o2IMWaH5Q0vrH+WXn%L_8! zCTk8GFAMxMW$f<@>;Yzb$*|Yv}IT zGLp-*P}vsSBv(?phG`+O)%ICu)U95Bz!Y=CoueJSVkl(w8nPCuw9K~*C3iBg*iw#HBr6vn*Vf2Gwr8Rll>@7%rFB=e*x#gtLr8_Y9TZJqNS zRo>5a%83MAFep<`e^Z-Fic*wv;`XmQkBrsPj6fJ@MP(iqYim_1zgEur38cC9i1&-QyMp!|hAPwTysqp*Uv6fGzV+S_Of|r@j7$^d^ z#nc*lCsNfO+2O+pfG~-RG~9MxDi%E>DwPn1$XCYUMgU@cmWfZ+ZOG*kqOdW`vgrc6 z=Q4E&0;Z3;?)+ZI0QD3*KMQN)`k}Z{#Q*W+JB+@aFkx$#yWR9iO2p?>vQFfv=|?ju z#4aaNCE1eOjHbtV5m7EPw2f`|uypKI-pev*>20i}&~py3ae5&OQB7m??#9sw$t~i? z7Zm}peIt+CXT`>dLxwHOXRl(FqO)$H*If3hA$XcE$Ol>oZQoZU!M3UBRa+2%kz~=D z#dn=e6^T)8ZN24xGU~Ari=U}?S2S&!11;1Sr>+!+F=dQ$Ny2k}wJlXV)FI(|ca=)- zVLIorZ5ksga1d{1dsCjMG(-^ze<=^=US-6%7U?)~ZgnLX69IUixCZEqk@ot*Nf8k5 zs0gh({pYtp#Zs|37ex)XDU~lHsc6F!+Kmty3C)H#4(o~bp z#gt&G5Ib>*JmJ`;%nE+lXYlz`$*62eF;l-BNAi&_eDzDx&qaOg=EC#k<-)sq1GF)X z9+a@u;_sUCCk0yWpV#o)^Z;!?Qf~7TnzjdFnKzl!=iMscn3y)FR6;+h&d`(js6=;jIA^U7qQ10VGlnqxniTQSi@K>wpL}@4fJ$* zG=8Q|-nRKOxdo{cAQTvrc-E8v4IW!rMe`g+TU;iUa`5|;DrUhjOArJfzqmIKH zPA52*f_k&Q_Z1H$U|F>eU-Hg0fD$5f!V2B0!V*awidY~+ z72F1ft1JTlo=U;4N6Ac`|MC77e_vZWxW(51yeyCnL|&T~hVPjCvy?he{8f=Z56=5q z5p+$Sl2eu|-WH(<=kiCV82I*8#cY##*)+%G-;-S>ZaeZp3!fqHX|iQMD`cTRWO)CY znq~}kLoBib9a5?55U=zch>Cb6ouP~+FSK_xLCXx6wc&1JyhSQ> zb{lgj&p|T6J)0Q|ecYyC*O>a>SIXd=&!@$;CrkSM z%gMRu!#Wtvu;rfodYMGE){AjR#6-6D_m$}f_~;a2w8`0|@i)Iz6925zE3rnud|S+g zXqEPe1k23LmkxW^qCjnxlMQ5P!I(yqXGf*wUc8xKPH{89>TlzVi)QxV`;+EEFQT;Q z(Gfa2d^1_{hXOcrhi;Ef=9f$$X7TWDGCP*FYVYvNnk`2}_o)1Jyn53tnuUv=`g5NV zv0ko5&z?Vh_Tc&9KaL+f`TDB|&+i>Rdh*xfhhINAIDGW<$qOi|m%A{q$MaYJjhoMp zp}Us20eDxMJAOBwez*H=@PbBPP_>IeTsHoRNw-qqL3@#}IIg;`^=jR->lJsEbcF;u8#I#UXv_v&s=Gf9Zs|`O~j&=6L>o?yYjhjpkny5 zPSFX-UTHt+a=R##l?j%&&stb*t@Unf-izlcm6^_tM>iTGB-7*m{Ff+mLy+;}*N29d z8;XOI-5vxKW+J%5&=5HuNDf6sYV@EpObPU1=toy|!ayY5m^nq#gJ)T%^x@?d$j~7S zDyat>kw*{QX{VvMIAt}ENFF0s%i`6Z1x#jd=ihbMJ49S*@C4KMiZ3PH$}(kJj}o(Q zwOLUI_Vu1rz3nyyxQLfg8n4CPbLf`EqRu^cQ>5TU*lMg?wB6;tOwLAoAL(fbckWJ> zE}0jXznd$|iQwuDj-(mQns=j`BeZ9_qj<6&;d}7VQ<+}gyCvy6dXSN9NOQEzw5utV zBc?ht(mQLK)W^*e+`M(t%+D}+v<{-6<7JVQ%b`1TqPB!lb;>+88T!e_NJT(ApRbzJ zHW^toh3TYO;F7!^8}Tgm>>J@|dBgeK(KqA8M7*_Kvfu8l+cG-Q16KyJltU363Nunf zD3Xj%YZ8=HGkMUett(`73P1FjiunIm(JTXxf0%{A!Ql@0Q9_7-pik%?~k_U>NN-Jp>+f}#SVc~fn z%_DAmHO^mi2u1FAE|-krfBc7z;+?xZWzCMI$OM(z2xa^f&&wkV-?_V*Kc2s97B5zd z$?P@pTQ<|P{r&Da-R;rQYH``Ll(W+)xPRere(&O9dgYY}CnRM{LP_V}niROl#Oh;q zOJ=jaPdJw4e0gj17u@svr)`gBMQN>xxC~wNLPVEVF!h4(JcuA{v9?bIzd8Bx0~inL ztsr~hRyEX-47mFGYDL8B5UKF*)s}1~79R;X%kLy^j^8HZqrJri!Uyy5v{|0i%(3-% zT;CAC*dn7SBA7qsy;65+CU(9-uPqf4+EPT6P^jM&Ofnb@jW`nYbG(A6wChed8476(M=l4fHwN2oMo9WP!pYA7{?E$`ulow1R6 z&ZM)f+VW5Hk?5eq*<`U?0jgvdu_=Oi`RTWJ?n+Ws95Edy$7`4pGE%;W>%2_$TXuMS zG<^+RWcKJrUZcuxnB+qY3koHkVEN;16JNSHX{>I^bf$OWfP?ck#>=<}pQ9?ma^WmB z1x#74JUxW_v6{?$avXIx|2Ed&*P1~_oH0;3OTSfe8Wg)9Z{~CfH(`$>gtWp{Gdpcg zbt(}*l(uiUh=vxWwFryXYC5om*(L<1x_3x=@No20RpqN6=dv(iJHhd`VPUS#JO%hINlxw;_0fHB9U&bs>IUs{!&-u@1nMFf@?d% z3ide`E-knxMOF2!FzI@Axniu`Sv04Hvjqk4y!I=0T!N4_I>{Kk4+cq4p|fMV?OzE*2(UkUq<3L^q1T8 zr3HS9K&Aj}nvgW8hn$G%51aU1ud`9v|ljk_8mHk;{qKyN$mXyQ(cqu$aQ{ zuafTMdaDIF0oAR*LEl9vHFbwBina?~Wp|w>i?vxKK1Hoq)?z*9E#GN8V%HZ1b4U4t9Z8_i`yb-Vh zj%jn5chJ^OAR3}00F&V01}XCeFCqt0y6wbj}; z8*VeSqvL!cj`I(3OgaeJ6mX;2ra+EXYpph=3@&bK~ z%9GymtLb*tW1>WfCv3;j^sY2ISr@2t0Hsgo1XQcK-~~reoG|&7bv;!vN#8!eiM7HN z?gXZy<01wAF=?i!9UDpH`$Ht6l|cA8PEBn6)I+blD7i-tzmoU3=4`42VjZR6FiBb8 zi{ptNWJQX#g_4FoYrQtbQjQ?Ac3mD~LJE62KBFH-VIXc*qFq-U$v)7*$BatIBXg~L zNmMblsNfHlj%Ydh7D8*<(;q@V?~Zn|E~R6W$+UIg+*mR)CX*A6TbO9(V-P-Mt@YnH zQgQt92B_HbcgjUZ1!j%2PWGx*Wtong=+E?3tb*}rolIn@Q}Y%LhK81G$~uO3)Vru2TWUHkb@J_RqP24$04SRxo%vaD9KlUcW<%t?48TS%^=9DyhVHcVHGg zL#r3)2i%l>CG4QkT3Z7vYEWgPYpGsH=$-gf2;q#UFK!D0qn%1)6=O(J(Og858IzK= z&}qTkJfhM%t5!bs7(pUdvwl@2M!JdS;*U;s75iNU_5n3wg+#;bWu|D zf4Rb~o=JN)9ltItWT}!)biAQ*D|A8%w_YC1&o8FU_as%v>2@ojB(+_Ra~{2>XWRkk zv^g7JPO;^`1WT#bQTyV}#h3Gwa^+yH!qE2uQvN7mQa4X=CtDefu9{4FozJFM_phFH zbfgQymkqKN7R~9SnQZ;q90f^QXjd=C zBLaXG48n=W9x5;4+1F71zzdEna!-ZI{O#?196e3fOIIXfseGj3muv*$2VX@fTXP_~ z)=H$0wEaff$(znuVAuJT|LVY*k4~)kJ&`a|M2W!?`l|&aQY#iB?OFvR5m_)k6$*Ny zc#hW!`P)LpjLcduds(RFAXbTa5U!|+QL+LtOT0&l>9nN~}eVa8z}=5WRGI&5XA@UfnW&?=(FjMh4D znYjlhnOWiTSEr{NWuXgO^hwlM4+ZwzpsRrYhbD|2@9%&0^vg#NA3b<}{Os%dj~^Y} zl3>lJ+%#IN@y(+bkM2Ku{0Il!gvwvtd+~qV)`T8h7ubJ&B3rP*q`}Ix2)oBmx2iaV zhOsa6@WH|1gD*Q1hB@w&w}=t<5ovI%kG{Eg_@JjvPD3UqTWa#fA8 zGwz4D8}!(*9kR=B&Abb!6%DPb3g{I5RWNx~brKXwmwpPV;Y3%H677`ZmoyJ_so`TB zNV>Ht8iDCNOpe)zhl}0Fd@Y~F=$unJl)9}xYGyqJWnasaq?7UG z>o*d6y&fEo(Ln~UD`a*cJ92N`>dU$=i^jPY={0@ zd}i+`f(Y*eUA2Bt2OQZ>IsJ0H8mGw#?NW1>)){uq$_m=? zcg@u?@@AJS1d*VpvJ0k@7OLvCl7Em?&esjSwmeDuK2X%MqNkDuMElqlyY)!NiP6Z1xR}D@9UZzZ%@-pavlJdaBaNX{Wm~XMfEaxdtH}q~ zVV_)Z!u=+9RH{CUfRR|>dNG%y>O(E(JLw9lR=Yi#f(1Tv?fQnRS2pfxt*im=h!dch zVnSBH5`jHX(VteyQI30q)rCzd&i%p3o8l(nq=d}M4|JHc$Ivz(;fxgzNMGiFhzk!Qo(8Hb1Y;@pB^)$Q-v*_R*U$cyj1fCrMWwo*9C0&FwpUZ$` zNcF7cJr9p8jf6`7DBN93s&w#^vr==?nKoiRdgdy4lAO!lX0waa0&_l{VIJ4_a3lz% zFL*0j+BEJv#Que|q@{Q8c+!s4ftVg_YlCx_3IWcd2WXz_ipG};shX}gAV>bnjZ}DT z2wwAONpJC8_(R!990qm2hTz58L&~*)$9@n*e5w_6y)%Uq&NOJ7ezUZBjIfJyeRZ1e z!fUv<#sL>1uri62UqJ=ES554C4NEJ_8+QYb~(k$ zRe6G{XKbm&g15Yon{$xm)p0&`bkuzL^4r^(mGS@XjtGvd>mhz6M|j=9q0xFUMs#(l z2xS+J&WJg#@uQvb8BL5jenv#(^T|1=V#eUs=z|{Lm7NC$T{)16)jfEJ4TSJolVO4`1uf9Ey#qa4(v$@ zi@**dS&SLtm|TZ8RH^dA3_Z#vBviEck$Hk{%4=}cRA5e0#=UblBxX8Ryu!hVY_kNS zKKT3+>B}en`QBVbNue0Ea0two;Si~&@O&piKlPx5n=@Wm6m{>(Cyogw5cJ#ehik_lqyHh(VjcL!RrE#QtoYoFK z3g2|fA8o{`M{~*zeFxEsazulc*BQXFSkRqUNTirqh6Cg8+%>Kx-dRG}=5Y?_`51e2 zntLZFI1w~ct2^V7DX#`$@65mCWDf8$$ND2 zLE1Uv6_ErjpG66{Lylt$j>?9P~l zhsndVucfI&^u(hgSY*uiF>V3=0GlP!ApVe$3|A8^9Ex zJuxGoL8gfiPsFneBGcJYHo=vMFrjd{59!gj;n^5cQHkN5knSFsY^x@*2 zUL}q&rrKgz5$;9b#`%^M_b`oB9V+N$@8DvWr>=o>4tQN6l$Se|+NoosbE3asnvscI ze9kq1iKj_$AG$FXR?CAZO3_lsa#GXS#(Q!pM&1;8c!<-WwjhOmBSzr_JQIAA*q-#d z?x4hidAIqTpXX5`0`i>bx<<1S5RsDz`~x-YtVuZ)-BVnU5tgHK|8>UPvpa~o#V!n5?cwiR_< z_dZBI!ZVCV-5DVfqKBq+owd;i%)!c+;gEzw|>E>L#oDK8{mjL@BValhJ ztXP{kwGL!BfN}vZ_%@tm-B1!l`>c1*DskvbS!a)CzMLpgiJ_b>ePNMBl|v>sZ^la-Bz4c zvhx9fv-dPl`Xx;@pT;+><6UdfcDko6vHa_vI`6R{UjN$FuI(NLR^Ll5xmNclv+?2z zS7Y7BhNWgayT@aL+eag-KNboJw8g^3lk7?wD>g$yha?!{ay@00Dw0~?T6=HP zg0Wv^z1C*Jwni(Gq6`i)@n$71vU0QqrfZyeQcsF*Bc5dexPj(})ooi^eCV4b8_jwV@@iQ)h;PwXx5r($Zx@!!2m7=YbhSAq!h{!pz9)I z6)CU=e9pIqffwbaS2IsQ;XzBw(t@NO|+o(yy*^x35V#xIb_pItc~sdB8sP zoV05Cty-<1y3MGu?Y?G-T2HHyo>f))6iOE!)0A3K)O3lb-zzQ{l+L0;S*?Y?4CnEfCx@Im~qR0lUR8}KO!Lq2f$Sn;7<|zYY zW<@r{zKt!1q{wI`%lq{VruXCxXHY@!kvu_CSaI7nw=7QH?gTuP6#4jBaT4T0pd?hR zh)JsfYu!R+ZB;m@bYOQ2$lBrHr_P}bEo$%qbRJ~ELN(7Rf@<3&t>@2@lE*b>_!*iH zwFa$IksmA;^TprBv(ss_@JAFNUoDS5JZ`=Z`y#z%IigtP1^Es~8oq64drBX_nJg#R zBO%9xKG!8>U(Q7>zicje1M=+T>e1}Kad-kUFoD@@HAenTR+Rg=kNBVG*r=6%?B2NP zR}V&$<*}xVD7N7}US7=eO_$5dS9pIcYlB)I%dyMV=_Gv0)m9Y*G!YO5ahT};&Mg-mgz#yD3Nf{>R%aM)B zpoj2P89LY69orFfm*zE&j8YNla55IRM?#X(j&vWZd!3hq=9SB^-iF@(7aIsRb{fj z4@cls4}b7?X|wK+qZ1x-)I=95De#dyYWB%C<&J=@e((G|1I*J_~j!ad=FRIcAfkY|xQUFF*aZ zl~k;i@a4{36bz{ld%IKkEX%|Bqt~ni&aRcyJ#MG(u!Txsn5Fh`6QkvV>3 zx5@0%E%xvY|DqJ|NlsQ46~R_9D3M$ES!8g9skiLF2#(w6KmNnj?W8=Ez*b>Sx zM34*>5&2_=$PQ^1KmRHFOgy26;e&!80EDUk7tYJOGZB8eGsEjUgtDt=Cmo%Qr^}YT zA-dAmAO4V1A|}@NwBwqf%BnXph$7PEKm286{b)DdFaL3iBmy zLc74!NQ;Jfh|d&_(L1Ebz_hvsLR^9sW5dW)n3nZw52V9kPs_xK+*aMVAa^HI=!A5^3W^^C<#;wsB!>0P-fi{ggT#$?}k z72h?@#W&-{WPCa~St7wmuAqV#vH@2(V^Yt6EKy?69{g-XmU_rEBwDJpS1u_O9HI}2 zx~x08o1^|!gmr``ft2pbOV$mBe~IZxUA#a2MX?mQzm6s z$TI+aA^n|qQK+Y%x&}x_v9}nc)i@c z)#IDHaaTfp80RCi_L<+{Vw4(n#5S(^JNBC~iF=DRoQEX%c<=D=`J?+^A3ivKa__4L zu;;r_dJ!;%8o-w>(0DTjJsHA26(WU`&a=ix&UQ|g4=0PIW&`=Ox%S509gaW!bX8U0 z2=>wYE-DSG^W2sZmcKQ+JNmT5)eed(t7NjM)8&-Jm@x{pRQ{s2jlT+paHAEoH67p< z4=TSMTrQ?Bka2%OS`GJ9dzfvqOyK@>*sNr!!WIvHjO?QWpINDNc*Ouv`%qZ5HfCPC zC!pyuIA(sa!hG+2@O?c8w)yn=_+5!rS%Gc1s0JCV6x2xIwqqM*cGZ1rX@3YPGHUu1 z-`_9;KQ=2^ZWe~cZcc^1!Q2akR`m&^gXNrOe|vWP&4cGJ;29i0`qIz51jNHJkNCRs zOEWHfqSc;06JG*@{c;!k7fwSUNSEqg?w-ug&oQl8A`*lJ{_#Tgl=A@#UXMAC_wOZ| z`D`u)@y$L;J%*{{XaD3ko?Gu%S9pp&E_%7VRVq+~W0h-hyWAY9hh>ORuQCyg1t<;i zNts0%A#dyiF?e_7j8I=tj;y}}S-{XyJ1aZ75s3UJvgG2;0YQmXx=ubi#cDGn8|j$m z0_M3B^H)J+&o^zHzsSq}<4dl~xrTP-_^2*ayw4i3&s#luaDIss$tQ1{y!|fn#Y&u( z2>KCFM$wKI6AHU-{}db@nRgvu%r7zrNZ&7-w_Jd-k+6uxA-Z!{js*;{>kFTN$-w1{)%fH)Dj63s%!TGv!zjHE zZtn?f^7qaP@qkbh9p5#JGVRt^5%30`6pF1|h z5z9cnthID!^vC=dlc*WuFVRfJS-AJpd0=VY#eAG}`WA+TV>P4+&QXs%$G6)6lToL7 z1|wAdg~gvlv=G0QGq((}Ik|@+4%fG_8XM7#|$|wE>91Q|; za0byUVZutXWZ+`VEEhE}zw$3_D1C}e>I^~Fhe1G6L4KE-jg_Pb0vAGbSt3~j)A}g` zeOTwCrV)0*B6dG^bf5;n{>`@yqc>T&sur}>saPvGknm@mvbD-}iAoFOlp@N*FdJ?D zjs0)I_!k+xFpD2w{e3+BZo8AJdpzUCf&Dj|Qz;X?14)0KQbAMy<&W^|I73}tj87W6 z#PBs{F0*CuqF5^?klb4k+0^7zI2H>WD)s&8>NBSShe@W4@eC zED(Q9kn*?qP~A!7^auGRF(`xZwq25)KRd5{J%A1N2z7le9Ney`xcpOTu@d-cm?4hQd=UsG50y-{Rv&aF0PVx0&x4V~?bnY~fTo>=0)J#3BA(2}t#V zKPRe6d6uc@Zd|5_$;{S=zy4A|Z?A;ku7;gfOJK`SddbWsFNxJ7n(I4;Vf5q>aK+eY@V zunV1X(wGWHyHl3Rm6IA%1mci+1h%=fA~f#bf~XWl;Oz`{;50fNl)6Gn$Iq)&;ewmrK9JjHt8q-?lnoJ+u z2bp68HM~YLJw(^eEW0qX1=@N7b8R%iOf^^w*5QF$L%oGUtqMrGYN5sCX&_Imujl&a(7 zQ5GM}?;EAw@Y`O((&4+s_~HWBb4f|{AiABM66n!R0tV@oVS(GO=~tYdq%NJBhH3+#DwK7ZSMJ!8rTx60kWibQ!7 z_f^GI0GogCLiZhp`DA(GB;F!j^+6jRy~)t&(+T<32W}FAyS;Y;S2qKfHgMalB{RapHed0cP z#@e;#LOx{Iw2Ogjt&t{R@3n7X@|aKF{?<%!9Z4}92Fo#(OTeeP zLo&ye3nba)Ydb?q(xKS0%zc%7MLrR^@Z{xSSD`80I#n=I__)Fl)k8cDAW$GP79}NI zMzjUo&d#q79_s6VYZnz(m+c^7m1ZMDKjhe_D@u-5SS7F1WsORn5) zBU8G*!GOglr3yL3S)-0l(e!nE?gwSNS_Ebbw7^9Yux@;66)cg3Rf_NZ^^2p=Em?RO z(&Aih1{F~*)}_wv-@>Dsg{q!Z?+#pZ!N;ltui&L7n|nK-oQfR1S80mlHn#Q9TU}K^ zMOCAEB0#vJL21@uFdqWfK~@{nNJl96XgDqbbXEgSoR#BR#N;Q0zdzYE{tKt-s@%CA zWkI6kTV#{Y7oYrhvwF3_$rj5`F#1a*w4P%z6K9)rZX`|3Tx6TJ8xa{v2}7wEf|ejN zo)M`#|64Ko5L(kFR>Fsk zKstUM`lkl2gUes28>=EZT}9=Y1**9Lyv%;*Lny zLh(!hzroDt%Z^SY+cJ2$N(3IY7WEbXBEb;qudl`z+l=#yuq#ZT zDxc3Wwv%7J)(%4IbV|vZdj>7v)45>uUWI}gyU7;il*xtL(%RhoCB$KR!@v+Q2Bx(| zks>C7tEbtF`}Tba7n~AO@Pg&lp6oQcJz}yTVdj5q!zIT@5XF=TTT_5aBE;MA^pfW+ zn0yF#mQZVRq=8??C5oGGD}586;;$PPOj+;G{Rf)_kbf(ABz`8Iz%F6yi@Va z`!qOFb-ozG%eQOv3ZdX#Bq0(l)fv=CLW(*Hx!k6U=%tWG77DJ+y_2RWR>=!(TgTBx zY20{{jIt8YllB7dY8hv2C#Z!$fgK;0wc{2-frcK>QNHuD@9?>#2hQ>Ko-W%qGIs5g z=Wvmnq%@Io5HMup6mpy>C!&P3gfM{5*Xi{SXipEMz(ebzZ!qPxf)9`x=r$O7Z68284)2RTB>Ne z6buD6eWM7HBtAY+Z-TWuFsP|b4A@U9nMjn9Thi+2EOpeUGOy__JGu+9bQj_9l+!K? zJ6Y&pYe-pkg4Z^bj17bsfZW#5iv4Lc z?@9CS9?pAvJ!^2%%(KNDsU)kbt?jDBReKreo6q3X?(`fYp@oo$l52J`oHNXy?%dTG z5(3h*lV*OVr$|ct(39z5!^7a?p`DG~B8)?XS~WoB;;D)*Hpq&@f?ff$%u+-(9)CII z^wSD5pKux(X2sL_@^aB2%(yj6o0B+9TpoE7rk2bnBHH0`1rifAr|ArTzz? z=|ovYzQOVCle6;Sk^^9QO9Lp?19y7B@b;I}sDt>Vyg>q!tRHEK{1|SrnfGzr*5c~v z#nB5SgyF&|Re=I=Q2D2e2mcr6vktEIS2;aycr&j2y3MSI)RXyYy$X8C@W~qeMiZe@ z?%VW@FP%SGDuNc^$jCCmQ}^-(ZXTZ6#Cs8>ScNNyCC zD6bpTM`cjj-0W10r3PwXETt28x##*dZO(A1f_spQ?2UDc9TPCXMi+VBtCA+_`0FF4 zOC9;kD6=O#y$=KdXe@XFhw#KZ5CXAsbQD@Xpr3pKG`Imlc8MqGIeB*?>vvFSBGUm6 zx)kR%JqCGim*IOHcO1o9MROrir?a*KU!$%nM~Pq@ETJ;1h;powlWe z=#LjikDpwgzfzsKBcNIZMaRZ*l}U+|jEM*82q4736EAnuBQIN`=4kg)7z7hZ=S=KL z*Elu8GX1SvrOhm0Vi#QvwX|h($4TT3>3X?KFWP-C(x}vR7QAN9E4{cqYLUdzxq~Lf zuD2A(W{Z~YXr^#X$)A5S<~@Zts@5HD>2smEJt>q5j%s-0+*9XV1{jvr4<{EAp>hW| zY#6s-R0c@LSQ1|Vjp-$>Q^B#t=_$KbSmBO`RVmr^quJW7Zg+O0J55#u9s7mSnoJ50 zOOHfHc7}MIuGde_Edr6VysA8D1A#Kw?}wNopN1;ck+PKOok#$(s^&qH2b8W&7#Pdr zBq0E#1>ihswn~p^33&jL(EhvS=yZ;A5ohxiIy70Xm=ZuB-q@&0$gzWdWp&{?)yml< z!RvUxpyRu_nJme$JAn#}Uz#H}-@6lpl9^*TS15h!awW5|pTfwTXYb&%PL;9=1oZqE zx%12>93yZ8Jae)`$& z!^?mE6PH`-fx{dEx9z30^Hl_hS*u9EE?UQ_vK`D{MB)0|(duH30|(y`G_n;Pmp z`DBf3PHn>gef=Bl)cfN7AGpW5HS6#5#dq+BzVw6R4qOUaRQqIhRJ9R@$`BtqlU`?I z>$p(W)W1e&Q{0GBvlZvPKwC6bln3Di{3rS>4(n2Lr9q2W3R~W9UQcG+OYUfreO9i$ z#~j;s0jdmJpUKk6Jwd7?oo0nmQ*-w|c-`y_X{C3t?FmA+N1rmEQ{6)BCd#rNSjBsT z*lYyu5Iy4S{_&P^ZdlgbESDCHjqG-%3|*TpFA6@;sfvzco~35%OX{I)8Z zAU#!?c)95iwgd|rZGvG_$_1+gVR7C@i9!TuuwdsZ)4sF%q*atEg?X8Ef|Dc*9#+Q*wVIO5fZ^@B4mehFumsv*dB%%KQ1jTD7Rr=5T3*pH;UPh=4Nn}!F4=D~%F zuK0nVDS?A`L{#<^?2iyo*!$h`7Ck%;u{NSds`iEyvN%@8qHc7roi^bHNmq~gpnH0s z%PpXtljD4oieC<9M=NIo^JoS&mf zd)|y?C)3U8xSZt&DmB>Y)1cF=I{RsWr!-9b$I%{46Ur-QfyYuj7duamHdP6efbol zOlew+UMG?&b59U+_!2285p}1SMCt4A5JFU1dTeqLGFHRG_r}9NE6I!vAw<`pvon^q zS;0t%2-hRyl^3hn0nV)^9ey9t?KoKjXoX`mq)K_wDRC0m^!s2?qD2IQ5Wu1jj*%W5fD!68sS>I*IOR zFm3@&nU5{BmdQGrG$bS*{6k-;r9dxcMkvi~Zi|)*<#0Xwd^(-K!#$nf6}Q$$N-JRA z=g#rQ3OViI-tO-|e!n}4Q^(!g)bx>xkq>X7)b5YFs5n7vk&JRn;x~l%Xm&Qw$If7i z1_zFg2PP8~l2efM2FHW+|E7G0=?IO5^T#k9Ump+RQ(Mia=!p|`6+KhSN{RAcWuc|?ri5BM6yQ8c@HrNRzL&7 zkwgyW7S|u4{*M>U#T45vGQ)^3@Uz-4>uZ1NIO+jQTX7w&V(eRlu0*YsmvSG}+8#B4 z)v$NPYE+t|qOW{XOv(;FCJ>fj31d=vhD1Cn%}V@lcXz~<0$I2%1V1WOyCWfnbM|(R zj&v0xuBA{55OrDb!%x4vv)a}luu5TNCMW?XFqQU1@P$U6z}KA*1pRO}JLhennF#nb zo$U3+qIr#DRNCc%cefmMESJ+$)z1%~e06+q@5O_MPaosj==A-Qrw?8n+JUOI2Ydx}#;PZr~;n?$+h zIUDyrgAry&Sj=r&g>w1spuX{2 z3EOM+${7!*0py7h6{`pGApPDS^2K+nD;UhV7!#CywLVGt~B@BBdmdDEd=*Z62!?B zN{E(YSjJGp!UZhz{z`XDV>oc6bJd>ZqYJ_(6M>#AA1ar?1tO2zGc(IBu=CioR>r03 zdqvz*3aR&7azzzpSvVD@B_|T|=2M*2{LhAdTY_=cV9?I7|2vcA-{JVq-%;udbkiIF zjCBMhUy&eXc<#s%sU^KCo9LRa2jQTq5;Np| zNCERckSNMt*JyMJBI$&N!qNrYd(Y}Z)zD_R+J^L5e`kqE)o`z z^qSq5aRKx=9Wi5B6oU1T_NC3V!Hu3XOTm`6q|uKXED$C^>icKo=AcK*zPI~7FMt2} z%cG-jzx^Lhv9vC9oO1N_+;Z5*(HE_)(AF(frB_)X8SX+}KjSn|RhC4p+ws+WHbG+D zHI^YTFM3F`uOu~2gIHu8wLBc}eUOtkQ6$ods-ZN*~{!ezF_@Y1&64jsz+n!6fK&3f>3 z1^jO%3rXV&*(O=gKDP>6R9M(Pw+d%SvV8VRtCY3reHgD1p%y-RIIj*js z&zr^TJmjEXE@zYf%Y2?BOs}7O1V1i&K5)VGdR~7yWbW&kEdgZ9wx@6AQn9QKiWTn| zo~S9OIejar7uPcQOD>ftgOcvPcdq*9F4gig46ID2;c(oAfGU7{vr}wlnH39l>@xBe znvPyUS?1cPf_s7joG-T;widsbh(y?wgK}A&l zqMSe`baGljf)Fa7S|Az~51}CI*=H?W)_=O8#jz;On(v4xm^z7Nl->uuW2Qs4<&ajD zd;F=MDwFBXUANn&n@Yt{l6Y)3C_!oyNmVaVW$o=c>57qb+kuwr8UQ<_Y~hyymdzAS zXjE<93HQ2KC_GWI8s_JD5ROPmWgjY-}u-;DoQ znAya5YUzMdou1s)EjD?s6xG?^#>+QmZqtTQsmqyW!Ah5X8(l<74W^$W5efaS>c4Ac zq^;()rW!E)-C_G&VQ24bqiS=k`=suM=ni+%nad~dj+Ra^+nmT1K>iL1Ar$BHrE7T3 zWL;J#r!paUGg<0ls$$3AxZwdLLW-zDG8Q$CAL{z3HVsG&o!ACs`BP!VMOGT(+~|or zpp2ncyReY%B@p~vb{R|P+Km8-h$%IRh*R+iq6T`b;tEO^NeKC&pUeILaIll1HfN+0 ze{d|ED2t5ba3hn!Av#lEHv>>|6NiXD~SVOJ|D1Tn^NXFe6a&|yk}Secel zNa$}FCCq~}21=&A`8PWw%)VWd@#y$`)N(z9VaQ@IK1r`zc1JqvC%iG3%({`)Scrdy z4>#g+g%bBiq%FkJmbQR5M}^~*biuTo)^{hj)(RU=5cue{hp+t7C!8zojD%j9-D)X8jT4A>L_+*$0qWnJiyjqj!kY zq1bCHPNt4Fi~W6OY8v(KIPQ8O<;0;Op2z3_jvm87o3mB!1ff68_#DX~2vfXmjwdr& z7e1yYw0@A{n+BotoubkgOP?oQISgWbCy|1P49g zK_j8hWQ&W>?D+6UE5Ln+MhWff5O+;2ymH7YR%R1fDe8*sm1inSNZu}Vo?S&7o?PWP z*X4ol$^LX_6`dhq-qADcUNk$(QVU||INlD(f^i-t&XS{B@IAq(1lcOBjc~4b+3$m| zy|cuH5I}0a#LQ^!vNyuIF>7K+?fxgNdp+}d9XkO%3RIwO6TW{11Dmz~2W+s{!Qs$E zt>6YwhzCG^YqQXpoXt`4B4X3a!b~AyIBc>*O;38ZWZ^^Q;;sy{xmm7C=CB#m#QKEs zTni=N`vMmJlk_vgBl%`A!8U2Xq|C0szZ&iRd9*VbeWo@tU?~9kAO1^ znMizTE>`%g-DtGZ>rI9ovc~AeBN!~n<{?QFu?8rvQI=za@3NzKlpk|*YBLGYZApI0YgX)dUJQE9>GP1-#+lUKPF~RI z4wc6oA=t{lXPC<>l_HnfN5}uJ*}NU?u{HzBg?t=pioDq@SI(1yQ-kVMkaAtkjBB5c z!{Xk=67KNBbf94JAWT$d#pJklTj{wm1&iTn+1Xa`Or(KSOmqSVJ#+D9ybz}(H%#Rw zVprVv1x3WCU=;a*4gyjSxdEm$03W-J{X#cib{%d=8Q3#Jylses=imBd=6Dbp1fhUc zm5q>T`FM^4ET3VJQB^0Qnf0(uyFCCoaXBL9_OI0&oEa-7j=of3yz^#xo@;ECGNPR2 zMjDQ43Lg0^e;LV{MQN*lbgk~oE`{{lpWHVYyZ3>a*cktC`fKy?>yJkV`$w&B1JDh1 zB1i2=4!`UpkDK(_6npiNg_)Dc)O;a&ak;-Qz)~uJyZ-0@+j}{_^UrVpaO>!3|L6#e z`N`hLf4KEOyT(U~7|Aesto&gXdE+mG>x~~2NLfH|wc;QZMc?`C;H0$2?6tt6p0@mC z-~|f$f?)FCw};Gbp6s>z31%JokDPX;()KXYBQvnF3(x~Wq? z#futUHyybtqCw#H=+6JrvEUtHSYaLlojBU~2UAzwK?B?+xOkywMbc|Q6_n^szyU0$A?;0{)Zy~cShE-^9+ z-4+1FF;nLA0P0a+p#WM)DPb24Ir?#CRSw*?541_}(?-0Srmm7VFL&J)v%BAtK`v+C z&F1fBqmwa)p{@2eoJ+~2UpTr)hfbaz;ixP(a_dY5pgJbwSJUSIG*?RJyz=?v`{q=Y zf1c-XI$n+2l`iBs7^w#JjUs8~EdEuRWEh+{O$CU`G{Y363r;PWbb+t0@ zt!>JT6LjRxg%acXILu;sefg^4O?f!Cx5MzIWzKQtyNEZR z)Yby^R5J1=qlvG{{9ZU<{vkHEHmBU5tf{GCEArLox4&EdR?dn0IOgYu(Sfqs$Q3Zu z)xPO}t%`OUQ>;PZnDWddOy@`}@NO7#BV!!GDA$}_F`YyQs4D37%Um)^bm3bpdI6ll z*Wrc6vV)^YG;`Cd{f_p9xAtGZMGXaknX zTO=5VdwT+$GFa9cj{x~5cMNPlTXMHXTMnhzH_0ee^KJz9mgnv^qZnI0z~@?y-^L3~ zYm9<{qus5z@mvFewSv0RllD=1*+8S8+BckZ4df`NHN6VVm8fBbykv?;N5Krgq@*76 z3^okf;CIVUez*L1b$(Hlcy$8y_g^Dh8VZ{k&29+^dPxOayA=$$BtUKjPHWy5ra*OAJ5*AH1^iv@GZii)=8?nFiV zfM<7(<|lGM$m!_a8z`R7ksWiYe|qrjx@UtZIc0?;=WO;$=r8iZ#77 zb^o71a_@V80C}?45b)R>IO?O?Mz# zU{h6x?z@OvfcmG~qZF#Q>n(6{)Ot~AJ79)|+z<>>`MyE7GJeg;8n!{Yi^6*xe23yz z9VHbs>yF*LmECa1zECH>a3~rSpVj#lLc@zIOUkvURPB8%w?_hy?$%u&aQ5l6J4-in zi`ytHJ#S*vGGP`sZlV_fs9)<)dP%WvUj*P#O1;CVXm`XuA&gXj6&17kjx4&q+t`DE z`z(00yu`Nlym^kz=~=tHKOd9tmwnjA}^(0lil3zre&_3|9!u&3Xj6;-rFSQ$h+=y zBzE5m6bki1p#T&r*D;nn>IGD|I8IXB*X3?iH%EVHE&VGN$)dwU9BYx%~VyGHQN zh4OcC@h4VCu%Yv1mf&42?-n)#oH1U%b$5H?*(K-Sv$qGwxc&8R{VXDu?pN=wq{Jh4 z@0en2r2#`lJZj-_I!wS(Ppbjsr z6BMK4yUFse)9%b&f1NYr)w{*~{fjw#pnMB)AbcoMIWelH-vZ&NF> z%Mv3a8}bHtB|QI8IgjpU14X1)y(LdBX(=dI3!E>l-7be0*Z8ZT8M(4$B8h&+vYIfc zHi=C8RB*1|Gs2F1yapvDhM)pgm1_jxK&qQ>Js$bhPw-0ORh` zRIN_MHK@CLwaWGO7!Fm0lykNt>I#hLifr)dK|5_av%=OfkhX@PnfoMyTUYBaj9}I#;ZF)TxGXuL(ylI#F&0n*O)$O4`&= zbOsZv0ytU%IjC<%)v>+5=PteM#o|EEZ1BR)h+Hlj+MsTd>|k`%IfaM&cpkD&wQMXu4FvkKW{MURt9M= zu`3m$Qgrmp!%4{w`3u%ud>Q}V+fN-KhhiyqL2`-0qi&>E=_>7V;ufcBW8a+ z(8NsjPM&z)V4Iw(`53@C8y__AhW-UsH^7JaP7zGNp-wE7p6qeSBoI=L96p_%Pb+z9 zNd}O;-q8yj5!K~_ub0?*_3&y{>#z>?Ml{@dY#v>Z5-I06U>g;1Som;+RB!@=ux`?) ztf=Lko9+9=QZB_7Qh_*)iklmKL$%r^yW%1*wb1u&bpBmcjSz}RyAvKK^oaQ#E%7%;0N!1C~ zcW<~F4(4U&Ror;}dUGO!C3jG4aWvMSxW~%=e1^a^Y{k~yZ#VvkQT_Gio3xVt43+d} ztQ0Box8`Di!^c>h)O=;r1h|@Cr-R!_-!fx{qSo|?*FZ;DF*a;uwXVPM>eyNmV=pnJ zBWY1n>3(b;S<9Y{btO_s>5({9%tjNXnu&Mxstxref{)GcA^2%(V3E8ZRsNuyPBfim zEG^Yq_?1J@kepjLakPAu22!!iCrk*UzU+4|gf783X;EdAL9L?zRen+NNu*s!XfHF` z_V?!gJ^a6Lcw98)6c?;*aGG>*ftk?hv|H@F$5yg%HD7wVD(q6iaf+l;Od#eR`@`hD z&dfp^ew*esH<0)?+=OM|2*m$b&fRr!BMN4xEBq{nLy5W7Gn?6n&K_ZhMqgripCdkv z%`K0lat6?Cam$`&A-lb|7%bd0s5iGl7-F+tq)O_;bKDc9;B*|xrwo42_D>tKf9dtN zck?v}4{0h0>KIao6;!Y?Kj7rzYrU2Q^90k^%3MP|dxzOi5ifXn28Xo2ndP)GI?_o= zpxe9kdvIqh%;?Rw@oo64k;x8qY@%?OjENXujg>h+OlW?ru_g;b3Et*MbOYIFZ z<#q9J&#*`d=H~Y7$&X5VeA}F_-gOHttfB#|Z1^bY-b1;?Juji2M)CBA3mkUxvQmW| zPf2TZ#ZpoNQRYD&dSX-)dMWCP%GzDO3>x(nS>g~`js$7RkDKC1 zAS{HZ90&A}3By#=C3F*;u3uOfR49|FlxQ+VV$(jpCU;V$P~7AX7%Y*ZYJJioh~s}&Fy6%&EZ0n}O# zRnZ9`;`-1=q6WiVbX!5J4yWWz^C&vI(9>iu-O^^7OhBIGX|_9;!IuepOIC%jO-htyTm*;hfg*bZ8WG5i_TOe6#s6`CZvBUCAi zD6x<#L{{4Fu)x-EyRTjGZ#TaDlIiw-i%JP|6qi!qG;oK6&%(bn3i zV<;_DinE!t;c@ks>dwE;Du25U)k>TYrjd+e>RFA(tERB8H>cvBnLgKh*7S0S9zQn} zjY55U8@zsFsZRV2d0%i*_{J6|2q6*zP0mf0^iXGE%DYZt=OH?t5-m0ozq$Bha`0ks zD(M#!qHx0pP&DwRm{_L%g%dv3sCbTetcsJ3HG9d}r2V>i7*4i+y~AP7#j;x*#<>~PQ+Q1*g3jH)jHagt^Gc-ftD86SJ}4<8}J(h}>WZxH2^v_?C#<$Elp`$oQc zaj=@q4)YrEw`;RfjtM{~GbFV3jWvr(Xc5!&XWi=E{A5IhCzmrpe?(EzWqE;+=3vK! zP`LGQu_Prfa89L(@C(iRg6!q>zP&=O(aGZK>HO{VI0eEGsKh}VkN;!3dM7+le%6Dt zvQHU_sBz!G$#SE~!h0J<=NqwG#HOFf${4~py0V~Rorlp~xyQ11=7Itw;p@IC)8%75 zihO|0JjW6uj<=L*D>j^nv&)p4`;bcPYq>u?y^kHT-Nq-}YwGn8SiHg&=|-|#5}^<> z%mR7S<=#wcgdl&jdj()nx3vSuN zEw>)X?hn`vlrgiy51At-SCRI{dqJJY9d2OiPJBCN9jcBNNc70rxh;|dPLLxCeSuW=GN7mu+fgm54F(O#uE1JdE@q-K zRF5zDt&TlJL5guyr~iDS`qWqcIS$Ny-ji!D7AkkoTY!*J5f)6P#fj(Kx&%c?R zT}log{7EST_#1!5$~LxmBIn5obNy^Ug-L!rvq%uwMY3Gs%A59R;ukGXwo=BmMXqQh zt2t~!Dd;i|iS1hkV|+{p&Z|uu0ao|wkwG{$LkP*$59HC=e0jO(9wHc#8Q|RTOqW54 zgd@)}gv-HCc`Q3)Ayn|U(nd=epfh~PF8(Cn_OP{dCF|1q`_cUT;;j3DtkV;uVnv69 z#S??oFp0qbe%)@m^q9scG9a8xk5h3fd%TA^l9#0&EVI0wIYxUe?IZ5ji0{boV_=+} z&EI!k&W3?t8U%tqym}?4gj5j-O=dVk=(eW&x=-ZX(0X-6yqHf(PM~1QfK&3|l97?^`U2De3UxY@%dps3N{M{u{9HcxHDqUZ9x(js(qKcnlJT0)KWH1#3*Z``SF`G z>l-|yXi#w7p&EJ}92L@+{eUpQwodoF{ua?mjL7BtevtIkS@Uv17xU~&6#&~2f=aAe zUxmM-7Iio|gMTW8gJIWT2YD2130Xb<&KV0&^01O^q^E@SQ>|EmgHBvdosI3aO761o z05$|aMAX2r6{dW`8GiA`$z^&n(<{W{G|xUF7`|aVBPQ6DtHP*`s!WW-D-qU09P#=! z@|n7qRY6OO)FsE23C&M2nuU=>JIIkNAoFFZh1j*3dwP*Up&~7;aJe)`D04_54ZZ0T zRfn+acP!Z!%CtsJ&Rhvaal+hYaIP1V;}u1b*vXkfFsUH}GHCkg8_Fw76`XR0R$+;$ z!TDUXviV#8YTGlC^a!`J?iHtQe4{Xl$W|Kji= zxZQDXh#UlE2u;FeMd5uP*eMZFPP8U06~4z84D_goUT>ds-?QgF_5G2p=In zg`Hs{7G-?0v@dHEJ?QitRI^IN1^xYgdeRe6#hxh6uul94BfjR$fz;-XQs#08ANEwhg$2r&a`U|B2XcefTQ<4BBjsc&2G`nkZjSkjT@iUvYzhQ|};880+w zzBB z)@q;@U%F{qMd*43tO1vg5rlXHpQKnc;yYRI!NLMKgHfr{C=1EOfsJ=rq^uCquV>Jp zh+Odb#dkf@dA)+pUJdL|KcD1R6)ME`4aC@detGPMkgTl*C3Bg-lg&jLZqr$72mDe- zsjN62uI3DrIMRl8HM^+K9ZCB5z@158p((R^ z$M11sb%bEI8(fN;)r)P>Y?$1#^)Rt$xm4*4)$iNy;F|}ZE05GBaHHd67LC0RR0qBY ztEj$QAX$R@6E}%&(7Sc!z{^9UTIK8jJJd_#R#W}*Q18_!d8iX^j5O36<&?1w6PI7f zZU9`%yqvx{yV^UyK)BbFUZR2(id{&s-j`}n8v8;*Jfcw~59|zZfxD);Wnd(Rq7>9!WBnidF^wP(e#t22@ zNQ)qz%c|T*fHe_;A1$X z)EukcWK7u0YQ}wBA=Yn)aq;y4X;5HHC-1sMFmPBoMaXxY$u><0lzT19c9R)H9&wZl zA=GFgit~&)Tz34pdb%ai^;jOfIIa1;(YEyOc>Q7ybM+ zv~r+Q;-(>SBu$NKSnZsALID8Hg2`WM?S&?6;hhT%E^@sqxD0`q-i;EwtETWr9Zg6U z10sIs?riFQ6kM`T9$Cf_3FKKmJ9|3)uH$JaDZwPvPZ-YCAR1n40@<8%y*mg~q_-H; z=06{D<@bPY!8r1}im-{Z<=6=7bhD^;?EC!(DFqUs_a7Wf{M%d#qpP}+vMkTfrj+Dc zKz0kkcYPD`E>c-*ppH1m$CG7uB1CkxqwkEwTwx`-tS)`8fDQ8 zEPtuWQW$Asq6DaTs>u<=Gja5tWVsNR;0@5YL|4l51vh8W58m*@{f61abr0LZ)e568 zF0$eGMpP7D1b0O|jd=@E3m)%Ll+4>aZq}02Kx&7D?&ZijT#}AYs#vk>NxWsSVN@s$ zW+@ZZ*6Oj%F-?kMx$4BZCjTRmfHMGAV^e5Y0~kOcx7p;Z;G>&HYDb1kRLo!<0-AXz zd>$QgiyzYP6A=}TF$b3y8tdFYl^drF7>pHH9d>WlIwFj4nkPwmIi6I6mJM1>i6Or2 z?WvFI`mIBeBzfqwI#>~Qklc4n7JQ3Fg22sa7`iHp%RPOi!JsI$jR{LsRErI^StE9j zaQm1-5d3^lqOgHd5Ys2=ud%W+gm#~J+-w{$j3#%ift3*7E*{2JZQVNu+no!%FiAHd zaSui~GBy(*pFrG8Zm{&L@4Pt<6Eo)tp&u3b5DN0S2j1s;gdiy!RB+-zyHt(jpZ|o> zl-L^huRqVuKC(i98%$kT<&r^I%%6yUttBW>ERePKMWwY(oxn|XktR~p&g-z6=y6eM zvd2myofWa)DjA_|D=0&b0(&i_PjTrZKC5^+PHGK}ZmG&_E~ana$?8zsj!2QrkOV=& z4J+O0$_lc~1cY3&3&G3_S+X*767h+%M=dqugvodqq8@QGsevl!*`hTBVmA#;&(k=R z60DtNQB<{uIE4v}FapiBG%fR=I7<;1tU3ws?9p>+R-SB}z{>`W&Yp;_>;qA`@@-2a z_hkAdQ>w_eWF%*9|9y$=J846Ag9!}%&E4#Tj(z@I;Dz%f>Jnwq zkHS1&h*SQD5hS2rBT19qq1F(=L%|w&F=c_`o;NAM1As{JSTLQ}qw{X*LS?XoNjYXP9eEqI(UEo4Xq4_4 zu{-?6oeZTJ@&yG6s}xDeS~FynqcVr!p{0h=QG3GWCuLLmOUM(3XzmNI&y9t-RO{vd zNg6|wI?(0Dnq`K+C`KQ~dXhk1#JwJ+`Y8;Ru4kfUW}Sh8J)WL#Wxy;wbrx)#RWeyj z+zb@vF$8ARm#8%;ow^>oDoy5u30B9Dh=O6&qB1eZ2~C}fROaR>^~QMprUBg_5AYHq zGcWuO`p~SkN{&4D9|*DT4$cDB>+CL_kK7!H`uHHhuMr3;r~h!y5TXFI3KS?us@Js$ zgj(;QnOw=mq7S?hxqc^rO6DtcDs>q`JWJbTQBIbIa|U{B*ArLi3&k=jy${M_3RMmW zv_=O$G4UgvkZo_Pf#i;KcQ?)TD#n=_u<`5InTE5Q=|I9KO^PSHD+npakv={`>hV!I zy}2GCeZ`v*GRTBAnor!BmoQ18(4d_>s>9!vm`f~OiMU{0nLeH@47)_7R57iCmphBM zn0O(ys1Cc;4T~bgQFJRte{P4hbd7d_PbH4qW3;0}T}PPz9y~bG$QRl7k#eC3r$?TKGu~PWmhOr|ZQvf^XNZrh|Vv@sZX{XpObK^GMBduksk0 zINK~|t5%{R_BF&Hdc%xF1lT>Rd+UupeVWC0qR|p`R`&_UWhP6)dWRD#Exv4I8$A>waEXeyb$b&%-w$!rr zkS?t&>8DFM=f%xQvfwPElck;?69$Uy;gk?Jwe28-!eqJH$38~FoXzWV(p1W;(?im( zI3Oo?-@qI(o^QwK>+L^jQ^-=F(({CXJrqjH-6DyIo-@$y{G%XAmfkLfsVSTJQjqXje6_I;7@O}yEI_-G92$o-?om`{z=r;p@T(dNVLNeWE z%q?IFkVR=TnO-kuga}qOY~;J9k-jl1PnX>#h8PTvNs~QutUq-igvV6at9nlg}fa`EvSyaC8G#k=#M$vu<{WoAW8B8n|k%F@(P43lR-8S!@iRBF5_> zTHQv7QC1GV?qjne&j)kDG@iFmQFY{k%+{IjWz?IC$SrQm?FZ3QH=X+#d+e5VudQ!6 zRR$HQ^v^fvD);LV)G15avCX+8rywK`^vjLULAWona^4WKWPQIiOBf?Zv~h%Od3m-% zom(Hp+8($HfQW;&B0*a)xlT0SiF*ikm8x$P!b0TkA&J#IZ$MO)KUH~BEAf`$ zS!S!_o*&-lta%Y)2kpqWddK_AK>!ClBzN#}=)jT( z>6EU82x~^!ci)or|K{?X8G|BnBW7%UTSppwOMP|XoIXi^eMAb^Gsapy(>;Z5Or_L| z_*t>Ldp%kERj+s+O=1QvXmw+~I*=0>A(+&wSQAOtk7Q16TnWjYe9%XMX-p#>#wg_e zBV6=m)Y|omff7H^mrX)$5B{|AyFP5$+GZcdT)H#Kr1E%&$CiIng|u&O*VsgS$4$9z z&Ax=`)&M(d1Q&KT#{ON*1rCwdVYN3yBHJIsPKE1{FpQemMd+7GK`7HU$CSmr$|!q^ zGXyk13#^oAI92bR1lrnVLjsf>J?%zOLo8ABLa(L_AzlOHfyPqp-tJE)#MmJDa(HT3PYi!$OIUh92 z2`8~M-3VS&OAd(Z`x0yfV^jDs6M%-~8+_yA-aJFb z`K6z@`t3JsPJ>cw$lhDx34YczeGuwND=GO%Q1(`+=O*NSGA=81HZ*Mu{T+#C;=Mse zW$s^J$F+3+D1_98x?#S0N2Tnka7}oizjScOhP??|ubEqm*%`XhfM#ePIE_ zL-9v}51nM>=F|fpzdVzIbu{Yun^;CdVj#LV_{} z)j){jWSW%|p&Q>@vueG%Xw5l=P0t)repu^86t5&+NtwJ@LLo zpA~(38yTUHBAB@XWFaveMpelHmvns*c$6~YCKZb*Qj+kvV~HVUHCem}0Pk)**!aA~ z(ezxtS#h`2BhK)ueCF?$UAW83pWKZMF3Ey-st+a7!?TB;4EE7>Jk< z-@ZbOX$2HO-je1bFE3pZeOu`n@)^~{C(kNF&Wx4~PnS{}98Ie@_Q=I`WMZs5q?}KG zc^GPrvCegJhM>>s1S^#~jo4o>DBE4RIffh^$?^c8Th7+yQr|P`K9iKKkFe80;>mF^ zDLf24nskbcjky%L1d{~Po$O2Q>vre{QOL}Qxa!eprZ7kfW7NuQiJr0Pj>@a=7wxyMu7U8kw>xbOBsV{So1g&{Yfuc?&E+Dz3GP&T&w0A^qzR)K;k ziegnrVouyfISj;vJZI3sI1P%0aT#)vh)U#Uj7?(tzVvEsMpP~_zO)tw+$l8={x58+N!$?pfvU!95WczUXteZ@IeH_Q&L zZan?fnJ}YRk27%~F6qsj2^px>4Uq$Ai64RypfaM*N|Hx&i zGCiU?YOgBmuyxoN{Mnih8VII2#AJ;t$*~>nxj`2ob##hvA&Q}6BV8Pw736?!-_ePP zW!)w*$-}>ogJZid4n-s;N!|9SKz-+cENULrXg5byK=}4sL zUwjnq&k&No3@51Gi(g$Knu_G}Azh&!Cj9CUsa>>Fk6#_4+la2XQ^L5nH0<)R{!F~q zH1}$B>MG{VRwx&slWSvhC{(W1yT$yy>~(M5TA6R}OJ|5-|63zOTg!Fn{4BQy??w^~ zEtLf!qNt1R2fS;*_(T2%bd7)MRx|@Rb35X~{TMuD9aS0(Zk1p19>#VB$4?q@MNNj3 zNUUUMby&7t^8AM_R2<2|$_Dr1@s7eg0VCpC^99Z%;b@M_%P2j_gR0^{2h@6&yPdTi zbqqrD#>tR%fE%dj*&rGX;t4UrbDRqcul%vQ3Ge(ol3VH!HWbN z@M^E&?q8nT8yyw%&F%baYjkEM#^hs7)t*Q7>YH4C)p{Becd=47h}=}`&8g6En3c;a zpZN7Dm~hGdmFs;lFk;rMAJ#Lxy5LkW^**n0y?;H%DxwWfc>1<+x0gus-`N>Sg}hEn zdKBx>lNUivS8}7(QzW21J3tT%*DlI(H%O_WsFc=q3bWyc1dU+pC^TdXzZa%D7Cn64 z<&lFuL^)SSl*(k$9+2UjV7-2nyy`d=B(H64Zf`&%b=UW0OP=tF6A$%F^p@N${h_0e z59^UAm78}+$Bj)cWa>J*+WAWC(6psK4fm~p{Eyys$KP!cLIrwm8wkXI9O7~kJNhC1 zE&tY*)BgrX&2KE&s9jv=GWcoY2Ite=lO$(FHz9P6?N5$(B_p4=r66@;1$Z3f()Ob$61*&j<4cVPHTKCM@Qu$G4Y8Om zk8mD!I(sXU=r&K(ps|+%QS6=ULiBJrZ?n}oRjs?9p2p6SjhcLpy&clS=HHZ>^(Qs* zq}ms>=45&v)=+eWbVLXXL12L#+qr9XIb4F(qUR<6lXw)gDnz`m*gEz{u=mv~S>(*2 zVhKL=6pe>dTX?cT5lJGd#@pvP^Bq_7`_*K*FK6;qBwVBBgh}6Nh*ZwmCO^%kIei@w z8zoE)YL@as=&{S-Q4-QAXyDGnLtCZi=y5p`@r@si76^OT(;_n8Wk|)xO+pkTOjatW z_tGX}FaD=t*w27$$;*<&H3e)8Tg9$v<_&6ZNy|k;NYT$gcj(UNxsVVXu0auQzUEWC z7`41nE(pFyT}5B?f@mixZogeyFf{&oP06THxH5p#q?s|-nlKr*!|N&=FbeR7;9KT~ ztf?z)<#;kfqQ7K*6t0HwW(AV~w*l$CIncMvuZXY2oLRo2T7B+NS~*QEMsPK=k|3KZ zZkSsW^N7mOyfd6lc{HD#b<1PDP&%7JQVx@ZEGEtBmKw%NevEwJR1aN(zARn6douJQ zF^yVN*Da{>&p)I&A5Xj8^NZEhQ7#;57lwjH>`sVE3ysASbdUU%1oBKn1Y567>;rpB zRTc9}rp#~xELqA%xY#Dh=%Hp7qhTLL z1ih3sNgK{0*yuv+-;e-NUzd~9&X2_5hQfkzxpWyLISTKLRQyTC#H8@hsNymYxCE+2 zkC>Z2%Vd3r0{{|KJ4H*nU;a> z)FnPxf|o3fx-!FyC`r|1WmHB3JGmY!G`eZa?_T`nNle7QB`!gBkUebqtL%t6jFp{1 zdGM02GsD}~t!QIiJG40E4Aajp*T})EkZ~Q__gMFcaboLF@N|Z|O{2IUmsU?l1}-Dr z(vfO}*gqWa3+nD5jWB!%R9DfuQ*xufG`Euv4 zN00Wue*Ws{>E5%wSGm+#%n)$INGgYR`C6Af7{nlqE~hnc_O-%u9ZZT=+$`=807^j zm=Ogd4P(UeWBmf*lXlY z_QF#4D~9qR_hP_x*%7&rqpo@~^6yQISHueT_a^r0gIlISHE-`P@VJ$;Rugm3>P6&1 z!qEfsX&)k}?f8u>b69X@qN9|)8XFU7;J4d~jL2>qaZwV=eY}woqM6xYt_Tl}J)yvQ z^P#L-vV6`d(em=maXv=Wn6 zT7hXJ?sP5$oAu}!1mo;Qr(fW8WqUFG)n}dzox%f@Vb27ig-LivCHm@69TLzwg{q*TzbI+k)w?fkSoBxHKT7&Ji zcGC?qRO~_DwuWmNW-$lt5dm+)@=^=K$QN%Xg3rXz`z?7)#_Xn-`9=GyA?Z7?xkpIQ zh?7jCuW~PpuM40t@>1JnrELyJOE*<0C|}OxD*Hv?5+~TYI+>zv%8tNjs~x1jbhBrVAj6t3wnN`RyP4uR=U04i+LHWetA&CQv<$9*_#yl=xcr>t*L)z ztsRTAvg%OSo|RgQ13Aq^8F(@|hP!{Yz3r={mbfijkPiZ@QIl|ej~WZx`RoADDq}(1 zWn}txDmhzA0(jv62Bsg$YcyH7f@4tx&N<1m9gw7d9gh}8{!PB1eQ z9iY&29F-S;!%9MRF>gpT;fXDg92}IfXKsy*;*I&`)7y(c24O-nnustKZ@bCyJ1pQ* z!=>O38gX|GU{UvhYy-%p$NPm`xVxAff0w@}KNv77ZwQEr#xfC(>;mbVs%XDta|k*K zN@%3i22f(R2s^UYg%G1EzuuhIGe4(|q!olXY~Ru^HdI-c9YX>3ggkwHXY(Pv5?Cn+?MPfJ4cNiMEHc z$vU$Ams3WGb!rr)|pUK|~%;BfUal2$MqNWSt#~3Rpqm%C+UutyI zc85=sK9%F19f{m|V-Y8!O&@XHktyn%mrbzUVwq}REL)hcWc+>GjhAJ7g)q4GJ587)P2 zV;$>!!fwfmy78ZK;)|-ACdDwwex}k3;<(}wa^kBIGQR;h3Xu#!Vb&oPOM;|NlKnR2 zdU7?tNSla`Zpk^4fR7)eQUnxx9a)ONffg;3jhD8(rlWyuIwlo!7|mdc=>ZawAP$0c zNPho&&uu)fTVV!!@lC{9{WX`1-N3wSKs?%^Sup|qt6~vbVaitF8rb^A>o0O z>2awPVnY!mUA^$Ldz#<~`Lz?M_~h;e?#`{`Ez(NfF-$;y;ORtc`CHA+1Nmjz25ciX znjFlujBK0&+A%GjlFNrO?~lH|!_ngo=PIw=3=#)74I!c;hU7*E$>E}(INR2kGvE-Q`XI~bUO@!{$esy$K1tj0?XA=zlRIVzuoxqODMf$ z4+<=2d@OHJwU=$4uep>B-vN23;v8v5gxAy_j*w$4~KuFHaOw-q$T{6u#u2a@GK~P zCu-N91m(~uok9mCf4Ls=>8GD+Yh*`3da_n`Y>i1;XB!XB4!I#zAR4;o!wk>1ivRvM zFwwCy_fxH7<%`?DK0+>k84rOk>L;LafvZjYsG}BY{i*Mv7eu|@uF|(!ay=*bLSGov z9xY@MGYJ-DD?6}>;|mvOIEqOsWBQ(2=_LB)W5dNYdljhkXD3jRuV>tG!HBZ2g$DH0 zVOfhP^ys;d7mGYxTi>((-rM-E;@{Pgtyw2BxM~J`4~d`5Fjx2@5-jl&XB=hWSoOI# zTY{G(M4cP~36}G+lwn3iLVF6nB2gZw;GY6^DPd#}O#t+8eu=~khz)fA`x4Vk-v1Vn z8N8~jhp?0adefy4cog|JXbQUCE?L*I`qKc>4Fc=w9yUvnxs{Vts)y7u+8`Mkb@&QD z=`Q`fq9yrs97y#jD0fkLyE0wwlJnCQ&fOryBmN0SNIDc1@d^%y`{HBKtVx+llL2{Z za>(V5b0KZXX3DBrf_p|b&bD3IXAjC3d??0j1a&?W|Gj0+4RP!TPgMGIXV zV(n1aZ3TXOpG3PO2ZPkLtXbBt*h|c$-C609Efw+zi^W70ydE1M5zTRG6!FMM@7Q+y z7Brh}E4up9M%`T@aa=;!9W3=jJzGXDAVf31n)8U^>u(>Z8~Bed44K!t6!d=#zAW`#I~%*|O`4sPN59_(RiV3xg7Y?pcdV<`Sp6+|fBS{xeZIl&K^f^t=j%x~`;=_belzO>$8-qRU&= zacT_6Cb6`W+G)<)O3tLzRbkrR*8S#x<;|@`uXks;%tp-M&I;USM7mmih*Tg2+^o9A zGJkHi`c{(Q2 zQ58NmQY~F!0n3)Xap-%3oTf9yD&&LqMS$-Cs{BcHjjTOgbB-sDCwZstKM;sTO_PMJ=s{V7`#7aRsg@5uUJx2>!yJ18+IU@DkqlO|z%or) zRPP^Q7Zv-uS5&xe?+6H;3+UV41z*AuCk7XTo^1SiaxwLh$b9R9J9I^f)d-Q_g20ij z=H<}n_<-jEyb}LgCNQ$n$Rj5kn=m?y_X}h!fGql~Mzw7SMs;XBF^{>ok?n|e$} zE%b=AH@kN1nDK7*#5x>z^V1`lT<7mab(tokm2tCf;ZsDeu`hOW>0M1?kdOYNomEtK zs+YE8&@^7o`jY238d(l!{w4x_y+$Lf+|y8_IjJSBz{tfmQ=FpluP&cATa8d61ULI_ z$K5l^GyI-B%FR%i9n;X-b@?ar#V%-!;nwofd5QRQtlENaK|k@_+z$btPN4!!nG9KIfuR8U44fUG$8@GmW%eBuI-@y}_Kvao7xKHkQO| zcz)840i{F^MfDdOg=j?>H|H2DxtUp{%h{Qz4e9fg2nx&B-!5 z$Psq%KM#G*?V>Z{Q0&FiLt@XsnPOX7jStS@%V!8R!ItoQ-WZ|*xFy6N64k9hPQV)F ztEs$2_#9WqcNeX_$VRe4IuUMU|9{9nFy15+f$`Ec8U;dI*GMqHU8^-&I z1YKE!NTkmJsJnZ53Tg}ePu)3**q~6}l(IYXh@(hB3aF7Yo~3^tx+(Y7vA_hrJAczH zUd-X=y*azuJHJ58&r?Z4+)K3!c_&(T@O=0_L@B81SlojldQKJ8$Y7#n=?x!JGPQ=e zYHXf&t9SDgswbr^f^F}om-UnGWM8iNV5Pd9!~TyqbZx@Y7Iy7ndU)7T97GR{rAW@2(&RvUBDUw=Vf(<9{aw3Hn>PIj%Mil6)`m9fv2sOy`3LeD(s7c%(DB{{YkG*=iS0RHO|eiP;+q!rxS>7nmPvYf(R$w=$$s|ie!0>OMZEV%)pf_*-c7sPvAsiYe;ZMW(;L`Ky% zdDkc2k)=OpZ)JSDrLG1!4bh!ZVawQY5Yvh;ewwkgr6R)b)Jx+Cc0HHiL%RY=po`AI z(&$B$nt%pNjEHNc-bxnBUMIW5&13HfrBkMy>vK!-bDE?>-^t{fnp}-V8c5h?5KI&u zdo~a#aTnT(4sckvVO7b0k~HOqd3ffKOxjJix4_u|{0UB=Uw#;hv$kE1TgH%@NCL92 z+$deflK95Y!WWM;XzZ6|-PsaU6Kjp0io)Sx)=s4E1+5Te!0?_7_M9}y*gTR=Z&k#Aolpq=i&zju~MVwwLaK6D^)X?mo=3r z%Js*K;||j+K6aO*f4pew{5|2jnaIm@H@9K8(HQ{@DYjx(q1@y8s+Tzi^Z+t z)I3`qKpV@LFDJ9NooZ^Yug4acag9~$woezoco=rWYTV~chT!zcg8;LZoh_fjK zPegWBnRJ-B+{(x|c23Gs(pV{4e?iWfwEGVl^HCN|dbrLkZTu`ynwd&o=k5eVBn$1D zs@q#fSu+%o3noaptY_nq_DyD!>FCGBZ|jPCLbd2ZwxzzZ%g(PokR0lyULniw?hmVO z#+}-)zt!QqwME;k@iZVXRnNBOVi8b32LB)(E&XCo3yhttRr;X=UZe7eUi8*qVtd0Q zZufFoI-$(`r7_cb=TtAn?^fTZf!gxnl|T-w0)-B~@dc7_6a_GDAXbN?zah7u+%Yz9 zMg-b5MFn)lWCN&n{jNKw8{YN#eQw6rk5TA4_Ec&oBgjH497G6Qi;`dxUt!TH23!qy)k%wSOHuEgHd8AN4qzA8T%SK z`qRO%0I(eAwNA^I&d6{4+1cdt=?~q>2w@&lMcEc@8{$E7rg67w*BBlQdfxof_j&!T z8A(-nV}xl@*{cDIp$4qb^u&e=sz>J?(ox~I^k5XYd>}u>65{YZQZNg+PRu_>x1_*x z=-&5TTEh^nl?U*mZ568@ z0ed?84W?c^stxwoYD-HTWv_73xl@1p&EJ0W$1gA5UHs-ZCmqPV=r&}CJzgEHV9J+& z`T_-Kq#2U>sAJUS6Jc%R~Q;75K#e*0QhOE#~i;6hVJ__eMRT zqtofx8S|+j2F)I1Z$%2TH*)wWdxp&<$f0`#2|v2%Cf^-hE+=pE_Lj2rbo#Hq0eP3p z4Ntn?{3tqaJt;&YD$&a))3YvAqP&Ey=kB=PCi)Ues8HlkEp?o!Nss((E)x2&l^jOF zk~*Mc&-TcT8niM>%aa}l+`#@)Phq=lR+;0wIm?UHdpw=3>iFSBx8PRB#R8)F2uHwI zPp9Wox5F*p&VR(KXdslA$E(Uw70a59gbnu+fkZIbkeAmwJJs+sf{Du?)#kMYiEy$w zC&xWZF;}?Vu+h!CLKT%g^2PaTR)lEH?QbQpDQr8#!uEGjxab&b6c3APMZZ|Bcvw_x zb(^(Y?-YpIWGnPK-0N`3(V8@g1GT<&mM=_8Smy5b#`p8-iOXAq?SoJ7kWp}MGju}f zQ)K%3mCENObHe>qG0ghHk(>A~*ibk>L!3;~&LpA&Y7! z*2|9sqMPnfx@jVpB3sz%-JLv#vCEJ0#5p*~inly&!f*NfS|lcyY@fm*FDwMj3U4Xc zh%yUBso^g=FFytu<%6D_)n2WPta8KQ)m5VfpfM<|i?_yZ`=u9jxXT+*!XdnVoE0U~ogvJEmMa{timb zna^sz{SQmQ!}${r}Fp)#_ro{n=-4aZ=#&&8Ij%@EImks5lFMF?+o1mY*T6 z{iRQC^rwfHZ;uuoMeft{lRGt4QstC+V14yP^bl8BTNCU0?37D2pQNiaAiPg1t1rBP z`(2%Vsk{|Wxg{)PtUd>~QY0uoZ!l(jSH4Q+Ed8Y>y>LYuP5>JjH617aX@R}Vw#7Lx zYx5H^=v^#G4JWoX$aswlHzk~5O&s`BA+$uJKWAnkYwQrHQBMpLdSkBuVqn0%w^5y` zZmF~3x_3LVfc2*T!8l(XzSM>JV21sKnXE|3*_b*T2g!Na*&J7ypuDt>e(sB{-d_80z?;-%-iWMWjSZg3Lv%RdD@G1+`YN=nTV> zMv7COWj6xYdAOTQc$IQLGxx$hwS*42{F7!I6Jmu zw!e$Q34(%yC6pFdLuAF+86?B#UXmhcwJTO>#<1f_QQ-l;`u=-rL!H!8mYl!QPjzrWe`! z5HAinx%_Yy3L@9%Y>C+^V#$>OOO3LGgzu|x{*e^Lq?~aFF6%hC@YY!i{S@M+YzHB5 zPic+93DJ863f`<@g`IG|ZY|U(k=U^LNgI#2xgaA^C7h>56LoU%8ZOlG^{OqvSdO)aeLe?j~7#M;O&%5YP^`>2yam%DF%{E#o=>h z>0%kQR#T>p%^u>MtP|q$-MJG?ys=RX@m3w;)8*a_@-ba;B`Q)!#|u7>3s@=gQYpT) z{a|HjL;4fT1Tv9$uphlKkDM0FCvCCGfJHK~bv1nHH)0fY#K>IP@AEJdjFK7QS2ynB z(3zh-#yaUdF+w0-LZ2Y_b~9FDZZ>#MFccGjeD8>N|BIYw1RW&1RxiaO(y1S(#FSQW z;(Lcvd568=bczyQXHvYhZi-i^;+1A(m0W02T_M!5J+_9nN@P{Wj5ny2E5g_YD}zzB z-9+EB<|B;jVo?lbRUC|6$uRKsuiJigl&s>A+i2NRm`YJ3ef-utSC(;N%j>cWUQlZB zmBR)8*k)Y;$|$}jvd7=k3;gd#7x$IJDZWM~;)kc^?M{9Z_vnzF$XuYXKSEy0s`}1s z`Mz6lF`X;X!JCRDqbAmK6*gLSg@I zqX-;fxkt3oR=5DNQk{$3my2WZ^eV4=yVz*%>lr!|-vt*{qww+WIBhPxp3aV>gg%z# z?v1_YPwdaM5;F|=z%MxYt>Bx- zmkaLhIlEFI+@%y$kst<96G+2kD8 zsXL{hJ#dE}EgYQ-cu0s1RBENzW;0hC9f{=d9rb@1C2X035F4qr-3XDiq0wh;zm3C% z3#HWBB#7E`t*j$UzFA|T8%I2~w@7Y`1u~L+DYWM%CU0)tEP`_vIoBx^R;eYU=_-EW z5JY64BrA88AxTVV%{8QRlfu3ABVaPOhy!HM6O{szPp=~I;H58aFAUME7XZ<8ZLo=P zMk9jVN-;O=Id*bOqe6zbbw@=F_Vc7eme=mY;}|bc@J|Td1kc6&PJp&1BR<Q^ zPq|ul0O`SwaRu_d4Zqa){{8z;vBvl5tXq9{KAGYEh|jv&XCP3wz(p`v0#tS`SxBum zFx81?O{bZJ@(xGTZ+2fE?Cn3lll$G?a=3Fb*5}xI&9%XU;FxhQET04~uJqlINZODz z3i1d9pY8mQ{g*>%=AP5`_9?PH^XURti*5aLu^nMO6!xCq7=_PohQiC;r@K1`yEml6 z4UurNaaCT-OAN^8PF!p6aH-mL<@E9H z!>|AHaiaEY=RaTUy!z_tZd1(%`1Zxkc(&imGSN~qrTKZy%l^U9lbvUKPyc!i))^Cc z=Rc5me*S)WClfAP`x+Jb(t^J4FY#G1e(e%JM(sU?2*4m)GcxO{+Xj<2V#7?E zcc&NU_fH2fL2gf+XXyF?Ve~$E^VT0+kex06f}JfR2Z`T(@%umg{$Kv-zy1CX8Txi4`R~8`-9P=)AAa}wKmE6V`RCvN z;Sc}(FQ5Mbo#A#FqvE!Lf!dl@RNY&_Ufeb5@?L4j;V=HjyDQm0cK?fwtNG=|`Sk6( z)y8|=S<)fB4mXxz2@VlIByz&GvW?Rzu0h~U2>3pk$?pB_&o-7_7d*~?`u_K4pUxL= zKl}Z`S9|{+d`f!2&N;jZf$vv{$IEJa$bCPOPfGTZIxl3dTj_bSs`D*t$XAeN(Wgmrz#@}xS@#5v~lf9;uAP4`x z_&wZv{!!Bp`0c#x^^g9(^n14RantYV-ouZYzmIob?R?Y-9{ly-(f;!%A2p6o_aE&% zJ$SYAYWJf?lXTqs%h8j)r@Kd-6Mno_``|0+&C$WvPX=svW5#c1R?E3}sB81Cle4oM z%!ZykK04Ta)#oC7xH0(X=+XYO7hvVfqpxuV`gHs7@VcrE+jwgz zZug=1uPqG0iRtlt_Whu?vC#Fnv4`Q{o1?vFFM6l>AJDr)AJ3+5emKW5-+q&#rLNaY zj3fW~?5VdWEpZz#j(s{apuVpC$NR6~91NlHfu|!NIC34#mdinkyJFWP`Th$`3=aa$ zkDh=1?BQ-x({D(6zm=r50{i;T!K=rJncUmpm;J9_xo^8KU*5sND0dnu+YoEkzg}Vi z&2O5qi#q*wAhw1f?TC}-~YGgy${Nu0XitYDj&9IxS!YPb8dBV8~ z*_u*stFfs{XvlpRhL{ZWx{W3^tfh3NH;Hg(JH{Z}!bmw!G|-z~**0jZ8d=UeH5kd0 zRH!NlSNbUU3zhq^tW@>nxs78{JIti4yDoI2WRej}Efz9i>AUI~s&wP<&f;yYtXzcM zd~qmP9JSy3ySLjV9!-|3!-u$XxCe@qc{~Sy{6^puck0uj6oNM~1ZV%v|H2m9p;BLS z>rh`I4rg+8bh~R$aF-oVbhk@j7do4=Xd*6cxMuT|wLc5`Fuy!01lcnNd_l&1> z<%oLt1or#t-?8V22k1_!P3T4KhmW6M@}j%GBD=HW$;Gle(McT6^&!uLY(Y;Ob^xCa z15`j&0zJX1e89$Kk$aBgV-V@?_>#F7c4v~`#i5WEfkgeKTkT=(f^_@0?urfz1#Lv> zu)S@d{Ql`Fq-<2_eRmzI=l2jc2iM4dGf6lyDjMuw*Hz1Wl1g zOpy0X?q`fo)5hZSLn$49x63(ScSO<0m*?kKhw{I8xJ>&tUyP`@%S4_h-HDoz5fx~S z(yKh1`0vf8tEsrYavL@f>HO{VIBk}49nUDmZ({kLB2^j-jH~h#+kr5* zjG@flYF|y3nJw=v?swn{UV}L8Lra&Ke89&;zH3I4t&dCaa)Mbsq`<{;E5_IGe0m2hco7 zTdYZ^T48t}?XD3w?*-RKCzd$O!;uw${W8I~cDqXjKsex0dH1}7J~rqG#qNH9oxy=M zm`MCDY-$yT+unH9%Pf8QA4o1XzwB)wjy7xt&YTWsjW*$UAwzxhCG&$fUcN$R|JExs zT%jRL$7?Q|(tEO}j!mGuErZM+n`09}VeZ88VWsYTdNAd}CID@Jn5Z0|L@4o34 zZ{~2Iubx5_{M^yG3evzg$n?rDS~q0e)1Tpt<>ZY+E~n8qu6K858eOZymd zUU+%5lt^~={0tAzvu7dIc9PN?)d2#t+vU-Fh(caxwK(hC8Q{=IR9Vf>=Gdf}m%e<1 zciF>B9GG@2I_3b!Gu(1O7F%MqX!dvy$7zKy8%b1kgM`5a^|RHok_TMkbunD4Nnt5^ zND`PwVi8cK$1jp;6Q+h^hQju69Cz8BotDROaZYXZ?n;`yHVnxRP=(>5ecBD>u;emM zqk#Tc?hL9chvnyt5HZsX9& ziiSj;DuI-GbFggw66t|ng{1&?&#grv^%HR^^mAp448VOkc7j!J>Y|t&`so-EYf?!a z3Qn*w=r$nBy8-M2RY-QxkAA6|<;BLr_YQqOcrnCS`1Ga5LKn=@1Vb-%Y5=mvW%|jQ z1k37>E=(}328=n@>owgK9tRj2k7WW(yRAvs2Rdqu&66TDWs;5s1A`D`J>=D6Ys2tr z(`n@rn2t=0+3JcPwd$)mr=jgEn5JkpVmW&0Xmjl*W)k;GaT?zc#ODN|yg4tQ2;I^y zz5ce*DM(dWr?1Juk#st9Q2?w4ov2u=i&hi0Fs>T;fJxA>UkC{GuzWI`&#unrm&;PB z>Jr%&?&+*DLQ}rudHQ}?lB6Sb#R)k9cCZlr7AXxPgZhY_3eqU}XY?vhzDBTEQYWm_ z&Q>0#-S}yvBgd{^f^ND*KWV)L%s3N!@wZy4JFL?jhwqt+Z+h{G0@X{UKI}oX&emd%ipN$go zx7KFiTWbb9v3QL<^CP$B`)e1c$W#8sJXTN~1?$Jx4Idq~!nyh@+C#x(9qo*#3sn}!E2%+b70cto{ zLWskq3c#Rzu!w+QeilU&3&`e@2SxFg9c0bcyAp_+Oja>L3Pa-}%s}wP!vZdhMrtro zD}Pq2L<`9lP&Nh$3_8(XN;iY`EMQg5XvMe|6^(@r*0v}_HpbaD9Y^7;c~n$sSz6?j z;~tUS6k<`mX@yCuijPW34I&W%K}Vgz}d{76_sEQ%z#7l;C~iH>m!g8Y`S@2 zN?25dA`MOTs9C*b`hivluM}okB!ZNKQeja=vzinqRwOT^b-rT#c&x&Wb_SMl+O$I0 z7{2l6$;C7T!^<7sE}{9hyQ5m>A3y3W1X|*Dllzp5YD(n z(8{GPG>u|O+GfVbPIRX7qx;&(;O7v>s;I@6>L00z2$seuWx+bm1u%3lN@pI}T%h?o z*zFSE45B|{BIZW`aCuw?sk9}b@Z;$cyG5>8#8xC}KFLwL|6sb@@h))Xf&<%_Te01` zBM;qGZ=pc-NK}3$0Z}e{TW}}JuJSYGUJxVgVUv}5As)|)wKlL>@ zn8|%)bPeXG==xo`=B^hnX4fQlh@~UWIC-Bg9~ToaIXe-;RV_U$Jr1kXc?w<_({9md zimS|-YNaZ@!Hw_Y9r_otsco9bS%;+$LXysRL2 zJEq$SO?@m1=9>OdPy+kZ$Vhm+md$t9Z>s1vW`_ZC&#W+%A>}LcI;LUv!&V5$l?#iN zLhTt?C|sLig;CM9YQ!@c=c>GZgbm}^`GhNjnF^E(a4nYS!GP#_Wo%HDq-S}G)Y$-Q zlC&>z8EP67xGQ&d^C6?dv$whXEU785tB#4J2a;2GJ^A!F=~R-6n`i+fdrU^1`7fuq zE6HufK*A%_1U z#PC0a82$%|;lGm@{<{$3&bN9iyczs*86$mUGK2BZZWdKxRk?%;dikO$+W2(i&KBm( zw8Xu&?jZLK3fC&v&>$*wm5@Ie8*2H>e$;5&CoZpkrc|#*%M@{&*45YaEo}TQZ6m^u z-%@vAl$U<1ratRhFojjeKDK#=* zygOeWVZyq&x)AebALFQB?J@0G4uM;M@@F`GFg?9Wo-P-#n7qLFXf;3b_AWFT-sW}S z-yG>c%hk7Jrf<7tLZ=Fih%F+?-*-pi za9aeVBf3F5>qzWk_JY*0ATHi~cXIl>tB56#6h}Gm(GnV|r7~62GSsfWleuK^DifLu}(iBMGuwK?_ zDO&QVeDcFTfBxT(-~=CkcX7G6m@ktC3&k}W$ce$L&Lx);3 zCst$3ho|A~Psgjh;mOc?Z{59PU4UN)_STlvFkF5-6T9mU>_ZVn++6145M0XI^5Z;? zN=R-JKfu3&0QnQxSx7|V=r|C_fPcE@aBDMxle@Xjp|r5Kw>94T*ADZR=#oZRCB)q@ zM}$*xXH&dt+fb}0zWfv?{Z~GK49&G`+pkl2-xha(nch{yHhG`uSoien+2raCrf3mE zmXEy~sQr9ytHx@nXFkwHjYsQV-PM%`sKAEA1*6Y5PBQw%1+vr@lU(RhDY^gPT#1yE zR#;*Atm~DN#oOaz&C(E(dk|rE$EVycS<-I#`@WXL{aZUcUFowCY;VK<>v3crN!=nL z6m8}ocV(z%^JagT5&S*~i0b?@Ho6}cM-IZ+5_r@b(dg8W1Y zjo(aL*E1I-RV)dVC=nxPIH419mAzaMx8$j!IwZ0)Xl5?2agnf$Er*@|UY$bb3pG?2 zf~=$)?nU%c(>2Nz%DzZ*+*k~BG^b(U%S=eoHD_>|%#TQVTL>YS!`a*0Fuy#M`V^~r zy1kU)B+4&Bf*O;}TF-5?7%(UBYDl#?7%z>J)R$|1`}_a4x9ch#$fb^~{Brl-zut9)cb|U~Gv3<14GqMwM~~blM039_Lot=UZB9}6 z`~uO|#aELvmxGM)7|!MIKUmGxfI^()7RqK8`zSqP#A{G<3Gobc>x4kzD`FmzIq-+9 z3iX=>oYnZgspOCMi!B#ZKn>eaNJ@({Tk= zs4rt@1JcouZ?2TcHdSRRqMSIbeE)&`eFCU{V1azdPdnU46Rl7tOWgrn6&esry1+8xRhG-scP1r`5WWYOBw6QeU=skYhfkIe zjx=5u8#r-rvxGDmG-JbrgOQ$(r{}0s^`EMgtEVBoE~bdB6qu4%(g#5;SdX}2s1yqA z1nj#W{E9&cATHPgpK2`)|Sx8zNPs&yX*qoS^BP;a3+;G)6@^}9M0>&qmqk`A~ z@f;M!jqje$zL5GX2m=Uc(+?_?2t#>xCTu3kk!BsI%be(igmzXbSSES~rbea5A`vg$ z?uj;`H?d|Ci33StU;nMU((al*u|J=bGg?#+^H?|6)C5Sy^u^IXDfF7nbCN;?N6%Ot z2GZo!{BD&%c+op6tTDX7^5WJGgI!6|;qC36SFc{~J^cFB?$Ps|XS?dMSE_PD%0gVU z7jxXIoC~CM=2L`xKl?|C`6>huBsQKw;O2~f{OpbrG?i7)1#qjE-j=m~K1n+2oJkJ_ zuRoHK?#P`oT^-5(JodyATV6{Rxucv2Mk7OB!Y#crrPfVRl7g8&R$%5%JTOU_j&3M56-#px87KK)}5{}j!u`Z@+;h2-55fV#rxfg zgYIhnFy>9QRxVn&@!0M!cKK!;bg`Yd340jVTd_12OSS+&%X z^&G24w>5Mvyi;U6o*3{$>jr-8RbZ`UNNVPg1-mL0DT3a07MF~ph@&iOORy?fO@U=4 z#5pC7d+W>?1W#E~DuyGRWas@skx#PP`iPq+eA^rx7<0$&&f^%Ym31%psbDh0mR~Y% znO*rMOr0*DBj5-4(mQ?^%F|xMxL;ytCx7ps!ax#K90OUKA4ET&OwN|#RL1BY(p@AX zDUp^2P%|=M=25mFyj47#iONuU)+J#4tyZsq-kT6Z=lg!4DjWh$l82E z{+0h*_LXn4{??Y&JOKXn?Zn()_AS5HoALEbe9cxYE4d1v1YvRnOL_RWOgN-BUO^hC zLfNi^PL;MonL$gjGIeS;_7kU=21cwec;!ClbNHZgqlmF6xg#JI)#Ym*(9Y|ygR&Xa zbS;_-Z_eDnLR(?|1M7tm(BC#XsB+Ctux6`;=aPg#?8ex3k}*xXoi|{X-YN{JQDKl} zSrg(p`+!F#X$gJ?upxn^-FV(lSMR6G4x>rl1J{W2Tzkh!F!f=8lan217~Bs0jjdfU zO@+f>KUiUH+HepU63a-pNQe2oMvu9(Y5&5D{SFRK@XS1&}>l)-iqL6mN14RD;6@vCw54OZeA8@zSgN^<5% z{j9vK$PpNU-E(g2mEc7U!=zNMnG~EMVWT_ID{BUT5u9rp+|>N+FV?g^`^9wqSK||I zzoEc>cyYKk!E@=2=H9Efdj21$>A6MR#+jalMY}_%aaznj_En&RP|@KJ!pLdNJwh)RDxN zM*n|>Vy`{6k!+m%C5mJxgQ7y|tR-qqZ%tK{v}!vtP(`HFzV*;4>sOH~6xP}gD^xN1 zlC0$iU$9&eh&8x}a(bN9({%triIk)p#4umtJNv{TSo!mH%U%gp226m_^xO=_SvXls zS@HxB+}5K&Pn9MKJoB$l0p;s$ksu9b^hQzKYC|wlsyn_zx3uCApywS-5%t6D;HpD_ z=lM*0Z@BWX7dE*U%MaJKPK+MK73-#rss)*vk(C~prDD|}7uLcD+m?GX$xfxaohb-z zYYKM=y>gfFRLa}8m%DU^~wrcR)_Ih0i zyJNOqaMP}|iq)k`{FC4{-=7;4sf23q)Ff!o3o0r=>>k_9l_I3(I2oJqomaSyE_~>9 zTIf-M9YGjO^Mb<)A@SjxFnrJ4JsBfcap_f!8hR`V-vBqBU?QL9^=+NVf-sQ@B z8}Jv;cxnmDmkz?+4cs-j^lbbaAkg(*S#xky!dTrX0{vS|A6ZKMS;OXvD5sgr-9irIv zk(J4dYmlwf>;t>F2KwGajzitpa;t4C;L7d)D5=yLL6V8U!K2VYO|>RQJjQC9FMKR z+~sUub|!<<;?ac}Q&DV3a__B=*l1+pj7-Sz45_;Y=+Nu`V?d8^#I87Zgyi}-R#Aog zA(#T`JD%Kd-B@AR-j)-HkErh|Q&_PY?2=g)Oy<`6ep};SL`ISYZYjGcNezDsBfoSk? z3P3vOA6!h1yXCv-#m&rL0P{F`ZUewCp~J%R;OpFWuRl&P4@`bGFShrs zXW#(fm&fGW?)68`uzQbFfE=b-P1#iA$G&2M93a$9y>S zWYOyYJ0d1nh{O61GW{3RWp@^pNMIdyR-AoKbMQ&xzSUBaqauZ0Vez@r${Tyb?oxhF zR{ILsn>Ix%adzsmX>Up58e&K=X)9<_Y@ zaa#>Fo!F<8rE0=i%qgyUlYKEvxvCeJ<&>`)A|`)gmAo(s9x7-C5zF4zmb*~RZ!tY3932f8vL{r04STEhaNSal^sRmmJ z+@BMLVjw5Pt#x87t5Qt4-OZOAf3cb`Tq^OLD=7hk%vx!E)~(*nPYAgs z=ASqxgH*LOWgyh;&!^KehmvysHhB-9t(Wb1U*Y;DD1{z!Ka}bQ2&tVm8%LS2o3O+B zD?4j9z*YbYIX&=!A@FCH9mT6(XGchfSXJG6J4QrAkrNrACT3HZ+ZT+m&n+_94fN#c zL%qJ;NpZ{8sBwt)Bk2WqQvaNiuH1W0g$sMKbBQeNud{D7rtG&2Co1V%P6-IHZ`0we z+Un6}E+QOM(<1CgzZ(nl^X`2ytH^phGUsQ!>Ehts{POGs*+agXT;P(oc&mjm7(Gsv zpYSa&7hTUrK3r<`-jB_>I?-nZTR9p)SYCgd$_2KBe!~lFPLPVKeuQB2l>X8F#cDdA zP0qs5vNt>Fen6E`lb6Z4&R(W+qk|xnqe(&o8Q;z$T$46ELGC>YxKz0R;G{d9FtwIX zV=n}8?_i&$6KU@VRLpP%a1DV_zPHZwfO;TpaiXr*M0KuiwR zq%BtFog-N%RL*$OqHrd2^-b_8VnkfcS8T&tV3A=SKtQ6JPfR+%SlVUsYvHt>#u6QV zN+gZ8$<-coY4xnr3$KROt;q3%E$b7#Ao;xFVY=}Ey3teI8Ah>--a63mZ+V4UsYj!3 z&vY3ulqUfHTkKu6U6!P<@xzl zAl25L>8d-&r7qEXRz{dsd^kxY(Py|9A(Ns(wC=SfNhL!i5La52EG5>dI;Ovb&SaQ1 z8#26tW$n>Zhye=D-%Fs9qmil$j>&h6q$*DV%`aD0z1bcp<0oo?Xtl{~K=A&94*S^) zH2*s7&Q4->o8gR0-hz17w%( z&95%4y8oEongT*)gc;>&FWg(FB2!0~6`Kd;8lb7wj=LhCD!rl4f^ud)ETmM*?3E?hQu^-_}c!CPrYo za|}tfDITfoi;KY?U3&M2?)Z}PzTMeL6S5A6q`dU|rKW`DZBvUmHbO6X8x)5dgdkZ6 z98fMT@qEd_(Gab2%$QZR3Yhrfs~13icDRF?=oOABA1bLgm&dr@S&tlN@cyg+ofGQb zMtGGG#k@%fKwt8E=vE_KC1Nj#h?(fW>WSLmF_S(F*XbK&Ri^7>Vk*2|)q;|yen#Xs z>E73503etLkplZMMQ2)->2l}n{p4!-s#}~RKj=y>-0p)&)S}m_LIU5q0vbU_5V-e4Z~U4OBDEJ(29`Q;4PMz6sbP4Mvf7>?Yii*4N7Z*ECt){+n3$=ntRD_?u_ zC^jSu(|Kmr`$O*NDvT9f-G^{ z#C$csc#1qLNaa)+&&_Dx9Kew7iM}8I+M+}RH$!auw=D$_ zGo-X-EjOiW-Iqs9{Abf3U5}snlKpn5E>D(fYGxG4I8vz>mZM%_K-qvXC0d`ba4ekN zZkh^H$*~}@g?Bd|Y<#Xl?g-N&Imu$W=Unji#X+8o{M&T=e4!F>^u_Dew^ixx; z7HuhEm$c1nmk3#lx_*AvvND2sn7Q?pDvV8rhT57dAH{*Gk?;MMhRqAFLcRJxFzDW- zK-P=r2n}3JCrZJ{unsHt>IMt=PvC}HuSg(q_0)I;N(@DK2(%Oz-xUAmL=irZj`R>h zoYY6cj0yO#?s%$1`5Q+UDPJ+_Y}J4IDbqjt5JtOx8peU8HiBN~V^2_mP1U5rN1z0t z4^6KXB~pf^$R^Of`B?)+ZG-4F4?&Q2p(r9Qnq<-u1+RwHZx~x5h@U&SlZsmUOI;D& z6srLVV(3=NWbr)dJ$}T6bE6@ui((IQZySqXg>?-D?>`v5HAb#=qBgj7h#w}$D@_QA zJ=P4?WN{V&JZ7uX3LOq>>#cFl(MgafU7D1pqH|~S_ub-ng7v{i+{fYetSn7tKoZLJ ze+-&cfbbo8(PuX=oH4qrbm>#QCDeDl%5So}3 zquLy%ge+pyqyrXb5eaP4!JzaU2MK|dyr78R`=m?5Nrr8gEN<0iG6TNm3f+4v} z!S!ka1Vm#nf?uIUL~b+OK%S8_YRaN3H`H?N)<RK7F-dTbZgIVV>I-P6{3 z_tlfmgb_RNbLFmy+2nGA499bzOBuz*y`YJ5E~{Pm=^-97-d(dHmn?5&LyzZ|*aDN= zzm!X@EaNpYccSOn z02a`kGiZ(&q)v@}%Tb$r$~rw z;gOmO#(2ngmzW$9CT4@D?XVwc!Xp_d%Mzv^0s_u445|}Q5?zfXA6SdUvXn}SrbNsco^T3Le!mP`u4>)mq1~`0%M9$4(!tE`*XZlpZU%irZw@-# zRe?s(Ws@xZ8=hoOYO@vnLhzmE+U&<^byZ%X5{paNG%P3Z3IV_73J|&^V+Dw9xF=BK?(k`8YyOXQr(7f~EoKEJioEqV(l ztS>z^5SttEQ(6uStC%8z5!8-hqPJHiyV*m+BC-rzG{7~FVf+Cn9d0=Jx zge5%8&>di-ppaDw%@C)0ORUyrAm5fumAOb@H0o)^Vxq5dMblPf_ z;+S1RJ%qRre1(?Xa-D&1x-a6|(9;TCBUZFK@mIWzI=KJ9B9kHZ^yM2wOdFFopzAhki4?{)@>1wXBSRuefd2@Q6w>_%=aZ{9497QGWF5zk zy0v40NPqtFA6M-YhqRknl~yFbGKTd9MMue@z4M}#j_hN)0XtJuUk{-~kOLMw`o@ zcW6xSAanx59VWP1QSP?LaJ01PbH^K0&~1UEXal7Z1XwsjA|;e-Dwd9xEEcR9h)9n@ z(O^%PE4N94_b0+Tyz8}m2D-&IC}o?n2>@FwOf6Ijmo5fqSw{q`vM%K74tEn*_YS!3 z27czgA1h|fm^pvFF}d9RTCG*Dg^z2!_2yLM+PcHOQB%nJ{&8cIyjb$4hZDyv!cLh( zBHP?ZbcCLu)YZRVA{Qc3BAw{%rE#^Mpadvh^o{wI)`58j`*js=7&6!ayWJ*_#zqkq zL3?{Pe=|AreJxva15pk&6NunS;;@77s}K-q#TLGmxgrbX>OoXgqwsQYS`O*QsiWEr zi)rVigQ6;8qd2Wijg}yrbtRypVO{Kj=6o#PpexhV2;DL7dMf`nSXOYm4)IY49udm9tfzK!NLUtVMvQ%a@3I1!gQAQ6i0zJJ=p z-@7y9u){hduJG8y5$JvD;K^qzq^g+WZ7f-JTbD6g9FXiz>F06l19!7MA^}urI8N*E z#cmaK+S#F`uT3E$$UgD$eQ&UyvTz`yh~@JL;y76v+QuL&|B(u0m81c2nF~Fq{T`}F zAWg>-WY%oRLq3scxdeV(vVdLGd>%j7?xC<8rB)}C25S5v&NuRo$J|tf3NZVpy{1ay zSxAsOm-$N6qs%LUbf08uB8H2TWz2QJgp&ja%ZCRv6mC+K4{X7ZRRNiJxv)7M_47^> z7C+MY8ay#JZe6%lnE+C;_U`8^2@1JIR+S~8N;F|k1?6cf<%G&lY6|pOt3B)PTF6Cv z-Ptnted=wweo;@Xliuf^DiWF@IR=*2BL&aBtA+5ST(4`H+@&i|2I2+D?_kk_qC?M;IWBXe(v;CsPEAeI!zhzdBmL?AK<@8zHcQ8L+&ncmz7Kn0)HwzNc%z}f0B>A@D)}QxH)VwZpq7A`@ihH zdvjbjk}vqbKSgKq`ENaPEN1mG#Bx+S*8AuueXJg7w3_$OwVuHNFH?i?>8 zh-;?AQ+I=8lJOEHj8N6-k!WAZA(wD2$KEM46vLYNzN2v z;IG-#oXSI5i>kH7*=fwMxlI@#+T8(XF$Qy}5=3HhH1YwB4aCA$*2*Qsy_&$K7dZ88 zb6L8+J4V+&iX(`V%?vk^;5RR@KdHz#)@ko8yGemp7pm&LC6&NIj zY*mMdKDqlhvP0M6^kr>roBREJy5dbfA8!hnw9?g_z^pT$$Pe7oW}LBPexE61Z{?-) zYF*nvU0ir~KPvdiZOE9;4KzH~OL?suBZ{i6XT$^q#CAuX~R^3%3`@Xlbbu^k@58zycqinIeYkVEQ@f%YPMYA$~tyB zz4xc-#GPG%iHac)f|oTtlmU?PN`ilMdg$(~p$zizLu*+I&<$elk&tR4wM4MuCSa8v>eX0}saSR!ZQSO;cM(o5oA zw7oIN28BkJi$tNMw-A;g_CtvWB8xezMRa8BGn9r#KGq5{ob{y*za~QdB>xrRp2yo; z(v^C`LB=vZ_G2JIbqS=-f1HJL*%dJ@b-tQ^&uflOg3_9RvO|+_8Xi3zK#%bPEiqGw z!8plRc%Nr2%vi(uYyFv(?9d-9ZlTSR-v?%4gvjd;%H1j)>2jL0b2PpLFg-rjNWPFI zX8{`*vP~RX7PN9!Mi{Y4jci@4Bt!x`Dx{KVL!sb6j>aVOo_{JN9$;v301Ttv89p+5 z)4oZ#sN}!vz&FOBb|YJ#gFn^4Ihs*r{wzq9`krJ#<=}V!`md@?{&n(KQGsb8KqU9Z z?TKdRXJNKb<9G7+9A^^YZn>o1+-4vWBC0a_jbVKOD3C5(xxE>|!yf3Cq6OBKsO+R! zX~4AI?|wHqo8vN<)$ADjHi?%7JiEaDiIsmFh9GftSmHw(W=6=ChFPR&7~KEli;u0pJ=Czerk={D9^jeDU@RZidDoeuw+h{a1(k zZ}{KQ{wujVo?3{AOef!Cx_FEY(Ykew4NWIco=x6NfWb*L zVZJ$;Z%AP(d|JwEfC5grF&L$ka<>iFX9{1p6EIUYU;itz1BNPOy=L5|r38}_zorEwRPr68Kp3(y)94)o~s6 zo5PTB+>v!6>3e>Kk9T~iXA#>fhuN5B%!q7<5=+n>k2t$ooBCy-JRNVK^n&KW=L1pjj%CD=L@*k%L*fy)B*c z<>xvNEG5x+Z->dBjJKPMY#s6spL1S~DJV}b2c54Z%@W#f$z+o*TbNPWZA>j(ghW)I zXJFPTU6aw+m1fuQ3m{DB^i>@Ntruf)`Wu%(=GY*))~VUQh5%@}z@yjJJ)E!Bdfx)| zA`Rn#Os)+IwHgIWpuJDiy?C=8UzMlf**a)MMYht1A0@%uIx`)}P)gRdtbcx8i`Fe` zUXHxu;?}+HohcsbGq=W%*<5;MSE)!2L3&O#F*`dy#rha~`_1&cdjBl0U6$pXvs;ZX zfz`QnyfiFaE+@3jED~5?^4ID4d=f{s2y5q_Hrdlm6QPxZh|73vUd+mv=E~Om89Ceh zE}Agmi`S^}T5jt=-UPmf*)YSeoCUB&bHZ_*9`~cG{%RJG3#D~Wc!(fwF1xX@T(Y*o zV|P8*82Ov_n3%u3iW$nWA`KB4>27o*UBx&h!jZdxs%A|ftaU%^v&*6lA`OqzL@WA; zv{)WcT>?zp+4NT7Ed&$Ixf9DBFR{tzMK2&MTjlFy4LMP-U`7s0OsVMxm`mm1dtvNq zV;$a8IpEA*oB^oJxaLjG4{>D?&V)_`tTSfPtAPUuQkjsi@GNPUD%&F!B^Nx!p*lEs zF+JOW37((ha&a8VVo&Q?jK-=`H7ti=V@>+GfB*||gGRD9SkguYp`GWEs&K7)_Twh~ zK7V)qckI?dmP&erJI`@c{EWLmj)YrzW42N&KE)1W3Sn<^!Oe(5T)wr=9`!oV)49GX1);fC-=6}^2^=j>Fv?QikA_c zUg{ZYGdT~mM8gW5^01%dyp1;!1K^TU4hxH9I{4SAca^;7%4xFEG+TN4gp> zl27kIVk~dYHxe*;wD@-M-D3H}BBaDVp8e1+_;9)Un;fX~_prtoZx&Mdsir?*#yFoih!jwdr+p-)X1J;vDDX|p_?rR{1rP*fq~N;)&U8%c zX@RZvX7i~3w&$&RP72-1f`dBx(akI;58&Yl+Oz=@D}B~FRRhoDC{#l#WD41&Dgv-~ zW0z)PO+h|zn3F#7`C=J^-d&#wLNXlC*mc!mE6`A&4LA4gZ}@p=ij%9nC%(w%3M=T| zBdA}?g6aC651GDQDWMf_-_~h6Ru<;#>~QH8_}=VUokGadA|KV5){7=sK3k)Yt0x9*x66ase7t>Sm>!2dsIh3eq zmTmpR92-XDbvkh}t6OCc@g7iI)QS1P{%zHBG^^p`ry=eZ;}MdI6_V!$Wf{|VP} zYzo9!fL+oOz3y1mLmT)<@=Y5f(PRk&A6X#d(Lu#s1bKouH6-c71W5)*8FPT~S!%v` zEy{@^*^xOYB9*Y4=}O#Jn6`-b(vl_LczbG>*ue#rIQdZ{o`!n3qu zJlo-G-Y~6`FsLp`L`A%XS3!GzT|WY!Ax=@Jq-iV-MmISfq_dY|~p`XLAkGUdCZ&^SmNfZ^p251m2=d zhe<4)lq1m62d=pmd9QIiUtrbklZ|FEhR!D+rkWc@g0P|FFR98dU?j;IWskP-g@BkY zaHAli$B`KbPPF{p@FLS22gLvyn-G|cT>?1d^hAvp3+HgGm-fvGfG1wY(3$h@qX}4O zQujD*yEx%UWClg7$GQp6wr_);i^VBC{^loCV~OWd+s3TuV$w>+$7yPR{_$l zYe#!HAI}gsK0-k2n5XScAOxJ(S|CxT(6i}r=wxrFNQ}xKAF#R}r`HK?gpTNW>wbnF zV};HZROp1`0JHm9QU~*?d_nCRRF3Hj%&%}b@YhS+8eP~h7dwo+tlmmo3FL}`6DKn3 z=d$J=RrM^RDGvJP12u%0X%y37O695wrX$-KB6-Knm&>1C*Zs^ub>E zUXAr0*CSiZky~>~1{dpIV)+5Nu1)Nwa|mKjH|8b%<&*p$XGMD%6f^QLbptGjpTXLKZah z7o`Cf`@NT!@s3JV^kxK02y|J;EK{H-85YFn zoA`S$loW=hafhHe74}Ws6^u4#0_?mPZ~c*7l9MAD1MQ5l>+BLP*4x(yrwC=A;bxOK znCQ&Qm%LxfUu+W)l#0>k{nFhP7oud<5<{}aI{%`j<*_xgInC?gF)SFzx!}T+aQ?#p zBaS9mgcS#E3(aD2HvO|C8zR%Q)jf&c$p0oHL3-^$&(3iKHM;;DSEofi$XsbH7~SLl z#6D=PJQeE9T5nw1OdIZV8DgxJC_S!fE6X*f=J{TuIx^I8zAbGR?QDt23j zedUUysl~7xC<7PE2BBx3VD>(1PTj=p{nkdKE>`&%;rQOVRwPth8jlaWQD6P zoQtr3T74D8q9UEAT`|YBK`350Rx93Y)hR)2A7mQYO^uq}_;F6?; zcAUW{DF%RoGD%|xn2PA^1OSq4vZJs0O-q(J6<+~K>LpYvS7o045M!Tq!M(`$S7h|UVKC+rC_srWOT zlrvvHy};QFs>EZV>Cw^bd?T}v<8)pg$^`557i7ZXoDa0U#u*Iqof4rIEcA7O%r5qOUbj&ktR z@~cT??BY~Z4+d0NJ6t|8QaL$U6Jau0;u~`~`Agir4LjzJM=+Tv-CkCyy+d>)3Sy;@ z^2W9PyXoSs9u^5zEGWXwm4{yeBr~toFNxZY z7HE==WaTevAkp{*qhk%KG!$Y~ZLlq>7n`c@$|$Q}sL= z!xcQ#6YGYr)fI4O@JbEtAH*!L1kM55&4jZ?K5Pvd99nl=>nWxoy^q8u{WEMi=+LCm z^+;w|%-Cbhh-DM4wE*1~?2b|0FpNx950sX^R$j^tuK2pKn^)zj4CKe)Eh8jy!_{Hv z=7)3eISt>of#w&+vl)%Y@NUJkfpA_|C6BMkfmxG1POQ^I*zm`nutlDAv$go>wduv* zCThKj+V#)IA`huj>`s^BDD@{yCt>*^DOfuBSDX+^+g1L4tv)RYEb4g-eKcx!p_% z!e8lr%mdj_#u&w04ZSj~z!FLwrQj<(GxG3RK~xe)H#-yyG`?ll;tid$Qu$4euj(CA-4mU;cFOjJ-JR*nK59M{Eo6gSbA8lQa?%tr`rGs>gP`NYRI13RmlzOWDn9;q3SJjWYZf6%MPk^+K$t^c)O;)&tghdrOEd+_Xxmbz#0jH< zSLEXqicu?h!dD$%YG)eXy7Oj+ozFJ!k)Uml;9=z<$3(|kyH;l9N>|+S?Lk<%BM;Fs zq?Je|8@)t*96K#+BGKPYk4xDy4lPE~STZ?6Vw-w80gj% z%7mT=lBg$4V%&FyO_rMJE4*t=3AI!$hXju(_wdao?JUzt2lm7`FaU6gQ#)M*7TGTq zXDJ7O-Xv#g6;aXlVOmDbRCeIxtS~BVy#fo(>mHtjV;i0`$@(r2v+}xz%aN0`8&1kx zuM!Dcli~(9X`ye*Yg=1rsKk(DmytkCUVlz{qfMA5+oVp{o8h=09f{}?T%Y8Y3N3Nqb(*Q@;5de9t4%WvP0ll> zZCC#&$QP719DX&N9*4)T9+L~RozyYgnJ>gfi{+;Gjp&$5!(m45SVOkW_t*TgAOVf?8aRS_#M9bZ@T?RkqC!2rrO$k`pl1U#T2+UZW(CGz2P)=hNf)ky8akSf;hL!bql~9LHEEc=UD6!@YTZ@&aq| zVF{q|Z>Hj(jVkg74of-(Y?)<*hO+gsB z)0;GU9Ecjg;Q;7clRvmsNspNjK7-D*L|NX!DD{`m1gkXc>^QLEpRr^t+Ki^KMLo9F zoJRVNe8`wGrjyPOMW1sih^?4$Oix;|o%r(OB9tSO|Jr*ehc{zDb`J;|)}kA|@N#qu z(o}O6t#0Z|5(*WaoTy&GH&<6eC#;tBaSz@bT#mQ~DMlTg-C`tg{EeCjd@1Ej%!13z zL=l%2S%m;N#Jf3GtYIDCFTHaEmyHm8N_5_)^;-&yq#0RJKCH(N)e_m30&gxsud>qu z_(NDFwykU7!vb`5P7yT2)DIkp!*vQ`ba{+5$K*n`_~|ekA6cNL&z2915Sad&+=?6d zQLI2#9Vr_Nob1yafbYY(^Ff7D6+PfRu>z$KHz7r=@HnkigBu2`b#-S#GBj=h*nz&} zBP6N9USS@yYheoP&h15H33$8}Pt~ZIk8wPo&YeU5GR|yeIVgqjUGY|tRKP;by z!$_3FLSP5!Y_gTB95eK|PN@oTtaWy`LfhqPTtOePT@YOLM)bV}o6`HuwBhwOY8o&c z``1*2VF~{#itu5O5IN3Kj!YGr&*Nf(Jsv8A!Vs6&=ORDf+A zs#FB#MLPbxmL%bulLr~gs1E_3gZ(rE8^iOHzlO0I0VA~9xyEtGH4@+z3S>rkBY@v4 zcxu^``6;4?{?tQ}NHCtCU5cVq#{_TadwWmC6t@}vf&{Hwm+~T&rBDN66s9atiz^!H z9LcG6!7nm`J1-7eMd7%;@T&D237b)r#6~$OAPz6p2^ERLu1103CB>C_>Mz7G+R&)Q z-J<-?j~LggqrFTh)`)&c0XGdO%k%~{JEfK6%tydLn)Qz)>9C1b(c*sZYrRV>#qw&jUH=H{5&q{VTiD84b>>~&+krI_&rF|edCQZiv9y(S2KKp*!MYws zR#C4)mWzHV3tVww48k>#F$Md1ZHr&A#l{)2VWAB%AFNb8XF^pVaxG>O7y6*J;`ZX$ zFk5_(uyvP@eVfv2Dk$=jsU@>68Ds9c9Ofgw8yNnyPp&jUqDzIw@dTn^{9NSEuw&_d z;K`PUV!!B)C9ODeeX5C(`SDR7ssoiUzv>#5nE|#dwyM?uzpYr2I54`|`VI%VrqypN zR_-(}kcfOba{266wqm93fRj*!p}YqWV_rYq2^yJ-O$xbwij*rkI6Y#VZIDB+QmiX= zmZJ`5BKz(92-7;Eak3V>VWq6pAhtGlq8-yogUlCG2SPZiiP9J+r^dyn^r(B(jnuR% zV-6fOyX1#=%4AWT6iXQhqPO7WQvyb2az|Qd%Q0=-{N5?s^{QI!cU>&q^3sU#H1TWr zRjt;*gH0!^+&9zDQs^1RmnuYj!na z4O4|K+(<>r?VF!s@)cm}e)REEIq5T*P4AYqODXj?4jMZ@o&88D4+)DKe9Z$I#Z@Mb z!C6g@nTtEu&2zFRBCAZQL0E$|il~NA+Uj*^$%;Vs4UR~ZZRykFW9AUW#ib5XN-eOu zC5`w9vQal6VW_^(Ch788mBE-@;AJ1^a)j}tX}tTP`?wX8Eqx9r7dXvGG_1=Gsq5O| zx)WXwF+)lTjj{IjmF!!R6zO#^WqbqI#H5SdYtq9m?(x?56)%K5PMOH4;$+i6Ih0sc zkZD%OD&5fCe~w+;(U%N%n)~10&;;!S9VhRQ#XJ;SB7%;m+$n22wISg*lChasWCO$I z_;F1>UM^<5AprM4SE3;wu$8y26}(nb{%%_Poa zj1&q-YfCRGiiULafQ&X>8VevlTRp_CsOizWaC_7oPq2^;w?`w#;WjN236ZJz3_F{Z zFWWZF7x`Ui*+*XB$E~X%yK$ zGP4y7=}V~J;1TK-cHI!(55(y*utrpftY96EVx) zvjO^(FbmaC$Hu@r+zD6Ms#KvG9U)qJ?dZ{@)Hk`EpuEz!bj}+^>FV9&hnviJ3)5x zEsm8CWpZzd%dScA;6=p)u#+do^Vg1Oz0w)k1A9RP+5z0*>1C?rw9xkrQ>z5o5lJ; zadA|C!DEgIBW4{zaIOhZ7{LK^YI1&8q76aW&LHo-h%(= z6K(@S90-Y)SLX^iEnI}e-UyQj+w9luJ3frq|eL$Z(@h5g<_o1R_T+} z{3doOeiH@U-x6pZxPNMDJ=$+!GkvV~Zp=>PEn?V9Guy%Z1@zQ$!weu~Z>gD7IEfR6 z#B0!$VIYUBEmaJ1wI^vj7 z+1p5(LoW$5I}q8q1zj>UeT{x;Lu(Z9O#6XlfAc-eb@@==LtTO);eZ6$>;9Pj=6g)U zkbj7-_*sc&<(BlvJ`>R2+!K|l-z4*=yWe}ed(xOb1<5T;`cLMj^u=w^T`7VnYYir( zT|5>`!PFR&U=4@F7&oWIhy`K4!eY9*{CfEo_i^nV;U={yqAiy&y<#V!^IQm{xC zu=HV~0nMOTo5!eIP3XJ{Mj?1i^c)aztqi-~Dp6hxtIVBEo>$l_EIZ2yAD2Q!Dus;v z(k+uY_RNQO!rov{A#;paoS*2mv!)AdWEwXRecW!3lClYJM_6sz8gE8Vt^oywt4wDE zED$lz)xJd^x0;uf%N=6G99!|LrjYlzIGa)1cnA}55Gt2kR;WiC^y{ENSx0CPYq^GR-H|s>PEO=_&;Yuu z9V$Hb`AXq)0ha!uBmw#~s!c{tkku zHA`K+KF4`JCzmEhLNfkTala`mH_;^!h35T&_DXePBF{hlj5W=YL5d7F>XB=~B52Dq_<0QVh?V9lL|D>MwnpFAw?3)dD~ zbd69NjPS_rSz*3+@=O{z2*5R;HoPdKx@NeGMf!aJ z67;46f*ZM8j<%ykmn!UrnDhjm>CJrY9)u@uAzJEceqmgS)>_Qo6qq-L&i)!V5H0eu z8~li%u90)0Gc+5Ma^SVNSM>3TfGK^aw$?UpMzyw2xUhwL_PhPYk7*4drEF-YXel`W zUrpDQ0S<(t?jZl6q_emkiz>V!b()ioZ0Q(%01c9P3WAU7HJGQ4T>QG z1r1G$&3}rtf>u%i2NZ@98#pdjTF8c`PoKu@MQdEz=OD}iGI8ebU zJ;2HdC$F`fzi<(V5uIACADR-|>I)-pS&P5VeHCA()al0PPU@339AV4{SM74QV9+6HUSI(VG0bFbNMa2#AG4KKKuS*BV|5XX_W zF}mnZ@7N9YMNccKIEE0|E26^hR#c`Yd{w$R>N={PT;q7`(_>OGf>|mMNm3ZD-VKt*qg%fJ@6inO%`aTIeJIRp@r}3l`{{ao(Jg0XI zoyA;y49*DX9Zs3X{F(_XCvzNabdY-XO4!x7m-7<{73qqZb=h%tet4uoy`3Gt(iXA{9~BSwt)88>oT z)<$shZ>EpqJN`A9j8F3?`LDgM+#a^&&z;`tqE7}?wW%{71BP@R7NTd+Wi5M3LI>mRd<#9TEKUKq7T+PUSrK(bU@P_r-)jOmF#Qi&E-2B?l&gqg894OrHwr6$q#d!a<^D+L^We|eX?0i zzlT%Ey$Tc3NG<&Oi^=-C`8m$9o=xalh2zYYDEe+TJx+E|y2onXv5yY61VY!Zbp+z{ zfDzToqC_cd57HnxOf8vEyQ9xAJ`B-VAH3@C_)@Zw5fxzpU&{s=#r=ij59jafoh&aF zbX#4k^?_@M{@f#DII-I#yt`Wfl(%q&?WVnV`@_BXQ+E7nRh9dWb0V$a( zXDt4bmXw1@0#!ubA77xaj#{h}N1Lx=RrpPve!2m6aD?#!N_XfuqQuU zmldd;fsUSMqZEx=*DFskPFm^_*5M~Isw@NN{orfkX#V0SYV5Xp*K`22(j-^ihrEsE z!JfmqoJe5S^9u}B=omTvE(gWa*63to;NSneXDG@YZgTn{X&PIc`2X)D1xMykk-S(M zSzONVO_ycT)AI4EQvx6;)34C)e4sYn8FLq5&I&(H3vE>uvA1PQI3eP{aI!U4?o^Yr zvC50*6g8m5Kb;lU4PL?PC|hty*BWOym>!x1(D2Q{>dH|w=|{A^j>L}GkE!HIr;;B0 zgW`mz)$9xtEs~JF+E#9Pv3w>KdR#Lb%`GzYsklpNcs#?zPllE$7aYOZXy)I>QXi<| zb{QI_l`=6Aq(AG>!@4`4`oWAf%$Ak1P{Ii8q=V&;pYSI)2Q~f81+Q{gynW8KVVx%b zYx{T!Jtg|f%NMJQ&AUs@V&Yh<%fZ2{*VPT``!of2)23X+;WM@N?sJeW5G*GMg#~%F z+w8rp;=+vuV$$TglJ(pw`J!2Tzh%(&RGM){K8MDw5^><3%izzMmKB6v3gN_|7|_)t z$ABdn6`5<{#G;pXu@G>Hvy5J{LIQ(o-1Hxl50uzh=3Ke#7sn-nP%IA$teuK!kSn7B zM@1F|jTn)7?(s+Bu7^7muUViy4_a=QaUtFwRjHd)5F&=HC zM2d)wnZt+y3ltA@lk~a6eO|D=&ns-h$)5X06M5`tgq%{ow8wbB@z4kS=2l5fdTa*W z8Ii|JaWuJE{I@}Y?D;_v84ZM2PBrpJ+j^x@xmYh(Sgoz)sc~V4n0A~)dsDA4ne4rx zcp~?)5Rtvp+2ZZy9lEgItnmF{Z+htY2{Lsny?Rr;GR2#uEr4S@uDJjnO`ev^0T}-g zTr7!3h2dWT5hABQ@|sxN_$y+!xD{k^YyNhDJeOOiIGiRqM?Tb$8+wCd+Kgfz);~D3 zPC`sB>Ol}es2-Qnuj&S_Kvhy{yYE^f6{H-Md!sxbmE}d{HOea0N^IDI)F{PVSJIxq z-Tz^QgWmelQlq9gF}=-9K|_Z>&TAqD{B&;t;LEy^#vEEGJJ3L4hQa2lrnox>a+tk!qvqqGr#3( zeUO@x&8)2gQk1eHr^0$$LgLtMfhJzVy*N!UP)4|DwKPwJCE7i*8Z9)43T5Z>dKOgz z23IBlGlY;y1pnjn=BvYylVivsHz&qk91$IgJsgQAYDmnqbrU1s8(Z)fKlKyQ6Rv6N zh)~=x30Xt;;*R8PyBtE6SYX3hQoe+U^s=H!9jaH3rxoE*Dg-nf2Ob)?9@Zu%99vHE zE6_J4e~~rk+Ko2KIihu-^!o2sAnMqLZE?5?R3as3<`?}{VQmk#)?t{%?cKk9`)v9n zJY`Ipn-m)Cn`0l4cn4HmMNBAfkF9HtK;$R>?FeUqPT)zJ>Eca?W_4q^yxA}N7X6_> zOZijnItVX;ML6RyJm}t?5Z=RJ#LRjbdV9=maO?Bwk+MX1UPzJ2fW|g+21n3eW$A3T zdW+a}QiUSm!cUJod7NtKps%fkCV}P7h1k{Zg;Sxx@X06%O5?ahhsE&Lh5*DiKn(6} zuqIoZ8zR;xNZNkzBl2{PHeA#*Tj*nJb9sktT8N=Ya zEul>Qij}!ZXWgxPG%JL*XpK-poypX*~>WPZWWkXT;aoK3h=B;{$cQxU0wWYhqg&Szi%IlaO9DTe7q9QXj z9&YZ}G3eG*nhM=(IX77G^c`xO#$B2_!VM;yS+A`&eDty&qfXcHxJlbjfFl^T;)ovV z+i=XK>C@YjCVoP4?ptoNr|PH91SeyoW*JUly5k>}eYnK<%lYD1bVE%2*7w5`mk6Vw zne=c}ZnYTLZXv5#UK)1Zk5NxJWZsu)@Mp65u@jqTDmG zO+iQ(263YTmr~Nu`xIyHZ`FZ%>Z~g0zWJuAYAm#+jeEtSPA4o$ZLgsU$}J60lW=vG z2fc@*5ownSG$?fH;DJUuEBI_G1$Z@VfQ^dK)9)najhHE8#duUY(X80%H%iA22i&Sm z1J>pz_OcZyHHVxf^I!e3&iYB3gpQcCG)Pe`B7dztGFnM1e5kacs|~+62ur*zCl}z{ zperpYx0Q!+6(}wHauqmD-JSpi66gJD5?i}>`07rm8$utY{us3Q(oA3Phu1azQjnxY zl=QOM(;;mXU9RK>)-4-bCMm>Jwzm9zZBzxhOXo{dvn9!K!(tSox(Jf_eK-NeDrML?*<>X*Ty@3H zu(944!D-J7z&;qeMr!N5mg!b|bYbQ4NgUo~^dgXvy&RPSf@!c#gX`ncvt! zKUdDB3ZSaRnI=5hYKHTzS{=y%&^Fg-A%AUgJQf90aBRGr!L}n-<1|1_{`zKm`37t1 zt)5^_KPrRXdvZ^fr!E~)#$=b$H`Cj_(fQzE-(l>ouDN$;1Pt<%4uugvs>fmEl^eBI zx%_~A_eU_?*gK8P0o}`Upz9DP?h(?6b!}obf6K?dcxRO&qNc&ePanwDb{pMm=rP?f zR4rS;JMu(my^os|Jwd8+4DenBoo2MSLaJA)jasv`A=va^KFQwP7=s>&LmL^Zi$Z@U zK0siX28#ugzFYJxNZSy&>vAea3W~+08c3z^Q=bf}NaW52n4U9YmZlH?gKf?+Sksa*pt`N8w)>KMBsAt@W}lor1>b8lVOs9jn6|E? zZ?$D?6U#d5fO~U^GidNV&J5bwZb67bRavJC#`NfP$$b{`h+1M@w)#1)JXp)wYzKQNB4>!`kx5O_xWXk_$%mylBuAKOt(2j>P3urrm?NPJXQ;CE z-Yn_Xp67*Iciv6cUZTxmCmx7CU-I77mQ01n&CbrKYzm2;E06jwX8h9E8T#m$<}gvp zI`2+l%n2m`nq0Xvm{B^!t5gnRPHW72256mQ&auL&R6#i3pSMhD)m>7hjyEt6#|i=T_D)jzn>HhqlnkHzn%Ld`4P?RJIiqi zv#^hQS3qzA?wCro}_DuF$UTmH&Pfstffzr*k<#o^W7iyR~ zMkkfU3lk|bxZ*Gi^lEY{COGN})9Bnpo=HMKI0r*5(YXSTrc^Z5)yEO*j}ZT&MjB;? z#*hL7*j~foAeg;Xx|_|QYSm|1P`@!&ZZZMQ9*4N7pDpo9gmVn;0@_veD+Q*Y+)+^D zebhG7HeHD8V_gML(qN4%Qi|gc_HVV>c3Uls@NSmqr)1d?o%va^>o&Z{vFgv&mI_Oz zxEFL!BQYzz{)iiNt|K~EhMvt`l=SxyVa6)LVD@_wPg7)0xfsm9SHTse3N{TU=;xDL z3;pLjz_vac)ueK1uGtw@^$j=6xaNOq9*ug@5gt8o@|PI#m(8bjKxowZZ-YEn3i?t2 z8qAwu1vVIgQ>fBOPaNjk5Rhtg%0jpuOt;5x8&I#$mWxO=2sqxbk8<%EeQ36Dy>8z2 ziMI0%DX6kRdMA=(ZsYH{G*oxBGO9M|F!wL&tGaqP7g~$P!>@5f&t`sPhu|B3N991^X25c@7lK1-c-mu=C_UVAa zwXV0KD~VUVrt!rWU!)!?MPVSC$3i7ffzbIuM_M-sq^m;P{S~~s{q?$MLJxWV?d6ZlMW}*`;9AI z2Y*XnpRQ&{^EFPf#pzZE_dnMoaF4PqN)z3N7zAak^3#xmfhyO|f*zNg_Wf+us0Os| z-BH}vZ%4Qx2l?erAZunMNMXnv>|L48#HAYST_Ah@1y7CX}9jc`-jd zp7A=^d%<0l$80dXis`!#&dxX3M3K{;;P^?-Dl0bq;vD5p57U-ef+_X8wxs_Dsq|gI zisKB2&79zWIhtN*MmLsUG+(q{5pH4CgTa|+US0`5R9KjBQy@JuN8AVu4$lhXwt|+n@r%AzXjNK0%X#!!tZ{JScl+^;))y}}Rd*te6LdQ00;mu*#FBQCP_PAlftLEDR z;2jSk!}_rBVGS3DMLvTX<3|)VuFZ`o;MUG%S9R@WRfnC3tfM_g#4!aNqz_tgm zH%&SO(wKwK)nh8xQr>%S((4LL?qZ~JEifXYh7r|_a7-?qd4YT0_lUMjl$PPt0hAYL z0_utS-t<0$wdia#G#kNGo+6T$x_JW@T+Kv1nqt}B3<5F~w*eyU(6B(>qg zmA50()pED$UOLv;;*?n3$_2^#t?oiAm{zq_c2E<8>47vLnnE^A$Y(`h>`_=T3$eh4 zBQ#j)+T4)ngXj2IC#W*}o=91H*cmBHcm0vF;IK!3n=BF#30K!QlP z4qU7~D#;vMoDZDa`)5IR2#(?_9pe6NU%TBoRxoMdFaJ@r(EaS9>H_fO&u}zxWd1h1 zFi?&7wQsJE2;pN4#`UQUX7BBC^EWx?k`b=nJ=sKuC7+*R%dy15hDr{NJoLoqkuNEV z^yU!+Eqa7QZ5y-1NZ&S5_*MqF!hmBsUwqUt&B@$Hzm2+}?Z)(9{>2a65aN}Up)dPL zt%4fHwyc;{bClnyq0mTL(L=%j?nvd+)%VlW15zBZ5on@@gUF%EF$g?*ofxofxT<8n zAsQ41Hxjk@sfgP);gzbqi)Kqz{$&q|Y(0rB=PY8sj9^_SK~?TWF?*3kv-qV=g2DllnzIR zh!9n5&Wc%1LwZ4!r<4*G;Tzm`qpRYgd~ch>wPc!q_DMz>H9{Y^v>QKGI=QUA4y zXkOR)uY3Xt37|O$O1}Os5x6qKfIft&Qi=+1QK==%Z2#kb7%bz*$U#y>3j}IkygBuIaY7KewMFyIa(P-%nX3Qu zu-B3i$=Q#HlEyf+40Cti< zI?a8aPeHZf1 zykODlMw=2hh|leGfh!!f(L=bo1F;e>s)Y_$^OcDif2pWNtf?a14nubYL?PjSueV<} zkrS=xz2%1%KN1S^>yH&7zVGmJDM)k!arT%j=2?* zjN=y^ad(Onl99pAgP`=KJ?n^Bq5UFoxu5Er+1Z=fipOYGz`V5?fiZ9I{APx8bB+)6 zkKu*+p1iOp9ZY3L5|nfk%?eIW{Eg(fyo{km*@y@LMqsm~mytFL>^PS9LPpm?{9@Fw zn7=*iP-qPPu-USi$N}?X8U3`AaAENzv76@z_ub$C(bMUAtxRK&JGjbdHY+fv=cza_ z^}%^j?e#{`@kr-1jeMO}*=dyo2Lt*290~rCYc9QvPDlq_rA+q1RiRSZs30z(oN?7^ z3|{-F#+)8Wdz#{*SnEf)9vk$piMAD`*u0_Z-P&e?MH~pZ^3$PZuKE#?F^KV4MtNNF zhzQaB8Q$TN`M04P@{rX$GF#Y2?{KO~5GA8MIIbm$6DuRq_~hiEg=NK#ah!SrlL*ri-OjKSSZwQR*X<2$ujP=? z!&ged&ZVx$vo{xSu{zPYknec5K3dJsY5Tf+(c7oTh*P(aGebw6n8qzK5au-$a5N$-zIbZ|q|NKq&Y##@AAOalXHwo6{I!hHE|1eX3L)9hlK2O5pxJTfJGX=bKBp zm-_Z?oJ58_ZFw{1ADXwTdayZb5d!g09o*`FFhPEV;G?j zt0sF|r`J@exjYG?3u~4*S|`b@&1qK>LsX;Jx7ht99@XmNXtTuaIVDXrpF-cNV@g~q zFhqfVQv~CTL2FU736+C+|KjZI(m^s*D{bz&W@D7Nhn!U^y5L9C)kY`S9OtMnpG#np zPaQwiLl`$49nW4qI>uG@^OHGUe{mN*eVh&BRxPr>Ji5DjOV`6FvnO}&%otbXeB~VU z2U<_3D{!`d_^bs*m?W%NJ+p{`zsO0mN3b1{YR>%*OZuQ*<&YO^UQ6lQe=ZrZiFR$KnZfz$)Za zkFdyC&6Xl1HT&T)t*&E`h*zf96}OH`k2S8`YfD!b#mdG^f(hNIX5WZkh`f0U;z*uG zj##idgzOg_vSo$Twx@=*mjVPlD}&>t-bxq+qy$R*fYf)y6e8-IXL87fKQ`p?3>y%H zvP_BerO1R(n~0vzu|u+C>Cl<1hSAGmynOTjK$Yp(i7I}Q9&9&b*!i5#oru)mxIQ%J zX#|~RBx|yX5hi2vw+n1xTEenQ+=!Gk^}T@y^M>ac!>zenmHj&oMi3o+_r;56kG}l& z#e>(6?|$>3q<5o{o^JDU5_I+`^Y9!K#8cdhwS)F2A1g^;U{MCgPt7ZTw$f2$5iJyJLonaPX#lO;* z3Xh?V)mTWUWbw=gvQu}%n@YqZ3h{4%(`U*Qp01r=0z=Z_2kedr^nb z^KE}tqQR)Lu5j@{v`#{-%KSFLaq?XDIP{b=mSE)utz}dP9yU1@y86XZc0M-S_JSYO zdhlLeEWcb{ERH#4aC~VLG$s1e&tzmY)&D^pMcfqGnfz$+?c%$|@`pvBAguVuCv&n! zi7qnA@VC^XD-CIfywQn#`tJPx@+fI)KfaK|2vtjYODr@gfpk3PC{-q;CR1+2PcfSU zBK|-&QLSJc;*dXw zr(#hSa$}R0M9P*}dXJhnvisbphWHG@|i_RtFb~Ia_ z*baO>>41>Dw=QB(yT@6xR57-ZU-MI($g^yLu=QT>v2I(r-PIR?hGrE^wdxk^&Wojm z9C-%`q`Hw;R)iRJe8C4^$A7y(lt9c*F?|s3p|`4T7@fwn_LsHwzVh&*EM?QN7Ru5_ zNoUS~fn?&^JYvJ42=Iw@d+Nyg?I~lE29IKr+pmTcmbS`m%a4Gtt5aqc&q*FTqpxk5K_eEj9>8@52?HL-*rq}0DFy>M zPDMa%lJ;f5nKEkjj082nUaZBC%@>GY5K75pghFQd9C^c`h^)SApJQ}K`nu&*+_nWG zeB%`U;%6`RNlja7+J>8@@_NKFOgv)kfpb!$@Kl@TbD+ZIMmH#85~;24Qmclg0aF^5 zqksjF@q}!mY%O@PFpOoS>o)T6rUI#R9^#Nj%b+8;g*ln#w;a_Q;rkU?@Jy_{# z0cmkH%#sTxlx-7gm}~k|m$;_Xwy@b+Nofd@5uoa_4E+0ZWFKf^6B#}v;+y8s8IFW_ z)RetX{iE{j_t8%Zx_m?s39+zb5Egh$MGP*WDGxOYmrG}gJ>#>Xfo{!`*@+}S?Ca-S zYtxBQ&~9z)OekO)X)t=&H<84`R6T#iPd4<_ciTFdY(E#s6koD@H06dW^kIvKbJG#g zh<}AG;^dhOm$vryh|8KE-0`g|Wo#uUU{jH>*oU#DUvj((b8e~MqhiLQTVRN{Eo%%v zA9me}a+q_sS9MD%`?a%f(!|EnWPne(?7I?2ZXnoJTCC(`4(88enBxklX`;eaj0J4Q z6{GN~>M`evMGS_J%uJZ*spyW!(%uE?hh(Ck4`u5kkcH}i>Z2`RDIpGe}Ka^1<`22=5964gB8o>!Uc7EG6R}o6UzVH>62CRJO6p zL}m(;Soh&Sj!C3xH>{>2V1_nWnz_Q}ZD)<8xGH!y443UW(yG8)5ihYX%&X z4vj?&#*hw;r9XlWji5hVhek*tK_&L~SFJ;1pRY@YMtHgjCos)8g6^n8ttEH`@kh~; zYJ*yNhNfiMO(!DX=&kbc>ee zYlFA>!k0qr0CGp36TscEFT`AL!yp^RB+RBp`~iEV!erV(2+)xrjnTN`OyR~ z$dBNE=#YPvV`kdg07ONXQS1{8bYwiPTd1R`WtuY9fzd+Z-e^TKR)~O zU(Vm1fA-n2>>|VQ4iw3w&Fc+i>OcMfd$?c>>U?@M<8d~a4K7~ZT})3ekt_G7&ptzf z+XR^f2$SOX%M^?LlfDS$IiN53pSg*D`b^?i6DAFgq))2Fp(RmKM0{= zOFz$%$6ZB`#3|&KcpNCGWCIUG=8zLpNHBK2{jb^nip$HBvnBE*PUqjvPA~bB;BZ>R z1grH^Ii&LzX)N6~`C)l+dOTSyHFj zFwKX;y6eg%Dq2V3`!SXDdg*wVheX|1LdT|;C&ZmEhU9c$hGkLz() zgI8+Nlb84MeM7nT3Lg_*(&OdktLgdq4ACcU%0wz$bYaDx#N34*TyR`{!UheZPIGfV zBV=Oio#0S4Rk~%Z`|q9J}ss&c+-)TIFnFALJJT=7V|;;Iy_vP$tttEd|9 zWUiG?<&oSOkr9QH5IRrNAM2G<>U@hpEc&PC`Dds4Yx8B;@eOvlE*_$W#7M?~*C6mt zjbQWdENqP3Hmsdais93ii{VI_)>N0xZGLwb%f;o{@`B!4;U{k1t(HH?X2PB%``Aoj zhYLiwK>LDRe|^nVL+fc@^5uxZmT^!Vt8pk;cK30hA4!#SoixVb3ArBmniT|)T0nXy<2xEekGv;w+tTzinftIUc9djxPT@k4= zlj=y(=}O&fAB1>W^&yN;ml>k#aHef)2; zfBWPA{NwSzzkEE~Y-TSdPZ6i1FkraOJ!Ou@Oa2ER`Sb!Oe{^1JkXK)(O*4`rQ#_kv z+d0yk%ctwtvU*fJMpX0d>;JmIxnjkOaOPC`bhCQBnqgb}5z5QBO&+~PS{=g3tJN}w zpuJD7%l>D)(Dd-tf2&WAQ@ed7dW;if2n5a!WuDC#afM-)s41ho45)^RlbJN9HA6~3 zI|ixH5XpTy#XzhU2U*)<%v(}G9rpP=(5$G_Q4$$oY+2d6)ce zwl-g{XPdmG!+n<8e^q&Bky7qlFa(@gI2?QB>3g`3rHJ+P?QH)Q%ya%Gz<1cDqyD=1 ztQ!ci10h|jZh#d;<^7?g9O-lQz63@;z&T$$>Z{$bn=tjy@SL3 zmoHZ@UoOaV_(qY!U;fN$Ij+n2GSCMoWI#;|A4K?AcPO6j-#}yev&BA_CmI9b+81w( zqmbr$yTE6qj{#Q`MGX32uu;qlSe}G)YJ89wC`ahfL?y}ixc}A=>jWef4JvFu zk`$*fJ*gV>VfX_%X2wx71QWZ zF;7*%KIqwxhP5NDWQ5VJ@#Noejio7!gx-c45d)^tCgpx=i|-fhnCY@MG@)eDRw2z7eg>T= zE*;L9Z%gHMQ;*S-4Wse<0@JMTC7pL9XT`1uO;I!uVB?tL1h&EBi3t#ucr-K)LZaYP z3Vpg%8iKMb1{`B;ncsG6*Azs1uv$HSoQQSRRt-Yz>vdY_FIUU&kg%qI9^&BOx>4yXzSZa)_$F(u)JVA_F=57)d_yOQng|B&Ant zb$p8im8LoUh+@-fD6BkEKPE>nW_3!YX5zF$RfsZ7FVP-N(H0Q#P`HGd%v8R-B-tf( zE{F@#Dj7cIJTR=tL~8j8wd`!E_Z&B%&yQwnG&p@55@5y&Ne`12#4+5s3%nheyazU& zU2uS`(=)k~=IIhgl)gE=d~|kxv6?*$mzBtQH0ymoWlVYTP7}4qF(*c*P;cLU`s~Tm z2hUzSdhq=9y|3>+fByQ}gNI)~Q2mtYqh22dp)1Wl3h4X)iE~;_$vk`T;@f9IrG7Zx z5qLhvAE%AP>3#5eo&d5}^i1s1C)LP7dhN5)wg~>+A8Lsd#`QjqX75Ri8 z^LP0RX^8=|TXzswHf1dbt#7>XauEfCk$g{IGAhSw@hL{$l;=!+KfldLWg)T{)TXc8~-i z55&IQ3?9G7s(fbfI~LQx(PY{$?VfO*njqf_i~8T)!q&X6Vo$YV*O_LIb=<^v=Fh?k zCzh54@Dlwl;3whOR}Q3r=9fXxb$7P{w{Gs%gw>1W`5@VZk4{Ain{DhlW z-1Bdy3#=ura%b90iLUsG2~1nnbQX#`Zy5f>${rUG<>rH2c#4}ugTp1D>Z)x&%wg(# z6R`f%hb2RLh+!X3cggquqnG!&$z(3~1j)@9(q)~rbgMm{Vamk+@_A75GvgQSXQ$8u zM(^`?_m-!6^~D+!GWj|?zCYbe%Ti}&)5Y=2Cl{OZi%tH{Ja)H8oJquf;^0r|Ua0Dzy z=Hd-oTIbWsIHfh$xjO@mMSH1o+UyIa)G-93Khyk0okeUmI%&Ru#GJmyf#o4>ps0qo zsq@7vJLJ3xw+k{%pt(t{fQWk({)=u$?3oK@SS3E=r z4t=I1=nMF92t9y#UjO~UGl?-gx*we#r^bTnieZbewxN~p-M#nKgIFDQbN~B4{QlOF zm+ugIfP$X<6$t3btCe0Zr`)9TSJU;o>=?!l490x#R7)?@Q{?F$UqYrZi{$F89WUaI z1yM>4vC|q}V+0M8n~J!^qXeZ}=u{DXk!~vwbCuHuyT(uGy%bbIYL-M=eh$~6gJJI|q3mO7WLeKC_vu3J#VGWRPV z-ju8jRhQf+?$zf_%pc0D_IM#y`RwMT^2GqERArWVl&L6t+)zC?)$SEToSqI3sXM z9{g4`6}5xhT^xTb7pIqk2=rB`cdp)#YxU+tXZwiL$*kY$HnbVTLChNf$#fr6YXQtT zdp=AeeR{7w1OG}ghu~O7w&jgtpvew$2Xk3UL?D*>fiwTFv9$b94%guAjr)oQ?iB+c zNMvc{G6jjeH01^ELz+GCG66RX<$B-|=T z^oXV)N|WOy*p}J!ayQ_wjzw{0Z?VgF?-&taFx0^cJ2B@F*J4m?NdEziip22AL5gC+ zWi0vhdd4i>c0a7jrwiQ#G+7=UU97M$IQiin2a%I}X1wKN8@F@lT{0=@->=^1T+3g7 z)i7SkszwzS`em94x3`HrP>J8Du3yi1Z!y{VIP&bSqvdLKaSm($tCLXP*g<)`nvY<7 zDFYMITX~58^gdP>V2&5qV8-F*Zlldq_Ji?DHTs`yVA;CppyQ<|UfF%}6AdeI@h%p> zcik-Y<|emrL4nW{Iar&AaO>6m$9V_v_V!;*?)=B(|NK4nHp+j0{6FyR-#?Dh+#*Et z&CC5YoL;E-%{yq$f1eyrFV~axe1XMX;*O;r%t_Qon{V^ZuyJd3vB;~?m7u7q-x2(8 z2F+S8+-ur<&4h;4(>TOwG|r>s+i? z$r{NpUfx(b%+qe&Y0Q5{8qb81`0Ci|IQaoRr0a9Ss}8@A{cLf0PSG~)LLB%p$4-BL zJX^SBIBR5_0>ng%9pEtWj6^qtx+zs63avpTRIIXXO|=?7cpqip-l1dWxdsJ_X=dJ4 zr^sq*eJmGd%di>$V1ErR5{E_iVSL&_Rj$V|s~o}oeRpg2-tp{ohFTn7yH)ZeE|_bm zMApu+ue#9!X4Nt|cf=8HSie|?Fb;6=mm)NwyjVWd%Oi@ivQJQgV%iJ+%@YpaOpm_X zf0b=H&DLzK=h@>0xzSAhl^N04Y&azcKvVRJIb`;!vl1-D7cz0@GpIm$;7+aPovB(_z9y z4u@9Y?x874V{q$U8Ml+J#n=dm)aqW{J6~hChZXj|YSx47h4rG=7u0xLQOa1iY4s9j z8G{|BP&%n02xg#)_aBUBCO*S>W;|ZtL7B}!74Ns<`T16YHZ@quEgUTFtH%ZdaINMk z@>%>8`b{sS^aG#c$!fg4l0)I8mpLDG$uYuov5;dfyyh+_<+QOh@3FhD@rtG%F2LmI zX<$Pv1#LY?tAu;FPm1xaw=sf3G(h4>h>oo*=VdAot^zUJc^;XPW7?;-De1M?CI|#Lgt_5%KIEFD45vFKCZgIglrCUD)hc`sL3R7B+exics zpQMe{ixrCCncTxb3)sF=S&crYx`$DA-Lp=Q$+>0DDLSE{;b ztWe9hkg|VdO=BTz#N6nB91K0O_<;%phTdod{4)cr1UfhHcv$x%YYX%{rMeb9$ zeS5Yz!fHBJNsJ0r^UjKyx(o~!EFY;Sn0P?LLnP$;Gm^EDVODH2z+RJ%K}~}gnkQ)` zVN;SDCTFuL&X+>XE;j?|RjoY3Qq@8Ddo(A;EwdG-c}aq)y}PHS&Ygt=3xH9`{r zbc}026iR5h!y7Hrn~pj5&YbZGmoCMF%lVooA~qO?1D_O2nkVOwgTq2i;d3%8>ymkw z=75&_jey~6QeOQ&Q@h{e zd=b&yZAm`dn-`uIyN$EFrML%j>rOaJxf;Ambm<<%&Wge^^757On|%w#nfx`ZkVThj zsx$(2)9*t7B5p4!_V>XEadXJQU7e}&8Y-llrI~s7-8zX-OWq?He6m@V_EP7y5j(7& z!~`k$1w?VDeS}XHWo=*d`Fk_SvR@K?5wFaL2|`aqO5)ZuEtCa;Pq29QPM?1%d3#_D zACWZ{40_MQjqrpSXDz>QuY!-8?pRRpdI$}`Oq_!oK}X3e;|=2mg_C(;yQ7;`4-wuh z&R0o}V4qdfR-twMhNpICvLek+(c`2jVhm!=qky7Yl8w^w@;SH$MN__f%*hmr;m8b< z63msg8K1^H%s3r7!kR`h=rix0_VX}rOpwdSB@M(w61$;6hdO@6Y|f0~*~{op7Rf-O zq?2%z0dJh(L=EMBB}kpJ@PQOCUF)UVlq;MJ z)BJ3UpR$q_Z@b4&Hooci7jR*j#2kc%a1Cg9WExRy1B zq`94R(2?pBOo@Z? za(pDC+v#0BUN5XTMxEcb1S!&`CLmuug8mj&ZKjH-j~}+7;mVaSa&$!RRw^W?OeAW) z^79YFPjGXTpoQ=mQ8g2b_tjbqPF*Ep;>&B;s3k-R$e!9|#GHUc=0$;)J>LPZ8m`oR zmv0~g+$iInZ`_}A6N!moA3E+G1==?ze^K`mlX2NJVU!XklylY_DrEc+6U_KwZcF2Q zlM;WJ0*oytjjT$+H+i}BuQ)qs9%}Z?+$ry=XMS{=$0v_pN7c>fjTtl9qQj<3Uvg@} z0|^smk{btKU#UboxGm8vfMzad6LwajZo(Vt0(Qn}Ug3;kOy7;nb1WLkS#^6Wd3m2A zorJAS-w>|dBCV-%l2mV5(cz}QyhTfnmpaEmC#Tbm@&hQ zOkSm|A(CrIXh1_JlH#4N_UVh6kbcJ zDlMb(mR-FvP&*Xu#IC*eO~-jeqIpW#P1}! zF?Cs%Q+8XZ3h@YvWXampbd6jE7R3-%6mCY}LJo}AF&cFB`R0@%e%kK6DFc?tND)BM z2vq2VcP4fQCkR>wO3UrSYnj+2p39!9fgHnnS+zTNMzCO3L1V zGZ-V-*2BLt*T%@A2)&0$1*$Iv71N;NwN=Ht;jU86eF zb&~&-7JNJ&G$f@o8AzImvUGyydeeeJYBy-Ca#7R`A$&Gxx}E^|34$%S)P!uqa|9v? z8+H4Zda2{U^W{PUNZp9$K@o$JR^-V9AT3g}B+RR>d-=g=+SlDKug&|zUyXKx_9+Q~+zg1>P@`U|r%NVs@LmHvm^V#%uxFi|Gu6GQ&Wd%uprv-)AvI1Vqej4`7 zn%}~oS=kR~&=$DFp{j3u7rP59>2JNEjAnFX|#|IwqZQyjA0ua z3OQCdTpqc09#VLoX`K3X3t?9(jdN2hl4P2MBeT9FUW!!OW+jo25lQ$wF`4@n!o{i& zp&5J^$(>Ea0?BJ0r$x=d8Lt~j<-k3JT$xkzPk;UkPANie18%j!VP`Z_N1N9h9J$YY zsz2QL)62!nMQ{xd@qM%3vK0HI&_AzlN&)Kd>_NzVe&F|lud@| zl9Tr_wd9}If13P5+sxSD1K>pBafvv`(3`8PHt-76{3jcc$l4yXV@@$<98uN4GP@y* zFlo$yNKC=`nR0Gi_h2h>rh)vx1FalKg(1FYXX~*Qazd4vUZCEn*~PvI4-MsM@ijz8 zRKuC1)T8Wg-?Ll_@4SCw7wfLB~_ls779r=*DtwRR}xpc{6z_Ib4;acAJ@qw2QQ~WxHhIy=m{`%B9k{o-7U=$5^T;{c zd~+i8;Bk8bqzXYd{XN)`^=!>MqE&0y6Bfwbi(y; zUvS_p;<#Uh_bBo!uauWNLc)PF2%+^L#kO(EjO?cl7#{AS&a1As&074lohyB(|C?U& zPx*b%sFw|Dc#OeI+GGq(BgUqNeS8xEiA*v`-C@es$QwnUrQ@(^s+5K;Y$C5lY}$kqV;#=PUO%Iv-a9H8tF91A^c}QPB`LFDVIwHYoxCzqypu}O(sCtr3nIx#CR!4< z^e;OT$;jcgv4c-TqIm8~8Cw(W02R4YqptNR$zp2XkG*Rx zg;8K!%E~070Z8hz9Cqmhs+WeygZ^U+HsLD;Ec^#Je>4iP1V1JW`7e7OhDN~+>)5D5 zk*5}qs0^p3C7IBbhJh*3U3WtLO3 zfwfe{2i1h*v+0fyx;v=~LF>8(0vpp6WDecNROxVkc09+t;@j2fei^{t9mI?I<`l=7 z77oLBI9!!^C};Fv9f<50nLUsNo~uLI%+GN@(2IAo`_s#-Lm{PchvEm2HqSY=tkA3D zB=NYbSI1S?n1xDaDxJlv0eTLleTH*|9ivqG3R7R^#r_>^I$tg%sJWh+zQi_O4fFN#=sS(^hF0j&hW^Ss>02!Q2v-M^ z1&@pNVvY1(YR!I}9bLqOGC2`jF3|AF7A#Kp zTTv~`AMWwJ^I?s_N4Boy?Ri?RSuHrwAlCe`339RFw3&p`Yf^9D=FN+UvXN5eSop#q z-s_d#!h7&fFIQLvxHS>{l zFTA8mXp+kkfQj`_vjDBPC0Do&|X zrFwW}g_`*Mgu@#RYB0gQkv*mL2G=$PBo5Qy6>mb-X}G2IDRp;|va`oF_=3XW3(BQG z(J}afrQAG(T8JEG$I(YHl?7tab`aM%gJlE}Fkb}J8`t>0IiyiCStuyXYZlBna?Ta% zjUEr^{>XzD#|O)HkCs3||sUi{% zufHR`ez}4{(sePtOTC38bbZ9>M#hi7n@3NzbN!StW<=%cjG5X3mF-TW1UDz-9?x*o z)eWY#1b-Tfjd;un^a7JG0G6xSKnW=2st;tCpu{cutk1Sxu>h;_w(bK9y){{yy?!jGj!B@I(Z%1Cj#tg zpZMMljZrQblvu_GWFk@1yGYr8d?vX`pM4gRlO|bq(tjW~=`*s-`h1EzRWRw~wDe_b z59FUdlgr|(BC+f<*)rd_2_Dqqd0F~C+z0PH=j<}|2rZ!ys*%&GJCwszH|)RH9+!|| zru7KQsySS zazTkG{LCCb_}jOOeZvJ(kyF&K%5jTKLtM(H=IiIkb3T>^5>emlvdl&4RB3 z557MBx7ok_@qhmD_}^dRe7=+A;_{^!g9Rp+FLkaG{`^T;H_gzG=Qx1s410`txn_DA zvO9~XdYM{-t?!-k_{>#@q1{BkV!TEUTFJFT)f@R{+qqZ)hTT1!now8AB`5G*eeZqe zBIXQv@@V#;V&w*4R%$#R;=Lo%S~$-U#&~ZJ0}7~NSmUHLL(J*Z+^-DN3kLThSt?5& zc^eH_2Td*iHD0*af@KvdC~c9JzP`YCELYRje|GzT0Ppe*0s z5TgY-b;nHq026cyz`_2%ihF~f^F<_EV`y{^kBc@{2MSIkR_W^-A*!Mh5g^Y=yMC2H zsql}_u3Jk~hDw6)D&6tjJ>B|@YgV8+5SKhcw2|k2=cTaJ1&0#n1z)}_cab#o!k|Lv znC<3=7R@9_wOuWbbLlS` ziO$aWu#5G zv--Qe0u)VK4nJnsv%#xllJlXbdCi|F^U$XY{-y7W6tDD$E8NRZFA-3-fRF zQmMk%`mHLE@es>p531r`9$DJ|t_o-3B{=vE1X^58lh>uehDWgreBEZP5ChJ3MYqp{ ziJpP_53Rv#y9(t|b#M}rk$A7TRi3#Yd*92_-3RtxH%|^kBhi}l+UT=Jm!eJUQphS$ z`i2=9y#Na-EijO2yL!@>>G3xDY zxFshF#&RTTwfydcS#21$;rPI-fRRXMdL#2!s}*O$CC;N|n9DfX7V z{QB|5*_#=rA)LA*iy$kqIotf{GpMV{U#I7DdWn+xJwZqZPCX{YJBDDsxj;o6Q}X<1 zd0rfe9@f0EaE4dfYp*65(n*@Aa#yj;@}KkB>G7`h=IgtsKi~r37qivbd?Bc{L8J~p z_;J2@x`evw`Q5WvpyR;Fz43z(WMiq6Xn;_!rG*ZClz`hhuw``Ce4Dh`tK|<0e~^8B z$f`cBAsb4>l{jqCvx&nIe>cdS5=0H@^vEID@lT{Rnpnpz&cTT7vqb!^!jkT%7FF%jFqF?pPSF=zC@&-UUdOSr%#J$kmLhSar6gWGaIy3d z?hW#d1Ky}O)DB!4B=|kK*nGWQo&3?XT&-of{4$>nNi13WkJ_`Ffgrl1DzRa;-JNVk??KGRElhe z9gp$SEOl!WnQ?JI7+WV{E;g8ImNLo7o%?wG%_S{Z|TtrHT7gY)>2G{eIs zjqhwl^D9QTr6pVsz~4hDL5B6G6_{KJZL^`OkXoYUdU|b~ZpuL{ZTC3J-J~Zs-y`kx zhiHy%GV&iEBqMMgIGF`|*`-`02tQ5`?@XH8ka${QtPUR}cq&nPZ}FU!G3#R-a844?f zi_LVtNI{rT)OM=lwD1$IC8BUl8)`g?ui_FSz^;*d!ywJ_6p2?4^@N4aa$*`~Ypc;l z<56r@`6ym-7vnjr3iDWAsq4MOEN^F!Q0=y;rUD%)pXI#T2Q;jc5uNy#r$d&+j_+ob!-;pvVE_0MEBN!H2>LN|$M)lT{s*q&w0FL{X6 z*Yoc}E>95QIw-IvZN6yXA;Sa3nD=YF$nMgplyzw``hpHRP{^s+uj=> zX*;=smqlRj?&|95dh6=y?mcdTZ>G+V7(uc6|TOewizEqf-piP^LB@%R7h z|3c=;cs9~VG=}n$foPnBy*wY!rvDxCr=0YI?N;m2i&sy-c=~+r+40`1FOK()j$S=| z^!n%k@^ojhoW3VK0CL<|B^&5s1lL%gJJi%oq-SXmq!vG0vnY=zeeHSq2NKs82o4 zq2)yLbN?z6LnsJoZ*q#(IN#LGf$k}vac5IL!jQJ4fv8Kw8OmTbrfyyXG|o5oui+VZ z+_59YbW2l#fJ)L_hMH)By*19Ydxv=hjI;9%)Gz2B0~N2$Mq zUoMe?>kR^3#nL>at{0SU90X~G7>bkWnpE--ZBvq##NCNX)L7@P1Sg97P#w)|;3rP| zxH3my&)c{BDz&)A;#<+3VaxaVd|FJ~c==xKPII#$9p$3Y^cqJN;pZKfR3dHoC?X!e zvEfe=kU46O0)e;@W`sfjUyYa3@hRL5oD-AXMZSZciHq}cv6|9zXa}Ebe8BZ6y^=k! zLyn}-&mfV%XZJt-l!t99jsei<{1U#^yUB>@Iied_)PKC6khl?i8N1G3S@$E?^5RTS z7t4QAsUQlshdbsMt|e>X3U6}rv`Y0v8=#ow(w*@sP7MLA$1}^Kwn&3LmDIp4Ct}8= zjC!>Wk^`;LKK4JnzeIutwkAU;F^p5U{K5XaPwHX4*_ldzQ6cu2CI1!0-40Fd1Dq9+w}1 zopCqr1)?7-K0Pn^Y-b$&m4HTODN8I&r8nwX*QW?|f=bsD26|HxOdgRqUlRz74Go4P zxU69)mG3`%clBy==6_tyv2W@d{tCUixADcPqLjSs^peX9S>2{e&0>82RWi=82X;O&6y!+TrG>Mh1~&Tn8ig!S<^Bv&dyK- z1a=k{LX|52yCa09BR^BERD`-zUkVs}m9T9g)NP!8^PAXeq)=3Ykq}X3M&nby&DkDa>l8-7DTU+9*&2*8 z!~Mb7A-kT=M2*onj^0ndoy@81WHbY-fqYmj{42)$v;Q^1-`|fA;fMn&7j~I204B*O z^_$=1w5xN$UwcQJa?QBhbbje_?)ZeCIKuoz_>~j-*g#OyFTMG#9}FvDbzSCY#GQ8U z1Q4SDbv5Ea8jJPl1Fygqa^Eq&Xo+fc1E{3}oB$d-X8&qVtswvm>UR^iGg{1NS7Cq` z7wQ3wf@4t~=`fZAC4`D7(1m&7z?AoXvqDn|rvtzo(gANr>K$MwhK%hVs9O+J9Y`74G447r0+bIjn@LH+Ct1IQy?m^4&xa^?d6M>< ze3N+!ELT2%wI-XE#z$LIQu?4(ik;h3ohqBCnf#m}d9SZ;BigMIRKGt>!nrTrapft7 zZlV$`A;3hTEf;GvK&GPuKy_CxE@;vF~^d#j#v&NBvBSQ%J5-l(~~LkscTKQ>p?Gp zrMa%PH@`9z&!LD$7*)D}5Dw6-cEm?*M|No}ECkla1xi(OeMw>D-QnMR(yX@QbAEky z{qK4=8cS!=g6MBH6-CEq`LSgv!8np6hI`4*@?{(&^U`C*0{(jezK$xZ)ZZuoRVbDp zHX0F4!^AO{Au#N(GsOr z61Mn7l)?|H8XzU!GHH5kl&+GsT}e{$Ex2>pQkZ3ODXZ+}VxKll`dN<2=`~#if#Bc; z)!FJuD(Lkws59=c)b)DZt{$u|->sL(#@HXPPd>V`-aqdGjr$L$+Rq1P8?cI@HFdgXf^z8q;Ze?R(BFFC^Oq19^(u?{Qfr@|#fYza5b zy`G;_>?fyoY+VkV?YFuUehlEh$QE!nl76dKh0vp&f~eI>UDQOxMHo-VL@Ad6aU}cE z?YjlR(n=}IWro4}pHTrInIR~Husck<9ex&l3vWt{tFOF++BF!ty>hxTVn^pN{!%`$ zZl?^DIGysXC{Xl*Ws8SJwX%z>S3d2mm{%zZcTt9wyWT6XrUT)*xsy5IwJ6^;6U|fq zK{=$=vWk%aB#Ua{jF&xH2zu+;TzWWdDCOGo#eQ_qI(u=UhnD%%|FvDud<;C1@3E6f zBsgo>7sDdmQ=D{+v!-U!BoqGn8K&fcJGdm{k8k+2A20mzh?9|_K+GhKLm6oQN%|R#po2+i zKZdh{W!?3y=iyV4)Cxc!7YP$#*O*}T;DOfAXWq+-N&uamP}oDKtIIeZ$(^kE8j39I z4qmJeFBbr_;3(^;^zj=%x)_*|lP{E3a>tF15^qvif50jBEo5?}IS4mPvp08;47wV> z#{raqjsdO6w?yB6B;GlYnygdlwzzE_{q{{k^NnZw3xxX7^9D0>OmLQ_FQ}LIeO5=k zgliXF{9F5XaHFE89kShxlOFyyy*8WaZPWv3L~J{;q{M(KKv2X*;@MP%c^unz+kfu_ zJVQo(4)__K^#M-B#W&^u3VVg&9AS5&7Z%So718pQ{ok74WN9D1sQufjc?z${b9jX$X`r6bbaUn6QAz43IAq$k|nQtwPM09J!y?w1DShXcfq$pFK^8!b~^!-q*Snd;VArX=bj&FNaHu}(#FXOMzz9Zi2 z$oW;HfBMzxpZpp-GWk^bp5CK_&Lo!E<>`c~4e4jtM}hlPev1owJsy~teW~tQNZBf1A>RPks4{HB1Zpf@uQh-{ROSl1!Eq<#nt9y7XE!SLWW}nT$?cDzhOU zh|Y|^1O-Sx`ZqfBiZcY{tNKkVEV66JN(V@u*%fBe$7rQ;BByZ~y*h-o>((|}+5r&6 z`YKZh-?U5?b4b4K)hkL;`5Qx#>AR^|xnQOOkB}Z?=FAWmUGbDZ6SN;mvJWR;u3++Y;7L)@9iN?8{;) zi}DFS<d?JK70T}Oiq8G;_tr^HKt`KpRIJfVW#$j zF%~nvx=DWS;E1S8be*tbx!7}l;wXP&G)@+I(4r}+`W=;@m>kirdUVtAj=$nJ=NUT| zPzX1hhSquVkfvw(^@Lhcrt-agtcTjXnqXV@oKM2_(XS@&Axg_Df2L3hP%&xjJwJu{oW%H*J2t9WN6(!Y z0Q_ax8dN`tCW5FOFO@Zai6n`)pdD_ET;t$(|CL)PUAOhpqO{s!W6zP63V94%>F}9$ z&&L0aBf2!%Leg{H@mZrOa*gHi^Ht4DuheMle`x20t)UEfq5I>-2?t`ex7tT(N4 z-6n-GEw2s8Cv$!|{T}IM^Vjol=8Ny7CTRmJpNKrP%k>qJM@I*!jGa@lX;SAvdkXja`#TNmfeWu5b5J8Hl(5D zfMwp?85kVrRU9qezX#vkx%=i$A5a?&uHjK~;othNuBREHZ zV*JO&>~ylkGB&zu9>+tCl^+Lz;9UjZ!ln!dw7;19BMo9TMd{7gKng=uzVF73u_@NP zTrP0}*X(K!U44)1*CYH5>(6G3?_^{<5G3cdt1?woWls~ndWsk4wP6PlmS z_h*Y0g#Qs1h_r*${3u3>0neb7!nt*vQs6Gm^Tp-Lk7OL6P*Ji3IoQ+XYW-~T?PP|L z)@w>oMpht0Z@PHaA?*4cOSZW)tx;n)S3*%7pTVnuKd3uEz$J0mK5y`VZ1{zc3B6EW zNu}U)WW-T`Uv$3U)Wt*OvSbM|*)%4c`GfK&jZL&bfZ{Z5d=|}(Oc3cX;b<%FUJ|2O z3tT3xxouKDCYH}WH_H$yCIyVr8f-Kv6T(olM(*_Y$VlEHH#@mH>UB8G!vGAQA$WLV zME&$Z4r%GYk4o6h9en+6LX>PmmO8}2E7P+nuV)uWi8I)aR-I#Bc;h{_4=2lSrzf~Q z)Ja>M+Z>9w4V8dvi|+I^UiN^qDG?bzm+8U7@k9v-Iv86s<59W>4zwQCa}Qm@WX;qp z6*z!+y^XIyQRDk0HTCkg;sW4#T?^wyL-FEGhjx{E6^+VIa~IugGsdNBY7Ic2|SYhqL{So(u5sDHEZ2WS3I_rbl{sjQwmMlO`& zC#%6{@^i6J4+~Fg+%>!MS9qsT8&lI#07QyXCnlM_sa>!RF{gg&a@4Eg{gh`1@U$4M zo$vFsn}Qk`Ic*=WowiULyLQA{(YDE#XwV$bSqLm;f5*bgY7ZV*97A|5jE0^Xgibyf z?fgns%q%p&n5$+i?|sj%;5Z;Z1l#RHV=6qRd(9TUGJ_zyYs`qX;My)IL7L!?rg}Mq zbN&R;0xW$Q59cONT920ft@tKiPI%89BT%c=-hB1l1b3~cQKGy?{M{}W41*6pHH+pm zgl56ghG8bXgAQDetU?W;8YaW?mg|!1u0s-_>C&dMER zk)>NT}0;nFI4VM+5mMZd~w`Cf^zv4wQ4h zEOwFj>K|mq47O6z|1JvK9_)l4MX~!ma%BHPI-p0h3eL8VR~Q&zQCIC}0+I61Yl zXFN5*?f?Y(9F=paf^K*{$NGwB8bw8<&nUC%dyhTpxnY;&zd!@`&=*5EKysPyKlD#b zHs2WzWEr1)K*FkbVJSu!;GQ7Q?1vzXMBRl|WgE6@ zGpIzZtG8zo&RzyeX!GlYZ8r{U>NRc{rZ+`dnU31K)avl3u zqn4NDn2f$eLgtK!+Dp3^;$bblI~V>UqwgOW2o+3dq~ zb^l>dYs_o(+#DYAfJ_w4xI5^+PN^2IxDAOeT9^#}nbB zZn!Zfm-$Hot;ym4KhzIRwd$F380Bt4H(+;%mySWYA@{h#-mIE+=PIF#y7n1$P6v(f z3jahAy$+8U1=(qP>t?NLK!QQV+0xP6^GFN*t>!*Arv7w33De5b9!p^R0UQR_;9{3S z)>>2AQGNznuB!Y2za~!Jg-JRDnayyDLlO;qlMS(@LX1pikAj8jabH6@ub;!(3rTU| zRwKd!N$SsKQ_wx68KjfaN94$w*DDG8zR5k=yAaGID*cc+Z?5m5z+R0&6^NVwl^qt8D#^=b|J5xJ!}dpoz%&Ie8;$%72%z5FHSOk6p2p*E*Vz|%M`fB(hv zql5oCIzD>!`T%_T**kaTL95WwAOC!e8~u)-zp!=OF*_ZV09$YWNE-aHe3&<&bgn{v zviI!JA^lkw22w7fomA_uS75I7bJS~%bm0Ez>Cu;ahyS4@|K0B#)nyzR{v@rit0X&= z8!=zrl!y&Rn%S)I?Ub2y;RSaD?PPbpLo63%yEO4Rz_`oT8v!JNgbwHx>i#q;p~q zDtr+*c|LjX@BOVXgBTvQzD`IQhX-6U3oGHa|JS*3+TyP>&Fb_`jbx!yOfwZKg;k6n zg3p4?rju!3}=L>0D1t0@6g4v%gPk6^1ULqS}ezFx1%u@HV)%tC4A(;77Zl5_D zpJ4NmUvnM?YhkJL^c3SES&IPr1Sc1qra<-=Gwu~yELXVDTE0$BACK4A`omL?{8*S$ zKIxJH%JA4fOl!q0DsSUgpMIDY<*3PV=jHIZE?WWme*P@aetvc)M?DY z@#BM+uMYP2jt(CCJOdu> zTp(8xiV(R#tHlfphdpfs3RALVU~tmXe1!lNB%Y1@8Y&DmwJ>XM7V~jfc^araz0;3XGt)-msm?BrMI2j;OSfl|A^^w z*&_rQeSZ*D&r#*1wvr=yBHVJo0tYUC$vLXC+q;5C5pl=X`79(V zKy?P_#z6a=ox|g%cr5KdP7XaHPP$b%??05k!YztP6r50>rwpx*7OH?LD~bl(6rMC4 z-aNs+tfR#@lQ~Y%AaN1P)<&e|8e-VD1|p4@aw|Y}2m=mt!~Z}bsQg5RN={3p%ALm_ z`Gsfj7i{1k+QH?sWI)k3*F`EHFCKX6#%6)phQ8IH$wF_Ox_ z_ntYrfU^O?&{n`*uwqhVY3Oi0UJ6TL+RJrq|HS@v$K(>B!0wI|ZxS@S&RecGQGY6gD)?sPqdr}9F4=8YC6&0=5)`Qvt+l9I~F(BZkBM;GS@>Ovte4J_%!ecJSb+}OOfshgs6cb$p!?e>__?Q zB1c`5CO8KFK^A2B3u;lX0(p+M29Zxlh$Dt^$I)oFN-b<}>%x-&)GkO?)DXI3-BRch zjwi0COWD5i`%MVMAigN^0~a(7Nw!FeYE^U4d%9On0&uxg%t2eIs=y0aBnH*|zpkom z-)S(T$Eu%XfAeEshGhl}{3bmP8?a*ZNDpy(z(W}4IOge$!5}@tTKFTPw0l<`a5oy1 z=LWR8^K3H4DUaufDU8Orr+U4cCmc_DFPhJ`|mHOr;|@lr_eN* zS0c1=e|2^KZZX5@7o}t2sms3`P`DBn#LbLFcutwy{qoLI_2J_ietvSV zEDloP<_nX$2_r)8xt9{kchP2mtK#73B$iwl0Dp8@dbs7I%c4>f{{85(d~{i`pvdd{ z;_2Sectxl3m*ldD>CUuZBf%puy8F^^a@yubto^=UoZ>QSn3*I`cfCSZ4egy8u?{r2 zJkZ9>gM;?=rzGS!*D>lg6fu;pVM*tTl>v5a^w9+%8|oT7+l|IBKt_9^rzy(L6%O-IPJEY;NE^br2u}?O#0Zi})G)=c z0ee%NgBou|9sIg^7ePP$6eszw+(~vs+ZuEByEV1@4+ouchvSiW_$eYwoJ7=QU*r z0w;uelVK5Hc1QH`+uNSSv1mioSzcG5y4z6JHK%a0iP{Zh(38MAei0_Fw{&4m zIQeK$fs~75nd|p_;qG+7iW6?ioyKv4cKJ-JL%dvo%ZC*MLc+>@m>r~2lYN=W|6kSmVS)8 z$!k19s;Q(8Ux~UW`^I$&#ZuL}!L)iw?zJ#ET_AaeYg%$O%LbSPdijM2O^9`qbyaqM z)U;TCm|12x;a{o+mb70bv(|%(Qb)y2-*JdHHPXsZ!tX|`+Fg>_X&$7BF#RcmPGTov z1(&>)Uhk?)#9GzPgJoeanRhzGR0-OYSBECjeBXSn6w6X(L!J#hQd-`S{b2HLn3W=w z5(qy;%F{*2lLN%f3rn-O`@wB2=$KPSZ(q)Mz^Uny{o!*?JOG(8iQ2VL&6sd}%Q-+* zg$m|6Tj$rz+=d=Ts}ikg=$pf9iip0nEQRSLjvRZASto$Wn8fq(9ROjLkT9vgz=HQik~^85Bb4ux%o)*S zo$0Zj-i;8r4uckpl79Z8M-JTT&1dC|%VBM^`yx$3j-kj96ay3Bo(bdI97XdOQwZOb zaO>V02j}2^L>vq)g!Oz4Gl3MVINmx!&`K7O$akg%dT`-q&Jb>(MJr>)FO=g3&n!11 z_Odzh#g6orbUJC^f|YC};)rlBYOXWn5&)3M6%z^_VgIyM(!%wwfK7FCZM=p2S9{Hf zfrT5=$Rd%e7L4tIx3KL2XWPgr*#Go){!e$!6@N@uOH17O^wT?9;b1c%SKE!AnW0~*_? zok*jCQR$!P>z0B_bx=prc6z{Lu!qj{tKrxC*0ZEepR8GMxLC2wb;!iJ*qXB&8s3G_ z$P{V5hzCMXmbeW9+Yh`3#Bcf#_qZQj3X`zzTK6pO{y=V4%7&9ewF@ANW!$6$JBDZ( z9?lmXjEz9@3N0h|boB2dL_ZBiM~2|Xu}h|J_$Ce|e-RIDQiRR!G^$C}CSbkV zPso9cHKkl>1&Gd2_;vSCjB8gUhK|(TQ%gc<_y(k}j?(D{H$`@0$cY86Lxf#Rua2xYi&^l} z6;{pJ?75$hi?Rua_tc@T?fE`Ea9=TJ-QVAc#bp20oWrhHIo6vh4`J8RJ*}!9bLy-C zdC2b4KoycbSw*Y^<-{f_R>!lw=d*biN*z#O+*C=|k%MFV)nv(w>gvGSSb>c?FH*S{ zye9*1m<)XlgR&n^qStM_^=@PKzp}Ubl*sCo-6}}8RYVRvNTFuC4egFw?|iPfA|zF@ zyRguENG>j(-5Yi2INs^gytWlPZU<`?>@gi&_TK0qst$O)@ked%E*+GhGcfnIKe0!+ zxJW@|xOOLlzA5(=mxEtOq=pp|>GL~3asC{cP5GL}BZPeY=^EbVvO>vyMa2$&BZQ9E1*qX1N65oV7Y!K>B_#8+D4MV* z3nveX;w=-znyq&w5V1B=#n>G)ScTc*RvH!{Ie-HE2fXC<1}<0aJO!ZZ_Bdx(2i9+2FPFgymLi(o zkGH!nm*Xp_liGd4kPLGHEM%m-^F`ON%;mC;O9lZ-7e+tc?utqP^OmmjYj1rcf&GzW?{-6oXy$GdWLkLq8qg458h zyPI2oJf40#Wl-SJ)n6vdg~Y>M063g-XciXpSDc2`p1s{$x?|li!*bymmVFzRd%svN zE-$K8>1;J$05E!U-1GkN^!&*LXA$%idx|XVjv{i^ecyZd8SNst{v5}0=`A$%RL_0q=fcAihZ>wo||F4sr)5Cx6` zj@9mNNXrZac*G@yL~Jf z(ed)&L~HF!7$RdSCjSSa^6u}N2#{}$X}(rG;;Xe6iTZD#?go6 zqQP|n;AnZZ&ofxsO}w6SalQTiPam*+?ccj2CcDm=-8&s$a4jNEw}cB^0|NlWiU;#c zuZ?@^;UHL7ZQ-fes&TluT%JsxEpRjqYVEDoZx3<&!g})lN{-zD`B{2i^W9)knl5ao_al( zBg^L@v%gh=mr(4xVCt%?kZSqPB2MdK<*Eyi*UepJs2?UgLwfbac>STgmzs6K6ANAk zqsk`MXuy5E2*g8wb>iMAdhq?^SOSV{)Z@6udDzzT%IV z(qD~dmvStX@!o3XU!0vm0SzksVmW;e|7qr_+lS5J1Q%xyfsR!Mco0|gG+r*Sl-e3w z`WmDe&9mHMADvy>HD7Gts6Cy-g29IAB+w&dyZ{&Z(+yG95nk`Pg zDOx1d!}aAmErW5Wm}3X-X#D;yJUjeJp+xfz*8>NHQBvID;Xc306cNuU{%(R2(|$TR z^?c;l`I;5Ht{DLPX?wA`34Smh&m{u=R{v~Q3*3Q|sGv*+^rcdkj)aa`dl*8s6@w-h z1vkf*nPH;XgrbKNy>*~TEVNEu9o+laTAc%n3>*4vf8uTLPIJI_>G1{ImwQ>sIYQPE zW|q$u@24ke@5KMq0MlYgzj}UfezCq1WzToD(v0FX-Z?eVdh0wp-0Gm~Iy6^?K&@eJN7q12`a33OW+s8q(fn;>6Kzn`2EVx{Ku2~JULy+e+B$jN>mzUq1Wr_EYn({F7=uWu!-O} zUq{Nk=B>{Brm$s}NCWSFYRl#UN}5pc>$zT`ajH%bbEdW8ne!0cRzW1)&v?Cv!?Jt} zyg#jQR~f|ijU*Qf$B9{uB{^#4x}CjSA;~R&^KQJF{LgXg3_@HYUEcDa&;8j2EbO6mzXrW1O2i6 z;-T!?*yX;JyZ+pI-%fhAIH39sV_~nF3`N+0r<-5$jAfknI=ecWEYB&jP|#|xDP49; zr_HB@(|o#^&#pp3LXuh>&A1O;K_Ie&n_;vNxJJwTmT!*94iXYlA zULA?0=1NlCFkNYQleI9J8G_8y4*pRdd#hu0!U$7@)~vlL((ops{kKY6?q)tQ0ja-G z?-?bHg}qO)8PVNjsGKv^8(UT8RvR~H_NLTZxyZ8FhVzi?j{d1kESv4M=AoN)j^kw_ zwDs0FVBSUB41CB=;dqDa-Fho)TVzwNu8E>BE zufwSdqkqp7RJyHnr*3T-MuRJvlZ!2=35WCKH+}kT^P9Hx#Kd?jZDnZd4Q_3kaktj= zWV#mStbn_a(*YuRkS$yFGo2G2f>dIi_?|!g|J25F-e+8X(>}Sl5{#{ zvW^W7(c*c(rIt>9oy`ocg~c)eUSL=6P-Bg>sDXyL++dIzM?FI!8bVx8RoE)z-WSi> z`w5yxM7AB&4aPk=^iZ|CVx-?|+X)gSo~5*hO(JcT8FKI2MYx%zU%7GM`b+tJ6T>uF zt8`T%g?qj_1glvlkqh5!D$|W!8Ovf*4<;T>51ty$W$tyj*@V#XS{0)K<#2%X#HPLH zY>EvP5<(eTw!j674z4Ug=(nOk>S?lI`lP5(N*gPcPm7At0TgsHchC?91?z(7>eXKs z?M0W&_sTkGroF_gV%g+D0k_xhA&A~W1=u0-O2|XX6~KoHIKdAq+1o%>C)D6q3l`uz zln8-#yzT{+=$aa^q(A{K)k>_NJ~0*QSmvP&GUl1)NQJA^>owIm;VC=niwLCrJcXwJ%7*9jKJASdUQQf*@>hlevOP= z3Xzl~EO~J|fj^h~XmRljaq=0i1WFOp?WRN^!%4PF$Y}UuQG8#NC`Iw@iu ztXfB#Z_>f#lVqIau=7?121eK+6OJCvMks~;4n`Y!4QzxTeX0N2Fj%R(0@G3htUxWV zzWglH%i7Ir0ME@U2O1g&NpnOfxb1>ajiEQu3)s(ADwbR#!cH4-3-`8BnRL`r0Tp`x z5U4KPNq)f4$uUj}C>G$*_#HiHrvrXdPV+GqkT^5c<+lNRbM5Jfou* zRz7g>wLkMLwz2bJy!!KWGONDh;ACo5#>+73&g#SBa(24^VRG`#Gwdq}R7YE!FSzlp zYSFNn^H}ak?JF&@12x|r;g;#PfCxJfG&#E zBj{XzvQ|T<6AE;>vvG;8z+=Z(hPVozXHXDmp?GnAWK~bwF^%7O4Q&C!kA6+nw}+N@ z4Je6n$`NCzBaN*E%@YS2HyJt;syWj-oIlz@OW4L7JW0^}Sgrz9BG;tDB1PxMYKk__ zb7yyDWN~(T^>o|7%&H7fm}7yV@?_&+dc&(_cne>}9M%eA_+r|s>`N?Qp@>9rRKE3| z%h+LFdc&Oz3>bxrAck2J?CduRMg2^7IB3w~fKl{PhA2m_)HAVe$^Cc|Uk{e*=pU*YD0Gn`S^9`*3+Ec& zgxi;&Xq?Ytg0@#txxSy*?@&cMx~+dlUbOy-s3mn#@>iOxU0g&T=T?OyfXw2(IZlC> zMEht^2w3>ye0~4n1X=M$K;kj^xSTY@jTUNpa!h$CUp{f$ws<$5HGsro zSSgZikbU5MIsZ48*KMgIzIGJ6$o@ft*inmk8^19}#aR`-_l4KzO4<7CRkW9=$5xJQ z?nFflscRL>*pytb%adrS>hv+py&w=*=XmWdoDG|0tuD*`hjZjF;r`*pp(L0A=e%>G z;59-Q0g4^!Y7ICHYAp@~+u=t#ShQzn+Thi1C+hM=jB02ToKtF>*&}~FkN?Z_P?Dp^ z37MaCZ1|)XeXRQp#oe9Tz+~X%cq$W#oG=n*c|19pVGpk>mh%s>;zuyklOTN2F!_|3 zQ2I_FGr;LCA~4(~*hJE&cc^CvCu`gK@9mBS+bG8)eG-4gZ>iaJp1k(fsLvf<-@crl zl61*j+0D|x@Goj5{M4WTsDhj+;;3$POedvL@RJ6Jpt5HwLO`cAlP7`F8SMRsI_3xy zGkEWQ)I=#Gk}FADLoHzF#76k3SGfQ1TkZ<%sAsqodI?#;s-k3Ka)$x*ll3uI#a4I7 zv!8gJ9pF-R!#^1>-#&YOdHxQokDR?a++7V{ktexV!-MS1MzK4gh*6M;T}+mbMMNjm zvYLmETQJgriwqepbz!I@fB3ban`V$S=#ZYxfz$r!Ioy9Z#tjW}S_fkB$^rO0H?!od zZ@5*#Y#=}?A&TqT>Px>}hOC8sN-mbo|b zlN$|qfU^9MO`h`YC3e)}%UCw^z$~6mPO$~;QnIA(jqpaXaHpKGq-@m!e&Jm}{Kcj0 zD_C*KDe3}fc`Oc-V3ZHkBH=Qs z^iX}qP*LZ}NPCu0-R{PxrWDdvcg|dv)gkfCrNuLMP@aEJ>=T)#V55xZJ?mtA5oi-l zED4lQOssPtQwD%T`bj8npcpU8*Nty$>~>vmHDwh#VNd72W#wDntB8je7X0-ug-Nnb z?!4Dc^QWpSIEB&8^q`duZIj0lK!}^&ZMHsN@&oZ4wxZ@#pu_S0Ly9%kR)Q%r5ILb5 z`KO~~QKT~a6d`c7bc8K-x^Nd)>T>wMZub7(=+|j){c2~wAX8r@DeqY~!3^?adeStMkR>>WR}M_1PAyZrBK^VBLs32GiGv}ioe8LZ# z`GiXg<8#iIm)1HW5IyB4VVR6$Pb+8W^Y?B#BBgcyUJWZM_|a%{FVokoBka@w6fT3k zbpvc^hu94!Yi{gaxT}_u;alb3*oLP}21Q(;BV>5w6MYY*j=K_Dd@wEocgB)Eq#LIn zExUIv2YY}^uv${=5cbtSmhKuHOHqfurXJc!ZoHU>Mj#+5;z^E^p`M^ zhD6X*2$t;L`F6ToUyf(Eu~PBGJ{?G=|6XbUr*b2nobVaEGJm>cX=R%{I&3BNfTzh- zj)-Y#i|v>yr4Q*>I&;NARz7t%cArDYfC>H@DrBRRwq?dbCS@^|p`vk{UTuf5C>riv^EcxSiE<*X*el;(z9fw>f zD#kdZ=Qh?N;VRiaM~ZZCjq-C5M>58gW8Q5`wJ)SevN#ckTRkKK`Y8uI&={`Sksa1Z z7}Ay>^%u7q)!u;|O=dVe`-fuE7x}?Eh84WhanHlrDU+x{+CKBnIoNM{QYAvNX_)_u zNZdt=#4x@zqT0cjlydHasb@^-x#PL=FFEx0wswtTlW5*3#2MRhE~1eI1$ z>hDnXlVfk#ez}Mcll5-W5=E(IqR8rEd{Sm*S<8b$-KHm~e8=>XAQWJGN%!$&A4<-6 zF{ND;q{Ia~ga8oz)~dA^l+^hSTZqIXKBO=e%D#TMT_H!f2HxeG_enIgGpZHHZW?35f)4V&j@a760?-LikV?yi1s6_HsY{aJjHf)R7mlK|)BkaHyE%QoiyE$GN#|jL~X%bm>!9WhZk^mS;Lopc0 zC}3pspL?ahh24`EkmF2~Y+9+w8wNeq~6Von+%EXJuKAk~u9vn6%%$!=0 z8UE2Sv}j4iyxVE`MG1a?1{eR@2(u7?fT^r$xA;yeik?Zk8*K z2)S1R2|lkue=!(=S2|Xwld~}n;>noO5X~n7xElDAu(DygEt41of>B8%U&?C6`6TY$ zbJT=LuK%vb-7RgT3SWZJN#V#r3WJj$RkM#22T%qqw&)ktDILd-x61YsOI>HMkSY6S> zO3jrNe$}@wtP)4KemL>>X2lIT6z0g1JRD=$l3lEC`s6|@k<|Vu$HldRqU(t1k7vTB z09jgToEO4lw2$J=5-29TlabK#mZ!aM-ajuIez(M}XCI{HFfnY5!C_CNFz@d2a{b{- zAdByvj!|PSrv6pJH8w$Q-}(QJ{e)S$RGw52V#{5T@Zl?y>~wf{+7u8#VJ)-ZSMffK z^nvCb2?RaOL`}w-M>?v~kg3nXH9xa)6RaKCD{vA{>jYChUTCDbmN@ak)~&Qt<5*jz zz`EL81+Zu3J}UTfNY*8b_@61nXjz5GD;kPib`XYpGR6YE=j9Z_4gyT;1H68E2JTcP z`c%{$;8f$@WL6m;HY6>k5c7!@lLMw_E~iGmSGn5C*Y1v1@+z{%P%L3^_KH7Xr#g#X zy90LrA>VbWf1x1@H8cplhUeluD|!kMNQOplT$gVqq!D-Rz17$?8V0;8Jku7zw(Js2 z;%OS48%EUAj+T)73Uj2l(Yqv*>fXeHP~EHUs`8fc zOzd-_bK@HjrcGyQ$7=S<;BLk_J#F==cWKPPAS0Ncg|dWBYVw!By1tsn(dxk`Nwxj` zhjM@$ZxP`^!M;?BhE+>YKIG{%U0oh%AEftQ*^`XnJFP%h1HNGHBN1Y1C-_9B%2gK5 zoZOnSCV&pHs`_@UQ=$=7r&mG37cosjO_$14s>oBTBPfYAN&uyW()LZXfP@Gq#ngIS zS1uj8r3OTBj0{Ia1>+lF$eN`tDXz1snopTpU!A0oC{RO!VnsMQn2|ke*?|dvd{oS2pzLGxB?q}nA5|3|{BH~5qhd~iw-xTAYRI4Fz{V1#*3}SL4fgeGY&@wOnu$odODixbh zu?KRx3VESi+J6K$YBc2aA%Mk z0BM;R32LbfSc?ysHZ&7<`NEGgn|$NAbZqjiG@e*Lz^)u+`Nl+V-BwVJJuG6@w^S=6 z!9tf`9*h)cl78oa=mcW8YrwDm~f*EiNg7 zt|J(DU83~KvIx5(80Wme3K#k4H&23T!>f~5*hf|hL5j~(hT*%@MWw@132O-726hV+ zC?QDU@SX$@KN8n(L%MBBBhp6dWV}H1_=#8%#oDL@wA++S0W|_ChdrTK)6ObCW~k$^ zAGVGCao$x#PJ^CHC%dQolmaJd@a{-Ed){cod`P-)3VRl=6$-sERb%syB)fYTQ3l-% zf|VfVeBG7f3MqixA`*({)`ea6pLF~}s|kx00404gWcfB z!VN;vjDHY9c1ec^%D)}Wsgyqa!-xl4Jb2K)R(m*^0=gu`e6k$RrvE+B&_L*1Ltg5L zg8Oh2%Wr;DGS%Nk-+jP+MYw26`|*3%jp|k6S(|BFLq_^%QYI;CTPP9Z$zET3B*rpo z1_XiCvh*qggAJ8pbcBs8JLyRWJc@s{P7vtT_2u7SMI1XtJW&P_vrcZ?v@5!EEzx5l z?xD{$>C8HjR|EU3%bB-pCMvtLZDJiI1)unHee z-NLQjL`r+Usm_iE5Jn7m%4%jh)xhI?eDw~?)-~{g{sy|D27_8V8^74$WV{4>FMN-# zlHgv=t;_gQ%tLFp>4sR;K&O*&X^8as#5qIxb&XYzwnm_gIF1S~m8A+rbPCPT;u6;x z$<^0AvFcAh9l<3TF@tF}I$JKzM{x{rtLx<&j_mx-dUS%^-}OZDsgV~aCmXqYu1G+9 zQd6V-Z}1iQyV_qf?}ti~kv(>|rkGby$Pq^`80bXTYC{D(nFPIf_t%LYJG_fYJ&vhf zQEt5wg2JD!4lj|3#dX3LXJLZD)?|$^PW0}g@Q{uT&gpsT?#FhGI^Vgty`ZH1HG(uH zU47WbX(U*QklYbp0k_6bOTx>DiyS5BsxE5{ZmY5Q1HRJxN`HPJlKQ~r^aKp#TH@MZfiSyAhA|80`NrU%3&U&NlU*GF3 z$xcBE%#pYql$T^0Z5_%6W2T12wWuRm%KQX1z646Pe;m`oXWp^Mq4U{Td6i zkaLXdIme|w%BGuT!f&6A=+iZY@hytd+H8P;+sIR(mMT>ubw8ih( zTs>2RLJvY@B|%tzB+5v1N5)C4n|58G4N`7_Mj6Z$9((|M+tiILn=9QCsjd+wYx?%W zC_hu6q2TR){c`=7!Q(|4Fi6;?vVA4!Ga3hB!&Lady;$?X%S^L`Tp7HoW$0xCoNv_; zHCeR}HE#Lo)~Q>9D54i=^>;lBR^yba-DuV}(CwrNKd~}-C?k?}tWwU>%J%&HTGhgH z+~3|E_AN#n6ND3uOy0bid9^W|Y_24KnK$SYSQ3n)Bxg$9cgy(A9)KTB1l|fliZ^uZ z!^pBGpZdf#N%U=Hok}a(G2g5UseKBK1;!u&H=MX`k!5l7lUv^tQG1~`h?9TJED+MD zmAUE60)ieQ>oujHa$HA5QJcQy~rjDcvF zv`;lXUNJ*q_SxNhHGtDG`K-n94a%!VtSb@YiCBOY~{L^R)`zzaObv~44H~+ zow7Aye^L%hb@0g44Mo&g1q@?~dC1(vMXsNFElSoevr-l#a&m3?pQn@AX+CaJDVu%T zdKBU~H?7vT!;m(L%9?#qRfFw_#D-W_<=t3S_O z*?w`bav|b2Lg%X|&Tl@;?ua}Tc;sAZGxbfREnmts1AeW>WbscR7^A zNc@Bhe)qQfnm9_|QYdcJ8{_{3sd4`JAL&f&o^--*-!DnnG>RMJAWK#?gPk(Jz^yJx za3HELaB=dl(F?V2A^AczwI3i2b^$Hq0qUO( z)Q4VFdN2+j!^2@H#CY9wcsLz{lyl?~jlpMp&<(!JCCvXg8aSiHRABm}MSPHX_vEA$$-k zwK}XpfI*gICjs4HOJhJn@f(T(wAFk@g4k=yPy9sy>2BA6Vn)-*5K5n6VjEk^+x1)e zlf7RAO3RzIopvT-5}}(3MZucCym+6OuExCWCiV&ne8-L1=?l*`OUH^7=J*Abo{Emx z=nb~xRU&w$nKv=Q2Bo&!&3G*WL~gjdG$_ERsk;9$pu^9QvdKnoit1t;CY+IHA^gM+x3y41qh{tzaPKA0JC?Gcw$7iX=tP`r9_s3#)ACVa|3I*rINrJsV7*2VY-{x z=%7d{bh3Cf*wswhJijJVK;h&m#-{m#ZNv1f?3b-aN*FL^yqmn}%0CH**v4K|APqe8 zM5r5>I%jZ&o444_>`|9huu3d&HE~9w1nJ6qP4@}jRh3`aFTuk6q=pFew0pIzolBT1 zTK@`HmAtxf|M#z#zngUmGJV~dHAz+W%N+IywH-F|gOL-@sctQU(3HHCu!Mz-w62N_ z4OXKq-bH(TDpd??g?p>{R~vC>nV%uKb1ht}4VFX^-VVACBU1WUEW!`F<}PRr+P~EU zmM=_6O@&AEGGwApu>6!P#-}=w*@z&W_($o@RPJyYuOr)SA?;{bMPCkHN`~|oWbVWG zay3 z+r14B0Ukzz6t8Pc%DvkFwh~v**Q|2XkSlBqp@CE}DHVR2UB$phtxz$3jqX*E zOm$0~BGp}7&o#NYh?3C3aVU3AW|g3`c&@D>X^K!&QRg5^tC@<*aL*2TncSHlBp_#8 zS`^=U92hxdDppE+!74(c08|}Te+w^~GznGW;S_Nu!r;gIh-C|DhgnwIbOR#%+Bqt$ z;X9_K!34H;qN1{{=p@{z1VZDd#41v0)k(FqW*(q1EaRmx_YPAMSpcxZ&v3XJ11W{f zUEtI~(O5LS%%o$eCD`Je^CMp=`=3zPh4>G?w*o-P${`ZLSdV3?=sEea;fXi92bf5yet9qLlWiHAsda1VKL{m zNzJ|++JS%Q3(As))w#f8IepLBa3D3cmeeF(>Ch1^q|u3B@U%DH}IuB6p#{W_);*= zIX;O7*J#X&3M+|aBu%p3(*{e1W{NR`94@vh)ur#qARq`HU4DrNfeEILgr~&c9U;* zvaagrh7Ku4tM|bFPm~-lzGF3n#5$bthEPWIsS;ngr z@r-AnS4b)%ZX-Uu0-nT&NPk;98Ouno$buCVN=b_bAc8P_6GL!A0(YVV9FDQ3x(Xqp zRk8uA32{Q1?E`p(wTn}a9|X_psiON(3G=N*pdE5e+cR0?;6!3 zP9dP*fmJuPQ;b-4IF%!o9RyArC{ee|n{KtqF;k~146~vqYFh)&gHW2ysx4*WoNL3Y;AEStI#MLB$aHe&$2z z`wbBCs%oUAxmL|8#Y!(J!nps?U9|ATaF;t**U20P+s|}up-R8V^DY1)EzGV=j}Ah* zEGO@X-_--lQ3E|wAl zTALhH;bgrx<8sXD>-p&fY%r0XMS3#} z?k8N42he*$t*B0U9f1~Ck)RqXdmxrwx8CV40$r8&3>nu$q5h5ZQQ+Tyc*)^p0=N=s zw?do9x*cpm(bUVEac}c&v&W@RhsT#HdsK5ic6U&`Ie?A1?uMQJVzziUp51i+IVhao zsjf2?4{G`o*t%I-z&oW}ic-!H zPTvBZ%8l6~0u)|&siy4?jYKm#J^7`IVx#ki=w3eu2VG^SB`K*XaaC>#L(>eBZp2dA zmQz|s|s zj=??_<8VQcKS`~+T`)yGa=6nr5{Hfu^=1g)J1~wBYq1xdeL?wK>qm(><}e!|9$dGE zn#~xe(5=M-LzxbR7hNz6*6P-Mbf}5d+U-i@*Ie3U4CiJ&L5?O{NzQF!F6O-X!ts`- zxV|&HY&&q*SBB{Ih8dmAI7P5Q@SeE#`Cpb@nVV}K)ii&iItK6 z#BR#z*>s}kvz6fcQs6pw+HcWvUwg$8Um+9fJ4C6F8T&p-_hf=K2shY{9$^A52Foo& zDVb$Z)A!F|xWAoLN*OsI$)mm*CKb%w6Abe)yryAD*>-QeUQTi6?&OQ*;_`yCP6@1y z@mQZU^j6ln+_#rO{znuyrz8>ll3dAGld~Ca^JV6#W;}2WKOZoTK0lkASJsMr!(aRi z<8CthTS3zBIkPOPa^BG|kpfmiNDSN{L+hLf&m2Fepgdn(~bzr#GAoiVAt1jdYb0x?goE>vno{K zC0(^Z)|Z!@NzLCM(rP<4-Tx`gL zl(j*M$BUD^EaeuGBfDEu4ol^GCr|?6!YGta9DVZO+YTaOi`lo6)0ZDE&}s|^Vh6R@ zq%WB)f@wMEiU6%C>f(#?<_QYRz1FTl9A`5Z&4K>oko|~8q4T7=>ITr5!y8osq2Pw| z={koZ53S~`LJ5TMzKpC8I672oxRH=|M{xg(gk$B~)zSDp36+vgYmr&`KBu$HY=rBj zwnwQp%Dxd~JnL{cklKLcL8lBr*0AtVgqb8?Ev7hV|Ng_yyjLe=R=E%yKPg}Fi7#CG zo>55slnK^DQ_*$wz09v%CXN+B*|UE4>$Fp`_4v)JAaIEm)>kzhuz$H+Lcnu=3rau@ z+q3C66mikr*xUfAhk5cl9%{-VR|*;YOgpH2s|i^KL;rHQ_;z|qnSyc@0Pr4tqeYm) z_1QUHda(B%_Sdk25dqhU2*`_(F-MV*J8o{AL5b2|!`8bj7TY*x!hm(K!njlsPR_~v zMklE9$R*)+`VF>QuAgD0gk9~xR(*0qU&s;qk06^?x8f~5kASsz;smEPev%$~veo<6 zDK$;r`e}tmlJbrgk@grW@j5ZLwvX));2PUCHlxKl!q^;R&d6=8`wx$gr}J+Y-(Y1m z5zK`ISk#MykNa$aoRi7v;o@?6GT9}IzM707v=1KO*bGc-qe*k@3waAd>}4-7zB<0K z4h2Cb+puij6u>(9ZtBWXD0D27O%Wc`Zg>sg^iMM1Q*}?BE@q!sQ00#@3ciiRG+%|T zIU|c%8@yyLVgAf1t`d?ptcsKig|1bab z>a)N6*Z)5J%b)(T`pci5e>VQp|8x0YPyYApFX!LS{`{}6F5dmi|2X;2KfU^J^2b-R zliBx4xmSPsAHRF|pMUtn9q4nO(_<8(wdb^70v zC1*;sYtBI;Cu#Mw#EA-zSL@4n>TeZLFT@RdI{z?PPS@l4NeL4rzM3poKq1 z@cnu+XMtCf_fwd)E8mLnqkl-(01684;NPvM6E#H@C@b;ov_scv>C4Ib!{YSTn{ms< zhnMd-Bt6YlPJ}wTN}r4avaIBV^0I{Nu~xuMS=vK7H~0`03-(!#|Av@6YgY z624>Dezy)@dh|q)XKaoZ|amY9bN>eYy07K#;Yc@CcxH=PnB!qTW!>%A|)YRVwjYw~<#I5x6A7@M?HDv2iv4M+=@p60)i?Uc< zE+@OajQ?Pi6*(EtX79!)-)NNKpBsUWHp6c|(DyvHO!U{rH8jhsz1El?^2lCa20l{!0J^+=j=Ak>d^Smn|E!2(&V$5)1RvTsQBv5rNWUrX#f{-B&^IQv zu-tLrHH+Od_(MgGL=567Yfcdy)TIZ0%R9qBh>S2__U6XdLw1A_{b2s$C$jxuek2ZY zrLe-0gd1Cm-x7n=IW2@M2{m^30eWHa-E-`u1c#2_O=r{f)$UMDQBz#Iwkm@AP!1zQBZEPt9GeRZqC0$&u*=N*e zB}8_^i6MGK1z$Q)cyF{p&;zU&Z|@+J@ri+5M14XoGL-@g6Z?c%;-vCTyB8dL;t;nS zduW>>LpY)FxLR39DZcMUj6lu&tK^W5Ar98y4QI?7RV4*{?xzfd=QC&-PhU?Z^C67*@-AqH`65xKf=bzF@BXeW#ouio8D2ec>hynD-xr^Na(!~DCN|9ok9?iwCUBq zuwnMSLI(}Lp6p8UV%noxFx5AM)gS5HHOuK>^<0~+WaN-p5yvi1l?{BXI@YT_quqoH z$VP+h3~6>RF0usy6c)KVLZ{`5afuceRtc`>_Hc(wudpH1n6Yz!p6&Ioi0UpZS^c8*98cRuu$S zj%tcpIf?1u%*cS~ew8fU^Oq$L=S23Wwcvv#O4efQt=1ieWQvsuRb-VKg=7O?<;5#u z+?+>-s@f(%;nPT4T~#fGUR#&KFWfm`qQfP%Xi#xuIIOacOzIg_v_+?jh^;552jk`J z>S(e&#||qlpR)_Q{Kv;#N;9qcNh!ur`<%tIv7!H>hRwS18cN)UOIr2v2?sHB&RbYU z4#N^nrCBEylB{h!J;hQX^VNzRS~f4dcKprc>KMC?kOQdbC@3bDJ>!9Bhq8KTBBhgz z9*VLA?F(;@;vJkti(Twz&S$K`&(66-RoTtS>5I8{6=lpa7g6S|nU*AoYBC95@DtFg zO!e5A7GA8|jT`hHvk8dtqbrHFx*?KDUj3 zbhgt>e5(@W=C^h!wYnie(e?=P3jm-EJS2^s`v7 zBCY?*5V=#J)fubn4a)cGO1?3pEu+-h%WJmyaxkeFqaBHVLlc)W^ySTM(ie->yCxGzs$) z!ZIA!?P6uE$HIBrx^e9?394C zgxjZmE3`yq$ev=81U5!Y;f^ono-^#YS!|7xAgHFlw^`1KfJ%t!m4=$JTuME;K|;}F z_&bO65_vAn;ing?Xr+uMRG=p)&2IWyjQ5h0efTkhNHUxD$_A>UgLL#Mc`+BAka!Kb z+2VwP&{jEPVi)q(NZ%fcDi=BDp_{0PPSd06*>u+-(|fYfw>mY{S8(C-E);<%#}irs zWR7tZ?TVFnH+I>Gx*@c2vvLw#Q~4TD6Txe9UNv8WgQNVV3cccbhM~2>+$0M}mY*W7 zAwv|KQviNyOnPLJOdwH2_=}%_j7&}~MxL>$gUl9jLYA`1n1y{&u$*x?0|;lteRXX0 zYWn`e`Va}YDashmpebwK3u?1dUP5K+U_vNPOG=qRJ#X>b0a~Hfu%z^jHkqMIVn`9I z4P3+B*O~-L}@jk5Z~BPWgxr|k3OKObC?GDb`G0%Cxuoir||&Zm-Ge&gc&h z{nVNy_uDCVV+kxdR=1WBvy_eFuMX=-Y~Je7z9@ITDI=0=5~^!?&^|Igdm^ehlKt<( z01k3gbeMG9w^F;1cwt7X*b>UW-CvAnlhujM7)W{T7oZa;C1v&+eiquavI|uhoRIN>@5y zQ6o0DE>W7zZ5inBl`6FA1J zy%U~lzK}U_h-#2`_z4>TW1JGw9HSpv3guE0pYH$*mU;LL0L$s;63?ghsE;yBWJDo8 z(wMK!f%ntI-u-KJsvxGDk?L^5@HYo)CEuPb7w3D+_vVx|j+;0*@|YtT5n@Ezg)~ag z9)?{-^F)p#?w<(MSJ|R>G5=I#hyd^qQW76CnZ(c3t*y?M*l0G+rv1&_IU=KYOFgmP zxeH;ej#`gpec8cBalDgjJ6f0HGq-OuVQOchYK>sTIvYv-FriabzRKa=hLcL{g@!Pv zQ)n|RIAk)BvW-Yb1v|fUsH*tLL6E~z-+{d^WpDEH#qwPDuW(b-Vu{^NBw2XBTahiW z9RXukFShmaTS~_i@75GY<*uX&fS0{=EvAy$EfELNSd39U1dQeK2BJ+#uV< z9s6|jr|yEggGEc-v{sdI85(13v9S>XeTt2X2M|p+`V4L`cfQBE zA_)WpaikAE$luABy0=X*kw7?|x(dveupl!s-lAr5w7y(@hzyH;QX8@CzuY{_Zo{u9 zP=9nhz-8L26_%4jlobpsUJ10|?=tdIQo>p>fA|lMs1bK%gqlo&^erUoOj0(&|(TVEKUnn2G;`;hbEN16!g0qW<6U+5HKst2|@U>4;TUN zU`NlAEE0xa;_nVELJ@@+-{w;=0{7C6;XFLCc77l_ zWX;3m-|m5x5?$v(T2TDng=WsWo1)u|YWG`)Yo_y>ALe_|uHVro!|0eR=ut{_jxNFf ztt`l>QdHxjd&FD@@lUiG_^AXz-gYi*3aq&(B*TVzikJ@JQ^;^0kn~jA!ORBN*U_#F zcNe|WQesQ6QFKy-)dX3Bbjgc4h(!O<<#dK<3NiG^em+VFXG-~5=)w5~c2v?#_LXGp zGAR>J9~BB##v~B0G~zyd30ZKwgmtvSZxDwCTjazwA@=ILaHY+;DeA|dh*QIUS5ROd zN0lB&AYhu;!yP?^YlLga4MG-|h(>+L*$kIxI?PfB8AW}&q3vP`wz7kr1D>Z-=@Pa4 zAMR~Ul33k;V&~K$uw1#JOAy&TphiRXjjTkvM}55_S_Q+`hsZ&+#?5oD?wTNVcs8Fe z7|sCa(M-=u9)q)Wz>*#joAU1O-8q8+sw zK}3Fq9*6^UGG`^T$9IN*OSDgH+gxMm@`*4U#KLZN#%VHGdcq<~rftZ4@FpaZjA4LD zz+$y5f6qmwg)VW04pZd}kGyh+xK<|)(%HmzXiza}rVg~u4sm=j*f|j{>6PvN_P4)f zhG6KK-$iE!pwsWJ*z=!E4G+-22z*qSBjNpC2Es*W*mv%1L7o0GbU~Uj@WYjTpPsIE zrcb|Vl0X~pI`0%cq96n|ae*-MlxS>EV@M63$>y;@j-*7G?iDLVp5^RL(eSJgn79-o zfwD%hS0w;Z4Mc-G<6{9?sAdPS75U2sDJ36uV|(Re!)W>$_R!85uHxZq$H3HrjPrqvNK4J0I5Ti(^F9FQ7;##~5EQz4RvN23*BF%6`v^%cG zPe4B*(ea9FNs~K&H*x&nV+H+-Q7%-JQ9z|mG!wpzHDt}=-)amcn$ot-Cat@nmNt65 ziHcG7$Qpa|uYRcmdJA&z)vLih;{qa)Y9c`^=h^Ctm}Sl`rcTvEs8vwd8i7EULRD;9 zKkIPX*?zS$=*=NjW})6M3LD_7S4XJ?2djtgUCu;OpwDt{9!nu&I(W z+LQ6g2Z*NJ!CEYX7u7E3v+4YsJN1?KYRC4IhHj#N*n4>l%$Muc@psrh($ifSJsQ8& zYPJd1FHq%hH4}8Z2mCg;3F*^J#y>ba!_)$khmP~gTX#8a|pNO2D+r@2KIext-wNM>VN`0Qxx9MGm2WSZgnaeqYAq7)Xa&7xk z3TANe-4n<38ytv0I|e3PFL=)=l7E%*%-3=oFr0`%mc`~dH%^Pmycjulcd-gx7o!tJ zp1gPH(!sqaDH}{&=ae@^=0r^E`adjnLv4B}nLk?M<=2HedApU#MAF*L8WLOH7ZflJ&a0m_TNKjp9px zY)R}g=v4Lz52;}BM})mXJ~nMg7+dH~8x*A1k!v-|r=5>rN^W4iXr}p#pY%!kOYkc@ z*NLI@8zd~#D=?dCrrRo+Ly22XxXl@*YY2sjfS5#cdu&%W%vzf4G{lya!rCQEG=;`n zWFvX6WM88xlPf8XzKn1R%DJ85MU^1Mi(tB@dOODqDZwkcY)pIDMkIsCLMzm!4vF{; z`RxRR;y+uvz63B36*$nn?k~Zm(o%o2jSLYI0^_r@7ngEMQ+;$X6v)8$Won~KIMTj_ z)x}k;z)wM^a$awS>u7?sVWis97yaX8hD#KfMz3dDnOBVKM|`U?C&C8bK`z&_U~%`B zgbNihDQ1IR0h!jiSKmmr4R)?*OT89#u3y03B8@t6ZT&`CkwLFJ{KI^pt&amn>2QBM zBrs0I8G6mAt&Yjt0jF5ck>$cexm90tGLk!jT&iO!cQ7&rbMr$jMNc>rDw8;ap|B^% zJBOU_9AdaBqUn8EotG%T&~*x}K<53fSylOd`zZ;8QnhYLLFWKUk$A)feoCw2 z;h56HYL4rjZ&Dm=Ly^zrTX=Z!?yvr|zX_8tsQJ5&`g7w%#lz)2H?P!ng6V|lN8<@EozMCIP53GuYzD{PTDB{0e8Ihp-e&#(Pxnh;{KJi*NiVY z!SsiCU^5GzIH9ZXe`hu_GlQHW>pNOQhG2Ypip!uDxa-C!1NtvIHnF3kv`m@YtPxt% zDt9*Zrqm~~ogNdNUA-ts6xzoho|sy;-2PZ5kM!Rn>Ls1^)}N#lx$$b(zo^k~xNDGr z?C=kW3qR2duMar0sMcYMTGJtfVv4ME78~o7^Vd@7qMMrIe^@(aB?VBKwS%}nWw>ma z`9=*6a&C$f;G19|&ohJk%Y2|fr0e;Z1jtVuJtc(obkfn!>|*5zHpU!lTo%s>rQkR- zgyuNGV4YOer>zo4nLT+&t?S%aVL-v6hK6+4@u-JFgxZiHgZn&Iu71TR;rS0yERKaD z&s3w(zLtv?5Mv@j4^QnyNds2t)Wj^%gx3kRP^|-BZT^b;~ab@lOc1~LV!bBXCjdl$J39aZ;1yBmvmf<{82`(@M*56LA1NFxJS zATlKGAYF(yz!`-cRGmdxH`VZb;y-n!0!_$9KAPngUS#>sF7+t_!f+b)!o4@A)n$I) z9RG@R)8EAylxD@2l+ttTPs1VLAEt6K^q@K_`p6ITY7G6+Q01H7)t4EIRx#~$D0=M( z7}iO*ApHtqdjLFqA-99g1W85&I#;xPMf-O%0+kkk+8rB+sZ{fX4h7&VG4m*;BG;@TL3z8KcTdIA% z3)jc?b!2*NEXWm3OqE&vHR3UKdX|WFB6Yh6rO2ee#0@H4>04MpkCDMWzs&x3x`+<$ zEZ7`rWAvai<)@-gi`W-H(2_psFSVimX|4@q?9}s*GovtaRBxYDmfUetqeSX4r9g>t zYE>@EUt_(UDpm}b?}OE-UuM}oig8k$KBGlff${0nxhMzU3#k>AXQT&xdiWt`5>=rI z3Ot^i%y7ip{JjHfYcUDAvjLud`4070D;$2gG5ovLIEc1rIH8&d%M}4hAd+n_RH!_F zsg|Blk^3g^)FMPxZo5%tshiUn$jv;|zD!~o$YDgJ$-I$tij>B7-79`4GkI;`!<@Nf zTYCTwxL!2V_=KdOmB5!v?ik`p4u23;iTIZQ_fT$dYLzIfHMVnKbGVCn-?&9n<} zN;v5IW2S|K36#hmGcDeW3aQMV8`&Q>nrV@6ajuu5YN(&tpBb3^{1&4H#jCkVH7EdY zRu6h*=JjE&{zdhfIbUW7It<6QN|W^r5&scQNlMS_xhNzTKha(DL)x;_!|jt>GRY;x zi)iB7xUzAZP%obrmp$~EOV`BfRk0d;eJ?9Fh+ZDR?;GY__4Q&e-J+Iy?p4wzHExT* zJRSG&@FD$|rW1qc-+dE7C@cna z2qCoK`0DZW{K;f}@*$`6HHXy*KSyeBI{D%W*HzCr;>vyqU0rkvR(Kg>z4pCKCUfR=>c+pAwgyVqhs zwr58nejmbwQaiPig4S_$E3+5%+=6DVlK|bqgi5`+2{uZ;xgFWW$qY;oGR+MheQZu1 z$yqCsZYyRs%KDqh)r}}?z`0rG@FV#5s;qI?>9q)Ahd6#8A}PN-b^QouzfZ>VJ)FhM z4v4pIV%u1cA1|+7T)cg@ct3^niE;(Q&n9QWY>;UGTi3yyn7)%7L1E@`)j1M47IipmlphU`3h=%CTC)ijg z&2X7CDaI8}Ac5n_rfcl(tC$$+?U$1!F6U%c$}71k*JoU0l+d`NLp(KXs`{=8KafNW z0nyoQku4)oY6@Khgl9ZZd2{n7uka>7j)=dOGaX18^vKuq*4@KRB^f$fhZL5kXu^Q=ra@N&$aU zsqyNsYf5hUs<$;6do+`=YNC3YSY%ou)rJ2cN;uIz|G-N4g*j!bhaW!b;7+q~eTCew z*RHW4-DrD^^YxK6@aop%hIDYa%Q^FUpdrhX3!>iB9EImenHV@=_wPR>y>nd#KQpGn z>T1($vH0c*Rw|HLFymQ$r?2Oyle6i3a(WQl9PF#B;bSS|sNQaNGjBa0+Emk>#zO2& zB-fJ8?K&qH+c1uba~!3?lJ?ryA*V*fXjVet*EsySo5bEYwueu+Qt)KoqSj}dK*No_Xi4~|-8-|p5IlEkKtHFORF7YB}8OuK_#O_AM z^5EO??4vNzl=Aa42-BaZli4Y+)BAhl)t^M8RW4;!-EAcVs`oJ8^w6QhT(A=A>*pi+ zAlcoVBh8p(1Uj;AaI{SwWOCXX9*1~Dx18GZOU=g~JWv}CmQ>hyz*sA~czwesx8IfO zy%vEXzo>sdBqBruX}mV+OCVJethljgP_4Z@pHSv#t2 z{t8^CsEH7-Le>SyjmZlSbL4>4m@a6fMB5Gz4VR2C48Iz)J5+10hTwji3M_W2L+Lz~ z`^HZui?h;J_DTkI8&(h`B6FR%LKx6K;n-}FlFC6d1e3C=N#py+bIg8zT{4I%pG{Zg z#+FY%9WCawE5t{k99Gl!_=D6pr%UdQ+}@MP>1cw(ufO{+Sx!RwK9$afxj)W_P-A-! ziOky~sILbMf`^ve7FyrOvd|W!vYb_So^lXmotP~9cxs^Y#6^~!@ple-DHdN%G z@Iz$k2XEixDb^gAuJfx+;zA|2>f>?Ml5ixxY~=v7DAYQnL(<>XcHGd`;lT!k_-$lF zq{3E)gf)Ywv-5KuS)J*s$}z_KTv;iUmh1O)#XIA?F2V-&Z*f~BY(C;nd+>R#&KH*} z0T30I&z?<&wj%e?=NF5MOJ3pvU(c|Ep5B`%Z-b4~^M~tmq#~RKuQ6#&=6*5T6w5^~ z|M(Jz4$a^0;gI;N)nxgWM-WZUamyhhJZoH{>d$CDT3kFso&ydJ%}`cC*4$BPnx_$Q z-Yc9a_w4U1x^HuWB{DX=INZ5W%W*j}++LQj!Ne+dc8 zS?i>qOdq(UMAF}1_;NNs8BWH3*5|}#b1ZhS9DVUMUvC&qVZwIhINNN8l6qcv#*aaq z*V=SL|47(QBGA^-KIYmhW)IN)a-OKnl8N(Vwjh=VyYmq;B-)Yj-PvNd5R?_NwZRAQlKlVzGF#eoO8qvH$pAW%dEb0%^ z3rGvu>(Eg9qdAjza?0O<#li2JK8bpz8o?TIWVF7R9$9*ei6Nj81x+3dl?tssK1L$% zNQU15K;FeGXhb^R86QjH{|X4nL8Fu_0f8vEtmo1{<`o699FMzgg7L9qA8$Q2^!NA} za@ zRfT|I>ibf#zZntmSxG;PJ77ZMWo@hE6TXUguX*%0)ah~V7w1HV6E6%gUMbf%O>rBG zlLz}LAd5NWII~$LSGb`GO$1KI*nFkcgA<0!2k6yDIzHBIjr^kO|F0L$v?f`EBk(Slv&hG|r;fM>Uf6*6912~NLdax7Ty8PRvvE5xe_o`{f7LFgSCWjvr@0T>m?Q~Lg19jpWCI$%`Z0K*mX z9H(uIs7(xgrDE|Y0&0SLy#KCk*~8c|jlH5t9DEtl|Ks#ojb!QCMp$?BHW55BLLQ(z;K`U$ayTbojc{r_ z5TH_-0}xRFyxbqhPJ==S<8_f7>7_MjQJSk{jA+Vh+V>4SoDyVkzoDR$$RF{e$ED*o4TY22=Sx|wJ`wFRN$9t@7_}uIE{0$Q zzbxt8mUE2DF=TW$?Oc<76HoHF{1KSNSdXtJKHDci7!SV2e%Uv)+&eDB&G0La7nh_ zIWBI^RjQxP#~*P3CtP3-p0h2(zPC&7+ozBX4UhZT^pHXxzI`$HeR=4kp3_f&)D8-U zf7SMFtt7~j#YIdrMyN4`@SJ;a{fhDnkYr_AtfM#}4eOU!)IdL^fw z82R!>QoCUq*-AlT1nJ5MKWq3*L&!q+*GK1AQpSfuJvvslep=%070fEKRl^apr&^2H za>mQrG>v#u07BW?ytdyXuAhY}^j{l9zAQMKFGol4nz~K`TQv_fwY|52KwiZz$<5|c z@^}WLghjjq%TOY7)Ubh)Dd~-mBFNDkS;sO%QRj_`vFfG*tKqA1Sgv}>buvf0GhAe6 z$33tOPn}PyEIDqVPqI5PJRX*rX`$!vS7^^&L^*FMZDTW~L6ZR=>sUtub@Vo=WlO=} z)o6J(pR!Vn0_iPiL@*+sMfQM*2eCTQE};rT1JR9|GAZ=J*gcv-`w*W%+VEFKs+L@{ z+Gn9_qWK+?(>r5B*TFlCC}lzr#uE83RQrrilqH2OwVM+E@7Z`hItq&l7_AKK3W>_e zZz^t*8ZLzj?61=KV8x&?%N~Ti0&-3V`g%1TNRTPMoT?p(bR){xRCR3ER(C87WacmX zuQJYm_=j?oY2);lvQ|yJ$BQRt;|cNuFmk;Vr=+P5J>sA;C~ zBEw7v8797|tJ-=h@T5sbSh6U(9cEb|AL7Xc3q~ecsQBwQ%5+U9F7eQ}V?o)V)OPR2(9sT&l;3XX5 zt_J`7LJy1UfUeC&6Xt^kKK4u+dJs#O2+Yv ze8o=_@bR@8-kLC!2#HT@3d9kzt1}2|77Kp~GgfCUw+)&*=+tWK1uMmiINX@KLdkWNOQw=ERkM*+5;}??M!p|9 zyFRl3jBTdq4A?t+Cn^tb!Q^eKVs+yyVQp!PMY3~kQ+*j$r~b>Dc0mdL^=u~t&cCfA zbR$ITNX`gVUZ;Htb<_JuN~)+jwwE!#>JpOU^EbPC=sMB>Ow_2 zLpkqvh{}VKUR3!=u`xE3tjI;sLn~-5^n5x#slHd^ro0nB&Jyv9kAj6hjcFXG zXhG?YID}|8;)@vdcg)LadrqfI@n z5p`PIEQw(kSh_yR?{G=T@#{sQ5APU-1iD;YN*7j=y@5@h%m(EFX1`qar30XLT4Mcr zceWhecTG%tL-PR_qX1@+<37SVI~SS2ipoO-5I*8RHbLfXr~-St=oZb>q5_af1OVSo78C)uzT~>p9GK4e=Kp< zX<&j1>6wEx#*5!S4gSyLN`E!12$$siY|O`{>26FW>y5(0Gt-&cFnsuLd(~oT(A@lG z|J_+a3?i-LC!~RZtye(@86^H&p{-#~euPW)B{Fh9hPe$pZVWk}_{etw>8KRPDGR8< zq0}p?%s-*@;30_Vq55d65XGW88Xt-mw^9QHa<^lA#~W;lV_PIcO6u?{$~=j+kauvY zGbS$Lda>!~!YrEF%ex|laiiEud_85RoT$2BPZCG|m*_%F5bJHuPTt`HG7`~E82+3=Z#qHrw!13V^fdHl z23}Zl6bnS%tXQ-XbZjB6R|&{?^;2U8PE#E- z=_3l8JHvsWTYw0R&v?nk*GN`HzGOJIt)~35!2Y{4oXkhVqw{Zv3nQF$BQhh`e8eU9 zOa8E8vR`EDSQqxM5T)K-T}@j<`!^>95iOOkteLRmSSm|Wm0TTouA~|9>4%G2U!w7i zNP^Z18e&Oa8)>iij9UCR=*9SJojW7;z66g(P#}55C_?dnCw>j1Zki0Mxi$c~GTsd! zn|NIz2Z!Fe2CxPnD{fryoT`GAg=fu7(pG3H2-(L-u|_{T5luxZ{gv)pxv1;56^l8* z+nSF*r;#fLKiztrk%eOVnJ!*U%cH)5$*{7HNh$lAR}+kvz3h$vO%#V(OlpM6QemrR zzJ?{EG>>X%hjGiaMWYTq*>27oOm2p8tJ7%iA5MDaj+}V!O|kn(GD_SA&BKg;KX{ya zV5E}2m!5tB;Oou22xr4oNC5(;Kw*Ft*hV|J2#(ISYc0U~Y2hUk|9W4<7Ew6nLCN~s zo^D3oCmRS+!O%JDyj~z4UWEOf_roP$3`Bl010lip2A+$Z-oBpPEZeST-QbZb+0D^s z2~Z0;LLLsiB`(s^x1}@f*sOdB;ETcEd3bs={eO?7}y>=Z%(<^cUkF$vtN{)t!lgW!Qox3Ryy^Rha%FGR8W6ctE&s#oQ64_^{ny2S0uo zPeua(5p4g}A^Uu1XZP*i=FaX`KyxpGovSfosL^d_YyJ{6`!73KW33H zB*2$2J5-_^n~v52<bw$*iz5cpr+RikCO{a|04vF1)Rev3H&7I7|uxb)-v7IAihRi;Kr zijCKVt20`{`V#)a;lW6^i=|1EFR}gO8h(%5?Y4|pIOnL_h{1&IHuuRT4$-QZnxC{W zLSwzGwhAFzW^3EXu+8q{PPmAD_sg)#{WBzpG=t$qomwj*Ha{IzBB8^JxnSt zh@XQaBH1$dw6kyKv$Iof!r1kL$3vu}=_gFq3fm~LnH&Ub6)}q#P7eGM+M^luuEBfo zm`y5BgSf=-kMy;lW}2}wOxR5ZC@q$Dh&#ZB2>zW$2IE?soZLCB2$Y+IbbjPSv7Z^8 zQh)5&xFB(2tJcsN{Cxd9U)xVua-!oBD23rUbc08wHt;Lp)!@bnUFpLr)^l!SRaz)B zyBC_!E^k5|o;E`Zre`vV5P#I_vrUUr(8O6xSI#BuHvTVRKE56D-nxwB&Kd+Bw=a2f z5U0^TZChz4j8SQ<4O`s(BD=ujFSch5F|EIFzXQh0k@TmEtM~IEgCLc#}kr@@7hZJk*3s3I++86jPs+V#}=KjWUW`0 zo;$Po_&pydhN>gVs3H{gR>J*KqEYqi1c3sC(cJx~n5Laq+uv-z+<5+W^uos=9Q^nMgB)NDUgKcrJdn_rv^UaU^a%=7_~-65f026KSc0iIa<6N{phoaA|6tN z^#21qH|p?Vp&cNk&!QRuYU4768_971r&HCgg;ICosGx!&t z`V!8iXTAxt_r&`xsnJ+8cOhiWxrO$V6Chp_%0bS0_X^q?M5$0Fk7Tpxysp949Pe)V z$X5^@fdLk?T<}y_(3xJTA%K+Xw1!fsNKHb#wA`-}y7@DgQA!xy67J7-fh`FrgGj3g z&9D|B=lv^@!onJC#Q;R~1Y+nQZ=Cj(j=*Ni?W1Bli}tLYVytn7+m&(s=ca(`cjbU; zvZP@~WFZyyu_a9r$1i6sS7rt`;8oxD*o@QOIv}T>1M3J~dL1Q77i+TE+!?{V+KiAd z2$eYYexc+_aO9kc#AI7&KOI*L|UCQk$dlW*&LQFc5 z-F%IYP0aAOUb(AJtJo6=Ma$Fxl}+c{lhOP=s2vr7`63+lgV9=?vUAFT8bEIDwbYSl ztLU!$t+8EwJJKSHXcC577dR9*+Hp3pP-x>Ay9y_8?D~GH{359hzyO^ zd3S*l8-m8gydkk7yU(KonDHw30rq500;=WGm^f&yh#5UILAR{2BfT?T=)iVP#k7iO zT`n+Eh>CKHSrxyqZi(Pwq%jmTlQR1YwHl^ZwCYwSs(wH{CWKdTJyoTzPvbjQh+$l^ zg2XIIvT2y*Z2IGTc&g;Yx)zZ#nkQ+$)J?8UwVC?eZRFkGz0=X*_;{@QVln2lZ$h*( zP;(*G&S_IDkeiPeQ{A)T!d&3K7`vMAu%(BG_Q^xJf=RJT+>vCcb897cv)>Sg`W8-! zA(kQ~#BdS>J9kg&49OTt1Hi7fQ$=T z^_+O!jaQ2;nWB&E|gglR?X3YP@P(;Uy6qQl}LPa0M0~ zpiZaRe`cpSG3tix0E2$Bx^px>VW-ela-1p-=!nKNS24&+(FW`k1Ha_# z&XIjNU!D^hYsO1a+Qd?)*TGY8K?7)zz0q>#_!t+wc+U~ObFZ0U#wKR2l+7alkzp=( ze90N6YDZBE)$B>T+7_t`X?l%p8)Sf}Z%962-2&x|F$p|OKY#H*Pj-Xpri0z3gzN4M z94Ax-d*Dx-%NS?{orIb6^p*ihIY2N)k>jY!Sg#8R<9@`&P3!k z*kdYn?tr)~k*lYRL7|M3QW|6Gf9Iwiyr?hIx$F3a;lc7V(FWw_s?DdxLEqOZc`dJA z6`W#${)S&A){gotp8HZ`E1{1oUm4AfvDRaS2+F6-=Ei3Oj7HGWp!2GVqSI(WB>nt= zvng4DNdzSzxeC^L+~hHE%VtAjZFcH}OgYPgRKBMKG^E%;y_6*T-fYjx{`}v4{C^%o z*0o3i+y8X=#{W- zSjAT@Tr_2<-f9zHu0O0DrZjC6zSpb+Q2n1CV!Ly4I$MlnPm``xA})qYWKM1&cUusw zttt`nG~%#Xz~SEMQmlH>*>C<7om4Z)OxfQ$4(P`lgq7V#%`}DMLP)s9N152oh9gGK z^|GLAuX*)=OSO@&?l&}fw^?#PTpVEMtutIQ7@763z}u`?N+Yx6i@{f43?ASnO>P#$ z_u6#JRD~*i?Fc_^@ar0ELU!q6F~s0wije^|AuR03)Q|{6$kd>5Xf)6Oy{}LhkQ|rw zM=ume_7e3kc~8P2y2sI>`az_8nF?YTrv&ap7HPpRp>ze;go=H6Cu8pQY1oH@%1#_b zvw|*e3PW4XQyJLa`Yz+F9L(C%Rp+LZD_AGyuQ1Mn%QAe{;5EOe36cp96%~@^Du&NB z21CGd@CRsXahfN{%EJ2h8ZI>A?t>x(bNK6342ACIz*HrX3o(^*3XH%4QzDyfNtXo8SeZ()R_|?%XnXxf{1QG{K zqKHSP1HUMOEB+c>363oC+h^HhiAQ0!XWbwomN)}tlo7eGWBV8x{`l!~p)yuWd(M<} zCOAPjE8-IhYy4OhqD-O(ZBfc=wgf65(MPOusJ~+23Iq4K;_Hc60PyJrEuV)nK3Rxc z*5r#T61r)1zpJ8`b=f6=T9qORxhrAz6h_gVZks^GC|a2L*rEsNtuG!ZttjeJr#g@Z zs3xw~b!o$Elw#{a@@)j2(MUvBWyXjP`PO5$buiyd?tVYQ){Gd~G?#AAi_ zSdI^qYBe&kbN-jOw`EzgrW+ENi#_7zl&~6fmyjWR)(X!p3!y3_WoN0z<`@3gATptA z&{4ecjRL_IXfMvP%kd6a`wtS~y#?z-eeNZ*h8p=VBa_!aPoKF7L7J$H>!mCTTSX^O^m zi^V4siEO+Hr|O)4RJN(8P^Nu}xOUsRT`IKpqJr>jZ&!8Q^DZ{If8Esy?>$|K5Y4>j zwM6CBgvO0`L<_gxS?~>`%9Fw}CJUrhHd@Iuxd7jpz56d@1-+_gnkTVB34{VU(R}!~ z9x%)h3{eDl)Z@P7qIS7SF^}YBzSyi)PLOoh5Oi$X7h3JrqK3@Hl*9lYSD|mAh;tc5 zHCZFppQ0AGkD&FK99LD1Ie5BD6_EaaihNTOBw+eY)fD4dcdkSzyxTmF0L7G29NJU3 zo_N(D=hK|Am2@DCh)JuEr=8*+Bt~Fh={=k9+Drn;vyK0jq6|jlZzcVQhA#&#BvdVf zFV4;blV;==AutFcDzTTq(?7r#*4TBj#hVv{lyxoEzG67!9M5kI9}H55Z(N@ZL1x=5 zJLsXHN!R8A#K=zcW9OVfNla}%ff=TD$#MI#62>Wxb{ab8mEK%Qw`;R1`-HgSTL=cz*uI2?I$tQT{Ipv@Sm zyD}l_*Nf~S&X$D9g6A*654qNo9a-V#bgr5U5MqabAP3zN>rEy%Cq+%K#C0lYB(}tL z2vx8PK9v-JWQ+018SgI`9Gzo19v==&4Z^X_haU#-&IfPb!byl!(gB!pAO`8+bOv8a z8k;r7|IEuxtO~JY>qRH`?+LhjVAPh;D>HWWhOe^?t$)+O>sh|UZ7u6p8YB!E__=Kl zQ}rG6a32KA56TN#EAl;x>Bn`jrgbZG6o~{34!OVrGW+D5Al#xWePp81l*d*skeHVO zDa=43Tlnk}`?9WtFN{9}b47^LA`3P`72RYiJQ>7ZxM9;;h8LN(`DrDV^S@X>W9)gt zaeG3HbR6s_w9w0L*D}hJIWnW36Wu4>WC+S)l=d4@a}bEyOL!Q{2BTZ-9-l+``ON9*-+ zLc1plsBGh7O<#$26J%LqWl|4~kMZ;@dozdYL6|fC;(vFDh^!=D1E&5mR+9d!`PMaT zOR&C==F6sjaI|p|3aIGPRk*AFcru&)@Jvn!ZA>P!A4f;8@qqO4c&ew&-MKS70%xO! z4)4*o)Yqk(WU9NW10Vp6JBXbb!8Yu=T0%$|SyI8l%QSJqR%F_oE)aTeL1KuxWm1`n zlph~F{$X^!k}2&V1?Wegz8Lo!?mBq>^6cc@2xp$gmA;zlT1MzH#5pO^Gy(7MO5LW5=I$R;cXYN|#0LQiXn(7Brkz7rWa+ zjrvNyG3SFD%etN@=cB*sl$mZygDGCCQ1fS9x!w=V6#lvxJ-ujybdkI|Nl@sg^YKTz zIF8-ZhJ)ln0`i=`144G-FWDmg>^F+4zF8~UT`QC4`rD1cX}F{td1p-T1CPYC7`{}~ z+19f1q7#wSe_cpc+80b`Kax8PhSAY|HL~CQ>2d40x(*H*i4Nm+V7j*5_nWMD(7qH` zT~p1OsDqUgmGWvcwU8BYXrB!wX+ zpdUN#BrOj&zlmR*n2NJF4hsK(d}*{aI{AFs($&t zARS*%F(a~w(LVEYbV*#{cI5j|6$Z!cjl^G5GwZii_GyT8Nc*eo)~x$NC@f!UR`*n|^V{1p-6u8Nu21a~x$^AHL&A z0%&BXiZex+o0arrJ#z;*3DR%Az3D^!H;%dj_uoh7dZVuU7*@Q%#-?8DEb%v@HP^c8 zqnztsyW+Ir|E4=Dc4uFuY%eR-1?4y0IidkU{dH}+Q?EjDJD^{Y;w)@sxM-Pj!e^`qcTcVHf(uK#+ z+mYUxANJPAcr23(EiQmZE|_5XDybT?+A~zI zrEs9;BYWA=(U(y6=R?H!Gbr+LB@{nn7Fr-G_OaTpBdwI}kA7kTNw5mUIe+E*y?Bm1R~`i8OO84Slj=S#uCMz&Nkb;6Rs~Q&?|2WDBJd_uq2p<{Kfx>hajMvk(@zVSgq5=okQHxG{i{Zweund_X%j` z_l=GS<#+@?51=~-VjZLeZX~EC?%*-g0+8&WA6GgYFWNaWz&57mMhiSEz358(@{|B6 z_mO;sr@Wuf-j5IC-A^X;oaJ)fb&%17=*$})Iv={=gRxbma3>RKNzr`EF&^$O-|G_Pf3V74w`V2FPvm~vdb zaQ>SLULD5n-rB#rb10dKM_>|{YlbDR+(2ES+0kij(3dS!@|(5s>##P~STH4`)45){ zr4)WF)a64$?nAm_1X&D!rCNn7rpn~2TxV3oH`SeCK&GBVcEo2Hf5`z81KVMu9#MGX zt!#p*JLKvsN*EZC^I)i_0#$POkt$0G7RxwuU9(crWF3n{JnBe^5}AG~Go75E{vv%J zR)jEjvJkk3c#NW7l~im}CsFR%m?N!sNs27+gzJTc3SZc>T>JCoQs{*R<8uG{~GaVZBa*-QOh(oK`|CFzQ_Gc9NL}eRWx80DF#jme?r~ zGu!GOL5tc)gOm^~Q0YBTYvA@I@jeOKi;(Q;wP=InN}`w0l@_IMIaUuSG-zu7d3N=mwR#En~}@|NkdT;n7R9?g`SaF@S<0VpN#IdmV* zrs+y?W;ihEEM+%o$n*zLO+(WI)@@m6(Hdnn!JxtZx{1c%LS}$YzM<~(0=CKG? z^&kFXEELMhT{$Qs7cb#%6Bt*C{nwF@K}6wOcKb!BJHP7EjgW#IFQC^#r{TU2RCN|; zidAHxW&pbo%sw5T$PFF6nuI-3 zN**|3oMK<3jIUeKH3@D|gR)^^qIY8y}mZ>TdC?DiREKQ&4`Vb8* zEEP%@pN0_YF(vI)BqNki=}|L+z>cjW9Izy59HtrH0gg;HYalnL?0)Rw-J^kP zCitU)>;jT(VYRnc_@5<^`5M>Ohv=YvGFNhGn`gTKIdmxKwBBUn7J&%nA#J>PiQS=e zsD8LKPR$oFQ7+2}W4Y3YNW`ub$nV&2uvbD{I}5w!tCZLmT8DSr_!w_qPnb{Z1srvk zXszjiV1T$03+@z7hb0!t2-M9*JmwoXn&uq{gIamaoi_3u!rBjJ z5)jUw$qWsS=d%-i<^)e8$&cM{cL!jJ(d0PUa;H;phv^l51RutW2aoyX+tEalEvEKr z{O)l1!7+o4siO7GH?D*o;;H&`yoSyOP{YD}!;hhV_PNZv<@w(t6p&u^oUeckt6 zWhlA{cZoezb$ks?_?fzo{B7XD?LybUF!&N{IMK1Va^h%ss%b&oJ5dzvG0doMCAt28 zsn&_dn?L=9|NLbk_qhFqZa#(Pw70#|$x1jKf3iFTe}@ow0|AI|a$@PJ@bN zw`$fbPKSr1Bat@lTk8-QhYv(^iAj6Q;e7cVr_mgA$9+&!QAs`)iq)MHxdZLR>`1P` zs_hk7EvzOHjU^lwe%HXWt!nX5FDG$CIY`-t=huUc$#__O>5NeMUwsYHvRWzxOJo8A zG9diuM;pC&8?=T(02k>rr!s7KKg{7JFxt0^vSFB7sUVZ8n|Jt`HR{tTvaR=;v_KHYOAyl*CE}psQ&6xREc+DH z#d>)Q%l_?%i8%1*>MRf{6m=#QRjY!q_}?YQu(6=kdN`R)X`*8wb&MT4sEyTkqKTU2 zx4#?wKWZ!$C!zn_M~}YS-rIh%{d{}>k8fY>Jl%e_z4hwti;ca1AKHg&jmchT4`U^=pgWlp6zAxOGny@S#tHa0sLBo# zik*eI3PB1)Q{6^|2p4jkl0|f%L#aCcgojDI)U3I#(TJ(0ql?W$=S7h5{k%UqIpuX# z^a&yr+Sx?@FeE=eMuxe%4DBD?=4l#O`Tt^Ork}NeD?t1P`JUL3VO|_W!6olhKRScw zFL1m-g5m5ylE-5=WjJmL+j@9{0N;nxU9qwcNZx~(@&A$+Qi&X3Hz-$tCg!j^fqC{0 zH?M^-D6An(9$!=vD8xzN)Q?jzbVms8LjRxDU>2rMX$^76sBcM{TPLSW9Nr3Yap&~I zDFPK3BIE^;Tuw)BbGbUNM$5DLlobF!jqAG_a?ek_!qEul<_^IQM^8tK!}<7>(^SG4 zFP{2}D9!Ix!ll{Ue9|8Kw0h|?cJZEct&zKfkNVvUxc2 zF(;G-n>z_bnRkgv{i-y9Zd^l@v1akRlLZmKa8pd!VWhHyjaf=|ol%{bNb8#cY=@Q2gbOc(|cD?wDfWYR?9$Np-yZ=8m&_^}&`L zylAPnC&N=HSzfFkbe=kFrGfb8hPVgjk;_D`Bp2xTPpO{Tr!)94LX@QxYAf2sB1`P~ z-}(e&tFWr`7ymQwdERkKFU0wSya@qd|3Bpks^l!}CTEW^CxQ){j>{5_*LHbAnW#kG#uqG07d zJH)l-l}S&HAaRrp-5o+g;#wP0PkMKg;I<|3Q5M;@tZM&VWUmx=lc~;Y+pu4&9FQ0n zlLfXc<$+)6n;f1fQ&MTGrAjuWfzWX_&T*mmPC>AVo8ea=qp0Ni?%8bp z^7gjOCcrV86PM>Fl_e3g1@uJ21pV!E*~E{V8!U}5 zOmiu@unZ>l0c0>BSRI5h73L_uxkJX5jloRPTxRaTXA*BBIo)YfC-F(GTz0~8Qfa$O zMM8~$x#A5lq7*oRk}f2_P?{q~-sV8m&WXKtzCD#xWpC9qM%rQ$_`*a=u{8BzNOp>< zklii+kwIP?7<);3P~{EtV7dS?Pw31VABvhL-DJ`XaL z_7vLcDW|30IqO=XMxT6M&FHUUs$iN^lcFt?L_JX`B-2GLhZ_#kY8)ooqepXN&2`TF zt}krqdAiavl--fLl)lOoGC!deCq40htst|}A$qH8p2~=n9pCb|`cBu*6GegK7JdXZc8?y3=k6?=A>x|Rc`1~>R%dZCe3 z7gS#028ZE$E`WMBLCQ>Uri4Z{r5=~(>O6G<75G!Rsf(!6(ELM{R#H@H;`~OH7Az?m zwA@KW`)b7kTE;4uFSM(EZ6>XP)7cfNGc^6U#jAT?=d6GPh(E` zAv`C4k(cmCl_{ixIUn&O*j;R)&O`ha%?EyEwuh}zC~?Gd5jCYuak{Uj9y6B#2aR1C z5*PIy7Q2*h$>knmPs(JDYDavQ?9YcEN6cP%^oVYvJ8V@s%EPKyW2DeBLc~!ajXxip zF%2fg!}`v)B(ks&P`tJVOQyQey91em1eZFr#%17gHvP$PF%p6l-KVOK%2&Ehk)$)v zX`EWmqO!Bzqn{!mihJ~MOD3R%5%`|J_@A2s`g(+fxV2Bu+H;T@gtT?plJtn0{MG&4 zV5ypkP*FR%S~IpPYzMHI1bH$ZgCY_eX!yRiumFiyRvs%!nWCs=V^ig5kh+KinVi(Q z9>{C5VR86GYAx_c+A-Mz3HSOwPq9^Sy%)U%XaN<0o70Toi+D> z>}-03czAA%@zL(;!`$njR}k{AxBq(kUw@CjZr@f(84V;rces2@He39kufbj1JWEc} z0J(zT|LMVortHoC_wC!_F&a=R;z0ZDpM^i-FeMb=;N5IC(fC=GXbg>QF?l6xp&BFa z<$Z#olD8(G=gg?qai~Cs2*0!kCodWtTx9-oeY45ni#zp#E}4&-q$qO-r)5l zB?PJu==kxc1a3cG?+^rC&Hzy*g3w`& zBi_npdibIt6?s6LP3uxJ5|l};T(W$MBzqG~>kuf_O4Bw3*cNupP#uWB<3}N#W&!qC zR5=#C1=Us*Vt~J+PU1_0G6{40T#lPE9L7%?xIzMCVHjFe=uu@2|HHV76&?0<4ZzD~ z>qC(E*=m&_D8u|KM{RPzE-WCG2zDK#7sK;+qwB^=JE>w76vO{L8%`GYDbjcpc8L%f zNm9`|R1lWF?`Ht1UD{ro!oIUR!&>Wao|RD77fAjCI~36QF}0I2o*hn)@}X3;a-{2E z((D5$GYqnk_>y8I!Ue*rqJVuxWk)ijddM>y+M2PyplBXFI-5efz=ltOf!Sm>BD*KH z7FD9rRlaydqUQNEz}~d!;ebi3sFSFyn`JOy3X?3S{38?gSnq?Xs8Eqp&wrkJotvIW zN2~xAje-y({nUx3=UW4R6)Tlb9nj_G-xjm!9zxK=$@tIAV{wa6vYe$0Q!5ogYrXP0 zMcUdi1Smj|MzXI8iPL!PsaloaBiWS&vBGwj97pefQvznZDZBb z95Q9c+!}-ut za(h}xVyYwGfeA;zQ#5sKqQtv8CfHz(m(MNF!zEJl`Z^p}jYb!S7~6CKK@c=b%`Vt^~t2j_S? zd2x1nI-4U~xt^cl#?2cTXq%hm>y_CZl-PJ^!irr?8TCJ6nZ(DWzSDQw3PR%>nXn`u zC>Z`jV0-_`SiE!7q0_P-FWD|VKEbUqH!I1ZLm_{7w7RGfs*_33Bq5I((w~GdwCxkB zkOXdJ>6F-nNxLKhJy7Y1Cg8Hy36)gq0v5BCK&dExIg>lY$`S; z?Q_3FxIll=MH}9(?HV3uV|=Ql>Y<1If>R&JkK-lsq&>v$T{d7flRIOID*9B8g_>-u zi@@*~lMkmVVn)SvK58~;SyOd%s)eH&a>#WzAw+MG$oo_xOR!8)zdkBi;!3nyImJ;W z%sL9BlRRL@mu{<}Jh@7IZ5Co4k4*YMI1)8XcC|Kahnl&K94=f9ddmmVVS^Z*+=U9b z+kO+%8**5OV%U|TRyRQ9&|Ww@O%SLZfr^<+4loyHU90nis{h}cgI5)o#Gj;6PMZIU zoFO23U2(s;=d6Nzl2E7&=?#T@TodCGT_f*N&&Qv2wY(QAYbkc#5HmpHayb;E-Nm1= zeBB$_c@W$(Bp6Uy;_irrO3=Mz9gFKE1%LwunG|z*zGn;{m)JK~Oa{!0)uy=@xG1g= zz5;?-H*p2~mSi}@(=RE61HaMbJSJSwaKs}n34zg^&%qtG>T3_NZeRplwI;3K=pOHpK#g}YFAymCCs-YHO>kw+@tzD1J!TYmNP769~}z0e|^!}z<% zF$orb^z#{iEaoOIG{F?pG?o3y{`ZycM!=dZM|4=Mwqgpk&lZ{mZl69LI=D?oeCX2Br zqSBl|)3rG3wGEbC3rHV9w&acqd7Hh(1Gp>`V&1b5!ydsu8`9l+-sG~JIksIsYSNg5 zV(5bZSc=IV@U9$gj%%)FnUY?$9+7uaf!^SoT2-=8?YkmapI6OZX`OE0)Vna?+SNa( zkjud&>@M_bO@0kK#B=dP0o1?m#PGc=cO>~5Fk%kA8BGxyJ3NT9s&LRPjfYX=R%^w9%IbVZ3QFRk8Q=F49~ zq0k=J@xi3HOry1tkX<85RYzjwAdE}eAkuL#wAdKM56priu^OWoI49G@}OpEec~g z=zWWv`=VM#ljJC6QMnKw$-4>DSv05-q@+^OEGCj(c>cOJ#B!pFxx=n7n_o*ROKzO0 z8wqq>8S#62n6l|o$gxszR%lgpJLLiBkPJOtO@S%ugM+sm&}8mHLY2xr@6mxwtq3>OO(PHNYb0 z=8&q#5apJD-nO97%bjDnWDfk1r(sXX}4R_=}hkDhx(B9EF9v2_0?+?Vwb zM$YWg~&S(O}!O+u{8?QcqUkFH=0Ll&l%Nw_wCFFE(|;Om@kFD4jd#a{f%if(q_ zTp80w1SR}H)NngRBI{n)@@nc%fj3m0G&LJW7=+$0A~$WK6oTUfsM@v1o2^_8MJ#uj zVM&P%4%r>*(o%e`NQ2SE7A1esy2e(na$>=?)JVi91s-M*eUGs73%TsehiwcGum9rC zBITB{N#D+7?JfF>z*grzMxjX`H({M)eRejLYw`_)7;qH{2b8;kSc|S;0cqw#E2^8QW1|wX_hjkO<px$13X1lkCn{vW9=@%U!H+H< zw99LDt@<(9LhgHflDo`gob64f>!Kh}ml||@mhNYVdM|$0hE}bt_@X3f)SyBlQL*)W z%G;Vk8lK1Q z*;eynhp}-68{_szv#E~`p5V~RXecL7)#Yyox21HG-UjSt4(yMjx>3fN>4&q)*~v5u z9-It+%D;?JNBBkqc((`mcQG0bJ}j4~i$`C6IhsEFas0#hbaXTxKAg?pf5~58A_s9a zdLWO89lf2*-j5H_&`uZa$LFwq7Jjq1oe*&F$E`i+?5|aN(xMj|e|)lq!mnzDFLzM# zz_kO?1M!SgJ>h|rEJEm58h0GL$F_0KtB6~!bp*pwp|Ie#j4wsRQ#tkp1Au!pt`Q^@ zK)?Vuis0cyg_taYxd3V;PL7$v`_)#!EP3?E5Au!v27P$}SVtjqQ_SY@Z4zD5$m~(X zUd~o54E3&G?zGWjS&7xlo&HF<1F#pMmoQx$HCJ3>Ck6cx_jDW@$$S6(`%Tg0nmNna^3Olys%&HmeyH(0!t^0fyZ1(QI@V1_%_*s!%0Cj)=a~(Gi1x_aKhKE0- zOI=30$?(tT8#pO0WbnY_7r6{fgP^fX47|JU_KJ6-;VJnz-b_XbmsGmp$_1qQcix2q zLB(mfg49AK$2Nq>{{&a<5ElVguw^CN!E3!Rt1Jtg%wLAPvO-=z)HR68EaX-)svCGG zXV2z(-@z}Lv4=nXVi|j9ekFV@>qyRZ@uUVO36pN~3$`>flsxkZ7`uut`!`5UrFJMpot!Rr1 z#qL+s!r<}XD{KnChOk!@OJYa-0)+mB&e4Ts-IgE-;otoFsrub<^@=6b@9Cza_srdH znB_H|dJu0)6Mo6#hwid05wOl{!%Tc>+R8etwJS30@jjfLz*RlkpXFD1{hr;e+KfK- z7iY<)D_`_ud?Ix-7)=%)z6x5-s5Y~u9Y54); zx<4Ne?!BBL`$xaX`YsWU`5qG(zhOP zwIL{AT$%d5PbUJ6!%Jt_d6P~ zbJ)sfM?5(Ti4XEkjLOB}<7|9{-(TJilYDk^O27Sm_4t17((w}(xyY#s7dY@o8UOd~ zV|m9<0w#l&L5uXdM91ALurKw77qI2MZFfv&Fyeh; z5AWsPZwmHw`RGv$#@c&@a}hGg3zOfC@u(Uv@6=dI?Pj&)o2$R^4kN+2q%07kj-S(+ zJA~qA(jE731hxZRJM*K_+yV5|eTj^_tdp3|%;JZ)6q~3lRB>lUXnRXIXQJf|{HgJc zdK+G~hnc`_f`Ut>wf7dej#I~v#W-*s`|<<2bpe-H^gG*y{_#FR3xbLg=|Wc(&spN# z82QH|7l}lQVCI>6H=?<{Z+CG!LqcHXZ0Gb^O4Y9-J?JWAL#F^l*u;xgOqHlgC&F?G zFNZGg`020$ z%`Hf7J`;XTv`|cqJ67?l4En)?K$h!bi~?JkcGV}L_jq1otSS@n*W2Ui;p7a9)}!0E z9?*+&JbwRh!bj-;$HVCeS7F?i1&*&lv&!Lz(cus7XzM0C7>n&Gu77eLb|eBpoA42? zP&*sB>MxMD46|w*Ab3TT#DZFtzLN(TS^5DsK@E(REnMO4`Psx_Z`mZT_{C?DEDjt3 zg0BVP3=HdXYIkKm*iQ<~=U-|oF+Kn|G*mtczdv;uH+o#iAf0Krh z%Y8XdDAi_{ubb?mbjJ%Rd!s4e2>v);o+mTAk3AZn(tb3M*908f;KGNevqLv`I)s%| z4oBv}*5QX)eO5MEygkKcaD2qSSJwj7mpjK>)5GEEVsx}8+k=i)yVyRopi)@Cl^chL zSl?0cBkUK?jJTcf?EMGGF;dhT@WqEP#?>(guXzXY&hdBHk-Zo$4?j??sm)MtYP`F^ z*u@pG977DBj*f@$_$GW+Z||fV62&oW;JM)i_9TlwmE%;`74^5KXD5AOv+f$8jQ|&D zvNwK@=M%7PhGH7aOUqS#;Yqa3?cy=cjrJXiZ?Fb(D&%W7Sa&Sgh>VkDG=pcLLx>vYP#^?Zr5FhdB=9S(E-J@|1*r#`dy4u%gv#zCW>UBixLC3f_U> zu4t+H?!cH8y5Yz@s2=op9Z}a(X|#Sj>v2OK59`rIkBad;?ZL_EUL5NL9=A!>Y8@Zf zq2BE;(nMFl^WIHm9dWgX@5QWHfuFX}8)2}v;XTDZ4dgP+g?6;Mm+$AZDUgA-f|BQ< zlKaHKPxiy@>KRbc{gbmS*X0`HsZYSMsmT~O2mO2BsV8WKPM1>|&CiPg> zK@t9s4C7RHhTeR{`;W!{j=|lHe_jrWzO2$UkT#5T!n=KCFOS}p8D>2Yf__rIKV-mLJCu7U_6nK|R(jrn|dzBqU~8Xi4^lX7_Y zfkIT)3(MWX%d?Yrqj~t?*Hh65Nc8thRUH)j+N8(rdRI(-NB=bKhDQXL^k|&c2CabrO3&7y>%+q z`!oCPsX|O}&+#7a^V>Q;W?p3-kckyF!~QH%;+KS^a4!jj&BuqA1oaX}N*BZ9k%F;x zp=9a(+3b5z%l5&G1NQ+UG5gWz8*H@p#=Zq;b23|Cy}JyE4m4J-*Fi$P&*b@Rh6hc( zyTZ9Ao=c&9Ii@BUlH)mMpd6iz=5t5YM$HFSW<^1kOK;3k7cZ9vk zwRM17u@g+zp;l!S*e$4w$@|+jjy`hhd9)1!-F#xV*D*Y{PjI=(g1i20IbwAP_kl`% zZBg5p{0LRQ4+oyro*mnwRx6W54Oxvt_vkwXWwEhv4_BdOv#igO*0x{*f7-z^q;)se zmTa6&jJmOfr3M<}nAr6F*3o--IdfArF1_l(?O-X@19I8A`8O~&h|skT?lOk5H$z@e zBZI;AM^!NziUfVHE4S>C26s>0_EIG%DiiV17O!CORI6J-upeJf$5Xfm;L7|njhLCc z2HE7aQG8`Q`E>UE2V4t|b>j3FJ8_YI*g`VY_VKR)(_aaeenHvf&XpS9ERbMFWqL_A zMPdD@HZ=BKQSBG7;)EsD45-a6vWx(mn4CA{}D2Gp}&T@_CIbQ`$M; zo#UrtYyp|TCN^7jEz86ox7Jh>DSqW&8LEj+}xu>i)u;o$UxuM`bSmig1<1Zx&r|NGa1j!|T-y z3~TV`mya*^iN82>Tb>qOqHB(pnihary@X3*bcB87uHx^c}EDRwLtxQt`2?2X5p!IgxcH(? z9%89TF(8z_Xu#2uKC=*VbWe<0-D{=I}(4YR&MfPdPRxfwH9I(i@mAn34su z&FDH@XH z93k7feX+tBbzmSxuVTm_|7X#J~w(JUQAsdl&7+a>83C zf&A-FLo~P~sVrI&G1m()dxh-sK3=(*ss?S5}h<&RYy z-)zlpFWk7F09E_mo_33XHR_=vs#Ph0jC^+!-6g)l@Hl~48~Kd8o4p+UsB*rd8X|a- z9%`nQ{OWEaRPhYi)xZTl76%ghHeRkn=PX0qkZ)su`7RoQ;sf#s?ed-Q{t2~72zXUD zw#*_4xQrZ|QUBx|hC+Q{p*<%&g!X+3Z)12-I}J4VM-)lIczd*e2Zg{UBc)a#oU^$nmHk5f7p^xe%zn_x)bfeOIRv@#Mu!!B_a1_Ji)f& z2P~e=R2ws?>};w2-sbTS`_v)9)|#B_{;rcMt{6L%8$4sx3yxVa;nq&{Ns^4*jh43S zR=5V+j8D1U-LE^|<}Gav-%wht;u5PJQ>hyxS8y)+uB8wTlC>?&_7`*juVSi)Cvv z3O}WKuLO?v?z79cQr$_eYQR%cxcWXE&y zgjvyUv?^kwbbG33Mj17$TyQl{qrj%ok{prh$|LQdMP$xw4son#=|2eSBcu{3!>**o zwWDgwrY0fp&#;&{9G6yf2~-UP_mw2Bxoz|B^!l_p%iEsJ#+;A2+e;158kIDKSXHz? zcjNuW^-`j-a!Q(b+Hw%E)Gv;Hl^|Cg3nNm!^lES<{R-ckYQ^?MxTV03C#tE_9vzH$ zcm>8wB;AjW{4#=b1ydVgyGBT}aa2&(k9KLzD@B*1j(2|q9V4H%r{Cas;HmeZtmKgz zL*_hhqsYH^%0e5%UjTB2b%XOn@JQ%q=XUKOU^U`}1FA0W;|{EL5-Tz)a_i}0I?aw< zz?T_dV;-yD0}DSrpAJv5CgO813f3D=ZqxM~R8xV4F{MlFNP}uF!L4U6wOL$$k+qXK z7n*;QEI2LPY4X%Muc2r)DQMj*7ErT!KYs_mb6^AhyqqG6X2L7ZdKf9P!#kGH2wqs7 z+(+jDtP!KW0-55fmkQf=5Juv&WTohs-_=peHV=7_PnfnJfog#;rBT23Oe}?kvOhCi z0`Z;bR4jom{$9D-^bu$x1FVSLh~dbaLn`dtBpK&$=|8l|BM0AJPmjbIcH|ovCpL;N zCxgBh9J!(o&Uaf!b28qr1BJfjD|r?K>0OAJ-#zTE5tfU_Xs&gzz;yJ}DfZs)&nClp zaKG*jar9|!MchX9jiv$X z#kZpgv=PjbR4Ru@cJ^Dg8m=-hsTXuE+_o`rs=SO}x(ceKng;~`*&Pr(Esm!^WzFPG zAFM)p?MteF^_!R+&tdg*0_-A>1Xvn3XGl0cPGPWbE$~v$W_}ILXz|%2+?t9uV5DI8 zZ%R#=%^tx$_0BaJuOg zu4En0Be&TTxgPJS+%0;_Aii%_&wlX5`5`M`aCkPK?2VQ?r<(ujzw;H|h)r+ZI_Zl2 z`({%lWI&lPjOrom&V`}y%U{VM;1-pTb{iOpU1ei zMsFY?zsz`#jwe9-Ql5Wl3N4gu5EIvV8_rivIL+lEl6pAc=0m?e*+@-EU_0Y9P^Bao z3Wnpnk!E2^UQg*nYSZ&z!}%*!5gC_Q$bt`$=@OgA-u)E9=X-`UG#8V?&bI;BtC9mr zG^j%jmE?5as!EjF&Dju{CeDf1p0nS%IfKaBVj^dY@?161W)hPeo_m!=Jo+Z(hywI2 zxfV5(;mjz_4P>{E(8y=sese8ynV#1eZl&9KgC}FsLT^cy+8M>YKFzMWDe>)T=Sh24 zJI+i|GV)r9&JM~ZJB{=8l|JMKlAawYQ-tvdxH@V=Ib@( zPA9!J=#S&k+M^)JrKNOpH^fLsflzzH^ScRY<`H#8jvJEn?J+D z5VQGtL38+C{zW}6SPod1fyVfVOO@odpTjJpC%8)URtNb915=Dd(Hd`sadnc(Pgro3lJ zbg;P?m4_--w12Wq|@(EpqnX--g3SN2i$URc? zc^y$lY}i#cAH+0t)5QP@MEr<#U|HmuDLerxHjU!%cIYI*f{YgNF&KsZNvk)G(8)qJmw(1IZRV8C^IcQhZ* zj+9NQtNGfnu4CfmfCALA+P7CD_?s8wkBIEI8*ZGQ;@npX>?MM^KaTUS&&Ma@Wm<6? zxA)^z%_#l4iOU+Xl}Ppw*)POm!|5AivHC@j#R}lEE%W07Rw83vVHSgvyD9?+ zXgyp&tjm3$K#PZ%pB*Jtp*gI)47FHE5o@u65Nxq8E21q{tzWpsY8UYqE64*b_Pr5t z(c;^;j2W-;HVatjXE68CyRc4wahDl-=@7ul>`p5%#{RklQ9UdC4k$52vwwM@NU zc4bKlP84>LiW~znUyEc`rj5Bv@ky6yks1HCO`|Fgj3Z;UDk1wR?zWFf9@m#u7AxuM z0Xf@Sv>}3)-YJ_7V5NmFV{oQg z(?d*MNDhnmS^Er3RqcW1op>e1lqfBdK4ef>ZG=kNXn zx*8h$JG^X!3G(JNuAIdSbF$f`OO+?$wv`D&)C;|;T%BgMRkxcaaq&A}xpf7kqe)Us zKbpjAg^2aMA8ps+EKwv8t>*T@2fA@LE0!!qy18O7KgBcB$%uD$@9J%_=TPUkm)O*@ z=tV#B<@j{5bG-jy^mOQ7^Dz#KL;4=HULl_)FS}A)fr3lLxA?@SV-RRf-jFrXZ<{mN z9b)i48vGA%!y!ys@ygNCTkuM3CYF#iN1=p z3AgZQVR8cO9t;*s^n3j+D#hE5%1Bs(d~_bUS8GpH(UxLP#s0$@`l$Wg!m6HIAI{UkvAy^Zn5r3R>hvIfYwbC+T?wgAi4L zR)S|yPTn>#PRd%OK&_qhoD^X(`9@#6X0@3vm;ZSTB{KRw;q-`{$gl)M<7h^9Px^yu4- z@3!7?zWDqrI&? zk3C$F3C{feV&mU-UX@?BUsk@p+IqgVvA0#!b`*NM{Zw!x*scHAf3;Cm{C@l8)1B}4 z?7MdE+Z3flqFMUn_4f17-+%7!`I=9+p1fAN>j3{_cVqwC=UY01{InD5?(DsNw((;7 zxlRQO_cnI7J*cf6r78=yU+x3p|L|qS{bfBSSh;G$o)cK5cQ zyE!Ic{rVyT<-WMio^Czcc>R1I2y8xo{dDUshohZrZM?$Qz5R{n&(V*g6+eRfTQ529 z;WIj_f8Bkx^=vx~3!Ldep-sf7#P!8SQVJ1?D?i=X--v(j{c#T>^(_AMd}njxIWUI& z7{UO{THD{eeYX8P9$r?kx4DsyXYX6||90>7vl#zpPv7os?fZ$?*##l?ycEBE`TE6^ zEv3|dZoPc^R+!~&U?%yv|Lv=-4ZzuWwnZmHc`Kg!hH*PRl>h7b#0*;hVSl`&?sU~? zYr#H+{bQfv2$L8WD&H?+Upt;jNUO9@}x-s8KovU+-~2> zLJpkQfB$pDP)bjKvksRgtPu+t`2FGZTp{7QJ6PuTfA*n*9Kc^c{{jXk z4-UljaFOL6wquV9oa)ufdS47&j~$TEGkJ_&2^p=6RwP4!d4FFqRGMT>PIc7zpoDT3 z;fRNqhdM9?6T&ZJ89vsL!>&~}bG;zf7X!>kJ%&=k&8x10irEemccPi+n^|`u0m+71 zhDo&Kub=-F9G8Vk;vO(f(Tf%aZgtGWYPNzV6{01PgKCVyfF?C-F@|czIL2TVk{Cns zF^VzR_iErEi!pT8r3QR7uqxd_2CLOC$Y8apM*1A&u=+)i!3v<9Ye5EIOpfacGFZhj z$Y3RKuB;Vguy(EE99CWi8LXrTGFSnnl0L35H%_q1<51}oQj=k2T5+bsx+#JTR*(l7 z?0X}~pv5A%X_%o9s(QFV+gq7`&quTf$q?_cj3hLsCyPVi9vl zswBSV4CO59khHUrn$w-5$9h_=6XFg@ai73L(x5x?kW_V^YjYSzp@&*EZi%_9dT(qt z5C<&}J|v)w5Vhz-Qn49+NNT+d@rUGl2tXvC;{ZcaP>(?*Ri0-u>=-uT3`YTrLL}|0 zVTf9dA`X#Mg7KG}W=aZO|Ku{4XN9AOPoFR*4dXGWL`8PA@{+C*zEC92WN_&W^sq($!sV#YCG`Y zTCNB^xLOu{ke}4-ap)njjops`{r>;_>g%t*f;kIR?*GeIzx!YR>+{cZBRda7w89of zxx9WOaN(;bv5DyQs&b2fktLNwAR{-8Z{KQ#HOiVDK@P)lb(q6y&f&6M9p?zOedt1+ zml10jr)OaeYnsM2+^GB}PPRVDHVt0C1^l+?Ag90=gWq#gBzptb?)O;?!xn>VFXvz; zEw2vLA)_vj298;;4sK%y2r{fS>MA8K0GqpZjIj}tlF?&1lBiUyWUApQN2^A7N=m68 zvT-I32%Bm|j-nV9w+8euWYH+u0i_Oz&frwRdvScKQkXmN6A!<2p7S%1%-fl%<{bZd zi`%y#v}qV18gR|=ABrOf{%#^gNf2OMU3^97{#;Qzc8hjbJsQ0`d;bFQ=RguHd`IxO!4;Z*XILtm zo7mZE?3ApA$K&@J5gwQb*&IQ1-s?G|(Gy%_GQsUI8Wrot*E#NRufBK`OG+Qg#R8-G z2D0N}{2)0WwijKy%@zqrm$Cx9%hl`lEuNTvKKh7^kBrw`XMIMn0MFucy zdHck1kH+m2Je>N2r)MXpH1z2(sGRbVI_w2$Be-x%YOOqi~$fRh7VgR=Vpq&0;1yVX zd&?8O=jeJm*`J?pGMSDl@v3^L3of)AT=MBn<@E`rydTIT3ZpsB&Yv>Xmbag~oku^U(w@s*jS8q*ZtfkWovhpuDJ#9QZKs0C@cL)}HsId{(#OD%vT(Pi6X7$xE-+NhNRHk9>R~xV!5=;zhaOYH z&wE_AmYWoqAP;c$DWc8^XbiJJvxu`87&djw z8rAp2In%3wXO7-okOePX*=MsLHv%D+Id5l`v)M6MMmmN}`F!~2^SskGoGxM#${MuU zL-w=F$&s^`DHG>m)|@%g@^0RcjB$y!S#q`?V8NAX4n^K;T*^Lc2B6OX51n*T&D|eG zYH*85ra^txy4&y)3F_hKJjM~7)mE91+XhmEs-xJ@6V6;g<*4(# zpr|a<)%^dvt)j+sS{L#Ni~T72I~6^QRT;PZ@@6irI7XC|8!L{r+aG(kt9TV=+-l3w z1H6bfT^u7TuVtbb{s*x;xM6gp!H2u?Pho&AjKM8k#j6HH^|0;S<#IrxwcN+<>$~Ac zC#wY-)OzUVw*;B)s??`a-Rtap$?U^3?ve;F)-;Fb99eo~Jdek<;&*rZRg?+Nt2SbM z1;}bWftb7O6IcJ;j?!vtbKN+Hf6+cE7YKQtUwr#kTDFQqWsT)spSIxFY+lc4dF`G? z*sAuW1rVmL*d(7QWw&NQbxo;QQ{1k87gMM8ft|C8!W zf>l)28W4fFd*J*czJr8Qe`jNF5^|qK8mQ?lhw>Ndgv99(_?vm^^;Lzt2jI2l9*#QClJrdRpVF82UVTA$-wA={C~0V;&FE#RRWI+Chp`?eN(fE)0T3M z6qi{!TNUt*{l!COq*m%>65AWTEnM|+%}!2msg_wWxVr;97LlSR*k;e>cpR5&zuW>^5ttRLew9%gU0et+^R2DuD4fc`;EBjV_9sy#x9;O5tCjMD!tCH0{8-P&iV&rF4Abti?>FH)->G`?H=T&nZpwH&OWtxUduP=?afaTV4 z4bbc1yn|Fy-hn7ir_<5l`1l-Z?&=U<7yf$KJF-Ziog?sgugf4gp*tW}G32&E+$jyu z1D=-7@{8Kaue$?xzesbVgKIu;am^B>(7W?CRP#X>Tj-0f{tn{o&9mhtb*{LBv}{BI>7EK7ZIzq$N`MXmp5?&!5N*L3$ZcsIQs(rXMmHGW-wr zu*E%sAGaKVKWPv^x=+$~YlDLUg08DJL16b4=MN$%U3Vn4#|Qs+@`R;l3?~LvPQsGJ z`{06L|V|J--R}l+P58Sm*xO+<8oa3tK zcVu~2Fjcus!2D;H-EvXhp+sx8vr2=)5kebN9BmZ;0j?kqf2)^OlMF&_zxvlDEL4m^ z#eZXpc(MlWsg{Mf5^`}Xa&pzMczj@AneJFMA1k0y<558^u5xD{k!eNu@TK70t~ z7m*d~71r|J2QXp$^tw4xOpNa1K6kr{Z8p25*%3k+GB9gPORb>8Dq&-9d$Xbb-{xeD z$l3LZLdEY7M3L9K;Q4H;8-mj)CwviARWqQD&wp=XqoJ^ zOI&JeSgvFQM_IhHyGQB>VS|78!?w#gsx<=^E9-RQf-MGK`Nf7p(_yjE#D-IEMT;gU zr&Pz;_`A)rzKCpd*RvRdo4ev!XIz9OWyKwN#2%JFTr~lbgYdVb#dtI-RRL6S z$N_i^=(B9;ZV^sT&qX(dJJeMKqIrPP7QJwUu}iD|_ za*Nz&ORZ78Ru+a6Zj;i1+wWeug$T9c*1$=UDWlx-9tERE!p@O(Wmj{jq@) zCCqPgmQucM3*lW=8UJ?Ur9mC^>Y75Z=6#I$yf-R#(lj5T-nmZs=}+5z^6x?pJyal==i#YrlS}IO-t%28~91v3}d| zD;u5inzV?DI(|>Tm>j;tMK4M!mVU`(q(iqMt5sgM1aVekocMdL|QOTaYHuKBm!G4Dt@IB9_iCG=Kgjz_qj-QLu{*sTOF8mN>-Q;7a``q6Y zsvzxms8PReRBPADItA(Vl!>gi-g!0J?di8!Xdp8XAWWThuUPi5TM!G0~dks->*GmgKUYrcUx2j5r zw0kmM{y1KYo=t}DyQEs`LK_^|R*m;)`3Ve~$V)ZmrgCYE3#GaX-E97A&D$6&7I2fw zK7)?}|NH2?3)J;vviad``oj&QFq@p6Om7;8lXtvY&Ao?Io7PV-7kcWZoe=#AI1@<` zlbfXiF@RVsZX63-9aG|PGo0~kGCnPF`IH(9GjgMRiT<~K!b^=Jrp?g_ISQn-ZV{~4{sg^KP5Lx4A@mSDyU(8cyKLzG*@*FX@Jn*!wU(UfwJn_OPM7X)172ebYGL zVuHgDHWfFjCifClTE;-t?7wn*Lf(S;Wh|t7XD2s3J=~%H^FKY6b2^Si45d%5NuM0P zz)=vrv}|Wi|JWx-!QGkq1oyjKPGI7wL2VS>hHr$%{_JvyXbj@QD99;u=VQMdBA28H zV<(5#yRc*l?Gn6bzSg8Z%|>y&E0P>HWr(@g}Yh{$_-y-j8QSiOVsV zLAe000~H=xtF^2yN>}Bfe2Q?rJ{H@B{3k-8ttomS&~DtV>4X9|hT*2mt+4JjT$4b#$$hcGTOwmlgrWNFzMpu zepuXe|9EBuS6I}jcu7&nmKeT(EL7J^4akrDS&vov)x)aYFqYdVCud8>-g}~ZgAzuf z{wK2KZwiG4TxOT!=?m-E@r;VWb>1bJJvh6odADFQ_{_V%oTk4VEeuLcKD*ICz@r*! z=oQq|#z=I#DePe_F`dOFh}xK}4!wNm~DoEUQaAVu)JvmAKA1|J7P4Eh<(~d@&Fl8&YG;U*i z>J#FG<7>^k#k0WXW_DMR>2nSG5NGQi43JH>;QMf?OW>mBnzqyM`;D=Zam@{*@d7t- z41Y3ZcMbE`&B8Cw_>^(#ow+HShxZ@-5*%f_^ATUqtlH51G)uPb*JibQT8P3PqHDIL zsX?e(0jYp?u~jz$K^cl}++N^fibER2JI9xh*b})orUhUXMoIAb#w>GrGjDe`=232= z?~Nhz9LIHhbnTNf$%}WM05{M#%n@V)EVrh(eGfK?p>hM5KsFZ3@$zhm(-1g0dI-+A zDINOa9SpU}=;pFtUyKjuGj0}dY(Bolt#mioJx>)xPM}ZDj<_#l>*REKt`TONg-^dz z=7s@b_ZvmvCItcG-yPmu(ipl&x)#D5HUXcU5k)KBm?9Ln3H|mL9QQ@{Ht^alMz7~S z=l!M@f_=QPfH!{RVX&LR;X8efQ%{6?O>k4#?1pD~FUS*JqO`(zot@oa0x5LC@@Cg$ z=FiSf;5_Xj;q`84hSQKu{mJKF51QKGTN|J%0hU*I)Ij!fzmQ`Oy07FT#&qQQRK-s| zHFEig#!PWz){RY#qH!eN-J8V2c=Q*-CEHWkZyQ!OHa**mPlrdAJ~7J9IcJCWlj85j zLx<_ALT^jHUpsii&@C!gC__=N#8Tb+8y_s3Ud!JlGf}?Jp7A+ilB{ghv5q*kB z$GrVX+^Dhorm@Fh~dTpvCQ^Xvj;Bi#@#!T9FzYzMf9Z&>^d=7&Lz}gJow4=8@5OL zvzxoKVDEH}V8XEt|E9LbdkefWbn{p&=SWk2HarIc)K>uwlKaX@P!t zH5%f1p`Fvw^n#+%CDzU0{^c^QL;MiAW8u>0E=z>+;d)L)H$u)|~Id?QIVS5MBy6DV0wxO(w% zEw+eif!d;ac#J^PBVWc{UGe@H+$ z%G&k*7<9E507MHv8rW+X^^ReRs%D_d+DFqD(ir_3rSimi>`n+YQ>kJ zLCi}NhcNv8>i%WWl>=^#3X-{kQaR39SG+H6pPmR+k6hiZ{B=jCnKZTsEV^r@*!c6W+Zm8HxocDIK9 z@B2gm0R%32t8Pl3J$uf0#LfZ&aYG;w2n6B@qB())>b39?(r}jc=3S0l}G<6%)YTLW7Iz;+o%IOjF{VLeZQ9;sPIS`InH}4XfJR>@TS6;Y-6k2nnr;l;typqZ8=#Bjn>EgVF5Hz(ib_|{76@32-5)X3dd~| z;&w7m+Jsu0hqKfRU?Ks)itM%D59Z$g^1lk^V$x&NjO=-o8&BJ3-tH1m;7p1sapqhe zDf14cqi7VC&H>b`LL{s%$iOgucr1ATG9$*GmpjRU#p`^BdRf@#I{WBN0LC8zXd>w8 zl5cCGraKtYD*4swRy_BZJIn+_D8 z7n`d585Z1uN|3D8YjeE}0+Kn#E}~cJIGp2#%wXSva@aRPcPvkbpes?3BQZ|8{~}0B z)agj1lkOh`X>tWlmndc~+vWgUZ|`CSa?OV6n^@M2rddeYc@k@(fJs}V*Qz%MLyHb_U|vQE|Zyu1KT!TA0cLjg=5 zWs07!F&cD$=p-^SpCzw?_wdiuMPy z4+{7dj?xor7`88_k${Rps>KCKcB`5$yPFZJG8@~_aZ7e&J|+SS+VLwXOY*ZOGS^-I zP5_u(+3WZ}=%<|F>ab@y=O;5~kjK429`75@TQOHgk)ibFr2M|v!*1d+$-1uWT~hoI zh?}tTQ+q5VMCAj}pVafKjNn?pzMfx2m?iMI!q0GsXLPY3f*BjwrY-6_`S-S;Sag@D z%2n>@p5F;pZNnVUJ)m`{$I1dL2C>j z?S5MrdO{B#ai1O@)JfDHirq?mg4>TMe=!^@%BFuB;RF7_?LRCdfYaq+98PHeVR70Q^Ubn^J`J8Y zXST=P;#F>!>jPq`z~jMW$^Pyq>*8Ip{`!+`QEh+w+nsyP6is--yJwlE6Qcv)Jj4nz z`SepPTYQ_A!g{NDy=tCbY^%B;hj{W4nk<`1eb_b=1bipe`DBB@L4EV_Z-4vgzy9lQ zC;vJ*sdi*CABm!JRc{CBJK)#9tKKKtDlU##X||MBb9AOG;#dGY%%KW*yer?05*GhF33;GpDF z+$Sk&#G*fyt+ji(4wcAe!1n8}W~*YopMQdX6M9$Bq6siACg-+BS2LNfR=}8%g{M3D z`jf9FON??+tg8!4(hXwXm;1>_%a12teD?Y8Ca>qs=Fm)@74@pB&s!Qj+OF#2YVy3Q z`Au%L`qZ(Bp1dMSQ8|@nvcD`QRQI6XAVyeiC)=VRl=c-h0Vns|LNJ~*<;8ZsKh#At zK_4p3!APUI`RA9Dk086rJCx?0&>8pqV~kBm@~D?{40u&d=&>LS)_h`qDJJ)}#nnCe z?2(gUKi%-%{mB+7IT)B^o8$WABhWpWQ}F~KSv2=2<@p3>D<~9BYv#uwWxk)Rs>!z6 zPYQZ~1Edq;Uw`uD1k_y4-xU*-B|I z>VCj4LHr8Oz)Tj!1SYj1(11sbzsK?i;f|}GBh`APfACD9j=qDT3CEiXafj`f7F%H! z6b=oMw9g(B2^l!mm`3kt-fY)5gxF^OBY1(eqreSXOty345CI}#{d-dsS>9VM=QcFS z9-L#=K4=a*BDtB++e2%|8MdULZPe4;)WYct}cu1g!jr64+Lq@ zRDwfF^yzQ0eje)W`P=hWPd@ZKV3#rH+qkCZ_}zY(Bl zkll?P#F4QAhxH_YU=)It;1w*$xPx-sxX$%ylpf*by5fyQPpRoX7GS6AC&#qwKJ z)tacl3w#Z18SIMxtk}^|Y%>%Rf10(6iLh;(7G6qT$MtBe|8}@gjtTo|7)Ch~Ad&Be z_oG;K2*IeKnQO`foY9m-r;wXgQ!a}A3>!*B-d3|}L4m&6JM3pI;yhESFMgu&Obgp} zvzURfSwkgqZ2L9%|Ba#c+xP6?Q)hgj&Ylb0WrhiIvA=YLqhVpoi10Vt+z_@y)tf7% z1JCB`i%PK5qgk9>J1nu60rx#R(k8@-0Q)cR>7oJ?zT*{|F*4kU5F$sRnbn0FP!y6s z1%!_s1joGq%{6ysOPc}}QpGqqY|*~BR#Z6oxz0d`{!M=?ag$GnaMNPFyx_c!e86_LF-h%owM%@Rt?WM@<#1{2?- zf`5^ZxGbhq@$*;+a=RJEgOufjLhFU#qKzBd7oQ z4A1(0dAi^1nT7Z}m@qUF96yLouO6l^0ou*znb4#Qe)2Pb@n5g2E1E^zo|$CuFgnZL zjZ7y?$X|;&@)sS$%;~osDfo@x*QOz_)dBN^mQ12>I%u}5tK|%;w6(v&`{WaDZw9dq zq)4JC>wREPfdjU)_DSOgo-#EwQo~RGay8qPyMo<00sXhX6XMG&qut_F;Zw1FXSB$5 zui(7bKrd%oNf!6m>leqCf_QM>-rV~lkqdUZOM``jeX%~oUKc?A{r~>$ueiNlEWR%0 ze_X6S`|6LyV)gmwzh8c~`0Njh&%XNd>pyT*>B9|W=6isw@{sL5bU=Npnm)p|8(!~1VpyD$aeNyLEez_<`C|;i!o%z zd~@&fqlP6=k1z%9(Jm2Y5Bpefm`3#2A}BMrQ3X&i!TxQ&zM6ySSg{>>Lli2POg2M9&vX>5U18ye93L(&OSrA0{ekEBo*_p2^Xvl>9WJdFpl+0lc zZMryc|Ke(b--9KjCzQYVd;pSyF*rtpU`>Ni8KQOtmYv#!l}H?* zw`R;f{{;F3Dm=ePxeT``HidA_9I9hg!i3P~5Ee`w@hysESRE_3_n8kHa2oNA4ZSph zz#tDenb=4JiS25RZ~{U^gpyMLxDn_LEU-?%@hV9vXzJak2ocE&q`+iYcwZ0!gYoZ0 z*! zs`np#EK{{uUT!f}Xo3BiD(cw|JRnN~9b(e23^s+?oft0s7by~v0t5eV_aG>8^F%HD>~#F6$qC)E1PE>d zgtSq0LW&M1B4U4L0^j@OlTYpu%7HK~D4vHf0Ib;565oNSYYX!VL4ZQIQfAVkF^f4y z;-A=LlRRmXF_FKNjpa$J`1k>=tF?x`BYhYx<=+E{E}yDTee z40Ko3vLSC0hgEynkJG=rz+$zl$ktyKiw0||vAo6goT^1(E}kL)j=h>W`;mV*yTicP zM}blP3!Dl#CjzOV(b#REiABnfd~lxI|3sM*y{bTnMn6k;}>j0lOQnR?7y3wXw(~vQKvY@BwPtDaYEdS`7n1 ztbg?UKVP9t@pfCRr_&k93B%w;I6Jz~J>UGaqaU~CoRCK3p8iV$Y%y=>io=q8BMZ%h z6Mi}r2NPu`!MvvvXJ%%A3dID<{aKB@3w8)zX`C#B)=)7^gp0+9wkPd8%4Tx)(E-@6 z$ghD?@uek8OB;M?drC(kW`u0hvNsRdE0ysp`lXJ^FNz#(tT|P&cCKpRv_W>GKvL#N#j6)d~jPZ2K$izlY+{Hyafa z2!godJ*5!s0@)4Jp51Uo!wzO3(7_Ecca`qSoMmpq*mtlR9knh?Pvpx$zk9nzsw%xH za6qSQ0|0pSb)D%GMs8DQV4SM6blzJf@9rP!)wsS|g{9}aVT{h`v_NRV`!Q06)`-5d z&3Uxjx%DxUXwdGvY9*)jUCmCY=-SpjxsbOu0btuhoeFisuT8>awH<`^_r)5HZ+(L| zLUT)RfQhs{n_mpT8^t-`BV80PD32oW$;AQ(z#m`l%D~m_qVi8%&q-Sn+Zt>8CI2?F z2U7h|WP$K5Guh?x^6&l4QNc044H>6 zJ*A8OfhvW?rtT-b#QO-y6l7&mf^ln-s6&?9cCQM)Y5|QOMDRh)_t5 z*_m`1%h(}{r2_h%d>XI#EgJ8Tf=BX5NVQPfh(%NDUf71+lAz{pwbwoT$CO9t^n|ht zZ2MrMXq-Fjhi=xP%&yt)u)y9=GD~C?NaF*Y>JrL|^k4*ZOcVXQ%B-q^9U4Y51}tGy+r z-;)6&>|vHHH0=hw7ex(`P5Wl1_#iWF(Z%QjLFRNgeSN!r1FhP6L);m_@jafjm}cKX zS%GM>+BVxeQ~cebz6e&+i0^elsgIGi9y!UBRgD0)n`xJ1&C9kWUjY(PiV}60XWv;% zKsvJa#kSdZQ6iBZKanA8v&y#Thc~J79n~wEEiX|baE4Qd4eB3-{t-#kw!$2k;kcVB z{8cnZyQFbV%-VzzuGBE_hM3pFS z5p1_&plc2GFNY7V6V-qOV-~4p9v{~aSvU~tOtH!7Yo1SdwPI5)nKnjOAi?Vil_enp zcPNbAvSc8!r#ax9t}(h9L8BxfbAp8@b9xy>o*Aw+qM_DK%2PvPH4cC25H*Lh^1-sq zx0{^5{r&x;S0_)gK+vNdPDhOomt`KPXI%UWOrqvnaT#K`sZ|wWsA-$A4g%V=M|!OE z;A1T-1Sdr+2KRRt*O8TVhccwuJ3@jzvT8Q-?0jpTRt+Q-PliM%u^5oXw3$?fkrBao z1Fh7jYxibmFfj6VqruExn)@ugN8r1ptjl&DEiVt-w=+7B(_iT<+5Jr#5@28}R0PVB zG=jf#R_*6_j{}!4lw!0t{8Q;>D&f}JPMs%a+mV>kz^tEu)9DuLhHb+8xMV2Y&-GEb zd=m(<3>I+$f?0YPvADM=4ugpF<{KkYb2$+UOQb{cGfz~$a?-!#AB@FM=0ystZI%#( zj6I?`;We;t^#PFl^5YnKH;V(9mhpQIbPwEbrSoPS%72K>w{-M!if<|e=E57=!wd%{ zwWz4GtU+s1jEiDx7Ywjd2Ntqaj943h09~(cJm${*01|33(KvUl4o22)u_NR=)`A|skN?!0m+@CggaeJ z(Vt~}0*p&BD)1xmW_w{c;DKYf9*2fa?6c<~rEpg82jd1fO&^Q%2kXaiT!D+FA zQLDTiB;Ft%N(mBlBu)OIOcOJeNGMx73EdZJ<<=-dn|}cuZ~xf2;?IBkJNvgO6iF(K z)1Hwb#d=Bz#lZrDZ?!&bB;x9jGXH?$xGzg?Cn*@tbHh%dxONBdp7-1jTi6YPQ2`Tt zNR=?6N#cfx+*8{crZg2ZC~!ZfA7Vp~AK*b2q75d28&KnnmY2yyS!6p~)JQ|Y{t z&@%26!f@c@sjTf370(#t^K~ipfgCf!!Byc7uAyWtIoN_@Eq|EldgC8GGoZ`-IIthW z26^B|&5mJsA8UPzm!(5k3v*58M^9XL{iQy6(N!)lSbBCB@=oAH|FI{sP zi9;@l!}K&DLbKKj0h?LuK^p8pW9tr}BVZlY`;xA0TPR}C=^j607lJaMu)nMKGo;wt z00Mud^d85J&rK75SQ<1*h~vJV`8!vKj=K@maMhqMXvC)wBn~??ePV}~zQt?lt`dnl z@e`3In&O0~kf@P+;j(E+L*4DW2pQGq;Ib+$N|_;myFCYTh=3vZWcC^{-nhmlyHrBL z&QE3xEuI|UfA9Y^zqiZ;I33WNpM+%|aT>(iFF#I(^{P_=28sGPS|a9vT0L=O-h?Jf zb>=!wYL@EZxP(}*x`P+PHzZP*Z1`*%37*n(ghwo;3`!F>!s144(kBAs`GP%okZb)gQ}PJ z5VY`2?%QuurM+}8LN8Uet^w_MR^~3Y7SA{&cUmPQX7|tf!*ToM<2Hyqn4hXnrSOl$ zREN_5Ek3~3Fr3K5VXq^M>#?pjxd@}T&uYZ~Q9L@8H+&6P?*Lyz5AI%bdEL>=6q|5KFGA$;uYy#rpEq5tP`?ACL6n0l%C zJ*-1+68u`B#t%QwwvOtg)9+BCrE9BQA{{a(!D-rEYAKq%*U6Z(`!OA|EfW^*2L><;T~;av^)h>j^9aYp8JYTUNR zoM#e|=sh~`sAc;8;0_#}13R$isp}~xp>anRuC2(~iNv3gEG~X@8!(b5<1a^ht;d!a zmKBxd#Q##lO*J(q^DjL8fWbiemJj{k9s_K(#ZR#Leu}1v!Opv2es@fS$ z+zd#xeUiJGLn`GV!vC>=Fu7&tYzlg3V7?tdIIe5Z+2gR5Lt5n$3qvA0W(FT5lDp)C zc6>og)sx7<%FL7_A*C~?8xRy4+2qM#N2Gy<;@ni~hMtjW%h7bm6}*BWW>w~_G5EMu z1Ln%Y5Mc=$YAQ}!6*Ds6-A~doP*xd(C$N`Zt|wdxADWYXIjf#`c_TayiH1WSS!i=& z5Jgn)yMOtE$`~q4UdRbS)O}A%afJMbKBSqkJjzS1+TLX!c`+JbA3>?4P9RMRN4ngH z|Mei2oQyikfVxhx#GF=2iy_8S+RA-m=0;!?d2Jx=iR`KL?6;<>WveY!ZN#ivECMa? zx|`{6LhNptB+@+5%!F%wmRBI5U9SX&nA8@wnyy_Iw6kM}!8HB4EToV)z&^Gh;bvry zIN-!+m5>STELLC=1ub+E9nm6}&f)aS**yU?*y^Qfcb6v4p)=mVA(rp$w)UOpWchHg z!ugo|2l?aFc*e|St0de-5j;sUazRL6lF`@DqIOcup{L=UUhhU&c$ z`ArJ&<5wonIxAgL52O8F9aVh@3XB0DIHhL2aM!E^hg%}}s|&~sSeC!U)h%hmS_Y2f2>RKDAk5een9%>jq@I7Rd z^X5iGC_#MlJu1B52Acd$|0J!&e?boZzhNf+!McY35{~!}JvL)rPcZo|Yhch4rY z3ksYPJdQ57Zv2Xk`AZ-VnyBB+S5NG-f+xt#LDi9hUzuQOuPc`w$hMUrcXnv0%W3Pq zXhvEYIH}=pC@dG{=Wic9bhGy3_a8lM8}(y0%x%9C5&P;i^R!eqC79S$UD=98jAZ*L zX#d2kf>M>vF3)`K<)9&KO)QJm&{1AluG(&Q#8*&^TAkrZ*?&t$y?qVoK26Jqly!KY zX2e7J%&zdmsrHEP)3xG<(>M2~_}}|C_a1!v<{mZ#7tO;do7}(s{eHy``opRD?>~Cv zF8DoaI;0O{ds(dpt9@JZ52^H-F`de1e(P2EY@b$jZ)@GE>}?(Ls@~SROVQi<^s0HL zV>c&7h3v%PmFZVe@eJl%pNuD9yMm*#aq)Y4OI9s`#%TECeEc0QQq&+mx3_@!u{p7c z1`sVnAqcXo)E?_DzXBT?D>V0Br3XP3$*GfgOK7&Q^ap{uO$r;*vVkY>BO(sxc(FvU zHVj}vjG!y9GhC~rBYBIQI6e#0fa)dSiCc4b1m}KSADt*g4W>+~5c*nk+T~C}zuPy!fF51lv@o2#V;0j_6|P z>#0EX5x!bV5D3lJ#W|AOaKnreuRQtqg&%Lu|I{Fk77s$%3zqTZO57!Ayf$DVhxohP z%R3_i%=@KAI!NMtNYkA%&J-Z2bG2SF8w6HH5+iJd>4V%^v9_X)z5VQ-M}@(pD|=g^ zj_G);HYN@WdH}~tM8FURxI$%fz{08I`tj2-CiXe3JM@+DWBVS=1AgLSWkRS~9PL=P zO3LuzY=>yXPznY%#4tOrP$w$3J}tZeF}y29U|$xr99Zf-7~NjM8&t=jnZ?QO1c&2g zI}Bi>Yz`1~z;drk%k=0L_&Jb#Q;cgc@`h)Ks3e|3q{%1>KrxjSBdvUpTOhux@NPZ7 znvz-|@qDblgMPeMhMhPJdoVY03jyHvn$e-~xgs3i7U><75wYah`PWv+Wu@`<7d%%g(+>Wkr-MHqHo zu8LZi0dYJHizTx7HOv5lE=1DLAiOQOUMXwh^(-D2mwO56gvADeP9Y`-Cg>gFR~L9q zvB5ozST3zn!~xJT!VgACkOGpHB(qf#m62Cqda*-hH%g9em-Wp~Nb%f5>OMF{*$#e6 zk?`oP^kT)!Zu|qm!I^=(C~bi;^AK^SEP`-f5aeG`v+qt{zIgK;PtC44d1OI=7T)d4 z6kra(ArNtTSe#LrW`l)^ebI=tls=-6x&6g+!EEh3p$C|l?<=j3MhgL-@XvwXS6N+bYfhOuCIiH?#eWmVkin6eW-xH1 z{Q2zUdmM@pxm{dB#0Hs?^m@%IUN2YyBQQNY30m(fLV#GRXEPBThU&Ul$E{o9aq`|D zaoZnPE`H9f$BUn-Rk(}$nVesIk|Rc=W#WCjEC*kub(LXv4TdB*0b zM@vwg7{@Hs^R>T(C+mH-VduN@;fnO$Nds)4a8fjD7C)<9xs{D$TQoQzs5?-e{k-w9 zB;u?0Pt*P~jjXN7Lp(usRuq1cl#H&4C8-%im9(en$_AI03AT|Li0yMMY21_cl(uil z8ciC)T+=t1x!$(qT57{DywA1E)!uQeA;Xn)!c)^Pd^RU*UbdZ2O7(^y0hTMflQbHV z#$;6_i%EYjQ-AMMx2oc#5`ApAb6m06W3JB7y>7@RxI+0CM zJeikuHJ!rCD%Z63J;5o3m}sqsVXMtW&%@6DfE=P8!WGS%c{G47*kx2chElPcsWn(0L*}0TM6Gue`?b6kwYw$)hto1(F1aEWiMD`3BM| zyuZ$2L_B5LedPvPpW%{2T}k9y=a=DJb7V4D=lUZ1y+qSnGD+ z5E$E)*Tvctf3Xwnc#!a!#nCt(h%Trj{#+OPkC8Oo##t=sfn)h@&;_EhMVV-bjQ9tR z67(E6kXDN^!UTGk~x|CwKBm0V>@VlL1C|}?m)g5xSP|Hi)yWt~K3N9+$M#(|L2Ijs$ zqH6dtjONZ-!$<6-h}}nWnoEtt>-Q&>Bgf@)XnG1Ka3qE?jE}34B>){8tzI_bIaWE2 zREvFuEFQhZ6oBSi$_pF=^uyhY-yQ;chwk2%T&nv8Hi9?j|4GxMmD63m}-6(r+{{ zE3CT#W|$mWjH5BrHq$QYLt$+xK}mLwGK+XC>e;VThX*aWNNPdv>a8rdcLkRhh%jbA zlj|0kZsv_#uBQo$@F8;c_|%aVP5vH4HNg_&plo?83Hci^gM4%R9lv>Qtr<^6#z)MX z*Lkz%Sz9#ISykrJ3sKdCp@l|;HxodV?`@Iy0Im(9&f?!he_tEK{qND=*Pk&7{&)R% z7KNFZ=@6HE+Zyk3xlokHn&P(eEw3X>_hhNyV;LOxClTt zBi64GgJu6rsM%1l)ZJS0I!-7i_}n<3Py*A7V`{8Q7K;0Y<7xVr1b)C~(klxh!V5q2 zb6zvOM@0co)LurCzY`Q$2(;q0M%h|%UWHOxbxFw&lids5-55%rx|IP;8m4Ad5_P?$ z1;y!E?AeKU+Qmhku!kPsaYuPt%DDCq#XYcZ-e1n<>)oYXp(dp>e*;UufDC~LNJk%1 z*ad}e6d|7tJ9@mcwVTx!lAtPLmX$|%ctLXto~wKZ`sRR?#ODlaU2wLf`}+dfd%T*t zFAG~IDz=F2hzZAjS!k%1dB8+fvCzFcn2^H`@mks3&>1JUW?0azib^~-$%RH`uinM_iase~%c4c5^;_(7Tgdu;c-m7!j++`v^ zuU6+uw4hGMJAj*u$-9Nvhkg=!tVSXh^Fv@phlC5FSq|ORxqKQs7`zXT7LRkPq!*o- z9}$M!HEi4X5y^1MDuy@akx3pRlNSU+lSe46`E0r*)!dz+{5Y#-Ia?GL2z*d32ObjK zA0&R>DzipJ7SL=z&OF3B0!DXn=ssAFCONFYU+I!H0-ktU3yYn|QGz`}ozqbVIZH1R zcj#PsPvSOm9f4@SBG5$gIQGj#YZp_LMSAG;bfk}+ok$iwW_r4AX5+)V8Yg<%`p6eA zS@~%0!0<$p&5$SEB}pl3(H$&whR?4o-tzfxGL$Hb{H=#xQ{+F{zOuXR0U3YW|83HS z{NE;T$p38;hy33rbIAWKh;$=%_kqb8Sqz&y->g%19DL!iiFq_P{hQKGf4Wsg2jzT- z$8*+%A^qQNoQ7g@UY?3mc&%vWBXj-Yz*D#Ow&A1@pvns7{4V1bobs>$w zISD`Jy%(C5dwzUa zj{-<2aC(;p`vf1KP)--fz7=50J%urWerYqcZVO#FfA`>-=F2l@7M-BsoFIHS z8?dkVD45Sl5}Vj{07M4eCvh3&qjBB0<3OrR9fC%GVsnkj?6&?Jm0ZI80 zAOsJ)M^C{IFuUb$JG?g247vS{CH^Ixen?jm!RsIf1y=yV2NkxR7 zNiqT^V`%=d1<7fUc7|)RU%r^ zh6y}d-* zh^i@01^HzN|G|L>52H?f6j{0pGvsgKlbOsm_V29YfGDH|gaGfhbZPM8iO~0*$M-g; zEV#<&f)|z&Au}dBSUC#E_)-q)y*moO(-kyF-%(2+2q^h< zN+)pt5hCfT$04c@rQt3zhf^5l!v3pJJA~hns zpLTpa{`!3iUR{a_3lC`*QqZ0a+!-c3v`2LP>-iNeMOjE6X z!%?J;x1M$c;Q}tQ(Wm4?h%UGyM=fZpzlZCHw`5UObEcq zxLcrr=4QxFgiAAy-gyDtio?f-ntJ=83Om-eLWNF;usOQ~mL?xZGIJVQYG zWX#RfEQJ3Ubw4!=;;-r+wzE;ARP%P?cuqypo{hb-nvn96-Vqpeb2R~R>W{dO)QeNI zxjeG>?G)FMk8wTOCV8V0^`G>M26iwKl3{P5&sUDNO81;>l7~@RDQ47b2WW^8-K89DbzFVz_ z8`*}_mY$@Wi}Mebv=kAR?iXp=9+kV4KvtVS0(vJYOvxb8=8gt}vW`n+N`Yo1f=@@K zGi8A%F5$*(4kavW{~V{?s9g&r(@i2p7UaZK2GHM*8RZnE!_|Zsm*AAJB-~csjSLB< z+GyS#P`&jesF_u4j0M<#AYDjysD$gt{HH`v(SG%An3~~1QrnPCeK43lhtZ>3qjYyEU@d(6wRT)!Qyh38RX!pgEFuhv z21lP*P(UKF$u-WFIF=g5mO=Sp zZgGl4^g0Xx=TG1U-olOw7Pk&d%}=9p#I21HpW%y-b+zkco;3=b>hc1rOpG zmX!G9jm+lpJE?$^fSz(va>(N1zMZnQkTjD6IIencACw&T1rkaN={nHfEathMn;LD_ zQ$e88g3~GCxx&*Lwf4(N4Z!{G+KUd<54N@sj5?M5z>6KL)d>{`I>o-}by6D0*Zr|P z!bnH>e1nIVQZ2&WI~t#~lS8Z-@gy9;1BipM^XyBul9q>&aCKMKLiU~&q!4FhEl$WBAN{a=G zhrSwJJ2V3hl2+uz;tYpITTqY5Yu$tnUZLrqOo>+G6n8g0Wm7N+YHTc=E>YNEUW@*9 zX+w8isGc%Z%))pqP|GP7X*Mr6H-Umql%l$jcU~tlz=KLvKDE_+Ez@n$MaNA+nVP=V zv0PuBkqZLFRU(sdI7Sc-g89}{STligc5IEv2of?mMR|GVCiH%QQjh@(NhwIf3BMlQ z@^XJL7{^^K?`c)-;5vToUARRj+#aXRlQ$J1Jx!)0WNcd!aM`S-BVei8k3_X8@943) zyYy#fw(~t^D3!LwFo$Jc#au&J3q!jSO)v9x@3uXQYlCGp8DVpDpxT2yCNkj*JarjB zWZ@lE_{oUC)sTW$i9nhUam(_Y3HACVKUU0FQt0TzA?!y$wW9B+{1HW;PUGT7&O9lU zq{Gn0C)w&n`2t0Tn;to6>f^9HQ4S-tdRDwE)-9`_!kw!PwLXBC)FO(}k^3fR6_019 zkI2|{?~o_7!xJ>J<89UIHC0t!-`+vFRpClzX^aU3c#H2)Wcvfl%N5v5| zfV&MCpHhWNx9YX5>mY7ySyy!7jXRhA@Wl&_E(c>mXOeBV*H3fxuXQe_4b5$c!MENG zLNbckaGnO2sl{}LPphdcJ63L!l0;iSP(Er2w&zRJX?lq|r7pQCoi?FKk2&bmrh@&b z8x74&9Q@_^IhG2$z?i5<7AQ^ZW9Fpr76Z1mSFOCPr)3CJ?KS&yQXBtnFIFB8U7tzj5=<>u<^ov4w1 zXw(!-3ExaC)ZdbBHI*1X5{b4{?tX&bE5ugYUBsSF!H&NabyH#!*kU+TWADn^KG9^g zS5EuLvdvmuY6V7^i(3bHP41?dq2%fY=1VR$)9)ajE+uSNsG0$W+E1pH|NDk2yxTuX zISAr8J!bTy1bJPY7+-w97_{^)x94)b&UKWwyi{t`anINdGaO|QtPsf%usp11mz%k~ zY;Bzt;s@BFk9_f|DeGdttX9#6b%(RE=u=&s7j;2T)`ANjCcin3m$bsK`}sAVv#$8n z0pFIc;Wbfz6hXT<(EUme)$$T#45cE9SX%&Ve#Uope%J~t%xm@_o4yHt5D!0$P8##c zC!g%*^&GF8Li<@>rb`NOX2ffze=l4Ql<4HH-$3H`x#PFCqynm;@%3|zep!k7Ind_o zYzyQRuYfb6nDoI1Gu>c{07DzDUA0qX2guSja&TWGE~fItE{n$eJq4TT=24eTqdQJ~ zI|(#OdlD6k72llrNJeeo=gVcW6CcP`@@;F43bW93Y3?T zy)C3g7@3QW?|MTzlJO? zSBow=?r?)SQeK`_+zlMGqkC&XoPm7p2WcDDSC#8R8Q?%u%z{yA3!#)d#?lvMb8ykT zs?*Vm!P(n>rr$vT7n*yhr*5PuYOvi&|=k3j(ytN1Oz)rhdC) z*n79oTyC5(>4t!IY+8KJN{04Q!M~JLFz)ga26Kr?irS>j+Z6xmN}d7j9-T~|hpf;S z#%-(ZgJQGW-#qZx%$sFdQZJ8lT~(q>GGM!e4_iFewp+W`&OGD{ooEckGljdVDfi{O z;sK2dCcw==)yjnU^}K2D;E;cLTQFifzvQ1&Npgpbp`Ra+8(7U(JPbo(m1Zc#HLkUb zuO_4L02%llaLUbYT~LL1fo0Yz!Lgu4}0>`r?;Q*-Ir{f$$&f9W71OF;_ENAQv)FU%vo#?2SEWIl+*gX<7 z?K6_a`tIitDQ4>0ov-KC32<|UG)SRA5f;4`0L+TT5rSSBEW(dXreR|mW@m>Q77?fd zA(GhKwkYw3WkFp~+4YDCV=&2y7rIW)n{f_~lrU~YMq+m(yH^#v7KhT)f zgG5gfWZLLs2o5<&&*qCl+yHCs;4b46dhtKfUI>_Bvxe;EQ&U*VP;5;?IDiSrJu5C? zL7$?ZSI>)m5xVw7AP zO{2SN_WzrBW3k1b|Bw6`l75b7*(|v(*dSuy9r)vGsy#`Y@P0nRfzpCtgGH+YyzAwjTp7@(nPEPi z&>SHAjhc!GXnGtqXN>JQLK>#y5duLtN#>1F+g(kig7Lg{Bu9`0f@kpd5A5khvz?<_ zqH`g{!s#L@b9O4D_aNMXghQYW5a*^Fc~~)KveiXW)9GPHe)aM;zF;%(#hnyU;*Z^mI`xxg;Vau*BS*;gNA?iUMLw zdLC$&YbGlLHtP|}Cu>x)TK!O9t4TZJ$Jex}g?V7JzpmWU>C8!2hkdJcZtsPee?prC zFBvjvo$ayFm-dSO&MuUZHfD(DV6?B$HFOkQ>UdXH2XP9|F6-)QzE~IU+i-ioJ)jCk zFTqIfLX6CCh#kQHmS7WS32!g%uR-6#DU|a*Y0*RZ%3!M~KAgU}H^u+n zzq$9|+c)>_QxNCjl%oZI`}_TB@gsJx52xn8{}_nhqb8Urif2pKF}F#U$TYT4v&;E* zwKh9ctV^mGD0Nv^^7uRJudwM*7p+c7)TZ3N3rjpB80P|3jxGkcz(QbIOwz(Pvewm_ zBed$vzM>iQ(C~(uH1KT=1?HRGr-Y()L%2Kg3MA}j1QTC|gQaMd#hmal2zva|_+v;o zg{CPAMT(j-fPnKaAlm(#xV&5+8tmL&l8ZFJIrEJ%;W2^HwOw6;##|O+NLv^`1K3hw zO?AgI#x6h+yGumMB zvOtK1aFD4)TV7AI-#=ptMkONf<%@U$a2OfC*#defB(l%aO$sFXXb-o1ad3ex%Rt;a zU}{pd(dThpS9Q+zJB*}JyEWELpBXHTnFOWu<_FCOy1@jFW^p(LcmJ0Qm-R;pz$>piG^Hs?Po%i@7*J@9S(l4==VnpGbhcCzb`DeKp}`KU$+bXhx2?6z*~}0> z!@0RMH!R-RBdpoQp%gFHu*}XbX@)#xWT7_Y_N@ir)oWv2MljAhkJPg5JC+O+xmWy= zao8T>I2^BP+U`c|9x}G67r+&xS=oYEVl6*E<9I9ZaK?`V!W3tuXpsB}%)5DA;#R8T z6CG>JtYD&!_G?D!%Xw2E^8=%q!``UC38=yQI&!9LI_fd$5tj@E?qC~8zuDpj`Y1+gQ1|V5S!3p`s#&>!c>@~Yz1TK81QH}TF{Wv!^d#%wD{F{ru6h_v*`|?_Rz>d;GorboTW5((XO{V)p;G ziw1i*tP15%nik&slFWu|Pb6u1Pt>E6?US7JnYa!fd3{(e|tn3 zbw?2o`Isf{hjal6=aD!hdcb{Gp%(HS1%He6>J%~X<>eUmw)Tc~a|X$?tED;d+H?S) zeS%SMKgzHN+LrCT&1o3Zp-r4E_)VujHaL?j;KHo^^}L*LEP$gK8FVx(F-9gKPPH7$ zKGo%R6m1ZiYh$_^gz$p9@)M?OSr})9dB!P%o*>oZ)x6#t`|W?uv6K*a;j(_Z+I~13 zP&n(*u6v58J3`^Gd|R|%VGFI^cdoJD-B=GoHaJ;x=KJ|QPre^S>r9PvtelM!IOZjw zL{+}8mIpGc@15ByS8ONwZkUYMh-c5>p^;dypSukP$hCH~ zcVyg?6wknsR~M8d^wcDBb#mUz%WL&uoQI-_K^|>ah{(!5^N6t!dwP3@Jyp7J^>WAz ze@5DJynJwQP?`)*tDqx@r~Sk00$G4dsf2O_1BQ-A`&Ab&I%1sT=fE0Uz{j~X!FXpM z4UxAc1nmbG32_rLhLvP&c#_2`5TsWq3T}l@_A!Ps7^BxZZz~6BAU>y#vR)wC^cgm^ zGwk%TJeQ?12Y4`@(H=TxSqlbL_4crPDmhkO63^@p-yO;|RWTa|ZZqE^vX4>$!F3&JVP9?Gtv67$_3T2(`t{JM4ts zX=bj1m^d27el=8yqE!XoW_j= z9_U|gxo|=l3HT`01hrhli=u3@{1H+n?#4%;F8c3-^;5-=eD{E7kp^TzKN4jV;I}1x)3TejquXgkGe<^> zOsEJ^e~zVS*^C_ItyyKP>^vjvXADDf)UcEw_2=vm&Iq*Bd+P3FmXQF#yv68S_e0+C zou)rSLoLzH1`0#frWM4ls?EGKw{6piatyi0G{()zb{YCajdC_C*NgBE`;0}^Sg=0s zc1y^>P`u2`XA}#KIqZcA=a=5KVkgI|EpuaU^HK=2z}S6fQ(iQ-1#$58+Cs0=-Yje2v~W}vp^yXJK**S1&Fa-DFE z6}+U=6dZthd+8M}*NH}ox`CtF!=+qz=yoo47itf4js{BQg^%TS2`2zqguFbNjW`z! z>6E3FM*ieJhbfKUeQclWb@Ys}_!-4bVw)}eX;JeGhfrdyxrJ;2G2MRZVWV_73D!-n+f5g9&dw-)(D;QJ*Pb$}71FXC${nMDn)v}ALJ zE^L3;q2tt&d_XiMq{RefhU+muQIFxK=Nws^>z_}MK1uif?bP%EBbfKO@{z-7ZTgbY zIHvaxMfDw0B&dkZch&WHudJhgUO!qp^eReg&$jfh)($jOwS>Dob8)OHwQQKylVy}GQCZha(ena+r_t#5wLIAhGmqyv%Yy0qG7tAF;q>5OGtIF#x3ZOM=#7X z8o1s@*-1DKpad9X9Q=7({)C-wqD$c@B<*y)jP|6t74$u3uC2}Dj^bKyK`Ee2q$6tl ziy?y5@D@x7kD3#|VmMcx=Ce}oiYw9HGXiV1#NhBj88QfuS1pNb5!SzeidalOC`$(E z$g(AUeh^DIbzXuHM^D}(9rp-B+lw4-RCM4%xC?SknE-qG~FORX)jf*IvEpM2>H-W{DSMNCQ3u0%xcTW{TY93Pa?P zwtW_yeeuHAUCo||h!|`qMJbV_V1Tba9{0}t@KnyOsIC3>XDaOwG;Z(`IuZnn7p`>r z5KN+8hWkT0dfZH(^awqoStH&tj7!=XsI1i99-$1%MNsYMtIJ9rZt%+N8W6Wl6Yx3X z{<(%+@{H;qfc@$0bX{Q3U%1^ zrR>A1X@X<{55hHL)K$Y?hICwe4uCS=oj0Cca~w>}uW?>EN1Yj@S4jDf7Hp%oeY~bz z7(8NzhdI)ao5O&(urqA{FPG5anog&?l8V4=i|;5T)h)cRX&sCX_TiKJ`tXtIWl7bwl&|oHEF^2FuQzC zjvy^cQ|Rn5nk!8J{iW%g3lp^>G4$Xs1u)8hCOojcO>8S(zgq?)E|?C3skFo7qhTGx zbO&KtIt~w(v;rUzj^IWhad0PdmT#U%iA;H$IC96hEx3{}Vg<|$pGhU4oW%WQeF$?2 zya#jZWC9tWFPk9ivb?fsuR-!BOtWOe#?r~QH&(wVe>U3_WuuW?!*hM`NUjH_MV_W3 zqvc6Bx-CGOH0+(KNsqP=Y0{8DcTdlx%kYVb;09urL40+PhnVS?H*HD7eomz*<;__Z zbPuOe*h3ctwydXIrDi<4+B)ZXmT%q5xO}(ay6_tBKV0v|6PM|irz>gLOH$IKZPp|W z`)5tkWjLpX@Q7C@y!pVpUT>)I`6s$43m1}8Fuh-@fbx&w5~hAdq;|D3Zc=PARV!jZ z>O!4U>S?$KGJOoZjxixps!5cr*58@$dgOj6PsWxAa;Fc3Mii=2L-U4^v*Xe&Nrz1>LnV{o_yGj9q8zbAp%Ik}a`NoJXbdlMi-Ix3QriMS!LF`xk0KdM zHKJjp8O%kWo-^lD-bDbR*{0#3Y&_MO(p_{iT7r3NQWnv%uXfLh^Zm1Gdr|IDL(lKh z)Q`BqpZvC{_P84Py1ck->8u+h06OdrsFB2{94Ydf;sDWs*E})=pcHqC`O2o35vf_9 zRDqsOFG1m&s7#Pi%?JbYh?0kiPq&ciP+vzOF`b$T-LujRo%Ne+q$fUwC(2DrPkD!M zxoP%%E=_gnGD!@F@^liZFoIDAPcJ0nmgiw5E<2G7$>IW_t%lo|IvdDnt2VgFfNdMv z4vuPg`4u4rdKZhrj{Wn5f~==++YZtYcDao6o&e9g%_I-qYtS$?d(g=UiKj`xZQDU` zu|vk4r_*x9_fb$WIT=D}0|8GvV4O6Nu6j+UcziGomZ}yEm)Z;f<%_Xr{aXSBWv6=T z(Zb}L(~oie428{fN>e4_!x=uRRx}W|8^mU6nb&p?_Aa!X#>u;FG|m{e?Fyx$mUG-$ zj?MF5?GF(zT>DmjM1^$*9x$CI-4=@~jqJtENIcvS=;V$H;`ZviCv%7twLSI>+&^#hjwYX*%u>9nALQra5y?GD|sY40^GHnN6n{G z+?mfLlIHL=Ey2EwDN4ZR?NQW>kmZI$fzs8-{M^eS+{xhFWF0tP@?GKcXKv5t+7j8O zHR#Trf8;u~#ZGc@ zed84|;s?WajkDGx>M>5a1FVdz+L9R@4MT_p?X$S)tNujwdd+dhm}uS1P;46lXm*#X zJ9HcZ>1K?uoE8m(TO*X1xGXVDZsg&CEhf{4J;p5ZuJqqPWmoOBpAa+AH6u!O!>nXn z>&TPvo~>)a@CG^;t`pr6@9`>BTa`rBg1{=MjFd*J-=W50^fg=vqS5R!nus^Iyx!&5 z7j@+x9d04jG=bD$tKuNCqJo<}LzRg%DcrRp(W!QQnozblbpbp?g86AZNeeV7ZGM?S z#{B;(ZnD3&N`$JTcIvY&pPIX9?vR^K(JGBKy5ETz+yZRKdAY7(TQJErAV?j)r)$^d zbh-uvsKeWI?U2OFK6EFKL@?xOyAl9K8o?*$fjr)ts^X+)*>a> zAN-7m&yKraPCdunE?=sPq@TUtaSGeJ;sI^IKqOwRA`OPxZTVF?U;Lla;CZE$tr`QG zEiX|F#aa|M70T@nAt}J|w#s$K%R=wJc>m@5uOwV*2BMw3zu_7oM%HYJ2b|wxxWbjh zWTOq7S0%q-gu;q6BvIjVRXhp`gn3HYz2TLDVKT$#a(Hl*4MZ)ueeOX>CdQyhWyA<2 z%M=GE!Bn{{=;OcAe{xvn9%Duv-uifVvB`vbxAn;#bjw4?k=UMe`mwxc3;b) z+u3kc;#_9P&=>W5Cz++45ZBd}3u1IOeqXMW%>_W73vh2^>gdNW?8d?|IU|J!XB3H;1@EFwHo*4qc~ z6XHcn_lEQU`gz(2)_AEMkGtV`!G(K9La5d=SSO3Qak(&6u{Y7E$NaD2+Yt0jYxY$& zizh~D{L@NSV0S;rVY4+)C&u)2sFP-AwI&E;X+(h?M}|V!P|kw!0YwsBbOxjIn|8Ld zR`*K^=6T}_`OteaO7&NZG(YEnlbbSll7{-x?mGCGA~53@Y7fqQYD}0E`YFKXh@lQO zp3&aVNRbS){8SspX)2yGYl=e3Tnn?)-n16MB+anIEMWAk!BBLs7DjbbL>koXq7F_A zlIKRO`2YwuM-RV&SJ$7Jb%5dEUf%oWh<&pIKP-} zyLeGrf^eTK-ywQpI|0bQ&(7z|a$W9a`$-su$l~qRO(V}=Xy?LMpYW=wC`v{w?6v$9 zDYv;^$@p7dK*h-3cA56`!e2viD-kA=)h9ir$l5sQiY^8*Gn!{K(`lgxL>Tt~Xc~9x zDhD7L(d<^ti2m`7a7b=5tIp3+J+vM7HPM;$R)q7Zou92R*u>ufE?J}LL=sVyl`iv! zcX`Q-KY}jO-&?||3-W@P2E!nke7zlF*xgW#3uVY))-3QE&%~B!PkP zt#4-Ov%f%du(;tlP#z3k8$XwYZZtM`@$U?fOWO_Vs_j%FL1dqlHbn} zTik^8pS!ksj7M&-h9A^=9xz-9jJqSX)+Z&2q3P&9kUJ&b`gRWq-W}MjdvslEP^1u{ zh5}*dQ=~JQc|dna6SeQ=0WE>4@6FIMD^fQs<9P@;;9J!Q zLwLi`H%hX@?VuvoD%u`96#bARAnXfQd&o}Sk)3Zh{8e4zPJFohb|64A`EX7m%&HjH zDugyV!CBuJ5R5Mua&(rRrjgzU^Bfp;R_8Som4FbXu500lGhV8X= zyt*Nvu1tW;s2<$HMI%55@N)WdEI@i{Zniws$o#bI^INwzGf!58H#CFH3e2inEIk7= z7}I*GJTI^D_};T@Zj0-En`0{;yEE&Gp$K(g>%0~}pr81tFK=3s-ZG+g9cZM!cyBPv z)JQvGmXCKhLco__DB>j;{1PEA^+IRMeBo7CGdBzkYyM=^O#f^<&T!-u1rDQVhL(oQ z1#dww5F^c&To9OP@Y8|A@%$~>7qJ^}XQ#&9d=F+xL~X(+n4W}O0-)N-##1Q8v|6thIF1}))Rl;uIn3I=QijJ47BPs> zIL1qFa7en5<24r`$pF{#GM(7zR^)qw7iok$DbU|Fjac%IBrt&T)9khZQHazbOO$!J z2V0V8)Sw>SZDvyJX#kyIT>On{QnO-RWD5FN=a(ALfqLkb^$0XOukQvML_%D3vpePu zB9VQ(I5G|cMoT3>#yJppHmWg@G!9qB6UTgX$Cxz1;{k6O=x^8SK|IWbUxeU}_zOmr zkc~BximbyHdjY(T3G;l1%K`#C4UQhH_S@-eMy=Pu2IC#+JTOG*C?Myon{Qj~Zf2MB z?aC#aN*kM#)zLS1n9?##%OOfzYhKU->RPb@exP4jF-IC5jwt&e?*exa#6GKeQ_glg z`Sa^%PY?hi7SgZjVdMsnAH^{RG)5B9UOJ@f0fdBjp9;~rU{53`K+5_x08nn-acn9w z9Asuk-C$KO$y9|hw~Os2lt%}r3>>|a6-A3+IBA$38I|ej;Dy+VgfD?-XXjph7X#^r9J(a>6LD2n0=>`PW{vhq|v@ zECpQ=i^aO5r;05KmXb)27;sVUH}mFg(iwBc9XW{ZM!lU7vcyJ>G1OpU4ZPq4RMwd` zsH%RpM+Aw22rzUe=)lS6{g;Hr}ADbZN zi?%+_hUFRJhqq%{If(Z{D+oo$G|KoyXGhT|PF~<|GN+b|jP|fuj_mp7u>oY$JetxB z2wppOq!zy(vH%DL&n_--=9*DCsu>hm81^Kq8f7$;UK0#xIu1-XyMQk0u6CAGV(1JF zy_vF#3L*$F*a6*|bDj^|8txx>v?&N0Suyy%yi-lze@3AX{_Wu#>G*%B_6NyQ!JhFE z>$xGzY{{j$N7er9`E99A`7m_Ua=4i&tGT%n;3Q~Y+2phXV!S%(QA-^UpEULO$RrV_ zMrRQTr1Jb+QSwyu76^il&k1v(kbgs>9Ph#K;}@+z&KC{RT=zy{86ihxpqk$10$eM! zM0O4srE1WnhZ*}Oa+tsd=fAJ!HEls~MuD3f(+MWz{fYh7OefripL(1aB)+{rVIVu&~~oT7Q)Ji5C7qQqDXZU2Nii@|*Fw-h`SLR;mzq*e+f)A*(3tbOBHF#5Vy9z#?pUm(3 zpJ(&MqQ>6_`uz#Mlq>ajT~J}McLX-#q~_uMiE!`!#PJOcJjd=&6t6Htp;YJss1U0A zvys2g%bK!}<~K+Tow2C!i$R&~K<1Z!{DZWK^e{KWSR*n^Nko%K>;Kmd(y9N?X-8r$ zJ2a*_ER-!j!&K|DWYA>i3zCI)EsaV#-|Cg@{!icx?l}lwv=C{>Ys*Nm(Jq3 zZB_)Y{PQyWcCo>|3!l2}16MQ;XCT-6EB`cD5m%72 zIn=Ksb4C`0*DAJW@|Q7a%n8OdCarVfT|qP)o=wbqU=?uFj5f0lS$ga835S}-DAL5)z3?_6&Z|hby+TrU61vI7;hEV(q?DHcvidl=6H035;#*~ zfROavbo5oVNUEThY^~p8N2&EA2Pcmk%byQrk}o<~$j(`}Of-{{Kny?w0@_pR9&&Zq ziPbX=zx_*nWxmgF0Ls6`Le!g~VH$qxA+ZR=v%Z&MqKIVaViE{m$p42!;7J!ig?@&~k zKBvS{)vLV|f$CBbn)Z=prcX3Q`Ln}^Tu1hhWGsRj&o!EN<+5Xz2|De}G%b9JoCn#e zufibH)lbYP`jo-IQR`Mbt)K)%d8iij#qmNYCsr8$xNT$?;I~rsM0oF1p!v2TG=wDE z0^cj>2w^rhz%4_fc2mfjnsQ;l0Q)&Lu!gnJ)@O)jKd$S_l`Uc``U?iLJq^I-rMax& zT(d|)(Si^M_cu}&07{f^L{e5WmilE>K8O_0W{YB5yhHWH?fx6BU*8fhv+-e%J*E!* zktj$M#C9h#ggBrgfGB1;R2RT|dirt*$o9B+#2J7jHY6xYWWl0jf~A5La8&UH*CYxt zq++mxX<7MM(;5y4_({krG5YR%`9ZBE8R7cKnePfj^NXbBzMH}y#?l7h!Kc8z@u;>q zHpGu6o^-F;^flJ89&^WFBYLL%?@y-b2{L>jdc!VCU0O zwS@hQ>^1l)ASHYcXOQLBu-xH^hcRpkpml+OKipg;D{-|`1SHxgExFa3wqJZdL5=|?zsW`mm>^r|I`6?r_R|p<*cT9Fgo{0wFqOL(@QyhwWb=anDUqcGtB7;xJ6iE4z$lx1d)y zC$M0db70O;#DjS^E%gHyL)Jwa6uy0H~ zdE&!^zECv_fUW-toBtp#81jS=dIZ45yOL!hh%%1w#)(JZx<^|f6rd_50x>K>k~eq% z_}09alMegTRdJL-c^ES$(|2__H<^gw6M5}cNAyOU#J560kfbb*JD_OKv*fdrfHwq* ztA8M9ih__vKP46?H(+)8B)6kVZBa=$Ad4!tCAmp)k|KWcz3BA8VSry&REjSCh%30u zlCB@=mbkIA_FaVyw)UhtWHvixzhQ4-hX;_>O6coiN*$sE={qDdU$}aQ!l&M`LHAFG z`PvusG%7$6H#b7H!10m2PiAZM1MaCy*+%_~qm6$SW&0;YucfL}CfC`MgyNcffD~Fa zaLG%Jc_HMor6N72-%Zz~;N8I9{#uIw_o606Ud)k`;1?Z0rIhO^XBS^3bvkUT1CwU$ zaYS=926Nld$1DISnW567`$D%-w;AdJ7PU#`wF>CE`#Vu7rJm1(zx>Y1OX2hAMlG;x zCoErGFrkWB2K&VCKCy5^{B3WD^-@=Ql|J@QE9?g^*$c+9i!P$tQ z(TCXR9YwG&@Yl5hbn%Ug+o2dIo>{$#iq>{hYYZ9blR7ZMoHZ2yc?KCmjiTNPn5&iz zk>3W8TcxZex+OSX-|hyKI^w@Qzpl!a)7#@otm>k?*v`}o7GgNO2-*#cTP;J2X=^S7 z7T2$ps;!&Yt;G(L2@`bTUwfP*=>VsDW-MN?LU}TU@Ys6VPM#Wp$Qhvdig_;GCJWR7 zK!G+@a%iAVP+55(LxvFs7{TfbljBbx1aewrM-cJ!wz8J$-vrfi!UqTjLV!II4=3zz zRwR>eBUm}ace!gtt`*33{}xiE-i?*2{O+;*kRCw3nvEa3edPe!Btj*94b@A#m_-e?G!-G$&hsMrJ3+aM5#ccuuE8dDQkp$xY z4g9VDNuQ11h;O_^;)6D3035(|;-c)45@nJ?Y03~oX5k2#Wfw4Dj0)!_qccF+U=||g z@up*S6fRhPU^Qz)8PQnWfF!=Nh@1dXS*v9aN9vc~z0oi2ySMg!2De{(uP&rBHVHCL zVEpr~gvHFWyE#@Gs!A1o^y13?;G!`WjKO`LEdyZdy66cf%~vP`;Z8JUio%>La|r}H z02J5IU17#C0C*eM;)ErL=qI_l@nWz(TPgOY6387S^0go8kl);N^fW((*%ajP&>NI| z<$^`4rrjK0VS2^jxAN2FS9>MuKm)kXu-kKWVxo<0$P3X7ih5d#^*(++BX9C3ZqVyb z7Gi3Zk;BM$Q$0aAz>DHEmYuZGjOGL$NT(N_^jD#S7K@Fq1S%};VAt-~K@_j#tkcJh zLg7Gn#)-bU+3Mm)qDcl>;fT^EVXW zvD2qpq`NhhB5{QVEvw9>*tGn}{;)%7glIk(5Gc)T7B!h%G?n9e82Dti1KPae<7z=h zTYoh3fk7`XSEZCD_BI_wh4Hzqi>hGcwmMm&^f;*HVre*<4LGS#uLOH+@qJq{vR+4+ zIQ~J6s_;4Y1w(r9!3GLL&CyC#Q~_I^xO9+}hh;}Z4U5KE_Gln_?KVK5I}+jU!cfzM zfE*z#s?g`AM$jz4Ug}pttk^6 zu|yqqcCi^ik|iFK(N^6}q(@Q4kxWiuKv2+|0bmq^$?F@?1LQdUO$N>wX|gxb(VH3+ z0kwCx9kgCv;w4BqHSZCHE)hrKh20BxLi~=k`lOJpgWI6mphg4&@T%Ide+{GTEFCJk z*IXi=Ee<=CO8;op;NWNkxNW8 z-X@)Ua%gVj%Odzn&v zklz{Y4z61w=KYN8&IM}k52EQJwqlxy!sN&JbP>l9m=?H~-E!2+mFw7v1x%N@x{{_A zeN;V6B$hZqSPH0+q|wd9XYZU*_}Q+(TjLlO490UtHA1g|{E%C|jlk?8!ev!8%YZ z4i_`3*oj@Hdo*3;%%0Pu>r@lW;B_D3ML{i0_4^bsc_^QGgoji9&jZ_(R{n?6H}|Ia z-}^WB9(?=e-hB$dKAf_$pk$cA_2Ja~_aB@%YmfM3&b$|~uMwb)W)kC$BN)7(98(~- ze8)oj8IjZ3>fmmi2pq(YkrYdEG>YzcN2NSNLt~DB2siZ`-sau88}eZbsE)kDh!g(W z+{3p^PuP-4&HiFKu4vHk_a#z-?H8|DE4XzV&}lsq5Jjfjkc3ln@q2s+G$hhhtIF*$ ze5)?7h7`TK*S()pI(!IZ1$gkL`zJbqJNvrxLRgb6#jEY~YU zIjq{greY-xYJDa{cA$JR80E*;aO3lj=p+L&H=e*Zdg`ksp6=G}3npW`JJt>@*8K5G}MjViC8N9}^$r!p$eV#%$;4`WlID}bc1HH2?ollifMYOAAed=!a7`IM> zoA%w!X>tr2pR{mLLojuvF8X&5|5v=(JFqc@9)_?~orE~|Gs97GW)$((PP|GyC1%afme05PP z#E#7Rha`WvZgjK&M^dc-s}B+Y;XAWh#a7#9h7Bq|yPQcsN~3t$1V{kEGB(@DK3Axu z?h$QJ1A3q9ntloo;PLqi_h2qLsHR+M3*4lsSX1G{Dc^cs$dBd_CcQGF^P??#$7esU zR(tbqn~Mk6^DCbDUbU;uY*j4}6m7!>XFb1u@dLKUm;|)3b<|J?Syl^iS?yH z;bF{yNJlgf`&_Ev5}}dwC)C#S3%7;hnbQGpAZ@*1udSuE_*tQ-&6Jz|K&IT#^E0?C zw?Qh6XUg|4pFcLQlX~H^+XeQVa@+s?{F!ZGrXOHklc|^$6bSK~Gg1h==N_Flt55`n zdO;2y+957T!Dr;A;HoO%T z)COY*X?MAEwoBF)R@K-M-R^~5mhG}`|MX)`To(_BReDfFu_*<%?mXq`NW7s zfw3P3LlB5h>iGp9=o%XV-X*`Za82AE*HJ#Ce8-nIgD0aQ-ixU1zOX>FBqF%ugfV95 z?Y`XKye{Y!Z$$V#b00@Pqy)CG=oMW+Z5kW{J*8A&cqcdj@^JG%13HcpDOl&NBEFGg z444dO*zd6)>BK@`XfCvveJ^nK4lJ|3yKyTJRKk9AM;e9kiLoE|C?+fb1-4)F-Obtj z;)Ty@14zPA{MEkslY^ucB!-pO5G2UV*L_2oeL%=S{tFB=zZI)3d1N5mQbD|36@_`v z(K+gBB2B03${q0eBeZlk4nX>h(0ONCLsH8CRznY>r3YUi`fwA7 zZ}2iRtGr!Ed4-DRE z;`I1c(tQDKT06Asfu92Ph<;lkjaaG(Ls11HIf0_#G43HY+|orUg8n^28@H`A^`-ri zYCN>?a|>UvE<8cB3B}8z_2k@s^>Gd0f_s~sK;}PMurFXESER1b=Q{+j=qY#$FRFo; zZI7@913+4b++KCtEGri^hk8Lcvk?OsZN)>f$~=1JmK|8)b{^G+Sb< z7R+2XSw#TZuowO44jNzRi+=%;r2T05iZXQ!;D@2Ooq^0sb)cpv^DOxcm zh8LnhGo7W-7jlCfpv7D?w8(rr4>JTr`e2rW`>-<)=# z7vH~nQJ8<-Sw)0~09(OyDnPmsJ!gy*!it|l`;|VD&66jRv^G3CO?p|FiI8=xtpQyL zCJebA zM+tVmUE_2RN~FD`!&!>itt(L=sizAHNvB5r38xIUzKk1=lG0cU3Mfyrl_EQFam(Xh zhlCTB4JM6(ZPZAQx3*2)8_od&yrMete30&US8Uwp!rkvP9gN4P|Y%JGF`}!-s1Hz^gXa%Iwj}mW7y4p#Kk*Fi$we=mVS$n`9P4^fL{p)MvUl&*s+<0B%g%tT_w_AtkJ7 z$Jd{${f;@CH%1CdTx+MQHJNSo+5>)Am~E3)S^l)GT$8`ecGgnM`023ST;ct7K3>o< zb61S5CXV&gDjEefJI#H#YoJG)c4xKLw3W@ibH3`OObswRR{!&q7~N%#P#y440|#X-!eI`_2Wn_vN1{z&)j z>!jm`vq>v4WgzH!%HeK#W4=%m#R2=u#!=up7Y6>ujU2q^!A|_=GC;WsD#oSM-=Pb} zJbisJ|Ytvlyo7j;Go$A};^^JE1BcNIS~g0j<%B!Ok121mw(-ihFSt0p!PIsKF;2X!O^iVTPOe zCr=MQ5)xSE8vlXQ!g%O|Ivh98$0P;ljz|i)55+Bk_vI8fS3Tl5yo6As<)Xshb6IO+ z+b%Ucw$JhOyI{*)*coi<0sBpT{YL8!xa&Rc(R_KHI1881h z81@}`bAFr+$WH0#u9wd4WP#d(P+}2KUPt2q{%mDwyTSK3dZZDRdsiP%bME^t(H>%z1dqUO zfF-GW@$ricL6z*Y5LxvSF^7sLPqML(5CS3}UK=AHb9JFTKfs(1?GcYT>Wp{%JL&|- zlied?sG3la>lMwba?5?cb(z14aSdq}VVShjo0P$1T*Nescb`<@f+wB6u*Q?$2Sb*i z>4@y*e!0cH{rmqqEjqJFBbqioZ&c1GwTIfgVPnwEnqJSUrYhB+bw^W*vE}a`ur$RSFu)02#1Lb~98RyXo7D*>z=Nu7Ky+jsmr9 z#u_wi#ePm~gg=^Xgcd_-nl^0Pf;Jem0d3dPz5QIDY1*%)t~+VH0(G=%u@5H)&RQLE zaA&675wfjZ*XHbXpa`4i%J$3P5{@-|@?`ufj)#evcH-QzNhR4%hG>nx5#XWgIT6!2 zD>f0zWt^Od6%5kQSPrO&3cbWL;?J^A`++poNcgM?*81xX;~JdhGZF5Q(n*idm3a=+ zs=nsiIi$y%CzAG?1v~p2dk^QV*F>;Omuwt{)~bzbk}llX4`*bs27*L57QnTs!@&AW z3hP&J>=zCk{rQUa~39QYM!S7T>fniFAezfjDzapaU7Un;_A^ zr5cQ}wd^lHUJ&ewWHQJDQ?z>ib!dQR+UYtBAwldp;6IY^=UB_JMeccG6m9MdFrDTy zKmR&&x*JtD1xG(oB12ohx_GUTO*`Fo~PFUb><|<;MxWeS~M&o{C@VB86o{nxqLNi zifx9>$y(+EqT)k9vKatpCHdNO1RuLy9w8djENd`wEVbqjoni$%&0`+c;+#=7zzpr0 zTf^2^YriMMt$gIPRudOWcUn5i#@q&x!#C^+>~cMCV5I?$j(owD!-l z7H)lCe#xEetSOlxry)>MY|B6LM1ZwI`b=`J0Nc6} zEI75cm|6f$2Rmv+nReqvy4J9FySGT?`)G=4hFU$fZ-XbWxcA8|{Uh9ds72W7uu&hb za~z%`zay5VoOyc+mGs=0d6dDs*P57J`;JG^Y#ZDQq|5^7&R6;Mftp@5B1DytbqQS@ z)K_XN>o=&BUl|)qGTAWn!0xTz;1ba#bmw>%8kY1pY2hXe&WVN}mTPXPA}u}em2NW7 zsK0^F&Mn=gE|{(1hre5(PQD-S2&DE?<;g5c&`ZT7HP+FhRHPH=ndY;@m6S?9iRX%P zv!T35T#D2NMs_)G#KiP&6ek7Yg0%;lJMl8s(QNHXMt=q7-ApZ-w1I#!11>h zEdp}sWB|h9@$CkI9&qtpM;bGjOGtDCm$^ug|BrH!Gkr15AlkEx(ia~_=zcvqkbMxR zZ_ErI>ROmS@kQIoeu@WoDheC&rOov{svtOLuZ$pmI%H$~*tr+=d*n3oA!Ir;ywZ{+ zpm=f*R0G~gADiz#l#+9QAJfZD{t6RH|J0{vCbKz27P2o5Ff@~j*V8l=e^ia|Wn`4U z(g!os7c67^$(qpx2+2K~O=?fLWmxJ@sAY|?e-Vnq#)ZAj?2g_(zTR)&(CRr}cE__E z=F(xsU4ABc28r{KltH7Gz+~|rg=8%Iw|h$!cxVL0=A4Qu28 z8t4VBMNm7LAd7Ouief#8dVd&-F4J3Jt8m84Ayo22IU9kwg2gQWm_n4fO5+t2!aXvr zuv-5JC%`l4xEueE6{0v5zO_fxQG(&^at?E#jJ5bkHd1_~OiMrh(>*R$kyC|1WFNSK zE$a_$j~wE|wzNv{m<(vTw$V?YrUB+02vOq&Jth`#*&w8V>q7fJ^B52xE(xFOv$ z=PbqTt!kX-j$;>WzrZX4?>El4n&$}nST8x*i-R#{!wv;1-D*C2d z#?yOj9P^;VIDf%KY`Ou<%0poR$7Of$(|&AjK{her6YRYC zqrK!|L2R6Ur#R~lVf|TB7Rs{d#P-K(8J3W^Jmh1{j=0S~)xQbbYHLnzkya6;UalV} zM8?n9FkBp$8!lhWpQBHs*4}hz?!=K>!wgOQMHKw5Zy*;;Y4{CE z7J1t2L5_5wS|+&D8hAmFvrNeM4WCKKo2_q%ie=6BCsRh9J0{Ez_@!&xanQ6?$5YdW zEtgGO^?f&O+jrv7HuL82oy*T&sX|=DubBtL@$V7(uzFDP{us`rv-8U!k{E#~}& z`{x2{vnb!_X0e!GE%9@)NU-@o6v6LBH5(vS2sG?jVAi&34PVWNa*n>~jnnElC4epw=4zBxp64l6t;<`GaA zYfH!6_!#y#4J!`Wgz#dt4^}I}n`dviVsNh~ zyX2rA1~rr*L8olE^ekN1QPe-jB{S^u9T%;R{z^<>-kup|kFXfuGl~a20d9|XsB#C9 zm3m{HUnDi9T9caj$%mv{3M!|T2LM9;4tYYTw*Czta<)M&&iPpjxDB4146z<1+cl16v=eJNR;eKz zvQ`U6X{r?zUs@>+$s3Ha#XvKcl+8kNpj+kj3=^Y)J7fSdvbV6NWBhrROm=G~)~7Ot z_XVHLi+7n#eEgkcXG^8zZ$#Q$#u5-gK(d?UCI^W4Yl4fE5r6V$j@7f{j|m(wmRUw@ z%ZRQqwAeAYq&E{&aOhHn4eVdopfCVDEDucW)VEs{%}B8lcm~;xg3;528Vs|Z>=)w^ zW}u}HvwU+kM4>0YIAo_Aygtk_rxO7_$U$<~4?;R$9yr5FJ-&mpCMV$!%ljzQIG(#U zrklCzr;W;Wo@7+38HF%aaij{OLe>>~gQ$`J(Yf2qmFbj~#D}m*$~&vsH(r^@zLmjP zjX{_XHa%AB22inO!AQKShGLFe5ePa<$?)WWmv)=Tz!gsGYQ^Q$fT}k6;RL18bhOnF zCwvkIA=tWyF07F^|i!$rNu|=6rWXY8i&VG@@W$a*!)K4h{XVfl@@=lgKWQFC#9sK&!Wz&IG;W19O_N(j*)CBv(t`3>F~ zDuO&6fK3hq7F^Buc(@?zO^>!DbYE|0Z{k)<=2|LUyy`-$#Ay!DLrtEA%pwJt;xO?Z zRU=3kb#3FB2%C@88Nrr`TdHIv5O5}}LNE$-vATDs)#_w+8i(CHc}f&p&BTUvNMNO1 zWg{CFde-xoA4=j}5eQ-1Mk zWcjdzvjl6l-E3k#b@O6`@cgJt6ZETXs3~vY^9`P*_fq*{bD(jYR%7naJUg6*ue8bR z4CZFKUasO!Zli|~-VyIthKqIK$W21q2e*8C&=_je$DF!?{?#QIMnJxrdw{}w!Ycgv! zCZ&)M$tKs8!O}7D<$jS(j1AsBL7YT=gGNC5X8QgMozB0YmsN0>+bbImz*qh3C$OSv z3w@?|Nhec$U|7=yI*W4JJak!;fTnC(4o#Z^`cfEBa`#G{$XLjY4(J4&&?X2bizSyu z$mJLq0`Qejwk`1CB~qHkRa6i_`6OToTr$Xy(?=F9h$pHESm`xH%B!rE^@EZpmUpu& zxW0H;yjmQ#tGA?RRj0uxTcD7)osa8w5r*;|XRaAC362gF2y52?*q=hzfK9~pEna@i z`?uk5x#4_uJnqi68pIJ!pYtdmG$UB2vl-4%Wj)KoQVv7rLU#7qYB|ljfD23bRxuf& zca6$vnU7JjjXMSo27>enaYkNVrMZ{`DBv@cbbhzcuwxxCqnEf7ygDNeXiKHCZj|@x zWCun~6@6;uNg^3w)`#311kOf>@b>w3et$(7rW?b&nI`TR_yFKnNTx8vo)4=@+Gv9C zQksBaEI-@C=bdTRpiw~zqg=%Ehv@{*rbL+RS^RfmBN@QUMM&Yy!my@RWe?w*X791C zr*9DA`1+NK+2R{UL~q7I=Wx3Fcap}B^Em1lvsDcl~YbO zy9^S(SGa+g9MuLqy;xqLqYsJ=O|DNjF_~2z)#V$AJiR-Gx@yKb&=B5X3kq1CrP=BL z%`4i8@WEk3?*huNapN0{4&8V3stZ1n7v^!8IvN%g@_7#hZ@N{5He`BW6P&};B2a~` z%F=M9Rk;jYX#`R(kxJbq$^orpS;Z|7S*A0PL$S3;_bcQntFa->MLW{g*t5xzOCVz} z>0-?`u%aaYN88bkXDfG*Qnhn@&*4JTeVYrkSSnIjCJ^| zHUcju=377|3qt<6%?K0P6)*4tFSg`) zzX}6zk8G&xk`>*2jXKp`(Ip3f(3N0XK_#eF21W2pbgv&`~k9`n9%U~0+W#Xs$*(?19!84GgK$k1^qDUhub)^8|fK(R{JbGn41o!4G zYCOG!y;jdfDFZfk|7!j(bXPDSmZi&~ywK}6Tm`ms%T*enkj-+7+95$}FYN=_%FPXh zAB+&e`_1c=L{_)vc%z$`0Q7(pmNd35@n>N)eFCZ(otqaETGcAn89d}wh+mkm>Z)hXln;RYe zlUt3!0w2lPTGyG){(HmcfM3LT345a>zNghyxY^fsOYb-Ao-U`d3CQNl<3 zxt`_N?>uab3|=QI z$~eTaj2D{ZHy#Fhn)-Ey2W6uXQuWuGrk=h1l?O8ArPRl;phV(0iHG5-y%d_Y@((H_ z&(L*%fP@OYc$t`qiPiu>i(|#)D5JUL%=|30Z%|+X$0OcaB57-xywSyT9A|Wa z8A$P|Wojz05*NjbAbh;#6{2nHO(VyPanGoBNuhxD`T0E$16*=^Bdy?{7 z|Lf18T-yKj%m4aws7Itlr##h8y{Xs?igddyZp|%e(x@|)v~hPBf`ugw+SR3!W*A(3 zb-2+TMo<17szfDy87dHkC)U(IVxm%3d4eHhi5BO2ag>^!ARJ@IXY6#J_M1uc5EDM` z*xgK)>nY?ywR^=e@MA3Z%RkZqFSk}n#?O#+R#+}J2_(~uu;sb1crps08?#vU)zVdRha3uI5OUa9qp&tQXBIpQJ zc7!q?2=?7_e!OEQNTTxXZh@P@$xRwG3^ERlg}5yph3OAUW?lP9k~V{=P+oe6|Jd0| zB`6N1m7@X4V6%@-Fr)efPFmUcWX6K?*!r{WAgFyw z7ie|RCQhb5ys!Cox);kMzJma{$|1Cn*F{9+y;;g3K{d7wE|>A(x%hd#T2Jn#2Ybd- ziO`80Clg`@S5@>Kt;u?eld54O$hv|CxsnOS8hiZ*eEHoS2tP+-Z57W1N4rjvlbBu2TNQ*@6yW$7>SmOdn|;T4a^uN z4d*ypg*A%_Jd-BXDnjFPy5Zx{UeVmjTQTg2PI+w>C)_X%=ScBYzf7(dN7UNdQ0ZPA zSMx1UsuU(Q*BAAGG%gO@fONs3vzHEs6RaRnH;+2kz`(}XZ{5yPe(PY0zu>;Rp#8^-5#(cw-cYSIcJF9;s&9rs&HFItH5 z=93!rK~kq39=oS#>ROiCZS#tm*aTVW@+}v{d0W$1BM zZn4|YwGqJ|Le|45T;uXe;*}wH%JC+QT`y5j0<$`0rqS6d$i%-X+w4UGs(DIH+9r;1 zZ1)ghEIwg~>S}L@tDvNCg8gE?9IA^s!`blp5(bPtFT9_0OL+qs?AE4`=Se?eyIg}2 z2iEB@`zK~5$O>n7rpWVnqP&xErZ~o!qnQF>K#+R?0_4sQWP!5php<3{b(HMwetX)P zIL{G9g60wgI#@i0u_>ySm7LS9cf86oS)W$NB|?7K?jC7r;S$6JVG_Bx-u04Hb0Bml z;RUD8^E0aW1aGF1q8vGCxWMliJ~f1C#*YDJ2#g1$3wlTMo(;`;)>~9)Kca&CIsFUJ zoP?hP`OVd{vnXva{lp0;`JAOwAZ=mh)9Nuhd z8PhnMj3WSv|(7G04753MbsHKRNFeA?$3+89Ux=iIPL1@ zJi_{NLsRF=I)9i74vg(PeNE+Xx4f~WV_Z)vNa!72Or=-zOEhBmj*In<9&b2>b6@B2 zqhXetbk%p3~JWy|r*> z;d3a?Pwn zYeeB=81_QMEzu6L6NBglz&K5d=SA5NG$Pqyk2rSbD`hod zUX+67pMy*gY*0>@S7>{yew8IphXPyb)Vq*Rl)WpJfiHPVF&-=q(V1x$QVj32G-paM zq_A`&jY7{3)8cGF9>M`VZbg)EiJ;X4jPt?;fRe<`508=}^FBT1dX2+X+O=`$oY4C? z_(UPw39K$LH~xm9H<(})CoeQ5sfdxNh*eYc=2DZeuB{x45+@9?`{5CIXKb1NDy%n% zW`c07J`m5{6(o~Th5y>J6Qrj>a^wONxpxK80E@$>h$K|a0YSIYmZ4@n)3D*(MuXCP7Pyol0X)SV{MY2Q!@Z87B+STMi6YkgQQGqvQQ{~r9h>jjuvPWL$9y8E>SH1j_76yTJNE(AjDUDJM$zO z;kUQVV;L0gWe1nC=h5d$fYl|dU@}bSbPgamYcm1;r9K}3H({AJTjcGCuLP-!Ewpnh zz+=#+r#2E>GYffC;VIIZ^z5gm_~KHlU#9K!G6$%OF189QxTA2QbseFt%hnb*JDBTW zeG=)??+D}uFam8@6&{P$&y5pHvYrufw_rRHFGKYBtuG@FV$Z?qBy33+Nmp&1xkIH1 zIhs&oE&4o~1(H7ba_M>mIS^mWcc%`j5 z;G1Hs+l?BS%;JVKDYw4@eEHn(4rTMOu<3G%6r=kA&>_i)ffLVzAZKvR1U|GxZ)(e_ zyRAQCDq9jJfPnmnvth$xWy>d6=^GK$Gsa@y@uvi_Kl>aO<|`{w1@{q4yzWE>_yU-i~eg10RG@6XH1v8E=jf4xBW!h**z8hvV#a3B7HWhdZ3_ zFKYC%dt4v>zM4$&(CX}nv;O<-J6pC=1Hwe-&18v1=i~AQ=X3bx#h*jWa41gnqQM$> zkg_hwg)@#emF zS=SjMy?>bu*$=?Qw_?xXjc=ycw8E^74u?ZJW^Bj;kc6DWUE62`VXPhyqu^!I!#kr$ z`8d)GgPrgn?TGKSAdy25+tXrqcs?r_@YqObBYz>D3_%{$368@g>rkZ-8C;@NIdNup z<<5*)bi;l!zc#mofWlq>jIUz@;zNLM>xzOHL zA_`SU#bl!j38UMhkFw`zcg}S;Gb3pfDHlg1(5c7vvOh+=-J?by;n;>cI8|w~a zo)aF&LoJLkmVH=I(FepAwI~a@Nl?g4YAj29*5nR_Krl_mqhdD6w%yDOO&(P-=Z%oa zY_&JK2Y!uew?VGaQHdnYN!PJLiS?+ip3qn+q^QgpGvN$yK6Xw{2kZldn7gMeU@dEN zpp!b`mfcAC(Zj}AT_&-b=TUz`)Hz_bU?>mvZcXHFoMn$vH+QJe-Sa^ro+THMTgdzGf-uVqZiZz*UXOo|% zZ&8V3zbxLRyFnu~Kp7F7K7?Te4A7SVR0ezf!Co2h`Hj+~tuI)X<&}ZU4mBJa-l6uC zSt3V9B;i`^KW35vb@UIkMNJ9!E`W94OUj(2+2a7j>nQnnYQHXMzPI_9XC4!pPh-$e{H%WPDw;d2Ej)SDC?n+dnX%miZ zx!SpRcgxvb@|29{4slW`gp}d}8W_(>6;-=P)_Km906W1W@W(Q!a)-Lj<%`55OczEN zFhnhr-W|WSsLX|p2!i8Df=rC7({hhH4~Ps#P)t5pIVn^z!1S}`vWsF4=10ztm`_h+=gzK7c`07j2$uo?NQn=~a0jx4^ z4M#CZoCcxVA~IA(jAZd9I=9kfzidFG1yLfe(fg8Pu`iL$_sVFB(DAP*cc+g z(w*HwHf6ZNM-1H62u5^c-oZz;L&o|59^fgrw^9{Rk2v~2Ad%p1)4FLb*>yG-x^N_^%F>EM6U6v@r ziJj32dcXcP)d`U|4a^(=8ER!`$s>dpoFClA$gSZpf(FtI1Nia~1`twcLNgie#!$5Z zGE>)LTfEX;nI7D%PN5iOAXaOKTidupyg}Jg+FZX~-tZ`I^is2nYKI?^=ZrotI!JkKc-sxfe_NBVn$b5HnplE}Kh z@@FrCX(f!I6^bR}B}VM-VfBD&io@U6#%vqt^_BLg+2jXStmNSJMj#wt%_g;QywnLU%a5A$J)c1Uf0{V%kBefWawmI>&1NOQ#JGw6%P*l3?)ym+0UH% z6f+d_+5U)T%7l;PqCwa2G+%B%Umjn@>2)UXtnE`QY;G1SKUt}BK!~Zfw{1NRa&ZOQ zSuMsfazq`-5xpDPF?v{+RxFZ9U$s|HQU8*?XGGgCw5FvtZHo0df?GLxsFL@wD2Y2T z4Gut+;|jUP8OPJCc37KQFAzl2V5Hy5S&6FKW=+RvnQ?X^K}7lGViSsh^vvvA6yE*o z;+_$!RuU;zrSNk3ezC$US{Sbs#z*O>9PGc95oy3quh3^ z+x-s;B1P+L^ME?jpOHIj+eX+yE2dtwLOe=?KrCQWTWF-_2YW*#ssGIjKmYjMlaHtl z_CE#7FI*Fw>_1I5@C9y#QXw4gfA@HFJaPbNGA%2`M_|l`E-c#}8JEm7y5JgcL zhI8L>!D*L#WbJ}k3x(3Q*|#o30oP+710~$c-M*u(_zB9^Nj+O{VN`Tq+%%Ez&2)vO zV1QQ^80c&M^dL41k8mlLR65d8zJ{9lhajAg5?Zj!l1u`CEUBOl3abaOLZ&4+7{j_J zHs)um6YlWR;K>XbMbBhBp9HAv-~qnivM6k(W-zQD;t@4Xa~@OMa{5PmN=Tv&(b_D1 z3F&)RqLEpnjyx-*qA=r>RJICZFxc5S8;0+5y1>x03!}5##4WM0ysa!!TvaF07<>lfJnrPm;Ov#oOW zm^vRRs)liP+G97!hJKAlSGyIpeL;tTT7ZaV&$CtiR?{~NtB0p@ZZ)LkX4ObohORNa zU%bP1O2bsz zX#Em)x@hMWo1n-0IJ7x(G>EHg1;YIn#U8qDf=-7bmatK#B*6DlU{kb%{j=dN^djqF zV5reMST=+?#<{WIzyW}IWbMr{6BN@Ky`1IkkouGpN_{@|J#PmWe}TzxU{UdQIf%aA z#@lf7q$f=mPg-HcF!)SN+vyNvFIIZZtI1#o^1vU{Er(m>%jsK$puqbi~o@-p` z3j@4{+mL@K**N}YW~$8klrPImmDiB}<`fWUib83Z5ov9ds8GmMW7Gg!lWxyNynqS) z0auSAj)_0kU`caHPJEyEBoV2iOX;Bj^~`hmSR&=UO(ksj;~-G6H9X}}HCEnvk4uzL>p#X zO%af!?rbckuVq4U?iM$&@Uc5E7O9P%`UQ&#Z)joT3CE=7d^-iPjcQqG|H8o3I%tD; zV(0;~^#a|O*|pPoi8dK22a!k2qyrv2|Ak4Y`>)r?$rSuv_y) zJK4))BLCQJx2q=~iEKaq2=k5^o^SYMJ>6hEd;jF4AOCZH55+ELKmO-0KjMz!e1V_l z{0AYU?;isir{q7OdEJwb!1Nz~_wh%VRsYF;IAEHd{~}}ZV*Uxj_9la(%x1Cq1m}WJ zIT+A>()ro{^a(67L%hUY$xpP4i$nG!7cMJ){=IdD%lGEM;aB2o00A|b-7Qyh%q%{^ z`7nCv`^iVY`vo`-Shv9^bQo(V8C%3IzD0|WfBs{)1T+czQ{#~I0eSuSpD)l&*3hfd zhDx7bsG*M;y*R{wVojy;$RUxCHS(|D;Qc>S|PL*LFbhPfCr!=A!ayo-7h4 z@d=TFcWwO|9L*Mfaj_M1g}C53(v>;T;t&|uA#e%yC5xI=S4-wMB7W`nDXhYc=LrZX zXek~rDT?C(EX5*3=n%aIU4e;%S!+F)@YhjoW_QQ!Pliubh35y8J>ofP&jW-0dQU6h z`X@)n{qlM_U*e4S?Wb>->0+!ZKJA|@3hCG#yG;^B0+^u20`kV}h@#UUC7_En*vczV zjI^xZz_j>9$+~IDER*}>Zg~Cfmrs6A{V0VitD(j)n!LNiQn)O5lduF6l9BGPZI?t+ zA<==Eki!5qk{dpcT7Ej=;O4w;VIXH^+2* zhiK^-A3eB7IXaL>If5K8bf7K=ZR>|9C=tU`Q8}&-PdQR0cv*RY7$VHX*7Kts z09MzkBknld`b~@n07lvwy{C?>7Z=v6gT=i((nAvGNj8_k-(5eHRaIa zakMljb<+Tv+2i@Ph-thXbm+%(ZU|H1R%Vq^AbsEuCX3xW^UM)$Zd~uDMMZ|X;M!vt zP&|efc$mRj{{hEBc%(|Ct9QWC#k)GEhy5(g2;irARL@fZt;eT1{Mul*Fke>U)LjOdITheLQ!NgXUK+Jzl}%d;=qD$Z+3bfbv$ zY>&Hk@oc0?ri`YR&ex`JjQUukrtNexmH|kcjJm0#WR`>-D6q&Fu8=iQ zQQFZsmZLWctB2U%;k75zZHhU{uOg81mI7|E0*f2!bXk0MKf}(xngAISX#&5`mj_o} zBrIm*7c4l(vLodW7NuBwiVO=sSn|cnTZIr!EBXov6r6qa$ooAyH_gfJfYjztG7onpi1R$iFb7Riq@y!?nao@i@SJlOc8>AU`@ zm2hA?^f5Ym3lVZbobfkmEj;F8gp;N=WSf1AgRBW*UaM+hI!+HZ?{42z2Zz%(4F!Ox)pI{*ZP)pbUuozlR{O2>vgW z1E~Ldh#`qXO@sU?sganw0EasbI2tw(U8i_J&?-{Z5m({18yg441F1Vo5F8JNWzaC_ zjE0(9u&qNN9E@_Ge$1F-tNwAL#UQ;$3k;(u{p#Iw7JR0eKo^e{D+WdL0m8x{%?)iS z*|zj}qn7CywfCcA{2J-%w~Dtzv?JnA1#mID8+1d@RxKm&$wVBcLTO+#VvVJD~P zl_o!t8vW+xl0HPapeOAs0|vFJ$DIMhxH~)#A;c*-14HnjwQ(uXoJ1mO$VfO&H9G_Z z)j$@&gHv{yh^=xX3y8=Y+cMvE^V)*&)$onIhAHzrKQk2mHq<_+F%0C?6J;<6 z)^g85z~y1`W`m1SPJClvFyPafuydfC_Rr{8wBIv;_KVqD|H=tzH}4g>0u9YLWmNb9 zx2=bz9E~?F{*4{8Vw5?c(y!AloFIqxWU(%HjXHd?vK6JIp9=z3szY0POvE;>%Fx20 z8I;qo{_0E~eXw@Px|)4t+P@9(77Yl`c~HJVrX`WuFH^ zWL=K&q~rmJtXadG?dKkrN>5Ix$#AKFAe}E|Y4s`Z)->-_ z5%#Pl;`4Vr541RBTZ^WBXv6ltO3*96lVgw+19=}iF7zZv)9PFZs+sC$>H(BSxD8HyP_R zvQ#GauNdFsPxZ($Du~Rth4v%f4@J@ih+l`;zo3tQ*!uio>Zc@_7YY@&V+#-{x#<>a^ zOPw@Rt+d$1^^WuUDbs^XGd7tJP+2Y&RYL+;k)iBqC>SHRm*8vBTd~@`d%x8}|K`I{ z6=@J2-N4B(nQ+d+=HlrF$s#b=gilEOz17T9+v^Ua{ z7(v;)LVEm!H)d~Kc8lH z4JsVCS9`UVSmJ!H_X@IbVb&BD=#?DAYCn-^XO?c^dv$S8M`T_d%)0HE=w(4frVaVf zWmd;TcbTcz;NMG)hOX$E;LY3dwphhZA81NtTifjaE3JD#;6j< zXJOYS5BAp9rOwSJaZkoIK`EmBk0=6;|1{$hMeKuAR!m}B0*fHC!40G=S^=(5VFq^E z9K&nsVff*ar}&(Nm;|u6S6g1yRwP-7ORy{t-!4O$u|S-7~~0~+7eP{L+azdvM74&zD#e9YuJ(pqF;tuUa9mTw1ivoZtY=~`Lt|>>s z8SV#wnuWTf`cYyUMcJ3q_^N~%D$OgzsE`z#P)z59hi})oF^ewZkf@cHwguv>7L6-pYigqHO!cT$vAHFEqpTKYkE~WoaYHKQ9pAW^I(jS z?>DfL_$L-%iSX0KatA`ztFRAl7gb#sKEuJWq>B1Qp2W_)7%8xgVZxG{LU-D4%Dv2wBMU@_le8o(Nlzc&SyG6u2rd0DUJR26Y8!VCbv7Q z{w5_Wj9StN+k6ygwI5l-1StrmK)J#MloWVU~>tP>jCB9tv#<;y;R1P&X8> z9L+i8pe2nsS+GJ;TFwp|kuDmOz_FClm_?;LF&vH1j2YOZsMkS0hF^(4YZR=|KBWDF zt$qBF{lxtvq!kN;J6D{WH}(k*vw-k*Z=*0qZTf%Zk%8& zq3S4qyxXD@P5AWbAE+IQRmvAshW*3u@#S6kg2KB0hnj4)vMpNt{!@IQik1w6fBMFM z_&@)f;1`QG{PjP+0bA4i|M=xUUZd2k{OgCsd}IH9eFtvj^Yi^u{&9t>7$igH(N?oY!W|cj$fH4l3e*Dkhdw&dWlLZw@8L#iL?wJm+(K~3ChF?)v z*=2RgumCe>`D~z>iXwL)iUeePNIuv_!hH+{(bTH(R_CpMZ!wEW{4)h6*C$966)ma! z3F}2h0qtl&ceCHFMS@-*am(q@+RuLPe$Q#LcoEM@@DqNWj zwCE?`GCx$Y7?6KYFn3~ZL&o8V?J-k9ZS6?NV!{4&h;MRc*8A>GOw{2)di=J{GyS@p zWya3zpf->*SM7`-<3c*#t)rD&jU8eDB57lyx7M_8>NRM-K9KoE6)9C-;JrbNRsiiZ zk{%|)D+mWX=A12PobF_!4;R#gyLaZ8m2`*V6=& zI-cU9q&2gJya5t1ZIKqXV#E28leYHeEwP}F9k2{lDa?q0BHDAfQ!0v*^n5E#NT~MD z9CEW=9u^I7{*8dmZUeV?pLL5p_7x zp)z)Ci|c8tV^}EIt*~ZNb!059*iJh$Y%`lGHI$s(EoN_4RW&7iQE|%s)&_cAI(PZ?x5h^mVOucc6yON_nW%_qRShMu*ITJ5s@%5ZjPt5j}CRRd%SFcEpxZ} z*@*H7EYz)_I_wi+ThdImj+84Z_d1&v!Kfg?v$J%{gWXBRR;D{>wA(M^Hi z0-u}Z&3#EYF{5@$dkX|~90>&NpWtM^Jlp^Gu8%A*qutWXAQyL^&S_sk68WAW~Jok;c3Po=sPJWTp3{S_zt%29y;~SCfbSM zH+b6FnUd?n;3O$#SI*?ndAHqHv%_H*k}8#r92x|=_O@NFb~vh%c&Y1ESNY={R|lqs z*s|dX?AkyEW39=9qhhTD!;&X2?iC+gKlm#+fWo$0MDI{%Z zpAAd4H(hnSIdfFfbZ^xP2OXO0d4t|tT|favMp_T7xKnAn3(g)w-VJN2**8Hod}TB! zo~^ZG;Epn5<)Z|o$VeW&Fw9Lo2Ck^34(1MZ`ToENjPn!nz0MkIH}=SZ@|vKMcp|7| z?g?ZW@A(KBSg^Z;9)_J{AxC$A)~Zu z`$4spGA38Ip(8pg^k1}ub+jct=N1?n_=g4x^O2Hv_yv%)Ac13stf81wR3?jI=pzfe zmAp_EO!un}QVYtuf%8{ojOG-RT?okfbScokAGGM343XJs~3ER~D2K6xyI`KE*7}tRFd~=ZUwzy5!J>1~}cq>rcI&x?#95-LuB-s#*EvD#xLG?y=>Tr5xOHeLLuh zezD4dx_T!a*Vm97Gq$({PAZE+gaLU?IpiTSpVk}B1T;CK z)9H0zz)``$-RF>EygyL$w0qg7RJ~iA!EUEs;mxT!YnT%^^Y?B-OT+x|-qqpVa^FhM z`nlA@c3-;*BRF4kBrmmkbNcz`DEdUs{#`T53x>uLZr>uK2SJFG=1agx*AZ@Lvrmpo z<#YEhu+#eFiJjL-d8glqsb=)TZ|xbgV#d3KiJuwLLyGm_ybWlvH-TP+xx^y<6|b=- zzq&u2bcKQI#m~!d)j&Pec$jUGqfrg>1zxV(%d6~#y9yfI3|j8OR#%2+n{tbdZO`65 z{Z(#bhOXh@sJw3$zR;z<0AKV+b~9I%RJYii6wVc3i>05KpBG^*wv8v2%A`AK+c$EiAvLUa_XT9E0Hn3dti*ELy(8Cw_V-0 z`x|i#x+vWcxH2NIGeDD4&I*s$B2pOsMnSOfXk9ZHi@b{s3 z1?!z~Q}l$_7U~@tZv)6?Fl^N#k_knE6=GV;-W5gaqM0=j4b-KUDAtaTger!x90&a} zzz3SR$d(~sr{SLmIq*?0!y-QcLp4-r50Yq@A<*AC7$k~SMu|cvw~a*+u~sl6s7&%z z-;yTdv?FbOe9b$zoa2N`SH9J_o1t-Wxg)1aP|om#kPR&09XrQ<0OL`ocV?JX&{$Gd zV2sdSQ6Xuc9wg>5G$(Fw@37I8|K^-K!^?ML)yp%B%UVkD06*%1V({KNEG)!xuhL`0 z$x2sKc80(cZ(<=Hz*DGl5Xa_QTvZBDS&5-#v9N+~SU0R)*jcaN&@WL^@qj$tjAAt? zeQf#qKXJv%|A`w>{!bi%_kYs$sPH#y?VFcP3v$07w^w3*q8~3$LV!d5*eQzB%KUe{ z9-OtX&F%2LIK;okU7>5+v-VB8`9lA_RUhtGK1c^RU^|ZVVjP~w|R6D)F#?$r0t4^arty4g@U+l{GPM1vc!~hH8v@KRdAZa^6 zDwE}L{3YwZHpYMAojD1kNO&uqqTb@NYrD6K@PK1x>Zq1U@uv>pcI(1lEAs*Ujm#Cj z7WaU~nHMF<1JfVz`^QifUn*{hx`GMoBb(oiiZEdr*E2%kc4@z_<~sP|cv%Jtv0ze# zN<%i&2&?{-(b3`Y;Xav59RBXdp_U?i>rC{6Ajf?iB6ZS&4)jJz{9GMv52tYA>*DDL ziefma_kt9-sOJ6e9~@~Rg&Q{$)rnS^!JILr-JEu}*xs4Xu^O_!-yLH?LhBg{8r?4T z2uR7w82YwDnX290Uc;vkfVrk?Yq$x0&;YI9lh%5PFYmeQuXctXi*yd)D@oqC^ zvDHS2sW0VPqLn3zj3uWy=7NeIW#8#b1b_;#cej0q*M(7$n^EO`Q3jAI;{3S}cQIYe zxB$}M;I=1}-Q-SX)9BSWU>9O?u?!(7XGgI!bz602g_X1gUCLQd)ekQa8R5kOsL_5O zoHSuD#f7o@xW(d@VhW)>;6VxM!;wl4B(&IhaKUMx*KEBNz+{@j!&B@cY#^JlIF{UG zgibr~rDyjuVDo-Q#APW22T5HZo$;L_GxtA-DIFm$)`p}n7-y#Ybr7aS75N5Z&SZw> zEPLcgmbzL(5WiQ!h&=~ogu>?vP#otH9g}+cF3@u*B8Uo7ng0N1kYDuSDE;Vk)#ybF zXEAiCFe|5SC_3xz}iXXxsG*)LE>LTWtzt3$R%o z0zsfZqD}f^Pn%AkZ^cULQp?Qa!Nr(+qg5Me-EX5l+rwB}pDA=}d>aX08Tdv*Hb=y^ zG&&>Gq&HNyF~aOxgD6f+h6TM4N~7#(q{~u=7{uEIdtDe9TiZy9m+GjCjIcWBwo%oG zW5N?hU5VK?8nAs-(SlJIYzt0;-e1v+Z`^VPH_JM_m!8n zoEow%s+gQi#@IafQvjhdGV=C)T;9(E8U9WKuANn&JPa510v4uzo0sT z$PwsKu1+bWmA4`#;vtS-xePwE2tK@!_aC|oA6kj0>o$c{d1mCKPjv?9|Mqy7Ss<5h zM$LikPqt#It+A;eml}bM3fo0ow5e}@ik&Ry-(CMi+wwL!R6H14u^xWZClaD{v75X@ zd0bpUB2041WWSsJ_!L=F^MC-r+#R4VxxHKfCC8J}-h>X)prb4Jh8=yXMzKIXH=Xmz zJN(Rmud$&(YjJ2q^(QANe7Z;FRoT{(V=2@(A;L^yffGgZ)r)eDk;c5lt>MIr^EMC< z-reLG&UED>3h{ttkNIJu#ef4*-#p`nquA%uG(Kx$) zTs*akW6FG$y0XXz340AbCHYqy46*SX)k$BjPFT?x;se^CdvHYQ>1s>YwVkBJ9(pE( zd;;3a>|}rIOKe774ILhZ3MZl~)PV4*JZ7_ei<8G!?$D&V0v@cH9Jf?Wou0g5N2E!V z#@~`4FuoQ>{lHKm{f@NVB5w0Es@F=D`f+FoQd5@9Cla$WzsNZnZ8#z^*WAq8*-o>~ z81pHB&5*xX+)Pg^3qfLpMdLz(j#ESQ0>_8&ERL<(Y)*JfX@oqk4i+6+wBbd&#d<=U zHj^0wqu88;t6!Lmw!j+oTPSOSyqHa;(uCkA2#0z)%eUzAiYTOldIdHPFT>^$>B+d` zL(CdR1GXzvV(mZq1cS|wKU0u4K&+a4bv*7qeHl+Kn1SM_JpEuHI?yZD$w&kmuhNhz z$ehBXR*epoO~Uc1ti`Ek(xv4{p zB@J2hn=_O0$7mq#x4?(`c`s0+%>B&5MF|Iu`9N)P1Jc@B?HSgf{ZL|{s+Dn%Tm>r| zmSi;s2#j(#!hbBWVJ`dp$nsEuJ1oC4 zW!5-B=cJ%Lw@3eCrw<%7F#(o@+QrmVa1>r-qz|$IRu!ci12{?}ex|8>B0)s>Nk{}&)J@z5eu7D{F%E08Cx+F&lDD!W9$u?KZSY#B?QOGmlP zQRHog%Z4*{#7>tu8}H`wd@G?afMCMwt~g%TM`;W74`osiL136V&&QXHLxd%;nLW%AjBvEJEZV1`A{Fc}Z;qEET@k zZ>ik4^Vnb)B_{ODqM;j4@fES!eJJId(BXK&D+ct6)zXEZ5GRxNiQTYp1*rNs9;YiN zqtW68*1o+nSzS_W>6GQw@w2Ktqk+Xp*=MDcZbG=U;Rn#o>=;t$2La_|KCfGLm6Jdt z3cwQqO|v;NgkYURCMT>IXeHmNGV`!>$LvmM(}YEn8*POhh-qNeooqK>lTZrl1 zV>Q>|AObbiOcgKFQUSEJTbn^k%!`W8Z7$A|60kd&mLsmI;CMI1-rHH>^=H2lYkK;b zPq(MB^k-ULz$aU17sHMFUD>WVSmp}A93gFd@-HOPHx|#&IMWi3bd5n+*y)w!;t7@5S~e8|$lbr@AiMuKrR{rSJ=+Uwu?D3LSoG)m3tl zSGhp@mgcketoe$H2*bH3Tyldct~@Eu&r7l>HFkfvwNp%X9L=u@OrDwZS5Ph#PC@T*MH?^J0pQ*@_(jU-%(59(EcuL-v z?}iOr*0AS{$@+jV>mHhSY zJaUB@Bk%Hl&h;LzT&)`uX{gc}ijT~vhr0=8nozRJQ@-5X*eB9Zg~(T^5x$~2;oroF zW@OBW31b8N1(qyS`UbV6Ps&FF>N_}8kp_^L;Ugd!lYxGLjRLBuWKww^PFoE%``k0u zLHGGrz9H<4=9XY1RstZoRrvV)ZyDffal>1lgOHa}eAOig)~~lmypbNc$0x1=pL`kH zzstJ!-~aRf3~`w-02Y7VdY*%-wzKBONzw+JBroGb1iGt(q?A!S27jeD-AlR7oomz6tQ~ruz!7zON17B5>X-_ zg_F9&*)`l~k{~YI9Hwt=Ho-rVGH8Mk6_HS-=C7%E44k6bCs3tBPc%8i*zFw5DAdvm zb~u8p1v3M*aM5Is;}%^c943sO;`qk|`7rCQ@N4jrMIPhA#~n6PTo7x?OOSklxu^?a z4MhInAMo~12~rs$GYo1hm#Wn<-N^!G(4YOr2jth-MNZ)9lf#iJeQ~6`?K8hXYF)tU zvL$K6O)b(vkVP~$aJ=S5AsUc1`4iZg=0hNdr(3+gb8BziNNh8T6q6@7HOT{i-L;tE z!-0x>cpE3dy`x77X~xDsMy2C7Ot7mz<)VDK*squD85wdgWk1y90sK$Dz2adR!>`Sp zxmyVdX-8x5K%3VialIbIg>g)ma=Ik{@^TQv+IM{}|EiHO{X5z_s|q8N(h& zri%i9%Z^RY0DP#4w;;DLD1h--hSa&OaLZ_{6|(_gRMuO$OSo7u^t?Hb>4 zCk$e)j9cHyRE!s6-1I*~(I5Lfj&qhhXaqx@g;4C;B-X5=O5&3X1i`XUbS14xiw}JE zS6Y~qgw*xocDZq0kQkygnJxFY=9+bXG(#yl-e7o{9sJ6gY&SSRk&)w*i=l^nWHJ23 z=P1Kpob80anrvn?dDdPkJIiQP9^Clr<>pOXxl?xIj5ikMMTiIyuWvLSJ*nhu^jScK zZ7gJ2fMZOjGvB}Z`fOsSJs*n7f{gazgwxEg?O03M{(|2xXL3Hah!@H`KuhT;#^%kBNbU%lRjuG!N~_I zqFd!L=RWz6q2FMgEuI5vzK{>VEY`uV`7Sm?!Fb|!~q9MyWY>LgttCw z`t?G@$U&bXCGaD1P5RXAoB#PM^+0(~2VC(eZI!UnYA2IuN`(|*)$<8sZ0W}P7L(HW zWw@`|Cr=t3Z2JZFFZ!J(u^>M#avPrm2MImLrXN3iD)~>NBVRU>?SSS>7_(DH3k_N& z>S(k}lC4&oEgngMzNV`yoY$ZQ)@~0l_AHR^Yon?tsL5Y&_I9X^PvRQPeM9x&zNWHp zeXd@8`MHx?!#dC?5n7`ew;8Q>vbC@2shA#yI1x$_mH`8W4wmh zmkzZmg^dVx#19l|4|1_Gjcjnz*QkAW7{hdly})BYR9tZNCLud#}cO!`*#-NYD#S=|&b2!@$ zPo#$(zd``n_+g0XEJ^yFb_t2#{n=*jM$rIF!!X=CP7MyUpA;4j3RKzXV|cinuPVi^K@5ro2VyPxDQaS$`O8HP2$lw%rb5`-Jm4CE&o=6Wzb zFd9(iTZI;iLC*lWK5D01=_qJWyjm}sgB3cl;4e3uE!fD1%Ln80PtF)JtPjYhPgUv_ zn>Guk_UHf=8VM)p>o``p{eN{AZu%MJY%_%(*W_zuQNBQrOLm(>_PG!g4Gd`t5NO~R z8v!ETDuQH`HTVy_^Z>gi-fP*0aj>SP<(7dnaLhgoW>25m&UcAR^TFBT(C5Bq{9QJ4B>u6`m-VVQGw=48etZQ- z%J8M9i>T}VoD%*nPx@4j17(x}hWLD&?tWrywAt8ZyZL0X-W~5h5#_{FiPP1s-|z&Y z@~|(KG3Y=Gw!YJpiwH~zf$bFW8P=TEpZL@nx1DWwRs`@Xz+!8U`vIajZDw8azmQ%T z5?9S*9T2nBH@IuO!7W6tU=j@v=y?CG_#t4siN|hpZhMj;u=3bTS2`%^hRcSMBj%(i z);9W$U%F`T-puWMagMdu0ql`G2L+Mr04cuEEgaUeN)Mk7)0HS*KLs(~t*3U*_#7@u z11tFIcOGQVGCSgP@~ApLk6~9^&KoyGTY6vqb_W`PnAb=U|Lz)AU<;$?D4@RQO=?c9 z!@Z}h!xgwGO{S}?(+=uRCQ`uBw))IALSF@qSE2=hHmvNE@}0$P?jk zkmv1kdpi6zi3BCQ+|f~R?fVc-q&__WNF&T$d?dkSJ`{tp`}TO1m_8;k9Zw#trh0JP zlz)d3DHF&W+o^{IUzudJTGA?L(BKw@jB%pFE>9_&h9!IkJ^D9a;A5FE8-S;^3I#G2 zX&@-vlG`69G!AO>-jJxRac#+38%HR!N7n1{Lwxv(NmzPx{%&y%l`65QXZ$Ob9`;qK z0?z)x=VcmbESf(A&-+jD%2vWp9Fc0?y?Bp1LfRgB`z0iLcX(F`KVh?EHHnYwc+0Uv z?>;QZ@4uKJNs9TkN=Q;J^|E-mB`Z6iQySiP0z&;QvrN=dk=!d{+fykA?H8|C{Nr~| z(7%s=Pyhc8l?k2pWtmj>1)c{SFc_J+mARqz(xLXf8y!(gp5g!#yne1@doky z^>X&cGBKc+!~R{s=Ul>PGqX4`4(e;vg1MOF`Ajmz)e?Pk`1dGW=uT~^qq3ot6NJB?wkR3K7X*U*(3JPrVJ7@d zF>q`E6(+L830@x;#1J2ZA7tm-6Y>Enb8R;XgMm{2=sr7ME#&b1uciJ_5sNI3yC0uz z-v0PX>W6i2htL3@Hl}^f?e@*mqCvPnoe#*6E3HSdDnlb2p+^#uf1~>4{Eft}0lCg9 zs6WS$Vnz`6o2raH-|p>Xb>QIFV)MUF3p^<=w)!g(mo#jwK4a_U=54vtpXCbBCLYMb z(!Ca+w1DU2ZU~o$r_>Tk$80m_- zDurDfEFsKbn!)B5W)2O0kYRJzo?^8GRfrT(Ap+{?j6}et#;9RTS2~z!31)Nr0*kiW z15UAqD}hz~w6?3wa2zAOFh5Ac4yATGAnZs`)UAh((n&M|;m-F~Ip--H4t&~TbrR-7 zv@sK4ye`}{P;v`MSv;*R0K`2Fd%eCdHg7TM;OdH`I;QyzZeY*>#}00kUhHC}-^W-& z#n`LeUQwk~tY(W>0CQhIukY|~4lc~SiVFf&w6nX@=1n+{t8RuzCiJ;vPJY7k!i<4q z-4(9`Hlq)G0s`Hm40$$M2Z3f-+V3itG~*PVd@qkK`1B|vQNkcdezvD$S`y;JmM9T- zS_bV4#=M-;=NK22kcF)eLgzW|u-RNVB)K1i(wD34^>l^mwMQyd?cK)pJvy8F$T|Fr zFlAT!{2)xezzlDC46i8JpP${{Vo8I%sBXJ34XiE2tp~HoM>h*`ITfBdmfHX0(n64F zsR;CB{BcQLT`W?G;Mw~n9<|DhITk6%0(hc#Y4v4T<_c-mIp9|T+*XouX!Iy7lnt}< zJyyQVWm*{P^1vOZ*30l^go{M--^jXR2GC>pxb+c>TmHZQU&DsaiN0f>uy2rh?`n$_ zoeQG-e%~#&k2mXvotU7(yB;y<{iwGus1+K}$W1WCMN8C-i8I2PZl`k9Mo8$DCFo2^M zX|eP0OVp|jI?lc_`AYte2Z1alv~in0Il95XusBXLhBT)Wo(+^%G%;S{t=R1z562@LMix2zCDtG-sN6>4DB?hrnWm1%_Lag=tvijN=sj$BYh*e1=y4vdz$Pp-Ff%gz*=C!92+P3*YWR7?Z4AStX83AapPZ3N5c z(~mVvdq9`aRTm(mTrw$#zO8AYbJDQ9ln*RsPxw)3)-9V^h9=A|8kQK0f`Z;4Hl0(c z2(uhOD~%ZH*w+~PerH(8ERJB|ZU6sc2E6sIy^h#c6v#QVZEX$Xy) z2LQZKV6Y_tL-67mv~)D`X5XXNXMg~wf`B<3e@^Ws?NUUu*dLH}Vs&LA+r$Tcggf0P zqsYbYp>fAmOkEVT1(b5tYtFa}Eq5r=Q$OtFxn&d~G7AOh$XP)X3rR=p;Vo8k6LK_? zCavH*w8iI*#cp};%WO)NjTdzX)uKqC(5LxA7PO-02e8YJr@=tdP!YU z+quEBXn6jqWCmq0d9_!YQ*_ZvHeq3p3nC?uUqSOrkZgU*(IRH3H6(2!mRlapi4 zwJaqLV-8Gkx3pr#_PwSS$~sVbXbA%_Z^(Tvcw zjY>o*o24FEhezk%u_%%bxQW{0v0uuzTEe0O!rGB|TFpB=7Cb3@Xd7}%bsQR6?$FZy z#4kAB#*WI_L(yBDPlXBDw8!yUT1irRy3Q9RRLWGHTxVOu(bn3`VTF!5$P0E+-bF{S z2Qnh^R>2BCvP6qSL*CUV>s-wM#$~dsPI?Yj@kfUD5JACQ z?wS=Ojng5Xlp*v;9rTy13fNz9_~kEEj2I7GI6|CbR@E4Qk(4dm;}3W0fvDm9h(F|4 z?;i+!=FU_QoXsr-2OS_u2Od@!oSZyt=4+<3A3=F6V zDU2Mdyy%ugvOXZ0hI57#Gh=|%l}D<^=6hBjk6%Qmy8(`C`y_6M;iQy23Jz{OXUS2gnu{rARt4>E16{2V0 z5P)(j+vXJ3QQ7$6(+R0YJZPF#8K}%;20&3g1}C!J)`3Curh+ltCN1z`QQn{}>_jWh z7VIFJ-dZ8quHYn7;vLnwjQD_)KtR8TLJ$&4fEC0w>kM&(|6R-3J#jD zCZftL*>?iZZht2>l=VX`i%hy9X};$86_&f>T3l&FSjfdSh>9H*LXkrRnW@Hwcrskl z7u!xrr_4+=sU^6W9Xp?~F~5qfvQyfDl6;!RIMPmxMEf^Ih9Bqvh3|YJAN<~& zUe+7auC4iQLx(_`I%=m~qG_^5oA%eJC$oE>sr&w>me(dN4($TMP}ACNj>Lb^@6>%; zE+P$|7h8O_KIcB&!C5+Qzp+ZqB%bUP)mQ<3n|F%h$5Y8l1dK|1tV)IxiT@1}oS{im{-%sh= zDH&3jJRO!eTcmq>wfmMkXwvlo#qr%vgjZhwO0B*3B5M$*iF zT(f*_h?sU1Gr*TvZ*6KWN||l$4wDj-dIQaXK80GMN;5J;40R6D8LvqpIP2`htIDNe zqU}pKlll0wx7ek$sUgW3XrBlwQI?@-0L07ThTg4 zybE81b>Cbz+{+8@BY@ntVy`ttE@ivd%+)36HFJY@ui2MBFRgZbW(2PDXG};P)YtX0 z2hm7eTQy^sruLY2t*`u1WjGQZv%`(t9*s1M%tM3Y=?v6%JN*l~Xs$ZUT_Rxq0OvQN zD`n@ZDQ+TZ@re??$fgQ^l>Xz}$TQWFU|3)BfCD_VSi6~QuNiy8q>xa5p1ZR}mGYrW zUJZ{FrHY03Z=ySu z;CpmjEHW_aJL#(jmd7S&;FiKwSItSRGHRuidFzuENQy1W16F%q31~(jTr?!+>LU}x zmqZi;g#>KonMi0KoLT-SQvuGKw-yfIAfcZ+UtV^hqk%VN1 zK9O(%xDa9;5W43ec$!C?5xCrdwZHV{EB|SIc6j2vi$HbG#aQTet0CcqS^MKRGkO*e zb?hoQ^-k#*zQ7k@)61l;25{CX@^ROpM8|p4snsyhPH12w&W2({( zzB~9V-pLI_WE^Ee5;kW@cqf3x< zPlKujp+075QsMIAQ>r`}js_5Ha$%7^{01XG?m%|2NL+Ne*rk}hPA@&4i3VdY-f#66 z-U)%amqx=<7z~wWE(9jBKD14k;nH<|f?LZ0=>fQx{^}xu0o!!#f$*(m+NvYxKYH6E zDCzFqWV%}-`@dVv-h{HB7NVFIPF-;+(wLXu6^`C2(f@Z#*oz~<9B7<|0V0|cmOLo8=R#^E^Vk1@LN;i*$P~W_) zO9Fg-{~#Sf2oUPIPMege9@$sTnlIEJhIAxtcu5ZR4D2BLWnv4l=G;yL@UXo>ywWa= zb;HxTSsjq{B!_5#fgz7Bb2eKZw8c4 zp2Q{4ZZj$nF<j|w9Z6o!eS07ovMFH$@YK}RIeV|Q!_Oe6!W zkq>51>d0MzCxZIXq)-i}*&0M4_$N8@rsL}(`}k!5>K9Bn`*XS^1)2i zTIq?_mfb)!qt25W(Pwo1;nVM~f5H=BDKfAkvWW`_62(*ss7}4PT}YG6czBpsHxM*( z&_-zR<|iyLz$@pWSHslHjFpynf(3&Tybp%2$ZKXQ5ePZ6fPf39rIyqxE1 z22S_fxgM2rV#c~T<`Y%@_Xr)gC=^DJ#)C5Z#dh}j{bxLRNu^jtCfQb@dWR%xKf2|a zs5sM|gu&OwsE7{+8xrC)>Vpx1rrnX(p(a}w6asfe=Tf}~d{2{UZ5Lk@tgvzw&Io5# zUFimRfv{*%+8Jwyx zt9q^U%COLIoHAZw@NK_2SW&&mdJ_U~Y%C_GuVG0moiDKwUZ1&_gdiMoyFxw@OEmwB zf*&KAe;p@Zy^eSJ;b@HKzpWnPrR)Se5APYHf`%T8D@FBi#()6>n%WEn^+DZJBVM$x zj1|zKApHEEk98^Dz5>DyKvXzws@*MR5#PoC9R0=8v@W!*-pw{@G?1EE{=db7cYeu%~!136klv(~&MfczxiKZK9u|4h+P(wyHp^;WD1i)9N@IyX^pe<>(nkN)Jm1$Xc)ldZ@VaO7?iHD zB+0txkmdM6VINY3YQf5fT+`?JJH=TT&QQ@gfQ8N2Ej+fc<*;tuH0pLNFxIWZbRY;G z@))Za>M`a57AcJP44hOzF2P($pm9Damd(ErsvrOJ_nCDMf+1B`kYNc>=h9sxM}LVE za^dhm#MS5y9nf_8=IG#&#d>`qf;KP>_K*%jM8O1fgK%5am{ZZ1dgFt*moh_0BQu6~ zNWn8_s0}+|Ukmu6q01(CW)&IteOOFD%|yk`hGEs=MI9& zL(gFW%YVd^-!zYxhh@S5_}kz97T?55VtFcwKsPu#a);-xag|AV2tfmg^&qGxApm?- zv7%o2Rg)X(Zp?HpM~IBzQMjW5Mc(2=Us;-P{%VgIDn5NqMjkbEL;DJ-tQp>v$a60K zElIU9V9{i1SfzF|AZ0a$s_-AdZWkMxO-37p5#gJ@Y?ov?sF{dqFS-;ojJ6}==o)9W zkN98dEFUhYU;>V{v_}srX-4??F@;iLv$;VJ(eIHNW(8j0k_$}4L)v|%ZpLwYFE~95+7CKnAGu;{@6-K3 znmL6lgL5Bv*rrPCP6Y+hUdYo4MGGts^Td|<<&>>rVmXMy_(fe!W9RbGinrGlmBJ?0 zLf97aVOgSob0QnC=Cw2t(uzPLcovUd-ib6vGK9h4ZXm`n%#yA$ zT`kj1gG4&x{x~K%ELW8I<(E|hhSa)X7)0H@`{tA|AsfS^twx0wx6|Gc!;KI`F@dBE zID*gtc%X2A@4cV!DWfB7xkk&SRoHsMk8nGmn3lM%QvLw|OiQLOf#;X|_?B8Igy4;o zXNkix^rGls=>f%nV1Dy0Of)(d0Cx&|xZ+Tyrv<}^?xK>JB|slPlpr3-Lm0y?zEqqm zat!6WBuGX-P-wfu>Df$VTm0%UIabCM_CSI9YLJtJ;6NrbvH`T;QdCCPxA?7$fPE|j z0irb=5lCEjbReN$0nW`7uawgg5>0j0b%<}q-=xg2SL+c&ZXY~mQ<`=MTz1l(h)86Z zS4N-k^0C^NZgsuC88e^x?^w02=y-3kSg)=nfGiA>fyprO?|DQo>b=7SDTydYQaRim zyO?cP+S|Y%39Ms|y8)#~b`cK0 zy+Ub)`oRf&EyQq0H^40Kc(L4|BZYB2GQ-_qgovak?ezGot-z z!CVY<(*CZOI@`hQsE5nEa-VhbGh8KQ3b<)F(|0Mf@_J3U@aadPt*%|Jt0fpjiZ{GQ z%KX3r&QQ?xuXUKG$0lvAmX#%O^q3-U?t|?=I5c3zn~N}wJ+heFutMA0ZI8Fy4S|XSR|Mc1KF$;mG$3e&v(a!l zMkfD>>=60aephRjB<-3%KjMQ2fRe89*DFLqIqo)@UWPmYhcl1ETFG4IN%lL=*rBkR z&)IR!H`D!%832gVDL2k$;*ZjGA|;&yTa%k@6d^2R_-y;@n{bf;LtxvBt(Zf{x`05G z79Bh|jbCAV`n}#Ba_A}^DA`KMDukrYyWj2)Q)I!#6Vmw;Sh+trK}M)sGQ&iUhD)>H z>zMS6J=Mm^9(U{AWE|+rdpMm!Sy_)9-ue+Uap*)SOPCj(d0tV^)=Z_FBYf2B=$WSI zP=Xg#;81_waE5-$cj2Ie+d<0Mu|r(JM@OYiBVIU#IPCX`?x^o&2IVODSaAT`0BzCF zrsN_*B4F)|q}x#+Q3x@ryrGU~Q6|0&56!_2n2F~DCfSfpAcOErzoIwmQr+hl6P%t< zEG^MZVus__qlnfBx>!pwMvgr}eMbmoE^$>!#W52JTW%dWUdDPpy-!roL)8 zU&|SNSV|($9KYtS7BsDP8BmWGq6v^a#}S=lzy^grNb2+lg5`SPtKU`37QH-0Dqj-d zSg4`jZV2B;Qd`5HoY-3Ik0kPKf0sk~?|(Yu%-An}>;C(t`|t1EfB)J2_h00{{}ZNl z?BL*t#s2{#C!BRVCZaLV{Zpt$$UK`aHaE1jS`}jHxm?Pk7fT0XTI2^!)l}D|y4V~1 z7h$URo875lf^^L8%^$bs-|W_?2{qrX(||KG{l&{rNgtsh)Xqxfe$C40v`K&Q?jDwP z?8A1bbC~#Iq(Ft8LQdN&>^BrS%+t=bIxt?5b1^91 z{rTcX1Mp5Il^f(2pp+Z==2l~1pJ|5kE)lxAup^VP^Nfj^(cK|M;;}`kFvKsw2(C<; z*;l^vp%zS5Z(bbzrx^5A0yKh?>!zj`DspROtSoHAc!gAh!fOJQ zK>UAR63CeC5U>=%6xzBKdb&VK8gy;q5%UOc>>h6zdlnVC#~nBkgtEtgRI3-zz~oE# zuRbCH#grOU-GfIr$uSon>vwm*BirhovU&fJ{`U8eLU1Q>Q|NTX;i==GI9y?z^61po zYd@w$f7?ZsdfDIU@AP-;YtZlB-!O#T+%LN=dyK|0%T6zfAO4ZW=d|92)SQNg5)m582 z3J;N<#5`H+blcA*utQpn);ApmU>lUY?ynv=jUP6hUNRXqhXOM;h&PG8o(jP+x(0;z zw{3wi!I)E#xa}@Ao^vXQyUXPRDRH-X2n4)thB_(mN2*wiSJri%82Ms{OaCmUNmOQr z6Z`35uW1T7S#wBqKINShs6ZSj^Zo_T(zo+MIiK$EG!>3U)0I0P=#HIdr)c-~k306E z^%whx@gBpFNJ-zW)73T^&$p%uJ)5jfVbU7YK0Z<+d{2!oY?(Tf>cr%OS&L-NQE9pa zu)_)RFBI${6S}{bG|R~K5xjm0@^anDo$hu$SuoCZoI-}AUR97l+$;y%I?qrjsyAZv@NK^(UcKpf?w=_-S zqezAStv3i51Al*+{QbM+?|=4xd;PqEdL}sJ`jVZY(>{=baBjVpIXG_G;9M96jb*VP z(RP1%xxRBqB^yh1w7gvu=>Vnu7aG4%uz->+%#sR%;lmc`k5>{NO)U8pN{FL_V4EP3 z6KDilBWw=G*=u%i5lJ_)Z#DxCJiw^`Pmd!P`kS5={7DxCGrk4efDti2P(i%(<8@Z z`he~m<|ORF*4P27(8iByyzfd=j5sVgX!IjeD3ElKBZb%UZ~=oefd>tnYvv5K$MR?O zrxxq!oNcDJjA5&(lrV*R>Bk5OYGL?ju*cW+Yh<;6;z({Gtm63)r0=^+ zJ0rJO^6e<=tLA_Z9RONYgpdf{hF9^L6M}6-DhV6Zkibe{f_O?`P$wM<-clpPdA zIxFf@@9DRikE|}j9+-eoGb5n;`Q5wCE?whUJhL@goeBC?7g;A=yA2sH$1wc7r_jL) z2bt!ZmswfX!VK|97~PjJdZ+Z|71*D-SV`h8$TcCQq%l&##5RW#tgJGR0LonmT!td$ zLXJn!%q_7fb`C9rvf1tMdd7bIki-+}QN%uVpNNA#u3=Hi9kV(M5)r^5M0dSiAMmVG zkOR6dn|-W#Uo1p^4Y5*WKe8C{2k##F+yP{mb(?|`{rp=OB5HK5;ZrkM_P)7;Rn{^?V2}g35+r#cA^E?VGlQe|jDr#XZ1Q_F+ z)+c@Rt~U_2Ly{uQKUPvsFw77pjq-^38LOUIIGg@1tHqYnwx)rltudxAL64!m3%4>w zV=Y?yn|}6z*MlJ_p{27T5g4-eDTD$y@y==NdjufJ(HgUikISOLszXe0iw_u6Bp?s@ zc$qZg2Gu<~1S{BwL=pm3G=ey)wRfD5yeKYN#*9Jp5SOX#?j2lhoQ@pnHv3s^SY^i5zu(s2Ae_%7|MHNqK zEje4ve?jgY3irhc6CMp6;T<3Gmd1c$p{R#-zWKtLv#8+lCC&}5`Xoy?8{h&NfY{)b zMtHng;Q4DwMlKDLIsoyRBqkD4JyaXaEaoMUEx<; zjHRJzq;N$dP=qnS)YyV~ndG3l|0{PY3zjutv4I>3J9Gl>H{MKYJqspuj6M$VzNQFj z3I8_f(eo7wy(~&Spa1dcH{X2q%Gkk#;^_QlOA$M}w8fa=QWUhCp{H|-8eSr>_n|4} z{+N-ZAYAlv6vB(`$YZ^@>96*ssazrLa4p4$g*nOKpUVo#xk?Em`GptvFd>LjTbX0D z`JxCpjL+eTZ4p>24&+-!D?iLScZol?EGnfs&(_nTs0>@W2y@f`-jr}{PhOSH*%W_% z6@y+NKdA(}sRy$~7Z*iHVD>r4a*MZg??;?(T`1`)P+mj?k4>N|Hc`K{KGI%_K$Rvk z1TVJ_$PxC(?F11vFV^H4cHyO=7I>lku#pSlglg|PgA-r^8-{{9k&xg)#SvQ1;{Ot( z%;8NG1&hAZ$UZV~b@=J0NM>t_RP-!krqS*mCoiR$GiEMF%8w0Cen!_OJw7?O*L=UF z3K171>HZ5r2*-ESnwKG5Y`}%rGTlIOC&BhqH9>&yK$ZtjFP^47DL<8aJ{KFH*4oFQ zdtk}(O8+1UDr1DN2sLc`Sqn`+*eg2v(4lB}2UwyNM5fGRq1zvdtM>Frx*xe?1PusP zp;1wbiV&b!IQ^(K{|TP}mImXW6*A^tl)6BvvXkur5e2%hx6_Z|a;~~nIxbK!bb9{g z_1iZW=kLFoJb&}e#rvn3C*Pp5m1-yD{gt7%`fgo9%&y6fpo!l4Cj9dNep=d2PGPwpP8;B&Hx zIOrWn>1H1mxe%uVqzP;B z@63q%5(cu*X<~0WE1A{EjOq6^O5>&7fOisqhykr0BK+M7w#vCn7X5e#js+E*mADm^ zsL)-og@p+qUDPQq{$O>BPQvJ8%Vu^KbSgMsefRX$w@(YpP>kIj6}4b`zoihoLZNDY z{|bxp2eQ7k6?D-4QSFJK?|?*Qjn!v?=}SR|o=dQ#CV9IfL08!hgNJoo?qZamxWO3i-HEPtH>!^Z2yt_XpW%<*Opswk#0< zZaO@aV|V8~S(N3UTvABIXd6<~(yuW`4l90$qlC(p`^|tW8`d^e?<{QkxAU~SJHAUD z*I2|Ia1Og2Dm8w-FffFaT^h-~kd1k!Tii(QloK6Bwfc9-=4v)Z zea7ptzEk?9} z4h*@Gey}|@yqDpz7e{YE_|S2*puzwi{h81HU_o`ry2Vmyx)6BqFgc6-I6NGYUvwKE`65aO6QYKz$S3U$4*;$~&_2H>^wp^uOt4$dt|)K} zCt(NuFm5!}qru@~;9+v*4ZYIS&F(AYZFe}l68TEEsADkx(_y{|hALfXh9e%(ZkV^9er8>*-EkfN;uC)&rJS_a+|fAFR1{g)P0R`qv%Sul*P!JG@{r zf?rdr{bcAJszU9r&2tB!=qq_ln z^&UIm-P>+^L9yr7&VJzWVTj3X=NLsf`7}XmoW--y%4nGGA@-IN?GyHfg}Qd`I!MQwc>L8aKeW@7Pu)=W^##wC6mxi5<*T*uY^ zpzD80=3EQw7na4xHO%(~DP}|rupu{=ZC<{^d$Tw)dJ%H@E4(C&LJ6O8N_7;SMDv2(hHxdX_*@x7D&$7jW ztQ6K6NY4td`eyTtu&X2)IGOK*1j@At5|muG`JCouD}hYzVtG7){3B+NEjzr~zCzRi zenK`|43&~DCIFSM<6gBaD83jzL0ADdw`l&^3bE`*(0M&S;Owv{b(iJb&>gwivdOfB zyOBb%C5A(M;C5LO(7&AtDIMN}ICTFAPZGGW2?lc3gMQLPn9A?Aya#cVp0KM~lI424 zk?bV3%LX-EtcEX&M?3()-vo%cMBR}TbFFqxtvbWyADmO}7zBLaeQTs5d~~BW&VQSx zX}R7_d)$x*nbUbB_)--8K?iDi)_N1O74nYC;)O^P+a@L10GMLt2b^Hf7?3u-qTvru zi2eR3nywK{B|o*aB;khS+g*2aD5uGu%XMzQ4~A-m&a@3Iwj;ZSn9--@mU z|2DYE!vu*yB|auR#Drbr+Cu#!g(fPhEbBB(GYUB?x}-JyAuX$cgOfR*Mib3tSD#P_ zU6+V0Adx~|Ttvg%#6bBTUul8^_kk76tu}}Zs(C00}65W;qdhW3d|51*I z+*drX${}C(Cz4X5zv+sa1wwyE{g>0bKhnhsa{3le=N~C~(ZRZ;(iTwcXY0E&!Rt;R z^tjU(J?{0(z5DV%UjW*5zxuNSB7glw{`wyZ$~5&Txl%{G#lxvR?d2*F0e&ry2pN%( z2g=VIBE57y$-B_Le1;~5f%6v&Ckqh>T7{>JnuC@Y1(NaBa*uLwKtVbX8Jk^rO>T-Bs| zcrPDyrSM=?bZD+_kEA%Ubt})2ja`X65XSnQA{5X+%)07r-KI}SNh^6SCMdY=_#%M5 zW!Hy!1Vfu`R^_3xYyz=zbj!87;_>!`<3#u>Nfpclx)d+ZaKM!A=%G}tMq@?zzV-uH z26Ia?=@uE>K;=IR8)U$CiD~BG!7sz)1XV?wI`V$f*9?x&=mEO2Xb$dV24(=Nw6DN# zJ1XQ?-RErAv(-SkQdK){gmE<>kb5vF8WCvfOK7qroxNdf(Q{Vxn-nLY<&OKk_ z){(!xrrd-exkWHCd=R73XQ=x6Lnk$S*dBS)skd$7uf%KQC3B%n%*gzh5HR3Zk#>U( zt$Zxl^>A;kGm!{hh&GNE+l|IupUMkt)?9BI&APXdh$|WO_4*fiA9VAYp zopa9TUDI6g&^P?z)`doA9H3G`&}9FMZ3lm?^e2~uw^lLM>Oa)h5zy>qzeRMjM6LKdp zi+aDZcGyUCxo@0YuEZ&%mczRGhm1=epn4EblWcPZ8K0()h4yewV$wd#A0@n`PvBx< zLDs2IFKB_uNYMM2+POst?4gp>b|nRS7=9(KosW4evaEN7BT+n>gm@Z74m-iH2@~2s zv7NMj+Q38$oJoJCWj29S?ipuIdnE7~5m01PlS;MpgKZ*Qe*SNwCs7JDAw>4mK;(ny zWZ`!%FN3oea6D$g2Dh~RIp4ESLw0g$UMdp6IF%`ap74)N3Pl(?{4zAQgK(0$X63Mn z*opwobLDU(+b5}5mIP{8eBxAXKblM6ZcX(oD(tGK7TOVPZWPHX68-cQiis8Fizpg$ zphM!;G6*(RTYDyn0Y!{YUx*4x+B)!YHpnK;DTGMniin>Vlk-AOvTVPkB@eS>ppNAG_^EyqihM7TZ14-9FoMF|wl}wiJ+c4fZRpF8@ zu{UK3y);&@JQ-Ujj0h%F$)BKCRlE=kI4y8jBupGZQQVG>%PV^U4x8-V?)4g3t05Qx zCRyjRY>3f!gG<1vubbmC$^*(0sC90~>0CMSSz$>m39;-6*hhx3r9JOL>?oF`Bg0BX zKHBVP#g0Pu?X|C%-mKkm4eP^h0+yh%9cMqcCTDWyv_H8Kago0w<~F}syB;{_xiwxj z;aNe9utix4wDuh@B9CKR-G1w6`~Hf`xsBMYMQPGH$)mRdpUn_)7P`rWRSY?Y&c8xf zHnL@dqY#j_wxEqZ=_UP}?iXjqCrN+PzDLvNbLlt1rPO7ch^$E31ZEi71?MVP^roDd ztdOMoA#cVC34pNg1qL1G_z{38nOTQ!gTb^KwMl{438v>}T2A3jlaZ!B^~;02<>+^c z2*Z8!t9D5!0eoFdQ_4IBOf9JxgD-4+$Q!`Fc~_cy2A{Ku0sO6r1)NWXQ6k zo@@|HK{uN61n>Q!wju=AlNryC#^2%*Q0N!=6z!zcv@{t;N+LPczoIh|xUMrk=oJ0J*uM(kqPd69l}Irbw_33}l%1+nT1$`d zfIu#N$=PyD^d;T^;CZX_Zl<`4O3wmzOKB+`rg9(^MTB$FM<{wH1;`kYM7|I}z|ToG zEO0rY7z)am;nrtqkjL=85pgIVW2a1t8KBqWOK2ra!623{TEwSAIi2@N*jz=qkA~N` zI1NDDcKcz%7qn@;2^!GiJGyldP+bC~QwA=X{dTBo(e5CREQzX#mu>LYe)&1J0hSw7dM9JxYjLb@t<363b z1g~xTfpT^RjBnWSN!@kDs#$!H9_}a&P2Xu2{utM+qJ=#>>J{e|!VPWdEn5QTLPS8b zkX;^$T@3Mg2uH@7IFJZ=XEx0&ha!oR$K=oE>s59$AxWSujEXbGjIwz%oIVb>>x-4w zW1J$;*vTOuiia1{S&N;toG#a`C8i^#}M5dwRDOUySbn6uopw zl`8+|j&B?JKjqz-Ozvblm)%b&!k0{Cw#JcKkK6i^l2f6?tly&IY|<6)=z1XsqIkC3 z{<(>N-I!l9nzU-V3+{!w==6h)BDjWp*cC4dF(w8PV9ojS)hLz1l#<*rRGeyQR$Z=b zzN0HUopt3RJ)jq@t3acLqW2*^o5Qmq{*#=s!8D}4U`A{t5jRTK3gYFbzuOGo#&f_W zaw`tlm`G(wk1-MeLyHVcT>XBQ9rlv3$F`2I?&hpVm*+S@eH-ff*ZAUEzB_oCPF!!H zf@@|&qqTN%tqFR8xNyVPLxsh|Jx)566}cFk7j=lwKPoy7l&S5AnVHm)2AQbU%PDr- zdLA&)HjBPh3<}{1&?cJIm=HCTi@uItH7+nne$ig&+G_WGqYRU0RD9f612>j4m;^Ei zDU(W4ri@W2$-gu|N=~H9i|Ov>>6UKv$q02Gg!XT2eS_0~h-!_#)+kYcB zU`*rJbpB`~tTmDg?BfXky{Vs4pW%CK3ZE|EU9xd+Bh78cvXdIWz!8qSt~(6*MNjX1 zCf-L$Pzdr@^yVy%z#N%(h)m&+TI+K@F##7Z=up-7YEy+f-NGmz(}^z8jve4zN(nzo z-oFEZ)>~-l1`jf-Q(BulT{CgyQNQ(M*DE8eoL~!66?(iN#_Qo2zXSJEZk{hfHNVu0 z7Bj`I4%?62`}NaH&WlfHDKB{nbKz^;|2C|<PICGB&uz0mvC*%KQzw2!-B@ z`|B(cH7-x;*J0*qTnb=nO#<=#E^gfVnu^~%V>x7!lbt31tn zm!euM<3MA^5g~}A4F^@jNFe!;gtx@obvJ<`MdJ$bqsf*+V=g>dngtDQ<6_#GwX2pl zC~U;YakNbP&ZS=K#A#$hHvxj8T%}7w=3KI}n{}P-K2tH^smt|QpNA14jZy386&LZ9ceiV?@o;2{}Rzj7H z{&AdAJ6~7t=Xp(xnGA?$?NM~F?;4m(i8mRKfb!_5gc ziKACqU`t_Wg@V%q7oKjgrW%`u28K2@#AC$#^hq-dnpR18#M1vrmlZqD!o3k-+01}lp0(hwoX7V`;*yA8L zg3C3!`2ScHrT+LIqQ`C&C%YA6S{J};)eMJqwxD`g9d1|!_NU-DYJ^pFaKe)0b9XlVP9koJfhN?%3Muq&qu zK253b=;8i&p|2rk5*Favi)H0$_B(EUAqme;5Y!MC%{m#^YTlhmV)7m|G?sX1de~RP$mYr>6wc74&GLXJ;JjFCkhNie~Y_1UyWW z0_Q4NL4?^()dw*h=|c7?{gOT+c4}7}Bj2xPinA4jdJh=={AvRh%gyBXm;RL_S&72~ zJbP?p2^r%~aTh#Ovh^iySC&A~fvNH?6Mnc_FQ_tS7zy9- zsr#k)R?s~FXE7y~0suD3-2|B3&zP^8{Qyq*dG3rnt zqS=4Z^+(70%Ry&pzBL*JOxtpcm%b6b+vv3J$o$lKG7{D-cPYNBRG~83YvS-S@bN1)3cw*`y2%o56$ql z=w}oFiWMOO;CHpAwXvo_|gJqveX3r@VGyR9xWi~pOH(%AqQSvjXk^D zZo)y+j4{E-;uZu)F1?hCpE&uo`bPwvB_A%cFI(8I8{5juE1`cYrVpobd9j#+liRIP$5JTxfQ zFn9l|{GGZYHlch}g)38i7d1Ix;`4D&(S8g@Msa%?0uG}_Ui z0@c<3o$S{W{P*_`ZYm9O+1&}U#{>@$5zz6tL_Lw=8Df(oCgM9oD%D8o_C64y$k4+s z-S=;>o2Bz^L*N4A@o9ypH*o&fNi@K%m{hQSi7&(i(T-%zp$EboS=1Jkx#K7G;|9K? zE+Q%UYY`Fzcf%{=?SW`^i+P&&MicCA)2|*Wfv+STsobXwV^}&k4MnG^vPI5?d0owZ z|K*nxspf;a-o0|B_C)H7!akjT|TRS^Z zG^<+uU&243F_n-;MuN#HYc{4a!pTRghHJD#hzp6C$Bl~p2m+NoSDgz?Pf1DxBOedJ zWlQ_O^JL#R$n2>6a@zQSg->R{lo=Np8s^p7+py5>OS#zS9-7l$@>Ha~x)aJTl? zX7Yu-9HF+Xb4v{leyDH~&B}c#a8l%CqTMY=hxm*;cL&`Yscjk|+C_#q%oNu^e)aB0 zEr~&LO01+RLepb++bPLBW_awiTOV}Ul><_Y?>#u(sjYlXqn}0dj z91s!|gs2->8MvtM?-8l^h_aVdgIE<>?JCK!HH?G~7N`EsS_+1@!d=@?Uqkz^@S3Tt z>0U){rZ^&UrH{SOMC6*ug2G(|B%ZA5=6FSYPbX(lAX0(=D0enl?NK*R*14QT?By8Z z3t05p?ESsLtk=f-MuBV8@qBfKyR)b?=8n=^Ng1?|QsM@Ut?lKYJ_AxZXT~OxGA{{{ z%G`MEm(x${CaGjIy#o4R+ZCSwx|z_6Ke3Lxk%-7-A1RjShKwwd9|S=CzlEHFDggjr z!dDmx;lR-Vih6T8m@F4*ld67d>|pXtdJ6w&?4cW6KAW#_)L3U+7%|Bb;Fx{ZZZJr zLvUg;dVuT*3X@Kh7=UQ04NoWmdE83-!WcxuR+rt63ldXhZ?Mztj_~C-c!~sO%J0wP zuFk5(*c4~TZGy;VOgK`=B=p*Ob@ye zRgtSQx{VS0&~{}fi*O{B@UAL^gssjXiHwxcnjD?pC}o>Qf})ztVD+NvG_+%(7v%A% zKAT_CxIirF*nnepM)t#!2sA}jiE>YUW@58X-N557ALMy zNma&RZHb2lZF&}%AMS|7DVx0Mf`A2f93T7b+7?h#46>e>pVkGA2nt0IEv2 zoI$fI< zf;uCC408UtU%@?bd1gS==OEINTux~JGNPAKh2ni*4@9OTze99zt`qtCWL=v`*#2oK z<+#qvhybby&B1{j6AkBHlsAF>8}F@xcJAl>$C#op$6*uZsEkHEd8UzKW3PrsW)K!Y zF)5!ms#wh^eK99IZ7~+>soefC(zRd6x*;bcR%M7poDhKXQykpI7%X^~Ykm&0A!G+! z+F?lxJ@}2l`*x^^bp^o>DNH&Q1Kx~&zS=LIfuA3ApIY75(g=mtGj!f}&k+-z&Opj@ z6=1=RI#3OUXV`Geqj88Ji#7QQsSjHp1eD`PnF@nE*Wcnnnn=IGeeMFNN5l65=aksI ze%3MG_xr_X9pHPMc77%zMYl|PXTu8IzoOTljdoX!5=Wx(&?9i$>0g>n+fA-V|*oaXbR6^0EwI=2)uhxJn{F`KO3Rw;J*U$ z3Z~W(ascRheEh<{L3pQIbUkuU9&6C@dzHUUaVV zAGjdQAi^%9xTq*(M7*a9-EBR1va+F{_w16B+a`!&Fyd!r+P60dvV#5o25!W6%NfpW zq-!G+nyLeSo=6S-{+@mY$QSP4wn&!FJhr#1Jh4CjkXlOCN_YSPLj`2}eCRRe_7R-Z~1YRJkLIu(Qe@niPuCtivvg;_U0y z;{IE>ck~NuR5}~nxS^>$mdrRjqSdOdZPNNZPO@tJdNjnCS$xs!eh1s-1c9XMcnNqk z#;<&^GhC>)(u!~n$r|lSQRa^9%tQhZ$K$;F(Bop=V?Z+I&RfZnHBBXr(f=vbj5vp_ zB-==#0W8ulFk7ZB;i@DUIbghF6t0FCMjg3%qhM~u!yb~i9{RiMb; zI3N)=04iSEo9(xoH`^EMTVC458L{&{ZL$FGBWaKX7mAbx3=l)UzyJmB-7}^H12AE- zj#-sTnWaPzHAHn$hL zRblrx+T0Y4YzCke6I0=0DssbSI4o+;l`K4Vh6P2Ef9-ZduTP`fpJeOv9q)WzuD3!y zl^?h7A=!D@jwd7DE86y)C@2w*VY^k{%w!{>39FBNFAej#;ecZ5}~nccu&s+ z7d8!%wpQWvE3l5Y2xc<8c;~3~yRZCy;C;Fs7;D^vZzbfYj&C^V&-0Ao_#qQn&5 ztL=&W?05?MwK_dcZ2h0!1mL9h?2K|&pZZ7MeHt8ncJ$7iCg1Nxf8FnSHFab3;ycm7 zHW!vB2w@|@2%63~q%m*!9n<$E+`n(a#YNXOKb@y9vzv843!Bw^_OE+7?{hQohX$(eO|PBBH$_4#^<5@I+l=L%i%Oa`?8{a-$xeDm^8&nNUAV@NhJ(wIwDhQs-4 z|8|QzyxaXfT-Jg~L7FfBTBV|e(61f};h`uL#xIN4;Jm(}?4^EY0m_0glDkUQub{0l zZ{?+3NNKu8t6*x^qLoV#cZ%Dzwh$JD$@9r^sz4>K4`Im=tEj5n0L_nb=I(TJ&@KaM zR2(Nozzc6CF*+P1Li8472+z)Lrn_fcjZdfPD6S5}DKgOSri;Kk4{69IP`CVzkU@R! zcXT5pMSFO#%f%E|YGOBK#9*`49~kJ{;_X5e$aoLew?0)u=G6qCY891rwE`e(s6_&p$wtF!gWM9dcNZXW!_UN;qk=$mR}va?C=cc z37uaND`qDdp92n?)eAm?I^TXv{Z1S5+wX61x05CB__=c56M1uYk_n?iHDYDmvPUZs zr|HtdD4u5Qlu=r9(2eoF=pKpXL3)nqXSq14AM})yfTKiT4nn^|y!E;MY$mQ#q`ffW zzx*8t1!%sz z?)R?|1^JPF0Lb@QAj@AImV_FPB)ZS>r2TgZVBDO3_asl!(7Giu>K4fi@% zW7BLln0(ae{h)WR7U){O_RJf(ahG^Gcuwz=|k^wELjsg(3cnX3iZ%GmKOB_oSCGt+q`NATgi$K;IHE2WkXTW zzJYI7OQ~={N*pPPClAg!ukl3Gbfq-qRV{qI!NbNXDRKBXv~f1(?2N>4y7>zw{=}TI zhYw2FLVu7Ze6=I%4Ch!6i8?VRdM^PX=IDBdSWF!+w4yUt!7t%dXkxAdaG)^_`9M}zAjYFR)KD8aUm)xtAZP~2*_8|*4(Ub zq$XgD+@;H$yBdI_?!7gD)Gol)x{&u2?hUG6K(1xMuBfL3$AI3X3)v^y^u2VM#Qy+mo5E(QMn79Jyo)$e7)YV(@J=4{Dju!X{S!2YJ1LHi{C_ zCd`8zSpQ274<_;XbhX9-%5-u5!a;LN7{LkOu&u%Ki6{=&Eze)@6e2H82V)2AMZeoD zruW5TpMIxFPyq;r-aK#E zTz{hGU%!4|;&5?VDf=po5Lf#i6GA1Mv;&C0#}1cd$LKV^=F(b(ElTL{bAUNQ&-2~hfpnjXqk8Q(1D6}}Lv_OpFLr+aA5f%ee8QNlRT1O9U46iP zE^E5<=Ymp036Ek)jv)>B}jCesECI3U2|KkeFob%YYR@NjlYK8p+Yv zn+33RvHuD6G_ai5+fDskkwuFT@(9MuP*`E`;($6m$FB|~Tw!w?!`lPv2@C#^Jm8nxJCs^xEY+zkprv3?bdvR5w>6a#rK);O# z*lG_OU)faC2aG|j#8T6ToJuq^DD(ui#uFQjj-^o(+;O)-FU1{2mdth=dUTXnCS_iP z&iJiOiWDgZfb=SUVzA7s5p%0fXhdJ}K#lFIkQ1Lr*y5rkF4|#3Ms&jE>?=5#!)PP~ zgjE1m(+QQp4xXM!&oP{6tdkB=SV+how0v8#k!7hLHk}T*y*gzLfK~HsI&6C#02t8b ztx+ckz6*@07((}$fFu05Ra-}DN~iJCOWW<*k1ukwq;1Jx??KO-nHUM|C zj&ICyq-+tKP7~v6big~C_N7V9Ky*rzxWJSKVSPU>_QBu&{>l3rRN$j@jeq#`_fO7O zQEGUS4aDBYB~(0B zaf(^)6&^pSwcrWkQiM-u;LZPkUr}BJ6#Gn6`U_Oi>zm*Jt?Or@#LCH-Gr+ufL#^!Y5}ex&QfJUqC64q5R}b{`)_})Mfmh?rO~M zH(x@!^;s7n8C15f6`Mwdvst$c&%+7wpVaxHpUJ?PH4z&4!=}TdrXWE2E(?C!ZPx3B zR{_>xz_7|2Rsyk_jl)P z=o1`q?0u6P4|?$FD6aAgQR91rBi8DPue)P=b{0;1gM^0uCJ-K+K;O4=$m@S+AH!0F zneTp{OgEc_o;3f{Cn@p!vHJ~K7T9*S3a+RqmUG%SFahwB`Wi%7wg1!wYbU?uhR@+d zLg7eI!XYz$xCmo-|8@bCf46ZZe;*`Hiry-LpI%=hDp7Ml_gRnfi?astj zcwjSGYJ{n~**cR(JmH30Jg*r)WJJ# zyJI6RPv?XRn;wRJqQn0?>e*9DdH1fwBF5=x+O+UTYZYgqhrQm(YR86~2nM z5AFvwxMUN6(Wqhm6~(ae z#&$uo=eDm+0&y4?-#L25&uD&B64Uy=<4X2~Ocx^Bk?4 zF*W)(V0*qoNQ~lDQ>w3vH*#7FA)`ZNBa`gVBSyK=1J9k9wk&fzb%xPS3Ol|e7aJ2&PI9w=1Il1kzPIw6s=3AM9 zG@?E$oCAox5g_125wd0cDM(QeHJSlLIeA$=OaNOCdORj{eSiQOzr+ZdPs4{^>xDIr zMFKT$hG4`sO@#mWWOk*LMOu72g?8b7il3ala8FY!Ahrn~=()hu^!;jkEAfwLU|O`P zF`~@V>-hT1hsOZ&r}xwAMSnRtfAPDIUrwIx@l@$eH-C%QNm1kCB_ci&JbB@sp-B&y zc{(Fuyhd_}S(c5_84192)@5}}PkNT!O(@Z3>*5`W4wkO+e84X{atnemnnVB@qnUc4 z$D?Q{M!*!YGW8s{C%A@nQ90L*$sNSwBCMZf*pM==Qp#OYE|8QFy*}(k7W?_{Ad6T0 znM^`FDuaT>WKgg0gi&N_ZTr`6zxsOe^f2$&u1*E)GKT`6^?Rhm>WZIYTQe4FuMKj z4f>&uNOYt!rXSe3m!euyQk$=^Z%ldk-E zLf@fel2H=EM{Q_dmZ5z)2AXQZ)5WDPdQ-3wzS(vkw58Dw_p)gJ@8;NO_;t7P(bYyX zz7sSI4T1ET#wJtQ(>HocUk<6b9XFZa zK%L9;&FX#d$oJvcA0cKN^8+mxco_)_ z@a+C2Dum!*VP|j2`2I0Ymqf&T@EG33cP|_dj)St`ZnzoH`(l z;5#n%+!!|Mv|fDdC`WF(#U+m8r;V#9-Ih%tUiW;7*Hl71JQaZ(ydTa2NBJQ8>|D{N9{{L53dgjX^!OI7X)_3BsbWrh!1E-iJ!$Sebi9K zbaRHqJS>>D<;B^^h{KiNPgIPnjJaU$i$Jg>IDwM!NC?8n*_6M3ec{Z|`RZyN>_AZa z8NzZO{>=I$ju(IUi}`RRc1#XUNbjT_otfgU7nR+?$D*wCyYKLne3Gyj<48^iOD`^r z>1nGUAUTc+wD-NB1(B-2w~LQ(Odn*OcDJvbg?8QaXVRnPlvN7z_*j60n} z6uA>OL*Y_8v-n4TyZhNa;!E595|8SrI5-;o*h6IueSzkWj?{tZggaeScf2VM;G`e{ zzw=Yf6~l{ni|b~$fhDFIN64>h&EWe#y?+RV zQ=In2%%0)~bBceZn9i=lSbP@FWV?NI0;W8`N*fx-yKO`Lj6w)2%a@AJts z{F@&9lo~jipjs{nLV{#ATMHryLwEp9J}-85Loh~8Shi_ecvckpubaLxU7;~sc=9-!#bM)FaP6{Dh0z-oHf-(=~A z%y6e4=yr`HaPa|;6G-aG2mH=)z;OL;h9q$+*1%XRy=Uw7hh8quxw#nzv6@C`5H=fx z36Er(%%NdA=;BR=39!a@Wcy%;hwOPzZG$0S3kRCv_}Q^zz)m=#vOnSsn1?EX%i{>1 z%H^=gxdZuD(26smGeG0}(h+3|w^n5-lAyg81Y6YEA1Q(c8Ah*T`>gF~auq z?{tJQ#&yM=lEO2t1v4P2$HoMcxya9$Sp~bhwJzTf6<*=|%{)SjX0AUFm~Hpt8h5er zHK31gl;4;P7@2#t=k?F87LfOCw=Z;)A25am7w89cot23=)x??H1`7?-K=SBD(tyJ> zu(is*6(?cDfY8}?2)y_tWQa+;h^G{c#1E+K_Z-EF#f#wH-mIs~e&jR_g>b26j;qot z{z7-}1*OAtItZ;UJ;y&IG}u3!$dB0A#i)3QE$L;6p`Zft2;n2u45Pt9aV+h} z@tOvrmSIUtM0MP(#!ybugq-}UM=${1^>LOTf+dy-_Lel-oV$^aM{{9I9I@t6=>`mf zCI$4VA+O zS=jE1Gg&ZvB(IPkY+}prK2i;v?Bg63;L5fd_G#eG{xZ8pH}EgLb0jq2*Bz%&DR;%n zgW+BX#t|L^|1HcPFKsVEEr*dt<*{hs2LBtN15!C3RSdj6gN#v{=;d_pZ_I7#0)XtvyX`xy4iPgtmyAC%K})vl1SU9=}2f>`tj35Dn&*IFJWH z1WNRc!gNGW{Dk()-F31VVv2%~gf{==)dar`?0~4uf>VzFcb9wY5GalHD3+y`9=l5f zPKiN=>93@?v@=wq%5KMUHs>2AT%-{VM3@!m|x3lV5`2Wbd; zNi~su9-1#UlzyPl1x_&T|6AQ;oXky*-Fo>5QMUhr zD3&*0G|aY>^9N-194ACn1|xgIHSjFI%Q3KRZ13l3V*-%b#wH9%w=gGrpNOuy-x}3- z#@QDgfzeTzBSPx1q|rj(^{^uP9YH$o*-bU8mvjtSJd?|NN&s-nk+#9s7*}RP5(PE( zpU{^6Mw;CRE_6tpdDhY!X-jjQaZ{!3p^RJEYIKnVtdA zDaWpOB?ig=rmzF@kxLZ=OYKT|%b?xE3k4>FNqxZNBi&=JUmwXDBOXzx23Tr_(|cW9 zjm<2ze3jS!D>bW@{3|uCR{BdCi(w+6On&%Vsq0rot6t7;(S1bmh?{-q%S34OWWW7w z?392rUz#tXoW6Ic6fqV6#CC?mM%-BU=0ZPVbE_6aKT)v38kPPM$)r+!hJ4!fR^x6V zRa2Uvo-Y|5^4pO>JmGp%ddQ=;)wSV8K3E><&p}E%0Q<)OidlZ~s=xg6>sMdVkAILO zfzXBSmJ4Fe(3r+9D##R+9<+dAyV-4VU#5vEx!6eW-A;;yoDzuOScj|=y6wOT-{N>M zfk4*uS5Q|Scsm)Y!i32>)GQ&CdelN#5EJlKzw9Yp5;>>qW}yk>hjANXu(qcaL2i;W zP$yJe#=w7IRg4Fzm19b90aHu0nEc=c$msHRy~DY(e`|qoDl{yWYf6Tvt+x{kFRn?G za-pWA(JmDHaRidGB~lZkf*(8pUrX5t`%13QwC={h_VPj;(q;Up^bc^)C)0@}hW3B{ zOT6B4i3-Ug0;4&#%m2l>f+oYr4EyK5{Kt4WKM_WQP@y02D`{P!L^@Fs_*x;YU5A&9 zL22OU3FQ0OF1a~V)>oDp2qQ~G@~OElb#HwT;zi#b1=YP$WrKGJNhC0Cr341#8k#TK z(-Z^(d%{sfAv;UDz;WAjoQHuVMJ~pJ+I-%ynpg%DR$EGr1nTx=O^ub4H-T_RbVg;v z=w`_u_j^5cmU#s91XMB~h2ZPHhdZf;4)Qc(pbbsS_e2uTde_OHj?ba%?r^!s6>J(c z%u~CHv;LZcD!R-lKk#JuHF_F!i6JQ>_+~Lr>?F6AON@)fcjPIr_BxJ_#AGn-*dAf^|{5Zb5-el%Pi z>oVaw71=*^_f$h65`~~A8PtT?Z?{M$+TM?6cG7<=<&$n>No%_;kPzjw;0-&1Zq?PG zs#^HL6@ITtE{9`ZiLQ!WuMcCPlj-cv8((?o0^F21jqlba*0p95h{h!Zk$ zldvMNt1ey}qrfSLuy&Cs2GJ>6J2!|JI~PJ$(eo1w95HN4XI*89AqOnh1c4U`42(5* z4n^wgSQ|~y5`f#dr##3;XZ9{oL!ibMylV9<3d1jjJQOsFA_jj`DE@eOQ<`LA1RoDL zM|a>9ie5by>hP_PwTOmcC^$nF5hY9u^1vaeRFV^cEwE!uw*sMuy8X-+(GiIaqGMUx z6uJ(yZ;dt4TZ%d6RP6?IV*%(V!qk@He0i%%m@jWwit^>H>OsD|Z9T>pwKXBW==eb;aI?-b85ZW6ojRrwtqw--_q$$a1QXVcx9d4;40J%5g)i1yAPRbc9?Rt zOt=OPl&=T4I7~U}Mc{1da=1Uqp*01hcHJVRbkT%fImi{YBIshLr51g%iKNajI!LTe z(MqoM!Z?+VSa@{8I_>@#v+C$nOcq*CEn**6dS$LUet0@SW#f84X#>`YS+cDgLTfMOohK7np#8j~yE@18phLXOoP zXPwu+#w3b3;p1$*I4qOw4b*cd84Bceqg>v@Wf-Q{@KBCH#c@!_2_d%yg};4?tYhaT zqyyG2=9X&7IF5PhOlaB>L8#uO;h~py8JHi;u?%zbCFhdk?11H_^ zKw3`k2rqIjDf&7fVgQ6P5z+d%oS}w90(%DDN26FFivcQG71OCO&_2$bm)>w3$7O(wy5*j#Xqe!5f)c zxG|Vp8aDB9WN2Oo;qD@ev)fUgUt0=Hr+$S)7`%Tqx&z1({J_Qxb2kIzi}eQ|N>1!@ z!qdTV*?6olX-z6R3MZk&;da_5G+XwwEh3w#H3q&toVw1;u1z`2G1XR_t0Uo@td~@( zaIIo!FN_NvW_=bmq? z2H`}smyaTY;sKV+7>dmW_JMrBjU)tjpl9}Hl7r~8^GsW|-EdIdwH&)-13O-J;928$ z)RpcgmvppvhiqdcIv{m9*wujX6{mm1-hzjO^kw(3t0PUL9nRTlvxy6%z9O@3B9>VC znRpc5(880;H z(-8>h9)p3&yHjy2&Ne3-yim)gh$S^vQE1SqYG79#v}6~GS@6!v5$J&=c#I>I!#frR zYeHfaio-(;3ma6DR#7HW0r?lNcQPYOF)K-qkuh1eSF_)L`K1Hm!au%llb=`kp+;T+ zM~abXvaVIic)3iT=rT8V-jxuG794CV!Y`PU{EZ+1E@x2QhsBYf^TWDx)n7}} zvvq{BhM|6+TTxL7F|Mpw>JsXvg#0UVs{k)x^15gK`OacHe$Y6^5AGer zyFDxJ#_%r#{4pJkWesr+F7rmg=|*Kor6&yR)5YRzs=7#t8Y*Ias1iYR%TO?OGKt(1n zjyopbvwP-S)EX4xidv<8hnI`}sPbkBn%^9j7x&9c)U9#@7C2Whe5r*aU1*T=txtDz zqZEuRL{Tt_$gT#AaU3AIbcZ;?Pk45Ju6vOk_jOV#e@Ic2bgGmu42uClH7T?Xfx;?_ zIpY~X?A&n33|@QWcullqCb)0Dzj#Yw4|bgmsR0BPRVW3IywEqdJNK7E7lxVYdK(Yb z0;aN(EIE0#ZAPie65lZ`xINH~^Cv+fV3*a57L6mt!oOs(bzBasJbt8&4K-*iw~`C| zl`RA7xKK?cwNydi>;=*_%vEC7yGm%=8z%yAx4Lt#+Ur*N(mLbX+4U&1)i`pa(!;WH zyzda&$F4Qj08j+Oxq5-QX>bsDl+geHQ&$OIpg6*jNu>k*$WS55+j~^vmKvrpLYfn;L=M5Xc=0lcHb~Mh+S`m@ zTqm~|ZcAlClR1nl5}I@xT_RNbNu5ttekV{&C}%eC_+wI6Htu)yN+H7)76PYQjfII` z?THOu!IoMLqz&oDO5F2cwaN|4<|GC8!)wdR1$pHPdUN5h>$~*~{&jvxT zgS()Ja^8Dsf9HY5u$jeQ0nn_+f*h1BUHWhlsHYRfET;JHA109MnMx}OA^E-rXRaN$dL*xE7Xhyyi4HvEzX^GPgir1#j+s>``)c_@)5EJ9b`PN z!(S)Jfs?cRko{zMpS<~mk<&ML>^Z!a?A^*ITH$*o^c?;1qY2exU6m$VN~eYQ^0UAT%!t&kZa+0pWEzQP!K zOXiSs2JYsUt$0zPG%7NUaAj{9RTafJT!J9288E*rwM=TOBCYX5Tw7H%i&2|iT|rXl zf=+f0tXF{SOpq_KrVJQl2sqYiWX`t+uIkJfUyuhwp4RHRo6rm!z4_;0C3Wt&wLk*z zY$v`_IFs@%%~vzAkP`;GC3_~(gaE*!Y`Y;(NZp8RYPMaI2Bx9j6{VUcJ4w|?l3G{< zNp4DrAVH>743s8o8B)%pDFH;y>BStp%bs{HHKxcp$tIGeuCyd+n{Y=o1pBErp%Z}` z0Y3CTCYv#WWWqhS61~?BFNpLFZz^kHMBN!=APkF^aL;-ikzq&C5KHgoN2@oF=gJ;c zO7NsCL()Y-+r&#u+s2{WY!aY@w4i=&mGK^s6_ZUk63c)XO1RCYqXJVCPk1jm2I<8F zgEnXZzUD3 zOncK2SaE(oE;v2bO|QT{OAO?uU{z|6 zBHPzcB8s65_&Br4ru=sj>Y{J`=0>(wxv&trM@iJ_TswOe~SSwiJ@x?Mq|#;tji5uT7A&`)4O4$+DJ5HfjxE_aBAavAbR zctcb|W`r{|;132`;Q)}bV4PHVVnUF9VK-P;3o1DgIb9j}9qk8|*h9_g8e(b0?5sepqe)429Oy9!I0(njITZ+F^hy(@QYKZKTIg_v6!IInZRWa> zfS{o(Q5pWC;9TzPOdJ5Zy5<1Lwl#(lXesS^D^MP=*c4JjafWga48`zP?3BbJZH7}v zJWPr8Asr7nk0@lNjSG{hQqe6-;)#ScDiG6sOGl(kcYRVZN5Rx;{2#+$1Q zI>xapbZu^Li|xI?RQwfam_4x1%u_d}(C6g+FkOm6yrJnm`|&{g>gEpD6TEAu8al%I zK5%=DQaUJ_3M8~Mn(9XOt&f{#*C!_Y~P#8Wlc2qcFdmhOE znFy6P`gh8Ad=jdcH`=ry|1a5R3#yN_%@$xM@3PUIZ&1XN%n#}0E}_sLWhxI_s^}{c z?bx3Qbclgq4AK^4(ji1TycX3QQibwhFC_sq+FObHu{sYe)rBr6doKl8YE7!kYux8} zpCs--!Z-09YCeiINSv*>*XiDhhXV&>ENcc`JS)g!BT|#CI`>E%ru~A3mz|oZp##G5 z;$m1TxaW3#sS_Bnq)`{P0HdN`(7<-^%OeGoTMvQ(%tK;e>NJJRGbWD+VQl@~M0%7G z;xqB~!+YeMCulFp2ZHW~Vqt#1rq3@Q5<>uXR78v;;<&nBKRM%&Iqmk%{18MtJCkzK z=31hsFa_CNe1Nukd_)|Ah`++Qd8zp*7BU!NFoN_GW05&@CBzXw1Ma`Xpmms62 zKalf>qJ%GhNzXzZ&{ANjN;Gbaf^mrC@ePJ}<@DX4JDlM*DQ!e$F16*5BezQ|u*!nk ziYQ?3N%JK5~T)p{SHw%xVWt2{#^U7RfOV+r!Nvxt$c806Xh4zKx#d?p(o23=i zH^skGZ#10^L^6w@`~HQ-@P|;Ue?K)M`yg3 ze3bdgV$?=>Yb`AFt;89;Qi{^O6SqfkJtFN-_-`DN5Y|(FE(P7TTD7ST z8n0@{2iP#8z*rOJsC9w`Ya19Z^WfI8#%5CW^Au{0YP~bnQ%9+?oDY`Qs0yIC{;IO{k6J65RMa zB2?U(*>dB&NOu10zX$iu)X@8imrV&PBscZrUfJqe4(jOlq;EqNt zQ~^3T%TJhSSiw!jzk)jsdm;im@1NW#82ne_*PDHWyK5gzXxLPUmu~6!$sU$mat$lo zlBJ8qm9jo=W*LPLDAOAcCY0z&nJ=L;CO`~8LaU#f6?D_m53{HA5+!*w zLJ$}rX}TH~P3VD9BLw(~CNz_8tcUSHNJflu7(Wq!l1`?O9T-M*h@dg9bcB!fA`vpK zo?#0gB)`K#;*x5YCXUiAmX*LF4UMsSTxKN*^*hvoxZ{tOuF5&w#O`5fR3R)`10S`q zA&|}hRpT7~?i&L@VXX~W!To&B8gzwc|OBrJ~h??lp@N-LHFvluy zpZ|0U$=1Nv$S98F`so(dDPv`dqfmgok8;7r`4YtLE$QAsxx^bZ2$6@&O5+Tbs3Bz9K}w&kR2YjmlRfW>|y!hMrZ2dK?v_ z!)tSt?9Y9DdWVw^CrVV*9qm!{!O7&P4svPQ^>B)-1Xt5(Ma>NcLhEBeg&I1aMnEVQ z!S)^X*TT?b=KbQWs%34zDk5D1koX_j67MHrlCfZ5nuTG6FetaRnlJqF?I;dug3GbT zs%U&BarU^_TP&d1D^WpM3>!xynY_q!azG;`XThX%ImV2&Ri}l6U3w}N9m&PYZ!3hE zD*w!M9s8g%-JK`m(cG8rP*V4}qH-aSM=YrI6%~CHxjkrNZ)i`{i3m_;3J2K!rbqbOk3i zDin-w5~laG#Fv4=fn`MFz`pT=LiNqIU~o)u$PHPWFCmrc3D+6=8qGbLh2mb|hWRLPbw}l1yNX^)z3=wXnM;czVqHQZ-4P>mdM*}-t?hx?6 zfnG?!ci4GH4wV#lNCI{TAW;m8e;P5J)Knk2C=dc$1iZqe)YD5% zRK}nb^nn4*ZmHl~b^#_iOGA?+#Mpn#?4=v>D)&u3_mIeq1JiqblO)V_M~}=oUlMbW z0IFZX*p(Bk5jZ1)Wy1VG%mXG>dUdm(on81dga}b8|`*Wd?czzra{yt%5_ph zU1h4DjFATjOnW9N@G@~93VMX$e8>>FT};gC;{q=kT@r>9=0&i}=U&}zN<4NCj% z?|&046#fl`Yqa-~(|)Xp`$s|?Ck8626@l>PpRZccdr8SuNi4K6GCFEsfG{zbRNg|Hcv{ zNOG?{5P-$La!1cmxkFP$@0P1G*@o^_2>S_-hTw%rEDsoZy0E`s=Z0sT_=`fkLPc(r z1NY}|{G*54?u%glx25@x>hGf%mL`g;wd=a1b#J!9~qN3@Y7WlOiDL`4;pkL%S0CkJHjGZQf%xdy?C zMXM06I$Q+Nn|CYh0`}ScpYWtqOf0!tL)-Xx{mDM~vQB>G8#U$;%N-%$>`$_+%` zYTT5tG8sNU4ab`*Hbet{-yoqteWuQhNJnQNk3-Ay2uO8IaKx9%9*;(H0+FxATF3kd z9szV|F69wFtF#o>@Zc9_bIs4*C}_~*N-#^RR|Dua3+lc9lJL_HYsmmP3}cU;^&{d$ zk7Fi6kdc7QSbbIm!A>bwk`Wp|4E{Be2{cW{yC*=?XrQyUZ8RCqk+_Z@!(LJ64kG_d_s@=BqT*SxJI ztjA@vOtUtfgyRb$kG}`2;+KiXE#mEz-OWVMR?(=QF!|iv7^R^oXFTK z&athB8{;KhgdovGpeta~J&C|Ev(GzTOm~Z?c;Wp8y-Y9rPAx2`Wo~0-<09j6q3r}J za%^V$R;|t`GYf$Ul_ia#9K(Pkhj_bQFGlXHUuf z%GBuf@quarE9Nk*8jS}8Q-vlNqTF>28h%QxZ=~tyX@^L$qf<-Q28K zs%$}i_<_eT8W_y&;2*@;cWN|q91HMiKw?bk4wt)3 zW(&lnh-$9IWWA*eV|esB;PMIEJX5Hy*Gw9+cI8Kk`c)|YMXkm^QbaZKK~?P5cPf6) zN2R>If!sZ6#-{Ao)uTRF$W2cCp5WcQP3S#$;gt=;Enn%;f~=DkL>wsp%L*m3lcu?)c7mX^PI+dkid zU|YSFXnrG^^5Z}o9ZUGri)W+)#afEK%YJ*o=rGqy5>7d9ka0loS;wn=1rR3wTyTMQsQL;(GaOp|5jjq+-^t5Op6H7K zyh8#0w|r3*$@XdvOCwz@!c&}%xiKVe@aDrbIt-7Se2;4Y9VUi%Pt^2fLs3QS=TInL zbDwxFf`vQ2SOz00mA9Cg`{%3u|M}-nD(_Ap7O0YK3C+Vv*#(0dCEUJvR;A-++QTig z&s?yU8vxY8#c2x-F#(OtB)XvsnEhzgpMQUlPwJ3%*-2M&mr~Iy};-|u5HnxYn#>rVFJapN@$lcOMz+I zSP)FBqI@SJYnl(+ZEc)cZ&jKB3l3TQ6s&kKHww3Dp|#QHvO6*SW2{f;iDTTzYKV`Z z)FG2X4*{TF1TVv*Y>EM1V32~oB@65KH@D<`W|3qoZ^KrHA`~t4N1c%*B($61+5l@% zDq{}Rkc#?cp*1d^p~F;1tO;QaB5;Xa2|tqKQCn6*D*|x@`qS%c6y*qkFChpm0&!Ke z^~TT(KilG}84-2S#Oa8F58FmR!lvJJR5^^OK<<7nzF_A2F{u_lcj;iivo@Q#z!yxC@0SbcCsksSha$x z7wLeW%&GJ6?69CyYyC}jO}y5!xT>~+7rpQr{KCT8g1$wuib#0DF4a44$y`cpAQ~E> zO4I?{Z(6EJrFjV*&+6V|#w+LnqZ@lY{JvaLQ`Cq(L;&CR5 zgsrzxsMR$OOBAk$tUqd`Ax3sa@c|T1HHtMJY20s6sGig(%^o|oqFAYgIn7x!_Vw7U zU|<8v%Xj;NOe$)lojrrie$C2R3Y&rWvGf+zMC_Imd&NXq8A%)rHX$g5QmBWfg=V_Re8 zqSg)zL{a0~n3$4_?S_zHheeCP^dg;W#^(w(WVhWdR@PDTuUV2Z%TBZ_5qI47&S6&` zN0RGWq+o4xFcO_&1OI5sbeuEd#>Rc(H#Xr~X6fBE;x?o>XskcUkYyq8RpH%E`#r_c zBC2_K^lQnwxZXj5tvdSND7#G9#ME|O+q;u1)NY!uR|`44EwcgZEj=Mu5k@ymT?@6r z`ri-TR&^v1e%A)se~YOcylX8Z(UL#B zHTfRlpw}1Wt|dF+P%^f%LK?V`bZ@K-d5u$|hDz}XgX>wA#>fVjo51$IL=}ND0(7B6 z)e?&^+BVQ>TXCict>mYfZ%0rHGn7$nF>ps`a^}b_QMmy!?^e?dE((`4Ad@h7^`&;0 zw$u57-{7XUN9_YD7hawo{o0^?X+854ZwTnn3ij3Atm8F=momK6r0A7|DQ-+T2-|}X zcW?*LVTn8oB)IWh!rDU{IsQbJ2Ce9HtzWz95P$!~L;i=KpSw3yQWrIRolnP*%_r{XD~|^zO+S z|HsvR`GQX6o}B&l*Jt?Or@#LCH-Gr+ufL!?#V2R%wfyIQeIco0PtN4O|1$!&r@M<* zE`&sEjR6=qU(>JnpMIy8JA-)dl!!_w*-`$usdPl_I!X+7ZDn3hL*52oMH@@$%h zb-Itslo_*ZnwvGWq?4xQ;A&^uj##XG>j$n{9?scW)lB;~G*;DK`&MUXb;Au0y)L7G zp5#YSx|p}TUW66Mz=@4C+pp=rhAy}hj{#zcUGyxUX)H&n#Clo{cv6KS2NKE%D~MG^``)R zoGvvAK#}g{^8+{J*V}&nGTNWGFBp%`%X{H-y4<_oZ?|hKyht8>#Tlg{p*=jYNG3)u z4Gw1e_`o$PglG#~D<-GKxKZ9iU|US`XcFXDHj=UkFI)>knpz~cLPgHapt6xG)Se|z zB`zCqiL(8N4f2`$>wbk&AW4e|jiKZ)!ee}zM$6h^p{ueN)5>y)*_g`k^Z5E?*BIZIK`_f{RYnjPv|ZIM$R{qgXuF>_;2`H z$vJ8=)uFqRbTxWf5F@Gij-IG#4Qb+Nfz+X-Mhz7Y_c%NtsucH8Q)$hqaKXVvyZAOx z4UY>tkzDjY(as#NvO`4li%NK#>*PP;*1~erqEWc|=~NNYNKQ3(tg2@OdL)_l>!Rq> zyo_PUM1Q{yf-gHz@=20jgftZY_0%RWWuU&L)9Qqz;hPebz^k>&)=uH%x9^{;N8Y0C z5*g(^UmltJD_Wnlqu+Yuf|7tAN#Cf~s2#*#U+`s!zdk!GKJa4Dnhd{DX}w=d-W*Wl zh@st45{aCp(-;?4egq3hOd^pdPIYvRU5;fcUTR^QQQpG;&)mB=$#olfqF+USjb|cc zhb7PM%w;&NkSS@*8G!0W@lMxU5Xa!#x%jXRV#t zNQ|Zjjh#2<3Ct3X8i-!-!VXwnR`H}bt@stL>lmld-d^CXXgsa|rt!PJ2X2@&uVe_2rwdnb16n`lp^=SwX#Mx`Wc%6@g zp03T6{=XDmE>XKelS?2I^*9GGQHv|xC+cto!W0dzbf2!j6(CQfy%os6WZi9{`vjT` z!D8sIxSC@yu9^E}8&nMLck>-ij=P0cF2}X;FW};p(OUAtc_T5(PmN=S$aCC$49@@q zQDE+LpySWvS>p2zb};lMn|^|gHt)#`3;jW`C-Xd=y_;OH+ zKj^7NiLC+zt`rJ{!h~B{HEdtG7B%-cCp3zyrYgj>xd%aNQ+fI>>?4rfUDCN~8qICc zN5IzRw`IsC5oriD=O|XBT3~)8DftWE1*r?QwI0+b z?CcH2M>ef!f7lT_P_DZeC6^BV{B3GjTqfiy# z_3CWnV)$6D;0>gcc-OLX+JG8ox|wuLCWq4yh{EKvQVb z;Ob(gW{y&OfY+xlk2iFEE@-LGHcz%pAyc%~J|)nH{ipSE86W-|2K^EVj>vuwsPsXj zaQPOe)}zsWO=ZBA!#(Vh+p|f0$S!)R_PVH&0MY&%s&gUxfn{3H=WkE%camh*B8f)= zBK`j|6f@bZ7*S$W(e*zCC#uVF)lSx9_P+T&`cN$R0`ba*) z(Hv|VYN<8fa|{$10o+U>%R|kWltvgkfs}m?kziW5@IezfX~kTTeI)$o^ul{%K{xQZ zrQ&Gh?QaSX19O0SuOAU%Q42ed9}LLtjvIoxOuRAt;9&Fy(X%GW^`D8Ge5Z-5cvR* z_8hwSMO(V{j(@TbQM)R}se{j+txrHSfKV%p01f#hxsGz2<&PwRJ?rl$$FYHwZ%637 zqj*)XP~pfZzHj!F!TJcfb>bEq5FrMF@vdzr=5E@7sjUMt->MTq_YGTta^K1u+dO^8 zx5b8L^j#0%^Oq9Vu3$9~y_QVbp70kHlMc`&pHfTue}CD%k*cBC`-GtfW zMWc|q4+y0;j8%woBhn~sM1w{%rft5*tH1Mes8W&bWs8Br{>^Nc!geoh>=dpWENo)a zw_?(Kcg96gqa__(wL;PDWch%9ylV?_mF07~dz2UdiEyxgYh=e8oQkQGWsD-xaVKVU z9V5j;a)~k{Zx@>a0qJ4gyE+1e$Lxn>09jspIaa0G(Fa|M=n4>IF75IY?Z0SGAr4cHW=Ik;BxlPo$WSKON4nVEkG(aBWZrDi0W|b{gfQ8BgM_ZDp zAW2cth^IBRmXR{f)G>ORiMFl;s?nmLUAOpTXB7kNs@M<<(w&D7$a7z%ol%@AR$;uR zO11e#mLnr#!Tw}Pb1sZy@`;8perFs3=NcneJz^@VD(hhWrSKf*ZG7RGgWO-K%FbsM4YH^L0N)$uY6QjUQxsog3f3c~jpv z8(;FKOFCG!7$x(C0sL^CssO$rz+F`dr;BCFsSwvLs?_zqg>rscWt?p06YAsiXFH-) zPBwHpIm}2havhpbHm8faKlsUTsZ?a}(`c7tpmw(>GV@ohHybb9W^0ZP$j#95Ha#9=Gj47uD+5pK#msk&~YyoL~?#I$gd7J&+Op7OxRcPP< z02YVXJAW^X)qs&g4~LX?L7o<2nmftzC@7@1rSH<9?cK=l7}Wq!p`{`v#fb5iGr}Mc zmGV0Hk*-%$w_K27&jB{W)Lk}bb9{iy;mw<4wZ;v^kO4mZl2}BebyihDVEX(z=T-%L zFuQenRcjlsRLa7U#g=M4XmJRtRkAQ+4UlP_ebqqsPrzzDrksP-`u|c+!HleT&@gH^nZuq5M*;^8kiz8@=7{)`-~S9SH>Pw=?*4u|TtW zZd^6f_(QM`<$KI0D!S|{!clFz^iV+BHt2}==QHvG@cwpnQ29kG^Uy+oVJ}B6h#&pX`ZFTsNXp+V(3$`UxCa zuTC?w^@sz*8Rlv8XlT> zZm1g1t)3JmJcgyw5XI<8;bYOvXk7(glc=qEv;+cnw`G$O$#8SI#YI=dtL{WsgVb$L zTq!--6w33Q70s??;d=Meweyjya(GIaQ=p+f0b~7cqFA=m7%Z@%N0Zm(~KMwVWv-E<~6Qg%b1iN(Us%ckeQ$zGC>Q01HwB= z)g#dSY>WUI`dKRr=~lAZ&jDroNz~(MkjC0O2Im@WRk)u*=)HmrihS1mN`VK<;g!VK zy^{o_b)2M`m+;f<-&XQ`_xD&JWr^X=^k-`ES9&HJG$zN=*jI={E%e=Y6LoL~(V#M`f`M zCToQ!4oesvEQ(m~aMcavp6AP{eW-|5m7K2#jjxG+-y#pPg2xa0H>({2ovAQaG*_s~ z#kFH+nO7h)Ks1ruP+Fvs;SnHf=ydSjXa=La6SF<(0FbkIQ%~WCA2aQyR9V8+9K?{{ zPYa;^_IIUo1#HXFM1W=tM~n>5>72h`+jMrvjtF-YymAx=B_4MB3zp*rj7aA$&( z$aloA1n#B;e0V$NrL2mS>xW?6h%N&pr>e>Uis0*ppkLq4^&VxMP(~QvWgm}E$Y=}< zf7o2G(-=1mFx5*Xz0J67ir*0y0t_x-b1wpvY+BHVv=()hA)7sB*cCTGbz-4DL@5=3 zbjF4fIe^i%aik?kq;X+NT_n3G`GfGlrYb&(#09l3yS4hONskTP9|_L*!(3qDnSL3+-}b^xd#$tFhoL; zHMZq<)JPC8qq&^ATIGqatc8yTBHlGXZ)eRCE*O&KK`1Is>Ha$gqPG%qdvZr8N~@V} zK}20-+yruQVz1rYi5>wPa zadjAbk^(0=GBpJD0uF5r%;?a7#GbJ=j^n7>fHqn;EQcDfpsX?VQk;eY!%HyLi~!i#$!s#q-t0f|DAS;V1MIkVOxZ}yTPwUeRVM7G!-4+2~shpkr zhCLMwUS`M%!LhzY#8za2yEbJ4`xzX+=iUWapbyM3BFTvB3v=0LIyfeUNHa-;_x*^L zKm&!AOF=X8NkEb6HIC7(gkZ*GBh8LX!tV*!Z^A5qJDv6#{mNEO%($YusVgT|4K8>& z{%m6&?=d7arn(HN=MqU!1-Kob`E0Z31;3SR=D20E)&8d_Ns3cDJ?+$4+S~+x0H&@;UQoeb%sligv;d(&w-W`L1E(jrAwA z5-}a_O!v`xK2+NnOm-ZI6Lrr4^r-JxsY}OU_!$-l>vlvdKGNriY=&$|HYx=pS)j;% zBo2o8U+sych26kJTp&gXytU3mvSI9>$d!piVAReOU#5cvco7Dv@EiSLzJhE}3l(_! z3!SX^LvqpM$6x8GeWWUGG8tG&3&LYp!FuE3hUdn2kis?24_+YjM`e9_iQPUjOcN-3 zBUm|K+$*#&GsOlO)I12yC^o?)DXmZZ0At5W*mNR0$MJCND$=7?vkJYAB_IDQ7`qE- zGNT{b3O#TdeZABdizIxUJHR#v^yVD>TGs**LfYt^Ms!CtZ5jDK2q zAM4bE@?qwsdJ1XfT;b6hv;TY?3D-RN3Km`-6>q zT+Z5)Sr!h9$g-N&2Fs9aQ`jBIP_7YA?siuN4KZ=m+Z?J3D?bIm$wq}GVgSp>??FXk zn2teAX%d=q${y1CO;V+DcVN6(P;B0!)QeQuY<$#qP8tAqqp-79408ZuA`NR01J8L z`$!J+EWqLg&e~(Ovl4+R(4OFAK@pH$Een4wK#*u%QR-v>%P_&nj*VbJ>iq<6=YWTK zNdERjm$~bhUGIY703Pw^rsI-m({W$Mdq{z=HkOe_s4yLnY3U7HC0!b;zUxPcNU*3< zb_V6F&>on6KFYN1%zTt)vZw)Fs0XS`_o@R7YVz$M>fTxv3a(UTeUrOUx_oiSWJ8;f0giVQsHO|We*|?#^Md*G4*$4F? z?CvOs{ce8TVNubhylYv{!dJ%^b1)&T+^=ueus%La82ku1@pCo<=x$M^PY)(-Ka1a% z0%Fb}D8upv%l2xVI@l(9yVB!ZTvLmweOaIb=;sTug?`vaQaI-rIk6-{q$09SgjQ;v zZ2s}M;=Cu@6xBYcRj?;eOkeFocmm9hE9^%#k1_C*&biV`*`uB{zeMd10YX?^fpXp( zpXA3P36-#)8WSeX7+QZWl zqxaUD<6$H7lkzEX$2CNrE6{EFbi80Uct#>H?vt6}I%VvExFTh$lcy6U6zM=Z$8dilt?LWCIAjO~-Y&R~xoI)a ziY8E-_2FJ}VJkvZdakmub@PP10!iXYcu)d9uJ`TIG7@M|)0e0a(Ic}!f&+V+->TJQ za@Z!Yw*DZyHcINyI%N6%uRr?~=Zt^AvuIl!xG#R4$Vgs05n2G7rFGWy4YMwoWW!sW z4LOS?qzNibo12FBSi*f0f0DOTJ$DkM$c8q&Dg4WR>zc!v0SACd^m3l2eNAasOd#ATgYOB_4l>6S5 zfd~Oh7vJf~hR?*o&`6$xefDgHy8(EZ5@$D@a)`52jWuQ_e%9&%s|ic&9ai}kNQ4>S zHWBQ~4t_trMHlmq9>Or6EPCyYN|zwxr<1q*DAPba-NF4?e?9@gWd7#r(I2HKClK|$ zEkS&ui1gCzA}|ID4mEB4!R~V12*-ADFJgCr=$^u5h3?5ubiPqpFEz*Wc${k*nLy^Z zsbh@#vEcI*(%;Kc`KkPeR#1s{wZ<`0-a3Iy8=`4IU{P?XRFzTo?8C4?at`b7c+-#> zHG`t=#H0R>MsDPhsAqRUr`o~j5V1)bsR+Tq;i!2SDIg*9&W}fjhO;>H(Vl%JBJ7Xb z8YPEu-J?ZMqCV&3Y;hIUEQ~*fYsI;rrf+%V)$=sd=3o!fza+EOi%j0E7Gc7a{212Z z?1r2|Pc{rfrbbtC^BrQv-j%O|hXW5}mYUKinRbi}Z4FMUehf<9MxPk;>#2;WY|S;6NlS_U6#}sSK08_r?04p7ab*1aao&mV6Pt-l1(d^pLpHJrIAq zm~Xyy)K6p1LP^- z@}FcQ)Eu_AUm3G083141o79lueL!VbF=Ecx2LwvD1QL3j1)z(T^`n_mOT0aVXtob) zW^`7=0WSosD8!;ctHC`McRcQIbY2ZJXzAEF7AhyvF`lh+q7q2kR7DtY4sUn?wPwp; z-8x|^2a_ZbvUI_zbx;~dP9>P$#G83WC73ev$e}ZQDAiqeic_unDOHIU`B;2zMRckh zTg^`NP}<{taNL8T?Ws!Vm~BS=ysVtU$3H>ijcAZZ!Fj#ARE(9o8yW^` zx*I|QUj`sMvxJlo!+9|`6DW>mLbJj3McPp$#u3HuF7kuifCTl*LJsBrS_WwCjtiPK zwz6frvYbfK#&5rLt?HRtrY#5&Wxq~+Ar)?rpXbEmz=u&Z<1_?3&T>~PD#>y`OOa%V zA;Yh)E{rTcFztC)!}*GnYhoO07iEL4ndP|>%rZ*>jZQYJ)*lnH#vtREfXj%FE+ZhJ zRmZGw9h9n7X@GtbVu3_HyPRg0(8Am?Om*`-=v5VmWsij(99zj7QT$|9kR zWYKFFRD0T!Gde{3J-hq=#piaYxAp2eR^`27Fj8F43vz zu`oxqZly;KE9V*Z2;{dP4*S#kjH;)<4y*AP^c#DOkywmc879E0t`~iykyEt@I+vU{C5 z@0H6Uq*oaTGmF9GJi4{u{hFG8)g2?)n&$S%pc9*tni{{_dOV>GV&lHNe+LKbWwxvB zf=_hGk|L~ryVhF@F%uxm`0yJS3!>B%rin)DHD!bW0IN838i0BCT|i0RX@*0FVrh0m zh_19rr;K3!T<+Kjsnd+_L&!O&I}s+%ry95{J38)ZIC*F3GnUL6HamvcI%k9YK|h zxCE*=s!!4^G(v4_RC#^3-Y99*x$*Q(bD*XRqGV-9A|Tn^&rkzU*c$j5+?D29Abla; zv!C`VN{UO3Zp02`+~H9>yae@j#ZMHdOJu*#GK+=T#rQRS4gW9ed>n;Fue0fmf7;v zB8yg}Mf11wH9tr`3*b~h#g0^Zh`l$t6z!HowZ57LEOaW?5>$o;8@61^KiqYon}nn! zd%x&ZdWzzXYEH@_bA+rdu^}mLDaP;dE#1WA&;dM&al6!9w6nfsfD$xvZd(!*ecQcm zoI-c?7&+|O}uCqW=vK~c?M8u7*uOPy-~t+^a`Gn8Pc z{D>EYLudVcw!WS1_NehMk7YPexdnDVUJls&he-SEc)^J4txBM4nAQ*X*{V(Y!HU!6 zo)#`7FP&*N?4QJ>X!z{0Zt_1I@%RQ`G)8lJa!I`x4mUY<1xOaT*p8}IJZP4xQl0=N zP@xHM{Eh(bmVdc_9{ZDn631VgUToGFt91?Q(v3p@U6I-1~Ol|-)!T3tuA z+Fq_``~?e@HDZ`uA_VJ_kibloC_rND#dP!?VDvuWS`+S=VS>s4?!Ba^8R;u2d~=@R zoa)cGUmXxnKE@#GZK#{F^4K6WA{O;?ma08OH7{n&Ae1QMsSW!34^zm`ITwM<#0|cN z?!mDfhr0Dc48g^Pm#=YKx@yXE?Sw5eGj7sKa%x`J%U&4(z>QJ$U@s6BmOcHYWnGUsI0%pXDhCS%TAob|rZf>a_&wq5BPGEj%yxsgI(;pCG|6 zP-v2##7T1U6p9N{e2bg+FX%y~^9$XKJOzab?02CGfbdNZ;T}bbmsBljvEO_&a=hmI zL?0PEEl7x+uNUgkJ`pbk`M(ya-(+gj8eCWVo>aeX9q&I5YEFe#e4t!Jd&vI4ps?jC|gK=u743GQbk-yoNV%C4D4WjG?lq;W@{Vo_vjFKo0JnKrd7`hNl<8(LWpxJIUtiYb#B zhiN(GD{((I$(Cb!nL4!LD7QW+R56)`S2h;N&9i0lS8C@gDF1NZzu(j05n zjOKq6(euNrdRG7Sb4M%*Vwx%pT|e`ea%XKxn?sIPj*CiGx>fR6VMvnCV>W;xqonB( zRiKA1nFBKxdSgl5;XoAr!Ku8^MB!rIXyE_Z9HlcIbeh;tA{BDIa4Zy-%mxXPA60}(W+R8CT{je-MWOy z-7=NKA2;z2hb?l^k(}s>LiwfZ8|3Rb4>b-g;#1J3>Q=1w=2203zPYGQGN)(JIT(rG%)9{Xe3!GsYut6RH}9@lsG_V4rlpkqU6 zZuaN%errCQ>8|K;CnpI3B5n^9-)<`HZt`}H6g(0Z`W=qj=g*hZUlOHBa5Q>(lyXy~$n;Q>vkk9i4sM;ktW# zSG<@XH9Fm+bjDDt^=`!pHIBXLO+l$}92ne9Oc_oJKW1LBkINO^XG?;jOLSjS&};ra zykO~RutgkejY6C_-L6^@^o)kPGW*TyyxORdsr~*AFI4%+1-`&XC#F_~dWlj`bZ~2X zSyrwV_xi9&F&_QK_P|k@zHq6vnjobzRwP1hpd)Rc4erH{W~jhB+XTfBQ-NK!SngM3 zPw9eK%;R=*Io+>!YC4PGaflF^lB12^kel*epAS=0S)n=vEk2irf4jHCR0#;$o=)!! z9nf}*Oe8rGHNHVu!O`WZM!%nLZdr80@IlMTmQ5mrp9lx=a%t)}AV zDgGXs=gzAXh9@%C*h0~_%u3qfAz*u5yTeQ}nFA5!ZZnNg$TS)sQ1-*Ipl%FqZtDQB zLi8;i-SOg^$TCP}l5~A+3<|SkoyRzJpp1^FTGAcU}koH z^tYuxz0z%er@!Oxe$v)$3vz9HHhSfL1-L(=S7pVj_5!qg!-h}Qm2CUgtYzcze_O7d zkH_R4^rPT*-Ga6T>x2h(^TSrXm5~OB*lxD~(TxT*D|lJKK-aVw*nX%H65W4*!QL$X zne|Ug)yVz;SEY-C+jP2i`~L2Ax9@ETaObE4`KL8I+Cd2mrw9qg^LOFLVgVs9roOMu z{TsFaphI;l%dDKuZ_<)r3ESV-N#C2*1{*3_e5dve0yDYuZhtw4<5h3ONWQS*IXv)8 zF%_XnOXC4wAY3PDp_Ix6VaF9y5IS$B5&>)y@?P^Rz@PC}`bC{x1 z&-|XsYP$XPZ9LPrjgfel#qGd_Y%gE5pBjA&w_aGa)vqi(8wB*~2T}#4spV?-HlrgI zU?UpVn?E2vM-K%MhZKdNWX+Cm*NFM%ag(-^R~-GZK{9gZon+V7GJLJClM}WBv}*+kJwAwK4|}BZsdTmdem>l*+EX(uLIk$0sAA&+pnHx;o(Mt`Gxu19uoD z51mbb?kG?$(Icr{F51Alf`uE6S4F>Qj_u{w(hwUZVpFp zrRQ%&JAA0J13e#u6y(3{HIY{R0a}ju9%Nd`bnwOefNQF>9l|7Z*4j_P?X8|Nd(0dq zAFLA!ddtTgVf+wDaJ$*#Ra`d(eY=NV(K=pSu|U@j!iC4^D-Wus^f{# z*O(rO!wrRtP%!{r79QT5-R}2^%gMpS_I-1~5!iVi>J*k#t^gx%DvHb`U?G!meps&D z>8B%7XjD$VBog^A9V*o}k4j%$Sf+vvw(^(CPWjLi*uQ#MtT-u`iT<_z^#M0)_V1`{ zt(OQ3{>NW^mU(BF9lW;XjO#@v0#?TjO+WYg7{30Fz6O&RKK(P}=aIofGFb6d>E&Qp zykVVkMk&mf){~UEWX_P4fB`6Fu}l4*)9Q}z6AR>c5uR)Sp&9G80C==J9Kx&shl?|t z9}bL`z*EyyVhWqKLP9LhI}!5%Ig$FQ(q^Zm%0EJSg2Vkr&;D-wmq13a)b~NU%X8xN`pQ^>PR__$r>?YK6E%1|>uUjx|0Or$xf)v-7+-6)fdhFlFm#(;)1PtdZN>pbR5oi3=<;xh2L@ z-BYwmMh9*~JRU&FVoI4FORfwu-``>S$9#F= zPgas5?YPGg+oc&Z(zB<#{|V3(Sc%RERV6SdXl$(zZylAdpG5jzMx<1gRadO4I>%COa&cr@&QTR4}yqF%VU$U`(@YCyO@vfjOt?}5JrVFy1dCx_<^o& z;|dR-7)8rwifH99k8)kbB4!!`WJwDG7+mXNih3X1Pmutf*8iz~z1q(K!cZ?ds&h*y z1gz+WZ+duF+*BY_9H~=V;%m^H3G`FJQ3^_h;tX$?BH-2v&v#fYAnZxsS^XTr*#+g4 z)EcG6EN`?jdSyLPBT-JXCOo%=ah?E61^BG?B zJcaoY{zgtqq;#PWpS##cpM3a$zU0^a=v#5gZ;m?@?#e?;nMoC;0Km_qAaDO3LiqOQ z6~cE%L@o0epDraeEk09Rj|3w4o?Zq$IQWbsWHE;bfy{)<2v!`tNEN57`p(q%>$+U2?u>dqm3UkY_lI6V$T4*6RVE-QrvB$&!OzyMqEk7g2xbox>>ZTgW_1bV$PMU)<>zJ6Mi}CN2jo#w z_<D<3w9n3jrCxN~maZdMO7s*^>s9>jsaU2Ode1gS509zE|I zK6{BsBy^W9JYz9e?9FE3R;IUCIN3!ol}Y0Fq3DG2DOLf}Sg7f4w!V>+AbzpqkDX2k z@hLdlW0E@DUQqBMo;x^e&+sccE8|*C2by!F%wf|LxL|OUXCsbPIN>+vn*i3kdmN7| zDExiipJlJ)(Sr)GXi=n-fyob5Lam zCPy3$1o7Hen;MYt#4F}X;27^wz;uTBu7+aRYX}S31uhk)vB1&V>Cpt<@-m2AF#wWm zRg{VMC~RK-66f}Ajuiwn0ds6d~vAw%jcC}$Z%nw z3dSdcp1t#n{x*D+X(<*~cG~bR%^-p$VyDa99irpB1@|d6Ah*pztqmL*R`*+@H6b%){E?5x3pl8ZR9L zc@q%nfl({cG~A!}uU6!{zW}%9NJnl~OoYs$FSj8~v_0pSl|cL^JDIeyC5ZO|Z|EE& zKv{g^pLHbDiD3`6c@Qyrt|bOXCVjD=0H>alp$_1S;$u^K}wL90k$>T>I64 zmL!`3_~@R5VW6BM*6JIiBS$qMvpgbNa0M!yI%yCIt3?NoGP9dbmh9S`u#zhXxbzau zVldyB&y%p1oCUlpiX>98UXhMmAR;g{;j^6|-(Y7EZ<)sC4Q2yP&Ok5cOeCY{puH^- znd4C|yN^E3ZjPfY7Q%e??dfDQNu)WUc4fTH8FjED2UrQ-;kp9*qXnVe?8iW>kvSm; zJ78X!lAAr?O$$5jc$y#9;5CZiLqtRnRZ5J{6k18K?tx}+*GCHEWW>H4*SQp&@3(Wk zu#}7nPFN&Fkv`D`^3H6?I2;p?*;0pO<{}YjlZ{njjn#0*XU{2Nf=INY2N3BZ2Yd{p zq#txi#FHeK6Rw$4RnJy4qUWC(uWxu)1$U(9u59+$h1$bJ()ROv`4kMy0T)-Y7lf;$ zIQhWF0E1%UHMV6=cy2Da}L_}JNFV+5XBbsZ-w=igySfN(O!y3geeUS z^!okwCKk&LZNZu`6!-yAgq(mAAV5iC6;I|}k`X{L%*!POf76~uJyh>G=Gw)hWC9c= zr5NWQ@QS4hTaunh10uYW6Gc}?OH{y&;ab^(B07AFya zG}{)i8oL`X3#?N&3YgKTCh`A9nyM(A1}pg?p(Q+T=366TWzW}I1;qIeYc z$&HXC#cF91;(?(EjW|+8=nT!E)9LPBvQ%S+vdqpP@>Njy^|6$6Fn$fZtG)FKr=3K$J_&*8RySY*6IYN`O;Q^JOHNA>UBL}-FHXatwY|5d2B4FzVR$W6 zOS?*>sEXN>4DvnRoVxG1s<@6qr=oI7k!BC_#$Rw}1rKd|(L3StJDvuj*X#LBKjT=F z89{x4drn|=YkWk8)8^?yvZyLAqv6L;p@5&^3O_R;NY#ClSF7b3IlO1x(=?jBe*Nup zy1v(HCIuLJ<4KF5;iT2jXt$4*Ir z6jc@>V7!u1#XWX3KayG)o^HG{(Hhecb{mgEOO;UgKT<`=T2Dex27-XDP$o9I)yV*s z5iXX&m&ZMd&Gkb;JSHBkIv(fmS@tp;lVG6S5y=zQwB<`hG*bsmM5_pSN@eJf>?k zukq=*UObGd^oSC|nlQc}^L=DbVgx>n}`L`=%LoC1EEf0G#V`AlW)>cMH zr9?F=^IV?-*%-41G(5<>nXU0u*eV8pnL`A*h2e2Uwa}hQ{80ZFPr+gSs5Yb*niKt4 z*~whS?-9fLi(*$3X2Att$rO3X7sO zZ7I<;0@>2AQLy$%QbLsh^|PV~;5+h^H&}h}?iViFsfkFO%7XJ4Eq{a-FoKn@owjv)9M5L@_XUbAJ~Tm#eg>)D(_qJ zftxM~jACG~>_l{di04F$`^)YPU$>3(0Y#Xy@dG;(H@Jtqd|zV`F}9LML0aWNeEQ7#lcdnUJ^GW=t#*4VSWA2vvLPVoujaJSnJBD;-h|F4r3S38)ODT=ssz~DBK zE(U{O+EX%@d!se+GvRC)gR>CblvQG@oy`;m!QdyuGqVQzA*(O2Mddq3#@u9YH9-Np zoHB?!S#>3#-|lZ3lCXhr*s)0j%Yym%%1Roc48XOvM#ZVHHIZyBso^<-_kZN#J19VD5q0xGBdO5S zYlK&@M@`m2MwL#@LJ|Yyd1sO+!q1U1RS9u9WhF!Dfde~904tY^jKvOJ0zmxBfLNCL z37l3dy&9m568MTfP{54??6V{9{eTVjpc{feRG-H=wyG(R(JI4+x}}6QtFA04FcF&j zQ2vI(9A+o4GwrFyyCc#X0~rZkl@)^kepr#vrEFInx#a2wX2KmAI5IOf=lu|Cfut;^ zAUa_jTp#+2!0i|7*$q~Q@ai)zCvv`xUwKb>$DEj^(N2PsrRCrYoo2k1CwyhkjBhZv zr~!*@1+M9{%LOQbbo3MGiTf7(OOz$_DkdGVd?NhfdO=CvGfGP2FkHrJ2oZ zU@Be)iA@_Bg$83CW+H8qYrI>=>WUR2xYgV`@kHK)v|rNO?S|KNp~e;^U^B`OGLHEg zI;kF|X_j?i51_Ci9%N&A!#WbENy37MFm+{5Up2~JIH`m?zdF34JIL3odDQZ#MOA&Z z1(3xws zT-->0B7~1Yn#) zFEw(Ofr?9Qp$B#8O4J4h`{tsX91TD3cexWy+Cbi7HST~PXdwxEtB5bPFI*6vIRA)? z2-&3R^LcNffqL{Y-_6oz?^jvKl?|-UAbS8M(W}^kc!$z~pSXpk`GDZwJEjj7Xlwtf zoo(AG+e)1{Y#~lqid=0Fm#>8>_k`YjD@;Gxk&C@)AfRniY)})C+cd53QWg0Lo75V; z#_u?*y=x}YPS|e)D-=Q9#r9sXHe|LFOau&WSaN!!A~eAunW(-Y411~M*|GMKArJDZ zbEHRM3!6&P@jM#Zgki%`1)k?6YjzqBFR!n*bL({a5q}vjEzjOA7p1Lj%-PPSSUrMv zjUpU)5?#Fr6qg*>LD69MZ$C&L_1o32`)j9#z?F{0J(}DfhiEbFdo)cT2Wgc|VyrmP zu7vK;;2u0KkE%BI$JC~HIxHH745)6qvsZJwLwd&MI>Ao(j+M?TonSh-(0qQGuXR+Qd1$; z`KWU#;-xf}TW;0RMM9%7w*&(b0$W^dU~EjH6}o^A1viDGDM;PeQ36gp`Ft9vDUIuK z@Rm0-R9r%4UfMxC4j}R+E3kTm!p`u5SX*Up-(c7P;prh|lK`pHsR^Mrow3QvR;XxF zq)6&W(N<}qt9e(eTL8k-fZf%My{ZW&-K=l$Yg=x6!hogOYJV8ihP1O57>ObRWaF5s z(&LQFZvhS?$Pa>{>3)HNKIX=7FqqtFd4reN@H`l$0H%ob&o_G}cv^16!!ZjD8gjVWe@X^6C%pVJ85wf)*^pW13S*-#*UH{`Boa&b zoK!k%EMv2>+g}XDj6kUBwrOPg^&PwAiPxG$#rmR4ZbC*zso%d(ubq(;rE#qjC(zS^ zUEA*;EV>=X=p}k@dvO zJyB~gR4UMOoUt6?Y#w*en3PW71R_2ukMYk$i6*jGA;NDgV>F=r0~8t@ts7=dGax+2 zfWvr!m8#%Pw9z!IAQeh*I2ODA0Bjr~Lj0AfOH?4FqlgX$XPbzQ0UMvfoP;TCDB&5@ zB}26v{e29w%~0@TfSQ1=OlO4P_6fT`;^n*@Y9vfv%?@v7aX~Zmh5X_dUeb!Ml|}Zp z2?f7Ypx|o`C2^Eu$U@#x>JdA_rz6Um@*jW_A3f|EM_z)cbE#e%Bpg%JEh*TbwpJo> zWCW>9(Nzza@v+e0dY*ZGM$TVa@-f4Jb z5u!+cr@?VcBVQ|C1lu>7j|qd2(u59;Q{FZ>t{lSJoUa&zk(C^~I3;We#s3{;mq6Ng z_iGfn39Bpq4!zTd7!PpEFKV?e)^l7cq0rDMmVpk@&{@s;!4%^sb(1(3&T?hz399YcH?$^2XdP@ zm)*GK?J17rQ}2_BCwOuKEQqF%Mi_9tgQ~2tOzSeCi?H-EXo5PZSP}9YOE@Sz#3#)N z{9^i=3)+NcCjljkXTkV%u@PpzKX`==VVqA$=9oY*bXI0#7I3!l*F zOqt?fyYU`G4P;#$R?N_@&fT!MHpD7)t<12}uQCHet^n#VM_4Wsk_xO!$4$&dQ!bC{ zS7rzhS;eL3&$?t#rCVjv>E^x0y4zykua^;=ES7VyA7 zsi|D+HG?QR4B&K}t!ha(i<2oY_90FMQf-I*CM@_Q=q{*$Gd|oyo5%ypq*UX-5N{E;oNe=67JNb%IDB znsgjH1P<1l0=VROevDy)HRR<|-DIn`BA0O2VomzkgKM2o1)cSc%u;^I`DgC7O`+n$ z|M>0ylLRG7QM~6z$oeb9sZB(2IY(S8=_oV|Gr^^Y@K|SThtqFtn^^O#{t~BfHg|k~ zP!5S0B`GMKszPNz!9dg`gQBQHwO~KiZ|y>ePPllReVNbY{o??~5_*XjE8&kLf!YXd zjx40wQ;b|Q^vrqg0I%tJfFMLUz;Uyua?p}J&GRXg9CwQTJ`{$?4-#1zk>6Ia6p}h` zfhS@^9i41jy5MFQq{pOS073^b&B5xQ?M()QN{%4u6X%-9H&A!5R6K4f23`cxH^r>5 zDMC%@hI!)d7nHT;b4KlJuj~dD$kE#_LwzId6IE<*JW^<^p(Koc5l-4x=nok}5(8Bxy9>}VLkPInqaLMl7TGu6;3LNF% z?Qv!9o^Qrh=y-UuIDPhc-E(LdeVTjCb*QWXCDCZ2X(1s{nf-Spv&c1kjt-J_kK?1E zX>xj1B!#+uz91b5I8!0&V@8&o2>+5Tdc&UnQjB`fqCRX*M5% zJ5-l4ranzGv@%j>$04@N=`@c&M&8wtqQ+81BLi{xmm9^x{^A(|>xj})>v&r`NO-*T zW_&Iy_0}ZV?;t+3i-#*^31e0FTY+O1PSsl07R%^Qi*MXDjdA>jVa)LO5NHwUZ@A?} zwYrQ?#LUzVFm4r%6X{ZLj@+CjD%`9$&Rr=Sjy?q9WeP8A+X6^f3L$RQ>1N6SS`&8S zx-=ak(lD(}XJ#5GUxMuI2Zsef=Gj;n%Dn(&Fl?R>EeCdq07E7Q@3b!wmaD5lz@okc zRI%Xg#gpP7;Q_xjR9jp{VGzv0$sy0bK#IGh;&tfF)B??Qc8{wU{J%Y3zh2KF2+UlEIlao`2y<5V+oyU58(P_Tjf5K1;MJ zIT^WOD2Nfl`u+r5q-_OgkIIW2h{K9vA_Zz(I=)-is9Ij9fex1=ZYSCE0(HNrO=m3a z2qpzjtmbdwrQ73$-j*acia95u;F!nQRNWf-B@sJ%qQqBmZ~Pl+_}mNansFNLOJ}^M z=Q21V-mSV@9U<+=lB@)WfOKcr`#B!Q_Oc%+h<-z1HJ)(AE7I|z+7+^4uaL3xmh^%; zcjRIy?9Dit?U3S74&W6qF`tn|ig`S&`2BA`{p9oi@jw0$tOs&95SvJ1!?N~0;-c~W zKrTEs_@W@Xe1H2#Jl4ECef_Xlaq>DBXh&9`Donhp&}@tl9aJF3_th~C&pKF@07I#! zZM1Lr8`*7d*Ld`Zzy0GEKinfFk5Xv<>BB#MQ5*4}bgosz&->Si)W_0UMiXnWm`Ih^ zcbaX#Nm(FcK!2MmG3!333HrO%!#>R(F9YR*ltjvXsP&M22FX?JS0=;{kSb+5E5v_k zLBeM;*-tl^&lk@yl~2jmeW9Nh8|=Bhc*g(vb!bXiR$n~(@mJ6AzYjnD>eqkx@mHVH zw(E;$d<6Y}{_m%fE&jzb`R{*s*orLz)F|M@zxKiu~G(zluAmtm7 z;k*N=(-PrI(~bmJTDJta(zGwXl@5LJ^&K+l^*{cigtvuSTXy$ca%YCkAVO$-`JO9{ ziRo95sEnb-)JS890w}CE*i;)}x_4n{Yy;pH;;of;BebR3^5f}BK3ve0{PTdGl+7Dj zQf=7Kk!stThEyB2^`qLntsQxDqZ|28zZlJEBi7LibTTDB*z=)RG2I z{Mw__euQVwTv}E1GxJuQ*&1+EtTwA3zeO!IJbXD{zNPAg;dcupwYj-qqTLo$r~uZ} zwgEroMcKIb+iY%#>tKYdYXE%HP>3(m6Gj;z@8_43SYF~&81)&D3uNA>ks;*^$-hHk zy+fkM`MdezsCWO=BQIAGTs~iM5kj+yIADjeigw<|5vst37o&_E*p3qw)hCt#@&CYk zfT7x`!%=NAiW9(nLvlpu2pTL_hC>Rj%_42VDH7)49D(=s@wh+o*F+lav02^bA{Spr zC>Wxh@Cpp9V623vydCa{ofhugAfB2_=ZLOJ3W7FNLT6dYm&f2zu>@mT^f$- zyZh-hLKthU;nifG*HUj&PHIYS2pPoh8c$W7LENg-LN!cLJfIc%(4<%+r$4hM!!rD8 zjIGp09o5n%kGGZ)(lm3a-P+2iEk+qkZCo*OT-C#fGl*QVdkFu&rn-BkVUjBgU0OLA z$ww$V))b~{I$x=6=q`q_Rgc38>4~go9J9kQ9df+=j8G>T(AaCT1&uwgFrlgMV{B-I zQj-ZaLB*1qdQGyTvD+jw8hcH%qrMxK0;eQxLz?>aENN`@RHhV)ym<5M*&*iLXa1W0 zo|vsm2^@KOvz!$DK+X={fTKdM@nTsPg{EK1Wj0)q!2u%IpfahAFj2UUkNPIZSy9p_ zjTaUhp>j4N;S+vO3pv0(W=z1#ygzs#hygFFBjLyc5{^O|91cz^wct-rJX*xzGHCjR zJh#FXcY$#679>7!>M+9EyYyT{FuA7{J88|pHyfzbY(l`?JNPqXk9kyLP&XKjK z2RO1umB>ccq8ZZ2+BIVtsa*#EHQpeS@~ zndi_)<6(y=b();e!##=>pwg97<;i1Ee1z^2P@NXKx5 zX<5pNjv@(c*y&gfSc4Rh+s@zMA`B%I%V-*Ms>AM~yj!i7CzwBjx&q6(f%MamM0jj{ zYZDMzKB}|Nh7zKl?{oHRh6c%*e}@iVEXj0Rcd(Vy0%>m#L}wU$xk<-kEq17)1jpmu z90dZC%!M9woeo{1dO&{2NuhS}a{zPR;81yf)W?h>0C={N6_YUAQQOmd2s(h_aT)2)n(k@Dv)Y6Xn2>=~IgOu_`W&tqfVq%SkXU2&Qrfqf^u*fi^q$HSZH$X#=D^(Jy| z=O<;JlIb3mtrCSQGL0g#_?r7bEOi)+o^`~9@%T=MV`v2$x{!t#aD+5UuRswZd+}*E z-yu)Ne|FO;butOksBsN6TtubFSRi~Nrf5~5PHOL`OXiDIUrHty+Lzy35%BFHy-Y%saP+V*< z!Ng{o9K*mN>}C#+=N_pJxz^T!Y&IM}$7$+Zs_bw0YH9rYa`eAnq<~`lz2XWwY;Xx~ zGai}!I~8eR)J?oy9p@MC#Hx`+K@b}V>apIxMzBnd4IviQRH=!_Lp=>i2tbMt0@ zJ|hX4_&M_&vcGs9T@EwmXx1Tq_N^7)i-KgSY zGQ4zQJ|}8VET}ytH6$~`#=MS-wtd8K_b3jz!>x)@qKIN^NqMZQyj$TC{#aY1dhDg) ziPYN%O(KrR!j&baSUc*m@e;--Yth)vH;4Ne@%uV(6_Osln7Jvy5;HvpGsB>fnt$fX)2APZSr4#wJH9^FLB1dhETrS zyg#^20GYum)4652V!iX?_$blv{NlKA^cg!QO)9P@DHxhFYT*>G4bErY4_*zsC1 zW|4olUdj$Q^5h;hS#h=-tw9MG*FDAw(lBuFbBG?;2*T-9yVKQ+QR6+}QUF`6IOF%l zmjf8m*)53>~X}GlZra$Yl=af!+dX8#{E>FG&M4ZER8ZT3owk79n=7B~SxZ8n!=I@qo z*Rk?YS9RzSfpW=c+asyp=UIA3OJw^;b}X(Y-tFFNLkE;#`h7C=quQ@KMe0QhN~8;q7g% z;Z-c_4q%zzG&tbYz29hAq4GfS4TY#8xuJOAcMQ`y@Be)GoZ6>f{htrN^S_!u)!>Ae zjjhAh<fiY^BhY#99A#-9A52|ZGpffo# zP+3Gk(d29e+$clB13+`N$oSI zez3!6PmcVzTso^*u%pM0>kW#mjap!>p9zX^ztYS&XSho^MghCcCq}?VY=f4yb%Al1 z;JR{qvJ+2?bmnFb&~3Lg`m4s*u^9lUNy(nNRa)T%p?Kh>I&zB)mg@eeTp2K2&iCF9 zuE!6Qf?2Ms`=08snNVIos$GPV3t10_^#QiP=eg!}40}%4t^=_yM($8@AM#Ta8Q-ol+QW_KsLDs0eKpMSOi=Sxb_0UbI z17l^Xi-mH9$rombW=#Wgc37BFbfkThr#7Rj$Gmd9HU%jG!#ZAR5~WmNCT!w^7bp`e z^VHggg9pRA2#foh{X;>u>VRlit`{W2JtR~-csy%E2WFR>P)K4nJr7xpnuzoeaBV#v zbM!DaYy^CwN;1VI`e0d)JL~h^aelz#H+iC&muMvd;WlCqN=QZAP1H1k!7~#GTJi2W z*%zQ%v1KHJ)%5fBwCJv`mGHLJBj6MKlYt@Eiv`lG2wP({o3jc{OIaTp#l(WUGh6I0HXs|v#t&mJc8R9DH$PE&O63qENL%d829BvMLM5-u~H(=9O$~oENZtay5r!lb# z%}5%#Mhp8P1SicI(BoGc$>FkHZTCmi2d}7E6&v@_K}x4CI-LoUSXu$h2&|#u3Y^I? z$-*)^q(cuN>ZB@1%V%QuLM_;(lY?~|kHRX>7`{Cat_YmC250D#FR}SV^1)nIvtl2C zg88ety1_{j3eE9QOKdR(j)Ek4str}teWGsHO#tQuiG)TNqv5Cule7#nf>C?h8hJ7m zZDp;F6X7An$u5ums-tE;baznyP6TX z0!s(GRlfqgOb1ua<8H#cg#^jVpJ`QN9l~`I)OAQ416LRRG;raM{}$%Fj~f3obuN$^ zuQ#bX33d9*kc@ye4lSy>*cA~Jt1k?C6$&-n;cihCB@@z)G_OOU+`^z~5#t^c!b z7qH1Lw1WD^Jq!Twt9S*usVAqy3`uCGI|O4Wk)}C5?f4h-;-o)EUYiAa7#7nnf7`D$ zkQiy2Lx={(I=4`K>Mu*}fQn}8u|Waxr{h|qPfY|qTA~jovBiRM+^q4RoQ+k{;^su4 zLL82FHy?X})FDPm-6Iy_ILY~fTe*N9&0pe%>b3Dl3eO`bBw|I|4 z=BzrZ=wf74{N4oDXFF2X6;4rq)G0>Jk{P`i0|Lc#KMuF0|@tU@Cy4B?mP^wZ@AWj*mE z`Tc4;4`{@@|MHceZzskCd&OrQAiH%>SU(+tZAy9-u^P{OY+6fG?3rD3*#k`Jcc2{*TW& zYd^He^^t`djlRe77@F8!;$D&zLobMEEU?uA^p_pBP?}k%a_GS%438_sS=0{9W;b{d z{_P&84(H#)48Nv;B3;-M_2efYI8&Q1@ud|BSXo;x6pdquB@*(KK*{z%tBt<;jz9kD zvp|(GeF5wiaTI#2cXQdsvlD#Ahg8EOAL8??hM*o&Shq zr}R>_(_4$qbIiPUSEa&eR7rKM zVjt}%InhJ@tZUqKY)z}1^==92Br|8U5<-z|pHxP}CsdM&2jKCeQ*|`j&L3d;qw?d6 zND*ZW@Yhsm&Dvu4+Q8%`o%d&m@Q|Dl2)&HM0++XQJO>YVl2kH&r(ufKS8@|dobdc} z+C22|`YRQ88--W2OC5}Y%`;r!JCn~*8$agC*e!-_$gFyf7mqY1_}dRSh(M{ax2s

    -RGFb{e48UY!cE=A{#{f0<6Sbf|)RAjn~VOgfLhv0T8k?WBer5k7u{y763+S8F$F zDb9Deo6T=;p;M^*%aH&*iRjIUk1?xT!cJG^VyKvyDrx zB@;2l95@0)bW38v4v3FaSucn1k32cxkQhO*aTw}wm5s$?B4ZYrm?WM}yus%VMiW9% z0f8lIVa0cE5;@b*RV~9f>GpA43P&+2f7`ghB|7d{AX?dEQWY=MV45FR{P43bw6!@o zl><4mwBA4(3oI>330}8Xs>B**ApL4qWfC?C?qrlGOmK|PS3eOx0qA680vX%ZeG*j! z+5{w=d#hcuf zg^-_G`%!S)emQ0yAe&=`Q7~aqS+Bov{zVUW^Q6-B5rU!%vLW^-5-EQqfk>n!7iuz^ z0xrox7>htfp49;NH!d6^kS!$7T~|1nPk=1*Vc>2kK9|WBHQsVLq6mvebk;@E)rDid+F+xNM+b2x6$~&?YwWf zDlIwHP!yryRAuUI5{ly~kfPfoIzq%6f(0(&ENQmiZQiq);~kOX5$9A1{IEhsK_4?f z0c%EQS8?W#5ur_b8Yj*?d5I1=#R7Te;aQk~g6;q-6bpS2Dw(0cRd&Ld@NSG4iBz=) z1k_avAB1PH3AhRkmBBRtRfqI`k8;R4Khq?tedHm?&@0k}Q97Og`J3zzha=Mg8dhxbR}m`wB&yn+~VSRD*hCC4G5E0B}P)R_{|Fu?$V zu3lv)Z3)C0mk=XzjTz?{Rsa$cWl%G5ft}E6<5TV4jeCuypGF&l7^aDX(`pfO$+8U1 z=WY*oJTN?0Vq6SbSDSEB$J1)%&Vzfsh)5jGH@tm!j{uoJYlhbi1vnQ)y+>ekKH~JW zJT-3i1V);@PrOajy42DqMzJix;J4I+);PiJp_A>!iJay%E&xY?jrojQibc-6&QTT? zad^78Bg$^qZ#qq87fd%%LF(J)ih6JeDXz~Ar!1f!A|+FolX#Gb=%tD1<-*_Q5(CI~ z3d-{wcvAWteiup@JWQ>(%2q?Lw92ye4cZR&$4GdfwZ1J|oRUhDkgtN16r?$C`8l zW%QDlX>E{mIvpi22`{B{y}dnSC}+^7Rf8)0IgMRH?DY%Bx+4TR=UfhzWVjwx;+A2c zDR{OaVvdx($EV=Vyd;s6CJyPqF56iwUfKszDy9q&R%Fr(Ivq0o0EPjwe_qL6rqD2~>!y8bo6jRYQkuQbJW^ufx|OwC~C)%VKr%E9gi=I5K0ATQsMx&-<#ER zhV!x;%7D=m5_C=4+D0sO3mb*VnV|m(aDi5{FAl5YIU`huLsEmtgn`c{FHNPPviSj* z^5k87O7pBPynwA&7`*e-=bvI0X`4KSp#jhD6V*bm0PTWHw4KAL`qGAcrwVxnkO-X; zB1~3A_z&jzm7oY2;lj0`8B;Q`qf%1?vY!zT<7)PT@RbhN#oItg{0s3f~u_Z4IyT|Ne=?& z&aWkjKnx)77qy#*2J+<3SQ%J{^@Cj1lyszCp87wv)%7yw?$k{ z1VESn!0VVQ%2CE;@>FEWK% z>A(GNyDXLM7+z@7z|VHtL6Ocs?7zb1By^&Q@t-7*`y(!I^Bkgmi_^8A2j?5c`I?U} zIoDK#Rmu2tBNYeyctW$(D_m;NK3b~ulS0{!NPO?B)$JU9?(6gACXg>lJ+g3D4>X9C z0T31Md{uu+2rTjRW>we*$ej9FDahp5C0eLXAU~?Sp2qV;bILK~#l$#R30dHT1qCu> z9q=7=}2LF$?m0lqa^N)~3XVM`hV z9m*9&yYZsI!=%A=EwP^+xJ;#)nQG3VOGfuFcC;d2;^BM9|Gl2>Q#U-p%SXvU1MvlK zeA6?#s8!V*-dH=G#)%9dfTT&}adnaf+|Z(zyK`$|@kMQk&d;zIcdbo}mX3sHU|wp56ZQZ~xg63|;l{Mw@wq&&L(7hW4u>KpxtY zZ)PxL=7;&=$}NsEwY|*|MA4J1v!NE5%1jJ&&ti#FAVAxX*LJ(3D8!wThuYcl2x@T$ z@>H9e3~b!E7>|L(<+_cH09Vlt^dv!~9|)}eG+{sDVG^HmLtX*u83QW+3>yhW^yk@3 z=xC4KPzapln^&0D_3QKg1%o^*Ci(XYyX)giqo2pmm$CZpm$bRsgRtFSM-PB>r&#^* zt>r~nD3d%1={V6fh@GC!J%}KO*Ju?ml00(IdJ9i$Cz<*#?h$qkN)VmZ)p5H%QNSc# z;V%bOD-`;w;n&Z`;+1_1_2b^Pc3o9Sv%psFd2ldR%hyzRQ0%+ion);!_7<82@25n7 z;J$kPJBiP5g6;2RT%o@yw5+)vwz{0g3LIaI69;vWzjRW4|8+!jGda&g@4)@F3Q%?=?5N`5X zVa7N$D}5oki!kucIMQ|E2_*a2;l~h9w;E@r;PftJ;3H4UguFTiCI%uWXWu?tTYurb_$iVxlAZ71?IA za%IEd3pQ1E=lk514%9l<;v|TZA_X817$8uZe>IaRbHg$SrY-MftRz+O4$m?rQAMl# zm`;Em@CYN6e0F+|%j$V~QDR6X=yNduSsn~Qe*5UY3 z2dAbue#1>oX{+Y7+IX|S+t2PUF>~6O|HJ)ZcETH0k`C1wkop{ET>M&U3){9N1T2Kv zq!rtX35}_|C+@E9Z^pf9MXeX_MI-pHKBhvzN71^bb-?*ky1i! zxbhn9G7-TIy5BuF*KT8tg<3nCXlnr?Lcd%WF)2FIW6tZ!3Xsd2yV(uEys=DIih4WB z$w-)by*Gjmd;HmW#rLf=4 zb22n0a!|C46wQsW;1<;pDQ{$dfKZ14quH{_a4Aq2NQ`#{a6qa!VubLaIs}J*+#q3H zLb6;mv$`(4yEms)VUpO7niFELaN)Ofo-IG81cSICGh7h3=O4d3@3-s43wU#Pq#iSt zal3%(I?r2&OxB9-a7+V5jF1)jYo=AF;ph;TqGUf@>T33X6FG%YcIaA$09#aK>gXX5lyn|HA;E|q&?EVUse~4g8SHzW6{LqWgYI%KZXV^G{VmZl&CUYg8tu64Zw ziEw(z=4O7N*1$pD$_57fkMME5<#NURGEw*>mw@?jLaB@1S>;R)D8SK*TaO zCW>|4)JzJpl}2bI0U3^_&x`={ zpM+SHmJIC6{eIJwLST^@kcvx32~=!^lcOX+;dq&Z;DBiOhy*Dh^&A(3_;8vCC7lMX zSZaE@znqu*cg12NfKHd2RD?MUex9HB37#LIle9UKV>qUOG>_RIp#vWAeB<67t3rS+ zkC%RRFOhsO#PzoG9jm|Ju@D8UKNp{miAxMqlxl`i(?njX@Afd8FBWA|810=5ToNM` zmx_y~2qg7J*&>80)mwLdV`{_|l8nTrU*O2$Mf>ccBoWOuS-cw<0AN;k5sRY#D(y6j z-#Xpyj_F6H+JBJ+fA)#Y^3zWaTsJ)Zjn>aT!2q9rf=B!C&fMwQC$=>Be zcSl`F3$nPY#a=WHz2Dwt)J$0LY_s*)k>l_#$qaKM^`#$bGjK1e*gg*M$%<(L+9FHB z!czs|7QB^fSf<`bHYsQ>r-yReSq<~`2?h2vb5)_-@)V;H@?*cLyvUItv$2;Y*6H!~ z&F#9_sZw~X#F%VNN#gCBT?`8-p2PjgbkPIi(RR@XdM-SENbJFiXv~O?QRO!^O}rUu znsi~PrBNGgYD5FLbAv+sfQ}PC?W-JAY7%qyw|K>f*0cZx-*6IR-~9OX!vRa} zvuC&lj{nY(t^q00>Mxi`MvyxbzzNXWd0D`1s>_;9B=m`Y=R3z zNEKIbGAl+-`w9pya;~jL4yrwcr|L7aBc~NW$wUNk_z*ojx&yz%`KAAXp&)}j#6ulN zv;0-gbEn>df&5BT!>veq)U);z{3rI6E4^4iqt*fpYA-G*(=UFDxZPm{yNo6~o8d&* zNHIMO$n>T!{+>gG+ICck9{j9)81%OvK1)NwMp2Ssnk@}c%#%K1Liirq+r(fIHjftC zOX#4SKBHo8&HGZmf?2#T_$c%mB06F{u!k&AcqQ_p)C3}SjNr}O!_zNZ~jp%0{K%ykWYgz`iFlC+0|9iN>iVpLir@H zeMm2wScR?$lHeI|RP5z}h9}YQ(*afSg05K?`x>Q7G|`%9UeAL1zYW91O%)yI@I2kd z>cd{_m-GUsW`5E8fXMiYxP&6(B=Hd(@@6kbxgW!ecLZ=71|}a2{Zit0&JC$yDBkMI{BDL&|5X6w{Nc$ccf~8!|419AkvA-Hz#XC z9#4egB-6=}d z`iP8<;2}L32LsxuOrg8THt5*4tcrgqh;19s_yj7TuIHC!7cx3qNJt8>Ss)bu8k~LJ zfhs&zUf^zG3*)%nT~?@k7E@~4^Z>runyABHaEmS$V($XzzhnHsr;bM z{236b=SH?>Pq{s#G&De$_Ez=UQ#D;Obd{QAeg$Np zQecI?;#edv>~@;bHY4OY+MO~xYb~}=A1<c32(579@xrR{gR1 z=v6BH6(DW#(Cz84$6js|W4t|)Dd`25nl9P;G8AwQwzva7(q<&AFk|B%1RQZ%A4nD5 z_wWmOaFa+$=(9iX>B(@cQSXsJSIGbZD2F=JiB0&nq+4w6i{vrWw*WmZmErH?6NC@g ztxFu29i;H_=D_>c@E0o*|J<69rH^(hR1*l7)2e%?G7gVxDG3OGo<7r1mP0EQsNbHC>$BppdsWv%1T96=0q~i zVwdjJE^TEnJ53DB0p6w4hAu#ES5aN^Zcq(wjMggO%xVL+6M(-VS?+NVL`6p!zNRko zL-2e^F$R++gQ%DgV&S_pCs&L>s7S&%%|I2rv-W}J%(??1xT!=gt5E=kl^gjF0ihn5Y5fu9IBduDFJkbwmyQW)FFCRO#gaZi({XdPNj@K=@*WGM3N{g)#cWVlSz% z(a^v5Uvxrzq=Oyz9yh4UdW9orCPq9SX<&S^;{3Na<2;%*ff2o@A8A5F>-2tmvmXwh zU|#Svb2;X|IXt76Ce*QeB`;esHx`6N2q3^?>*u@C*VUmYw%AoTr`k zIOr`TnHnkmfECi9nVimwT0kdcS>br_dN_Oq_7UCbb|99yVJw7kj605mZr6B;)Ly)V zaZ9-foB8hULP7qtfDntQGu8rYcJTRcNYnOpGVxKPX|`>N0YwYA+Nd`ugr8wTx=fzX zslZw<_&Rn*%d21^3837RW{^S~w`N%CR=k!Bg4*@8=GguX5zS!4Rz1>CW=x+f+@cEt zS!;X57;)-90Le52Kvvk2S+o=9l&C&1-mq7oq|n&UAhwWZ;#6Eb%xvgxJuzgh_h=nD z;TPbaahSSA#zhw_sbBmpaRf+w9Hs2cj+sOjkbOz7q6anxs-%V_9L~{fH@=YE>qw)c zYz)c0w>69Xk>gN_0(Okc-5s643uKN*8{$Q1M0E^Mv*CDwbEo-Hx~5>SfKwyR1GnZL zH%81wc5Qrk$WtpAKQv~eI=e0QaYYB9reSUynwie_d zl>BYaFfX|P>=_#*rz&0=>vuw$Omh_K03Kox%EgQDHbJNMLS>D$4Rw%Xk?RyMj7jgz zIM#LrJG6{?3d-UWf`fjocmPQ3D^|SZ8KvoS*=S8eY+$fvH=F&9J?iM6Q^4TSJ{WE!V5Wdf7t7c-TSguzFyxL)yI?w# zHM_@$8D9c9&$ox`taQ}bmYtT%;1dMYYbYtcH^o0K_uI-7KYW74zu^{)p0@n^S9msH zzd$V*SysdPXSn^-Wp#XyE6vD@eD(~^j}(-AEjgKP!6K=1t#8vfEF47x@GGnpY6Tie zku*uTS5X>eE*3MPVo`=Pz&-8ONchb|Xa9a#FWyk`iWj>x{im0Xs`23f(B{a}Cz@Ib z4oRGuD;y3x0u-K)Gb<&GYMO`vQy;mSmO9uAis<<JMbsVvE2q&7gK_JAHEX#3&koWw<-poR+UIp_yX9R*n(r8Ud6nf)(4hgksJtW()=@W{0gh{2SWVH~I2gBtgJvJr;o=D&$Oc>oqn0YHF*NOir zn*3lM438%Y>J-yolY5!Wi>LLEGN4Vx3<%jN7mHj5tEZR&oYRu5drvno1p?gXWTt(l^!D0wI%Mxah`5|Y7u_FN3jG+fsD~AP=el$F8BOefjL;((+Z(p zyH7+%3IK$9SfSN+j<5h?KQWcnB6m68kDEp<0^Od083OBFI-Jm5LAxiWK)aJn3_|-5 z**>nYbC1FIQ7|WI0A`Xk!l1ee} z(oOp0hsB|bf}Cv;TbR)rouhL-Y^)?RWb>$iM{lnU(a@7RpXWGDLCFxnm@!py+}fnd zy93l%)=<~CxO#${uLk=V5^ax3AzJtWI^W3x2pQ+@J|q~Z#lRCWuK^x+*`@Rn^d!BH z0-mW7L3V=vDByL>m0J^OFWod?Kt}StR7s>M3^GFpoye1+K?j%=MxDs3(Suf)7e<`U z!_kA5ObwR&|0nNleB`=~e9?c!zyp#Pus5-D_u{@m5J8`bu#%UBuD$dzh4zuWbyOxbdPNBK47!foFy!atJxB$FX$A+y9M5z+gSZ`E5Gy__MQNv4V z0UQJQ%h==1(pR(g0s;fMo?U%7xZ+Zq?dD5dOFew}($m&ov7rKq2fTy!Wdwo#oP>;Wt9_ zu)Q=+e;`c6!niF~xX0el7KUV6sg0TCX#v~|BzP+}7FxYTGMK-hU5EJE(!)Y^^!ON} zX)5Lv#(S%tBWG#(=e4bwFHfpcV)}y%P~Z#lE+5Eeu6Xg_g8yTs`3qVc9$b9?+Y9{f zD-Gm{ARwF2L>TTx*w?ocOc>rPz$b?L+d&;>6LfzbK|=nD6R^lO{o+X zZ^LO<+z7~I(3kG$ifd`UGiLadKKVSFe1A-zyGGk10jn~F1mfTSF$PmQs~sIWTY~$} zG@EEx(r7AaibNFFax3ik{BFC#Nu?`j#lK2fC)R9CZ#Hc4@a$|NtM2x5IPs|0GDpS+ zoUXYmB@?Kc;6G+Fe7i&jh%TNGEY*1JNaa*%j%OMZLuuz}ELFmfLJ!%SNPEwK65}Rr&f9QQ_zbF~)H!|kRn}h;waR-EF!0RnS9Txvm zv%eyY@=C-nJJd`4a7wntHfvR`d<}wu?s1-(f@lBpvTyjKt z1q(rDV|uEkRES5TIhW9qc@L^kUE}zIL;?gfBnR@!-j@%ZNjsGk_#X8i!lDCtWN2Dk zJl4*|?SS2U`5mxXX2u~v5N*|w?9OBt7Ey;jiyNJvgvzRR(PR|=q)w3{Ak)q#rsbGK z`+*2&qk;j_K$dd$lrW^zX98truLNEr7r;k3g&qZ1=OQR6bbi_}LR7>_^r-+|N+Fu* zd-;`asT{6U4Xm;y;6~mZv=idKcJJZclz^tX38nH_{(H5{p8iRU&5sDmVonMA)H|1P zoCV-2RXeK!s5l`*yqW;JuV!`(+KN%&^Py7~d=|ga=Y^1?ZQ3kN@De9JsKQ79im++aVvgI+5G8*|45A$Ia^Sn}A=Q6=j(hGD*X9so zA$G{>!|Kidl8VR}E-kEFf=)pJ7x9((xMK!mM@hGI58VLcmlh}h zx=^K8+i@Hx7#ODEJE5{R;07$gSA?l*fQPQ!idSgPjL;adA5zqCweu z*J$WZVXx<_q2ub)R(Px3rtk?>(-wHBU}Bd^&3%Q#Q6ib*`%iTlVi8pLl2`);44A*T zJ+ku=rUSWjKuU-hI|4n5)}fLh805a)ctcf!Tx0USyTfFxo{Z9U=sIx%WH56MV=CE* z?Jl8={FHva@(XnX3oyGxJ;Yiy66!dQ#S8#)4({)mzhChG|D1yORmDC2&0b@t!PqRdfV}%9PQoY=9#WNwLW=EtjQB1#uPy6GZ`T+iy|m|@7@IJB3`v$i zu9(cI?FgV2Gx*qUVxIBq(1LDldDPQ$w3LoKPi!e@?!k7#wJZ%-oweC$g*e8O&$Y=d z1*rnNIF-zzHvPyE7d>NtAyJ16a{PJo3jkne(aP5o^)XKGJOjY zgh@kea9V~v+7Bw~F$T^rvW>W_N3fgNHe#tm0jhDiF66;HW1uO6o$QBALym{P!PUYe zcP|wdX)ph^{mh^KARs|FPc;vPjND(!KCU!u0fSo}(KN~&7r3}tIp)PnQ~58>n>Nd6 zpcZC=+`rILd$d1nT)_)9vMp^};6e2_wIpzmEpD;h8|4Wgz)4 zqX5Gze-{ye+^%q`+eCUBX6B7yX6q%R$$u{{s-{qy$$w4rr>jmK54Z4m#C{5R`7d8G zjL6EvkWM4jc}cv^uZ#jh{(Esz_rKnBH{E;R_(bzV#)jY3($PCYHcAW%H~MIROd-4& zM-E(mIuUvma~!k`%|h@~n_+&7o6=`fC2y3&*@6a({t%HMrd*&%A!=<_I@8C@uG!{< z5KgkrDTo%!9Q6vUa?aZc+qanHq(@AeRKvqAkV-x}wkB*GD|Em?`Qf^MKdH;Uo6^JE z!EuDDMlhT#H61g6VUH2x7dFP8J0y+RJy;5wJ@!B2(;*<-{PjGH_L0S*Pk=%zi7`OU zU<;NMryfO@*J!S3VP_C*6o3Jsnj+JBxiUT6UfYU^X;JTUO!n?+uYiI)R1jCSq#*(F zCq3c?oshpj_tE!f?ij_Te>*@-1{d<@iS~wwCFJ_ zu2!$Nf}x26qb+!$FflL4Mc1J8BngDibJkGQbO6?Zpoh^cw=ox$ats}$kjyD4M7w=Fuwwh zTKmyz5|$#VW+L7h3`rUA;_%RKeRMaKkS)4!c;u3iN-Q!5>oiYl5f1ckWZ7c6DdENm z8vG;u3~ksyc11VG)hgr6Q$#m&q0UX><#BZ&?boPSaZ{uZT?xQ^#a9q*Cp&$~W=iME zSIxr4ArHV=-cSjt@Hh5T@>e+VOPBv(sFhU?`;%Xo6^z>_op=R6wImim0q1(RU{hqs z#GsIMA|@8>*KLq9Qe0x}7)lp3rhkd%I*x1^kYBFMvW*FbOwa>A#~p@I_c+BJFiSo& zsz4IRXH8DCsdMbP2e`UAIKfMBEJGYtt)$`4=69F>vRWXT0gq~AWRpvt2 zLTp1@h!2Pen#*r?`KC|(JM%)KUwItsQfa3={gaI| zr>KNx_1Z_yFmi>YJl$wPZveVikhB`yDqD7?VPBw&+b;geXxih@9L@?L?{IPNQwF*{c}i$1s@piZ zWs=Y;5L~@)+&w)b>a{Z=vope8yK5hm%Hs;=;9V4Q)AJI%yDlH^8RKHfr)hNkvcvWA zh(>tr4;%dipUk7?grcNz?@WL`8!PFC;?Q1 zoHz5)b48d6qVVR`1&mOf3QpI{qzQ48UBA2nTH5ySQ5CC-sizdHhI(0feu`vPK?(209}4F zOaBU{hqJ?nW*t#S-db$-^fPSc>+breD6FEl%-;L?&D~5#RvuX6qeCm|h}*|jxS<~Hu|E;@ z222^7pe^3gnB%U!#hfH86v`1k!Rqfsg<8x^!NQ>K2_6(TMxS=Ie=<5EhaeGyov8$> zB{RtoFLA|Gm=efQE;A#UchfL%Mv|0bX`Q$-MNeb<$*n=W|&1Up|9Tz}L7LqdU(v=qdaW&eAZEUD17>Q=(2r z`@L;Un9`)14EJZS0ndlvlv22uAYGG$RkVD7N%;+}#1%9FsdH)truE;7{T1}7yAH1b zqaZUYKwx|KVk=dqosB6ZjhVuzZeyD%cz_SaBXsw&@MSD*7*3_|M7-E zAp#(E6YaAdjlz}WT8|91UItR7_ZTGrz{L9nu^kTLkEudBQj`{3L#X0<3-F!^B|~Ij zoH#;!I`vT`HBq#CIHCfld`LX1<^WQKLu$rF`#n|$SN_xPN|gsmEK{3eDn}NCpGi; zbC=*I5EArgER-7vqC^DKzKJWb9qQlDaF-5i7t@(O!2HZ`5n{i6->-3aV7}||QA0U6 zoSQN+YKu7XfEbgm_GIwrH$d9F2ttS?M6lnmDj9Q~sLgvM>yA-8fvTrwSP}B9u-w~O zYw-kr^c9-(m7}KpV2=5OUuf~il&Dl zW&EsQW#pC6VoM#&8z9}^J=l)>DeiCTA%alC8Zki^zOG{A771x(R|)zv7+BMUQsxy= zNG^aBil!>Hi~IB6cm{d#gPBMSFDE|*a>?XVB|Q_1cb}GQNP3k6U!is)C1O)(Zq#VZ zr2G`b#i&ODa==^G9eY?N*8^>M-w`=o+{`Fj*e*V2=Z5B-J#1JydnX+0YaZckJ!YD? zu}=8*%cDLaboNvEoC$JC7J_C(m$*W~wHjyJD82XzS%Wy1v6`0i6$oOoUBNf!3e;V6 zI{*g^9(}-n^rD-}k)Uodv3S#8Dbg0^CCQ#L6=k4Klq^{Dw+8%N=SI2a2}HN2c1;or zg;0H{!A|UzD}3nr_J1!sy1Eq_xW9FHQNymN51i2AohDpL$NK-wzOPU)(myecEOA`# zWIj$}QnG{7cm3g(wZyFJyaCeFvwV2r4)=JV%61W@{75|QU~q8MUnXkA)3Lv=`n64` zrw^HdwE(ouQ8J1#IWJ-AV|8auG!-GXC?*80ibLz3I8@_LGizSV8_-jQ&G9QY_x}2WutH zA3FnSNAFO{PMgBBetqI2#m@{JJ~a#Xet$B*eBoL+Rg|Hky3{3%%&2DHX9PNdwC^Zw zUwHu(-=gQ7SViRzzj_D;@HcMU@t7SSGzty68|^VJ$YCjOr>={^p)jNl7+?r}7UtXt z+V$9@5Juen;B#-B&G8E?z1qf~%>+I&jiS3f9`!ZSp>dBnuz{HwPOJps;ZH6I;k%wv z7sB;EuRMeUa|O?eYdy@9!-);99HCl=-Gj!`svyM2@}zZ*eWz54@FVuPx?~w@ZA~FA zg5*88nBl??VUPA{_!3=d#1|72DbM;-Rh#g$RO#Qw3>Z!I28ouBQs~fwQCTr(fjKW- zrUli8>I`mLL6HU`L{{SP9m!#jP2h@JNg&yqMg?&@xQ$h6Ar{6MTCsEIZ>3?gXH_K}WxD?D$&3rl1}W^H4Y3POm8UN#%wT=~I-O3p+ScP>&Pu?kE@% zh4ub5>p%V!rx|k~8^DW7^4S;y^*J-MLWu;AL|iE$_54z(s#L0DxNXG;$UI~J zhB_HG0+6z%P=+9@%7xxf9$DTB1sXdC1qxD;1Su!nPcQEy9M!_w1K9x$lxTrAAEPyz zF25@`Fk{g%T;wKOgGVE)f&8Dw1UP{J{GX?dVeaZ%HmhN* zp`OO7%r$-U3A?x`l$yklQxOCO40cf^fh?AWq)I)3`F*3K^Z!BlSDKoGmP+)LP-A^>%B?4e#Mmp|nl ze~%;hBKBfQ&RCWTsT zfh*_v&?lNqhQQu97L9r!cx}^w92P+#q!b4T+P!*B@qO&_h{`!h@gBw#Pwy3N8t{Rn^BPSE=`k#EJMD3X9FIL zbEJ#bIVMMT)~|G-Rski6O;&9kpwdAF(9zp6FRKZQlB>)Pc3Hxn7w#8lZQ&G&V!-XP z8%oxsfzG{Q?Cl5Mi}Y7@i2{>shhz!RRGjs3Gm&47$`_gal509kG^l%D^EE3Khw!%(&{I>*#?h4m^?wP9goknPsx^pR+dvtee3de$nW z(lvR1*?a-lajW$nu6b%;oUU!#L}$}PCfEbW=+|+h@4;po=$|EdH(A!)aO3!YlH0P5 z+Q00jS&zoA_3o_4@T@De9!%~gWFaLE)`u=e>o5rH6Me>&HozOtG>>b)-`}cV3cks3A z{6wG1FZH>)W+dsBT1}Wf>sQ^>KF{gI;TjKmXtm-%H{u$@@TD2J%vjeyD;1yl$+H-i z;TRz($Oc)6O`DJ!ID!mM#N%Lo zL*Z;h38tnDQx@CHTP$*l@kU*W{JW%5MU$)vdK~&i!Z%*{TJ2r{0cLx_J zoE4;)1m0Ra|15zj`0BQHTas z&j#*&i(3b9@!)1j{l+p6H{D&tMDGd1P1Yy+U@VTSqK{efE1(alO0Ln!3}Cb47=!UQ zR6pAujl&&yy%u7&KT=D|mRdF-p)!+Wo%zlUF zGl~h?)VGU|wTp0Z0XObR2dGr)kbkn=Z7_r$SpqV3`w;ZT9aXzSHL?Z!oHH^(AF{y~ z+43?J^hg)?D&P9y^}c@>y(c)@V|&29eN}EWfpvRPDCFs}|m7|QF8OOoZ9%W5U`8++ z{MDv-M%)P@jql)((H=(BBub{$`3 z3T8VGMw$PtJC$-09GSk<1cR$F8<(7<`=q5O>^*%6%Jx5DDGK1YB}a_()Fml^cH+_$ zz?if|g*_)ORdMHuOP24BAaOGDiV5}|C#`v^Tl?ChJ55=GbiWC!i|*FG%IIE`RvX>1 zebw>3+E*V(gW5Lg#x298D6;|s1NIcf8;=LXtjLnpqCkai?z8Rd{|=W<_njkUZq)FU zDzevMAF;p5rb2!YnpUACYhArH&Kra(?2G;L+P-RWVb+K*@FrUK-~vwj7dY$1zwBoY zggm&=@sKa*s>g$i?|*xN|9$-aw_pDG``>;+j^2X{_WS<+k1x#X`{2U-_rEAkX;b&e z8BBKu=2)mE4vc_`sN2Xe0B>q1-5J1X#dU@~TXSB8A0ncsht%TrNbA~eJ(^PH)P6K1 zCc}7_$_ka+z7yrI{*#_E2H_vre})pRfSeHcRlUb!wyH5s^A1~eX~^%pOrrw%`%P}E zl1>rx9^1bNG6rOB_mTx$+tN6Y4QG75Er))CbC1k|=bJx4ao6_NBPV?x>}Y6PHyw>> ztHvY2Y~Rux=U54@kN_t?4;PDW7XP>LWNKRUSarZ{!R_7f z&2c3)jqC8ClFBL0I^qg=KRh}j#RiY|sKf10O<%DZ*K8ytlgp`)s%JG_K-8>K2FR!x za*i)!S3i#k+ZN6vWO1UIkX_u-ivSc{;twHR0)Q<%RUKM*s+yx_#3Q^;fOCiCqaZOP zBMPcpjof;sR!HLc`p?G2Dy4m@5qUiTo{5X`n9enFyW+5O%Q`Rtia0h2I`TuowO7X4K8AYK^Cr{`C@kms^YGogKeey0scZ^^VNIQiS~g42T-3KAN*44R-x5iF zQi~BZiMiD`gq(YraSS61sGv0&K-a!zncVm;n7au*?eS&7jRSksVp1ZX&l8mTPe>;S zI*xm#LGuaPuBVq;C6LD~!fdaz>#-l$X-`Gy-Ea+Q2pTf}J(htGG#~NTblWkH&9^<> zXA59xGKpH}A@ zyD05^^Wm0bZ;iR z?v5!_e$0N>y+e}B>=qS@R@h;w4Ja@Uew)#5g+OG!qOFB6bAUy!^FKJ~2ROMiJel`{ z2kk$Rd^mu^?eVbO-fb8Wk|JE(h2=SAcrD-*5Mi zb7oA>#GFS^)0YU1&0R&4z(^$>UNCdSiW+tUw=93Gq->A-MQ0k!G$*W$x3^WzNT!*U zS^a5-CkZ|=Q$%Adsv%EuSWabCI>4+W`hzOLk^{K8;WFd|jur$`u~Htk12Q5Vu+?Aw zsxg;}`&tyj1py&vlf;Nwn?~0No-$6T~HRqa3 z(hGI1@KC#DFUu2q`tEsQe78ujaSwa0eJ?TR_>!8Qva#L5SXmTJ2?ICqhBFVywE0(L zk(z`U^w!+YwmRV)qpv=G{qc_<|CgE5ZarHd?@7E9!EV1>2jb!ylXM*BHx?CVr<3*& z6Ep*EgqV04Xf^AH8TK{3OhyKz1HXtK%p3GTW~aojgsNVSD*fJ-vU>OXWvKcUBrp$k zYG`Z|BL*0(XqFPn!V&oE?ywL+a|SJgYYqH$zaPYeTOJaGa1q0FzH&;xPZ48A$80zYbe+%3KRZ5hGpeWa`J*Q;5EGQ@_2Uis=R#InQD-55Vn z9)jtd2%{>rx;}#=S4lhaN=`XD0T&O@gyNy-u502FpAeVj%-BZ z0v{LRGb?Eh7V^^hnq@pe8Y=~e%~cc3_13AQn_LE>LP++XnaR;lDJqZ$NXjW|mfHnYk_TIu$vQr?H(b^u`zWcPogbW>8oKg=p(L+++E}F4NHU}PTZ{S!}y|Jf*r_uf(=%gi=UD<)_d2g>vXS0M3a;^WeNYO?Zv7{{i9Ma+sH zveFXkVxwT%>oc-Sjg8w8;a>1>O)umXpq@@fvvLLpb2jaxY2!PjhOM|Vqamgw#c@D% zTme0Lsqjq1Ft3-V^UPs=R9 z@mI&OtXY^MMao_{elT@Ijhg~;%#4_%7uvWUyV((`H=6T=&l{u1mxy0qZQs|N%EAW3 z^dC(B843~Xj&V5LZMJPI5@vtUD3#<{a=kYZA~r)hfxnE(oBC{n;sg}!ha>8G-K@4( z@q49~9^^nimG}$;%qC?WH)+GdDUgjvY25_l$fIy(8-L?`=UtC#CH(Do58mGHw|A65 z^7+T#J-}px(LNUv1YZf+%E49ygJYh#$Y`$JGun_EIaO;%j245;Wpn31mLsjX);OJE z>R2Qkbw0*8sEnT+9Fz(9C6l@HG6p}4@p?F17Ap8%K79GuY>Bbyytp986A!;D!$E+P zMtTn|Zs(42hZoybxTN5#t#-%a=l6UO%w%iMU^9aw#4a#w>nUc5MWrN*@f(uf%QS4nJFd7S z>Nj^8aXxNhAfiw9J4f>o9rjS%^clQ1{uaKK(2I+!?NYXE%D8$CUR>Ow0KPk3R_Rc~ zeAmw?x{vJY*iHVd z`gpr?8C4c2_BB@fXowpi#ld6y>lGDBG|HJmHKEUE`|bKty9c)Gu<3U@XrQ+|Bx;x; zq(_eY_%f~0;6M8_DEi&^0#+3Hgv8CZdsrKmJ39s_o=>J=-FSF8dyE6mo9^{dHh57D|KFKvRsd3^v^kcJ_Qud3GuqNCrG%jgofj0ls|@D)Q{teqTbTb6s&B0; z(Pg=vsV{YquU5;)AQBF>oSjbX20@#hKEQXhjZ3C#@jeM|KZJDm_RunlNc;@p>@9H> z(P8L2`H3IiZWZ-dXLy4)8?%fij_sR;@>fy3F~IKk5MqAUDpDKIE}D~rIl;_>8xzKa zEGitVFlMj|(3oCfJV9eaXHQl2tpuRs%hVk@G@K4!H66_!3bdvnI z>=*&cUTfc%$ErhhQ)NvqnNhu;iqJ{{JT*d5*H|r5ZfM){+c(e4svdS6kTJT!rc?Q? zkWUnZGM|bJQ&bVpoJN#7Y{oNh%7QI#-~X%yA?m(jiFD_660;Hz-prYl?8qZ9JX1CtZBc zMoud@U4dB5WMwo?q9Gc@nh;ehifPLq1%pg?dp$MAHPf<8uuS9WxNtOBoJosLphEE| z{qSKHzm+r@wtda)gQIL8IP%LGX@2e= zJ4thGNUt^IgNtA!Qs90FB_Tfzz?9nPwqI2B*6HsEX01X%?O2u{VM8*x)0kX3=+v;T z#AZIOL(}Zz)*_LfbB_4nalsJkf&EJeiWC|7HUr~|EX-9~OW~^4F5pB`*eduk=qqGE zw+$+`mPkwp}x0ZV|Rm3J!*ZQKt)c(4|K#zvBqOWQ~fuhG;BxX|QcoShAcc%~_r zJVjsS7KvRyYy%Vl^BS?f;2XoiQ4~e4a z+k;hC2g)}%fbLCpo0BYp1=Y83q_vMJ+7}FM+;BaAFC)8Eib&S&*ZS}I@vuc?0M5kV zkHl%pG@AY1j=ArsXw4I-&)CoyrD9k8Pef;;ulY+BOzR(~4RJgaH5Goi@A_!SV3>ss z6yMo$wIs4WA>tBe2Hl>@EaDEy#RU$%Zl7mV{7maa&p(cV!0``KE9Pt2nI>Qm zgrHxIG|9P8SverSz~vJ_n=# zVb8zn^EY8FYIJnbF}m~6LP=pl2{;(iNS;6l{s=5gzmKri-CN|LJeQYs%wifL20aWA z^V_!=HO(-=!}S*4o9=)AM`APUJQlSKPN&)_75*FYB6a^eb%z(EM z;q2tlGelatf^od@a-8ArcshZ;&gNH9j;7IT^W$Q^xW#R-_d68mwmJctc|%DjNxF@* zhbfR%k7N&btYAgN-=lJXY&(Xe$S&ySlSbUHyi3DsV3Cc7K|u1lH+zi?Z0u^`wc4&? zYsqCGvS-`l<5s*NwYnJM@rGN#1(;~++{iN@p0L5sxbn5wZhz?M1XWoYP||2G0;5I5Z;IL zL<+FbAb=%v%^7Nu1_Rt$4MXQtWWae-WVQ1uBfzoyM!mHe-B!0SnQjS+B0Z7Xi0rt% zVg81^pes;ja>3t%V;iOguSzb8H|krafzpvcn{4%x01%yXx+Wx9^|)Dx1x>6lAkuvw z4Gy1{+cnOK_@i8>z}ErAY4<8$1D|dW2Q1F34|%#K$fUW%_KeOg{QndLO&M3h&6ROA zSUtF~D1Bk@d4RN??dl7`#Quq_rVf?MTn*U&3dEKWV?u}5gM~;qTIHMoN{J;0^mm2{ zUzq=V&I6K4nv1V6tgfN|4OW~zP4|;@HvgsWcY7d6GmqLNbW*o_Z-ZiwHExC?5Q|dT@tonMwe!d z|EnqN@!a`gz&BC2f)paBN4#^HK>lc0G&wLiWPbG|jvE=bU@k0!!#AAnKcGfq{EmMGM7;e?P_ zrWU}?QOlT!kX%70AT)}IQ<^3LQmymy(TKc)bB4euDD9FnDlrObR&=IMF~_JZlqLy! zzEl``(`_X*RfKQ(RJr{ANG14*fU~K=6a&you=9Y_Wa}8)*oC(dK!A)* zD@D{m3F@Mo;TVKFEnCL>mUYP}>)q?u17g~gP{C}zOX0jmv00A zK)DILilK>JbuhMEf{BWhgu}R-7@uFrt~u?PAQ$(N`O+1~+12qHNkUfY2qSPds%wHT zwiQ5Yq%#Fm3=x7&5@N!tu1d&BB0F+8`^D_XBZ@y_lV|RcM0T3??`TR%D@1#@EK+xJ zP-eUvk2=A1+-{aZECTI~;~X`Oj0q+T(K!ZNJA5UL` zeuIaS`RRfe^Y{GUOXQ?34*XA)_%*++>~Az0{YD%_oNZ?I^|7Rx`KMl48wnDh>Ytxk zsu*AXv%s1EOuTtRh%Y`1y!p=}cm6Y(JU!WP(#*g3%+H(gksZO|MR!dv2T5E~l&3vU z7&M*7q*Rx$1Rx?9s2yb01bxmMz}EZHPLJ0tdROcQsiJB$+uo^|xt;|y^rqGdr8NSk zix&s;YvU*n^j7_Vvzf)AKe)SVLKE}NAtfenKfn9`yDmBsc>2o<^*>u3-%vHvd)LRq zEjfBx1cjOf5u~L!S_!C93C@H_sa!~in?>?_JO9e|OiHao-=IYV!KxbBf%%=iuggZn zFJOS9D*?p7ydu(KoeD(-?$`hNzb%FyjVXAczsAf1nT*K}!R%Fs?A}_gM;@w>-gzCj za|MlZxSn%mJN#!H@%1o+d&XE; zHfwm|Wu8F`A7T-)sG3@d zA!pFyG4i_hTWo)gW0sm30ri3ot+iHHns%ETS9P*5E<^fuz$WM=k~gSuQG@_#E>W=1 z|2r--uf0hkahC3+tIKG)3F!cG>8wts0XgR%kPx=rqX*O`9Yj zL=v`1WSegE{p|;_$?}y5aEGsC^UZa?5CCcu?N{@iAlWEm@Pzp$uR+sx!jnlD#r_1M zSqVo{NcufQ0=rgAVGByKpfaiZv{UB2D*=tD0XUDy;OW^!BcT)$0=#lmtf_R^qUJU# zp0PE}3E1!f1x(K{EV#Lii<~zfaF=I5o&%)(@(gSa+apo}^h_Is@~~ABk`ssH<}_)i zGg7K)4yden14b)kut`6dNA{nM=sOqM#0mvD(mF}Jn)zHME3RvVz^MMK1f?2AAAv_@ za_$438iv%%CqWTmf{G9gI19y0zk9*Yg507ufjUHzeK?Se*x=inQ*Ga&K@1ih&EU)S`kG93F#Z++OkJFmRDc#)XTs@&NjImCmJEo^x^RkcrBF+g>DJ$D zI)uP>^WNNIG?Vpo#}yKg81Vh42z>))jW@COGrENyERhUp_2(KGj@O&k%%wPjF%aLvm&+4NX6A}Mdl`=qt zCgM{WCgiap))dqrg^a4tt0gMVSqx{hDQljFpVhmfj1Z;FQ(LC(;bS&g%L$WT!a!lhE zeq{>a_)8d|s;W)ss38qP8p&64DKC_==C1HXSyR1$I*XpbxVRwCM=!coA_}wF_yv|t zOrhBxiLtKUSFItek&8+=ED66Pu=#~LbOYu4VXVBb)sCl zk1iRN96c6x=i05hZs&V@jme$XZq~c6)dd){Wcn_*+q7`>dW}8Wfe*#}ioE3tQA4yyr7}j^^2kc$9Ofno3Eq*A5;4mB8!hrh>19xD|9Fm@X5t9 zJVz(7?pHyoKTZ;4XoK4s_*v6emon}@<3`slT+UpnN%Ipb4)1RFxbGFxb+_-|75bT< z3jNMkCnm-ub^0GqkjYB@Kb|5jrscmS5$@T*{c+M-@ZXYRZ433~H!ok;cCPAznRQ%f zt=fcJNH_s>cPryXG_E-Y3mt%Su9*4B?_OXyM(aYDZi&yIdU(`=y^D)>Xv(vBNk|cpR8N>eWcZp5b!T)hee*Aaks_$ zAn_hsBK2k$qep9G^lPw4W`A?5Wb`YY|H8p1`O5!-BR`x7czQ?g8194gMY=LhKOjE_2OIt;-Vng;C7%VEne^Z&=-~FsPUHq@ z!<<6+63#RJ>HT{X$D~#i&7H0LtB79`fKZ-^8ys9l660~5j*Z!>AK)yy?F9`*{ct=x zLswiBUj*GHltaH$`olbo)9UWn8qmRkZ54{yNcRHCfVTc6hj*5c!bkIx0kc+5*c+7C zl$`C0w;5g%10a!_4i{$q84)2zs;oOdBO<90JbUoKPLj??77||?S1DrIuYyX1gwLgj z)*2#M^ZHyci;V=K0?UtAJ%WzxLLk%MS}J#jNiPeLnapg=@Jb7p-s4CZ&%s2ZLYRdY zEAECRUvO{(>3F&!2;Bn6KwNHZi3*FVRex>`QP`XM70R^YBPIMwJv6)i<14Dp(#dwX z?e_Qat-FMbbNHHOZ4m<$(hXMNG2a50&}fMmX!y+1Gia*f*a7j-{skU`EYFvnk4hI) z{6NOil&bVJ;cpGSet{WWB42Q%k$v>y~-x zrT)fLSSA?DLxWA#VG@h%En=1+=zzB$#~W6DnG| zIMKzMqMFd~XU2#t1Jx)b=fY0JBHGB*EFhX0 z|1+6bDCrBHCH7gY-w`X?Q!X>+9nl&3uazS2*LD7q6UOa6GW==GW$9lTCV$&F?yl&(5YDeg#oHe9ov(p8{I?!KE> zU+PV?fv@%9xS8f;{W6N5#2GQ}VAcJ|=1XzJwV))MVt4mrzPnI`XF(*vKN5QUH<-h) zUHpKs!F;jk+%v&xVw-72l$YOFC#3Uoi6F`Kc1DlMSRzO}CbmDLgOTB;qo5E(Qg3sg z3k`QQS19^oaWmcx%tSLbEBN+DIldKSW-`o5V5^=dqGEXmy=8~>p1IkJ`*5ay97Gr!FGHzd!^^7In1%LRl zC~vK<=8GSY=$+-1frtD>F(N{PsYqfPaOto4#9yXttL<5-fG$8@W)L5Gw#wLjY3YfR zkv%eb76w+zneiwr04L#@en2S}1N0RyDWWVOseAdCV}Nna39-B-;?G86|iY zG!0l2pic(hCXSBrEPaVg@eDpkSUJs#xuHPO76dXbQkkb(MZh6zvN9OERh2ZB7`_+e zwTF~5r#i^TFfFINYr(@DR zMYJJqsfjDuH*6MWR|twp=2gWG1PnOLa0GW+$6$G>j5ofzpap=@@tm`b5_)PGK=FQ07p%!xNS^ISQp{;GUb6 z-&%{r45y0+ur^Od&UPk+5Nf37nhao;DLa4|1V5u74^h!Qfs?Psopis%dnw2D_Yh+{ zBzfY$S)t@fXyEr$bwPcip>1Dy-Cy6jH=w*h#CN(L4R+aYst?j6Q0i5-%tR9mJ89I# z{=*K%$me7}=iPvc12+r0ddA-a{t#$+%hugAflit0h#p^i^T>agClzJwjPqk-b4@t? zB4ZW_I>p$Su# zOG=(ZW{|)2D)w$Y*Y6bP1aJ)Y)mC0r^8(o@#k>W|tDTVnz@|J8wN=V!Xwr1XR}kPW zAXfvuX9!5ocE>BcEJ$-P{*%YmwNnNFbnqR<5LCAWJ=FW8fJY_9U1&3gqJt2TrimD- zI1yV0WFREnmA~Uj;RaU(F2lrD)9tc746AeI#asWmb^e~mr&16PV=VKc2w9;YtCQo( z&OI#2kSeo#Rw0-cukrp1wk`3(ADVbI0`3Ij5zd4+bjv8pjh+Ox$CZNwC>U@Krlv@u zg(@cLH$5Ja7kY`LN z{URArC*`&H>Eqn?G8}LRR;U@R^ZYm_j@d`WS|Z*HHNopZ2pM=10l{QH(8vvaa1*e!LTCE@-^Zr3AZW!;t8Yl3iXpwB!((?#Jv4YJUP{C)nDxq zyP;*9A5dD)|I^J!0$A2jPMY?cQd2lqi?y5ppAz!{fS&6r?e!8$*O<#93|NctqVFGP=7Ol_$w|^+@-;QRdd4!X_=K@;aY&XxTrZrvg z&kQXTw?Y}9Oal%aucMQ-WICqHEG@EvgpZjnw4&gU=kUM(S5~CVPl~dTU|iPj=a40@ zAyCV$ee=bltf3<^Xu$*%0i+~2m_m;LHHR22iLxQaQ)rZr_T?gte!)QM#kHw+h3nRp zWh4JvteKzm6uzlAr4Q_4{@9C$GGCxV5?TB;vMNFH*Tt~} zy}mnKXQRZww9Mx*{qI1{b3}SV-}iY6{Th{`faA`3$J{oxo==bv7rXcElH1V&a*zoQFz z&Ght>Je8hP_rT#))k%Y80EFbrZoNBv_|hs9Sdr{^!E8P$Q0e08_~C(U){0{Vry98t z-T6lD$7w^UqmCS~v!?<8-bYMENYzM@e3m^jsm?vIaOnU)EXij=rJT;F7!XXA>v)CF z(b>gdKKhIiu-=vg2yGNWtSKd75Rk=Uox$}NJ>v=G^N05+Ld)7KPo!ZEa@m73zWxNk zwy$MzZ9m%_%_7ss=8KP)MoCpU6Hm}{wlm>pib9Uol#6GM(N703?c_9>f<1L>rLb+D zPLD*>Fl&s$g`>ML3DuIWZKS~@^Y-7xF+kkUI-l0soF&fu1-@f9UpLGJ6!w*crjgVPp zkBBr69NxIf5Oy7gJlo5heig^JHiC~0=CWd3lJuEy(cL>(b_S_N8_E}vQ$%3Ad;rP0 zTb?*k7G0W=If)6oqa%qQA~R~@WryQ}L5F#5Q5m7Yz9T-EZHBuV7A59n$a?M(cSI@y z*Q!s5^jn-0*BS)LZgUMCtk5OBGE>AD@d04c?Oq3ygYLr7d2Vpq#T=t24GNQzaS8|O z2^dV$b{Y7%K50-G2eejMofCUSae!>tBmoIb4Vy`hXfKj$5r$Hd7KO=F40l%Cyi=Y- zqcDi?WE3(%4iglro&q)^YDI-k(iY$8UeV9QGIE5G49(=X0|;GTSkJN zw(eNZNXT?JF(bi3;wdJ(jY-oUPijEz`Pnrd*rr<4o!mv0y%KIgA#2i>V7Hg2R(q~5 zX(5N`5y3CFtNmkNlC4l7$pkK5?YM#^aou>zDS%}MAv?NToQ#AX0z!bt9k`C0#f5$~ zui3vr@gI!O56~>P#-qiLoS=@sO(#eVs#tCBmdBkbZXlDVg0lU=JOUQnP%8{CVY1@* zs?OYbgBr}L(?yNYp}V2{AYcq-eqFn$YGvq|5q}IhS)JFa?M}PqeGf1@RxC(Xtnh>h)uoT;xeCz zatlJ2UNvbZF61*!;Gf=Ts)B8M*5^x^_IdIIN~@I_*< zAftQHTnsQr{~|E7Xatt9rv#HKJ6Jw8f>ul{0gWG7q;^mG0pwz1SF5Ac=B?~V!PTrUF2Iv#C`5I5g3FCX z;3&;zfAj;CaCOjL9pK(6VmnkbG-Y!zqj!||NTzL|2#-?4m%+6{DYJ&?Vt#FywptKK zY20j^ak&RM`OAKL+!d)3)4jw&1I5-|Zed^*P?5Zo&^cN5^=cIh{$Ek*VnyXHiX>}g z-pkd!z+hT6BO|tm1l>QNnpkXTxGteezw_S%8QHXgQY%}20UMqrk78_4iw(mBf-g!n&+kSy%@wM@#ule0x$168G4H zckZh~fOiiTsH@M%Te!HAe-&As>jux_R}d-B;kTOhA>qoWIQFX4-vV@Ynf%dB1bg ze$#zm2+M(Y&x5_^$uwsTo*B!=2u89QO-lGAMhxu zgpkg~?3H;G-Z1Mdyv)PL_r!KGIo?RwNtWy&D<|2JbID6qL1b-gOy@i|qsd;bMX_qS zxZz`z(dtkFoL;O~^D5E6xX@&!nn#$RS_Zm#mnzWfIy$+RREkR>j}fbH75+2SuqSkl{fUE4S5{)c7HV4saVj*qNVUV;mL} zgw6M1f%8G*d%$~c>2A9BH1AUpV*q$! zp2Xi0YGeg)bKN!1OH?(L1Dy`1BGdXl1=N8VpkbTTl=XHn4tb;UF9 zLpLrrJqi>Ygw?0I7>;b%)|o(n`{Go&svQWJv=A809&yaK!Nj6%?A4XlD+$*K8R`oJ zT0@qUeuyu zCa^@VY8wSid+nRoDW>(MY7)31i%J`Pxjk1{S#~eBced(E%anD`Z(Y5X=ANxyF%Oeq zHnNU!CzzX7Q)b$y8`_doa{Juou-f5Ghl)&_H}kt@B1Id(D)fX0V>H5pvkxhU%9U6v zY640k;Z*62Q^zdg7U~H{iWP8iR8WrR!_%bE<3fYm2`7dX)WUe1m4Og1j!cgnlNr<; zFdgU$fW=1;lf5W4kTxj6AlDNy)|Nj26k}VXBadm8rU1qiWL&7@ECF%;+IC8y^C*-ojn@?bxVJ4t`kJUFX1^r6Xesc?Kwab zFgoX)sY3tzIz+-*R6k$&l&0ExgJdB^4C`IOB2`XK^FcKLO4cE9xyTsga7Hswfa+0~&!FUDyEU>Ed?#SLD>J+$J-$qN_PS zcvyBbEsS7~5P*>U#SxkZXMF(xr)_m4I5jAyi1{0`)kF&hp*9(LG>V=Pk-|LmS6qjG zx1O6B-KNZW9$=(2F>c;Sgf1hrQ@JR5}jRR}#4p~0U zC{H)XHJ^M?kfGyOXXB7TFz~gDLV)Qcc_;Hq@3Dd*R(zs(F8JU$F@V1|2aR6nPo6?_ z${3D<8&}(-Nmo6KPA`Mw$6$;=`A(iiaPShq-cpwyNp2BA(BPsbxXZOp@|u2GCiSryu+6P+2JfQs9=en`E}mz4{b=#gVnFL_|LZ-Dr%oM%(R5b*StN9`i;p6M;igGJ{d_V6 zOyXb-Cg;T;{*e3Pzq{$v?1^@#BoyCyaNoO$RIz9~@G39PLnWNAEup`chK@I^% z8%6K2&ld+&bq8{lb5pD|3R?c$G{7;S_o!J)4pReI1Kv$sb$rx%Pa+tfv*w12pCjN{ zNOQ`fCRlU=8w}=nd8$w7*it!{4MuF@3_RI>eO&8faRL%;;2rWKf`}+zcByIEE28fs zbsl`eRKi2z06^f8m!uRJz+~kPg9BKO7&QmS!3vIuPlb~l%?5yAe^i4J<3osLkCj7^ zQIjU1bpBM`L$2ea=_ashZa!e;tQugd1|tApA!YTicx<%br?iME$Cs3lpBFV$QSAGO z7aDNU0ubqPW2Dd!I79Fs8zV;y0B)$FRfI`PD2$=p0B3~qt7aVu8ufFZ~N{Mib?(uEI5%FJoq*(0OS0K zfKn*5;nF8YEJ=Efr|n9FBP(~yiB$mgUKS#EFnBh4`C1ULoyYxZhW9D9%Z_jSQMkw! zw9Lxv5p{sVLq;jG;lAs#$9Wh-r$`JZ0$r71R=?#>9FIfyR5fY?VCxj|P5;$)BiZdi zGvr4%Xro>C7rsem#6(?SN~4BI14F_ykC8vf~OqEYP!E<5C` ztG8*61)J`@C{n>5nM0{F1jzvSi&NM$*la*uI#99zu&hTyBC<1XPYl#=l})L^O?izP zPY$C3fA`&8@2=?<2<=v}F-ah=DiMS|f{fT;UvYgi8|0Ky=2<$i3OBESu61b{RCTOocod_s@`kMn#SU#%QKq5QP{@~a zT`awEy!x)ktsidoy9W;P=O2If;O#B;y7Q}5_qo$T_d88F?cY(Tixp6PZ~-j8xCSjA$mhjsJ`4{o_&@d)p)V+x>A}VK zzrDc!K7Rk(FaP}gZ@-xDZ_tcyR{Z@RUu>`b6YBQh!u}CpX-Wr`8ORR zVezFfQImQf6M~dQzhP=ToGn1w#w1Wub(%h)ncTPgRXhD7j?wD+iiOb0UP2WtSG;q1 z=?#SVhCAL8&DOFht1@#qE*4N>i)&!gpRZQk&3yH6f5ZNW(^r<`k}0ls`Z+Cg4UxK` zuJtV2?Q*ZO8L##!TlH$U=VL~`+Ph%$t9_~_pxSf7icp2~D_J1MajdTww*M>SHO0S-V z5#`fSg8CAdw9F})_%lJ2f#8;0x~L(dTtW1~uF$frT~J(yjz7p*2)a6-A^6HQEdzkE z<_ko`9WrIDQy{!&)Bb|&(i=DL(j30VaNwOi@3q3rnrPT!bS`RlTEHy=!jXu{!IB6F z%+Dj0lTn==nX2(HT{=M6sT4O$`)LkNj^q@;rIQstM`BUX3($bknmCJc2r$C4DVP`a zX$sf%WDOc)b`kty&?#yMUtg0KinF3S1TrZ8wu+QysHKpY$~kZ>_7Ss$hf{{QpU75( zcrCnzEl_{mQ(Oi+A{3V&-Dl@Il&o^v7KYhcKhhmDB(WnUT`6ptg~@>K9Wd0&!fdM> zk)j3&8ntu5$f^@YDD%UP7ote}jYME`9fU&7>~t$^7MiBkeSpk6&Jeiqv)2^A69d2| z8ZoL^zFA3~qyXjrb|IONzS8)oq(Harc^(TM#eblaDPlSF>QI9q{kSyMACZ1 z{`h8Mb;SLSI1KqIiH(B6|2%Wi5O7oMjI)5!`9!;-AC?)HV)Y6QH7?nh5Ga`378p;u zRiomS*415k(r+vtUg=PcP3Qa7BH^_j6Neg!fu|$M8)4ZHec1fO$ae&!9QNkC(4sIx zFSAd2xLzfxv<=QT!5+}*wQ*t?l>8U(3b~EDtE@6DK>|Lf&Y4yZ*j+9!!lm~!c+;U^ zi;2#_DPG8r?IiGHu5crr%SLt9`iumouM-%0~bcl>&@si zg8;F3pPohm{Iu@FVeruIo9J`~J^fJ#g%9^H3G;|5%R31$wA(e_T%eY_=QQi zb;B1vv73e|b{(iWK&(Jbn6*8GP+3m&uwlWIGv}ZezXxZ+(${Ft0M$-beIbOz=oCf< zwMovvI=a7cGCDzp5f1x4~^&3HBBx-~#;QUn807Z9;R9Jy4mAf~Bxsm92}jbjBXz*JR3 zYE%mAg49|j;#(NFO|p0@%}WWljtYkqaCN?1otds#wgSj$Hpjti5)$9q)%`d}t35bh z*W=#csj40)m;i^G`$t^6V~m%$(iie6DGxr;26{~5q7;T^c}wAYWeaTZEKWtFRz_n4 zn@oL-qP=lb;7;o1S$Jsey*Sk&U*=+rcS$XaGnFf@RdFu3hUWn4>$0OzrQ$?^NZ2&i z%@i6uQkey1Fr}k(&q&#zjx921S19k07em)RDB)0Rs|pd+w2c5q^%cgO)6LYlxI!71 zpeVu!aHeFFW!L-e%qc}V0tSD;#MrG+l=f?I0(T=-`#sLxPK_$GUe0MQPl05PFydH(A9cTwwg6?q?akxN%$+%{LD!)l-g z>}W9NSyP#nGdJ zZP#U}LFMc|4%-66DfPNN0@OS32m%EtRO(jUxj?p>1^+}LIY;E2*(J26SLcq0RW3z< zwHrFKj+l{Gct){kn0~AuuK|LNI|n0YYyWt(T@2X=ql4}a@e_6&f>s!G{v_bTP;`C> z=K2(quJMQNxqx6E{22tg|9ab%&6~_hJ6OStR@GA54UmIKb^v<3%61F*&@&4M7%Q;d z1YbYx8-Nd#=@d~4;)wxhlLAQFBr*}Fzz+P-0QPRQqILsWls_5(zosDaK;iP!aOW`R zDdw6xW&+*;c7+Ps-T*R`qV;sh4`11PGZ>z`jXxU-6RpE7nB z3(rHSO};GAEyzdV?McHsH!~+Zfu=^@6v*!Sh7r~*q{u&(Tm ze+VyEXfOjT3H=991}h5uzI-)r=FQi7#OXh;cU=k z1EUfMXoWFh(_ElQe5MnSq(#n38*AEAOSCg@{Fw@MkvLLC;s%~1heN?MsC4k$zPz0G z@TT0Yit6WD$vE+X75A3%QpHOx0q=C{>SY$+5Qo%lcdR0G(64&Qs@A-E%PQ?ScFn5R zqk8$N(6M&Ws@i4hU?W$pGGm2ztw@s1Mbz-9!gCh^0W85ohug$bg-?RTyGp6CXyi(v zF+WtZAO&5jGE`_;6`!EbnB){1SNWLssmV*J^@Jftq$C_+R6u<56JRIJonFMK_-4rpflyv-L=o9R$4bCooPo)jvB=9-pETIE_lA1ff2 z>r^OTm1|nnyj%x3A+2>obKQR>1*(du)yquTX<$$<=88 zW4#jDRU1v~Z@}!nU$6Euhalp|o<+WfsU4sj7V}-lUdCe%uA1P72^v}_8YAFu6-#t_ zVvvN;lmGKww;xb%(P9`yR_$;1|jj4ezU)uarP$uKfnKNQaPzR zwlXu?3z@3ZvYSC=_|39QFZN_+w7cy$?;o#vJWo(}@`HxBi_YY;^PzEp4Np{&44)8^ z>fR>{=6a3c^j9WsFv8UlRqAL3-|t+6!c99YI48q|BU7+RKc0eCTY%zGRVr*c=)ZLz zOkcwUH)v^g;jp(o(1kquqrG4R6e1r2S2&%ykGc;->oE88~ZLw_-3#dGmd!s};N#^x6(1WRQ zOFqbbBZo4s$%vL4ctBUC9^s$Gm>+!2#6s2-9I0dKNN0Z}gHi4L3R~fQ zp9ElXyuv(mU=)AGx}QZ4y!-*nM`mVw{DL>OYI8%FSD9X6LvY3iJW!r>{-I9Y%Weg$ z8j%MNIN;STLcl6nb^>OH6?Gjrh@iRxjh#xz%0ohf3>`Fw0frRq%1oz>mVQ;CWXX@b z$9pJtTZGwa5IbMt1RU2xdmghHIIiE#ncmD1n(MGz&E}ADm~$y(DHX{0nT)uQ9$;MK zNsSra80t3UBpZEE6V?!C3&g=K2dZFWR1|#M-J8=XQ=g=oilM-GwH@bF^&Sd^&1$L`D(`Fut9f9LHt-4|C=CwJnWC1^&?jXENlq& zj>Ca$r4=mW7%*Vok)gEZ^&C6UaIFA;DUwf5XxEVA(PvKlFPvA3DY(2wz~9!|@sgYj|>@`1p1l#vs^1j1p@7(I2U+p9m(0T!hobL|Jw|Yl zpKKMY?n!2XW!+$Jb_00LaQ~*`$-VY?8a7xXkj>$7Mccr{L!UFnufl&6@)=S^}HU^j^0$=g?hdH(r_i_bR4)#|?toj%gP$s8iULe~?! zeI(p?q8&#T$9*jH=9EG=Rwh^@Bk~-Rina_f;!gO3#=wqq$y{xcMS5 z82~^J2Jp*h;mc zry=+rrZ6X)z#)@l9&rH2qMJZP2y=4>&j-+maR2fz|8fTxcCRBkA9=Z2$1 z+MdNU5lA9U#0n%n7)sY93X0B8FyU2r3ybwIGa$7b-ofoZ>`}>8pR5%co2TYgR!yKw z`A*MxH)ntss1H1lT1;SHIGhVj<-sIBIgX{}xZuMU1z3e}g*F_;EwFB+#7`F173MNi zLYN^97S)9K(*2X@FZltA7cy3Ew;j$dWsda4N!APkDXNy4Woa+_tbgAvAJTzm%{3r} zNkv`vEM%vV@$t>Z18_lWBjr{fg3y9)cD>)Oc>=Z}FF7(MuX^*toG8OfBkS_~9XWG2 zS+d7Fp%);1d6%aA?m&8dqk?$*21W7qOMZaXNle4@(es%Dy6ra$z0*^tJzF z6;Oa2K}lnH^I>P(t}O4S0k#-;>Rdnt3Sk=b8^r(QccByGRzR&E9&h*i;||Y)TLcxK zEX-nn+WejsfAdp8@Xe3=Zn4Fo+AIp`+7K=2W;4u|zGc)9RlUV5OfTkhrR4ZCz$UD_v^21hj1~ed8txiuo~5}3LDL~pt(`2%Bp1v z1g)u(sZ;Kx;E~fW0+E?@tj3SeC zDZQ38*s3lr7UWmow$2FZ_Sce(p~d2Dx8CW^c;TK6w1Bqa>u$Z>$C+#^I*X}ovfGc1 z?WDKcYh)-ckbGAJYgnQiVmpIC)AezP4^x2qz`Gjd`|_5?|BYZO(hRpj_&6P*A1;r> zu3z-qW9*vIDG4!fDoDr@R@ChsQi!(5sd9--B83R<;_Hke;R<|;8sI!8iV0rQpUKFP zN>10!c0@urAKqh|@&ZABiPH%PocqYn2*uFvn5Wp(VYkOWCG6^Fp9{Pq?#lX@kGp0%J;4V=arYl~2T)=L z8_gRbGom?Z2nM@44xG}OX2Gv<{^6p-K_65@LMFK|Nr-qU_~-9exL*+-KXeaoZa|zg z^qU@VA(?N-iHTP*Tf{U;+N0pdb&mo~#b0rnexzG2xO9hQJ=hR>WEmZP35*D4StWaw z6df8p!6c*(Lv(MA8Dl>YAf{G8KH+yTHgX$qKx2GS%tlxwqnn?RNe@?*erA$5iFGuo z-hOe5krm=_d>lGQB*cQY{}5}v2m{Vq%_W)Keb}VY%OQ6?MmKxT5f;>cdH%$rkw_<{ z&cYWk>97&518$;qOW3Ka{k)8{x`HFt0G_xzuA|Th zQdp56g=RzpbX#7f;vCwJfR~i<>Vs=mI4%!sn>9obtGqQo8u7QiVWW{3<&WgX`(Glb z-K8gR;D*n*tT`jm{m55z*s_%Y16SCAe&5Z4yxw5Gh<2%KgeFL&8W`M*);ZJC@Z_7h zyDwlh2FRG7W=K@Kic<59G|OP7oyroitZeOnjl=BQhje^k#mJD*oCN_7mq`(+iHy(o z)u*<^rb3!w9*-K_JTWP5z5u^jjj*NWX#2Bbo z2%5j1@8^<;EcOuc4elVQ$a(X#E&l5`VnxgnoUVVm)-;sy-hlvJ*2pa_e&p}wE9dl2 zANiC~7prcb<_8(kGI-V2Xww3xFUTJf-^FC&2Wo7*Tn&^_eaw~NjM_(HU;xwc_^ZuI zBr=vMX_S!^!*+WOSDP23tSlsOO;E~>IFvI`XaX684VndPqn?O&BXP+cFWYtWO8ZRR<0NKTZHcVxKH)yp5aL^}?{yFCOMc5?7*BL=fY27-JU{y2Pn^tJrRR_GC$I{+(e{l?c=tlM(r^wpE)k;gR14+@E>Dg(H`8 z^-0I^_m%1t)$Wh6t8Yx%1Bg~2EciQPxG{&E7c^$igLr!#L6z;5X-EpNy#u2&%4kf( zOwZ7p7d}ZR{mD$~y5B>40C%>9f9ah#BFU(GcU)fM;*N3xtpa-6L`RhQ#gqE7K8XW4 zrSIkn7iv0+JLnl3o__0oq$z(oz9OjOOh<-WWN^a88>axY6#hF0cZ^Ca9(fP7z^Q`x z1@!m)%MG8#EprqqIpgtU+Pw0l7dxMEC^LtL_@|l0`yPGbJbusYThvx2C!#mWH;xgw zXQwg-&z^({JWz;4)(aCM!sM_$jTNh$7wb`9{uR-s>Z;y`s6m(3}cu`X$u^=H8zwcZET~EVCsH7 z0{&@sso@~3hE^qik;5SvM#mYVU?i*i62mtx9FrIFk>}6QM6^8VuE(lm&7? zR~!|gV!SW}_oVHV13P_O>oysm*8CA2(B~${!DiwbkLsMtY_pUn|#Tm<*Y{`BQnUmz>? z&utV&QJ^KAE_Udo)r49o;0)C4o}e0%TY?vGEu09h{L1`lg-7IZvvrgu^;Znh|r?O9j?bGz+YUSwPVn{d^q>?Lp^ zTTjVO@|LTcb0hnOo6OAjFv#aHHV&y-IEnpU)^j|Yl4C}eAMa9EnUav$|p>D5ffibSaB_b3*BBR(!Fs$e1F3jZuqKO4O1xEQGs?O93gQGT^Bwo3foDto0Ae zu$~==#nX;(M5{cC+899?j>zPGXI52~hj29bu1gf2ky1#B$;e>O&4G;7#suDqr)N~7 z1zv{OF-)Flt{~iDtNxClu1}?N2waglxb24@kN$?vgkdW5>E7?KtH52EQ%F>S zE0-%LUrBVxLy`@u1fg6={vuv3oS=Ta@zb>9j8%L#>tYEO<|-0?@p2F1yXFK!)(yE{5fp z$gs>`eia6+A-fEp1}VP~MzG%T7Q^8+9N;*3b&GH-T96Rv@|xqO+38i*xDW_p#3q`T z1(R5ourn|S{T6&seoHj1>;e`7#O-8M3)g;59lyeY6#_-A#Smnb_@(9P9GIhvQ3#v^ zzfM+my~jSH=q76(LtxWpzgxpYEv%R!+-4*RdB_nEDW#21ANc0_*LjUm&PBm$DL0 zY?V>>Z2IB2Kj6_LIh?IGrZcY@PDiq~x&b}czi3aFTp293e6C-`h|aUt+x1NB=JGn! zm*q7_sf$A+n?AedqXLb$22hS$yv^x9ctSf&vPL%~UUn660Q$%r*myWk$NqcAk+$Mo z90aGF)&S%{RVPCojDJG^%FMP8Rn!i!KGvazw6>irrR`rr=fb%EA9L^8B-d@E4Srt# zir&~aM&k*|wxl;UCiEjr`yD$xI}WxSdON zHD^B9VxI!?hRj3)NF*d8?u`Deu3_LlP?t`!Oq4xHfyV+Jr=w$`>p*!EKZ5^K>~9SZ zG_~Dk)Ja9AKl=%tsjG8JLr}H|In12kTsUtEa^z z{kUqsnDZp)l#xI1G#IO6`)+ZY&aFi^jLpr>eA>(hZC{a;r|aD+-E3yAXq(gr3^8N0BtQ^Snu1#ju5 zLaVi=n+o(qB3Am7Otr>Qy2O4aj`gk()9f&@cj*zsz!4VGlOO8A}<~bF63%aAH3VK?=lcQ@qy`<-4MM~Pv+zj7LA&?RR{Gsq^dFNDFM|6-~N&Yy}d4s{E$IC)p z6|bI^9v6}u@l4M(yHOws>1(RWAww$_PII@RpnnPMl6| z#18O1ZCIc@fC&rWtcsKKMeJoHj3DtmgrPeEikbMNh!5uEBg9du4Ce&`-vhjmK%=Z{ zGX12ylehlJRfH}s{e$KRnLsLjNP1B2^;MrAlBP_HZR;r+=!XQ%!?_`aUliMY{E!3u zV4mV3y->AU$^|(oUzC#{19*b9%yOlxDWkdEmZzYu5X$B9^+rWxh}(IT;wR?OVDHF0 zl!h?*Gn7!?-+jif)qN!d{gFm;x!E0(tc%k;y968)M9lV3RnR7RtkXu$^4*W#6tt_K zP33Vt*1k|SKJA6fZPyWQF|7(qB<+&N+bS|ZGkVhLTC$qloJt=BVKOrG1C@006R?f~ zXhAvL%zYGuzDB*4 zIwHD`)?i;{m1wMVjqWh8oD4|n?1qeoA$wpRZSfc(7XJ1fELJyqEBRAJfq#cY7zf|$ zAQ3Ma`hKYK1$nIv8J5)wCjzPuJzHynA7ImUjI+<#^Z=Zf_YMgF;a^|SRufU?1sNt&g8xd7S7#^;}yPF@ixhWk>8+bT{aj%2aj=_Wb=;HI|zscTKJ$0;CIl zb=Tc;aO>&2#e{QqO*MBMZ$73sX8lc(68sz%-uZHLIdq~9AU-FI>Ivm)V)&$cQYT>) zs|_j|KamVpN1&BbesKzPW9KEl&1cwEh!m5#htvmwt$=X&9SA>pI4qIqDiDO&BLQHc z*3Sh|A(RzJAPB;QBSBZ{h6Pf`+lG|4kRL0Z^SoJqzt)`Ww^O4fJ%i0_*u|N24CI$}! zV6KD*i+AN}tn-p6k%$>N$6@jIfymemNTeGE068Kyi_Jcc*UeZJ6)sn<(tT~YN=ZnB zQpLf6I0(cQmp@ufq?TBZ>JE*xFrp6s9gi^?C* zC)lVvCkyzLUu|B@9TkD5*QGzD z>j&Be2R-j-8g)pTrTzetkY)_vU+EXR=J)^p@2|M!KR6_duRA28%lo}MY#|Miy`#LZ z>9U>hHIPJ!MHE)m+-k=T@v_CO9?c%^a5aVvei>(px0G=+GQ5W&2Bi1TNDy&5bGZY* zwRjeV-qSK_vX+{=^hE}aV7QMkif}gspLx8c&IQ5`9EBJ-@*A{JzZufW+pPG-*V*cT z65JhEDPSS#9TfwpU93V?2A&JYA26q^fcVR z$4Mw3WPj!C4qtH6F=NByZxQ`CErim%qf!{L?`!c@?mj5lJP>XGSVa;*vzx=_-GpD# z7EqBuu3~$@=$ZD;OC$irrnyvQm~#uZMVcV3%5dTe>K)n*KyKSwl?GpmyV(h)GK7u@ z&-_?YS>luF%slI-vJZ+SSK4!t4dy9T_{caJgHt^DDy=N$8lmwGNwjj2A@@~!tkZII!#?4ou^zw!L|TG|RIhuW zr5BB}wi5s_h3Fc;+i?|v_mM)=n7KtIyqmEr&Xl)P9ADEAd19<~iBix>Z!$9QBK~&h ze7nZ8r$%XMZZd!3V0*ts*+2c1BcS_?e6dTkcNpcOq)NJS*rlFte@6>t># zQXp6i>zZ}K75Zz)OFVtBFM4u;9o(n7Ep#4piGv4AWh}Jd5lEzwiz2VjB;0vVGhReY$ zm^)Oh@tFZUUUf`K6)W`^HF@eBgOT_9J*J*oJW!58Q|i7BUeyYHC|u1oi@z*3SS}{C z)p;W$aq&T>%|8Y#PfNpjUnzG&`yY737yp=>>Te zZ&>#a_n}!~;gkpg2$P=p!t=Ar+YxX@fwiMl)FgxkS#c!5pyt4~-f_TV#JJo|_S0)! z$OnzXzX)acfUMK)Er+$#z7RJpce55-`ZvA=dFUGhb1WbeThYc(g$GWCo!n5}DYiXU z^_;f_Jh)&Q#|aS$aao2Iznp5VZrWA>BLi z_npy!HDWt9z|GM|enoJ*%SN4_aNeg!bRb!Jju*XyYT5(RU;oetGCfr6R!ulkZ^Y~b z19-R{O5co4Ff(j7v^d(npUx^A+&HwV?=;d7p$$Kh?V53jZ6ye*&nTTLbh?OB9jm6U zhX&Bfb2!xlUCDl1)A&qx&{Pai1fpvLd=6(@PF8-ATkS)yT*s_cRb`JFQeMe13PA?^ zJ$O3U^u`o+b(*%{Vud&uS07Elk%#Z4$bH|WQpp(vFioPNy$}w%qfiF1W;FZ+0vY9G zPA2+9mX}wP2`;j27Vo$4mHU6QqoJ7)6lF#t{ws7Lz4pc@LkdQy4VB_d@q(YB1WNMRgg76!A7~1Y!iX@0M}UM)W7AcKG5KDWU>m zs|Nu_`+3du)&bK1D(KzC_b<9P4c@O&?;gp}EwC(UnsLJLyR+Drz~&_c) zwpWv@Ej=>e6pkdz2tm~=DGuwPB?MtH5&y2SxjPRBywIa15^)@b?L+aNK=A@Qxhs-Z zi8|a?y}sFJ7a?4)syF~m&r(=HjkFabM0K;6y?YIjOfQ$now^f3gf6eqp*aNce0sU? zNsWQ4sLjiUvtJy4WV=q344#uCFW#@;(w3>9sx)Z~Wv-=+V+@X-`*uI8;FWV@>~SBQ zhR>Jz%_Ch8l^Anf@E)KSS40#9-qpROi|9tOW_%JV+xMGNUBS4z8oC#%pb^k5ZWkpk zi2zcqRWdKuNqP|35##g%Jze2KqbN)Xb)@BT+EH_-;%(2)9yHe;86sjBIV^>sLIK!bJL6 z353Uc&ZK!vGM;SS95fG5Q6U|XP6KH#FwA|S%aZQeRnv|cti9vo<%%*61|Db<`prC! zZ*!yqi53+!1}+I|lBjIXe?{Ns%PZYj^E6TCWHAQm+1(Xt@kLBGTJRS;_;fKnyV6Cm zPfp%`n}2g6$1JlmlXs88T~XCDV4dtgsOQ!pq%Rmdzg4NDM_qQi6;hdyKj#GL8xgwg zHcMAZs5PM6BNHD`9zxtm1d3EYB0|`qPgZguNgl$3P0>MovrYAJ08s!va9W3dHAvS`Wj`N2{vjDd zaEe^EQfqup+8VS)`zt}|0D(ge_>X4kcdfiFj+H&ls4y6$4u%{lE5D=QNnq*J`ADTe z7EW@GLYiL~n!1<(g4j!3-8dMW2Yg>b7|6XzVat|m-8ph%bl2lZ`KEp%#0!Il9D_kl zCh-?W&FNQlN*~Ljb9Y+5afIEKZ0syrQ&imZmE%nV z(E-3^Fsm06avYez@LUhe-s|KQRp*btD)9mz=9*g{|5UUk?S$Q~YkCz77L0+x+-a`j z+nFQ_WIq?#iJ&mY&sGu%pm-FZ9#kGbA* zpoe2*Ht7N<0k+>>U#}LZu1x!0%34h5?R2?^=|&Vm>il;sF??;`;fUC#=XqH3`Q>51 z=b19Rx>T_iColc|U#1`*Ae!1| z3XfB!OxQ`ZHKc3sT!@SPG^_1#XA8FzE|>fD)C(6~aA_@~eYwUwm(C(Fj4LcC3>Wlg z1cE-4LPwZ{5Mi!K5Y;IOA9(5KC2<%3`GFUF;n(<2e({6`M;gS0@3t$iGzGla3~yv3 z*}IMnO0&_@DU5a}0=PRXnUBVp*{UcB6jP1yF5rB=rCLVt%Z@J<69PBUdL3T#!+aaP zlIaZ-eWU=Y(`(ZOZwOo>oi_P_)WhVzvrR33G1X2L0ykVC?^hv!awJaR?`(XjDYoZr ziax>hpRx|{%3=!Xi=5QW{o*f5C_(5%h_WvBcjE}HS7zUv`lO1HtZ*pfH%f_~_e-P; z#f2{U6W<8&mcXBW39>=QW`P?Ylv|bb4&P%C;d=~ce~XJ>0kZOoT(jlXoxAoL+*;)R zKt-Bo3qOEM^CxwNG$hvYlS=L7===7PUuqY2sAr&t#;)RN@DS zO+NAoQo<)5aHJ3#<;GVwJ3nkyx35yh_T`Oc>=W@H){?~TA$)N6cl?LDw8dT8;+M3= zFHwsKweDP=1h+!QVx`@|TOy1z)_t{oA1maP8$~kRpl(9+;mZE);nR}OcWw}Ot9}%+L%$BIKCz*_XFeSP%ZP zJ4s#sPJHzanXP3Aa-}k3zQ`=DJcRRB!ZqC>z>3(Ken9D4Ah!z^n6T8i4ptxgr+65R zH&Heb7LqSj?tz(IYvyyQo$;weVj-0CP$?EeT@3@ai>_FazJ774noHdYQV2B#Yi& zNRUttGdghV(7SR177tR@U7}?nN@hAK-aH9Z;7I&_L_Oh&bt0C2_$%s0J4j=@ZEqv1 z@bIv*+Q%UrXinXpz4sLLti^b|)fYv1Dbxr|9QW0lQqU^W6er?6W*n|6WWEfHa;tW} z=(6pC&mpI7woKV-(}{5GWJ=^+{N?LMyw>l^>!A95JDx<0BSp_Y@rtagC&wdjz(ntK zwY!b#t5Gztgq9Q`0ztGc>&HzR1+J@J>RbrA>xH=cUKW_=*2~wt?=^l#2c>|1MDF-~B)@_-zJ}hLR_W?BMY4 zJ#a7w4dycu5xPDJ_tEMUZCpi7&Zd0Q8O6T8yqYb%r0&A*FlXg_=S@p;4aeo*%k8sHU#hA2IKwPAiU;qM8{?xJMFoN z6ibv7gtxl@g!B1=l$%#^9iu}%vk@NLRsG9&q<3DQ+eFT+GDARlZ}Tc(^Aft4A&E0GFl&0gfh57X59W<7Q~6iW2FT zhhsx97y6Qoxf&@ZD)BwOd;9gj<{>INx$YFY$@SKht7+^d7<_zCS0Fg-;sm>ydwWr-so*AUh9@pBo87r*LE=KkbWL>l(I z*fzVHKFVAps0R=0=T3ttT<1vIF_1LVEyTPTmSk0wpxfop=A?2z2*=^~8462XFJRc* z4wxrN`#iOYs47uE*0)#mPpn#SJOT>J&ichxfsxXtL|oA~(wo~W{%1^qr0tN>7~$Hxau8elezCO6}%z<_2VZ#@B4mKwf#hRMErEW#Y>-;zyj}r%p~vCUzc=X=^wPwPG)N{W z#GkYH*IE2)|4Pqk6jMvMeSrM&vEx`JogfhZ;D%qqB4#-H8gq)BLZsX!P2I=1rDPz@ zKNtgt9NkyBUlK*Lk%T~FDj`a;2R%h1W6VNM+)%#7?Sz&hf!*|dv%1^q=B}z+8j+CB z_$UX~65?{o%wVC=(C4c8JXAPU*onC9kd*s-*(ror7)A_ne_Hpw_LVBM^I-I@`?1(D z&puyV?TyQ2zd}Bj1bBPpy$^&t&IMQGO&Ei?30uoCwxE-L| z?E5>}77{Pwc}O*cKvd^V2lP%f(lqB5jFRTqi$ zZ{P7P)=_;!BW*A+7qSf!@25IvPDDk!B)%7IS`>TIk*ryIIz^Cvots9!NynyCXpBHjbpETID$72P z=VCXVg>5|T)w-`xq$n1mZeK4Kt8Rx|a;>H(l$UlWqQw(DGDRh6wh`J;OGCH6_qrX235H>QJ^ zhjlco8smwYLM3ZER2=y`FUfJghk=aa`erm}q*skU@I8ghT}W3D_yTVwJg3Y}(Mg}x zANr<~o$vbE-KRUIJN7eCc0&U%7n^|OpAU;hmTp$Af|7r8bS6DYG`?B12=BNkOOZ() zF@mfO@otB{IqbziZ)(+nw+#I?-0@=m7rq!VN{WJ5fV^4I42xi8yCa-xZJvGXmX~}*aD>Lc%iyCid`${@710tNC+^{>jR%PMz(_h+ zItk(nZk))iOtF}Z3R@$#hXjNMF4S=p6^qIM$7V$oM8aYuC zDvE}J0`r6SDE>66;LQy6|6SIA!K88=GaTUBCq2}6ML$8ug3rmenVor|Mfr7TF)hGw zh9kyHnd~K%Clkg?ZdajVn(MaaXwm&qRDb9o7foZZB7P%i0SqN?{i9T>#`06R37hrW zFa3iOC!)rsM>v(XI(bJ=Z9xE6xMPJ<@6GmBqb`RUcNN~@fo%AUDBFS09o)uD96s5oE)dP`Uua zl(?#Hky5YRy><6N&4KDK`{Dq?p6{Om6uG19?P4t3y85|N^j_Y&m= zNada*=Hf){cF5Mpia$JpR(UgN<^OsJ2V##e7KL22BSD_!)qTqDq1++Ju` zhu#GhM{yAr1P+RBilkLYFvj$5imz1b=36fg0D4B%OTe_|KRAfB;90q#9V3-h%n<>= zxDpOtj!l1@eAylJf+oLmjV?co;3>BPFJxq z8dz6Lzj5PZBJ(qh!tX_tem83=HB9;x#Q_BF1@_ZEjG(>M9MZCKjo zVt9iPZPEON5^s?LKA}397>0wd;G&adL9!_Ag@BF_^?{`=i2^}I4q}3+XU>cYCvMBj z*5lA{*E*hy1#B8QRh?Pd1qm%TsJSs+!B)LOzpE^Xg6C#HE!oQBo zl+x)yWj8hi7d;Qg$b#?Tj0aBuvDV(TTz?#=2Rl=-)pao~Xy;=3J}MpQW>eQF)Rk0k zfdq+d@3Y3PcR0Ne)M2Kka(Rdn;t}EpHMtZPPZkkNdld24O&}$O9vF5!Mb7x2e)qfI z-A=aq8*C=X@7XI;xSi~V&>t3tMPb-IL^GX}y4%fmw|Hj}#gb8dIhiizQz$E6WOcNX zMU`HfrA2fyv?vI>5!$_y(3rw<9gzuwk!s{v<+pEqfa4ch{hcm+Ck+tNKH%ENs5R8zZ9;TagJbzbxuDtz z;Dtf=lV1d=aNC9a&? z)n#vfIAWtqtcsv?SzY+OYIoE`w0@-Jg^r_aFLb+~^#wTN?2r0YEs%b!+93UCtuXZm z{QF45LQsNiDVfbn@P-?hyq-zZ@t)Fx!aNdB+1iXIHoCSe4kbcuntUD3!>eGPhrD)U z?*_;VDY)%WRpH>C)%)evm;8mj35;k`Helc4VyDv2LB)Sv;eA#rP;)LgKE*P9@zptq z`jj>ezS7TZ-Cv#ae?D_f>G0{R^B+Gs$Nzr)@srQ~_~R#^(!hLm&Z7C@@1M$U_E+cf z-+yS_krMQ%y{HHuMGZR_C%UnbM0;4uYHe)t#HdM!N{v~#k1%n9nsuuKy(xk{69(d) zg`mFN;y#CrH+^_X!%y>){K_Sx-yquw@8Be}j5L@pr`H=i?Opzr^@%8TKZjiw>5bpN z-LF^Q`yD{l75_6{@N#`Q*6_~&8-=lLpZGHo*FdH`TE8Zq+xL2dJOdo1IV>f(2(UuY z>6pTsu)rgLiS%y3n}b{V6|s|R5W`)ze>I(xA;XUzZt@cjHrs`s-c9#B}_^_sRo_e ziyk}C`K4r0F4SBIl7j-*Nd_`(I#m0X48DsrW5wPD^tGpl#f(?zYL0Mzf?Cf5xF9II zH2Y4Ci?@KH%lkpItDS0Tk&oO=k$Su=^uY{_ zdZ}vL*xS~K;@qA{6?NTLc27EK8-o3Kuq(CCACdfmdJ;g>4HOC9iHJZV$9n|^h!-%E z=$=_{N`Z!|Pai~t=TuyjWi_?Mvh*Co^dpBg_v6-4;j~`ZP3fq)_)v|%MuTA%n*y=B ziYD+0m7*y8jsY%6!Gk5BUYksqhHn0IunOBPSdlk^f)N!qJ4hcVx6_8UriRWM6diT$ z462jR#B}V(IUCns`~)YkZl>+yo8@Ybojcbs5~pu;vAjgsj}%)Y92J8!TDFhcYy(EI z((3*(wxI((1vJa{+Ys&*fB!Rb^t&i{ebY$+-73ku`**G-_5J755e=c~m+ zA6vU@oS%WhPtOPw zgIvzf&zwG^94o5cb-p5zYgQx%)FHXCd z4Vn|(01CyfC+r7?;Yb5ZXuQXg?fi_zf)99OCjLTaBA~U^PX7pQ8Iu_0yhm`GiH>QLlb@zk)-TMO5Gj*6ubs}$@LoV)I_OZ__%B#clN+m@0f2!6L@x_L7yQs z3ML~mr)`zKfC~S-ps}{R$9$Uyj;wHk@KjX@L}?_sL@~cLz^7(Taz+PfNW9YN=p_2c z5>rhjDQmlb{4r2cXOn1T!;zP)yyzi;@Dp|~{ST2YBDCbUd$VETR_h%{7UCt7q#16o zeYeQDKymzJ^Rf=lc) zS%6XBEX!n$V8b7qd^PhEaZThKmBg1LsCO8?YnG0Q1jzwEgn^;aHVv@-9v&Yv--){9 z1+A=Sn6`rSlMR_5e9)gjRzY?2z$TA8eg`airc)H@Ga?g;EW8-zyWTx2W|Hv<0VjPyN;H4oQlfoTHcUa zMNvzlvaVei%(CZo&DOZ!E_Z+(P(K;{40+Q7;!tn@ts^>e@QiA7aS*+tp#cF(y(*AB8xEf@6W10OthIe0XDE8QEw!Vplg+HbZb@ zfW>U4F*e|L#Wrr-VPnszTt{kSG6FG%)XI=(J<}OiH-`$Fogjo}bZh+BCovz0Ypl;< z={PIfW{Uu10CF9_;P$k!PBGp}v>1c`;L0`lzvarL^}O#%)sia#9)5;^X!!$4#Y3bo z{0f+SvAoQ;t;RsU`3We5Jg*QZzQ!!F4SNOn+Jf8UYebF?@_mS*f$PMf-ueNN?DQVL z#}TW@7y+T}`qA6;sD_~4LZJ6C7{cy2Hn}&r^6Re&KA1Ax-YoH0JnB@V#6sp4 zPCQb$c)OY7FlT-_MR{;pWS)*O7#N;LMll0EtKv9I+>vn;u(9bJdnB`k%-~_X7Io~QDG}!c`ykMR1!zVgAC$860WB^nsn)ZJXt-k;87(1Jso#o zntFHxxtSsl;-Sq0)hMpnZ)c0R6Pr7|*RXzQpCU*QzP1k?u26)33uSm9&VvXN$X<*SqEQBHuJPvA#)hFjQFi@?)%KmXzS|(4oO{gNOhZT|bIrc!zRt z4?mMRESGmuEZ~9F5Ai*AP%pRp{Z`Ww9x7y{w6@ja`g$?{2r~sE3wP2Uil>hh+^?so z9S7B;jp>J7g8|cnEWri_FR0z|KOu~BWc+uAahxCa(C%}GT@3S1#6wvLHfi7Cb)#F< z^>|?QZIy9&7OFA zXqI*e6TlJ*$v-rvJ=9_`NAe=JEgo78TdEA(V)yQL>CZYJ%DDE^ca+Ncu+zeR+8*95 zv9x?>JU7h&!h7)T0&IVO1S>jhmOmdBUpC8!*tUud_P~pN4A4h86Zt^93qbZ!-0Whh zDVpAds%Mn5b^j@E;jGTea*GtbBEtKfxQ$6sKwHg_=x2G3f^Ml*#_~bz)y?yK`Mw09 zlVKw=JlL3cpOYW<-JeHX0?sP=y90aV5T*>o0yMnhh{UIR_m2%y#F56k#-!sAX!e%F zOurxKfpervPIjD{VH#rGw3r3zN#Q^{>3xH{z_X}VKSk09_vo^jy~;AW?9gEZ+vtIl zk5L#OsAwCfRZKeR05iWxK}hBW!l|1j7fj~h?WTTi)IPiNV#Ura5!4^E~++ZM0XO;_~< zC_)%=xa$K}#z|ja#MwxMGf(SsUkhzZ^m)3I_GYArZYm+zr@H<84;V#alT(DvQMKbJ z{Tz|_zQ?%(hWJpEIEruBl}!eWK2ARrKE|?-koU``du9egeoL!Y#64iJ@F`_Vb|Ps94bjAwrUbv;gP2!xXi?{Wi0xv!2ekQ0$} zXmQgiCFlr^=^NJ#A<8zcdlB`3&9}lc_um77-mNI;?9hlB#XGZ8&R(W+d+R20ds&S7 zqdeu*VvS4Ktv=2m3!YPt@$RFg1LHBJk}5=E?j9&W=%2%SL1YRwQl~*h^Z6fo0<&I^ zheW-5N~6v5V|q=4ifQ55i8Rv<)Y1gIKCDelVN@Kb3Sn6%k-anDW zaB($@J0+F1uy)QD!;!ibR>))0+tGITrb{~@VC}ZZ_Gi4tS(qY%U$FArZce^fmy@Y?)TO1S#}B4b^F6Lc%?D*krrHMGi!STRatn z@;#^}<*54VZS*T$D8uDz?7oMK#wg-}np^rVnYy^RpF;h**{8^mmO198hr6diCxEHr2*@_C%Q#e@8)j%x{hHF;ywZtDwDN%pUpu_$8Rt|QX0I=8flHA%bC3~*NJ6p z6zX4%79FWtOQbJ0(Sy%=g8>(waoHDvbXUu?a(5c?ix^wNEz4<&^2#cH{hN!Do1VZNT=mImJ6o;G+v9!-|& zyj0eR!Qf*+q}FgHS3t{7=Rf!_E{BuCU7=X-<2dcoayOL_=_s?{c5gMLLt<*X<)FmgC=>B7!+5G)U*>fV|eC>Q{)T1GvkR@AP_Q_IK)dJc-+z` zi)vn-K2Hj+tkWX^C|)^~6yLR(effnMxSC93E7RVX?V{|wVsF#fC!;xi?re|i$I6Y> zMK4|Z5&61By`h)6BRffl$OBO-xyQ2IEmo@uKP4a@1*722auc`wJm+I#;qtY zN7HK{rF#51bG8!z;uV91FSQV)n4*GUQDepEopf`4C51`1A@Y??0j4xepdiWc<{mo4 z?{N$eILMJm47_DNl8bT$aiBcf7skfWgUVN{IFx<5Rnl)YVpfSqRS;Gv;TgS%^p1@Vq_!%Pc8q5ghv$zbsZFzC%sA2FI)EIQde5m!}Bs3)kSs=KdiR%-*{dB zKVaG2MOl6Q{T<4)?y!@*m~*zk5UuU#@PN8o#;O`z{(#cwO=>eCgMJPIL->y`$?GZt6gLa79gbaJx5*x_^tmbU;A!%zwqKWk%I$Kgfm|HY4y&_@OMzrdmYn+GJN;K$Ds&hCLQARvj;$)<`;2bu+* z6GR)12Tcmpw!?(saSDtdKT&=ZOo1QYhw`_=>#y2Fl`zE3PIHKGRva>FcO^S$lUO=} z=Vp(9H2$8y5_6z|Ft3uBVI0Xg0SRmyI9;4$ZzeTH)tO=FA%U`TS;#|_%MS)RF8r~z zj>Rxy5*R@m3Z_dG@P^^FbnQ^UiWv5MJ=gCJJ{*%bO0XdwH>0*sf#-j|bN z@YleG13C(VdpA1qw1ep?dl+n%$qQqw-Z9AzVW3)NStffl0@@xRmjb_Q-r1C?zz+pA zLR|q}S{Z8?#(4(FtFQr8U?}Rh-ug;Gex^#%M;&$u0^l~ZDy9l9?E`i3EyHwBgyhLq zSSTopJ%60%p`&}?V*t2ju|N3o0x>VF0l`J8Ozh`~G8(mImOIWY+CF3wPLu5C0w~X- zcgdX{m+Re1p0yG~RlyX5486v}n+`t>#07l=W?MkAL*U%t?NqW=mvx5BY-coysxm5SU*3T(hp=1-RMj3>Y3)QyM3 z`%lRr6vS5m>~#qdBkc_jqQ-Zktu15V9csj_yt!$*Mg+*4bFZL%%b=1FbWIJ2NbTY6 zL`fa&3VIMk&S7-)kdO{siw}$0VK0X<3@#FtU<+fV2nz$8)7=UEfIXd~ZPC-HPy&T2 z?}Fv|UNlf-<^%8Xp zak2&Vz-cPR(1%m^-+Sg+AxmS~U;XQ(BAH}0&qP!6if{_ezyH@ix4b`H*|?LSgID-= zsM%I!5udD?I4-C2)8spr`bhJ^<(k>_aE;mw3*8-;b~+I429;xPw)+WceP3FP#G4R1 zqqD`=2>wx_$M06UDTR|ETr;c^k+5}vJU3s-$8Vj0{&v;#V=NO!*SLQsne681ogr7&K8q8V)?$m6i;`r+orvhJu9W5F= z6q}{rCeBh?`qj7v590+76ITgPWkqjEq$sxE&XJP+95JgeHcaR!h?OlQAF2kKfz%h= z?ImsfA)__wx(OeFu-yGERBRB9e#m$)_|GkEf4`*gQM5WSptLpZe7`)vTr|~Ry=bHj z4zwf)6*kLDjqN#1LWG!|A*FIGM_@~BD=rdSyOe)yofXE3W-@D~*yyy`tDXwZUcJHb zHmRQ+W>oOk^H?h#Zc(8)-k(!V$+#<@cNF2GY5Az5)*9x$!K;e&ESggeJJ=;s`n0Ls zr&FiOT{6w;(-<%h-Jq+rBN-Z_mOxTb_7WG>L!sJuB*M@^4TAM`~>Ij*X>v5 zJVpKR_fN&GeswPYmCgMcXG~iC#0SR?llftt?pV9@3qL2~EPzO0=bIBH5jzr=RKWO}Jd6`r5f z;)=tZh!<(>-xjYl2KEL8)oa~-M$=Kd45nnA-yl7O94m09G`IRM8I z;8npzQn93R=J91UTSgDpGhhTdlmvj8-U&d|t#Y6xR07NFCkxZ?Q*j!RhO?hZT zHNB%mv-nvrdLPw2)MKi2x1_?|O?ZSyu(!M?f7n*MkLJ)22(<(F!|r=`<6P0Kc-99k z1X;n=-F@S0#8tXmT$}9(zI^&)1#mZAJ6}cosP4@cJ2$;z#j+XqlvmL@UCj%zvg@x) z``n_yLbBmyrA1pTMsYjA)La;@7xr?|;etOLHwfQPQQ^G3c{E3Xv98(3&x2+;7j?zb zN$XYkZIc){o)2>js^6Neu#bL?cU$4}Y`hf#Mz`-8Rs2ysWqSZms_Ur*^`>Eq>B9aE zo`z5rs1QG2wu9Qig}pWyt6XtAWLD}NT@&lFeRJTF)J}92@}Pi^ZDCK*EZQJH{)BOv|** z+v#<_WXCv2{k5DgEPVFIQ6)V=RdEqv|QA%xzX&N<+DP{ zH=qYYgDB{Pm+t2$D)Rmcbq_Xstv=z%gxW5UHVwf=+jxaEEOM;W&hWo%_6NKcEn$Uj za#2xrG_ww6yTXa=YEc~r)-vB{c5}du4FM|1z?9vi!k?Uj)!@w}U<#flfWTC%YW#;^ zk$JP+qn7w*USWMh-jUNuSvg40L}K#lj?P0}wr>{=<|%~J5$qTcUgYvuz!f!Jks_Xa zfI)}Aw+%`zB+D|73-QnLO3(8PqLANT`2*lW6G^9gS}G4AKLv_n4&>Kwyo(A{UtPiF zb$7e)-P9kZ$S}@@Q09Bjy0rg}&W)V9)F8!V@4N>q2qQ__k9)Q^ODs%n7@honx0zvM zY=aF|9e6Jjc?lF_t0!n+ue@##9NwZhM`B*ih5OYt5%3-yt#LV(GybrLIz@5EEk0-% zquS*@2I~X~+&ufC6Dl?p5~A?kuDmKu%CA?$AJnDD2FttwHt z3>gdH8b^Av=@ZE6qJT967ip5w8%6>vioqWXS(MH{05F2PGMs@5TU^F3{> zTIjqS_Hf^C-(jQDW$(G+q8{`qrxMaVtX)QJ7hFBQO(Cn?R?Ev~8r^brDCx#r;Ye5Z z(^G+x5jaLj?dVK%A}QX65%&SZpfT(1eExyw_xHFuooFcCrvNCK0IiVGmg(Za-A5vj zD*@qoNgk+_ z&P0v`;{pzeR?qZMSYEh+36)|5uPnsB;ED7X(_QCE$G4evuTnz01D?(B>zOcOz5y5i3Eh$NmGl6=MIi7Y`vy0SBQM=q|?oDWs@h zv$zen+H-M0m;41QKTVJ%ak1+Bd^*ETU%$}Le-EKYA~Eib=aEp_Mz;y_-bLKEi_2G+ zKcOg|6yJHfy|76!*5|s0bQRtygJ(~HgoToenKg5>;JgsKJIjIS6S?+eS_OsM2H(!2%?Trn}5gm}+wrJijeaR>7DIatHjps7(h-VaP)0ko)2_|Pb zB@n&U&lk8;C7bC!8teoocSCC69Ni;Hgj!5+BaEIjqFZ?6?rr%u@8OxB-4roSg8yCu z+O=E>ByJI&p+O91$Ygzy~Aya-mfSYApzgQ!g*jojG3&1H%;|l#$X^3Rw7Y@}z0g z^^D=_L`}RL{0R#1%&1fdzlgzeNi1=meH5VM?Oqa(08VE61_3(iE6`iCK6%J%XrfC& zezehgGOA`UAw*2>KiG>~ZmzNy-%zF)@ABSlH>>2HD3l}u05!?_JHn+MisR@Go{kC4 zQBhR6Z1F7b<#ZJU@rf8%efP)~+w+ph7jDq(4UPjc|m;eg!3ftRM z^xy0*LvjZ^QL>P{1&Z1Gz#=olnQm3#ut^nWG-u$^ELS6$kLN7(NY@=-IJb38ylH2G zLYv8@*p|bOs$1;=k1VvJU_K~FMZ!n7AIv9+l46)&Mp$ zI1Yy%3le`{3?iL`{ymfX9eJWj8a`a&m`BqprByH-1CfyHA0aENz{s$Zr?E zQ|(L(Tze0bGb~Vw>*EfB3nydBOW|Bhf3l}ynRc~3s)JzJ$BNEoZy^bijp#L$%4z}! z*H%qv^too0Orfbwwj+<^ChWj+f#R~6p%kgq+Y`+z6an@N~#gY%_m zGFcaZ%lu28$tf@?By}S4i?lM#8iWQnKXAGpM-F8W!^z5L%b^gxq8k}eIRif*k%kEG z?Ez1eHOav{q*q2&;NOM4t*(R(%6wQDuk_$35!<;~XgRs5N1Q zkm((;VijlsSd3=>(7~>@L>d9|uaQiSBSU{*(JM#cmYpX{dj>`I-H7FlpYY8hBI|6e zR>hL^-Z$9ni?~zFCgrHomv6P%&hu%Ds*o5jHxxmf1wAlGxu0vC?kKb1!V=c@^0B`g zhTJAtgH>IB^%Ft5tZ{;iMoB}wUl+Bb(#tBtXzuX_!TbHI3JLEO$dU2?nLNJ6c6|=w`?873piaN>M z8mmg|d{R|3CmQYNKF0R^SDX@6&u&21)$|hY;Z6>X>~RGBazE^GE-4N%{4|^Hrk5xk zy1&D-4$03n9D*~lcz1dLgwyx9xxH?=a%uqi6AI){T1+%}5~##L#TNuGKYvUW%1FZ) zK?f*U;*-VY;ri8KzeD0^WQ>7&w0e#W?l+5ehZ~29)2%jpmhM4DEnjUewRXYJ_xU`BVEpm#n#n>%Xm+(uNyk?0HIKztd6vm0>U92%t)+3#|dfd7`5dD zeAqEc{4K+gtY7pv8HwzFf&X`8YuF-(#xL`dHCabcGSBn3d;2e2uKpwA$yg2f6keiO z@=(cebA;1KQ{|0%-AGKq$~AP$sliDzInAJ6#I9Yi568MRmA`F_6gp4Na z6Oj`Tc+wRLsL@`pKg%y-lS~?{6nwr14ZmNEN;nzdYPtzH3HwDpC@8eEzObHIh!b{JdvIrB~!#OatoyA0I|8AQ?dB1cHTAa5NP7-qRyK1Wpc)Z5mhC{MMudi^(&5-ua?&bd9ImZm}Gs& zB0IREMJl!qU6jsjn*hPK8eW}9-GVgsR^t>jVT~EtUU^}*PpR$%5l!}90&LJfA{uST_7s#QnMEkpabjIwVFbu>FHv++FNkQMOvh&QV;mdN!CC&5-kUP* zgp?Tigl}>P!DIli$OKN>ix1A-NGnlE7XXn~US$YwH#Mha73e6t1F2TJ$R`SLOiq_M z`IB*9ULr)p2Gv(t-D(Y&ZPm){+kP7iMgG^d^TedKs#27?d! zyjMTI*ph+>@vo6;5SvbbG*}Z@AU71NQUaA(*_fDCe$Lk*B_Y_*CIiu;);+vQ0nxt+ z>7UAf{wR~C;B}pH^i2ACireN2B1hx|!HKjBP~o2BZlL3(a>%N9j7vso6hWS9^j zVoC`8kmd#ygiwSJ+u^O;I6(oe2C3UyQ6BM5PbHXa@lz}KF8Qi7+Rqm1*I4aDq&le@D#I5c zupoDVVu=f#99`jql2m~6g7?YpPmjX67e#OQ=mpng=pjx!%{lq$?H3sGu)>2GhuuqcbxwX?Iqd?S z8d zLc3XsjwOSb0+3>{W_)N=ip9QTu8u?> zEk=fhTVbV12u=XBp7X~>KN!K)iNi4*FM<*!!kv1;9<6(c7mhZa)G%x*V{?;*NzA7ovInCTgn zq44{#KE@m}0!jm1k&hod@wpV}2&38R;Xs}3yr(Z_5DSr*rw8nk;Vkp5Csia(C!-ET zkx0D*C=QV{E!;Zp!x*Wr;-DuIy#foJzdnI@sRkaYiRP&p7T~G=LRGbJHH8v$l7PE-pb_JDO*!h&G4AI5>abcp-OT$5p>RbO939k9 zqwn5C^n#{1m`S7{rXN9e+J>IY-3V?li$9}hA2i)gWk3NcKEfDFu8G2 z*=R6tMHH<8Y?MO}RhPKy%L^-CbWQ{N+G?p!(2Sq1s|4$s*tF8w;Ui zr9-86KlHn0qH06XrZIlG4}_2e|KtmNTO?1STpnrO@f=Wi@3MRy8>-;;2BWUEu%UwH z6#R>#C2c`(w#OAy>~;m#d|cvy1b65;iwq4=lSM-e6Eh7bA7o2}D!9Vh!MEijbZJ0& z5;*4^G`t{EI=Mdas=`30=#5M!IyC7vJHSq6#6$ow%#bJ13-(?Mk(8-p-5;+7kV4Jn z4F?Ik#QrE32#LBijhRUBQI|CF*RY~7--|R1^rQKJ;>&>Wpn`Lh2hMTVppJ1WBcKlV z)HzUmDXorDO*}p24&p~Jtq`B3Tn(IPAfw_+D}XC3wET~$=gs5VSY0^$xwk(9%_9+g zgpsH(+q|?U!v1j2H<-~e?r<>Bp>ZAnCKC?64De5AB`d$GpA>nGjT(#e3{x0Fbw76i zIYz;n?=t1&4d!^ zSugzd*k51c`(wFbLoB1>J*wWjG%ZA)Y0eb#d;rHEg8B1DA0P7XiUR<+gZ@n#C`AK8 zP>XN*5kQ89YcZq|T^}xocH(o7Y!c!QMS^umb;x*z3gSQ#C<#hWcgbMOU2gCu$%5!Zy+bb0V`WtC;s!DnWnxe*xQ`HM4VH>`AY3B8v@Z+!BxA@(^cuSr86Z^BLCQd? z!v#S4n~WrcSszB+N8Ge@ahmRFhDEV+)G$aI3u}u2U$B~t&j>DDhGR9TYXP*=n*D^% zvuR7fR8VmpvnH(GvXHMe(N$8pm6V%y1!K`Er4v$q6*cKRVnHjmLdI?eTzh*8tsde2y0KtUfE zN=aMXi;xI{rNyatFA+iKNdg%Mm?qcLmTL#93;XNE^S7^6*5~K2o7crDF(d)|IU!a& z;43A0lBEBNfr@clxXJN#VQx$)!o>KL=EaNhw3xKUBfuzbcd@@iN$Q(LRt%{PKR{_s z6p?_@srB`@ufKLxS#&t`lDJN;tk5B4EdxZ!tEot{X>hnGxMC8+Vg{45?7&lSOg_zh1y3Rtxld z>P}P$!QZBspYUJ@9lpyv?vwO#1<_kxtSE`PD0Wnmm$R#YdN*A2-sv zZpUaED#q<^)2qoF$x5AQSMqQ$LMf=_+sNNhqxZ|jEm1;1zQ?~O&rpY;xx!T<0(nAHSsU{pMv-@3=Xq(LEeNY!4;1GSjqaOxhhd!G@2`jucCE311CS~J1$u9%?-s6F(+{82 z0Z(@dwB81y-P1G@wZtI$@9aE@hCgY`g7H|+shCkil^UNmjbDT&Oav{rJt5mA9=7cr zu-Mbxy%?kP8LdGk7rP0kXwdbs2Ud z(ScEy56k0uJ_AN~w&+D7CrfrWD*LQ4_!%(NS-1W6QPcRKC!R1}<7b;?S1dOZt)eYC zqt6f=Li9AqNT_#^p*oIqH5!`q*}`4KQtr2G1JkyrA*0-}w;QPM9wesRRzoa2wN5H$ zMTkvf^Oj-c`)soy4e#B(IEo6xw9vCMVscf$=9*)*P2shN5t5bO-xPf zX{${g79P5eH}cRo$ljtgnrMYxRwo5E+}3@MUUS!$K{^91UORRhy|(JHdu?{K>Bj)Z zT7TU8qR)2>AF*S7fD$yo4TPq6er$-D1%*73Gf)Z!_ycX)~1>Fd?EcT?0)U>mW2QwI@M`zK@0H$D33Pj*e{PqTkHq_^42 z>6h3t?B)z>Z0OT*wVOBtY-H3vPEpoJ?&S=i4X&6NOhriZOW$@*SPFOg$D~=8Ta26b z?z_az>)S529X*ut#_o)f(uM}KUrwcFIVOu%nxPG93{kz=rypi0hmPGQ=Yfs^G?$u| zM#ZW)(G-I;(@o2=t%3T+mA3Hb1zhREPi20a#PTD>D-9J1FKUFg58qCBMo*$`_I_=i z^cy5hxFWla6ZUEB*AfNnF$uqaMm#}Z=`_OeS%%4F;wFdRQsohl4<$t8XA+6hpT@O8 zI=ID)vzGk=74erzZPmJuu|)Y}+|}XQznz$f0eE)uv(t&!{8zV1G>iSA*{C<~RB@VA zt7;4X@~&cscHmRcO{bNrk5M2};}0GL-`c+H(;6!j=(G<&|hY*2;%bvPKKah3*rjNDF2&$Wj}vXwoUGD&3VVs+U* zS7=?$)Cc;;lGJL1LLSg3^TxYLDgfwyp8!fb;DC(sNHw`6j+QDV$|U}LyWJ%(>S}D+ zH-7_TqerLSxYL{fwT*59=muSUP{qKz9moCf@3yT!SFvOI@Q9m*I>?WWHt+ z&L|39;H4ZI4!B@731#@=Pi&H%To*C;u#erf1Z6anSgQ!M#)}8;LM4B{^OvEc*`$af zL~5hZJl(vvBo$e8d0V9o^dc!fRIrdcnSDOpTp#dk?%)nD7Wu*Q;;w!lfJcVdTJDmHi7ewz}NQ z)eT@`pQFC-5UrW(A_RcC69O%r3&kQmV^s+hlr0_DtBcAa=3&;)bHFgS2+|y)#F#F3zPTrm)Np8)>ju<$8&CjuD?RrP3&W3Owr@k-#@1}E0X zSQL*$oE@p^HW-QaL*r2@1R|ZSLlDy0%mg5v?c(60v#AL@y4(4nqqA8wMRc|-1{)nc zFo$K{nY@e&Uh|B8Wf-u&-snTr3UFg5uKf>K|6uc_Q^nA^=+iq18x)Fo;<7NLTSi$3 z(n(5hT;j>FF0T`$M*HlN9#v-Lv@NTiRAQ-v6Y%@9z?0+Yr!e5;KqB;Olm z7$n024bx#rs9~EA3^q&`YkScoX8hBja3h7Op;tNJu&qPL(KqfkmgsBiY^rPSH$-H9 zp}1f42$ z`j|keIWj6R-HSf9J|n??2gL;j!#MQUQ$B$ z{D6Z3%|!CGT`zUWhEJ{wU`IkA2Zz%9<%uC<1~a@t>1W8{H~~N~4n&B9=7$lVKlL>` z=pE7~|F>F=6Bc>4lMg$9juIf+zlkrtCVt+HF?Rk_d-KU{-Vn6WATx7~6AP;X9cWk# z^|Us{AdfXC?%ZP*8`N0V^;xE44B*6S&M;4?ezIVUmu&e!`c{L~LtFRihc+CjAkzG_ z8X_={RT0xWb|5k*CQdfg4xt&mb21RX_fb9%A@V8SuMec)#M&!FB@Q}?Xr0icDKtHE z&N|E9xcLqHOX=Dxg>fop?TLznssw3V7Uujk#Qz@2c9g zM(?RT4T4#hi&<3@_Lvw+G=2p+uNn^xQa}S^#vo zOOnQxf&f0M(w7jF3PUGTbwaY@Nn71#bS@Sxy?2@JsYIJEwoOSzl^)X$ggenQq`KEN zeMS_!Fuky->c#}z>B^-*aPN&CgYvNHMOwg6zX;?(52&*d+SV&<_%?%6+I^2OZqee} z94ls=p^IDy^%pYB$`cabhpI%S!iOieR@=ij7+=*R>H1Bda%IvGlox&dhA8Fe8Xlhb zdT}1#Bxo>sCimGdZxXj;sf}GwfJYZUtRZHSff1Ig@x+%3d2(M~>-}nV{}qZ#Yuyyy zd{}8ylt{#D;!RqpoWzqtgvwv=1NY|IT%`1AhoLw5N6>%)EYpC&(hJ7P{bC&wrcQ&h zdVon#rYmfmjJTzofDZ1&+I)4;0!<_4f&^tyY>U!3u(~owkPt+T)56#=3b5WRu6o0f z=t=tyh`h&JfYvM86B&b!)B;xR$OxNgq{Xxd$xaRX)LWsJ>?_%Gh~#@J^HTgJ+fql= zVOw|8HQuPi9$Y37ek~P2rk_;xkpdns+8KpbuJ9VeB?>RS^B>7zJ~JRv21x{Wxh^>kG7OW ziXL6O%M4cTf$4A4W`c7q=sw5Pbj3ejSK?V7x+@k-Qr{*>-f~EQm4a_j8%goOQ5%?Q(#&0jkg*G+Z6(jFYx~eW{PF7YCo1-w_LE0B zEcJ1V`k)v`c{lxKg7tL%J`Na`ceg?R_Rt`5C+O6CHe=tdGnLMvNoyJnzXKi)MihW` zAgXaW1U_1c?Eo$W6ycc}`kcUBZM{>f!1O$9H=9sE+gtfBv7La2tz5}tg$kNaT#yUB z3@_7E5CViYWW!BFUw(5g7ldm^niRZ(G6Tg-UlvLrn3le_bC`^4jde?*KEhOx#1I5# zsYZW3GN@zY22D)epTSg6V|K^m%BF@=l~|xuN0o^7X1P}eoM%app=*np*RvZTjfXf^ zC>)iow@oOPUKd1}ZJZ{z6yXTd6%Em`!Sh-1bz;z0pqLj?&;iHO=CHn$2b$=Ehqai2 zZilx^c9_Lzv>dQxI2Bquo9bGtE`g*k371I4;nh0U5W4%9&-K4d2+J@n0qp9Kwe*nC z)Nx*?)-}s*Ni?E+#DG8NHg#2Ac&RFL$rPU4>0gQR;)|bX!?-yol-pH{7k_$r#WED5 zu$-D<@WkEWg|8325L#)LOY3&(BU$f5X?VGqgbjII4|5=%j1D zG7Gy2Dy}*5y-(?f==#EM#*dl@iSt}fc?pEkTh=an#LYpvS~mVF_INtT+qny;c({_q zAs)kewA}>nS796-w}I5b?AjBIG2JmBw9S@`{thos`X@L?@LYpt{j76G!#Mk8v7V3w zLCs=A8`b>S-{kUc0`DnuWWQK%$2Qp2vbFCAM!@jM0FW*UzvIzCjdiz|R|j}En$9LG zBp7J8uX^!d+6a`~bViP${66a=<)@wBId!KUdSjB#V> z*oZM-EkYr|;l0}ZwozP4uVS$djr`qyzhVx+`>!FMV)AJa{g8Q$g2%vDH(|)XT?!G| z9(P2cB?&bTjR<*$(D>TtYX?rLgw~?*<6>6J#?lz1Ybo^)RgIW8kJU9HAoALvM_6y? z)I|XblPSa{)lLMbu5qFWs&Py_Y%=;A0>+zbO|ulo<^OF^TyH1W2QTK7Z&g)NLTqoz zabo0*fWrI)0?c0?O#pM{-jFLpihl*L_(On)Sa7}k1!G6)Iia*>Ni$!Lqkk9pIjcUuDmzpwAQQX3d;xZ=Y9$f58u`VmS%m{-rzoG2WbC#;&Susk1;x< zYcVqVArAuXg>FC49NL@pJv~lFWC_fRH z*{S-0r=r-vR;B>lPnDu3j5qX9ERHQ^iznD=(osZLpb;aZp7@()Gn(~6WLTuXs5aXF(!x8x=MDt>V;iD8UvvECyYJO zM_>wF$iJ>uk(R1g%3|{ZIQXVn%IH=9pw5j*9*TBtLokNHsUGO!Pn7@ZYYpkIWIdKoJXT zeSlu$U21@j4tj2v`x{pgwVj{_@&wseaGtET6f&EzUiBf+;a@^?RG7#wZ~XGGesz^o z?qpY`yDT=E2QZk+Sv-z~#>-Yb?$ZxwudQ`K#D(-RV0FUL{m{}CLC2zBMkEa4DRE!X zJ3!BZ3XB5WEtUteCR)x}(3O#Hu+jN`0g+kUk&5uJ|61+-GX*=v{-l)jLqTA)i?=TK za*n$PD|NTJSrZwY@QdjOvB^6VEmhmgKot2ILRl;QhmdyI;e5czz$s~u1N#MPGTkjF zEOs|$k(!Ww^N&dYN~7@068mQ6tVFj-@tp<>qY@5$s4cdzo4cros-63_tJii-yWs6& z-eUdcCCVRS1E^J^-Bx3sq+CjUt@@qenf5Jg24lejNmc*4j{f`hHhkHa^?sL zUGHxqAtm&F-E7wv_CCE*>~Rps0Y#qu!VWTKgaYD(5io&SH`y=`XDW`~@&bsRgx--T z$in?e9cfh^nvqWcmPlv_xTn~`hjp(W?O{ikNXy?n%Sw*ha8()glOZSHVObR^2FINajP=(;1WWJ@J1O{zhZ>88FpS}%cT6bqKC~Cs zsXF~C=pvderfa7w@vK9!P>IJB$_kH4>=#B*P@XUdh54>m_GS{bhWzx+MlxYEGm{wRxKkzyL8twg*T$BQxImZ>aP3ZxI zf|JtzDT8C+4dQVqKn`jVj#`E9AQGpyKBv#QBw*T2x(8Zhp{Rz^e>ASAn^|+mSvNzt z3Jf`;gof;JW<-12W;)B}4KNiD4dN+aa-tiG=BW83olHi}B*a{Xbr6&HMf=)`KAA05 zR2?3GwxjHT%bMGthNULgqp|>I_)TCP<3n+P$j7@Tb3CGt8ri$p>gF_bW+P-dVR7#I-kn@N{BQU#J#8NtJTFlD6-g~!d8n`^@2 zjE6H2jDh++9i|sCB2EvH4|>g~oh3vpl^6d}OsCvplG?GxfS zA4efA_RuhCGodWx6f7ux<#(lh_EDax@}DpM!;^wO7u(r8pO1^*+~1JB=5(o(@ibt^ z$H`7b z@9JDNeBXjkUn0IQr;rGC9ibx8_Z5$TD;5%dapRx}A<}2_)q*zFu%GKV^aP3b59FaW zwQL49$9cYk=uhxH=<{=kj8H#DvIOyv;fCmDmlH}UAm024(NH^TgH;@Gw8bgCJeoz( zI&?MCbFhh|(4Tq#i1aeP(FDKVu2#GU<0Km9caEY-nBLy3(KvpkyG>%kn9)a72G?MV zWDSSm55FQ2b-Bmh&u66N5g@3H-~882b)Ht@W;;S4ZqXSEXNphfd<6g`OCO99zEcf` z?E7Anf)ya6LN>@90(JV79~`9Ns1}FPWr@7?gWNd~1<5$)M22pKi9drEJjMel9haEE z9o@hd+}*rQH<7l;@@MX?zf~|G+GNb%2NE*f1_MiE3SD@*neVn3o}wx!v1k{(?lWcI z>2VHIy1fmzR?P4lko3>sqrC|fryT9p9i*MsI-}>hJ=$AoP(V>4jo9 z(3`G)l>1cD2Al!6^qiG7ls-7&ZTCnW45(qe5KU{tOAVU0;BLZriVx!yK^roa>X;lh z!%TvPQNDmdZXuEQ}-GbDVFz=M=%O^C!zN)(-47UGJ4CAJ_v z!J*UX7~(CJ#-g0Z1RT(l3h|*c=Iz+&88p1@>J%o>N!!6O9v_v2M$_5KTm=Eb!pb3F ziW10FY6U!!|5u}TG2rMGl+>h>3?77s*GZ2d`mG^OgQEo?jdAe*Vv{<$PMCqzLE1M19 zgjK{)j>QfYnXa(27TJ|c=kr3(hbG4phM@zMXd@vbrT`X7Pk+e(*17(fS_UX%G^v+Fn5dgRr8Wh82D2T=K1#e!fusnPuMN(p8~yZ zo=SWbMjNvKi+Gb{2!a7ncOPdH?q9S!<+nqN{WJ9%&;R}Z{N~@j+THBVuu^6c&ZjRw@_?ai`1qiu#W{P%jXfkvTn_ZdB)jQbBrhFGoc&TelOn=`B}HdyAK z!O8z#8-Aww$Dd)(38CYD`a94@aFMTaw!c}NK{%MH2sl@J#qj@aOl@C5xf>)bQrd? zYs6&NigUgNvdwmXHeErf=IFO=-knX`v&DxUZe1?sMDN)bzdeH*I}R9RV0C{33EfQJ zFU~$eQJ4$lvp+?;_RK|nv~^D4re}x*mRBytg|O3LDwN_tFy=2a%qmgsE5gRac-8{< z*+P&L1{KXU2IFw~JIvU>|1+v%mqwD9{NKMldxaD}X7BYI(H5Zh`t#`-CVbo?J(D~T zZnwi?7O|KN7bzZ8_3U@Q?^je}?)Sg>O|#e^n$6h{zxlsD`4g?}=TC7<@cf)K)md&q zro7(=la2de(CP4KNVmt|y?OpM43BSs(?57iOk8;&9;*R#U$;5 z_>+T{8(F6YE44FD4fTO!@D}qoWfq*8-0wCBYi|%{{(>p~#BK<%-%poZKjrkGaiWd- zAEzh!dveU2?tE&R|3Y`@@2?&Ry{Cxu$4?c$Bkd4Dbb|si--$LAbg3}9=hLRyHjl%h zV|U3Aj;vA0i0u>Sd9kw_F%4B#^Wz*3pVUuTgHyRJ@w&51jD2V_e_53Bg-#HK^FFZTctT6asi-w|3V7bq;i&w{VBeuq( z8X&|njr}q#^*d;8b3x`=d$006R+k%&>3JXfD}s43-V6<#vG!=XjyFux`DhD`VT?D` zxc>lk>m1D^jn@#-XT_c9d+oWecdupl0qC~zA-zYtOd~w--*5NbM09z8(39hc(J>SE zIzA43`W}n>@kpr`y{s&|V7Rk@jaogbF1R_vWYiOTmsA0Az+A?3dWYlPhfGV`J_(0tkkC%=H8S zpaGAOl8%kw!9yPr!2Ok>qd}OW8^eU?1pxf4I)7q~IGO;4A#c15cUGw&L<{dpi2%7T zDQ{3K3puBYq03fwC@DYRHJV)0KPVUNiq5hs`L5mlkKVa4lN;-y&kG)k554HfWRThf zD$(mX>QImGHDW6uX6-eeWm|52`IZsvy~Q=WBPiu=kK(IGomjtFPq97yj%WSZc6W!P z-y6+T7~Jt{#G#o*xCHVAWx!tJnU~ERyUxDI>tNgh1BnwTXtJI*9V^=qvg9;y5x?W{ zQ=|WXL=m(^cD&)caOr$sqe?A*aBIG6k=if@!VzLgL1Igl$dvJKbK9a#hyBz9l5?jJ%cTZu#FreQ)y-J z=(udn5vZOt(_4ZydN!W>3$D!3xKg!=*g$G8r`&%IqH~kBMAO}<#4ljz5KAi^(w5Q#>y_~X{)CU zQPiZnWb6;1o7Tl{>BeN6$K^ZGrv0Kf)>^Hr)(JShd;IEN{HfZiBA$~S&+9`E)FAEJcjFf7T_)uZnJU%6fe)-Z#@*64*VuI{}QGEUef-gF5W{Kw12JKn~5l zAc)sL*1VO8q1*Q9K!*ND+qr@`dOY39!?<848cYXaOz2VSe}ZuwH+x$ma2|3G4>TfZ zaY$cd^5v-?d5(PY?Y@t7VII!cbkPnc=wskKGlu|=X%n6wY#A~?#yzECD%|%yy8g!j zxv;(}ey0IID#~8M?m=T}=IOL=V@F@9ZPzJft8Zl3Y9~ad?{QIHV zqd?5P$at~vuNaO~3MUP|d2=6e(rn6?w~u6FwcNd!wp!+BBo8zl;aR<4DpQ(~E5IBr{zgcSW)rG?3_S0R1;4XF!19U>77HG)V3a8kUxo zl~tWYRb??V3ysENUUdeYK>MN_$o5@l&;g`t=yQ*VjL4tL^2lm%cBP@sa@kqo9v&VZ z9v&VZ?&7P}w)_A##|wnPE5X7K+);T552ZJ}tpN;I1rOynyzO4M(;wTc_(uaR0p_#( zRYhya-%2lt+mJ~%Pw-HB(ApSiR`6)QrJLz(wyQsio&T*tb1enw&2$Ue&AjNR$l&Z! zH`7$krtgJ=z0KD72Q((`1zjbeG8Oo#5c z&rJ*jt#p}ZyTx`maXexmTHt5W7>G8cPYgr{bX6h6Z>nD)^pMhwp5Z=I7RlV|`vujH zdc1i3kZS1q`wa-6IB!R*^B<%!94*Kn)4YVIgO~Ugy8I^!1$jnk1qW^7KS@JDTJ#r# zj;dSkfxK~L`Jhc0rL|CRo~PSet0|w7FNcTdeU^vEdYs-J(gnTJV1rSRD4p4YN8;st zrlV~h$)jytnHtn3$dte2)4f$;6kiYWcvRrXF}Hk1$pi&gkj<_M_BrZc4u$pAIu+6W zI`u4gz?$U0Tb|3d3;hA_)va5^7FIW@dEBqG*4$fW=IWs&|Y4{;JGO3u!wZF zN$VubxB)H<&1%gR`1X_U>8$G7|4>0a&xZ>d>bPEc=lva@4lxc zrrVq!I5gn_m-8;ox98cVFChk$(V0KC#Y5HKuM3xXsOgK3awhmEDuq6B!8~%60&?~> zQq#URgr1(NV(YSvvJH)BZcZa0ja=#=z@YGm+v&z)#w3!i&Y{S2Z*^0E=;yN7o($T% z1`Z-cGDk)ff^&f7q5U{xgAD`e^7?nmJJQ04XqQ-)4y5%uPGcXV} zVwsmD41?IX4f~#>vNYFN?*1OX?-3rbAfe$24Uk<~e? zq?vqn`Zfu^x@|p%svyor1<}CattGI*Pm$d@S{R|`bD#anWl^PqZow);mk5fM|CmH# zYqw_DGc`3;Af<(FAt;O3xCT8)1FS=Zg{+huH4t0ZJ=o|c`FjXb2_j^0M{UbB4ApCp zW-0LeJv@7HhQRj4RLr9~ID!n3yv8YryKz<2;JsB`8`@L5)et;>C}n;P4DYQxZU-O= z7Mj?DQo#c!%x?KoJMHfZs!@)-x8y`ephT3T(5d%ITZ09XC*j|EXr6uvitmzn%85#XtUeW0syz>(NcJBs*#{%d?BH!IR!96zjHvE$0QNlnK zcjEBRbM{;C^0`|Bs@%D;=wiEt0&|C#YI!}o!eJ-Y9LCikM(Bs@N9} zXi+?vq12V)f{|xWHdqXJ-CvZrUK&b)f!~gRd_@<8Luq)JOd=Er^o!l?V&}sQMIPtU ztM4uh-z>&-={s~J-%xfN>BE`M{tW_u(Y7){&q20sO>YZjevTWY#CromHth5}OM zHdBK`aV|~>>=0gU9Q-aa-hO&&c&@~823;h<8J$w>5quPb8Ou0W_=id?V;I(dTHGHM zC6XTx+e`tz$QD;~Vb0|i3)AAk3>OJbG3Q>lKnFbXFGQkrN*%C|*^H1~iLM1l6eBYF z51P6ZcT#%S*#>?K2B7zCs3-7po7sDgf`U&MvY_9N88};wVp0!JMb)Z05b(+w$on7Q zAb}MJ%SludpwYXrLAN)FYnTv)i0asI(+%AM>)5ujEo+#*+rqM_AsV;?)o=_|`4&l9 z;MLn3$o>G?sbk4XoD{c|AW*X!%~Fwr*ot9gx3dVcybRcdIPYY! zo}LFTVqq4ybzFIbf}C{KycIEzzei>l_;9x4i@)I4S>lo0vXdJSGD?q$Lh!x^Z-Ez-dCrLLZ9F7HCcM`rIMZx<%z2ijH(r^VodU>8v=wPRmfzTz+2B;UME zVpR56Oi7*ljc*O2>hrZ=^S^DV`seW(zHLK{zv)t^0iFY2#}P|zp)LkV1M^tuKRmY} z<>Y5*Z7}*V!hzq$UErV@c)E8mz^hwkr7#N8Zc7HkP&cN9=TrHRD?N+iA!6*e!!W>^ zX}cffk#NBWxgs0{1AGt`dWbSM&?qo`KSm9zBK7vfl6g6<7Nft->cHbE(JGxm?fR|8 z%Dm$RT?Gty>V!I$0mr;Lf^GD|8cf5Kb`u$2nh)^bt;b{BasG2($GI&$lEaH%HCP2$ zr-1}{u=GKPO3PYw_7Bq&ehdHW1ZN0jblMrd|0YVW6Q7ysEjXky6Zu{^)kgRX_Z0|e zz5);B5AxP99J}TmTHDh=uaPs%-ZVGd+vzNox9*COY^8DPh^z#8&U6jUz^jiMX9n6u zH5>!*`2f84IQbd}VciuwoP%+3dvXelUJ%iR+jf6qgRgH)N z_LU1i#KN-hTi95YrsIV!dlq9Ao-)n`8dpf&m9e*ryCzhgcGaJ7jZ`^Vm9|@zh=lQz z=r)!IKDD1MGunv!)k7P{56?xZF8avux?L)=RURi_em8q(?2}d+p!^= zOt77N^A?xM16iOjd@GA%Z!_TyEDDj)T!EVPhWszy!soyakUk4NRQxQ4p)+SO$T^oq z%SRO9?yoJDSvEn^cI5f-e}IO3cJO<<*?uOl-9*d11?iC|=&W3gUcmiVoS)Oaa7LAO z&(FUmA93+?k&wgt5wgW%Jfs3BXiR+8cTnTthL|(-@y**MM-3UDO7*aWYJm~M%Sq}s)HX>I3rM(iiVS8IIGe9vlsfK|AboR5T*idyU2{7qMW$L++p7pp79}j@S|U3 z8$<(tb-raqs}L_C7G?E=NbA7EzbH@}OI=)H;d2_5#|x@DE%LH75n$@Qo?@+o_pltA zC`xBcqA~mcrwIlOCU{S~3mPjd5^;3Fc(D|4sd6;{pY(?7u}BZZ4Gdm0*9Ge_YYp%- zws*G}y+SZ>;5ar?x+__c&nD$q?J$|3wtQzEYYh*QrHQ>LL-RL_)f|gd8j1f8bENK$ zkRbB(bdmI>55tvC^6J)&-|jdNpsvS!s3887Ap(t+Rs(WIiDqP{ z?K0>sCIBG4kyBwGMF~kcmRK6maiUsuIm<98l9tYB|$0D5J z*e&NGu!o8Gq^{UVFcZpK=+_POtsjJk=*$zmdY6;K%|nF0t)OY&cmOW@3jVg`O0te;O4%HN&)$5n^mQ5K zgUE&7^m~{Cg)9&#LOYqX;v6O#7}_038;W`!!Hzq;8;()nU@YRT2Eg+x4}j3aM?f7c z;6;}Va}>immo4aL0|zvMkS(5lQ)T&zZ- z0i}zBi$qlV0A@KvON2DbW>|rurtfGnbHoJ7T9a`5v`_MUk;zb_sqDUZ^bSoCLMlUx z*IXif5GSdKW9)Gs3lHzA@uJ8@#KsrXyk}umTWoyME3i(xKEugMYkZMi_VCETCmaS& zs3Gzg%F5)#^fEo+1;9)!^dw8^5W9H;_ry_HNNJyO=_EkBH}@(?4(&7F+Xd?gXCR&tZX z^t4*Ztr9$#?eVf$?IH6$!bK^vw#4_#+>rcjGVgkv$9F__VVqwrMaDo}BAzOYW^lZV zrcF0rUPSWdF&@s#wlBs$PNzcU%*|1kd?}k0Za&K{Wd%PJXZX%hKGY@U8jv^V2o8Dk z6^aJPb~zsETRA6J`3#zQc@@I*i-0Z>NdyDMEHk0tgyGgQD@wI4;z$+>&&}bBOhR?P zD<&U%ON!feaeEl}W$HO-1%sZTzNC23qH_rEf4g0SEOyR?jwIe$JD3 zNa#g2sg#+a)a}LOda{KqK=LaqGf-r}a5wCN!dX+#pkfODBDYiOh&%~b5pG_5gc&cp zaAU%_^`OZvR*O)o`V`Ani#+up4ILmpP%J+rbg)n7OD}E>5!K1O^jy*e;WzUZBFsiV z3$L$;%>+o|P6rl>*pTwC2{*7?B7sZ?-){YmcJ4sEPj)V_{9xxoEpdbu7ASGSNY;k% z#>l8IPYqlsi*hxjrnnrG*C!gs3y53U8$4ruF*vHh(I*;60`HQ@b4bTOnaPa(Nt&k* zP2m_xpy6aEiE%PL$YmzhIL)PA>v3AVhH_34_?v`RZ481(^w_k#V5k>4fY+R7c(RlT zJ+^8!oBdiMD9Ri}j1D|mxyW8_&Xcy-!llieGy?0@bhFGAq zkSyS3(tl@YXv`(5T}kycgso>0T8#Z3E87myEHJu=}U%;Efn)wv$2r4lXqoF}w-CQkbv_B+H70DSsbhq7XC)B`2S^@tOk zT;_OKBN**84iV`AD^g_sptby>YC0BsF{VkDE_vU^DFRW!bP*Yju0p9bZ{QJ8oFgt8 z(08^29}Z0<`$OY|7*WuTC&$L4Frp+b>nGZZo#GK7NIUy67C>ZIA^VIced*Yr6)0rr z50vFoe;|aPX88aLQ4N$<_g%Iu^h#Hv$l;J4P zF7d`u+8n+vsD_ZkCd4q4sniH#Yn{S4#JD-;1J0g{O!i=^>VZg-ccZQ=!j%WB#>r?k z4W$Mv(FOMk4%UXfvR4o_ICi2_O(pTbsxI+RG3~P!T)jb*vU`U#H1xkP)<%)40L>QW zL8t=snKgLIRH3Ypx)XQh@dSs4bWzS{p?c@ZuO>tBbr3# z9+q-yz-G`)5d&g%MHrOKHX-_y8{KPxsR%4Ty+Ti>DEYG=8xW$%&pU;#S{jc5k#Y<= z(ocrsOPRHml;k-U>PF%FGYs$|E6ULoqIRX*fC7-)47vvb5Sk_o;n4wIISS8j81VdR zDm&+MTd_}tTQ5B@uf%N;ZdhicD-Vts2u{B)6d8JzGLJ-80T^q(l1BKUF*eROUi2#f zl&%n+5YdD5VuYH)cFHE>s3+R2w%>_2@mVGc)}GGA>v%qYE%nk(aUm;wzspT!QTp6e z_E?FU;?60XBY~Vq;?O>py#OH82)~qK6*}7qE1HJCc;F3xk!eYd+NW{yR#+B}=*G2% zbZwwDj6&HuLfdI9+l^FH;dLaDd=brYXC|ftk=!05lwKbaA+VE$UPjfL5^_jI|;}T!JjpoW?2LKdGtg@eE;IB%+%_)%0zN7*5&M2m#0( zyVMdF5))jzgm}y&=d}SUepv|v_PMKUDGn)C?JuR159-CUkNtlXdT}$)GO?6X+dL5y zL!RS3=_skO=)#t`SEN&!uY=kOA6+qCwDlQanR{py;hQd^qeP_DNER4D&EE=_1jS(^ zw;(?PSjyt*Id^01bfg<^ZMUkulBdDc$rPMdire=}=n^ zwh>LlJNe6v={v+HQWTF2F}yJzkN(!e9?XxK%P7aR!ZxWQ6nu zGR$wWY(y<{>G_Ktfw-+o%PWt!+XTfx!g7_=zCboYoUz1Dk(w}GZMC zidOhVSpgwCKrT9FJ1{~$$q+H8c7lgeWMw)a9Hb7DH=U%iyG{jrfhVbOIm&e|gGrD3 zs6;GzVh5p_Sx#&T{q0m&LjB9T$o>e$2K$*>;#1-Ivzi_mMH6^Qo~D=@=Q zH7=2&AfZ=5{+=sE0r_%JL3zBhWj-n>{5z5bXfcps21ysf1El6g4OZRJd4w!v5B2Z6>>VqBX+*TMT%d0cP5g68Ys`H)Q`-);+Zg)Eu7fX*#H?pB3<6iWEsV5XBucgcLg3FQGONCC5r8^;CBRKv64TX zRb6oU2zup+H7iv`B)+O23WZ~76w^1s^Vy3eonFYrmq0GlvFsL{M>Q!&qfE|cSUVga zvCME#6-LN#KX81E3UET^zo%`REIgS;&-><;07zq}4>nVoJ>- z^i-q^c~mk&1j}$y%2L#D<7FuekkUpfZ{rjsORu#=Yd|?e7)~A^X?l|$rqPaikP)P^ z)*v!L*1SZZ7n6_c;B+p_H-Xh9ymv!OonSy5(a9j<(E>dkZv37)nl3b$hh@!>c+59J z=;caw;X)w9<7k410m3<9fKh@SMsx}{T_`1vOD_u5k|k3#pmLX&fxu}Rt^#^tE-$uM z!O}B)vds8dyAM-51j7h6E=1wZ3;pDqXMiNjKw}NcSBHf*g%ZF%RVVLTCgz;*IpRcu)s7 z+a-mVbEI>&6x(bLqT+RmG(6kmk-C80`C_suK--tk;!~nCP|^gr>{oH9;!-yixoTMr zSyhlINY;!@eQ&Le9g{*hu^8!%M=46}V@URUI`2RU6J0nEnzugF2w#EsJ_g-3B`rH} zyEfpY-s!(_42>4LI)IdPgM*nHEyF9Mc9z1H@6;;rbRVY}c!r6&wEN|y(-OqSv^U6wIl4T*%P2t^qsv5kn|x})s~*`|fvbAX*R z>l#oa5sVP?m{X_-8z*m3utNOY2XshdLbxgN;mB-9;H8K2LZabjA`g=kHI|1Mafygi zDWkd0AKn=YkSzYuT-h+|+dS2Wf9zC7u8}H90 zJo-74W$OAFCHkD~iXzl?kZ@jz0%e3Xj{J%h&0=wpBE&YyQrM$muSHR%ahRo}w|J;o znSmmM)dAvoA+|gvZ0}cB4pEEO(8r>auksqf^B5;fDTO(Rs9`UoJtGJc?&uyV zR?5$ef!RkYq;{$#%c7*~_9-aN#Bn2dKgeCE@P_Jr1MRM`?zvPYfLYlH|{3I;NI5SP5UgLFZ! zW%;)BT!_tP)m|Dv#I2=%$5|%Q>S(qvdWJy_g_>nCJ&+X%oY76FNYG#|h=LH|5trbb zkKhKwBP$iTCJcXIAd!JXEmgH;aRE*T#3wq;0ec-SL`N`ys6aCKcISyan9;&%YgWZI z3)wwRN_uSNIW`r4=1-`G8$zg|5SvblY&#-_2G-zebE>!A(D_eAK&_r%_mc{0yn)U$z~M6Zz}OL&HI06kzz zyj&Gts(U{7T~Z>)sfVLC%nq#H5oLS;v=%#-shfHRpRhSUj%^u65N&aP;jv_2I0~Y=hpMd z+P|0`j6~b>V#cl$sad+n@;S~mD00dJpo?NU3z9QW93kZ3fTz9sOJs&tt#b<~5j7m- zMxa@~`~cv$z%_t(4+ZwQrb+ZK3qy`bu3W?)1zFXYEConcSlsg!7q+zy;7u4 z6cD&6zKT*1m#CXj%HN`BpmajQoGw;~|iF^~Sn12~@&Xbdu5v_hE9vnDjXlE8mZDs2OJSu3q4R=FthZrIq9cm}Q~+4hvI?!L z`2dx}bOBD7aklCQv4XNyW;#fuB4z-5JDBGF5Rfp@x~yoT(mS%HWk9gLWQXI5wM*Y| zEPEp(>}9;|!E^4G!W_1?gG*n|E-!uMBcG*nSst{Ctip5LUL;Wr9hYYEkdL&$89=tp zvpjii^9(^A91ns(jach4ez}sCz52nG!<3#Yh%TGCv8Rni_$`Pu{E2(|WtGXIB)PTt zngWR#;d4fgD0w9_resX<6AO-7^GFWT0#&!A5;e%6l>A-N7!?^0P?=HIv@e}-<#-|g z3}T!{SFj`2qir_t4Oev=PeqZZaGKyGBG1L5+RJ%N0iFFp!Iow;?GG!ns-FTsr4$%*s;QaL+IHOf*`bR6OaWB6ZF>$O04x^JT;s&6Y4K*^! zBJ*?Cw7d0xe%`>LTsJ*y#+^mVQX!cRWNz;9QQB$CFkkEOIXz2*d{FIPlnj>IiH}f) z%tk{q(RC0>zbsrC(jrX`gAGO1!{}3gmZ8*K7v7NGVimlhi1JQKQ|C%!ykOa|pDaRF z0*Sa#d%SNg!pl^aA%+0xoYPm))L|Z4FJ(1_39)*gETtRwYWsJjjm2gJ(E)Dfr5{iD z`Mdby5}m||ixMX3r`EE_0ct5r{7)@2+0zSZS}a93lW2-WhwQCYvC2{*G*DdchqBB0 z0$w5`GR!|8FkHN_N*9U{ktjcCfD`c6NUQsB>$reHeIe9JgkBaH#<)FE14hUdVQ>u) zE>PXmOXdkcEX=4n>9d{|a?Hz7F7o1Ii1Hah)`dQEt)@Xe7QZk{FG%$fACGa#^@Lo+ zJi?EF6bawttn~;~BGl4FA$&)wf|EoG&4e+{af{Pq<~wp@AcRk)bfA<+Fek1T`;SeP z@me553Ty^?O%}Zo9c7VFNx~L16WNhvGGF$3(kfC(cDVRsG@_K(DQ7*vJ|QfxQh}#q z3hYMGrhEV}?MhsSR(M#ddZjapfsrT{HqiscI|DAx9;R=AQ0*24#lKFl_1wv%e{T{&TuB_-xfz4BJX9{5i#pU;UOy!XS^vQl%9e zfJ%DAZ~VJ)qzhuYNKG{mKma|@`D+n)gl9Bxa0t0D#YzLz{Zlx8*^``={E6o(rn891 z5MIrrqQ|zWWNft%YWmee8uQ@g{X=89>u*&~jy)W?++2?RjmP1h=7G*75`9H)XqATx zhK4Yr!@RpyaZ^ZA50@@3zJ*D0o6tB8uI3ARWsfK^Dao{8P4|$IWB|CIUyrEfNERPe z*8&P<-Vq0m1}e{$h7vDGh6g1m%$f8K528I}mYd6EmYefTp)A8fT08m1tKWU`d&C6X zxItSMha3dqvp+sNgVhy|?<98)P7cOLzq@hc_U!=8;^GvMCP<Rj0ypxL{G3t5+qaz%8Z(TDJ8csMVkYJ z!zg--05HVW;P~@BYEJ)o^!eRj7ne7|n>0=WlCJ0`x+WUASGXsG@-ho>4yMkE&($wU zu(L=|3Qd2u#F=hyt9br^r&&!?7XyP`3_FPE1v-dKid#WC3E*^@Av+fGjoidgqB0m~ z!6GXIzJtTiiEyGDqq&IQB!Nj_TDoIZ&1k4hau7V85MQnWJUU5&pI1d0td^9;YkaH5 zFGKicI-3QfB*1-P0kfOBCC2Zd@-D?NS*}`+WV6~2mMH{i0o0gqSt7l0YfeVS_aQ%D?~_qm%dHLf1g}^pW$D@F1&H$V06U|g3F6!5#W96>)v12YzcJLdewo+epdqUknc)nwy-#!fBn1U2FtIHeDz~T~1+4rjdOyFkBfR{A$2um$ADf|Gj-FuLn4@GmtQK;|24o(#^n<3_?ZJ|+ za~V~@3Sl>TmE?z5rLkLH#dJVa4AZ~WIHvk`2JljipfMtqiMlx#?^}aVi0mNj*lXmw z7UPa)k)R7shfPl>Z2l+!ub&5t64gy>eJcLc=y#FZ0cheJ2ALUF18Na3?P-~p){Q=J z6qNum?F!=uC4EL^Tbw#ToMmo<&dqe-n4M>g+r%xHMXgsth2M_CbkRgZ5g9#bYW0q5 z?CsNjok%ghs&m6}5UP5xglb6;qu@1(+zx#6Sgy?3T}!5DJ7W|!p18rxW(StkW*-~y zz&~sq&{zrCDvuMp>iQVEPTSf_c1@yHXO`A>fBrb}c%ROxykcMO7>Vkmdz}$Nc>oBN zrO#kn2VqD0vNDfkyt9xE9`O&Bf;NZxA@y#cxzUF1<4YSeRtJlZlHdAv%&m2Ie)RTX z#RF}`a-=Z&tDFydEP4s{4S)~O#?{i`YX@RWwZ^>(UO6^!P8%V_vkFfYE1)_ct4ysL ziMR&x7IEvLZKSMY8C1r*HVlj?7$pZF+l7YH)Zl_CkE-$)W(`=zufeFnELMhm_3G8{ zZm`=S=yEHVQ}+Kyeg!k+zd9EF>R9+U?O3?+TkBf5@!Q|3?E%4R^O4<;qoT-Afw#m{ zug}!k1lk`77mA%PztS4|$N$3iEJn(eAb=3a zspmNy#~0Lr{u?Dg%wKLVr~>8mP!Xa?-!}x(aQHXMuAs+tu=YpP;==_{so13UVitTJ zQtd^*75_G)YW-;_3`c`FW5BB0mRVFk#Bc{g2d~VUeXnHN=?*enT}UgzsY@@zBcQ#L zR>a0Q?A~5Viq!(5US+4P(LNIi9?FER5A6eM`hMr0Ktbl>>Er zkPNC3<@L%+k z{lG8l8Z4REy{Vc)cWbJB)H{>BXnnv z)tv%e!2@ZBM3WYFn>eb4#z9KE`dLkj^E9AKG@{uwtIGz)9M!*Y!4Xa`$haL9%xR}C zUXP8^m-PU%sonv6ZPWU=NC|OgmhA;D_}ou+c;Ur7GTAX?6tu_KqG`jRmm`e&K+A@# z(SvI=Vf+ zszr-W@Lw#MS*%sP zx@KuhjD2Uv63Z4@8ES-A#b=9 zwcm~(Q=xVu-w2_zExtFi@Sg7<(dZWxy@ivvs}Ha7RaYd&+T4FO$S*8VznbT%HvxL2;y zu$e_+>97|IbiM%ZO%qx->Q1UTA$<6!oY$H|Z|Dvet(gr-^n_pN8pwj-w@)tV97CZT z`0VOeV_!nmR5@)m0)Uxc>&WWnKOOHYy`f@C)xp{A=GnuiXQVdfkoVJ54$Zhsjo4uzRq#!bHxE(ui&&Q5Ka`}hiSAL9pg zOR#83Dg59RL(8nM945$jSh`cDhp4(L5U>ebt3xk-l9Q&u8+Wkhj2lCCja5KDa*eaK zzb0>~>{RE^+NVapfwT%IXO!;tx51~HuI6|HbhSj;%?MPH#~lAV*jr|^tNlBB_rf$O zC$yzf8$BMyd@Juzu@e>lh_bil9Sx{Z?N}sMBZU2S|Au2a+|9M-^<%$gEVf8=#BtJ^ z4m0r=D5+j*d%*TdvD3;Z(%&o|_i?}V5^TBYTJ+5X3B&1ZJ&Ve{jvj@&Y z#clUN_BFHHdB1(lm_PhHy2Tz8i%A6af7O%>R0h04N?B4H$C$>b^`VbmO~B_z*Uofi zaum8*iMj>fqS+4h*MquVql9C0BfyJCH&zqsyd0`|@&4hvC(r0ADklopo8c{R`(SA! z24YX5Jc{c`n&gQYx*0ax$b2ZV9khl*-u>DmDBe8ng6cv7ax{pZnif{FB5GLsXlkLu z2MzLPa-|iY4q!gHOBA%ptNn&TD(HmOP%x@ai7K&2QPv>0mWVWV`S>UHE zF)+QsyE{3)cJ0vk3^Etv2$2`+2-!Qw(3>)S3A}B7FZrOAs(=eSG03P=|F(t;zB;>2 z!+OMCD#r`4>*3ujxNWAP1~0t|BSGz6-7F#>gno_m11~(~3+SF2>BfW^0UKb^^{i(q z1|k+-I?U6mU9TQk_ieBAK)H8cA9zB@nwQe#p&os(`shp#yuXh60zs63D(MJ4v74I` zA8$JpxZ5g1I$6})mWslU*d8L3J6 z^;q=lC|IBMyp6*3kPQSPZK;ZBzpxMbZ-`^??fHJ2Nc`Vh>&1YVe_@Vex=~~TA%tB z@u3b#eoSmLA^WW;SY`AuV5w?P(hNhNzQchISM|zUrS!ZV`ny)- zmAWHwqz`xX*(C*6aO!H;8=^Sk1ijdc)@DETa2KMM%t%KW;LG~B>P^w^c0BEV>KDzl zu5Cn>o~LVzdGDj6J>C{&8yL_V`QF!ccLdUhihnpV3?6*N-LhQG~0Uw%i{)q5k zwSB-adl3np9Cbo`ha<6}_QP>#vs>xrHX7e>`!)utj5z`K!;#pK`z>%(LHEOOG{f%O zSbUao6?or9(^hHH(0d844;FlHwPj-f&O%uef^X>7mJkakHSGw(ubM&wsGqMd4By3V z#M`k-hR5L>#FjUv18K2uL_Cu}Xe`Rs(R?V-EW~V4_DjtgPXp^t@rG2JrcAxsx;Ed0? zmN|+xXF{D`s-en6P$yMJ}1xs1El!dSD28CE8V#F>dHSd=UECa`p%>pP%wm4m`8z^PX&S zjX+s!808v^1|+8_%A#Y8p`Yb33WrY!*G-=k~bMPeUn5*b*fUSbUe7@&@WPFdJQx@cWNU3 z(&5{#o!J!|rl>^7LcKUC;Oz>3ixPS4c7+4PY#+M49vjeKSLAlpNi}R8 zXGyWK8v}0op*IKC^ukLb5&IGJ2M}(8l>}{X#36|9*o=?7HZa5WDJuF=99%P|ZQCY45NYZ3p7VcHe9x~UgLX>Y*b zr5Yhyf2kPlY8arQF|qh!g6a4)WLL=bhG_SY&^7DlDp62Y)TGxNO#8M6JQUmRS62iN*iNODxh|@y0}PWQv(fW!jNZ zaTAq?bYLU@=q5PXc|~K?%({~rUI|H>j`w> z*YgK3XYly-{65u@EE4_a?{0Lpd4M99`E$NJe}HJ;{>Bei^W`&own=rcie9{rP_ZEY zDa&6cd2hR(CXXq|9z&q)$7F_N9%>xzD!1onSMy1>xKhoj4g>ycfrRO**EV zW5JQFin68^YFrBW`52Gk7s>8U$g=R_{`cYYAHM(o@%P_`A*ea0z%z~QqjB=)X^sl4 z`4eV9@FkU9{biLRwGw5*f}MxoQ1WlOdR;Dlr09K!K~d(w ztL|=o+@Dnb!Fx=NM_J5YMs#Jbo5q{9DE+^+}@#oE0T5;1JtxN=i;-k zR*O8DB4tUEo7t~=zprJME`SRR=%a6+JpKCqle3qYbi>ZjOi)PI|HTdrHX@K@?{CgI z!XrdrHw6t8WwE=H93P*Y92_6r866!R-kY3^?j7y#p*r%(y-{>;JU)Wxba#Ig}= z!gwb+I-DF$_6|mO_oK;ioJ1#wd;7;HckWCMM@PvWe~i)HXn+4Cx_6k|+nbC=2Pbz9 zj`znW(cR;{y`yB07MmxHd&%MWXf(MS-82_mRJQ0dRewIlj)kJyyw!}k2hpm<>VC*BE8MDuj;dPFD+V7Hl zU9THegkP^<=+T{ZeQi`8{(aqD*Vjh1;@{W7y1q6l9KXJJ<`5&kyg-7lb$xDBNsT`B zj{A|>h?D&Bg6w*j(5^MoG8xEBFfd()lG*)}9F{vJ@_k0;DJcrwN&=;EjPo#>F4b5z0#@$8Ob6 z*T8GmeQW=!5AEeE4DNiK;?y(Wfc92!p!GNDlbSu+OOC7atA?7rmfvJ=ffS?U)p2w& z4L+jr-Xv|m`^ko}+zd_wipX_sMmk=&BMifbkDrI(O_+*|+3rxvdP8a(sx^mPkZL#C zWjnooV4~qSrh~evv7Oq`KO0DHu%FP>*{rZM*-h;%<xq4@D%{Qe)hU)=~!f>Q&sZd7+dZlr? zn2n^6+UETN;HnLXJm<6=)t9e=nuCHs=^qj_0#{iBbnBOUuWr&f>G+F6*C=h}{_rL7 z!r0~KW@P6NsNEBGMx359P?J>EV-V221Pc5mbqzzm)|V80VMW1%0#N~Vy`$YY=jWtn zO!s&Lvu$_v&UPb*+o5f{6S=~uu(cf@mD{7{tBRIz9>=I0m@R-7%ON=Ta(3Rg@VjREabO~^;u#kt z43u9uErJ&)M1T{k5l`hNWpC88izON_epIQLD=*YX4soA-1!w5PWD?=s6)=#;c^5@- z*yU{eWRA!6^c2k>(V2mO;6GH5nW7&AilYD%wnx7f83?-LUoP&9^>Olrh+)si?cucZD<< zCtf$snhX4TP_FUnUk~!OYyW!icHS;*hZ<%Tne2bQN&o&o|Lwp3mw*1B52OF^@Bi!n c_~#$~<$wRnfBawP|L!-x`OUXqfA{tO1u)2g(EtDd literal 0 HcmV?d00001 diff --git a/Box54346/vendor/phpstan/phpstan/phpstan.phar.asc b/Box54346/vendor/phpstan/phpstan/phpstan.phar.asc new file mode 100644 index 000000000..6da5bd6a4 --- /dev/null +++ b/Box54346/vendor/phpstan/phpstan/phpstan.phar.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmPjlIQACgkQzxoQjQ56 +5yB1xQ/+Kz+VRo1rx8OsL3lOZhbmGalg8QC1+r9SfoBI2jxi/IqG4olCH1b9yXiE +xaJU9xC5H+258a1JtfeUszm0zXgt/CHIHSVq3VAMlEajMbOHDSy7i9GrRA9OmG0H +5AbwB9tql4qZ0cj1SriS2j8VolUjb1C1aSJNAwMbBWbd1QlZqGLJLgo0rvVnN71h +kK5aYSZzV6XcbrJpNwWNjI9KNhbSlwHfWvsl2oW7Pl/ydyaWY+ZmL+i9MOT+TAuu +jJFzKY98HQk3ESOpRn2wg0tKU9qzzl5d5/3P03iY/o0VCHnj8aNSdXy+6aBS81n4 +KPvBRclcwsncmBB4HNZxOpExVR2flaUM21ebSnmVv7Zofjcl/W+h49lrEAWFBjgy +PkdAjlKSPOUYgqSSftKitDHFXtNOYi+qNot0gPEcDezWVOwWY/UorqL0V/PQp4bI +SCKnkgw4SWDFGFY3R/m7qet0oomOvp6sTJZb/B37GZ6l9KKu4lXLsS8XRXmCGzTW +Wu/taFkP35LYDQ9Y+HNzYXzNKFalCbJNj1Qdx31OvthBfK3/Jk0gG1YRrE3+0sAa +J3qJX4nC/Zm7oK9wj5CvKMTS9tewbOBLgYNF1JuI2dlrhnc0VZXCdvg3M8SjI1zH +5752T9NuxK5ot1i7TPcPHj8ln4t35aUT8c0f9S7ruFS0icobdyE= +=SwMZ +-----END PGP SIGNATURE----- diff --git a/composer/LICENSE b/composer/LICENSE new file mode 100644 index 000000000..f27399a04 --- /dev/null +++ b/composer/LICENSE @@ -0,0 +1,21 @@ + +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/composer/bin/composer b/composer/bin/composer new file mode 100644 index 000000000..029bdef88 --- /dev/null +++ b/composer/bin/composer @@ -0,0 +1,88 @@ +check(); +unset($xdebug); + +if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '4.0', '>=')) { + echo 'HHVM 4.0 has dropped support for Composer, please use PHP instead. Aborting.'.PHP_EOL; + exit(1); +} +if (!extension_loaded('iconv') && !extension_loaded('mbstring')) { + echo 'The iconv OR mbstring extension is required and both are missing.' + .PHP_EOL.'Install either of them or recompile php without --disable-iconv.' + .PHP_EOL.'Aborting.'.PHP_EOL; + exit(1); +} + +if (function_exists('ini_set')) { + @ini_set('display_errors', '1'); + + // Set user defined memory limit + if ($memoryLimit = getenv('COMPOSER_MEMORY_LIMIT')) { + @ini_set('memory_limit', $memoryLimit); + } else { + $memoryInBytes = function ($value) { + $unit = strtolower(substr($value, -1, 1)); + $value = (int) $value; + switch($unit) { + case 'g': + $value *= 1024; + // no break (cumulative multiplier) + case 'm': + $value *= 1024; + // no break (cumulative multiplier) + case 'k': + $value *= 1024; + } + + return $value; + }; + + $memoryLimit = trim(ini_get('memory_limit')); + // Increase memory_limit if it is lower than 1.5GB + if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 1024 * 1024 * 1536) { + @ini_set('memory_limit', '1536M'); + } + unset($memoryInBytes); + } + unset($memoryLimit); +} + +// Workaround PHP bug on Windows where env vars containing Unicode chars are mangled in $_SERVER +// see https://github.com/php/php-src/issues/7896 +if (PHP_VERSION_ID >= 70113 && (PHP_VERSION_ID < 80016 || (PHP_VERSION_ID >= 80100 && PHP_VERSION_ID < 80103)) && Platform::isWindows()) { + foreach ($_SERVER as $serverVar => $serverVal) { + if (($serverVal = getenv($serverVar)) !== false) { + $_SERVER[$serverVar] = $serverVal; + } + } +} + +Platform::putEnv('COMPOSER_BINARY', realpath($_SERVER['argv'][0])); + +ErrorHandler::register(); + +// run the command application +$application = new Application(); +$application->run(); diff --git a/composer/res/composer-repository-schema.json b/composer/res/composer-repository-schema.json new file mode 100644 index 000000000..adcc299d6 --- /dev/null +++ b/composer/res/composer-repository-schema.json @@ -0,0 +1,110 @@ +{ + "$schema": "https://json-schema.org/draft-04/schema#", + "description": "A representation of packages metadata.", + "type": "object", + "oneOf": [ + { "required": [ "packages" ] }, + { "required": [ "providers" ] }, + { "required": [ "provider-includes", "providers-url" ] } + ], + "properties": { + "packages": { + "type": ["object", "array"], + "description": "A hashmap of package names in the form of /.", + "additionalProperties": { "$ref": "#/definitions/versions" } + }, + "providers-url": { + "type": "string", + "description": "Endpoint to retrieve provider data from, e.g. '/p/%package%$%hash%.json'." + }, + "provider-includes": { + "type": "object", + "description": "A hashmap of provider listings.", + "additionalProperties": { "$ref": "#/definitions/provider" } + }, + "providers": { + "type": "object", + "description": "A hashmap of package names in the form of /.", + "additionalProperties": { "$ref": "#/definitions/provider" } + }, + "notify-batch": { + "type": "string", + "description": "Endpoint to call after multiple packages have been installed, e.g. '/downloads/'." + }, + "search": { + "type": "string", + "description": "Endpoint that provides search capabilities, e.g. '/search.json?q=%query%&type=%type%'." + }, + "warning": { + "type": "string", + "description": "A message that will be output by Composer as a warning when this source is consulted." + } + }, + "definitions": { + "versions": { + "type": "object", + "description": "A hashmap of versions and their metadata.", + "additionalProperties": { "$ref": "#/definitions/version" } + }, + "version": { + "type": "object", + "oneOf": [ + { "$ref": "#/definitions/package" }, + { "$ref": "#/definitions/metapackage" } + ] + }, + "package-base": { + "properties": { + "name": { "type": "string" }, + "type": { "type": "string" }, + "version": { "type": "string" }, + "version_normalized": { + "type": "string", + "description": "Normalized version, optional but can save computational time on client side." + }, + "autoload": { "type": "object" }, + "require": { "type": "object" }, + "replace": { "type": "object" }, + "conflict": { "type": "object" }, + "provide": { "type": "object" }, + "time": { "type": "string" } + }, + "additionalProperties": true + }, + "package": { + "allOf": [ + { "$ref": "#/definitions/package-base" }, + { + "properties": { + "dist": { "type": "object" }, + "source": { "type": "object" } + } + }, + { "oneOf": [ + { "required": [ "name", "version", "source" ] }, + { "required": [ "name", "version", "dist" ] } + ] } + ] + }, + "metapackage": { + "allOf": [ + { "$ref": "#/definitions/package-base" }, + { + "properties": { + "type": { "type": "string", "enum": [ "metapackage" ] } + }, + "required": [ "name", "version", "type" ] + } + ] + }, + "provider": { + "type": "object", + "properties": { + "sha256": { + "type": "string", + "description": "Hash value that can be used to validate the resource." + } + } + } + } +} diff --git a/composer/res/composer-schema.json b/composer/res/composer-schema.json new file mode 100644 index 000000000..c384e5b1f --- /dev/null +++ b/composer/res/composer-schema.json @@ -0,0 +1,1062 @@ +{ + "$schema": "https://json-schema.org/draft-04/schema#", + "title": "Package", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Package name, including 'vendor-name/' prefix.", + "pattern": "^[a-z0-9]([_.-]?[a-z0-9]+)*\/[a-z0-9](([_.]|-{1,2})?[a-z0-9]+)*$" + }, + "description": { + "type": "string", + "description": "Short package description." + }, + "license": { + "type": ["string", "array"], + "description": "License name. Or an array of license names." + }, + "type": { + "description": "Package type, either 'library' for common packages, 'composer-plugin' for plugins, 'metapackage' for empty packages, or a custom type ([a-z0-9-]+) defined by whatever project this package applies to.", + "type": "string", + "pattern": "^[a-z0-9-]+$" + }, + "abandoned": { + "type": ["boolean", "string"], + "description": "Indicates whether this package has been abandoned, it can be boolean or a package name/URL pointing to a recommended alternative. Defaults to false." + }, + "version": { + "type": "string", + "description": "Package version, see https://getcomposer.org/doc/04-schema.md#version for more info on valid schemes.", + "pattern": "^v?\\d+(\\.\\d+){0,3}|^dev-" + }, + "default-branch": { + "type": ["boolean"], + "description": "Internal use only, do not specify this in composer.json. Indicates whether this version is the default branch of the linked VCS repository. Defaults to false." + }, + "non-feature-branches": { + "type": ["array"], + "description": "A set of string or regex patterns for non-numeric branch names that will not be handled as feature branches.", + "items": { + "type": "string" + } + }, + "keywords": { + "type": "array", + "items": { + "type": "string", + "description": "A tag/keyword that this package relates to." + } + }, + "readme": { + "type": "string", + "description": "Relative path to the readme document." + }, + "time": { + "type": "string", + "description": "Package release date, in 'YYYY-MM-DD', 'YYYY-MM-DD HH:MM:SS' or 'YYYY-MM-DDTHH:MM:SSZ' format." + }, + "authors": { + "$ref": "#/definitions/authors" + }, + "homepage": { + "type": "string", + "description": "Homepage URL for the project.", + "format": "uri" + }, + "support": { + "type": "object", + "properties": { + "email": { + "type": "string", + "description": "Email address for support.", + "format": "email" + }, + "issues": { + "type": "string", + "description": "URL to the issue tracker.", + "format": "uri" + }, + "forum": { + "type": "string", + "description": "URL to the forum.", + "format": "uri" + }, + "wiki": { + "type": "string", + "description": "URL to the wiki.", + "format": "uri" + }, + "irc": { + "type": "string", + "description": "IRC channel for support, as irc://server/channel.", + "format": "uri" + }, + "chat": { + "type": "string", + "description": "URL to the support chat.", + "format": "uri" + }, + "source": { + "type": "string", + "description": "URL to browse or download the sources.", + "format": "uri" + }, + "docs": { + "type": "string", + "description": "URL to the documentation.", + "format": "uri" + }, + "rss": { + "type": "string", + "description": "URL to the RSS feed.", + "format": "uri" + } + } + }, + "funding": { + "type": "array", + "description": "A list of options to fund the development and maintenance of the package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Type of funding or platform through which funding is possible." + }, + "url": { + "type": "string", + "description": "URL to a website with details on funding and a way to fund the package.", + "format": "uri" + } + } + } + }, + "source": { + "$ref": "#/definitions/source" + }, + "dist": { + "$ref": "#/definitions/dist" + }, + "_comment": { + "type": ["array", "string"], + "description": "A key to store comments in" + }, + "require": { + "type": "object", + "description": "This is an object of package name (keys) and version constraints (values) that are required to run this package.", + "additionalProperties": { + "type": "string" + } + }, + "require-dev": { + "type": "object", + "description": "This is an object of package name (keys) and version constraints (values) that this package requires for developing it (testing tools and such).", + "additionalProperties": { + "type": "string" + } + }, + "replace": { + "type": "object", + "description": "This is an object of package name (keys) and version constraints (values) that can be replaced by this package.", + "additionalProperties": { + "type": "string" + } + }, + "conflict": { + "type": "object", + "description": "This is an object of package name (keys) and version constraints (values) that conflict with this package.", + "additionalProperties": { + "type": "string" + } + }, + "provide": { + "type": "object", + "description": "This is an object of package name (keys) and version constraints (values) that this package provides in addition to this package's name.", + "additionalProperties": { + "type": "string" + } + }, + "suggest": { + "type": "object", + "description": "This is an object of package name (keys) and descriptions (values) that this package suggests work well with it (this will be suggested to the user during installation).", + "additionalProperties": { + "type": "string" + } + }, + "repositories": { + "type": ["object", "array"], + "description": "A set of additional repositories where packages can be found.", + "additionalProperties": { + "anyOf": [ + { "$ref": "#/definitions/repository" }, + { "type": "boolean", "enum": [false] } + ] + }, + "items": { + "anyOf": [ + { "$ref": "#/definitions/repository" }, + { + "type": "object", + "additionalProperties": { "type": "boolean", "enum": [false] }, + "minProperties": 1, + "maxProperties": 1 + } + ] + } + }, + "minimum-stability": { + "type": ["string"], + "description": "The minimum stability the packages must have to be install-able. Possible values are: dev, alpha, beta, RC, stable.", + "enum": ["dev", "alpha", "beta", "rc", "RC", "stable"] + }, + "prefer-stable": { + "type": ["boolean"], + "description": "If set to true, stable packages will be preferred to dev packages when possible, even if the minimum-stability allows unstable packages." + }, + "autoload": { + "$ref": "#/definitions/autoload" + }, + "autoload-dev": { + "type": "object", + "description": "Description of additional autoload rules for development purpose (eg. a test suite).", + "properties": { + "psr-0": { + "type": "object", + "description": "This is an object of namespaces (keys) and the directories they can be found into (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "psr-4": { + "type": "object", + "description": "This is an object of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "classmap": { + "type": "array", + "description": "This is an array of paths that contain classes to be included in the class-map generation process." + }, + "files": { + "type": "array", + "description": "This is an array of files that are always required on every request." + } + } + }, + "target-dir": { + "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", + "type": "string" + }, + "include-path": { + "type": ["array"], + "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", + "items": { + "type": "string" + } + }, + "bin": { + "type": ["string", "array"], + "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", + "items": { + "type": "string" + } + }, + "archive": { + "type": ["object"], + "description": "Options for creating package archives for distribution.", + "properties": { + "name": { + "type": "string", + "description": "A base name for archive." + }, + "exclude": { + "type": "array", + "description": "A list of patterns for paths to exclude or include if prefixed with an exclamation mark." + } + } + }, + "config": { + "type": "object", + "description": "Composer options.", + "properties": { + "platform": { + "type": "object", + "description": "This is an object of package name (keys) and version (values) that will be used to mock the platform packages on this machine, the version can be set to false to make it appear like the package is not present.", + "additionalProperties": { + "type": ["string", "boolean"] + } + }, + "allow-plugins": { + "type": ["object", "boolean"], + "description": "This is an object of {\"pattern\": true|false} with packages which are allowed to be loaded as plugins, or true to allow all, false to allow none. Defaults to {} which prompts when an unknown plugin is added.", + "additionalProperties": { + "type": ["boolean"] + } + }, + "process-timeout": { + "type": "integer", + "description": "The timeout in seconds for process executions, defaults to 300 (5mins)." + }, + "use-include-path": { + "type": "boolean", + "description": "If true, the Composer autoloader will also look for classes in the PHP include path." + }, + "use-parent-dir": { + "type": ["string", "boolean"], + "description": "When running Composer in a directory where there is no composer.json, if there is one present in a directory above Composer will by default ask you whether you want to use that directory's composer.json instead. One of: true (always use parent if needed), false (never ask or use it) or \"prompt\" (ask every time), defaults to prompt." + }, + "preferred-install": { + "type": ["string", "object"], + "description": "The install method Composer will prefer to use, defaults to auto and can be any of source, dist, auto, or an object of {\"pattern\": \"preference\"}.", + "additionalProperties": { + "type": ["string"] + } + }, + "notify-on-install": { + "type": "boolean", + "description": "Composer allows repositories to define a notification URL, so that they get notified whenever a package from that repository is installed. This option allows you to disable that behaviour, defaults to true." + }, + "github-protocols": { + "type": "array", + "description": "A list of protocols to use for github.com clones, in priority order, defaults to [\"https\", \"ssh\", \"git\"].", + "items": { + "type": "string" + } + }, + "github-oauth": { + "type": "object", + "description": "An object of domain name => github API oauth tokens, typically {\"github.com\":\"\"}.", + "additionalProperties": { + "type": "string" + } + }, + "gitlab-oauth": { + "type": "object", + "description": "An object of domain name => gitlab API oauth tokens, typically {\"gitlab.com\":{\"expires-at\":\"\", \"refresh-token\":\"\", \"token\":\"\"}}.", + "additionalProperties": { + "type": ["string", "object"], + "required": [ "token"], + "properties": { + "expires-at": { + "type": "integer", + "description": "The expiration date for this GitLab token" + }, + "refresh-token": { + "type": "string", + "description": "The refresh token used for GitLab authentication" + }, + "token": { + "type": "string", + "description": "The token used for GitLab authentication" + } + } + } + }, + "gitlab-token": { + "type": "object", + "description": "An object of domain name => gitlab private tokens, typically {\"gitlab.com\":\"\"}, or an object with username and token keys.", + "additionalProperties": { + "type": ["string", "object"], + "required": ["username", "token"], + "properties": { + "username": { + "type": "string", + "description": "The username used for GitLab authentication" + }, + "token": { + "type": "string", + "description": "The token used for GitLab authentication" + } + } + } + }, + "gitlab-protocol": { + "enum": ["git", "http", "https"], + "description": "A protocol to force use of when creating a repository URL for the `source` value of the package metadata. One of `git` or `http`. By default, Composer will generate a git URL for private repositories and http one for public repos." + }, + "bearer": { + "type": "object", + "description": "An object of domain name => bearer authentication token, for example {\"example.com\":\"\"}.", + "additionalProperties": { + "type": "string" + } + }, + "disable-tls": { + "type": "boolean", + "description": "Defaults to `false`. If set to true all HTTPS URLs will be tried with HTTP instead and no network level encryption is performed. Enabling this is a security risk and is NOT recommended. The better way is to enable the php_openssl extension in php.ini." + }, + "secure-http": { + "type": "boolean", + "description": "Defaults to `true`. If set to true only HTTPS URLs are allowed to be downloaded via Composer. If you really absolutely need HTTP access to something then you can disable it, but using \"Let's Encrypt\" to get a free SSL certificate is generally a better alternative." + }, + "secure-svn-domains": { + "type": "array", + "description": "A list of domains which should be trusted/marked as using a secure Subversion/SVN transport. By default svn:// protocol is seen as insecure and will throw. This is a better/safer alternative to disabling `secure-http` altogether.", + "items": { + "type": "string" + } + }, + "cafile": { + "type": "string", + "description": "A way to set the path to the openssl CA file. In PHP 5.6+ you should rather set this via openssl.cafile in php.ini, although PHP 5.6+ should be able to detect your system CA file automatically." + }, + "capath": { + "type": "string", + "description": "If cafile is not specified or if the certificate is not found there, the directory pointed to by capath is searched for a suitable certificate. capath must be a correctly hashed certificate directory." + }, + "http-basic": { + "type": "object", + "description": "An object of domain name => {\"username\": \"...\", \"password\": \"...\"}.", + "additionalProperties": { + "type": "object", + "required": ["username", "password"], + "properties": { + "username": { + "type": "string", + "description": "The username used for HTTP Basic authentication" + }, + "password": { + "type": "string", + "description": "The password used for HTTP Basic authentication" + } + } + } + }, + "store-auths": { + "type": ["string", "boolean"], + "description": "What to do after prompting for authentication, one of: true (store), false (do not store) or \"prompt\" (ask every time), defaults to prompt." + }, + "vendor-dir": { + "type": "string", + "description": "The location where all packages are installed, defaults to \"vendor\"." + }, + "bin-dir": { + "type": "string", + "description": "The location where all binaries are linked, defaults to \"vendor/bin\"." + }, + "data-dir": { + "type": "string", + "description": "The location where old phar files are stored, defaults to \"$home\" except on XDG Base Directory compliant unixes." + }, + "cache-dir": { + "type": "string", + "description": "The location where all caches are located, defaults to \"~/.composer/cache\" on *nix and \"%LOCALAPPDATA%\\Composer\" on windows." + }, + "cache-files-dir": { + "type": "string", + "description": "The location where files (zip downloads) are cached, defaults to \"{$cache-dir}/files\"." + }, + "cache-repo-dir": { + "type": "string", + "description": "The location where repo (git/hg repo clones) are cached, defaults to \"{$cache-dir}/repo\"." + }, + "cache-vcs-dir": { + "type": "string", + "description": "The location where vcs infos (git clones, github api calls, etc. when reading vcs repos) are cached, defaults to \"{$cache-dir}/vcs\"." + }, + "cache-ttl": { + "type": "integer", + "description": "The default cache time-to-live, defaults to 15552000 (6 months)." + }, + "cache-files-ttl": { + "type": "integer", + "description": "The cache time-to-live for files, defaults to the value of cache-ttl." + }, + "cache-files-maxsize": { + "type": ["string", "integer"], + "description": "The cache max size for the files cache, defaults to \"300MiB\"." + }, + "cache-read-only": { + "type": ["boolean"], + "description": "Whether to use the Composer cache in read-only mode." + }, + "bin-compat": { + "enum": ["auto", "full", "proxy", "symlink"], + "description": "The compatibility of the binaries, defaults to \"auto\" (automatically guessed), can be \"full\" (compatible with both Windows and Unix-based systems) and \"proxy\" (only bash-style proxy)." + }, + "discard-changes": { + "type": ["string", "boolean"], + "description": "The default style of handling dirty updates, defaults to false and can be any of true, false or \"stash\"." + }, + "autoloader-suffix": { + "type": "string", + "description": "Optional string to be used as a suffix for the generated Composer autoloader. When null a random one will be generated." + }, + "optimize-autoloader": { + "type": "boolean", + "description": "Always optimize when dumping the autoloader." + }, + "prepend-autoloader": { + "type": "boolean", + "description": "If false, the composer autoloader will not be prepended to existing autoloaders, defaults to true." + }, + "classmap-authoritative": { + "type": "boolean", + "description": "If true, the composer autoloader will not scan the filesystem for classes that are not found in the class map, defaults to false." + }, + "apcu-autoloader": { + "type": "boolean", + "description": "If true, the Composer autoloader will check for APCu and use it to cache found/not-found classes when the extension is enabled, defaults to false." + }, + "github-domains": { + "type": "array", + "description": "A list of domains to use in github mode. This is used for GitHub Enterprise setups, defaults to [\"github.com\"].", + "items": { + "type": "string" + } + }, + "github-expose-hostname": { + "type": "boolean", + "description": "Defaults to true. If set to false, the OAuth tokens created to access the github API will have a date instead of the machine hostname." + }, + "gitlab-domains": { + "type": "array", + "description": "A list of domains to use in gitlab mode. This is used for custom GitLab setups, defaults to [\"gitlab.com\"].", + "items": { + "type": "string" + } + }, + "bitbucket-oauth": { + "type": "object", + "description": "An object of domain name => {\"consumer-key\": \"...\", \"consumer-secret\": \"...\"}.", + "additionalProperties": { + "type": "object", + "required": ["consumer-key", "consumer-secret"], + "properties": { + "consumer-key": { + "type": "string", + "description": "The consumer-key used for OAuth authentication" + }, + "consumer-secret": { + "type": "string", + "description": "The consumer-secret used for OAuth authentication" + }, + "access-token": { + "type": "string", + "description": "The OAuth token retrieved from Bitbucket's API, this is written by Composer and you should not set it nor modify it." + }, + "access-token-expiration": { + "type": "integer", + "description": "The generated token's expiration timestamp, this is written by Composer and you should not set it nor modify it." + } + } + } + }, + "use-github-api": { + "type": "boolean", + "description": "Defaults to true. If set to false, globally disables the use of the GitHub API for all GitHub repositories and clones the repository as it would for any other repository." + }, + "archive-format": { + "type": "string", + "description": "The default archiving format when not provided on cli, defaults to \"tar\"." + }, + "archive-dir": { + "type": "string", + "description": "The default archive path when not provided on cli, defaults to \".\"." + }, + "htaccess-protect": { + "type": "boolean", + "description": "Defaults to true. If set to false, Composer will not create .htaccess files in the composer home, cache, and data directories." + }, + "sort-packages": { + "type": "boolean", + "description": "Defaults to false. If set to true, Composer will sort packages when adding/updating a new dependency." + }, + "lock": { + "type": "boolean", + "description": "Defaults to true. If set to false, Composer will not create a composer.lock file." + }, + "platform-check": { + "type": ["boolean", "string"], + "description": "Defaults to \"php-only\" which checks only the PHP version. Setting to true will also check the presence of required PHP extensions. If set to false, Composer will not create and require a platform_check.php file as part of the autoloader bootstrap." + } + } + }, + "extra": { + "type": ["object", "array"], + "description": "Arbitrary extra data that can be used by plugins, for example, package of type composer-plugin may have a 'class' key defining an installer class name.", + "additionalProperties": true + }, + "scripts": { + "type": ["object"], + "description": "Script listeners that will be executed before/after some events.", + "properties": { + "pre-install-cmd": { + "type": ["array", "string"], + "description": "Occurs before the install command is executed, contains one or more Class::method callables or shell commands." + }, + "post-install-cmd": { + "type": ["array", "string"], + "description": "Occurs after the install command is executed, contains one or more Class::method callables or shell commands." + }, + "pre-update-cmd": { + "type": ["array", "string"], + "description": "Occurs before the update command is executed, contains one or more Class::method callables or shell commands." + }, + "post-update-cmd": { + "type": ["array", "string"], + "description": "Occurs after the update command is executed, contains one or more Class::method callables or shell commands." + }, + "pre-status-cmd": { + "type": ["array", "string"], + "description": "Occurs before the status command is executed, contains one or more Class::method callables or shell commands." + }, + "post-status-cmd": { + "type": ["array", "string"], + "description": "Occurs after the status command is executed, contains one or more Class::method callables or shell commands." + }, + "pre-package-install": { + "type": ["array", "string"], + "description": "Occurs before a package is installed, contains one or more Class::method callables or shell commands." + }, + "post-package-install": { + "type": ["array", "string"], + "description": "Occurs after a package is installed, contains one or more Class::method callables or shell commands." + }, + "pre-package-update": { + "type": ["array", "string"], + "description": "Occurs before a package is updated, contains one or more Class::method callables or shell commands." + }, + "post-package-update": { + "type": ["array", "string"], + "description": "Occurs after a package is updated, contains one or more Class::method callables or shell commands." + }, + "pre-package-uninstall": { + "type": ["array", "string"], + "description": "Occurs before a package has been uninstalled, contains one or more Class::method callables or shell commands." + }, + "post-package-uninstall": { + "type": ["array", "string"], + "description": "Occurs after a package has been uninstalled, contains one or more Class::method callables or shell commands." + }, + "pre-autoload-dump": { + "type": ["array", "string"], + "description": "Occurs before the autoloader is dumped, contains one or more Class::method callables or shell commands." + }, + "post-autoload-dump": { + "type": ["array", "string"], + "description": "Occurs after the autoloader is dumped, contains one or more Class::method callables or shell commands." + }, + "post-root-package-install": { + "type": ["array", "string"], + "description": "Occurs after the root-package is installed, contains one or more Class::method callables or shell commands." + }, + "post-create-project-cmd": { + "type": ["array", "string"], + "description": "Occurs after the create-project command is executed, contains one or more Class::method callables or shell commands." + } + } + }, + "scripts-descriptions": { + "type": ["object"], + "description": "Descriptions for custom commands, shown in console help.", + "additionalProperties": { + "type": "string" + } + } + }, + "definitions": { + "authors": { + "type": "array", + "description": "List of authors that contributed to the package. This is typically the main maintainers, not the full list.", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ "name"], + "properties": { + "name": { + "type": "string", + "description": "Full name of the author." + }, + "email": { + "type": "string", + "description": "Email address of the author.", + "format": "email" + }, + "homepage": { + "type": "string", + "description": "Homepage URL for the author.", + "format": "uri" + }, + "role": { + "type": "string", + "description": "Author's role in the project." + } + } + } + }, + "autoload": { + "type": "object", + "description": "Description of how the package can be autoloaded.", + "properties": { + "psr-0": { + "type": "object", + "description": "This is an object of namespaces (keys) and the directories they can be found in (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "psr-4": { + "type": "object", + "description": "This is an object of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", + "additionalProperties": { + "type": ["string", "array"], + "items": { + "type": "string" + } + } + }, + "classmap": { + "type": "array", + "description": "This is an array of paths that contain classes to be included in the class-map generation process." + }, + "files": { + "type": "array", + "description": "This is an array of files that are always required on every request." + }, + "exclude-from-classmap": { + "type": "array", + "description": "This is an array of patterns to exclude from autoload classmap generation. (e.g. \"exclude-from-classmap\": [\"/test/\", \"/tests/\", \"/Tests/\"]" + } + } + }, + "repository": { + "type": "object", + "anyOf": [ + { "$ref": "#/definitions/composer-repository" }, + { "$ref": "#/definitions/vcs-repository" }, + { "$ref": "#/definitions/path-repository" }, + { "$ref": "#/definitions/artifact-repository" }, + { "$ref": "#/definitions/pear-repository" }, + { "$ref": "#/definitions/package-repository" } + ] + }, + "composer-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["composer"] }, + "url": { "type": "string" }, + "canonical": { "type": "boolean" }, + "only": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "type": "object", + "additionalProperties": true + }, + "allow_ssl_downgrade": { "type": "boolean" }, + "force-lazy-providers": { "type": "boolean" } + } + }, + "vcs-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["vcs", "github", "git", "gitlab", "bitbucket", "git-bitbucket", "hg", "fossil", "perforce", "svn"] }, + "url": { "type": "string" }, + "canonical": { "type": "boolean" }, + "only": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + }, + "no-api": { "type": "boolean" }, + "secure-http": { "type": "boolean" }, + "svn-cache-credentials": { "type": "boolean" }, + "trunk-path": { "type": ["string", "boolean"] }, + "branches-path": { "type": ["string", "boolean"] }, + "tags-path": { "type": ["string", "boolean"] }, + "package-path": { "type": "string" }, + "depot": { "type": "string" }, + "branch": { "type": "string" }, + "unique_perforce_client_name": { "type": "string" }, + "p4user": { "type": "string" }, + "p4password": { "type": "string" } + } + }, + "path-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["path"] }, + "url": { "type": "string" }, + "canonical": { "type": "boolean" }, + "only": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + }, + "options": { + "type": "object", + "properties": { + "symlink": { "type": ["boolean", "null"] } + }, + "additionalProperties": true + } + } + }, + "artifact-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["artifact"] }, + "url": { "type": "string" }, + "canonical": { "type": "boolean" }, + "only": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "pear-repository": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { "type": "string", "enum": ["pear"] }, + "url": { "type": "string" }, + "canonical": { "type": "boolean" }, + "only": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + }, + "vendor-alias": { "type": "string" } + } + }, + "package-repository": { + "type": "object", + "required": ["type", "package"], + "properties": { + "type": { "type": "string", "enum": ["package"] }, + "canonical": { "type": "boolean" }, + "only": { + "type": "array", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "items": { + "type": "string" + } + }, + "package": { + "oneOf": [ + { "$ref": "#/definitions/inline-package" }, + { + "type": "array", + "items": { "$ref": "#/definitions/inline-package" } + } + ] + } + } + }, + "inline-package": { + "type": "object", + "required": ["name", "version"], + "properties": { + "name": { + "type": "string", + "description": "Package name, including 'vendor-name/' prefix." + }, + "type": { + "type": "string" + }, + "target-dir": { + "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", + "type": "string" + }, + "description": { + "type": "string" + }, + "keywords": { + "type": "array", + "items": { + "type": "string" + } + }, + "homepage": { + "type": "string", + "format": "uri" + }, + "version": { + "type": "string" + }, + "time": { + "type": "string" + }, + "license": { + "type": [ + "string", + "array" + ] + }, + "authors": { + "$ref": "#/definitions/authors" + }, + "require": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "replace": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "conflict": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "provide": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "require-dev": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "suggest": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "extra": { + "type": ["object", "array"], + "additionalProperties": true + }, + "autoload": { + "$ref": "#/definitions/autoload" + }, + "archive": { + "type": ["object"], + "properties": { + "exclude": { + "type": "array" + } + } + }, + "bin": { + "type": ["string", "array"], + "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", + "items": { + "type": "string" + } + }, + "include-path": { + "type": ["array"], + "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", + "items": { + "type": "string" + } + }, + "source": { + "$ref": "#/definitions/source" + }, + "dist": { + "$ref": "#/definitions/dist" + } + }, + "additionalProperties": true + }, + "source": { + "type": "object", + "required": ["type", "url", "reference"], + "properties": { + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "mirrors": { + "type": "array" + } + } + }, + "dist": { + "type": "object", + "required": ["type", "url"], + "properties": { + "type": { + "type": "string" + }, + "url": { + "type": "string" + }, + "reference": { + "type": "string" + }, + "shasum": { + "type": "string" + }, + "mirrors": { + "type": "array" + } + } + } + } +} diff --git a/composer/src/Composer/Advisory/Auditor.php b/composer/src/Composer/Advisory/Auditor.php new file mode 100644 index 000000000..e77ca4d2a --- /dev/null +++ b/composer/src/Composer/Advisory/Auditor.php @@ -0,0 +1,191 @@ +getMatchingSecurityAdvisories($packages, $format === self::FORMAT_SUMMARY); +if (self::FORMAT_JSON === $format) { +$io->write(JsonFile::encode(['advisories' => $advisories])); + +return count($advisories); +} + +$errorOrWarn = $warningOnly ? 'warning' : 'error'; +if (count($advisories) > 0) { +[$affectedPackages, $totalAdvisories] = $this->countAdvisories($advisories); +$plurality = $totalAdvisories === 1 ? 'y' : 'ies'; +$pkgPlurality = $affectedPackages === 1 ? '' : 's'; +$punctuation = $format === 'summary' ? '.' : ':'; +$io->writeError("<$errorOrWarn>Found $totalAdvisories security vulnerability advisor{$plurality} affecting $affectedPackages package{$pkgPlurality}{$punctuation}"); +$this->outputAdvisories($io, $advisories, $format); + +return $affectedPackages; +} + +$io->writeError('No security vulnerability advisories found'); + +return 0; +} + + + + + +private function countAdvisories(array $advisories): array +{ +$count = 0; +foreach ($advisories as $packageAdvisories) { +$count += count($packageAdvisories); +} + +return [count($advisories), $count]; +} + + + + + +private function outputAdvisories(IOInterface $io, array $advisories, string $format): void +{ +switch ($format) { +case self::FORMAT_TABLE: +if (!($io instanceof ConsoleIO)) { +throw new InvalidArgumentException('Cannot use table format with ' . get_class($io)); +} +$this->outputAdvisoriesTable($io, $advisories); + +return; +case self::FORMAT_PLAIN: +$this->outputAdvisoriesPlain($io, $advisories); + +return; +case self::FORMAT_SUMMARY: + +$io->writeError('Run composer audit for a full list of advisories.'); + +return; +default: +throw new InvalidArgumentException('Invalid format "'.$format.'".'); +} +} + + + + +private function outputAdvisoriesTable(ConsoleIO $io, array $advisories): void +{ +foreach ($advisories as $packageAdvisories) { +foreach ($packageAdvisories as $advisory) { +$io->getTable() +->setHorizontal() +->setHeaders([ +'Package', +'CVE', +'Title', +'URL', +'Affected versions', +'Reported at', +]) +->addRow([ +$advisory->packageName, +$this->getCVE($advisory), +$advisory->title, +$this->getURL($advisory), +$advisory->affectedVersions->getPrettyString(), +$advisory->reportedAt->format(DATE_ATOM), +]) +->setColumnWidth(1, 80) +->setColumnMaxWidth(1, 80) +->render(); +} +} +} + + + + +private function outputAdvisoriesPlain(IOInterface $io, array $advisories): void +{ +$error = []; +$firstAdvisory = true; +foreach ($advisories as $packageAdvisories) { +foreach ($packageAdvisories as $advisory) { +if (!$firstAdvisory) { +$error[] = '--------'; +} +$error[] = "Package: ".$advisory->packageName; +$error[] = "CVE: ".$this->getCVE($advisory); +$error[] = "Title: ".OutputFormatter::escape($advisory->title); +$error[] = "URL: ".$this->getURL($advisory); +$error[] = "Affected versions: ".OutputFormatter::escape($advisory->affectedVersions->getPrettyString()); +$error[] = "Reported at: ".$advisory->reportedAt->format(DATE_ATOM); +$firstAdvisory = false; +} +} +$io->writeError($error); +} + +private function getCVE(SecurityAdvisory $advisory): string +{ +if ($advisory->cve === null) { +return 'NO CVE'; +} + +return ''.$advisory->cve.''; +} + +private function getURL(SecurityAdvisory $advisory): string +{ +if ($advisory->link === null) { +return ''; +} + +return 'link).'>'.OutputFormatter::escape($advisory->link).''; +} +} diff --git a/composer/src/Composer/Advisory/PartialSecurityAdvisory.php b/composer/src/Composer/Advisory/PartialSecurityAdvisory.php new file mode 100644 index 000000000..0875744ba --- /dev/null +++ b/composer/src/Composer/Advisory/PartialSecurityAdvisory.php @@ -0,0 +1,71 @@ +parseConstraints($data['affectedVersions']); +if (isset($data['title'], $data['sources'], $data['reportedAt'])) { +return new SecurityAdvisory($packageName, $data['advisoryId'], $constraint, $data['title'], $data['sources'], new \DateTimeImmutable($data['reportedAt'], new \DateTimeZone('UTC')), $data['cve'] ?? null, $data['link'] ?? null); +} + +return new self($packageName, $data['advisoryId'], $constraint); +} + +public function __construct(string $packageName, string $advisoryId, ConstraintInterface $affectedVersions) +{ +$this->advisoryId = $advisoryId; +$this->packageName = $packageName; +$this->affectedVersions = $affectedVersions; +} + + + + +#[\ReturnTypeWillChange] +public function jsonSerialize() +{ +$data = (array) $this; +$data['affectedVersions'] = $data['affectedVersions']->getPrettyString(); + +return $data; +} +} diff --git a/composer/src/Composer/Advisory/SecurityAdvisory.php b/composer/src/Composer/Advisory/SecurityAdvisory.php new file mode 100644 index 000000000..2c8eeda57 --- /dev/null +++ b/composer/src/Composer/Advisory/SecurityAdvisory.php @@ -0,0 +1,76 @@ +title = $title; +$this->sources = $sources; +$this->reportedAt = $reportedAt; +$this->cve = $cve; +$this->link = $link; +} + + + + +#[\ReturnTypeWillChange] +public function jsonSerialize() +{ +$data = parent::jsonSerialize(); +$data['reportedAt'] = $data['reportedAt']->format(DATE_RFC3339); + +return $data; +} +} diff --git a/composer/src/Composer/Autoload/AutoloadGenerator.php b/composer/src/Composer/Autoload/AutoloadGenerator.php new file mode 100644 index 000000000..6714fec0f --- /dev/null +++ b/composer/src/Composer/Autoload/AutoloadGenerator.php @@ -0,0 +1,1339 @@ +eventDispatcher = $eventDispatcher; +$this->io = $io ?? new NullIO(); + +$this->platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); +} + + + + +public function setDevMode(bool $devMode = true) +{ +$this->devMode = $devMode; +} + + + + + + +public function setClassMapAuthoritative(bool $classMapAuthoritative) +{ +$this->classMapAuthoritative = $classMapAuthoritative; +} + + + + + + +public function setApcu(bool $apcu, ?string $apcuPrefix = null) +{ +$this->apcu = $apcu; +$this->apcuPrefix = $apcuPrefix !== null ? $apcuPrefix : $apcuPrefix; +} + + + + + + +public function setRunScripts(bool $runScripts = true) +{ +$this->runScripts = $runScripts; +} + + + + + + + + + + + + + +public function setIgnorePlatformRequirements($ignorePlatformReqs) +{ +trigger_error('AutoloadGenerator::setIgnorePlatformRequirements is deprecated since Composer 2.2, use setPlatformRequirementFilter instead.', E_USER_DEPRECATED); + +$this->setPlatformRequirementFilter(PlatformRequirementFilterFactory::fromBoolOrList($ignorePlatformReqs)); +} + + + + +public function setPlatformRequirementFilter(PlatformRequirementFilterInterface $platformRequirementFilter) +{ +$this->platformRequirementFilter = $platformRequirementFilter; +} + + + + + + +public function dump(Config $config, InstalledRepositoryInterface $localRepo, RootPackageInterface $rootPackage, InstallationManager $installationManager, string $targetDir, bool $scanPsrPackages = false, ?string $suffix = null) +{ +if ($this->classMapAuthoritative) { + +$scanPsrPackages = true; +} + + +if (null === $this->devMode) { + +$this->devMode = false; + +$installedJson = new JsonFile($config->get('vendor-dir').'/composer/installed.json'); +if ($installedJson->exists()) { +$installedJson = $installedJson->read(); +if (isset($installedJson['dev'])) { +$this->devMode = $installedJson['dev']; +} +} +} + +if ($this->runScripts) { + +if (!isset($_SERVER['COMPOSER_DEV_MODE'])) { +Platform::putEnv('COMPOSER_DEV_MODE', $this->devMode ? '1' : '0'); +} + +$this->eventDispatcher->dispatchScript(ScriptEvents::PRE_AUTOLOAD_DUMP, $this->devMode, [], [ +'optimize' => $scanPsrPackages, +]); +} + +$classMapGenerator = new ClassMapGenerator(['php', 'inc', 'hh']); +$classMapGenerator->avoidDuplicateScans(); + +$filesystem = new Filesystem(); +$filesystem->ensureDirectoryExists($config->get('vendor-dir')); + + + +$basePath = $filesystem->normalizePath(realpath(realpath(Platform::getCwd()))); +$vendorPath = $filesystem->normalizePath(realpath(realpath($config->get('vendor-dir')))); +$useGlobalIncludePath = $config->get('use-include-path'); +$prependAutoloader = $config->get('prepend-autoloader') === false ? 'false' : 'true'; +$targetDir = $vendorPath.'/'.$targetDir; +$filesystem->ensureDirectoryExists($targetDir); + +$vendorPathCode = $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true); +$vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true); + +$appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true); +$appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode); + +$namespacesFile = <<getDevPackageNames(); +$packageMap = $this->buildPackageMap($installationManager, $rootPackage, $localRepo->getCanonicalPackages()); +if ($this->devMode) { + +$filteredDevPackages = false; +} else { + +$filteredDevPackages = $devPackageNames ?: true; +} +$autoloads = $this->parseAutoloads($packageMap, $rootPackage, $filteredDevPackages); + + +foreach ($autoloads['psr-0'] as $namespace => $paths) { +$exportedPaths = []; +foreach ($paths as $path) { +$exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); +} +$exportedPrefix = var_export($namespace, true); +$namespacesFile .= " $exportedPrefix => "; +$namespacesFile .= "array(".implode(', ', $exportedPaths)."),\n"; +} +$namespacesFile .= ");\n"; + + +foreach ($autoloads['psr-4'] as $namespace => $paths) { +$exportedPaths = []; +foreach ($paths as $path) { +$exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); +} +$exportedPrefix = var_export($namespace, true); +$psr4File .= " $exportedPrefix => "; +$psr4File .= "array(".implode(', ', $exportedPaths)."),\n"; +} +$psr4File .= ");\n"; + + +$targetDirLoader = null; +$mainAutoload = $rootPackage->getAutoload(); +if ($rootPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) { +$levels = substr_count($filesystem->normalizePath($rootPackage->getTargetDir()), '/') + 1; +$prefixes = implode(', ', array_map(static function ($prefix): string { +return var_export($prefix, true); +}, array_keys($mainAutoload['psr-0']))); +$baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true); + +$targetDirLoader = <<scanPaths($dir, $this->buildExclusionRegex($dir, $excluded)); +} + +if ($scanPsrPackages) { +$namespacesToScan = []; + + +foreach (['psr-4', 'psr-0'] as $psrType) { +foreach ($autoloads[$psrType] as $namespace => $paths) { +$namespacesToScan[$namespace][] = ['paths' => $paths, 'type' => $psrType]; +} +} + +krsort($namespacesToScan); + +foreach ($namespacesToScan as $namespace => $groups) { +foreach ($groups as $group) { +foreach ($group['paths'] as $dir) { +$dir = $filesystem->normalizePath($filesystem->isAbsolutePath($dir) ? $dir : $basePath.'/'.$dir); +if (!is_dir($dir)) { +continue; +} + +$classMapGenerator->scanPaths($dir, $this->buildExclusionRegex($dir, $excluded), $group['type'], $namespace); +} +} +} +} + +$classMap = $classMapGenerator->getClassMap(); +foreach ($classMap->getAmbiguousClasses() as $className => $ambiguousPaths) { +if (count($ambiguousPaths) > 1) { +$this->io->writeError( +'Warning: Ambiguous class resolution, "'.$className.'"'. +' was found '. (count($ambiguousPaths) + 1) .'x: in "'.$classMap->getClassPath($className).'" and "'. implode('", "', $ambiguousPaths) .'", the first will be used.' +); +} else { +$this->io->writeError( +'Warning: Ambiguous class resolution, "'.$className.'"'. +' was found in both "'.$classMap->getClassPath($className).'" and "'. implode('", "', $ambiguousPaths) .'", the first will be used.' +); +} +} +foreach ($classMap->getPsrViolations() as $msg) { +$this->io->writeError("$msg"); +} + +$classMap->addClass('Composer\InstalledVersions', $vendorPath . '/composer/InstalledVersions.php'); +$classMap->sort(); + +$classmapFile = <<getMap() as $className => $path) { +$pathCode = $this->getPathCode($filesystem, $basePath, $vendorPath, $path).",\n"; +$classmapFile .= ' '.var_export($className, true).' => '.$pathCode; +} +$classmapFile .= ");\n"; + +if ('' === $suffix) { +$suffix = null; +} +if (null === $suffix) { +$suffix = $config->get('autoloader-suffix'); + + +if (null === $suffix && Filesystem::isReadable($vendorPath.'/autoload.php')) { +$content = file_get_contents($vendorPath.'/autoload.php'); +if (Preg::isMatch('{ComposerAutoloaderInit([^:\s]+)::}', $content, $match)) { +$suffix = $match[1]; +} +} + + +if (null === $suffix) { +$suffix = md5(uniqid('', true)); +} +} + +$filesystem->filePutContentsIfModified($targetDir.'/autoload_namespaces.php', $namespacesFile); +$filesystem->filePutContentsIfModified($targetDir.'/autoload_psr4.php', $psr4File); +$filesystem->filePutContentsIfModified($targetDir.'/autoload_classmap.php', $classmapFile); +$includePathFilePath = $targetDir.'/include_paths.php'; +if ($includePathFileContents = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode)) { +$filesystem->filePutContentsIfModified($includePathFilePath, $includePathFileContents); +} elseif (file_exists($includePathFilePath)) { +unlink($includePathFilePath); +} +$includeFilesFilePath = $targetDir.'/autoload_files.php'; +if ($includeFilesFileContents = $this->getIncludeFilesFile($autoloads['files'], $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode)) { +$filesystem->filePutContentsIfModified($includeFilesFilePath, $includeFilesFileContents); +} elseif (file_exists($includeFilesFilePath)) { +unlink($includeFilesFilePath); +} +$filesystem->filePutContentsIfModified($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath)); +$checkPlatform = $config->get('platform-check') !== false && !($this->platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter); +$platformCheckContent = null; +if ($checkPlatform) { +$platformCheckContent = $this->getPlatformCheck($packageMap, $config->get('platform-check'), $devPackageNames); +if (null === $platformCheckContent) { +$checkPlatform = false; +} +} +if ($checkPlatform) { +$filesystem->filePutContentsIfModified($targetDir.'/platform_check.php', $platformCheckContent); +} elseif (file_exists($targetDir.'/platform_check.php')) { +unlink($targetDir.'/platform_check.php'); +} +$filesystem->filePutContentsIfModified($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix)); +$filesystem->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $checkPlatform)); + +$filesystem->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php'); +$filesystem->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE'); + +if ($this->runScripts) { +$this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP, $this->devMode, [], [ +'optimize' => $scanPsrPackages, +]); +} + +return $classMap; +} + + + + + +private function buildExclusionRegex(string $dir, ?array $excluded): ?string +{ +if (null === $excluded) { +return null; +} + + + + +if (file_exists($dir)) { + +$dirMatch = preg_quote(strtr(realpath($dir), '\\', '/')); +foreach ($excluded as $index => $pattern) { + +$pattern = Preg::replace('{^(([^.+*?\[^\]$(){}=!<>|:\\\\#-]+|\\\\[.+*?\[^\]$(){}=!<>|:#-])*).*}', '$1', $pattern); + +if (0 !== strpos($pattern, $dirMatch) && 0 !== strpos($dirMatch, $pattern)) { +unset($excluded[$index]); +} +} +} + +return \count($excluded) > 0 ? '{(' . implode('|', $excluded) . ')}' : null; +} + + + + + +public function buildPackageMap(InstallationManager $installationManager, PackageInterface $rootPackage, array $packages) +{ + +$packageMap = [[$rootPackage, '']]; + +foreach ($packages as $package) { +if ($package instanceof AliasPackage) { +continue; +} +$this->validatePackage($package); + +$packageMap[] = [ +$package, +$installationManager->getInstallPath($package), +]; +} + +return $packageMap; +} + + + + + +protected function validatePackage(PackageInterface $package) +{ +$autoload = $package->getAutoload(); +if (!empty($autoload['psr-4']) && null !== $package->getTargetDir()) { +$name = $package->getName(); +$package->getTargetDir(); +throw new \InvalidArgumentException("PSR-4 autoloading is incompatible with the target-dir property, remove the target-dir in package '$name'."); +} +if (!empty($autoload['psr-4'])) { +foreach ($autoload['psr-4'] as $namespace => $dirs) { +if ($namespace !== '' && '\\' !== substr($namespace, -1)) { +throw new \InvalidArgumentException("psr-4 namespaces must end with a namespace separator, '$namespace' does not, use '$namespace\\'."); +} +} +} +} + + + + + + + + + + + + + + + + +public function parseAutoloads(array $packageMap, PackageInterface $rootPackage, $filteredDevPackages = false) +{ +$rootPackageMap = array_shift($packageMap); +if (is_array($filteredDevPackages)) { +$packageMap = array_filter($packageMap, static function ($item) use ($filteredDevPackages): bool { +return !in_array($item[0]->getName(), $filteredDevPackages, true); +}); +} elseif ($filteredDevPackages) { +$packageMap = $this->filterPackageMap($packageMap, $rootPackage); +} +$sortedPackageMap = $this->sortPackageMap($packageMap); +$sortedPackageMap[] = $rootPackageMap; +array_unshift($packageMap, $rootPackageMap); + +$psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $rootPackage); +$psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $rootPackage); +$classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $rootPackage); +$files = $this->parseAutoloadsType($sortedPackageMap, 'files', $rootPackage); +$exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $rootPackage); + +krsort($psr0); +krsort($psr4); + +return [ +'psr-0' => $psr0, +'psr-4' => $psr4, +'classmap' => $classmap, +'files' => $files, +'exclude-from-classmap' => $exclude, +]; +} + + + + + + + +public function createLoader(array $autoloads, ?string $vendorDir = null) +{ +$loader = new ClassLoader($vendorDir); + +if (isset($autoloads['psr-0'])) { +foreach ($autoloads['psr-0'] as $namespace => $path) { +$loader->add($namespace, $path); +} +} + +if (isset($autoloads['psr-4'])) { +foreach ($autoloads['psr-4'] as $namespace => $path) { +$loader->addPsr4($namespace, $path); +} +} + +if (isset($autoloads['classmap'])) { +$excluded = null; +if (!empty($autoloads['exclude-from-classmap'])) { +$excluded = $autoloads['exclude-from-classmap']; +} + +$classMapGenerator = new ClassMapGenerator(['php', 'inc', 'hh']); +$classMapGenerator->avoidDuplicateScans(); + +foreach ($autoloads['classmap'] as $dir) { +try { +$classMapGenerator->scanPaths($dir, $this->buildExclusionRegex($dir, $excluded)); +} catch (\RuntimeException $e) { +$this->io->writeError(''.$e->getMessage().''); +} +} + +$loader->addClassMap($classMapGenerator->getClassMap()->getMap()); +} + +return $loader; +} + + + + + +protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, string $basePath, string $vendorPath, string $vendorPathCode, string $appBaseDirCode) +{ +$includePaths = []; + +foreach ($packageMap as $item) { +[$package, $installPath] = $item; + +if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) { +$installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); +} + +foreach ($package->getIncludePaths() as $includePath) { +$includePath = trim($includePath, '/'); +$includePaths[] = empty($installPath) ? $includePath : $installPath.'/'.$includePath; +} +} + +if (!$includePaths) { +return null; +} + +$includePathsCode = ''; +foreach ($includePaths as $path) { +$includePathsCode .= " " . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n"; +} + +return << $functionFile) { +$filesCode .= ' ' . var_export($fileIdentifier, true) . ' => ' +. $this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile) . ",\n"; +} + +if (!$filesCode) { +return null; +} + +return <<isAbsolutePath($path)) { +$path = $basePath . '/' . $path; +} +$path = $filesystem->normalizePath($path); + +$baseDir = ''; +if (strpos($path.'/', $vendorPath.'/') === 0) { +$path = (string) substr($path, strlen($vendorPath)); +$baseDir = '$vendorDir . '; +} else { +$path = $filesystem->normalizePath($filesystem->findShortestPath($basePath, $path, true)); +if (!$filesystem->isAbsolutePath($path)) { +$baseDir = '$baseDir . '; +$path = '/' . $path; +} +} + +if (strpos($path, '.phar') !== false) { +$baseDir = "'phar://' . " . $baseDir; +} + +return $baseDir . var_export($path, true); +} + + + + + + + +protected function getPlatformCheck(array $packageMap, $checkPlatform, array $devPackageNames) +{ +$lowestPhpVersion = Bound::zero(); +$requiredExtensions = []; +$extensionProviders = []; + +foreach ($packageMap as $item) { +$package = $item[0]; +foreach (array_merge($package->getReplaces(), $package->getProvides()) as $link) { +if (Preg::isMatch('{^ext-(.+)$}iD', $link->getTarget(), $match)) { +$extensionProviders[$match[1]][] = $link->getConstraint(); +} +} +} + +foreach ($packageMap as $item) { +$package = $item[0]; + +if (in_array($package->getName(), $devPackageNames, true)) { +continue; +} + +foreach ($package->getRequires() as $link) { +if ($this->platformRequirementFilter->isIgnored($link->getTarget())) { +continue; +} + +if ('php' === $link->getTarget()) { +$constraint = $link->getConstraint(); +if ($constraint->getLowerBound()->compareTo($lowestPhpVersion, '>')) { +$lowestPhpVersion = $constraint->getLowerBound(); +} +} + +if ($checkPlatform === true && Preg::isMatch('{^ext-(.+)$}iD', $link->getTarget(), $match)) { + +if (isset($extensionProviders[$match[1]])) { +foreach ($extensionProviders[$match[1]] as $provided) { +if ($provided->matches($link->getConstraint())) { +continue 2; +} +} +} + +if ($match[1] === 'zend-opcache') { +$match[1] = 'zend opcache'; +} + +$extension = var_export($match[1], true); +if ($match[1] === 'pcntl' || $match[1] === 'readline') { +$requiredExtensions[$extension] = "PHP_SAPI !== 'cli' || extension_loaded($extension) || \$missingExtensions[] = $extension;\n"; +} else { +$requiredExtensions[$extension] = "extension_loaded($extension) || \$missingExtensions[] = $extension;\n"; +} +} +} +} + +ksort($requiredExtensions); + +$formatToPhpVersionId = static function (Bound $bound): int { +if ($bound->isZero()) { +return 0; +} + +if ($bound->isPositiveInfinity()) { +return 99999; +} + +$version = str_replace('-', '.', $bound->getVersion()); +$chunks = array_map('intval', explode('.', $version)); + +return $chunks[0] * 10000 + $chunks[1] * 100 + $chunks[2]; +}; + +$formatToHumanReadable = static function (Bound $bound) { +if ($bound->isZero()) { +return 0; +} + +if ($bound->isPositiveInfinity()) { +return 99999; +} + +$version = str_replace('-', '.', $bound->getVersion()); +$chunks = explode('.', $version); +$chunks = array_slice($chunks, 0, 3); + +return implode('.', $chunks); +}; + +$requiredPhp = ''; +$requiredPhpError = ''; +if (!$lowestPhpVersion->isZero()) { +$operator = $lowestPhpVersion->isInclusive() ? '>=' : '>'; +$requiredPhp = 'PHP_VERSION_ID '.$operator.' '.$formatToPhpVersionId($lowestPhpVersion); +$requiredPhpError = '"'.$operator.' '.$formatToHumanReadable($lowestPhpVersion).'"'; +} + +if ($requiredPhp) { +$requiredPhp = <<classMapAuthoritative) { +$file .= <<<'CLASSMAPAUTHORITATIVE' + $loader->setClassMapAuthoritative(true); + +CLASSMAPAUTHORITATIVE; +} + +if ($this->apcu) { +$apcuPrefix = var_export(($this->apcuPrefix !== null ? $this->apcuPrefix : substr(base64_encode(md5(uniqid('', true), true)), 0, -3)), true); +$file .= <<setApcuPrefix($apcuPrefix); + +APCU; +} + +if ($useGlobalIncludePath) { +$file .= <<<'INCLUDEPATH' + $loader->setUseIncludePath(true); + +INCLUDEPATH; +} + +if ($targetDirLoader) { +$file .= <<register($prependAutoloader); + + +REGISTER_LOADER; + +if ($useIncludeFiles) { +$file .= << \$file) { + \$requireFile(\$fileIdentifier, \$file); + } + + +INCLUDE_FILES; +} + +$file .= << $path) { +$loader->set($namespace, $path); +} + +$map = require $targetDir . '/autoload_psr4.php'; +foreach ($map as $namespace => $path) { +$loader->setPsr4($namespace, $path); +} + +$classMap = require $targetDir . '/autoload_classmap.php'; +if ($classMap) { +$loader->addClassMap($classMap); +} + +$filesystem = new Filesystem(); + +$vendorPathCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; +$vendorPharPathCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; +$appBaseDirCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; +$appBaseDirPharCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; + +$absoluteVendorPathCode = ' => ' . substr(var_export(rtrim($vendorDir, '\\/') . '/', true), 0, -1); +$absoluteVendorPharPathCode = ' => ' . substr(var_export(rtrim('phar://' . $vendorDir, '\\/') . '/', true), 0, -1); +$absoluteAppBaseDirCode = ' => ' . substr(var_export(rtrim($baseDir, '\\/') . '/', true), 0, -1); +$absoluteAppBaseDirPharCode = ' => ' . substr(var_export(rtrim('phar://' . $baseDir, '\\/') . '/', true), 0, -1); + +$initializer = ''; +$prefix = "\0Composer\Autoload\ClassLoader\0"; +$prefixLen = strlen($prefix); +if (file_exists($targetDir . '/autoload_files.php')) { +$maps = ['files' => require $targetDir . '/autoload_files.php']; +} else { +$maps = []; +} + +foreach ((array) $loader as $prop => $value) { +if (!is_array($value) || \count($value) === 0 || !str_starts_with($prop, $prefix)) { +continue; +} +$maps[substr($prop, $prefixLen)] = $value; +} + +foreach ($maps as $prop => $value) { +$value = strtr( +var_export($value, true), +[ +$absoluteVendorPathCode => $vendorPathCode, +$absoluteVendorPharPathCode => $vendorPharPathCode, +$absoluteAppBaseDirCode => $appBaseDirCode, +$absoluteAppBaseDirPharCode => $appBaseDirPharCode, +] +); +$value = ltrim(Preg::replace('/^ */m', ' $0$0', $value)); + +$file .= sprintf(" public static $%s = %s;\n\n", $prop, $value); +if ('files' !== $prop) { +$initializer .= " \$loader->$prop = ComposerStaticInit$suffix::\$$prop;\n"; +} +} + +return $file . <<getAutoload(); +if ($this->devMode && $package === $rootPackage) { +$autoload = array_merge_recursive($autoload, $package->getDevAutoload()); +} + + +if (!isset($autoload[$type]) || !is_array($autoload[$type])) { +continue; +} +if (null !== $package->getTargetDir() && $package !== $rootPackage) { +$installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); +} + +foreach ($autoload[$type] as $namespace => $paths) { +foreach ((array) $paths as $path) { +if (($type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !Filesystem::isReadable($installPath.'/'.$path)) { + +if ($package === $rootPackage) { +$targetDir = str_replace('\\', '[\\\\/]', preg_quote(str_replace(['/', '\\'], '', $package->getTargetDir()))); +$path = ltrim(Preg::replace('{^'.$targetDir.'}', '', ltrim($path, '\\/')), '\\/'); +} else { + +$path = $package->getTargetDir() . '/' . $path; +} +} + +if ($type === 'exclude-from-classmap') { + +$path = Preg::replace('{/+}', '/', preg_quote(trim(strtr($path, '\\', '/'), '/'))); + + +$path = strtr($path, ['\\*\\*' => '.+?', '\\*' => '[^/]+?']); + + +$updir = null; +$path = Preg::replaceCallback( +'{^((?:(?:\\\\\\.){1,2}+/)+)}', +static function ($matches) use (&$updir): string { +if (isset($matches[1])) { + +$updir = str_replace('\\.', '.', $matches[1]); +} + +return ''; +}, +$path +); +if (empty($installPath)) { +$installPath = strtr(Platform::getCwd(), '\\', '/'); +} + +$resolvedPath = realpath($installPath . '/' . $updir); +if (false === $resolvedPath) { +continue; +} +$autoloads[] = preg_quote(strtr($resolvedPath, '\\', '/')) . '/' . $path . '($|/)'; +continue; +} + +$relativePath = empty($installPath) ? (empty($path) ? '.' : $path) : $installPath.'/'.$path; + +if ($type === 'files') { +$autoloads[$this->getFileIdentifier($package, $path)] = $relativePath; +continue; +} +if ($type === 'classmap') { +$autoloads[] = $relativePath; +continue; +} + +$autoloads[$namespace][] = $relativePath; +} +} +} + +return $autoloads; +} + + + + +protected function getFileIdentifier(PackageInterface $package, string $path) +{ +return md5($package->getName() . ':' . $path); +} + + + + + + + + + +protected function filterPackageMap(array $packageMap, RootPackageInterface $rootPackage) +{ +$packages = []; +$include = []; +$replacedBy = []; + +foreach ($packageMap as $item) { +$package = $item[0]; +$name = $package->getName(); +$packages[$name] = $package; +foreach ($package->getReplaces() as $replace) { +$replacedBy[$replace->getTarget()] = $name; +} +} + +$add = static function (PackageInterface $package) use (&$add, $packages, &$include, $replacedBy): void { +foreach ($package->getRequires() as $link) { +$target = $link->getTarget(); +if (isset($replacedBy[$target])) { +$target = $replacedBy[$target]; +} +if (!isset($include[$target])) { +$include[$target] = true; +if (isset($packages[$target])) { +$add($packages[$target]); +} +} +} +}; +$add($rootPackage); + +return array_filter( +$packageMap, +static function ($item) use ($include): bool { +$package = $item[0]; +foreach ($package->getNames() as $name) { +if (isset($include[$name])) { +return true; +} +} + +return false; +} +); +} + + + + + + + + + +protected function sortPackageMap(array $packageMap) +{ +$packages = []; +$paths = []; + +foreach ($packageMap as $item) { +[$package, $path] = $item; +$name = $package->getName(); +$packages[$name] = $package; +$paths[$name] = $path; +} + +$sortedPackages = PackageSorter::sortPackages($packages); + +$sortedPackageMap = []; + +foreach ($sortedPackages as $package) { +$name = $package->getName(); +$sortedPackageMap[] = [$packages[$name], $paths[$name]]; +} + +return $sortedPackageMap; +} +} + +function composerRequire(string $fileIdentifier, string $file): void +{ +if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { +$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + +require $file; +} +} diff --git a/composer/src/Composer/Autoload/ClassLoader.php b/composer/src/Composer/Autoload/ClassLoader.php new file mode 100644 index 000000000..a72151c77 --- /dev/null +++ b/composer/src/Composer/Autoload/ClassLoader.php @@ -0,0 +1,585 @@ + + * 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 https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var \Closure(string):void */ + private static $includeFile; + + /** @var ?string */ + private $vendorDir; + + // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ + private $missingClasses = array(); + + /** @var ?string */ + private $apcuPrefix; + + /** + * @var self[] + */ + private static $registeredLoaders = array(); + + /** + * @param ?string $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return string[] + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array[] + * @psalm-return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return string[] Array of classname => path + * @psalm-return array + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void + */ + 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 string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + 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 string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + 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 string[]|string $paths The PSR-0 base directories + * + * @return void + */ + 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 string[]|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + $includeFile = self::$includeFile; + $includeFile($file); + + return true; + } + + return null; + } + + /** + * 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; + } + + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + 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; + } + + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } +} diff --git a/composer/src/Composer/Autoload/ClassMapGenerator.php b/composer/src/Composer/Autoload/ClassMapGenerator.php new file mode 100644 index 000000000..e331ad2b7 --- /dev/null +++ b/composer/src/Composer/Autoload/ClassMapGenerator.php @@ -0,0 +1,98 @@ +files = $scannedFiles; +$generator->avoidDuplicateScans($fileList); + +$generator->scanPaths($path, $excluded, $autoloadType ?? 'classmap', $namespace); + +$classMap = $generator->getClassMap(); + +$scannedFiles = $fileList->files; + +if ($io !== null) { +foreach ($classMap->getPsrViolations() as $msg) { +$io->writeError("$msg"); +} + +foreach ($classMap->getAmbiguousClasses() as $class => $paths) { +if (count($paths) > 1) { +$io->writeError( +'Warning: Ambiguous class resolution, "'.$class.'"'. +' was found '. (count($paths) + 1) .'x: in "'.$classMap->getClassPath($class).'" and "'. implode('", "', $paths) .'", the first will be used.' +); +} else { +$io->writeError( +'Warning: Ambiguous class resolution, "'.$class.'"'. +' was found in both "'.$classMap->getClassPath($class).'" and "'. implode('", "', $paths) .'", the first will be used.' +); +} +} +} + +return $classMap->getMap(); +} +} diff --git a/composer/src/Composer/Autoload/PhpFileCleaner.php b/composer/src/Composer/Autoload/PhpFileCleaner.php new file mode 100644 index 000000000..5e9a8719e --- /dev/null +++ b/composer/src/Composer/Autoload/PhpFileCleaner.php @@ -0,0 +1,247 @@ + $type, +'length' => \strlen($type), +'pattern' => '{.\b(?])'.$type.'\s++[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+}Ais', +]; +} + +self::$restPattern = '{[^?"\'contents = $contents; +$this->len = \strlen($this->contents); +$this->maxMatches = $maxMatches; +} + +public function clean(): string +{ +$clean = ''; + +while ($this->index < $this->len) { +$this->skipToPhp(); +$clean .= 'index < $this->len) { +$char = $this->contents[$this->index]; +if ($char === '?' && $this->peek('>')) { +$clean .= '?>'; +$this->index += 2; +continue 2; +} + +if ($char === '"') { +$this->skipString('"'); +$clean .= 'null'; +continue; +} + +if ($char === "'") { +$this->skipString("'"); +$clean .= 'null'; +continue; +} + +if ($char === "<" && $this->peek('<') && $this->match('{<<<[ \t]*+([\'"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*+)\\1(?:\r\n|\n|\r)}A', $match)) { +$this->index += \strlen($match[0]); +$this->skipHeredoc($match[2]); +$clean .= 'null'; +continue; +} + +if ($char === '/') { +if ($this->peek('/')) { +$this->skipToNewline(); +continue; +} +if ($this->peek('*')) { +$this->skipComment(); +continue; +} +} + +if ($this->maxMatches === 1 && isset(self::$typeConfig[$char])) { +$type = self::$typeConfig[$char]; +if ( +\substr($this->contents, $this->index, $type['length']) === $type['name'] +&& Preg::isMatch($type['pattern'], $this->contents, $match, 0, $this->index - 1) +) { +$clean .= $match[0]; + +return $clean; +} +} + +$this->index += 1; +if ($this->match(self::$restPattern, $match)) { +$clean .= $char . $match[0]; +$this->index += \strlen($match[0]); +} else { +$clean .= $char; +} +} +} + +return $clean; +} + +private function skipToPhp(): void +{ +while ($this->index < $this->len) { +if ($this->contents[$this->index] === '<' && $this->peek('?')) { +$this->index += 2; +break; +} + +$this->index += 1; +} +} + +private function skipString(string $delimiter): void +{ +$this->index += 1; +while ($this->index < $this->len) { +if ($this->contents[$this->index] === '\\' && ($this->peek('\\') || $this->peek($delimiter))) { +$this->index += 2; +continue; +} +if ($this->contents[$this->index] === $delimiter) { +$this->index += 1; +break; +} +$this->index += 1; +} +} + +private function skipComment(): void +{ +$this->index += 2; +while ($this->index < $this->len) { +if ($this->contents[$this->index] === '*' && $this->peek('/')) { +$this->index += 2; +break; +} + +$this->index += 1; +} +} + +private function skipToNewline(): void +{ +while ($this->index < $this->len) { +if ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n") { +return; +} +$this->index += 1; +} +} + +private function skipHeredoc(string $delimiter): void +{ +$firstDelimiterChar = $delimiter[0]; +$delimiterLength = \strlen($delimiter); +$delimiterPattern = '{'.preg_quote($delimiter).'(?![a-zA-Z0-9_\x80-\xff])}A'; + +while ($this->index < $this->len) { + +switch ($this->contents[$this->index]) { +case "\t": +case " ": +$this->index += 1; +continue 2; +case $firstDelimiterChar: +if ( +\substr($this->contents, $this->index, $delimiterLength) === $delimiter +&& $this->match($delimiterPattern) +) { +$this->index += $delimiterLength; + +return; +} +break; +} + + +while ($this->index < $this->len) { +$this->skipToNewline(); + + +while ($this->index < $this->len && ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n")) { +$this->index += 1; +} + +break; +} +} +} + +private function peek(string $char): bool +{ +return $this->index + 1 < $this->len && $this->contents[$this->index + 1] === $char; +} + + + + + +private function match($regex, ?array &$match = null): bool +{ +return Preg::isMatch($regex, $this->contents, $match, 0, $this->index); +} +} diff --git a/composer/src/Composer/Cache.php b/composer/src/Composer/Cache.php new file mode 100644 index 000000000..5babb806a --- /dev/null +++ b/composer/src/Composer/Cache.php @@ -0,0 +1,389 @@ +io = $io; +$this->root = rtrim($cacheDir, '/\\') . '/'; +$this->allowlist = $allowlist; +$this->filesystem = $filesystem ?: new Filesystem(); +$this->readOnly = (bool) $readOnly; + +if (!self::isUsable($cacheDir)) { +$this->enabled = false; +} +} + + + + +public function setReadOnly(bool $readOnly) +{ +$this->readOnly = (bool) $readOnly; +} + + + + +public function isReadOnly() +{ +return $this->readOnly; +} + + + + +public static function isUsable(string $path) +{ +return !Preg::isMatch('{(^|[\\\\/])(\$null|nul|NUL|/dev/null)([\\\\/]|$)}', $path); +} + + + + +public function isEnabled() +{ +if ($this->enabled === null) { +$this->enabled = true; + +if ( +!$this->readOnly +&& ( +(!is_dir($this->root) && !Silencer::call('mkdir', $this->root, 0777, true)) +|| !is_writable($this->root) +) +) { +$this->io->writeError('Cannot create cache directory ' . $this->root . ', or directory is not writable. Proceeding without cache. See also cache-read-only config if your filesystem is read-only.'); +$this->enabled = false; +} +} + +return $this->enabled; +} + + + + +public function getRoot() +{ +return $this->root; +} + + + + +public function read(string $file) +{ +if ($this->isEnabled()) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); +if (file_exists($this->root . $file)) { +$this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); + +return file_get_contents($this->root . $file); +} +} + +return false; +} + + + + +public function write(string $file, string $contents) +{ +$wasEnabled = $this->enabled === true; + +if ($this->isEnabled() && !$this->readOnly) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); + +$this->io->writeError('Writing '.$this->root . $file.' into cache', true, IOInterface::DEBUG); + +$tempFileName = $this->root . $file . uniqid('.', true) . '.tmp'; +try { +return file_put_contents($tempFileName, $contents) !== false && rename($tempFileName, $this->root . $file); +} catch (\ErrorException $e) { + + +if ($wasEnabled) { +clearstatcache(); +$this->enabled = null; +return $this->write($file, $contents); +} + +$this->io->writeError('Failed to write into cache: '.$e->getMessage().'', true, IOInterface::DEBUG); +if (Preg::isMatch('{^file_put_contents\(\): Only ([0-9]+) of ([0-9]+) bytes written}', $e->getMessage(), $m)) { + +unlink($tempFileName); + +$message = sprintf( +'Writing %1$s into cache failed after %2$u of %3$u bytes written, only %4$s bytes of free space available', +$tempFileName, +$m[1], +$m[2], +function_exists('disk_free_space') ? @disk_free_space(dirname($tempFileName)) : 'unknown' +); + +$this->io->writeError($message); + +return false; +} + +throw $e; +} +} + +return false; +} + + + + + + +public function copyFrom(string $file, string $source) +{ +if ($this->isEnabled() && !$this->readOnly) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); +$this->filesystem->ensureDirectoryExists(dirname($this->root . $file)); + +if (!file_exists($source)) { +$this->io->writeError(''.$source.' does not exist, can not write into cache'); +} elseif ($this->io->isDebug()) { +$this->io->writeError('Writing '.$this->root . $file.' into cache from '.$source); +} + +return copy($source, $this->root . $file); +} + +return false; +} + + + + + + +public function copyTo(string $file, string $target) +{ +if ($this->isEnabled()) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); +if (file_exists($this->root . $file)) { +try { +touch($this->root . $file, (int) filemtime($this->root . $file), time()); +} catch (\ErrorException $e) { + + +Silencer::call('touch', $this->root . $file); +} + +$this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); + +return copy($this->root . $file, $target); +} +} + +return false; +} + + + + +public function gcIsNecessary() +{ +if (self::$cacheCollected) { +return false; +} + +self::$cacheCollected = true; +if (Platform::getEnv('COMPOSER_TEST_SUITE')) { +return false; +} + +if (Platform::isInputCompletionProcess()) { +return false; +} + +return !random_int(0, 50); +} + + + + +public function remove(string $file) +{ +if ($this->isEnabled() && !$this->readOnly) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); +if (file_exists($this->root . $file)) { +return $this->filesystem->unlink($this->root . $file); +} +} + +return false; +} + + + + +public function clear() +{ +if ($this->isEnabled() && !$this->readOnly) { +$this->filesystem->emptyDirectory($this->root); + +return true; +} + +return false; +} + + + + + +public function getAge(string $file) +{ +if ($this->isEnabled()) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); +if (file_exists($this->root . $file) && ($mtime = filemtime($this->root . $file)) !== false) { +return abs(time() - $mtime); +} +} + +return false; +} + + + + +public function gc(int $ttl, int $maxSize) +{ +if ($this->isEnabled() && !$this->readOnly) { +$expire = new \DateTime(); +$expire->modify('-'.$ttl.' seconds'); + +$finder = $this->getFinder()->date('until '.$expire->format('Y-m-d H:i:s')); +foreach ($finder as $file) { +$this->filesystem->unlink($file->getPathname()); +} + +$totalSize = $this->filesystem->size($this->root); +if ($totalSize > $maxSize) { +$iterator = $this->getFinder()->sortByAccessedTime()->getIterator(); +while ($totalSize > $maxSize && $iterator->valid()) { +$filepath = $iterator->current()->getPathname(); +$totalSize -= $this->filesystem->size($filepath); +$this->filesystem->unlink($filepath); +$iterator->next(); +} +} + +self::$cacheCollected = true; + +return true; +} + +return false; +} + +public function gcVcsCache(int $ttl): bool +{ +if ($this->isEnabled()) { +$expire = new \DateTime(); +$expire->modify('-'.$ttl.' seconds'); + +$finder = Finder::create()->in($this->root)->directories()->depth(0)->date('until '.$expire->format('Y-m-d H:i:s')); +foreach ($finder as $file) { +$this->filesystem->removeDirectory($file->getPathname()); +} + +self::$cacheCollected = true; + +return true; +} + +return false; +} + + + + +public function sha1(string $file) +{ +if ($this->isEnabled()) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); +if (file_exists($this->root . $file)) { +return sha1_file($this->root . $file); +} +} + +return false; +} + + + + +public function sha256(string $file) +{ +if ($this->isEnabled()) { +$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); +if (file_exists($this->root . $file)) { +return hash_file('sha256', $this->root . $file); +} +} + +return false; +} + + + + +protected function getFinder() +{ +return Finder::create()->in($this->root)->files(); +} +} diff --git a/composer/src/Composer/Command/AboutCommand.php b/composer/src/Composer/Command/AboutCommand.php new file mode 100644 index 000000000..c526184ba --- /dev/null +++ b/composer/src/Composer/Command/AboutCommand.php @@ -0,0 +1,51 @@ +setName('about') +->setDescription('Shows a short information about Composer') +->setHelp( +<<php composer.phar about +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$composerVersion = Composer::getVersion(); + +$this->getIO()->write( +<<Composer - Dependency Manager for PHP - version $composerVersion +Composer is a dependency manager tracking local dependencies of your projects and libraries. +See https://getcomposer.org/ for more information. +EOT +); + +return 0; +} +} diff --git a/composer/src/Composer/Command/ArchiveCommand.php b/composer/src/Composer/Command/ArchiveCommand.php new file mode 100644 index 000000000..f5b460e43 --- /dev/null +++ b/composer/src/Composer/Command/ArchiveCommand.php @@ -0,0 +1,212 @@ +setName('archive') +->setDescription('Creates an archive of this composer package') +->setDefinition([ +new InputArgument('package', InputArgument::OPTIONAL, 'The package to archive instead of the current project', null, $this->suggestAvailablePackage()), +new InputArgument('version', InputArgument::OPTIONAL, 'A version constraint to find the package to archive'), +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the resulting archive: tar, tar.gz, tar.bz2 or zip (default tar)', null, self::FORMATS), +new InputOption('dir', null, InputOption::VALUE_REQUIRED, 'Write the archive to this directory'), +new InputOption('file', null, InputOption::VALUE_REQUIRED, 'Write the archive with the given file name.' +.' Note that the format will be appended.'), +new InputOption('ignore-filters', null, InputOption::VALUE_NONE, 'Ignore filters when saving package'), +]) +->setHelp( +<<archive command creates an archive of the specified format +containing the files and directories of the Composer project or the specified +package in the specified version and writes it to the specified directory. + +php composer.phar archive [--format=zip] [--dir=/foo] [--file=filename] [package [version]] + +Read more at https://getcomposer.org/doc/03-cli.md#archive +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$composer = $this->tryComposer(); +$config = null; + +if ($composer) { +$config = $composer->getConfig(); +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'archive', $input, $output); +$eventDispatcher = $composer->getEventDispatcher(); +$eventDispatcher->dispatch($commandEvent->getName(), $commandEvent); +$eventDispatcher->dispatchScript(ScriptEvents::PRE_ARCHIVE_CMD); +} + +if (!$config) { +$config = Factory::createConfig(); +} + +$format = $input->getOption('format') ?? $config->get('archive-format'); +$dir = $input->getOption('dir') ?? $config->get('archive-dir'); + +$returnCode = $this->archive( +$this->getIO(), +$config, +$input->getArgument('package'), +$input->getArgument('version'), +$format, +$dir, +$input->getOption('file'), +$input->getOption('ignore-filters'), +$composer +); + +if (0 === $returnCode && $composer) { +$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ARCHIVE_CMD); +} + +return $returnCode; +} + + + + +protected function archive(IOInterface $io, Config $config, ?string $packageName, ?string $version, string $format, string $dest, ?string $fileName, bool $ignoreFilters, ?Composer $composer): int +{ +if ($composer) { +$archiveManager = $composer->getArchiveManager(); +} else { +$factory = new Factory; +$process = new ProcessExecutor(); +$httpDownloader = Factory::createHttpDownloader($io, $config); +$downloadManager = $factory->createDownloadManager($io, $config, $httpDownloader, $process); +$archiveManager = $factory->createArchiveManager($config, $downloadManager, new Loop($httpDownloader, $process)); +} + +if ($packageName) { +$package = $this->selectPackage($io, $packageName, $version); + +if (!$package) { +return 1; +} +} else { +$package = $this->requireComposer()->getPackage(); +} + +$io->writeError('Creating the archive into "'.$dest.'".'); +$packagePath = $archiveManager->archive($package, $format, $dest, $fileName, $ignoreFilters); +$fs = new Filesystem; +$shortPath = $fs->findShortestPath(Platform::getCwd(), $packagePath, true); + +$io->writeError('Created: ', false); +$io->write(strlen($shortPath) < strlen($packagePath) ? $shortPath : $packagePath); + +return 0; +} + + + + +protected function selectPackage(IOInterface $io, string $packageName, ?string $version = null) +{ +$io->writeError('Searching for the specified package.'); + +if ($composer = $this->tryComposer()) { +$localRepo = $composer->getRepositoryManager()->getLocalRepository(); +$repo = new CompositeRepository(array_merge([$localRepo], $composer->getRepositoryManager()->getRepositories())); +$minStability = $composer->getPackage()->getMinimumStability(); +} else { +$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io); +$io->writeError('No composer.json found in the current directory, searching packages from ' . implode(', ', array_keys($defaultRepos))); +$repo = new CompositeRepository($defaultRepos); +$minStability = 'stable'; +} + +if ($version !== null && Preg::isMatchStrictGroups('{@(stable|RC|beta|alpha|dev)$}i', $version, $match)) { +$minStability = $match[1]; +$version = (string) substr($version, 0, -strlen($match[0])); +} + +$repoSet = new RepositorySet($minStability); +$repoSet->addRepository($repo); +$parser = new VersionParser(); +$constraint = $version !== null ? $parser->parseConstraints($version) : null; +$packages = $repoSet->findPackages(strtolower($packageName), $constraint); + +if (count($packages) > 1) { +$versionSelector = new VersionSelector($repoSet); +$package = $versionSelector->findBestCandidate(strtolower($packageName), $version, $minStability); +if ($package === false) { +$package = reset($packages); +} + +$io->writeError('Found multiple matches, selected '.$package->getPrettyString().'.'); +$io->writeError('Alternatives were '.implode(', ', array_map(static function ($p): string { +return $p->getPrettyString(); +}, $packages)).'.'); +$io->writeError('Please use a more specific constraint to pick a different package.'); +} elseif (count($packages) === 1) { +$package = reset($packages); +$io->writeError('Found an exact match '.$package->getPrettyString().'.'); +} else { +$io->writeError('Could not find a package matching '.$packageName.'.'); + +return false; +} + +if (!$package instanceof CompletePackageInterface) { +throw new \LogicException('Expected a CompletePackageInterface instance but found '.get_class($package)); +} +if (!$package instanceof BasePackage) { +throw new \LogicException('Expected a BasePackage instance but found '.get_class($package)); +} + +return $package; +} +} diff --git a/composer/src/Composer/Command/AuditCommand.php b/composer/src/Composer/Command/AuditCommand.php new file mode 100644 index 000000000..6ed8d96c0 --- /dev/null +++ b/composer/src/Composer/Command/AuditCommand.php @@ -0,0 +1,92 @@ +setName('audit') +->setDescription('Checks for security vulnerability advisories for installed packages') +->setDefinition([ +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables auditing of require-dev packages.'), +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_TABLE, Auditor::FORMATS), +new InputOption('locked', null, InputOption::VALUE_NONE, 'Audit based on the lock file instead of the installed packages.'), +]) +->setHelp( +<<audit command checks for security vulnerability advisories for installed packages. + +If you do not want to include dev dependencies in the audit you can omit them with --no-dev + +Read more at https://getcomposer.org/doc/03-cli.md#audit +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$composer = $this->requireComposer(); +$packages = $this->getPackages($composer, $input); + +if (count($packages) === 0) { +$this->getIO()->writeError('No packages - skipping audit.'); + +return 0; +} + +$auditor = new Auditor(); +$repoSet = new RepositorySet(); +foreach ($composer->getRepositoryManager()->getRepositories() as $repo) { +$repoSet->addRepository($repo); +} + +return min(255, $auditor->audit($this->getIO(), $repoSet, $packages, $this->getAuditFormat($input, 'format'), false)); +} + + + + +private function getPackages(Composer $composer, InputInterface $input): array +{ +if ($input->getOption('locked')) { +if (!$composer->getLocker()->isLocked()) { +throw new \UnexpectedValueException('Valid composer.json and composer.lock files are required to run this command with --locked'); +} +$locker = $composer->getLocker(); + +return $locker->getLockedRepository(!$input->getOption('no-dev'))->getPackages(); +} + +$rootPkg = $composer->getPackage(); +$installedRepo = new InstalledRepository([$composer->getRepositoryManager()->getLocalRepository()]); + +if ($input->getOption('no-dev')) { +return RepositoryUtils::filterRequiredPackages($installedRepo->getPackages(), $rootPkg); +} + +return $installedRepo->getPackages(); +} +} diff --git a/composer/src/Composer/Command/BaseCommand.php b/composer/src/Composer/Command/BaseCommand.php new file mode 100644 index 000000000..76d7844b7 --- /dev/null +++ b/composer/src/Composer/Command/BaseCommand.php @@ -0,0 +1,436 @@ +requireComposer($disablePlugins, $disableScripts); +} + +return $this->tryComposer($disablePlugins, $disableScripts); +} + + + + + + + + + + +public function requireComposer(?bool $disablePlugins = null, ?bool $disableScripts = null): Composer +{ +if (null === $this->composer) { +$application = parent::getApplication(); +if ($application instanceof Application) { +$this->composer = $application->getComposer(true, $disablePlugins, $disableScripts); +assert($this->composer instanceof Composer); +} else { +throw new \RuntimeException( +'Could not create a Composer\Composer instance, you must inject '. +'one if this command is not used with a Composer\Console\Application instance' +); +} +} + +return $this->composer; +} + + + + + + + + + +public function tryComposer(?bool $disablePlugins = null, ?bool $disableScripts = null): ?Composer +{ +if (null === $this->composer) { +$application = parent::getApplication(); +if ($application instanceof Application) { +$this->composer = $application->getComposer(false, $disablePlugins, $disableScripts); +} +} + +return $this->composer; +} + + + + +public function setComposer(Composer $composer) +{ +$this->composer = $composer; +} + + + + + + +public function resetComposer() +{ +$this->composer = null; +$this->getApplication()->resetComposer(); +} + + + + + + + + +public function isProxyCommand() +{ +return false; +} + + + + +public function getIO() +{ +if (null === $this->io) { +$application = parent::getApplication(); +if ($application instanceof Application) { +$this->io = $application->getIO(); +} else { +$this->io = new NullIO(); +} +} + +return $this->io; +} + + + + +public function setIO(IOInterface $io) +{ +$this->io = $io; +} + + + + + + + + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +$definition = $this->getDefinition(); +$name = (string) $input->getCompletionName(); +if (CompletionInput::TYPE_OPTION_VALUE === $input->getCompletionType() +&& $definition->hasOption($name) +&& ($option = $definition->getOption($name)) instanceof InputOption +) { +$option->complete($input, $suggestions); +} elseif (CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() +&& $definition->hasArgument($name) +&& ($argument = $definition->getArgument($name)) instanceof InputArgument +) { +$argument->complete($input, $suggestions); +} else { +parent::complete($input, $suggestions); +} +} + + + + + + +protected function initialize(InputInterface $input, OutputInterface $output) +{ + +$disablePlugins = $input->hasParameterOption('--no-plugins'); +$disableScripts = $input->hasParameterOption('--no-scripts'); +if ($this instanceof SelfUpdateCommand) { +$disablePlugins = true; +$disableScripts = true; +} + +$composer = $this->tryComposer($disablePlugins, $disableScripts); +$io = $this->getIO(); + +if (null === $composer) { +$composer = Factory::createGlobal($this->getIO(), $disablePlugins, $disableScripts); +} +if ($composer) { +$preCommandRunEvent = new PreCommandRunEvent(PluginEvents::PRE_COMMAND_RUN, $input, $this->getName()); +$composer->getEventDispatcher()->dispatch($preCommandRunEvent->getName(), $preCommandRunEvent); +} + +if (true === $input->hasParameterOption(['--no-ansi']) && $input->hasOption('no-progress')) { +$input->setOption('no-progress', true); +} + +$envOptions = [ +'COMPOSER_NO_AUDIT' => ['no-audit'], +'COMPOSER_NO_DEV' => ['no-dev', 'update-no-dev'], +'COMPOSER_PREFER_STABLE' => ['prefer-stable'], +'COMPOSER_PREFER_LOWEST' => ['prefer-lowest'], +]; +foreach ($envOptions as $envName => $optionNames) { +foreach ($optionNames as $optionName) { +if (true === $input->hasOption($optionName)) { +if (false === $input->getOption($optionName) && (bool) Platform::getEnv($envName)) { +$input->setOption($optionName, true); +} +} +} +} + +if (true === $input->hasOption('ignore-platform-reqs')) { +if (!$input->getOption('ignore-platform-reqs') && (bool) Platform::getEnv('COMPOSER_IGNORE_PLATFORM_REQS')) { +$input->setOption('ignore-platform-reqs', true); + +$io->writeError('COMPOSER_IGNORE_PLATFORM_REQS is set. You may experience unexpected errors.'); +} +} + +if (true === $input->hasOption('ignore-platform-req') && (!$input->hasOption('ignore-platform-reqs') || !$input->getOption('ignore-platform-reqs'))) { +$ignorePlatformReqEnv = Platform::getEnv('COMPOSER_IGNORE_PLATFORM_REQ'); +if (0 === count($input->getOption('ignore-platform-req')) && is_string($ignorePlatformReqEnv) && '' !== $ignorePlatformReqEnv) { +$input->setOption('ignore-platform-req', explode(',', $ignorePlatformReqEnv)); + +$io->writeError('COMPOSER_IGNORE_PLATFORM_REQ is set to ignore '.$ignorePlatformReqEnv.'. You may experience unexpected errors.'); +} +} + +parent::initialize($input, $output); +} + + + + + + +protected function getPreferredInstallOptions(Config $config, InputInterface $input, bool $keepVcsRequiresPreferSource = false) +{ +$preferSource = false; +$preferDist = false; + +switch ($config->get('preferred-install')) { +case 'source': +$preferSource = true; +break; +case 'dist': +$preferDist = true; +break; +case 'auto': +default: + +break; +} + +if (!$input->hasOption('prefer-dist') || !$input->hasOption('prefer-source')) { +return [$preferSource, $preferDist]; +} + +if ($input->hasOption('prefer-install') && is_string($input->getOption('prefer-install'))) { +if ($input->getOption('prefer-source')) { +throw new \InvalidArgumentException('--prefer-source can not be used together with --prefer-install'); +} +if ($input->getOption('prefer-dist')) { +throw new \InvalidArgumentException('--prefer-dist can not be used together with --prefer-install'); +} +switch ($input->getOption('prefer-install')) { +case 'dist': +$input->setOption('prefer-dist', true); +break; +case 'source': +$input->setOption('prefer-source', true); +break; +case 'auto': +$preferDist = false; +$preferSource = false; +break; +default: +throw new \UnexpectedValueException('--prefer-install accepts one of "dist", "source" or "auto", got '.$input->getOption('prefer-install')); +} +} + +if ($input->getOption('prefer-source') || $input->getOption('prefer-dist') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs'))) { +$preferSource = $input->getOption('prefer-source') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs')); +$preferDist = $input->getOption('prefer-dist'); +} + +return [$preferSource, $preferDist]; +} + +protected function getPlatformRequirementFilter(InputInterface $input): PlatformRequirementFilterInterface +{ +if (!$input->hasOption('ignore-platform-reqs') || !$input->hasOption('ignore-platform-req')) { +throw new \LogicException('Calling getPlatformRequirementFilter from a command which does not define the --ignore-platform-req[s] flags is not permitted.'); +} + +if (true === $input->getOption('ignore-platform-reqs')) { +return PlatformRequirementFilterFactory::ignoreAll(); +} + +$ignores = $input->getOption('ignore-platform-req'); +if (count($ignores) > 0) { +return PlatformRequirementFilterFactory::fromBoolOrList($ignores); +} + +return PlatformRequirementFilterFactory::ignoreNothing(); +} + + + + + + +protected function formatRequirements(array $requirements) +{ +$requires = []; +$requirements = $this->normalizeRequirements($requirements); +foreach ($requirements as $requirement) { +if (!isset($requirement['version'])) { +throw new \UnexpectedValueException('Option '.$requirement['name'] .' is missing a version constraint, use e.g. '.$requirement['name'].':^1.0'); +} +$requires[$requirement['name']] = $requirement['version']; +} + +return $requires; +} + + + + + + +protected function normalizeRequirements(array $requirements) +{ +$parser = new VersionParser(); + +return $parser->parseNameVersionPairs($requirements); +} + + + + + + +protected function renderTable(array $table, OutputInterface $output) +{ +$renderer = new Table($output); +$renderer->setStyle('compact'); +$renderer->setRows($table)->render(); +} + + + + +protected function getTerminalWidth() +{ +$terminal = new Terminal(); +$width = $terminal->getWidth(); + +if (Platform::isWindows()) { +$width--; +} else { +$width = max(80, $width); +} + +return $width; +} + + + + + + +protected function getAuditFormat(InputInterface $input, string $optName = 'audit-format'): string +{ +if (!$input->hasOption($optName)) { +throw new \LogicException('This should not be called on a Command which has no '.$optName.' option defined.'); +} + +$val = $input->getOption($optName); +if (!in_array($val, Auditor::FORMATS, true)) { +throw new \InvalidArgumentException('--'.$optName.' must be one of '.implode(', ', Auditor::FORMATS).'.'); +} + +return $val; +} +} diff --git a/composer/src/Composer/Command/BaseDependencyCommand.php b/composer/src/Composer/Command/BaseDependencyCommand.php new file mode 100644 index 000000000..984ecac34 --- /dev/null +++ b/composer/src/Composer/Command/BaseDependencyCommand.php @@ -0,0 +1,251 @@ +requireComposer(); +$commandEvent = new CommandEvent(PluginEvents::COMMAND, $this->getName(), $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$repos = []; + +$repos[] = new RootPackageRepository(clone $composer->getPackage()); + +if ($input->getOption('locked')) { +$locker = $composer->getLocker(); + +if (!$locker->isLocked()) { +throw new \UnexpectedValueException('A valid composer.lock file is required to run this command with --locked'); +} + +$repos[] = $locker->getLockedRepository(true); +$repos[] = new PlatformRepository([], $locker->getPlatformOverrides()); +} else { +$localRepo = $composer->getRepositoryManager()->getLocalRepository(); +$rootPkg = $composer->getPackage(); + +if (count($localRepo->getPackages()) === 0 && (count($rootPkg->getRequires()) > 0 || count($rootPkg->getDevRequires()) > 0)) { +$output->writeln('No dependencies installed. Try running composer install or update, or use --locked.'); + +return 1; +} + +$repos[] = $localRepo; + +$platformOverrides = $composer->getConfig()->get('platform') ?: []; +$repos[] = new PlatformRepository([], $platformOverrides); +} + +$installedRepo = new InstalledRepository($repos); + + +$needle = $input->getArgument(self::ARGUMENT_PACKAGE); +$textConstraint = $input->hasArgument(self::ARGUMENT_CONSTRAINT) ? $input->getArgument(self::ARGUMENT_CONSTRAINT) : '*'; + + +$packages = $installedRepo->findPackagesWithReplacersAndProviders($needle); +if (empty($packages)) { +throw new \InvalidArgumentException(sprintf('Could not find package "%s" in your project', $needle)); +} + + + +if (!$installedRepo->findPackage($needle, $textConstraint)) { +$defaultRepos = new CompositeRepository(RepositoryFactory::defaultRepos($this->getIO(), $composer->getConfig(), $composer->getRepositoryManager())); +if ($match = $defaultRepos->findPackage($needle, $textConstraint)) { +$installedRepo->addRepository(new InstalledArrayRepository([clone $match])); +} else { +$this->getIO()->writeError('Package "'.$needle.'" could not be found with constraint "'.$textConstraint.'", results below will most likely be incomplete.'); +} +} + + +$needles = [$needle]; +if ($inverted) { +foreach ($packages as $package) { +$needles = array_merge($needles, array_map(static function (Link $link): string { +return $link->getTarget(); +}, $package->getReplaces())); +} +} + + +if ('*' !== $textConstraint) { +$versionParser = new VersionParser(); +$constraint = $versionParser->parseConstraints($textConstraint); +} else { +$constraint = null; +} + + +$renderTree = $input->getOption(self::OPTION_TREE); +$recursive = $renderTree || $input->getOption(self::OPTION_RECURSIVE); + + +$results = $installedRepo->getDependents($needles, $constraint, $inverted, $recursive); +if (empty($results)) { +$extra = (null !== $constraint) ? sprintf(' in versions %smatching %s', $inverted ? 'not ' : '', $textConstraint) : ''; +$this->getIO()->writeError(sprintf( +'There is no installed package depending on "%s"%s', +$needle, +$extra +)); +} elseif ($renderTree) { +$this->initStyles($output); +$root = $packages[0]; +$this->getIO()->write(sprintf('%s %s %s', $root->getPrettyName(), $root->getPrettyVersion(), $root instanceof CompletePackageInterface ? $root->getDescription() : '')); +$this->printTree($results); +} else { +$this->printTable($output, $results); +} + +if ($inverted && $input->hasArgument(self::ARGUMENT_CONSTRAINT)) { +$this->getIO()->writeError('Not finding what you were looking for? Try calling `composer update "'.$input->getArgument(self::ARGUMENT_PACKAGE).':'.$input->getArgument(self::ARGUMENT_CONSTRAINT).'" --dry-run` to get another view on the problem.'); +} + +return 0; +} + + + + + + +protected function printTable(OutputInterface $output, $results): void +{ +$table = []; +$doubles = []; +do { +$queue = []; +$rows = []; +foreach ($results as $result) { + + + + +[$package, $link, $children] = $result; +$unique = (string) $link; +if (isset($doubles[$unique])) { +continue; +} +$doubles[$unique] = true; +$version = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '-' : $package->getPrettyVersion(); +$rows[] = [$package->getPrettyName(), $version, $link->getDescription(), sprintf('%s (%s)', $link->getTarget(), $link->getPrettyConstraint())]; +if ($children) { +$queue = array_merge($queue, $children); +} +} +$results = $queue; +$table = array_merge($rows, $table); +} while (!empty($results)); + +$this->renderTable($table, $output); +} + + + + +protected function initStyles(OutputInterface $output): void +{ +$this->colors = [ +'green', +'yellow', +'cyan', +'magenta', +'blue', +]; + +foreach ($this->colors as $color) { +$style = new OutputFormatterStyle($color); +$output->getFormatter()->setStyle($color, $style); +} +} + + + + + + + + +protected function printTree(array $results, string $prefix = '', int $level = 1): void +{ +$count = count($results); +$idx = 0; +foreach ($results as $result) { +[$package, $link, $children] = $result; + +$color = $this->colors[$level % count($this->colors)]; +$prevColor = $this->colors[($level - 1) % count($this->colors)]; +$isLast = (++$idx === $count); +$versionText = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '' : $package->getPrettyVersion(); +$packageText = rtrim(sprintf('<%s>%s %s', $color, $package->getPrettyName(), $versionText)); +$linkText = sprintf('%s <%s>%s %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint()); +$circularWarn = $children === false ? '(circular dependency aborted here)' : ''; +$this->writeTreeLine(rtrim(sprintf("%s%s%s (%s) %s", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText, $circularWarn))); +if ($children) { +$this->printTree($children, $prefix . ($isLast ? ' ' : '│ '), $level + 1); +} +} +} + +private function writeTreeLine(string $line): void +{ +$io = $this->getIO(); +if (!$io->isDecorated()) { +$line = str_replace(['└', '├', '──', '│'], ['`-', '|-', '-', '|'], $line); +} + +$io->write($line); +} +} diff --git a/composer/src/Composer/Command/BumpCommand.php b/composer/src/Composer/Command/BumpCommand.php new file mode 100644 index 000000000..e805a9625 --- /dev/null +++ b/composer/src/Composer/Command/BumpCommand.php @@ -0,0 +1,246 @@ +setName('bump') +->setDescription('Increases the lower limit of your composer.json requirements to the currently installed versions') +->setDefinition([ +new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Optional package name(s) to restrict which packages are bumped.', null, $this->suggestRootRequirement()), +new InputOption('dev-only', 'D', InputOption::VALUE_NONE, 'Only bump requirements in "require-dev".'), +new InputOption('no-dev-only', 'R', InputOption::VALUE_NONE, 'Only bump requirements in "require".'), +new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the packages to bump, but will not execute anything.'), +]) +->setHelp( +<<bump command increases the lower limit of your composer.json requirements +to the currently installed versions. This helps to ensure your dependencies do not +accidentally get downgraded due to some other conflict, and can slightly improve +dependency resolution performance as it limits the amount of package versions +Composer has to look at. + +Running this blindly on libraries is **NOT** recommended as it will narrow down +your allowed dependencies, which may cause dependency hell for your users. +Running it with --dev-only on libraries may be fine however as dev requirements +are local to the library and do not affect consumers of the package. + +EOT +) +; +} + + + + +protected function execute(InputInterface $input, OutputInterface $output) +{ + +$composerJsonPath = Factory::getComposerFile(); +$io = $this->getIO(); + +if (!Filesystem::isReadable($composerJsonPath)) { +$io->writeError(''.$composerJsonPath.' is not readable.'); + +return self::ERROR_GENERIC; +} + +$composerJson = new JsonFile($composerJsonPath); +$contents = file_get_contents($composerJson->getPath()); +if (false === $contents) { +$io->writeError(''.$composerJsonPath.' is not readable.'); + +return self::ERROR_GENERIC; +} + + + +if (!is_writable($composerJsonPath) && false === Silencer::call('file_put_contents', $composerJsonPath, $contents)) { +$io->writeError(''.$composerJsonPath.' is not writable.'); + +return self::ERROR_GENERIC; +} +unset($contents); + +$composer = $this->requireComposer(); +if ($composer->getLocker()->isLocked()) { +if (!$composer->getLocker()->isFresh()) { +$io->writeError('The lock file is not up to date with the latest changes in composer.json. Run the appropriate `update` to fix that before you use the `bump` command.'); + +return self::ERROR_LOCK_OUTDATED; +} + +$repo = $composer->getLocker()->getLockedRepository(true); +} else { +$repo = $composer->getRepositoryManager()->getLocalRepository(); +} + +if ($composer->getPackage()->getType() !== 'project' && !$input->getOption('dev-only')) { +$io->writeError('Warning: Bumping dependency constraints is not recommended for libraries as it will narrow down your dependencies and may cause problems for your users.'); + +$contents = $composerJson->read(); +if (!isset($contents['type'])) { +$io->writeError('If your package is not a library, you can explicitly specify the "type" by using "composer config type project".'); +$io->writeError('Alternatively you can use --dev-only to only bump dependencies within "require-dev".'); +} +unset($contents); +} + +$bumper = new VersionBumper(); +$tasks = []; +if (!$input->getOption('dev-only')) { +$tasks['require'] = $composer->getPackage()->getRequires(); +} +if (!$input->getOption('no-dev-only')) { +$tasks['require-dev'] = $composer->getPackage()->getDevRequires(); +} + +$packagesFilter = $input->getArgument('packages'); +if (count($packagesFilter) > 0) { +$pattern = BasePackage::packageNamesToRegexp(array_unique(array_map('strtolower', $packagesFilter))); +foreach ($tasks as $key => $reqs) { +foreach ($reqs as $pkgName => $link) { +if (!Preg::isMatch($pattern, $pkgName)) { +unset($tasks[$key][$pkgName]); +} +} +} +} + +$updates = []; +foreach ($tasks as $key => $reqs) { +foreach ($reqs as $pkgName => $link) { +if (PlatformRepository::isPlatformPackage($pkgName)) { +continue; +} +$currentConstraint = $link->getPrettyConstraint(); + +$package = $repo->findPackage($pkgName, '*'); + +if (null === $package) { +continue; +} +while ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} + +$bumped = $bumper->bumpRequirement($link->getConstraint(), $package); + +if ($bumped === $currentConstraint) { +continue; +} + +$updates[$key][$pkgName] = $bumped; +} +} + +$dryRun = $input->getOption('dry-run'); + +if (!$dryRun && !$this->updateFileCleanly($composerJson, $updates)) { +$composerDefinition = $composerJson->read(); +foreach ($updates as $key => $packages) { +foreach ($packages as $package => $version) { +$composerDefinition[$key][$package] = $version; +} +} +$composerJson->write($composerDefinition); +} + +$changeCount = array_sum(array_map('count', $updates)); +if ($changeCount > 0) { +if ($dryRun) { +$io->write('' . $composerJsonPath . ' would be updated with:'); +foreach ($updates as $requireType => $packages) { +foreach ($packages as $package => $version) { +$io->write(sprintf(' - %s.%s: %s', $requireType, $package, $version)); +} +} +} else { +$io->write('' . $composerJsonPath . ' has been updated (' . $changeCount . ' changes).'); +} +} else { +$io->write('No requirements to update in '.$composerJsonPath.'.'); +} + +if (!$dryRun && $composer->getLocker()->isLocked() && $changeCount > 0) { +$contents = file_get_contents($composerJson->getPath()); +if (false === $contents) { +throw new \RuntimeException('Unable to read '.$composerJson->getPath().' contents to update the lock file hash.'); +} +$lock = new JsonFile(Factory::getLockFile($composerJsonPath)); +$lockData = $lock->read(); +$lockData['content-hash'] = Locker::getContentHash($contents); +$lock->write($lockData); +} + +if ($dryRun && $changeCount > 0) { +return self::ERROR_GENERIC; +} + +return 0; +} + + + + +private function updateFileCleanly(JsonFile $json, array $updates): bool +{ +$contents = file_get_contents($json->getPath()); +if (false === $contents) { +throw new \RuntimeException('Unable to read '.$json->getPath().' contents.'); +} + +$manipulator = new JsonManipulator($contents); + +foreach ($updates as $key => $packages) { +foreach ($packages as $package => $version) { +if (!$manipulator->addLink($key, $package, $version)) { +return false; +} +} +} + +if (false === file_put_contents($json->getPath(), $manipulator->getContents())) { +throw new \RuntimeException('Unable to write new '.$json->getPath().' contents.'); +} + +return true; +} +} diff --git a/composer/src/Composer/Command/CheckPlatformReqsCommand.php b/composer/src/Composer/Command/CheckPlatformReqsCommand.php new file mode 100644 index 000000000..703094e55 --- /dev/null +++ b/composer/src/Composer/Command/CheckPlatformReqsCommand.php @@ -0,0 +1,216 @@ +setName('check-platform-reqs') +->setDescription('Check that platform requirements are satisfied') +->setDefinition([ +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables checking of require-dev packages requirements.'), +new InputOption('lock', null, InputOption::VALUE_NONE, 'Checks requirements only from the lock file, not from installed packages.'), +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), +]) +->setHelp( +<<php composer.phar check-platform-reqs + +EOT +); +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$composer = $this->requireComposer(); + +$requires = []; +$removePackages = []; +if ($input->getOption('lock')) { +$this->getIO()->writeError('Checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements using the lock file'); +$installedRepo = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev')); +} else { +$installedRepo = $composer->getRepositoryManager()->getLocalRepository(); + +if (!$installedRepo->getPackages()) { +$this->getIO()->writeError('No vendor dir present, checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements from the lock file'); +$installedRepo = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev')); +} else { +if ($input->getOption('no-dev')) { +$removePackages = $installedRepo->getDevPackageNames(); +} + +$this->getIO()->writeError('Checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements for packages in the vendor dir'); +} +} +if (!$input->getOption('no-dev')) { +$requires += $composer->getPackage()->getDevRequires(); +} + +foreach ($requires as $require => $link) { +$requires[$require] = [$link]; +} + +$installedRepo = new InstalledRepository([$installedRepo, new RootPackageRepository(clone $composer->getPackage())]); +foreach ($installedRepo->getPackages() as $package) { +if (in_array($package->getName(), $removePackages, true)) { +continue; +} +foreach ($package->getRequires() as $require => $link) { +$requires[$require][] = $link; +} +} + +ksort($requires); + +$installedRepo->addRepository(new PlatformRepository([], [])); + +$results = []; +$exitCode = 0; + + + + +foreach ($requires as $require => $links) { +if (PlatformRepository::isPlatformPackage($require)) { +$candidates = $installedRepo->findPackagesWithReplacersAndProviders($require); +if ($candidates) { +$reqResults = []; +foreach ($candidates as $candidate) { +$candidateConstraint = null; +if ($candidate->getName() === $require) { +$candidateConstraint = new Constraint('=', $candidate->getVersion()); +$candidateConstraint->setPrettyString($candidate->getPrettyVersion()); +} else { +foreach (array_merge($candidate->getProvides(), $candidate->getReplaces()) as $link) { +if ($link->getTarget() === $require) { +$candidateConstraint = $link->getConstraint(); +break; +} +} +} + + +if (!$candidateConstraint) { +continue; +} + +foreach ($links as $link) { +if (!$link->getConstraint()->matches($candidateConstraint)) { +$reqResults[] = [ +$candidate->getName() === $require ? $candidate->getPrettyName() : $require, +$candidateConstraint->getPrettyString(), +$link, +'failed', +$candidate->getName() === $require ? '' : 'provided by '.$candidate->getPrettyName().'', +]; + + +continue 2; +} +} + +$results[] = [ +$candidate->getName() === $require ? $candidate->getPrettyName() : $require, +$candidateConstraint->getPrettyString(), +null, +'success', +$candidate->getName() === $require ? '' : 'provided by '.$candidate->getPrettyName().'', +]; + + +continue 2; +} + + +$results = array_merge($results, $reqResults); +$exitCode = max($exitCode, 1); + +continue; +} + +$results[] = [ +$require, +'n/a', +$links[0], +'missing', +'', +]; + +$exitCode = max($exitCode, 2); +} +} + +$this->printTable($output, $results, $input->getOption('format')); + +return $exitCode; +} + + + + +protected function printTable(OutputInterface $output, array $results, string $format): void +{ +$rows = []; +foreach ($results as $result) { + + + +[$platformPackage, $version, $link, $status, $provider] = $result; + +if ('json' === $format) { +$rows[] = [ +"name" => $platformPackage, +"version" => $version, +"status" => strip_tags($status), +"failed_requirement" => $link instanceof Link ? [ +'source' => $link->getSource(), +'type' => $link->getDescription(), +'target' => $link->getTarget(), +'constraint' => $link->getPrettyConstraint(), +] : null, +"provider" => $provider === '' ? null : strip_tags($provider), +]; +} else { +$rows[] = [ +$platformPackage, +$version, +$link, +$link ? sprintf('%s %s %s (%s)', $link->getSource(), $link->getDescription(), $link->getTarget(), $link->getPrettyConstraint()) : '', +rtrim($status.' '.$provider), +]; +} +} + +if ('json' === $format) { +$this->getIO()->write(JsonFile::encode($rows)); +} else { +$this->renderTable($rows, $output); +} +} +} diff --git a/composer/src/Composer/Command/ClearCacheCommand.php b/composer/src/Composer/Command/ClearCacheCommand.php new file mode 100644 index 000000000..1160e1926 --- /dev/null +++ b/composer/src/Composer/Command/ClearCacheCommand.php @@ -0,0 +1,101 @@ +setName('clear-cache') +->setAliases(['clearcache', 'cc']) +->setDescription('Clears composer\'s internal package cache') +->setDefinition([ +new InputOption('gc', null, InputOption::VALUE_NONE, 'Only run garbage collection, not a full cache clear'), +]) +->setHelp( +<<clear-cache deletes all cached packages from composer's +cache directory. + +Read more at https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache-cc +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$config = Factory::createConfig(); +$io = $this->getIO(); + +$cachePaths = [ +'cache-vcs-dir' => $config->get('cache-vcs-dir'), +'cache-repo-dir' => $config->get('cache-repo-dir'), +'cache-files-dir' => $config->get('cache-files-dir'), +'cache-dir' => $config->get('cache-dir'), +]; + +foreach ($cachePaths as $key => $cachePath) { + +if ($key === 'cache-dir' && $input->getOption('gc')) { +continue; +} + +$cachePath = realpath($cachePath); +if (!$cachePath) { +$io->writeError("Cache directory does not exist ($key): $cachePath"); + +continue; +} +$cache = new Cache($io, $cachePath); +$cache->setReadOnly($config->get('cache-read-only')); +if (!$cache->isEnabled()) { +$io->writeError("Cache is not enabled ($key): $cachePath"); + +continue; +} + +if ($input->getOption('gc')) { +$io->writeError("Garbage-collecting cache ($key): $cachePath"); +if ($key === 'cache-files-dir') { +$cache->gc($config->get('cache-files-ttl'), $config->get('cache-files-maxsize')); +} elseif ($key === 'cache-repo-dir') { +$cache->gc($config->get('cache-ttl'), 1024 * 1024 * 1024 ); +} elseif ($key === 'cache-vcs-dir') { +$cache->gcVcsCache($config->get('cache-ttl')); +} +} else { +$io->writeError("Clearing cache ($key): $cachePath"); +$cache->clear(); +} +} + +if ($input->getOption('gc')) { +$io->writeError('All caches garbage-collected.'); +} else { +$io->writeError('All caches cleared.'); +} + +return 0; +} +} diff --git a/composer/src/Composer/Command/CompletionTrait.php b/composer/src/Composer/Command/CompletionTrait.php new file mode 100644 index 000000000..222757002 --- /dev/null +++ b/composer/src/Composer/Command/CompletionTrait.php @@ -0,0 +1,214 @@ +requireComposer(); + +return array_merge(array_keys($composer->getPackage()->getRequires()), array_keys($composer->getPackage()->getDevRequires())); +}; +} + + + + +private function suggestInstalledPackage(bool $includeRootPackage = true, bool $includePlatformPackages = false): \Closure +{ +return function (CompletionInput $input) use ($includeRootPackage, $includePlatformPackages): array { +$composer = $this->requireComposer(); +$installedRepos = []; + +if ($includeRootPackage) { +$installedRepos[] = new RootPackageRepository(clone $composer->getPackage()); +} + +$locker = $composer->getLocker(); +if ($locker->isLocked()) { +$installedRepos[] = $locker->getLockedRepository(true); +} else { +$installedRepos[] = $composer->getRepositoryManager()->getLocalRepository(); +} + +$platformHint = []; +if ($includePlatformPackages) { +if ($locker->isLocked()) { +$platformRepo = new PlatformRepository([], $locker->getPlatformOverrides()); +} else { +$platformRepo = new PlatformRepository([], $composer->getConfig()->get('platform')); +} +if ($input->getCompletionValue() === '') { + +$hintsToFind = ['ext-' => 0, 'lib-' => 0, 'php' => 99, 'composer' => 99]; +foreach ($platformRepo->getPackages() as $pkg) { +foreach ($hintsToFind as $hintPrefix => $hintCount) { +if (str_starts_with($pkg->getName(), $hintPrefix)) { +if ($hintCount === 0 || $hintCount >= 99) { +$platformHint[] = $pkg->getName(); +$hintsToFind[$hintPrefix]++; +} elseif ($hintCount === 1) { +unset($hintsToFind[$hintPrefix]); +$platformHint[] = substr($pkg->getName(), 0, max(strlen($pkg->getName()) - 3, strlen($hintPrefix) + 1)).'...'; +} +continue 2; +} +} +} +} else { +$installedRepos[] = $platformRepo; +} +} + +$installedRepo = new InstalledRepository($installedRepos); + +return array_merge( +array_map(static function (PackageInterface $package) { +return $package->getName(); +}, $installedRepo->getPackages()), +$platformHint +); +}; +} + + + + +private function suggestAvailablePackage(int $max = 99): \Closure +{ +return function (CompletionInput $input) use ($max): array { +if ($max < 1) { +return []; +} + +$composer = $this->requireComposer(); +$repos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); + +$results = []; +$showVendors = false; +if (!str_contains($input->getCompletionValue(), '/')) { +$results = $repos->search('^' . preg_quote($input->getCompletionValue()), RepositoryInterface::SEARCH_VENDOR); +$showVendors = true; +} + + +if (\count($results) <= 1) { +$results = $repos->search('^'.preg_quote($input->getCompletionValue()), RepositoryInterface::SEARCH_NAME); +$showVendors = false; +} + +$results = array_column($results, 'name'); + +if ($showVendors) { +$results = array_map(static function (string $name): string { +return $name.'/'; +}, $results); + + +usort($results, static function (string $a, string $b) { +$lenA = \strlen($a); +$lenB = \strlen($b); +if ($lenA === $lenB) { +return $a <=> $b; +} + +return $lenA - $lenB; +}); + +$pinned = []; + + +$completionInput = $input->getCompletionValue().'/'; +if (false !== ($exactIndex = array_search($completionInput, $results, true))) { +$pinned[] = $completionInput; +array_splice($results, $exactIndex, 1); +} + +return array_merge($pinned, array_slice($results, 0, $max - \count($pinned))); +} + +return array_slice($results, 0, $max); +}; +} + + + + + +private function suggestAvailablePackageInclPlatform(): \Closure +{ +return function (CompletionInput $input): array { +if (Preg::isMatch('{^(ext|lib|php)(-|$)|^com}', $input->getCompletionValue())) { +$matches = $this->suggestPlatformPackage()($input); +} else { +$matches = []; +} + +return array_merge($matches, $this->suggestAvailablePackage(99 - \count($matches))($input)); +}; +} + + + + +private function suggestPlatformPackage(): \Closure +{ +return function (CompletionInput $input): array { +$repos = new PlatformRepository([], $this->requireComposer()->getConfig()->get('platform')); + +$pattern = BasePackage::packageNameToRegexp($input->getCompletionValue().'*'); + +return array_filter(array_map(static function (PackageInterface $package) { +return $package->getName(); +}, $repos->getPackages()), static function (string $name) use ($pattern): bool { +return Preg::isMatch($pattern, $name); +}); +}; +} +} diff --git a/composer/src/Composer/Command/ConfigCommand.php b/composer/src/Composer/Command/ConfigCommand.php new file mode 100644 index 000000000..203dc8f7d --- /dev/null +++ b/composer/src/Composer/Command/ConfigCommand.php @@ -0,0 +1,1064 @@ +setName('config') +->setDescription('Sets config options') +->setDefinition([ +new InputOption('global', 'g', InputOption::VALUE_NONE, 'Apply command to the global config file'), +new InputOption('editor', 'e', InputOption::VALUE_NONE, 'Open editor'), +new InputOption('auth', 'a', InputOption::VALUE_NONE, 'Affect auth config file (only used for --editor)'), +new InputOption('unset', null, InputOption::VALUE_NONE, 'Unset the given setting-key'), +new InputOption('list', 'l', InputOption::VALUE_NONE, 'List configuration settings'), +new InputOption('file', 'f', InputOption::VALUE_REQUIRED, 'If you want to choose a different composer.json or config.json'), +new InputOption('absolute', null, InputOption::VALUE_NONE, 'Returns absolute paths when fetching *-dir config values instead of relative'), +new InputOption('json', 'j', InputOption::VALUE_NONE, 'JSON decode the setting value, to be used with extra.* keys'), +new InputOption('merge', 'm', InputOption::VALUE_NONE, 'Merge the setting value with the current value, to be used with extra.* keys in combination with --json'), +new InputOption('append', null, InputOption::VALUE_NONE, 'When adding a repository, append it (lowest priority) to the existing ones instead of prepending it (highest priority)'), +new InputOption('source', null, InputOption::VALUE_NONE, 'Display where the config value is loaded from'), +new InputArgument('setting-key', null, 'Setting key', null, $this->suggestSettingKeys()), +new InputArgument('setting-value', InputArgument::IS_ARRAY, 'Setting value'), +]) +->setHelp( +<<%command.full_name% bin-dir bin/ + +To read a config setting: + + %command.full_name% bin-dir + Outputs: bin + +To edit the global config.json file: + + %command.full_name% --global + +To add a repository: + + %command.full_name% repositories.foo vcs https://bar.com + +To remove a repository (repo is a short alias for repositories): + + %command.full_name% --unset repo.foo + +To disable packagist: + + %command.full_name% repo.packagist false + +You can alter repositories in the global config.json file by passing in the +--global option. + +To add or edit suggested packages you can use: + + %command.full_name% suggest.package reason for the suggestion + +To add or edit extra properties you can use: + + %command.full_name% extra.property value + +Or to add a complex value you can use json with: + + %command.full_name% extra.property --json '{"foo":true, "bar": []}' + +To edit the file in an external editor: + + %command.full_name% --editor + +To choose your editor you can set the "EDITOR" env variable. + +To get a list of configuration values in the file: + + %command.full_name% --list + +You can always pass more than one option. As an example, if you want to edit the +global config.json file. + + %command.full_name% --editor --global + +Read more at https://getcomposer.org/doc/03-cli.md#config +EOT +) +; +} + + + + +protected function initialize(InputInterface $input, OutputInterface $output): void +{ +parent::initialize($input, $output); + +if ($input->getOption('global') && null !== $input->getOption('file')) { +throw new \RuntimeException('--file and --global can not be combined'); +} + +$io = $this->getIO(); +$this->config = Factory::createConfig($io); + +$configFile = $this->getComposerConfigFile($input, $this->config); + + +if ( +($configFile === 'composer.json' || $configFile === './composer.json') +&& !file_exists($configFile) +&& realpath(Platform::getCwd()) === realpath($this->config->get('home')) +) { +file_put_contents($configFile, "{\n}\n"); +} + +$this->configFile = new JsonFile($configFile, null, $io); +$this->configSource = new JsonConfigSource($this->configFile); + +$authConfigFile = $this->getAuthConfigFile($input, $this->config); + +$this->authConfigFile = new JsonFile($authConfigFile, null, $io); +$this->authConfigSource = new JsonConfigSource($this->authConfigFile, true); + + +if ($input->getOption('global') && !$this->configFile->exists()) { +touch($this->configFile->getPath()); +$this->configFile->write(['config' => new \ArrayObject]); +Silencer::call('chmod', $this->configFile->getPath(), 0600); +} +if ($input->getOption('global') && !$this->authConfigFile->exists()) { +touch($this->authConfigFile->getPath()); +$this->authConfigFile->write(['bitbucket-oauth' => new \ArrayObject, 'github-oauth' => new \ArrayObject, 'gitlab-oauth' => new \ArrayObject, 'gitlab-token' => new \ArrayObject, 'http-basic' => new \ArrayObject, 'bearer' => new \ArrayObject]); +Silencer::call('chmod', $this->authConfigFile->getPath(), 0600); +} + +if (!$this->configFile->exists()) { +throw new \RuntimeException(sprintf('File "%s" cannot be found in the current directory', $configFile)); +} +} + + + + +protected function execute(InputInterface $input, OutputInterface $output): int +{ + +if (true === $input->getOption('editor')) { +$editor = Platform::getEnv('EDITOR'); +if (false === $editor || '' === $editor) { +if (Platform::isWindows()) { +$editor = 'notepad'; +} else { +foreach (['editor', 'vim', 'vi', 'nano', 'pico', 'ed'] as $candidate) { +if (exec('which '.$candidate)) { +$editor = $candidate; +break; +} +} +} +} else { +$editor = escapeshellcmd($editor); +} + +$file = $input->getOption('auth') ? $this->authConfigFile->getPath() : $this->configFile->getPath(); +system($editor . ' ' . $file . (Platform::isWindows() ? '' : ' > `tty`')); + +return 0; +} + +if (false === $input->getOption('global')) { +$this->config->merge($this->configFile->read(), $this->configFile->getPath()); +$this->config->merge(['config' => $this->authConfigFile->exists() ? $this->authConfigFile->read() : []], $this->authConfigFile->getPath()); +} + +$this->getIO()->loadConfiguration($this->config); + + +if (true === $input->getOption('list')) { +$this->listConfiguration($this->config->all(), $this->config->raw(), $output, null, $input->getOption('source')); + +return 0; +} + +$settingKey = $input->getArgument('setting-key'); +if (!is_string($settingKey)) { +return 0; +} + + +if ([] !== $input->getArgument('setting-value') && $input->getOption('unset')) { +throw new \RuntimeException('You can not combine a setting value with --unset'); +} + + +if ([] === $input->getArgument('setting-value') && !$input->getOption('unset')) { +$properties = self::CONFIGURABLE_PACKAGE_PROPERTIES; +$rawData = $this->configFile->read(); +$data = $this->config->all(); +if (Preg::isMatch('/^repos?(?:itories)?(?:\.(.+))?/', $settingKey, $matches)) { +if (!isset($matches[1]) || $matches[1] === '') { +$value = $data['repositories'] ?? []; +} else { +if (!isset($data['repositories'][$matches[1]])) { +throw new \InvalidArgumentException('There is no '.$matches[1].' repository defined'); +} + +$value = $data['repositories'][$matches[1]]; +} +} elseif (strpos($settingKey, '.')) { +$bits = explode('.', $settingKey); +if ($bits[0] === 'extra' || $bits[0] === 'suggest') { +$data = $rawData; +} else { +$data = $data['config']; +} +$match = false; +foreach ($bits as $bit) { +$key = isset($key) ? $key.'.'.$bit : $bit; +$match = false; +if (isset($data[$key])) { +$match = true; +$data = $data[$key]; +unset($key); +} +} + +if (!$match) { +throw new \RuntimeException($settingKey.' is not defined.'); +} + +$value = $data; +} elseif (isset($data['config'][$settingKey])) { +$value = $this->config->get($settingKey, $input->getOption('absolute') ? 0 : Config::RELATIVE_PATHS); +} elseif (isset($rawData[$settingKey]) && in_array($settingKey, $properties, true)) { +$value = $rawData[$settingKey]; +} else { +throw new \RuntimeException($settingKey.' is not defined'); +} + +if (is_array($value)) { +$value = JsonFile::encode($value, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); +} + +$sourceOfConfigValue = ''; +if ($input->getOption('source')) { +$sourceOfConfigValue = ' (' . $this->config->getSourceOfValue($settingKey) . ')'; +} + +$this->getIO()->write($value . $sourceOfConfigValue, true, IOInterface::QUIET); + +return 0; +} + +$values = $input->getArgument('setting-value'); + +$booleanValidator = static function ($val): bool { +return in_array($val, ['true', 'false', '1', '0'], true); +}; +$booleanNormalizer = static function ($val): bool { +return $val !== 'false' && (bool) $val; +}; + + +$uniqueConfigValues = [ +'process-timeout' => ['is_numeric', 'intval'], +'use-include-path' => [$booleanValidator, $booleanNormalizer], +'use-github-api' => [$booleanValidator, $booleanNormalizer], +'preferred-install' => [ +static function ($val): bool { +return in_array($val, ['auto', 'source', 'dist'], true); +}, +static function ($val) { +return $val; +}, +], +'gitlab-protocol' => [ +static function ($val): bool { +return in_array($val, ['git', 'http', 'https'], true); +}, +static function ($val) { +return $val; +}, +], +'store-auths' => [ +static function ($val): bool { +return in_array($val, ['true', 'false', 'prompt'], true); +}, +static function ($val) { +if ('prompt' === $val) { +return 'prompt'; +} + +return $val !== 'false' && (bool) $val; +}, +], +'notify-on-install' => [$booleanValidator, $booleanNormalizer], +'vendor-dir' => ['is_string', static function ($val) { +return $val; +}], +'bin-dir' => ['is_string', static function ($val) { +return $val; +}], +'archive-dir' => ['is_string', static function ($val) { +return $val; +}], +'archive-format' => ['is_string', static function ($val) { +return $val; +}], +'data-dir' => ['is_string', static function ($val) { +return $val; +}], +'cache-dir' => ['is_string', static function ($val) { +return $val; +}], +'cache-files-dir' => ['is_string', static function ($val) { +return $val; +}], +'cache-repo-dir' => ['is_string', static function ($val) { +return $val; +}], +'cache-vcs-dir' => ['is_string', static function ($val) { +return $val; +}], +'cache-ttl' => ['is_numeric', 'intval'], +'cache-files-ttl' => ['is_numeric', 'intval'], +'cache-files-maxsize' => [ +static function ($val): bool { +return Preg::isMatch('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $val); +}, +static function ($val) { +return $val; +}, +], +'bin-compat' => [ +static function ($val): bool { +return in_array($val, ['auto', 'full', 'symlink']); +}, +static function ($val) { +return $val; +}, +], +'discard-changes' => [ +static function ($val): bool { +return in_array($val, ['stash', 'true', 'false', '1', '0'], true); +}, +static function ($val) { +if ('stash' === $val) { +return 'stash'; +} + +return $val !== 'false' && (bool) $val; +}, +], +'autoloader-suffix' => ['is_string', static function ($val) { +return $val === 'null' ? null : $val; +}], +'sort-packages' => [$booleanValidator, $booleanNormalizer], +'optimize-autoloader' => [$booleanValidator, $booleanNormalizer], +'classmap-authoritative' => [$booleanValidator, $booleanNormalizer], +'apcu-autoloader' => [$booleanValidator, $booleanNormalizer], +'prepend-autoloader' => [$booleanValidator, $booleanNormalizer], +'disable-tls' => [$booleanValidator, $booleanNormalizer], +'secure-http' => [$booleanValidator, $booleanNormalizer], +'cafile' => [ +static function ($val): bool { +return file_exists($val) && Filesystem::isReadable($val); +}, +static function ($val) { +return $val === 'null' ? null : $val; +}, +], +'capath' => [ +static function ($val): bool { +return is_dir($val) && Filesystem::isReadable($val); +}, +static function ($val) { +return $val === 'null' ? null : $val; +}, +], +'github-expose-hostname' => [$booleanValidator, $booleanNormalizer], +'htaccess-protect' => [$booleanValidator, $booleanNormalizer], +'lock' => [$booleanValidator, $booleanNormalizer], +'allow-plugins' => [$booleanValidator, $booleanNormalizer], +'platform-check' => [ +static function ($val): bool { +return in_array($val, ['php-only', 'true', 'false', '1', '0'], true); +}, +static function ($val) { +if ('php-only' === $val) { +return 'php-only'; +} + +return $val !== 'false' && (bool) $val; +}, +], +'use-parent-dir' => [ +static function ($val): bool { +return in_array($val, ['true', 'false', 'prompt'], true); +}, +static function ($val) { +if ('prompt' === $val) { +return 'prompt'; +} + +return $val !== 'false' && (bool) $val; +}, +], +]; +$multiConfigValues = [ +'github-protocols' => [ +static function ($vals) { +if (!is_array($vals)) { +return 'array expected'; +} + +foreach ($vals as $val) { +if (!in_array($val, ['git', 'https', 'ssh'])) { +return 'valid protocols include: git, https, ssh'; +} +} + +return true; +}, +static function ($vals) { +return $vals; +}, +], +'github-domains' => [ +static function ($vals) { +if (!is_array($vals)) { +return 'array expected'; +} + +return true; +}, +static function ($vals) { +return $vals; +}, +], +'gitlab-domains' => [ +static function ($vals) { +if (!is_array($vals)) { +return 'array expected'; +} + +return true; +}, +static function ($vals) { +return $vals; +}, +], +]; + +if ($input->getOption('unset') && (isset($uniqueConfigValues[$settingKey]) || isset($multiConfigValues[$settingKey]))) { +if ($settingKey === 'disable-tls' && $this->config->get('disable-tls')) { +$this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); +} + +$this->configSource->removeConfigSetting($settingKey); + +return 0; +} +if (isset($uniqueConfigValues[$settingKey])) { +$this->handleSingleValue($settingKey, $uniqueConfigValues[$settingKey], $values, 'addConfigSetting'); + +return 0; +} +if (isset($multiConfigValues[$settingKey])) { +$this->handleMultiValue($settingKey, $multiConfigValues[$settingKey], $values, 'addConfigSetting'); + +return 0; +} + +if (Preg::isMatch('/^preferred-install\.(.+)/', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->configSource->removeConfigSetting($settingKey); + +return 0; +} + +[$validator] = $uniqueConfigValues['preferred-install']; +if (!$validator($values[0])) { +throw new \RuntimeException('Invalid value for '.$settingKey.'. Should be one of: auto, source, or dist'); +} + +$this->configSource->addConfigSetting($settingKey, $values[0]); + +return 0; +} + + +if (Preg::isMatch('{^allow-plugins\.([a-zA-Z0-9/*-]+)}', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->configSource->removeConfigSetting($settingKey); + +return 0; +} + +if (true !== $booleanValidator($values[0])) { +throw new \RuntimeException(sprintf( +'"%s" is an invalid value', +$values[0] +)); +} + +$normalizedValue = $booleanNormalizer($values[0]); + +$this->configSource->addConfigSetting($settingKey, $normalizedValue); + +return 0; +} + + +$uniqueProps = [ +'name' => ['is_string', static function ($val) { +return $val; +}], +'type' => ['is_string', static function ($val) { +return $val; +}], +'description' => ['is_string', static function ($val) { +return $val; +}], +'homepage' => ['is_string', static function ($val) { +return $val; +}], +'version' => ['is_string', static function ($val) { +return $val; +}], +'minimum-stability' => [ +static function ($val): bool { +return isset(BasePackage::$stabilities[VersionParser::normalizeStability($val)]); +}, +static function ($val): string { +return VersionParser::normalizeStability($val); +}, +], +'prefer-stable' => [$booleanValidator, $booleanNormalizer], +]; +$multiProps = [ +'keywords' => [ +static function ($vals) { +if (!is_array($vals)) { +return 'array expected'; +} + +return true; +}, +static function ($vals) { +return $vals; +}, +], +'license' => [ +static function ($vals) { +if (!is_array($vals)) { +return 'array expected'; +} + +return true; +}, +static function ($vals) { +return $vals; +}, +], +]; + +if ($input->getOption('global') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]) || strpos($settingKey, 'extra.') === 0)) { +throw new \InvalidArgumentException('The ' . $settingKey . ' property can not be set in the global config.json file. Use `composer global config` to apply changes to the global composer.json'); +} +if ($input->getOption('unset') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]))) { +$this->configSource->removeProperty($settingKey); + +return 0; +} +if (isset($uniqueProps[$settingKey])) { +$this->handleSingleValue($settingKey, $uniqueProps[$settingKey], $values, 'addProperty'); + +return 0; +} +if (isset($multiProps[$settingKey])) { +$this->handleMultiValue($settingKey, $multiProps[$settingKey], $values, 'addProperty'); + +return 0; +} + + +if (Preg::isMatchStrictGroups('/^repos?(?:itories)?\.(.+)/', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->configSource->removeRepository($matches[1]); + +return 0; +} + +if (2 === count($values)) { +$this->configSource->addRepository($matches[1], [ +'type' => $values[0], +'url' => $values[1], +], $input->getOption('append')); + +return 0; +} + +if (1 === count($values)) { +$value = strtolower($values[0]); +if (true === $booleanValidator($value)) { +if (false === $booleanNormalizer($value)) { +$this->configSource->addRepository($matches[1], false, $input->getOption('append')); + +return 0; +} +} else { +$value = JsonFile::parseJson($values[0]); +$this->configSource->addRepository($matches[1], $value, $input->getOption('append')); + +return 0; +} +} + +throw new \RuntimeException('You must pass the type and a url. Example: php composer.phar config repositories.foo vcs https://bar.com'); +} + + +if (Preg::isMatch('/^extra\.(.+)/', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->configSource->removeProperty($settingKey); + +return 0; +} + +$value = $values[0]; +if ($input->getOption('json')) { +$value = JsonFile::parseJson($value); +if ($input->getOption('merge')) { +$currentValue = $this->configFile->read(); +$bits = explode('.', $settingKey); +foreach ($bits as $bit) { +$currentValue = $currentValue[$bit] ?? null; +} +if (is_array($currentValue)) { +$value = array_merge($currentValue, $value); +} +} +} +$this->configSource->addProperty($settingKey, $value); + +return 0; +} + + +if (Preg::isMatch('/^suggest\.(.+)/', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->configSource->removeProperty($settingKey); + +return 0; +} + +$this->configSource->addProperty($settingKey, implode(' ', $values)); + +return 0; +} + + +if (in_array($settingKey, ['suggest', 'extra'], true) && $input->getOption('unset')) { +$this->configSource->removeProperty($settingKey); + +return 0; +} + + +if (Preg::isMatch('/^platform\.(.+)/', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->configSource->removeConfigSetting($settingKey); + +return 0; +} + +$this->configSource->addConfigSetting($settingKey, $values[0] === 'false' ? false : $values[0]); + +return 0; +} + + +if ($settingKey === 'platform' && $input->getOption('unset')) { +$this->configSource->removeConfigSetting($settingKey); + +return 0; +} + + +if (Preg::isMatch('/^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic|bearer)\.(.+)/', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->authConfigSource->removeConfigSetting($matches[1].'.'.$matches[2]); +$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); + +return 0; +} + +if ($matches[1] === 'bitbucket-oauth') { +if (2 !== count($values)) { +throw new \RuntimeException('Expected two arguments (consumer-key, consumer-secret), got '.count($values)); +} +$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); +$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], ['consumer-key' => $values[0], 'consumer-secret' => $values[1]]); +} elseif ($matches[1] === 'gitlab-token' && 2 === count($values)) { +$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); +$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], ['username' => $values[0], 'token' => $values[1]]); +} elseif (in_array($matches[1], ['github-oauth', 'gitlab-oauth', 'gitlab-token', 'bearer'], true)) { +if (1 !== count($values)) { +throw new \RuntimeException('Too many arguments, expected only one token'); +} +$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); +$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], $values[0]); +} elseif ($matches[1] === 'http-basic') { +if (2 !== count($values)) { +throw new \RuntimeException('Expected two arguments (username, password), got '.count($values)); +} +$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); +$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], ['username' => $values[0], 'password' => $values[1]]); +} + +return 0; +} + + +if (Preg::isMatch('/^scripts\.(.+)/', $settingKey, $matches)) { +if ($input->getOption('unset')) { +$this->configSource->removeProperty($settingKey); + +return 0; +} + +$this->configSource->addProperty($settingKey, count($values) > 1 ? $values : $values[0]); + +return 0; +} + + +if ($input->getOption('unset')) { +$this->configSource->removeProperty($settingKey); + +return 0; +} + +throw new \InvalidArgumentException('Setting '.$settingKey.' does not exist or is not supported by this command'); +} + + + + + +protected function handleSingleValue(string $key, array $callbacks, array $values, string $method): void +{ +[$validator, $normalizer] = $callbacks; +if (1 !== count($values)) { +throw new \RuntimeException('You can only pass one value. Example: php composer.phar config process-timeout 300'); +} + +if (true !== $validation = $validator($values[0])) { +throw new \RuntimeException(sprintf( +'"%s" is an invalid value'.($validation ? ' ('.$validation.')' : ''), +$values[0] +)); +} + +$normalizedValue = $normalizer($values[0]); + +if ($key === 'disable-tls') { +if (!$normalizedValue && $this->config->get('disable-tls')) { +$this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); +} elseif ($normalizedValue && !$this->config->get('disable-tls')) { +$this->getIO()->writeError('You are now running Composer with SSL/TLS protection disabled.'); +} +} + +call_user_func([$this->configSource, $method], $key, $normalizedValue); +} + + + + + +protected function handleMultiValue(string $key, array $callbacks, array $values, string $method): void +{ +[$validator, $normalizer] = $callbacks; +if (true !== $validation = $validator($values)) { +throw new \RuntimeException(sprintf( +'%s is an invalid value'.($validation ? ' ('.$validation.')' : ''), +json_encode($values) +)); +} + +call_user_func([$this->configSource, $method], $key, $normalizer($values)); +} + + + + + + + +protected function listConfiguration(array $contents, array $rawContents, OutputInterface $output, ?string $k = null, bool $showSource = false): void +{ +$origK = $k; +$io = $this->getIO(); +foreach ($contents as $key => $value) { +if ($k === null && !in_array($key, ['config', 'repositories'])) { +continue; +} + +$rawVal = $rawContents[$key] ?? null; + +if (is_array($value) && (!is_numeric(key($value)) || ($key === 'repositories' && null === $k))) { +$k .= Preg::replace('{^config\.}', '', $key . '.'); +$this->listConfiguration($value, $rawVal, $output, $k, $showSource); +$k = $origK; + +continue; +} + +if (is_array($value)) { +$value = array_map(static function ($val) { +return is_array($val) ? json_encode($val) : $val; +}, $value); + +$value = '['.implode(', ', $value).']'; +} + +if (is_bool($value)) { +$value = var_export($value, true); +} + +$source = ''; +if ($showSource) { +$source = ' (' . $this->config->getSourceOfValue($k . $key) . ')'; +} + +if (null !== $k && 0 === strpos($k, 'repositories')) { +$link = 'https://getcomposer.org/doc/05-repositories.md'; +} else { +$id = Preg::replace('{\..*$}', '', $k === '' || $k === null ? (string) $key : $k); +$id = Preg::replace('{[^a-z0-9]}i', '-', strtolower(trim($id))); +$id = Preg::replace('{-+}', '-', $id); +$link = 'https://getcomposer.org/doc/06-config.md#' . $id; +} +if (is_string($rawVal) && $rawVal !== $value) { +$io->write('[' . $k . $key . '] ' . $rawVal . ' (' . $value . ')' . $source, true, IOInterface::QUIET); +} else { +$io->write('[' . $k . $key . '] ' . $value . '' . $source, true, IOInterface::QUIET); +} +} +} + + + + +private function getComposerConfigFile(InputInterface $input, Config $config): string +{ +return $input->getOption('global') +? ($config->get('home') . '/config.json') +: ($input->getOption('file') ?: Factory::getComposerFile()) +; +} + + + + + +private function getAuthConfigFile(InputInterface $input, Config $config): string +{ +return $input->getOption('global') +? ($config->get('home') . '/auth.json') +: dirname($this->getComposerConfigFile($input, $config)) . '/auth.json' +; +} + + + + +private function suggestSettingKeys(): \Closure +{ +return function (CompletionInput $input): array { +if ($input->getOption('list') || $input->getOption('editor') || $input->getOption('auth')) { +return []; +} + + +$config = Factory::createConfig(); + + +$configFile = new JsonFile($this->getComposerConfigFile($input, $config)); +if ($configFile->exists()) { +$config->merge($configFile->read(), $configFile->getPath()); +} + + +$authConfigFile = new JsonFile($this->getAuthConfigFile($input, $config)); +if ($authConfigFile->exists()) { +$config->merge(['config' => $authConfigFile->read()], $authConfigFile->getPath()); +} + + +$rawConfig = $config->raw(); +$keys = array_merge( +$this->flattenSettingKeys($rawConfig['config']), +$this->flattenSettingKeys($rawConfig['repositories'], 'repositories.') +); + + +if ($input->getOption('unset')) { + +$sources = [$configFile->getPath(), $authConfigFile->getPath()]; +$keys = array_filter( +$keys, +static function (string $key) use ($config, $sources): bool { +return in_array($config->getSourceOfValue($key), $sources, true); +} +); + + +} else { + +$keys = array_merge($keys, self::CONFIGURABLE_PACKAGE_PROPERTIES); + + + + + +} + + +if ($configFile->exists()) { +$properties = array_filter( +$configFile->read(), +static function (string $key): bool { +return in_array($key, self::CONFIGURABLE_PACKAGE_PROPERTIES, true); +}, +ARRAY_FILTER_USE_KEY +); + +$keys = array_merge( +$keys, +$this->flattenSettingKeys($properties) +); +} + + +$completionValue = $input->getCompletionValue(); + +if ($completionValue !== '') { +$keys = array_filter( +$keys, +static function (string $key) use ($completionValue): bool { +return str_starts_with($key, $completionValue); +} +); +} + +sort($keys); + +return array_unique($keys); +}; +} + + + + + + + +private function flattenSettingKeys(array $config, string $prefix = ''): array +{ +$keys = []; +foreach ($config as $key => $value) { +$keys[] = [$prefix . $key]; + + +if (is_array($value) && !array_is_list($value) && $prefix !== 'repositories.') { +$keys[] = $this->flattenSettingKeys($value, $prefix . $key . '.'); +} +} + +return array_merge(...$keys); +} +} diff --git a/composer/src/Composer/Command/CreateProjectCommand.php b/composer/src/Composer/Command/CreateProjectCommand.php new file mode 100644 index 000000000..a49b510b1 --- /dev/null +++ b/composer/src/Composer/Command/CreateProjectCommand.php @@ -0,0 +1,481 @@ +setName('create-project') +->setDescription('Creates new project from a package into given directory') +->setDefinition([ +new InputArgument('package', InputArgument::OPTIONAL, 'Package name to be installed', null, $this->suggestAvailablePackage()), +new InputArgument('directory', InputArgument::OPTIONAL, 'Directory where the files should be created'), +new InputArgument('version', InputArgument::OPTIONAL, 'Version, will default to latest'), +new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum-stability allowed (unless a version is specified).'), +new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), +new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), +new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), +new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories to look the package up, either by URL or using JSON arrays'), +new InputOption('repository-url', null, InputOption::VALUE_REQUIRED, 'DEPRECATED: Use --repository instead.'), +new InputOption('add-repository', null, InputOption::VALUE_NONE, 'Add the custom repository in the composer.json. If a lock file is present it will be deleted and an update will be run instead of install.'), +new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), +new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), +new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Whether to prevent execution of all defined scripts in the root package.'), +new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), +new InputOption('no-secure-http', null, InputOption::VALUE_NONE, 'Disable the secure-http config option temporarily while installing the root package. Use at your own risk. Using this flag is a bad idea.'), +new InputOption('keep-vcs', null, InputOption::VALUE_NONE, 'Whether to prevent deleting the vcs folder.'), +new InputOption('remove-vcs', null, InputOption::VALUE_NONE, 'Whether to force deletion of the vcs folder without prompting.'), +new InputOption('no-install', null, InputOption::VALUE_NONE, 'Whether to skip installation of the package dependencies.'), +new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Whether to skip auditing of the installed package dependencies (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), +new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json" or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), +new InputOption('ask', null, InputOption::VALUE_NONE, 'Whether to ask for project directory.'), +]) +->setHelp( +<<create-project command creates a new project from a given +package into a new directory. If executed without params and in a directory +with a composer.json file it installs the packages for the current project. + +You can use this command to bootstrap new projects or setup a clean +version-controlled installation for developers of your project. + +php composer.phar create-project vendor/project target-directory [version] + +You can also specify the version with the package name using = or : as separator. + +php composer.phar create-project vendor/project:version target-directory + +To install unstable packages, either specify the version you want, or use the +--stability=dev (where dev can be one of RC, beta, alpha or dev). + +To setup a developer workable version you should create the project using the source +controlled code by appending the '--prefer-source' flag. + +To install a package from another repository than the default one you +can pass the '--repository=https://myrepository.org' flag. + +Read more at https://getcomposer.org/doc/03-cli.md#create-project +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$config = Factory::createConfig(); +$io = $this->getIO(); + +[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input, true); + +if ($input->getOption('dev')) { +$io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); +} +if ($input->getOption('no-custom-installers')) { +$io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); +$input->setOption('no-plugins', true); +} + +if ($input->isInteractive() && $input->getOption('ask')) { +$package = $input->getArgument('package'); +if (null === $package) { +throw new \RuntimeException('Not enough arguments (missing: "package").'); +} +$parts = explode("/", strtolower($package), 2); +$input->setArgument('directory', $io->ask('New project directory ['.array_pop($parts).']: ')); +} + +return $this->installProject( +$io, +$config, +$input, +$input->getArgument('package'), +$input->getArgument('directory'), +$input->getArgument('version'), +$input->getOption('stability'), +$preferSource, +$preferDist, +!$input->getOption('no-dev'), +\count($input->getOption('repository')) > 0 ? $input->getOption('repository') : $input->getOption('repository-url'), +$input->getOption('no-plugins'), +$input->getOption('no-scripts'), +$input->getOption('no-progress'), +$input->getOption('no-install'), +$this->getPlatformRequirementFilter($input), +!$input->getOption('no-secure-http'), +$input->getOption('add-repository') +); +} + + + + + + +public function installProject(IOInterface $io, Config $config, InputInterface $input, ?string $packageName = null, ?string $directory = null, ?string $packageVersion = null, ?string $stability = 'stable', bool $preferSource = false, bool $preferDist = false, bool $installDevPackages = false, $repositories = null, bool $disablePlugins = false, bool $disableScripts = false, bool $noProgress = false, bool $noInstall = false, ?PlatformRequirementFilterInterface $platformRequirementFilter = null, bool $secureHttp = true, bool $addRepository = false): int +{ +$oldCwd = Platform::getCwd(); + +if ($repositories !== null && !is_array($repositories)) { +$repositories = (array) $repositories; +} + +$platformRequirementFilter = $platformRequirementFilter ?? PlatformRequirementFilterFactory::ignoreNothing(); + + +$io->loadConfiguration($config); + +$this->suggestedPackagesReporter = new SuggestedPackagesReporter($io); + +if ($packageName !== null) { +$installedFromVcs = $this->installRootPackage($io, $config, $packageName, $platformRequirementFilter, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repositories, $disablePlugins, $disableScripts, $noProgress, $secureHttp); +} else { +$installedFromVcs = false; +} + +if ($repositories !== null && $addRepository && is_file('composer.lock')) { +unlink('composer.lock'); +} + +$composer = Factory::create($io, null, $disablePlugins, $disableScripts); + + +if ($repositories !== null && $addRepository) { +foreach ($repositories as $index => $repo) { +$repoConfig = RepositoryFactory::configFromString($io, $composer->getConfig(), $repo, true); +$composerJsonRepositoriesConfig = $composer->getConfig()->getRepositories(); +$name = RepositoryFactory::generateRepositoryName($index, $repoConfig, $composerJsonRepositoriesConfig); +$configSource = new JsonConfigSource(new JsonFile('composer.json')); + +if ( +(isset($repoConfig['packagist']) && $repoConfig === ['packagist' => false]) +|| (isset($repoConfig['packagist.org']) && $repoConfig === ['packagist.org' => false]) +) { +$configSource->addRepository('packagist.org', false); +} else { +$configSource->addRepository($name, $repoConfig, false); +} + +$composer = Factory::create($io, null, $disablePlugins); +} +} + +$process = $composer->getLoop()->getProcessExecutor(); +$fs = new Filesystem($process); + + +$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages); + + +$config = $composer->getConfig(); +[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); + + +if ($noInstall === false) { +$composer->getInstallationManager()->setOutputProgress(!$noProgress); + +$installer = Installer::create($io, $composer); +$installer->setPreferSource($preferSource) +->setPreferDist($preferDist) +->setDevMode($installDevPackages) +->setPlatformRequirementFilter($platformRequirementFilter) +->setSuggestedPackagesReporter($this->suggestedPackagesReporter) +->setOptimizeAutoloader($config->get('optimize-autoloader')) +->setClassMapAuthoritative($config->get('classmap-authoritative')) +->setApcuAutoloader($config->get('apcu-autoloader')) +->setAudit(!$input->getOption('no-audit')) +->setAuditFormat($this->getAuditFormat($input)); + +if (!$composer->getLocker()->isLocked()) { +$installer->setUpdate(true); +} + +if ($disablePlugins) { +$installer->disablePlugins(); +} + +try { +$status = $installer->run(); +if (0 !== $status) { +return $status; +} +} catch (PluginBlockedException $e) { +$io->writeError('Hint: To allow running the config command recommended below before dependencies are installed, run create-project with --no-install.'); +$io->writeError('You can then cd into '.getcwd().', configure allow-plugins, and finally run a composer install to complete the process.'); +throw $e; +} +} + +$hasVcs = $installedFromVcs; +if ( +!$input->getOption('keep-vcs') +&& $installedFromVcs +&& ( +$input->getOption('remove-vcs') +|| !$io->isInteractive() +|| $io->askConfirmation('Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? ') +) +) { +$finder = new Finder(); +$finder->depth(0)->directories()->in(Platform::getCwd())->ignoreVCS(false)->ignoreDotFiles(false); +foreach (['.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.fslckout', '_FOSSIL_'] as $vcsName) { +$finder->name($vcsName); +} + +try { +$dirs = iterator_to_array($finder); +unset($finder); +foreach ($dirs as $dir) { +if (!$fs->removeDirectory((string) $dir)) { +throw new \RuntimeException('Could not remove '.$dir); +} +} +} catch (\Exception $e) { +$io->writeError('An error occurred while removing the VCS metadata: '.$e->getMessage().''); +} + +$hasVcs = false; +} + + +if (!$hasVcs) { +$package = $composer->getPackage(); +$configSource = new JsonConfigSource(new JsonFile('composer.json')); +foreach (BasePackage::$supportedLinkTypes as $type => $meta) { +foreach ($package->{'get'.$meta['method']}() as $link) { +if ($link->getPrettyConstraint() === 'self.version') { +$configSource->addLink($type, $link->getTarget(), $package->getPrettyVersion()); +} +} +} +} + + +$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_CREATE_PROJECT_CMD, $installDevPackages); + +chdir($oldCwd); +$vendorComposerDir = $config->get('vendor-dir').'/composer'; +if (is_dir($vendorComposerDir) && $fs->isDirEmpty($vendorComposerDir)) { +Silencer::call('rmdir', $vendorComposerDir); +$vendorDir = $config->get('vendor-dir'); +if (is_dir($vendorDir) && $fs->isDirEmpty($vendorDir)) { +Silencer::call('rmdir', $vendorDir); +} +} + +return 0; +} + + + + + + +protected function installRootPackage(IOInterface $io, Config $config, string $packageName, PlatformRequirementFilterInterface $platformRequirementFilter, ?string $directory = null, ?string $packageVersion = null, ?string $stability = 'stable', bool $preferSource = false, bool $preferDist = false, bool $installDevPackages = false, ?array $repositories = null, bool $disablePlugins = false, bool $disableScripts = false, bool $noProgress = false, bool $secureHttp = true): bool +{ +if (!$secureHttp) { +$config->merge(['config' => ['secure-http' => false]], Config::SOURCE_COMMAND); +} + +$parser = new VersionParser(); +$requirements = $parser->parseNameVersionPairs([$packageName]); +$name = strtolower($requirements[0]['name']); +if (!$packageVersion && isset($requirements[0]['version'])) { +$packageVersion = $requirements[0]['version']; +} + + +if (null === $directory) { +$parts = explode("/", $name, 2); +$directory = Platform::getCwd() . DIRECTORY_SEPARATOR . array_pop($parts); +} + +$process = new ProcessExecutor($io); +$fs = new Filesystem($process); +if (!$fs->isAbsolutePath($directory)) { +$directory = Platform::getCwd() . DIRECTORY_SEPARATOR . $directory; +} + +$io->writeError('Creating a "' . $packageName . '" project at "' . $fs->findShortestPath(Platform::getCwd(), $directory, true) . '"'); + +if (file_exists($directory)) { +if (!is_dir($directory)) { +throw new \InvalidArgumentException('Cannot create project directory at "'.$directory.'", it exists as a file.'); +} +if (!$fs->isDirEmpty($directory)) { +throw new \InvalidArgumentException('Project directory "'.$directory.'" is not empty.'); +} +} + +if (null === $stability) { +if (null === $packageVersion) { +$stability = 'stable'; +} elseif (Preg::isMatchStrictGroups('{^[^,\s]*?@('.implode('|', array_keys(BasePackage::$stabilities)).')$}i', $packageVersion, $match)) { +$stability = $match[1]; +} else { +$stability = VersionParser::parseStability($packageVersion); +} +} + +$stability = VersionParser::normalizeStability($stability); + +if (!isset(BasePackage::$stabilities[$stability])) { +throw new \InvalidArgumentException('Invalid stability provided ('.$stability.'), must be one of: '.implode(', ', array_keys(BasePackage::$stabilities))); +} + +$composer = Factory::create($io, $config->all(), $disablePlugins, $disableScripts); +$config = $composer->getConfig(); +$rm = $composer->getRepositoryManager(); + +$repositorySet = new RepositorySet($stability); +if (null === $repositories) { +$repositorySet->addRepository(new CompositeRepository(RepositoryFactory::defaultRepos($io, $config, $rm))); +} else { +foreach ($repositories as $repo) { +$repoConfig = RepositoryFactory::configFromString($io, $config, $repo, true); +if ( +(isset($repoConfig['packagist']) && $repoConfig === ['packagist' => false]) +|| (isset($repoConfig['packagist.org']) && $repoConfig === ['packagist.org' => false]) +) { +continue; +} +$repositorySet->addRepository(RepositoryFactory::createRepo($io, $config, $repoConfig, $rm)); +} +} + +$platformOverrides = $config->get('platform'); +$platformRepo = new PlatformRepository([], $platformOverrides); + + +$versionSelector = new VersionSelector($repositorySet, $platformRepo); +$package = $versionSelector->findBestCandidate($name, $packageVersion, $stability, $platformRequirementFilter, 0, $io); + +if (!$package) { +$errorMessage = "Could not find package $name with " . ($packageVersion ? "version $packageVersion" : "stability $stability"); +if (!($platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter) && $versionSelector->findBestCandidate($name, $packageVersion, $stability, PlatformRequirementFilterFactory::ignoreAll())) { +throw new \InvalidArgumentException($errorMessage .' in a version installable using your PHP version, PHP extensions and Composer version.'); +} + +throw new \InvalidArgumentException($errorMessage .'.'); +} + + +@mkdir($directory, 0777, true); +if (false !== ($realDir = realpath($directory))) { +$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) use ($realDir) { +$this->getIO()->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); +$fs = new Filesystem(); +$fs->removeDirectory($realDir); +$handler->exitWithLastSignal(); +}); +} + + +if ($package instanceof AliasPackage && $package->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +$package = $package->getAliasOf(); +} + +$io->writeError('Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')'); + +if ($disablePlugins) { +$io->writeError('Plugins have been disabled.'); +} + +if ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} + +$dm = $composer->getDownloadManager(); +$dm->setPreferSource($preferSource) +->setPreferDist($preferDist); + +$projectInstaller = new ProjectInstaller($directory, $dm, $fs); +$im = $composer->getInstallationManager(); +$im->setOutputProgress(!$noProgress); +$im->addInstaller($projectInstaller); +$im->execute(new InstalledArrayRepository(), [new InstallOperation($package)]); +$im->notifyInstalls($io); + + +$this->suggestedPackagesReporter->addSuggestionsFromPackage($package); + +$installedFromVcs = 'source' === $package->getInstallationSource(); + +$io->writeError('Created project in ' . $directory . ''); +chdir($directory); + +Platform::putEnv('COMPOSER_ROOT_VERSION', $package->getPrettyVersion()); + + +if (isset($signalHandler)) { +$signalHandler->unregister(); +} + +return $installedFromVcs; +} +} diff --git a/composer/src/Composer/Command/DependsCommand.php b/composer/src/Composer/Command/DependsCommand.php new file mode 100644 index 000000000..cf13031d6 --- /dev/null +++ b/composer/src/Composer/Command/DependsCommand.php @@ -0,0 +1,58 @@ +setName('depends') +->setAliases(['why']) +->setDescription('Shows which packages cause the given package to be installed') +->setDefinition([ +new InputArgument(self::ARGUMENT_PACKAGE, InputArgument::REQUIRED, 'Package to inspect', null, $this->suggestInstalledPackage(true, true)), +new InputOption(self::OPTION_RECURSIVE, 'r', InputOption::VALUE_NONE, 'Recursively resolves up to the root package'), +new InputOption(self::OPTION_TREE, 't', InputOption::VALUE_NONE, 'Prints the results as a nested tree'), +new InputOption('locked', null, InputOption::VALUE_NONE, 'Read dependency information from composer.lock'), +]) +->setHelp( +<<php composer.phar depends composer/composer + +Read more at https://getcomposer.org/doc/03-cli.md#depends-why +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +return parent::doExecute($input, $output); +} +} diff --git a/composer/src/Composer/Command/DiagnoseCommand.php b/composer/src/Composer/Command/DiagnoseCommand.php new file mode 100644 index 000000000..22b133e46 --- /dev/null +++ b/composer/src/Composer/Command/DiagnoseCommand.php @@ -0,0 +1,741 @@ +setName('diagnose') +->setDescription('Diagnoses the system to identify common errors') +->setHelp( +<<diagnose command checks common errors to help debugging problems. + +The process exit code will be 1 in case of warnings and 2 for errors. + +Read more at https://getcomposer.org/doc/03-cli.md#diagnose +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$composer = $this->tryComposer(); +$io = $this->getIO(); + +if ($composer) { +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'diagnose', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$io->write('Checking composer.json: ', false); +$this->outputResult($this->checkComposerSchema()); +$this->process = $composer->getLoop()->getProcessExecutor() ?? new ProcessExecutor($io); +} else { +$this->process = new ProcessExecutor($io); +} + +if ($composer) { +$config = $composer->getConfig(); +} else { +$config = Factory::createConfig(); +} + +$config->merge(['config' => ['secure-http' => false]], Config::SOURCE_COMMAND); +$config->prohibitUrlByConfig('http://repo.packagist.org', new NullIO); + +$this->httpDownloader = Factory::createHttpDownloader($io, $config); + +$io->write('Checking platform settings: ', false); +$this->outputResult($this->checkPlatform()); + +$io->write('Checking git settings: ', false); +$this->outputResult($this->checkGit()); + +$io->write('Checking http connectivity to packagist: ', false); +$this->outputResult($this->checkHttp('http', $config)); + +$io->write('Checking https connectivity to packagist: ', false); +$this->outputResult($this->checkHttp('https', $config)); + +$opts = stream_context_get_options(StreamContextFactory::getContext('http://example.org')); +if (!empty($opts['http']['proxy'])) { +$io->write('Checking HTTP proxy: ', false); +$this->outputResult($this->checkHttpProxy()); +} + +if (count($oauth = $config->get('github-oauth')) > 0) { +foreach ($oauth as $domain => $token) { +$io->write('Checking '.$domain.' oauth access: ', false); +$this->outputResult($this->checkGithubOauth($domain, $token)); +} +} else { +$io->write('Checking github.com rate limit: ', false); +try { +$rate = $this->getGithubRateLimit('github.com'); +if (!is_array($rate)) { +$this->outputResult($rate); +} elseif (10 > $rate['remaining']) { +$io->write('WARNING'); +$io->write(sprintf( +'Github has a rate limit on their API. ' +. 'You currently have %u ' +. 'out of %u requests left.' . PHP_EOL +. 'See https://developer.github.com/v3/#rate-limiting and also' . PHP_EOL +. ' https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens', +$rate['remaining'], +$rate['limit'] +)); +} else { +$this->outputResult(true); +} +} catch (\Exception $e) { +if ($e instanceof TransportException && $e->getCode() === 401) { +$this->outputResult('The oauth token for github.com seems invalid, run "composer config --global --unset github-oauth.github.com" to remove it'); +} else { +$this->outputResult($e); +} +} +} + +$io->write('Checking disk free space: ', false); +$this->outputResult($this->checkDiskSpace($config)); + +if (strpos(__FILE__, 'phar:') === 0) { +$io->write('Checking pubkeys: ', false); +$this->outputResult($this->checkPubKeys($config)); + +$io->write('Checking composer version: ', false); +$this->outputResult($this->checkVersion($config)); +} + +$io->write(sprintf('Composer version: %s', Composer::getVersion())); + +$platformOverrides = $config->get('platform') ?: []; +$platformRepo = new PlatformRepository([], $platformOverrides); +$phpPkg = $platformRepo->findPackage('php', '*'); +$phpVersion = $phpPkg->getPrettyVersion(); +if ($phpPkg instanceof CompletePackageInterface && str_contains((string) $phpPkg->getDescription(), 'overridden')) { +$phpVersion .= ' - ' . $phpPkg->getDescription(); +} + +$io->write(sprintf('PHP version: %s', $phpVersion)); + +if (defined('PHP_BINARY')) { +$io->write(sprintf('PHP binary path: %s', PHP_BINARY)); +} + +$io->write('OpenSSL version: ' . (defined('OPENSSL_VERSION_TEXT') ? ''.OPENSSL_VERSION_TEXT.'' : 'missing')); +$io->write('cURL version: ' . $this->getCurlVersion()); + +$finder = new ExecutableFinder; +$hasSystemUnzip = (bool) $finder->find('unzip'); +$bin7zip = ''; +if ($hasSystem7zip = (bool) $finder->find('7z', null, ['C:\Program Files\7-Zip'])) { +$bin7zip = '7z'; +} +if (!Platform::isWindows() && !$hasSystem7zip && $hasSystem7zip = (bool) $finder->find('7zz')) { +$bin7zip = '7zz'; +} + +$io->write( +'zip: ' . (extension_loaded('zip') ? 'extension present' : 'extension not loaded') +. ', ' . ($hasSystemUnzip ? 'unzip present' : 'unzip not available') +. ', ' . ($hasSystem7zip ? '7-Zip present ('.$bin7zip.')' : '7-Zip not available') +. (($hasSystem7zip || $hasSystemUnzip) && !function_exists('proc_open') ? ', proc_open is disabled or not present, unzip/7-z will not be usable' : '') +); + +return $this->exitCode; +} + + + + +private function checkComposerSchema() +{ +$validator = new ConfigValidator($this->getIO()); +[$errors, , $warnings] = $validator->validate(Factory::getComposerFile()); + +if ($errors || $warnings) { +$messages = [ +'error' => $errors, +'warning' => $warnings, +]; + +$output = ''; +foreach ($messages as $style => $msgs) { +foreach ($msgs as $msg) { +$output .= '<' . $style . '>' . $msg . '' . PHP_EOL; +} +} + +return rtrim($output); +} + +return true; +} + +private function checkGit(): string +{ +if (!function_exists('proc_open')) { +return 'proc_open is not available, git cannot be used'; +} + +$this->process->execute('git config color.ui', $output); +if (strtolower(trim($output)) === 'always') { +return 'Your git color.ui setting is set to always, this is known to create issues. Use "git config --global color.ui true" to set it correctly.'; +} + +$gitVersion = Git::getVersion($this->process); +if (null === $gitVersion) { +return 'No git process found'; +} + +if (version_compare('2.24.0', $gitVersion, '>')) { +return 'Your git version ('.$gitVersion.') is too old and possibly will cause issues. Please upgrade to git 2.24 or above'; +} + +return 'OK git version '.$gitVersion.''; +} + + + + +private function checkHttp(string $proto, Config $config) +{ +$result = $this->checkConnectivity(); +if ($result !== true) { +return $result; +} + +$result = []; +if ($proto === 'https' && $config->get('disable-tls') === true) { +$tlsWarning = 'Composer is configured to disable SSL/TLS protection. This will leave remote HTTPS requests vulnerable to Man-In-The-Middle attacks.'; +} + +try { +$this->httpDownloader->get($proto . '://repo.packagist.org/packages.json'); +} catch (TransportException $e) { +$hints = HttpDownloader::getExceptionHints($e); +if (null !== $hints && count($hints) > 0) { +foreach ($hints as $hint) { +$result[] = $hint; +} +} + +$result[] = '[' . get_class($e) . '] ' . $e->getMessage() . ''; +} + +if (isset($tlsWarning)) { +$result[] = $tlsWarning; +} + +if (count($result) > 0) { +return $result; +} + +return true; +} + + + + +private function checkHttpProxy() +{ +$result = $this->checkConnectivity(); +if ($result !== true) { +return $result; +} + +$protocol = extension_loaded('openssl') ? 'https' : 'http'; +try { +$json = $this->httpDownloader->get($protocol . '://repo.packagist.org/packages.json')->decodeJson(); +$hash = reset($json['provider-includes']); +$hash = $hash['sha256']; +$path = str_replace('%hash%', $hash, key($json['provider-includes'])); +$provider = $this->httpDownloader->get($protocol . '://repo.packagist.org/'.$path)->getBody(); + +if (hash('sha256', $provider) !== $hash) { +return 'It seems that your proxy is modifying http traffic on the fly'; +} +} catch (\Exception $e) { +return $e; +} + +return true; +} + + + + +private function checkGithubOauth(string $domain, string $token) +{ +$result = $this->checkConnectivity(); +if ($result !== true) { +return $result; +} + +$this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); +try { +$url = $domain === 'github.com' ? 'https://api.'.$domain.'/' : 'https://'.$domain.'/api/v3/'; + +$this->httpDownloader->get($url, [ +'retry-auth-failure' => false, +]); + +return true; +} catch (\Exception $e) { +if ($e instanceof TransportException && $e->getCode() === 401) { +return 'The oauth token for '.$domain.' seems invalid, run "composer config --global --unset github-oauth.'.$domain.'" to remove it'; +} + +return $e; +} +} + + + + + + +private function getGithubRateLimit(string $domain, ?string $token = null) +{ +$result = $this->checkConnectivity(); +if ($result !== true) { +return $result; +} + +if ($token) { +$this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); +} + +$url = $domain === 'github.com' ? 'https://api.'.$domain.'/rate_limit' : 'https://'.$domain.'/api/rate_limit'; +$data = $this->httpDownloader->get($url, ['retry-auth-failure' => false])->decodeJson(); + +return $data['resources']['core']; +} + + + + +private function checkDiskSpace(Config $config) +{ +if (!function_exists('disk_free_space')) { +return true; +} + +$minSpaceFree = 1024 * 1024; +if ((($df = @disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) +|| (($df = @disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) +) { +return 'The disk hosting '.$dir.' is full'; +} + +return true; +} + + + + +private function checkPubKeys(Config $config) +{ +$home = $config->get('home'); +$errors = []; +$io = $this->getIO(); + +if (file_exists($home.'/keys.tags.pub') && file_exists($home.'/keys.dev.pub')) { +$io->write(''); +} + +if (file_exists($home.'/keys.tags.pub')) { +$io->write('Tags Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.tags.pub')); +} else { +$errors[] = 'Missing pubkey for tags verification'; +} + +if (file_exists($home.'/keys.dev.pub')) { +$io->write('Dev Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.dev.pub')); +} else { +$errors[] = 'Missing pubkey for dev verification'; +} + +if ($errors) { +$errors[] = 'Run composer self-update --update-keys to set them up'; +} + +return $errors ?: true; +} + + + + +private function checkVersion(Config $config) +{ +$result = $this->checkConnectivity(); +if ($result !== true) { +return $result; +} + +$versionsUtil = new Versions($config, $this->httpDownloader); +try { +$latest = $versionsUtil->getLatest(); +} catch (\Exception $e) { +return $e; +} + +if (Composer::VERSION !== $latest['version'] && Composer::VERSION !== '@package_version@') { +return 'You are not running the latest '.$versionsUtil->getChannel().' version, run `composer self-update` to update ('.Composer::VERSION.' => '.$latest['version'].')'; +} + +return true; +} + +private function getCurlVersion(): string +{ +if (extension_loaded('curl')) { +if (!HttpDownloader::isCurlEnabled()) { +return 'disabled via disable_functions, using php streams fallback, which reduces performance'; +} + +$version = curl_version(); + +return ''.$version['version'].' '. +'libz '.(!empty($version['libz_version']) ? $version['libz_version'] : 'missing').' '. +'ssl '.($version['ssl_version'] ?? 'missing').''; +} + +return 'missing, using php streams fallback, which reduces performance'; +} + + + + +private function outputResult($result): void +{ +$io = $this->getIO(); +if (true === $result) { +$io->write('OK'); + +return; +} + +$hadError = false; +$hadWarning = false; +if ($result instanceof \Exception) { +$result = '['.get_class($result).'] '.$result->getMessage().''; +} + +if (!$result) { + +$hadError = true; +} else { +if (!is_array($result)) { +$result = [$result]; +} +foreach ($result as $message) { +if (false !== strpos($message, '')) { +$hadError = true; +} elseif (false !== strpos($message, '')) { +$hadWarning = true; +} +} +} + +if ($hadError) { +$io->write('FAIL'); +$this->exitCode = max($this->exitCode, 2); +} elseif ($hadWarning) { +$io->write('WARNING'); +$this->exitCode = max($this->exitCode, 1); +} + +if ($result) { +foreach ($result as $message) { +$io->write($message); +} +} +} + + + + +private function checkPlatform() +{ +$output = ''; +$out = static function ($msg, $style) use (&$output): void { +$output .= '<'.$style.'>'.$msg.''.PHP_EOL; +}; + + +$errors = []; +$warnings = []; +$displayIniMessage = false; + +$iniMessage = PHP_EOL.PHP_EOL.IniHelper::getMessage(); +$iniMessage .= PHP_EOL.'If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.'; + +if (!function_exists('json_decode')) { +$errors['json'] = true; +} + +if (!extension_loaded('Phar')) { +$errors['phar'] = true; +} + +if (!extension_loaded('filter')) { +$errors['filter'] = true; +} + +if (!extension_loaded('hash')) { +$errors['hash'] = true; +} + +if (!extension_loaded('iconv') && !extension_loaded('mbstring')) { +$errors['iconv_mbstring'] = true; +} + +if (!filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { +$errors['allow_url_fopen'] = true; +} + +if (extension_loaded('ionCube Loader') && ioncube_loader_iversion() < 40009) { +$errors['ioncube'] = ioncube_loader_version(); +} + +if (PHP_VERSION_ID < 70205) { +$errors['php'] = PHP_VERSION; +} + +if (!extension_loaded('openssl')) { +$errors['openssl'] = true; +} + +if (extension_loaded('openssl') && OPENSSL_VERSION_NUMBER < 0x1000100f) { +$warnings['openssl_version'] = true; +} + +if (!defined('HHVM_VERSION') && !extension_loaded('apcu') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) { +$warnings['apc_cli'] = true; +} + +if (!extension_loaded('zlib')) { +$warnings['zlib'] = true; +} + +ob_start(); +phpinfo(INFO_GENERAL); +$phpinfo = ob_get_clean(); +if (is_string($phpinfo) && Preg::isMatchStrictGroups('{Configure Command(?: *| *=> *)(.*?)(?:|$)}m', $phpinfo, $match)) { +$configure = $match[1]; + +if (str_contains($configure, '--enable-sigchild')) { +$warnings['sigchild'] = true; +} + +if (str_contains($configure, '--with-curlwrappers')) { +$warnings['curlwrappers'] = true; +} +} + +if (filter_var(ini_get('xdebug.profiler_enabled'), FILTER_VALIDATE_BOOLEAN)) { +$warnings['xdebug_profile'] = true; +} elseif (XdebugHandler::isXdebugActive()) { +$warnings['xdebug_loaded'] = true; +} + +if (defined('PHP_WINDOWS_VERSION_BUILD') +&& (version_compare(PHP_VERSION, '7.2.23', '<') +|| (version_compare(PHP_VERSION, '7.3.0', '>=') +&& version_compare(PHP_VERSION, '7.3.10', '<')))) { +$warnings['onedrive'] = PHP_VERSION; +} + +if (!empty($errors)) { +foreach ($errors as $error => $current) { +switch ($error) { +case 'json': +$text = PHP_EOL."The json extension is missing.".PHP_EOL; +$text .= "Install it or recompile php without --disable-json"; +break; + +case 'phar': +$text = PHP_EOL."The phar extension is missing.".PHP_EOL; +$text .= "Install it or recompile php without --disable-phar"; +break; + +case 'filter': +$text = PHP_EOL."The filter extension is missing.".PHP_EOL; +$text .= "Install it or recompile php without --disable-filter"; +break; + +case 'hash': +$text = PHP_EOL."The hash extension is missing.".PHP_EOL; +$text .= "Install it or recompile php without --disable-hash"; +break; + +case 'iconv_mbstring': +$text = PHP_EOL."The iconv OR mbstring extension is required and both are missing.".PHP_EOL; +$text .= "Install either of them or recompile php without --disable-iconv"; +break; + +case 'php': +$text = PHP_EOL."Your PHP ({$current}) is too old, you must upgrade to PHP 7.2.5 or higher."; +break; + +case 'allow_url_fopen': +$text = PHP_EOL."The allow_url_fopen setting is incorrect.".PHP_EOL; +$text .= "Add the following to the end of your `php.ini`:".PHP_EOL; +$text .= " allow_url_fopen = On"; +$displayIniMessage = true; +break; + +case 'ioncube': +$text = PHP_EOL."Your ionCube Loader extension ($current) is incompatible with Phar files.".PHP_EOL; +$text .= "Upgrade to ionCube 4.0.9 or higher or remove this line (path may be different) from your `php.ini` to disable it:".PHP_EOL; +$text .= " zend_extension = /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so"; +$displayIniMessage = true; +break; + +case 'openssl': +$text = PHP_EOL."The openssl extension is missing, which means that secure HTTPS transfers are impossible.".PHP_EOL; +$text .= "If possible you should enable it or recompile php with --with-openssl"; +break; + +default: +throw new \InvalidArgumentException(sprintf("DiagnoseCommand: Unknown error type \"%s\". Please report at https://github.com/composer/composer/issues/new.", $error)); +} +$out($text, 'error'); +} + +$output .= PHP_EOL; +} + +if (!empty($warnings)) { +foreach ($warnings as $warning => $current) { +switch ($warning) { +case 'apc_cli': +$text = "The apc.enable_cli setting is incorrect.".PHP_EOL; +$text .= "Add the following to the end of your `php.ini`:".PHP_EOL; +$text .= " apc.enable_cli = Off"; +$displayIniMessage = true; +break; + +case 'zlib': +$text = 'The zlib extension is not loaded, this can slow down Composer a lot.'.PHP_EOL; +$text .= 'If possible, enable it or recompile php with --with-zlib'.PHP_EOL; +$displayIniMessage = true; +break; + +case 'sigchild': +$text = "PHP was compiled with --enable-sigchild which can cause issues on some platforms.".PHP_EOL; +$text .= "Recompile it without this flag if possible, see also:".PHP_EOL; +$text .= " https://bugs.php.net/bug.php?id=22999"; +break; + +case 'curlwrappers': +$text = "PHP was compiled with --with-curlwrappers which will cause issues with HTTP authentication and GitHub.".PHP_EOL; +$text .= " Recompile it without this flag if possible"; +break; + +case 'openssl_version': + +$opensslVersion = strstr(trim(strstr(OPENSSL_VERSION_TEXT, ' ')), ' ', true); +$opensslVersion = $opensslVersion ?: OPENSSL_VERSION_TEXT; + +$text = "The OpenSSL library ({$opensslVersion}) used by PHP does not support TLSv1.2 or TLSv1.1.".PHP_EOL; +$text .= "If possible you should upgrade OpenSSL to version 1.0.1 or above."; +break; + +case 'xdebug_loaded': +$text = "The xdebug extension is loaded, this can slow down Composer a little.".PHP_EOL; +$text .= " Disabling it when using Composer is recommended."; +break; + +case 'xdebug_profile': +$text = "The xdebug.profiler_enabled setting is enabled, this can slow down Composer a lot.".PHP_EOL; +$text .= "Add the following to the end of your `php.ini` to disable it:".PHP_EOL; +$text .= " xdebug.profiler_enabled = 0"; +$displayIniMessage = true; +break; + +case 'onedrive': +$text = "The Windows OneDrive folder is not supported on PHP versions below 7.2.23 and 7.3.10.".PHP_EOL; +$text .= "Upgrade your PHP ({$current}) to use this location with Composer.".PHP_EOL; +break; + +default: +throw new \InvalidArgumentException(sprintf("DiagnoseCommand: Unknown warning type \"%s\". Please report at https://github.com/composer/composer/issues/new.", $warning)); +} +$out($text, 'comment'); +} +} + +if ($displayIniMessage) { +$out($iniMessage, 'comment'); +} + +return count($warnings) === 0 && count($errors) === 0 ? true : $output; +} + + + + + + +private function checkConnectivity() +{ +if (!ini_get('allow_url_fopen')) { +return 'Skipped because allow_url_fopen is missing.'; +} + +return true; +} +} diff --git a/composer/src/Composer/Command/DumpAutoloadCommand.php b/composer/src/Composer/Command/DumpAutoloadCommand.php new file mode 100644 index 000000000..0a9d70475 --- /dev/null +++ b/composer/src/Composer/Command/DumpAutoloadCommand.php @@ -0,0 +1,116 @@ +setName('dump-autoload') +->setAliases(['dumpautoload']) +->setDescription('Dumps the autoloader') +->setDefinition([ +new InputOption('optimize', 'o', InputOption::VALUE_NONE, 'Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.'), +new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize`.'), +new InputOption('apcu', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), +new InputOption('apcu-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu'), +new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables autoload-dev rules. Composer will by default infer this automatically according to the last install or update --no-dev state.'), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables autoload-dev rules. Composer will by default infer this automatically according to the last install or update --no-dev state.'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), +new InputOption('strict-psr', null, InputOption::VALUE_NONE, 'Return a failed status code (1) if PSR-4 or PSR-0 mapping errors are present. Requires --optimize to work.'), +]) +->setHelp( +<<php composer.phar dump-autoload + +Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$composer = $this->requireComposer(); + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'dump-autoload', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$installationManager = $composer->getInstallationManager(); +$localRepo = $composer->getRepositoryManager()->getLocalRepository(); +$package = $composer->getPackage(); +$config = $composer->getConfig(); + +$optimize = $input->getOption('optimize') || $config->get('optimize-autoloader'); +$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); +$apcuPrefix = $input->getOption('apcu-prefix'); +$apcu = $apcuPrefix !== null || $input->getOption('apcu') || $config->get('apcu-autoloader'); + +if ($input->getOption('strict-psr') && !$optimize) { +throw new \InvalidArgumentException('--strict-psr mode only works with optimized autoloader, use --optimize if you want a strict return value.'); +} + +if ($authoritative) { +$this->getIO()->write('Generating optimized autoload files (authoritative)'); +} elseif ($optimize) { +$this->getIO()->write('Generating optimized autoload files'); +} else { +$this->getIO()->write('Generating autoload files'); +} + +$generator = $composer->getAutoloadGenerator(); +if ($input->getOption('no-dev')) { +$generator->setDevMode(false); +} +if ($input->getOption('dev')) { +if ($input->getOption('no-dev')) { +throw new \InvalidArgumentException('You can not use both --no-dev and --dev as they conflict with each other.'); +} +$generator->setDevMode(true); +} +$generator->setClassMapAuthoritative($authoritative); +$generator->setRunScripts(true); +$generator->setApcu($apcu, $apcuPrefix); +$generator->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)); +$classMap = $generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize); +$numberOfClasses = count($classMap); + +if ($authoritative) { +$this->getIO()->write('Generated optimized autoload files (authoritative) containing '. $numberOfClasses .' classes'); +} elseif ($optimize) { +$this->getIO()->write('Generated optimized autoload files containing '. $numberOfClasses .' classes'); +} else { +$this->getIO()->write('Generated autoload files'); +} + +if ($input->getOption('strict-psr') && count($classMap->getPsrViolations()) > 0) { +return 1; +} + +return 0; +} +} diff --git a/composer/src/Composer/Command/ExecCommand.php b/composer/src/Composer/Command/ExecCommand.php new file mode 100644 index 000000000..48494aa9d --- /dev/null +++ b/composer/src/Composer/Command/ExecCommand.php @@ -0,0 +1,153 @@ +setName('exec') +->setDescription('Executes a vendored binary/script') +->setDefinition([ +new InputOption('list', 'l', InputOption::VALUE_NONE), +new InputArgument('binary', InputArgument::OPTIONAL, 'The binary to run, e.g. phpunit', null, function () { +return $this->getBinaries(false); +}), +new InputArgument( +'args', +InputArgument::IS_ARRAY | InputArgument::OPTIONAL, +'Arguments to pass to the binary. Use -- to separate from composer arguments' +), +]) +->setHelp( +<<getBinaries(false); +if (count($binaries) === 0) { +return; +} + +if ($input->getArgument('binary') !== null || $input->getOption('list')) { +return; +} + +$io = $this->getIO(); + +$binary = $io->select( +'Binary to run: ', +$binaries, +'', +1, +'Invalid binary name "%s"' +); + +$input->setArgument('binary', $binaries[$binary]); +} + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$composer = $this->requireComposer(); +if ($input->getOption('list') || null === $input->getArgument('binary')) { +$bins = $this->getBinaries(true); +if ([] === $bins) { +$binDir = $composer->getConfig()->get('bin-dir'); + +throw new \RuntimeException("No binaries found in composer.json or in bin-dir ($binDir)"); +} + +$this->getIO()->write( +<<Available binaries: +EOT +); + +foreach ($bins as $bin) { +$this->getIO()->write( +<<- $bin +EOT +); +} + +return 0; +} + +$binary = $input->getArgument('binary'); + +$dispatcher = $composer->getEventDispatcher(); +$dispatcher->addListener('__exec_command', $binary); + + + + +if (getcwd() !== $this->getApplication()->getInitialWorkingDirectory() && $this->getApplication()->getInitialWorkingDirectory() !== false) { +try { +chdir($this->getApplication()->getInitialWorkingDirectory()); +} catch (\Exception $e) { +throw new \RuntimeException('Could not switch back to working directory "'.$this->getApplication()->getInitialWorkingDirectory().'"', 0, $e); +} +} + +return $dispatcher->dispatchScript('__exec_command', true, $input->getArgument('args')); +} + + + + +private function getBinaries(bool $forDisplay): array +{ +$composer = $this->requireComposer(); +$binDir = $composer->getConfig()->get('bin-dir'); +$bins = glob($binDir . '/*'); +$localBins = $composer->getPackage()->getBinaries(); +if ($forDisplay) { +$localBins = array_map(static function ($e) { +return "$e (local)"; +}, $localBins); +} + +$binaries = []; +foreach (array_merge($bins, $localBins) as $bin) { + +if (isset($previousBin) && $bin === $previousBin.'.bat') { +continue; +} + +$previousBin = $bin; +$binaries[] = basename($bin); +} + +return $binaries; +} +} diff --git a/composer/src/Composer/Command/FundCommand.php b/composer/src/Composer/Command/FundCommand.php new file mode 100644 index 000000000..4f526135a --- /dev/null +++ b/composer/src/Composer/Command/FundCommand.php @@ -0,0 +1,151 @@ +setName('fund') +->setDescription('Discover how to help fund the maintenance of your dependencies') +->setDefinition([ +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['text', 'json']), +]) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$composer = $this->requireComposer(); + +$repo = $composer->getRepositoryManager()->getLocalRepository(); +$remoteRepos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); +$fundings = []; + +$packagesToLoad = []; +foreach ($repo->getPackages() as $package) { +if ($package instanceof AliasPackage) { +continue; +} +$packagesToLoad[$package->getName()] = new MatchAllConstraint(); +} + + +$result = $remoteRepos->loadPackages($packagesToLoad, ['dev' => BasePackage::STABILITY_DEV], []); + + +foreach ($result['packages'] as $package) { +if ( +!$package instanceof AliasPackage +&& $package instanceof CompletePackageInterface +&& $package->isDefaultBranch() +&& $package->getFunding() +&& isset($packagesToLoad[$package->getName()]) +) { +$fundings = $this->insertFundingData($fundings, $package); +unset($packagesToLoad[$package->getName()]); +} +} + + +foreach ($repo->getPackages() as $package) { +if ($package instanceof AliasPackage || !isset($packagesToLoad[$package->getName()])) { +continue; +} + +if ($package instanceof CompletePackageInterface && $package->getFunding()) { +$fundings = $this->insertFundingData($fundings, $package); +} +} + +ksort($fundings); + +$io = $this->getIO(); + +$format = $input->getOption('format'); +if (!in_array($format, ['text', 'json'])) { +$io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); + +return 1; +} + +if ($fundings && $format === 'text') { +$prev = null; + +$io->write('The following packages were found in your dependencies which publish funding information:'); + +foreach ($fundings as $vendor => $links) { +$io->write(''); +$io->write(sprintf("%s", $vendor)); +foreach ($links as $url => $packages) { +$line = sprintf(' %s', implode(', ', $packages)); + +if ($prev !== $line) { +$io->write($line); +$prev = $line; +} + +$io->write(sprintf(' %s', OutputFormatter::escape($url), $url)); +} +} + +$io->write(""); +$io->write("Please consider following these links and sponsoring the work of package authors!"); +$io->write("Thank you!"); +} elseif ($format === 'json') { +$io->write(JsonFile::encode($fundings)); +} else { +$io->write("No funding links were found in your package dependencies. This doesn't mean they don't need your support!"); +} + +return 0; +} + + + + + +private function insertFundingData(array $fundings, CompletePackageInterface $package): array +{ +foreach ($package->getFunding() as $fundingOption) { +[$vendor, $packageName] = explode('/', $package->getPrettyName()); + +if (empty($fundingOption['url'])) { +continue; +} +$url = $fundingOption['url']; +if (!empty($fundingOption['type']) && $fundingOption['type'] === 'github' && Preg::isMatch('{^https://github.com/([^/]+)$}', $url, $match)) { +$url = 'https://github.com/sponsors/'.$match[1]; +} +$fundings[$vendor][$url][] = $packageName; +} + +return $fundings; +} +} diff --git a/composer/src/Composer/Command/GlobalCommand.php b/composer/src/Composer/Command/GlobalCommand.php new file mode 100644 index 000000000..bbb4d2d8f --- /dev/null +++ b/composer/src/Composer/Command/GlobalCommand.php @@ -0,0 +1,165 @@ +getApplication(); +if ($input->mustSuggestArgumentValuesFor('command-name')) { +$suggestions->suggestValues(array_values(array_filter(array_map(static function (Command $command) { +return $command->isHidden() ? null : $command->getName(); +}, $application->all())))); + +return; +} + +if ($application->has($commandName = $input->getArgument('command-name'))) { +$input = $this->prepareSubcommandInput($input, true); +$input = CompletionInput::fromString($input->__toString(), 2); +$command = $application->find($commandName); +$command->mergeApplicationDefinition(); + +$input->bind($command->getDefinition()); +$command->complete($input, $suggestions); +} +} + +protected function configure(): void +{ +$this +->setName('global') +->setDescription('Allows running commands in the global composer dir ($COMPOSER_HOME)') +->setDefinition([ +new InputArgument('command-name', InputArgument::REQUIRED, ''), +new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), +]) +->setHelp( +<<\AppData\Roaming\Composer on Windows +and /home//.composer on unix systems. + +If your system uses freedesktop.org standards, then it will first check +XDG_CONFIG_HOME or default to /home//.config/composer + +Note: This path may vary depending on customizations to bin-dir in +composer.json or the environmental variable COMPOSER_BIN_DIR. + +Read more at https://getcomposer.org/doc/03-cli.md#global +EOT +) +; +} + + + + +public function run(InputInterface $input, OutputInterface $output): int +{ + +if (!method_exists($input, '__toString')) { +throw new \LogicException('Expected an Input instance that is stringable, got '.get_class($input)); +} + + +$tokens = Preg::split('{\s+}', $input->__toString()); +$args = []; +foreach ($tokens as $token) { +if ($token && $token[0] !== '-') { +$args[] = $token; +if (count($args) >= 2) { +break; +} +} +} + + +if (count($args) < 2) { +return parent::run($input, $output); +} + +$input = $this->prepareSubcommandInput($input); + +return $this->getApplication()->run($input, $output); +} + +private function prepareSubcommandInput(InputInterface $input, bool $quiet = false): StringInput +{ + +if (!method_exists($input, '__toString')) { +throw new \LogicException('Expected an Input instance that is stringable, got '.get_class($input)); +} + + +if (Platform::getEnv('COMPOSER')) { +Platform::clearEnv('COMPOSER'); +} + + +$config = Factory::createConfig(); +$home = $config->get('home'); + +if (!is_dir($home)) { +$fs = new Filesystem(); +$fs->ensureDirectoryExists($home); +if (!is_dir($home)) { +throw new \RuntimeException('Could not create home directory'); +} +} + +try { +chdir($home); +} catch (\Exception $e) { +throw new \RuntimeException('Could not switch to home directory "'.$home.'"', 0, $e); +} +if (!$quiet) { +$this->getIO()->writeError('Changed current directory to '.$home.''); +} + + +$input = new StringInput(Preg::replace('{\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\b}', '', $input->__toString(), 1)); +$this->getApplication()->resetComposer(); + +return $input; +} + + + + +public function isProxyCommand(): bool +{ +return true; +} +} diff --git a/composer/src/Composer/Command/HomeCommand.php b/composer/src/Composer/Command/HomeCommand.php new file mode 100644 index 000000000..78e16178d --- /dev/null +++ b/composer/src/Composer/Command/HomeCommand.php @@ -0,0 +1,167 @@ +setName('browse') +->setAliases(['home']) +->setDescription('Opens the package\'s repository URL or homepage in your browser') +->setDefinition([ +new InputArgument('packages', InputArgument::IS_ARRAY, 'Package(s) to browse to.', null, $this->suggestInstalledPackage()), +new InputOption('homepage', 'H', InputOption::VALUE_NONE, 'Open the homepage instead of the repository URL.'), +new InputOption('show', 's', InputOption::VALUE_NONE, 'Only show the homepage or repository URL.'), +]) +->setHelp( +<<initializeRepos(); +$io = $this->getIO(); +$return = 0; + +$packages = $input->getArgument('packages'); +if (count($packages) === 0) { +$io->writeError('No package specified, opening homepage for the root package'); +$packages = [$this->requireComposer()->getPackage()->getName()]; +} + +foreach ($packages as $packageName) { +$handled = false; +$packageExists = false; +foreach ($repos as $repo) { +foreach ($repo->findPackages($packageName) as $package) { +$packageExists = true; +if ($package instanceof CompletePackageInterface && $this->handlePackage($package, $input->getOption('homepage'), $input->getOption('show'))) { +$handled = true; +break 2; +} +} +} + +if (!$packageExists) { +$return = 1; +$io->writeError('Package '.$packageName.' not found'); +} + +if (!$handled) { +$return = 1; +$io->writeError(''.($input->getOption('homepage') ? 'Invalid or missing homepage' : 'Invalid or missing repository URL').' for '.$packageName.''); +} +} + +return $return; +} + +private function handlePackage(CompletePackageInterface $package, bool $showHomepage, bool $showOnly): bool +{ +$support = $package->getSupport(); +$url = $support['source'] ?? $package->getSourceUrl(); +if (!$url || $showHomepage) { +$url = $package->getHomepage(); +} + +if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) { +return false; +} + +if ($showOnly) { +$this->getIO()->write(sprintf('%s', $url)); +} else { +$this->openBrowser($url); +} + +return true; +} + + + + +private function openBrowser(string $url): void +{ +$url = ProcessExecutor::escape($url); + +$process = new ProcessExecutor($this->getIO()); +if (Platform::isWindows()) { +$process->execute('start "web" explorer ' . $url, $output); + +return; +} + +$linux = $process->execute('which xdg-open', $output); +$osx = $process->execute('which open', $output); + +if (0 === $linux) { +$process->execute('xdg-open ' . $url, $output); +} elseif (0 === $osx) { +$process->execute('open ' . $url, $output); +} else { +$this->getIO()->writeError('No suitable browser opening command found, open yourself: ' . $url); +} +} + + + + + + + + +private function initializeRepos(): array +{ +$composer = $this->tryComposer(); + +if ($composer) { +return array_merge( +[new RootPackageRepository(clone $composer->getPackage())], +[$composer->getRepositoryManager()->getLocalRepository()], +$composer->getRepositoryManager()->getRepositories() +); +} + +return RepositoryFactory::defaultReposWithDefaultManager($this->getIO()); +} +} diff --git a/composer/src/Composer/Command/InitCommand.php b/composer/src/Composer/Command/InitCommand.php new file mode 100644 index 000000000..db547eaaf --- /dev/null +++ b/composer/src/Composer/Command/InitCommand.php @@ -0,0 +1,636 @@ +setName('init') +->setDescription('Creates a basic composer.json file in current directory') +->setDefinition([ +new InputOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the package'), +new InputOption('description', null, InputOption::VALUE_REQUIRED, 'Description of package'), +new InputOption('author', null, InputOption::VALUE_REQUIRED, 'Author name of package'), +new InputOption('type', null, InputOption::VALUE_OPTIONAL, 'Type of package (e.g. library, project, metapackage, composer-plugin)'), +new InputOption('homepage', null, InputOption::VALUE_REQUIRED, 'Homepage of package'), +new InputOption('require', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"', null, $this->suggestAvailablePackageInclPlatform()), +new InputOption('require-dev', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require for development with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"', null, $this->suggestAvailablePackageInclPlatform()), +new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum stability (empty or one of: '.implode(', ', array_keys(BasePackage::$stabilities)).')'), +new InputOption('license', 'l', InputOption::VALUE_REQUIRED, 'License of package'), +new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories, either by URL or using JSON arrays'), +new InputOption('autoload', 'a', InputOption::VALUE_REQUIRED, 'Add PSR-4 autoload mapping. Maps your package\'s namespace to the provided directory. (Expects a relative path, e.g. src/)'), +]) +->setHelp( +<<init command creates a basic composer.json file +in the current directory. + +php composer.phar init + +Read more at https://getcomposer.org/doc/03-cli.md#init +EOT +) +; +} + + + + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$io = $this->getIO(); + +$allowlist = ['name', 'description', 'author', 'type', 'homepage', 'require', 'require-dev', 'stability', 'license', 'autoload']; +$options = array_filter(array_intersect_key($input->getOptions(), array_flip($allowlist))); + +if (isset($options['name']) && !Preg::isMatch('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $options['name'])) { +throw new \InvalidArgumentException( +'The package name '.$options['name'].' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' +); +} + +if (isset($options['author'])) { +$options['authors'] = $this->formatAuthors($options['author']); +unset($options['author']); +} + +$repositories = $input->getOption('repository'); +if (count($repositories) > 0) { +$config = Factory::createConfig($io); +foreach ($repositories as $repo) { +$options['repositories'][] = RepositoryFactory::configFromString($io, $config, $repo, true); +} +} + +if (isset($options['stability'])) { +$options['minimum-stability'] = $options['stability']; +unset($options['stability']); +} + +$options['require'] = isset($options['require']) ? $this->formatRequirements($options['require']) : new \stdClass; +if ([] === $options['require']) { +$options['require'] = new \stdClass; +} + +if (isset($options['require-dev'])) { +$options['require-dev'] = $this->formatRequirements($options['require-dev']); +if ([] === $options['require-dev']) { +$options['require-dev'] = new \stdClass; +} +} + + +$autoloadPath = null; +if (isset($options['autoload'])) { +$autoloadPath = $options['autoload']; +$namespace = $this->namespaceFromPackageName((string) $input->getOption('name')); +$options['autoload'] = (object) [ +'psr-4' => [ +$namespace . '\\' => $autoloadPath, +], +]; +} + +$file = new JsonFile(Factory::getComposerFile()); +$json = JsonFile::encode($options); + +if ($input->isInteractive()) { +$io->writeError(['', $json, '']); +if (!$io->askConfirmation('Do you confirm generation [yes]? ')) { +$io->writeError('Command aborted'); + +return 1; +} +} else { +if (json_encode($options) === '{"require":{}}') { +throw new \RuntimeException('You have to run this command in interactive mode, or specify at least some data using --name, --require, etc.'); +} + +$io->writeError('Writing '.$file->getPath()); +} + +$file->write($options); +try { +$file->validateSchema(JsonFile::LAX_SCHEMA); +} catch (JsonValidationException $e) { +$io->writeError('Schema validation error, aborting'); +$errors = ' - ' . implode(PHP_EOL . ' - ', $e->getErrors()); +$io->writeError($e->getMessage() . ':' . PHP_EOL . $errors); +Silencer::call('unlink', $file->getPath()); + +return 1; +} + + +if ($autoloadPath) { +$filesystem = new Filesystem(); +$filesystem->ensureDirectoryExists($autoloadPath); + + +if (!$this->hasDependencies($options)) { +$this->runDumpAutoloadCommand($output); +} +} + +if ($input->isInteractive() && is_dir('.git')) { +$ignoreFile = realpath('.gitignore'); + +if (false === $ignoreFile) { +$ignoreFile = realpath('.') . '/.gitignore'; +} + +if (!$this->hasVendorIgnore($ignoreFile)) { +$question = 'Would you like the vendor directory added to your .gitignore [yes]? '; + +if ($io->askConfirmation($question)) { +$this->addVendorIgnore($ignoreFile); +} +} +} + +$question = 'Would you like to install dependencies now [yes]? '; +if ($input->isInteractive() && $this->hasDependencies($options) && $io->askConfirmation($question)) { +$this->updateDependencies($output); +} + + +if ($autoloadPath) { +$namespace = $this->namespaceFromPackageName((string) $input->getOption('name')); + +$io->writeError('PSR-4 autoloading configured. Use "namespace '.$namespace.';" in '.$autoloadPath); +$io->writeError('Include the Composer autoloader with: require \'vendor/autoload.php\';'); +} + +return 0; +} + + + + + + +protected function interact(InputInterface $input, OutputInterface $output) +{ +$git = $this->getGitConfig(); +$io = $this->getIO(); + +$formatter = $this->getHelperSet()->get('formatter'); + + +$repositories = $input->getOption('repository'); +if (count($repositories) > 0) { +$config = Factory::createConfig($io); +$io->loadConfiguration($config); +$repoManager = RepositoryFactory::manager($io, $config); + +$repos = [new PlatformRepository]; +$createDefaultPackagistRepo = true; +foreach ($repositories as $repo) { +$repoConfig = RepositoryFactory::configFromString($io, $config, $repo, true); +if ( +(isset($repoConfig['packagist']) && $repoConfig === ['packagist' => false]) +|| (isset($repoConfig['packagist.org']) && $repoConfig === ['packagist.org' => false]) +) { +$createDefaultPackagistRepo = false; +continue; +} +$repos[] = RepositoryFactory::createRepo($io, $config, $repoConfig, $repoManager); +} + +if ($createDefaultPackagistRepo) { +$repos[] = RepositoryFactory::createRepo($io, $config, [ +'type' => 'composer', +'url' => 'https://repo.packagist.org', +], $repoManager); +} + +$this->repos = new CompositeRepository($repos); +unset($repos, $config, $repositories); +} + +$io->writeError([ +'', +$formatter->formatBlock('Welcome to the Composer config generator', 'bg=blue;fg=white', true), +'', +]); + + +$io->writeError([ +'', +'This command will guide you through creating your composer.json config.', +'', +]); + +$cwd = realpath("."); + +$name = $input->getOption('name'); +if (null === $name) { +$name = basename($cwd); +$name = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); +$name = strtolower($name); +if (!empty($_SERVER['COMPOSER_DEFAULT_VENDOR'])) { +$name = $_SERVER['COMPOSER_DEFAULT_VENDOR'] . '/' . $name; +} elseif (isset($git['github.user'])) { +$name = $git['github.user'] . '/' . $name; +} elseif (!empty($_SERVER['USERNAME'])) { +$name = $_SERVER['USERNAME'] . '/' . $name; +} elseif (!empty($_SERVER['USER'])) { +$name = $_SERVER['USER'] . '/' . $name; +} elseif (get_current_user()) { +$name = get_current_user() . '/' . $name; +} else { + +$name .= '/' . $name; +} +$name = strtolower($name); +} + +$name = $io->askAndValidate( +'Package name (/) ['.$name.']: ', +static function ($value) use ($name) { +if (null === $value) { +return $name; +} + +if (!Preg::isMatch('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $value)) { +throw new \InvalidArgumentException( +'The package name '.$value.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' +); +} + +return $value; +}, +null, +$name +); +$input->setOption('name', $name); + +$description = $input->getOption('description') ?: null; +$description = $io->ask( +'Description ['.$description.']: ', +$description +); +$input->setOption('description', $description); + +if (null === $author = $input->getOption('author')) { +if (!empty($_SERVER['COMPOSER_DEFAULT_AUTHOR'])) { +$author_name = $_SERVER['COMPOSER_DEFAULT_AUTHOR']; +} elseif (isset($git['user.name'])) { +$author_name = $git['user.name']; +} + +if (!empty($_SERVER['COMPOSER_DEFAULT_EMAIL'])) { +$author_email = $_SERVER['COMPOSER_DEFAULT_EMAIL']; +} elseif (isset($git['user.email'])) { +$author_email = $git['user.email']; +} + +if (isset($author_name, $author_email)) { +$author = sprintf('%s <%s>', $author_name, $author_email); +} +} + +$author = $io->askAndValidate( +'Author ['.(is_string($author) ? ''.$author.', ' : '') . 'n to skip]: ', +function ($value) use ($author) { +if ($value === 'n' || $value === 'no') { +return; +} +$value = $value ?: $author; +$author = $this->parseAuthorString($value ?? ''); + +if ($author['email'] === null) { +return $author['name']; +} + +return sprintf('%s <%s>', $author['name'], $author['email']); +}, +null, +$author +); +$input->setOption('author', $author); + +$minimumStability = $input->getOption('stability') ?: null; +$minimumStability = $io->askAndValidate( +'Minimum Stability ['.$minimumStability.']: ', +static function ($value) use ($minimumStability) { +if (null === $value) { +return $minimumStability; +} + +if (!isset(BasePackage::$stabilities[$value])) { +throw new \InvalidArgumentException( +'Invalid minimum stability "'.$value.'". Must be empty or one of: '. +implode(', ', array_keys(BasePackage::$stabilities)) +); +} + +return $value; +}, +null, +$minimumStability +); +$input->setOption('stability', $minimumStability); + +$type = $input->getOption('type') ?: false; +$type = $io->ask( +'Package Type (e.g. library, project, metapackage, composer-plugin) ['.$type.']: ', +$type +); +$input->setOption('type', $type); + +if (null === $license = $input->getOption('license')) { +if (!empty($_SERVER['COMPOSER_DEFAULT_LICENSE'])) { +$license = $_SERVER['COMPOSER_DEFAULT_LICENSE']; +} +} + +$license = $io->ask( +'License ['.$license.']: ', +$license +); +$input->setOption('license', $license); + +$io->writeError(['', 'Define your dependencies.', '']); + + +$repos = $this->getRepos(); +$preferredStability = $minimumStability ?: 'stable'; +$platformRepo = null; +if ($repos instanceof CompositeRepository) { +foreach ($repos->getRepositories() as $candidateRepo) { +if ($candidateRepo instanceof PlatformRepository) { +$platformRepo = $candidateRepo; +break; +} +} +} + +$question = 'Would you like to define your dependencies (require) interactively [yes]? '; +$require = $input->getOption('require'); +$requirements = []; +if (count($require) > 0 || $io->askConfirmation($question)) { +$requirements = $this->determineRequirements($input, $output, $require, $platformRepo, $preferredStability); +} +$input->setOption('require', $requirements); + +$question = 'Would you like to define your dev dependencies (require-dev) interactively [yes]? '; +$requireDev = $input->getOption('require-dev'); +$devRequirements = []; +if (count($requireDev) > 0 || $io->askConfirmation($question)) { +$devRequirements = $this->determineRequirements($input, $output, $requireDev, $platformRepo, $preferredStability); +} +$input->setOption('require-dev', $devRequirements); + + +$autoload = $input->getOption('autoload') ?: 'src/'; +$namespace = $this->namespaceFromPackageName((string) $input->getOption('name')); +$autoload = $io->askAndValidate( +'Add PSR-4 autoload mapping? Maps namespace "'.$namespace.'" to the entered relative path. ['.$autoload.', n to skip]: ', +static function ($value) use ($autoload) { +if (null === $value) { +return $autoload; +} + +if ($value === 'n' || $value === 'no') { +return; +} + +$value = $value ?: $autoload; + +if (!Preg::isMatch('{^[^/][A-Za-z0-9\-_/]+/$}', $value)) { +throw new \InvalidArgumentException(sprintf( +'The src folder name "%s" is invalid. Please add a relative path with tailing forward slash. [A-Za-z0-9_-/]+/', +$value +)); +} + +return $value; +}, +null, +$autoload +); +$input->setOption('autoload', $autoload); +} + + + + +private function parseAuthorString(string $author): array +{ +if (Preg::isMatch('/^(?P[- .,\p{L}\p{N}\p{Mn}\'’"()]+)(?:\s+<(?P.+?)>)?$/u', $author, $match)) { +assert(is_string($match['name'])); + +if (null !== $match['email'] && !$this->isValidEmail($match['email'])) { +throw new \InvalidArgumentException('Invalid email "'.$match['email'].'"'); +} + +return [ +'name' => trim($match['name']), +'email' => $match['email'], +]; +} + +throw new \InvalidArgumentException( +'Invalid author string. Must be in the formats: '. +'Jane Doe or John Smith ' +); +} + + + + +protected function formatAuthors(string $author): array +{ +$author = $this->parseAuthorString($author); +if (null === $author['email']) { +unset($author['email']); +} + +return [$author]; +} + + + + + + +public function namespaceFromPackageName(string $packageName): ?string +{ +if (!$packageName || strpos($packageName, '/') === false) { +return null; +} + +$namespace = array_map( +static function ($part): string { +$part = Preg::replace('/[^a-z0-9]/i', ' ', $part); +$part = ucwords($part); + +return str_replace(' ', '', $part); +}, +explode('/', $packageName) +); + +return implode('\\', $namespace); +} + + + + +protected function getGitConfig(): array +{ +if (null !== $this->gitConfig) { +return $this->gitConfig; +} + +$finder = new ExecutableFinder(); +$gitBin = $finder->find('git'); + +$cmd = new Process([$gitBin, 'config', '-l']); +$cmd->run(); + +if ($cmd->isSuccessful()) { +$this->gitConfig = []; +Preg::matchAllStrictGroups('{^([^=]+)=(.*)$}m', $cmd->getOutput(), $matches); +foreach ($matches[1] as $key => $match) { +$this->gitConfig[$match] = $matches[2][$key]; +} + +return $this->gitConfig; +} + +return $this->gitConfig = []; +} + + + + + + + + + + + + +protected function hasVendorIgnore(string $ignoreFile, string $vendor = 'vendor'): bool +{ +if (!file_exists($ignoreFile)) { +return false; +} + +$pattern = sprintf('{^/?%s(/\*?)?$}', preg_quote($vendor)); + +$lines = file($ignoreFile, FILE_IGNORE_NEW_LINES); +foreach ($lines as $line) { +if (Preg::isMatch($pattern, $line)) { +return true; +} +} + +return false; +} + +protected function addVendorIgnore(string $ignoreFile, string $vendor = '/vendor/'): void +{ +$contents = ""; +if (file_exists($ignoreFile)) { +$contents = file_get_contents($ignoreFile); + +if (strpos($contents, "\n") !== 0) { +$contents .= "\n"; +} +} + +file_put_contents($ignoreFile, $contents . $vendor. "\n"); +} + +protected function isValidEmail(string $email): bool +{ + +if (!function_exists('filter_var')) { +return true; +} + +return false !== filter_var($email, FILTER_VALIDATE_EMAIL); +} + +private function updateDependencies(OutputInterface $output): void +{ +try { +$updateCommand = $this->getApplication()->find('update'); +$this->getApplication()->resetComposer(); +$updateCommand->run(new ArrayInput([]), $output); +} catch (\Exception $e) { +$this->getIO()->writeError('Could not update dependencies. Run `composer update` to see more information.'); +} +} + +private function runDumpAutoloadCommand(OutputInterface $output): void +{ +try { +$command = $this->getApplication()->find('dump-autoload'); +$this->getApplication()->resetComposer(); +$command->run(new ArrayInput([]), $output); +} catch (\Exception $e) { +$this->getIO()->writeError('Could not run dump-autoload.'); +} +} + + + + +private function hasDependencies(array $options): bool +{ +$requires = (array) $options['require']; +$devRequires = isset($options['require-dev']) ? (array) $options['require-dev'] : []; + +return !empty($requires) || !empty($devRequires); +} +} diff --git a/composer/src/Composer/Command/InstallCommand.php b/composer/src/Composer/Command/InstallCommand.php new file mode 100644 index 000000000..c70905648 --- /dev/null +++ b/composer/src/Composer/Command/InstallCommand.php @@ -0,0 +1,148 @@ +setName('install') +->setAliases(['i']) +->setDescription('Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json') +->setDefinition([ +new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), +new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), +new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), +new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), +new InputOption('download-only', null, InputOption::VALUE_NONE, 'Download only, do not install packages.'), +new InputOption('dev', null, InputOption::VALUE_NONE, 'DEPRECATED: Enables installation of require-dev packages (enabled by default, only present for BC).'), +new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), +new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), +new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), +new InputOption('no-install', null, InputOption::VALUE_NONE, 'Do not use, only defined here to catch misuse of the install command.'), +new InputOption('audit', null, InputOption::VALUE_NONE, 'Run an audit after installation is complete.'), +new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), +new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), +new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), +new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), +new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), +new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), +new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Should not be provided, use composer require instead to add a given package to composer.json.'), +]) +->setHelp( +<<install command reads the composer.lock file from +the current directory, processes it, and downloads and installs all the +libraries and dependencies outlined in that file. If the file does not +exist it will look for composer.json and do the same. + +php composer.phar install + +Read more at https://getcomposer.org/doc/03-cli.md#install-i +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$io = $this->getIO(); +if ($input->getOption('dev')) { +$io->writeError('You are using the deprecated option "--dev". It has no effect and will break in Composer 3.'); +} +if ($input->getOption('no-suggest')) { +$io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); +} + +$args = $input->getArgument('packages'); +if (count($args) > 0) { +$io->writeError('Invalid argument '.implode(' ', $args).'. Use "composer require '.implode(' ', $args).'" instead to add packages to your composer.json.'); + +return 1; +} + +if ($input->getOption('no-install')) { +$io->writeError('Invalid option "--no-install". Use "composer update --no-install" instead if you are trying to update the composer.lock file.'); + +return 1; +} + +$composer = $this->requireComposer(); + +if (!$composer->getLocker()->isLocked() && !HttpDownloader::isCurlEnabled()) { +$io->writeError('Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.'); +} + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'install', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$install = Installer::create($io, $composer); + +$config = $composer->getConfig(); +[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); + +$optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); +$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); +$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); +$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); + +$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); + +$install +->setDryRun($input->getOption('dry-run')) +->setDownloadOnly($input->getOption('download-only')) +->setVerbose($input->getOption('verbose')) +->setPreferSource($preferSource) +->setPreferDist($preferDist) +->setDevMode(!$input->getOption('no-dev')) +->setDumpAutoloader(!$input->getOption('no-autoloader')) +->setOptimizeAutoloader($optimize) +->setClassMapAuthoritative($authoritative) +->setApcuAutoloader($apcu, $apcuPrefix) +->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) +->setAudit($input->getOption('audit')) +->setAuditFormat($this->getAuditFormat($input)) +; + +if ($input->getOption('no-plugins')) { +$install->disablePlugins(); +} + +return $install->run(); +} +} diff --git a/composer/src/Composer/Command/LicensesCommand.php b/composer/src/Composer/Command/LicensesCommand.php new file mode 100644 index 000000000..5512ef524 --- /dev/null +++ b/composer/src/Composer/Command/LicensesCommand.php @@ -0,0 +1,153 @@ +setName('licenses') +->setDescription('Shows information about licenses of dependencies') +->setDefinition([ +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text, json or summary', 'text', ['text', 'json', 'summary']), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), +]) +->setHelp( +<<requireComposer(); + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'licenses', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$root = $composer->getPackage(); +$repo = $composer->getRepositoryManager()->getLocalRepository(); + +if ($input->getOption('no-dev')) { +$packages = RepositoryUtils::filterRequiredPackages($repo->getPackages(), $root); +} else { +$packages = $repo->getPackages(); +} + +$packages = PackageSorter::sortPackagesAlphabetically($packages); +$io = $this->getIO(); + +switch ($format = $input->getOption('format')) { +case 'text': +$io->write('Name: '.$root->getPrettyName().''); +$io->write('Version: '.$root->getFullPrettyVersion().''); +$io->write('Licenses: '.(implode(', ', $root->getLicense()) ?: 'none').''); +$io->write('Dependencies:'); +$io->write(''); + +$table = new Table($output); +$table->setStyle('compact'); +$table->setHeaders(['Name', 'Version', 'Licenses']); +foreach ($packages as $package) { +$link = PackageInfo::getViewSourceOrHomepageUrl($package); +if ($link !== null) { +$name = ''.$package->getPrettyName().''; +} else { +$name = $package->getPrettyName(); +} + +$table->addRow([ +$name, +$package->getFullPrettyVersion(), +implode(', ', $package instanceof CompletePackageInterface ? $package->getLicense() : []) ?: 'none', +]); +} +$table->render(); +break; + +case 'json': +$dependencies = []; +foreach ($packages as $package) { +$dependencies[$package->getPrettyName()] = [ +'version' => $package->getFullPrettyVersion(), +'license' => $package instanceof CompletePackageInterface ? $package->getLicense() : [], +]; +} + +$io->write(JsonFile::encode([ +'name' => $root->getPrettyName(), +'version' => $root->getFullPrettyVersion(), +'license' => $root->getLicense(), +'dependencies' => $dependencies, +])); +break; + +case 'summary': +$usedLicenses = []; +foreach ($packages as $package) { +$licenses = $package instanceof CompletePackageInterface ? $package->getLicense() : []; +if (count($licenses) === 0) { +$licenses[] = 'none'; +} +foreach ($licenses as $licenseName) { +if (!isset($usedLicenses[$licenseName])) { +$usedLicenses[$licenseName] = 0; +} +$usedLicenses[$licenseName]++; +} +} + + +arsort($usedLicenses, SORT_NUMERIC); + +$rows = []; +foreach ($usedLicenses as $usedLicense => $numberOfDependencies) { +$rows[] = [$usedLicense, $numberOfDependencies]; +} + +$symfonyIo = new SymfonyStyle($input, $output); +$symfonyIo->table( +['License', 'Number of dependencies'], +$rows +); +break; +default: +throw new \RuntimeException(sprintf('Unsupported format "%s". See help for supported formats.', $format)); +} + +return 0; +} +} diff --git a/composer/src/Composer/Command/OutdatedCommand.php b/composer/src/Composer/Command/OutdatedCommand.php new file mode 100644 index 000000000..d77f76d30 --- /dev/null +++ b/composer/src/Composer/Command/OutdatedCommand.php @@ -0,0 +1,119 @@ +setName('outdated') +->setDescription('Shows a list of installed packages that have updates available, including their latest version') +->setDefinition([ +new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.', null, $this->suggestInstalledPackage(false)), +new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show only packages that are outdated (this is the default, but present here for compat with `show`'), +new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show all installed packages with their latest versions'), +new InputOption('locked', null, InputOption::VALUE_NONE, 'Shows updates for packages from the lock file, regardless of what is currently in vendor dir'), +new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), +new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), +new InputOption('major-only', 'M', InputOption::VALUE_NONE, 'Show only packages that have major SemVer-compatible updates.'), +new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates.'), +new InputOption('patch-only', 'p', InputOption::VALUE_NONE, 'Show only packages that have patch SemVer-compatible updates.'), +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), +new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it if you don\'t want to be informed about new versions of some packages.', null, $this->suggestInstalledPackage(false)), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages). Use with the --outdated option'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages). Use with the --outdated option'), +]) +->setHelp( +<<green (=): Dependency is in the latest version and is up to date. +- yellow (~): Dependency has a new version available that includes backwards + compatibility breaks according to semver, so upgrade when you can but it + may involve work. +- red (!): Dependency has a new version that is semver-compatible and you should upgrade it. + +Read more at https://getcomposer.org/doc/03-cli.md#outdated +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$args = [ +'command' => 'show', +'--latest' => true, +]; +if (!$input->getOption('all')) { +$args['--outdated'] = true; +} +if ($input->getOption('direct')) { +$args['--direct'] = true; +} +if (null !== $input->getArgument('package')) { +$args['package'] = $input->getArgument('package'); +} +if ($input->getOption('strict')) { +$args['--strict'] = true; +} +if ($input->getOption('major-only')) { +$args['--major-only'] = true; +} +if ($input->getOption('minor-only')) { +$args['--minor-only'] = true; +} +if ($input->getOption('patch-only')) { +$args['--patch-only'] = true; +} +if ($input->getOption('locked')) { +$args['--locked'] = true; +} +if ($input->getOption('no-dev')) { +$args['--no-dev'] = true; +} +$args['--ignore-platform-req'] = $input->getOption('ignore-platform-req'); +if ($input->getOption('ignore-platform-reqs')) { +$args['--ignore-platform-reqs'] = true; +} +$args['--format'] = $input->getOption('format'); +$args['--ignore'] = $input->getOption('ignore'); + +$input = new ArrayInput($args); + +return $this->getApplication()->run($input, $output); +} + + + + +public function isProxyCommand(): bool +{ +return true; +} +} diff --git a/composer/src/Composer/Command/PackageDiscoveryTrait.php b/composer/src/Composer/Command/PackageDiscoveryTrait.php new file mode 100644 index 000000000..5aa22bb72 --- /dev/null +++ b/composer/src/Composer/Command/PackageDiscoveryTrait.php @@ -0,0 +1,451 @@ +repos) { +$this->repos = new CompositeRepository(array_merge( +[new PlatformRepository], +RepositoryFactory::defaultReposWithDefaultManager($this->getIO()) +)); +} + +return $this->repos; +} + +private function getRepositorySet(InputInterface $input, ?string $minimumStability = null): RepositorySet +{ +$key = $minimumStability ?? 'default'; + +if (!isset($this->repositorySets[$key])) { +$this->repositorySets[$key] = $repositorySet = new RepositorySet($minimumStability ?? $this->getMinimumStability($input)); +$repositorySet->addRepository($this->getRepos()); +} + +return $this->repositorySets[$key]; +} + +private function getMinimumStability(InputInterface $input): string +{ +if ($input->hasOption('stability')) { +return VersionParser::normalizeStability($input->getOption('stability') ?? 'stable'); +} + + +$file = Factory::getComposerFile(); +if (is_file($file) && Filesystem::isReadable($file) && is_array($composer = json_decode((string) file_get_contents($file), true))) { +if (!empty($composer['minimum-stability'])) { +return VersionParser::normalizeStability($composer['minimum-stability']); +} +} + +return 'stable'; +} + + + + + + + +final protected function determineRequirements(InputInterface $input, OutputInterface $output, array $requires = [], ?PlatformRepository $platformRepo = null, string $preferredStability = 'stable', bool $useBestVersionConstraint = true, bool $fixed = false): array +{ +if (count($requires) > 0) { +$requires = $this->normalizeRequirements($requires); +$result = []; +$io = $this->getIO(); + +foreach ($requires as $requirement) { +if (isset($requirement['version']) && Preg::isMatch('{^\d+(\.\d+)?$}', $requirement['version'])) { +$io->writeError('The "'.$requirement['version'].'" constraint for "'.$requirement['name'].'" appears too strict and will likely not match what you want. See https://getcomposer.org/constraints'); +} + +if (!isset($requirement['version'])) { + +[$name, $version] = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $platformRepo, $preferredStability, $fixed); + + +$requirement['name'] = $name; + +if ($useBestVersionConstraint) { +$requirement['version'] = $version; +$io->writeError(sprintf( +'Using version %s for %s', +$requirement['version'], +$requirement['name'] +)); +} else { +$requirement['version'] = 'guess'; +} +} + +$result[] = $requirement['name'] . ' ' . $requirement['version']; +} + +return $result; +} + +$versionParser = new VersionParser(); + + +$composer = $this->tryComposer(); +$installedRepo = null; +if (null !== $composer) { +$installedRepo = $composer->getRepositoryManager()->getLocalRepository(); +} +$existingPackages = []; +if (null !== $installedRepo) { +foreach ($installedRepo->getPackages() as $package) { +$existingPackages[] = $package->getName(); +} +} +unset($composer, $installedRepo); + +$io = $this->getIO(); +while (null !== $package = $io->ask('Search for a package: ')) { +$matches = $this->getRepos()->search($package); + +if (count($matches) > 0) { + +foreach ($matches as $position => $foundPackage) { +if (in_array($foundPackage['name'], $existingPackages, true)) { +unset($matches[$position]); +} +} +$matches = array_values($matches); + +$exactMatch = false; +foreach ($matches as $match) { +if ($match['name'] === $package) { +$exactMatch = true; +break; +} +} + + +if (!$exactMatch) { +$providers = $this->getRepos()->getProviders($package); +if (count($providers) > 0) { +array_unshift($matches, ['name' => $package, 'description' => '']); +} + +$choices = []; +foreach ($matches as $position => $foundPackage) { +$abandoned = ''; +if (isset($foundPackage['abandoned'])) { +if (is_string($foundPackage['abandoned'])) { +$replacement = sprintf('Use %s instead', $foundPackage['abandoned']); +} else { +$replacement = 'No replacement was suggested'; +} +$abandoned = sprintf('Abandoned. %s.', $replacement); +} + +$choices[] = sprintf(' %5s %s %s', "[$position]", $foundPackage['name'], $abandoned); +} + +$io->writeError([ +'', +sprintf('Found %s packages matching %s', count($matches), $package), +'', +]); + +$io->writeError($choices); +$io->writeError(''); + +$validator = static function (string $selection) use ($matches, $versionParser) { +if ('' === $selection) { +return false; +} + +if (is_numeric($selection) && isset($matches[(int) $selection])) { +$package = $matches[(int) $selection]; + +return $package['name']; +} + +if (Preg::isMatch('{^\s*(?P[\S/]+)(?:\s+(?P\S+))?\s*$}', $selection, $packageMatches)) { +if (isset($packageMatches['version'])) { + + + +$versionParser->parseConstraints($packageMatches['version']); + +return $packageMatches['name'].' '.$packageMatches['version']; +} + + +return $packageMatches['name']; +} + +throw new \Exception('Not a valid selection'); +}; + +$package = $io->askAndValidate( +'Enter package # to add, or the complete package name if it is not listed: ', +$validator, +3, +'' +); +} + + +if (false !== $package && false === strpos($package, ' ')) { +$validator = static function (string $input) { +$input = trim($input); + +return strlen($input) > 0 ? $input : false; +}; + +$constraint = $io->askAndValidate( +'Enter the version constraint to require (or leave blank to use the latest version): ', +$validator, +3, +'' +); + +if (false === $constraint) { +[, $constraint] = $this->findBestVersionAndNameForPackage($input, $package, $platformRepo, $preferredStability); + +$io->writeError(sprintf( +'Using version %s for %s', +$constraint, +$package +)); +} + +$package .= ' '.$constraint; +} + +if (false !== $package) { +$requires[] = $package; +$existingPackages[] = explode(' ', $package)[0]; +} +} +} + +return $requires; +} + + + + + + + + + +private function findBestVersionAndNameForPackage(InputInterface $input, string $name, ?PlatformRepository $platformRepo = null, string $preferredStability = 'stable', bool $fixed = false): array +{ + +if ($input->hasOption('ignore-platform-reqs') && $input->hasOption('ignore-platform-req')) { +$platformRequirementFilter = $this->getPlatformRequirementFilter($input); +} else { +$platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); +} + + +$repoSet = $this->getRepositorySet($input); +$versionSelector = new VersionSelector($repoSet, $platformRepo); +$effectiveMinimumStability = $this->getMinimumStability($input); + +$package = $versionSelector->findBestCandidate($name, null, $preferredStability, $platformRequirementFilter, 0, $this->getIO()); + +if (false === $package) { + + +if ($platformRequirementFilter->isIgnored($name)) { +return [$name, '*']; +} + + +$providers = $repoSet->getProviders($name); +if (count($providers) > 0) { +$constraint = '*'; +if ($input->isInteractive()) { +$constraint = $this->getIO()->askAndValidate('Package "'.$name.'" does not exist but is provided by '.count($providers).' packages. Which version constraint would you like to use? [*] ', static function ($value) { +$parser = new VersionParser(); +$parser->parseConstraints($value); + +return $value; +}, 3, '*'); +} + +return [$name, $constraint]; +} + + +if (!($platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter) && false !== ($candidate = $versionSelector->findBestCandidate($name, null, $preferredStability, PlatformRequirementFilterFactory::ignoreAll()))) { +throw new \InvalidArgumentException(sprintf( +'Package %s has requirements incompatible with your PHP version, PHP extensions and Composer version' . $this->getPlatformExceptionDetails($candidate, $platformRepo), +$name +)); +} + +if (false !== ($package = $versionSelector->findBestCandidate($name, null, $preferredStability, $platformRequirementFilter, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES))) { + +if (false !== ($allReposPackage = $versionSelector->findBestCandidate($name, null, $preferredStability, $platformRequirementFilter, RepositorySet::ALLOW_SHADOWED_REPOSITORIES))) { +throw new \InvalidArgumentException( +'Package '.$name.' exists in '.$allReposPackage->getRepository()->getRepoName().' and '.$package->getRepository()->getRepoName().' which has a higher repository priority. The packages from the higher priority repository do not match your minimum-stability and are therefore not installable. That repository is canonical so the lower priority repo\'s packages are not installable. See https://getcomposer.org/repoprio for details and assistance.' +); +} + +throw new \InvalidArgumentException(sprintf( +'Could not find a version of package %s matching your minimum-stability (%s). Require it with an explicit version constraint allowing its desired stability.', +$name, +$effectiveMinimumStability +)); +} + +if (!$platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter && false !== ($candidate = $versionSelector->findBestCandidate($name, null, $preferredStability, PlatformRequirementFilterFactory::ignoreAll(), RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES))) { +$additional = ''; +if (false === $versionSelector->findBestCandidate($name, null, $preferredStability, PlatformRequirementFilterFactory::ignoreAll())) { +$additional = PHP_EOL.PHP_EOL.'Additionally, the package was only found with a stability of "'.$candidate->getStability().'" while your minimum stability is "'.$effectiveMinimumStability.'".'; +} + +throw new \InvalidArgumentException(sprintf( +'Could not find package %s in any version matching your PHP version, PHP extensions and Composer version' . $this->getPlatformExceptionDetails($candidate, $platformRepo) . '%s', +$name, +$additional +)); +} + + +$similar = $this->findSimilar($name); +if (count($similar) > 0) { +if (in_array($name, $similar, true)) { +throw new \InvalidArgumentException(sprintf( +"Could not find package %s. It was however found via repository search, which indicates a consistency issue with the repository.", +$name +)); +} + +throw new \InvalidArgumentException(sprintf( +"Could not find package %s.\n\nDid you mean " . (count($similar) > 1 ? 'one of these' : 'this') . "?\n %s", +$name, +implode("\n ", $similar) +)); +} + +throw new \InvalidArgumentException(sprintf( +'Could not find a matching version of package %s. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (%s).', +$name, +$effectiveMinimumStability +)); +} + +return [ +$package->getPrettyName(), +$fixed ? $package->getPrettyVersion() : $versionSelector->findRecommendedRequireVersion($package), +]; +} + + + + +private function findSimilar(string $package): array +{ +try { +if (null === $this->repos) { +throw new \LogicException('findSimilar was called before $this->repos was initialized'); +} +$results = $this->repos->search($package); +} catch (\Throwable $e) { +if ($e instanceof \LogicException) { +throw $e; +} + + +return []; +} +$similarPackages = []; + +$installedRepo = $this->requireComposer()->getRepositoryManager()->getLocalRepository(); + +foreach ($results as $result) { +if (null !== $installedRepo->findPackage($result['name'], '*')) { + +continue; +} +$similarPackages[$result['name']] = levenshtein($package, $result['name']); +} +asort($similarPackages); + +return array_keys(array_slice($similarPackages, 0, 5)); +} + +private function getPlatformExceptionDetails(PackageInterface $candidate, ?PlatformRepository $platformRepo = null): string +{ +$details = []; +if (null === $platformRepo) { +return ''; +} + +foreach ($candidate->getRequires() as $link) { +if (!PlatformRepository::isPlatformPackage($link->getTarget())) { +continue; +} +$platformPkg = $platformRepo->findPackage($link->getTarget(), '*'); +if (null === $platformPkg) { +if ($platformRepo->isPlatformPackageDisabled($link->getTarget())) { +$details[] = $candidate->getPrettyName().' '.$candidate->getPrettyVersion().' requires '.$link->getTarget().' '.$link->getPrettyConstraint().' but it is disabled by your platform config. Enable it again with "composer config platform.'.$link->getTarget().' --unset".'; +} else { +$details[] = $candidate->getPrettyName().' '.$candidate->getPrettyVersion().' requires '.$link->getTarget().' '.$link->getPrettyConstraint().' but it is not present.'; +} +continue; +} +if (!$link->getConstraint()->matches(new Constraint('==', $platformPkg->getVersion()))) { +$platformPkgVersion = $platformPkg->getPrettyVersion(); +$platformExtra = $platformPkg->getExtra(); +if (isset($platformExtra['config.platform']) && $platformPkg instanceof CompletePackageInterface) { +$platformPkgVersion .= ' ('.$platformPkg->getDescription().')'; +} +$details[] = $candidate->getPrettyName().' '.$candidate->getPrettyVersion().' requires '.$link->getTarget().' '.$link->getPrettyConstraint().' which does not match your installed version '.$platformPkgVersion.'.'; +} +} + +if (count($details) === 0) { +return ''; +} + +return ':'.PHP_EOL.' - ' . implode(PHP_EOL.' - ', $details); +} +} diff --git a/composer/src/Composer/Command/ProhibitsCommand.php b/composer/src/Composer/Command/ProhibitsCommand.php new file mode 100644 index 000000000..e432fce15 --- /dev/null +++ b/composer/src/Composer/Command/ProhibitsCommand.php @@ -0,0 +1,59 @@ +setName('prohibits') +->setAliases(['why-not']) +->setDescription('Shows which packages prevent the given package from being installed') +->setDefinition([ +new InputArgument(self::ARGUMENT_PACKAGE, InputArgument::REQUIRED, 'Package to inspect', null, $this->suggestAvailablePackage()), +new InputArgument(self::ARGUMENT_CONSTRAINT, InputArgument::REQUIRED, 'Version constraint, which version you expected to be installed'), +new InputOption(self::OPTION_RECURSIVE, 'r', InputOption::VALUE_NONE, 'Recursively resolves up to the root package'), +new InputOption(self::OPTION_TREE, 't', InputOption::VALUE_NONE, 'Prints the results as a nested tree'), +new InputOption('locked', null, InputOption::VALUE_NONE, 'Read dependency information from composer.lock'), +]) +->setHelp( +<<php composer.phar prohibits composer/composer + +Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +return parent::doExecute($input, $output, true); +} +} diff --git a/composer/src/Composer/Command/ReinstallCommand.php b/composer/src/Composer/Command/ReinstallCommand.php new file mode 100644 index 000000000..bd56ac2d3 --- /dev/null +++ b/composer/src/Composer/Command/ReinstallCommand.php @@ -0,0 +1,173 @@ +setName('reinstall') +->setDescription('Uninstalls and reinstalls the given package names') +->setDefinition([ +new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), +new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), +new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), +new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), +new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), +new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), +new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), +new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), +new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), +new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'List of package names to reinstall, can include a wildcard (*) to match any substring.', null, $this->suggestInstalledPackage(false)), +]) +->setHelp( +<<reinstall command looks up installed packages by name, +uninstalls them and reinstalls them. This lets you do a clean install +of a package if you messed with its files, or if you wish to change +the installation type using --prefer-install. + +php composer.phar reinstall acme/foo "acme/bar-*" + +Read more at https://getcomposer.org/doc/03-cli.md#reinstall +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$io = $this->getIO(); + +$composer = $this->requireComposer(); + +$localRepo = $composer->getRepositoryManager()->getLocalRepository(); +$packagesToReinstall = []; +$packageNamesToReinstall = []; +foreach ($input->getArgument('packages') as $pattern) { +$patternRegexp = BasePackage::packageNameToRegexp($pattern); +$matched = false; +foreach ($localRepo->getCanonicalPackages() as $package) { +if (Preg::isMatch($patternRegexp, $package->getName())) { +$matched = true; +$packagesToReinstall[] = $package; +$packageNamesToReinstall[] = $package->getName(); +} +} + +if (!$matched) { +$io->writeError('Pattern "' . $pattern . '" does not match any currently installed packages.'); +} +} + +if (!$packagesToReinstall) { +$io->writeError('Found no packages to reinstall, aborting.'); + +return 1; +} + +$uninstallOperations = []; +foreach ($packagesToReinstall as $package) { +$uninstallOperations[] = new UninstallOperation($package); +} + + +$presentPackages = $localRepo->getPackages(); +$resultPackages = $presentPackages; +foreach ($presentPackages as $index => $package) { +if (in_array($package->getName(), $packageNamesToReinstall, true)) { +unset($presentPackages[$index]); +} +} +$transaction = new Transaction($presentPackages, $resultPackages); +$installOperations = $transaction->getOperations(); + + +$installOrder = []; +foreach ($installOperations as $index => $op) { +if ($op instanceof InstallOperation && !$op->getPackage() instanceof AliasPackage) { +$installOrder[$op->getPackage()->getName()] = $index; +} +} +usort($uninstallOperations, static function ($a, $b) use ($installOrder): int { +return $installOrder[$b->getPackage()->getName()] - $installOrder[$a->getPackage()->getName()]; +}); + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'reinstall', $input, $output); +$eventDispatcher = $composer->getEventDispatcher(); +$eventDispatcher->dispatch($commandEvent->getName(), $commandEvent); + +$config = $composer->getConfig(); +[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); + +$installationManager = $composer->getInstallationManager(); +$downloadManager = $composer->getDownloadManager(); +$package = $composer->getPackage(); + +$installationManager->setOutputProgress(!$input->getOption('no-progress')); +if ($input->getOption('no-plugins')) { +$installationManager->disablePlugins(); +} + +$downloadManager->setPreferSource($preferSource); +$downloadManager->setPreferDist($preferDist); + +$devMode = $localRepo->getDevMode() !== null ? $localRepo->getDevMode() : true; + +Platform::putEnv('COMPOSER_DEV_MODE', $devMode ? '1' : '0'); +$eventDispatcher->dispatchScript(ScriptEvents::PRE_INSTALL_CMD, $devMode); + +$installationManager->execute($localRepo, $uninstallOperations, $devMode); +$installationManager->execute($localRepo, $installOperations, $devMode); + +if (!$input->getOption('no-autoloader')) { +$optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); +$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); +$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); +$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); + +$generator = $composer->getAutoloadGenerator(); +$generator->setClassMapAuthoritative($authoritative); +$generator->setApcu($apcu, $apcuPrefix); +$generator->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)); +$generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize); +} + +$eventDispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, $devMode); + +return 0; +} +} diff --git a/composer/src/Composer/Command/RemoveCommand.php b/composer/src/Composer/Command/RemoveCommand.php new file mode 100644 index 000000000..6bc55ea94 --- /dev/null +++ b/composer/src/Composer/Command/RemoveCommand.php @@ -0,0 +1,314 @@ +setName('remove') +->setDescription('Removes a package from the require or require-dev') +->setDefinition([ +new InputArgument('packages', InputArgument::IS_ARRAY, 'Packages that should be removed.', null, $this->suggestRootRequirement()), +new InputOption('dev', null, InputOption::VALUE_NONE, 'Removes a package from the require-dev section.'), +new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), +new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), +new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies (implies --no-install).'), +new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), +new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Skip the audit step after updating the composer.lock file (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), +new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), +new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), +new InputOption('update-with-dependencies', 'w', InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated with explicit dependencies. (Deprecated, is now default behavior)'), +new InputOption('update-with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), +new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-all-dependencies'), +new InputOption('no-update-with-dependencies', null, InputOption::VALUE_NONE, 'Does not allow inherited dependencies to be updated with explicit dependencies.'), +new InputOption('unused', null, InputOption::VALUE_NONE, 'Remove all packages which are locked but not required by any other package.'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), +new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), +new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), +new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), +new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), +]) +->setHelp( +<<remove command removes a package from the current +list of installed packages + +php composer.phar remove + +Read more at https://getcomposer.org/doc/03-cli.md#remove +EOT +) +; +} + + + + +protected function execute(InputInterface $input, OutputInterface $output) +{ +if ($input->getArgument('packages') === [] && !$input->getOption('unused')) { +throw new InvalidArgumentException('Not enough arguments (missing: "packages").'); +} + +$packages = $input->getArgument('packages'); +$packages = array_map('strtolower', $packages); + +if ($input->getOption('unused')) { +$composer = $this->requireComposer(); +$locker = $composer->getLocker(); +if (!$locker->isLocked()) { +throw new \UnexpectedValueException('A valid composer.lock file is required to run this command with --unused'); +} + +$lockedPackages = $locker->getLockedRepository()->getPackages(); + +$required = []; +foreach (array_merge($composer->getPackage()->getRequires(), $composer->getPackage()->getDevRequires()) as $link) { +$required[$link->getTarget()] = true; +} + +do { +$found = false; +foreach ($lockedPackages as $index => $package) { +foreach ($package->getNames() as $name) { +if (isset($required[$name])) { +foreach ($package->getRequires() as $link) { +$required[$link->getTarget()] = true; +} +$found = true; +unset($lockedPackages[$index]); +break; +} +} +} +} while ($found); + +$unused = []; +foreach ($lockedPackages as $package) { +$unused[] = $package->getName(); +} +$packages = array_merge($packages, $unused); + +if (count($packages) === 0) { +$this->getIO()->writeError('No unused packages to remove'); + +return 0; +} +} + +$file = Factory::getComposerFile(); + +$jsonFile = new JsonFile($file); + +$composer = $jsonFile->read(); +$composerBackup = file_get_contents($jsonFile->getPath()); + +$json = new JsonConfigSource($jsonFile); + +$type = $input->getOption('dev') ? 'require-dev' : 'require'; +$altType = !$input->getOption('dev') ? 'require-dev' : 'require'; +$io = $this->getIO(); + +if ($input->getOption('update-with-dependencies')) { +$io->writeError('You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies.'); +} + + +foreach (['require', 'require-dev'] as $linkType) { +if (isset($composer[$linkType])) { +foreach ($composer[$linkType] as $name => $version) { +$composer[$linkType][strtolower($name)] = $name; +} +} +} + +$dryRun = $input->getOption('dry-run'); +$toRemove = []; +foreach ($packages as $package) { +if (isset($composer[$type][$package])) { +if ($dryRun) { +$toRemove[$type][] = $composer[$type][$package]; +} else { +$json->removeLink($type, $composer[$type][$package]); +} +} elseif (isset($composer[$altType][$package])) { +$io->writeError('' . $composer[$altType][$package] . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); +if ($io->isInteractive()) { +if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ')) { +if ($dryRun) { +$toRemove[$altType][] = $composer[$altType][$package]; +} else { +$json->removeLink($altType, $composer[$altType][$package]); +} +} +} +} elseif (isset($composer[$type]) && count($matches = Preg::grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$type]))) > 0) { +foreach ($matches as $matchedPackage) { +if ($dryRun) { +$toRemove[$type][] = $matchedPackage; +} else { +$json->removeLink($type, $matchedPackage); +} +} +} elseif (isset($composer[$altType]) && count($matches = Preg::grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$altType]))) > 0) { +foreach ($matches as $matchedPackage) { +$io->writeError('' . $matchedPackage . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); +if ($io->isInteractive()) { +if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ')) { +if ($dryRun) { +$toRemove[$altType][] = $matchedPackage; +} else { +$json->removeLink($altType, $matchedPackage); +} +} +} +} +} else { +$io->writeError(''.$package.' is not required in your composer.json and has not been removed'); +} +} + +$io->writeError(''.$file.' has been updated'); + +if ($input->getOption('no-update')) { +return 0; +} + +if ($composer = $this->tryComposer()) { +$composer->getPluginManager()->deactivateInstalledPlugins(); +} + + +$this->resetComposer(); +$composer = $this->requireComposer(); + +if ($dryRun) { +$rootPackage = $composer->getPackage(); +$links = [ +'require' => $rootPackage->getRequires(), +'require-dev' => $rootPackage->getDevRequires(), +]; +foreach ($toRemove as $type => $names) { +foreach ($names as $name) { +unset($links[$type][$name]); +} +} +$rootPackage->setRequires($links['require']); +$rootPackage->setDevRequires($links['require-dev']); +} + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'remove', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$allowPlugins = $composer->getConfig()->get('allow-plugins'); +$removedPlugins = is_array($allowPlugins) ? array_intersect(array_keys($allowPlugins), $packages) : []; +if (!$dryRun && is_array($allowPlugins) && count($removedPlugins) > 0) { +if (count($allowPlugins) === count($removedPlugins)) { +$json->removeConfigSetting('allow-plugins'); +} else { +foreach ($removedPlugins as $plugin) { +$json->removeConfigSetting('allow-plugins.'.$plugin); +} +} +} + +$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); + +$install = Installer::create($io, $composer); + +$updateDevMode = !$input->getOption('update-no-dev'); +$optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); +$authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); +$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); +$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); + +$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; +$flags = ''; +if ($input->getOption('update-with-all-dependencies') || $input->getOption('with-all-dependencies')) { +$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; +$flags .= ' --with-all-dependencies'; +} elseif ($input->getOption('no-update-with-dependencies')) { +$updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; +$flags .= ' --with-dependencies'; +} + +$io->writeError('Running composer update '.implode(' ', $packages).$flags.''); + +$install +->setVerbose($input->getOption('verbose')) +->setDevMode($updateDevMode) +->setOptimizeAutoloader($optimize) +->setClassMapAuthoritative($authoritative) +->setApcuAutoloader($apcu, $apcuPrefix) +->setUpdate(true) +->setInstall(!$input->getOption('no-install')) +->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) +->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) +->setDryRun($dryRun) +->setAudit(!$input->getOption('no-audit')) +->setAuditFormat($this->getAuditFormat($input)) +; + + + +if ($composer->getLocker()->isLocked()) { +$install->setUpdateAllowList($packages); +} + +$status = $install->run(); +if ($status !== 0) { +$io->writeError("\n".'Removal failed, reverting '.$file.' to its original content.'); +file_put_contents($jsonFile->getPath(), $composerBackup); +} + +if (!$dryRun) { +foreach ($packages as $package) { +if ($composer->getRepositoryManager()->getLocalRepository()->findPackages($package)) { +$io->writeError('Removal failed, '.$package.' is still present, it may be required by another package. See `composer why '.$package.'`.'); + +return 2; +} +} +} + +return $status; +} +} diff --git a/composer/src/Composer/Command/RequireCommand.php b/composer/src/Composer/Command/RequireCommand.php new file mode 100644 index 000000000..8228df029 --- /dev/null +++ b/composer/src/Composer/Command/RequireCommand.php @@ -0,0 +1,635 @@ +setName('require') +->setAliases(['r']) +->setDescription('Adds required packages to your composer.json and installs them') +->setDefinition([ +new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Optional package name can also include a version constraint, e.g. foo/bar or foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"', null, $this->suggestAvailablePackageInclPlatform()), +new InputOption('dev', null, InputOption::VALUE_NONE, 'Add requirement to require-dev.'), +new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), +new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), +new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), +new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), +new InputOption('fixed', null, InputOption::VALUE_NONE, 'Write fixed version to the composer.json.'), +new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), +new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), +new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies (implies --no-install).'), +new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), +new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Skip the audit step after updating the composer.lock file (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), +new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), +new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), +new InputOption('update-with-dependencies', 'w', InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated, except those that are root requirements.'), +new InputOption('update-with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), +new InputOption('with-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-dependencies'), +new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-all-dependencies'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), +new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies (can also be set via the COMPOSER_PREFER_STABLE=1 env var).'), +new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies (can also be set via the COMPOSER_PREFER_LOWEST=1 env var).'), +new InputOption('sort-packages', null, InputOption::VALUE_NONE, 'Sorts packages when adding/updating a new dependency'), +new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), +new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), +new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), +new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), +]) +->setHelp( +<<file = Factory::getComposerFile(); +$io = $this->getIO(); + +if ($input->getOption('no-suggest')) { +$io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); +} + +$this->newlyCreated = !file_exists($this->file); +if ($this->newlyCreated && !file_put_contents($this->file, "{\n}\n")) { +$io->writeError(''.$this->file.' could not be created.'); + +return 1; +} +if (!Filesystem::isReadable($this->file)) { +$io->writeError(''.$this->file.' is not readable.'); + +return 1; +} + +if (filesize($this->file) === 0) { +file_put_contents($this->file, "{\n}\n"); +} + +$this->json = new JsonFile($this->file); +$this->lock = Factory::getLockFile($this->file); +$this->composerBackup = file_get_contents($this->json->getPath()); +$this->lockBackup = file_exists($this->lock) ? file_get_contents($this->lock) : null; + +$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) { +$this->getIO()->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); +$this->revertComposerFile(); +$handler->exitWithLastSignal(); +}); + + + +if (!is_writable($this->file) && false === Silencer::call('file_put_contents', $this->file, $this->composerBackup)) { +$io->writeError(''.$this->file.' is not writable.'); + +return 1; +} + +if ($input->getOption('fixed') === true) { +$config = $this->json->read(); + +$packageType = empty($config['type']) ? 'library' : $config['type']; + + + + +if ($packageType !== 'project' && !$input->getOption('dev')) { +$io->writeError('The "--fixed" option is only allowed for packages with a "project" type or for dev dependencies to prevent possible misuses.'); + +if (!isset($config['type'])) { +$io->writeError('If your package is not a library, you can explicitly specify the "type" by using "composer config type project".'); +} + +return 1; +} +} + +$composer = $this->requireComposer(); +$repos = $composer->getRepositoryManager()->getRepositories(); + +$platformOverrides = $composer->getConfig()->get('platform'); + +$this->repos = new CompositeRepository(array_merge( +[$platformRepo = new PlatformRepository([], $platformOverrides)], +$repos +)); + +if ($composer->getPackage()->getPreferStable()) { +$preferredStability = 'stable'; +} else { +$preferredStability = $composer->getPackage()->getMinimumStability(); +} + +try { +$requirements = $this->determineRequirements( +$input, +$output, +$input->getArgument('packages'), +$platformRepo, +$preferredStability, +$input->getOption('no-update'), +$input->getOption('fixed') +); +} catch (\Exception $e) { +if ($this->newlyCreated) { +$this->revertComposerFile(); + +throw new \RuntimeException('No composer.json present in the current directory ('.$this->file.'), this may be the cause of the following exception.', 0, $e); +} + +throw $e; +} + +$requirements = $this->formatRequirements($requirements); + +if (!$input->getOption('dev') && $io->isInteractive()) { +$devPackages = []; +$devTags = ['dev', 'testing', 'static analysis']; +$currentRequiresByKey = $this->getPackagesByRequireKey(); +foreach ($requirements as $name => $version) { + +if (isset($currentRequiresByKey[$name])) { +continue; +} + +$pkg = PackageSorter::getMostCurrentVersion($this->getRepos()->findPackages($name)); +if ($pkg instanceof CompletePackageInterface) { +$pkgDevTags = array_intersect($devTags, array_map('strtolower', $pkg->getKeywords())); +if (count($pkgDevTags) > 0) { +$devPackages[] = $pkgDevTags; +} +} +} + +if (count($devPackages) === count($requirements)) { +$plural = count($requirements) > 1 ? 's' : ''; +$plural2 = count($requirements) > 1 ? 'are' : 'is'; +$plural3 = count($requirements) > 1 ? 'they are' : 'it is'; +$pkgDevTags = array_unique(array_merge(...$devPackages)); +$io->warning('The package'.$plural.' you required '.$plural2.' recommended to be placed in require-dev (because '.$plural3.' tagged as "'.implode('", "', $pkgDevTags).'") but you did not use --dev.'); +if ($io->askConfirmation('Do you want to re-run the command with --dev? [yes]? ')) { +$input->setOption('dev', true); +} +} + +unset($devPackages, $pkgDevTags); +} + +$requireKey = $input->getOption('dev') ? 'require-dev' : 'require'; +$removeKey = $input->getOption('dev') ? 'require' : 'require-dev'; + + +$requirementsToGuess = []; +foreach ($requirements as $package => $constraint) { +if ($constraint === 'guess') { +$requirements[$package] = '*'; +$requirementsToGuess[] = $package; +} +} + + +$versionParser = new VersionParser(); +foreach ($requirements as $package => $constraint) { +if (strtolower($package) === $composer->getPackage()->getName()) { +$io->writeError(sprintf('Root package \'%s\' cannot require itself in its composer.json', $package)); + +return 1; +} +if ($constraint === 'self.version') { +continue; +} +$versionParser->parseConstraints($constraint); +} + +$inconsistentRequireKeys = $this->getInconsistentRequireKeys($requirements, $requireKey); +if (count($inconsistentRequireKeys) > 0) { +foreach ($inconsistentRequireKeys as $package) { +$io->warning(sprintf( +'%s is currently present in the %s key and you ran the command %s the --dev flag, which will move it to the %s key.', +$package, +$removeKey, +$input->getOption('dev') ? 'with' : 'without', +$requireKey +)); +} + +if ($io->isInteractive()) { +if (!$io->askConfirmation(sprintf('Do you want to move %s? [no]? ', count($inconsistentRequireKeys) > 1 ? 'these requirements' : 'this requirement'), false)) { +if (!$io->askConfirmation(sprintf('Do you want to re-run the command %s --dev? [yes]? ', $input->getOption('dev') ? 'without' : 'with'), true)) { +return 0; +} + +$input->setOption('dev', true); +[$requireKey, $removeKey] = [$removeKey, $requireKey]; +} +} +} + +$sortPackages = $input->getOption('sort-packages') || $composer->getConfig()->get('sort-packages'); + +$this->firstRequire = $this->newlyCreated; +if (!$this->firstRequire) { +$composerDefinition = $this->json->read(); +if (count($composerDefinition['require'] ?? []) === 0 && count($composerDefinition['require-dev'] ?? []) === 0) { +$this->firstRequire = true; +} +} + +if (!$input->getOption('dry-run')) { +$this->updateFile($this->json, $requirements, $requireKey, $removeKey, $sortPackages); +} + +$io->writeError(''.$this->file.' has been '.($this->newlyCreated ? 'created' : 'updated').''); + +if ($input->getOption('no-update')) { +return 0; +} + +$composer->getPluginManager()->deactivateInstalledPlugins(); + +try { +$result = $this->doUpdate($input, $output, $io, $requirements, $requireKey, $removeKey); +if ($result === 0 && count($requirementsToGuess) > 0) { +$result = $this->updateRequirementsAfterResolution($requirementsToGuess, $requireKey, $removeKey, $sortPackages, $input->getOption('dry-run'), $input->getOption('fixed')); +} + +return $result; +} catch (\Exception $e) { +if (!$this->dependencyResolutionCompleted) { +$this->revertComposerFile(); +} +throw $e; +} finally { +$signalHandler->unregister(); +} +} + + + + + +private function getInconsistentRequireKeys(array $newRequirements, string $requireKey): array +{ +$requireKeys = $this->getPackagesByRequireKey(); +$inconsistentRequirements = []; +foreach ($requireKeys as $package => $packageRequireKey) { +if (!isset($newRequirements[$package])) { +continue; +} +if ($requireKey !== $packageRequireKey) { +$inconsistentRequirements[] = $package; +} +} + +return $inconsistentRequirements; +} + + + + +private function getPackagesByRequireKey(): array +{ +$composerDefinition = $this->json->read(); +$require = []; +$requireDev = []; + +if (isset($composerDefinition['require'])) { +$require = $composerDefinition['require']; +} + +if (isset($composerDefinition['require-dev'])) { +$requireDev = $composerDefinition['require-dev']; +} + +return array_merge( +array_fill_keys(array_keys($require), 'require'), +array_fill_keys(array_keys($requireDev), 'require-dev') +); +} + + + + + +private function doUpdate(InputInterface $input, OutputInterface $output, IOInterface $io, array $requirements, string $requireKey, string $removeKey): int +{ + +$this->resetComposer(); +$composer = $this->requireComposer(); + +$this->dependencyResolutionCompleted = false; +$composer->getEventDispatcher()->addListener(InstallerEvents::PRE_OPERATIONS_EXEC, function (): void { +$this->dependencyResolutionCompleted = true; +}, 10000); + +if ($input->getOption('dry-run')) { +$rootPackage = $composer->getPackage(); +$links = [ +'require' => $rootPackage->getRequires(), +'require-dev' => $rootPackage->getDevRequires(), +]; +$loader = new ArrayLoader(); +$newLinks = $loader->parseLinks($rootPackage->getName(), $rootPackage->getPrettyVersion(), BasePackage::$supportedLinkTypes[$requireKey]['method'], $requirements); +$links[$requireKey] = array_merge($links[$requireKey], $newLinks); +foreach ($requirements as $package => $constraint) { +unset($links[$removeKey][$package]); +} +$rootPackage->setRequires($links['require']); +$rootPackage->setDevRequires($links['require-dev']); + + +$references = $rootPackage->getReferences(); +$references = RootPackageLoader::extractReferences($requirements, $references); +$rootPackage->setReferences($references); +$stabilityFlags = $rootPackage->getStabilityFlags(); +$stabilityFlags = RootPackageLoader::extractStabilityFlags($requirements, $rootPackage->getMinimumStability(), $stabilityFlags); +$rootPackage->setStabilityFlags($stabilityFlags); +unset($stabilityFlags, $references); +} + +$updateDevMode = !$input->getOption('update-no-dev'); +$optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); +$authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); +$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); +$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); + +$updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; +$flags = ''; +if ($input->getOption('update-with-all-dependencies') || $input->getOption('with-all-dependencies')) { +$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; +$flags .= ' --with-all-dependencies'; +} elseif ($input->getOption('update-with-dependencies') || $input->getOption('with-dependencies')) { +$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; +$flags .= ' --with-dependencies'; +} + +$io->writeError('Running composer update '.implode(' ', array_keys($requirements)).$flags.''); + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'require', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); + +$install = Installer::create($io, $composer); + +[$preferSource, $preferDist] = $this->getPreferredInstallOptions($composer->getConfig(), $input); + +$install +->setDryRun($input->getOption('dry-run')) +->setVerbose($input->getOption('verbose')) +->setPreferSource($preferSource) +->setPreferDist($preferDist) +->setDevMode($updateDevMode) +->setOptimizeAutoloader($optimize) +->setClassMapAuthoritative($authoritative) +->setApcuAutoloader($apcu, $apcuPrefix) +->setUpdate(true) +->setInstall(!$input->getOption('no-install')) +->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) +->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) +->setPreferStable($input->getOption('prefer-stable')) +->setPreferLowest($input->getOption('prefer-lowest')) +->setAudit(!$input->getOption('no-audit')) +->setAuditFormat($this->getAuditFormat($input)) +; + + + +if (!$this->firstRequire && $composer->getLocker()->isLocked()) { +$install->setUpdateAllowList(array_keys($requirements)); +} + +$status = $install->run(); +if ($status !== 0) { +if ($status === Installer::ERROR_DEPENDENCY_RESOLUTION_FAILED) { +foreach ($this->normalizeRequirements($input->getArgument('packages')) as $req) { +if (!isset($req['version'])) { +$io->writeError('You can also try re-running composer require with an explicit version constraint, e.g. "composer require '.$req['name'].':*" to figure out if any version is installable, or "composer require '.$req['name'].':^2.1" if you know which you need.'); +break; +} +} +} +$this->revertComposerFile(); +} + +return $status; +} + + + + +private function updateRequirementsAfterResolution(array $requirementsToUpdate, string $requireKey, string $removeKey, bool $sortPackages, bool $dryRun, bool $fixed): int +{ +$composer = $this->requireComposer(); +$locker = $composer->getLocker(); +$requirements = []; +$versionSelector = new VersionSelector(new RepositorySet()); +$repo = $locker->isLocked() ? $composer->getLocker()->getLockedRepository(true) : $composer->getRepositoryManager()->getLocalRepository(); +foreach ($requirementsToUpdate as $packageName) { +$package = $repo->findPackage($packageName, '*'); +while ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} + +if (!$package instanceof PackageInterface) { +continue; +} + +if ($fixed) { +$requirements[$packageName] = $package->getPrettyVersion(); +} else { +$requirements[$packageName] = $versionSelector->findRecommendedRequireVersion($package); +} +$this->getIO()->writeError(sprintf( +'Using version %s for %s', +$requirements[$packageName], +$packageName +)); + +if (Preg::isMatch('{^dev-(?!main$|master$|trunk$|latest$)}', $requirements[$packageName])) { +$this->getIO()->warning('Version '.$requirements[$packageName].' looks like it may be a feature branch which is unlikely to keep working in the long run and may be in an unstable state'); +if ($this->getIO()->isInteractive() && !$this->getIO()->askConfirmation('Are you sure you want to use this constraint (Y) or would you rather abort (n) the whole operation [Y,n]? ')) { +$this->revertComposerFile(); + +return 1; +} +} +} + +if (!$dryRun) { +$this->updateFile($this->json, $requirements, $requireKey, $removeKey, $sortPackages); +if ($locker->isLocked()) { +$contents = file_get_contents($this->json->getPath()); +if (false === $contents) { +throw new \RuntimeException('Unable to read '.$this->json->getPath().' contents to update the lock file hash.'); +} +$lock = new JsonFile(Factory::getLockFile($this->json->getPath())); +$lockData = $lock->read(); +$lockData['content-hash'] = Locker::getContentHash($contents); +$lock->write($lockData); +} +} + +return 0; +} + + + + +private function updateFile(JsonFile $json, array $new, string $requireKey, string $removeKey, bool $sortPackages): void +{ +if ($this->updateFileCleanly($json, $new, $requireKey, $removeKey, $sortPackages)) { +return; +} + +$composerDefinition = $this->json->read(); +foreach ($new as $package => $version) { +$composerDefinition[$requireKey][$package] = $version; +unset($composerDefinition[$removeKey][$package]); +if (isset($composerDefinition[$removeKey]) && count($composerDefinition[$removeKey]) === 0) { +unset($composerDefinition[$removeKey]); +} +} +$this->json->write($composerDefinition); +} + + + + +private function updateFileCleanly(JsonFile $json, array $new, string $requireKey, string $removeKey, bool $sortPackages): bool +{ +$contents = file_get_contents($json->getPath()); + +$manipulator = new JsonManipulator($contents); + +foreach ($new as $package => $constraint) { +if (!$manipulator->addLink($requireKey, $package, $constraint, $sortPackages)) { +return false; +} +if (!$manipulator->removeSubNode($removeKey, $package)) { +return false; +} +} + +$manipulator->removeMainKeyIfEmpty($removeKey); + +file_put_contents($json->getPath(), $manipulator->getContents()); + +return true; +} + +protected function interact(InputInterface $input, OutputInterface $output): void +{ +} + +private function revertComposerFile(): void +{ +$io = $this->getIO(); + +if ($this->newlyCreated) { +$io->writeError("\n".'Installation failed, deleting '.$this->file.'.'); +unlink($this->json->getPath()); +if (file_exists($this->lock)) { +unlink($this->lock); +} +} else { +$msg = ' to its '; +if ($this->lockBackup) { +$msg = ' and '.$this->lock.' to their '; +} +$io->writeError("\n".'Installation failed, reverting '.$this->file.$msg.'original content.'); +file_put_contents($this->json->getPath(), $this->composerBackup); +if ($this->lockBackup) { +file_put_contents($this->lock, $this->lockBackup); +} +} +} +} diff --git a/composer/src/Composer/Command/RunScriptCommand.php b/composer/src/Composer/Command/RunScriptCommand.php new file mode 100644 index 000000000..5715d7bf0 --- /dev/null +++ b/composer/src/Composer/Command/RunScriptCommand.php @@ -0,0 +1,187 @@ +setName('run-script') +->setAliases(['run']) +->setDescription('Runs the scripts defined in composer.json') +->setDefinition([ +new InputArgument('script', InputArgument::OPTIONAL, 'Script name to run.', null, function () { +return array_map(static function ($script) { return $script['name']; }, $this->getScripts()); +}), +new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), +new InputOption('timeout', null, InputOption::VALUE_REQUIRED, 'Sets script timeout in seconds, or 0 for never.'), +new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), +new InputOption('list', 'l', InputOption::VALUE_NONE, 'List scripts.'), +]) +->setHelp( +<<run-script command runs scripts defined in composer.json: + +php composer.phar run-script post-update-cmd + +Read more at https://getcomposer.org/doc/03-cli.md#run-script-run +EOT +) +; +} + +protected function interact(InputInterface $input, OutputInterface $output): void +{ +$scripts = $this->getScripts(); +if (count($scripts) === 0) { +return; +} + +if ($input->getArgument('script') !== null || $input->getOption('list')) { +return; +} + +$options = []; +foreach ($scripts as $script) { +$options[$script['name']] = $script['description']; +} +$io = $this->getIO(); +$script = $io->select( +'Script to run: ', +$options, +'', +1, +'Invalid script name "%s"' +); + +$input->setArgument('script', $script); +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +if ($input->getOption('list')) { +return $this->listScripts($output); +} + +$script = $input->getArgument('script'); +if ($script === null) { +throw new \RuntimeException('Missing required argument "script"'); +} + +if (!in_array($script, $this->scriptEvents)) { +if (defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { +throw new \InvalidArgumentException(sprintf('Script "%s" cannot be run with this command', $script)); +} +} + +$composer = $this->requireComposer(); +$devMode = $input->getOption('dev') || !$input->getOption('no-dev'); +$event = new ScriptEvent($script, $composer, $this->getIO(), $devMode); +$hasListeners = $composer->getEventDispatcher()->hasEventListeners($event); +if (!$hasListeners) { +throw new \InvalidArgumentException(sprintf('Script "%s" is not defined in this package', $script)); +} + +$args = $input->getArgument('args'); + +if (null !== $timeout = $input->getOption('timeout')) { +if (!ctype_digit($timeout)) { +throw new \RuntimeException('Timeout value must be numeric and positive if defined, or 0 for forever'); +} + +ProcessExecutor::setTimeout((int) $timeout); +} + +Platform::putEnv('COMPOSER_DEV_MODE', $devMode ? '1' : '0'); + +return $composer->getEventDispatcher()->dispatchScript($script, $devMode, $args); +} + +protected function listScripts(OutputInterface $output): int +{ +$scripts = $this->getScripts(); +if (count($scripts) === 0) { +return 0; +} + +$io = $this->getIO(); +$io->writeError('scripts:'); +$table = []; +foreach ($scripts as $script) { +$table[] = [' '.$script['name'], $script['description']]; +} + +$this->renderTable($table, $output); + +return 0; +} + + + + +private function getScripts(): array +{ +$scripts = $this->requireComposer()->getPackage()->getScripts(); +if (count($scripts) === 0) { +return []; +} + +$result = []; +foreach ($scripts as $name => $script) { +$description = ''; +try { +$cmd = $this->getApplication()->find($name); +if ($cmd instanceof ScriptAliasCommand) { +$description = $cmd->getDescription(); +} +} catch (\Symfony\Component\Console\Exception\CommandNotFoundException $e) { + +} +$result[] = ['name' => $name, 'description' => $description]; +} + +return $result; +} +} diff --git a/composer/src/Composer/Command/ScriptAliasCommand.php b/composer/src/Composer/Command/ScriptAliasCommand.php new file mode 100644 index 000000000..93b39bebb --- /dev/null +++ b/composer/src/Composer/Command/ScriptAliasCommand.php @@ -0,0 +1,76 @@ +script = $script; +$this->description = $description ?? 'Runs the '.$script.' script as defined in composer.json'; + +$this->ignoreValidationErrors(); + +parent::__construct(); +} + +protected function configure(): void +{ +$this +->setName($this->script) +->setDescription($this->description) +->setDefinition([ +new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), +new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), +]) +->setHelp( +<<run-script command runs scripts defined in composer.json: + +php composer.phar run-script post-update-cmd + +Read more at https://getcomposer.org/doc/03-cli.md#run-script-run +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$composer = $this->requireComposer(); + +$args = $input->getArguments(); + + +if (!method_exists($input, '__toString')) { +throw new \LogicException('Expected an Input instance that is stringable, got '.get_class($input)); +} + +return $composer->getEventDispatcher()->dispatchScript($this->script, $input->getOption('dev') || !$input->getOption('no-dev'), $args['args'], ['script-alias-input' => Preg::replace('{^\S+ ?}', '', $input->__toString(), 1)]); +} +} diff --git a/composer/src/Composer/Command/SearchCommand.php b/composer/src/Composer/Command/SearchCommand.php new file mode 100644 index 000000000..808b6780b --- /dev/null +++ b/composer/src/Composer/Command/SearchCommand.php @@ -0,0 +1,127 @@ +setName('search') +->setDescription('Searches for packages') +->setDefinition([ +new InputOption('only-name', 'N', InputOption::VALUE_NONE, 'Search only in package names'), +new InputOption('only-vendor', 'O', InputOption::VALUE_NONE, 'Search only for vendor / organization names, returns only "vendor" as result'), +new InputOption('type', 't', InputOption::VALUE_REQUIRED, 'Search for a specific package type'), +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), +new InputArgument('tokens', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'tokens to search for'), +]) +->setHelp( +<<php composer.phar search symfony composer + +Read more at https://getcomposer.org/doc/03-cli.md#search +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ + +$platformRepo = new PlatformRepository; +$io = $this->getIO(); + +$format = $input->getOption('format'); +if (!in_array($format, ['text', 'json'])) { +$io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); + +return 1; +} + +if (!($composer = $this->tryComposer())) { +$composer = Factory::create($this->getIO(), [], $input->hasParameterOption('--no-plugins')); +} +$localRepo = $composer->getRepositoryManager()->getLocalRepository(); +$installedRepo = new CompositeRepository([$localRepo, $platformRepo]); +$repos = new CompositeRepository(array_merge([$installedRepo], $composer->getRepositoryManager()->getRepositories())); + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'search', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$mode = RepositoryInterface::SEARCH_FULLTEXT; +if ($input->getOption('only-name') === true) { +if ($input->getOption('only-vendor') === true) { +throw new \InvalidArgumentException('--only-name and --only-vendor cannot be used together'); +} +$mode = RepositoryInterface::SEARCH_NAME; +} elseif ($input->getOption('only-vendor') === true) { +$mode = RepositoryInterface::SEARCH_VENDOR; +} + +$type = $input->getOption('type'); + +$query = implode(' ', $input->getArgument('tokens')); +if ($mode !== RepositoryInterface::SEARCH_FULLTEXT) { +$query = preg_quote($query); +} + +$results = $repos->search($query, $mode, $type); + +if (\count($results) > 0 && $format === 'text') { +$width = $this->getTerminalWidth(); + +$nameLength = 0; +foreach ($results as $result) { +$nameLength = max(strlen($result['name']), $nameLength); +} +$nameLength += 1; +foreach ($results as $result) { +$description = $result['description'] ?? ''; +$warning = !empty($result['abandoned']) ? '! Abandoned ! ' : ''; +$remaining = $width - $nameLength - strlen($warning) - 2; +if (strlen($description) > $remaining) { +$description = substr($description, 0, $remaining - 3) . '...'; +} + +$link = $result['url'] ?? null; +if ($link !== null) { +$io->write(''.$result['name'].''. str_repeat(' ', $nameLength - strlen($result['name'])) . $warning . $description); +} else { +$io->write(str_pad($result['name'], $nameLength, ' ') . $warning . $description); +} +} +} elseif ($format === 'json') { +$io->write(JsonFile::encode($results)); +} + +return 0; +} +} diff --git a/composer/src/Composer/Command/SelfUpdateCommand.php b/composer/src/Composer/Command/SelfUpdateCommand.php new file mode 100644 index 000000000..85beba9e7 --- /dev/null +++ b/composer/src/Composer/Command/SelfUpdateCommand.php @@ -0,0 +1,640 @@ +setName('self-update') +->setAliases(['selfupdate']) +->setDescription('Updates composer.phar to the latest version') +->setDefinition([ +new InputOption('rollback', 'r', InputOption::VALUE_NONE, 'Revert to an older installation of composer'), +new InputOption('clean-backups', null, InputOption::VALUE_NONE, 'Delete old backups during an update. This makes the current version of composer the only backup available after the update'), +new InputArgument('version', InputArgument::OPTIONAL, 'The version to update to'), +new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), +new InputOption('update-keys', null, InputOption::VALUE_NONE, 'Prompt user for a key update'), +new InputOption('stable', null, InputOption::VALUE_NONE, 'Force an update to the stable channel'), +new InputOption('preview', null, InputOption::VALUE_NONE, 'Force an update to the preview channel'), +new InputOption('snapshot', null, InputOption::VALUE_NONE, 'Force an update to the snapshot channel'), +new InputOption('1', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 1.x versions'), +new InputOption('2', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 2.x versions'), +new InputOption('2.2', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 2.2.x LTS versions'), +new InputOption('set-channel-only', null, InputOption::VALUE_NONE, 'Only store the channel as the default one and then exit'), +]) +->setHelp( +<<self-update command checks getcomposer.org for newer +versions of composer and if found, installs the latest. + +php composer.phar self-update + +Read more at https://getcomposer.org/doc/03-cli.md#self-update-selfupdate +EOT +) +; +} + + + + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +if ($_SERVER['argv'][0] === 'Standard input code') { +return 1; +} + + + +class_exists('Composer\Util\Platform'); +class_exists('Composer\Downloader\FilesystemException'); + +$config = Factory::createConfig(); + +if ($config->get('disable-tls') === true) { +$baseUrl = 'http://' . self::HOMEPAGE; +} else { +$baseUrl = 'https://' . self::HOMEPAGE; +} + +$io = $this->getIO(); +$httpDownloader = Factory::createHttpDownloader($io, $config); + +$versionsUtil = new Versions($config, $httpDownloader); + + +$requestedChannel = null; +foreach (Versions::CHANNELS as $channel) { +if ($input->getOption($channel)) { +$requestedChannel = $channel; +$versionsUtil->setChannel($channel, $io); +break; +} +} + +if ($input->getOption('set-channel-only')) { +return 0; +} + +$cacheDir = $config->get('cache-dir'); +$rollbackDir = $config->get('data-dir'); +$home = $config->get('home'); +$localFilename = realpath($_SERVER['argv'][0]); +if (false === $localFilename) { +$localFilename = $_SERVER['argv'][0]; +} + +if ($input->getOption('update-keys')) { +$this->fetchKeys($io, $config); + +return 0; +} + + +if (!file_exists($localFilename)) { +throw new FilesystemException('Composer update failed: the "'.$localFilename.'" is not accessible'); +} + + +$tmpDir = is_writable(dirname($localFilename)) ? dirname($localFilename) : $cacheDir; + + +if (!is_writable($tmpDir)) { +throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); +} + + +if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { +$composerUser = posix_getpwuid(posix_geteuid()); +$homeDirOwnerId = fileowner($home); +if (is_array($composerUser) && $homeDirOwnerId !== false) { +$homeOwner = posix_getpwuid($homeDirOwnerId); +if (is_array($homeOwner) && isset($composerUser['name'], $homeOwner['name']) && $composerUser['name'] !== $homeOwner['name']) { +$io->writeError('You are running Composer as "'.$composerUser['name'].'", while "'.$home.'" is owned by "'.$homeOwner['name'].'"'); +} +} +} + +if ($input->getOption('rollback')) { +return $this->rollback($output, $rollbackDir, $localFilename); +} + +$latest = $versionsUtil->getLatest(); +$latestStable = $versionsUtil->getLatest('stable'); +try { +$latestPreview = $versionsUtil->getLatest('preview'); +} catch (\UnexpectedValueException $e) { +$latestPreview = $latestStable; +} +$latestVersion = $latest['version']; +$updateVersion = $input->getArgument('version') ?? $latestVersion; +$currentMajorVersion = Preg::replace('{^(\d+).*}', '$1', Composer::getVersion()); +$updateMajorVersion = Preg::replace('{^(\d+).*}', '$1', $updateVersion); +$previewMajorVersion = Preg::replace('{^(\d+).*}', '$1', $latestPreview['version']); + +if ($versionsUtil->getChannel() === 'stable' && null === $input->getArgument('version')) { + + +if ($currentMajorVersion < $updateMajorVersion) { +$skippedVersion = $updateVersion; + +$versionsUtil->setChannel($currentMajorVersion); + +$latest = $versionsUtil->getLatest(); +$latestStable = $versionsUtil->getLatest('stable'); +$latestVersion = $latest['version']; +$updateVersion = $latestVersion; + +$io->writeError('A new stable major version of Composer is available ('.$skippedVersion.'), run "composer self-update --'.$updateMajorVersion.'" to update to it. See also https://getcomposer.org/'.$updateMajorVersion.''); +} elseif ($currentMajorVersion < $previewMajorVersion) { + +$io->writeError('A preview release of the next major version of Composer is available ('.$latestPreview['version'].'), run "composer self-update --preview" to give it a try. See also https://github.com/composer/composer/releases for changelogs.'); +} +} + +$effectiveChannel = $requestedChannel === null ? $versionsUtil->getChannel() : $requestedChannel; +if (is_numeric($effectiveChannel) && strpos($latestStable['version'], $effectiveChannel) !== 0) { +$io->writeError('Warning: You forced the install of '.$latestVersion.' via --'.$effectiveChannel.', but '.$latestStable['version'].' is the latest stable version. Updating to it via composer self-update --stable is recommended.'); +} +if (isset($latest['eol'])) { +$io->writeError('Warning: Version '.$latestVersion.' is EOL / End of Life. '.$latestStable['version'].' is the latest stable version. Updating to it via composer self-update --stable is recommended.'); +} + +if (Preg::isMatch('{^[0-9a-f]{40}$}', $updateVersion) && $updateVersion !== $latestVersion) { +$io->writeError('You can not update to a specific SHA-1 as those phars are not available for download'); + +return 1; +} + +$channelString = $versionsUtil->getChannel(); +if (is_numeric($channelString)) { +$channelString .= '.x'; +} + +if (Composer::VERSION === $updateVersion) { +$io->writeError( +sprintf( +'You are already using the latest available Composer version %s (%s channel).', +$updateVersion, +$channelString +) +); + + +if ($input->getOption('clean-backups')) { +$this->cleanBackups($rollbackDir, $this->getLastBackupVersion($rollbackDir)); +} + +return 0; +} + +$tempFilename = $tmpDir . '/' . basename($localFilename, '.phar').'-temp'.random_int(0, 10000000).'.phar'; +$backupFile = sprintf( +'%s/%s-%s%s', +$rollbackDir, +strtr(Composer::RELEASE_DATE, ' :', '_-'), +Preg::replace('{^([0-9a-f]{7})[0-9a-f]{33}$}', '$1', Composer::VERSION), +self::OLD_INSTALL_EXT +); + +$updatingToTag = !Preg::isMatch('{^[0-9a-f]{40}$}', $updateVersion); + +$io->write(sprintf("Upgrading to version %s (%s channel).", $updateVersion, $channelString)); +$remoteFilename = $baseUrl . ($updatingToTag ? "/download/{$updateVersion}/composer.phar" : '/composer.phar'); +try { +$signature = $httpDownloader->get($remoteFilename.'.sig')->getBody(); +} catch (TransportException $e) { +if ($e->getStatusCode() === 404) { +throw new \InvalidArgumentException('Version "'.$updateVersion.'" could not be found.', 0, $e); +} +throw $e; +} +$io->writeError(' ', false); +$httpDownloader->copy($remoteFilename, $tempFilename); +$io->writeError(''); + +if (!file_exists($tempFilename) || null === $signature || '' === $signature) { +$io->writeError('The download of the new composer version failed for an unexpected reason'); + +return 1; +} + + +if (!extension_loaded('openssl') && $config->get('disable-tls')) { +$io->writeError('Skipping phar signature verification as you have disabled OpenSSL via config.disable-tls'); +} else { +if (!extension_loaded('openssl')) { +throw new \RuntimeException('The openssl extension is required for phar signatures to be verified but it is not available. ' +. 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); +} + +$sigFile = 'file://'.$home.'/' . ($updatingToTag ? 'keys.tags.pub' : 'keys.dev.pub'); +if (!file_exists($sigFile)) { +file_put_contents( +$home.'/keys.dev.pub', +<<getOption('clean-backups')) { +$this->cleanBackups($rollbackDir); +} + +if (!$this->setLocalPhar($localFilename, $tempFilename, $backupFile)) { +@unlink($tempFilename); + +return 1; +} + +if (file_exists($backupFile)) { +$io->writeError(sprintf( +'Use composer self-update --rollback to return to version %s', +Composer::VERSION +)); +} else { +$io->writeError('A backup of the current version could not be written to '.$backupFile.', no rollback possible'); +} + +return 0; +} + + + + +protected function fetchKeys(IOInterface $io, Config $config): void +{ +if (!$io->isInteractive()) { +throw new \RuntimeException('Public keys can not be fetched in non-interactive mode, please run Composer interactively'); +} + +$io->write('Open https://composer.github.io/pubkeys.html to find the latest keys'); + +$validator = static function ($value): string { +if (!Preg::isMatch('{^-----BEGIN PUBLIC KEY-----$}', trim($value))) { +throw new \UnexpectedValueException('Invalid input'); +} + +return trim($value)."\n"; +}; + +$devKey = ''; +while (!Preg::isMatch('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $devKey, $match)) { +$devKey = $io->askAndValidate('Enter Dev / Snapshot Public Key (including lines with -----): ', $validator); +while ($line = $io->ask('')) { +$devKey .= trim($line)."\n"; +if (trim($line) === '-----END PUBLIC KEY-----') { +break; +} +} +} +file_put_contents($keyPath = $config->get('home').'/keys.dev.pub', $match[0]); +$io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); + +$tagsKey = ''; +while (!Preg::isMatch('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $tagsKey, $match)) { +$tagsKey = $io->askAndValidate('Enter Tags Public Key (including lines with -----): ', $validator); +while ($line = $io->ask('')) { +$tagsKey .= trim($line)."\n"; +if (trim($line) === '-----END PUBLIC KEY-----') { +break; +} +} +} +file_put_contents($keyPath = $config->get('home').'/keys.tags.pub', $match[0]); +$io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); + +$io->write('Public keys stored in '.$config->get('home')); +} + + + + +protected function rollback(OutputInterface $output, string $rollbackDir, string $localFilename): int +{ +$rollbackVersion = $this->getLastBackupVersion($rollbackDir); +if (null === $rollbackVersion) { +throw new \UnexpectedValueException('Composer rollback failed: no installation to roll back to in "'.$rollbackDir.'"'); +} + +$oldFile = $rollbackDir . '/' . $rollbackVersion . self::OLD_INSTALL_EXT; + +if (!is_file($oldFile)) { +throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be found'); +} +if (!Filesystem::isReadable($oldFile)) { +throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be read'); +} + +$io = $this->getIO(); +$io->writeError(sprintf("Rolling back to version %s.", $rollbackVersion)); +if (!$this->setLocalPhar($localFilename, $oldFile)) { +return 1; +} + +return 0; +} + + + + + + + + + + +protected function setLocalPhar(string $localFilename, string $newFilename, ?string $backupTarget = null): bool +{ +$io = $this->getIO(); +$perms = @fileperms($localFilename); +if ($perms !== false) { +@chmod($newFilename, $perms); +} + + +if (!$this->validatePhar($newFilename, $error)) { +$io->writeError('The '.($backupTarget !== null ? 'update' : 'backup').' file is corrupted ('.$error.')'); + +if ($backupTarget !== null) { +$io->writeError('Please re-run the self-update command to try again.'); +} + +return false; +} + + +if ($backupTarget !== null) { +@copy($localFilename, $backupTarget); +} + +try { +if (Platform::isWindows()) { + + +copy($newFilename, $localFilename); +@unlink($newFilename); +} else { +rename($newFilename, $localFilename); +} + +return true; +} catch (\Exception $e) { + +if (!is_writable(dirname($localFilename)) +&& $io->isInteractive() +&& $this->isWindowsNonAdminUser()) { +return $this->tryAsWindowsAdmin($localFilename, $newFilename); +} + +@unlink($newFilename); +$action = 'Composer '.($backupTarget !== null ? 'update' : 'rollback'); +throw new FilesystemException($action.' failed: "'.$localFilename.'" could not be written.'.PHP_EOL.$e->getMessage()); +} +} + +protected function cleanBackups(string $rollbackDir, ?string $except = null): void +{ +$finder = $this->getOldInstallationFinder($rollbackDir); +$io = $this->getIO(); +$fs = new Filesystem; + +foreach ($finder as $file) { +if ($file->getBasename(self::OLD_INSTALL_EXT) === $except) { +continue; +} +$file = (string) $file; +$io->writeError('Removing: '.$file.''); +$fs->remove($file); +} +} + +protected function getLastBackupVersion(string $rollbackDir): ?string +{ +$finder = $this->getOldInstallationFinder($rollbackDir); +$finder->sortByName(); +$files = iterator_to_array($finder); + +if (count($files) > 0) { +return end($files)->getBasename(self::OLD_INSTALL_EXT); +} + +return null; +} + +protected function getOldInstallationFinder(string $rollbackDir): Finder +{ +return Finder::create() +->depth(0) +->files() +->name('*' . self::OLD_INSTALL_EXT) +->in($rollbackDir); +} + + + + + + + + + + + + + +protected function validatePhar(string $pharFile, ?string &$error): bool +{ +if ((bool) ini_get('phar.readonly')) { +return true; +} + +try { + +$phar = new \Phar($pharFile); + +unset($phar); +$result = true; +} catch (\Exception $e) { +if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) { +throw $e; +} +$error = $e->getMessage(); +$result = false; +} + +return $result; +} + + + + +protected function isWindowsNonAdminUser(): bool +{ +if (!Platform::isWindows()) { +return false; +} + + +exec('fltmc.exe filters', $output, $exitCode); + +return $exitCode !== 0; +} + + + + + + + + + + +protected function tryAsWindowsAdmin(string $localFilename, string $newFilename): bool +{ +$io = $this->getIO(); + +$io->writeError('Unable to write "'.$localFilename.'". Access is denied.'); +$helpMessage = 'Please run the self-update command as an Administrator.'; +$question = 'Complete this operation with Administrator privileges [Y,n]? '; + +if (!$io->askConfirmation($question, true)) { +$io->writeError('Operation cancelled. '.$helpMessage.''); + +return false; +} + +$tmpFile = tempnam(sys_get_temp_dir(), ''); +if (false === $tmpFile) { +$io->writeError('Operation failed.'.$helpMessage.''); + +return false; +} +$script = $tmpFile.'.vbs'; +rename($tmpFile, $script); + +$checksum = hash_file('sha256', $newFilename); + + +$source = str_replace('/', '\\', $newFilename); +$destination = str_replace('/', '\\', $localFilename); + +$vbs = <<writeError('Operation succeeded.'); +@unlink($newFilename); +} else { +$io->writeError('Operation failed.'.$helpMessage.''); +} + +return $result; +} +} diff --git a/composer/src/Composer/Command/ShowCommand.php b/composer/src/Composer/Command/ShowCommand.php new file mode 100644 index 000000000..d4a525642 --- /dev/null +++ b/composer/src/Composer/Command/ShowCommand.php @@ -0,0 +1,1416 @@ +setName('show') +->setAliases(['info']) +->setDescription('Shows information about packages') +->setDefinition([ +new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.', null, $this->suggestPackageBasedOnMode()), +new InputArgument('version', InputArgument::OPTIONAL, 'Version or version constraint to inspect'), +new InputOption('all', null, InputOption::VALUE_NONE, 'List all packages'), +new InputOption('locked', null, InputOption::VALUE_NONE, 'List all locked packages'), +new InputOption('installed', 'i', InputOption::VALUE_NONE, 'List installed packages only (enabled by default, only present for BC).'), +new InputOption('platform', 'p', InputOption::VALUE_NONE, 'List platform packages only'), +new InputOption('available', 'a', InputOption::VALUE_NONE, 'List available packages only'), +new InputOption('self', 's', InputOption::VALUE_NONE, 'Show the root package information'), +new InputOption('name-only', 'N', InputOption::VALUE_NONE, 'List package names only'), +new InputOption('path', 'P', InputOption::VALUE_NONE, 'Show package paths'), +new InputOption('tree', 't', InputOption::VALUE_NONE, 'List the dependencies as a tree'), +new InputOption('latest', 'l', InputOption::VALUE_NONE, 'Show the latest version'), +new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show the latest version but only for packages that are outdated'), +new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.', null, $this->suggestInstalledPackage(false)), +new InputOption('major-only', 'M', InputOption::VALUE_NONE, 'Show only packages that have major SemVer-compatible updates. Use with the --latest or --outdated option.'), +new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --latest or --outdated option.'), +new InputOption('patch-only', null, InputOption::VALUE_NONE, 'Show only packages that have patch SemVer-compatible updates. Use with the --latest or --outdated option.'), +new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), +new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), +new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages). Use with the --outdated option'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages). Use with the --outdated option'), +]) +->setHelp( +<<getOption('available') || $input->getOption('all')) { +return $this->suggestAvailablePackageInclPlatform()($input); +} + +if ($input->getOption('platform')) { +return $this->suggestPlatformPackage()($input); +} + +return $this->suggestInstalledPackage(false)($input); +}; +} + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$this->versionParser = new VersionParser; +if ($input->getOption('tree')) { +$this->initStyles($output); +} + +$composer = $this->tryComposer(); +$io = $this->getIO(); + +if ($input->getOption('installed')) { +$io->writeError('You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.'); +} + +if ($input->getOption('outdated')) { +$input->setOption('latest', true); +} elseif (count($input->getOption('ignore')) > 0) { +$io->writeError('You are using the option "ignore" for action other than "outdated", it will be ignored.'); +} + +if ($input->getOption('direct') && ($input->getOption('all') || $input->getOption('available') || $input->getOption('platform'))) { +$io->writeError('The --direct (-D) option is not usable in combination with --all, --platform (-p) or --available (-a)'); + +return 1; +} + +if ($input->getOption('tree') && ($input->getOption('all') || $input->getOption('available'))) { +$io->writeError('The --tree (-t) option is not usable in combination with --all or --available (-a)'); + +return 1; +} + +if (count(array_filter([$input->getOption('patch-only'), $input->getOption('minor-only'), $input->getOption('major-only')])) > 1) { +$io->writeError('Only one of --major-only, --minor-only or --patch-only can be used at once'); + +return 1; +} + +if ($input->getOption('tree') && $input->getOption('latest')) { +$io->writeError('The --tree (-t) option is not usable in combination with --latest (-l)'); + +return 1; +} + +if ($input->getOption('tree') && $input->getOption('path')) { +$io->writeError('The --tree (-t) option is not usable in combination with --path (-P)'); + +return 1; +} + +$format = $input->getOption('format'); +if (!in_array($format, ['text', 'json'])) { +$io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); + +return 1; +} + +$platformReqFilter = $this->getPlatformRequirementFilter($input); + + +$platformOverrides = []; +if ($composer) { +$platformOverrides = $composer->getConfig()->get('platform'); +} +$platformRepo = new PlatformRepository([], $platformOverrides); +$lockedRepo = null; + +if ($input->getOption('self')) { +$package = clone $this->requireComposer()->getPackage(); +if ($input->getOption('name-only')) { +$io->write($package->getName()); + +return 0; +} +if ($input->getArgument('package')) { +throw new \InvalidArgumentException('You cannot use --self together with a package name'); +} +$repos = $installedRepo = new InstalledRepository([new RootPackageRepository($package)]); +} elseif ($input->getOption('platform')) { +$repos = $installedRepo = new InstalledRepository([$platformRepo]); +} elseif ($input->getOption('available')) { +$installedRepo = new InstalledRepository([$platformRepo]); +if ($composer) { +$repos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); +$installedRepo->addRepository($composer->getRepositoryManager()->getLocalRepository()); +} else { +$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io); +$repos = new CompositeRepository($defaultRepos); +$io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); +} +} elseif ($input->getOption('all') && $composer) { +$localRepo = $composer->getRepositoryManager()->getLocalRepository(); +$locker = $composer->getLocker(); +if ($locker->isLocked()) { +$lockedRepo = $locker->getLockedRepository(true); +$installedRepo = new InstalledRepository([$lockedRepo, $localRepo, $platformRepo]); +} else { +$installedRepo = new InstalledRepository([$localRepo, $platformRepo]); +} +$repos = new CompositeRepository(array_merge([new FilterRepository($installedRepo, ['canonical' => false])], $composer->getRepositoryManager()->getRepositories())); +} elseif ($input->getOption('all')) { +$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io); +$io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); +$installedRepo = new InstalledRepository([$platformRepo]); +$repos = new CompositeRepository(array_merge([$installedRepo], $defaultRepos)); +} elseif ($input->getOption('locked')) { +if (!$composer || !$composer->getLocker()->isLocked()) { +throw new \UnexpectedValueException('A valid composer.json and composer.lock files is required to run this command with --locked'); +} +$locker = $composer->getLocker(); +$lockedRepo = $locker->getLockedRepository(!$input->getOption('no-dev')); +$repos = $installedRepo = new InstalledRepository([$lockedRepo]); +} else { + +if (!$composer) { +$composer = $this->requireComposer(); +} +$rootPkg = $composer->getPackage(); +$repos = $installedRepo = new InstalledRepository([$composer->getRepositoryManager()->getLocalRepository()]); + +if ($input->getOption('no-dev')) { +$packages = RepositoryUtils::filterRequiredPackages($installedRepo->getPackages(), $rootPkg); +$repos = $installedRepo = new InstalledRepository([new InstalledArrayRepository(array_map(static function ($pkg): PackageInterface { +return clone $pkg; +}, $packages))]); +} + +if (!$installedRepo->getPackages() && ($rootPkg->getRequires() || $rootPkg->getDevRequires())) { +$io->writeError('No dependencies installed. Try running composer install or update.'); +} +} + +if ($composer) { +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'show', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); +} + +if ($input->getOption('latest') && null === $composer) { +$io->writeError('No composer.json found in the current directory, disabling "latest" option'); +$input->setOption('latest', false); +} + +$packageFilter = $input->getArgument('package'); + + +if (isset($package)) { +$versions = [$package->getPrettyVersion() => $package->getVersion()]; +} elseif (null !== $packageFilter && !str_contains($packageFilter, '*')) { +[$package, $versions] = $this->getPackage($installedRepo, $repos, $packageFilter, $input->getArgument('version')); + +if (!isset($package)) { +$options = $input->getOptions(); +$hint = ''; +if ($input->getOption('locked')) { +$hint .= ' in lock file'; +} +if (isset($options['working-dir'])) { +$hint .= ' in ' . $options['working-dir'] . '/composer.json'; +} +if (PlatformRepository::isPlatformPackage($packageFilter) && !$input->getOption('platform')) { +$hint .= ', try using --platform (-p) to show platform packages'; +} +if (!$input->getOption('all')) { +$hint .= ', try using --available (-a) to show all available packages'; +} + +throw new \InvalidArgumentException('Package "' . $packageFilter . '" not found'.$hint.'.'); +} +} + +if (isset($package)) { +assert(isset($versions)); + +$exitCode = 0; +if ($input->getOption('tree')) { +$arrayTree = $this->generatePackageTree($package, $installedRepo, $repos); + +if ('json' === $format) { +$io->write(JsonFile::encode(['installed' => [$arrayTree]])); +} else { +$this->displayPackageTree([$arrayTree]); +} + +return $exitCode; +} + +$latestPackage = null; +if ($input->getOption('latest')) { +$latestPackage = $this->findLatestPackage($package, $composer, $platformRepo, $input->getOption('major-only'), $input->getOption('minor-only'), $input->getOption('patch-only'), $platformReqFilter); +} +if ( +$input->getOption('outdated') +&& $input->getOption('strict') +&& null !== $latestPackage +&& $latestPackage->getFullPrettyVersion() !== $package->getFullPrettyVersion() +&& (!$latestPackage instanceof CompletePackageInterface || !$latestPackage->isAbandoned()) +) { +$exitCode = 1; +} +if ($input->getOption('path')) { +$io->write($package->getName(), false); +$io->write(' ' . strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n")); + +return $exitCode; +} + +if ('json' === $format) { +$this->printPackageInfoAsJson($package, $versions, $installedRepo, $latestPackage ?: null); +} else { +$this->printPackageInfo($package, $versions, $installedRepo, $latestPackage ?: null); +} + +return $exitCode; +} + + +if ($input->getOption('tree')) { +$rootRequires = $this->getRootRequires(); +$packages = $installedRepo->getPackages(); +usort($packages, static function (BasePackage $a, BasePackage $b): int { +return strcmp((string) $a, (string) $b); +}); +$arrayTree = []; +foreach ($packages as $package) { +if (in_array($package->getName(), $rootRequires, true)) { +$arrayTree[] = $this->generatePackageTree($package, $installedRepo, $repos); +} +} + +if ('json' === $format) { +$io->write(JsonFile::encode(['installed' => $arrayTree])); +} else { +$this->displayPackageTree($arrayTree); +} + +return 0; +} + + + +$packages = []; +$packageFilterRegex = null; +if (null !== $packageFilter) { +$packageFilterRegex = '{^'.str_replace('\\*', '.*?', preg_quote($packageFilter)).'$}i'; +} + +$packageListFilter = null; +if ($input->getOption('direct')) { +$packageListFilter = $this->getRootRequires(); +} + +if ($input->getOption('path') && null === $composer) { +$io->writeError('No composer.json found in the current directory, disabling "path" option'); +$input->setOption('path', false); +} + +foreach (RepositoryUtils::flattenRepositories($repos) as $repo) { +if ($repo === $platformRepo) { +$type = 'platform'; +} elseif ($lockedRepo !== null && $repo === $lockedRepo) { +$type = 'locked'; +} elseif ($repo === $installedRepo || in_array($repo, $installedRepo->getRepositories(), true)) { +$type = 'installed'; +} else { +$type = 'available'; +} +if ($repo instanceof ComposerRepository) { +foreach ($repo->getPackageNames($packageFilter) as $name) { +$packages[$type][$name] = $name; +} +} else { +foreach ($repo->getPackages() as $package) { +if (!isset($packages[$type][$package->getName()]) +|| !is_object($packages[$type][$package->getName()]) +|| version_compare($packages[$type][$package->getName()]->getVersion(), $package->getVersion(), '<') +) { +while ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} +if (!$packageFilterRegex || Preg::isMatch($packageFilterRegex, $package->getName())) { +if (null === $packageListFilter || in_array($package->getName(), $packageListFilter, true)) { +$packages[$type][$package->getName()] = $package; +} +} +} +} +if ($repo === $platformRepo) { +foreach ($platformRepo->getDisabledPackages() as $name => $package) { +$packages[$type][$name] = $package; +} +} +} +} + +$showAllTypes = $input->getOption('all'); +$showLatest = $input->getOption('latest'); +$showMajorOnly = $input->getOption('major-only'); +$showMinorOnly = $input->getOption('minor-only'); +$showPatchOnly = $input->getOption('patch-only'); +$ignoredPackages = array_map('strtolower', $input->getOption('ignore')); +$indent = $showAllTypes ? ' ' : ''; + +$latestPackages = []; +$exitCode = 0; +$viewData = []; +$viewMetaData = []; +foreach (['platform' => true, 'locked' => true, 'available' => false, 'installed' => true] as $type => $showVersion) { +if (isset($packages[$type])) { +ksort($packages[$type]); + +$nameLength = $versionLength = $latestLength = 0; + +if ($showLatest && $showVersion) { +foreach ($packages[$type] as $package) { +if (is_object($package)) { +$latestPackage = $this->findLatestPackage($package, $composer, $platformRepo, $showMajorOnly, $showMinorOnly, $showPatchOnly, $platformReqFilter); +if ($latestPackage === null) { +continue; +} + +$latestPackages[$package->getPrettyName()] = $latestPackage; +} +} +} + +$writePath = !$input->getOption('name-only') && $input->getOption('path'); +$writeVersion = !$input->getOption('name-only') && !$input->getOption('path') && $showVersion; +$writeLatest = $writeVersion && $showLatest; +$writeDescription = !$input->getOption('name-only') && !$input->getOption('path'); + +$hasOutdatedPackages = false; + +$viewData[$type] = []; +foreach ($packages[$type] as $package) { +$packageViewData = []; +if (is_object($package)) { +$latestPackage = null; +if ($showLatest && isset($latestPackages[$package->getPrettyName()])) { +$latestPackage = $latestPackages[$package->getPrettyName()]; +} + + +$packageIsUpToDate = $latestPackage && $latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion() && (!$latestPackage instanceof CompletePackageInterface || !$latestPackage->isAbandoned()); + +$packageIsUpToDate = $packageIsUpToDate || ($latestPackage === null && $showMajorOnly); +$packageIsIgnored = \in_array($package->getPrettyName(), $ignoredPackages, true); +if ($input->getOption('outdated') && ($packageIsUpToDate || $packageIsIgnored)) { +continue; +} + +if ($input->getOption('outdated') || $input->getOption('strict')) { +$hasOutdatedPackages = true; +} + +$packageViewData['name'] = $package->getPrettyName(); +$packageViewData['direct-dependency'] = in_array($package->getName(), $this->getRootRequires(), true); +if ($format !== 'json' || true !== $input->getOption('name-only')) { +$packageViewData['homepage'] = $package instanceof CompletePackageInterface ? $package->getHomepage() : null; +$packageViewData['source'] = PackageInfo::getViewSourceUrl($package); +} +$nameLength = max($nameLength, strlen($package->getPrettyName())); +if ($writeVersion) { +$packageViewData['version'] = $package->getFullPrettyVersion(); +$versionLength = max($versionLength, strlen($package->getFullPrettyVersion())); +} +if ($writeLatest && $latestPackage) { +$packageViewData['latest'] = $latestPackage->getFullPrettyVersion(); +$packageViewData['latest-status'] = $this->getUpdateStatus($latestPackage, $package); +$latestLength = max($latestLength, strlen($packageViewData['latest'])); +} elseif ($writeLatest) { +$packageViewData['latest'] = '[none matched]'; +$packageViewData['latest-status'] = 'up-to-date'; +$latestLength = max($latestLength, strlen($packageViewData['latest'])); +} +if ($writeDescription && $package instanceof CompletePackageInterface) { +$packageViewData['description'] = $package->getDescription(); +} +if ($writePath) { +$packageViewData['path'] = strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n"); +} + +$packageIsAbandoned = false; +if ($latestPackage instanceof CompletePackageInterface && $latestPackage->isAbandoned()) { +$replacementPackageName = $latestPackage->getReplacementPackage(); +$replacement = $replacementPackageName !== null +? 'Use ' . $latestPackage->getReplacementPackage() . ' instead' +: 'No replacement was suggested'; +$packageWarning = sprintf( +'Package %s is abandoned, you should avoid using it. %s.', +$package->getPrettyName(), +$replacement +); +$packageViewData['warning'] = $packageWarning; +$packageIsAbandoned = $replacementPackageName ?? true; +} + +$packageViewData['abandoned'] = $packageIsAbandoned; +} else { +$packageViewData['name'] = $package; +$nameLength = max($nameLength, strlen($package)); +} +$viewData[$type][] = $packageViewData; +} +$viewMetaData[$type] = [ +'nameLength' => $nameLength, +'versionLength' => $versionLength, +'latestLength' => $latestLength, +'writeLatest' => $writeLatest, +]; +if ($input->getOption('strict') && $hasOutdatedPackages) { +$exitCode = 1; +break; +} +} +} + +if ('json' === $format) { +$io->write(JsonFile::encode($viewData)); +} else { +if ($input->getOption('latest') && array_filter($viewData)) { +if (!$io->isDecorated()) { +$io->writeError('Legend:'); +$io->writeError('! patch or minor release available - update recommended'); +$io->writeError('~ major release available - update possible'); +if (!$input->getOption('outdated')) { +$io->writeError('= up to date version'); +} +} else { +$io->writeError('Color legend:'); +$io->writeError('- patch or minor release available - update recommended'); +$io->writeError('- major release available - update possible'); +if (!$input->getOption('outdated')) { +$io->writeError('- up to date version'); +} +} +} + +$width = $this->getTerminalWidth(); + +foreach ($viewData as $type => $packages) { +$nameLength = $viewMetaData[$type]['nameLength']; +$versionLength = $viewMetaData[$type]['versionLength']; +$latestLength = $viewMetaData[$type]['latestLength']; +$writeLatest = $viewMetaData[$type]['writeLatest']; + +$versionFits = $nameLength + $versionLength + 3 <= $width; +$latestFits = $nameLength + $versionLength + $latestLength + 3 <= $width; +$descriptionFits = $nameLength + $versionLength + $latestLength + 24 <= $width; + +if ($latestFits && !$io->isDecorated()) { +$latestLength += 2; +} + +if ($showAllTypes) { +if ('available' === $type) { +$io->write('' . $type . ':'); +} else { +$io->write('' . $type . ':'); +} +} + +if ($writeLatest && !$input->getOption('direct')) { +$directDeps = []; +$transitiveDeps = []; +foreach ($packages as $pkg) { +if ($pkg['direct-dependency'] ?? false) { +$directDeps[] = $pkg; +} else { +$transitiveDeps[] = $pkg; +} +} + +$io->writeError(''); +$io->writeError('Direct dependencies required in composer.json:'); +if (\count($directDeps) > 0) { +$this->printPackages($io, $directDeps, $indent, $versionFits, $latestFits, $descriptionFits, $width, $versionLength, $nameLength, $latestLength); +} else { +$io->writeError('Everything up to date'); +} +$io->writeError(''); +$io->writeError('Transitive dependencies not required in composer.json:'); +if (\count($transitiveDeps) > 0) { +$this->printPackages($io, $transitiveDeps, $indent, $versionFits, $latestFits, $descriptionFits, $width, $versionLength, $nameLength, $latestLength); +} else { +$io->writeError('Everything up to date'); +} +} else { +if ($writeLatest && \count($packages) === 0) { +$io->writeError('All your direct dependencies are up to date'); +} else { +$this->printPackages($io, $packages, $indent, $versionFits, $latestFits, $descriptionFits, $width, $versionLength, $nameLength, $latestLength); +} +} + +if ($showAllTypes) { +$io->write(''); +} +} +} + +return $exitCode; +} + + + + +private function printPackages(IOInterface $io, array $packages, string $indent, bool $writeVersion, bool $writeLatest, bool $writeDescription, int $width, int $versionLength, int $nameLength, int $latestLength): void +{ +foreach ($packages as $package) { +$link = $package['source'] ?? $package['homepage'] ?? ''; +if ($link !== '') { +$io->write($indent . ''.$package['name'].''. str_repeat(' ', $nameLength - strlen($package['name'])), false); +} else { +$io->write($indent . str_pad($package['name'], $nameLength, ' '), false); +} +if (isset($package['version']) && $writeVersion) { +$io->write(' ' . str_pad($package['version'], $versionLength, ' '), false); +} +if (isset($package['latest']) && isset($package['latest-status']) && $writeLatest) { +$latestVersion = $package['latest']; +$updateStatus = $package['latest-status']; +$style = $this->updateStatusToVersionStyle($updateStatus); +if (!$io->isDecorated()) { +$latestVersion = str_replace(['up-to-date', 'semver-safe-update', 'update-possible'], ['=', '!', '~'], $updateStatus) . ' ' . $latestVersion; +} +$io->write(' <' . $style . '>' . str_pad($latestVersion, $latestLength, ' ') . '', false); +} +if (isset($package['description']) && $writeDescription) { +$description = strtok($package['description'], "\r\n"); +$remaining = $width - $nameLength - $versionLength - 4; +if ($writeLatest) { +$remaining -= $latestLength; +} +if (strlen($description) > $remaining) { +$description = substr($description, 0, $remaining - 3) . '...'; +} +$io->write(' ' . $description, false); +} +if (isset($package['path'])) { +$io->write(' ' . $package['path'], false); +} +$io->write(''); +if (isset($package['warning'])) { +$io->write('' . $package['warning'] . ''); +} +} +} + + + + +protected function getRootRequires(): array +{ +$composer = $this->tryComposer(); +if ($composer === null) { +return []; +} + +$rootPackage = $composer->getPackage(); + +return array_map( +'strtolower', +array_keys(array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires())) +); +} + + + + +protected function getVersionStyle(PackageInterface $latestPackage, PackageInterface $package) +{ +return $this->updateStatusToVersionStyle($this->getUpdateStatus($latestPackage, $package)); +} + + + + + + + + +protected function getPackage(InstalledRepository $installedRepo, RepositoryInterface $repos, string $name, $version = null): array +{ +$name = strtolower($name); +$constraint = is_string($version) ? $this->versionParser->parseConstraints($version) : $version; + +$policy = new DefaultPolicy(); +$repositorySet = new RepositorySet('dev'); +$repositorySet->allowInstalledRepositories(); +$repositorySet->addRepository($repos); + +$matchedPackage = null; +$versions = []; +if (PlatformRepository::isPlatformPackage($name)) { +$pool = $repositorySet->createPoolWithAllPackages(); +} else { +$pool = $repositorySet->createPoolForPackage($name); +} +$matches = $pool->whatProvides($name, $constraint); +foreach ($matches as $index => $package) { + +if ($package instanceof AliasPackage && $package->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +$package = $package->getAliasOf(); +} + + +if (null === $version && $installedRepo->hasPackage($package)) { +$matchedPackage = $package; +} + +$versions[$package->getPrettyVersion()] = $package->getVersion(); +$matches[$index] = $package->getId(); +} + + +if (!$matchedPackage && $matches && $preferred = $policy->selectPreferredPackages($pool, $matches)) { +$matchedPackage = $pool->literalToPackage($preferred[0]); +} + +return [$matchedPackage, $versions]; +} + + + + + + +protected function printPackageInfo(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, ?PackageInterface $latestPackage = null): void +{ +$io = $this->getIO(); + +$this->printMeta($package, $versions, $installedRepo, $latestPackage ?: null); +$this->printLinks($package, Link::TYPE_REQUIRE); +$this->printLinks($package, Link::TYPE_DEV_REQUIRE, 'requires (dev)'); + +if ($package->getSuggests()) { +$io->write("\nsuggests"); +foreach ($package->getSuggests() as $suggested => $reason) { +$io->write($suggested . ' ' . $reason . ''); +} +} + +$this->printLinks($package, Link::TYPE_PROVIDE); +$this->printLinks($package, Link::TYPE_CONFLICT); +$this->printLinks($package, Link::TYPE_REPLACE); +} + + + + + + +protected function printMeta(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, ?PackageInterface $latestPackage = null): void +{ +$io = $this->getIO(); +$io->write('name : ' . $package->getPrettyName()); +$io->write('descrip. : ' . $package->getDescription()); +$io->write('keywords : ' . implode(', ', $package->getKeywords() ?: [])); +$this->printVersions($package, $versions, $installedRepo); +if ($latestPackage) { +$style = $this->getVersionStyle($latestPackage, $package); +$io->write('latest : <'.$style.'>' . $latestPackage->getPrettyVersion() . ''); +} else { +$latestPackage = $package; +} +$io->write('type : ' . $package->getType()); +$this->printLicenses($package); +$io->write('homepage : ' . $package->getHomepage()); +$io->write('source : ' . sprintf('[%s] %s %s', $package->getSourceType(), $package->getSourceUrl(), $package->getSourceReference())); +$io->write('dist : ' . sprintf('[%s] %s %s', $package->getDistType(), $package->getDistUrl(), $package->getDistReference())); +if ($installedRepo->hasPackage($package)) { +$io->write('path : ' . sprintf('%s', realpath($this->requireComposer()->getInstallationManager()->getInstallPath($package)))); +} +$io->write('names : ' . implode(', ', $package->getNames())); + +if ($latestPackage instanceof CompletePackageInterface && $latestPackage->isAbandoned()) { +$replacement = ($latestPackage->getReplacementPackage() !== null) +? ' The author suggests using the ' . $latestPackage->getReplacementPackage(). ' package instead.' +: null; + +$io->writeError( +sprintf('Attention: This package is abandoned and no longer maintained.%s', $replacement) +); +} + +if ($package->getSupport()) { +$io->write("\nsupport"); +foreach ($package->getSupport() as $type => $value) { +$io->write('' . $type . ' : '.$value); +} +} + +if (\count($package->getAutoload()) > 0) { +$io->write("\nautoload"); +$autoloadConfig = $package->getAutoload(); +foreach ($autoloadConfig as $type => $autoloads) { +$io->write('' . $type . ''); + +if ($type === 'psr-0' || $type === 'psr-4') { +foreach ($autoloads as $name => $path) { +$io->write(($name ?: '*') . ' => ' . (is_array($path) ? implode(', ', $path) : ($path ?: '.'))); +} +} elseif ($type === 'classmap') { +$io->write(implode(', ', $autoloadConfig[$type])); +} +} +if ($package->getIncludePaths()) { +$io->write('include-path'); +$io->write(implode(', ', $package->getIncludePaths())); +} +} +} + + + + + + +protected function printVersions(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo): void +{ +$versions = array_keys($versions); +$versions = Semver::rsort($versions); + + +if ($installedPackages = $installedRepo->findPackages($package->getName())) { +foreach ($installedPackages as $installedPackage) { +$installedVersion = $installedPackage->getPrettyVersion(); +$key = array_search($installedVersion, $versions); +if (false !== $key) { +$versions[$key] = '* ' . $installedVersion . ''; +} +} +} + +$versions = implode(', ', $versions); + +$this->getIO()->write('versions : ' . $versions); +} + + + + + + +protected function printLinks(CompletePackageInterface $package, string $linkType, ?string $title = null): void +{ +$title = $title ?: $linkType; +$io = $this->getIO(); +if ($links = $package->{'get'.ucfirst($linkType)}()) { +$io->write("\n" . $title . ""); + +foreach ($links as $link) { +$io->write($link->getTarget() . ' ' . $link->getPrettyConstraint() . ''); +} +} +} + + + + +protected function printLicenses(CompletePackageInterface $package): void +{ +$spdxLicenses = new SpdxLicenses(); + +$licenses = $package->getLicense(); +$io = $this->getIO(); + +foreach ($licenses as $licenseId) { +$license = $spdxLicenses->getLicenseByIdentifier($licenseId); + +if (!$license) { +$out = $licenseId; +} else { + +if ($license[1] === true) { +$out = sprintf('%s (%s) (OSI approved) %s', $license[0], $licenseId, $license[2]); +} else { +$out = sprintf('%s (%s) %s', $license[0], $licenseId, $license[2]); +} +} + +$io->write('license : ' . $out); +} +} + + + + + + +protected function printPackageInfoAsJson(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, ?PackageInterface $latestPackage = null): void +{ +$json = [ +'name' => $package->getPrettyName(), +'description' => $package->getDescription(), +'keywords' => $package->getKeywords() ?: [], +'type' => $package->getType(), +'homepage' => $package->getHomepage(), +'names' => $package->getNames(), +]; + +$json = $this->appendVersions($json, $versions); +$json = $this->appendLicenses($json, $package); + +if ($latestPackage) { +$json['latest'] = $latestPackage->getPrettyVersion(); +} else { +$latestPackage = $package; +} + +if (null !== $package->getSourceType()) { +$json['source'] = [ +'type' => $package->getSourceType(), +'url' => $package->getSourceUrl(), +'reference' => $package->getSourceReference(), +]; +} + +if (null !== $package->getDistType()) { +$json['dist'] = [ +'type' => $package->getDistType(), +'url' => $package->getDistUrl(), +'reference' => $package->getDistReference(), +]; +} + +if ($installedRepo->hasPackage($package)) { +$path = realpath($this->requireComposer()->getInstallationManager()->getInstallPath($package)); +if ($path !== false) { +$json['path'] = $path; +} +} + +if ($latestPackage instanceof CompletePackageInterface && $latestPackage->isAbandoned()) { +$json['replacement'] = $latestPackage->getReplacementPackage(); +} + +if ($package->getSuggests()) { +$json['suggests'] = $package->getSuggests(); +} + +if ($package->getSupport()) { +$json['support'] = $package->getSupport(); +} + +$json = $this->appendAutoload($json, $package); + +if ($package->getIncludePaths()) { +$json['include_path'] = $package->getIncludePaths(); +} + +$json = $this->appendLinks($json, $package); + +$this->getIO()->write(JsonFile::encode($json)); +} + + + + + + +private function appendVersions(array $json, array $versions): array +{ +uasort($versions, 'version_compare'); +$versions = array_keys(array_reverse($versions)); +$json['versions'] = $versions; + +return $json; +} + + + + + +private function appendLicenses(array $json, CompletePackageInterface $package): array +{ +if ($licenses = $package->getLicense()) { +$spdxLicenses = new SpdxLicenses(); + +$json['licenses'] = array_map(static function ($licenseId) use ($spdxLicenses) { +$license = $spdxLicenses->getLicenseByIdentifier($licenseId); + +if (!$license) { +return $licenseId; +} + +return [ +'name' => $license[0], +'osi' => $licenseId, +'url' => $license[2], +]; +}, $licenses); +} + +return $json; +} + + + + + +private function appendAutoload(array $json, CompletePackageInterface $package): array +{ +if (\count($package->getAutoload()) > 0) { +$autoload = []; + +foreach ($package->getAutoload() as $type => $autoloads) { +if ($type === 'psr-0' || $type === 'psr-4') { +$psr = []; + +foreach ($autoloads as $name => $path) { +if (!$path) { +$path = '.'; +} + +$psr[$name ?: '*'] = $path; +} + +$autoload[$type] = $psr; +} elseif ($type === 'classmap') { +$autoload['classmap'] = $autoloads; +} +} + +$json['autoload'] = $autoload; +} + +return $json; +} + + + + + +private function appendLinks(array $json, CompletePackageInterface $package): array +{ +foreach (Link::$TYPES as $linkType) { +$json = $this->appendLink($json, $package, $linkType); +} + +return $json; +} + + + + + +private function appendLink(array $json, CompletePackageInterface $package, string $linkType): array +{ +$links = $package->{'get' . ucfirst($linkType)}(); + +if ($links) { +$json[$linkType] = []; + +foreach ($links as $link) { +$json[$linkType][$link->getTarget()] = $link->getPrettyConstraint(); +} +} + +return $json; +} + + + + +protected function initStyles(OutputInterface $output): void +{ +$this->colors = [ +'green', +'yellow', +'cyan', +'magenta', +'blue', +]; + +foreach ($this->colors as $color) { +$style = new OutputFormatterStyle($color); +$output->getFormatter()->setStyle($color, $style); +} +} + + + + + + +protected function displayPackageTree(array $arrayTree): void +{ +$io = $this->getIO(); +foreach ($arrayTree as $package) { +$io->write(sprintf('%s', $package['name']), false); +$io->write(' ' . $package['version'], false); +if (isset($package['description'])) { +$io->write(' ' . strtok($package['description'], "\r\n")); +} else { + +$io->write(''); +} + +if (isset($package['requires'])) { +$requires = $package['requires']; +$treeBar = '├'; +$j = 0; +$total = count($requires); +foreach ($requires as $require) { +$requireName = $require['name']; +$j++; +if ($j === $total) { +$treeBar = '└'; +} +$level = 1; +$color = $this->colors[$level]; +$info = sprintf( +'%s──<%s>%s %s', +$treeBar, +$color, +$requireName, +$color, +$require['version'] +); +$this->writeTreeLine($info); + +$treeBar = str_replace('└', ' ', $treeBar); +$packagesInTree = [$package['name'], $requireName]; + +$this->displayTree($require, $packagesInTree, $treeBar, $level + 1); +} +} +} +} + + + + + + +protected function generatePackageTree( +PackageInterface $package, +InstalledRepository $installedRepo, +RepositoryInterface $remoteRepos +): array { +$requires = $package->getRequires(); +ksort($requires); +$children = []; +foreach ($requires as $requireName => $require) { +$packagesInTree = [$package->getName(), $requireName]; + +$treeChildDesc = [ +'name' => $requireName, +'version' => $require->getPrettyConstraint(), +]; + +$deepChildren = $this->addTree($requireName, $require, $installedRepo, $remoteRepos, $packagesInTree); + +if ($deepChildren) { +$treeChildDesc['requires'] = $deepChildren; +} + +$children[] = $treeChildDesc; +} +$tree = [ +'name' => $package->getPrettyName(), +'version' => $package->getPrettyVersion(), +'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : '', +]; + +if ($children) { +$tree['requires'] = $children; +} + +return $tree; +} + + + + + + + +protected function displayTree( +$package, +array $packagesInTree, +string $previousTreeBar = '├', +int $level = 1 +): void { +$previousTreeBar = str_replace('├', '│', $previousTreeBar); +if (is_array($package) && isset($package['requires'])) { +$requires = $package['requires']; +$treeBar = $previousTreeBar . ' ├'; +$i = 0; +$total = count($requires); +foreach ($requires as $require) { +$currentTree = $packagesInTree; +$i++; +if ($i === $total) { +$treeBar = $previousTreeBar . ' └'; +} +$colorIdent = $level % count($this->colors); +$color = $this->colors[$colorIdent]; + +$circularWarn = in_array( +$require['name'], +$currentTree, +true +) ? '(circular dependency aborted here)' : ''; +$info = rtrim(sprintf( +'%s──<%s>%s %s %s', +$treeBar, +$color, +$require['name'], +$color, +$require['version'], +$circularWarn +)); +$this->writeTreeLine($info); + +$treeBar = str_replace('└', ' ', $treeBar); + +$currentTree[] = $require['name']; +$this->displayTree($require, $currentTree, $treeBar, $level + 1); +} +} +} + + + + + + + +protected function addTree( +string $name, +Link $link, +InstalledRepository $installedRepo, +RepositoryInterface $remoteRepos, +array $packagesInTree +): array { +$children = []; +[$package] = $this->getPackage( +$installedRepo, +$remoteRepos, +$name, +$link->getPrettyConstraint() === 'self.version' ? $link->getConstraint() : $link->getPrettyConstraint() +); +if (is_object($package)) { +$requires = $package->getRequires(); +ksort($requires); +foreach ($requires as $requireName => $require) { +$currentTree = $packagesInTree; + +$treeChildDesc = [ +'name' => $requireName, +'version' => $require->getPrettyConstraint(), +]; + +if (!in_array($requireName, $currentTree, true)) { +$currentTree[] = $requireName; +$deepChildren = $this->addTree($requireName, $require, $installedRepo, $remoteRepos, $currentTree); +if ($deepChildren) { +$treeChildDesc['requires'] = $deepChildren; +} +} + +$children[] = $treeChildDesc; +} +} + +return $children; +} + +private function updateStatusToVersionStyle(string $updateStatus): string +{ + + + +return str_replace(['up-to-date', 'semver-safe-update', 'update-possible'], ['info', 'highlight', 'comment'], $updateStatus); +} + +private function getUpdateStatus(PackageInterface $latestPackage, PackageInterface $package): string +{ +if ($latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion()) { +return 'up-to-date'; +} + +$constraint = $package->getVersion(); +if (0 !== strpos($constraint, 'dev-')) { +$constraint = '^'.$constraint; +} +if ($latestPackage->getVersion() && Semver::satisfies($latestPackage->getVersion(), $constraint)) { + +return 'semver-safe-update'; +} + + +return 'update-possible'; +} + +private function writeTreeLine(string $line): void +{ +$io = $this->getIO(); +if (!$io->isDecorated()) { +$line = str_replace(['└', '├', '──', '│'], ['`-', '|-', '-', '|'], $line); +} + +$io->write($line); +} + + + + +private function findLatestPackage(PackageInterface $package, Composer $composer, PlatformRepository $platformRepo, bool $majorOnly, bool $minorOnly, bool $patchOnly, PlatformRequirementFilterInterface $platformReqFilter): ?PackageInterface +{ + +$name = $package->getName(); +$versionSelector = new VersionSelector($this->getRepositorySet($composer), $platformRepo); +$stability = $composer->getPackage()->getMinimumStability(); +$flags = $composer->getPackage()->getStabilityFlags(); +if (isset($flags[$name])) { +$stability = array_search($flags[$name], BasePackage::$stabilities, true); +} + +$bestStability = $stability; +if ($composer->getPackage()->getPreferStable()) { +$bestStability = $package->getStability(); +} + +$targetVersion = null; +if (0 === strpos($package->getVersion(), 'dev-')) { +$targetVersion = $package->getVersion(); + + +if ($majorOnly) { +return null; +} +} + +if ($targetVersion === null) { +if ($majorOnly && Preg::isMatch('{^(?P(?:0\.)+)?(?P\d+)\.}', $package->getVersion(), $match)) { +$targetVersion = '>='.$match['zero_major'].(((int) $match['first_meaningful']) + 1).',<9999999-dev'; +} + +if ($minorOnly) { +$targetVersion = '^'.$package->getVersion(); +} + +if ($patchOnly) { +$trimmedVersion = Preg::replace('{(\.0)+$}D', '', $package->getVersion()); +$partsNeeded = substr($trimmedVersion, 0, 1) === '0' ? 4 : 3; +while (substr_count($trimmedVersion, '.') + 1 < $partsNeeded) { +$trimmedVersion .= '.0'; +} +$targetVersion = '~'.$trimmedVersion; +} +} + +if ($this->getIO()->isVerbose()) { +$showWarnings = true; +} else { +$showWarnings = static function (PackageInterface $candidate) use ($package): bool { +if (str_starts_with($candidate->getVersion(), 'dev-') || str_starts_with($package->getVersion(), 'dev-')) { +return false; +} +return version_compare($candidate->getVersion(), $package->getVersion(), '<='); +}; +} +$candidate = $versionSelector->findBestCandidate($name, $targetVersion, $bestStability, $platformReqFilter, 0, $this->getIO(), $showWarnings); +while ($candidate instanceof AliasPackage) { +$candidate = $candidate->getAliasOf(); +} + +return $candidate !== false ? $candidate : null; +} + +private function getRepositorySet(Composer $composer): RepositorySet +{ +if (!$this->repositorySet) { +$this->repositorySet = new RepositorySet($composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags()); +$this->repositorySet->addRepository(new CompositeRepository($composer->getRepositoryManager()->getRepositories())); +} + +return $this->repositorySet; +} +} diff --git a/composer/src/Composer/Command/StatusCommand.php b/composer/src/Composer/Command/StatusCommand.php new file mode 100644 index 000000000..7b0f00ebf --- /dev/null +++ b/composer/src/Composer/Command/StatusCommand.php @@ -0,0 +1,218 @@ +setName('status') +->setDescription('Shows a list of locally modified packages') +->setDefinition([ +new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Show modified files for each directory that contains changes.'), +]) +->setHelp( +<<requireComposer(); + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'status', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + + +$composer->getEventDispatcher()->dispatchScript(ScriptEvents::PRE_STATUS_CMD, true); + +$exitCode = $this->doExecute($input); + + +$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_STATUS_CMD, true); + +return $exitCode; +} + +private function doExecute(InputInterface $input): int +{ + +$composer = $this->requireComposer(); + +$installedRepo = $composer->getRepositoryManager()->getLocalRepository(); + +$dm = $composer->getDownloadManager(); +$im = $composer->getInstallationManager(); + +$errors = []; +$io = $this->getIO(); +$unpushedChanges = []; +$vcsVersionChanges = []; + +$parser = new VersionParser; +$guesser = new VersionGuesser($composer->getConfig(), $composer->getLoop()->getProcessExecutor() ?? new ProcessExecutor($io), $parser); +$dumper = new ArrayDumper; + + +foreach ($installedRepo->getCanonicalPackages() as $package) { +$downloader = $dm->getDownloaderForPackage($package); +$targetDir = $im->getInstallPath($package); + +if ($downloader instanceof ChangeReportInterface) { +if (is_link($targetDir)) { +$errors[$targetDir] = $targetDir . ' is a symbolic link.'; +} + +if (null !== ($changes = $downloader->getLocalChanges($package, $targetDir))) { +$errors[$targetDir] = $changes; +} +} + +if ($downloader instanceof VcsCapableDownloaderInterface) { +if ($downloader->getVcsReference($package, $targetDir)) { +switch ($package->getInstallationSource()) { +case 'source': +$previousRef = $package->getSourceReference(); +break; +case 'dist': +$previousRef = $package->getDistReference(); +break; +default: +$previousRef = null; +} + +$currentVersion = $guesser->guessVersion($dumper->dump($package), $targetDir); + +if ($previousRef && $currentVersion && $currentVersion['commit'] !== $previousRef && $currentVersion['pretty_version'] !== $previousRef) { +$vcsVersionChanges[$targetDir] = [ +'previous' => [ +'version' => $package->getPrettyVersion(), +'ref' => $previousRef, +], +'current' => [ +'version' => $currentVersion['pretty_version'], +'ref' => $currentVersion['commit'], +], +]; +} +} +} + +if ($downloader instanceof DvcsDownloaderInterface) { +if ($unpushed = $downloader->getUnpushedChanges($package, $targetDir)) { +$unpushedChanges[$targetDir] = $unpushed; +} +} +} + + +if (!$errors && !$unpushedChanges && !$vcsVersionChanges) { +$io->writeError('No local changes'); + +return 0; +} + +if ($errors) { +$io->writeError('You have changes in the following dependencies:'); + +foreach ($errors as $path => $changes) { +if ($input->getOption('verbose')) { +$indentedChanges = implode("\n", array_map(static function ($line): string { +return ' ' . ltrim($line); +}, explode("\n", $changes))); +$io->write(''.$path.':'); +$io->write($indentedChanges); +} else { +$io->write($path); +} +} +} + +if ($unpushedChanges) { +$io->writeError('You have unpushed changes on the current branch in the following dependencies:'); + +foreach ($unpushedChanges as $path => $changes) { +if ($input->getOption('verbose')) { +$indentedChanges = implode("\n", array_map(static function ($line): string { +return ' ' . ltrim($line); +}, explode("\n", $changes))); +$io->write(''.$path.':'); +$io->write($indentedChanges); +} else { +$io->write($path); +} +} +} + +if ($vcsVersionChanges) { +$io->writeError('You have version variations in the following dependencies:'); + +foreach ($vcsVersionChanges as $path => $changes) { +if ($input->getOption('verbose')) { + +$currentVersion = $changes['current']['version'] ?: $changes['current']['ref']; +$previousVersion = $changes['previous']['version'] ?: $changes['previous']['ref']; + +if ($io->isVeryVerbose()) { + +$currentVersion .= sprintf(' (%s)', $changes['current']['ref']); +$previousVersion .= sprintf(' (%s)', $changes['previous']['ref']); +} + +$io->write(''.$path.':'); +$io->write(sprintf(' From %s to %s', $previousVersion, $currentVersion)); +} else { +$io->write($path); +} +} +} + +if (($errors || $unpushedChanges || $vcsVersionChanges) && !$input->getOption('verbose')) { +$io->writeError('Use --verbose (-v) to see a list of files'); +} + +return ($errors ? self::EXIT_CODE_ERRORS : 0) + ($unpushedChanges ? self::EXIT_CODE_UNPUSHED_CHANGES : 0) + ($vcsVersionChanges ? self::EXIT_CODE_VERSION_CHANGES : 0); +} +} diff --git a/composer/src/Composer/Command/SuggestsCommand.php b/composer/src/Composer/Command/SuggestsCommand.php new file mode 100644 index 000000000..03c29fb61 --- /dev/null +++ b/composer/src/Composer/Command/SuggestsCommand.php @@ -0,0 +1,103 @@ +setName('suggests') +->setDescription('Shows package suggestions') +->setDefinition([ +new InputOption('by-package', null, InputOption::VALUE_NONE, 'Groups output by suggesting package (default)'), +new InputOption('by-suggestion', null, InputOption::VALUE_NONE, 'Groups output by suggested package'), +new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show suggestions from all dependencies, including transitive ones'), +new InputOption('list', null, InputOption::VALUE_NONE, 'Show only list of suggested package names'), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Exclude suggestions from require-dev packages'), +new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that you want to list suggestions from.', null, $this->suggestInstalledPackage()), +]) +->setHelp( +<<%command.name% command shows a sorted list of suggested packages. + +Read more at https://getcomposer.org/doc/03-cli.md#suggests +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$composer = $this->requireComposer(); + +$installedRepos = [ +new RootPackageRepository(clone $composer->getPackage()), +]; + +$locker = $composer->getLocker(); +if ($locker->isLocked()) { +$installedRepos[] = new PlatformRepository([], $locker->getPlatformOverrides()); +$installedRepos[] = $locker->getLockedRepository(!$input->getOption('no-dev')); +} else { +$installedRepos[] = new PlatformRepository([], $composer->getConfig()->get('platform')); +$installedRepos[] = $composer->getRepositoryManager()->getLocalRepository(); +} + +$installedRepo = new InstalledRepository($installedRepos); +$reporter = new SuggestedPackagesReporter($this->getIO()); + +$filter = $input->getArgument('packages'); +$packages = $installedRepo->getPackages(); +$packages[] = $composer->getPackage(); +foreach ($packages as $package) { +if (!empty($filter) && !in_array($package->getName(), $filter)) { +continue; +} + +$reporter->addSuggestionsFromPackage($package); +} + + +$mode = SuggestedPackagesReporter::MODE_BY_PACKAGE; + + +if ($input->getOption('by-suggestion')) { +$mode = SuggestedPackagesReporter::MODE_BY_SUGGESTION; +} + +if ($input->getOption('by-package')) { +$mode |= SuggestedPackagesReporter::MODE_BY_PACKAGE; +} + +if ($input->getOption('list')) { +$mode = SuggestedPackagesReporter::MODE_LIST; +} + +$reporter->output($mode, $installedRepo, empty($filter) && !$input->getOption('all') ? $composer->getPackage() : null); + +return 0; +} +} diff --git a/composer/src/Composer/Command/UpdateCommand.php b/composer/src/Composer/Command/UpdateCommand.php new file mode 100644 index 000000000..8a4a59224 --- /dev/null +++ b/composer/src/Composer/Command/UpdateCommand.php @@ -0,0 +1,316 @@ +setName('update') +->setAliases(['u', 'upgrade']) +->setDescription('Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file') +->setDefinition([ +new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that should be updated, if not provided all packages are.', null, $this->suggestInstalledPackage(false)), +new InputOption('with', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Temporary version constraint to add, e.g. foo/bar:1.0.0 or foo/bar=1.0.0'), +new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), +new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), +new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), +new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), +new InputOption('dev', null, InputOption::VALUE_NONE, 'DEPRECATED: Enables installation of require-dev packages (enabled by default, only present for BC).'), +new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), +new InputOption('lock', null, InputOption::VALUE_NONE, 'Overwrites the lock file hash to suppress warning about the lock file being out of date without updating package versions. Package metadata like mirrors and URLs are updated if they changed.'), +new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), +new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Skip the audit step after updating the composer.lock file (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), +new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), +new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), +new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), +new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), +new InputOption('with-dependencies', 'w', InputOption::VALUE_NONE, 'Update also dependencies of packages in the argument list, except those which are root requirements.'), +new InputOption('with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Update also dependencies of packages in the argument list, including those which are root requirements.'), +new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), +new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump.'), +new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), +new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), +new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), +new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), +new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), +new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies (can also be set via the COMPOSER_PREFER_STABLE=1 env var).'), +new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies (can also be set via the COMPOSER_PREFER_LOWEST=1 env var).'), +new InputOption('interactive', 'i', InputOption::VALUE_NONE, 'Interactive interface with autocompletion to select the packages to update.'), +new InputOption('root-reqs', null, InputOption::VALUE_NONE, 'Restricts the update to your first degree dependencies.'), +]) +->setHelp( +<<update command reads the composer.json file from the +current directory, processes it, and updates, removes or installs all the +dependencies. + +php composer.phar update + +To limit the update operation to a few packages, you can list the package(s) +you want to update as such: + +php composer.phar update vendor/package1 foo/mypackage [...] + +You may also use an asterisk (*) pattern to limit the update operation to package(s) +from a specific vendor: + +php composer.phar update vendor/package1 foo/* [...] + +To run an update with more restrictive constraints you can use: + +php composer.phar update --with vendor/package:1.0.* + +To run a partial update with more restrictive constraints you can use the shorthand: + +php composer.phar update vendor/package:1.0.* + +To select packages names interactively with auto-completion use -i. + +Read more at https://getcomposer.org/doc/03-cli.md#update-u-upgrade +EOT +) +; +} + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$io = $this->getIO(); +if ($input->getOption('dev')) { +$io->writeError('You are using the deprecated option "--dev". It has no effect and will break in Composer 3.'); +} +if ($input->getOption('no-suggest')) { +$io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); +} + +$composer = $this->requireComposer(); + +if (!HttpDownloader::isCurlEnabled()) { +$io->writeError('Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.'); +} + +$packages = $input->getArgument('packages'); +$reqs = $this->formatRequirements($input->getOption('with')); + + +if (count($packages) > 0) { +$allowlistPackagesWithRequirements = array_filter($packages, static function ($pkg): bool { +return Preg::isMatch('{\S+[ =:]\S+}', $pkg); +}); +foreach ($this->formatRequirements($allowlistPackagesWithRequirements) as $package => $constraint) { +$reqs[$package] = $constraint; +} + + +foreach ($allowlistPackagesWithRequirements as $package) { +$packageName = Preg::replace('{^([^ =:]+)[ =:].*$}', '$1', $package); +$index = array_search($package, $packages); +$packages[$index] = $packageName; +} +} + +$rootPackage = $composer->getPackage(); +$rootPackage->setReferences(RootPackageLoader::extractReferences($reqs, $rootPackage->getReferences())); +$rootPackage->setStabilityFlags(RootPackageLoader::extractStabilityFlags($reqs, $rootPackage->getMinimumStability(), $rootPackage->getStabilityFlags())); + +$parser = new VersionParser; +$temporaryConstraints = []; +$rootRequirements = array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires()); +foreach ($reqs as $package => $constraint) { +$package = strtolower($package); +$parsedConstraint = $parser->parseConstraints($constraint); +$temporaryConstraints[$package] = $parsedConstraint; +if (isset($rootRequirements[$package]) && !Intervals::haveIntersections($parsedConstraint, $rootRequirements[$package]->getConstraint())) { +throw new \InvalidArgumentException('The temporary constraint "'.$constraint.'" for "'.$package.'" must be a subset of the constraint in your composer.json ('.$rootRequirements[$package]->getPrettyConstraint().')'); +} +} + +if ($input->getOption('interactive')) { +$packages = $this->getPackagesInteractively($io, $input, $output, $composer, $packages); +} + +if ($input->getOption('root-reqs')) { +$requires = array_keys($rootPackage->getRequires()); +if (!$input->getOption('no-dev')) { +$requires = array_merge($requires, array_keys($rootPackage->getDevRequires())); +} + +if (!empty($packages)) { +$packages = array_intersect($packages, $requires); +} else { +$packages = $requires; +} +} + + + +$filteredPackages = array_filter($packages, static function ($package): bool { +return !in_array($package, ['lock', 'nothing', 'mirrors'], true); +}); +$updateMirrors = $input->getOption('lock') || count($filteredPackages) !== count($packages); +$packages = $filteredPackages; + +if ($updateMirrors && !empty($packages)) { +$io->writeError('You cannot simultaneously update only a selection of packages and regenerate the lock file metadata.'); + +return -1; +} + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'update', $input, $output); +$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); + +$install = Installer::create($io, $composer); + +$config = $composer->getConfig(); +[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); + +$optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); +$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); +$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); +$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); + +$updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; +if ($input->getOption('with-all-dependencies')) { +$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; +} elseif ($input->getOption('with-dependencies')) { +$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; +} + +$install +->setDryRun($input->getOption('dry-run')) +->setVerbose($input->getOption('verbose')) +->setPreferSource($preferSource) +->setPreferDist($preferDist) +->setDevMode(!$input->getOption('no-dev')) +->setDumpAutoloader(!$input->getOption('no-autoloader')) +->setOptimizeAutoloader($optimize) +->setClassMapAuthoritative($authoritative) +->setApcuAutoloader($apcu, $apcuPrefix) +->setUpdate(true) +->setInstall(!$input->getOption('no-install')) +->setUpdateMirrors($updateMirrors) +->setUpdateAllowList($packages) +->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) +->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) +->setPreferStable($input->getOption('prefer-stable')) +->setPreferLowest($input->getOption('prefer-lowest')) +->setTemporaryConstraints($temporaryConstraints) +->setAudit(!$input->getOption('no-audit')) +->setAuditFormat($this->getAuditFormat($input)) +; + +if ($input->getOption('no-plugins')) { +$install->disablePlugins(); +} + +return $install->run(); +} + + + + + +private function getPackagesInteractively(IOInterface $io, InputInterface $input, OutputInterface $output, Composer $composer, array $packages): array +{ +if (!$input->isInteractive()) { +throw new \InvalidArgumentException('--interactive cannot be used in non-interactive terminals.'); +} + +$requires = array_merge( +$composer->getPackage()->getRequires(), +$composer->getPackage()->getDevRequires() +); +$autocompleterValues = []; +foreach ($requires as $require) { +$target = $require->getTarget(); +$autocompleterValues[strtolower($target)] = $target; +} + +$installedPackages = $composer->getRepositoryManager()->getLocalRepository()->getPackages(); +foreach ($installedPackages as $package) { +$autocompleterValues[$package->getName()] = $package->getPrettyName(); +} + +$helper = $this->getHelper('question'); +$question = new Question('Enter package name: ', null); + +$io->writeError('Press enter without value to end submission'); + +do { +$autocompleterValues = array_diff($autocompleterValues, $packages); +$question->setAutocompleterValues($autocompleterValues); +$addedPackage = $helper->ask($input, $output, $question); + +if (!is_string($addedPackage) || empty($addedPackage)) { +break; +} + +$addedPackage = strtolower($addedPackage); +if (!in_array($addedPackage, $packages)) { +$packages[] = $addedPackage; +} +} while (true); + +$packages = array_filter($packages); +if (!$packages) { +throw new \InvalidArgumentException('You must enter minimum one package.'); +} + +$table = new Table($output); +$table->setHeaders(['Selected packages']); +foreach ($packages as $package) { +$table->addRow([$package]); +} +$table->render(); + +if ($io->askConfirmation(sprintf( +'Would you like to continue and update the above package%s [yes]? ', +1 === count($packages) ? '' : 's' +))) { +return $packages; +} + +throw new \RuntimeException('Installation aborted.'); +} +} diff --git a/composer/src/Composer/Command/ValidateCommand.php b/composer/src/Composer/Command/ValidateCommand.php new file mode 100644 index 000000000..0b91239c5 --- /dev/null +++ b/composer/src/Composer/Command/ValidateCommand.php @@ -0,0 +1,220 @@ +setName('validate') +->setDescription('Validates a composer.json and composer.lock') +->setDefinition([ +new InputOption('no-check-all', null, InputOption::VALUE_NONE, 'Do not validate requires for overly strict/loose constraints'), +new InputOption('check-lock', null, InputOption::VALUE_NONE, 'Check if lock file is up to date (even when config.lock is false)'), +new InputOption('no-check-lock', null, InputOption::VALUE_NONE, 'Do not check if lock file is up to date'), +new InputOption('no-check-publish', null, InputOption::VALUE_NONE, 'Do not check for publish errors'), +new InputOption('no-check-version', null, InputOption::VALUE_NONE, 'Do not report a warning if the version field is present'), +new InputOption('with-dependencies', 'A', InputOption::VALUE_NONE, 'Also validate the composer.json of all installed dependencies'), +new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code for warnings as well as errors'), +new InputArgument('file', InputArgument::OPTIONAL, 'path to composer.json file'), +]) +->setHelp( +<<getArgument('file') ?: Factory::getComposerFile(); +$io = $this->getIO(); + +if (!file_exists($file)) { +$io->writeError('' . $file . ' not found.'); + +return 3; +} +if (!Filesystem::isReadable($file)) { +$io->writeError('' . $file . ' is not readable.'); + +return 3; +} + +$validator = new ConfigValidator($io); +$checkAll = $input->getOption('no-check-all') ? 0 : ValidatingArrayLoader::CHECK_ALL; +$checkPublish = !$input->getOption('no-check-publish'); +$checkLock = !$input->getOption('no-check-lock'); +$checkVersion = $input->getOption('no-check-version') ? 0 : ConfigValidator::CHECK_VERSION; +$isStrict = $input->getOption('strict'); +[$errors, $publishErrors, $warnings] = $validator->validate($file, $checkAll, $checkVersion); + +$lockErrors = []; +$composer = Factory::create($io, $file, $input->hasParameterOption('--no-plugins')); + +$checkLock = ($checkLock && $composer->getConfig()->get('lock')) || $input->getOption('check-lock'); +$locker = $composer->getLocker(); +if ($locker->isLocked() && !$locker->isFresh()) { +$lockErrors[] = '- The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `composer update` or `composer update `.'; +} + +if ($locker->isLocked()) { +$lockErrors = array_merge($lockErrors, $locker->getMissingRequirementInfo($composer->getPackage(), true)); +} + +$this->outputResult($io, $file, $errors, $warnings, $checkPublish, $publishErrors, $checkLock, $lockErrors, true); + + +$exitCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); + +if ($input->getOption('with-dependencies')) { +$localRepo = $composer->getRepositoryManager()->getLocalRepository(); +foreach ($localRepo->getPackages() as $package) { +$path = $composer->getInstallationManager()->getInstallPath($package); +$file = $path . '/composer.json'; +if (is_dir($path) && file_exists($file)) { +[$errors, $publishErrors, $warnings] = $validator->validate($file, $checkAll, $checkVersion); + +$this->outputResult($io, $package->getPrettyName(), $errors, $warnings, $checkPublish, $publishErrors); + + +$depCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); +$exitCode = max($depCode, $exitCode); +} +} +} + +$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'validate', $input, $output); +$eventCode = $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); + +return max($eventCode, $exitCode); +} + + + + + + + +private function outputResult(IOInterface $io, string $name, array &$errors, array &$warnings, bool $checkPublish = false, array $publishErrors = [], bool $checkLock = false, array $lockErrors = [], bool $printSchemaUrl = false): void +{ +$doPrintSchemaUrl = false; + +if ($errors) { +$io->writeError('' . $name . ' is invalid, the following errors/warnings were found:'); +} elseif ($publishErrors) { +$io->writeError('' . $name . ' is valid for simple usage with Composer but has'); +$io->writeError('strict errors that make it unable to be published as a package'); +$doPrintSchemaUrl = $printSchemaUrl; +} elseif ($warnings) { +$io->writeError('' . $name . ' is valid, but with a few warnings'); +$doPrintSchemaUrl = $printSchemaUrl; +} elseif ($lockErrors) { +$io->write('' . $name . ' is valid but your composer.lock has some '.($checkLock ? 'errors' : 'warnings').''); +} else { +$io->write('' . $name . ' is valid'); +} + +if ($doPrintSchemaUrl) { +$io->writeError('See https://getcomposer.org/doc/04-schema.md for details on the schema'); +} + +if ($errors) { +$errors = array_map(static function ($err): string { +return '- ' . $err; +}, $errors); +array_unshift($errors, '# General errors'); +} +if ($warnings) { +$warnings = array_map(static function ($err): string { +return '- ' . $err; +}, $warnings); +array_unshift($warnings, '# General warnings'); +} + + +$extraWarnings = []; + + +if ($publishErrors) { +$publishErrors = array_map(static function ($err): string { +return '- ' . $err; +}, $publishErrors); + +if ($checkPublish) { +array_unshift($publishErrors, '# Publish errors'); +$errors = array_merge($errors, $publishErrors); +} else { +array_unshift($publishErrors, '# Publish warnings'); +$extraWarnings = array_merge($extraWarnings, $publishErrors); +} +} + + +if ($lockErrors) { +if ($checkLock) { +array_unshift($lockErrors, '# Lock file errors'); +$errors = array_merge($errors, $lockErrors); +} else { +array_unshift($lockErrors, '# Lock file warnings'); +$extraWarnings = array_merge($extraWarnings, $lockErrors); +} +} + +$messages = [ +'error' => $errors, +'warning' => array_merge($warnings, $extraWarnings), +]; + +foreach ($messages as $style => $msgs) { +foreach ($msgs as $msg) { +if (strpos($msg, '#') === 0) { +$io->writeError('<' . $style . '>' . $msg . ''); +} else { +$io->writeError($msg); +} +} +} +} +} diff --git a/composer/src/Composer/Composer.php b/composer/src/Composer/Composer.php new file mode 100644 index 000000000..6e9b75475 --- /dev/null +++ b/composer/src/Composer/Composer.php @@ -0,0 +1,159 @@ +locker = $locker; +} + +public function getLocker(): Locker +{ +return $this->locker; +} + +public function setDownloadManager(DownloadManager $manager): void +{ +$this->downloadManager = $manager; +} + +public function getDownloadManager(): DownloadManager +{ +return $this->downloadManager; +} + +public function setArchiveManager(ArchiveManager $manager): void +{ +$this->archiveManager = $manager; +} + +public function getArchiveManager(): ArchiveManager +{ +return $this->archiveManager; +} + +public function setPluginManager(PluginManager $manager): void +{ +$this->pluginManager = $manager; +} + +public function getPluginManager(): PluginManager +{ +return $this->pluginManager; +} + +public function setAutoloadGenerator(AutoloadGenerator $autoloadGenerator): void +{ +$this->autoloadGenerator = $autoloadGenerator; +} + +public function getAutoloadGenerator(): AutoloadGenerator +{ +return $this->autoloadGenerator; +} +} diff --git a/composer/src/Composer/Config.php b/composer/src/Composer/Config.php new file mode 100644 index 000000000..8d8f28865 --- /dev/null +++ b/composer/src/Composer/Config.php @@ -0,0 +1,626 @@ + 300, +'use-include-path' => false, +'allow-plugins' => [], +'use-parent-dir' => 'prompt', +'preferred-install' => 'dist', +'notify-on-install' => true, +'github-protocols' => ['https', 'ssh', 'git'], +'gitlab-protocol' => null, +'vendor-dir' => 'vendor', +'bin-dir' => '{$vendor-dir}/bin', +'cache-dir' => '{$home}/cache', +'data-dir' => '{$home}', +'cache-files-dir' => '{$cache-dir}/files', +'cache-repo-dir' => '{$cache-dir}/repo', +'cache-vcs-dir' => '{$cache-dir}/vcs', +'cache-ttl' => 15552000, +'cache-files-ttl' => null, +'cache-files-maxsize' => '300MiB', +'cache-read-only' => false, +'bin-compat' => 'auto', +'discard-changes' => false, +'autoloader-suffix' => null, +'sort-packages' => false, +'optimize-autoloader' => false, +'classmap-authoritative' => false, +'apcu-autoloader' => false, +'prepend-autoloader' => true, +'github-domains' => ['github.com'], +'bitbucket-expose-hostname' => true, +'disable-tls' => false, +'secure-http' => true, +'secure-svn-domains' => [], +'cafile' => null, +'capath' => null, +'github-expose-hostname' => true, +'gitlab-domains' => ['gitlab.com'], +'store-auths' => 'prompt', +'platform' => [], +'archive-format' => 'tar', +'archive-dir' => '.', +'htaccess-protect' => true, +'use-github-api' => true, +'lock' => true, +'platform-check' => 'php-only', +'bitbucket-oauth' => [], +'github-oauth' => [], +'gitlab-oauth' => [], +'gitlab-token' => [], +'http-basic' => [], +'bearer' => [], +]; + + +public static $defaultRepositories = [ +'packagist.org' => [ +'type' => 'composer', +'url' => 'https://repo.packagist.org', +], +]; + + +private $config; + +private $baseDir; + +private $repositories; + +private $configSource; + +private $authConfigSource; + +private $localAuthConfigSource = null; + +private $useEnvironment; + +private $warnedHosts = []; + +private $sslVerifyWarnedHosts = []; + +private $sourceOfConfigValue = []; + + + + + +public function __construct(bool $useEnvironment = true, ?string $baseDir = null) +{ + +$this->config = static::$defaultConfig; + +$this->repositories = static::$defaultRepositories; +$this->useEnvironment = (bool) $useEnvironment; +$this->baseDir = is_string($baseDir) && '' !== $baseDir ? $baseDir : null; + +foreach ($this->config as $configKey => $configValue) { +$this->setSourceOfConfigValue($configValue, $configKey, self::SOURCE_DEFAULT); +} + +foreach ($this->repositories as $configKey => $configValue) { +$this->setSourceOfConfigValue($configValue, 'repositories.' . $configKey, self::SOURCE_DEFAULT); +} +} + +public function setConfigSource(ConfigSourceInterface $source): void +{ +$this->configSource = $source; +} + +public function getConfigSource(): ConfigSourceInterface +{ +return $this->configSource; +} + +public function setAuthConfigSource(ConfigSourceInterface $source): void +{ +$this->authConfigSource = $source; +} + +public function getAuthConfigSource(): ConfigSourceInterface +{ +return $this->authConfigSource; +} + +public function setLocalAuthConfigSource(ConfigSourceInterface $source): void +{ +$this->localAuthConfigSource = $source; +} + +public function getLocalAuthConfigSource(): ?ConfigSourceInterface +{ +return $this->localAuthConfigSource; +} + + + + + + +public function merge(array $config, string $source = self::SOURCE_UNKNOWN): void +{ + +if (!empty($config['config']) && is_array($config['config'])) { +foreach ($config['config'] as $key => $val) { +if (in_array($key, ['bitbucket-oauth', 'github-oauth', 'gitlab-oauth', 'gitlab-token', 'http-basic', 'bearer'], true) && isset($this->config[$key])) { +$this->config[$key] = array_merge($this->config[$key], $val); +$this->setSourceOfConfigValue($val, $key, $source); +} elseif (in_array($key, ['allow-plugins'], true) && isset($this->config[$key]) && is_array($this->config[$key]) && is_array($val)) { + + +$this->config[$key] = array_merge($val, $this->config[$key], $val); +$this->setSourceOfConfigValue($val, $key, $source); +} elseif (in_array($key, ['gitlab-domains', 'github-domains'], true) && isset($this->config[$key])) { +$this->config[$key] = array_unique(array_merge($this->config[$key], $val)); +$this->setSourceOfConfigValue($val, $key, $source); +} elseif ('preferred-install' === $key && isset($this->config[$key])) { +if (is_array($val) || is_array($this->config[$key])) { +if (is_string($val)) { +$val = ['*' => $val]; +} +if (is_string($this->config[$key])) { +$this->config[$key] = ['*' => $this->config[$key]]; +$this->sourceOfConfigValue[$key . '*'] = $source; +} +$this->config[$key] = array_merge($this->config[$key], $val); +$this->setSourceOfConfigValue($val, $key, $source); + +if (isset($this->config[$key]['*'])) { +$wildcard = $this->config[$key]['*']; +unset($this->config[$key]['*']); +$this->config[$key]['*'] = $wildcard; +} +} else { +$this->config[$key] = $val; +$this->setSourceOfConfigValue($val, $key, $source); +} +} else { +$this->config[$key] = $val; +$this->setSourceOfConfigValue($val, $key, $source); +} +} +} + +if (!empty($config['repositories']) && is_array($config['repositories'])) { +$this->repositories = array_reverse($this->repositories, true); +$newRepos = array_reverse($config['repositories'], true); +foreach ($newRepos as $name => $repository) { + +if (false === $repository) { +$this->disableRepoByName((string) $name); +continue; +} + + +if (is_array($repository) && 1 === count($repository) && false === current($repository)) { +$this->disableRepoByName((string) key($repository)); +continue; +} + + +if (isset($repository['type'], $repository['url']) && $repository['type'] === 'composer' && Preg::isMatch('{^https?://(?:[a-z0-9-.]+\.)?packagist.org(/|$)}', $repository['url'])) { +$this->disableRepoByName('packagist.org'); +} + + +if (is_int($name)) { +$this->repositories[] = $repository; +$this->setSourceOfConfigValue($repository, 'repositories.' . array_search($repository, $this->repositories, true), $source); +} else { +if ($name === 'packagist') { +$this->repositories[$name . '.org'] = $repository; +$this->setSourceOfConfigValue($repository, 'repositories.' . $name . '.org', $source); +} else { +$this->repositories[$name] = $repository; +$this->setSourceOfConfigValue($repository, 'repositories.' . $name, $source); +} +} +} +$this->repositories = array_reverse($this->repositories, true); +} +} + + + + +public function getRepositories(): array +{ +return $this->repositories; +} + + + + + + + + + +public function get(string $key, int $flags = 0) +{ +switch ($key) { + +case 'vendor-dir': +case 'bin-dir': +case 'process-timeout': +case 'data-dir': +case 'cache-dir': +case 'cache-files-dir': +case 'cache-repo-dir': +case 'cache-vcs-dir': +case 'cafile': +case 'capath': + +$env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); + +$val = $this->getComposerEnv($env); +if ($val !== false) { +$this->setSourceOfConfigValue($val, $key, $env); +} + +if ($key === 'process-timeout') { +return max(0, false !== $val ? (int) $val : $this->config[$key]); +} + +$val = rtrim((string) $this->process(false !== $val ? $val : $this->config[$key], $flags), '/\\'); +$val = Platform::expandPath($val); + +if (substr($key, -4) !== '-dir') { +return $val; +} + +return (($flags & self::RELATIVE_PATHS) === self::RELATIVE_PATHS) ? $val : $this->realpath($val); + + +case 'cache-read-only': +case 'htaccess-protect': + +$env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); + +$val = $this->getComposerEnv($env); +if (false === $val) { +$val = $this->config[$key]; +} else { +$this->setSourceOfConfigValue($val, $key, $env); +} + +return $val !== 'false' && (bool) $val; + + +case 'disable-tls': +case 'secure-http': +case 'use-github-api': +case 'lock': + +if ($key === 'secure-http' && $this->get('disable-tls') === true) { +return false; +} + +return $this->config[$key] !== 'false' && (bool) $this->config[$key]; + + +case 'cache-ttl': +return max(0, (int) $this->config[$key]); + + +case 'cache-files-maxsize': +if (!Preg::isMatch('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', (string) $this->config[$key], $matches)) { +throw new \RuntimeException( +"Could not parse the value of '$key': {$this->config[$key]}" +); +} +$size = (float) $matches[1]; +if (isset($matches[2])) { +switch (strtolower($matches[2])) { +case 'g': +$size *= 1024; + + +case 'm': +$size *= 1024; + + +case 'k': +$size *= 1024; +break; +} +} + +return max(0, (int) $size); + + +case 'cache-files-ttl': +if (isset($this->config[$key])) { +return max(0, (int) $this->config[$key]); +} + +return $this->get('cache-ttl'); + +case 'home': +return rtrim($this->process(Platform::expandPath($this->config[$key]), $flags), '/\\'); + +case 'bin-compat': +$value = $this->getComposerEnv('COMPOSER_BIN_COMPAT') ?: $this->config[$key]; + +if (!in_array($value, ['auto', 'full', 'proxy', 'symlink'])) { +throw new \RuntimeException( +"Invalid value for 'bin-compat': {$value}. Expected auto, full or proxy" +); +} + +if ($value === 'symlink') { +trigger_error('config.bin-compat "symlink" is deprecated since Composer 2.2, use auto, full (for Windows compatibility) or proxy instead.', E_USER_DEPRECATED); +} + +return $value; + +case 'discard-changes': +$env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES'); +if ($env !== false) { +if (!in_array($env, ['stash', 'true', 'false', '1', '0'], true)) { +throw new \RuntimeException( +"Invalid value for COMPOSER_DISCARD_CHANGES: {$env}. Expected 1, 0, true, false or stash" +); +} +if ('stash' === $env) { +return 'stash'; +} + + +return $env !== 'false' && (bool) $env; +} + +if (!in_array($this->config[$key], [true, false, 'stash'], true)) { +throw new \RuntimeException( +"Invalid value for 'discard-changes': {$this->config[$key]}. Expected true, false or stash" +); +} + +return $this->config[$key]; + +case 'github-protocols': +$protos = $this->config['github-protocols']; +if ($this->config['secure-http'] && false !== ($index = array_search('git', $protos))) { +unset($protos[$index]); +} +if (reset($protos) === 'http') { +throw new \RuntimeException('The http protocol for github is not available anymore, update your config\'s github-protocols to use "https", "git" or "ssh"'); +} + +return $protos; + +case 'autoloader-suffix': +if ($this->config[$key] === '') { +return null; +} + +return $this->process($this->config[$key], $flags); + +default: +if (!isset($this->config[$key])) { +return null; +} + +return $this->process($this->config[$key], $flags); +} +} + + + + +public function all(int $flags = 0): array +{ +$all = [ +'repositories' => $this->getRepositories(), +]; +foreach (array_keys($this->config) as $key) { +$all['config'][$key] = $this->get($key, $flags); +} + +return $all; +} + +public function getSourceOfValue(string $key): string +{ +$this->get($key); + +return $this->sourceOfConfigValue[$key] ?? self::SOURCE_UNKNOWN; +} + + + + +private function setSourceOfConfigValue($configValue, string $path, string $source): void +{ +$this->sourceOfConfigValue[$path] = $source; + +if (is_array($configValue)) { +foreach ($configValue as $key => $value) { +$this->setSourceOfConfigValue($value, $path . '.' . $key, $source); +} +} +} + + + + +public function raw(): array +{ +return [ +'repositories' => $this->getRepositories(), +'config' => $this->config, +]; +} + + + + +public function has(string $key): bool +{ +return array_key_exists($key, $this->config); +} + + + + + + + + + +private function process($value, int $flags) +{ +if (!is_string($value)) { +return $value; +} + +return Preg::replaceCallback('#\{\$(.+)\}#', function ($match) use ($flags) { +assert(is_string($match[1])); +return $this->get($match[1], $flags); +}, $value); +} + + + + + + +private function realpath(string $path): string +{ +if (Preg::isMatch('{^(?:/|[a-z]:|[a-z0-9.]+://|\\\\\\\\)}i', $path)) { +return $path; +} + +return $this->baseDir ? $this->baseDir . '/' . $path : $path; +} + + + + + + + + + +private function getComposerEnv(string $var) +{ +if ($this->useEnvironment) { +return Platform::getEnv($var); +} + +return false; +} + +private function disableRepoByName(string $name): void +{ +if (isset($this->repositories[$name])) { +unset($this->repositories[$name]); +} elseif ($name === 'packagist') { +unset($this->repositories['packagist.org']); +} +} + + + + + + + +public function prohibitUrlByConfig(string $url, ?IOInterface $io = null, array $repoOptions = []): void +{ + +if (false === filter_var($url, FILTER_VALIDATE_URL)) { +return; +} + + +$scheme = parse_url($url, PHP_URL_SCHEME); +$hostname = parse_url($url, PHP_URL_HOST); +if (in_array($scheme, ['http', 'git', 'ftp', 'svn'])) { +if ($this->get('secure-http')) { +if ($scheme === 'svn') { +if (in_array($hostname, $this->get('secure-svn-domains'), true)) { +return; +} + +throw new TransportException("Your configuration does not allow connections to $url. See https://getcomposer.org/doc/06-config.md#secure-svn-domains for details."); +} + +throw new TransportException("Your configuration does not allow connections to $url. See https://getcomposer.org/doc/06-config.md#secure-http for details."); +} +if ($io !== null) { +if (is_string($hostname)) { +if (!isset($this->warnedHosts[$hostname])) { +$io->writeError("Warning: Accessing $hostname over $scheme which is an insecure protocol."); +} +$this->warnedHosts[$hostname] = true; +} +} +} + +if ($io !== null && is_string($hostname) && !isset($this->sslVerifyWarnedHosts[$hostname])) { +$warning = null; +if (isset($repoOptions['ssl']['verify_peer']) && !(bool) $repoOptions['ssl']['verify_peer']) { +$warning = 'verify_peer'; +} + +if (isset($repoOptions['ssl']['verify_peer_name']) && !(bool) $repoOptions['ssl']['verify_peer_name']) { +$warning = $warning === null ? 'verify_peer_name' : $warning . ' and verify_peer_name'; +} + +if ($warning !== null) { +$io->writeError("Warning: Accessing $hostname with $warning disabled."); +$this->sslVerifyWarnedHosts[$hostname] = true; +} +} +} + + + + + + + + + + + +public static function disableProcessTimeout(): void +{ + +ProcessExecutor::setTimeout(0); +} +} diff --git a/composer/src/Composer/Config/ConfigSourceInterface.php b/composer/src/Composer/Config/ConfigSourceInterface.php new file mode 100644 index 000000000..449b795be --- /dev/null +++ b/composer/src/Composer/Config/ConfigSourceInterface.php @@ -0,0 +1,84 @@ +file = $file; +$this->authConfig = $authConfig; +} + + + + +public function getName(): string +{ +return $this->file->getPath(); +} + + + + +public function addRepository(string $name, $config, bool $append = true): void +{ +$this->manipulateJson('addRepository', static function (&$config, $repo, $repoConfig) use ($append): void { + + +if (isset($config['repositories'])) { +foreach ($config['repositories'] as $index => $val) { +if ($index === $repo) { +continue; +} +if (is_numeric($index) && ($val === ['packagist' => false] || $val === ['packagist.org' => false])) { +unset($config['repositories'][$index]); +$config['repositories']['packagist.org'] = false; +break; +} +} +} + +if ($append) { +$config['repositories'][$repo] = $repoConfig; +} else { +$config['repositories'] = [$repo => $repoConfig] + $config['repositories']; +} +}, $name, $config, $append); +} + + + + +public function removeRepository(string $name): void +{ +$this->manipulateJson('removeRepository', static function (&$config, $repo): void { +unset($config['repositories'][$repo]); +}, $name); +} + + + + +public function addConfigSetting(string $name, $value): void +{ +$authConfig = $this->authConfig; +$this->manipulateJson('addConfigSetting', static function (&$config, $key, $val) use ($authConfig): void { +if (Preg::isMatch('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|bearer|http-basic|platform)\.}', $key)) { +[$key, $host] = explode('.', $key, 2); +if ($authConfig) { +$config[$key][$host] = $val; +} else { +$config['config'][$key][$host] = $val; +} +} else { +$config['config'][$key] = $val; +} +}, $name, $value); +} + + + + +public function removeConfigSetting(string $name): void +{ +$authConfig = $this->authConfig; +$this->manipulateJson('removeConfigSetting', static function (&$config, $key) use ($authConfig): void { +if (Preg::isMatch('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|bearer|http-basic|platform)\.}', $key)) { +[$key, $host] = explode('.', $key, 2); +if ($authConfig) { +unset($config[$key][$host]); +} else { +unset($config['config'][$key][$host]); +} +} else { +unset($config['config'][$key]); +} +}, $name); +} + + + + +public function addProperty(string $name, $value): void +{ +$this->manipulateJson('addProperty', static function (&$config, $key, $val): void { +if (strpos($key, 'extra.') === 0 || strpos($key, 'scripts.') === 0) { +$bits = explode('.', $key); +$last = array_pop($bits); +$arr = &$config[reset($bits)]; +foreach ($bits as $bit) { +if (!isset($arr[$bit])) { +$arr[$bit] = []; +} +$arr = &$arr[$bit]; +} +$arr[$last] = $val; +} else { +$config[$key] = $val; +} +}, $name, $value); +} + + + + +public function removeProperty(string $name): void +{ +$this->manipulateJson('removeProperty', static function (&$config, $key): void { +if (strpos($key, 'extra.') === 0 || strpos($key, 'scripts.') === 0) { +$bits = explode('.', $key); +$last = array_pop($bits); +$arr = &$config[reset($bits)]; +foreach ($bits as $bit) { +if (!isset($arr[$bit])) { +return; +} +$arr = &$arr[$bit]; +} +unset($arr[$last]); +} else { +unset($config[$key]); +} +}, $name); +} + + + + +public function addLink(string $type, string $name, string $value): void +{ +$this->manipulateJson('addLink', static function (&$config, $type, $name, $value): void { +$config[$type][$name] = $value; +}, $type, $name, $value); +} + + + + +public function removeLink(string $type, string $name): void +{ +$this->manipulateJson('removeSubNode', static function (&$config, $type, $name): void { +unset($config[$type][$name]); +}, $type, $name); +$this->manipulateJson('removeMainKeyIfEmpty', static function (&$config, $type): void { +if (0 === count($config[$type])) { +unset($config[$type]); +} +}, $type); +} + + + + +private function manipulateJson(string $method, callable $fallback, ...$args): void +{ +if ($this->file->exists()) { +if (!is_writable($this->file->getPath())) { +throw new \RuntimeException(sprintf('The file "%s" is not writable.', $this->file->getPath())); +} + +if (!Filesystem::isReadable($this->file->getPath())) { +throw new \RuntimeException(sprintf('The file "%s" is not readable.', $this->file->getPath())); +} + +$contents = file_get_contents($this->file->getPath()); +} elseif ($this->authConfig) { +$contents = "{\n}\n"; +} else { +$contents = "{\n \"config\": {\n }\n}\n"; +} + +$manipulator = new JsonManipulator($contents); + +$newFile = !$this->file->exists(); + + +if ($this->authConfig && $method === 'addConfigSetting') { +$method = 'addSubNode'; +[$mainNode, $name] = explode('.', $args[0], 2); +$args = [$mainNode, $name, $args[1]]; +} elseif ($this->authConfig && $method === 'removeConfigSetting') { +$method = 'removeSubNode'; +[$mainNode, $name] = explode('.', $args[0], 2); +$args = [$mainNode, $name]; +} + + +if (call_user_func_array([$manipulator, $method], $args)) { +file_put_contents($this->file->getPath(), $manipulator->getContents()); +} else { + +$config = $this->file->read(); +$this->arrayUnshiftRef($args, $config); +$fallback(...$args); + +foreach (['require', 'require-dev', 'conflict', 'provide', 'replace', 'suggest', 'config', 'autoload', 'autoload-dev', 'scripts', 'scripts-descriptions', 'support'] as $prop) { +if (isset($config[$prop]) && $config[$prop] === []) { +$config[$prop] = new \stdClass; +} +} +foreach (['psr-0', 'psr-4'] as $prop) { +if (isset($config['autoload'][$prop]) && $config['autoload'][$prop] === []) { +$config['autoload'][$prop] = new \stdClass; +} +if (isset($config['autoload-dev'][$prop]) && $config['autoload-dev'][$prop] === []) { +$config['autoload-dev'][$prop] = new \stdClass; +} +} +foreach (['platform', 'http-basic', 'bearer', 'gitlab-token', 'gitlab-oauth', 'github-oauth', 'preferred-install'] as $prop) { +if (isset($config['config'][$prop]) && $config['config'][$prop] === []) { +$config['config'][$prop] = new \stdClass; +} +} +$this->file->write($config); +} + +try { +$this->file->validateSchema(JsonFile::LAX_SCHEMA); +} catch (JsonValidationException $e) { + +file_put_contents($this->file->getPath(), $contents); +throw new \RuntimeException('Failed to update composer.json with a valid format, reverting to the original content. Please report an issue to us with details (command you run and a copy of your composer.json). '.PHP_EOL.implode(PHP_EOL, $e->getErrors()), 0, $e); +} + +if ($newFile) { +Silencer::call('chmod', $this->file->getPath(), 0600); +} +} + + + + + + + +private function arrayUnshiftRef(array &$array, &$value): int +{ +$return = array_unshift($array, ''); +$array[0] = &$value; + +return $return; +} +} diff --git a/composer/src/Composer/Console/Application.php b/composer/src/Composer/Console/Application.php new file mode 100644 index 000000000..cd02163e2 --- /dev/null +++ b/composer/src/Composer/Console/Application.php @@ -0,0 +1,663 @@ +io = new NullIO(); + +$this->signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) { +$this->io->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); + +$handler->exitWithLastSignal(); +}); + +if (!$shutdownRegistered) { +$shutdownRegistered = true; + +register_shutdown_function(static function (): void { +$lastError = error_get_last(); + +if ($lastError && $lastError['message'] && +(strpos($lastError['message'], 'Allowed memory') !== false || +strpos($lastError['message'], 'exceeded memory') !== false )) { +echo "\n". 'Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.'; +} +}); +} + +$this->initialWorkingDirectory = getcwd(); + +parent::__construct($name, $version); +} + +public function __destruct() +{ +$this->signalHandler->unregister(); +} + +public function run(?InputInterface $input = null, ?OutputInterface $output = null): int +{ +if (null === $output) { +$output = Factory::createOutput(); +} + +return parent::run($input, $output); +} + +public function doRun(InputInterface $input, OutputInterface $output): int +{ +$this->disablePluginsByDefault = $input->hasParameterOption('--no-plugins'); +$this->disableScriptsByDefault = $input->hasParameterOption('--no-scripts'); + +$stdin = defined('STDIN') ? STDIN : fopen('php://stdin', 'r'); +if (Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING') !== '1' && (Platform::getEnv('COMPOSER_NO_INTERACTION') || $stdin === false || !Platform::isTty($stdin))) { +$input->setInteractive(false); +} + +$io = $this->io = new ConsoleIO($input, $output, new HelperSet([ +new QuestionHelper(), +])); + + +ErrorHandler::register($io); + +if ($input->hasParameterOption('--no-cache')) { +$io->writeError('Disabling cache usage', true, IOInterface::DEBUG); +Platform::putEnv('COMPOSER_CACHE_DIR', Platform::isWindows() ? 'nul' : '/dev/null'); +} + + +$newWorkDir = $this->getNewWorkingDir($input); +if (null !== $newWorkDir) { +$oldWorkingDir = Platform::getCwd(true); +chdir($newWorkDir); +$this->initialWorkingDirectory = $newWorkDir; +$cwd = Platform::getCwd(true); +$io->writeError('Changed CWD to ' . ($cwd !== '' ? $cwd : $newWorkDir), true, IOInterface::DEBUG); +} + + +$commandName = ''; +if ($name = $this->getCommandName($input)) { +try { +$commandName = $this->find($name)->getName(); +} catch (CommandNotFoundException $e) { + +$commandName = false; +} catch (\InvalidArgumentException $e) { +} +} + + +if ($io->isInteractive() && null === $newWorkDir && !in_array($commandName, ['', 'list', 'init', 'about', 'help', 'diagnose', 'self-update', 'global', 'create-project', 'outdated'], true) && !file_exists(Factory::getComposerFile()) && ($useParentDirIfNoJsonAvailable = $this->getUseParentDirConfigValue()) !== false) { +$dir = dirname(Platform::getCwd(true)); +$home = realpath(Platform::getEnv('HOME') ?: Platform::getEnv('USERPROFILE') ?: '/'); + + +while (dirname($dir) !== $dir && $dir !== $home) { +if (file_exists($dir.'/'.Factory::getComposerFile())) { +if ($useParentDirIfNoJsonAvailable === true || $io->askConfirmation('No composer.json in current directory, do you want to use the one at '.$dir.'? [Y,n]? ')) { +if ($useParentDirIfNoJsonAvailable === true) { +$io->writeError('No composer.json in current directory, changing working directory to '.$dir.''); +} else { +$io->writeError('Always want to use the parent dir? Use "composer config --global use-parent-dir true" to change the default.'); +} +$oldWorkingDir = Platform::getCwd(true); +chdir($dir); +} +break; +} +$dir = dirname($dir); +} +} + +$needsSudoCheck = !Platform::isWindows() +&& function_exists('exec') +&& !Platform::getEnv('COMPOSER_ALLOW_SUPERUSER') +&& (ini_get('open_basedir') || !file_exists('/.dockerenv')); +$isNonAllowedRoot = false; + + +if ($needsSudoCheck) { +$isNonAllowedRoot = function_exists('posix_getuid') && posix_getuid() === 0; + +if ($isNonAllowedRoot) { +if ($uid = (int) Platform::getEnv('SUDO_UID')) { + + +Silencer::call('exec', "sudo -u \\#{$uid} sudo -K > /dev/null 2>&1"); +} +} + + +Silencer::call('exec', 'sudo -K > /dev/null 2>&1'); +} + + + +$mayNeedPluginCommand = false === $input->hasParameterOption(['--version', '-V']) +&& ( + +false === $commandName + +|| in_array($commandName, ['', 'list', 'help'], true) + + +|| ($commandName === '_complete' && !$isNonAllowedRoot) +); + +if ($mayNeedPluginCommand && !$this->disablePluginsByDefault && !$this->hasPluginCommands) { + + +if ($isNonAllowedRoot) { +$io->writeError('Do not run Composer as root/super user! See https://getcomposer.org/root for details'); + +if ($io->isInteractive() && $io->askConfirmation('Continue as root/super user [yes]? ')) { + +$isNonAllowedRoot = false; +} else { +$io->writeError('Aborting as no plugin should be loaded if running as super user is not explicitly allowed'); + +return 1; +} +} + +try { +foreach ($this->getPluginCommands() as $command) { +if ($this->has($command->getName())) { +$io->writeError('Plugin command '.$command->getName().' ('.get_class($command).') would override a Composer command and has been skipped'); +} else { +$this->add($command); +} +} +} catch (NoSslException $e) { + +} catch (ParsingException $e) { +$details = $e->getDetails(); + +$file = realpath(Factory::getComposerFile()); + +$line = null; +if ($details && isset($details['line'])) { +$line = $details['line']; +} + +$ghe = new GithubActionError($this->io); +$ghe->emit($e->getMessage(), $file, $line); + +throw $e; +} + +$this->hasPluginCommands = true; +} + +if ($isNonAllowedRoot && !$io->isInteractive()) { +$io->writeError('Composer plugins have been disabled for safety in this non-interactive session. Set COMPOSER_ALLOW_SUPERUSER=1 if you want to allow plugins to run as root/super user.'); +$this->disablePluginsByDefault = true; +} + + +$isProxyCommand = false; +if ($name = $this->getCommandName($input)) { +try { +$command = $this->find($name); +$commandName = $command->getName(); +$isProxyCommand = ($command instanceof Command\BaseCommand && $command->isProxyCommand()); +} catch (\InvalidArgumentException $e) { +} +} + +if (!$isProxyCommand) { +$io->writeError(sprintf( +'Running %s (%s) with %s on %s', +Composer::getVersion(), +Composer::RELEASE_DATE, +defined('HHVM_VERSION') ? 'HHVM '.HHVM_VERSION : 'PHP '.PHP_VERSION, +function_exists('php_uname') ? php_uname('s') . ' / ' . php_uname('r') : 'Unknown OS' +), true, IOInterface::DEBUG); + +if (PHP_VERSION_ID < 70205) { +$io->writeError('Composer supports PHP 7.2.5 and above, you will most likely encounter problems with your PHP '.PHP_VERSION.'. Upgrading is strongly recommended but you can use Composer 2.2.x LTS as a fallback.'); +} + +if (XdebugHandler::isXdebugActive() && !Platform::getEnv('COMPOSER_DISABLE_XDEBUG_WARN')) { +$io->writeError('Composer is operating slower than normal because you have Xdebug enabled. See https://getcomposer.org/xdebug'); +} + +if (defined('COMPOSER_DEV_WARNING_TIME') && $commandName !== 'self-update' && $commandName !== 'selfupdate' && time() > COMPOSER_DEV_WARNING_TIME) { +$io->writeError(sprintf('Warning: This development build of Composer is over 60 days old. It is recommended to update it by running "%s self-update" to get the latest version.', $_SERVER['PHP_SELF'])); +} + +if ($isNonAllowedRoot) { +if ($commandName !== 'self-update' && $commandName !== 'selfupdate' && $commandName !== '_complete') { +$io->writeError('Do not run Composer as root/super user! See https://getcomposer.org/root for details'); + +if ($io->isInteractive()) { +if (!$io->askConfirmation('Continue as root/super user [yes]? ')) { +return 1; +} +} +} +} + + +Silencer::call(static function () use ($io): void { +$tempfile = sys_get_temp_dir() . '/temp-' . md5(microtime()); +if (!(file_put_contents($tempfile, __FILE__) && (file_get_contents($tempfile) === __FILE__) && unlink($tempfile) && !file_exists($tempfile))) { +$io->writeError(sprintf('PHP temp directory (%s) does not exist or is not writable to Composer. Set sys_temp_dir in your php.ini', sys_get_temp_dir())); +} +}); + + +$file = Factory::getComposerFile(); +if (is_file($file) && Filesystem::isReadable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { +if (isset($composer['scripts']) && is_array($composer['scripts'])) { +foreach ($composer['scripts'] as $script => $dummy) { +if (!defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { +if ($this->has($script)) { +$io->writeError('A script named '.$script.' would override a Composer command and has been skipped'); +} else { +$description = null; + +if (isset($composer['scripts-descriptions'][$script])) { +$description = $composer['scripts-descriptions'][$script]; +} + +$this->add(new Command\ScriptAliasCommand($script, $description)); +} +} +} +} +} +} + +try { +if ($input->hasParameterOption('--profile')) { +$startTime = microtime(true); +$this->io->enableDebugging($startTime); +} + +$result = parent::doRun($input, $output); + + +if (isset($oldWorkingDir) && '' !== $oldWorkingDir) { +Silencer::call('chdir', $oldWorkingDir); +} + +if (isset($startTime)) { +$io->writeError('Memory usage: '.round(memory_get_usage() / 1024 / 1024, 2).'MiB (peak: '.round(memory_get_peak_usage() / 1024 / 1024, 2).'MiB), time: '.round(microtime(true) - $startTime, 2).'s'); +} + +return $result; +} catch (ScriptExecutionException $e) { +return $e->getCode(); +} catch (\Throwable $e) { +$ghe = new GithubActionError($this->io); +$ghe->emit($e->getMessage()); + +$this->hintCommonErrors($e, $output); + + + +if (!$e instanceof \Exception) { +if ($output instanceof ConsoleOutputInterface) { +$this->renderThrowable($e, $output->getErrorOutput()); +} else { +$this->renderThrowable($e, $output); +} + +return max(1, $e->getCode()); +} + +throw $e; +} finally { +restore_error_handler(); +} +} + + + + + +private function getNewWorkingDir(InputInterface $input): ?string +{ + +$workingDir = $input->getParameterOption(['--working-dir', '-d'], null, true); +if (null !== $workingDir && !is_dir($workingDir)) { +throw new \RuntimeException('Invalid working directory specified, '.$workingDir.' does not exist.'); +} + +return $workingDir; +} + +private function hintCommonErrors(\Throwable $exception, OutputInterface $output): void +{ +$io = $this->getIO(); + +if ((get_class($exception) === LogicException::class || $exception instanceof \Error) && $output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) { +$output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); +} + +Silencer::suppress(); +try { +$composer = $this->getComposer(false, true); +if (null !== $composer && function_exists('disk_free_space')) { +$config = $composer->getConfig(); + +$minSpaceFree = 100 * 1024 * 1024; +if ((($df = disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) +|| (($df = disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) +|| (($df = disk_free_space($dir = sys_get_temp_dir())) !== false && $df < $minSpaceFree) +) { +$io->writeError('The disk hosting '.$dir.' has less than 100MiB of free space, this may be the cause of the following exception', true, IOInterface::QUIET); +} +} +} catch (\Exception $e) { +} +Silencer::restore(); + +if (Platform::isWindows() && false !== strpos($exception->getMessage(), 'The system cannot find the path specified')) { +$io->writeError('The following exception may be caused by a stale entry in your cmd.exe AutoRun', true, IOInterface::QUIET); +$io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#-the-system-cannot-find-the-path-specified-windows- for details', true, IOInterface::QUIET); +} + +if (false !== strpos($exception->getMessage(), 'fork failed - Cannot allocate memory')) { +$io->writeError('The following exception is caused by a lack of memory or swap, or not having swap configured', true, IOInterface::QUIET); +$io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details', true, IOInterface::QUIET); +} + +if ($exception instanceof ProcessTimedOutException) { +$io->writeError('The following exception is caused by a process timeout', true, IOInterface::QUIET); +$io->writeError('Check https://getcomposer.org/doc/06-config.md#process-timeout for details', true, IOInterface::QUIET); +} + +$hints = HttpDownloader::getExceptionHints($exception); +if (null !== $hints && count($hints) > 0) { +foreach ($hints as $hint) { +$io->writeError($hint, true, IOInterface::QUIET); +} +} +} + + + + + + +public function getComposer(bool $required = true, ?bool $disablePlugins = null, ?bool $disableScripts = null): ?Composer +{ +if (null === $disablePlugins) { +$disablePlugins = $this->disablePluginsByDefault; +} +if (null === $disableScripts) { +$disableScripts = $this->disableScriptsByDefault; +} + +if (null === $this->composer) { +try { +$this->composer = Factory::create(Platform::isInputCompletionProcess() ? new NullIO() : $this->io, null, $disablePlugins, $disableScripts); +} catch (\InvalidArgumentException $e) { +if ($required) { +$this->io->writeError($e->getMessage()); +if ($this->areExceptionsCaught()) { +exit(1); +} +throw $e; +} +} catch (JsonValidationException $e) { +if ($required) { +throw $e; +} +} catch (RuntimeException $e) { +if ($required) { +throw $e; +} +} +} + +return $this->composer; +} + + + + +public function resetComposer(): void +{ +$this->composer = null; +if (method_exists($this->getIO(), 'resetAuthentications')) { +$this->getIO()->resetAuthentications(); +} +} + +public function getIO(): IOInterface +{ +return $this->io; +} + +public function getHelp(): string +{ +return self::$logo . parent::getHelp(); +} + + + + + +protected function getDefaultCommands(): array +{ +$commands = array_merge(parent::getDefaultCommands(), [ +new Command\AboutCommand(), +new Command\ConfigCommand(), +new Command\DependsCommand(), +new Command\ProhibitsCommand(), +new Command\InitCommand(), +new Command\InstallCommand(), +new Command\CreateProjectCommand(), +new Command\UpdateCommand(), +new Command\SearchCommand(), +new Command\ValidateCommand(), +new Command\AuditCommand(), +new Command\ShowCommand(), +new Command\SuggestsCommand(), +new Command\RequireCommand(), +new Command\DumpAutoloadCommand(), +new Command\StatusCommand(), +new Command\ArchiveCommand(), +new Command\DiagnoseCommand(), +new Command\RunScriptCommand(), +new Command\LicensesCommand(), +new Command\GlobalCommand(), +new Command\ClearCacheCommand(), +new Command\RemoveCommand(), +new Command\HomeCommand(), +new Command\ExecCommand(), +new Command\OutdatedCommand(), +new Command\CheckPlatformReqsCommand(), +new Command\FundCommand(), +new Command\ReinstallCommand(), +new Command\BumpCommand(), +]); + +if (strpos(__FILE__, 'phar:') === 0 || '1' === Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING')) { +$commands[] = new Command\SelfUpdateCommand(); +} + +return $commands; +} + +public function getLongVersion(): string +{ +$branchAliasString = ''; +if (Composer::BRANCH_ALIAS_VERSION && Composer::BRANCH_ALIAS_VERSION !== '@package_branch_alias_version'.'@') { +$branchAliasString = sprintf(' (%s)', Composer::BRANCH_ALIAS_VERSION); +} + +return sprintf( +'%s version %s%s %s', +$this->getName(), +$this->getVersion(), +$branchAliasString, +Composer::RELEASE_DATE +); +} + +protected function getDefaultInputDefinition(): InputDefinition +{ +$definition = parent::getDefaultInputDefinition(); +$definition->addOption(new InputOption('--profile', null, InputOption::VALUE_NONE, 'Display timing and memory usage information')); +$definition->addOption(new InputOption('--no-plugins', null, InputOption::VALUE_NONE, 'Whether to disable plugins.')); +$definition->addOption(new InputOption('--no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.')); +$definition->addOption(new InputOption('--working-dir', '-d', InputOption::VALUE_REQUIRED, 'If specified, use the given directory as working directory.')); +$definition->addOption(new InputOption('--no-cache', null, InputOption::VALUE_NONE, 'Prevent use of the cache')); + +return $definition; +} + + + + +private function getPluginCommands(): array +{ +$commands = []; + +$composer = $this->getComposer(false, false); +if (null === $composer) { +$composer = Factory::createGlobal($this->io, $this->disablePluginsByDefault, $this->disableScriptsByDefault); +} + +if (null !== $composer) { +$pm = $composer->getPluginManager(); +foreach ($pm->getPluginCapabilities('Composer\Plugin\Capability\CommandProvider', ['composer' => $composer, 'io' => $this->io]) as $capability) { +$newCommands = $capability->getCommands(); +if (!is_array($newCommands)) { +throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' failed to return an array from getCommands'); +} +foreach ($newCommands as $command) { +if (!$command instanceof Command\BaseCommand) { +throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' returned an invalid value, we expected an array of Composer\Command\BaseCommand objects'); +} +} +$commands = array_merge($commands, $newCommands); +} +} + +return $commands; +} + + + + + + +public function getInitialWorkingDirectory() +{ +return $this->initialWorkingDirectory; +} + + + + +private function getUseParentDirConfigValue() +{ +$config = Factory::createConfig($this->io); + +return $config->get('use-parent-dir'); +} +} diff --git a/composer/src/Composer/Console/GithubActionError.php b/composer/src/Composer/Console/GithubActionError.php new file mode 100644 index 000000000..c27f2a188 --- /dev/null +++ b/composer/src/Composer/Console/GithubActionError.php @@ -0,0 +1,68 @@ +io = $io; +} + +public function emit(string $message, ?string $file = null, ?int $line = null): void +{ +if (Platform::getEnv('GITHUB_ACTIONS') && !Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING')) { +$message = $this->escapeData($message); + +if ($file && $line) { +$file = $this->escapeProperty($file); +$this->io->write("::error file=". $file .",line=". $line ."::". $message); +} elseif ($file) { +$file = $this->escapeProperty($file); +$this->io->write("::error file=". $file ."::". $message); +} else { +$this->io->write("::error ::". $message); +} +} +} + +private function escapeData(string $data): string +{ + +$data = str_replace("%", '%25', $data); +$data = str_replace("\r", '%0D', $data); +$data = str_replace("\n", '%0A', $data); + +return $data; +} + +private function escapeProperty(string $property): string +{ + +$property = str_replace("%", '%25', $property); +$property = str_replace("\r", '%0D', $property); +$property = str_replace("\n", '%0A', $property); +$property = str_replace(":", '%3A', $property); +$property = str_replace(",", '%2C', $property); + +return $property; +} +} diff --git a/composer/src/Composer/Console/HtmlOutputFormatter.php b/composer/src/Composer/Console/HtmlOutputFormatter.php new file mode 100644 index 000000000..5b094edb3 --- /dev/null +++ b/composer/src/Composer/Console/HtmlOutputFormatter.php @@ -0,0 +1,104 @@ + 'black', +31 => 'red', +32 => 'green', +33 => 'yellow', +34 => 'blue', +35 => 'magenta', +36 => 'cyan', +37 => 'white', +]; + +private static $availableBackgroundColors = [ +40 => 'black', +41 => 'red', +42 => 'green', +43 => 'yellow', +44 => 'blue', +45 => 'magenta', +46 => 'cyan', +47 => 'white', +]; + +private static $availableOptions = [ +1 => 'bold', +4 => 'underscore', + + + +]; + + + + +public function __construct(array $styles = []) +{ +parent::__construct(true, $styles); +} + +public function format(?string $message): ?string +{ +$formatted = parent::format($message); + +if ($formatted === null) { +return null; +} + +$clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)'; + +return Preg::replaceCallback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", Closure::fromCallable([$this, 'formatHtml']), $formatted); +} + + + + +private function formatHtml(array $matches): string +{ +assert(is_string($matches[1])); +$out = ''.$matches[2].''; +} +} diff --git a/composer/src/Composer/Console/Input/InputArgument.php b/composer/src/Composer/Console/Input/InputArgument.php new file mode 100644 index 000000000..3f3e7607f --- /dev/null +++ b/composer/src/Composer/Console/Input/InputArgument.php @@ -0,0 +1,69 @@ +suggestedValues = $suggestedValues; +} + + + + + + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +$values = $this->suggestedValues; +if ($values instanceof \Closure && !\is_array($values = $values($input, $suggestions))) { +throw new LogicException(sprintf('Closure for option "%s" must return an array. Got "%s".', $this->getName(), get_debug_type($values))); +} +if ([] !== $values) { +$suggestions->suggestValues($values); +} +} +} diff --git a/composer/src/Composer/Console/Input/InputOption.php b/composer/src/Composer/Console/Input/InputOption.php new file mode 100644 index 000000000..ff59ef4e6 --- /dev/null +++ b/composer/src/Composer/Console/Input/InputOption.php @@ -0,0 +1,72 @@ +suggestedValues = $suggestedValues; + +if ([] !== $suggestedValues && !$this->acceptValue()) { +throw new LogicException('Cannot set suggested values if the option does not accept a value.'); +} +} + + + + + + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +$values = $this->suggestedValues; +if ($values instanceof \Closure && !\is_array($values = $values($input, $suggestions))) { +throw new LogicException(sprintf('Closure for argument "%s" must return an array. Got "%s".', $this->getName(), get_debug_type($values))); +} +if ([] !== $values) { +$suggestions->suggestValues($values); +} +} +} diff --git a/composer/src/Composer/DependencyResolver/Decisions.php b/composer/src/Composer/DependencyResolver/Decisions.php new file mode 100644 index 000000000..1d437e94a --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Decisions.php @@ -0,0 +1,233 @@ +pool = $pool; +$this->decisionMap = []; +} + +public function decide(int $literal, int $level, Rule $why): void +{ +$this->addDecision($literal, $level); +$this->decisionQueue[] = [ +self::DECISION_LITERAL => $literal, +self::DECISION_REASON => $why, +]; +} + +public function satisfy(int $literal): bool +{ +$packageId = abs($literal); + +return ( +$literal > 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 || +$literal < 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 +); +} + +public function conflict(int $literal): bool +{ +$packageId = abs($literal); + +return ( +(isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 && $literal < 0) || +(isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 && $literal > 0) +); +} + +public function decided(int $literalOrPackageId): bool +{ +return !empty($this->decisionMap[abs($literalOrPackageId)]); +} + +public function undecided(int $literalOrPackageId): bool +{ +return empty($this->decisionMap[abs($literalOrPackageId)]); +} + +public function decidedInstall(int $literalOrPackageId): bool +{ +$packageId = abs($literalOrPackageId); + +return isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0; +} + +public function decisionLevel(int $literalOrPackageId): int +{ +$packageId = abs($literalOrPackageId); +if (isset($this->decisionMap[$packageId])) { +return abs($this->decisionMap[$packageId]); +} + +return 0; +} + +public function decisionRule(int $literalOrPackageId): ?Rule +{ +$packageId = abs($literalOrPackageId); + +foreach ($this->decisionQueue as $decision) { +if ($packageId === abs($decision[self::DECISION_LITERAL])) { +return $decision[self::DECISION_REASON]; +} +} + +return null; +} + + + + +public function atOffset(int $queueOffset): array +{ +return $this->decisionQueue[$queueOffset]; +} + +public function validOffset(int $queueOffset): bool +{ +return $queueOffset >= 0 && $queueOffset < \count($this->decisionQueue); +} + +public function lastReason(): Rule +{ +return $this->decisionQueue[\count($this->decisionQueue) - 1][self::DECISION_REASON]; +} + +public function lastLiteral(): int +{ +return $this->decisionQueue[\count($this->decisionQueue) - 1][self::DECISION_LITERAL]; +} + +public function reset(): void +{ +while ($decision = array_pop($this->decisionQueue)) { +$this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; +} +} + + + + +public function resetToOffset(int $offset): void +{ +while (\count($this->decisionQueue) > $offset + 1) { +$decision = array_pop($this->decisionQueue); +$this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; +} +} + +public function revertLast(): void +{ +$this->decisionMap[abs($this->lastLiteral())] = 0; +array_pop($this->decisionQueue); +} + +public function count(): int +{ +return \count($this->decisionQueue); +} + +public function rewind(): void +{ +end($this->decisionQueue); +} + + + + +#[\ReturnTypeWillChange] +public function current() +{ +return current($this->decisionQueue); +} + +public function key(): ?int +{ +return key($this->decisionQueue); +} + +public function next(): void +{ +prev($this->decisionQueue); +} + +public function valid(): bool +{ +return false !== current($this->decisionQueue); +} + +public function isEmpty(): bool +{ +return \count($this->decisionQueue) === 0; +} + +protected function addDecision(int $literal, int $level): void +{ +$packageId = abs($literal); + +$previousDecision = $this->decisionMap[$packageId] ?? 0; +if ($previousDecision !== 0) { +$literalString = $this->pool->literalToPrettyString($literal, []); +$package = $this->pool->literalToPackage($literal); +throw new SolverBugException( +"Trying to decide $literalString on level $level, even though $package was previously decided as ".$previousDecision."." +); +} + +if ($literal > 0) { +$this->decisionMap[$packageId] = $level; +} else { +$this->decisionMap[$packageId] = -$level; +} +} + +public function toString(?Pool $pool = null): string +{ +$decisionMap = $this->decisionMap; +ksort($decisionMap); +$str = '['; +foreach ($decisionMap as $packageId => $level) { +$str .= (($pool) ? $pool->literalToPackage($packageId) : $packageId).':'.$level.','; +} +$str .= ']'; + +return $str; +} + +public function __toString(): string +{ +return $this->toString(); +} +} diff --git a/composer/src/Composer/DependencyResolver/DefaultPolicy.php b/composer/src/Composer/DependencyResolver/DefaultPolicy.php new file mode 100644 index 000000000..cd29e0352 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/DefaultPolicy.php @@ -0,0 +1,258 @@ +preferStable = $preferStable; +$this->preferLowest = $preferLowest; +} + + + + + + +public function versionCompare(PackageInterface $a, PackageInterface $b, string $operator): bool +{ +if ($this->preferStable && ($stabA = $a->getStability()) !== ($stabB = $b->getStability())) { +return BasePackage::$stabilities[$stabA] < BasePackage::$stabilities[$stabB]; +} + +$constraint = new Constraint($operator, $b->getVersion()); +$version = new Constraint('==', $a->getVersion()); + +return $constraint->matchSpecific($version, true); +} + + + + + + +public function selectPreferredPackages(Pool $pool, array $literals, ?string $requiredPackage = null): array +{ +sort($literals); +$resultCacheKey = implode(',', $literals).$requiredPackage; +$poolId = spl_object_id($pool); + +if (isset($this->preferredPackageResultCachePerPool[$poolId][$resultCacheKey])) { +return $this->preferredPackageResultCachePerPool[$poolId][$resultCacheKey]; +} + +$packages = $this->groupLiteralsByName($pool, $literals); + +foreach ($packages as &$nameLiterals) { +usort($nameLiterals, function ($a, $b) use ($pool, $requiredPackage, $poolId): int { +$cacheKey = 'i'.$a.'.'.$b.$requiredPackage; + +if (isset($this->sortingCachePerPool[$poolId][$cacheKey])) { +return $this->sortingCachePerPool[$poolId][$cacheKey]; +} + +return $this->sortingCachePerPool[$poolId][$cacheKey] = $this->compareByPriority($pool, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage, true); +}); +} + +foreach ($packages as &$sortedLiterals) { +$sortedLiterals = $this->pruneToBestVersion($pool, $sortedLiterals); +$sortedLiterals = $this->pruneRemoteAliases($pool, $sortedLiterals); +} + +$selected = array_merge(...array_values($packages)); + + +usort($selected, function ($a, $b) use ($pool, $requiredPackage, $poolId): int { +$cacheKey = $a.'.'.$b.$requiredPackage; + +if (isset($this->sortingCachePerPool[$poolId][$cacheKey])) { +return $this->sortingCachePerPool[$poolId][$cacheKey]; +} + +return $this->sortingCachePerPool[$poolId][$cacheKey] = $this->compareByPriority($pool, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage); +}); + +return $this->preferredPackageResultCachePerPool[$poolId][$resultCacheKey] = $selected; +} + + + + + +protected function groupLiteralsByName(Pool $pool, array $literals): array +{ +$packages = []; +foreach ($literals as $literal) { +$packageName = $pool->literalToPackage($literal)->getName(); + +if (!isset($packages[$packageName])) { +$packages[$packageName] = []; +} +$packages[$packageName][] = $literal; +} + +return $packages; +} + + + + +public function compareByPriority(Pool $pool, BasePackage $a, BasePackage $b, ?string $requiredPackage = null, bool $ignoreReplace = false): int +{ + +if ($a->getName() === $b->getName()) { +$aAliased = $a instanceof AliasPackage; +$bAliased = $b instanceof AliasPackage; +if ($aAliased && !$bAliased) { +return -1; +} +if (!$aAliased && $bAliased) { +return 1; +} +} + +if (!$ignoreReplace) { + +if ($this->replaces($a, $b)) { +return 1; +} +if ($this->replaces($b, $a)) { +return -1; +} + + + +if ($requiredPackage && false !== ($pos = strpos($requiredPackage, '/'))) { +$requiredVendor = substr($requiredPackage, 0, $pos); + +$aIsSameVendor = strpos($a->getName(), $requiredVendor) === 0; +$bIsSameVendor = strpos($b->getName(), $requiredVendor) === 0; + +if ($bIsSameVendor !== $aIsSameVendor) { +return $aIsSameVendor ? -1 : 1; +} +} +} + + +if ($a->id === $b->id) { +return 0; +} + +return ($a->id < $b->id) ? -1 : 1; +} + + + + + + + +protected function replaces(BasePackage $source, BasePackage $target): bool +{ +foreach ($source->getReplaces() as $link) { +if ($link->getTarget() === $target->getName() + + +) { +return true; +} +} + +return false; +} + + + + + +protected function pruneToBestVersion(Pool $pool, array $literals): array +{ +$operator = $this->preferLowest ? '<' : '>'; +$bestLiterals = [$literals[0]]; +$bestPackage = $pool->literalToPackage($literals[0]); +foreach ($literals as $i => $literal) { +if (0 === $i) { +continue; +} + +$package = $pool->literalToPackage($literal); + +if ($this->versionCompare($package, $bestPackage, $operator)) { +$bestPackage = $package; +$bestLiterals = [$literal]; +} elseif ($this->versionCompare($package, $bestPackage, '==')) { +$bestLiterals[] = $literal; +} +} + +return $bestLiterals; +} + + + + + + + + + +protected function pruneRemoteAliases(Pool $pool, array $literals): array +{ +$hasLocalAlias = false; + +foreach ($literals as $literal) { +$package = $pool->literalToPackage($literal); + +if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { +$hasLocalAlias = true; +break; +} +} + +if (!$hasLocalAlias) { +return $literals; +} + +$selected = []; +foreach ($literals as $literal) { +$package = $pool->literalToPackage($literal); + +if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { +$selected[] = $literal; +} +} + +return $selected; +} +} diff --git a/composer/src/Composer/DependencyResolver/GenericRule.php b/composer/src/Composer/DependencyResolver/GenericRule.php new file mode 100644 index 000000000..5a2e4f133 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/GenericRule.php @@ -0,0 +1,90 @@ +literals = $literals; +} + + + + +public function getLiterals(): array +{ +return $this->literals; +} + + + + +public function getHash() +{ +$data = unpack('ihash', md5(implode(',', $this->literals), true)); + +return $data['hash']; +} + + + + + + + + + +public function equals(Rule $rule): bool +{ +return $this->literals === $rule->getLiterals(); +} + +public function isAssertion(): bool +{ +return 1 === \count($this->literals); +} + + + + +public function __toString(): string +{ +$result = $this->isDisabled() ? 'disabled(' : '('; + +foreach ($this->literals as $i => $literal) { +if ($i !== 0) { +$result .= '|'; +} +$result .= $literal; +} + +$result .= ')'; + +return $result; +} +} diff --git a/composer/src/Composer/DependencyResolver/LocalRepoTransaction.php b/composer/src/Composer/DependencyResolver/LocalRepoTransaction.php new file mode 100644 index 000000000..df02f5ba5 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/LocalRepoTransaction.php @@ -0,0 +1,31 @@ +getPackages(), +$lockedRepository->getPackages() +); +} +} diff --git a/composer/src/Composer/DependencyResolver/LockTransaction.php b/composer/src/Composer/DependencyResolver/LockTransaction.php new file mode 100644 index 000000000..7898709b8 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/LockTransaction.php @@ -0,0 +1,154 @@ +presentMap = $presentMap; +$this->unlockableMap = $unlockableMap; + +$this->setResultPackages($pool, $decisions); +parent::__construct($this->presentMap, $this->resultPackages['all']); +} + + + +public function setResultPackages(Pool $pool, Decisions $decisions): void +{ +$this->resultPackages = ['all' => [], 'non-dev' => [], 'dev' => []]; +foreach ($decisions as $i => $decision) { +$literal = $decision[Decisions::DECISION_LITERAL]; + +if ($literal > 0) { +$package = $pool->literalToPackage($literal); + +$this->resultPackages['all'][] = $package; +if (!isset($this->unlockableMap[$package->id])) { +$this->resultPackages['non-dev'][] = $package; +} +} +} +} + +public function setNonDevPackages(LockTransaction $extractionResult): void +{ +$packages = $extractionResult->getNewLockPackages(false); + +$this->resultPackages['dev'] = $this->resultPackages['non-dev']; +$this->resultPackages['non-dev'] = []; + +foreach ($packages as $package) { +foreach ($this->resultPackages['dev'] as $i => $resultPackage) { + +if ($package->getName() === $resultPackage->getName()) { +$this->resultPackages['non-dev'][] = $resultPackage; +unset($this->resultPackages['dev'][$i]); +} +} +} +} + + + + + +public function getNewLockPackages(bool $devMode, bool $updateMirrors = false): array +{ +$packages = []; +foreach ($this->resultPackages[$devMode ? 'dev' : 'non-dev'] as $package) { +if (!$package instanceof AliasPackage) { + + +if ($updateMirrors && !isset($this->presentMap[spl_object_hash($package)])) { +foreach ($this->presentMap as $presentPackage) { +if ($package->getName() === $presentPackage->getName() && $package->getVersion() === $presentPackage->getVersion()) { +if ($presentPackage->getSourceReference() && $presentPackage->getSourceType() === $package->getSourceType()) { +$package->setSourceDistReferences($presentPackage->getSourceReference()); +} +if ($presentPackage->getReleaseDate() !== null && $package instanceof Package) { +$package->setReleaseDate($presentPackage->getReleaseDate()); +} +} +} +} +$packages[] = $package; +} +} + +return $packages; +} + + + + + + +public function getAliases(array $aliases): array +{ +$usedAliases = []; + +foreach ($this->resultPackages['all'] as $package) { +if ($package instanceof AliasPackage) { +foreach ($aliases as $index => $alias) { +if ($alias['package'] === $package->getName()) { +$usedAliases[] = $alias; +unset($aliases[$index]); +} +} +} +} + +usort($usedAliases, static function ($a, $b): int { +return strcmp($a['package'], $b['package']); +}); + +return $usedAliases; +} +} diff --git a/composer/src/Composer/DependencyResolver/MultiConflictRule.php b/composer/src/Composer/DependencyResolver/MultiConflictRule.php new file mode 100644 index 000000000..d06d09769 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/MultiConflictRule.php @@ -0,0 +1,110 @@ +literals = $literals; +} + + + + +public function getLiterals(): array +{ +return $this->literals; +} + + + + +public function getHash() +{ +$data = unpack('ihash', md5('c:'.implode(',', $this->literals), true)); + +return $data['hash']; +} + + + + + + + + + +public function equals(Rule $rule): bool +{ +if ($rule instanceof MultiConflictRule) { +return $this->literals === $rule->getLiterals(); +} + +return false; +} + +public function isAssertion(): bool +{ +return false; +} + + + + + +public function disable(): void +{ +throw new \RuntimeException("Disabling multi conflict rules is not possible. Please contact composer at https://github.com/composer/composer to let us debug what lead to this situation."); +} + + + + +public function __toString(): string +{ + +$result = $this->isDisabled() ? 'disabled(multi(' : '(multi('; + +foreach ($this->literals as $i => $literal) { +if ($i !== 0) { +$result .= '|'; +} +$result .= $literal; +} + +$result .= '))'; + +return $result; +} +} diff --git a/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php b/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php new file mode 100644 index 000000000..229fedda3 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php @@ -0,0 +1,56 @@ +package = $package; +} + + + + +public function getPackage(): PackageInterface +{ +return $this->package; +} + + + + +public function show($lock): string +{ +return self::format($this->package, $lock); +} + +public static function format(PackageInterface $package, bool $lock = false): string +{ +return ($lock ? 'Locking ' : 'Installing ').''.$package->getPrettyName().' ('.$package->getFullPrettyVersion().')'; +} +} diff --git a/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php b/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php new file mode 100644 index 000000000..0dda2ad41 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php @@ -0,0 +1,51 @@ +package = $package; +} + + + + +public function getPackage(): AliasPackage +{ +return $this->package; +} + + + + +public function show($lock): string +{ +return 'Marking '.$this->package->getPrettyName().' ('.$this->package->getFullPrettyVersion().') as installed, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->package->getAliasOf()->getFullPrettyVersion().')'; +} +} diff --git a/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php b/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php new file mode 100644 index 000000000..9e717606f --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php @@ -0,0 +1,51 @@ +package = $package; +} + + + + +public function getPackage(): AliasPackage +{ +return $this->package; +} + + + + +public function show($lock): string +{ +return 'Marking '.$this->package->getPrettyName().' ('.$this->package->getFullPrettyVersion().') as uninstalled, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->package->getAliasOf()->getFullPrettyVersion().')'; +} +} diff --git a/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php b/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php new file mode 100644 index 000000000..b33eebf80 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php @@ -0,0 +1,43 @@ +show(false); +} +} diff --git a/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php b/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php new file mode 100644 index 000000000..eb1a832f8 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php @@ -0,0 +1,56 @@ +package = $package; +} + + + + +public function getPackage(): PackageInterface +{ +return $this->package; +} + + + + +public function show($lock): string +{ +return self::format($this->package, $lock); +} + +public static function format(PackageInterface $package, bool $lock = false): string +{ +return 'Removing '.$package->getPrettyName().' ('.$package->getFullPrettyVersion().')'; +} +} diff --git a/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php b/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php new file mode 100644 index 000000000..1aaf965e9 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php @@ -0,0 +1,88 @@ +initialPackage = $initial; +$this->targetPackage = $target; +} + + + + +public function getInitialPackage(): PackageInterface +{ +return $this->initialPackage; +} + + + + +public function getTargetPackage(): PackageInterface +{ +return $this->targetPackage; +} + + + + +public function show($lock): string +{ +return self::format($this->initialPackage, $this->targetPackage, $lock); +} + +public static function format(PackageInterface $initialPackage, PackageInterface $targetPackage, bool $lock = false): string +{ +$fromVersion = $initialPackage->getFullPrettyVersion(); +$toVersion = $targetPackage->getFullPrettyVersion(); + +if ($fromVersion === $toVersion && $initialPackage->getSourceReference() !== $targetPackage->getSourceReference()) { +$fromVersion = $initialPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_SOURCE_REF); +$toVersion = $targetPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_SOURCE_REF); +} elseif ($fromVersion === $toVersion && $initialPackage->getDistReference() !== $targetPackage->getDistReference()) { +$fromVersion = $initialPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_DIST_REF); +$toVersion = $targetPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_DIST_REF); +} + +$actionName = VersionParser::isUpgrade($initialPackage->getVersion(), $targetPackage->getVersion()) ? 'Upgrading' : 'Downgrading'; + +return $actionName.' '.$initialPackage->getPrettyName().' ('.$fromVersion.' => '.$toVersion.')'; +} +} diff --git a/composer/src/Composer/DependencyResolver/PolicyInterface.php b/composer/src/Composer/DependencyResolver/PolicyInterface.php new file mode 100644 index 000000000..312dacd2f --- /dev/null +++ b/composer/src/Composer/DependencyResolver/PolicyInterface.php @@ -0,0 +1,33 @@ +versionParser = new VersionParser; +$this->setPackages($packages); +$this->unacceptableFixedOrLockedPackages = $unacceptableFixedOrLockedPackages; +$this->removedVersions = $removedVersions; +$this->removedVersionsByPackage = $removedVersionsByPackage; +} + + + + +public function getRemovedVersions(string $name, ConstraintInterface $constraint): array +{ +if (!isset($this->removedVersions[$name])) { +return []; +} + +$result = []; +foreach ($this->removedVersions[$name] as $version => $prettyVersion) { +if ($constraint->matches(new Constraint('==', $version))) { +$result[$version] = $prettyVersion; +} +} + +return $result; +} + + + + +public function getRemovedVersionsByPackage(string $objectHash): array +{ +if (!isset($this->removedVersionsByPackage[$objectHash])) { +return []; +} + +return $this->removedVersionsByPackage[$objectHash]; +} + + + + +private function setPackages(array $packages): void +{ +$id = 1; + +foreach ($packages as $package) { +$this->packages[] = $package; + +$package->id = $id++; + +foreach ($package->getNames() as $provided) { +$this->packageByName[$provided][] = $package; +} +} +} + + + + +public function getPackages(): array +{ +return $this->packages; +} + + + + +public function packageById(int $id): BasePackage +{ +return $this->packages[$id - 1]; +} + + + + +public function count(): int +{ +return \count($this->packages); +} + + + + + + + + + +public function whatProvides(string $name, ?ConstraintInterface $constraint = null): array +{ +$key = (string) $constraint; +if (isset($this->providerCache[$name][$key])) { +return $this->providerCache[$name][$key]; +} + +return $this->providerCache[$name][$key] = $this->computeWhatProvides($name, $constraint); +} + + + + + + + +private function computeWhatProvides(string $name, ?ConstraintInterface $constraint = null): array +{ +if (!isset($this->packageByName[$name])) { +return []; +} + +$matches = []; + +foreach ($this->packageByName[$name] as $candidate) { +if ($this->match($candidate, $name, $constraint)) { +$matches[] = $candidate; +} +} + +return $matches; +} + +public function literalToPackage(int $literal): BasePackage +{ +$packageId = abs($literal); + +return $this->packageById($packageId); +} + + + + +public function literalToPrettyString(int $literal, array $installedMap): string +{ +$package = $this->literalToPackage($literal); + +if (isset($installedMap[$package->id])) { +$prefix = ($literal > 0 ? 'keep' : 'remove'); +} else { +$prefix = ($literal > 0 ? 'install' : 'don\'t install'); +} + +return $prefix.' '.$package->getPrettyString(); +} + + + + + + + +public function match(BasePackage $candidate, string $name, ?ConstraintInterface $constraint = null): bool +{ +$candidateName = $candidate->getName(); +$candidateVersion = $candidate->getVersion(); + +if ($candidateName === $name) { +return $constraint === null || CompilingMatcher::match($constraint, Constraint::OP_EQ, $candidateVersion); +} + +$provides = $candidate->getProvides(); +$replaces = $candidate->getReplaces(); + + +if (isset($replaces[0]) || isset($provides[0])) { +foreach ($provides as $link) { +if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { +return true; +} +} + +foreach ($replaces as $link) { +if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { +return true; +} +} + +return false; +} + +if (isset($provides[$name]) && ($constraint === null || $constraint->matches($provides[$name]->getConstraint()))) { +return true; +} + +if (isset($replaces[$name]) && ($constraint === null || $constraint->matches($replaces[$name]->getConstraint()))) { +return true; +} + +return false; +} + +public function isUnacceptableFixedOrLockedPackage(BasePackage $package): bool +{ +return \in_array($package, $this->unacceptableFixedOrLockedPackages, true); +} + + + + +public function getUnacceptableFixedOrLockedPackages(): array +{ +return $this->unacceptableFixedOrLockedPackages; +} + +public function __toString(): string +{ +$str = "Pool:\n"; + +foreach ($this->packages as $package) { +$str .= '- '.str_pad((string) $package->id, 6, ' ', STR_PAD_LEFT).': '.$package->getName()."\n"; +} + +return $str; +} +} diff --git a/composer/src/Composer/DependencyResolver/PoolBuilder.php b/composer/src/Composer/DependencyResolver/PoolBuilder.php new file mode 100644 index 000000000..63f734ded --- /dev/null +++ b/composer/src/Composer/DependencyResolver/PoolBuilder.php @@ -0,0 +1,706 @@ +acceptableStabilities = $acceptableStabilities; +$this->stabilityFlags = $stabilityFlags; +$this->rootAliases = $rootAliases; +$this->rootReferences = $rootReferences; +$this->eventDispatcher = $eventDispatcher; +$this->poolOptimizer = $poolOptimizer; +$this->io = $io; +$this->temporaryConstraints = $temporaryConstraints; +} + + + + +public function buildPool(array $repositories, Request $request): Pool +{ +if ($request->getUpdateAllowList()) { +$this->updateAllowList = $request->getUpdateAllowList(); +$this->warnAboutNonMatchingUpdateAllowList($request); + +foreach ($request->getLockedRepository()->getPackages() as $lockedPackage) { +if (!$this->isUpdateAllowed($lockedPackage)) { + +$this->skippedLoad[$lockedPackage->getName()][] = $lockedPackage; +foreach ($lockedPackage->getReplaces() as $link) { +$this->skippedLoad[$link->getTarget()][] = $lockedPackage; +} + + + + + +if ($lockedPackage->getDistType() === 'path') { +$transportOptions = $lockedPackage->getTransportOptions(); +if (!isset($transportOptions['symlink']) || $transportOptions['symlink'] !== false) { +$this->pathRepoUnlocked[$lockedPackage->getName()] = true; +continue; +} +} + +$request->lockPackage($lockedPackage); +} +} +} + +foreach ($request->getFixedOrLockedPackages() as $package) { + + +$this->loadedPackages[$package->getName()] = new MatchAllConstraint(); + + +foreach ($package->getReplaces() as $link) { +$this->loadedPackages[$link->getTarget()] = new MatchAllConstraint(); +} + + + + +if ( +$package->getRepository() instanceof RootPackageRepository +|| $package->getRepository() instanceof PlatformRepository +|| StabilityFilter::isPackageAcceptable($this->acceptableStabilities, $this->stabilityFlags, $package->getNames(), $package->getStability()) +) { +$this->loadPackage($request, $repositories, $package, false); +} else { +$this->unacceptableFixedOrLockedPackages[] = $package; +} +} + +foreach ($request->getRequires() as $packageName => $constraint) { + +if (isset($this->loadedPackages[$packageName])) { +continue; +} + +$this->packagesToLoad[$packageName] = $constraint; +$this->maxExtendedReqs[$packageName] = true; +} + + +foreach ($this->packagesToLoad as $name => $constraint) { +if (isset($this->loadedPackages[$name])) { +unset($this->packagesToLoad[$name]); +} +} + +while (!empty($this->packagesToLoad)) { +$this->loadPackagesMarkedForLoading($request, $repositories); +} + +if (\count($this->temporaryConstraints) > 0) { +foreach ($this->packages as $i => $package) { + +if (!isset($this->temporaryConstraints[$package->getName()]) || $package instanceof AliasPackage) { +continue; +} + +$constraint = $this->temporaryConstraints[$package->getName()]; +$packageAndAliases = [$i => $package]; +if (isset($this->aliasMap[spl_object_hash($package)])) { +$packageAndAliases += $this->aliasMap[spl_object_hash($package)]; +} + +$found = false; +foreach ($packageAndAliases as $packageOrAlias) { +if (CompilingMatcher::match($constraint, Constraint::OP_EQ, $packageOrAlias->getVersion())) { +$found = true; +} +} + +if (!$found) { +foreach ($packageAndAliases as $index => $packageOrAlias) { +unset($this->packages[$index]); +} +} +} +} + +if ($this->eventDispatcher) { +$prePoolCreateEvent = new PrePoolCreateEvent( +PluginEvents::PRE_POOL_CREATE, +$repositories, +$request, +$this->acceptableStabilities, +$this->stabilityFlags, +$this->rootAliases, +$this->rootReferences, +$this->packages, +$this->unacceptableFixedOrLockedPackages +); +$this->eventDispatcher->dispatch($prePoolCreateEvent->getName(), $prePoolCreateEvent); +$this->packages = $prePoolCreateEvent->getPackages(); +$this->unacceptableFixedOrLockedPackages = $prePoolCreateEvent->getUnacceptableFixedPackages(); +} + +$pool = new Pool($this->packages, $this->unacceptableFixedOrLockedPackages); + +$this->aliasMap = []; +$this->packagesToLoad = []; +$this->loadedPackages = []; +$this->loadedPerRepo = []; +$this->packages = []; +$this->unacceptableFixedOrLockedPackages = []; +$this->maxExtendedReqs = []; +$this->skippedLoad = []; +$this->indexCounter = 0; + +$this->io->debug('Built pool.'); + +$pool = $this->runOptimizer($request, $pool); + +Intervals::clear(); + +return $pool; +} + +private function markPackageNameForLoading(Request $request, string $name, ConstraintInterface $constraint): void +{ + +if (PlatformRepository::isPlatformPackage($name)) { +return; +} + + + +if (isset($this->maxExtendedReqs[$name])) { +return; +} + + + + + +$rootRequires = $request->getRequires(); +if (isset($rootRequires[$name]) && !Intervals::isSubsetOf($constraint, $rootRequires[$name])) { +$constraint = $rootRequires[$name]; +} + + +if (!isset($this->loadedPackages[$name])) { + + + +if (isset($this->packagesToLoad[$name])) { + +if (Intervals::isSubsetOf($constraint, $this->packagesToLoad[$name])) { +return; +} + + +$constraint = Intervals::compactConstraint(MultiConstraint::create([$this->packagesToLoad[$name], $constraint], false)); +} + +$this->packagesToLoad[$name] = $constraint; + +return; +} + + + +if (Intervals::isSubsetOf($constraint, $this->loadedPackages[$name])) { +return; +} + + + + +$this->packagesToLoad[$name] = Intervals::compactConstraint(MultiConstraint::create([$this->loadedPackages[$name], $constraint], false)); +unset($this->loadedPackages[$name]); +} + + + + +private function loadPackagesMarkedForLoading(Request $request, array $repositories): void +{ +foreach ($this->packagesToLoad as $name => $constraint) { +$this->loadedPackages[$name] = $constraint; +} + +$packageBatch = $this->packagesToLoad; +$this->packagesToLoad = []; + +foreach ($repositories as $repoIndex => $repository) { +if (empty($packageBatch)) { +break; +} + + + +if ($repository instanceof PlatformRepository || $repository === $request->getLockedRepository()) { +continue; +} +$result = $repository->loadPackages($packageBatch, $this->acceptableStabilities, $this->stabilityFlags, $this->loadedPerRepo[$repoIndex] ?? []); + +foreach ($result['namesFound'] as $name) { + +unset($packageBatch[$name]); +} +foreach ($result['packages'] as $package) { +$this->loadedPerRepo[$repoIndex][$package->getName()][$package->getVersion()] = $package; +$this->loadPackage($request, $repositories, $package, !isset($this->pathRepoUnlocked[$package->getName()])); +} +} +} + + + + +private function loadPackage(Request $request, array $repositories, BasePackage $package, bool $propagateUpdate): void +{ +$index = $this->indexCounter++; +$this->packages[$index] = $package; + +if ($package instanceof AliasPackage) { +$this->aliasMap[spl_object_hash($package->getAliasOf())][$index] = $package; +} + +$name = $package->getName(); + + + + +if (isset($this->rootReferences[$name])) { + +if (!$request->isLockedPackage($package) && !$request->isFixedPackage($package)) { +$package->setSourceDistReferences($this->rootReferences[$name]); +} +} + + + +if ($propagateUpdate && isset($this->rootAliases[$name][$package->getVersion()])) { +$alias = $this->rootAliases[$name][$package->getVersion()]; +if ($package instanceof AliasPackage) { +$basePackage = $package->getAliasOf(); +} else { +$basePackage = $package; +} +if ($basePackage instanceof CompletePackage) { +$aliasPackage = new CompleteAliasPackage($basePackage, $alias['alias_normalized'], $alias['alias']); +} else { +$aliasPackage = new AliasPackage($basePackage, $alias['alias_normalized'], $alias['alias']); +} +$aliasPackage->setRootPackageAlias(true); + +$newIndex = $this->indexCounter++; +$this->packages[$newIndex] = $aliasPackage; +$this->aliasMap[spl_object_hash($aliasPackage->getAliasOf())][$newIndex] = $aliasPackage; +} + +foreach ($package->getRequires() as $link) { +$require = $link->getTarget(); +$linkConstraint = $link->getConstraint(); + + +if (isset($this->skippedLoad[$require])) { + + + +if ($propagateUpdate && $request->getUpdateAllowTransitiveDependencies()) { +$skippedRootRequires = $this->getSkippedRootRequires($request, $require); + +if ($request->getUpdateAllowTransitiveRootDependencies() || !$skippedRootRequires) { +$this->unlockPackage($request, $repositories, $require); +$this->markPackageNameForLoading($request, $require, $linkConstraint); +} else { +foreach ($skippedRootRequires as $rootRequire) { +if (!isset($this->updateAllowWarned[$rootRequire])) { +$this->updateAllowWarned[$rootRequire] = true; +$this->io->writeError('Dependency '.$rootRequire.' is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.'); +} +} +} +} elseif (isset($this->pathRepoUnlocked[$require]) && !isset($this->loadedPackages[$require])) { + + +$this->markPackageNameForLoading($request, $require, $linkConstraint); +} +} else { +$this->markPackageNameForLoading($request, $require, $linkConstraint); +} +} + + + +if ($propagateUpdate && $request->getUpdateAllowTransitiveDependencies()) { +foreach ($package->getReplaces() as $link) { +$replace = $link->getTarget(); +if (isset($this->loadedPackages[$replace], $this->skippedLoad[$replace])) { +$skippedRootRequires = $this->getSkippedRootRequires($request, $replace); + +if ($request->getUpdateAllowTransitiveRootDependencies() || !$skippedRootRequires) { +$this->unlockPackage($request, $repositories, $replace); +$this->markPackageNameForLoading($request, $replace, $link->getConstraint()); +} else { +foreach ($skippedRootRequires as $rootRequire) { +if (!isset($this->updateAllowWarned[$rootRequire])) { +$this->updateAllowWarned[$rootRequire] = true; +$this->io->writeError('Dependency '.$rootRequire.' is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.'); +} +} +} +} +} +} +} + + + + + + +private function isRootRequire(Request $request, string $name): bool +{ +$rootRequires = $request->getRequires(); + +return isset($rootRequires[$name]); +} + + + + +private function getSkippedRootRequires(Request $request, string $name): array +{ +if (!isset($this->skippedLoad[$name])) { +return []; +} + +$rootRequires = $request->getRequires(); +$matches = []; + +if (isset($rootRequires[$name])) { +return array_map(static function (PackageInterface $package) use ($name): string { +if ($name !== $package->getName()) { +return $package->getName() .' (via replace of '.$name.')'; +} + +return $package->getName(); +}, $this->skippedLoad[$name]); +} + +foreach ($this->skippedLoad[$name] as $packageOrReplacer) { +if (isset($rootRequires[$packageOrReplacer->getName()])) { +$matches[] = $packageOrReplacer->getName(); +} +foreach ($packageOrReplacer->getReplaces() as $link) { +if (isset($rootRequires[$link->getTarget()])) { +if ($name !== $packageOrReplacer->getName()) { +$matches[] = $packageOrReplacer->getName() .' (via replace of '.$name.')'; +} else { +$matches[] = $packageOrReplacer->getName(); +} +break; +} +} +} + +return $matches; +} + + + + +private function isUpdateAllowed(BasePackage $package): bool +{ +foreach ($this->updateAllowList as $pattern => $void) { +$patternRegexp = BasePackage::packageNameToRegexp($pattern); +if (Preg::isMatch($patternRegexp, $package->getName())) { +return true; +} +} + +return false; +} + +private function warnAboutNonMatchingUpdateAllowList(Request $request): void +{ +foreach ($this->updateAllowList as $pattern => $void) { +$patternRegexp = BasePackage::packageNameToRegexp($pattern); + +foreach ($request->getLockedRepository()->getPackages() as $package) { +if (Preg::isMatch($patternRegexp, $package->getName())) { +continue 2; +} +} + +foreach ($request->getRequires() as $packageName => $constraint) { +if (Preg::isMatch($patternRegexp, $packageName)) { +continue 2; +} +} +if (strpos($pattern, '*') !== false) { +$this->io->writeError('Pattern "' . $pattern . '" listed for update does not match any locked packages.'); +} else { +$this->io->writeError('Package "' . $pattern . '" listed for update is not locked.'); +} +} +} + + + + + + + +private function unlockPackage(Request $request, array $repositories, string $name): void +{ +foreach ($this->skippedLoad[$name] as $packageOrReplacer) { + + +if ($packageOrReplacer->getName() !== $name && isset($this->skippedLoad[$packageOrReplacer->getName()])) { +$replacerName = $packageOrReplacer->getName(); +if ($request->getUpdateAllowTransitiveRootDependencies() || (!$this->isRootRequire($request, $name) && !$this->isRootRequire($request, $replacerName))) { +$this->unlockPackage($request, $repositories, $replacerName); + +if ($this->isRootRequire($request, $replacerName)) { +$this->markPackageNameForLoading($request, $replacerName, new MatchAllConstraint); +} else { +foreach ($this->packages as $loadedPackage) { +$requires = $loadedPackage->getRequires(); +if (isset($requires[$replacerName])) { +$this->markPackageNameForLoading($request, $replacerName, $requires[$replacerName]->getConstraint()); +} +} +} +} +} +} + +if (isset($this->pathRepoUnlocked[$name])) { +foreach ($this->packages as $index => $package) { +if ($package->getName() === $name) { +$this->removeLoadedPackage($request, $repositories, $package, $index); +} +} +} + +unset($this->skippedLoad[$name], $this->loadedPackages[$name], $this->maxExtendedReqs[$name], $this->pathRepoUnlocked[$name]); + + +foreach ($request->getLockedPackages() as $lockedPackage) { +if (!($lockedPackage instanceof AliasPackage) && $lockedPackage->getName() === $name) { +if (false !== $index = array_search($lockedPackage, $this->packages, true)) { +$request->unlockPackage($lockedPackage); +$this->removeLoadedPackage($request, $repositories, $lockedPackage, $index); + + + + +foreach ($request->getFixedOrLockedPackages() as $fixedOrLockedPackage) { +if ($fixedOrLockedPackage === $lockedPackage) { +continue; +} + +if (isset($this->skippedLoad[$fixedOrLockedPackage->getName()])) { +$requires = $fixedOrLockedPackage->getRequires(); +if (isset($requires[$lockedPackage->getName()])) { +$this->markPackageNameForLoading($request, $lockedPackage->getName(), $requires[$lockedPackage->getName()]->getConstraint()); +} +} +} +} +} +} +} + + + + +private function removeLoadedPackage(Request $request, array $repositories, BasePackage $package, int $index): void +{ +$repoIndex = array_search($package->getRepository(), $repositories, true); + +unset($this->loadedPerRepo[$repoIndex][$package->getName()][$package->getVersion()]); +unset($this->packages[$index]); +if (isset($this->aliasMap[spl_object_hash($package)])) { +foreach ($this->aliasMap[spl_object_hash($package)] as $aliasIndex => $aliasPackage) { +unset($this->loadedPerRepo[$repoIndex][$aliasPackage->getName()][$aliasPackage->getVersion()]); +unset($this->packages[$aliasIndex]); +} +unset($this->aliasMap[spl_object_hash($package)]); +} +} + +private function runOptimizer(Request $request, Pool $pool): Pool +{ +if (null === $this->poolOptimizer) { +return $pool; +} + +$this->io->debug('Running pool optimizer.'); + +$before = microtime(true); +$total = \count($pool->getPackages()); + +$pool = $this->poolOptimizer->optimize($request, $pool); + +$filtered = $total - \count($pool->getPackages()); + +if (0 === $filtered) { +return $pool; +} + +$this->io->write(sprintf('Pool optimizer completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERY_VERBOSE); +$this->io->write(sprintf( +'Found %s package versions referenced in your dependency graph. %s (%d%%) were optimized away.', +number_format($total), +number_format($filtered), +round(100 / $total * $filtered) +), true, IOInterface::VERY_VERBOSE); + +return $pool; +} +} diff --git a/composer/src/Composer/DependencyResolver/PoolOptimizer.php b/composer/src/Composer/DependencyResolver/PoolOptimizer.php new file mode 100644 index 000000000..6aa75c3d9 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/PoolOptimizer.php @@ -0,0 +1,475 @@ +policy = $policy; +} + +public function optimize(Request $request, Pool $pool): Pool +{ +$this->prepare($request, $pool); + +$this->optimizeByIdenticalDependencies($request, $pool); + +$this->optimizeImpossiblePackagesAway($request, $pool); + +$optimizedPool = $this->applyRemovalsToPool($pool); + + + + + + +$this->irremovablePackages = []; +$this->requireConstraintsPerPackage = []; +$this->conflictConstraintsPerPackage = []; +$this->packagesToRemove = []; +$this->aliasesPerPackage = []; +$this->removedVersionsByPackage = []; + +return $optimizedPool; +} + +private function prepare(Request $request, Pool $pool): void +{ +$irremovablePackageConstraintGroups = []; + + +foreach ($request->getFixedOrLockedPackages() as $package) { +$irremovablePackageConstraintGroups[$package->getName()][] = new Constraint('==', $package->getVersion()); +} + + +foreach ($request->getRequires() as $require => $constraint) { +$this->extractRequireConstraintsPerPackage($require, $constraint); +} + + +foreach ($pool->getPackages() as $package) { + +foreach ($package->getRequires() as $link) { +$this->extractRequireConstraintsPerPackage($link->getTarget(), $link->getConstraint()); +} + +foreach ($package->getConflicts() as $link) { +$this->extractConflictConstraintsPerPackage($link->getTarget(), $link->getConstraint()); +} + + + +if ($package instanceof AliasPackage) { +$this->aliasesPerPackage[$package->getAliasOf()->id][] = $package; +} +} + +$irremovablePackageConstraints = []; +foreach ($irremovablePackageConstraintGroups as $packageName => $constraints) { +$irremovablePackageConstraints[$packageName] = 1 === \count($constraints) ? $constraints[0] : new MultiConstraint($constraints, false); +} +unset($irremovablePackageConstraintGroups); + + +foreach ($pool->getPackages() as $package) { +if (!isset($irremovablePackageConstraints[$package->getName()])) { +continue; +} + +if (CompilingMatcher::match($irremovablePackageConstraints[$package->getName()], Constraint::OP_EQ, $package->getVersion())) { +$this->markPackageIrremovable($package); +} +} +} + +private function markPackageIrremovable(BasePackage $package): void +{ +$this->irremovablePackages[$package->id] = true; +if ($package instanceof AliasPackage) { + + +$this->markPackageIrremovable($package->getAliasOf()); +} +if (isset($this->aliasesPerPackage[$package->id])) { +foreach ($this->aliasesPerPackage[$package->id] as $aliasPackage) { +$this->irremovablePackages[$aliasPackage->id] = true; +} +} +} + + + + +private function applyRemovalsToPool(Pool $pool): Pool +{ +$packages = []; +$removedVersions = []; +foreach ($pool->getPackages() as $package) { +if (!isset($this->packagesToRemove[$package->id])) { +$packages[] = $package; +} else { +$removedVersions[$package->getName()][$package->getVersion()] = $package->getPrettyVersion(); +} +} + +$optimizedPool = new Pool($packages, $pool->getUnacceptableFixedOrLockedPackages(), $removedVersions, $this->removedVersionsByPackage); + +return $optimizedPool; +} + +private function optimizeByIdenticalDependencies(Request $request, Pool $pool): void +{ +$identicalDefinitionsPerPackage = []; +$packageIdenticalDefinitionLookup = []; + +foreach ($pool->getPackages() as $package) { + + + +if (isset($this->irremovablePackages[$package->id])) { +continue; +} + +$this->markPackageForRemoval($package->id); + +$dependencyHash = $this->calculateDependencyHash($package); + +foreach ($package->getNames(false) as $packageName) { +if (!isset($this->requireConstraintsPerPackage[$packageName])) { +continue; +} + +foreach ($this->requireConstraintsPerPackage[$packageName] as $requireConstraint) { +$groupHashParts = []; + +if (CompilingMatcher::match($requireConstraint, Constraint::OP_EQ, $package->getVersion())) { +$groupHashParts[] = 'require:' . (string) $requireConstraint; +} + +if ($package->getReplaces()) { +foreach ($package->getReplaces() as $link) { +if (CompilingMatcher::match($link->getConstraint(), Constraint::OP_EQ, $package->getVersion())) { + +$groupHashParts[] = 'require:' . (string) $link->getConstraint(); +} +} +} + +if (isset($this->conflictConstraintsPerPackage[$packageName])) { +foreach ($this->conflictConstraintsPerPackage[$packageName] as $conflictConstraint) { +if (CompilingMatcher::match($conflictConstraint, Constraint::OP_EQ, $package->getVersion())) { +$groupHashParts[] = 'conflict:' . (string) $conflictConstraint; +} +} +} + +if (!$groupHashParts) { +continue; +} + +$groupHash = implode('', $groupHashParts); +$identicalDefinitionsPerPackage[$packageName][$groupHash][$dependencyHash][] = $package; +$packageIdenticalDefinitionLookup[$package->id][$packageName] = ['groupHash' => $groupHash, 'dependencyHash' => $dependencyHash]; +} +} +} + +foreach ($identicalDefinitionsPerPackage as $constraintGroups) { +foreach ($constraintGroups as $constraintGroup) { +foreach ($constraintGroup as $packages) { + +if (1 === \count($packages)) { +$this->keepPackage($packages[0], $identicalDefinitionsPerPackage, $packageIdenticalDefinitionLookup); +continue; +} + + + +$literals = []; + +foreach ($packages as $package) { +$literals[] = $package->id; +} + +foreach ($this->policy->selectPreferredPackages($pool, $literals) as $preferredLiteral) { +$this->keepPackage($pool->literalToPackage($preferredLiteral), $identicalDefinitionsPerPackage, $packageIdenticalDefinitionLookup); +} +} +} +} +} + +private function calculateDependencyHash(BasePackage $package): string +{ +$hash = ''; + +$hashRelevantLinks = [ +'requires' => $package->getRequires(), +'conflicts' => $package->getConflicts(), +'replaces' => $package->getReplaces(), +'provides' => $package->getProvides(), +]; + +foreach ($hashRelevantLinks as $key => $links) { +if (0 === \count($links)) { +continue; +} + + +$hash .= $key . ':'; + +$subhash = []; + +foreach ($links as $link) { + + + + +$subhash[$link->getTarget()] = (string) $link->getConstraint(); +} + + +ksort($subhash); + +foreach ($subhash as $target => $constraint) { +$hash .= $target . '@' . $constraint; +} +} + +return $hash; +} + +private function markPackageForRemoval(int $id): void +{ + +if (isset($this->irremovablePackages[$id])) { +throw new \LogicException('Attempted removing a package which was previously marked irremovable'); +} + +$this->packagesToRemove[$id] = true; +} + + + + + +private function keepPackage(BasePackage $package, array $identicalDefinitionsPerPackage, array $packageIdenticalDefinitionLookup): void +{ + +if (!isset($this->packagesToRemove[$package->id])) { +return; +} + +unset($this->packagesToRemove[$package->id]); + +if ($package instanceof AliasPackage) { + + +$this->keepPackage($package->getAliasOf(), $identicalDefinitionsPerPackage, $packageIdenticalDefinitionLookup); +} + + +foreach ($package->getNames(false) as $name) { +if (isset($packageIdenticalDefinitionLookup[$package->id][$name])) { +$packageGroupPointers = $packageIdenticalDefinitionLookup[$package->id][$name]; +$packageGroup = $identicalDefinitionsPerPackage[$name][$packageGroupPointers['groupHash']][$packageGroupPointers['dependencyHash']]; +foreach ($packageGroup as $pkg) { +if ($pkg instanceof AliasPackage && $pkg->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +$pkg = $pkg->getAliasOf(); +} +$this->removedVersionsByPackage[spl_object_hash($package)][$pkg->getVersion()] = $pkg->getPrettyVersion(); +} +} +} + +if (isset($this->aliasesPerPackage[$package->id])) { +foreach ($this->aliasesPerPackage[$package->id] as $aliasPackage) { +unset($this->packagesToRemove[$aliasPackage->id]); + + +foreach ($aliasPackage->getNames(false) as $name) { +if (isset($packageIdenticalDefinitionLookup[$aliasPackage->id][$name])) { +$packageGroupPointers = $packageIdenticalDefinitionLookup[$aliasPackage->id][$name]; +$packageGroup = $identicalDefinitionsPerPackage[$name][$packageGroupPointers['groupHash']][$packageGroupPointers['dependencyHash']]; +foreach ($packageGroup as $pkg) { +if ($pkg instanceof AliasPackage && $pkg->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +$pkg = $pkg->getAliasOf(); +} +$this->removedVersionsByPackage[spl_object_hash($aliasPackage)][$pkg->getVersion()] = $pkg->getPrettyVersion(); +} +} +} +} +} +} + + + + + + +private function optimizeImpossiblePackagesAway(Request $request, Pool $pool): void +{ +if (count($request->getLockedPackages()) === 0) { +return; +} + +$packageIndex = []; + +foreach ($pool->getPackages() as $package) { +$id = $package->id; + + +if (isset($this->irremovablePackages[$id])) { +continue; +} + +if (isset($this->aliasesPerPackage[$id]) || $package instanceof AliasPackage) { +continue; +} + +if ($request->isFixedPackage($package) || $request->isLockedPackage($package)) { +continue; +} + +$packageIndex[$package->getName()][$package->id] = $package; +} + +foreach ($request->getLockedPackages() as $package) { + + +$isUnusedPackage = true; +foreach ($package->getNames(false) as $packageName) { +if (isset($this->requireConstraintsPerPackage[$packageName])) { +$isUnusedPackage = false; +break; +} +} + +if ($isUnusedPackage) { +continue; +} + +foreach ($package->getRequires() as $link) { +$require = $link->getTarget(); +if (!isset($packageIndex[$require])) { +continue; +} + +$linkConstraint = $link->getConstraint(); +foreach ($packageIndex[$require] as $id => $requiredPkg) { +if (false === CompilingMatcher::match($linkConstraint, Constraint::OP_EQ, $requiredPkg->getVersion())) { +$this->markPackageForRemoval($id); +unset($packageIndex[$require][$id]); +} +} +} +} +} + + + + + + + + +private function extractRequireConstraintsPerPackage(string $package, ConstraintInterface $constraint) +{ +foreach ($this->expandDisjunctiveMultiConstraints($constraint) as $expanded) { +$this->requireConstraintsPerPackage[$package][(string) $expanded] = $expanded; +} +} + + + + + + + + +private function extractConflictConstraintsPerPackage(string $package, ConstraintInterface $constraint) +{ +foreach ($this->expandDisjunctiveMultiConstraints($constraint) as $expanded) { +$this->conflictConstraintsPerPackage[$package][(string) $expanded] = $expanded; +} +} + + + + +private function expandDisjunctiveMultiConstraints(ConstraintInterface $constraint) +{ +$constraint = Intervals::compactConstraint($constraint); + +if ($constraint instanceof MultiConstraint && $constraint->isDisjunctive()) { + + +return $constraint->getConstraints(); +} + + +return [$constraint]; +} +} diff --git a/composer/src/Composer/DependencyResolver/Problem.php b/composer/src/Composer/DependencyResolver/Problem.php new file mode 100644 index 000000000..f834f2c69 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Problem.php @@ -0,0 +1,561 @@ +addReason(spl_object_hash($rule), $rule); +} + + + + + + +public function getReasons(): array +{ +return $this->reasons; +} + + + + + + + +public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, array $installedMap = [], array $learnedPool = []): string +{ + +$reasons = array_merge(...array_reverse($this->reasons)); + +if (count($reasons) === 1) { +reset($reasons); +$rule = current($reasons); + +if ($rule->getReason() !== Rule::RULE_ROOT_REQUIRE) { +throw new \LogicException("Single reason problems must contain a root require rule."); +} + +$reasonData = $rule->getReasonData(); +$packageName = $reasonData['packageName']; +$constraint = $reasonData['constraint']; + +$packages = $pool->whatProvides($packageName, $constraint); +if (count($packages) === 0) { +return "\n ".implode(self::getMissingPackageReason($repositorySet, $request, $pool, $isVerbose, $packageName, $constraint)); +} +} + +return self::formatDeduplicatedRules($reasons, ' ', $repositorySet, $request, $pool, $isVerbose, $installedMap, $learnedPool); +} + + + + + + + +public static function formatDeduplicatedRules(array $rules, string $indent, RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, array $installedMap = [], array $learnedPool = []): string +{ +$messages = []; +$templates = []; +$parser = new VersionParser; +$deduplicatableRuleTypes = [Rule::RULE_PACKAGE_REQUIRES, Rule::RULE_PACKAGE_CONFLICT]; +foreach ($rules as $rule) { +$message = $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose, $installedMap, $learnedPool); +if (in_array($rule->getReason(), $deduplicatableRuleTypes, true) && Preg::isMatchStrictGroups('{^(?P\S+) (?P\S+) (?Prequires|conflicts)}', $message, $m)) { +$template = Preg::replace('{^\S+ \S+ }', '%s%s ', $message); +$messages[] = $template; +$templates[$template][$m[1]][$parser->normalize($m[2])] = $m[2]; +$sourcePackage = $rule->getSourcePackage($pool); +foreach ($pool->getRemovedVersionsByPackage(spl_object_hash($sourcePackage)) as $version => $prettyVersion) { +$templates[$template][$m[1]][$version] = $prettyVersion; +} +} elseif ($message !== '') { +$messages[] = $message; +} +} + +$result = []; +foreach (array_unique($messages) as $message) { +if (isset($templates[$message])) { +foreach ($templates[$message] as $package => $versions) { +uksort($versions, 'version_compare'); +if (!$isVerbose) { +$versions = self::condenseVersionList($versions, 1); +} +if (count($versions) > 1) { + +$message = Preg::replace('{^(%s%s (?:require|conflict))s}', '$1', $message); +$result[] = sprintf($message, $package, '['.implode(', ', $versions).']'); +} else { +$result[] = sprintf($message, $package, ' '.reset($versions)); +} +} +} else { +$result[] = $message; +} +} + +return "\n$indent- ".implode("\n$indent- ", $result); +} + +public function isCausedByLock(RepositorySet $repositorySet, Request $request, Pool $pool): bool +{ +foreach ($this->reasons as $sectionRules) { +foreach ($sectionRules as $rule) { +if ($rule->isCausedByLock($repositorySet, $request, $pool)) { +return true; +} +} +} + +return false; +} + + + + + + + +protected function addReason(string $id, Rule $reason): void +{ + + + +if (!isset($this->reasonSeen[$id])) { +$this->reasonSeen[$id] = true; +$this->reasons[$this->section][] = $reason; +} +} + +public function nextSection(): void +{ +$this->section++; +} + + + + + +public static function getMissingPackageReason(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, string $packageName, ?ConstraintInterface $constraint = null): array +{ +if (PlatformRepository::isPlatformPackage($packageName)) { + +if (0 === stripos($packageName, 'php') || $packageName === 'hhvm') { +$version = self::getPlatformPackageVersion($pool, $packageName, phpversion()); + +$msg = "- Root composer.json requires ".$packageName.self::constraintToText($constraint).' but '; + +if (defined('HHVM_VERSION') || ($packageName === 'hhvm' && count($pool->whatProvides($packageName)) > 0)) { +return [$msg, 'your HHVM version does not satisfy that requirement.']; +} + +if ($packageName === 'hhvm') { +return [$msg, 'HHVM was not detected on this machine, make sure it is in your PATH.']; +} + +if (null === $version) { +return [$msg, 'the '.$packageName.' package is disabled by your platform config. Enable it again with "composer config platform.'.$packageName.' --unset".']; +} + +return [$msg, 'your '.$packageName.' version ('. $version .') does not satisfy that requirement.']; +} + + +if (0 === stripos($packageName, 'ext-')) { +if (false !== strpos($packageName, ' ')) { +return ['- ', "PHP extension ".$packageName.' should be required as '.str_replace(' ', '-', $packageName).'.']; +} + +$ext = substr($packageName, 4); +$msg = "- Root composer.json requires PHP extension ".$packageName.self::constraintToText($constraint).' but '; + +$version = self::getPlatformPackageVersion($pool, $packageName, phpversion($ext) ?: '0'); +if (null === $version) { +if (extension_loaded($ext)) { +return [ +$msg, +'the '.$packageName.' package is disabled by your platform config. Enable it again with "composer config platform.'.$packageName.' --unset".', +]; +} + +return [$msg, 'it is missing from your system. Install or enable PHP\'s '.$ext.' extension.']; +} + +return [$msg, 'it has the wrong version installed ('.$version.').']; +} + + +if (0 === stripos($packageName, 'lib-')) { +if (strtolower($packageName) === 'lib-icu') { +$error = extension_loaded('intl') ? 'it has the wrong version installed, try upgrading the intl extension.' : 'it is missing from your system, make sure the intl extension is loaded.'; + +return ["- Root composer.json requires linked library ".$packageName.self::constraintToText($constraint).' but ', $error]; +} + +return ["- Root composer.json requires linked library ".$packageName.self::constraintToText($constraint).' but ', 'it has the wrong version installed or is missing from your system, make sure to load the extension providing it.']; +} +} + +$lockedPackage = null; +foreach ($request->getLockedPackages() as $package) { +if ($package->getName() === $packageName) { +$lockedPackage = $package; +if ($pool->isUnacceptableFixedOrLockedPackage($package)) { +return ["- ", $package->getPrettyName().' is fixed to '.$package->getPrettyVersion().' (lock file version) by a partial update but that version is rejected by your minimum-stability. Make sure you list it as an argument for the update command.']; +} +break; +} +} + + + +if ($packages = $repositorySet->findPackages($packageName, $constraint)) { +$rootReqs = $repositorySet->getRootRequires(); +if (isset($rootReqs[$packageName])) { +$filtered = array_filter($packages, static function ($p) use ($rootReqs, $packageName): bool { +return $rootReqs[$packageName]->matches(new Constraint('==', $p->getVersion())); +}); +if (0 === count($filtered)) { +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these conflict' : 'it conflicts').' with your root composer.json require ('.$rootReqs[$packageName]->getPrettyString().').']; +} +} + +$tempReqs = $repositorySet->getTemporaryConstraints(); +if (isset($tempReqs[$packageName])) { +$filtered = array_filter($packages, static function ($p) use ($tempReqs, $packageName): bool { +return $tempReqs[$packageName]->matches(new Constraint('==', $p->getVersion())); +}); +if (0 === count($filtered)) { +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these conflict' : 'it conflicts').' with your temporary update constraint ('.$packageName.':'.$tempReqs[$packageName]->getPrettyString().').']; +} +} + +if ($lockedPackage) { +$fixedConstraint = new Constraint('==', $lockedPackage->getVersion()); +$filtered = array_filter($packages, static function ($p) use ($fixedConstraint): bool { +return $fixedConstraint->matches(new Constraint('==', $p->getVersion())); +}); +if (0 === count($filtered)) { +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but the package is fixed to '.$lockedPackage->getPrettyVersion().' (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.']; +} +} + +$nonLockedPackages = array_filter($packages, static function ($p): bool { +return !$p->getRepository() instanceof LockArrayRepository; +}); + +if (!$nonLockedPackages) { +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' in the lock file but not in remote repositories, make sure you avoid updating this package to keep the one from the lock file.']; +} + +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but these were not loaded, likely because '.(self::hasMultipleNames($packages) ? 'they conflict' : 'it conflicts').' with another require.']; +} + + +if ($packages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES)) { + +if ($allReposPackages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { +return self::computeCheckForLowerPrioRepo($pool, $isVerbose, $packageName, $packages, $allReposPackages, 'minimum-stability', $constraint); +} + +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these do' : 'it does').' not match your minimum-stability.']; +} + + +if ($packages = $repositorySet->findPackages($packageName, null, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES)) { + +if ($allReposPackages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { +return self::computeCheckForLowerPrioRepo($pool, $isVerbose, $packageName, $packages, $allReposPackages, 'constraint', $constraint); +} + +$suffix = ''; +if ($constraint instanceof Constraint && $constraint->getVersion() === 'dev-master') { +foreach ($packages as $candidate) { +if (in_array($candidate->getVersion(), ['dev-default', 'dev-main'], true)) { +$suffix = ' Perhaps dev-master was renamed to '.$candidate->getPrettyVersion().'?'; +break; +} +} +} + + +$allReposPackages = $packages; +$topPackage = reset($allReposPackages); +if ($topPackage instanceof RootPackageInterface) { +$suffix = ' See https://getcomposer.org/dep-on-root for details and assistance.'; +} + +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these do' : 'it does').' not match the constraint.' . $suffix]; +} + +if (!Preg::isMatch('{^[A-Za-z0-9_./-]+$}', $packageName)) { +$illegalChars = Preg::replace('{[A-Za-z0-9_./-]+}', '', $packageName); + +return ["- Root composer.json requires $packageName, it ", 'could not be found, it looks like its name is invalid, "'.$illegalChars.'" is not allowed in package names.']; +} + +if ($providers = $repositorySet->getProviders($packageName)) { +$maxProviders = 20; +$providersStr = implode(array_map(static function ($p): string { +$description = $p['description'] ? ' '.substr($p['description'], 0, 100) : ''; + +return ' - '.$p['name'].$description."\n"; +}, count($providers) > $maxProviders + 1 ? array_slice($providers, 0, $maxProviders) : $providers)); +if (count($providers) > $maxProviders + 1) { +$providersStr .= ' ... and '.(count($providers) - $maxProviders).' more.'."\n"; +} + +return ["- Root composer.json requires $packageName".self::constraintToText($constraint).", it ", "could not be found in any version, but the following packages provide it:\n".$providersStr." Consider requiring one of these to satisfy the $packageName requirement."]; +} + +return ["- Root composer.json requires $packageName, it ", "could not be found in any version, there may be a typo in the package name."]; +} + + + + + +public static function getPackageList(array $packages, bool $isVerbose, ?Pool $pool = null, ?ConstraintInterface $constraint = null, bool $useRemovedVersionGroup = false): string +{ +$prepared = []; +$hasDefaultBranch = []; +foreach ($packages as $package) { +$prepared[$package->getName()]['name'] = $package->getPrettyName(); +$prepared[$package->getName()]['versions'][$package->getVersion()] = $package->getPrettyVersion().($package instanceof AliasPackage ? ' (alias of '.$package->getAliasOf()->getPrettyVersion().')' : ''); +if ($pool && $constraint) { +foreach ($pool->getRemovedVersions($package->getName(), $constraint) as $version => $prettyVersion) { +$prepared[$package->getName()]['versions'][$version] = $prettyVersion; +} +} +if ($pool && $useRemovedVersionGroup) { +foreach ($pool->getRemovedVersionsByPackage(spl_object_hash($package)) as $version => $prettyVersion) { +$prepared[$package->getName()]['versions'][$version] = $prettyVersion; +} +} +if ($package->isDefaultBranch()) { +$hasDefaultBranch[$package->getName()] = true; +} +} + +$preparedStrings = []; +foreach ($prepared as $name => $package) { + +if (isset($package['versions'][VersionParser::DEFAULT_BRANCH_ALIAS], $hasDefaultBranch[$name])) { +unset($package['versions'][VersionParser::DEFAULT_BRANCH_ALIAS]); +} + +uksort($package['versions'], 'version_compare'); + +if (!$isVerbose) { +$package['versions'] = self::condenseVersionList($package['versions'], 4); +} +$preparedStrings[] = $package['name'].'['.implode(', ', $package['versions']).']'; +} + +return implode(', ', $preparedStrings); +} + + + + + +private static function getPlatformPackageVersion(Pool $pool, string $packageName, string $version): ?string +{ +$available = $pool->whatProvides($packageName); + +if (count($available)) { +$selected = null; +foreach ($available as $pkg) { +if ($pkg->getRepository() instanceof PlatformRepository) { +$selected = $pkg; +break; +} +} +if ($selected === null) { +$selected = reset($available); +} + + +if ($selected->getName() !== $packageName) { + +foreach (array_merge(array_values($selected->getProvides()), array_values($selected->getReplaces())) as $link) { +if ($link->getTarget() === $packageName) { +return $link->getPrettyConstraint().' '.substr($link->getDescription(), 0, -1).'d by '.$selected->getPrettyString(); +} +} +} + +$version = $selected->getPrettyVersion(); +$extra = $selected->getExtra(); +if ($selected instanceof CompletePackageInterface && isset($extra['config.platform']) && $extra['config.platform'] === true) { +$version .= '; ' . str_replace('Package ', '', $selected->getDescription()); +} +} else { +return null; +} + +return $version; +} + + + + + +private static function condenseVersionList(array $versions, int $max, int $maxDev = 16): array +{ +if (count($versions) <= $max) { +return array_values($versions); +} + +$filtered = []; +$byMajor = []; +foreach ($versions as $version => $pretty) { +if (0 === stripos($version, 'dev-')) { +$byMajor['dev'][] = $pretty; +} else { +$byMajor[Preg::replace('{^(\d+)\..*}', '$1', $version)][] = $pretty; +} +} +foreach ($byMajor as $majorVersion => $versionsForMajor) { +$maxVersions = $majorVersion === 'dev' ? $maxDev : $max; +if (count($versionsForMajor) > $maxVersions) { + +$filtered[] = $versionsForMajor[0]; +$filtered[] = '...'; +$filtered[] = $versionsForMajor[count($versionsForMajor) - 1]; +} else { +$filtered = array_merge($filtered, $versionsForMajor); +} +} + +return $filtered; +} + + + + +private static function hasMultipleNames(array $packages): bool +{ +$name = null; +foreach ($packages as $package) { +if ($name === null || $name === $package->getName()) { +$name = $package->getName(); +} else { +return true; +} +} + +return false; +} + + + + + + +private static function computeCheckForLowerPrioRepo(Pool $pool, bool $isVerbose, string $packageName, array $higherRepoPackages, array $allReposPackages, string $reason, ?ConstraintInterface $constraint = null): array +{ +$nextRepoPackages = []; +$nextRepo = null; + +foreach ($allReposPackages as $package) { +if ($nextRepo === null || $nextRepo === $package->getRepository()) { +$nextRepoPackages[] = $package; +$nextRepo = $package->getRepository(); +} else { +break; +} +} + +if ($higherRepoPackages) { +$topPackage = reset($higherRepoPackages); +if ($topPackage instanceof RootPackageInterface) { +return [ +"- Root composer.json requires $packageName".self::constraintToText($constraint).', it is ', +'satisfiable by '.self::getPackageList($nextRepoPackages, $isVerbose, $pool, $constraint).' from '.$nextRepo->getRepoName().' but '.$topPackage->getPrettyName().' is the root package and cannot be modified. See https://getcomposer.org/dep-on-root for details and assistance.', +]; +} +} + +if ($nextRepo instanceof LockArrayRepository) { +$singular = count($higherRepoPackages) === 1; + +$suggestion = 'Make sure you either fix the '.$reason.' or avoid updating this package to keep the one present in the lock file ('.self::getPackageList($nextRepoPackages, $isVerbose, $pool, $constraint).').'; + +if ($nextRepoPackages[0]->getDistType() === 'path') { +$transportOptions = $nextRepoPackages[0]->getTransportOptions(); +if (!isset($transportOptions['symlink']) || $transportOptions['symlink'] !== false) { +$suggestion = 'Make sure you fix the '.$reason.' as packages installed from symlinked path repos are updated even in partial updates and the one from the lock file can thus not be used.'; +} +} + +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', +'found ' . self::getPackageList($higherRepoPackages, $isVerbose, $pool, $constraint).' but ' . ($singular ? 'it does' : 'these do') . ' not match your '.$reason.' and ' . ($singular ? 'is' : 'are') . ' therefore not installable. '.$suggestion, +]; +} + +return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', it is ', 'satisfiable by '.self::getPackageList($nextRepoPackages, $isVerbose, $pool, $constraint).' from '.$nextRepo->getRepoName().' but '.self::getPackageList($higherRepoPackages, $isVerbose, $pool, $constraint).' from '.reset($higherRepoPackages)->getRepository()->getRepoName().' has higher repository priority. The packages from the higher priority repository do not match your '.$reason.' and are therefore not installable. That repository is canonical so the lower priority repo\'s packages are not installable. See https://getcomposer.org/repoprio for details and assistance.']; +} + + + + +protected static function constraintToText(?ConstraintInterface $constraint = null): string +{ +return $constraint ? ' '.$constraint->getPrettyString() : ''; +} +} diff --git a/composer/src/Composer/DependencyResolver/Request.php b/composer/src/Composer/DependencyResolver/Request.php new file mode 100644 index 000000000..8ce047aee --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Request.php @@ -0,0 +1,236 @@ +lockedRepository = $lockedRepository; +} + +public function requireName(string $packageName, ?ConstraintInterface $constraint = null): void +{ +$packageName = strtolower($packageName); + +if ($constraint === null) { +$constraint = new MatchAllConstraint(); +} +if (isset($this->requires[$packageName])) { +throw new \LogicException('Overwriting requires seems like a bug ('.$packageName.' '.$this->requires[$packageName]->getPrettyString().' => '.$constraint->getPrettyString().', check why it is happening, might be a root alias'); +} +$this->requires[$packageName] = $constraint; +} + + + + + + + +public function fixPackage(BasePackage $package): void +{ +$this->fixedPackages[spl_object_hash($package)] = $package; +} + + + + + + + + + + + +public function lockPackage(BasePackage $package): void +{ +$this->lockedPackages[spl_object_hash($package)] = $package; +} + + + + + + + + +public function fixLockedPackage(BasePackage $package): void +{ +$this->fixedPackages[spl_object_hash($package)] = $package; +$this->fixedLockedPackages[spl_object_hash($package)] = $package; +} + +public function unlockPackage(BasePackage $package): void +{ +unset($this->lockedPackages[spl_object_hash($package)]); +} + + + + + +public function setUpdateAllowList(array $updateAllowList, $updateAllowTransitiveDependencies): void +{ +$this->updateAllowList = $updateAllowList; +$this->updateAllowTransitiveDependencies = $updateAllowTransitiveDependencies; +} + + + + +public function getUpdateAllowList(): array +{ +return $this->updateAllowList; +} + +public function getUpdateAllowTransitiveDependencies(): bool +{ +return $this->updateAllowTransitiveDependencies !== self::UPDATE_ONLY_LISTED; +} + +public function getUpdateAllowTransitiveRootDependencies(): bool +{ +return $this->updateAllowTransitiveDependencies === self::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; +} + + + + +public function getRequires(): array +{ +return $this->requires; +} + + + + +public function getFixedPackages(): array +{ +return $this->fixedPackages; +} + +public function isFixedPackage(BasePackage $package): bool +{ +return isset($this->fixedPackages[spl_object_hash($package)]); +} + + + + +public function getLockedPackages(): array +{ +return $this->lockedPackages; +} + +public function isLockedPackage(PackageInterface $package): bool +{ +return isset($this->lockedPackages[spl_object_hash($package)]) || isset($this->fixedLockedPackages[spl_object_hash($package)]); +} + + + + +public function getFixedOrLockedPackages(): array +{ +return array_merge($this->fixedPackages, $this->lockedPackages); +} + + + + + + + + + +public function getPresentMap(bool $packageIds = false): array +{ +$presentMap = []; + +if ($this->lockedRepository) { +foreach ($this->lockedRepository->getPackages() as $package) { +$presentMap[$packageIds ? $package->getId() : spl_object_hash($package)] = $package; +} +} + +foreach ($this->fixedPackages as $package) { +$presentMap[$packageIds ? $package->getId() : spl_object_hash($package)] = $package; +} + +return $presentMap; +} + + + + +public function getFixedPackagesMap(): array +{ +$fixedPackagesMap = []; + +foreach ($this->fixedPackages as $package) { +$fixedPackagesMap[$package->getId()] = $package; +} + +return $fixedPackagesMap; +} + + + + +public function getLockedRepository(): ?LockArrayRepository +{ +return $this->lockedRepository; +} +} diff --git a/composer/src/Composer/DependencyResolver/Rule.php b/composer/src/Composer/DependencyResolver/Rule.php new file mode 100644 index 000000000..73c07c258 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Rule.php @@ -0,0 +1,463 @@ +reasonData = $reasonData; + +$this->bitfield = (0 << self::BITFIELD_DISABLED) | +($reason << self::BITFIELD_REASON) | +(255 << self::BITFIELD_TYPE); +} + + + + +abstract public function getLiterals(): array; + + + + +abstract public function getHash(); + +abstract public function __toString(): string; + +abstract public function equals(Rule $rule): bool; + + + + +public function getReason(): int +{ +return ($this->bitfield & (255 << self::BITFIELD_REASON)) >> self::BITFIELD_REASON; +} + + + + +public function getReasonData() +{ +return $this->reasonData; +} + +public function getRequiredPackage(): ?string +{ +switch ($this->getReason()) { +case self::RULE_ROOT_REQUIRE: +return $this->getReasonData()['packageName']; +case self::RULE_FIXED: +return $this->getReasonData()['package']->getName(); +case self::RULE_PACKAGE_REQUIRES: +return $this->getReasonData()->getTarget(); +} + +return null; +} + + + + +public function setType($type): void +{ +$this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_TYPE)) | ((255 & $type) << self::BITFIELD_TYPE); +} + +public function getType(): int +{ +return ($this->bitfield & (255 << self::BITFIELD_TYPE)) >> self::BITFIELD_TYPE; +} + +public function disable(): void +{ +$this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_DISABLED)) | (1 << self::BITFIELD_DISABLED); +} + +public function enable(): void +{ +$this->bitfield &= ~(255 << self::BITFIELD_DISABLED); +} + +public function isDisabled(): bool +{ +return (bool) (($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); +} + +public function isEnabled(): bool +{ +return !(($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); +} + +abstract public function isAssertion(): bool; + +public function isCausedByLock(RepositorySet $repositorySet, Request $request, Pool $pool): bool +{ +if ($this->getReason() === self::RULE_PACKAGE_REQUIRES) { +if (PlatformRepository::isPlatformPackage($this->getReasonData()->getTarget())) { +return false; +} +if ($request->getLockedRepository()) { +foreach ($request->getLockedRepository()->getPackages() as $package) { +if ($package->getName() === $this->getReasonData()->getTarget()) { +if ($pool->isUnacceptableFixedOrLockedPackage($package)) { +return true; +} +if (!$this->getReasonData()->getConstraint()->matches(new Constraint('=', $package->getVersion()))) { +return true; +} + +if (!$request->isLockedPackage($package)) { +return true; +} +break; +} +} +} +} + +if ($this->getReason() === self::RULE_ROOT_REQUIRE) { +if (PlatformRepository::isPlatformPackage($this->getReasonData()['packageName'])) { +return false; +} +if ($request->getLockedRepository()) { +foreach ($request->getLockedRepository()->getPackages() as $package) { +if ($package->getName() === $this->getReasonData()['packageName']) { +if ($pool->isUnacceptableFixedOrLockedPackage($package)) { +return true; +} +if (!$this->getReasonData()['constraint']->matches(new Constraint('=', $package->getVersion()))) { +return true; +} +break; +} +} +} +} + +return false; +} + + + + +public function getSourcePackage(Pool $pool): BasePackage +{ +$literals = $this->getLiterals(); + +switch ($this->getReason()) { +case self::RULE_PACKAGE_CONFLICT: +$package1 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); +$package2 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); + +$reasonData = $this->getReasonData(); + +if ($reasonData->getSource() === $package1->getName()) { +[$package2, $package1] = [$package1, $package2]; +} + +return $package2; + +case self::RULE_PACKAGE_REQUIRES: +$sourceLiteral = array_shift($literals); +$sourcePackage = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($sourceLiteral)); + +return $sourcePackage; + +default: +throw new \LogicException('Not implemented'); +} +} + + + + + +public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, array $installedMap = [], array $learnedPool = []): string +{ +$literals = $this->getLiterals(); + +switch ($this->getReason()) { +case self::RULE_ROOT_REQUIRE: +$reasonData = $this->getReasonData(); +$packageName = $reasonData['packageName']; +$constraint = $reasonData['constraint']; + +$packages = $pool->whatProvides($packageName, $constraint); +if (!$packages) { +return 'No package found to satisfy root composer.json require '.$packageName.' '.$constraint->getPrettyString(); +} + +$packagesNonAlias = array_values(array_filter($packages, static function ($p): bool { +return !($p instanceof AliasPackage); +})); +if (count($packagesNonAlias) === 1) { +$package = $packagesNonAlias[0]; +if ($request->isLockedPackage($package)) { +return $package->getPrettyName().' is locked to version '.$package->getPrettyVersion()." and an update of this package was not requested."; +} +} + +return 'Root composer.json requires '.$packageName.' '.$constraint->getPrettyString().' -> satisfiable by '.$this->formatPackagesUnique($pool, $packages, $isVerbose, $constraint).'.'; + +case self::RULE_FIXED: +$package = $this->deduplicateDefaultBranchAlias($this->getReasonData()['package']); + +if ($request->isLockedPackage($package)) { +return $package->getPrettyName().' is locked to version '.$package->getPrettyVersion().' and an update of this package was not requested.'; +} + +return $package->getPrettyName().' is present at version '.$package->getPrettyVersion() . ' and cannot be modified by Composer'; + +case self::RULE_PACKAGE_CONFLICT: +$package1 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); +$package2 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); + +$conflictTarget = $package1->getPrettyString(); +$reasonData = $this->getReasonData(); + + +if ($reasonData->getSource() === $package1->getName()) { +[$package2, $package1] = [$package1, $package2]; +$conflictTarget = $package1->getPrettyName().' '.$reasonData->getPrettyConstraint(); +} + + + +if ($reasonData->getTarget() !== $package1->getName()) { +$provideType = null; +$provided = null; +foreach ($package1->getProvides() as $provide) { +if ($provide->getTarget() === $reasonData->getTarget()) { +$provideType = 'provides'; +$provided = $provide->getPrettyConstraint(); +break; +} +} +foreach ($package1->getReplaces() as $replace) { +if ($replace->getTarget() === $reasonData->getTarget()) { +$provideType = 'replaces'; +$provided = $replace->getPrettyConstraint(); +break; +} +} +if (null !== $provideType) { +$conflictTarget = $reasonData->getTarget().' '.$reasonData->getPrettyConstraint().' ('.$package1->getPrettyString().' '.$provideType.' '.$reasonData->getTarget().' '.$provided.')'; +} +} + +return $package2->getPrettyString().' conflicts with '.$conflictTarget.'.'; + +case self::RULE_PACKAGE_REQUIRES: +$sourceLiteral = array_shift($literals); +$sourcePackage = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($sourceLiteral)); +$reasonData = $this->getReasonData(); + +$requires = []; +foreach ($literals as $literal) { +$requires[] = $pool->literalToPackage($literal); +} + +$text = $reasonData->getPrettyString($sourcePackage); +if ($requires) { +$text .= ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $requires, $isVerbose, $reasonData->getConstraint()) . '.'; +} else { +$targetName = $reasonData->getTarget(); + +$reason = Problem::getMissingPackageReason($repositorySet, $request, $pool, $isVerbose, $targetName, $reasonData->getConstraint()); + +return $text . ' -> ' . $reason[1]; +} + +return $text; + +case self::RULE_PACKAGE_SAME_NAME: +$packageNames = []; +foreach ($literals as $literal) { +$package = $pool->literalToPackage($literal); +$packageNames[$package->getName()] = true; +} +$replacedName = $this->getReasonData(); + +if (count($packageNames) > 1) { +$reason = null; + +if (!isset($packageNames[$replacedName])) { +$reason = 'They '.(count($literals) === 2 ? 'both' : 'all').' replace '.$replacedName.' and thus cannot coexist.'; +} else { +$replacerNames = $packageNames; +unset($replacerNames[$replacedName]); +$replacerNames = array_keys($replacerNames); + +if (count($replacerNames) === 1) { +$reason = $replacerNames[0] . ' replaces '; +} else { +$reason = '['.implode(', ', $replacerNames).'] replace '; +} +$reason .= $replacedName.' and thus cannot coexist with it.'; +} + +$installedPackages = []; +$removablePackages = []; +foreach ($literals as $literal) { +if (isset($installedMap[abs($literal)])) { +$installedPackages[] = $pool->literalToPackage($literal); +} else { +$removablePackages[] = $pool->literalToPackage($literal); +} +} + +if ($installedPackages && $removablePackages) { +return $this->formatPackagesUnique($pool, $removablePackages, $isVerbose, null, true).' cannot be installed as that would require removing '.$this->formatPackagesUnique($pool, $installedPackages, $isVerbose, null, true).'. '.$reason; +} + +return 'Only one of these can be installed: '.$this->formatPackagesUnique($pool, $literals, $isVerbose, null, true).'. '.$reason; +} + +return 'You can only install one version of a package, so only one of these can be installed: ' . $this->formatPackagesUnique($pool, $literals, $isVerbose, null, true) . '.'; +case self::RULE_LEARNED: + + + + + + + +$learnedString = ' (conflict analysis result)'; + +if (count($literals) === 1) { +$ruleText = $pool->literalToPrettyString($literals[0], $installedMap); +} else { +$groups = []; +foreach ($literals as $literal) { +$package = $pool->literalToPackage($literal); +if (isset($installedMap[$package->id])) { +$group = $literal > 0 ? 'keep' : 'remove'; +} else { +$group = $literal > 0 ? 'install' : 'don\'t install'; +} + +$groups[$group][] = $this->deduplicateDefaultBranchAlias($package); +} +$ruleTexts = []; +foreach ($groups as $group => $packages) { +$ruleTexts[] = $group . (count($packages) > 1 ? ' one of' : '').' ' . $this->formatPackagesUnique($pool, $packages, $isVerbose); +} + +$ruleText = implode(' | ', $ruleTexts); +} + +return 'Conclusion: '.$ruleText.$learnedString; +case self::RULE_PACKAGE_ALIAS: +$aliasPackage = $pool->literalToPackage($literals[0]); + + +if ($aliasPackage->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +return ''; +} +$package = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); + +return $aliasPackage->getPrettyString() .' is an alias of '.$package->getPrettyString().' and thus requires it to be installed too.'; +case self::RULE_PACKAGE_INVERSE_ALIAS: + +$aliasPackage = $pool->literalToPackage($literals[1]); + + +if ($aliasPackage->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +return ''; +} +$package = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); + +return $aliasPackage->getPrettyString() .' is an alias of '.$package->getPrettyString().' and must be installed with it.'; +default: +$ruleText = ''; +foreach ($literals as $i => $literal) { +if ($i !== 0) { +$ruleText .= '|'; +} +$ruleText .= $pool->literalToPrettyString($literal, $installedMap); +} + +return '('.$ruleText.')'; +} +} + + + + +protected function formatPackagesUnique(Pool $pool, array $packages, bool $isVerbose, ?ConstraintInterface $constraint = null, bool $useRemovedVersionGroup = false): string +{ +foreach ($packages as $index => $package) { +if (!\is_object($package)) { +$packages[$index] = $pool->literalToPackage($package); +} +} + +return Problem::getPackageList($packages, $isVerbose, $pool, $constraint, $useRemovedVersionGroup); +} + +private function deduplicateDefaultBranchAlias(BasePackage $package): BasePackage +{ +if ($package instanceof AliasPackage && $package->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +$package = $package->getAliasOf(); +} + +return $package; +} +} diff --git a/composer/src/Composer/DependencyResolver/Rule2Literals.php b/composer/src/Composer/DependencyResolver/Rule2Literals.php new file mode 100644 index 000000000..05a87b2b2 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Rule2Literals.php @@ -0,0 +1,117 @@ +literal1 = $literal1; +$this->literal2 = $literal2; +} else { +$this->literal1 = $literal2; +$this->literal2 = $literal1; +} +} + + + + +public function getLiterals(): array +{ +return [$this->literal1, $this->literal2]; +} + + + + +public function getHash() +{ +return $this->literal1.','.$this->literal2; +} + + + + + + + + + +public function equals(Rule $rule): bool +{ + +if ($rule instanceof self) { +if ($this->literal1 !== $rule->literal1) { +return false; +} + +if ($this->literal2 !== $rule->literal2) { +return false; +} + +return true; +} + +$literals = $rule->getLiterals(); +if (2 !== \count($literals)) { +return false; +} + +if ($this->literal1 !== $literals[0]) { +return false; +} + +if ($this->literal2 !== $literals[1]) { +return false; +} + +return true; +} + + +public function isAssertion(): bool +{ +return false; +} + + + + +public function __toString(): string +{ +$result = $this->isDisabled() ? 'disabled(' : '('; + +$result .= $this->literal1 . '|' . $this->literal2 . ')'; + +return $result; +} +} diff --git a/composer/src/Composer/DependencyResolver/RuleSet.php b/composer/src/Composer/DependencyResolver/RuleSet.php new file mode 100644 index 000000000..c29d2d4b5 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/RuleSet.php @@ -0,0 +1,194 @@ + 'PACKAGE', +self::TYPE_REQUEST => 'REQUEST', +self::TYPE_LEARNED => 'LEARNED', +]; + + +protected $rules; + + +protected $nextRuleId = 0; + + +protected $rulesByHash = []; + +public function __construct() +{ +foreach ($this->getTypes() as $type) { +$this->rules[$type] = []; +} +} + + + + +public function add(Rule $rule, $type): void +{ +if (!isset(self::TYPES[$type])) { +throw new \OutOfBoundsException('Unknown rule type: ' . $type); +} + +$hash = $rule->getHash(); + + +if (isset($this->rulesByHash[$hash])) { +$potentialDuplicates = $this->rulesByHash[$hash]; +if (\is_array($potentialDuplicates)) { +foreach ($potentialDuplicates as $potentialDuplicate) { +if ($rule->equals($potentialDuplicate)) { +return; +} +} +} else { +if ($rule->equals($potentialDuplicates)) { +return; +} +} +} + +if (!isset($this->rules[$type])) { +$this->rules[$type] = []; +} + +$this->rules[$type][] = $rule; +$this->ruleById[$this->nextRuleId] = $rule; +$rule->setType($type); + +$this->nextRuleId++; + +if (!isset($this->rulesByHash[$hash])) { +$this->rulesByHash[$hash] = $rule; +} elseif (\is_array($this->rulesByHash[$hash])) { +$this->rulesByHash[$hash][] = $rule; +} else { +$originalRule = $this->rulesByHash[$hash]; +$this->rulesByHash[$hash] = [$originalRule, $rule]; +} +} + +public function count(): int +{ +return $this->nextRuleId; +} + +public function ruleById(int $id): Rule +{ +return $this->ruleById[$id]; +} + + +public function getRules(): array +{ +return $this->rules; +} + +public function getIterator(): RuleSetIterator +{ +return new RuleSetIterator($this->getRules()); +} + + + + +public function getIteratorFor($types): RuleSetIterator +{ +if (!\is_array($types)) { +$types = [$types]; +} + +$allRules = $this->getRules(); + + +$rules = []; + +foreach ($types as $type) { +$rules[$type] = $allRules[$type]; +} + +return new RuleSetIterator($rules); +} + + + + +public function getIteratorWithout($types): RuleSetIterator +{ +if (!\is_array($types)) { +$types = [$types]; +} + +$rules = $this->getRules(); + +foreach ($types as $type) { +unset($rules[$type]); +} + +return new RuleSetIterator($rules); +} + + + + +public function getTypes(): array +{ +$types = self::TYPES; + +return array_keys($types); +} + +public function getPrettyString(?RepositorySet $repositorySet = null, ?Request $request = null, ?Pool $pool = null, bool $isVerbose = false): string +{ +$string = "\n"; +foreach ($this->rules as $type => $rules) { +$string .= str_pad(self::TYPES[$type], 8, ' ') . ": "; +foreach ($rules as $rule) { +$string .= ($repositorySet && $request && $pool ? $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose) : $rule)."\n"; +} +$string .= "\n\n"; +} + +return $string; +} + +public function __toString(): string +{ +return $this->getPrettyString(); +} +} diff --git a/composer/src/Composer/DependencyResolver/RuleSetGenerator.php b/composer/src/Composer/DependencyResolver/RuleSetGenerator.php new file mode 100644 index 000000000..37df1920c --- /dev/null +++ b/composer/src/Composer/DependencyResolver/RuleSetGenerator.php @@ -0,0 +1,327 @@ +policy = $policy; +$this->pool = $pool; +$this->rules = new RuleSet; +} + + + + + + + + + + + + + + + +protected function createRequireRule(BasePackage $package, array $providers, $reason, $reasonData = null): ?Rule +{ +$literals = [-$package->id]; + +foreach ($providers as $provider) { + +if ($provider === $package) { +return null; +} +$literals[] = $provider->id; +} + +return new GenericRule($literals, $reason, $reasonData); +} + + + + + + + + + + + + + + + +protected function createInstallOneOfRule(array $packages, $reason, $reasonData): Rule +{ +$literals = []; +foreach ($packages as $package) { +$literals[] = $package->id; +} + +return new GenericRule($literals, $reason, $reasonData); +} + + + + + + + + + + + + + + + +protected function createRule2Literals(BasePackage $issuer, BasePackage $provider, $reason, $reasonData = null): ?Rule +{ + +if ($issuer === $provider) { +return null; +} + +return new Rule2Literals(-$issuer->id, -$provider->id, $reason, $reasonData); +} + + + + + + + + +protected function createMultiConflictRule(array $packages, $reason, $reasonData): Rule +{ +$literals = []; +foreach ($packages as $package) { +$literals[] = -$package->id; +} + +if (\count($literals) === 2) { +return new Rule2Literals($literals[0], $literals[1], $reason, $reasonData); +} + +return new MultiConflictRule($literals, $reason, $reasonData); +} + + + + + + + + + + +private function addRule($type, ?Rule $newRule = null): void +{ +if (!$newRule) { +return; +} + +$this->rules->add($newRule, $type); +} + +protected function addRulesForPackage(BasePackage $package, PlatformRequirementFilterInterface $platformRequirementFilter): void +{ + +$workQueue = new \SplQueue; +$workQueue->enqueue($package); + +while (!$workQueue->isEmpty()) { +$package = $workQueue->dequeue(); +if (isset($this->addedMap[$package->id])) { +continue; +} + +$this->addedMap[$package->id] = $package; + +if (!$package instanceof AliasPackage) { +foreach ($package->getNames(false) as $name) { +$this->addedPackagesByNames[$name][] = $package; +} +} else { +$workQueue->enqueue($package->getAliasOf()); +$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, [$package->getAliasOf()], Rule::RULE_PACKAGE_ALIAS, $package)); + + +$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package->getAliasOf(), [$package], Rule::RULE_PACKAGE_INVERSE_ALIAS, $package->getAliasOf())); + + + +if (!$package->hasSelfVersionRequires()) { +continue; +} +} + +foreach ($package->getRequires() as $link) { +$constraint = $link->getConstraint(); +if ($platformRequirementFilter->isIgnored($link->getTarget())) { +continue; +} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { +$constraint = $platformRequirementFilter->filterConstraint($link->getTarget(), $constraint); +} + +$possibleRequires = $this->pool->whatProvides($link->getTarget(), $constraint); + +$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, $possibleRequires, Rule::RULE_PACKAGE_REQUIRES, $link)); + +foreach ($possibleRequires as $require) { +$workQueue->enqueue($require); +} +} +} +} + +protected function addConflictRules(PlatformRequirementFilterInterface $platformRequirementFilter): void +{ + +foreach ($this->addedMap as $package) { +foreach ($package->getConflicts() as $link) { + +if (!isset($this->addedPackagesByNames[$link->getTarget()])) { +continue; +} + +$constraint = $link->getConstraint(); +if ($platformRequirementFilter->isIgnored($link->getTarget())) { +continue; +} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { +$constraint = $platformRequirementFilter->filterConstraint($link->getTarget(), $constraint, false); +} + +$conflicts = $this->pool->whatProvides($link->getTarget(), $constraint); + +foreach ($conflicts as $conflict) { + + + +if (!$conflict instanceof AliasPackage || $conflict->getName() === $link->getTarget()) { +$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $conflict, Rule::RULE_PACKAGE_CONFLICT, $link)); +} +} +} +} + +foreach ($this->addedPackagesByNames as $name => $packages) { +if (\count($packages) > 1) { +$reason = Rule::RULE_PACKAGE_SAME_NAME; +$this->addRule(RuleSet::TYPE_PACKAGE, $this->createMultiConflictRule($packages, $reason, $name)); +} +} +} + +protected function addRulesForRequest(Request $request, PlatformRequirementFilterInterface $platformRequirementFilter): void +{ +foreach ($request->getFixedPackages() as $package) { +if ($package->id === -1) { + +if ($this->pool->isUnacceptableFixedOrLockedPackage($package)) { +continue; +} + + +throw new \LogicException("Fixed package ".$package->getPrettyString()." was not added to solver pool."); +} + +$this->addRulesForPackage($package, $platformRequirementFilter); + +$rule = $this->createInstallOneOfRule([$package], Rule::RULE_FIXED, [ +'package' => $package, +]); +$this->addRule(RuleSet::TYPE_REQUEST, $rule); +} + +foreach ($request->getRequires() as $packageName => $constraint) { +if ($platformRequirementFilter->isIgnored($packageName)) { +continue; +} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { +$constraint = $platformRequirementFilter->filterConstraint($packageName, $constraint); +} + +$packages = $this->pool->whatProvides($packageName, $constraint); +if ($packages) { +foreach ($packages as $package) { +$this->addRulesForPackage($package, $platformRequirementFilter); +} + +$rule = $this->createInstallOneOfRule($packages, Rule::RULE_ROOT_REQUIRE, [ +'packageName' => $packageName, +'constraint' => $constraint, +]); +$this->addRule(RuleSet::TYPE_REQUEST, $rule); +} +} +} + +protected function addRulesForRootAliases(PlatformRequirementFilterInterface $platformRequirementFilter): void +{ +foreach ($this->pool->getPackages() as $package) { + + + +if (!isset($this->addedMap[$package->id]) && +$package instanceof AliasPackage && +($package->isRootPackageAlias() || isset($this->addedMap[$package->getAliasOf()->id])) +) { +$this->addRulesForPackage($package, $platformRequirementFilter); +} +} +} + +public function getRulesFor(Request $request, ?PlatformRequirementFilterInterface $platformRequirementFilter = null): RuleSet +{ +$platformRequirementFilter = $platformRequirementFilter ?: PlatformRequirementFilterFactory::ignoreNothing(); + +$this->addRulesForRequest($request, $platformRequirementFilter); + +$this->addRulesForRootAliases($platformRequirementFilter); + +$this->addConflictRules($platformRequirementFilter); + + +$this->addedMap = $this->addedPackagesByNames = []; + +$rules = $this->rules; + +$this->rules = new RuleSet; + +return $rules; +} +} diff --git a/composer/src/Composer/DependencyResolver/RuleSetIterator.php b/composer/src/Composer/DependencyResolver/RuleSetIterator.php new file mode 100644 index 000000000..3cb68ec1b --- /dev/null +++ b/composer/src/Composer/DependencyResolver/RuleSetIterator.php @@ -0,0 +1,105 @@ +rules = $rules; +$this->types = array_keys($rules); +sort($this->types); + +$this->rewind(); +} + +public function current(): Rule +{ +return $this->rules[$this->currentType][$this->currentOffset]; +} + + + + +public function key(): int +{ +return $this->currentType; +} + +public function next(): void +{ +$this->currentOffset++; + +if (!isset($this->rules[$this->currentType])) { +return; +} + +if ($this->currentOffset >= \count($this->rules[$this->currentType])) { +$this->currentOffset = 0; + +do { +$this->currentTypeOffset++; + +if (!isset($this->types[$this->currentTypeOffset])) { +$this->currentType = -1; +break; +} + +$this->currentType = $this->types[$this->currentTypeOffset]; +} while (0 === \count($this->rules[$this->currentType])); +} +} + +public function rewind(): void +{ +$this->currentOffset = 0; + +$this->currentTypeOffset = -1; +$this->currentType = -1; + +do { +$this->currentTypeOffset++; + +if (!isset($this->types[$this->currentTypeOffset])) { +$this->currentType = -1; +break; +} + +$this->currentType = $this->types[$this->currentTypeOffset]; +} while (0 === \count($this->rules[$this->currentType])); +} + +public function valid(): bool +{ +return isset($this->rules[$this->currentType], $this->rules[$this->currentType][$this->currentOffset]); +} +} diff --git a/composer/src/Composer/DependencyResolver/RuleWatchChain.php b/composer/src/Composer/DependencyResolver/RuleWatchChain.php new file mode 100644 index 000000000..5bcb57432 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/RuleWatchChain.php @@ -0,0 +1,51 @@ +rewind(); +for ($i = 0; $i < $offset; $i++, $this->next()); +} + + + + + + + + + +public function remove(): void +{ +$offset = $this->key(); +$this->offsetUnset($offset); +$this->seek($offset); +} +} diff --git a/composer/src/Composer/DependencyResolver/RuleWatchGraph.php b/composer/src/Composer/DependencyResolver/RuleWatchGraph.php new file mode 100644 index 000000000..bda05199c --- /dev/null +++ b/composer/src/Composer/DependencyResolver/RuleWatchGraph.php @@ -0,0 +1,167 @@ +getRule()->isAssertion()) { +return; +} + +if (!$node->getRule() instanceof MultiConflictRule) { +foreach ([$node->watch1, $node->watch2] as $literal) { +if (!isset($this->watchChains[$literal])) { +$this->watchChains[$literal] = new RuleWatchChain; +} + +$this->watchChains[$literal]->unshift($node); +} +} else { +foreach ($node->getRule()->getLiterals() as $literal) { +if (!isset($this->watchChains[$literal])) { +$this->watchChains[$literal] = new RuleWatchChain; +} + +$this->watchChains[$literal]->unshift($node); +} +} +} + + + + + + + + + + + + + + + + + + + + + + + + +public function propagateLiteral(int $decidedLiteral, int $level, Decisions $decisions): ?Rule +{ + + + +$literal = -$decidedLiteral; + +if (!isset($this->watchChains[$literal])) { +return null; +} + +$chain = $this->watchChains[$literal]; + +$chain->rewind(); +while ($chain->valid()) { +$node = $chain->current(); +if (!$node->getRule() instanceof MultiConflictRule) { +$otherWatch = $node->getOtherWatch($literal); + +if (!$node->getRule()->isDisabled() && !$decisions->satisfy($otherWatch)) { +$ruleLiterals = $node->getRule()->getLiterals(); + +$alternativeLiterals = array_filter($ruleLiterals, static function ($ruleLiteral) use ($literal, $otherWatch, $decisions): bool { +return $literal !== $ruleLiteral && +$otherWatch !== $ruleLiteral && +!$decisions->conflict($ruleLiteral); +}); + +if (\count($alternativeLiterals) > 0) { +reset($alternativeLiterals); +$this->moveWatch($literal, current($alternativeLiterals), $node); +continue; +} + +if ($decisions->conflict($otherWatch)) { +return $node->getRule(); +} + +$decisions->decide($otherWatch, $level, $node->getRule()); +} +} else { +foreach ($node->getRule()->getLiterals() as $otherLiteral) { +if ($literal !== $otherLiteral && !$decisions->satisfy($otherLiteral)) { +if ($decisions->conflict($otherLiteral)) { +return $node->getRule(); +} + +$decisions->decide($otherLiteral, $level, $node->getRule()); +} +} +} + +$chain->next(); +} + +return null; +} + + + + + + + + + + +protected function moveWatch(int $fromLiteral, int $toLiteral, RuleWatchNode $node): void +{ +if (!isset($this->watchChains[$toLiteral])) { +$this->watchChains[$toLiteral] = new RuleWatchChain; +} + +$node->moveWatch($fromLiteral, $toLiteral); +$this->watchChains[$fromLiteral]->remove(); +$this->watchChains[$toLiteral]->unshift($node); +} +} diff --git a/composer/src/Composer/DependencyResolver/RuleWatchNode.php b/composer/src/Composer/DependencyResolver/RuleWatchNode.php new file mode 100644 index 000000000..1c22f0b30 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/RuleWatchNode.php @@ -0,0 +1,114 @@ +rule = $rule; + +$literals = $rule->getLiterals(); + +$literalCount = \count($literals); +$this->watch1 = $literalCount > 0 ? $literals[0] : 0; +$this->watch2 = $literalCount > 1 ? $literals[1] : 0; +} + + + + + + + + + +public function watch2OnHighest(Decisions $decisions): void +{ +$literals = $this->rule->getLiterals(); + + +if (\count($literals) < 3 || $this->rule instanceof MultiConflictRule) { +return; +} + +$watchLevel = 0; + +foreach ($literals as $literal) { +$level = $decisions->decisionLevel($literal); + +if ($level > $watchLevel) { +$this->watch2 = $literal; +$watchLevel = $level; +} +} +} + + + + +public function getRule(): Rule +{ +return $this->rule; +} + + + + + + + +public function getOtherWatch(int $literal): int +{ +if ($this->watch1 === $literal) { +return $this->watch2; +} + +return $this->watch1; +} + + + + + + + +public function moveWatch(int $from, int $to): void +{ +if ($this->watch1 === $from) { +$this->watch1 = $to; +} else { +$this->watch2 = $to; +} +} +} diff --git a/composer/src/Composer/DependencyResolver/Solver.php b/composer/src/Composer/DependencyResolver/Solver.php new file mode 100644 index 000000000..b9df98104 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Solver.php @@ -0,0 +1,791 @@ +io = $io; +$this->policy = $policy; +$this->pool = $pool; +} + +public function getRuleSetSize(): int +{ +return \count($this->rules); +} + +public function getPool(): Pool +{ +return $this->pool; +} + + + +private function makeAssertionRuleDecisions(): void +{ +$decisionStart = \count($this->decisions) - 1; + +$rulesCount = \count($this->rules); +for ($ruleIndex = 0; $ruleIndex < $rulesCount; $ruleIndex++) { +$rule = $this->rules->ruleById[$ruleIndex]; + +if (!$rule->isAssertion() || $rule->isDisabled()) { +continue; +} + +$literals = $rule->getLiterals(); +$literal = $literals[0]; + +if (!$this->decisions->decided($literal)) { +$this->decisions->decide($literal, 1, $rule); +continue; +} + +if ($this->decisions->satisfy($literal)) { +continue; +} + + +if (RuleSet::TYPE_LEARNED === $rule->getType()) { +$rule->disable(); +continue; +} + +$conflict = $this->decisions->decisionRule($literal); + +if ($conflict && RuleSet::TYPE_PACKAGE === $conflict->getType()) { +$problem = new Problem(); + +$problem->addRule($rule); +$problem->addRule($conflict); +$rule->disable(); +$this->problems[] = $problem; +continue; +} + + +$problem = new Problem(); +$problem->addRule($rule); +$problem->addRule($conflict); + + + +foreach ($this->rules->getIteratorFor(RuleSet::TYPE_REQUEST) as $assertRule) { +if ($assertRule->isDisabled() || !$assertRule->isAssertion()) { +continue; +} + +$assertRuleLiterals = $assertRule->getLiterals(); +$assertRuleLiteral = $assertRuleLiterals[0]; + +if (abs($literal) !== abs($assertRuleLiteral)) { +continue; +} +$problem->addRule($assertRule); +$assertRule->disable(); +} +$this->problems[] = $problem; + +$this->decisions->resetToOffset($decisionStart); +$ruleIndex = -1; +} +} + +protected function setupFixedMap(Request $request): void +{ +$this->fixedMap = []; +foreach ($request->getFixedPackages() as $package) { +$this->fixedMap[$package->id] = $package; +} +} + +protected function checkForRootRequireProblems(Request $request, PlatformRequirementFilterInterface $platformRequirementFilter): void +{ +foreach ($request->getRequires() as $packageName => $constraint) { +if ($platformRequirementFilter->isIgnored($packageName)) { +continue; +} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { +$constraint = $platformRequirementFilter->filterConstraint($packageName, $constraint); +} + +if (!$this->pool->whatProvides($packageName, $constraint)) { +$problem = new Problem(); +$problem->addRule(new GenericRule([], Rule::RULE_ROOT_REQUIRE, ['packageName' => $packageName, 'constraint' => $constraint])); +$this->problems[] = $problem; +} +} +} + +public function solve(Request $request, ?PlatformRequirementFilterInterface $platformRequirementFilter = null): LockTransaction +{ +$platformRequirementFilter = $platformRequirementFilter ?: PlatformRequirementFilterFactory::ignoreNothing(); + +$this->setupFixedMap($request); + +$this->io->writeError('Generating rules', true, IOInterface::DEBUG); +$ruleSetGenerator = new RuleSetGenerator($this->policy, $this->pool); +$this->rules = $ruleSetGenerator->getRulesFor($request, $platformRequirementFilter); +unset($ruleSetGenerator); +$this->checkForRootRequireProblems($request, $platformRequirementFilter); +$this->decisions = new Decisions($this->pool); +$this->watchGraph = new RuleWatchGraph; + +foreach ($this->rules as $rule) { +$this->watchGraph->insert(new RuleWatchNode($rule)); +} + + +$this->makeAssertionRuleDecisions(); + +$this->io->writeError('Resolving dependencies through SAT', true, IOInterface::DEBUG); +$before = microtime(true); +$this->runSat(); +$this->io->writeError('', true, IOInterface::DEBUG); +$this->io->writeError(sprintf('Dependency resolution completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERBOSE); + +if ($this->problems) { +throw new SolverProblemsException($this->problems, $this->learnedPool); +} + +return new LockTransaction($this->pool, $request->getPresentMap(), $request->getFixedPackagesMap(), $this->decisions); +} + + + + + + + + + +protected function propagate(int $level): ?Rule +{ +while ($this->decisions->validOffset($this->propagateIndex)) { +$decision = $this->decisions->atOffset($this->propagateIndex); + +$conflict = $this->watchGraph->propagateLiteral( +$decision[Decisions::DECISION_LITERAL], +$level, +$this->decisions +); + +$this->propagateIndex++; + +if ($conflict) { +return $conflict; +} +} + +return null; +} + + + + +private function revert(int $level): void +{ +while (!$this->decisions->isEmpty()) { +$literal = $this->decisions->lastLiteral(); + +if ($this->decisions->undecided($literal)) { +break; +} + +$decisionLevel = $this->decisions->decisionLevel($literal); + +if ($decisionLevel <= $level) { +break; +} + +$this->decisions->revertLast(); +$this->propagateIndex = \count($this->decisions); +} + +while (!empty($this->branches) && $this->branches[\count($this->branches) - 1][self::BRANCH_LEVEL] >= $level) { +array_pop($this->branches); +} +} + + + + + + + + + + + + + + + + +private function setPropagateLearn(int $level, $literal, Rule $rule): int +{ +$level++; + +$this->decisions->decide($literal, $level, $rule); + +while (true) { +$rule = $this->propagate($level); + +if (null === $rule) { +break; +} + +if ($level === 1) { +return $this->analyzeUnsolvable($rule); +} + + +[$learnLiteral, $newLevel, $newRule, $why] = $this->analyze($level, $rule); + +if ($newLevel <= 0 || $newLevel >= $level) { +throw new SolverBugException( +"Trying to revert to invalid level ".$newLevel." from level ".$level."." +); +} + +$level = $newLevel; + +$this->revert($level); + +$this->rules->add($newRule, RuleSet::TYPE_LEARNED); + +$this->learnedWhy[spl_object_hash($newRule)] = $why; + +$ruleNode = new RuleWatchNode($newRule); +$ruleNode->watch2OnHighest($this->decisions); +$this->watchGraph->insert($ruleNode); + +$this->decisions->decide($learnLiteral, $level, $newRule); +} + +return $level; +} + + + + +private function selectAndInstall(int $level, array $decisionQueue, Rule $rule): int +{ + +$literals = $this->policy->selectPreferredPackages($this->pool, $decisionQueue, $rule->getRequiredPackage()); + +$selectedLiteral = array_shift($literals); + + +if (\count($literals)) { +$this->branches[] = [$literals, $level]; +} + +return $this->setPropagateLearn($level, $selectedLiteral, $rule); +} + + + + +protected function analyze(int $level, Rule $rule): array +{ +$analyzedRule = $rule; +$ruleLevel = 1; +$num = 0; +$l1num = 0; +$seen = []; +$learnedLiterals = [null]; + +$decisionId = \count($this->decisions); + +$this->learnedPool[] = []; + +while (true) { +$this->learnedPool[\count($this->learnedPool) - 1][] = $rule; + +foreach ($rule->getLiterals() as $literal) { + +if ($rule instanceof MultiConflictRule && !$this->decisions->decided($literal)) { +continue; +} + + +if ($this->decisions->satisfy($literal)) { +continue; +} + +if (isset($seen[abs($literal)])) { +continue; +} +$seen[abs($literal)] = true; + +$l = $this->decisions->decisionLevel($literal); + +if (1 === $l) { +$l1num++; +} elseif ($level === $l) { +$num++; +} else { + +$learnedLiterals[] = $literal; + +if ($l > $ruleLevel) { +$ruleLevel = $l; +} +} +} +unset($literal); + +$l1retry = true; +while ($l1retry) { +$l1retry = false; + +if (0 === $num && 0 === --$l1num) { + +break 2; +} + +while (true) { +if ($decisionId <= 0) { +throw new SolverBugException( +"Reached invalid decision id $decisionId while looking through $rule for a literal present in the analyzed rule $analyzedRule." +); +} + +$decisionId--; + +$decision = $this->decisions->atOffset($decisionId); +$literal = $decision[Decisions::DECISION_LITERAL]; + +if (isset($seen[abs($literal)])) { +break; +} +} + +unset($seen[abs($literal)]); + +if (0 !== $num && 0 === --$num) { +if ($literal < 0) { +$this->testFlagLearnedPositiveLiteral = true; +} +$learnedLiterals[0] = -$literal; + +if (!$l1num) { +break 2; +} + +foreach ($learnedLiterals as $i => $learnedLiteral) { +if ($i !== 0) { +unset($seen[abs($learnedLiteral)]); +} +} + +$l1num++; +$l1retry = true; +} else { +$decision = $this->decisions->atOffset($decisionId); +$rule = $decision[Decisions::DECISION_REASON]; + +if ($rule instanceof MultiConflictRule) { + +foreach ($rule->getLiterals() as $literal) { +if (!isset($seen[abs($literal)]) && $this->decisions->satisfy(-$literal)) { +$this->learnedPool[\count($this->learnedPool) - 1][] = $rule; +$l = $this->decisions->decisionLevel($literal); +if (1 === $l) { +$l1num++; +} elseif ($level === $l) { +$num++; +} else { + +$learnedLiterals[] = $literal; + +if ($l > $ruleLevel) { +$ruleLevel = $l; +} +} +$seen[abs($literal)] = true; +break; +} +} + +$l1retry = true; +} +} +} + +$decision = $this->decisions->atOffset($decisionId); +$rule = $decision[Decisions::DECISION_REASON]; +} + +$why = \count($this->learnedPool) - 1; + +if (null === $learnedLiterals[0]) { +throw new SolverBugException( +"Did not find a learnable literal in analyzed rule $analyzedRule." +); +} + +$newRule = new GenericRule($learnedLiterals, Rule::RULE_LEARNED, $why); + +return [$learnedLiterals[0], $ruleLevel, $newRule, $why]; +} + + + + +private function analyzeUnsolvableRule(Problem $problem, Rule $conflictRule, array &$ruleSeen): void +{ +$why = spl_object_hash($conflictRule); +$ruleSeen[$why] = true; + +if ($conflictRule->getType() === RuleSet::TYPE_LEARNED) { +$learnedWhy = $this->learnedWhy[$why]; +$problemRules = $this->learnedPool[$learnedWhy]; + +foreach ($problemRules as $problemRule) { +if (!isset($ruleSeen[spl_object_hash($problemRule)])) { +$this->analyzeUnsolvableRule($problem, $problemRule, $ruleSeen); +} +} + +return; +} + +if ($conflictRule->getType() === RuleSet::TYPE_PACKAGE) { + +return; +} + +$problem->nextSection(); +$problem->addRule($conflictRule); +} + +private function analyzeUnsolvable(Rule $conflictRule): int +{ +$problem = new Problem(); +$problem->addRule($conflictRule); + +$ruleSeen = []; + +$this->analyzeUnsolvableRule($problem, $conflictRule, $ruleSeen); + +$this->problems[] = $problem; + +$seen = []; +$literals = $conflictRule->getLiterals(); + +foreach ($literals as $literal) { + +if ($this->decisions->satisfy($literal)) { +continue; +} +$seen[abs($literal)] = true; +} + +foreach ($this->decisions as $decision) { +$literal = $decision[Decisions::DECISION_LITERAL]; + + +if (!isset($seen[abs($literal)])) { +continue; +} + +$why = $decision[Decisions::DECISION_REASON]; + +$problem->addRule($why); +$this->analyzeUnsolvableRule($problem, $why, $ruleSeen); + +$literals = $why->getLiterals(); + +foreach ($literals as $literal) { + +if ($this->decisions->satisfy($literal)) { +continue; +} +$seen[abs($literal)] = true; +} +} + +return 0; +} + + + + + + + + +private function enableDisableLearnedRules(): void +{ +foreach ($this->rules->getIteratorFor(RuleSet::TYPE_LEARNED) as $rule) { +$why = $this->learnedWhy[spl_object_hash($rule)]; +$problemRules = $this->learnedPool[$why]; + +$foundDisabled = false; +foreach ($problemRules as $problemRule) { +if ($problemRule->isDisabled()) { +$foundDisabled = true; +break; +} +} + +if ($foundDisabled && $rule->isEnabled()) { +$rule->disable(); +} elseif (!$foundDisabled && $rule->isDisabled()) { +$rule->enable(); +} +} +} + +private function runSat(): void +{ +$this->propagateIndex = 0; + + + + + + + + + + + +$level = 1; +$systemLevel = $level + 1; + +while (true) { +if (1 === $level) { +$conflictRule = $this->propagate($level); +if (null !== $conflictRule) { +if ($this->analyzeUnsolvable($conflictRule)) { +continue; +} + +return; +} +} + + +if ($level < $systemLevel) { +$iterator = $this->rules->getIteratorFor(RuleSet::TYPE_REQUEST); +foreach ($iterator as $rule) { +if ($rule->isEnabled()) { +$decisionQueue = []; +$noneSatisfied = true; + +foreach ($rule->getLiterals() as $literal) { +if ($this->decisions->satisfy($literal)) { +$noneSatisfied = false; +break; +} +if ($literal > 0 && $this->decisions->undecided($literal)) { +$decisionQueue[] = $literal; +} +} + +if ($noneSatisfied && \count($decisionQueue)) { + +$prunedQueue = []; +foreach ($decisionQueue as $literal) { +if (isset($this->fixedMap[abs($literal)])) { +$prunedQueue[] = $literal; +} +} +if (!empty($prunedQueue)) { +$decisionQueue = $prunedQueue; +} +} + +if ($noneSatisfied && \count($decisionQueue)) { +$oLevel = $level; +$level = $this->selectAndInstall($level, $decisionQueue, $rule); + +if (0 === $level) { +return; +} +if ($level <= $oLevel) { +break; +} +} +} +} + +$systemLevel = $level + 1; + + +$iterator->next(); +if ($iterator->valid()) { +continue; +} +} + +if ($level < $systemLevel) { +$systemLevel = $level; +} + +$rulesCount = \count($this->rules); +$pass = 1; + +$this->io->writeError('Looking at all rules.', true, IOInterface::DEBUG); +for ($i = 0, $n = 0; $n < $rulesCount; $i++, $n++) { +if ($i === $rulesCount) { +if (1 === $pass) { +$this->io->writeError("Something's changed, looking at all rules again (pass #$pass)", false, IOInterface::DEBUG); +} else { +$this->io->overwriteError("Something's changed, looking at all rules again (pass #$pass)", false, null, IOInterface::DEBUG); +} + +$i = 0; +$pass++; +} + +$rule = $this->rules->ruleById[$i]; +$literals = $rule->getLiterals(); + +if ($rule->isDisabled()) { +continue; +} + +$decisionQueue = []; + + + + + + + +foreach ($literals as $literal) { +if ($literal <= 0) { +if (!$this->decisions->decidedInstall($literal)) { +continue 2; +} +} else { +if ($this->decisions->decidedInstall($literal)) { +continue 2; +} +if ($this->decisions->undecided($literal)) { +$decisionQueue[] = $literal; +} +} +} + + +if (\count($decisionQueue) < 2) { +continue; +} + +$level = $this->selectAndInstall($level, $decisionQueue, $rule); + +if (0 === $level) { +return; +} + + +$rulesCount = \count($this->rules); +$n = -1; +} + +if ($level < $systemLevel) { +continue; +} + + +if (\count($this->branches)) { +$lastLiteral = null; +$lastLevel = null; +$lastBranchIndex = 0; +$lastBranchOffset = 0; + +for ($i = \count($this->branches) - 1; $i >= 0; $i--) { +[$literals, $l] = $this->branches[$i]; + +foreach ($literals as $offset => $literal) { +if ($literal && $literal > 0 && $this->decisions->decisionLevel($literal) > $l + 1) { +$lastLiteral = $literal; +$lastBranchIndex = $i; +$lastBranchOffset = $offset; +$lastLevel = $l; +} +} +} + +if ($lastLiteral) { +unset($this->branches[$lastBranchIndex][self::BRANCH_LITERALS][$lastBranchOffset]); + +$level = $lastLevel; +$this->revert($level); + +$why = $this->decisions->lastReason(); + +$level = $this->setPropagateLearn($level, $lastLiteral, $why); + +if ($level === 0) { +return; +} + +continue; +} +} + +break; +} +} +} diff --git a/composer/src/Composer/DependencyResolver/SolverBugException.php b/composer/src/Composer/DependencyResolver/SolverBugException.php new file mode 100644 index 000000000..1badbad30 --- /dev/null +++ b/composer/src/Composer/DependencyResolver/SolverBugException.php @@ -0,0 +1,27 @@ +problems = $problems; +$this->learnedPool = $learnedPool; + +parent::__construct('Failed resolving dependencies with '.count($problems).' problems, call getPrettyString to get formatted details', self::ERROR_DEPENDENCY_RESOLUTION_FAILED); +} + +public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, bool $isDevExtraction = false): string +{ +$installedMap = $request->getPresentMap(true); +$missingExtensions = []; +$isCausedByLock = false; + +$problems = []; +foreach ($this->problems as $problem) { +$problems[] = $problem->getPrettyString($repositorySet, $request, $pool, $isVerbose, $installedMap, $this->learnedPool)."\n"; + +$missingExtensions = array_merge($missingExtensions, $this->getExtensionProblems($problem->getReasons())); + +$isCausedByLock = $isCausedByLock || $problem->isCausedByLock($repositorySet, $request, $pool); +} + +$i = 1; +$text = "\n"; +foreach (array_unique($problems) as $problem) { +$text .= " Problem ".($i++).$problem; +} + +$hints = []; +if (!$isDevExtraction && (strpos($text, 'could not be found') || strpos($text, 'no matching package found'))) { +$hints[] = "Potential causes:\n - A typo in the package name\n - The package is not available in a stable-enough version according to your minimum-stability setting\n see for more details.\n - It's a private package and you forgot to add a custom repository to find it\n\nRead for further common problems."; +} + +if (!empty($missingExtensions)) { +$hints[] = $this->createExtensionHint($missingExtensions); +} + +if ($isCausedByLock && !$isDevExtraction && !$request->getUpdateAllowTransitiveRootDependencies()) { +$hints[] = "Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions."; +} + +if (strpos($text, 'found composer-plugin-api[2.0.0] but it does not match') && strpos($text, '- ocramius/package-versions')) { +$hints[] = "ocramius/package-versions only provides support for Composer 2 in 1.8+, which requires PHP 7.4.\nIf you can not upgrade PHP you can require composer/package-versions-deprecated to resolve this with PHP 7.0+."; +} + +if (!class_exists('PHPUnit\Framework\TestCase', false)) { +if (strpos($text, 'found composer-plugin-api[2.0.0] but it does not match')) { +$hints[] = "You are using Composer 2, which some of your plugins seem to be incompatible with. Make sure you update your plugins or report a plugin-issue to ask them to support Composer 2."; +} +} + +if ($hints) { +$text .= "\n" . implode("\n\n", $hints); +} + +return $text; +} + + + + +public function getProblems(): array +{ +return $this->problems; +} + + + + +private function createExtensionHint(array $missingExtensions): string +{ +$paths = IniHelper::getAll(); + +if ('' === $paths[0]) { +if (count($paths) === 1) { +return ''; +} + +array_shift($paths); +} + +$ignoreExtensionsArguments = implode(" ", array_map(static function ($extension) { +return "--ignore-platform-req=$extension"; +}, array_unique($missingExtensions))); + +$text = "To enable extensions, verify that they are enabled in your .ini files:\n - "; +$text .= implode("\n - ", $paths); +$text .= "\nYou can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode."; +$text .= "\nAlternatively, you can run Composer with `$ignoreExtensionsArguments` to temporarily ignore these required extensions."; + +return $text; +} + + + + + +private function getExtensionProblems(array $reasonSets): array +{ +$missingExtensions = []; +foreach ($reasonSets as $reasonSet) { +foreach ($reasonSet as $rule) { +$required = $rule->getRequiredPackage(); +if (null !== $required && 0 === strpos($required, 'ext-')) { +$missingExtensions[$required] = 1; +} +} +} + +return array_keys($missingExtensions); +} +} diff --git a/composer/src/Composer/DependencyResolver/Transaction.php b/composer/src/Composer/DependencyResolver/Transaction.php new file mode 100644 index 000000000..5f6a369be --- /dev/null +++ b/composer/src/Composer/DependencyResolver/Transaction.php @@ -0,0 +1,357 @@ +presentPackages = $presentPackages; +$this->setResultPackageMaps($resultPackages); +$this->operations = $this->calculateOperations(); +} + + + + +public function getOperations(): array +{ +return $this->operations; +} + + + + +private function setResultPackageMaps(array $resultPackages): void +{ +$packageSort = static function (PackageInterface $a, PackageInterface $b): int { + +if ($a->getName() === $b->getName()) { +if ($a instanceof AliasPackage !== $b instanceof AliasPackage) { +return $a instanceof AliasPackage ? -1 : 1; +} + +return strcmp($b->getVersion(), $a->getVersion()); +} + +return strcmp($b->getName(), $a->getName()); +}; + +$this->resultPackageMap = []; +foreach ($resultPackages as $package) { +$this->resultPackageMap[spl_object_hash($package)] = $package; +foreach ($package->getNames() as $name) { +$this->resultPackagesByName[$name][] = $package; +} +} + +uasort($this->resultPackageMap, $packageSort); +foreach ($this->resultPackagesByName as $name => $packages) { +uasort($this->resultPackagesByName[$name], $packageSort); +} +} + + + + +protected function calculateOperations(): array +{ +$operations = []; + +$presentPackageMap = []; +$removeMap = []; +$presentAliasMap = []; +$removeAliasMap = []; +foreach ($this->presentPackages as $package) { +if ($package instanceof AliasPackage) { +$presentAliasMap[$package->getName().'::'.$package->getVersion()] = $package; +$removeAliasMap[$package->getName().'::'.$package->getVersion()] = $package; +} else { +$presentPackageMap[$package->getName()] = $package; +$removeMap[$package->getName()] = $package; +} +} + +$stack = $this->getRootPackages(); + +$visited = []; +$processed = []; + +while (!empty($stack)) { +$package = array_pop($stack); + +if (isset($processed[spl_object_hash($package)])) { +continue; +} + +if (!isset($visited[spl_object_hash($package)])) { +$visited[spl_object_hash($package)] = true; + +$stack[] = $package; +if ($package instanceof AliasPackage) { +$stack[] = $package->getAliasOf(); +} else { +foreach ($package->getRequires() as $link) { +$possibleRequires = $this->getProvidersInResult($link); + +foreach ($possibleRequires as $require) { +$stack[] = $require; +} +} +} +} elseif (!isset($processed[spl_object_hash($package)])) { +$processed[spl_object_hash($package)] = true; + +if ($package instanceof AliasPackage) { +$aliasKey = $package->getName().'::'.$package->getVersion(); +if (isset($presentAliasMap[$aliasKey])) { +unset($removeAliasMap[$aliasKey]); +} else { +$operations[] = new Operation\MarkAliasInstalledOperation($package); +} +} else { +if (isset($presentPackageMap[$package->getName()])) { +$source = $presentPackageMap[$package->getName()]; + + + +if ($package->getVersion() !== $presentPackageMap[$package->getName()]->getVersion() || +$package->getDistReference() !== $presentPackageMap[$package->getName()]->getDistReference() || +$package->getSourceReference() !== $presentPackageMap[$package->getName()]->getSourceReference() +) { +$operations[] = new Operation\UpdateOperation($source, $package); +} +unset($removeMap[$package->getName()]); +} else { +$operations[] = new Operation\InstallOperation($package); +unset($removeMap[$package->getName()]); +} +} +} +} + +foreach ($removeMap as $name => $package) { +array_unshift($operations, new Operation\UninstallOperation($package)); +} +foreach ($removeAliasMap as $nameVersion => $package) { +$operations[] = new Operation\MarkAliasUninstalledOperation($package); +} + +$operations = $this->movePluginsToFront($operations); + + +$operations = $this->moveUninstallsToFront($operations); + + + + + + + + + + + + + + + + + + + +return $this->operations = $operations; +} + + + + + + + + + +protected function getRootPackages(): array +{ +$roots = $this->resultPackageMap; + +foreach ($this->resultPackageMap as $packageHash => $package) { +if (!isset($roots[$packageHash])) { +continue; +} + +foreach ($package->getRequires() as $link) { +$possibleRequires = $this->getProvidersInResult($link); + +foreach ($possibleRequires as $require) { +if ($require !== $package) { +unset($roots[spl_object_hash($require)]); +} +} +} +} + +return $roots; +} + + + + +protected function getProvidersInResult(Link $link): array +{ +if (!isset($this->resultPackagesByName[$link->getTarget()])) { +return []; +} + +return $this->resultPackagesByName[$link->getTarget()]; +} + + + + + + + + + + + + + + +private function movePluginsToFront(array $operations): array +{ +$dlModifyingPluginsNoDeps = []; +$dlModifyingPluginsWithDeps = []; +$dlModifyingPluginRequires = []; +$pluginsNoDeps = []; +$pluginsWithDeps = []; +$pluginRequires = []; + +foreach (array_reverse($operations, true) as $idx => $op) { +if ($op instanceof Operation\InstallOperation) { +$package = $op->getPackage(); +} elseif ($op instanceof Operation\UpdateOperation) { +$package = $op->getTargetPackage(); +} else { +continue; +} + +$isDownloadsModifyingPlugin = $package->getType() === 'composer-plugin' && ($extra = $package->getExtra()) && isset($extra['plugin-modifies-downloads']) && $extra['plugin-modifies-downloads'] === true; + + +if ($isDownloadsModifyingPlugin || count(array_intersect($package->getNames(), $dlModifyingPluginRequires))) { + +$requires = array_filter(array_keys($package->getRequires()), static function ($req): bool { +return !PlatformRepository::isPlatformPackage($req); +}); + + +if ($isDownloadsModifyingPlugin && !count($requires)) { + +array_unshift($dlModifyingPluginsNoDeps, $op); +} else { + +$dlModifyingPluginRequires = array_merge($dlModifyingPluginRequires, $requires); + +array_unshift($dlModifyingPluginsWithDeps, $op); +} + +unset($operations[$idx]); +continue; +} + + +$isPlugin = $package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer'; + + +if ($isPlugin || count(array_intersect($package->getNames(), $pluginRequires))) { + +$requires = array_filter(array_keys($package->getRequires()), static function ($req): bool { +return !PlatformRepository::isPlatformPackage($req); +}); + + +if ($isPlugin && !count($requires)) { + +array_unshift($pluginsNoDeps, $op); +} else { + +$pluginRequires = array_merge($pluginRequires, $requires); + +array_unshift($pluginsWithDeps, $op); +} + +unset($operations[$idx]); +} +} + +return array_merge($dlModifyingPluginsNoDeps, $dlModifyingPluginsWithDeps, $pluginsNoDeps, $pluginsWithDeps, $operations); +} + + + + + + + + +private function moveUninstallsToFront(array $operations): array +{ +$uninstOps = []; +foreach ($operations as $idx => $op) { +if ($op instanceof Operation\UninstallOperation || $op instanceof Operation\MarkAliasUninstalledOperation) { +$uninstOps[] = $op; +unset($operations[$idx]); +} +} + +return array_merge($uninstOps, $operations); +} +} diff --git a/composer/src/Composer/Downloader/ArchiveDownloader.php b/composer/src/Composer/Downloader/ArchiveDownloader.php new file mode 100644 index 000000000..9fdfbe9dc --- /dev/null +++ b/composer/src/Composer/Downloader/ArchiveDownloader.php @@ -0,0 +1,223 @@ +cleanupExecuted[$package->getName()]); + +return parent::prepare($type, $package, $path, $prevPackage); +} + +public function cleanup(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface +{ +$this->cleanupExecuted[$package->getName()] = true; + +return parent::cleanup($type, $package, $path, $prevPackage); +} + + + + + + + +public function install(PackageInterface $package, string $path, bool $output = true): PromiseInterface +{ +if ($output) { +$this->io->writeError(" - " . InstallOperation::format($package) . $this->getInstallOperationAppendix($package, $path)); +} + +$vendorDir = $this->config->get('vendor-dir'); + + + + +if (false === strpos($this->filesystem->normalizePath($vendorDir), $this->filesystem->normalizePath($path.DIRECTORY_SEPARATOR))) { +$this->filesystem->emptyDirectory($path); +} + +do { +$temporaryDir = $vendorDir.'/composer/'.substr(md5(uniqid('', true)), 0, 8); +} while (is_dir($temporaryDir)); + +$this->addCleanupPath($package, $temporaryDir); + + +if (!is_dir($path) || realpath($path) !== Platform::getCwd()) { +$this->addCleanupPath($package, $path); +} + +$this->filesystem->ensureDirectoryExists($temporaryDir); +$fileName = $this->getFileName($package, $path); + +$filesystem = $this->filesystem; + +$cleanup = function () use ($path, $filesystem, $temporaryDir, $package) { + +$this->clearLastCacheWrite($package); + + +$filesystem->removeDirectory($temporaryDir); +if (is_dir($path) && realpath($path) !== Platform::getCwd()) { +$filesystem->removeDirectory($path); +} +$this->removeCleanupPath($package, $temporaryDir); +$realpath = realpath($path); +if ($realpath !== false) { +$this->removeCleanupPath($package, $realpath); +} +}; + +try { +$promise = $this->extract($package, $fileName, $temporaryDir); +} catch (\Exception $e) { +$cleanup(); +throw $e; +} + +return $promise->then(function () use ($package, $filesystem, $fileName, $temporaryDir, $path): \React\Promise\PromiseInterface { +if (file_exists($fileName)) { +$filesystem->unlink($fileName); +} + + + + + + + +$getFolderContent = static function ($dir): array { +$finder = Finder::create() +->ignoreVCS(false) +->ignoreDotFiles(false) +->notName('.DS_Store') +->depth(0) +->in($dir); + +return iterator_to_array($finder); +}; +$renameRecursively = null; + + + + + + + + + + + +$renameRecursively = static function ($from, $to) use ($filesystem, $getFolderContent, $package, &$renameRecursively) { +$contentDir = $getFolderContent($from); + + +foreach ($contentDir as $file) { +$file = (string) $file; +if (is_dir($to . '/' . basename($file))) { +if (!is_dir($file)) { +throw new \RuntimeException('Installing '.$package.' would lead to overwriting the '.$to.'/'.basename($file).' directory with a file from the package, invalid operation.'); +} +$renameRecursively($file, $to . '/' . basename($file)); +} else { +$filesystem->rename($file, $to . '/' . basename($file)); +} +} +}; + +$renameAsOne = false; +if (!file_exists($path)) { +$renameAsOne = true; +} elseif ($filesystem->isDirEmpty($path)) { +try { +if ($filesystem->removeDirectoryPhp($path)) { +$renameAsOne = true; +} +} catch (\RuntimeException $e) { + +} +} + +$contentDir = $getFolderContent($temporaryDir); +$singleDirAtTopLevel = 1 === count($contentDir) && is_dir((string) reset($contentDir)); + +if ($renameAsOne) { + +if ($singleDirAtTopLevel) { +$extractedDir = (string) reset($contentDir); +} else { +$extractedDir = $temporaryDir; +} +$filesystem->rename($extractedDir, $path); +} else { + +$from = $temporaryDir; +if ($singleDirAtTopLevel) { +$from = (string) reset($contentDir); +} + +$renameRecursively($from, $path); +} + +$promise = $filesystem->removeDirectoryAsync($temporaryDir); + +return $promise->then(function () use ($package, $path, $temporaryDir) { +$this->removeCleanupPath($package, $temporaryDir); +$this->removeCleanupPath($package, $path); +}); +}, static function ($e) use ($cleanup) { +$cleanup(); + +throw $e; +}); +} + + + + +protected function getInstallOperationAppendix(PackageInterface $package, string $path): string +{ +return ': Extracting archive'; +} + + + + + + + + + +abstract protected function extract(PackageInterface $package, string $file, string $path): PromiseInterface; +} diff --git a/composer/src/Composer/Downloader/ChangeReportInterface.php b/composer/src/Composer/Downloader/ChangeReportInterface.php new file mode 100644 index 000000000..1541e195e --- /dev/null +++ b/composer/src/Composer/Downloader/ChangeReportInterface.php @@ -0,0 +1,32 @@ +io = $io; +$this->preferSource = $preferSource; +$this->filesystem = $filesystem ?: new Filesystem(); +} + + + + + + + +public function setPreferSource(bool $preferSource): self +{ +$this->preferSource = $preferSource; + +return $this; +} + + + + + + + +public function setPreferDist(bool $preferDist): self +{ +$this->preferDist = $preferDist; + +return $this; +} + + + + + + + + +public function setPreferences(array $preferences): self +{ +$this->packagePreferences = $preferences; + +return $this; +} + + + + + + + + +public function setDownloader(string $type, DownloaderInterface $downloader): self +{ +$type = strtolower($type); +$this->downloaders[$type] = $downloader; + +return $this; +} + + + + + + + +public function getDownloader(string $type): DownloaderInterface +{ +$type = strtolower($type); +if (!isset($this->downloaders[$type])) { +throw new \InvalidArgumentException(sprintf('Unknown downloader type: %s. Available types: %s.', $type, implode(', ', array_keys($this->downloaders)))); +} + +return $this->downloaders[$type]; +} + + + + + + + + + +public function getDownloaderForPackage(PackageInterface $package): ?DownloaderInterface +{ +$installationSource = $package->getInstallationSource(); + +if ('metapackage' === $package->getType()) { +return null; +} + +if ('dist' === $installationSource) { +$downloader = $this->getDownloader($package->getDistType()); +} elseif ('source' === $installationSource) { +$downloader = $this->getDownloader($package->getSourceType()); +} else { +throw new \InvalidArgumentException( +'Package '.$package.' does not have an installation source set' +); +} + +if ($installationSource !== $downloader->getInstallationSource()) { +throw new \LogicException(sprintf( +'Downloader "%s" is a %s type downloader and can not be used to download %s for package %s', +get_class($downloader), +$downloader->getInstallationSource(), +$installationSource, +$package +)); +} + +return $downloader; +} + +public function getDownloaderType(DownloaderInterface $downloader): string +{ +return array_search($downloader, $this->downloaders); +} + + + + + + + + + + + +public function download(PackageInterface $package, string $targetDir, ?PackageInterface $prevPackage = null): PromiseInterface +{ +$targetDir = $this->normalizeTargetDir($targetDir); +$this->filesystem->ensureDirectoryExists(dirname($targetDir)); + +$sources = $this->getAvailableSources($package, $prevPackage); + +$io = $this->io; + +$download = function ($retry = false) use (&$sources, $io, $package, $targetDir, &$download, $prevPackage) { +$source = array_shift($sources); +if ($retry) { +$io->writeError(' Now trying to download from ' . $source . ''); +} +$package->setInstallationSource($source); + +$downloader = $this->getDownloaderForPackage($package); +if (!$downloader) { +return \React\Promise\resolve(null); +} + +$handleError = static function ($e) use ($sources, $source, $package, $io, $download) { +if ($e instanceof \RuntimeException && !$e instanceof IrrecoverableDownloadException) { +if (!$sources) { +throw $e; +} + +$io->writeError( +' Failed to download '. +$package->getPrettyName(). +' from ' . $source . ': '. +$e->getMessage().'' +); + +return $download(true); +} + +throw $e; +}; + +try { +$result = $downloader->download($package, $targetDir, $prevPackage); +} catch (\Exception $e) { +return $handleError($e); +} + +$res = $result->then(static function ($res) { +return $res; +}, $handleError); + +return $res; +}; + +return $download(); +} + + + + + + + + + +public function prepare(string $type, PackageInterface $package, string $targetDir, ?PackageInterface $prevPackage = null): PromiseInterface +{ +$targetDir = $this->normalizeTargetDir($targetDir); +$downloader = $this->getDownloaderForPackage($package); +if ($downloader) { +return $downloader->prepare($type, $package, $targetDir, $prevPackage); +} + +return \React\Promise\resolve(null); +} + + + + + + + + + + +public function install(PackageInterface $package, string $targetDir): PromiseInterface +{ +$targetDir = $this->normalizeTargetDir($targetDir); +$downloader = $this->getDownloaderForPackage($package); +if ($downloader) { +return $downloader->install($package, $targetDir); +} + +return \React\Promise\resolve(null); +} + + + + + + + + + + +public function update(PackageInterface $initial, PackageInterface $target, string $targetDir): PromiseInterface +{ +$targetDir = $this->normalizeTargetDir($targetDir); +$downloader = $this->getDownloaderForPackage($target); +$initialDownloader = $this->getDownloaderForPackage($initial); + + +if (!$initialDownloader && !$downloader) { +return \React\Promise\resolve(null); +} + + +if (!$downloader) { +return $initialDownloader->remove($initial, $targetDir); +} + +$initialType = $this->getDownloaderType($initialDownloader); +$targetType = $this->getDownloaderType($downloader); +if ($initialType === $targetType) { +try { +return $downloader->update($initial, $target, $targetDir); +} catch (\RuntimeException $e) { +if (!$this->io->isInteractive()) { +throw $e; +} +$this->io->writeError(' Update failed ('.$e->getMessage().')'); +if (!$this->io->askConfirmation(' Would you like to try reinstalling the package instead [yes]? ')) { +throw $e; +} +} +} + + + +$promise = $initialDownloader->remove($initial, $targetDir); + +return $promise->then(function ($res) use ($target, $targetDir): PromiseInterface { +return $this->install($target, $targetDir); +}); +} + + + + + + + +public function remove(PackageInterface $package, string $targetDir): PromiseInterface +{ +$targetDir = $this->normalizeTargetDir($targetDir); +$downloader = $this->getDownloaderForPackage($package); +if ($downloader) { +return $downloader->remove($package, $targetDir); +} + +return \React\Promise\resolve(null); +} + + + + + + + + + +public function cleanup(string $type, PackageInterface $package, string $targetDir, ?PackageInterface $prevPackage = null): PromiseInterface +{ +$targetDir = $this->normalizeTargetDir($targetDir); +$downloader = $this->getDownloaderForPackage($package); +if ($downloader) { +return $downloader->cleanup($type, $package, $targetDir, $prevPackage); +} + +return \React\Promise\resolve(null); +} + + + + + + +protected function resolvePackageInstallPreference(PackageInterface $package): string +{ +foreach ($this->packagePreferences as $pattern => $preference) { +$pattern = '{^'.str_replace('\\*', '.*', preg_quote($pattern)).'$}i'; +if (Preg::isMatch($pattern, $package->getName())) { +if ('dist' === $preference || (!$package->isDev() && 'auto' === $preference)) { +return 'dist'; +} + +return 'source'; +} +} + +return $package->isDev() ? 'source' : 'dist'; +} + + + + + +private function getAvailableSources(PackageInterface $package, ?PackageInterface $prevPackage = null): array +{ +$sourceType = $package->getSourceType(); +$distType = $package->getDistType(); + + +$sources = []; +if ($sourceType) { +$sources[] = 'source'; +} +if ($distType) { +$sources[] = 'dist'; +} + +if (empty($sources)) { +throw new \InvalidArgumentException('Package '.$package.' must have a source or dist specified'); +} + +if ( +$prevPackage + +&& in_array($prevPackage->getInstallationSource(), $sources, true) + +&& !(!$prevPackage->isDev() && $prevPackage->getInstallationSource() === 'dist' && $package->isDev()) +) { +$prevSource = $prevPackage->getInstallationSource(); +usort($sources, static function ($a, $b) use ($prevSource): int { +return $a === $prevSource ? -1 : 1; +}); + +return $sources; +} + + +if (!$this->preferSource && ($this->preferDist || 'dist' === $this->resolvePackageInstallPreference($package))) { +$sources = array_reverse($sources); +} + +return $sources; +} + + + + + + +private function normalizeTargetDir(string $dir): string +{ +if ($dir === '\\' || $dir === '/') { +return $dir; +} + +return rtrim($dir, '\\/'); +} +} diff --git a/composer/src/Composer/Downloader/DownloaderInterface.php b/composer/src/Composer/Downloader/DownloaderInterface.php new file mode 100644 index 000000000..5996e4ef8 --- /dev/null +++ b/composer/src/Composer/Downloader/DownloaderInterface.php @@ -0,0 +1,93 @@ +io = $io; +$this->config = $config; +$this->eventDispatcher = $eventDispatcher; +$this->httpDownloader = $httpDownloader; +$this->cache = $cache; +$this->process = $process ?? new ProcessExecutor($io); +$this->filesystem = $filesystem ?: new Filesystem($this->process); + +if ($this->cache && $this->cache->gcIsNecessary()) { +$this->io->writeError('Running cache garbage collection', true, IOInterface::VERY_VERBOSE); +$this->cache->gc($config->get('cache-files-ttl'), $config->get('cache-files-maxsize')); +} +} + + + + +public function getInstallationSource(): string +{ +return 'dist'; +} + + + + +public function download(PackageInterface $package, string $path, ?PackageInterface $prevPackage = null, bool $output = true): PromiseInterface +{ +if (!$package->getDistUrl()) { +throw new \InvalidArgumentException('The given package is missing url information'); +} + +$cacheKeyGenerator = static function (PackageInterface $package, $key): string { +$cacheKey = sha1($key); + +return $package->getName().'/'.$cacheKey.'.'.$package->getDistType(); +}; + +$retries = 3; +$distUrls = $package->getDistUrls(); + +$urls = []; +foreach ($distUrls as $index => $url) { +$processedUrl = $this->processUrl($package, $url); +$urls[$index] = [ +'base' => $url, +'processed' => $processedUrl, + + + + +'cacheKey' => $cacheKeyGenerator($package, $processedUrl), +]; +} + +$fileName = $this->getFileName($package, $path); +$this->filesystem->ensureDirectoryExists($path); +$this->filesystem->ensureDirectoryExists(dirname($fileName)); + +$io = $this->io; +$cache = $this->cache; +$httpDownloader = $this->httpDownloader; +$eventDispatcher = $this->eventDispatcher; +$filesystem = $this->filesystem; + +$accept = null; +$reject = null; +$download = function () use ($io, $output, $httpDownloader, $cache, $cacheKeyGenerator, $eventDispatcher, $package, $fileName, &$urls, &$accept, &$reject) { +$url = reset($urls); +$index = key($urls); + +if ($eventDispatcher) { +$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $httpDownloader, $url['processed'], 'package', $package); +$eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); +if ($preFileDownloadEvent->getCustomCacheKey() !== null) { +$url['cacheKey'] = $cacheKeyGenerator($package, $preFileDownloadEvent->getCustomCacheKey()); +} elseif ($preFileDownloadEvent->getProcessedUrl() !== $url['processed']) { +$url['cacheKey'] = $cacheKeyGenerator($package, $preFileDownloadEvent->getProcessedUrl()); +} +$url['processed'] = $preFileDownloadEvent->getProcessedUrl(); +} + +$urls[$index] = $url; + +$checksum = $package->getDistSha1Checksum(); +$cacheKey = $url['cacheKey']; + + +if ($cache && (!$checksum || $checksum === $cache->sha1($cacheKey)) && $cache->copyTo($cacheKey, $fileName)) { +if ($output) { +$io->writeError(" - Loading " . $package->getName() . " (" . $package->getFullPrettyVersion() . ") from cache", true, IOInterface::VERY_VERBOSE); +} + + + +if (!$cache->isReadOnly()) { +$this->lastCacheWrites[$package->getName()] = $cacheKey; +} +$result = \React\Promise\resolve($fileName); +} else { +if ($output) { +$io->writeError(" - Downloading " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); +} + +$result = $httpDownloader->addCopy($url['processed'], $fileName, $package->getTransportOptions()) +->then($accept, $reject); +} + +return $result->then(static function ($result) use ($fileName, $checksum, $url, $package, $eventDispatcher): string { + + + +if (null === $result) { +return $fileName; +} + +if (!file_exists($fileName)) { +throw new \UnexpectedValueException($url['base'].' could not be saved to '.$fileName.', make sure the' +.' directory is writable and you have internet connectivity'); +} + +if ($checksum && hash_file('sha1', $fileName) !== $checksum) { +throw new \UnexpectedValueException('The checksum verification of the file failed (downloaded from '.$url['base'].')'); +} + +if ($eventDispatcher) { +$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, $fileName, $checksum, $url['processed'], 'package', $package); +$eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); +} + +return $fileName; +}); +}; + +$accept = function ($response) use ($cache, $package, $fileName, &$urls): string { +$url = reset($urls); +$cacheKey = $url['cacheKey']; +FileDownloader::$downloadMetadata[$package->getName()] = @filesize($fileName) ?: $response->getHeader('Content-Length') ?: '?'; + +if (Platform::getEnv('GITHUB_ACTIONS') !== false && Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING') === false) { +FileDownloader::$responseHeaders[$package->getName()] = $response->getHeaders(); +} + +if ($cache && !$cache->isReadOnly()) { +$this->lastCacheWrites[$package->getName()] = $cacheKey; +$cache->copyFrom($cacheKey, $fileName); +} + +$response->collect(); + +return $fileName; +}; + +$reject = function ($e) use ($io, &$urls, $download, $fileName, $package, &$retries, $filesystem) { + +if (file_exists($fileName)) { +$filesystem->unlink($fileName); +} +$this->clearLastCacheWrite($package); + +if ($e instanceof IrrecoverableDownloadException) { +throw $e; +} + +if ($e instanceof MaxFileSizeExceededException) { +throw $e; +} + +if ($e instanceof TransportException) { + +if ((0 !== $e->getCode() && !in_array($e->getCode(), [500, 502, 503, 504])) || !$retries) { +$retries = 0; +} +} + + +if ($e instanceof TransportException && $e->getStatusCode() === 499) { +$retries = 0; +$urls = []; +} + +if ($retries) { +usleep(500000); +$retries--; + +return $download(); +} + +array_shift($urls); +if ($urls) { +if ($io->isDebug()) { +$io->writeError(' Failed downloading '.$package->getName().': ['.get_class($e).'] '.$e->getCode().': '.$e->getMessage()); +$io->writeError(' Trying the next URL for '.$package->getName()); +} else { +$io->writeError(' Failed downloading '.$package->getName().', trying the next URL ('.$e->getCode().': '.$e->getMessage().')'); +} + +$retries = 3; +usleep(100000); + +return $download(); +} + +throw $e; +}; + +return $download(); +} + + + + +public function prepare(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface +{ +return \React\Promise\resolve(null); +} + + + + +public function cleanup(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface +{ +$fileName = $this->getFileName($package, $path); +if (file_exists($fileName)) { +$this->filesystem->unlink($fileName); +} + +$dirsToCleanUp = [ +$path, +$this->config->get('vendor-dir').'/'.explode('/', $package->getPrettyName())[0], +$this->config->get('vendor-dir').'/composer/', +$this->config->get('vendor-dir'), +]; + +if (isset($this->additionalCleanupPaths[$package->getName()])) { +foreach ($this->additionalCleanupPaths[$package->getName()] as $path) { +$this->filesystem->remove($path); +} +} + +foreach ($dirsToCleanUp as $dir) { +if (is_dir($dir) && $this->filesystem->isDirEmpty($dir) && realpath($dir) !== Platform::getCwd()) { +$this->filesystem->removeDirectoryPhp($dir); +} +} + +return \React\Promise\resolve(null); +} + + + + +public function install(PackageInterface $package, string $path, bool $output = true): PromiseInterface +{ +if ($output) { +$this->io->writeError(" - " . InstallOperation::format($package)); +} + +$this->filesystem->emptyDirectory($path); +$this->filesystem->ensureDirectoryExists($path); +$this->filesystem->rename($this->getFileName($package, $path), $path . '/' . pathinfo(parse_url(strtr((string) $package->getDistUrl(), '\\', '/'), PHP_URL_PATH), PATHINFO_BASENAME)); + +if ($package->getBinaries()) { + + +foreach ($package->getBinaries() as $bin) { +if (file_exists($path . '/' . $bin) && !is_executable($path . '/' . $bin)) { +Silencer::call('chmod', $path . '/' . $bin, 0777 & ~umask()); +} +} +} + +return \React\Promise\resolve(null); +} + +protected function clearLastCacheWrite(PackageInterface $package): void +{ +if ($this->cache && isset($this->lastCacheWrites[$package->getName()])) { +$this->cache->remove($this->lastCacheWrites[$package->getName()]); +unset($this->lastCacheWrites[$package->getName()]); +} +} + +protected function addCleanupPath(PackageInterface $package, string $path): void +{ +$this->additionalCleanupPaths[$package->getName()][] = $path; +} + +protected function removeCleanupPath(PackageInterface $package, string $path): void +{ +if (isset($this->additionalCleanupPaths[$package->getName()])) { +$idx = array_search($path, $this->additionalCleanupPaths[$package->getName()]); +if (false !== $idx) { +unset($this->additionalCleanupPaths[$package->getName()][$idx]); +} +} +} + + + + +public function update(PackageInterface $initial, PackageInterface $target, string $path): PromiseInterface +{ +$this->io->writeError(" - " . UpdateOperation::format($initial, $target) . $this->getInstallOperationAppendix($target, $path)); + +$promise = $this->remove($initial, $path, false); + +return $promise->then(function () use ($target, $path): PromiseInterface { +return $this->install($target, $path, false); +}); +} + + + + +public function remove(PackageInterface $package, string $path, bool $output = true): PromiseInterface +{ +if ($output) { +$this->io->writeError(" - " . UninstallOperation::format($package)); +} +$promise = $this->filesystem->removeDirectoryAsync($path); + +return $promise->then(static function ($result) use ($path): void { +if (!$result) { +throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); +} +}); +} + + + + + + + + +protected function getFileName(PackageInterface $package, string $path): string +{ +return rtrim($this->config->get('vendor-dir').'/composer/tmp-'.md5($package.spl_object_hash($package)).'.'.pathinfo(parse_url(strtr((string) $package->getDistUrl(), '\\', '/'), PHP_URL_PATH), PATHINFO_EXTENSION), '.'); +} + + + + + + + +protected function getInstallOperationAppendix(PackageInterface $package, string $path): string +{ +return ''; +} + + + + + + + + + +protected function processUrl(PackageInterface $package, string $url): string +{ +if (!extension_loaded('openssl') && 0 === strpos($url, 'https:')) { +throw new \RuntimeException('You must enable the openssl extension to download files via https'); +} + +if ($package->getDistReference()) { +$url = UrlUtil::updateDistReference($this->config, $url, $package->getDistReference()); +} + +return $url; +} + + + + + +public function getLocalChanges(PackageInterface $package, string $path): ?string +{ +$prevIO = $this->io; + +$this->io = new NullIO; +$this->io->loadConfiguration($this->config); +$e = null; +$output = ''; + +$targetDir = Filesystem::trimTrailingSlash($path); +try { +if (is_dir($targetDir.'_compare')) { +$this->filesystem->removeDirectory($targetDir.'_compare'); +} + +$this->download($package, $targetDir.'_compare', null, false); +$this->httpDownloader->wait(); +$this->install($package, $targetDir.'_compare', false); +$this->process->wait(); + +$comparer = new Comparer(); +$comparer->setSource($targetDir.'_compare'); +$comparer->setUpdate($targetDir); +$comparer->doCompare(); +$output = $comparer->getChangedAsString(true); +$this->filesystem->removeDirectory($targetDir.'_compare'); +} catch (\Exception $e) { +} + +$this->io = $prevIO; + +if ($e) { +throw $e; +} + +$output = trim($output); + +return strlen($output) > 0 ? $output : null; +} +} diff --git a/composer/src/Composer/Downloader/FilesystemException.php b/composer/src/Composer/Downloader/FilesystemException.php new file mode 100644 index 000000000..28ab718d5 --- /dev/null +++ b/composer/src/Composer/Downloader/FilesystemException.php @@ -0,0 +1,26 @@ +config->prohibitUrlByConfig($url, $this->io); + +$url = ProcessExecutor::escape($url); +$ref = ProcessExecutor::escape($package->getSourceReference()); +$repoFile = $path . '.fossil'; +$this->io->writeError("Cloning ".$package->getSourceReference()); +$command = sprintf('fossil clone -- %s %s', $url, ProcessExecutor::escape($repoFile)); +if (0 !== $this->process->execute($command, $ignoredOutput)) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} +$command = sprintf('fossil open --nested -- %s', ProcessExecutor::escape($repoFile)); +if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} +$command = sprintf('fossil update -- %s', $ref); +if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +return \React\Promise\resolve(null); +} + + + + +protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface +{ + +$this->config->prohibitUrlByConfig($url, $this->io); + +$ref = ProcessExecutor::escape($target->getSourceReference()); +$this->io->writeError(" Updating to ".$target->getSourceReference()); + +if (!$this->hasMetadataRepository($path)) { +throw new \RuntimeException('The .fslckout file is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); +} + +$command = sprintf('fossil pull && fossil up %s', $ref); +if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +return \React\Promise\resolve(null); +} + + + + +public function getLocalChanges(PackageInterface $package, string $path): ?string +{ +if (!$this->hasMetadataRepository($path)) { +return null; +} + +$this->process->execute('fossil changes', $output, realpath($path)); + +$output = trim($output); + +return strlen($output) > 0 ? $output : null; +} + + + + +protected function getCommitLogs(string $fromReference, string $toReference, string $path): string +{ +$command = sprintf('fossil timeline -t ci -W 0 -n 0 before %s', ProcessExecutor::escape($toReference)); + +if (0 !== $this->process->execute($command, $output, realpath($path))) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +$log = ''; +$match = '/\d\d:\d\d:\d\d\s+\[' . $toReference . '\]/'; + +foreach ($this->process->splitLines($output) as $line) { +if (Preg::isMatch($match, $line)) { +break; +} +$log .= $line; +} + +return $log; +} + + + + +protected function hasMetadataRepository(string $path): bool +{ +return is_file($path . '/.fslckout') || is_file($path . '/_FOSSIL_'); +} +} diff --git a/composer/src/Composer/Downloader/GitDownloader.php b/composer/src/Composer/Downloader/GitDownloader.php new file mode 100644 index 000000000..3a6ee1d80 --- /dev/null +++ b/composer/src/Composer/Downloader/GitDownloader.php @@ -0,0 +1,620 @@ +gitUtil = new GitUtil($this->io, $this->config, $this->process, $this->filesystem); +} + + + + +protected function doDownload(PackageInterface $package, string $path, string $url, ?PackageInterface $prevPackage = null): PromiseInterface +{ + +if (Filesystem::isLocalPath($url)) { +return \React\Promise\resolve(null); +} + +GitUtil::cleanEnv(); + +$cachePath = $this->config->get('cache-vcs-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', $url).'/'; +$gitVersion = GitUtil::getVersion($this->process); + + +if ($gitVersion && version_compare($gitVersion, '2.3.0-rc0', '>=') && Cache::isUsable($cachePath)) { +$this->io->writeError(" - Syncing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ") into cache"); +$this->io->writeError(sprintf(' Cloning to cache at %s', ProcessExecutor::escape($cachePath)), true, IOInterface::DEBUG); +$ref = $package->getSourceReference(); +if ($this->gitUtil->fetchRefOrSyncMirror($url, $cachePath, $ref, $package->getPrettyVersion()) && is_dir($cachePath)) { +$this->cachedPackages[$package->getId()][$ref] = true; +} +} elseif (null === $gitVersion) { +throw new \RuntimeException('git was not found in your PATH, skipping source download'); +} + +return \React\Promise\resolve(null); +} + + + + +protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface +{ +GitUtil::cleanEnv(); +$path = $this->normalizePath($path); +$cachePath = $this->config->get('cache-vcs-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', $url).'/'; +$ref = $package->getSourceReference(); +$flag = Platform::isWindows() ? '/D ' : ''; + +if (!empty($this->cachedPackages[$package->getId()][$ref])) { +$msg = "Cloning ".$this->getShortHash($ref).' from cache'; + +$cloneFlags = '--dissociate --reference %cachePath% '; +$transportOptions = $package->getTransportOptions(); +if (isset($transportOptions['git']['single_use_clone']) && $transportOptions['git']['single_use_clone']) { +$cloneFlags = ''; +} + +$command = +'git clone --no-checkout %cachePath% %path% ' . $cloneFlags +. '&& cd '.$flag.'%path% ' +. '&& git remote set-url origin -- %sanitizedUrl% && git remote add composer -- %sanitizedUrl%'; +} else { +$msg = "Cloning ".$this->getShortHash($ref); +$command = 'git clone --no-checkout -- %url% %path% && cd '.$flag.'%path% && git remote add composer -- %url% && git fetch composer && git remote set-url origin -- %sanitizedUrl% && git remote set-url composer -- %sanitizedUrl%'; +if (Platform::getEnv('COMPOSER_DISABLE_NETWORK')) { +throw new \RuntimeException('The required git reference for '.$package->getName().' is not in cache and network is disabled, aborting'); +} +} + +$this->io->writeError($msg); + +$commandCallable = static function (string $url) use ($path, $command, $cachePath): string { +return str_replace( +['%url%', '%path%', '%cachePath%', '%sanitizedUrl%'], +[ +ProcessExecutor::escape($url), +ProcessExecutor::escape($path), +ProcessExecutor::escape($cachePath), +ProcessExecutor::escape(Preg::replace('{://([^@]+?):(.+?)@}', '://', $url)), +], +$command +); +}; + +$this->gitUtil->runCommand($commandCallable, $url, $path, true); +$sourceUrl = $package->getSourceUrl(); +if ($url !== $sourceUrl && $sourceUrl !== null) { +$this->updateOriginUrl($path, $sourceUrl); +} else { +$this->setPushUrl($path, $url); +} + +if ($newRef = $this->updateToCommit($package, $path, (string) $ref, $package->getPrettyVersion())) { +if ($package->getDistReference() === $package->getSourceReference()) { +$package->setDistReference($newRef); +} +$package->setSourceReference($newRef); +} + +return \React\Promise\resolve(null); +} + + + + +protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface +{ +GitUtil::cleanEnv(); +$path = $this->normalizePath($path); +if (!$this->hasMetadataRepository($path)) { +throw new \RuntimeException('The .git directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); +} + +$cachePath = $this->config->get('cache-vcs-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', $url).'/'; +$ref = $target->getSourceReference(); + +if (!empty($this->cachedPackages[$target->getId()][$ref])) { +$msg = "Checking out ".$this->getShortHash($ref).' from cache'; +$command = '(git rev-parse --quiet --verify %ref% || (git remote set-url composer -- %cachePath% && git fetch composer && git fetch --tags composer)) && git remote set-url composer -- %sanitizedUrl%'; +} else { +$msg = "Checking out ".$this->getShortHash($ref); +$command = '(git remote set-url composer -- %url% && git rev-parse --quiet --verify %ref% || (git fetch composer && git fetch --tags composer)) && git remote set-url composer -- %sanitizedUrl%'; +if (Platform::getEnv('COMPOSER_DISABLE_NETWORK')) { +throw new \RuntimeException('The required git reference for '.$target->getName().' is not in cache and network is disabled, aborting'); +} +} + +$this->io->writeError($msg); + +$commandCallable = static function ($url) use ($ref, $command, $cachePath): string { +return str_replace( +['%url%', '%ref%', '%cachePath%', '%sanitizedUrl%'], +[ +ProcessExecutor::escape($url), +ProcessExecutor::escape($ref.'^{commit}'), +ProcessExecutor::escape($cachePath), +ProcessExecutor::escape(Preg::replace('{://([^@]+?):(.+?)@}', '://', $url)), +], +$command +); +}; + +$this->gitUtil->runCommand($commandCallable, $url, $path); +if ($newRef = $this->updateToCommit($target, $path, (string) $ref, $target->getPrettyVersion())) { +if ($target->getDistReference() === $target->getSourceReference()) { +$target->setDistReference($newRef); +} +$target->setSourceReference($newRef); +} + +$updateOriginUrl = false; +if ( +0 === $this->process->execute('git remote -v', $output, $path) +&& Preg::isMatch('{^origin\s+(?P\S+)}m', $output, $originMatch) +&& Preg::isMatch('{^composer\s+(?P\S+)}m', $output, $composerMatch) +) { +if ($originMatch['url'] === $composerMatch['url'] && $composerMatch['url'] !== $target->getSourceUrl()) { +$updateOriginUrl = true; +} +} +if ($updateOriginUrl && $target->getSourceUrl() !== null) { +$this->updateOriginUrl($path, $target->getSourceUrl()); +} + +return \React\Promise\resolve(null); +} + + + + +public function getLocalChanges(PackageInterface $package, string $path): ?string +{ +GitUtil::cleanEnv(); +if (!$this->hasMetadataRepository($path)) { +return null; +} + +$command = 'git status --porcelain --untracked-files=no'; +if (0 !== $this->process->execute($command, $output, $path)) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +$output = trim($output); + +return strlen($output) > 0 ? $output : null; +} + +public function getUnpushedChanges(PackageInterface $package, string $path): ?string +{ +GitUtil::cleanEnv(); +$path = $this->normalizePath($path); +if (!$this->hasMetadataRepository($path)) { +return null; +} + +$command = 'git show-ref --head -d'; +if (0 !== $this->process->execute($command, $output, $path)) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +$refs = trim($output); +if (!Preg::isMatchStrictGroups('{^([a-f0-9]+) HEAD$}mi', $refs, $match)) { + +return null; +} + +$headRef = $match[1]; +if (!Preg::isMatchAllStrictGroups('{^'.$headRef.' refs/heads/(.+)$}mi', $refs, $matches)) { + +return null; +} + +$candidateBranches = $matches[1]; + +$branch = $candidateBranches[0]; +$unpushedChanges = null; +$branchNotFoundError = false; + + +for ($i = 0; $i <= 1; $i++) { +$remoteBranches = []; + + +foreach ($candidateBranches as $candidate) { +if (Preg::isMatchAllStrictGroups('{^[a-f0-9]+ refs/remotes/((?:[^/]+)/'.preg_quote($candidate).')$}mi', $refs, $matches)) { +foreach ($matches[1] as $match) { +$branch = $candidate; +$remoteBranches[] = $match; +} +break; +} +} + + + + +if (count($remoteBranches) === 0) { +$unpushedChanges = 'Branch ' . $branch . ' could not be found on any remote and appears to be unpushed'; +$branchNotFoundError = true; +} else { + + +if ($branchNotFoundError) { +$unpushedChanges = null; +} +foreach ($remoteBranches as $remoteBranch) { +$command = sprintf('git diff --name-status %s...%s --', $remoteBranch, $branch); +if (0 !== $this->process->execute($command, $output, $path)) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +$output = trim($output); + +if ($unpushedChanges === null || strlen($output) < strlen($unpushedChanges)) { +$unpushedChanges = $output; +} +} +} + + + +if ($unpushedChanges && $i === 0) { +$this->process->execute('git fetch --all', $output, $path); + + +$command = 'git show-ref --head -d'; +if (0 !== $this->process->execute($command, $output, $path)) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} +$refs = trim($output); +} + + +if (!$unpushedChanges) { +break; +} +} + +return $unpushedChanges; +} + + + + +protected function cleanChanges(PackageInterface $package, string $path, bool $update): PromiseInterface +{ +GitUtil::cleanEnv(); +$path = $this->normalizePath($path); + +$unpushed = $this->getUnpushedChanges($package, $path); +if ($unpushed && ($this->io->isInteractive() || $this->config->get('discard-changes') !== true)) { +throw new \RuntimeException('Source directory ' . $path . ' has unpushed changes on the current branch: '."\n".$unpushed); +} + +if (null === ($changes = $this->getLocalChanges($package, $path))) { +return \React\Promise\resolve(null); +} + +if (!$this->io->isInteractive()) { +$discardChanges = $this->config->get('discard-changes'); +if (true === $discardChanges) { +return $this->discardChanges($path); +} +if ('stash' === $discardChanges) { +if (!$update) { +return parent::cleanChanges($package, $path, $update); +} + +return $this->stashChanges($path); +} + +return parent::cleanChanges($package, $path, $update); +} + +$changes = array_map(static function ($elem): string { +return ' '.$elem; +}, Preg::split('{\s*\r?\n\s*}', $changes)); +$this->io->writeError(' '.$package->getPrettyName().' has modified files:'); +$this->io->writeError(array_slice($changes, 0, 10)); +if (count($changes) > 10) { +$this->io->writeError(' ' . (count($changes) - 10) . ' more files modified, choose "v" to view the full list'); +} + +while (true) { +switch ($this->io->ask(' Discard changes [y,n,v,d,'.($update ? 's,' : '').'?]? ', '?')) { +case 'y': +$this->discardChanges($path); +break 2; + +case 's': +if (!$update) { +goto help; +} + +$this->stashChanges($path); +break 2; + +case 'n': +throw new \RuntimeException('Update aborted'); + +case 'v': +$this->io->writeError($changes); +break; + +case 'd': +$this->viewDiff($path); +break; + +case '?': +default: +help : +$this->io->writeError([ +' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), +' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', +' v - view modified files', +' d - view local modifications (diff)', +]); +if ($update) { +$this->io->writeError(' s - stash changes and try to reapply them after the update'); +} +$this->io->writeError(' ? - print help'); +break; +} +} + +return \React\Promise\resolve(null); +} + + + + +protected function reapplyChanges(string $path): void +{ +$path = $this->normalizePath($path); +if (!empty($this->hasStashedChanges[$path])) { +unset($this->hasStashedChanges[$path]); +$this->io->writeError(' Re-applying stashed changes'); +if (0 !== $this->process->execute('git stash pop', $output, $path)) { +throw new \RuntimeException("Failed to apply stashed changes:\n\n".$this->process->getErrorOutput()); +} +} + +unset($this->hasDiscardedChanges[$path]); +} + + + + + + + +protected function updateToCommit(PackageInterface $package, string $path, string $reference, string $prettyVersion): ?string +{ +$force = !empty($this->hasDiscardedChanges[$path]) || !empty($this->hasStashedChanges[$path]) ? '-f ' : ''; + + + + + + +$template = 'git checkout '.$force.'%s -- && git reset --hard %1$s --'; +$branch = Preg::replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $prettyVersion); + +$branches = null; +if (0 === $this->process->execute('git branch -r', $output, $path)) { +$branches = $output; +} + + +$gitRef = $reference; +if (!Preg::isMatch('{^[a-f0-9]{40}$}', $reference) +&& null !== $branches +&& Preg::isMatch('{^\s+composer/'.preg_quote($reference).'$}m', $branches) +) { +$command = sprintf('git checkout '.$force.'-B %s %s -- && git reset --hard %2$s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference)); +if (0 === $this->process->execute($command, $output, $path)) { +return null; +} +} + + +if (Preg::isMatch('{^[a-f0-9]{40}$}', $reference)) { + +if (null !== $branches && !Preg::isMatch('{^\s+composer/'.preg_quote($branch).'$}m', $branches) && Preg::isMatch('{^\s+composer/v'.preg_quote($branch).'$}m', $branches)) { +$branch = 'v' . $branch; +} + +$command = sprintf('git checkout %s --', ProcessExecutor::escape($branch)); +$fallbackCommand = sprintf('git checkout '.$force.'-B %s %s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$branch)); +$resetCommand = sprintf('git reset --hard %s --', ProcessExecutor::escape($reference)); + +if (0 === $this->process->execute("($command || $fallbackCommand) && $resetCommand", $output, $path)) { +return null; +} +} + +$command = sprintf($template, ProcessExecutor::escape($gitRef)); +if (0 === $this->process->execute($command, $output, $path)) { +return null; +} + +$exceptionExtra = ''; + + +if (false !== strpos($this->process->getErrorOutput(), $reference)) { +$this->io->writeError(' '.$reference.' is gone (history was rewritten?)'); +$exceptionExtra = "\nIt looks like the commit hash is not available in the repository, maybe ".($package->isDev() ? 'the commit was removed from the branch' : 'the tag was recreated').'? Run "composer update '.$package->getPrettyName().'" to resolve this.'; +} + +throw new \RuntimeException(Url::sanitize('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput() . $exceptionExtra)); +} + +protected function updateOriginUrl(string $path, string $url): void +{ +$this->process->execute(sprintf('git remote set-url origin -- %s', ProcessExecutor::escape($url)), $output, $path); +$this->setPushUrl($path, $url); +} + +protected function setPushUrl(string $path, string $url): void +{ + +if (Preg::isMatch('{^(?:https?|git)://'.GitUtil::getGitHubDomainsRegex($this->config).'/([^/]+)/([^/]+?)(?:\.git)?$}', $url, $match)) { +$protocols = $this->config->get('github-protocols'); +$pushUrl = 'git@'.$match[1].':'.$match[2].'/'.$match[3].'.git'; +if (!in_array('ssh', $protocols, true)) { +$pushUrl = 'https://' . $match[1] . '/'.$match[2].'/'.$match[3].'.git'; +} +$cmd = sprintf('git remote set-url --push origin -- %s', ProcessExecutor::escape($pushUrl)); +$this->process->execute($cmd, $ignoredOutput, $path); +} +} + + + + +protected function getCommitLogs(string $fromReference, string $toReference, string $path): string +{ +$path = $this->normalizePath($path); +$command = sprintf('git log %s..%s --pretty=format:"%%h - %%an: %%s"'.GitUtil::getNoShowSignatureFlag($this->process), ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); + +if (0 !== $this->process->execute($command, $output, $path)) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +return $output; +} + + + + +protected function discardChanges(string $path): PromiseInterface +{ +$path = $this->normalizePath($path); +if (0 !== $this->process->execute('git clean -df && git reset --hard', $output, $path)) { +throw new \RuntimeException("Could not reset changes\n\n:".$output); +} + +$this->hasDiscardedChanges[$path] = true; + +return \React\Promise\resolve(null); +} + + + + +protected function stashChanges(string $path): PromiseInterface +{ +$path = $this->normalizePath($path); +if (0 !== $this->process->execute('git stash --include-untracked', $output, $path)) { +throw new \RuntimeException("Could not stash changes\n\n:".$output); +} + +$this->hasStashedChanges[$path] = true; + +return \React\Promise\resolve(null); +} + + + + +protected function viewDiff(string $path): void +{ +$path = $this->normalizePath($path); +if (0 !== $this->process->execute('git diff HEAD', $output, $path)) { +throw new \RuntimeException("Could not view diff\n\n:".$output); +} + +$this->io->writeError($output); +} + +protected function normalizePath(string $path): string +{ +if (Platform::isWindows() && strlen($path) > 0) { +$basePath = $path; +$removed = []; + +while (!is_dir($basePath) && $basePath !== '\\') { +array_unshift($removed, basename($basePath)); +$basePath = dirname($basePath); +} + +if ($basePath === '\\') { +return $path; +} + +$path = rtrim(realpath($basePath) . '/' . implode('/', $removed), '/'); +} + +return $path; +} + + + + +protected function hasMetadataRepository(string $path): bool +{ +$path = $this->normalizePath($path); + +return is_dir($path.'/.git'); +} + +protected function getShortHash(string $reference): string +{ +if (!$this->io->isVerbose() && Preg::isMatch('{^[0-9a-f]{40}$}', $reference)) { +return substr($reference, 0, 10); +} + +return $reference; +} +} diff --git a/composer/src/Composer/Downloader/GzipDownloader.php b/composer/src/Composer/Downloader/GzipDownloader.php new file mode 100644 index 000000000..13851bca4 --- /dev/null +++ b/composer/src/Composer/Downloader/GzipDownloader.php @@ -0,0 +1,67 @@ +getDistUrl(), '\\', '/'), PHP_URL_PATH), PATHINFO_FILENAME); +$targetFilepath = $path . DIRECTORY_SEPARATOR . $filename; + + +if (!Platform::isWindows()) { +$command = 'gzip -cd -- ' . ProcessExecutor::escape($file) . ' > ' . ProcessExecutor::escape($targetFilepath); + +if (0 === $this->process->execute($command, $ignoredOutput)) { +return \React\Promise\resolve(null); +} + +if (extension_loaded('zlib')) { + +$this->extractUsingExt($file, $targetFilepath); + +return \React\Promise\resolve(null); +} + +$processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); +throw new \RuntimeException($processError); +} + + +$this->extractUsingExt($file, $targetFilepath); + +return \React\Promise\resolve(null); +} + +private function extractUsingExt(string $file, string $targetFilepath): void +{ +$archiveFile = gzopen($file, 'rb'); +$targetFile = fopen($targetFilepath, 'wb'); +while ($string = gzread($archiveFile, 4096)) { +fwrite($targetFile, $string, Platform::strlen($string)); +} +gzclose($archiveFile); +fclose($targetFile); +} +} diff --git a/composer/src/Composer/Downloader/HgDownloader.php b/composer/src/Composer/Downloader/HgDownloader.php new file mode 100644 index 000000000..bd54109a6 --- /dev/null +++ b/composer/src/Composer/Downloader/HgDownloader.php @@ -0,0 +1,119 @@ +process)) { +throw new \RuntimeException('hg was not found in your PATH, skipping source download'); +} + +return \React\Promise\resolve(null); +} + + + + +protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface +{ +$hgUtils = new HgUtils($this->io, $this->config, $this->process); + +$cloneCommand = static function (string $url) use ($path): string { +return sprintf('hg clone -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($path)); +}; + +$hgUtils->runCommand($cloneCommand, $url, $path); + +$ref = ProcessExecutor::escape($package->getSourceReference()); +$command = sprintf('hg up -- %s', $ref); +if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +return \React\Promise\resolve(null); +} + + + + +protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface +{ +$hgUtils = new HgUtils($this->io, $this->config, $this->process); + +$ref = $target->getSourceReference(); +$this->io->writeError(" Updating to ".$target->getSourceReference()); + +if (!$this->hasMetadataRepository($path)) { +throw new \RuntimeException('The .hg directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); +} + +$command = static function ($url) use ($ref): string { +return sprintf('hg pull -- %s && hg up -- %s', ProcessExecutor::escape($url), ProcessExecutor::escape($ref)); +}; + +$hgUtils->runCommand($command, $url, $path); + +return \React\Promise\resolve(null); +} + + + + +public function getLocalChanges(PackageInterface $package, string $path): ?string +{ +if (!is_dir($path.'/.hg')) { +return null; +} + +$this->process->execute('hg st', $output, realpath($path)); + +$output = trim($output); + +return strlen($output) > 0 ? $output : null; +} + + + + +protected function getCommitLogs(string $fromReference, string $toReference, string $path): string +{ +$command = sprintf('hg log -r %s:%s --style compact', ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); + +if (0 !== $this->process->execute($command, $output, realpath($path))) { +throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); +} + +return $output; +} + + + + +protected function hasMetadataRepository(string $path): bool +{ +return is_dir($path . '/.hg'); +} +} diff --git a/composer/src/Composer/Downloader/MaxFileSizeExceededException.php b/composer/src/Composer/Downloader/MaxFileSizeExceededException.php new file mode 100644 index 000000000..bb5abcc27 --- /dev/null +++ b/composer/src/Composer/Downloader/MaxFileSizeExceededException.php @@ -0,0 +1,17 @@ +getDistUrl(); +$realUrl = realpath($url); +if (false === $realUrl || !file_exists($realUrl) || !is_dir($realUrl)) { +throw new \RuntimeException(sprintf( +'Source path "%s" is not found for package %s', +$url, +$package->getName() +)); +} + +if (realpath($path) === $realUrl) { +return \React\Promise\resolve(null); +} + +if (strpos(realpath($path) . DIRECTORY_SEPARATOR, $realUrl . DIRECTORY_SEPARATOR) === 0) { + + + + +throw new \RuntimeException(sprintf( +'Package %s cannot install to "%s" inside its source at "%s"', +$package->getName(), +realpath($path), +$realUrl +)); +} + +return \React\Promise\resolve(null); +} + + + + +public function install(PackageInterface $package, string $path, bool $output = true): PromiseInterface +{ +$path = Filesystem::trimTrailingSlash($path); +$url = $package->getDistUrl(); +$realUrl = realpath($url); + +if (realpath($path) === $realUrl) { +if ($output) { +$this->io->writeError(" - " . InstallOperation::format($package) . $this->getInstallOperationAppendix($package, $path)); +} + +return \React\Promise\resolve(null); +} + + +$transportOptions = $package->getTransportOptions() + ['relative' => true]; + +[$currentStrategy, $allowedStrategies] = $this->computeAllowedStrategies($transportOptions); + +$symfonyFilesystem = new SymfonyFilesystem(); +$this->filesystem->removeDirectory($path); + +if ($output) { +$this->io->writeError(" - " . InstallOperation::format($package).': ', false); +} + +$isFallback = false; +if (self::STRATEGY_SYMLINK === $currentStrategy) { +try { +if (Platform::isWindows()) { + +if ($output) { +$this->io->writeError(sprintf('Junctioning from %s', $url), false); +} +$this->filesystem->junction($realUrl, $path); +} else { +$absolutePath = $path; +if (!$this->filesystem->isAbsolutePath($absolutePath)) { +$absolutePath = Platform::getCwd() . DIRECTORY_SEPARATOR . $path; +} +$shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl); +$path = rtrim($path, "/"); +if ($output) { +$this->io->writeError(sprintf('Symlinking from %s', $url), false); +} +if ($transportOptions['relative']) { +$symfonyFilesystem->symlink($shortestPath.'/', $path); +} else { +$symfonyFilesystem->symlink($realUrl.'/', $path); +} +} +} catch (IOException $e) { +if (in_array(self::STRATEGY_MIRROR, $allowedStrategies, true)) { +if ($output) { +$this->io->writeError(''); +$this->io->writeError(' Symlink failed, fallback to use mirroring!'); +} +$currentStrategy = self::STRATEGY_MIRROR; +$isFallback = true; +} else { +throw new \RuntimeException(sprintf('Symlink from "%s" to "%s" failed!', $realUrl, $path)); +} +} +} + + +if (self::STRATEGY_MIRROR === $currentStrategy) { +$realUrl = $this->filesystem->normalizePath($realUrl); + +if ($output) { +$this->io->writeError(sprintf('%sMirroring from %s', $isFallback ? ' ' : '', $url), false); +} +$iterator = new ArchivableFilesFinder($realUrl, []); +$symfonyFilesystem->mirror($realUrl, $path, $iterator); +} + +if ($output) { +$this->io->writeError(''); +} + +return \React\Promise\resolve(null); +} + + + + +public function remove(PackageInterface $package, string $path, bool $output = true): PromiseInterface +{ +$path = Filesystem::trimTrailingSlash($path); + + + + + + + + + +if (Platform::isWindows() && $this->filesystem->isJunction($path)) { +if ($output) { +$this->io->writeError(" - " . UninstallOperation::format($package).", source is still present in $path"); +} +if (!$this->filesystem->removeJunction($path)) { +$this->io->writeError(" Could not remove junction at " . $path . " - is another process locking it?"); +throw new \RuntimeException('Could not reliably remove junction for package ' . $package->getName()); +} + +return \React\Promise\resolve(null); +} + + + + + +$fs = new Filesystem; +$absPath = $fs->isAbsolutePath($path) ? $path : Platform::getCwd() . '/' . $path; +$absDistUrl = $fs->isAbsolutePath($package->getDistUrl()) ? $package->getDistUrl() : Platform::getCwd() . '/' . $package->getDistUrl(); +if ($fs->normalizePath($absPath) === $fs->normalizePath($absDistUrl)) { +if ($output) { +$this->io->writeError(" - " . UninstallOperation::format($package).", source is still present in $path"); +} + +return \React\Promise\resolve(null); +} + +return parent::remove($package, $path, $output); +} + + + + +public function getVcsReference(PackageInterface $package, string $path): ?string +{ +$path = Filesystem::trimTrailingSlash($path); +$parser = new VersionParser; +$guesser = new VersionGuesser($this->config, $this->process, $parser); +$dumper = new ArrayDumper; + +$packageConfig = $dumper->dump($package); +if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { +return $packageVersion['commit']; +} + +return null; +} + + + + +protected function getInstallOperationAppendix(PackageInterface $package, string $path): string +{ +$realUrl = realpath($package->getDistUrl()); + +if (realpath($path) === $realUrl) { +return ': Source already present'; +} + +[$currentStrategy] = $this->computeAllowedStrategies($package->getTransportOptions()); + +if ($currentStrategy === self::STRATEGY_SYMLINK) { +if (Platform::isWindows()) { +return ': Junctioning from '.$package->getDistUrl(); +} + +return ': Symlinking from '.$package->getDistUrl(); +} + +return ': Mirroring from '.$package->getDistUrl(); +} + + + + + + +private function computeAllowedStrategies(array $transportOptions): array +{ + +$currentStrategy = self::STRATEGY_SYMLINK; +$allowedStrategies = [self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR]; + +$mirrorPathRepos = Platform::getEnv('COMPOSER_MIRROR_PATH_REPOS'); +if ($mirrorPathRepos) { +$currentStrategy = self::STRATEGY_MIRROR; +} + +$symlinkOption = $transportOptions['symlink'] ?? null; + +if (true === $symlinkOption) { +$currentStrategy = self::STRATEGY_SYMLINK; +$allowedStrategies = [self::STRATEGY_SYMLINK]; +} elseif (false === $symlinkOption) { +$currentStrategy = self::STRATEGY_MIRROR; +$allowedStrategies = [self::STRATEGY_MIRROR]; +} + + +if (Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !$this->safeJunctions()) { +if (!in_array(self::STRATEGY_MIRROR, $allowedStrategies, true)) { +throw new \RuntimeException('You are on an old Windows / old PHP combo which does not allow Composer to use junctions/symlinks and this path repository has symlink:true in its options so copying is not allowed'); +} +$currentStrategy = self::STRATEGY_MIRROR; +$allowedStrategies = [self::STRATEGY_MIRROR]; +} + + +if (!Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !function_exists('symlink')) { +if (!in_array(self::STRATEGY_MIRROR, $allowedStrategies, true)) { +throw new \RuntimeException('Your PHP has the symlink() function disabled which does not allow Composer to use symlinks and this path repository has symlink:true in its options so copying is not allowed'); +} +$currentStrategy = self::STRATEGY_MIRROR; +$allowedStrategies = [self::STRATEGY_MIRROR]; +} + +return [$currentStrategy, $allowedStrategies]; +} + + + + + + + + + + + + +private function safeJunctions(): bool +{ + +return function_exists('proc_open') && +(PHP_WINDOWS_VERSION_MAJOR > 6 || +(PHP_WINDOWS_VERSION_MAJOR === 6 && PHP_WINDOWS_VERSION_MINOR >= 1)); +} +} diff --git a/composer/src/Composer/Downloader/PerforceDownloader.php b/composer/src/Composer/Downloader/PerforceDownloader.php new file mode 100644 index 000000000..de837d230 --- /dev/null +++ b/composer/src/Composer/Downloader/PerforceDownloader.php @@ -0,0 +1,128 @@ +getSourceReference(); +$label = $this->getLabelFromSourceReference((string) $ref); + +$this->io->writeError('Cloning ' . $ref); +$this->initPerforce($package, $path, $url); +$this->perforce->setStream($ref); +$this->perforce->p4Login(); +$this->perforce->writeP4ClientSpec(); +$this->perforce->connectClient(); +$this->perforce->syncCodeBase($label); +$this->perforce->cleanupClientSpec(); + +return \React\Promise\resolve(null); +} + +private function getLabelFromSourceReference(string $ref): ?string +{ +$pos = strpos($ref, '@'); +if (false !== $pos) { +return substr($ref, $pos + 1); +} + +return null; +} + +public function initPerforce(PackageInterface $package, string $path, string $url): void +{ +if (!empty($this->perforce)) { +$this->perforce->initializePath($path); + +return; +} + +$repository = $package->getRepository(); +$repoConfig = null; +if ($repository instanceof VcsRepository) { +$repoConfig = $this->getRepoConfig($repository); +} +$this->perforce = Perforce::create($repoConfig, $url, $path, $this->process, $this->io); +} + + + + +private function getRepoConfig(VcsRepository $repository): array +{ +return $repository->getRepoConfig(); +} + + + + +protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface +{ +return $this->doInstall($target, $path, $url); +} + + + + +public function getLocalChanges(PackageInterface $package, string $path): ?string +{ +$this->io->writeError('Perforce driver does not check for local changes before overriding'); + +return null; +} + + + + +protected function getCommitLogs(string $fromReference, string $toReference, string $path): string +{ +return $this->perforce->getCommitLogs($fromReference, $toReference); +} + +public function setPerforce(Perforce $perforce): void +{ +$this->perforce = $perforce; +} + + + + +protected function hasMetadataRepository(string $path): bool +{ +return true; +} +} diff --git a/composer/src/Composer/Downloader/PharDownloader.php b/composer/src/Composer/Downloader/PharDownloader.php new file mode 100644 index 000000000..04ec74ba6 --- /dev/null +++ b/composer/src/Composer/Downloader/PharDownloader.php @@ -0,0 +1,41 @@ +extractTo($path, null, true); + + + + + + +return \React\Promise\resolve(null); +} +} diff --git a/composer/src/Composer/Downloader/RarDownloader.php b/composer/src/Composer/Downloader/RarDownloader.php new file mode 100644 index 000000000..23c17ae94 --- /dev/null +++ b/composer/src/Composer/Downloader/RarDownloader.php @@ -0,0 +1,82 @@ +/dev/null && chmod -R u+w ' . ProcessExecutor::escape($path); + +if (0 === $this->process->execute($command, $ignoredOutput)) { +return \React\Promise\resolve(null); +} + +$processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); +} + +if (!class_exists('RarArchive')) { + +$iniMessage = IniHelper::getMessage(); + +$error = "Could not decompress the archive, enable the PHP rar extension or install unrar.\n" +. $iniMessage . "\n" . $processError; + +if (!Platform::isWindows()) { +$error = "Could not decompress the archive, enable the PHP rar extension.\n" . $iniMessage; +} + +throw new \RuntimeException($error); +} + +$rarArchive = RarArchive::open($file); + +if (false === $rarArchive) { +throw new \UnexpectedValueException('Could not open RAR archive: ' . $file); +} + +$entries = $rarArchive->getEntries(); + +if (false === $entries) { +throw new \RuntimeException('Could not retrieve RAR archive entries'); +} + +foreach ($entries as $entry) { +if (false === $entry->extract($path)) { +throw new \RuntimeException('Could not extract entry'); +} +} + +$rarArchive->close(); + +return \React\Promise\resolve(null); +} +} diff --git a/composer/src/Composer/Downloader/SvnDownloader.php b/composer/src/Composer/Downloader/SvnDownloader.php new file mode 100644 index 000000000..a97f2a534 --- /dev/null +++ b/composer/src/Composer/Downloader/SvnDownloader.php @@ -0,0 +1,249 @@ +io, $this->config, $this->process); +if (null === $util->binaryVersion()) { +throw new \RuntimeException('svn was not found in your PATH, skipping source download'); +} + +return \React\Promise\resolve(null); +} + + + + +protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface +{ +SvnUtil::cleanEnv(); +$ref = $package->getSourceReference(); + +$repo = $package->getRepository(); +if ($repo instanceof VcsRepository) { +$repoConfig = $repo->getRepoConfig(); +if (array_key_exists('svn-cache-credentials', $repoConfig)) { +$this->cacheCredentials = (bool) $repoConfig['svn-cache-credentials']; +} +} + +$this->io->writeError(" Checking out ".$package->getSourceReference()); +$this->execute($package, $url, "svn co", sprintf("%s/%s", $url, $ref), null, $path); + +return \React\Promise\resolve(null); +} + + + + +protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface +{ +SvnUtil::cleanEnv(); +$ref = $target->getSourceReference(); + +if (!$this->hasMetadataRepository($path)) { +throw new \RuntimeException('The .svn directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); +} + +$util = new SvnUtil($url, $this->io, $this->config, $this->process); +$flags = ""; +if (version_compare($util->binaryVersion(), '1.7.0', '>=')) { +$flags .= ' --ignore-ancestry'; +} + +$this->io->writeError(" Checking out " . $ref); +$this->execute($target, $url, "svn switch" . $flags, sprintf("%s/%s", $url, $ref), $path); + +return \React\Promise\resolve(null); +} + + + + +public function getLocalChanges(PackageInterface $package, string $path): ?string +{ +if (!$this->hasMetadataRepository($path)) { +return null; +} + +$this->process->execute('svn status --ignore-externals', $output, $path); + +return Preg::isMatch('{^ *[^X ] +}m', $output) ? $output : null; +} + + + + + + + + + + + + +protected function execute(PackageInterface $package, string $baseUrl, string $command, string $url, ?string $cwd = null, ?string $path = null): string +{ +$util = new SvnUtil($baseUrl, $this->io, $this->config, $this->process); +$util->setCacheCredentials($this->cacheCredentials); +try { +return $util->execute($command, $url, $cwd, $path, $this->io->isVerbose()); +} catch (\RuntimeException $e) { +throw new \RuntimeException( +$package->getPrettyName().' could not be downloaded, '.$e->getMessage() +); +} +} + + + + +protected function cleanChanges(PackageInterface $package, string $path, bool $update): PromiseInterface +{ +if (null === ($changes = $this->getLocalChanges($package, $path))) { +return \React\Promise\resolve(null); +} + +if (!$this->io->isInteractive()) { +if (true === $this->config->get('discard-changes')) { +return $this->discardChanges($path); +} + +return parent::cleanChanges($package, $path, $update); +} + +$changes = array_map(static function ($elem): string { +return ' '.$elem; +}, Preg::split('{\s*\r?\n\s*}', $changes)); +$countChanges = count($changes); +$this->io->writeError(sprintf(' '.$package->getPrettyName().' has modified file%s:', $countChanges === 1 ? '' : 's')); +$this->io->writeError(array_slice($changes, 0, 10)); +if ($countChanges > 10) { +$remainingChanges = $countChanges - 10; +$this->io->writeError( +sprintf( +' '.$remainingChanges.' more file%s modified, choose "v" to view the full list', +$remainingChanges === 1 ? '' : 's' +) +); +} + +while (true) { +switch ($this->io->ask(' Discard changes [y,n,v,?]? ', '?')) { +case 'y': +$this->discardChanges($path); +break 2; + +case 'n': +throw new \RuntimeException('Update aborted'); + +case 'v': +$this->io->writeError($changes); +break; + +case '?': +default: +$this->io->writeError([ +' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), +' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', +' v - view modified files', +' ? - print help', +]); +break; +} +} + +return \React\Promise\resolve(null); +} + + + + +protected function getCommitLogs(string $fromReference, string $toReference, string $path): string +{ +if (Preg::isMatch('{@(\d+)$}', $fromReference) && Preg::isMatch('{@(\d+)$}', $toReference)) { + +$command = sprintf('svn info --non-interactive --xml -- %s', ProcessExecutor::escape($path)); +if (0 !== $this->process->execute($command, $output, $path)) { +throw new \RuntimeException( +'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput() +); +} + +$urlPattern = '#(.*)#'; +if (Preg::isMatchStrictGroups($urlPattern, $output, $matches)) { +$baseUrl = $matches[1]; +} else { +throw new \RuntimeException( +'Unable to determine svn url for path '. $path +); +} + + +$fromRevision = Preg::replace('{.*@(\d+)$}', '$1', $fromReference); +$toRevision = Preg::replace('{.*@(\d+)$}', '$1', $toReference); + +$command = sprintf('svn log -r%s:%s --incremental', ProcessExecutor::escape($fromRevision), ProcessExecutor::escape($toRevision)); + +$util = new SvnUtil($baseUrl, $this->io, $this->config, $this->process); +$util->setCacheCredentials($this->cacheCredentials); +try { +return $util->executeLocal($command, $path, null, $this->io->isVerbose()); +} catch (\RuntimeException $e) { +throw new \RuntimeException( +'Failed to execute ' . $command . "\n\n".$e->getMessage() +); +} +} + +return "Could not retrieve changes between $fromReference and $toReference due to missing revision information"; +} + +protected function discardChanges(string $path): PromiseInterface +{ +if (0 !== $this->process->execute('svn revert -R .', $output, $path)) { +throw new \RuntimeException("Could not reset changes\n\n:".$this->process->getErrorOutput()); +} + +return \React\Promise\resolve(null); +} + + + + +protected function hasMetadataRepository(string $path): bool +{ +return is_dir($path.'/.svn'); +} +} diff --git a/composer/src/Composer/Downloader/TarDownloader.php b/composer/src/Composer/Downloader/TarDownloader.php new file mode 100644 index 000000000..4c59d60d2 --- /dev/null +++ b/composer/src/Composer/Downloader/TarDownloader.php @@ -0,0 +1,36 @@ +extractTo($path, null, true); + +return \React\Promise\resolve(null); +} +} diff --git a/composer/src/Composer/Downloader/TransportException.php b/composer/src/Composer/Downloader/TransportException.php new file mode 100644 index 000000000..1c23642f5 --- /dev/null +++ b/composer/src/Composer/Downloader/TransportException.php @@ -0,0 +1,89 @@ +headers = $headers; +} + + + + +public function getHeaders(): ?array +{ +return $this->headers; +} + +public function setResponse(?string $response): void +{ +$this->response = $response; +} + + + + +public function getResponse(): ?string +{ +return $this->response; +} + + + + +public function setStatusCode($statusCode): void +{ +$this->statusCode = $statusCode; +} + + + + +public function getStatusCode(): ?int +{ +return $this->statusCode; +} + + + + +public function getResponseInfo(): array +{ +return $this->responseInfo; +} + + + + +public function setResponseInfo(array $responseInfo): void +{ +$this->responseInfo = $responseInfo; +} +} diff --git a/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php b/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php new file mode 100644 index 000000000..c4ec22ea1 --- /dev/null +++ b/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php @@ -0,0 +1,32 @@ +io = $io; +$this->config = $config; +$this->process = $process ?? new ProcessExecutor($io); +$this->filesystem = $fs ?? new Filesystem($this->process); +} + + + + +public function getInstallationSource(): string +{ +return 'source'; +} + + + + +public function download(PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface +{ +if (!$package->getSourceReference()) { +throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); +} + +$urls = $this->prepareUrls($package->getSourceUrls()); + +while ($url = array_shift($urls)) { +try { +return $this->doDownload($package, $path, $url, $prevPackage); +} catch (\Exception $e) { + +if ($e instanceof \PHPUnit\Framework\Exception) { +throw $e; +} +if ($this->io->isDebug()) { +$this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); +} elseif (count($urls)) { +$this->io->writeError(' Failed, trying the next URL'); +} +if (!count($urls)) { +throw $e; +} +} +} + +return \React\Promise\resolve(null); +} + + + + +public function prepare(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface +{ +if ($type === 'update') { +$this->cleanChanges($prevPackage, $path, true); +$this->hasCleanedChanges[$prevPackage->getUniqueName()] = true; +} elseif ($type === 'install') { +$this->filesystem->emptyDirectory($path); +} elseif ($type === 'uninstall') { +$this->cleanChanges($package, $path, false); +} + +return \React\Promise\resolve(null); +} + + + + +public function cleanup(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface +{ +if ($type === 'update' && isset($this->hasCleanedChanges[$prevPackage->getUniqueName()])) { +$this->reapplyChanges($path); +unset($this->hasCleanedChanges[$prevPackage->getUniqueName()]); +} + +return \React\Promise\resolve(null); +} + + + + +public function install(PackageInterface $package, string $path): PromiseInterface +{ +if (!$package->getSourceReference()) { +throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); +} + +$this->io->writeError(" - " . InstallOperation::format($package).': ', false); + +$urls = $this->prepareUrls($package->getSourceUrls()); +while ($url = array_shift($urls)) { +try { +$this->doInstall($package, $path, $url); +break; +} catch (\Exception $e) { + +if ($e instanceof \PHPUnit\Framework\Exception) { +throw $e; +} +if ($this->io->isDebug()) { +$this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); +} elseif (count($urls)) { +$this->io->writeError(' Failed, trying the next URL'); +} +if (!count($urls)) { +throw $e; +} +} +} + +return \React\Promise\resolve(null); +} + + + + +public function update(PackageInterface $initial, PackageInterface $target, string $path): PromiseInterface +{ +if (!$target->getSourceReference()) { +throw new \InvalidArgumentException('Package '.$target->getPrettyName().' is missing reference information'); +} + +$this->io->writeError(" - " . UpdateOperation::format($initial, $target).': ', false); + +$urls = $this->prepareUrls($target->getSourceUrls()); + +$exception = null; +while ($url = array_shift($urls)) { +try { +$this->doUpdate($initial, $target, $path, $url); + +$exception = null; +break; +} catch (\Exception $exception) { + +if ($exception instanceof \PHPUnit\Framework\Exception) { +throw $exception; +} +if ($this->io->isDebug()) { +$this->io->writeError('Failed: ['.get_class($exception).'] '.$exception->getMessage()); +} elseif (count($urls)) { +$this->io->writeError(' Failed, trying the next URL'); +} +} +} + + + +if (!$exception && $this->io->isVerbose() && $this->hasMetadataRepository($path)) { +$message = 'Pulling in changes:'; +$logs = $this->getCommitLogs($initial->getSourceReference(), $target->getSourceReference(), $path); + +if ('' === trim($logs)) { +$message = 'Rolling back changes:'; +$logs = $this->getCommitLogs($target->getSourceReference(), $initial->getSourceReference(), $path); +} + +if ('' !== trim($logs)) { +$logs = implode("\n", array_map(static function ($line): string { +return ' ' . $line; +}, explode("\n", $logs))); + + +$logs = str_replace('<', '\<', $logs); + +$this->io->writeError(' '.$message); +$this->io->writeError($logs); +} +} + +if (!$urls && $exception) { +throw $exception; +} + +return \React\Promise\resolve(null); +} + + + + +public function remove(PackageInterface $package, string $path): PromiseInterface +{ +$this->io->writeError(" - " . UninstallOperation::format($package)); + +$promise = $this->filesystem->removeDirectoryAsync($path); + +return $promise->then(static function (bool $result) use ($path) { +if (!$result) { +throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); +} +}); +} + + + + +public function getVcsReference(PackageInterface $package, string $path): ?string +{ +$parser = new VersionParser; +$guesser = new VersionGuesser($this->config, $this->process, $parser); +$dumper = new ArrayDumper; + +$packageConfig = $dumper->dump($package); +if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { +return $packageVersion['commit']; +} + +return null; +} + + + + + + + + + +protected function cleanChanges(PackageInterface $package, string $path, bool $update): PromiseInterface +{ + +if (null !== $this->getLocalChanges($package, $path)) { +throw new \RuntimeException('Source directory ' . $path . ' has uncommitted changes.'); +} + +return \React\Promise\resolve(null); +} + + + + + + +protected function reapplyChanges(string $path): void +{ +} + + + + + + + + + +abstract protected function doDownload(PackageInterface $package, string $path, string $url, ?PackageInterface $prevPackage = null): PromiseInterface; + + + + + + + + +abstract protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface; + + + + + + + + + +abstract protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface; + + + + + + + + +abstract protected function getCommitLogs(string $fromReference, string $toReference, string $path): string; + + + + + +abstract protected function hasMetadataRepository(string $path): bool; + + + + + + +private function prepareUrls(array $urls): array +{ +foreach ($urls as $index => $url) { +if (Filesystem::isLocalPath($url)) { + + +$fileProtocol = 'file://'; +$isFileProtocol = false; +if (0 === strpos($url, $fileProtocol)) { +$url = substr($url, strlen($fileProtocol)); +$isFileProtocol = true; +} + + +if (false !== strpos($url, '%')) { +$url = rawurldecode($url); +} + +$urls[$index] = realpath($url); + +if ($isFileProtocol) { +$urls[$index] = $fileProtocol . $urls[$index]; +} +} +} + +return $urls; +} +} diff --git a/composer/src/Composer/Downloader/XzDownloader.php b/composer/src/Composer/Downloader/XzDownloader.php new file mode 100644 index 000000000..e042ed6a5 --- /dev/null +++ b/composer/src/Composer/Downloader/XzDownloader.php @@ -0,0 +1,39 @@ +process->execute($command, $ignoredOutput)) { +return \React\Promise\resolve(null); +} + +$processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); + +throw new \RuntimeException($processError); +} +} diff --git a/composer/src/Composer/Downloader/ZipDownloader.php b/composer/src/Composer/Downloader/ZipDownloader.php new file mode 100644 index 000000000..4f4f97a8c --- /dev/null +++ b/composer/src/Composer/Downloader/ZipDownloader.php @@ -0,0 +1,272 @@ +find('7z', null, ['C:\Program Files\7-Zip']))) { +self::$unzipCommands[] = ['7z', ProcessExecutor::escape($cmd).' x -bb0 -y %s -o%s']; +} +if ($cmd = $finder->find('unzip')) { +self::$unzipCommands[] = ['unzip', ProcessExecutor::escape($cmd).' -qq %s -d %s']; +} +if (!Platform::isWindows() && ($cmd = $finder->find('7z'))) { +self::$unzipCommands[] = ['7z', ProcessExecutor::escape($cmd).' x -bb0 -y %s -o%s']; +} +if (!Platform::isWindows() && ($cmd = $finder->find('7zz'))) { +self::$unzipCommands[] = ['7zz', ProcessExecutor::escape($cmd).' x -bb0 -y %s -o%s']; +} +} + +$procOpenMissing = false; +if (!function_exists('proc_open')) { +self::$unzipCommands = []; +$procOpenMissing = true; +} + +if (null === self::$hasZipArchive) { +self::$hasZipArchive = class_exists('ZipArchive'); +} + +if (!self::$hasZipArchive && !self::$unzipCommands) { + +$iniMessage = IniHelper::getMessage(); +if ($procOpenMissing) { +$error = "The zip extension is missing and unzip/7z commands cannot be called as proc_open is disabled, skipping.\n" . $iniMessage; +} else { +$error = "The zip extension and unzip/7z commands are both missing, skipping.\n" . $iniMessage; +} + +throw new \RuntimeException($error); +} + +if (null === self::$isWindows) { +self::$isWindows = Platform::isWindows(); + +if (!self::$isWindows && !self::$unzipCommands) { +if ($procOpenMissing) { +$this->io->writeError("proc_open is disabled so 'unzip' and '7z' commands cannot be used, zip files are being unpacked using the PHP zip extension."); +$this->io->writeError("This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost."); +$this->io->writeError("Enabling proc_open and installing 'unzip' or '7z' (21.01+) may remediate them."); +} else { +$this->io->writeError("As there is no 'unzip' nor '7z' command installed zip files are being unpacked using the PHP zip extension."); +$this->io->writeError("This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost."); +$this->io->writeError("Installing 'unzip' or '7z' (21.01+) may remediate them."); +} +} +} + +return parent::download($package, $path, $prevPackage, $output); +} + + + + + + + +private function extractWithSystemUnzip(PackageInterface $package, string $file, string $path): PromiseInterface +{ +static $warned7ZipLinux = false; + + +$isLastChance = !self::$hasZipArchive; + +if (!self::$unzipCommands) { + + +return $this->extractWithZipArchive($package, $file, $path); +} + +$commandSpec = reset(self::$unzipCommands); +$command = sprintf($commandSpec[1], ProcessExecutor::escape($file), ProcessExecutor::escape($path)); + + +if (Platform::isWindows()) { +$command = sprintf($commandSpec[1], ProcessExecutor::escape(strtr($file, '/', '\\')), ProcessExecutor::escape(strtr($path, '/', '\\'))); +} + +$executable = $commandSpec[0]; +if (!$warned7ZipLinux && !Platform::isWindows() && in_array($executable, ['7z', '7zz'], true)) { +$warned7ZipLinux = true; +if (0 === $this->process->execute($executable, $output)) { +if (Preg::isMatchStrictGroups('{^\s*7-Zip(?: \[64\])? ([0-9.]+)}', $output, $match) && version_compare($match[1], '21.01', '<')) { +$this->io->writeError(' Unzipping using '.$executable.' '.$match[1].' may result in incorrect file permissions. Install '.$executable.' 21.01+ or unzip to ensure you get correct permissions.'); +} +} +} + +$io = $this->io; +$tryFallback = function (\Throwable $processError) use ($isLastChance, $io, $file, $path, $package, $executable): \React\Promise\PromiseInterface { +if ($isLastChance) { +throw $processError; +} + +if (!is_file($file)) { +$io->writeError(' '.$processError->getMessage().''); +$io->writeError(' This most likely is due to a custom installer plugin not handling the returned Promise from the downloader'); +$io->writeError(' See https://github.com/composer/installers/commit/5006d0c28730ade233a8f42ec31ac68fb1c5c9bb for an example fix'); +} else { +$io->writeError(' '.$processError->getMessage().''); +$io->writeError(' The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)'); +$io->writeError(' Unzip with '.$executable.' command failed, falling back to ZipArchive class'); + + +if (Platform::getEnv('GITHUB_ACTIONS') !== false && Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING') === false) { +$io->writeError(' Additional debug info, please report to https://github.com/composer/composer/issues/11148 if you see this:'); +$io->writeError('File size: '.@filesize($file)); +$io->writeError('File SHA1: '.hash_file('sha1', $file)); +$io->writeError('First 100 bytes (hex): '.bin2hex(substr((string) file_get_contents($file), 0, 100))); +$io->writeError('Last 100 bytes (hex): '.bin2hex(substr((string) file_get_contents($file), -100))); +if (strlen((string) $package->getDistUrl()) > 0) { +$io->writeError('Origin URL: '.$this->processUrl($package, (string) $package->getDistUrl())); +$io->writeError('Response Headers: '.json_encode(FileDownloader::$responseHeaders[$package->getName()] ?? [])); +} +} +} + +return $this->extractWithZipArchive($package, $file, $path); +}; + +try { +$promise = $this->process->executeAsync($command); + +return $promise->then(function (Process $process) use ($tryFallback, $command, $package, $file) { +if (!$process->isSuccessful()) { +if (isset($this->cleanupExecuted[$package->getName()])) { +throw new \RuntimeException('Failed to extract '.$package->getName().' as the installation was aborted by another package operation.'); +} + +$output = $process->getErrorOutput(); +$output = str_replace(', '.$file.'.zip or '.$file.'.ZIP', '', $output); + +return $tryFallback(new \RuntimeException('Failed to extract '.$package->getName().': ('.$process->getExitCode().') '.$command."\n\n".$output)); +} +}); +} catch (\Throwable $e) { +return $tryFallback($e); +} +} + + + + + + + +private function extractWithZipArchive(PackageInterface $package, string $file, string $path): PromiseInterface +{ +$processError = null; +$zipArchive = $this->zipArchiveObject ?: new ZipArchive(); + +try { +if (!file_exists($file) || ($filesize = filesize($file)) === false || $filesize === 0) { +$retval = -1; +} else { +$retval = $zipArchive->open($file); +} +if (true === $retval) { +$extractResult = $zipArchive->extractTo($path); + +if (true === $extractResult) { +$zipArchive->close(); + +return \React\Promise\resolve(null); +} + +$processError = new \RuntimeException(rtrim("There was an error extracting the ZIP file, it is either corrupted or using an invalid format.\n")); +} else { +$processError = new \UnexpectedValueException(rtrim($this->getErrorMessage($retval, $file)."\n"), $retval); +} +} catch (\ErrorException $e) { +$processError = new \RuntimeException('The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems): '.$e->getMessage(), 0, $e); +} catch (\Throwable $e) { +$processError = $e; +} + +throw $processError; +} + + + + + + + +protected function extract(PackageInterface $package, string $file, string $path): PromiseInterface +{ +return $this->extractWithSystemUnzip($package, $file, $path); +} + + + + +protected function getErrorMessage(int $retval, string $file): string +{ +switch ($retval) { +case ZipArchive::ER_EXISTS: +return sprintf("File '%s' already exists.", $file); +case ZipArchive::ER_INCONS: +return sprintf("Zip archive '%s' is inconsistent.", $file); +case ZipArchive::ER_INVAL: +return sprintf("Invalid argument (%s)", $file); +case ZipArchive::ER_MEMORY: +return sprintf("Malloc failure (%s)", $file); +case ZipArchive::ER_NOENT: +return sprintf("No such zip file: '%s'", $file); +case ZipArchive::ER_NOZIP: +return sprintf("'%s' is not a zip archive.", $file); +case ZipArchive::ER_OPEN: +return sprintf("Can't open zip file: %s", $file); +case ZipArchive::ER_READ: +return sprintf("Zip read error (%s)", $file); +case ZipArchive::ER_SEEK: +return sprintf("Zip seek error (%s)", $file); +case -1: +return sprintf("'%s' is a corrupted zip archive (0 bytes), try again.", $file); +default: +return sprintf("'%s' is not a valid zip archive, got error code: %s", $file, $retval); +} +} +} diff --git a/composer/src/Composer/EventDispatcher/Event.php b/composer/src/Composer/EventDispatcher/Event.php new file mode 100644 index 000000000..d38bec108 --- /dev/null +++ b/composer/src/Composer/EventDispatcher/Event.php @@ -0,0 +1,103 @@ +name = $name; +$this->args = $args; +$this->flags = $flags; +} + + + + + + +public function getName(): string +{ +return $this->name; +} + + + + + + +public function getArguments(): array +{ +return $this->args; +} + + + + + + +public function getFlags(): array +{ +return $this->flags; +} + + + + + + +public function isPropagationStopped(): bool +{ +return $this->propagationStopped; +} + + + + +public function stopPropagation(): void +{ +$this->propagationStopped = true; +} +} diff --git a/composer/src/Composer/EventDispatcher/EventDispatcher.php b/composer/src/Composer/EventDispatcher/EventDispatcher.php new file mode 100644 index 000000000..2a2fecd79 --- /dev/null +++ b/composer/src/Composer/EventDispatcher/EventDispatcher.php @@ -0,0 +1,623 @@ +composer = $composer; +$this->io = $io; +$this->process = $process ?? new ProcessExecutor($io); +$this->eventStack = []; +} + + + + + + +public function setRunScripts(bool $runScripts = true): self +{ +$this->runScripts = (bool) $runScripts; + +return $this; +} + + + + + + + + + +public function dispatch(?string $eventName, ?Event $event = null): int +{ +if (null === $event) { +if (null === $eventName) { +throw new \InvalidArgumentException('If no $event is passed in to '.__METHOD__.' you have to pass in an $eventName, got null.'); +} +$event = new Event($eventName); +} + +return $this->doDispatch($event); +} + + + + + + + + + + +public function dispatchScript(string $eventName, bool $devMode = false, array $additionalArgs = [], array $flags = []): int +{ +assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); + +return $this->doDispatch(new Script\Event($eventName, $this->composer, $this->io, $devMode, $additionalArgs, $flags)); +} + + + + + + + + + + + + + +public function dispatchPackageEvent(string $eventName, bool $devMode, RepositoryInterface $localRepo, array $operations, OperationInterface $operation): int +{ +assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); + +return $this->doDispatch(new PackageEvent($eventName, $this->composer, $this->io, $devMode, $localRepo, $operations, $operation)); +} + + + + + + + + + + + + +public function dispatchInstallerEvent(string $eventName, bool $devMode, bool $executeOperations, Transaction $transaction): int +{ +assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); + +return $this->doDispatch(new InstallerEvent($eventName, $this->composer, $this->io, $devMode, $executeOperations, $transaction)); +} + + + + + + + + + +protected function doDispatch(Event $event) +{ +if (Platform::getEnv('COMPOSER_DEBUG_EVENTS')) { +$details = null; +if ($event instanceof PackageEvent) { +$details = (string) $event->getOperation(); +} +$this->io->writeError('Dispatching '.$event->getName().''.($details ? ' ('.$details.')' : '').' event'); +} + +$listeners = $this->getListeners($event); + +$this->pushEvent($event); + +try { +$returnMax = 0; +foreach ($listeners as $callable) { +$return = 0; +$this->ensureBinDirIsInPath(); + +if (!is_string($callable)) { +if (!is_callable($callable)) { +$className = is_object($callable[0]) ? get_class($callable[0]) : $callable[0]; + +throw new \RuntimeException('Subscriber '.$className.'::'.$callable[1].' for event '.$event->getName().' is not callable, make sure the function is defined and public'); +} +if (is_array($callable) && (is_string($callable[0]) || is_object($callable[0])) && is_string($callable[1])) { +$this->io->writeError(sprintf('> %s: %s', $event->getName(), (is_object($callable[0]) ? get_class($callable[0]) : $callable[0]).'->'.$callable[1]), true, IOInterface::VERBOSE); +} +$return = false === $callable($event) ? 1 : 0; +} elseif ($this->isComposerScript($callable)) { +$this->io->writeError(sprintf('> %s: %s', $event->getName(), $callable), true, IOInterface::VERBOSE); + +$script = explode(' ', substr($callable, 1)); +$scriptName = $script[0]; +unset($script[0]); + +$args = array_merge($script, $event->getArguments()); +$flags = $event->getFlags(); +if (isset($flags['script-alias-input'])) { +$argsString = implode(' ', array_map(static function ($arg) { return ProcessExecutor::escape($arg); }, $script)); +$flags['script-alias-input'] = $argsString . ' ' . $flags['script-alias-input']; +unset($argsString); +} +if (strpos($callable, '@composer ') === 0) { +$exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(Platform::getEnv('COMPOSER_BINARY')) . ' ' . implode(' ', $args); +if (0 !== ($exitCode = $this->executeTty($exec))) { +$this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); + +throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); +} +} else { +if (!$this->getListeners(new Event($scriptName))) { +$this->io->writeError(sprintf('You made a reference to a non-existent script %s', $callable), true, IOInterface::QUIET); +} + +try { + +$scriptEvent = new Script\Event($scriptName, $event->getComposer(), $event->getIO(), $event->isDevMode(), $args, $flags); +$scriptEvent->setOriginatingEvent($event); +$return = $this->dispatch($scriptName, $scriptEvent); +} catch (ScriptExecutionException $e) { +$this->io->writeError(sprintf('Script %s was called via %s', $callable, $event->getName()), true, IOInterface::QUIET); +throw $e; +} +} +} elseif ($this->isPhpScript($callable)) { +$className = substr($callable, 0, strpos($callable, '::')); +$methodName = substr($callable, strpos($callable, '::') + 2); + +if (!class_exists($className)) { +$this->io->writeError('Class '.$className.' is not autoloadable, can not call '.$event->getName().' script', true, IOInterface::QUIET); +continue; +} +if (!is_callable($callable)) { +$this->io->writeError('Method '.$callable.' is not callable, can not call '.$event->getName().' script', true, IOInterface::QUIET); +continue; +} + +try { +$return = false === $this->executeEventPhpScript($className, $methodName, $event) ? 1 : 0; +} catch (\Exception $e) { +$message = "Script %s handling the %s event terminated with an exception"; +$this->io->writeError(''.sprintf($message, $callable, $event->getName()).'', true, IOInterface::QUIET); +throw $e; +} +} elseif ($this->isCommandClass($callable)) { +$className = $callable; +if (!class_exists($className)) { +$this->io->writeError('Class '.$className.' is not autoloadable, can not call '.$event->getName().' script', true, IOInterface::QUIET); +continue; +} +if (!is_a($className, Command::class, true)) { +$this->io->writeError('Class '.$className.' does not extend '.Command::class.', can not call '.$event->getName().' script', true, IOInterface::QUIET); +continue; +} +if (defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($event->getName())))) { +$this->io->writeError('You cannot bind '.$event->getName().' to a Command class, use a non-reserved name', true, IOInterface::QUIET); +continue; +} + +$app = new Application(); +$app->setCatchExceptions(false); +$app->setAutoExit(false); +$cmd = new $className($event->getName()); +$app->add($cmd); +$app->setDefaultCommand((string) $cmd->getName(), true); +try { +$args = implode(' ', array_map(static function ($arg) { return ProcessExecutor::escape($arg); }, $event->getArguments())); + + +if ($this->io instanceof ConsoleIO) { +$reflProp = new \ReflectionProperty($this->io, 'output'); +if (PHP_VERSION_ID < 80100) { +$reflProp->setAccessible(true); +} +$output = $reflProp->getValue($this->io); +} else { +$output = new ConsoleOutput(); +} +$return = $app->run(new StringInput($event->getFlags()['script-alias-input'] ?? $args), $output); +} catch (\Exception $e) { +$message = "Script %s handling the %s event terminated with an exception"; +$this->io->writeError(''.sprintf($message, $callable, $event->getName()).'', true, IOInterface::QUIET); +throw $e; +} +} else { +$args = implode(' ', array_map(['Composer\Util\ProcessExecutor', 'escape'], $event->getArguments())); + + +if (strpos($callable, '@putenv ') === 0) { +$exec = $callable; +} else { +$exec = $callable . ($args === '' ? '' : ' '.$args); +} + +if ($this->io->isVerbose()) { +$this->io->writeError(sprintf('> %s: %s', $event->getName(), $exec)); +} elseif ($event->getName() !== '__exec_command') { + +$this->io->writeError(sprintf('> %s', $exec)); +} + +$possibleLocalBinaries = $this->composer->getPackage()->getBinaries(); +if ($possibleLocalBinaries) { +foreach ($possibleLocalBinaries as $localExec) { +if (Preg::isMatch('{\b'.preg_quote($callable).'$}', $localExec)) { +$caller = BinaryInstaller::determineBinaryCaller($localExec); +$exec = Preg::replace('{^'.preg_quote($callable).'}', $caller . ' ' . $localExec, $exec); +break; +} +} +} + +if (strpos($exec, '@putenv ') === 0) { +if (false === strpos($exec, '=')) { +Platform::clearEnv(substr($exec, 8)); +} else { +[$var, $value] = explode('=', substr($exec, 8), 2); +Platform::putEnv($var, $value); +} + +continue; +} +if (strpos($exec, '@php ') === 0) { +$pathAndArgs = substr($exec, 5); +if (Platform::isWindows()) { +$pathAndArgs = Preg::replaceCallback('{^\S+}', static function ($path) { +return str_replace('/', '\\', (string) $path[0]); +}, $pathAndArgs); +} + + +$matched = Preg::isMatchStrictGroups('{^[^\'"\s/\\\\]+}', $pathAndArgs, $match); +if ($matched && !file_exists($match[0])) { +$finder = new ExecutableFinder; +if ($pathToExec = $finder->find($match[0])) { +$pathAndArgs = $pathToExec . substr($pathAndArgs, strlen($match[0])); +} +} +$exec = $this->getPhpExecCommand() . ' ' . $pathAndArgs; +} else { +$finder = new PhpExecutableFinder(); +$phpPath = $finder->find(false); +if ($phpPath) { +Platform::putEnv('PHP_BINARY', $phpPath); +} + +if (Platform::isWindows()) { +$exec = Preg::replaceCallback('{^\S+}', static function ($path) { +assert(is_string($path[0])); + +return str_replace('/', '\\', $path[0]); +}, $exec); +} +} + + + + +if (strpos($exec, 'composer ') === 0) { +$exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(Platform::getEnv('COMPOSER_BINARY')) . substr($exec, 8); +} + +if (0 !== ($exitCode = $this->executeTty($exec))) { +$this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); + +throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); +} +} + +$returnMax = max($returnMax, $return); + +if ($event->isPropagationStopped()) { +break; +} +} +} finally { +$this->popEvent(); +} + +return $returnMax; +} + +protected function executeTty(string $exec): int +{ +if ($this->io->isInteractive()) { +return $this->process->executeTty($exec); +} + +return $this->process->execute($exec); +} + +protected function getPhpExecCommand(): string +{ +$finder = new PhpExecutableFinder(); +$phpPath = $finder->find(false); +if (!$phpPath) { +throw new \RuntimeException('Failed to locate PHP binary to execute '.$phpPath); +} +$phpArgs = $finder->findArguments(); +$phpArgs = $phpArgs ? ' ' . implode(' ', $phpArgs) : ''; +$allowUrlFOpenFlag = ' -d allow_url_fopen=' . ProcessExecutor::escape(ini_get('allow_url_fopen')); +$disableFunctionsFlag = ' -d disable_functions=' . ProcessExecutor::escape(ini_get('disable_functions')); +$memoryLimitFlag = ' -d memory_limit=' . ProcessExecutor::escape(ini_get('memory_limit')); + +return ProcessExecutor::escape($phpPath) . $phpArgs . $allowUrlFOpenFlag . $disableFunctionsFlag . $memoryLimitFlag; +} + + + + + + +protected function executeEventPhpScript(string $className, string $methodName, Event $event) +{ +if ($this->io->isVerbose()) { +$this->io->writeError(sprintf('> %s: %s::%s', $event->getName(), $className, $methodName)); +} else { +$this->io->writeError(sprintf('> %s::%s', $className, $methodName)); +} + +return $className::$methodName($event); +} + + + + + + + + +public function addListener(string $eventName, $listener, int $priority = 0): void +{ +$this->listeners[$eventName][$priority][] = $listener; +} + + + + +public function removeListener($listener): void +{ +foreach ($this->listeners as $eventName => $priorities) { +foreach ($priorities as $priority => $listeners) { +foreach ($listeners as $index => $candidate) { +if ($listener === $candidate || (is_array($candidate) && is_object($listener) && $candidate[0] === $listener)) { +unset($this->listeners[$eventName][$priority][$index]); +} +} +} +} +} + + + + + + +public function addSubscriber(EventSubscriberInterface $subscriber): void +{ +foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { +if (is_string($params)) { +$this->addListener($eventName, [$subscriber, $params]); +} elseif (is_string($params[0])) { +$this->addListener($eventName, [$subscriber, $params[0]], $params[1] ?? 0); +} else { +foreach ($params as $listener) { +$this->addListener($eventName, [$subscriber, $listener[0]], $listener[1] ?? 0); +} +} +} +} + + + + + + +protected function getListeners(Event $event): array +{ +$scriptListeners = $this->runScripts ? $this->getScriptListeners($event) : []; + +if (!isset($this->listeners[$event->getName()][0])) { +$this->listeners[$event->getName()][0] = []; +} +krsort($this->listeners[$event->getName()]); + +$listeners = $this->listeners; +$listeners[$event->getName()][0] = array_merge($listeners[$event->getName()][0], $scriptListeners); + +return array_merge(...$listeners[$event->getName()]); +} + + + + +public function hasEventListeners(Event $event): bool +{ +$listeners = $this->getListeners($event); + +return count($listeners) > 0; +} + + + + + + + +protected function getScriptListeners(Event $event): array +{ +$package = $this->composer->getPackage(); +$scripts = $package->getScripts(); + +if (empty($scripts[$event->getName()])) { +return []; +} + +assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); + +if ($this->loader) { +$this->loader->unregister(); +} + +$generator = $this->composer->getAutoloadGenerator(); +if ($event instanceof ScriptEvent) { +$generator->setDevMode($event->isDevMode()); +} + +$packages = $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); +$packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $package, $packages); +$map = $generator->parseAutoloads($packageMap, $package); +$this->loader = $generator->createLoader($map, $this->composer->getConfig()->get('vendor-dir')); +$this->loader->register(false); + +return $scripts[$event->getName()]; +} + + + + +protected function isPhpScript(string $callable): bool +{ +return false === strpos($callable, ' ') && false !== strpos($callable, '::'); +} + + + + +protected function isCommandClass(string $callable): bool +{ +return str_contains($callable, '\\') && !str_contains($callable, ' ') && str_ends_with($callable, 'Command'); +} + + + + +protected function isComposerScript(string $callable): bool +{ +return strpos($callable, '@') === 0 && strpos($callable, '@php ') !== 0 && strpos($callable, '@putenv ') !== 0; +} + + + + + + +protected function pushEvent(Event $event): int +{ +$eventName = $event->getName(); +if (in_array($eventName, $this->eventStack)) { +throw new \RuntimeException(sprintf("Circular call to script handler '%s' detected", $eventName)); +} + +return array_push($this->eventStack, $eventName); +} + + + + +protected function popEvent(): ?string +{ +return array_pop($this->eventStack); +} + +private function ensureBinDirIsInPath(): void +{ +$pathEnv = 'PATH'; + + + + +if (!isset($_SERVER[$pathEnv]) && isset($_SERVER['Path'])) { +$pathEnv = 'Path'; +} + + +$binDir = $this->composer->getConfig()->get('bin-dir'); +if (is_dir($binDir)) { +$binDir = realpath($binDir); +$pathValue = (string) Platform::getEnv($pathEnv); +if (!Preg::isMatch('{(^|'.PATH_SEPARATOR.')'.preg_quote($binDir).'($|'.PATH_SEPARATOR.')}', $pathValue)) { +Platform::putEnv($pathEnv, $binDir.PATH_SEPARATOR.$pathValue); +} +} +} +} diff --git a/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php b/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php new file mode 100644 index 000000000..c9ef7684f --- /dev/null +++ b/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php @@ -0,0 +1,48 @@ +merge([ +'config' => [ +'home' => $home, +'cache-dir' => self::getCacheDir($home), +'data-dir' => self::getDataDir($home), +], +], Config::SOURCE_DEFAULT); + + +$file = new JsonFile($config->get('home').'/config.json'); +if ($file->exists()) { +if ($io instanceof IOInterface) { +$io->writeError('Loading config file ' . $file->getPath(), true, IOInterface::DEBUG); +} +self::validateJsonSchema($io, $file); +$config->merge($file->read(), $file->getPath()); +} +$config->setConfigSource(new JsonConfigSource($file)); + +$htaccessProtect = $config->get('htaccess-protect'); +if ($htaccessProtect) { + + + +$dirs = [$config->get('home'), $config->get('cache-dir'), $config->get('data-dir')]; +foreach ($dirs as $dir) { +if (!file_exists($dir . '/.htaccess')) { +if (!is_dir($dir)) { +Silencer::call('mkdir', $dir, 0777, true); +} +Silencer::call('file_put_contents', $dir . '/.htaccess', 'Deny from all'); +} +} +} + + +$file = new JsonFile($config->get('home').'/auth.json'); +if ($file->exists()) { +if ($io instanceof IOInterface) { +$io->writeError('Loading config file ' . $file->getPath(), true, IOInterface::DEBUG); +} +self::validateJsonSchema($io, $file, JsonFile::AUTH_SCHEMA); +$config->merge(['config' => $file->read()], $file->getPath()); +} +$config->setAuthConfigSource(new JsonConfigSource($file, true)); + + +if ($composerAuthEnv = Platform::getEnv('COMPOSER_AUTH')) { +$authData = json_decode($composerAuthEnv); +if (null === $authData) { +throw new \UnexpectedValueException('COMPOSER_AUTH environment variable is malformed, should be a valid JSON object'); +} else { +if ($io instanceof IOInterface) { +$io->writeError('Loading auth config from COMPOSER_AUTH', true, IOInterface::DEBUG); +} +self::validateJsonSchema($io, $authData, JsonFile::AUTH_SCHEMA, 'COMPOSER_AUTH'); +$authData = json_decode($composerAuthEnv, true); +if (null !== $authData) { +$config->merge(['config' => $authData], 'COMPOSER_AUTH'); +} +} +} + +return $config; +} + +public static function getComposerFile(): string +{ +return trim((string) Platform::getEnv('COMPOSER')) ?: './composer.json'; +} + +public static function getLockFile(string $composerFile): string +{ +return "json" === pathinfo($composerFile, PATHINFO_EXTENSION) +? substr($composerFile, 0, -4).'lock' +: $composerFile . '.lock'; +} + + + + +public static function createAdditionalStyles(): array +{ +return [ +'highlight' => new OutputFormatterStyle('red'), +'warning' => new OutputFormatterStyle('black', 'yellow'), +]; +} + +public static function createOutput(): ConsoleOutput +{ +$styles = self::createAdditionalStyles(); +$formatter = new OutputFormatter(false, $styles); + +return new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, null, $formatter); +} + + + + + + + + + + + + + + + +public function createComposer(IOInterface $io, $localConfig = null, $disablePlugins = false, ?string $cwd = null, bool $fullLoad = true, bool $disableScripts = false) +{ + +if (is_string($localConfig) && is_file($localConfig) && null === $cwd) { +$cwd = dirname($localConfig); +} + +$cwd = $cwd ?? Platform::getCwd(true); + + +if (null === $localConfig) { +$localConfig = static::getComposerFile(); +} + +$localConfigSource = Config::SOURCE_UNKNOWN; +if (is_string($localConfig)) { +$composerFile = $localConfig; + +$file = new JsonFile($localConfig, null, $io); + +if (!$file->exists()) { +if ($localConfig === './composer.json' || $localConfig === 'composer.json') { +$message = 'Composer could not find a composer.json file in '.$cwd; +} else { +$message = 'Composer could not find the config file: '.$localConfig; +} +$instructions = $fullLoad ? 'To initialize a project, please create a composer.json file. See https://getcomposer.org/basic-usage' : ''; +throw new \InvalidArgumentException($message.PHP_EOL.$instructions); +} + +if (!Platform::isInputCompletionProcess()) { +try { +$file->validateSchema(JsonFile::LAX_SCHEMA); +} catch (JsonValidationException $e) { +$errors = ' - ' . implode(PHP_EOL . ' - ', $e->getErrors()); +$message = $e->getMessage() . ':' . PHP_EOL . $errors; +throw new JsonValidationException($message); +} +} + +$localConfig = $file->read(); +$localConfigSource = $file->getPath(); +} + + +$config = static::createConfig($io, $cwd); +$config->merge($localConfig, $localConfigSource); +if (isset($composerFile)) { +$io->writeError('Loading config file ' . $composerFile .' ('.realpath($composerFile).')', true, IOInterface::DEBUG); +$config->setConfigSource(new JsonConfigSource(new JsonFile(realpath($composerFile), null, $io))); + +$localAuthFile = new JsonFile(dirname(realpath($composerFile)) . '/auth.json', null, $io); +if ($localAuthFile->exists()) { +$io->writeError('Loading config file ' . $localAuthFile->getPath(), true, IOInterface::DEBUG); +self::validateJsonSchema($io, $localAuthFile, JsonFile::AUTH_SCHEMA); +$config->merge(['config' => $localAuthFile->read()], $localAuthFile->getPath()); +$config->setLocalAuthConfigSource(new JsonConfigSource($localAuthFile, true)); +} +} + +$vendorDir = $config->get('vendor-dir'); + + +$composer = $fullLoad ? new Composer() : new PartialComposer(); +$composer->setConfig($config); + +if ($fullLoad) { + +$io->loadConfiguration($config); + + +if (!class_exists('Composer\InstalledVersions', false) && file_exists($installedVersionsPath = $config->get('vendor-dir').'/composer/InstalledVersions.php')) { +include $installedVersionsPath; +} +} + +$httpDownloader = self::createHttpDownloader($io, $config); +$process = new ProcessExecutor($io); +$loop = new Loop($httpDownloader, $process); +$composer->setLoop($loop); + + +$dispatcher = new EventDispatcher($composer, $io, $process); +$dispatcher->setRunScripts(!$disableScripts); +$composer->setEventDispatcher($dispatcher); + + +$rm = RepositoryFactory::manager($io, $config, $httpDownloader, $dispatcher, $process); +$composer->setRepositoryManager($rm); + + + +if (!$fullLoad && !isset($localConfig['version'])) { +$localConfig['version'] = '1.0.0'; +} + + +$parser = new VersionParser; +$guesser = new VersionGuesser($config, $process, $parser); +$loader = $this->loadRootPackage($rm, $config, $parser, $guesser, $io); +$package = $loader->load($localConfig, 'Composer\Package\RootPackage', $cwd); +$composer->setPackage($package); + + +$this->addLocalRepository($io, $rm, $vendorDir, $package, $process); + + +$im = $this->createInstallationManager($loop, $io, $dispatcher); +$composer->setInstallationManager($im); + +if ($composer instanceof Composer) { + +$dm = $this->createDownloadManager($io, $config, $httpDownloader, $process, $dispatcher); +$composer->setDownloadManager($dm); + + +$generator = new AutoloadGenerator($dispatcher, $io); +$composer->setAutoloadGenerator($generator); + + +$am = $this->createArchiveManager($config, $dm, $loop); +$composer->setArchiveManager($am); +} + + +$this->createDefaultInstallers($im, $composer, $io, $process); + + +if ($composer instanceof Composer && isset($composerFile)) { +$lockFile = self::getLockFile($composerFile); +if (!$config->get('lock') && file_exists($lockFile)) { +$io->writeError(''.$lockFile.' is present but ignored as the "lock" config option is disabled.'); +} + +$locker = new Package\Locker($io, new JsonFile($config->get('lock') ? $lockFile : Platform::getDevNull(), null, $io), $im, file_get_contents($composerFile), $process); +$composer->setLocker($locker); +} elseif ($composer instanceof Composer) { +$locker = new Package\Locker($io, new JsonFile(Platform::getDevNull(), null, $io), $im, JsonFile::encode($localConfig), $process); +$composer->setLocker($locker); +} + +if ($composer instanceof Composer) { +$globalComposer = null; +if (realpath($config->get('home')) !== $cwd) { +$globalComposer = $this->createGlobalComposer($io, $config, $disablePlugins, $disableScripts); +} + +$pm = $this->createPluginManager($io, $composer, $globalComposer, $disablePlugins); +$composer->setPluginManager($pm); + +if (realpath($config->get('home')) === $cwd) { +$pm->setRunningInGlobalDir(true); +} + +$pm->loadInstalledPlugins(); +} + +if ($fullLoad) { +$initEvent = new Event(PluginEvents::INIT); +$composer->getEventDispatcher()->dispatch($initEvent->getName(), $initEvent); + + + +$this->purgePackages($rm->getLocalRepository(), $im); +} + +return $composer; +} + + + + + +public static function createGlobal(IOInterface $io, bool $disablePlugins = false, bool $disableScripts = false): ?Composer +{ +$factory = new static(); + +return $factory->createGlobalComposer($io, static::createConfig($io), $disablePlugins, $disableScripts, true); +} + + + + +protected function addLocalRepository(IOInterface $io, RepositoryManager $rm, string $vendorDir, RootPackageInterface $rootPackage, ?ProcessExecutor $process = null): void +{ +$fs = null; +if ($process) { +$fs = new Filesystem($process); +} + +$rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir.'/composer/installed.json', null, $io), true, $rootPackage, $fs)); +} + + + + + + +protected function createGlobalComposer(IOInterface $io, Config $config, $disablePlugins, bool $disableScripts, bool $fullLoad = false): ?PartialComposer +{ + +$disablePlugins = $disablePlugins === 'global' || $disablePlugins === true; + +$composer = null; +try { +$composer = $this->createComposer($io, $config->get('home') . '/composer.json', $disablePlugins, $config->get('home'), $fullLoad, $disableScripts); +} catch (\Exception $e) { +$io->writeError('Failed to initialize global composer: '.$e->getMessage(), true, IOInterface::DEBUG); +} + +return $composer; +} + + + + + +public function createDownloadManager(IOInterface $io, Config $config, HttpDownloader $httpDownloader, ProcessExecutor $process, ?EventDispatcher $eventDispatcher = null): Downloader\DownloadManager +{ +$cache = null; +if ($config->get('cache-files-ttl') > 0) { +$cache = new Cache($io, $config->get('cache-files-dir'), 'a-z0-9_./'); +$cache->setReadOnly($config->get('cache-read-only')); +} + +$fs = new Filesystem($process); + +$dm = new Downloader\DownloadManager($io, false, $fs); +switch ($preferred = $config->get('preferred-install')) { +case 'dist': +$dm->setPreferDist(true); +break; +case 'source': +$dm->setPreferSource(true); +break; +case 'auto': +default: + +break; +} + +if (is_array($preferred)) { +$dm->setPreferences($preferred); +} + +$dm->setDownloader('git', new Downloader\GitDownloader($io, $config, $process, $fs)); +$dm->setDownloader('svn', new Downloader\SvnDownloader($io, $config, $process, $fs)); +$dm->setDownloader('fossil', new Downloader\FossilDownloader($io, $config, $process, $fs)); +$dm->setDownloader('hg', new Downloader\HgDownloader($io, $config, $process, $fs)); +$dm->setDownloader('perforce', new Downloader\PerforceDownloader($io, $config, $process, $fs)); +$dm->setDownloader('zip', new Downloader\ZipDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); +$dm->setDownloader('rar', new Downloader\RarDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); +$dm->setDownloader('tar', new Downloader\TarDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); +$dm->setDownloader('gzip', new Downloader\GzipDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); +$dm->setDownloader('xz', new Downloader\XzDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); +$dm->setDownloader('phar', new Downloader\PharDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); +$dm->setDownloader('file', new Downloader\FileDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); +$dm->setDownloader('path', new Downloader\PathDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); + +return $dm; +} + + + + + + +public function createArchiveManager(Config $config, Downloader\DownloadManager $dm, Loop $loop) +{ +$am = new Archiver\ArchiveManager($dm, $loop); +if (class_exists(ZipArchive::class)) { +$am->addArchiver(new Archiver\ZipArchiver); +} +if (class_exists(Phar::class)) { +$am->addArchiver(new Archiver\PharArchiver); +} + +return $am; +} + + + + +protected function createPluginManager(IOInterface $io, Composer $composer, ?PartialComposer $globalComposer = null, $disablePlugins = false): Plugin\PluginManager +{ +return new Plugin\PluginManager($io, $composer, $globalComposer, $disablePlugins); +} + +public function createInstallationManager(Loop $loop, IOInterface $io, ?EventDispatcher $eventDispatcher = null): Installer\InstallationManager +{ +return new Installer\InstallationManager($loop, $io, $eventDispatcher); +} + +protected function createDefaultInstallers(Installer\InstallationManager $im, PartialComposer $composer, IOInterface $io, ?ProcessExecutor $process = null): void +{ +$fs = new Filesystem($process); +$binaryInstaller = new Installer\BinaryInstaller($io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $fs, rtrim($composer->getConfig()->get('vendor-dir'), '/')); + +$im->addInstaller(new Installer\LibraryInstaller($io, $composer, null, $fs, $binaryInstaller)); +$im->addInstaller(new Installer\PluginInstaller($io, $composer, $fs, $binaryInstaller)); +$im->addInstaller(new Installer\MetapackageInstaller($io)); +} + + + + + +protected function purgePackages(InstalledRepositoryInterface $repo, Installer\InstallationManager $im): void +{ +foreach ($repo->getPackages() as $package) { +if (!$im->isPackageInstalled($repo, $package)) { +$repo->removePackage($package); +} +} +} + +protected function loadRootPackage(RepositoryManager $rm, Config $config, VersionParser $parser, VersionGuesser $guesser, IOInterface $io): Package\Loader\RootPackageLoader +{ +return new Package\Loader\RootPackageLoader($rm, $config, $parser, $guesser, $io); +} + + + + + + + + +public static function create(IOInterface $io, $config = null, $disablePlugins = false, bool $disableScripts = false): Composer +{ +$factory = new static(); + + + + + +if ($config !== null && $config !== self::getComposerFile() && $disablePlugins === false) { +$disablePlugins = 'local'; +} + +return $factory->createComposer($io, $config, $disablePlugins, null, true, $disableScripts); +} + + + + + + + + +public static function createHttpDownloader(IOInterface $io, Config $config, array $options = []): HttpDownloader +{ +static $warned = false; +$disableTls = false; + +if (isset($_SERVER['argv']) && in_array('disable-tls', $_SERVER['argv']) && (in_array('conf', $_SERVER['argv']) || in_array('config', $_SERVER['argv']))) { +$warned = true; +$disableTls = !extension_loaded('openssl'); +} elseif ($config->get('disable-tls') === true) { +if (!$warned) { +$io->writeError('You are running Composer with SSL/TLS protection disabled.'); +} +$warned = true; +$disableTls = true; +} elseif (!extension_loaded('openssl')) { +throw new Exception\NoSslException('The openssl extension is required for SSL/TLS protection but is not available. ' +. 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); +} +$httpDownloaderOptions = []; +if ($disableTls === false) { +if ('' !== $config->get('cafile')) { +$httpDownloaderOptions['ssl']['cafile'] = $config->get('cafile'); +} +if ('' !== $config->get('capath')) { +$httpDownloaderOptions['ssl']['capath'] = $config->get('capath'); +} +$httpDownloaderOptions = array_replace_recursive($httpDownloaderOptions, $options); +} +try { +$httpDownloader = new HttpDownloader($io, $config, $httpDownloaderOptions, $disableTls); +} catch (TransportException $e) { +if (false !== strpos($e->getMessage(), 'cafile')) { +$io->write('Unable to locate a valid CA certificate file. You must set a valid \'cafile\' option.'); +$io->write('A valid CA certificate file is required for SSL/TLS protection.'); +$io->write('You can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); +} +throw $e; +} + +return $httpDownloader; +} + +private static function useXdg(): bool +{ +foreach (array_keys($_SERVER) as $key) { +if (strpos($key, 'XDG_') === 0) { +return true; +} +} + +if (Silencer::call('is_dir', '/etc/xdg')) { +return true; +} + +return false; +} + + + + +private static function getUserDir(): string +{ +$home = Platform::getEnv('HOME'); +if (!$home) { +throw new \RuntimeException('The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly'); +} + +return rtrim(strtr($home, '\\', '/'), '/'); +} + + + + + +private static function validateJsonSchema(?IOInterface $io, $fileOrData, int $schema = JsonFile::LAX_SCHEMA, ?string $source = null): void +{ +if (Platform::isInputCompletionProcess()) { +return; +} + +try { +if ($fileOrData instanceof JsonFile) { +$fileOrData->validateSchema($schema); +} else { +if (null === $source) { +throw new \InvalidArgumentException('$source is required to be provided if $fileOrData is arbitrary data'); +} +JsonFile::validateJsonSchema($source, $fileOrData, $schema); +} +} catch (JsonValidationException $e) { +$msg = $e->getMessage().', this may result in errors and should be resolved:'.PHP_EOL.' - '.implode(PHP_EOL.' - ', $e->getErrors()); +if ($io instanceof IOInterface) { +$io->writeError(''.$msg.''); +} else { +throw new UnexpectedValueException($msg); +} +} +} +} diff --git a/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php b/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php new file mode 100644 index 000000000..2932f9a54 --- /dev/null +++ b/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php @@ -0,0 +1,23 @@ +ignoreRegex = BasePackage::packageNamesToRegexp($ignoreAll); +$this->ignoreUpperBoundRegex = BasePackage::packageNamesToRegexp($ignoreUpperBound); +} + +public function isIgnored(string $req): bool +{ +if (!PlatformRepository::isPlatformPackage($req)) { +return false; +} + +return Preg::isMatch($this->ignoreRegex, $req); +} + + + + +public function filterConstraint(string $req, ConstraintInterface $constraint, bool $allowUpperBoundOverride = true): ConstraintInterface +{ +if (!PlatformRepository::isPlatformPackage($req)) { +return $constraint; +} + +if (!$allowUpperBoundOverride || !Preg::isMatch($this->ignoreUpperBoundRegex, $req)) { +return $constraint; +} + +if (Preg::isMatch($this->ignoreRegex, $req)) { +return new MatchAllConstraint; +} + +$intervals = Intervals::get($constraint); +$last = end($intervals['numeric']); +if ($last !== false && (string) $last->getEnd() !== (string) Interval::untilPositiveInfinity()) { +$constraint = new MultiConstraint([$constraint, new Constraint('>=', $last->getEnd()->getVersion())], false); +} + +return $constraint; +} +} diff --git a/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php b/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php new file mode 100644 index 000000000..d003713e5 --- /dev/null +++ b/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php @@ -0,0 +1,24 @@ +authentications; +} + + + + +public function resetAuthentications() +{ +$this->authentications = []; +} + + + + +public function hasAuthentication($repositoryName) +{ +return isset($this->authentications[$repositoryName]); +} + + + + +public function getAuthentication($repositoryName) +{ +if (isset($this->authentications[$repositoryName])) { +return $this->authentications[$repositoryName]; +} + +return ['username' => null, 'password' => null]; +} + + + + +public function setAuthentication($repositoryName, $username, $password = null) +{ +$this->authentications[$repositoryName] = ['username' => $username, 'password' => $password]; +} + + + + +public function writeRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) +{ +$this->write($messages, $newline, $verbosity); +} + + + + +public function writeErrorRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) +{ +$this->writeError($messages, $newline, $verbosity); +} + + + + + + + + + + +protected function checkAndSetAuthentication(string $repositoryName, string $username, ?string $password = null) +{ +if ($this->hasAuthentication($repositoryName)) { +$auth = $this->getAuthentication($repositoryName); +if ($auth['username'] === $username && $auth['password'] === $password) { +return; +} + +$this->writeError( +sprintf( +"Warning: You should avoid overwriting already defined auth settings for %s.", +$repositoryName +) +); +} +$this->setAuthentication($repositoryName, $username, $password); +} + + + + +public function loadConfiguration(Config $config) +{ +$bitbucketOauth = $config->get('bitbucket-oauth'); +$githubOauth = $config->get('github-oauth'); +$gitlabOauth = $config->get('gitlab-oauth'); +$gitlabToken = $config->get('gitlab-token'); +$httpBasic = $config->get('http-basic'); +$bearerToken = $config->get('bearer'); + + + +foreach ($bitbucketOauth as $domain => $cred) { +$this->checkAndSetAuthentication($domain, $cred['consumer-key'], $cred['consumer-secret']); +} + +foreach ($githubOauth as $domain => $token) { +if ($domain !== 'github.com' && !in_array($domain, $config->get('github-domains'), true)) { +$this->debug($domain.' is not in the configured github-domains, adding it implicitly as authentication is configured for this domain'); +$config->merge(['config' => ['github-domains' => array_merge($config->get('github-domains'), [$domain])]], 'implicit-due-to-auth'); +} + + + +if (!Preg::isMatch('{^[.A-Za-z0-9_]+$}', $token)) { +throw new \UnexpectedValueException('Your github oauth token for '.$domain.' contains invalid characters: "'.$token.'"'); +} +$this->checkAndSetAuthentication($domain, $token, 'x-oauth-basic'); +} + +foreach ($gitlabOauth as $domain => $token) { +if ($domain !== 'gitlab.com' && !in_array($domain, $config->get('gitlab-domains'), true)) { +$this->debug($domain.' is not in the configured gitlab-domains, adding it implicitly as authentication is configured for this domain'); +$config->merge(['config' => ['gitlab-domains' => array_merge($config->get('gitlab-domains'), [$domain])]], 'implicit-due-to-auth'); +} + +$token = is_array($token) ? $token["token"] : $token; +$this->checkAndSetAuthentication($domain, $token, 'oauth2'); +} + +foreach ($gitlabToken as $domain => $token) { +if ($domain !== 'gitlab.com' && !in_array($domain, $config->get('gitlab-domains'), true)) { +$this->debug($domain.' is not in the configured gitlab-domains, adding it implicitly as authentication is configured for this domain'); +$config->merge(['config' => ['gitlab-domains' => array_merge($config->get('gitlab-domains'), [$domain])]], 'implicit-due-to-auth'); +} + +$username = is_array($token) ? $token["username"] : $token; +$password = is_array($token) ? $token["token"] : 'private-token'; +$this->checkAndSetAuthentication($domain, $username, $password); +} + + +foreach ($httpBasic as $domain => $cred) { +$this->checkAndSetAuthentication($domain, $cred['username'], $cred['password']); +} + +foreach ($bearerToken as $domain => $token) { +$this->checkAndSetAuthentication($domain, $token, 'bearer'); +} + + +ProcessExecutor::setTimeout($config->get('process-timeout')); +} + +public function emergency($message, array $context = []): void +{ +$this->log(LogLevel::EMERGENCY, $message, $context); +} + +public function alert($message, array $context = []): void +{ +$this->log(LogLevel::ALERT, $message, $context); +} + +public function critical($message, array $context = []): void +{ +$this->log(LogLevel::CRITICAL, $message, $context); +} + +public function error($message, array $context = []): void +{ +$this->log(LogLevel::ERROR, $message, $context); +} + +public function warning($message, array $context = []): void +{ +$this->log(LogLevel::WARNING, $message, $context); +} + +public function notice($message, array $context = []): void +{ +$this->log(LogLevel::NOTICE, $message, $context); +} + +public function info($message, array $context = []): void +{ +$this->log(LogLevel::INFO, $message, $context); +} + +public function debug($message, array $context = []): void +{ +$this->log(LogLevel::DEBUG, $message, $context); +} + +public function log($level, $message, array $context = []): void +{ +$message = (string) $message; + +if (in_array($level, [LogLevel::EMERGENCY, LogLevel::ALERT, LogLevel::CRITICAL, LogLevel::ERROR])) { +$this->writeError(''.$message.''); +} elseif ($level === LogLevel::WARNING) { +$this->writeError(''.$message.''); +} elseif ($level === LogLevel::NOTICE) { +$this->writeError(''.$message.'', true, self::VERBOSE); +} elseif ($level === LogLevel::INFO) { +$this->writeError(''.$message.'', true, self::VERY_VERBOSE); +} else { +$this->writeError($message, true, self::DEBUG); +} +} +} diff --git a/composer/src/Composer/IO/BufferIO.php b/composer/src/Composer/IO/BufferIO.php new file mode 100644 index 000000000..b845e7825 --- /dev/null +++ b/composer/src/Composer/IO/BufferIO.php @@ -0,0 +1,102 @@ +setInteractive(false); + +$output = new StreamOutput(fopen('php://memory', 'rw'), $verbosity, $formatter ? $formatter->isDecorated() : false, $formatter); + +parent::__construct($input, $output, new HelperSet([ +new QuestionHelper(), +])); +} + + + + +public function getOutput(): string +{ +fseek($this->output->getStream(), 0); + +$output = stream_get_contents($this->output->getStream()); + +$output = Preg::replaceCallback("{(?<=^|\n|\x08)(.+?)(\x08+)}", static function ($matches): string { +assert(is_string($matches[1])); +assert(is_string($matches[2])); +$pre = strip_tags($matches[1]); + +if (strlen($pre) === strlen($matches[2])) { +return ''; +} + + +return rtrim($matches[1])."\n"; +}, $output); + +return $output; +} + + + + + + +public function setUserInputs(array $inputs): void +{ +if (!$this->input instanceof StreamableInputInterface) { +throw new \RuntimeException('Setting the user inputs requires at least the version 3.2 of the symfony/console component.'); +} + +$this->input->setStream($this->createStream($inputs)); +$this->input->setInteractive(true); +} + + + + + + +private function createStream(array $inputs) +{ +$stream = fopen('php://memory', 'r+'); + +foreach ($inputs as $input) { +fwrite($stream, $input.PHP_EOL); +} + +rewind($stream); + +return $stream; +} +} diff --git a/composer/src/Composer/IO/ConsoleIO.php b/composer/src/Composer/IO/ConsoleIO.php new file mode 100644 index 000000000..f290c8133 --- /dev/null +++ b/composer/src/Composer/IO/ConsoleIO.php @@ -0,0 +1,345 @@ +input = $input; +$this->output = $output; +$this->helperSet = $helperSet; +$this->verbosityMap = [ +self::QUIET => OutputInterface::VERBOSITY_QUIET, +self::NORMAL => OutputInterface::VERBOSITY_NORMAL, +self::VERBOSE => OutputInterface::VERBOSITY_VERBOSE, +self::VERY_VERBOSE => OutputInterface::VERBOSITY_VERY_VERBOSE, +self::DEBUG => OutputInterface::VERBOSITY_DEBUG, +]; +} + + + + +public function enableDebugging(float $startTime) +{ +$this->startTime = $startTime; +} + + + + +public function isInteractive() +{ +return $this->input->isInteractive(); +} + + + + +public function isDecorated() +{ +return $this->output->isDecorated(); +} + + + + +public function isVerbose() +{ +return $this->output->isVerbose(); +} + + + + +public function isVeryVerbose() +{ +return $this->output->isVeryVerbose(); +} + + + + +public function isDebug() +{ +return $this->output->isDebug(); +} + + + + +public function write($messages, bool $newline = true, int $verbosity = self::NORMAL) +{ +$this->doWrite($messages, $newline, false, $verbosity); +} + + + + +public function writeError($messages, bool $newline = true, int $verbosity = self::NORMAL) +{ +$this->doWrite($messages, $newline, true, $verbosity); +} + + + + +public function writeRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) +{ +$this->doWrite($messages, $newline, false, $verbosity, true); +} + + + + +public function writeErrorRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) +{ +$this->doWrite($messages, $newline, true, $verbosity, true); +} + + + + +private function doWrite($messages, bool $newline, bool $stderr, int $verbosity, bool $raw = false): void +{ +$sfVerbosity = $this->verbosityMap[$verbosity]; +if ($sfVerbosity > $this->output->getVerbosity()) { +return; +} + +if ($raw) { +$sfVerbosity |= OutputInterface::OUTPUT_RAW; +} + +if (null !== $this->startTime) { +$memoryUsage = memory_get_usage() / 1024 / 1024; +$timeSpent = microtime(true) - $this->startTime; +$messages = array_map(static function ($message) use ($memoryUsage, $timeSpent): string { +return sprintf('[%.1fMiB/%.2fs] %s', $memoryUsage, $timeSpent, $message); +}, (array) $messages); +} + +if (true === $stderr && $this->output instanceof ConsoleOutputInterface) { +$this->output->getErrorOutput()->write($messages, $newline, $sfVerbosity); +$this->lastMessageErr = implode($newline ? "\n" : '', (array) $messages); + +return; +} + +$this->output->write($messages, $newline, $sfVerbosity); +$this->lastMessage = implode($newline ? "\n" : '', (array) $messages); +} + + + + +public function overwrite($messages, bool $newline = true, ?int $size = null, int $verbosity = self::NORMAL) +{ +$this->doOverwrite($messages, $newline, $size, false, $verbosity); +} + + + + +public function overwriteError($messages, bool $newline = true, ?int $size = null, int $verbosity = self::NORMAL) +{ +$this->doOverwrite($messages, $newline, $size, true, $verbosity); +} + + + + +private function doOverwrite($messages, bool $newline, ?int $size, bool $stderr, int $verbosity): void +{ + +$messages = implode($newline ? "\n" : '', (array) $messages); + + +if (!isset($size)) { + +$size = strlen(strip_tags($stderr ? $this->lastMessageErr : $this->lastMessage)); +} + +$this->doWrite(str_repeat("\x08", $size), false, $stderr, $verbosity); + + +$this->doWrite($messages, false, $stderr, $verbosity); + + + + +$fill = $size - strlen(strip_tags($messages)); +if ($fill > 0) { + +$this->doWrite(str_repeat(' ', $fill), false, $stderr, $verbosity); + +$this->doWrite(str_repeat("\x08", $fill), false, $stderr, $verbosity); +} + +if ($newline) { +$this->doWrite('', true, $stderr, $verbosity); +} + +if ($stderr) { +$this->lastMessageErr = $messages; +} else { +$this->lastMessage = $messages; +} +} + + + + +public function getProgressBar(int $max = 0) +{ +return new ProgressBar($this->getErrorOutput(), $max); +} + + + + +public function ask($question, $default = null) +{ + +$helper = $this->helperSet->get('question'); +$question = new Question($question, $default); + +return $helper->ask($this->input, $this->getErrorOutput(), $question); +} + + + + +public function askConfirmation($question, $default = true) +{ + +$helper = $this->helperSet->get('question'); +$question = new StrictConfirmationQuestion($question, $default); + +return $helper->ask($this->input, $this->getErrorOutput(), $question); +} + + + + +public function askAndValidate($question, $validator, $attempts = null, $default = null) +{ + +$helper = $this->helperSet->get('question'); +$question = new Question($question, $default); +$question->setValidator($validator); +$question->setMaxAttempts($attempts); + +return $helper->ask($this->input, $this->getErrorOutput(), $question); +} + + + + +public function askAndHideAnswer($question) +{ + +$helper = $this->helperSet->get('question'); +$question = new Question($question); +$question->setHidden(true); + +return $helper->ask($this->input, $this->getErrorOutput(), $question); +} + + + + +public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) +{ + +$helper = $this->helperSet->get('question'); +$question = new ChoiceQuestion($question, $choices, $default); +$question->setMaxAttempts($attempts ?: null); +$question->setErrorMessage($errorMessage); +$question->setMultiselect($multiselect); + +$result = $helper->ask($this->input, $this->getErrorOutput(), $question); + +$isAssoc = (bool) \count(array_filter(array_keys($choices), 'is_string')); +if ($isAssoc) { +return $result; +} + +if (!is_array($result)) { +return (string) array_search($result, $choices, true); +} + +$results = []; +foreach ($choices as $index => $choice) { +if (in_array($choice, $result, true)) { +$results[] = (string) $index; +} +} + +return $results; +} + +public function getTable(): Table +{ +return new Table($this->output); +} + +private function getErrorOutput(): OutputInterface +{ +if ($this->output instanceof ConsoleOutputInterface) { +return $this->output->getErrorOutput(); +} + +return $this->output; +} +} diff --git a/composer/src/Composer/IO/IOInterface.php b/composer/src/Composer/IO/IOInterface.php new file mode 100644 index 000000000..94bbcf359 --- /dev/null +++ b/composer/src/Composer/IO/IOInterface.php @@ -0,0 +1,242 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } +} diff --git a/composer/src/Composer/Installer.php b/composer/src/Composer/Installer.php new file mode 100644 index 000000000..c317fcdda --- /dev/null +++ b/composer/src/Composer/Installer.php @@ -0,0 +1,1461 @@ +io = $io; +$this->config = $config; +$this->package = $package; +$this->downloadManager = $downloadManager; +$this->repositoryManager = $repositoryManager; +$this->locker = $locker; +$this->installationManager = $installationManager; +$this->eventDispatcher = $eventDispatcher; +$this->autoloadGenerator = $autoloadGenerator; +$this->suggestedPackagesReporter = new SuggestedPackagesReporter($this->io); +$this->platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); + +$this->writeLock = $config->get('lock'); +} + + + + + + + + +public function run(): int +{ + + + + +gc_collect_cycles(); +gc_disable(); + +if ($this->updateAllowList && $this->updateMirrors) { +throw new \RuntimeException("The installer options updateMirrors and updateAllowList are mutually exclusive."); +} + +$isFreshInstall = $this->repositoryManager->getLocalRepository()->isFresh(); + + +if (!$this->update && !$this->locker->isLocked()) { +$this->io->writeError('No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.'); +$this->update = true; +} + +if ($this->dryRun) { +$this->verbose = true; +$this->runScripts = false; +$this->executeOperations = false; +$this->writeLock = false; +$this->dumpAutoloader = false; +$this->mockLocalRepositories($this->repositoryManager); +} + +if ($this->downloadOnly) { +$this->dumpAutoloader = false; +} + +if ($this->update && !$this->install) { +$this->dumpAutoloader = false; +} + +if ($this->runScripts) { +Platform::putEnv('COMPOSER_DEV_MODE', $this->devMode ? '1' : '0'); + + + +$eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD; +$this->eventDispatcher->dispatchScript($eventName, $this->devMode); +} + +$this->downloadManager->setPreferSource($this->preferSource); +$this->downloadManager->setPreferDist($this->preferDist); + +$localRepo = $this->repositoryManager->getLocalRepository(); + +try { +if ($this->update) { +$res = $this->doUpdate($localRepo, $this->install); +} else { +$res = $this->doInstall($localRepo); +} +if ($res !== 0) { +return $res; +} +} catch (\Exception $e) { +if ($this->executeOperations && $this->install && $this->config->get('notify-on-install')) { +$this->installationManager->notifyInstalls($this->io); +} + +throw $e; +} +if ($this->executeOperations && $this->install && $this->config->get('notify-on-install')) { +$this->installationManager->notifyInstalls($this->io); +} + +if ($this->update) { +$installedRepo = new InstalledRepository([ +$this->locker->getLockedRepository($this->devMode), +$this->createPlatformRepo(false), +new RootPackageRepository(clone $this->package), +]); +if ($isFreshInstall) { +$this->suggestedPackagesReporter->addSuggestionsFromPackage($this->package); +} +$this->suggestedPackagesReporter->outputMinimalistic($installedRepo); +} + + +$lockedRepository = $this->locker->getLockedRepository(true); +foreach ($lockedRepository->getPackages() as $package) { +if (!$package instanceof CompletePackage || !$package->isAbandoned()) { +continue; +} + +$replacement = is_string($package->getReplacementPackage()) +? 'Use ' . $package->getReplacementPackage() . ' instead' +: 'No replacement was suggested'; + +$this->io->writeError( +sprintf( +"Package %s is abandoned, you should avoid using it. %s.", +$package->getPrettyName(), +$replacement +) +); +} + +if ($this->dumpAutoloader) { + +if ($this->optimizeAutoloader) { +$this->io->writeError('Generating optimized autoload files'); +} else { +$this->io->writeError('Generating autoload files'); +} + +$this->autoloadGenerator->setClassMapAuthoritative($this->classMapAuthoritative); +$this->autoloadGenerator->setApcu($this->apcuAutoloader, $this->apcuAutoloaderPrefix); +$this->autoloadGenerator->setRunScripts($this->runScripts); +$this->autoloadGenerator->setPlatformRequirementFilter($this->platformRequirementFilter); +$this->autoloadGenerator->dump($this->config, $localRepo, $this->package, $this->installationManager, 'composer', $this->optimizeAutoloader); +} + +if ($this->install && $this->executeOperations) { + +foreach ($localRepo->getPackages() as $package) { +$this->installationManager->ensureBinariesPresence($package); +} +} + +$fundingCount = 0; +foreach ($localRepo->getPackages() as $package) { +if ($package instanceof CompletePackageInterface && !$package instanceof AliasPackage && $package->getFunding()) { +$fundingCount++; +} +} +if ($fundingCount > 0) { +$this->io->writeError([ +sprintf( +"%d package%s you are using %s looking for funding.", +$fundingCount, +1 === $fundingCount ? '' : 's', +1 === $fundingCount ? 'is' : 'are' +), +'Use the `composer fund` command to find out more!', +]); +} + +if ($this->runScripts) { + +$eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD; +$this->eventDispatcher->dispatchScript($eventName, $this->devMode); +} + + +if (!defined('HHVM_VERSION')) { +gc_enable(); +} + +if ($this->audit) { +if ($this->update && !$this->install) { +$packages = $lockedRepository->getCanonicalPackages(); +$target = 'locked'; +} else { +$packages = $localRepo->getCanonicalPackages(); +$target = 'installed'; +} +if (count($packages) > 0) { +try { +$auditor = new Auditor(); +$repoSet = new RepositorySet(); +foreach ($this->repositoryManager->getRepositories() as $repo) { +$repoSet->addRepository($repo); +} +$auditor->audit($this->io, $repoSet, $packages, $this->auditFormat); +} catch (TransportException $e) { +$this->io->error('Failed to audit '.$target.' packages.'); +if ($this->io->isVerbose()) { +$this->io->error('['.get_class($e).'] '.$e->getMessage()); +} +} +} else { +$this->io->writeError('No '.$target.' packages - skipping audit.'); +} +} + +return 0; +} + + + + +protected function doUpdate(InstalledRepositoryInterface $localRepo, bool $doInstall): int +{ +$platformRepo = $this->createPlatformRepo(true); +$aliases = $this->getRootAliases(true); + +$lockedRepository = null; + +try { +if ($this->locker->isLocked()) { +$lockedRepository = $this->locker->getLockedRepository(true); +} +} catch (\Seld\JsonLint\ParsingException $e) { +if ($this->updateAllowList || $this->updateMirrors) { + +throw $e; +} + + +} + +if (($this->updateAllowList || $this->updateMirrors) && !$lockedRepository) { +$this->io->writeError('Cannot update ' . ($this->updateMirrors ? 'lock file information' : 'only a partial set of packages') . ' without a lock file present. Run `composer update` to generate a lock file.', true, IOInterface::QUIET); + +return self::ERROR_NO_LOCK_FILE_FOR_PARTIAL_UPDATE; +} + +$this->io->writeError('Loading composer repositories with package information'); + + +$policy = $this->createPolicy(true); +$repositorySet = $this->createRepositorySet(true, $platformRepo, $aliases); +$repositories = $this->repositoryManager->getRepositories(); +foreach ($repositories as $repository) { +$repositorySet->addRepository($repository); +} +if ($lockedRepository) { +$repositorySet->addRepository($lockedRepository); +} + +$request = $this->createRequest($this->fixedRootPackage, $platformRepo, $lockedRepository); +$this->requirePackagesForUpdate($request, $lockedRepository, true); + + +if ($this->updateAllowList) { +$request->setUpdateAllowList($this->updateAllowList, $this->updateAllowTransitiveDependencies); +} + +$pool = $repositorySet->createPool($request, $this->io, $this->eventDispatcher, $this->createPoolOptimizer($policy)); + +$this->io->writeError('Updating dependencies'); + + +$solver = new Solver($policy, $pool, $this->io); +try { +$lockTransaction = $solver->solve($request, $this->platformRequirementFilter); +$ruleSetSize = $solver->getRuleSetSize(); +$solver = null; +} catch (SolverProblemsException $e) { +$err = 'Your requirements could not be resolved to an installable set of packages.'; +$prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose()); + +$this->io->writeError(''. $err .'', true, IOInterface::QUIET); +$this->io->writeError($prettyProblem); +if (!$this->devMode) { +$this->io->writeError('Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.', true, IOInterface::QUIET); +} + +$ghe = new GithubActionError($this->io); +$ghe->emit($err."\n".$prettyProblem); + +return max(self::ERROR_GENERIC_FAILURE, $e->getCode()); +} + +$this->io->writeError("Analyzed ".count($pool)." packages to resolve dependencies", true, IOInterface::VERBOSE); +$this->io->writeError("Analyzed ".$ruleSetSize." rules to resolve dependencies", true, IOInterface::VERBOSE); + +$pool = null; + +if (!$lockTransaction->getOperations()) { +$this->io->writeError('Nothing to modify in lock file'); +} + +$exitCode = $this->extractDevPackages($lockTransaction, $platformRepo, $aliases, $policy, $lockedRepository); +if ($exitCode !== 0) { +return $exitCode; +} + + +if (method_exists('Composer\Semver\CompilingMatcher', 'clear')) { +\Composer\Semver\CompilingMatcher::clear(); +} + + +$platformReqs = $this->extractPlatformRequirements($this->package->getRequires()); +$platformDevReqs = $this->extractPlatformRequirements($this->package->getDevRequires()); + +$installsUpdates = $uninstalls = []; +if ($lockTransaction->getOperations()) { +$installNames = $updateNames = $uninstallNames = []; +foreach ($lockTransaction->getOperations() as $operation) { +if ($operation instanceof InstallOperation) { +$installsUpdates[] = $operation; +$installNames[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); +} elseif ($operation instanceof UpdateOperation) { + + +if ($this->updateMirrors +&& $operation->getInitialPackage()->getName() === $operation->getTargetPackage()->getName() +&& $operation->getInitialPackage()->getVersion() === $operation->getTargetPackage()->getVersion() +) { +continue; +} + +$installsUpdates[] = $operation; +$updateNames[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); +} elseif ($operation instanceof UninstallOperation) { +$uninstalls[] = $operation; +$uninstallNames[] = $operation->getPackage()->getPrettyName(); +} +} + +if ($this->config->get('lock')) { +$this->io->writeError(sprintf( +"Lock file operations: %d install%s, %d update%s, %d removal%s", +count($installNames), +1 === count($installNames) ? '' : 's', +count($updateNames), +1 === count($updateNames) ? '' : 's', +count($uninstalls), +1 === count($uninstalls) ? '' : 's' +)); +if ($installNames) { +$this->io->writeError("Installs: ".implode(', ', $installNames), true, IOInterface::VERBOSE); +} +if ($updateNames) { +$this->io->writeError("Updates: ".implode(', ', $updateNames), true, IOInterface::VERBOSE); +} +if ($uninstalls) { +$this->io->writeError("Removals: ".implode(', ', $uninstallNames), true, IOInterface::VERBOSE); +} +} +} + +$sortByName = static function ($a, $b): int { +if ($a instanceof UpdateOperation) { +$a = $a->getTargetPackage()->getName(); +} else { +$a = $a->getPackage()->getName(); +} +if ($b instanceof UpdateOperation) { +$b = $b->getTargetPackage()->getName(); +} else { +$b = $b->getPackage()->getName(); +} + +return strcmp($a, $b); +}; +usort($uninstalls, $sortByName); +usort($installsUpdates, $sortByName); + +foreach (array_merge($uninstalls, $installsUpdates) as $operation) { + +if ($operation instanceof InstallOperation) { +$this->suggestedPackagesReporter->addSuggestionsFromPackage($operation->getPackage()); +} + + +if ($this->config->get('lock') && (false === strpos($operation->getOperationType(), 'Alias') || $this->io->isDebug())) { +$this->io->writeError(' - ' . $operation->show(true)); +} +} + +$updatedLock = $this->locker->setLockData( +$lockTransaction->getNewLockPackages(false, $this->updateMirrors), +$lockTransaction->getNewLockPackages(true, $this->updateMirrors), +$platformReqs, +$platformDevReqs, +$lockTransaction->getAliases($aliases), +$this->package->getMinimumStability(), +$this->package->getStabilityFlags(), +$this->preferStable || $this->package->getPreferStable(), +$this->preferLowest, +$this->config->get('platform') ?: [], +$this->writeLock && $this->executeOperations +); +if ($updatedLock && $this->writeLock && $this->executeOperations) { +$this->io->writeError('Writing lock file'); +} + + +if ($this->executeOperations && count($lockTransaction->getOperations()) > 0) { +$vendorDir = $this->config->get('vendor-dir'); +if (is_dir($vendorDir)) { + + +@touch($vendorDir); +} +} + +if ($doInstall) { + +return $this->doInstall($localRepo, true); +} + +return 0; +} + + + + + + + + + + +protected function extractDevPackages(LockTransaction $lockTransaction, PlatformRepository $platformRepo, array $aliases, PolicyInterface $policy, ?LockArrayRepository $lockedRepository = null): int +{ +if (!$this->package->getDevRequires()) { +return 0; +} + +$resultRepo = new ArrayRepository([]); +$loader = new ArrayLoader(null, true); +$dumper = new ArrayDumper(); +foreach ($lockTransaction->getNewLockPackages(false) as $pkg) { +$resultRepo->addPackage($loader->load($dumper->dump($pkg))); +} + +$repositorySet = $this->createRepositorySet(true, $platformRepo, $aliases); +$repositorySet->addRepository($resultRepo); + +$request = $this->createRequest($this->fixedRootPackage, $platformRepo); +$this->requirePackagesForUpdate($request, $lockedRepository, false); + +$pool = $repositorySet->createPoolWithAllPackages(); + +$solver = new Solver($policy, $pool, $this->io); +try { +$nonDevLockTransaction = $solver->solve($request, $this->platformRequirementFilter); +$solver = null; +} catch (SolverProblemsException $e) { +$err = 'Unable to find a compatible set of packages based on your non-dev requirements alone.'; +$prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose(), true); + +$this->io->writeError(''. $err .'', true, IOInterface::QUIET); +$this->io->writeError('Your requirements can be resolved successfully when require-dev packages are present.'); +$this->io->writeError('You may need to move packages from require-dev or some of their dependencies to require.'); +$this->io->writeError($prettyProblem); + +$ghe = new GithubActionError($this->io); +$ghe->emit($err."\n".$prettyProblem); + +return $e->getCode(); +} + +$lockTransaction->setNonDevPackages($nonDevLockTransaction); + +return 0; +} + + + + + + +protected function doInstall(InstalledRepositoryInterface $localRepo, bool $alreadySolved = false): int +{ +if ($this->config->get('lock')) { +$this->io->writeError('Installing dependencies from lock file'.($this->devMode ? ' (including require-dev)' : '').''); +} + +$lockedRepository = $this->locker->getLockedRepository($this->devMode); + + + +if (!$alreadySolved) { +$this->io->writeError('Verifying lock file contents can be installed on current platform.'); + +$platformRepo = $this->createPlatformRepo(false); + +$policy = $this->createPolicy(false); + +$repositorySet = $this->createRepositorySet(false, $platformRepo, [], $lockedRepository); +$repositorySet->addRepository($lockedRepository); + + +$request = $this->createRequest($this->fixedRootPackage, $platformRepo, $lockedRepository); + +if (!$this->locker->isFresh()) { +$this->io->writeError('Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update `.', true, IOInterface::QUIET); +} + +$missingRequirementInfo = $this->locker->getMissingRequirementInfo($this->package, $this->devMode); +if ($missingRequirementInfo !== []) { +$this->io->writeError($missingRequirementInfo); + +return self::ERROR_LOCK_FILE_INVALID; +} + +foreach ($lockedRepository->getPackages() as $package) { +$request->fixLockedPackage($package); +} + +foreach ($this->locker->getPlatformRequirements($this->devMode) as $link) { +$request->requireName($link->getTarget(), $link->getConstraint()); +} + +$pool = $repositorySet->createPool($request, $this->io, $this->eventDispatcher); + + +$solver = new Solver($policy, $pool, $this->io); +try { +$lockTransaction = $solver->solve($request, $this->platformRequirementFilter); +$solver = null; + + +if (0 !== count($lockTransaction->getOperations())) { +$this->io->writeError('Your lock file cannot be installed on this system without changes. Please run composer update.', true, IOInterface::QUIET); + +return self::ERROR_LOCK_FILE_INVALID; +} +} catch (SolverProblemsException $e) { +$err = 'Your lock file does not contain a compatible set of packages. Please run composer update.'; +$prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose()); + +$this->io->writeError(''. $err .'', true, IOInterface::QUIET); +$this->io->writeError($prettyProblem); + +$ghe = new GithubActionError($this->io); +$ghe->emit($err."\n".$prettyProblem); + +return max(self::ERROR_GENERIC_FAILURE, $e->getCode()); +} +} + + +$localRepoTransaction = new LocalRepoTransaction($lockedRepository, $localRepo); +$this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_OPERATIONS_EXEC, $this->devMode, $this->executeOperations, $localRepoTransaction); + +$installs = $updates = $uninstalls = []; +foreach ($localRepoTransaction->getOperations() as $operation) { +if ($operation instanceof InstallOperation) { +$installs[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); +} elseif ($operation instanceof UpdateOperation) { +$updates[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); +} elseif ($operation instanceof UninstallOperation) { +$uninstalls[] = $operation->getPackage()->getPrettyName(); +} +} + +if ($installs === [] && $updates === [] && $uninstalls === []) { +$this->io->writeError('Nothing to install, update or remove'); +} else { +$this->io->writeError(sprintf( +"Package operations: %d install%s, %d update%s, %d removal%s", +count($installs), +1 === count($installs) ? '' : 's', +count($updates), +1 === count($updates) ? '' : 's', +count($uninstalls), +1 === count($uninstalls) ? '' : 's' +)); +if ($installs) { +$this->io->writeError("Installs: ".implode(', ', $installs), true, IOInterface::VERBOSE); +} +if ($updates) { +$this->io->writeError("Updates: ".implode(', ', $updates), true, IOInterface::VERBOSE); +} +if ($uninstalls) { +$this->io->writeError("Removals: ".implode(', ', $uninstalls), true, IOInterface::VERBOSE); +} +} + +if ($this->executeOperations) { +$localRepo->setDevPackageNames($this->locker->getDevPackageNames()); +$this->installationManager->execute($localRepo, $localRepoTransaction->getOperations(), $this->devMode, $this->runScripts, $this->downloadOnly); +} else { +foreach ($localRepoTransaction->getOperations() as $operation) { + +if (false === strpos($operation->getOperationType(), 'Alias') || $this->io->isDebug()) { +$this->io->writeError(' - ' . $operation->show(false)); +} +} +} + +return 0; +} + +protected function createPlatformRepo(bool $forUpdate): PlatformRepository +{ +if ($forUpdate) { +$platformOverrides = $this->config->get('platform') ?: []; +} else { +$platformOverrides = $this->locker->getPlatformOverrides(); +} + +return new PlatformRepository([], $platformOverrides); +} + + + + + + +private function createRepositorySet(bool $forUpdate, PlatformRepository $platformRepo, array $rootAliases = [], ?RepositoryInterface $lockedRepository = null): RepositorySet +{ +if ($forUpdate) { +$minimumStability = $this->package->getMinimumStability(); +$stabilityFlags = $this->package->getStabilityFlags(); + +$requires = array_merge($this->package->getRequires(), $this->package->getDevRequires()); +} else { +$minimumStability = $this->locker->getMinimumStability(); +$stabilityFlags = $this->locker->getStabilityFlags(); + +$requires = []; +foreach ($lockedRepository->getPackages() as $package) { +$constraint = new Constraint('=', $package->getVersion()); +$constraint->setPrettyString($package->getPrettyVersion()); +$requires[$package->getName()] = $constraint; +} +} + +$rootRequires = []; +foreach ($requires as $req => $constraint) { +if ($constraint instanceof Link) { +$constraint = $constraint->getConstraint(); +} + +if ($this->platformRequirementFilter->isIgnored($req)) { +continue; +} elseif ($this->platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { +$constraint = $this->platformRequirementFilter->filterConstraint($req, $constraint); +} +$rootRequires[$req] = $constraint; +} + +$this->fixedRootPackage = clone $this->package; +$this->fixedRootPackage->setRequires([]); +$this->fixedRootPackage->setDevRequires([]); + +$stabilityFlags[$this->package->getName()] = BasePackage::$stabilities[VersionParser::parseStability($this->package->getVersion())]; + +$repositorySet = new RepositorySet($minimumStability, $stabilityFlags, $rootAliases, $this->package->getReferences(), $rootRequires, $this->temporaryConstraints); +$repositorySet->addRepository(new RootPackageRepository($this->fixedRootPackage)); +$repositorySet->addRepository($platformRepo); +if ($this->additionalFixedRepository) { + + +$additionalFixedRepositories = $this->additionalFixedRepository; +if ($additionalFixedRepositories instanceof CompositeRepository) { +$additionalFixedRepositories = $additionalFixedRepositories->getRepositories(); +} else { +$additionalFixedRepositories = [$additionalFixedRepositories]; +} +foreach ($additionalFixedRepositories as $additionalFixedRepository) { +if ($additionalFixedRepository instanceof InstalledRepository || $additionalFixedRepository instanceof InstalledRepositoryInterface) { +$repositorySet->allowInstalledRepositories(); +break; +} +} + +$repositorySet->addRepository($this->additionalFixedRepository); +} + +return $repositorySet; +} + +private function createPolicy(bool $forUpdate): DefaultPolicy +{ +$preferStable = null; +$preferLowest = null; +if (!$forUpdate) { +$preferStable = $this->locker->getPreferStable(); +$preferLowest = $this->locker->getPreferLowest(); +} + + +if (null === $preferStable) { +$preferStable = $this->preferStable || $this->package->getPreferStable(); +} +if (null === $preferLowest) { +$preferLowest = $this->preferLowest; +} + +return new DefaultPolicy($preferStable, $preferLowest); +} + + + + +private function createRequest(RootPackageInterface $rootPackage, PlatformRepository $platformRepo, ?LockArrayRepository $lockedRepository = null): Request +{ +$request = new Request($lockedRepository); + +$request->fixPackage($rootPackage); +if ($rootPackage instanceof RootAliasPackage) { +$request->fixPackage($rootPackage->getAliasOf()); +} + +$fixedPackages = $platformRepo->getPackages(); +if ($this->additionalFixedRepository) { +$fixedPackages = array_merge($fixedPackages, $this->additionalFixedRepository->getPackages()); +} + + + + +$provided = $rootPackage->getProvides(); +foreach ($fixedPackages as $package) { + +if ($package->getRepository() !== $platformRepo +|| !isset($provided[$package->getName()]) +|| !$provided[$package->getName()]->getConstraint()->matches(new Constraint('=', $package->getVersion())) +) { +$request->fixPackage($package); +} +} + +return $request; +} + +private function requirePackagesForUpdate(Request $request, ?LockArrayRepository $lockedRepository = null, bool $includeDevRequires = true): void +{ + +if ($this->updateMirrors) { +$excludedPackages = []; +if (!$includeDevRequires) { +$excludedPackages = array_flip($this->locker->getDevPackageNames()); +} + +foreach ($lockedRepository->getPackages() as $lockedPackage) { + + +if (!$lockedPackage instanceof AliasPackage && !isset($excludedPackages[$lockedPackage->getName()])) { +$request->requireName($lockedPackage->getName(), new Constraint('==', $lockedPackage->getVersion())); +} +} +} else { +$links = $this->package->getRequires(); +if ($includeDevRequires) { +$links = array_merge($links, $this->package->getDevRequires()); +} +foreach ($links as $link) { +$request->requireName($link->getTarget(), $link->getConstraint()); +} +} +} + + + + + + +private function getRootAliases(bool $forUpdate): array +{ +if ($forUpdate) { +$aliases = $this->package->getAliases(); +} else { +$aliases = $this->locker->getAliases(); +} + +return $aliases; +} + + + + + + +private function extractPlatformRequirements(array $links): array +{ +$platformReqs = []; +foreach ($links as $link) { +if (PlatformRepository::isPlatformPackage($link->getTarget())) { +$platformReqs[$link->getTarget()] = $link->getPrettyConstraint(); +} +} + +return $platformReqs; +} + + + + + + +private function mockLocalRepositories(RepositoryManager $rm): void +{ +$packages = []; +foreach ($rm->getLocalRepository()->getPackages() as $package) { +$packages[(string) $package] = clone $package; +} +foreach ($packages as $key => $package) { +if ($package instanceof AliasPackage) { +$alias = (string) $package->getAliasOf(); +$className = get_class($package); +$packages[$key] = new $className($packages[$alias], $package->getVersion(), $package->getPrettyVersion()); +} +} +$rm->setLocalRepository( +new InstalledArrayRepository($packages) +); +} + +private function createPoolOptimizer(PolicyInterface $policy): ?PoolOptimizer +{ + + + +if ('0' === Platform::getEnv('COMPOSER_POOL_OPTIMIZER')) { +$this->io->write('Pool Optimizer was disabled for debugging purposes.', true, IOInterface::DEBUG); + +return null; +} + +return new PoolOptimizer($policy); +} + + + + + + +public static function create(IOInterface $io, Composer $composer): self +{ +return new static( +$io, +$composer->getConfig(), +$composer->getPackage(), +$composer->getDownloadManager(), +$composer->getRepositoryManager(), +$composer->getLocker(), +$composer->getInstallationManager(), +$composer->getEventDispatcher(), +$composer->getAutoloadGenerator() +); +} + + + + +public function setAdditionalFixedRepository(RepositoryInterface $additionalFixedRepository): self +{ +$this->additionalFixedRepository = $additionalFixedRepository; + +return $this; +} + + + + + +public function setTemporaryConstraints(array $constraints): self +{ +$this->temporaryConstraints = $constraints; + +return $this; +} + + + + + + +public function setDryRun(bool $dryRun = true): self +{ +$this->dryRun = (bool) $dryRun; + +return $this; +} + + + + +public function isDryRun(): bool +{ +return $this->dryRun; +} + + + + + + +public function setDownloadOnly(bool $downloadOnly = true): self +{ +$this->downloadOnly = $downloadOnly; + +return $this; +} + + + + + + +public function setPreferSource(bool $preferSource = true): self +{ +$this->preferSource = (bool) $preferSource; + +return $this; +} + + + + + + +public function setPreferDist(bool $preferDist = true): self +{ +$this->preferDist = (bool) $preferDist; + +return $this; +} + + + + + + +public function setOptimizeAutoloader(bool $optimizeAutoloader): self +{ +$this->optimizeAutoloader = (bool) $optimizeAutoloader; +if (!$this->optimizeAutoloader) { + + +$this->setClassMapAuthoritative(false); +} + +return $this; +} + + + + + + + +public function setClassMapAuthoritative(bool $classMapAuthoritative): self +{ +$this->classMapAuthoritative = (bool) $classMapAuthoritative; +if ($this->classMapAuthoritative) { + +$this->setOptimizeAutoloader(true); +} + +return $this; +} + + + + + + +public function setApcuAutoloader(bool $apcuAutoloader, ?string $apcuAutoloaderPrefix = null): self +{ +$this->apcuAutoloader = $apcuAutoloader; +$this->apcuAutoloaderPrefix = $apcuAutoloaderPrefix; + +return $this; +} + + + + + + +public function setUpdate(bool $update): self +{ +$this->update = (bool) $update; + +return $this; +} + + + + + + +public function setInstall(bool $install): self +{ +$this->install = (bool) $install; + +return $this; +} + + + + + + +public function setDevMode(bool $devMode = true): self +{ +$this->devMode = (bool) $devMode; + +return $this; +} + + + + + + + + +public function setDumpAutoloader(bool $dumpAutoloader = true): self +{ +$this->dumpAutoloader = (bool) $dumpAutoloader; + +return $this; +} + + + + + + + + + +public function setRunScripts(bool $runScripts = true): self +{ +$this->runScripts = (bool) $runScripts; + +return $this; +} + + + + + + +public function setConfig(Config $config): self +{ +$this->config = $config; + +return $this; +} + + + + + + +public function setVerbose(bool $verbose = true): self +{ +$this->verbose = (bool) $verbose; + +return $this; +} + + + + +public function isVerbose(): bool +{ +return $this->verbose; +} + + + + + + + + + + + + + + +public function setIgnorePlatformRequirements($ignorePlatformReqs): self +{ +trigger_error('Installer::setIgnorePlatformRequirements is deprecated since Composer 2.2, use setPlatformRequirementFilter instead.', E_USER_DEPRECATED); + +return $this->setPlatformRequirementFilter(PlatformRequirementFilterFactory::fromBoolOrList($ignorePlatformReqs)); +} + + + + +public function setPlatformRequirementFilter(PlatformRequirementFilterInterface $platformRequirementFilter): self +{ +$this->platformRequirementFilter = $platformRequirementFilter; + +return $this; +} + + + + + + +public function setUpdateMirrors(bool $updateMirrors): self +{ +$this->updateMirrors = $updateMirrors; + +return $this; +} + + + + + + + + + +public function setUpdateAllowList(array $packages): self +{ +$this->updateAllowList = array_flip(array_map('strtolower', $packages)); + +return $this; +} + + + + + + + + + + +public function setUpdateAllowTransitiveDependencies(int $updateAllowTransitiveDependencies): self +{ +if (!in_array($updateAllowTransitiveDependencies, [Request::UPDATE_ONLY_LISTED, Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE, Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS], true)) { +throw new \RuntimeException("Invalid value for updateAllowTransitiveDependencies supplied"); +} + +$this->updateAllowTransitiveDependencies = $updateAllowTransitiveDependencies; + +return $this; +} + + + + + + +public function setPreferStable(bool $preferStable = true): self +{ +$this->preferStable = (bool) $preferStable; + +return $this; +} + + + + + + +public function setPreferLowest(bool $preferLowest = true): self +{ +$this->preferLowest = (bool) $preferLowest; + +return $this; +} + + + + + + + + +public function setWriteLock(bool $writeLock = true): self +{ +$this->writeLock = (bool) $writeLock; + +return $this; +} + + + + + + + + +public function setExecuteOperations(bool $executeOperations = true): self +{ +$this->executeOperations = (bool) $executeOperations; + +return $this; +} + + + + + + +public function setAudit(bool $audit): self +{ +$this->audit = $audit; + +return $this; +} + + + + + + + +public function setAuditFormat(string $auditFormat): self +{ +$this->auditFormat = $auditFormat; + +return $this; +} + + + + + + + + + + +public function disablePlugins(): self +{ +$this->installationManager->disablePlugins(); + +return $this; +} + + + + +public function setSuggestedPackagesReporter(SuggestedPackagesReporter $suggestedPackagesReporter): self +{ +$this->suggestedPackagesReporter = $suggestedPackagesReporter; + +return $this; +} +} diff --git a/composer/src/Composer/Installer/BinaryInstaller.php b/composer/src/Composer/Installer/BinaryInstaller.php new file mode 100644 index 000000000..3dcc74a42 --- /dev/null +++ b/composer/src/Composer/Installer/BinaryInstaller.php @@ -0,0 +1,409 @@ +binDir = $binDir; +$this->binCompat = $binCompat; +$this->io = $io; +$this->filesystem = $filesystem ?: new Filesystem(); +$this->vendorDir = $vendorDir; +} + +public function installBinaries(PackageInterface $package, string $installPath, bool $warnOnOverwrite = true): void +{ +$binaries = $this->getBinaries($package); +if (!$binaries) { +return; +} + +Platform::workaroundFilesystemIssues(); + +foreach ($binaries as $bin) { +$binPath = $installPath.'/'.$bin; +if (!file_exists($binPath)) { +$this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': file not found in package'); +continue; +} +if (is_dir($binPath)) { +$this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': found a directory at that path'); +continue; +} +if (!$this->filesystem->isAbsolutePath($binPath)) { + + + + +$binPath = realpath($binPath); +} +$this->initializeBinDir(); +$link = $this->binDir.'/'.basename($bin); +if (file_exists($link)) { +if (!is_link($link)) { +if ($warnOnOverwrite) { +$this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': name conflicts with an existing file'); +} +continue; +} +if (realpath($link) === realpath($binPath)) { + +$this->filesystem->unlink($link); +} +} + +$binCompat = $this->binCompat; +if ($binCompat === "auto" && (Platform::isWindows() || Platform::isWindowsSubsystemForLinux())) { +$binCompat = 'full'; +} + +if ($binCompat === "full") { +$this->installFullBinaries($binPath, $link, $bin, $package); +} else { +$this->installUnixyProxyBinaries($binPath, $link); +} +Silencer::call('chmod', $binPath, 0777 & ~umask()); +} +} + +public function removeBinaries(PackageInterface $package): void +{ +$this->initializeBinDir(); + +$binaries = $this->getBinaries($package); +if (!$binaries) { +return; +} +foreach ($binaries as $bin) { +$link = $this->binDir.'/'.basename($bin); +if (is_link($link) || file_exists($link)) { +$this->filesystem->unlink($link); +} +if (is_file($link.'.bat')) { +$this->filesystem->unlink($link.'.bat'); +} +} + + +if (is_dir($this->binDir) && $this->filesystem->isDirEmpty($this->binDir)) { +Silencer::call('rmdir', $this->binDir); +} +} + +public static function determineBinaryCaller(string $bin): string +{ +if ('.bat' === substr($bin, -4) || '.exe' === substr($bin, -4)) { +return 'call'; +} + +$handle = fopen($bin, 'r'); +$line = fgets($handle); +fclose($handle); +if (Preg::isMatchStrictGroups('{^#!/(?:usr/bin/env )?(?:[^/]+/)*(.+)$}m', (string) $line, $match)) { +return trim($match[1]); +} + +return 'php'; +} + + + + +protected function getBinaries(PackageInterface $package): array +{ +return $package->getBinaries(); +} + +protected function installFullBinaries(string $binPath, string $link, string $bin, PackageInterface $package): void +{ + +if ('.bat' !== substr($binPath, -4)) { +$this->installUnixyProxyBinaries($binPath, $link); +$link .= '.bat'; +if (file_exists($link)) { +$this->io->writeError(' Skipped installation of bin '.$bin.'.bat proxy for package '.$package->getName().': a .bat proxy was already installed'); +} +} +if (!file_exists($link)) { +file_put_contents($link, $this->generateWindowsProxyCode($binPath, $link)); +Silencer::call('chmod', $link, 0777 & ~umask()); +} +} + +protected function installUnixyProxyBinaries(string $binPath, string $link): void +{ +file_put_contents($link, $this->generateUnixyProxyCode($binPath, $link)); +Silencer::call('chmod', $link, 0777 & ~umask()); +} + +protected function initializeBinDir(): void +{ +$this->filesystem->ensureDirectoryExists($this->binDir); +$this->binDir = realpath($this->binDir); +} + +protected function generateWindowsProxyCode(string $bin, string $link): string +{ +$binPath = $this->filesystem->findShortestPath($link, $bin); +$caller = self::determineBinaryCaller($bin); + + + + +if ($caller === 'php') { +return "@ECHO OFF\r\n". +"setlocal DISABLEDELAYEDEXPANSION\r\n". +"SET BIN_TARGET=%~dp0/".trim(ProcessExecutor::escape(basename($link, '.bat')), '"\'')."\r\n". +"SET COMPOSER_RUNTIME_BIN_DIR=%~dp0\r\n". +"{$caller} \"%BIN_TARGET%\" %*\r\n"; +} + +return "@ECHO OFF\r\n". +"setlocal DISABLEDELAYEDEXPANSION\r\n". +"SET BIN_TARGET=%~dp0/".trim(ProcessExecutor::escape($binPath), '"\'')."\r\n". +"SET COMPOSER_RUNTIME_BIN_DIR=%~dp0\r\n". +"{$caller} \"%BIN_TARGET%\" %*\r\n"; +} + +protected function generateUnixyProxyCode(string $bin, string $link): string +{ +$binPath = $this->filesystem->findShortestPath($link, $bin); + +$binDir = ProcessExecutor::escape(dirname($binPath)); +$binFile = basename($binPath); + +$binContents = file_get_contents($bin); + + +if (Preg::isMatch('{^(#!.*\r?\n)?[\r\n\t ]*<\?php}', $binContents, $match)) { + +$proxyCode = $match[1] === null ? '#!/usr/bin/env php' : trim($match[1]); +$binPathExported = $this->filesystem->findShortestPathCode($link, $bin, false, true); +$streamProxyCode = $streamHint = ''; +$globalsCode = '$GLOBALS[\'_composer_bin_dir\'] = __DIR__;'."\n"; +$phpunitHack1 = $phpunitHack2 = ''; + +if ($this->vendorDir) { +$globalsCode .= '$GLOBALS[\'_composer_autoload_path\'] = ' . $this->filesystem->findShortestPathCode($link, $this->vendorDir . '/autoload.php', false, true).";\n"; +} + +if ($this->filesystem->normalizePath($bin) === $this->filesystem->normalizePath($this->vendorDir.'/phpunit/phpunit/phpunit')) { + +$globalsCode .= '$GLOBALS[\'__PHPUNIT_ISOLATION_EXCLUDE_LIST\'] = $GLOBALS[\'__PHPUNIT_ISOLATION_BLACKLIST\'] = array(realpath('.$binPathExported.'));'."\n"; + +$phpunitHack1 = "'phpvfscomposer://'."; +$phpunitHack2 = ' + $data = str_replace(\'__DIR__\', var_export(dirname($this->realpath), true), $data); + $data = str_replace(\'__FILE__\', var_export($this->realpath, true), $data);'; +} +if (trim((string) $match[0]) !== 'realpath = realpath(\$opened_path) ?: \$opened_path; + \$opened_path = $phpunitHack1\$this->realpath; + \$this->handle = fopen(\$this->realpath, \$mode); + \$this->position = 0; + + return (bool) \$this->handle; + } + + public function stream_read(\$count) + { + \$data = fread(\$this->handle, \$count); + + if (\$this->position === 0) { + \$data = preg_replace('{^#!.*\\r?\\n}', '', \$data); + }$phpunitHack2 + + \$this->position += strlen(\$data); + + return \$data; + } + + public function stream_cast(\$castAs) + { + return \$this->handle; + } + + public function stream_close() + { + fclose(\$this->handle); + } + + public function stream_lock(\$operation) + { + return \$operation ? flock(\$this->handle, \$operation) : true; + } + + public function stream_seek(\$offset, \$whence) + { + if (0 === fseek(\$this->handle, \$offset, \$whence)) { + \$this->position = ftell(\$this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return \$this->position; + } + + public function stream_eof() + { + return feof(\$this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option(\$option, \$arg1, \$arg2) + { + return true; + } + + public function url_stat(\$path, \$flags) + { + \$path = substr(\$path, 17); + if (file_exists(\$path)) { + return stat(\$path); + } + + return false; + } + } + } + + if ( + (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) + || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) + ) { + include("phpvfscomposer://" . $binPathExported); + exit(0); + } +} + +STREAMPROXY; +} + +return $proxyCode . "\n" . << /dev/null) +if [ -z "\$self" ]; then + self="\$selfArg" +fi + +dir=\$(cd "\${self%[/\\\\]*}" > /dev/null; cd $binDir && pwd) + +if [ -d /proc/cygdrive ]; then + case \$(which php) in + \$(readlink -n /proc/cygdrive)/*) + # We are in Cygwin using Windows php, so the path must be translated + dir=\$(cygpath -m "\$dir"); + ;; + esac +fi + +export COMPOSER_RUNTIME_BIN_DIR="\$(cd "\${self%[/\\\\]*}" > /dev/null; pwd)" + +# If bash is sourcing this file, we have to source the target as well +bashSource="\$BASH_SOURCE" +if [ -n "\$bashSource" ]; then + if [ "\$bashSource" != "\$0" ]; then + source "\${dir}/$binFile" "\$@" + return + fi +fi + +"\${dir}/$binFile" "\$@" + +PROXY; +} +} diff --git a/composer/src/Composer/Installer/BinaryPresenceInterface.php b/composer/src/Composer/Installer/BinaryPresenceInterface.php new file mode 100644 index 000000000..a5d0ecdcb --- /dev/null +++ b/composer/src/Composer/Installer/BinaryPresenceInterface.php @@ -0,0 +1,32 @@ +loop = $loop; +$this->io = $io; +$this->eventDispatcher = $eventDispatcher; +} + +public function reset(): void +{ +$this->notifiablePackages = []; +FileDownloader::$downloadMetadata = []; +} + + + + + + +public function addInstaller(InstallerInterface $installer): void +{ +array_unshift($this->installers, $installer); +$this->cache = []; +} + + + + + + +public function removeInstaller(InstallerInterface $installer): void +{ +if (false !== ($key = array_search($installer, $this->installers, true))) { +array_splice($this->installers, $key, 1); +$this->cache = []; +} +} + + + + + + + + +public function disablePlugins(): void +{ +foreach ($this->installers as $i => $installer) { +if (!$installer instanceof PluginInstaller) { +continue; +} + +unset($this->installers[$i]); +} +} + + + + + + + + +public function getInstaller(string $type): InstallerInterface +{ +$type = strtolower($type); + +if (isset($this->cache[$type])) { +return $this->cache[$type]; +} + +foreach ($this->installers as $installer) { +if ($installer->supports($type)) { +return $this->cache[$type] = $installer; +} +} + +throw new \InvalidArgumentException('Unknown installer type: '.$type); +} + + + + + + + +public function isPackageInstalled(InstalledRepositoryInterface $repo, PackageInterface $package): bool +{ +if ($package instanceof AliasPackage) { +return $repo->hasPackage($package) && $this->isPackageInstalled($repo, $package->getAliasOf()); +} + +return $this->getInstaller($package->getType())->isInstalled($repo, $package); +} + + + + + + + +public function ensureBinariesPresence(PackageInterface $package): void +{ +try { +$installer = $this->getInstaller($package->getType()); +} catch (\InvalidArgumentException $e) { + +return; +} + + +if ($installer instanceof BinaryPresenceInterface) { +$installer->ensureBinariesPresence($package); +} +} + + + + + + + + + + +public function execute(InstalledRepositoryInterface $repo, array $operations, bool $devMode = true, bool $runScripts = true, bool $downloadOnly = false): void +{ + +$cleanupPromises = []; + +$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) use (&$cleanupPromises) { +$this->io->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); +$this->runCleanup($cleanupPromises); +$handler->exitWithLastSignal(); +}); + +try { + + +$batches = []; +$batch = []; +foreach ($operations as $index => $operation) { +if ($operation instanceof UpdateOperation || $operation instanceof InstallOperation) { +$package = $operation instanceof UpdateOperation ? $operation->getTargetPackage() : $operation->getPackage(); +if ($package->getType() === 'composer-plugin' && ($extra = $package->getExtra()) && isset($extra['plugin-modifies-downloads']) && $extra['plugin-modifies-downloads'] === true) { +if ($batch) { +$batches[] = $batch; +} +$batches[] = [$index => $operation]; +$batch = []; + +continue; +} +} +$batch[$index] = $operation; +} + +if ($batch) { +$batches[] = $batch; +} + +foreach ($batches as $batch) { +$this->downloadAndExecuteBatch($repo, $batch, $cleanupPromises, $devMode, $runScripts, $downloadOnly, $operations); +} +} catch (\Exception $e) { +$this->runCleanup($cleanupPromises); + +throw $e; +} finally { +$signalHandler->unregister(); +} + +if ($downloadOnly) { +return; +} + + + + +$repo->write($devMode, $this); +} + + + + + + +private function downloadAndExecuteBatch(InstalledRepositoryInterface $repo, array $operations, array &$cleanupPromises, bool $devMode, bool $runScripts, bool $downloadOnly, array $allOperations): void +{ +$promises = []; + +foreach ($operations as $index => $operation) { +$opType = $operation->getOperationType(); + + +if (!in_array($opType, ['update', 'install', 'uninstall'])) { +continue; +} + +if ($opType === 'update') { + +$package = $operation->getTargetPackage(); +$initialPackage = $operation->getInitialPackage(); +} else { + +$package = $operation->getPackage(); +$initialPackage = null; +} +$installer = $this->getInstaller($package->getType()); + +$cleanupPromises[$index] = static function () use ($opType, $installer, $package, $initialPackage): ?PromiseInterface { + + +if (!$package->getInstallationSource()) { +return \React\Promise\resolve(null); +} + +return $installer->cleanup($opType, $package, $initialPackage); +}; + +if ($opType !== 'uninstall') { +$promise = $installer->download($package, $initialPackage); +if ($promise) { +$promises[] = $promise; +} +} +} + + +if (count($promises)) { +$this->waitOnPromises($promises); +} + +if ($downloadOnly) { +$this->runCleanup($cleanupPromises); +return; +} + + + +$batches = []; +$batch = []; +foreach ($operations as $index => $operation) { +if ($operation instanceof InstallOperation || $operation instanceof UpdateOperation) { +$package = $operation instanceof UpdateOperation ? $operation->getTargetPackage() : $operation->getPackage(); +if ($package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer') { +if ($batch) { +$batches[] = $batch; +} +$batches[] = [$index => $operation]; +$batch = []; + +continue; +} +} +$batch[$index] = $operation; +} + +if ($batch) { +$batches[] = $batch; +} + +foreach ($batches as $batch) { +$this->executeBatch($repo, $batch, $cleanupPromises, $devMode, $runScripts, $allOperations); +} +} + + + + + + +private function executeBatch(InstalledRepositoryInterface $repo, array $operations, array $cleanupPromises, bool $devMode, bool $runScripts, array $allOperations): void +{ +$promises = []; +$postExecCallbacks = []; + +foreach ($operations as $index => $operation) { +$opType = $operation->getOperationType(); + + +if (!in_array($opType, ['update', 'install', 'uninstall'])) { + +if ($this->io->isDebug()) { +$this->io->writeError(' - ' . $operation->show(false)); +} +$this->{$opType}($repo, $operation); + +continue; +} + +if ($opType === 'update') { + +$package = $operation->getTargetPackage(); +$initialPackage = $operation->getInitialPackage(); +} else { + +$package = $operation->getPackage(); +$initialPackage = null; +} + +$installer = $this->getInstaller($package->getType()); + +$eventName = [ +'install' => PackageEvents::PRE_PACKAGE_INSTALL, +'update' => PackageEvents::PRE_PACKAGE_UPDATE, +'uninstall' => PackageEvents::PRE_PACKAGE_UNINSTALL, +][$opType] ?? null; + +if (null !== $eventName && $runScripts && $this->eventDispatcher) { +$this->eventDispatcher->dispatchPackageEvent($eventName, $devMode, $repo, $allOperations, $operation); +} + +$dispatcher = $this->eventDispatcher; +$io = $this->io; + +$promise = $installer->prepare($opType, $package, $initialPackage); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +$promise = $promise->then(function () use ($opType, $repo, $operation) { +return $this->{$opType}($repo, $operation); +})->then($cleanupPromises[$index]) +->then(function () use ($devMode, $repo): void { +$repo->write($devMode, $this); +}, static function ($e) use ($opType, $package, $io): void { +$io->writeError(' ' . ucfirst($opType) .' of '.$package->getPrettyName().' failed'); + +throw $e; +}); + +$eventName = [ +'install' => PackageEvents::POST_PACKAGE_INSTALL, +'update' => PackageEvents::POST_PACKAGE_UPDATE, +'uninstall' => PackageEvents::POST_PACKAGE_UNINSTALL, +][$opType] ?? null; + +if (null !== $eventName && $runScripts && $dispatcher) { +$postExecCallbacks[] = static function () use ($dispatcher, $eventName, $devMode, $repo, $allOperations, $operation): void { +$dispatcher->dispatchPackageEvent($eventName, $devMode, $repo, $allOperations, $operation); +}; +} + +$promises[] = $promise; +} + + +if (count($promises)) { +$this->waitOnPromises($promises); +} + +Platform::workaroundFilesystemIssues(); + +foreach ($postExecCallbacks as $cb) { +$cb(); +} +} + + + + +private function waitOnPromises(array $promises): void +{ +$progress = null; +if ( +$this->outputProgress +&& $this->io instanceof ConsoleIO +&& !Platform::getEnv('CI') +&& !$this->io->isDebug() +&& count($promises) > 1 +) { +$progress = $this->io->getProgressBar(); +} +$this->loop->wait($promises, $progress); +if ($progress) { +$progress->clear(); + +if (!$this->io->isDecorated()) { +$this->io->writeError(''); +} +} +} + + + + + + +public function download(PackageInterface $package): ?PromiseInterface +{ +$installer = $this->getInstaller($package->getType()); +$promise = $installer->cleanup("install", $package); + +return $promise; +} + + + + + + + +public function install(InstalledRepositoryInterface $repo, InstallOperation $operation): ?PromiseInterface +{ +$package = $operation->getPackage(); +$installer = $this->getInstaller($package->getType()); +$promise = $installer->install($repo, $package); +$this->markForNotification($package); + +return $promise; +} + + + + + + + +public function update(InstalledRepositoryInterface $repo, UpdateOperation $operation): ?PromiseInterface +{ +$initial = $operation->getInitialPackage(); +$target = $operation->getTargetPackage(); + +$initialType = $initial->getType(); +$targetType = $target->getType(); + +if ($initialType === $targetType) { +$installer = $this->getInstaller($initialType); +$promise = $installer->update($repo, $initial, $target); +$this->markForNotification($target); +} else { +$promise = $this->getInstaller($initialType)->uninstall($repo, $initial); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +$installer = $this->getInstaller($targetType); +$promise = $promise->then(static function () use ($installer, $repo, $target): PromiseInterface { +$promise = $installer->install($repo, $target); +if ($promise instanceof PromiseInterface) { +return $promise; +} + +return \React\Promise\resolve(null); +}); +} + +return $promise; +} + + + + + + + +public function uninstall(InstalledRepositoryInterface $repo, UninstallOperation $operation): ?PromiseInterface +{ +$package = $operation->getPackage(); +$installer = $this->getInstaller($package->getType()); + +return $installer->uninstall($repo, $package); +} + + + + + + + +public function markAliasInstalled(InstalledRepositoryInterface $repo, MarkAliasInstalledOperation $operation): void +{ +$package = $operation->getPackage(); + +if (!$repo->hasPackage($package)) { +$repo->addPackage(clone $package); +} +} + + + + + + + +public function markAliasUninstalled(InstalledRepositoryInterface $repo, MarkAliasUninstalledOperation $operation): void +{ +$package = $operation->getPackage(); + +$repo->removePackage($package); +} + + + + + + +public function getInstallPath(PackageInterface $package): string +{ +$installer = $this->getInstaller($package->getType()); + +return $installer->getInstallPath($package); +} + +public function setOutputProgress(bool $outputProgress): void +{ +$this->outputProgress = $outputProgress; +} + +public function notifyInstalls(IOInterface $io): void +{ +$promises = []; + +try { +foreach ($this->notifiablePackages as $repoUrl => $packages) { + +if (strpos($repoUrl, '%package%')) { +foreach ($packages as $package) { +$url = str_replace('%package%', $package->getPrettyName(), $repoUrl); + +$params = [ +'version' => $package->getPrettyVersion(), +'version_normalized' => $package->getVersion(), +]; +$opts = [ +'retry-auth-failure' => false, +'http' => [ +'method' => 'POST', +'header' => ['Content-type: application/x-www-form-urlencoded'], +'content' => http_build_query($params, '', '&'), +'timeout' => 3, +], +]; + +$promises[] = $this->loop->getHttpDownloader()->add($url, $opts); +} + +continue; +} + +$postData = ['downloads' => []]; +foreach ($packages as $package) { +$packageNotification = [ +'name' => $package->getPrettyName(), +'version' => $package->getVersion(), +]; +if (strpos($repoUrl, 'packagist.org/') !== false) { +if (isset(FileDownloader::$downloadMetadata[$package->getName()])) { +$packageNotification['downloaded'] = FileDownloader::$downloadMetadata[$package->getName()]; +} else { +$packageNotification['downloaded'] = false; +} +} +$postData['downloads'][] = $packageNotification; +} + +$opts = [ +'retry-auth-failure' => false, +'http' => [ +'method' => 'POST', +'header' => ['Content-Type: application/json'], +'content' => json_encode($postData), +'timeout' => 6, +], +]; + +$promises[] = $this->loop->getHttpDownloader()->add($repoUrl, $opts); +} + +$this->loop->wait($promises); +} catch (\Exception $e) { +} + +$this->reset(); +} + +private function markForNotification(PackageInterface $package): void +{ +if ($package->getNotificationUrl()) { +$this->notifiablePackages[$package->getNotificationUrl()][$package->getName()] = $package; +} +} + + + + + +private function runCleanup(array $cleanupPromises): void +{ +$promises = []; + +$this->loop->abortJobs(); + +foreach ($cleanupPromises as $cleanup) { +$promises[] = new \React\Promise\Promise(static function ($resolve, $reject) use ($cleanup): void { +$promise = $cleanup(); +if (!$promise instanceof PromiseInterface) { +$resolve(); +} else { +$promise->then(static function () use ($resolve): void { +$resolve(); +}); +} +}); +} + +if (!empty($promises)) { +$this->loop->wait($promises); +} +} +} diff --git a/composer/src/Composer/Installer/InstallerEvent.php b/composer/src/Composer/Installer/InstallerEvent.php new file mode 100644 index 000000000..3949e228d --- /dev/null +++ b/composer/src/Composer/Installer/InstallerEvent.php @@ -0,0 +1,85 @@ +composer = $composer; +$this->io = $io; +$this->devMode = $devMode; +$this->executeOperations = $executeOperations; +$this->transaction = $transaction; +} + +public function getComposer(): Composer +{ +return $this->composer; +} + +public function getIO(): IOInterface +{ +return $this->io; +} + +public function isDevMode(): bool +{ +return $this->devMode; +} + +public function isExecutingOperations(): bool +{ +return $this->executeOperations; +} + +public function getTransaction(): ?Transaction +{ +return $this->transaction; +} +} diff --git a/composer/src/Composer/Installer/InstallerEvents.php b/composer/src/Composer/Installer/InstallerEvents.php new file mode 100644 index 000000000..06577b66b --- /dev/null +++ b/composer/src/Composer/Installer/InstallerEvents.php @@ -0,0 +1,26 @@ +composer = $composer; +$this->downloadManager = $composer instanceof Composer ? $composer->getDownloadManager() : null; +$this->io = $io; +$this->type = $type; + +$this->filesystem = $filesystem ?: new Filesystem(); +$this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/'); +$this->binaryInstaller = $binaryInstaller ?: new BinaryInstaller($this->io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $this->filesystem, $this->vendorDir); +} + + + + +public function supports(string $packageType) +{ +return $packageType === $this->type || null === $this->type; +} + + + + +public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +if (!$repo->hasPackage($package)) { +return false; +} + +$installPath = $this->getInstallPath($package); + +if (Filesystem::isReadable($installPath)) { +return true; +} + +if (Platform::isWindows() && $this->filesystem->isJunction($installPath)) { +return true; +} + +if (is_link($installPath)) { +if (realpath($installPath) === false) { +return false; +} + +return true; +} + +return false; +} + + + + +public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) +{ +$this->initializeVendorDir(); +$downloadPath = $this->getInstallPath($package); + +return $this->getDownloadManager()->download($package, $downloadPath, $prevPackage); +} + + + + +public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null) +{ +$this->initializeVendorDir(); +$downloadPath = $this->getInstallPath($package); + +return $this->getDownloadManager()->prepare($type, $package, $downloadPath, $prevPackage); +} + + + + +public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null) +{ +$this->initializeVendorDir(); +$downloadPath = $this->getInstallPath($package); + +return $this->getDownloadManager()->cleanup($type, $package, $downloadPath, $prevPackage); +} + + + + +public function install(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +$this->initializeVendorDir(); +$downloadPath = $this->getInstallPath($package); + + +if (!Filesystem::isReadable($downloadPath) && $repo->hasPackage($package)) { +$this->binaryInstaller->removeBinaries($package); +} + +$promise = $this->installCode($package); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +$binaryInstaller = $this->binaryInstaller; +$installPath = $this->getInstallPath($package); + +return $promise->then(static function () use ($binaryInstaller, $installPath, $package, $repo): void { +$binaryInstaller->installBinaries($package, $installPath); +if (!$repo->hasPackage($package)) { +$repo->addPackage(clone $package); +} +}); +} + + + + +public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) +{ +if (!$repo->hasPackage($initial)) { +throw new \InvalidArgumentException('Package is not installed: '.$initial); +} + +$this->initializeVendorDir(); + +$this->binaryInstaller->removeBinaries($initial); +$promise = $this->updateCode($initial, $target); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +$binaryInstaller = $this->binaryInstaller; +$installPath = $this->getInstallPath($target); + +return $promise->then(static function () use ($binaryInstaller, $installPath, $target, $initial, $repo): void { +$binaryInstaller->installBinaries($target, $installPath); +$repo->removePackage($initial); +if (!$repo->hasPackage($target)) { +$repo->addPackage(clone $target); +} +}); +} + + + + +public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +if (!$repo->hasPackage($package)) { +throw new \InvalidArgumentException('Package is not installed: '.$package); +} + +$promise = $this->removeCode($package); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +$binaryInstaller = $this->binaryInstaller; +$downloadPath = $this->getPackageBasePath($package); +$filesystem = $this->filesystem; + +return $promise->then(static function () use ($binaryInstaller, $filesystem, $downloadPath, $package, $repo): void { +$binaryInstaller->removeBinaries($package); +$repo->removePackage($package); + +if (strpos($package->getName(), '/')) { +$packageVendorDir = dirname($downloadPath); +if (is_dir($packageVendorDir) && $filesystem->isDirEmpty($packageVendorDir)) { +Silencer::call('rmdir', $packageVendorDir); +} +} +}); +} + + + + +public function getInstallPath(PackageInterface $package) +{ +$this->initializeVendorDir(); + +$basePath = ($this->vendorDir ? $this->vendorDir.'/' : '') . $package->getPrettyName(); +$targetDir = $package->getTargetDir(); + +return $basePath . ($targetDir ? '/'.$targetDir : ''); +} + + + + + + +public function ensureBinariesPresence(PackageInterface $package) +{ +$this->binaryInstaller->installBinaries($package, $this->getInstallPath($package), false); +} + + + + + + + + + +protected function getPackageBasePath(PackageInterface $package) +{ +$installPath = $this->getInstallPath($package); +$targetDir = $package->getTargetDir(); + +if ($targetDir) { +return Preg::replace('{/*'.str_replace('/', '/+', preg_quote($targetDir)).'/?$}', '', $installPath); +} + +return $installPath; +} + + + + +protected function installCode(PackageInterface $package) +{ +$downloadPath = $this->getInstallPath($package); + +return $this->getDownloadManager()->install($package, $downloadPath); +} + + + + +protected function updateCode(PackageInterface $initial, PackageInterface $target) +{ +$initialDownloadPath = $this->getInstallPath($initial); +$targetDownloadPath = $this->getInstallPath($target); +if ($targetDownloadPath !== $initialDownloadPath) { + + +if (strpos($initialDownloadPath, $targetDownloadPath) === 0 +|| strpos($targetDownloadPath, $initialDownloadPath) === 0 +) { +$promise = $this->removeCode($initial); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +return $promise->then(function () use ($target): PromiseInterface { +$promise = $this->installCode($target); +if ($promise instanceof PromiseInterface) { +return $promise; +} + +return \React\Promise\resolve(null); +}); +} + +$this->filesystem->rename($initialDownloadPath, $targetDownloadPath); +} + +return $this->getDownloadManager()->update($initial, $target, $targetDownloadPath); +} + + + + +protected function removeCode(PackageInterface $package) +{ +$downloadPath = $this->getPackageBasePath($package); + +return $this->getDownloadManager()->remove($package, $downloadPath); +} + + + + +protected function initializeVendorDir() +{ +$this->filesystem->ensureDirectoryExists($this->vendorDir); +$this->vendorDir = realpath($this->vendorDir); +} + +protected function getDownloadManager(): DownloadManager +{ +assert($this->downloadManager instanceof DownloadManager, new \LogicException(self::class.' should be initialized with a fully loaded Composer instance to be able to install/... packages')); + +return $this->downloadManager; +} +} diff --git a/composer/src/Composer/Installer/MetapackageInstaller.php b/composer/src/Composer/Installer/MetapackageInstaller.php new file mode 100644 index 000000000..19445986d --- /dev/null +++ b/composer/src/Composer/Installer/MetapackageInstaller.php @@ -0,0 +1,132 @@ +io = $io; +} + + + + +public function supports(string $packageType) +{ +return $packageType === 'metapackage'; +} + + + + +public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +return $repo->hasPackage($package); +} + + + + +public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) +{ + +return \React\Promise\resolve(null); +} + + + + +public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null) +{ + +return \React\Promise\resolve(null); +} + + + + +public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null) +{ + +return \React\Promise\resolve(null); +} + + + + +public function install(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +$this->io->writeError(" - " . InstallOperation::format($package)); + +$repo->addPackage(clone $package); + +return \React\Promise\resolve(null); +} + + + + +public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) +{ +if (!$repo->hasPackage($initial)) { +throw new \InvalidArgumentException('Package is not installed: '.$initial); +} + +$this->io->writeError(" - " . UpdateOperation::format($initial, $target)); + +$repo->removePackage($initial); +$repo->addPackage(clone $target); + +return \React\Promise\resolve(null); +} + + + + +public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +if (!$repo->hasPackage($package)) { +throw new \InvalidArgumentException('Package is not installed: '.$package); +} + +$this->io->writeError(" - " . UninstallOperation::format($package)); + +$repo->removePackage($package); + +return \React\Promise\resolve(null); +} + + + + +public function getInstallPath(PackageInterface $package) +{ +return ''; +} +} diff --git a/composer/src/Composer/Installer/NoopInstaller.php b/composer/src/Composer/Installer/NoopInstaller.php new file mode 100644 index 000000000..c7f86c364 --- /dev/null +++ b/composer/src/Composer/Installer/NoopInstaller.php @@ -0,0 +1,118 @@ +hasPackage($package); +} + + + + +public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) +{ +return \React\Promise\resolve(null); +} + + + + +public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null) +{ +return \React\Promise\resolve(null); +} + + + + +public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null) +{ +return \React\Promise\resolve(null); +} + + + + +public function install(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +if (!$repo->hasPackage($package)) { +$repo->addPackage(clone $package); +} + +return \React\Promise\resolve(null); +} + + + + +public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) +{ +if (!$repo->hasPackage($initial)) { +throw new \InvalidArgumentException('Package is not installed: '.$initial); +} + +$repo->removePackage($initial); +if (!$repo->hasPackage($target)) { +$repo->addPackage(clone $target); +} + +return \React\Promise\resolve(null); +} + + + + +public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +if (!$repo->hasPackage($package)) { +throw new \InvalidArgumentException('Package is not installed: '.$package); +} +$repo->removePackage($package); + +return \React\Promise\resolve(null); +} + + + + +public function getInstallPath(PackageInterface $package) +{ +$targetDir = $package->getTargetDir(); + +return $package->getPrettyName() . ($targetDir ? '/'.$targetDir : ''); +} +} diff --git a/composer/src/Composer/Installer/PackageEvent.php b/composer/src/Composer/Installer/PackageEvent.php new file mode 100644 index 000000000..c5d803bc1 --- /dev/null +++ b/composer/src/Composer/Installer/PackageEvent.php @@ -0,0 +1,110 @@ +composer = $composer; +$this->io = $io; +$this->devMode = $devMode; +$this->localRepo = $localRepo; +$this->operations = $operations; +$this->operation = $operation; +} + +public function getComposer(): Composer +{ +return $this->composer; +} + +public function getIO(): IOInterface +{ +return $this->io; +} + +public function isDevMode(): bool +{ +return $this->devMode; +} + +public function getLocalRepo(): RepositoryInterface +{ +return $this->localRepo; +} + + + + +public function getOperations(): array +{ +return $this->operations; +} + + + + +public function getOperation(): OperationInterface +{ +return $this->operation; +} +} diff --git a/composer/src/Composer/Installer/PackageEvents.php b/composer/src/Composer/Installer/PackageEvents.php new file mode 100644 index 000000000..1838e9b0d --- /dev/null +++ b/composer/src/Composer/Installer/PackageEvents.php @@ -0,0 +1,75 @@ +getPluginManager()->arePluginsDisabled('local')) { +$this->getPluginManager()->isPluginAllowed($package->getName(), false); +} + +return parent::prepare($type, $package, $prevPackage); +} + + + + +public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) +{ +$extra = $package->getExtra(); +if (empty($extra['class'])) { +throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); +} + +return parent::download($package, $prevPackage); +} + + + + +public function install(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +$promise = parent::install($repo, $package); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +return $promise->then(function () use ($package, $repo): void { +try { +Platform::workaroundFilesystemIssues(); +$this->getPluginManager()->registerPackage($package, true); +} catch (\Exception $e) { +$this->rollbackInstall($e, $repo, $package); +} +}); +} + + + + +public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) +{ +$promise = parent::update($repo, $initial, $target); +if (!$promise instanceof PromiseInterface) { +$promise = \React\Promise\resolve(null); +} + +return $promise->then(function () use ($initial, $target, $repo): void { +try { +Platform::workaroundFilesystemIssues(); +$this->getPluginManager()->deactivatePackage($initial); +$this->getPluginManager()->registerPackage($target, true); +} catch (\Exception $e) { +$this->rollbackInstall($e, $repo, $target); +} +}); +} + +public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) +{ +$this->getPluginManager()->uninstallPackage($package); + +return parent::uninstall($repo, $package); +} + +private function rollbackInstall(\Exception $e, InstalledRepositoryInterface $repo, PackageInterface $package): void +{ +$this->io->writeError('Plugin initialization failed ('.$e->getMessage().'), uninstalling plugin'); +parent::uninstall($repo, $package); +throw $e; +} + +protected function getPluginManager(): PluginManager +{ +assert($this->composer instanceof Composer, new \LogicException(self::class.' should be initialized with a fully loaded Composer instance.')); +$pluginManager = $this->composer->getPluginManager(); + +return $pluginManager; +} +} diff --git a/composer/src/Composer/Installer/ProjectInstaller.php b/composer/src/Composer/Installer/ProjectInstaller.php new file mode 100644 index 000000000..973bf6bf3 --- /dev/null +++ b/composer/src/Composer/Installer/ProjectInstaller.php @@ -0,0 +1,124 @@ +installPath = rtrim(strtr($installPath, '\\', '/'), '/').'/'; +$this->downloadManager = $dm; +$this->filesystem = $fs; +} + + + + +public function supports(string $packageType): bool +{ +return true; +} + + + + +public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package): bool +{ +return false; +} + + + + +public function download(PackageInterface $package, ?PackageInterface $prevPackage = null): ?PromiseInterface +{ +$installPath = $this->installPath; +if (file_exists($installPath) && !$this->filesystem->isDirEmpty($installPath)) { +throw new \InvalidArgumentException("Project directory $installPath is not empty."); +} +if (!is_dir($installPath)) { +mkdir($installPath, 0777, true); +} + +return $this->downloadManager->download($package, $installPath, $prevPackage); +} + + + + +public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null): ?PromiseInterface +{ +return $this->downloadManager->prepare($type, $package, $this->installPath, $prevPackage); +} + + + + +public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null): ?PromiseInterface +{ +return $this->downloadManager->cleanup($type, $package, $this->installPath, $prevPackage); +} + + + + +public function install(InstalledRepositoryInterface $repo, PackageInterface $package): ?PromiseInterface +{ +return $this->downloadManager->install($package, $this->installPath); +} + + + + +public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target): ?PromiseInterface +{ +throw new \InvalidArgumentException("not supported"); +} + + + + +public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package): ?PromiseInterface +{ +throw new \InvalidArgumentException("not supported"); +} + + + + + + +public function getInstallPath(PackageInterface $package): string +{ +return $this->installPath; +} +} diff --git a/composer/src/Composer/Installer/SuggestedPackagesReporter.php b/composer/src/Composer/Installer/SuggestedPackagesReporter.php new file mode 100644 index 000000000..fbe7090f0 --- /dev/null +++ b/composer/src/Composer/Installer/SuggestedPackagesReporter.php @@ -0,0 +1,228 @@ +io = $io; +} + + + + +public function getPackages(): array +{ +return $this->suggestedPackages; +} + + + + + + + + + + + +public function addPackage(string $source, string $target, string $reason): SuggestedPackagesReporter +{ +$this->suggestedPackages[] = [ +'source' => $source, +'target' => $target, +'reason' => $reason, +]; + +return $this; +} + + + + +public function addSuggestionsFromPackage(PackageInterface $package): SuggestedPackagesReporter +{ +$source = $package->getPrettyName(); +foreach ($package->getSuggests() as $target => $reason) { +$this->addPackage( +$source, +$target, +$reason +); +} + +return $this; +} + + + + + + + + + + +public function output(int $mode, ?InstalledRepository $installedRepo = null, ?PackageInterface $onlyDependentsOf = null): void +{ +$suggestedPackages = $this->getFilteredSuggestions($installedRepo, $onlyDependentsOf); + +$suggesters = []; +$suggested = []; +foreach ($suggestedPackages as $suggestion) { +$suggesters[$suggestion['source']][$suggestion['target']] = $suggestion['reason']; +$suggested[$suggestion['target']][$suggestion['source']] = $suggestion['reason']; +} +ksort($suggesters); +ksort($suggested); + + +if ($mode & self::MODE_LIST) { +foreach (array_keys($suggested) as $name) { +$this->io->write(sprintf('%s', $name)); +} + +return; +} + + +if ($mode & self::MODE_BY_PACKAGE) { +foreach ($suggesters as $suggester => $suggestions) { +$this->io->write(sprintf('%s suggests:', $suggester)); + +foreach ($suggestions as $suggestion => $reason) { +$this->io->write(sprintf(' - %s' . ($reason ? ': %s' : ''), $suggestion, $this->escapeOutput($reason))); +} +$this->io->write(''); +} +} + + +if ($mode & self::MODE_BY_SUGGESTION) { + +if ($mode & self::MODE_BY_PACKAGE) { +$this->io->write(str_repeat('-', 78)); +} +foreach ($suggested as $suggestion => $suggesters) { +$this->io->write(sprintf('%s is suggested by:', $suggestion)); + +foreach ($suggesters as $suggester => $reason) { +$this->io->write(sprintf(' - %s' . ($reason ? ': %s' : ''), $suggester, $this->escapeOutput($reason))); +} +$this->io->write(''); +} +} + +if ($onlyDependentsOf) { +$allSuggestedPackages = $this->getFilteredSuggestions($installedRepo); +$diff = count($allSuggestedPackages) - count($suggestedPackages); +if ($diff) { +$this->io->write(''.$diff.' additional suggestions by transitive dependencies can be shown with --all'); +} +} +} + + + + + + + +public function outputMinimalistic(?InstalledRepository $installedRepo = null, ?PackageInterface $onlyDependentsOf = null): void +{ +$suggestedPackages = $this->getFilteredSuggestions($installedRepo, $onlyDependentsOf); +if ($suggestedPackages) { +$this->io->writeError(''.count($suggestedPackages).' package suggestions were added by new dependencies, use `composer suggest` to see details.'); +} +} + + + + + + +private function getFilteredSuggestions(?InstalledRepository $installedRepo = null, ?PackageInterface $onlyDependentsOf = null): array +{ +$suggestedPackages = $this->getPackages(); +$installedNames = []; +if (null !== $installedRepo && !empty($suggestedPackages)) { +foreach ($installedRepo->getPackages() as $package) { +$installedNames = array_merge( +$installedNames, +$package->getNames() +); +} +} + +$sourceFilter = []; +if ($onlyDependentsOf) { +$sourceFilter = array_map(static function ($link): string { +return $link->getTarget(); +}, array_merge($onlyDependentsOf->getRequires(), $onlyDependentsOf->getDevRequires())); +$sourceFilter[] = $onlyDependentsOf->getName(); +} + +$suggestions = []; +foreach ($suggestedPackages as $suggestion) { +if (in_array($suggestion['target'], $installedNames) || ($sourceFilter && !in_array($suggestion['source'], $sourceFilter))) { +continue; +} + +$suggestions[] = $suggestion; +} + +return $suggestions; +} + +private function escapeOutput(string $string): string +{ +return OutputFormatter::escape( +$this->removeControlCharacters($string) +); +} + +private function removeControlCharacters(string $string): string +{ +return Preg::replace( +'/[[:cntrl:]]/', +'', +str_replace("\n", ' ', $string) +); +} +} diff --git a/composer/src/Composer/Json/JsonFile.php b/composer/src/Composer/Json/JsonFile.php new file mode 100644 index 000000000..9739098ca --- /dev/null +++ b/composer/src/Composer/Json/JsonFile.php @@ -0,0 +1,349 @@ +path = $path; + +if (null === $httpDownloader && Preg::isMatch('{^https?://}i', $path)) { +throw new \InvalidArgumentException('http urls require a HttpDownloader instance to be passed'); +} +$this->httpDownloader = $httpDownloader; +$this->io = $io; +} + +public function getPath(): string +{ +return $this->path; +} + + + + +public function exists(): bool +{ +return is_file($this->path); +} + + + + + + + + +public function read() +{ +try { +if ($this->httpDownloader) { +$json = $this->httpDownloader->get($this->path)->getBody(); +} else { +if (!Filesystem::isReadable($this->path)) { +throw new \RuntimeException('The file "'.$this->path.'" is not readable.'); +} +if ($this->io && $this->io->isDebug()) { +$realpathInfo = ''; +$realpath = realpath($this->path); +if (false !== $realpath && $realpath !== $this->path) { +$realpathInfo = ' (' . $realpath . ')'; +} +$this->io->writeError('Reading ' . $this->path . $realpathInfo); +} +$json = file_get_contents($this->path); +} +} catch (TransportException $e) { +throw new \RuntimeException($e->getMessage(), 0, $e); +} catch (\Exception $e) { +throw new \RuntimeException('Could not read '.$this->path."\n\n".$e->getMessage()); +} + +if ($json === false) { +throw new \RuntimeException('Could not read '.$this->path); +} + +return static::parseJson($json, $this->path); +} + + + + + + + + + +public function write(array $hash, int $options = JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) +{ +if ($this->path === 'php://memory') { +file_put_contents($this->path, static::encode($hash, $options)); + +return; +} + +$dir = dirname($this->path); +if (!is_dir($dir)) { +if (file_exists($dir)) { +throw new \UnexpectedValueException( +realpath($dir).' exists and is not a directory.' +); +} +if (!@mkdir($dir, 0777, true)) { +throw new \UnexpectedValueException( +$dir.' does not exist and could not be created.' +); +} +} + +$retries = 3; +while ($retries--) { +try { +$this->filePutContentsIfModified($this->path, static::encode($hash, $options). ($options & JSON_PRETTY_PRINT ? "\n" : '')); +break; +} catch (\Exception $e) { +if ($retries > 0) { +usleep(500000); +continue; +} + +throw $e; +} +} +} + + + + + + +private function filePutContentsIfModified(string $path, string $content) +{ +$currentContent = @file_get_contents($path); +if (false === $currentContent || $currentContent !== $content) { +return file_put_contents($path, $content); +} + +return 0; +} + + + + + + + + + + + + +public function validateSchema(int $schema = self::STRICT_SCHEMA, ?string $schemaFile = null): bool +{ +if (!Filesystem::isReadable($this->path)) { +throw new \RuntimeException('The file "'.$this->path.'" is not readable.'); +} +$content = file_get_contents($this->path); +$data = json_decode($content); + +if (null === $data && 'null' !== $content) { +self::validateSyntax($content, $this->path); +} + +return self::validateJsonSchema($this->path, $data, $schema, $schemaFile); +} + + + + + + + + + + + + +public static function validateJsonSchema(string $source, $data, int $schema, ?string $schemaFile = null): bool +{ +$isComposerSchemaFile = false; +if (null === $schemaFile) { +$isComposerSchemaFile = true; +$schemaFile = self::COMPOSER_SCHEMA_PATH; +} + + +if (false === strpos($schemaFile, '://')) { +$schemaFile = 'file://' . $schemaFile; +} + +$schemaData = (object) ['$ref' => $schemaFile]; + +if ($schema === self::LAX_SCHEMA) { +$schemaData->additionalProperties = true; +$schemaData->required = []; +} elseif ($schema === self::STRICT_SCHEMA && $isComposerSchemaFile) { +$schemaData->additionalProperties = false; +$schemaData->required = ['name', 'description']; +} elseif ($schema === self::AUTH_SCHEMA && $isComposerSchemaFile) { +$schemaData = (object) ['$ref' => $schemaFile.'#/properties/config', '$schema' => "https://json-schema.org/draft-04/schema#"]; +} + +$validator = new Validator(); +$validator->check($data, $schemaData); + +if (!$validator->isValid()) { +$errors = []; +foreach ((array) $validator->getErrors() as $error) { +$errors[] = ($error['property'] ? $error['property'].' : ' : '').$error['message']; +} +throw new JsonValidationException('"'.$source.'" does not match the expected JSON schema', $errors); +} + +return true; +} + + + + + + + + +public static function encode($data, int $options = 448) +{ +$json = json_encode($data, $options); +if (false === $json) { +self::throwEncodeError(json_last_error()); +} + +return $json; +} + + + + + + + +private static function throwEncodeError(int $code): void +{ +switch ($code) { +case JSON_ERROR_DEPTH: +$msg = 'Maximum stack depth exceeded'; +break; +case JSON_ERROR_STATE_MISMATCH: +$msg = 'Underflow or the modes mismatch'; +break; +case JSON_ERROR_CTRL_CHAR: +$msg = 'Unexpected control character found'; +break; +case JSON_ERROR_UTF8: +$msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; +break; +default: +$msg = 'Unknown error'; +} + +throw new \RuntimeException('JSON encoding failed: '.$msg); +} + + + + + + + + + + +public static function parseJson(?string $json, ?string $file = null) +{ +if (null === $json) { +return null; +} +$data = json_decode($json, true); +if (null === $data && JSON_ERROR_NONE !== json_last_error()) { +self::validateSyntax($json, $file); +} + +return $data; +} + + + + + + + + + +protected static function validateSyntax(string $json, ?string $file = null): bool +{ +$parser = new JsonParser(); +$result = $parser->lint($json); +if (null === $result) { +if (defined('JSON_ERROR_UTF8') && JSON_ERROR_UTF8 === json_last_error()) { +throw new \UnexpectedValueException('"'.$file.'" is not UTF-8, could not parse as JSON'); +} + +return true; +} + +throw new ParsingException('"'.$file.'" does not contain valid JSON'."\n".$result->getMessage(), $result->getDetails()); +} +} diff --git a/composer/src/Composer/Json/JsonFormatter.php b/composer/src/Composer/Json/JsonFormatter.php new file mode 100644 index 000000000..dfd648022 --- /dev/null +++ b/composer/src/Composer/Json/JsonFormatter.php @@ -0,0 +1,134 @@ += $code) { +return $match[0]; +} + +return str_repeat('\\', $l - 1) . mb_convert_encoding( +pack('H*', $match[2]), +'UTF-8', +'UCS-2BE' +); +} + +return $match[0]; +}, $buffer); +} + +$result .= $buffer.$char; +$buffer = ''; +continue; +} + +if (':' === $char) { + +$char .= ' '; +} elseif ('}' === $char || ']' === $char) { +$pos--; +$prevChar = substr($json, $i - 1, 1); + +if ('{' !== $prevChar && '[' !== $prevChar) { + + +$result .= $newLine; +$result .= str_repeat($indentStr, $pos); +} else { + +$result = rtrim($result); +} +} + +$result .= $char; + + + +if (',' === $char || '{' === $char || '[' === $char) { +$result .= $newLine; + +if ('{' === $char || '[' === $char) { +$pos++; +} + +$result .= str_repeat($indentStr, $pos); +} +} + +return $result; +} +} diff --git a/composer/src/Composer/Json/JsonManipulator.php b/composer/src/Composer/Json/JsonManipulator.php new file mode 100644 index 000000000..9d35f3a05 --- /dev/null +++ b/composer/src/Composer/Json/JsonManipulator.php @@ -0,0 +1,570 @@ + -? (?= [1-9]|0(?!\d) ) \d++ (?:\.\d++)? (?:[eE] [+-]?+ \d++)? ) + (? true | false | null ) + (? " (?:[^"\\\\]*+ | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9A-Fa-f]{4} )* " ) + (? \[ (?: (?&json) \s*+ (?: , (?&json) \s*+ )*+ )?+ \s*+ \] ) + (? \s*+ (?&string) \s*+ : (?&json) \s*+ ) + (? \{ (?: (?&pair) (?: , (?&pair) )*+ )?+ \s*+ \} ) + (? \s*+ (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) ) + )'; + + +private $contents; + +private $newline; + +private $indent; + +public function __construct(string $contents) +{ +$contents = trim($contents); +if ($contents === '') { +$contents = '{}'; +} +if (!Preg::isMatch('#^\{(.*)\}$#s', $contents)) { +throw new \InvalidArgumentException('The json file must be an object ({})'); +} +$this->newline = false !== strpos($contents, "\r\n") ? "\r\n" : "\n"; +$this->contents = $contents === '{}' ? '{' . $this->newline . '}' : $contents; +$this->detectIndenting(); +} + +public function getContents(): string +{ +return $this->contents . $this->newline; +} + +public function addLink(string $type, string $package, string $constraint, bool $sortPackages = false): bool +{ +$decoded = JsonFile::parseJson($this->contents); + + +if (!isset($decoded[$type])) { +return $this->addMainKey($type, [$package => $constraint]); +} + +$regex = '{'.self::DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. +'(?P'.preg_quote(JsonFile::encode($type)).'\s*:\s*)(?P(?&json))(?P.*)}sx'; +if (!Preg::isMatch($regex, $this->contents, $matches)) { +return false; +} +assert(is_string($matches['start'])); +assert(is_string($matches['value'])); +assert(is_string($matches['end'])); + +$links = $matches['value']; + + +$packageRegex = str_replace('/', '\\\\?/', preg_quote($package)); +$regex = '{'.self::DEFINES.'"(?P'.$packageRegex.')"(\s*:\s*)(?&string)}ix'; +if (Preg::isMatch($regex, $links, $packageMatches)) { +assert(is_string($packageMatches['package'])); + +$existingPackage = $packageMatches['package']; +$packageRegex = str_replace('/', '\\\\?/', preg_quote($existingPackage)); +$links = Preg::replaceCallback('{'.self::DEFINES.'"'.$packageRegex.'"(?P\s*:\s*)(?&string)}ix', static function ($m) use ($existingPackage, $constraint): string { +return JsonFile::encode(str_replace('\\/', '/', $existingPackage)) . $m['separator'] . '"' . $constraint . '"'; +}, $links); +} else { +if (Preg::isMatchStrictGroups('#^\s*\{\s*\S+.*?(\s*\}\s*)$#s', $links, $match)) { + +$links = Preg::replace( +'{'.preg_quote($match[1]).'$}', + +addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $match[1], '\\$'), +$links +); +} else { + +$links = '{' . $this->newline . +$this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $this->newline . +$this->indent . '}'; +} +} + +if (true === $sortPackages) { +$requirements = json_decode($links, true); +$this->sortPackages($requirements); +$links = $this->format($requirements); +} + +$this->contents = $matches['start'] . $matches['property'] . $links . $matches['end']; + +return true; +} + + + + + + + + +private function sortPackages(array &$packages = []): void +{ +$prefix = static function ($requirement): string { +if (PlatformRepository::isPlatformPackage($requirement)) { +return Preg::replace( +[ +'/^php/', +'/^hhvm/', +'/^ext/', +'/^lib/', +'/^\D/', +], +[ +'0-$0', +'1-$0', +'2-$0', +'3-$0', +'4-$0', +], +$requirement +); +} + +return '5-'.$requirement; +}; + +uksort($packages, static function ($a, $b) use ($prefix): int { +return strnatcmp($prefix($a), $prefix($b)); +}); +} + + + + +public function addRepository(string $name, $config, bool $append = true): bool +{ +return $this->addSubNode('repositories', $name, $config, $append); +} + +public function removeRepository(string $name): bool +{ +return $this->removeSubNode('repositories', $name); +} + + + + +public function addConfigSetting(string $name, $value): bool +{ +return $this->addSubNode('config', $name, $value); +} + +public function removeConfigSetting(string $name): bool +{ +return $this->removeSubNode('config', $name); +} + + + + +public function addProperty(string $name, $value): bool +{ +if (strpos($name, 'suggest.') === 0) { +return $this->addSubNode('suggest', substr($name, 8), $value); +} + +if (strpos($name, 'extra.') === 0) { +return $this->addSubNode('extra', substr($name, 6), $value); +} + +if (strpos($name, 'scripts.') === 0) { +return $this->addSubNode('scripts', substr($name, 8), $value); +} + +return $this->addMainKey($name, $value); +} + +public function removeProperty(string $name): bool +{ +if (strpos($name, 'suggest.') === 0) { +return $this->removeSubNode('suggest', substr($name, 8)); +} + +if (strpos($name, 'extra.') === 0) { +return $this->removeSubNode('extra', substr($name, 6)); +} + +if (strpos($name, 'scripts.') === 0) { +return $this->removeSubNode('scripts', substr($name, 8)); +} + +return $this->removeMainKey($name); +} + + + + +public function addSubNode(string $mainNode, string $name, $value, bool $append = true): bool +{ +$decoded = JsonFile::parseJson($this->contents); + +$subName = null; +if (in_array($mainNode, ['config', 'extra', 'scripts']) && false !== strpos($name, '.')) { +[$name, $subName] = explode('.', $name, 2); +} + + +if (!isset($decoded[$mainNode])) { +if ($subName !== null) { +$this->addMainKey($mainNode, [$name => [$subName => $value]]); +} else { +$this->addMainKey($mainNode, [$name => $value]); +} + +return true; +} + + +$nodeRegex = '{'.self::DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. +preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; + +try { +if (!Preg::isMatch($nodeRegex, $this->contents, $match)) { +return false; +} +} catch (\RuntimeException $e) { +if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { +return false; +} +throw $e; +} + +assert(is_string($match['start'])); +assert(is_string($match['content'])); +assert(is_string($match['end'])); + +$children = $match['content']; + +if (!@json_decode($children)) { +return false; +} + + +$childRegex = '{'.self::DEFINES.'(?P"'.preg_quote($name).'"\s*:\s*)(?P(?&json))(?P,?)}x'; +if (Preg::isMatch($childRegex, $children, $matches)) { +$children = Preg::replaceCallback($childRegex, function ($matches) use ($subName, $value): string { +if ($subName !== null && is_string($matches['content'])) { +$curVal = json_decode($matches['content'], true); +if (!is_array($curVal)) { +$curVal = []; +} +$curVal[$subName] = $value; +$value = $curVal; +} + +return $matches['start'] . $this->format($value, 1) . $matches['end']; +}, $children); +} else { +Preg::match('#^{ (?P\s*?) (?P\S+.*?)? (?P\s*) }$#sx', $children, $match); + +$whitespace = ''; +if (!empty($match['trailingspace'])) { +$whitespace = $match['trailingspace']; +} + +if (!empty($match['content'])) { +if ($subName !== null) { +$value = [$subName => $value]; +} + + +if ($append) { +$children = Preg::replace( +'#'.$whitespace.'}$#', +addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}', '\\$'), +$children +); +} else { +$whitespace = ''; +if (!empty($match['leadingspace'])) { +$whitespace = $match['leadingspace']; +} + +$children = Preg::replace( +'#^{'.$whitespace.'#', +addcslashes('{' . $whitespace . JsonFile::encode($name).': '.$this->format($value, 1) . ',' . $this->newline . $this->indent . $this->indent, '\\$'), +$children +); +} +} else { +if ($subName !== null) { +$value = [$subName => $value]; +} + + +$children = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}'; +} +} + +$this->contents = Preg::replaceCallback($nodeRegex, static function ($m) use ($children): string { +return $m['start'] . $children . $m['end']; +}, $this->contents); + +return true; +} + +public function removeSubNode(string $mainNode, string $name): bool +{ +$decoded = JsonFile::parseJson($this->contents); + + +if (empty($decoded[$mainNode])) { +return true; +} + + +$nodeRegex = '{'.self::DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. +preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; +try { +if (!Preg::isMatch($nodeRegex, $this->contents, $match)) { +return false; +} +} catch (\RuntimeException $e) { +if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { +return false; +} +throw $e; +} + +assert(is_string($match['start'])); +assert(is_string($match['content'])); +assert(is_string($match['end'])); + +$children = $match['content']; + + +if (!@json_decode($children, true)) { +return false; +} + +$subName = null; +if (in_array($mainNode, ['config', 'extra', 'scripts']) && false !== strpos($name, '.')) { +[$name, $subName] = explode('.', $name, 2); +} + + +if (!isset($decoded[$mainNode][$name]) || ($subName && !isset($decoded[$mainNode][$name][$subName]))) { +return true; +} + + +$keyRegex = str_replace('/', '\\\\?/', preg_quote($name)); +if (Preg::isMatch('{"'.$keyRegex.'"\s*:}i', $children)) { + +if (Preg::isMatchAll('{'.self::DEFINES.'"'.$keyRegex.'"\s*:\s*(?:(?&json))}x', $children, $matches)) { +$bestMatch = ''; +foreach ($matches[0] as $match) { +assert(is_string($match)); +if (strlen($bestMatch) < strlen($match)) { +$bestMatch = $match; +} +} +$childrenClean = Preg::replace('{,\s*'.preg_quote($bestMatch).'}i', '', $children, -1, $count); +if (1 !== $count) { +$childrenClean = Preg::replace('{'.preg_quote($bestMatch).'\s*,?\s*}i', '', $childrenClean, -1, $count); +if (1 !== $count) { +return false; +} +} +} +} else { +$childrenClean = $children; +} + +if (!isset($childrenClean)) { +throw new \InvalidArgumentException("JsonManipulator: \$childrenClean is not defined. Please report at https://github.com/composer/composer/issues/new."); +} + + +unset($match); +Preg::match('#^{ \s*? (?P\S+.*?)? (?P\s*) }$#sx', $childrenClean, $match); +if (empty($match['content'])) { +$newline = $this->newline; +$indent = $this->indent; + +$this->contents = Preg::replaceCallback($nodeRegex, static function ($matches) use ($indent, $newline): string { +return $matches['start'] . '{' . $newline . $indent . '}' . $matches['end']; +}, $this->contents); + + +if ($subName !== null) { +$curVal = json_decode($children, true); +unset($curVal[$name][$subName]); +$this->addSubNode($mainNode, $name, $curVal[$name]); +} + +return true; +} + +$this->contents = Preg::replaceCallback($nodeRegex, function ($matches) use ($name, $subName, $childrenClean): string { +assert(is_string($matches['content'])); +if ($subName !== null) { +$curVal = json_decode($matches['content'], true); +unset($curVal[$name][$subName]); +$childrenClean = $this->format($curVal); +} + +return $matches['start'] . $childrenClean . $matches['end']; +}, $this->contents); + +return true; +} + + + + +public function addMainKey(string $key, $content): bool +{ +$decoded = JsonFile::parseJson($this->contents); +$content = $this->format($content); + + +$regex = '{'.self::DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. +'(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))(?P.*)}sx'; +if (isset($decoded[$key]) && Preg::isMatch($regex, $this->contents, $matches)) { + +if (!@json_decode('{'.$matches['key'].'}')) { +return false; +} + +$this->contents = $matches['start'] . JsonFile::encode($key).': '.$content . $matches['end']; + +return true; +} + + +if (Preg::isMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) { +$this->contents = Preg::replace( +'#'.$match[1].'\}$#', +addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'), +$this->contents +); + +return true; +} + + +$this->contents = Preg::replace( +'#\}$#', +addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'), +$this->contents +); + +return true; +} + +public function removeMainKey(string $key): bool +{ +$decoded = JsonFile::parseJson($this->contents); + +if (!array_key_exists($key, $decoded)) { +return true; +} + + +$regex = '{'.self::DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. +'(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))\s*,?\s*(?P.*)}sx'; +if (Preg::isMatch($regex, $this->contents, $matches)) { +assert(is_string($matches['start'])); +assert(is_string($matches['removal'])); +assert(is_string($matches['end'])); + + +if (!@json_decode('{'.$matches['removal'].'}')) { +return false; +} + + +if (Preg::isMatchStrictGroups('#,\s*$#', $matches['start']) && Preg::isMatch('#^\}$#', $matches['end'])) { +$matches['start'] = rtrim(Preg::replace('#,(\s*)$#', '$1', $matches['start']), $this->indent); +} + +$this->contents = $matches['start'] . $matches['end']; +if (Preg::isMatch('#^\{\s*\}\s*$#', $this->contents)) { +$this->contents = "{\n}"; +} + +return true; +} + +return false; +} + +public function removeMainKeyIfEmpty(string $key): bool +{ +$decoded = JsonFile::parseJson($this->contents); + +if (!array_key_exists($key, $decoded)) { +return true; +} + +if (is_array($decoded[$key]) && count($decoded[$key]) === 0) { +return $this->removeMainKey($key); +} + +return true; +} + + + + +public function format($data, int $depth = 0): string +{ +if (is_array($data)) { +reset($data); + +if (is_numeric(key($data))) { +foreach ($data as $key => $val) { +$data[$key] = $this->format($val, $depth + 1); +} + +return '['.implode(', ', $data).']'; +} + +$out = '{' . $this->newline; +$elems = []; +foreach ($data as $key => $val) { +$elems[] = str_repeat($this->indent, $depth + 2) . JsonFile::encode($key). ': '.$this->format($val, $depth + 1); +} + +return $out . implode(','.$this->newline, $elems) . $this->newline . str_repeat($this->indent, $depth + 1) . '}'; +} + +return JsonFile::encode($data); +} + +protected function detectIndenting(): void +{ +if (Preg::isMatchStrictGroups('{^([ \t]+)"}m', $this->contents, $match)) { +$this->indent = $match[1]; +} else { +$this->indent = ' '; +} +} +} diff --git a/composer/src/Composer/Json/JsonValidationException.php b/composer/src/Composer/Json/JsonValidationException.php new file mode 100644 index 000000000..403fcd132 --- /dev/null +++ b/composer/src/Composer/Json/JsonValidationException.php @@ -0,0 +1,43 @@ +errors = $errors; +parent::__construct((string) $message, 0, $previous); +} + + + + +public function getErrors(): array +{ +return $this->errors; +} +} diff --git a/composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php b/composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php new file mode 100644 index 000000000..49478fa8c --- /dev/null +++ b/composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php @@ -0,0 +1,194 @@ + $conf) { +$type = $this->parseType($conf, $prop); + +$this->properties[$prop] = $type; +} +} + +public function getClass(): string +{ +return Config::class; +} + +public function isMethodSupported(MethodReflection $methodReflection): bool +{ +return strtolower($methodReflection->getName()) === 'get'; +} + +public function getTypeFromMethodCall(MethodReflection $methodReflection, MethodCall $methodCall, Scope $scope): Type +{ +$args = $methodCall->getArgs(); + +if (count($args) < 1) { +return ParametersAcceptorSelector::selectSingle($methodReflection->getVariants())->getReturnType(); +} + +$keyType = $scope->getType($args[0]->value); +if ($keyType instanceof ConstantStringType) { +if (isset($this->properties[$keyType->getValue()])) { +return $this->properties[$keyType->getValue()]; +} +} + +return ParametersAcceptorSelector::selectSingle($methodReflection->getVariants())->getReturnType(); +} + + + + +private function parseType(array $def, string $path): Type +{ +if (isset($def['type'])) { +$types = []; +foreach ((array) $def['type'] as $type) { +switch ($type) { +case 'integer': +if (in_array($path, ['process-timeout', 'cache-ttl', 'cache-files-ttl', 'cache-files-maxsize'], true)) { +$types[] = IntegerRangeType::createAllGreaterThanOrEqualTo(0); +} else { +$types[] = new IntegerType(); +} +break; + +case 'string': +if ($path === 'cache-files-maxsize') { + +} elseif ($path === 'discard-changes') { +$types[] = new ConstantStringType('stash'); +} elseif ($path === 'use-parent-dir') { +$types[] = new ConstantStringType('prompt'); +} elseif ($path === 'store-auths') { +$types[] = new ConstantStringType('prompt'); +} elseif ($path === 'platform-check') { +$types[] = new ConstantStringType('php-only'); +} elseif ($path === 'github-protocols') { +$types[] = new UnionType([new ConstantStringType('git'), new ConstantStringType('https'), new ConstantStringType('ssh'), new ConstantStringType('http')]); +} elseif (str_starts_with($path, 'preferred-install')) { +$types[] = new UnionType([new ConstantStringType('source'), new ConstantStringType('dist'), new ConstantStringType('auto')]); +} else { +$types[] = new StringType(); +} +break; + +case 'boolean': +if ($path === 'platform.additionalProperties') { +$types[] = new ConstantBooleanType(false); +} else { +$types[] = new BooleanType(); +} +break; + +case 'object': +$addlPropType = null; +if (isset($def['additionalProperties'])) { +$addlPropType = $this->parseType($def['additionalProperties'], $path.'.additionalProperties'); +} + +if (isset($def['properties'])) { +$keyNames = []; +$valTypes = []; +$optionalKeys = []; +$propIndex = 0; +foreach ($def['properties'] as $propName => $propdef) { +$keyNames[] = new ConstantStringType($propName); +$valType = $this->parseType($propdef, $path.'.'.$propName); +if (!isset($def['required']) || !in_array($propName, $def['required'], true)) { +$valType = TypeCombinator::addNull($valType); +$optionalKeys[] = $propIndex; +} +$valTypes[] = $valType; +$propIndex++; +} + +if ($addlPropType !== null) { +$types[] = new ArrayType(TypeCombinator::union(new StringType(), ...$keyNames), TypeCombinator::union($addlPropType, ...$valTypes)); +} else { +$types[] = new ConstantArrayType($keyNames, $valTypes, [0], $optionalKeys); +} +} else { +$types[] = new ArrayType(new StringType(), $addlPropType ?? new MixedType()); +} +break; + +case 'array': +if (isset($def['items'])) { +$valType = $this->parseType($def['items'], $path.'.items'); +} else { +$valType = new MixedType(); +} + +$types[] = new ArrayType(new IntegerType(), $valType); +break; + +default: +$types[] = new MixedType(); +} +} + +$type = TypeCombinator::union(...$types); +} elseif (isset($def['enum'])) { +$type = TypeCombinator::union(...array_map(static function (string $value): ConstantStringType { +return new ConstantStringType($value); +}, $def['enum'])); +} else { +$type = new MixedType(); +} + + +if ($path === 'allow-plugins' && time() < strtotime('2022-07-01')) { +$type = TypeCombinator::addNull($type); +} + + +if (in_array($path, ['autoloader-suffix', 'gitlab-protocol'], true)) { +$type = TypeCombinator::addNull($type); +} + +return $type; +} +} diff --git a/composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php b/composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php new file mode 100644 index 000000000..f1ad9b001 --- /dev/null +++ b/composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php @@ -0,0 +1,69 @@ +getName()) === 'getreasondata'; +} + +public function getTypeFromMethodCall(MethodReflection $methodReflection, MethodCall $methodCall, Scope $scope): Type +{ +$reasonType = $scope->getType(new MethodCall($methodCall->var, new Identifier('getReason'))); + +$types = [ +Rule::RULE_ROOT_REQUIRE => new ConstantArrayType([new ConstantStringType('packageName'), new ConstantStringType('constraint')], [new StringType, new ObjectType(ConstraintInterface::class)]), +Rule::RULE_FIXED => new ConstantArrayType([new ConstantStringType('package')], [new ObjectType(BasePackage::class)]), +Rule::RULE_PACKAGE_CONFLICT => new ObjectType(Link::class), +Rule::RULE_PACKAGE_REQUIRES => new ObjectType(Link::class), +Rule::RULE_PACKAGE_SAME_NAME => TypeCombinator::intersect(new StringType, new AccessoryNonEmptyStringType()), +Rule::RULE_LEARNED => new IntegerType(), +Rule::RULE_PACKAGE_ALIAS => new ObjectType(BasePackage::class), +Rule::RULE_PACKAGE_INVERSE_ALIAS => new ObjectType(BasePackage::class), +]; + +foreach ($types as $const => $type) { +if ((new ConstantIntegerType($const))->isSuperTypeOf($reasonType)->yes()) { +return $type; +} +} + +return TypeCombinator::union(...$types); +} +} diff --git a/composer/src/Composer/Package/AliasPackage.php b/composer/src/Composer/Package/AliasPackage.php new file mode 100644 index 000000000..b653ab343 --- /dev/null +++ b/composer/src/Composer/Package/AliasPackage.php @@ -0,0 +1,393 @@ +getName()); + +$this->version = $version; +$this->prettyVersion = $prettyVersion; +$this->aliasOf = $aliasOf; +$this->stability = VersionParser::parseStability($version); +$this->dev = $this->stability === 'dev'; + +foreach (Link::$TYPES as $type) { +$links = $aliasOf->{'get' . ucfirst($type)}(); +$this->{$type} = $this->replaceSelfVersionDependencies($links, $type); +} +} + + + + +public function getAliasOf() +{ +return $this->aliasOf; +} + + + + +public function getVersion(): string +{ +return $this->version; +} + + + + +public function getStability(): string +{ +return $this->stability; +} + + + + +public function getPrettyVersion(): string +{ +return $this->prettyVersion; +} + + + + +public function isDev(): bool +{ +return $this->dev; +} + + + + +public function getRequires(): array +{ +return $this->requires; +} + + + + + +public function getConflicts(): array +{ +return $this->conflicts; +} + + + + + +public function getProvides(): array +{ +return $this->provides; +} + + + + + +public function getReplaces(): array +{ +return $this->replaces; +} + + + + +public function getDevRequires(): array +{ +return $this->devRequires; +} + + + + + + +public function setRootPackageAlias(bool $value): void +{ +$this->rootPackageAlias = $value; +} + + + + +public function isRootPackageAlias(): bool +{ +return $this->rootPackageAlias; +} + + + + + + + +protected function replaceSelfVersionDependencies(array $links, $linkType): array +{ + +$prettyVersion = $this->prettyVersion; +if ($prettyVersion === VersionParser::DEFAULT_BRANCH_ALIAS) { +$prettyVersion = $this->aliasOf->getPrettyVersion(); +} + +if (\in_array($linkType, [Link::TYPE_CONFLICT, Link::TYPE_PROVIDE, Link::TYPE_REPLACE], true)) { +$newLinks = []; +foreach ($links as $link) { + +if ('self.version' === $link->getPrettyConstraint()) { +$newLinks[] = new Link($link->getSource(), $link->getTarget(), $constraint = new Constraint('=', $this->version), $linkType, $prettyVersion); +$constraint->setPrettyString($prettyVersion); +} +} +$links = array_merge($links, $newLinks); +} else { +foreach ($links as $index => $link) { +if ('self.version' === $link->getPrettyConstraint()) { +if ($linkType === Link::TYPE_REQUIRE) { +$this->hasSelfVersionRequires = true; +} +$links[$index] = new Link($link->getSource(), $link->getTarget(), $constraint = new Constraint('=', $this->version), $linkType, $prettyVersion); +$constraint->setPrettyString($prettyVersion); +} +} +} + +return $links; +} + +public function hasSelfVersionRequires(): bool +{ +return $this->hasSelfVersionRequires; +} + +public function __toString(): string +{ +return parent::__toString().' ('.($this->rootPackageAlias ? 'root ' : ''). 'alias of '.$this->aliasOf->getVersion().')'; +} + + + + + +public function getType(): string +{ +return $this->aliasOf->getType(); +} + +public function getTargetDir(): ?string +{ +return $this->aliasOf->getTargetDir(); +} + +public function getExtra(): array +{ +return $this->aliasOf->getExtra(); +} + +public function setInstallationSource(?string $type): void +{ +$this->aliasOf->setInstallationSource($type); +} + +public function getInstallationSource(): ?string +{ +return $this->aliasOf->getInstallationSource(); +} + +public function getSourceType(): ?string +{ +return $this->aliasOf->getSourceType(); +} + +public function getSourceUrl(): ?string +{ +return $this->aliasOf->getSourceUrl(); +} + +public function getSourceUrls(): array +{ +return $this->aliasOf->getSourceUrls(); +} + +public function getSourceReference(): ?string +{ +return $this->aliasOf->getSourceReference(); +} + +public function setSourceReference(?string $reference): void +{ +$this->aliasOf->setSourceReference($reference); +} + +public function setSourceMirrors(?array $mirrors): void +{ +$this->aliasOf->setSourceMirrors($mirrors); +} + +public function getSourceMirrors(): ?array +{ +return $this->aliasOf->getSourceMirrors(); +} + +public function getDistType(): ?string +{ +return $this->aliasOf->getDistType(); +} + +public function getDistUrl(): ?string +{ +return $this->aliasOf->getDistUrl(); +} + +public function getDistUrls(): array +{ +return $this->aliasOf->getDistUrls(); +} + +public function getDistReference(): ?string +{ +return $this->aliasOf->getDistReference(); +} + +public function setDistReference(?string $reference): void +{ +$this->aliasOf->setDistReference($reference); +} + +public function getDistSha1Checksum(): ?string +{ +return $this->aliasOf->getDistSha1Checksum(); +} + +public function setTransportOptions(array $options): void +{ +$this->aliasOf->setTransportOptions($options); +} + +public function getTransportOptions(): array +{ +return $this->aliasOf->getTransportOptions(); +} + +public function setDistMirrors(?array $mirrors): void +{ +$this->aliasOf->setDistMirrors($mirrors); +} + +public function getDistMirrors(): ?array +{ +return $this->aliasOf->getDistMirrors(); +} + +public function getAutoload(): array +{ +return $this->aliasOf->getAutoload(); +} + +public function getDevAutoload(): array +{ +return $this->aliasOf->getDevAutoload(); +} + +public function getIncludePaths(): array +{ +return $this->aliasOf->getIncludePaths(); +} + +public function getReleaseDate(): ?\DateTimeInterface +{ +return $this->aliasOf->getReleaseDate(); +} + +public function getBinaries(): array +{ +return $this->aliasOf->getBinaries(); +} + +public function getSuggests(): array +{ +return $this->aliasOf->getSuggests(); +} + +public function getNotificationUrl(): ?string +{ +return $this->aliasOf->getNotificationUrl(); +} + +public function isDefaultBranch(): bool +{ +return $this->aliasOf->isDefaultBranch(); +} + +public function setDistUrl(?string $url): void +{ +$this->aliasOf->setDistUrl($url); +} + +public function setDistType(?string $type): void +{ +$this->aliasOf->setDistType($type); +} + +public function setSourceDistReferences(string $reference): void +{ +$this->aliasOf->setSourceDistReferences($reference); +} +} diff --git a/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php b/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php new file mode 100644 index 000000000..01d7afa6b --- /dev/null +++ b/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php @@ -0,0 +1,50 @@ +getInnerIterator()->current(); +if ($file->isDir()) { +$this->dirs[] = (string) $file; + +return false; +} + +return true; +} + +public function addEmptyDir(PharData $phar, string $sources): void +{ +foreach ($this->dirs as $filepath) { +$localname = str_replace($sources . "/", '', $filepath); +$phar->addEmptyDir($localname); +} +} +} diff --git a/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php b/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php new file mode 100644 index 000000000..981ec86a3 --- /dev/null +++ b/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php @@ -0,0 +1,109 @@ +normalizePath(realpath($sources)); + +if ($ignoreFilters) { +$filters = []; +} else { +$filters = [ +new GitExcludeFilter($sources), +new ComposerExcludeFilter($sources, $excludes), +]; +} + +$this->finder = new Finder(); + +$filter = static function (\SplFileInfo $file) use ($sources, $filters, $fs): bool { +if ($file->isLink() && ($file->getRealPath() === false || strpos($file->getRealPath(), $sources) !== 0)) { +return false; +} + +$relativePath = Preg::replace( +'#^'.preg_quote($sources, '#').'#', +'', +$fs->normalizePath($file->getRealPath()) +); + +$exclude = false; +foreach ($filters as $filter) { +$exclude = $filter->filter($relativePath, $exclude); +} + +return !$exclude; +}; + +if (method_exists($filter, 'bindTo')) { +$filter = $filter->bindTo(null); +} + +$this->finder +->in($sources) +->filter($filter) +->ignoreVCS(true) +->ignoreDotFiles(false) +->sortByName(); + +parent::__construct($this->finder->getIterator()); +} + +public function accept(): bool +{ + +$current = $this->getInnerIterator()->current(); + +if (!$current->isDir()) { +return true; +} + +$iterator = new FilesystemIterator((string) $current, FilesystemIterator::SKIP_DOTS); + +return !$iterator->valid(); +} +} diff --git a/composer/src/Composer/Package/Archiver/ArchiveManager.php b/composer/src/Composer/Package/Archiver/ArchiveManager.php new file mode 100644 index 000000000..c3d06fa4f --- /dev/null +++ b/composer/src/Composer/Package/Archiver/ArchiveManager.php @@ -0,0 +1,287 @@ +downloadManager = $downloadManager; +$this->loop = $loop; +} + +public function addArchiver(ArchiverInterface $archiver): void +{ +$this->archivers[] = $archiver; +} + + + + + + + + +public function setOverwriteFiles(bool $overwriteFiles): self +{ +$this->overwriteFiles = $overwriteFiles; + +return $this; +} + + + + + +public function getPackageFilenameParts(CompletePackageInterface $package): array +{ +$baseName = $package->getArchiveName(); +if (null === $baseName) { +$baseName = Preg::replace('#[^a-z0-9-_]#i', '-', $package->getName()); +} + +$parts = [ +'base' => $baseName, +]; + +$distReference = $package->getDistReference(); +if (null !== $distReference && Preg::isMatch('{^[a-f0-9]{40}$}', $distReference)) { +$parts['dist_reference'] = $distReference; +$parts['dist_type'] = $package->getDistType(); +} else { +$parts['version'] = $package->getPrettyVersion(); +$parts['dist_reference'] = $distReference; +} + +$sourceReference = $package->getSourceReference(); +if (null !== $sourceReference) { +$parts['source_reference'] = substr(sha1($sourceReference), 0, 6); +} + +$parts = array_filter($parts); +foreach ($parts as $key => $part) { +$parts[$key] = str_replace('/', '-', $part); +} + +return $parts; +} + + + + + + + +public function getPackageFilenameFromParts(array $parts): string +{ +return implode('-', $parts); +} + + + + + + + + +public function getPackageFilename(CompletePackageInterface $package): string +{ +return $this->getPackageFilenameFromParts($this->getPackageFilenameParts($package)); +} + + + + + + + + + + + + + + +public function archive(CompletePackageInterface $package, string $format, string $targetDir, ?string $fileName = null, bool $ignoreFilters = false): string +{ +if (empty($format)) { +throw new \InvalidArgumentException('Format must be specified'); +} + + +$usableArchiver = null; +foreach ($this->archivers as $archiver) { +if ($archiver->supports($format, $package->getSourceType())) { +$usableArchiver = $archiver; +break; +} +} + + +if (null === $usableArchiver) { +throw new \RuntimeException(sprintf('No archiver found to support %s format', $format)); +} + +$filesystem = new Filesystem(); + +if ($package instanceof RootPackageInterface) { +$sourcePath = realpath('.'); +} else { + +$sourcePath = sys_get_temp_dir().'/composer_archive'.uniqid(); +$filesystem->ensureDirectoryExists($sourcePath); + +try { + +$promise = $this->downloadManager->download($package, $sourcePath); +SyncHelper::await($this->loop, $promise); +$promise = $this->downloadManager->install($package, $sourcePath); +SyncHelper::await($this->loop, $promise); +} catch (\Exception $e) { +$filesystem->removeDirectory($sourcePath); +throw $e; +} + + +if (file_exists($composerJsonPath = $sourcePath.'/composer.json')) { +$jsonFile = new JsonFile($composerJsonPath); +$jsonData = $jsonFile->read(); +if (!empty($jsonData['archive']['name'])) { +$package->setArchiveName($jsonData['archive']['name']); +} +if (!empty($jsonData['archive']['exclude'])) { +$package->setArchiveExcludes($jsonData['archive']['exclude']); +} +} +} + +$supportedFormats = $this->getSupportedFormats(); +$packageNameParts = null === $fileName ? +$this->getPackageFilenameParts($package) +: ['base' => $fileName]; + +$packageName = $this->getPackageFilenameFromParts($packageNameParts); +$excludePatterns = $this->buildExcludePatterns($packageNameParts, $supportedFormats); + + +$filesystem->ensureDirectoryExists($targetDir); +$target = realpath($targetDir).'/'.$packageName.'.'.$format; +$filesystem->ensureDirectoryExists(dirname($target)); + +if (!$this->overwriteFiles && file_exists($target)) { +return $target; +} + + +$tempTarget = sys_get_temp_dir().'/composer_archive'.uniqid().'.'.$format; +$filesystem->ensureDirectoryExists(dirname($tempTarget)); + +$archivePath = $usableArchiver->archive( +$sourcePath, +$tempTarget, +$format, +array_merge($excludePatterns, $package->getArchiveExcludes()), +$ignoreFilters +); +$filesystem->rename($archivePath, $target); + + +if (!$package instanceof RootPackageInterface) { +$filesystem->removeDirectory($sourcePath); +} +$filesystem->remove($tempTarget); + +return $target; +} + + + + + + + +private function buildExcludePatterns(array $parts, array $formats): array +{ +$base = $parts['base']; +if (count($parts) > 1) { +$base .= '-*'; +} + +$patterns = []; +foreach ($formats as $format) { +$patterns[] = "$base.$format"; +} + +return $patterns; +} + + + + +private function getSupportedFormats(): array +{ + + + + + +$formats = []; +foreach ($this->archivers as $archiver) { +$items = []; +switch (get_class($archiver)) { +case ZipArchiver::class: +$items = ['zip']; +break; + +case PharArchiver::class: +$items = ['zip', 'tar', 'tar.gz', 'tar.bz2']; +break; +} + +$formats = array_merge($formats, $items); +} + +return array_unique($formats); +} +} diff --git a/composer/src/Composer/Package/Archiver/ArchiverInterface.php b/composer/src/Composer/Package/Archiver/ArchiverInterface.php new file mode 100644 index 000000000..d3cb6c6f8 --- /dev/null +++ b/composer/src/Composer/Package/Archiver/ArchiverInterface.php @@ -0,0 +1,44 @@ +sourcePath = $sourcePath; +$this->excludePatterns = []; +} + + + + + + + + + + + +public function filter(string $relativePath, bool $exclude): bool +{ +foreach ($this->excludePatterns as $patternData) { +[$pattern, $negate, $stripLeadingSlash] = $patternData; + +if ($stripLeadingSlash) { +$path = substr($relativePath, 1); +} else { +$path = $relativePath; +} + +try { +if (Preg::isMatch($pattern, $path)) { +$exclude = !$negate; +} +} catch (\RuntimeException $e) { + +} +} + +return $exclude; +} + + + + + + + + + +protected function parseLines(array $lines, callable $lineParser): array +{ +return array_filter( +array_map( +static function ($line) use ($lineParser) { +$line = trim($line); + +if (!$line || 0 === strpos($line, '#')) { +return null; +} + +return $lineParser($line); +}, +$lines +), +static function ($pattern): bool { +return $pattern !== null; +} +); +} + + + + + + + + +protected function generatePatterns(array $rules): array +{ +$patterns = []; +foreach ($rules as $rule) { +$patterns[] = $this->generatePattern($rule); +} + +return $patterns; +} + + + + + + + + +protected function generatePattern(string $rule): array +{ +$negate = false; +$pattern = ''; + +if ($rule !== '' && $rule[0] === '!') { +$negate = true; +$rule = ltrim($rule, '!'); +} + +$firstSlashPosition = strpos($rule, '/'); +if (0 === $firstSlashPosition) { +$pattern = '^/'; +} elseif (false === $firstSlashPosition || strlen($rule) - 1 === $firstSlashPosition) { +$pattern = '/'; +} + +$rule = trim($rule, '/'); + + +$rule = substr(Finder\Glob::toRegex($rule), 2, -2); + +return ['{'.$pattern.$rule.'(?=$|/)}', $negate, false]; +} +} diff --git a/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php b/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php new file mode 100644 index 000000000..bce122ae1 --- /dev/null +++ b/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php @@ -0,0 +1,31 @@ +excludePatterns = $this->generatePatterns($excludeRules); +} +} diff --git a/composer/src/Composer/Package/Archiver/GitExcludeFilter.php b/composer/src/Composer/Package/Archiver/GitExcludeFilter.php new file mode 100644 index 000000000..7932f05ef --- /dev/null +++ b/composer/src/Composer/Package/Archiver/GitExcludeFilter.php @@ -0,0 +1,65 @@ +excludePatterns = array_merge( +$this->excludePatterns, +$this->parseLines( +file($sourcePath.'/.gitattributes'), +[$this, 'parseGitAttributesLine'] +) +); +} +} + + + + + + + + +public function parseGitAttributesLine(string $line): ?array +{ +$parts = Preg::split('#\s+#', $line); + +if (count($parts) === 2 && $parts[1] === 'export-ignore') { +return $this->generatePattern($parts[0]); +} + +if (count($parts) === 2 && $parts[1] === '-export-ignore') { +return $this->generatePattern('!'.$parts[0]); +} + +return null; +} +} diff --git a/composer/src/Composer/Package/Archiver/PharArchiver.php b/composer/src/Composer/Package/Archiver/PharArchiver.php new file mode 100644 index 000000000..f48cbc6d2 --- /dev/null +++ b/composer/src/Composer/Package/Archiver/PharArchiver.php @@ -0,0 +1,104 @@ + \Phar::ZIP, +'tar' => \Phar::TAR, +'tar.gz' => \Phar::TAR, +'tar.bz2' => \Phar::TAR, +]; + + +protected static $compressFormats = [ +'tar.gz' => \Phar::GZ, +'tar.bz2' => \Phar::BZ2, +]; + + + + +public function archive(string $sources, string $target, string $format, array $excludes = [], bool $ignoreFilters = false): string +{ +$sources = realpath($sources); + + +if (file_exists($target)) { +unlink($target); +} + +try { +$filename = substr($target, 0, strrpos($target, $format) - 1); + + +if (isset(static::$compressFormats[$format])) { + +$target = $filename . '.tar'; +} + +$phar = new \PharData( +$target, +\FilesystemIterator::KEY_AS_PATHNAME | \FilesystemIterator::CURRENT_AS_FILEINFO, +'', +static::$formats[$format] +); +$files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); +$filesOnly = new ArchivableFilesFilter($files); +$phar->buildFromIterator($filesOnly, $sources); +$filesOnly->addEmptyDir($phar, $sources); + +if (isset(static::$compressFormats[$format])) { + +if (!$phar->canCompress(static::$compressFormats[$format])) { +throw new \RuntimeException(sprintf('Can not compress to %s format', $format)); +} + + +unlink($target); + + +$phar->compress(static::$compressFormats[$format]); + + +$target = $filename . '.' . $format; +} + +return $target; +} catch (\UnexpectedValueException $e) { +$message = sprintf( +"Could not create archive '%s' from '%s': %s", +$target, +$sources, +$e->getMessage() +); + +throw new \RuntimeException($message, $e->getCode(), $e); +} +} + + + + +public function supports(string $format, ?string $sourceType): bool +{ +return isset(static::$formats[$format]); +} +} diff --git a/composer/src/Composer/Package/Archiver/ZipArchiver.php b/composer/src/Composer/Package/Archiver/ZipArchiver.php new file mode 100644 index 000000000..d1f06ea83 --- /dev/null +++ b/composer/src/Composer/Package/Archiver/ZipArchiver.php @@ -0,0 +1,90 @@ + true, +]; + + + + +public function archive(string $sources, string $target, string $format, array $excludes = [], bool $ignoreFilters = false): string +{ +$fs = new Filesystem(); +$sources = $fs->normalizePath($sources); + +$zip = new ZipArchive(); +$res = $zip->open($target, ZipArchive::CREATE); +if ($res === true) { +$files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); +foreach ($files as $file) { + +$filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/'); +$localname = $filepath; +if (strpos($localname, $sources . '/') === 0) { +$localname = substr($localname, strlen($sources . '/')); +} +if ($file->isDir()) { +$zip->addEmptyDir($localname); +} else { +$zip->addFile($filepath, $localname); +} + + + + +if (method_exists($zip, 'setExternalAttributesName')) { +$perms = fileperms($filepath); + + + + +$zip->setExternalAttributesName($localname, ZipArchive::OPSYS_UNIX, $perms << 16); +} +} +if ($zip->close()) { +return $target; +} +} +$message = sprintf( +"Could not create archive '%s' from '%s': %s", +$target, +$sources, +$zip->getStatusString() +); +throw new \RuntimeException($message); +} + + + + +public function supports(string $format, ?string $sourceType): bool +{ +return isset(static::$formats[$format]) && $this->compressionAvailable(); +} + +private function compressionAvailable(): bool +{ +return class_exists('ZipArchive'); +} +} diff --git a/composer/src/Composer/Package/BasePackage.php b/composer/src/Composer/Package/BasePackage.php new file mode 100644 index 000000000..31f32b395 --- /dev/null +++ b/composer/src/Composer/Package/BasePackage.php @@ -0,0 +1,277 @@ + ['description' => 'requires', 'method' => Link::TYPE_REQUIRE], +'conflict' => ['description' => 'conflicts', 'method' => Link::TYPE_CONFLICT], +'provide' => ['description' => 'provides', 'method' => Link::TYPE_PROVIDE], +'replace' => ['description' => 'replaces', 'method' => Link::TYPE_REPLACE], +'require-dev' => ['description' => 'requires (for development)', 'method' => Link::TYPE_DEV_REQUIRE], +]; + +public const STABILITY_STABLE = 0; +public const STABILITY_RC = 5; +public const STABILITY_BETA = 10; +public const STABILITY_ALPHA = 15; +public const STABILITY_DEV = 20; + + +public static $stabilities = [ +'stable' => self::STABILITY_STABLE, +'RC' => self::STABILITY_RC, +'beta' => self::STABILITY_BETA, +'alpha' => self::STABILITY_ALPHA, +'dev' => self::STABILITY_DEV, +]; + + + + + + +public $id; + +protected $name; + +protected $prettyName; + +protected $repository = null; + + + + + + +public function __construct(string $name) +{ +$this->prettyName = $name; +$this->name = strtolower($name); +$this->id = -1; +} + + + + +public function getName(): string +{ +return $this->name; +} + + + + +public function getPrettyName(): string +{ +return $this->prettyName; +} + + + + +public function getNames($provides = true): array +{ +$names = [ +$this->getName() => true, +]; + +if ($provides) { +foreach ($this->getProvides() as $link) { +$names[$link->getTarget()] = true; +} +} + +foreach ($this->getReplaces() as $link) { +$names[$link->getTarget()] = true; +} + +return array_keys($names); +} + + + + +public function setId(int $id): void +{ +$this->id = $id; +} + + + + +public function getId(): int +{ +return $this->id; +} + + + + +public function setRepository(RepositoryInterface $repository): void +{ +if ($this->repository && $repository !== $this->repository) { +throw new \LogicException(sprintf( +'Package "%s" cannot be added to repository "%s" as it is already in repository "%s".', +$this->getPrettyName(), +$repository->getRepoName(), +$this->repository->getRepoName() +)); +} +$this->repository = $repository; +} + + + + +public function getRepository(): ?RepositoryInterface +{ +return $this->repository; +} + + + + +public function isPlatform(): bool +{ +return $this->getRepository() instanceof PlatformRepository; +} + + + + +public function getUniqueName(): string +{ +return $this->getName().'-'.$this->getVersion(); +} + +public function equals(PackageInterface $package): bool +{ +$self = $this; +if ($this instanceof AliasPackage) { +$self = $this->getAliasOf(); +} +if ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} + +return $package === $self; +} + + + + +public function __toString(): string +{ +return $this->getUniqueName(); +} + +public function getPrettyString(): string +{ +return $this->getPrettyName().' '.$this->getPrettyVersion(); +} + + + + +public function getFullPrettyVersion(bool $truncate = true, int $displayMode = PackageInterface::DISPLAY_SOURCE_REF_IF_DEV): string +{ +if ($displayMode === PackageInterface::DISPLAY_SOURCE_REF_IF_DEV && +(!$this->isDev() || !\in_array($this->getSourceType(), ['hg', 'git'])) +) { +return $this->getPrettyVersion(); +} + +switch ($displayMode) { +case PackageInterface::DISPLAY_SOURCE_REF_IF_DEV: +case PackageInterface::DISPLAY_SOURCE_REF: +$reference = $this->getSourceReference(); +break; +case PackageInterface::DISPLAY_DIST_REF: +$reference = $this->getDistReference(); +break; +default: +throw new \UnexpectedValueException('Display mode '.$displayMode.' is not supported'); +} + +if (null === $reference) { +return $this->getPrettyVersion(); +} + + +if ($truncate && \strlen($reference) === 40 && $this->getSourceType() !== 'svn') { +return $this->getPrettyVersion() . ' ' . substr($reference, 0, 7); +} + +return $this->getPrettyVersion() . ' ' . $reference; +} + + + + +public function getStabilityPriority(): int +{ +return self::$stabilities[$this->getStability()]; +} + +public function __clone() +{ +$this->repository = null; +$this->id = -1; +} + + + + + + + +public static function packageNameToRegexp(string $allowPattern, string $wrap = '{^%s$}i'): string +{ +$cleanedAllowPattern = str_replace('\\*', '.*', preg_quote($allowPattern)); + +return sprintf($wrap, $cleanedAllowPattern); +} + + + + + + + + +public static function packageNamesToRegexp(array $packageNames, string $wrap = '{^(?:%s)$}iD'): string +{ +$packageNames = array_map( +static function ($packageName): string { +return BasePackage::packageNameToRegexp($packageName, '%s'); +}, +$packageNames +); + +return sprintf($wrap, implode('|', $packageNames)); +} +} diff --git a/composer/src/Composer/Package/Comparer/Comparer.php b/composer/src/Composer/Package/Comparer/Comparer.php new file mode 100644 index 000000000..eb0233504 --- /dev/null +++ b/composer/src/Composer/Package/Comparer/Comparer.php @@ -0,0 +1,152 @@ +source = $source; +} + +public function setUpdate(string $update): void +{ +$this->update = $update; +} + + + + +public function getChanged(bool $explicated = false) +{ +$changed = $this->changed; +if (!count($changed)) { +return false; +} +if ($explicated) { +foreach ($changed as $sectionKey => $itemSection) { +foreach ($itemSection as $itemKey => $item) { +$changed[$sectionKey][$itemKey] = $item.' ('.$sectionKey.')'; +} +} +} + +return $changed; +} + + + + +public function getChangedAsString(bool $toString = false, bool $explicated = false): string +{ +$changed = $this->getChanged($explicated); +if (false === $changed) { +return ''; +} + +$strings = []; +foreach ($changed as $sectionKey => $itemSection) { +foreach ($itemSection as $itemKey => $item) { +$strings[] = $item."\r\n"; +} +} + +return trim(implode("\r\n", $strings)); +} + +public function doCompare(): void +{ +$source = []; +$destination = []; +$this->changed = []; +$currentDirectory = Platform::getCwd(); +chdir($this->source); +$source = $this->doTree('.', $source); +if (!is_array($source)) { +return; +} +chdir($currentDirectory); +chdir($this->update); +$destination = $this->doTree('.', $destination); +if (!is_array($destination)) { +exit; +} +chdir($currentDirectory); +foreach ($source as $dir => $value) { +foreach ($value as $file => $hash) { +if (isset($destination[$dir][$file])) { +if ($hash !== $destination[$dir][$file]) { +$this->changed['changed'][] = $dir.'/'.$file; +} +} else { +$this->changed['removed'][] = $dir.'/'.$file; +} +} +} +foreach ($destination as $dir => $value) { +foreach ($value as $file => $hash) { +if (!isset($source[$dir][$file])) { +$this->changed['added'][] = $dir.'/'.$file; +} +} +} +} + + + + + + +private function doTree(string $dir, array &$array) +{ +if ($dh = opendir($dir)) { +while ($file = readdir($dh)) { +if ($file !== '.' && $file !== '..') { +if (is_link($dir.'/'.$file)) { +$array[$dir][$file] = readlink($dir.'/'.$file); +} elseif (is_dir($dir.'/'.$file)) { +if (!count($array)) { +$array[0] = 'Temp'; +} +if (!$this->doTree($dir.'/'.$file, $array)) { +return false; +} +} elseif (is_file($dir.'/'.$file) && filesize($dir.'/'.$file)) { +$array[$dir][$file] = md5_file($dir.'/'.$file); +} +} +} +if (count($array) > 1 && isset($array['0'])) { +unset($array['0']); +} + +return $array; +} + +return false; +} +} diff --git a/composer/src/Composer/Package/CompleteAliasPackage.php b/composer/src/Composer/Package/CompleteAliasPackage.php new file mode 100644 index 000000000..7d4395ef6 --- /dev/null +++ b/composer/src/Composer/Package/CompleteAliasPackage.php @@ -0,0 +1,167 @@ +aliasOf; +} + +public function getScripts(): array +{ +return $this->aliasOf->getScripts(); +} + +public function setScripts(array $scripts): void +{ +$this->aliasOf->setScripts($scripts); +} + +public function getRepositories(): array +{ +return $this->aliasOf->getRepositories(); +} + +public function setRepositories(array $repositories): void +{ +$this->aliasOf->setRepositories($repositories); +} + +public function getLicense(): array +{ +return $this->aliasOf->getLicense(); +} + +public function setLicense(array $license): void +{ +$this->aliasOf->setLicense($license); +} + +public function getKeywords(): array +{ +return $this->aliasOf->getKeywords(); +} + +public function setKeywords(array $keywords): void +{ +$this->aliasOf->setKeywords($keywords); +} + +public function getDescription(): ?string +{ +return $this->aliasOf->getDescription(); +} + +public function setDescription(?string $description): void +{ +$this->aliasOf->setDescription($description); +} + +public function getHomepage(): ?string +{ +return $this->aliasOf->getHomepage(); +} + +public function setHomepage(?string $homepage): void +{ +$this->aliasOf->setHomepage($homepage); +} + +public function getAuthors(): array +{ +return $this->aliasOf->getAuthors(); +} + +public function setAuthors(array $authors): void +{ +$this->aliasOf->setAuthors($authors); +} + +public function getSupport(): array +{ +return $this->aliasOf->getSupport(); +} + +public function setSupport(array $support): void +{ +$this->aliasOf->setSupport($support); +} + +public function getFunding(): array +{ +return $this->aliasOf->getFunding(); +} + +public function setFunding(array $funding): void +{ +$this->aliasOf->setFunding($funding); +} + +public function isAbandoned(): bool +{ +return $this->aliasOf->isAbandoned(); +} + +public function getReplacementPackage(): ?string +{ +return $this->aliasOf->getReplacementPackage(); +} + +public function setAbandoned($abandoned): void +{ +$this->aliasOf->setAbandoned($abandoned); +} + +public function getArchiveName(): ?string +{ +return $this->aliasOf->getArchiveName(); +} + +public function setArchiveName(?string $name): void +{ +$this->aliasOf->setArchiveName($name); +} + +public function getArchiveExcludes(): array +{ +return $this->aliasOf->getArchiveExcludes(); +} + +public function setArchiveExcludes(array $excludes): void +{ +$this->aliasOf->setArchiveExcludes($excludes); +} +} diff --git a/composer/src/Composer/Package/CompletePackage.php b/composer/src/Composer/Package/CompletePackage.php new file mode 100644 index 000000000..c1dcce280 --- /dev/null +++ b/composer/src/Composer/Package/CompletePackage.php @@ -0,0 +1,246 @@ +scripts = $scripts; +} + + + + +public function getScripts(): array +{ +return $this->scripts; +} + + + + +public function setRepositories(array $repositories): void +{ +$this->repositories = $repositories; +} + + + + +public function getRepositories(): array +{ +return $this->repositories; +} + + + + +public function setLicense(array $license): void +{ +$this->license = $license; +} + + + + +public function getLicense(): array +{ +return $this->license; +} + + + + +public function setKeywords(array $keywords): void +{ +$this->keywords = $keywords; +} + + + + +public function getKeywords(): array +{ +return $this->keywords; +} + + + + +public function setAuthors(array $authors): void +{ +$this->authors = $authors; +} + + + + +public function getAuthors(): array +{ +return $this->authors; +} + + + + +public function setDescription(?string $description): void +{ +$this->description = $description; +} + + + + +public function getDescription(): ?string +{ +return $this->description; +} + + + + +public function setHomepage(?string $homepage): void +{ +$this->homepage = $homepage; +} + + + + +public function getHomepage(): ?string +{ +return $this->homepage; +} + + + + +public function setSupport(array $support): void +{ +$this->support = $support; +} + + + + +public function getSupport(): array +{ +return $this->support; +} + + + + +public function setFunding(array $funding): void +{ +$this->funding = $funding; +} + + + + +public function getFunding(): array +{ +return $this->funding; +} + + + + +public function isAbandoned(): bool +{ +return (bool) $this->abandoned; +} + + + + +public function setAbandoned($abandoned): void +{ +$this->abandoned = $abandoned; +} + + + + +public function getReplacementPackage(): ?string +{ +return \is_string($this->abandoned) ? $this->abandoned : null; +} + + + + +public function setArchiveName(?string $name): void +{ +$this->archiveName = $name; +} + + + + +public function getArchiveName(): ?string +{ +return $this->archiveName; +} + + + + +public function setArchiveExcludes(array $excludes): void +{ +$this->archiveExcludes = $excludes; +} + + + + +public function getArchiveExcludes(): array +{ +return $this->archiveExcludes; +} +} diff --git a/composer/src/Composer/Package/CompletePackageInterface.php b/composer/src/Composer/Package/CompletePackageInterface.php new file mode 100644 index 000000000..eb0655832 --- /dev/null +++ b/composer/src/Composer/Package/CompletePackageInterface.php @@ -0,0 +1,188 @@ + 'bin', +'type', +'extra', +'installationSource' => 'installation-source', +'autoload', +'devAutoload' => 'autoload-dev', +'notificationUrl' => 'notification-url', +'includePaths' => 'include-path', +]; + +$data = []; +$data['name'] = $package->getPrettyName(); +$data['version'] = $package->getPrettyVersion(); +$data['version_normalized'] = $package->getVersion(); + +if ($package->getTargetDir()) { +$data['target-dir'] = $package->getTargetDir(); +} + +if ($package->getSourceType()) { +$data['source']['type'] = $package->getSourceType(); +$data['source']['url'] = $package->getSourceUrl(); +if (null !== ($value = $package->getSourceReference())) { +$data['source']['reference'] = $value; +} +if ($mirrors = $package->getSourceMirrors()) { +$data['source']['mirrors'] = $mirrors; +} +} + +if ($package->getDistType()) { +$data['dist']['type'] = $package->getDistType(); +$data['dist']['url'] = $package->getDistUrl(); +if (null !== ($value = $package->getDistReference())) { +$data['dist']['reference'] = $value; +} +if (null !== ($value = $package->getDistSha1Checksum())) { +$data['dist']['shasum'] = $value; +} +if ($mirrors = $package->getDistMirrors()) { +$data['dist']['mirrors'] = $mirrors; +} +} + +foreach (BasePackage::$supportedLinkTypes as $type => $opts) { +if ($links = $package->{'get'.ucfirst($opts['method'])}()) { +foreach ($links as $link) { +$data[$type][$link->getTarget()] = $link->getPrettyConstraint(); +} +ksort($data[$type]); +} +} + +if ($packages = $package->getSuggests()) { +ksort($packages); +$data['suggest'] = $packages; +} + +if ($package->getReleaseDate() instanceof \DateTimeInterface) { +$data['time'] = $package->getReleaseDate()->format(DATE_RFC3339); +} + +if ($package->isDefaultBranch()) { +$data['default-branch'] = true; +} + +$data = $this->dumpValues($package, $keys, $data); + +if ($package instanceof CompletePackageInterface) { +if ($package->getArchiveName()) { +$data['archive']['name'] = $package->getArchiveName(); +} +if ($package->getArchiveExcludes()) { +$data['archive']['exclude'] = $package->getArchiveExcludes(); +} + +$keys = [ +'scripts', +'license', +'authors', +'description', +'homepage', +'keywords', +'repositories', +'support', +'funding', +]; + +$data = $this->dumpValues($package, $keys, $data); + +if (isset($data['keywords']) && \is_array($data['keywords'])) { +sort($data['keywords']); +} + +if ($package->isAbandoned()) { +$data['abandoned'] = $package->getReplacementPackage() ?: true; +} +} + +if ($package instanceof RootPackageInterface) { +$minimumStability = $package->getMinimumStability(); +if ($minimumStability) { +$data['minimum-stability'] = $minimumStability; +} +} + +if (\count($package->getTransportOptions()) > 0) { +$data['transport-options'] = $package->getTransportOptions(); +} + +return $data; +} + + + + + + + +private function dumpValues(PackageInterface $package, array $keys, array $data): array +{ +foreach ($keys as $method => $key) { +if (is_numeric($method)) { +$method = $key; +} + +$getter = 'get'.ucfirst($method); +$value = $package->{$getter}(); + +if (null !== $value && !(\is_array($value) && 0 === \count($value))) { +$data[$key] = $value; +} +} + +return $data; +} +} diff --git a/composer/src/Composer/Package/Link.php b/composer/src/Composer/Package/Link.php new file mode 100644 index 000000000..a42f839f9 --- /dev/null +++ b/composer/src/Composer/Package/Link.php @@ -0,0 +1,140 @@ +source = strtolower($source); +$this->target = strtolower($target); +$this->constraint = $constraint; +$this->description = self::TYPE_DEV_REQUIRE === $description ? 'requires (for development)' : $description; +$this->prettyConstraint = $prettyConstraint; +} + +public function getDescription(): string +{ +return $this->description; +} + +public function getSource(): string +{ +return $this->source; +} + +public function getTarget(): string +{ +return $this->target; +} + +public function getConstraint(): ConstraintInterface +{ +return $this->constraint; +} + + + + +public function getPrettyConstraint(): string +{ +if (null === $this->prettyConstraint) { +throw new \UnexpectedValueException(sprintf('Link %s has been misconfigured and had no prettyConstraint given.', $this)); +} + +return $this->prettyConstraint; +} + +public function __toString(): string +{ +return $this->source.' '.$this->description.' '.$this->target.' ('.$this->constraint.')'; +} + +public function getPrettyString(PackageInterface $sourcePackage): string +{ +return $sourcePackage->getPrettyString().' '.$this->description.' '.$this->target.' '.$this->constraint->getPrettyString(); +} +} diff --git a/composer/src/Composer/Package/Loader/ArrayLoader.php b/composer/src/Composer/Package/Loader/ArrayLoader.php new file mode 100644 index 000000000..5c9ae5d47 --- /dev/null +++ b/composer/src/Composer/Package/Loader/ArrayLoader.php @@ -0,0 +1,465 @@ +versionParser = $parser; +$this->loadOptions = $loadOptions; +} + + + + +public function load(array $config, string $class = 'Composer\Package\CompletePackage'): BasePackage +{ +if ($class !== 'Composer\Package\CompletePackage' && $class !== 'Composer\Package\RootPackage') { +trigger_error('The $class arg is deprecated, please reach out to Composer maintainers ASAP if you still need this.', E_USER_DEPRECATED); +} + +$package = $this->createObject($config, $class); + +foreach (BasePackage::$supportedLinkTypes as $type => $opts) { +if (!isset($config[$type]) || !is_array($config[$type])) { +continue; +} +$method = 'set'.ucfirst($opts['method']); +$package->{$method}( +$this->parseLinks( +$package->getName(), +$package->getPrettyVersion(), +$opts['method'], +$config[$type] +) +); +} + +$package = $this->configureObject($package, $config); + +return $package; +} + + + + + + +public function loadPackages(array $versions): array +{ +$packages = []; +$linkCache = []; + +foreach ($versions as $version) { +$package = $this->createObject($version, 'Composer\Package\CompletePackage'); + +$this->configureCachedLinks($linkCache, $package, $version); +$package = $this->configureObject($package, $version); + +$packages[] = $package; +} + +return $packages; +} + + + + + + + + + + + +private function createObject(array $config, string $class): CompletePackage +{ +if (!isset($config['name'])) { +throw new \UnexpectedValueException('Unknown package has no name defined ('.json_encode($config).').'); +} +if (!isset($config['version']) || !is_scalar($config['version'])) { +throw new \UnexpectedValueException('Package '.$config['name'].' has no version defined.'); +} +if (!is_string($config['version'])) { +$config['version'] = (string) $config['version']; +} + + +if (isset($config['version_normalized']) && is_string($config['version_normalized'])) { +$version = $config['version_normalized']; + + +if ($version === VersionParser::DEFAULT_BRANCH_ALIAS) { +$version = $this->versionParser->normalize($config['version']); +} +} else { +$version = $this->versionParser->normalize($config['version']); +} + +return new $class($config['name'], $version, $config['version']); +} + + + + + + + +private function configureObject(PackageInterface $package, array $config): BasePackage +{ +if (!$package instanceof CompletePackage) { +throw new \LogicException('ArrayLoader expects instances of the Composer\Package\CompletePackage class to function correctly'); +} + +$package->setType(isset($config['type']) ? strtolower($config['type']) : 'library'); + +if (isset($config['target-dir'])) { +$package->setTargetDir($config['target-dir']); +} + +if (isset($config['extra']) && \is_array($config['extra'])) { +$package->setExtra($config['extra']); +} + +if (isset($config['bin'])) { +if (!\is_array($config['bin'])) { +$config['bin'] = [$config['bin']]; +} +foreach ($config['bin'] as $key => $bin) { +$config['bin'][$key] = ltrim($bin, '/'); +} +$package->setBinaries($config['bin']); +} + +if (isset($config['installation-source'])) { +$package->setInstallationSource($config['installation-source']); +} + +if (isset($config['default-branch']) && $config['default-branch'] === true) { +$package->setIsDefaultBranch(true); +} + +if (isset($config['source'])) { +if (!isset($config['source']['type'], $config['source']['url'], $config['source']['reference'])) { +throw new \UnexpectedValueException(sprintf( +"Package %s's source key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ...},\n%s given.", +$config['name'], +json_encode($config['source']) +)); +} +$package->setSourceType($config['source']['type']); +$package->setSourceUrl($config['source']['url']); +$package->setSourceReference(isset($config['source']['reference']) ? (string) $config['source']['reference'] : null); +if (isset($config['source']['mirrors'])) { +$package->setSourceMirrors($config['source']['mirrors']); +} +} + +if (isset($config['dist'])) { +if (!isset($config['dist']['type'], $config['dist']['url'])) { +throw new \UnexpectedValueException(sprintf( +"Package %s's dist key should be specified as ". +"{\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...},\n%s given.", +$config['name'], +json_encode($config['dist']) +)); +} +$package->setDistType($config['dist']['type']); +$package->setDistUrl($config['dist']['url']); +$package->setDistReference(isset($config['dist']['reference']) ? (string) $config['dist']['reference'] : null); +$package->setDistSha1Checksum($config['dist']['shasum'] ?? null); +if (isset($config['dist']['mirrors'])) { +$package->setDistMirrors($config['dist']['mirrors']); +} +} + +if (isset($config['suggest']) && \is_array($config['suggest'])) { +foreach ($config['suggest'] as $target => $reason) { +if ('self.version' === trim($reason)) { +$config['suggest'][$target] = $package->getPrettyVersion(); +} +} +$package->setSuggests($config['suggest']); +} + +if (isset($config['autoload'])) { +$package->setAutoload($config['autoload']); +} + +if (isset($config['autoload-dev'])) { +$package->setDevAutoload($config['autoload-dev']); +} + +if (isset($config['include-path'])) { +$package->setIncludePaths($config['include-path']); +} + +if (!empty($config['time'])) { +$time = Preg::isMatch('/^\d++$/D', $config['time']) ? '@'.$config['time'] : $config['time']; + +try { +$date = new \DateTime($time, new \DateTimeZone('UTC')); +$package->setReleaseDate($date); +} catch (\Exception $e) { +} +} + +if (!empty($config['notification-url'])) { +$package->setNotificationUrl($config['notification-url']); +} + +if ($package instanceof CompletePackageInterface) { +if (!empty($config['archive']['name'])) { +$package->setArchiveName($config['archive']['name']); +} +if (!empty($config['archive']['exclude'])) { +$package->setArchiveExcludes($config['archive']['exclude']); +} + +if (isset($config['scripts']) && \is_array($config['scripts'])) { +foreach ($config['scripts'] as $event => $listeners) { +$config['scripts'][$event] = (array) $listeners; +} +foreach (['composer', 'php', 'putenv'] as $reserved) { +if (isset($config['scripts'][$reserved])) { +trigger_error('The `'.$reserved.'` script name is reserved for internal use, please avoid defining it', E_USER_DEPRECATED); +} +} +$package->setScripts($config['scripts']); +} + +if (!empty($config['description']) && \is_string($config['description'])) { +$package->setDescription($config['description']); +} + +if (!empty($config['homepage']) && \is_string($config['homepage'])) { +$package->setHomepage($config['homepage']); +} + +if (!empty($config['keywords']) && \is_array($config['keywords'])) { +$package->setKeywords(array_map('strval', $config['keywords'])); +} + +if (!empty($config['license'])) { +$package->setLicense(\is_array($config['license']) ? $config['license'] : [$config['license']]); +} + +if (!empty($config['authors']) && \is_array($config['authors'])) { +$package->setAuthors($config['authors']); +} + +if (isset($config['support'])) { +$package->setSupport($config['support']); +} + +if (!empty($config['funding']) && \is_array($config['funding'])) { +$package->setFunding($config['funding']); +} + +if (isset($config['abandoned'])) { +$package->setAbandoned($config['abandoned']); +} +} + +if ($this->loadOptions && isset($config['transport-options'])) { +$package->setTransportOptions($config['transport-options']); +} + +if ($aliasNormalized = $this->getBranchAlias($config)) { +$prettyAlias = Preg::replace('{(\.9{7})+}', '.x', $aliasNormalized); + +if ($package instanceof RootPackage) { +return new RootAliasPackage($package, $aliasNormalized, $prettyAlias); +} + +return new CompleteAliasPackage($package, $aliasNormalized, $prettyAlias); +} + +return $package; +} + + + + + +private function configureCachedLinks(array &$linkCache, PackageInterface $package, array $config): void +{ +$name = $package->getName(); +$prettyVersion = $package->getPrettyVersion(); + +foreach (BasePackage::$supportedLinkTypes as $type => $opts) { +if (isset($config[$type])) { +$method = 'set'.ucfirst($opts['method']); + +$links = []; +foreach ($config[$type] as $prettyTarget => $constraint) { +$target = strtolower($prettyTarget); + + +if ($target === $name) { +continue; +} + +if ($constraint === 'self.version') { +$links[$target] = $this->createLink($name, $prettyVersion, $opts['method'], $target, $constraint); +} else { +if (!isset($linkCache[$name][$type][$target][$constraint])) { +$linkCache[$name][$type][$target][$constraint] = [$target, $this->createLink($name, $prettyVersion, $opts['method'], $target, $constraint)]; +} + +[$target, $link] = $linkCache[$name][$type][$target][$constraint]; +$links[$target] = $link; +} +} + +$package->{$method}($links); +} +} +} + + + + + + + + + + + +public function parseLinks(string $source, string $sourceVersion, string $description, array $links): array +{ +$res = []; +foreach ($links as $target => $constraint) { +if (!is_string($constraint)) { +continue; +} +$target = strtolower((string) $target); +$res[$target] = $this->createLink($source, $sourceVersion, $description, $target, $constraint); +} + +return $res; +} + + + + + + + + +private function createLink(string $source, string $sourceVersion, string $description, string $target, string $prettyConstraint): Link +{ +if (!\is_string($prettyConstraint)) { +throw new \UnexpectedValueException('Link constraint in '.$source.' '.$description.' > '.$target.' should be a string, got '.\gettype($prettyConstraint) . ' (' . var_export($prettyConstraint, true) . ')'); +} +if ('self.version' === $prettyConstraint) { +$parsedConstraint = $this->versionParser->parseConstraints($sourceVersion); +} else { +$parsedConstraint = $this->versionParser->parseConstraints($prettyConstraint); +} + +return new Link($source, $target, $parsedConstraint, $description, $prettyConstraint); +} + + + + + + + + +public function getBranchAlias(array $config): ?string +{ +if (!isset($config['version']) || !is_scalar($config['version'])) { +throw new \UnexpectedValueException('no/invalid version defined'); +} +if (!is_string($config['version'])) { +$config['version'] = (string) $config['version']; +} + +if (strpos($config['version'], 'dev-') !== 0 && '-dev' !== substr($config['version'], -4)) { +return null; +} + +if (isset($config['extra']['branch-alias']) && \is_array($config['extra']['branch-alias'])) { +foreach ($config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { +$sourceBranch = (string) $sourceBranch; + + +if ('-dev' !== substr($targetBranch, -4)) { +continue; +} + + +if ($targetBranch === VersionParser::DEFAULT_BRANCH_ALIAS) { +$validatedTargetBranch = VersionParser::DEFAULT_BRANCH_ALIAS; +} else { +$validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); +} +if ('-dev' !== substr($validatedTargetBranch, -4)) { +continue; +} + + +if (strtolower($config['version']) !== strtolower($sourceBranch)) { +continue; +} + + +if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) +&& ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) +&& (stripos($targetPrefix, $sourcePrefix) !== 0) +) { +continue; +} + +return $validatedTargetBranch; +} +} + +if ( +isset($config['default-branch']) +&& $config['default-branch'] === true +&& false === $this->versionParser->parseNumericAliasPrefix($config['version']) +) { +return VersionParser::DEFAULT_BRANCH_ALIAS; +} + +return null; +} +} diff --git a/composer/src/Composer/Package/Loader/InvalidPackageException.php b/composer/src/Composer/Package/Loader/InvalidPackageException.php new file mode 100644 index 000000000..5cb8e2a08 --- /dev/null +++ b/composer/src/Composer/Package/Loader/InvalidPackageException.php @@ -0,0 +1,63 @@ +errors = $errors; +$this->warnings = $warnings; +$this->data = $data; +parent::__construct("Invalid package information: \n".implode("\n", array_merge($errors, $warnings))); +} + + + + +public function getData(): array +{ +return $this->data; +} + + + + +public function getErrors(): array +{ +return $this->errors; +} + + + + +public function getWarnings(): array +{ +return $this->warnings; +} +} diff --git a/composer/src/Composer/Package/Loader/JsonLoader.php b/composer/src/Composer/Package/Loader/JsonLoader.php new file mode 100644 index 000000000..c386b3ea1 --- /dev/null +++ b/composer/src/Composer/Package/Loader/JsonLoader.php @@ -0,0 +1,56 @@ +loader = $loader; +} + + + + + +public function load($json): BasePackage +{ +if ($json instanceof JsonFile) { +$config = $json->read(); +} elseif (file_exists($json)) { +$config = JsonFile::parseJson(file_get_contents($json), $json); +} elseif (is_string($json)) { +$config = JsonFile::parseJson($json); +} else { +throw new \InvalidArgumentException(sprintf( +"JsonLoader: Unknown \$json parameter %s. Please report at https://github.com/composer/composer/issues/new.", +gettype($json) +)); +} + +return $this->loader->load($config); +} +} diff --git a/composer/src/Composer/Package/Loader/LoaderInterface.php b/composer/src/Composer/Package/Loader/LoaderInterface.php new file mode 100644 index 000000000..3404b3cc7 --- /dev/null +++ b/composer/src/Composer/Package/Loader/LoaderInterface.php @@ -0,0 +1,39 @@ +manager = $manager; +$this->config = $config; +$this->versionGuesser = $versionGuesser ?: new VersionGuesser($config, new ProcessExecutor($io), $this->versionParser); +} + + + + + + + + +public function load(array $config, string $class = 'Composer\Package\RootPackage', ?string $cwd = null): BasePackage +{ +if ($class !== 'Composer\Package\RootPackage') { +trigger_error('The $class arg is deprecated, please reach out to Composer maintainers ASAP if you still need this.', E_USER_DEPRECATED); +} + +if (!isset($config['name'])) { +$config['name'] = '__root__'; +} elseif ($err = ValidatingArrayLoader::hasPackageNamingError($config['name'])) { +throw new \RuntimeException('Your package name '.$err); +} +$autoVersioned = false; +if (!isset($config['version'])) { +$commit = null; + + +if (Platform::getEnv('COMPOSER_ROOT_VERSION')) { +$config['version'] = Platform::getEnv('COMPOSER_ROOT_VERSION'); +} else { +$versionData = $this->versionGuesser->guessVersion($config, $cwd ?? Platform::getCwd(true)); +if ($versionData) { +$config['version'] = $versionData['pretty_version']; +$config['version_normalized'] = $versionData['version']; +$commit = $versionData['commit']; +} +} + +if (!isset($config['version'])) { +$config['version'] = '1.0.0'; +$autoVersioned = true; +} + +if ($commit) { +$config['source'] = [ +'type' => '', +'url' => '', +'reference' => $commit, +]; +$config['dist'] = [ +'type' => '', +'url' => '', +'reference' => $commit, +]; +} +} + + +$package = parent::load($config, $class); +if ($package instanceof RootAliasPackage) { +$realPackage = $package->getAliasOf(); +} else { +$realPackage = $package; +} + +if (!$realPackage instanceof RootPackage) { +throw new \LogicException('Expecting a Composer\Package\RootPackage at this point'); +} + +if ($autoVersioned) { +$realPackage->replaceVersion($realPackage->getVersion(), RootPackage::DEFAULT_PRETTY_VERSION); +} + +if (isset($config['minimum-stability'])) { +$realPackage->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability'])); +} + +$aliases = []; +$stabilityFlags = []; +$references = []; +foreach (['require', 'require-dev'] as $linkType) { +if (isset($config[$linkType])) { +$linkInfo = BasePackage::$supportedLinkTypes[$linkType]; +$method = 'get'.ucfirst($linkInfo['method']); +$links = []; +foreach ($realPackage->{$method}() as $link) { +$links[$link->getTarget()] = $link->getConstraint()->getPrettyString(); +} +$aliases = $this->extractAliases($links, $aliases); +$stabilityFlags = self::extractStabilityFlags($links, $realPackage->getMinimumStability(), $stabilityFlags); +$references = self::extractReferences($links, $references); + +if (isset($links[$config['name']])) { +throw new \RuntimeException(sprintf('Root package \'%s\' cannot require itself in its composer.json' . PHP_EOL . +'Did you accidentally name your root package after an external package?', $config['name'])); +} +} +} + +foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { +if (isset($config[$linkType])) { +foreach ($config[$linkType] as $linkName => $constraint) { +if ($err = ValidatingArrayLoader::hasPackageNamingError($linkName, true)) { +throw new \RuntimeException($linkType.'.'.$err); +} +} +} +} + +$realPackage->setAliases($aliases); +$realPackage->setStabilityFlags($stabilityFlags); +$realPackage->setReferences($references); + +if (isset($config['prefer-stable'])) { +$realPackage->setPreferStable((bool) $config['prefer-stable']); +} + +if (isset($config['config'])) { +$realPackage->setConfig($config['config']); +} + +$repos = RepositoryFactory::defaultRepos(null, $this->config, $this->manager); +foreach ($repos as $repo) { +$this->manager->addRepository($repo); +} +$realPackage->setRepositories($this->config->getRepositories()); + +return $package; +} + + + + + + + +private function extractAliases(array $requires, array $aliases): array +{ +foreach ($requires as $reqName => $reqVersion) { +if (Preg::isMatchStrictGroups('{(?:^|\| *|, *)([^,\s#|]+)(?:#[^ ]+)? +as +([^,\s|]+)(?:$| *\|| *,)}', $reqVersion, $match)) { +$aliases[] = [ +'package' => strtolower($reqName), +'version' => $this->versionParser->normalize($match[1], $reqVersion), +'alias' => $match[2], +'alias_normalized' => $this->versionParser->normalize($match[2], $reqVersion), +]; +} elseif (strpos($reqVersion, ' as ') !== false) { +throw new \UnexpectedValueException('Invalid alias definition in "'.$reqName.'": "'.$reqVersion.'". Aliases should be in the form "exact-version as other-exact-version".'); +} +} + +return $aliases; +} + + + + + + + + + + + + +public static function extractStabilityFlags(array $requires, string $minimumStability, array $stabilityFlags): array +{ +$stabilities = BasePackage::$stabilities; + +$minimumStability = $stabilities[$minimumStability]; +foreach ($requires as $reqName => $reqVersion) { +$constraints = []; + + +$orSplit = Preg::split('{\s*\|\|?\s*}', trim($reqVersion)); +foreach ($orSplit as $orConstraint) { +$andSplit = Preg::split('{(?< ,]) *(? $stability) { +continue; +} +$stabilityFlags[$name] = $stability; +$matched = true; +} +} + +if ($matched) { +continue; +} + +foreach ($constraints as $constraint) { + + +$reqVersion = Preg::replace('{^([^,\s@]+) as .+$}', '$1', $constraint); +if (Preg::isMatch('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) { +$name = strtolower($reqName); +$stability = $stabilities[$stabilityName]; +if ((isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) || ($minimumStability > $stability)) { +continue; +} +$stabilityFlags[$name] = $stability; +} +} +} + +return $stabilityFlags; +} + + + + + + + + + +public static function extractReferences(array $requires, array $references): array +{ +foreach ($requires as $reqName => $reqVersion) { +$reqVersion = Preg::replace('{^([^,\s@]+) as .+$}', '$1', $reqVersion); +if (Preg::isMatchStrictGroups('{^[^,\s@]+?#([a-f0-9]+)$}', $reqVersion, $match) && 'dev' === VersionParser::parseStability($reqVersion)) { +$name = strtolower($reqName); +$references[$name] = $match[1]; +} +} + +return $references; +} +} diff --git a/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php b/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php new file mode 100644 index 000000000..1033670cb --- /dev/null +++ b/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php @@ -0,0 +1,623 @@ +loader = $loader; +$this->versionParser = $parser ?? new VersionParser(); +$this->flags = $flags; + +if ($strictName !== true) { +trigger_error('$strictName must be set to true in ValidatingArrayLoader\'s constructor as of 2.2, and it will be removed in 3.0', E_USER_DEPRECATED); +} +} + + + + +public function load(array $config, string $class = 'Composer\Package\CompletePackage'): BasePackage +{ +$this->errors = []; +$this->warnings = []; +$this->config = $config; + +$this->validateString('name', true); +if (isset($config['name']) && null !== ($err = self::hasPackageNamingError($config['name']))) { +$this->errors[] = 'name : '.$err; +} + +if (isset($this->config['version'])) { +if (!is_scalar($this->config['version'])) { +$this->validateString('version'); +} else { +if (!is_string($this->config['version'])) { +$this->config['version'] = (string) $this->config['version']; +} +try { +$this->versionParser->normalize($this->config['version']); +} catch (\Exception $e) { +$this->errors[] = 'version : invalid value ('.$this->config['version'].'): '.$e->getMessage(); +unset($this->config['version']); +} +} +} + +if (isset($this->config['config']['platform'])) { +foreach ((array) $this->config['config']['platform'] as $key => $platform) { +if (false === $platform) { +continue; +} +if (!is_string($platform)) { +$this->errors[] = 'config.platform.' . $key . ' : invalid value ('.gettype($platform).' '.var_export($platform, true).'): expected string or false'; +continue; +} +try { +$this->versionParser->normalize($platform); +} catch (\Exception $e) { +$this->errors[] = 'config.platform.' . $key . ' : invalid value ('.$platform.'): '.$e->getMessage(); +} +} +} + +$this->validateRegex('type', '[A-Za-z0-9-]+'); +$this->validateString('target-dir'); +$this->validateArray('extra'); + +if (isset($this->config['bin'])) { +if (is_string($this->config['bin'])) { +$this->validateString('bin'); +} else { +$this->validateFlatArray('bin'); +} +} + +$this->validateArray('scripts'); +$this->validateString('description'); +$this->validateUrl('homepage'); +$this->validateFlatArray('keywords', '[\p{N}\p{L} ._-]+'); + +$releaseDate = null; +$this->validateString('time'); +if (isset($this->config['time'])) { +try { +$releaseDate = new \DateTime($this->config['time'], new \DateTimeZone('UTC')); +} catch (\Exception $e) { +$this->errors[] = 'time : invalid value ('.$this->config['time'].'): '.$e->getMessage(); +unset($this->config['time']); +} +} + + +if (isset($this->config['license']) && (null === $releaseDate || $releaseDate->getTimestamp() >= strtotime('-8days'))) { +if (is_array($this->config['license']) || is_string($this->config['license'])) { +$licenses = (array) $this->config['license']; + +$licenseValidator = new SpdxLicenses(); +foreach ($licenses as $license) { + +if ('proprietary' === $license) { +continue; +} +$licenseToValidate = str_replace('proprietary', 'MIT', $license); +if (!$licenseValidator->validate($licenseToValidate)) { +if ($licenseValidator->validate(trim($licenseToValidate))) { +$this->warnings[] = sprintf( +'License %s must not contain extra spaces, make sure to trim it.', +json_encode($license) +); +} else { +$this->warnings[] = sprintf( +'License %s is not a valid SPDX license identifier, see https://spdx.org/licenses/ if you use an open license.' . PHP_EOL . +'If the software is closed-source, you may use "proprietary" as license.', +json_encode($license) +); +} +} +} +} +} + +if ($this->validateArray('authors')) { +foreach ($this->config['authors'] as $key => $author) { +if (!is_array($author)) { +$this->errors[] = 'authors.'.$key.' : should be an array, '.gettype($author).' given'; +unset($this->config['authors'][$key]); +continue; +} +foreach (['homepage', 'email', 'name', 'role'] as $authorData) { +if (isset($author[$authorData]) && !is_string($author[$authorData])) { +$this->errors[] = 'authors.'.$key.'.'.$authorData.' : invalid value, must be a string'; +unset($this->config['authors'][$key][$authorData]); +} +} +if (isset($author['homepage']) && !$this->filterUrl($author['homepage'])) { +$this->warnings[] = 'authors.'.$key.'.homepage : invalid value ('.$author['homepage'].'), must be an http/https URL'; +unset($this->config['authors'][$key]['homepage']); +} +if (isset($author['email']) && false === filter_var($author['email'], FILTER_VALIDATE_EMAIL)) { +$this->warnings[] = 'authors.'.$key.'.email : invalid value ('.$author['email'].'), must be a valid email address'; +unset($this->config['authors'][$key]['email']); +} +if (\count($this->config['authors'][$key]) === 0) { +unset($this->config['authors'][$key]); +} +} +if (\count($this->config['authors']) === 0) { +unset($this->config['authors']); +} +} + +if ($this->validateArray('support') && !empty($this->config['support'])) { +foreach (['issues', 'forum', 'wiki', 'source', 'email', 'irc', 'docs', 'rss', 'chat'] as $key) { +if (isset($this->config['support'][$key]) && !is_string($this->config['support'][$key])) { +$this->errors[] = 'support.'.$key.' : invalid value, must be a string'; +unset($this->config['support'][$key]); +} +} + +if (isset($this->config['support']['email']) && !filter_var($this->config['support']['email'], FILTER_VALIDATE_EMAIL)) { +$this->warnings[] = 'support.email : invalid value ('.$this->config['support']['email'].'), must be a valid email address'; +unset($this->config['support']['email']); +} + +if (isset($this->config['support']['irc']) && !$this->filterUrl($this->config['support']['irc'], ['irc', 'ircs'])) { +$this->warnings[] = 'support.irc : invalid value ('.$this->config['support']['irc'].'), must be a irc:/// or ircs:// URL'; +unset($this->config['support']['irc']); +} + +foreach (['issues', 'forum', 'wiki', 'source', 'docs', 'chat'] as $key) { +if (isset($this->config['support'][$key]) && !$this->filterUrl($this->config['support'][$key])) { +$this->warnings[] = 'support.'.$key.' : invalid value ('.$this->config['support'][$key].'), must be an http/https URL'; +unset($this->config['support'][$key]); +} +} +if (empty($this->config['support'])) { +unset($this->config['support']); +} +} + +if ($this->validateArray('funding') && !empty($this->config['funding'])) { +foreach ($this->config['funding'] as $key => $fundingOption) { +if (!is_array($fundingOption)) { +$this->errors[] = 'funding.'.$key.' : should be an array, '.gettype($fundingOption).' given'; +unset($this->config['funding'][$key]); +continue; +} +foreach (['type', 'url'] as $fundingData) { +if (isset($fundingOption[$fundingData]) && !is_string($fundingOption[$fundingData])) { +$this->errors[] = 'funding.'.$key.'.'.$fundingData.' : invalid value, must be a string'; +unset($this->config['funding'][$key][$fundingData]); +} +} +if (isset($fundingOption['url']) && !$this->filterUrl($fundingOption['url'])) { +$this->warnings[] = 'funding.'.$key.'.url : invalid value ('.$fundingOption['url'].'), must be an http/https URL'; +unset($this->config['funding'][$key]['url']); +} +if (empty($this->config['funding'][$key])) { +unset($this->config['funding'][$key]); +} +} +if (empty($this->config['funding'])) { +unset($this->config['funding']); +} +} + +$unboundConstraint = new Constraint('=', '10000000-dev'); + +foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { +if ($this->validateArray($linkType) && isset($this->config[$linkType])) { +foreach ($this->config[$linkType] as $package => $constraint) { +$package = (string) $package; +if (0 === strcasecmp($package, $this->config['name'])) { +$this->errors[] = $linkType.'.'.$package.' : a package cannot set a '.$linkType.' on itself'; +unset($this->config[$linkType][$package]); +continue; +} +if ($err = self::hasPackageNamingError($package, true)) { +$this->warnings[] = $linkType.'.'.$err; +} elseif (!Preg::isMatch('{^[A-Za-z0-9_./-]+$}', $package)) { +$this->errors[] = $linkType.'.'.$package.' : invalid key, package names must be strings containing only [A-Za-z0-9_./-]'; +} +if (!is_string($constraint)) { +$this->errors[] = $linkType.'.'.$package.' : invalid value, must be a string containing a version constraint'; +unset($this->config[$linkType][$package]); +} elseif ('self.version' !== $constraint) { +try { +$linkConstraint = $this->versionParser->parseConstraints($constraint); +} catch (\Exception $e) { +$this->errors[] = $linkType.'.'.$package.' : invalid version constraint ('.$e->getMessage().')'; +unset($this->config[$linkType][$package]); +continue; +} + + +if ( +($this->flags & self::CHECK_UNBOUND_CONSTRAINTS) +&& 'require' === $linkType +&& $linkConstraint->matches($unboundConstraint) +&& !PlatformRepository::isPlatformPackage($package) +) { +$this->warnings[] = $linkType.'.'.$package.' : unbound version constraints ('.$constraint.') should be avoided'; +} elseif ( + +($this->flags & self::CHECK_STRICT_CONSTRAINTS) +&& 'require' === $linkType +&& $linkConstraint instanceof Constraint && in_array($linkConstraint->getOperator(), ['==', '='], true) +&& (new Constraint('>=', '1.0.0.0-dev'))->matches($linkConstraint) +) { +$this->warnings[] = $linkType.'.'.$package.' : exact version constraints ('.$constraint.') should be avoided if the package follows semantic versioning'; +} +} + +if ($linkType === 'conflict' && isset($this->config['replace']) && $keys = array_intersect_key($this->config['replace'], $this->config['conflict'])) { +$this->errors[] = $linkType.'.'.$package.' : you cannot conflict with a package that is also replaced, as replace already creates an implicit conflict rule'; +unset($this->config[$linkType][$package]); +} +} +} +} + +if ($this->validateArray('suggest') && isset($this->config['suggest'])) { +foreach ($this->config['suggest'] as $package => $description) { +if (!is_string($description)) { +$this->errors[] = 'suggest.'.$package.' : invalid value, must be a string describing why the package is suggested'; +unset($this->config['suggest'][$package]); +} +} +} + +if ($this->validateString('minimum-stability') && isset($this->config['minimum-stability'])) { +if (!isset(BasePackage::$stabilities[strtolower($this->config['minimum-stability'])]) && $this->config['minimum-stability'] !== 'RC') { +$this->errors[] = 'minimum-stability : invalid value ('.$this->config['minimum-stability'].'), must be one of '.implode(', ', array_keys(BasePackage::$stabilities)); +unset($this->config['minimum-stability']); +} +} + +if ($this->validateArray('autoload') && isset($this->config['autoload'])) { +$types = ['psr-0', 'psr-4', 'classmap', 'files', 'exclude-from-classmap']; +foreach ($this->config['autoload'] as $type => $typeConfig) { +if (!in_array($type, $types)) { +$this->errors[] = 'autoload : invalid value ('.$type.'), must be one of '.implode(', ', $types); +unset($this->config['autoload'][$type]); +} +if ($type === 'psr-4') { +foreach ($typeConfig as $namespace => $dirs) { +if ($namespace !== '' && '\\' !== substr((string) $namespace, -1)) { +$this->errors[] = 'autoload.psr-4 : invalid value ('.$namespace.'), namespaces must end with a namespace separator, should be '.$namespace.'\\\\'; +} +} +} +} +} + +if (isset($this->config['autoload']['psr-4']) && isset($this->config['target-dir'])) { +$this->errors[] = 'target-dir : this can not be used together with the autoload.psr-4 setting, remove target-dir to upgrade to psr-4'; + + +unset($this->config['autoload']['psr-4']); +} + +foreach (['source', 'dist'] as $srcType) { +if ($this->validateArray($srcType) && !empty($this->config[$srcType])) { +if (!isset($this->config[$srcType]['type'])) { +$this->errors[] = $srcType . '.type : must be present'; +} +if (!isset($this->config[$srcType]['url'])) { +$this->errors[] = $srcType . '.url : must be present'; +} +if ($srcType === 'source' && !isset($this->config[$srcType]['reference'])) { +$this->errors[] = $srcType . '.reference : must be present'; +} +if (isset($this->config[$srcType]['type']) && !is_string($this->config[$srcType]['type'])) { +$this->errors[] = $srcType . '.type : should be a string, '.gettype($this->config[$srcType]['type']).' given'; +} +if (isset($this->config[$srcType]['url']) && !is_string($this->config[$srcType]['url'])) { +$this->errors[] = $srcType . '.url : should be a string, '.gettype($this->config[$srcType]['url']).' given'; +} +if (isset($this->config[$srcType]['reference']) && !is_string($this->config[$srcType]['reference']) && !is_int($this->config[$srcType]['reference'])) { +$this->errors[] = $srcType . '.reference : should be a string or int, '.gettype($this->config[$srcType]['reference']).' given'; +} +if (isset($this->config[$srcType]['reference']) && Preg::isMatch('{^\s*-}', (string) $this->config[$srcType]['reference'])) { +$this->errors[] = $srcType . '.reference : must not start with a "-", "'.$this->config[$srcType]['reference'].'" given'; +} +if (isset($this->config[$srcType]['url']) && Preg::isMatch('{^\s*-}', (string) $this->config[$srcType]['url'])) { +$this->errors[] = $srcType . '.url : must not start with a "-", "'.$this->config[$srcType]['url'].'" given'; +} +} +} + + + + +$this->validateFlatArray('include-path'); +$this->validateArray('transport-options'); + + +if (isset($this->config['extra']['branch-alias'])) { +if (!is_array($this->config['extra']['branch-alias'])) { +$this->errors[] = 'extra.branch-alias : must be an array of versions => aliases'; +} else { +foreach ($this->config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { +if (!is_string($targetBranch)) { +$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.json_encode($targetBranch).') must be a string, "'.gettype($targetBranch).'" received.'; +unset($this->config['extra']['branch-alias'][$sourceBranch]); + +continue; +} + + +if ('-dev' !== substr($targetBranch, -4)) { +$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must end in -dev'; +unset($this->config['extra']['branch-alias'][$sourceBranch]); + +continue; +} + + +$validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); +if ('-dev' !== substr($validatedTargetBranch, -4)) { +$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must be a parseable number like 2.0-dev'; +unset($this->config['extra']['branch-alias'][$sourceBranch]); + +continue; +} + + +if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) +&& ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) +&& (stripos($targetPrefix, $sourcePrefix) !== 0) +) { +$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') is not a valid numeric alias for this version'; +unset($this->config['extra']['branch-alias'][$sourceBranch]); +} +} +} +} + +if ($this->errors) { +throw new InvalidPackageException($this->errors, $this->warnings, $config); +} + +$package = $this->loader->load($this->config, $class); +$this->config = []; + +return $package; +} + + + + +public function getWarnings(): array +{ +return $this->warnings; +} + + + + +public function getErrors(): array +{ +return $this->errors; +} + +public static function hasPackageNamingError(string $name, bool $isLink = false): ?string +{ +if (PlatformRepository::isPlatformPackage($name)) { +return null; +} + +if (!Preg::isMatch('{^[a-z0-9](?:[_.-]?[a-z0-9]++)*+/[a-z0-9](?:(?:[_.]|-{1,2})?[a-z0-9]++)*+$}iD', $name)) { +return $name.' is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$".'; +} + +$reservedNames = ['nul', 'con', 'prn', 'aux', 'com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9', 'lpt1', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9']; +$bits = explode('/', strtolower($name)); +if (in_array($bits[0], $reservedNames, true) || in_array($bits[1], $reservedNames, true)) { +return $name.' is reserved, package and vendor names can not match any of: '.implode(', ', $reservedNames).'.'; +} + +if (Preg::isMatch('{\.json$}', $name)) { +return $name.' is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.'; +} + +if (Preg::isMatch('{[A-Z]}', $name)) { +if ($isLink) { +return $name.' is invalid, it should not contain uppercase characters. Please use '.strtolower($name).' instead.'; +} + +$suggestName = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); +$suggestName = strtolower($suggestName); + +return $name.' is invalid, it should not contain uppercase characters. We suggest using '.$suggestName.' instead.'; +} + +return null; +} + + + + + +private function validateRegex(string $property, string $regex, bool $mandatory = false): bool +{ +if (!$this->validateString($property, $mandatory)) { +return false; +} + +if (!Preg::isMatch('{^'.$regex.'$}u', $this->config[$property])) { +$message = $property.' : invalid value ('.$this->config[$property].'), must match '.$regex; +if ($mandatory) { +$this->errors[] = $message; +} else { +$this->warnings[] = $message; +} +unset($this->config[$property]); + +return false; +} + +return true; +} + + + + +private function validateString(string $property, bool $mandatory = false): bool +{ +if (isset($this->config[$property]) && !is_string($this->config[$property])) { +$this->errors[] = $property.' : should be a string, '.gettype($this->config[$property]).' given'; +unset($this->config[$property]); + +return false; +} + +if (!isset($this->config[$property]) || trim($this->config[$property]) === '') { +if ($mandatory) { +$this->errors[] = $property.' : must be present'; +} +unset($this->config[$property]); + +return false; +} + +return true; +} + + + + +private function validateArray(string $property, bool $mandatory = false): bool +{ +if (isset($this->config[$property]) && !is_array($this->config[$property])) { +$this->errors[] = $property.' : should be an array, '.gettype($this->config[$property]).' given'; +unset($this->config[$property]); + +return false; +} + +if (!isset($this->config[$property]) || !count($this->config[$property])) { +if ($mandatory) { +$this->errors[] = $property.' : must be present and contain at least one element'; +} +unset($this->config[$property]); + +return false; +} + +return true; +} + + + + + +private function validateFlatArray(string $property, ?string $regex = null, bool $mandatory = false): bool +{ +if (!$this->validateArray($property, $mandatory)) { +return false; +} + +$pass = true; +foreach ($this->config[$property] as $key => $value) { +if (!is_string($value) && !is_numeric($value)) { +$this->errors[] = $property.'.'.$key.' : must be a string or int, '.gettype($value).' given'; +unset($this->config[$property][$key]); +$pass = false; + +continue; +} + +if ($regex && !Preg::isMatch('{^'.$regex.'$}u', (string) $value)) { +$this->warnings[] = $property.'.'.$key.' : invalid value ('.$value.'), must match '.$regex; +unset($this->config[$property][$key]); +$pass = false; +} +} + +return $pass; +} + + + + +private function validateUrl(string $property, bool $mandatory = false): bool +{ +if (!$this->validateString($property, $mandatory)) { +return false; +} + +if (!$this->filterUrl($this->config[$property])) { +$this->warnings[] = $property.' : invalid value ('.$this->config[$property].'), must be an http/https URL'; +unset($this->config[$property]); + +return false; +} + +return true; +} + + + + + +private function filterUrl($value, array $schemes = ['http', 'https']): bool +{ +if ($value === '') { +return true; +} + +$bits = parse_url($value); +if (empty($bits['scheme']) || empty($bits['host'])) { +return false; +} + +if (!in_array($bits['scheme'], $schemes, true)) { +return false; +} + +return true; +} +} diff --git a/composer/src/Composer/Package/Locker.php b/composer/src/Composer/Package/Locker.php new file mode 100644 index 000000000..4aa896c9f --- /dev/null +++ b/composer/src/Composer/Package/Locker.php @@ -0,0 +1,545 @@ +lockFile = $lockFile; +$this->installationManager = $installationManager; +$this->hash = md5($composerFileContents); +$this->contentHash = self::getContentHash($composerFileContents); +$this->loader = new ArrayLoader(null, true); +$this->dumper = new ArrayDumper(); +$this->process = $process ?? new ProcessExecutor($io); +} + + + + + + +public static function getContentHash(string $composerFileContents): string +{ +$content = JsonFile::parseJson($composerFileContents, 'composer.json'); + +$relevantKeys = [ +'name', +'version', +'require', +'require-dev', +'conflict', +'replace', +'provide', +'minimum-stability', +'prefer-stable', +'repositories', +'extra', +]; + +$relevantContent = []; + +foreach (array_intersect($relevantKeys, array_keys($content)) as $key) { +$relevantContent[$key] = $content[$key]; +} +if (isset($content['config']['platform'])) { +$relevantContent['config']['platform'] = $content['config']['platform']; +} + +ksort($relevantContent); + +return md5(JsonFile::encode($relevantContent, 0)); +} + + + + +public function isLocked(): bool +{ +if (!$this->virtualFileWritten && !$this->lockFile->exists()) { +return false; +} + +$data = $this->getLockData(); + +return isset($data['packages']); +} + + + + +public function isFresh(): bool +{ +$lock = $this->lockFile->read(); + +if (!empty($lock['content-hash'])) { + +return $this->contentHash === $lock['content-hash']; +} + + +if (!empty($lock['hash'])) { +return $this->hash === $lock['hash']; +} + + +return false; +} + + + + + + + +public function getLockedRepository(bool $withDevReqs = false): LockArrayRepository +{ +$lockData = $this->getLockData(); +$packages = new LockArrayRepository(); + +$lockedPackages = $lockData['packages']; +if ($withDevReqs) { +if (isset($lockData['packages-dev'])) { +$lockedPackages = array_merge($lockedPackages, $lockData['packages-dev']); +} else { +throw new \RuntimeException('The lock file does not contain require-dev information, run install with the --no-dev option or delete it and run composer update to generate a new lock file.'); +} +} + +if (empty($lockedPackages)) { +return $packages; +} + +if (isset($lockedPackages[0]['name'])) { +$packageByName = []; +foreach ($lockedPackages as $info) { +$package = $this->loader->load($info); +$packages->addPackage($package); +$packageByName[$package->getName()] = $package; + +if ($package instanceof AliasPackage) { +$packageByName[$package->getAliasOf()->getName()] = $package->getAliasOf(); +} +} + +if (isset($lockData['aliases'])) { +foreach ($lockData['aliases'] as $alias) { +if (isset($packageByName[$alias['package']])) { +$aliasPkg = new CompleteAliasPackage($packageByName[$alias['package']], $alias['alias_normalized'], $alias['alias']); +$aliasPkg->setRootPackageAlias(true); +$packages->addPackage($aliasPkg); +} +} +} + +return $packages; +} + +throw new \RuntimeException('Your composer.lock is invalid. Run "composer update" to generate a new one.'); +} + + + + +public function getDevPackageNames(): array +{ +$names = []; +$lockData = $this->getLockData(); +if (isset($lockData['packages-dev'])) { +foreach ($lockData['packages-dev'] as $package) { +$names[] = strtolower($package['name']); +} +} + +return $names; +} + + + + + + + +public function getPlatformRequirements(bool $withDevReqs = false): array +{ +$lockData = $this->getLockData(); +$requirements = []; + +if (!empty($lockData['platform'])) { +$requirements = $this->loader->parseLinks( +'__root__', +'1.0.0', +Link::TYPE_REQUIRE, +$lockData['platform'] ?? [] +); +} + +if ($withDevReqs && !empty($lockData['platform-dev'])) { +$devRequirements = $this->loader->parseLinks( +'__root__', +'1.0.0', +Link::TYPE_REQUIRE, +$lockData['platform-dev'] ?? [] +); + +$requirements = array_merge($requirements, $devRequirements); +} + +return $requirements; +} + +public function getMinimumStability(): string +{ +$lockData = $this->getLockData(); + +return $lockData['minimum-stability'] ?? 'stable'; +} + + + + +public function getStabilityFlags(): array +{ +$lockData = $this->getLockData(); + +return $lockData['stability-flags'] ?? []; +} + +public function getPreferStable(): ?bool +{ +$lockData = $this->getLockData(); + + + +return $lockData['prefer-stable'] ?? null; +} + +public function getPreferLowest(): ?bool +{ +$lockData = $this->getLockData(); + + + +return $lockData['prefer-lowest'] ?? null; +} + + + + +public function getPlatformOverrides(): array +{ +$lockData = $this->getLockData(); + +return $lockData['platform-overrides'] ?? []; +} + + + + + + +public function getAliases(): array +{ +$lockData = $this->getLockData(); + +return $lockData['aliases'] ?? []; +} + + + + +public function getPluginApi() +{ +$lockData = $this->getLockData(); + +return $lockData['plugin-api-version'] ?? '1.1.0'; +} + + + + +public function getLockData(): array +{ +if (null !== $this->lockDataCache) { +return $this->lockDataCache; +} + +if (!$this->lockFile->exists()) { +throw new \LogicException('No lockfile found. Unable to read locked packages'); +} + +return $this->lockDataCache = $this->lockFile->read(); +} + + + + + + + + + + + + + + + +public function setLockData(array $packages, ?array $devPackages, array $platformReqs, array $platformDevReqs, array $aliases, string $minimumStability, array $stabilityFlags, bool $preferStable, bool $preferLowest, array $platformOverrides, bool $write = true): bool +{ + + +$aliases = array_map(static function ($alias): array { +if (in_array($alias['version'], ['dev-master', 'dev-trunk', 'dev-default'], true)) { +$alias['version'] = VersionParser::DEFAULT_BRANCH_ALIAS; +} + +return $alias; +}, $aliases); + +$lock = [ +'_readme' => ['This file locks the dependencies of your project to a known state', +'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies', +'This file is @gener'.'ated automatically', ], +'content-hash' => $this->contentHash, +'packages' => null, +'packages-dev' => null, +'aliases' => $aliases, +'minimum-stability' => $minimumStability, +'stability-flags' => $stabilityFlags, +'prefer-stable' => $preferStable, +'prefer-lowest' => $preferLowest, +]; + +$lock['packages'] = $this->lockPackages($packages); +if (null !== $devPackages) { +$lock['packages-dev'] = $this->lockPackages($devPackages); +} + +$lock['platform'] = $platformReqs; +$lock['platform-dev'] = $platformDevReqs; +if (\count($platformOverrides) > 0) { +$lock['platform-overrides'] = $platformOverrides; +} +$lock['plugin-api-version'] = PluginInterface::PLUGIN_API_VERSION; + +try { +$isLocked = $this->isLocked(); +} catch (ParsingException $e) { +$isLocked = false; +} +if (!$isLocked || $lock !== $this->getLockData()) { +if ($write) { +$this->lockFile->write($lock); +$this->lockDataCache = null; +$this->virtualFileWritten = false; +} else { +$this->virtualFileWritten = true; +$this->lockDataCache = JsonFile::parseJson(JsonFile::encode($lock)); +} + +return true; +} + +return false; +} + + + + + + + + +private function lockPackages(array $packages): array +{ +$locked = []; + +foreach ($packages as $package) { +if ($package instanceof AliasPackage) { +continue; +} + +$name = $package->getPrettyName(); +$version = $package->getPrettyVersion(); + +if (!$name || !$version) { +throw new \LogicException(sprintf( +'Package "%s" has no version or name and can not be locked', +$package +)); +} + +$spec = $this->dumper->dump($package); +unset($spec['version_normalized']); + + +$time = $spec['time'] ?? null; +unset($spec['time']); +if ($package->isDev() && $package->getInstallationSource() === 'source') { + +$time = $this->getPackageTime($package) ?: $time; +} +if (null !== $time) { +$spec['time'] = $time; +} + +unset($spec['installation-source']); + +$locked[] = $spec; +} + +usort($locked, static function ($a, $b) { +$comparison = strcmp($a['name'], $b['name']); + +if (0 !== $comparison) { +return $comparison; +} + + +return strcmp($a['version'], $b['version']); +}); + +return $locked; +} + + + + + + + +private function getPackageTime(PackageInterface $package): ?string +{ +if (!function_exists('proc_open')) { +return null; +} + +$path = realpath($this->installationManager->getInstallPath($package)); +$sourceType = $package->getSourceType(); +$datetime = null; + +if ($path && in_array($sourceType, ['git', 'hg'])) { +$sourceRef = $package->getSourceReference() ?: $package->getDistReference(); +switch ($sourceType) { +case 'git': +GitUtil::cleanEnv(); + +if (0 === $this->process->execute('git log -n1 --pretty=%ct '.ProcessExecutor::escape($sourceRef).GitUtil::getNoShowSignatureFlag($this->process), $output, $path) && Preg::isMatch('{^\s*\d+\s*$}', $output)) { +$datetime = new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); +} +break; + +case 'hg': +if (0 === $this->process->execute('hg log --template "{date|hgdate}" -r '.ProcessExecutor::escape($sourceRef), $output, $path) && Preg::isMatch('{^\s*(\d+)\s*}', $output, $match)) { +$datetime = new \DateTime('@'.$match[1], new \DateTimeZone('UTC')); +} +break; +} +} + +return $datetime ? $datetime->format(DATE_RFC3339) : null; +} + + + + +public function getMissingRequirementInfo(RootPackageInterface $package, bool $includeDev): array +{ +$missingRequirementInfo = []; +$missingRequirements = false; +$sets = [['repo' => $this->getLockedRepository(false), 'method' => 'getRequires', 'description' => 'Required']]; +if ($includeDev === true) { +$sets[] = ['repo' => $this->getLockedRepository(true), 'method' => 'getDevRequires', 'description' => 'Required (in require-dev)']; +} + +foreach ($sets as $set) { +$installedRepo = new InstalledRepository([$set['repo']]); + +foreach (call_user_func([$package, $set['method']]) as $link) { +if (PlatformRepository::isPlatformPackage($link->getTarget())) { +continue; +} +if ($link->getPrettyConstraint() === 'self.version') { +continue; +} +if ($installedRepo->findPackagesWithReplacersAndProviders($link->getTarget(), $link->getConstraint()) === []) { +$results = $installedRepo->findPackagesWithReplacersAndProviders($link->getTarget()); +if ($results !== []) { +$provider = reset($results); +$missingRequirementInfo[] = '- ' . $set['description'].' package "' . $link->getTarget() . '" is in the lock file as "'.$provider->getPrettyVersion().'" but that does not satisfy your constraint "'.$link->getPrettyConstraint().'".'; +} else { +$missingRequirementInfo[] = '- ' . $set['description'].' package "' . $link->getTarget() . '" is not present in the lock file.'; +} +$missingRequirements = true; +} +} +} + +if ($missingRequirements) { +$missingRequirementInfo[] = 'This usually happens when composer files are incorrectly merged or the composer.json file is manually edited.'; +$missingRequirementInfo[] = 'Read more about correctly resolving merge conflicts https://getcomposer.org/doc/articles/resolving-merge-conflicts.md'; +$missingRequirementInfo[] = 'and prefer using the "require" command over editing the composer.json file directly https://getcomposer.org/doc/03-cli.md#require-r'; +} + +return $missingRequirementInfo; +} +} diff --git a/composer/src/Composer/Package/Package.php b/composer/src/Composer/Package/Package.php new file mode 100644 index 000000000..645d10739 --- /dev/null +++ b/composer/src/Composer/Package/Package.php @@ -0,0 +1,711 @@ +version = $version; +$this->prettyVersion = $prettyVersion; + +$this->stability = VersionParser::parseStability($version); +$this->dev = $this->stability === 'dev'; +} + + + + +public function isDev(): bool +{ +return $this->dev; +} + +public function setType(string $type): void +{ +$this->type = $type; +} + + + + +public function getType(): string +{ +return $this->type ?: 'library'; +} + + + + +public function getStability(): string +{ +return $this->stability; +} + +public function setTargetDir(?string $targetDir): void +{ +$this->targetDir = $targetDir; +} + + + + +public function getTargetDir(): ?string +{ +if (null === $this->targetDir) { +return null; +} + +return ltrim(Preg::replace('{ (?:^|[\\\\/]+) \.\.? (?:[\\\\/]+|$) (?:\.\.? (?:[\\\\/]+|$) )*}x', '/', $this->targetDir), '/'); +} + + + + +public function setExtra(array $extra): void +{ +$this->extra = $extra; +} + + + + +public function getExtra(): array +{ +return $this->extra; +} + + + + +public function setBinaries(array $binaries): void +{ +$this->binaries = $binaries; +} + + + + +public function getBinaries(): array +{ +return $this->binaries; +} + + + + +public function setInstallationSource(?string $type): void +{ +$this->installationSource = $type; +} + + + + +public function getInstallationSource(): ?string +{ +return $this->installationSource; +} + +public function setSourceType(?string $type): void +{ +$this->sourceType = $type; +} + + + + +public function getSourceType(): ?string +{ +return $this->sourceType; +} + +public function setSourceUrl(?string $url): void +{ +$this->sourceUrl = $url; +} + + + + +public function getSourceUrl(): ?string +{ +return $this->sourceUrl; +} + +public function setSourceReference(?string $reference): void +{ +$this->sourceReference = $reference; +} + + + + +public function getSourceReference(): ?string +{ +return $this->sourceReference; +} + +public function setSourceMirrors(?array $mirrors): void +{ +$this->sourceMirrors = $mirrors; +} + + + + +public function getSourceMirrors(): ?array +{ +return $this->sourceMirrors; +} + + + + +public function getSourceUrls(): array +{ +return $this->getUrls($this->sourceUrl, $this->sourceMirrors, $this->sourceReference, $this->sourceType, 'source'); +} + + + + +public function setDistType(?string $type): void +{ +$this->distType = $type === '' ? null : $type; +} + + + + +public function getDistType(): ?string +{ +return $this->distType; +} + + + + +public function setDistUrl(?string $url): void +{ +$this->distUrl = $url === '' ? null : $url; +} + + + + +public function getDistUrl(): ?string +{ +return $this->distUrl; +} + + + + +public function setDistReference(?string $reference): void +{ +$this->distReference = $reference; +} + + + + +public function getDistReference(): ?string +{ +return $this->distReference; +} + + + + +public function setDistSha1Checksum(?string $sha1checksum): void +{ +$this->distSha1Checksum = $sha1checksum; +} + + + + +public function getDistSha1Checksum(): ?string +{ +return $this->distSha1Checksum; +} + +public function setDistMirrors(?array $mirrors): void +{ +$this->distMirrors = $mirrors; +} + + + + +public function getDistMirrors(): ?array +{ +return $this->distMirrors; +} + + + + +public function getDistUrls(): array +{ +return $this->getUrls($this->distUrl, $this->distMirrors, $this->distReference, $this->distType, 'dist'); +} + + + + +public function getTransportOptions(): array +{ +return $this->transportOptions; +} + + + + +public function setTransportOptions(array $options): void +{ +$this->transportOptions = $options; +} + + + + +public function getVersion(): string +{ +return $this->version; +} + + + + +public function getPrettyVersion(): string +{ +return $this->prettyVersion; +} + +public function setReleaseDate(?\DateTimeInterface $releaseDate): void +{ +$this->releaseDate = $releaseDate; +} + + + + +public function getReleaseDate(): ?\DateTimeInterface +{ +return $this->releaseDate; +} + + + + + + +public function setRequires(array $requires): void +{ +if (isset($requires[0])) { +$requires = $this->convertLinksToMap($requires, 'setRequires'); +} + +$this->requires = $requires; +} + + + + +public function getRequires(): array +{ +return $this->requires; +} + + + + + + +public function setConflicts(array $conflicts): void +{ +if (isset($conflicts[0])) { +$conflicts = $this->convertLinksToMap($conflicts, 'setConflicts'); +} + +$this->conflicts = $conflicts; +} + + + + + +public function getConflicts(): array +{ +return $this->conflicts; +} + + + + + + +public function setProvides(array $provides): void +{ +if (isset($provides[0])) { +$provides = $this->convertLinksToMap($provides, 'setProvides'); +} + +$this->provides = $provides; +} + + + + + +public function getProvides(): array +{ +return $this->provides; +} + + + + + + +public function setReplaces(array $replaces): void +{ +if (isset($replaces[0])) { +$replaces = $this->convertLinksToMap($replaces, 'setReplaces'); +} + +$this->replaces = $replaces; +} + + + + + +public function getReplaces(): array +{ +return $this->replaces; +} + + + + + + +public function setDevRequires(array $devRequires): void +{ +if (isset($devRequires[0])) { +$devRequires = $this->convertLinksToMap($devRequires, 'setDevRequires'); +} + +$this->devRequires = $devRequires; +} + + + + +public function getDevRequires(): array +{ +return $this->devRequires; +} + + + + + + +public function setSuggests(array $suggests): void +{ +$this->suggests = $suggests; +} + + + + +public function getSuggests(): array +{ +return $this->suggests; +} + + + + + + + + +public function setAutoload(array $autoload): void +{ +$this->autoload = $autoload; +} + + + + +public function getAutoload(): array +{ +return $this->autoload; +} + + + + + + + + +public function setDevAutoload(array $devAutoload): void +{ +$this->devAutoload = $devAutoload; +} + + + + +public function getDevAutoload(): array +{ +return $this->devAutoload; +} + + + + + + +public function setIncludePaths(array $includePaths): void +{ +$this->includePaths = $includePaths; +} + + + + +public function getIncludePaths(): array +{ +return $this->includePaths; +} + + + + +public function setNotificationUrl(string $notificationUrl): void +{ +$this->notificationUrl = $notificationUrl; +} + + + + +public function getNotificationUrl(): ?string +{ +return $this->notificationUrl; +} + +public function setIsDefaultBranch(bool $defaultBranch): void +{ +$this->isDefaultBranch = $defaultBranch; +} + + + + +public function isDefaultBranch(): bool +{ +return $this->isDefaultBranch; +} + + + + +public function setSourceDistReferences(string $reference): void +{ +$this->setSourceReference($reference); + + + +if ( +$this->getDistUrl() !== null +&& Preg::isMatch('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $this->getDistUrl()) +) { +$this->setDistReference($reference); +$this->setDistUrl(Preg::replace('{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i', $reference, $this->getDistUrl())); +} elseif ($this->getDistReference()) { +$this->setDistReference($reference); +} +} + + + + + + + + +public function replaceVersion(string $version, string $prettyVersion): void +{ +$this->version = $version; +$this->prettyVersion = $prettyVersion; + +$this->stability = VersionParser::parseStability($version); +$this->dev = $this->stability === 'dev'; +} + + + + + + + + +protected function getUrls(?string $url, ?array $mirrors, ?string $ref, ?string $type, string $urlType): array +{ +if (!$url) { +return []; +} + +if ($urlType === 'dist' && false !== strpos($url, '%')) { +$url = ComposerMirror::processUrl($url, $this->name, $this->version, $ref, $type, $this->prettyVersion); +} + +$urls = [$url]; +if ($mirrors) { +foreach ($mirrors as $mirror) { +if ($urlType === 'dist') { +$mirrorUrl = ComposerMirror::processUrl($mirror['url'], $this->name, $this->version, $ref, $type, $this->prettyVersion); +} elseif ($urlType === 'source' && $type === 'git') { +$mirrorUrl = ComposerMirror::processGitUrl($mirror['url'], $this->name, $url, $type); +} elseif ($urlType === 'source' && $type === 'hg') { +$mirrorUrl = ComposerMirror::processHgUrl($mirror['url'], $this->name, $url, $type); +} else { +continue; +} +if (!\in_array($mirrorUrl, $urls)) { +$func = $mirror['preferred'] ? 'array_unshift' : 'array_push'; +$func($urls, $mirrorUrl); +} +} +} + +return $urls; +} + + + + + +private function convertLinksToMap(array $links, string $source): array +{ +trigger_error('Package::'.$source.' must be called with a map of lowercased package name => Link object, got a indexed array, this is deprecated and you should fix your usage.'); +$newLinks = []; +foreach ($links as $link) { +$newLinks[$link->getTarget()] = $link; +} + +return $newLinks; +} +} diff --git a/composer/src/Composer/Package/PackageInterface.php b/composer/src/Composer/Package/PackageInterface.php new file mode 100644 index 000000000..4ac4c9253 --- /dev/null +++ b/composer/src/Composer/Package/PackageInterface.php @@ -0,0 +1,393 @@ +aliasOf; +} + + + + +public function getAliases(): array +{ +return $this->aliasOf->getAliases(); +} + + + + +public function getMinimumStability(): string +{ +return $this->aliasOf->getMinimumStability(); +} + + + + +public function getStabilityFlags(): array +{ +return $this->aliasOf->getStabilityFlags(); +} + + + + +public function getReferences(): array +{ +return $this->aliasOf->getReferences(); +} + + + + +public function getPreferStable(): bool +{ +return $this->aliasOf->getPreferStable(); +} + + + + +public function getConfig(): array +{ +return $this->aliasOf->getConfig(); +} + + + + +public function setRequires(array $requires): void +{ +$this->requires = $this->replaceSelfVersionDependencies($requires, Link::TYPE_REQUIRE); + +$this->aliasOf->setRequires($requires); +} + + + + +public function setDevRequires(array $devRequires): void +{ +$this->devRequires = $this->replaceSelfVersionDependencies($devRequires, Link::TYPE_DEV_REQUIRE); + +$this->aliasOf->setDevRequires($devRequires); +} + + + + +public function setConflicts(array $conflicts): void +{ +$this->conflicts = $this->replaceSelfVersionDependencies($conflicts, Link::TYPE_CONFLICT); +$this->aliasOf->setConflicts($conflicts); +} + + + + +public function setProvides(array $provides): void +{ +$this->provides = $this->replaceSelfVersionDependencies($provides, Link::TYPE_PROVIDE); +$this->aliasOf->setProvides($provides); +} + + + + +public function setReplaces(array $replaces): void +{ +$this->replaces = $this->replaceSelfVersionDependencies($replaces, Link::TYPE_REPLACE); +$this->aliasOf->setReplaces($replaces); +} + + + + +public function setAutoload(array $autoload): void +{ +$this->aliasOf->setAutoload($autoload); +} + + + + +public function setDevAutoload(array $devAutoload): void +{ +$this->aliasOf->setDevAutoload($devAutoload); +} + + + + +public function setStabilityFlags(array $stabilityFlags): void +{ +$this->aliasOf->setStabilityFlags($stabilityFlags); +} + + + + +public function setMinimumStability(string $minimumStability): void +{ +$this->aliasOf->setMinimumStability($minimumStability); +} + + + + +public function setPreferStable(bool $preferStable): void +{ +$this->aliasOf->setPreferStable($preferStable); +} + + + + +public function setConfig(array $config): void +{ +$this->aliasOf->setConfig($config); +} + + + + +public function setReferences(array $references): void +{ +$this->aliasOf->setReferences($references); +} + + + + +public function setAliases(array $aliases): void +{ +$this->aliasOf->setAliases($aliases); +} + + + + +public function setSuggests(array $suggests): void +{ +$this->aliasOf->setSuggests($suggests); +} + + + + +public function setExtra(array $extra): void +{ +$this->aliasOf->setExtra($extra); +} + +public function __clone() +{ +parent::__clone(); +$this->aliasOf = clone $this->aliasOf; +} +} diff --git a/composer/src/Composer/Package/RootPackage.php b/composer/src/Composer/Package/RootPackage.php new file mode 100644 index 000000000..8a6d8de77 --- /dev/null +++ b/composer/src/Composer/Package/RootPackage.php @@ -0,0 +1,132 @@ +minimumStability = $minimumStability; +} + + + + +public function getMinimumStability(): string +{ +return $this->minimumStability; +} + + + + +public function setStabilityFlags(array $stabilityFlags): void +{ +$this->stabilityFlags = $stabilityFlags; +} + + + + +public function getStabilityFlags(): array +{ +return $this->stabilityFlags; +} + + + + +public function setPreferStable(bool $preferStable): void +{ +$this->preferStable = $preferStable; +} + + + + +public function getPreferStable(): bool +{ +return $this->preferStable; +} + + + + +public function setConfig(array $config): void +{ +$this->config = $config; +} + + + + +public function getConfig(): array +{ +return $this->config; +} + + + + +public function setReferences(array $references): void +{ +$this->references = $references; +} + + + + +public function getReferences(): array +{ +return $this->references; +} + + + + +public function setAliases(array $aliases): void +{ +$this->aliases = $aliases; +} + + + + +public function getAliases(): array +{ +return $this->aliases; +} +} diff --git a/composer/src/Composer/Package/RootPackageInterface.php b/composer/src/Composer/Package/RootPackageInterface.php new file mode 100644 index 000000000..d344536a1 --- /dev/null +++ b/composer/src/Composer/Package/RootPackageInterface.php @@ -0,0 +1,169 @@ +getPrettyString(); +if (str_starts_with($constraint->getPrettyString(), 'dev-')) { +return $prettyConstraint; +} + +$version = $package->getVersion(); +if (str_starts_with($package->getVersion(), 'dev-')) { +$loader = new ArrayLoader($parser); +$dumper = new ArrayDumper(); +$extra = $loader->getBranchAlias($dumper->dump($package)); + + +if (null === $extra || $extra === VersionParser::DEFAULT_BRANCH_ALIAS) { +return $prettyConstraint; +} + +$version = $extra; +} + +$intervals = Intervals::get($constraint); + + +if (\count($intervals['branches']['names']) > 0) { +return $prettyConstraint; +} + +$major = Preg::replace('{^(\d+).*}', '$1', $version); +$versionWithoutSuffix = Preg::replace('{(?:\.(?:0|9999999))+(-dev)?$}', '', $version); +$newPrettyConstraint = '^'.$versionWithoutSuffix; + + +if (!Preg::isMatch('{^\^\d+(\.\d+)*$}', $newPrettyConstraint)) { +return $prettyConstraint; +} + +$pattern = '{ + (?<=,|\ |\||^) # leading separator + (?P + \^'.$major.'(?:\.\d+)* # e.g. ^2.anything + | ~'.$major.'(?:\.\d+)? # e.g. ~2 or ~2.2 but no more + | '.$major.'(?:\.[*x])+ # e.g. 2.* or 2.*.* or 2.x.x.x etc + | >=\d(?:\.\d+)* # e.g. >=2 or >=1.2 etc + ) + (?=,|$|\ |\||@) # trailing separator + }x'; +if (Preg::isMatchAllWithOffsets($pattern, $prettyConstraint, $matches)) { +$modified = $prettyConstraint; +foreach (array_reverse($matches['constraint']) as $match) { +assert(is_string($match[0])); +$suffix = ''; +if (substr_count($match[0], '.') === 2 && substr_count($versionWithoutSuffix, '.') === 1) { +$suffix = '.0'; +} +if (str_starts_with($match[0], '>=')) { +$replacement = '>='.$versionWithoutSuffix.$suffix; +} else { +$replacement = $newPrettyConstraint.$suffix; +} +$modified = substr_replace($modified, $replacement, $match[1], Platform::strlen($match[0])); +} + + +$newConstraint = $parser->parseConstraints($modified); +if (Intervals::isSubsetOf($newConstraint, $constraint) && Intervals::isSubsetOf($constraint, $newConstraint)) { +return $prettyConstraint; +} + +return $modified; +} + +return $prettyConstraint; +} +} diff --git a/composer/src/Composer/Package/Version/VersionGuesser.php b/composer/src/Composer/Package/Version/VersionGuesser.php new file mode 100644 index 000000000..146cd6ca1 --- /dev/null +++ b/composer/src/Composer/Package/Version/VersionGuesser.php @@ -0,0 +1,423 @@ +config = $config; +$this->process = $process; +$this->versionParser = $versionParser; +} + + + + + + + +public function guessVersion(array $packageConfig, string $path): ?array +{ +if (!function_exists('proc_open')) { +return null; +} + + + +if (Platform::isInputCompletionProcess()) { +return null; +} + +$versionData = $this->guessGitVersion($packageConfig, $path); +if (null !== $versionData && null !== $versionData['version']) { +return $this->postprocess($versionData); +} + +$versionData = $this->guessHgVersion($packageConfig, $path); +if (null !== $versionData && null !== $versionData['version']) { +return $this->postprocess($versionData); +} + +$versionData = $this->guessFossilVersion($path); +if (null !== $versionData && null !== $versionData['version']) { +return $this->postprocess($versionData); +} + +$versionData = $this->guessSvnVersion($packageConfig, $path); +if (null !== $versionData && null !== $versionData['version']) { +return $this->postprocess($versionData); +} + +return null; +} + + + + + + +private function postprocess(array $versionData): array +{ +if (!empty($versionData['feature_version']) && $versionData['feature_version'] === $versionData['version'] && $versionData['feature_pretty_version'] === $versionData['pretty_version']) { +unset($versionData['feature_version'], $versionData['feature_pretty_version']); +} + +if ('-dev' === substr($versionData['version'], -4) && Preg::isMatch('{\.9{7}}', $versionData['version'])) { +$versionData['pretty_version'] = Preg::replace('{(\.9{7})+}', '.x', $versionData['version']); +} + +if (!empty($versionData['feature_version']) && '-dev' === substr($versionData['feature_version'], -4) && Preg::isMatch('{\.9{7}}', $versionData['feature_version'])) { +$versionData['feature_pretty_version'] = Preg::replace('{(\.9{7})+}', '.x', $versionData['feature_version']); +} + +return $versionData; +} + + + + + + +private function guessGitVersion(array $packageConfig, string $path): array +{ +GitUtil::cleanEnv(); +$commit = null; +$version = null; +$prettyVersion = null; +$featureVersion = null; +$featurePrettyVersion = null; +$isDetached = false; + + +if (0 === $this->process->execute(['git', 'branch', '-a', '--no-color', '--no-abbrev', '-v'], $output, $path)) { +$branches = []; +$isFeatureBranch = false; + + +foreach ($this->process->splitLines($output) as $branch) { +if ($branch && Preg::isMatchStrictGroups('{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}', $branch, $match)) { +if ( +$match[1] === '(no branch)' +|| strpos($match[1], '(detached ') === 0 +|| strpos($match[1], '(HEAD detached at') === 0 +) { +$version = 'dev-' . $match[2]; +$prettyVersion = $version; +$isFeatureBranch = true; +$isDetached = true; +} else { +$version = $this->versionParser->normalizeBranch($match[1]); +$prettyVersion = 'dev-' . $match[1]; +$isFeatureBranch = $this->isFeatureBranch($packageConfig, $match[1]); +} + +$commit = $match[2]; +} + +if ($branch && !Preg::isMatchStrictGroups('{^ *.+/HEAD }', $branch)) { +if (Preg::isMatchStrictGroups('{^(?:\* )? *((?:remotes/(?:origin|upstream)/)?[^\s/]+) *([a-f0-9]+) .*$}', $branch, $match)) { +$branches[] = $match[1]; +} +} +} + +if ($isFeatureBranch) { +$featureVersion = $version; +$featurePrettyVersion = $prettyVersion; + + +$result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'git rev-list %candidate%..%branch%', $path); +$version = $result['version']; +$prettyVersion = $result['pretty_version']; +} +} + +if (!$version || $isDetached) { +$result = $this->versionFromGitTags($path); +if ($result) { +$version = $result['version']; +$prettyVersion = $result['pretty_version']; +$featureVersion = null; +$featurePrettyVersion = null; +} +} + +if (null === $commit) { +$command = 'git log --pretty="%H" -n1 HEAD'.GitUtil::getNoShowSignatureFlag($this->process); +if (0 === $this->process->execute($command, $output, $path)) { +$commit = trim($output) ?: null; +} +} + +if ($featureVersion) { +return ['version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion, 'feature_version' => $featureVersion, 'feature_pretty_version' => $featurePrettyVersion]; +} + +return ['version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion]; +} + + + + +private function versionFromGitTags(string $path): ?array +{ + +if (0 === $this->process->execute('git describe --exact-match --tags', $output, $path)) { +try { +$version = $this->versionParser->normalize(trim($output)); + +return ['version' => $version, 'pretty_version' => trim($output)]; +} catch (\Exception $e) { +} +} + +return null; +} + + + + + + +private function guessHgVersion(array $packageConfig, string $path): ?array +{ + +if (0 === $this->process->execute('hg branch', $output, $path)) { +$branch = trim($output); +$version = $this->versionParser->normalizeBranch($branch); +$isFeatureBranch = 0 === strpos($version, 'dev-'); + +if (VersionParser::DEFAULT_BRANCH_ALIAS === $version) { +return ['version' => $version, 'commit' => null, 'pretty_version' => 'dev-'.$branch]; +} + +if (!$isFeatureBranch) { +return ['version' => $version, 'commit' => null, 'pretty_version' => $version]; +} + + +$io = new NullIO(); +$driver = new HgDriver(['url' => $path], $io, $this->config, new HttpDownloader($io, $this->config), $this->process); +$branches = array_map('strval', array_keys($driver->getBranches())); + + +$result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'hg log -r "not ancestors(\'%candidate%\') and ancestors(\'%branch%\')" --template "{node}\\n"', $path); +$result['commit'] = ''; +$result['feature_version'] = $version; +$result['feature_pretty_version'] = $version; + +return $result; +} + +return null; +} + + + + + + + + + +private function guessFeatureVersion(array $packageConfig, ?string $version, array $branches, string $scmCmdline, string $path): array +{ +$prettyVersion = $version; + + + +if (!isset($packageConfig['extra']['branch-alias'][$version]) +|| strpos(json_encode($packageConfig), '"self.version"') +) { +$branch = Preg::replace('{^dev-}', '', $version); +$length = PHP_INT_MAX; + + +if (!$this->isFeatureBranch($packageConfig, $branch)) { +return ['version' => $version, 'pretty_version' => $prettyVersion]; +} + + + + +usort($branches, static function ($a, $b): int { +$aRemote = 0 === strpos($a, 'remotes/'); +$bRemote = 0 === strpos($b, 'remotes/'); + +if ($aRemote !== $bRemote) { +return $aRemote ? 1 : -1; +} + +return strnatcasecmp($b, $a); +}); + +$promises = []; +$this->process->setMaxJobs(30); +try { +foreach ($branches as $candidate) { +$candidateVersion = Preg::replace('{^remotes/\S+/}', '', $candidate); + + +if ($candidate === $branch || $this->isFeatureBranch($packageConfig, $candidateVersion)) { +continue; +} + +$cmdLine = str_replace(['%candidate%', '%branch%'], [$candidate, $branch], $scmCmdline); +$promises[] = $this->process->executeAsync($cmdLine, $path)->then(function (Process $process) use (&$length, &$version, &$prettyVersion, $candidateVersion, &$promises): void { +if (!$process->isSuccessful()) { +return; +} + +$output = $process->getOutput(); +if (strlen($output) < $length) { +$length = strlen($output); +$version = $this->versionParser->normalizeBranch($candidateVersion); +$prettyVersion = 'dev-' . $candidateVersion; +if ($length === 0) { +foreach ($promises as $promise) { +if ($promise instanceof CancellablePromiseInterface) { +$promise->cancel(); +} +} +} +} +}); +} + +$this->process->wait(); +} finally { +$this->process->resetMaxJobs(); +} +} + +return ['version' => $version, 'pretty_version' => $prettyVersion]; +} + + + + +private function isFeatureBranch(array $packageConfig, ?string $branchName): bool +{ +$nonFeatureBranches = ''; +if (!empty($packageConfig['non-feature-branches'])) { +$nonFeatureBranches = implode('|', $packageConfig['non-feature-branches']); +} + +return !Preg::isMatch('{^(' . $nonFeatureBranches . '|master|main|latest|next|current|support|tip|trunk|default|develop|\d+\..+)$}', $branchName, $match); +} + + + + +private function guessFossilVersion(string $path): array +{ +$version = null; +$prettyVersion = null; + + +if (0 === $this->process->execute('fossil branch list', $output, $path)) { +$branch = trim($output); +$version = $this->versionParser->normalizeBranch($branch); +$prettyVersion = 'dev-' . $branch; +} + + +if (0 === $this->process->execute('fossil tag list', $output, $path)) { +try { +$version = $this->versionParser->normalize(trim($output)); +$prettyVersion = trim($output); +} catch (\Exception $e) { +} +} + +return ['version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion]; +} + + + + + + +private function guessSvnVersion(array $packageConfig, string $path): ?array +{ +SvnUtil::cleanEnv(); + + +if (0 === $this->process->execute('svn info --xml', $output, $path)) { +$trunkPath = isset($packageConfig['trunk-path']) ? preg_quote($packageConfig['trunk-path'], '#') : 'trunk'; +$branchesPath = isset($packageConfig['branches-path']) ? preg_quote($packageConfig['branches-path'], '#') : 'branches'; +$tagsPath = isset($packageConfig['tags-path']) ? preg_quote($packageConfig['tags-path'], '#') : 'tags'; + +$urlPattern = '#.*/(' . $trunkPath . '|(' . $branchesPath . '|' . $tagsPath . ')/(.*))#'; + +if (Preg::isMatch($urlPattern, $output, $matches)) { +if (isset($matches[2], $matches[3]) && ($branchesPath === $matches[2] || $tagsPath === $matches[2])) { + +$version = $this->versionParser->normalizeBranch($matches[3]); +$prettyVersion = 'dev-' . $matches[3]; + +return ['version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion]; +} + +assert(is_string($matches[1])); +$prettyVersion = trim($matches[1]); +if ($prettyVersion === 'trunk') { +$version = 'dev-trunk'; +} else { +$version = $this->versionParser->normalize($prettyVersion); +} + +return ['version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion]; +} +} + +return null; +} +} diff --git a/composer/src/Composer/Package/Version/VersionParser.php b/composer/src/Composer/Package/Version/VersionParser.php new file mode 100644 index 000000000..605735f08 --- /dev/null +++ b/composer/src/Composer/Package/Version/VersionParser.php @@ -0,0 +1,94 @@ + $name, 'version' => $version]; +} else { +$result[] = ['name' => $pair]; +} +} + +return $result; +} + +public static function isUpgrade(string $normalizedFrom, string $normalizedTo): bool +{ +if ($normalizedFrom === $normalizedTo) { +return true; +} + +if (in_array($normalizedFrom, ['dev-master', 'dev-trunk', 'dev-default'], true)) { +$normalizedFrom = VersionParser::DEFAULT_BRANCH_ALIAS; +} +if (in_array($normalizedTo, ['dev-master', 'dev-trunk', 'dev-default'], true)) { +$normalizedTo = VersionParser::DEFAULT_BRANCH_ALIAS; +} + +if (strpos($normalizedFrom, 'dev-') === 0 || strpos($normalizedTo, 'dev-') === 0) { +return true; +} + +$sorted = Semver::sort([$normalizedTo, $normalizedFrom]); + +return $sorted[0] === $normalizedFrom; +} +} diff --git a/composer/src/Composer/Package/Version/VersionSelector.php b/composer/src/Composer/Package/Version/VersionSelector.php new file mode 100644 index 000000000..eff1d907d --- /dev/null +++ b/composer/src/Composer/Package/Version/VersionSelector.php @@ -0,0 +1,259 @@ +repositorySet = $repositorySet; +if ($platformRepo) { +foreach ($platformRepo->getPackages() as $package) { +$this->platformConstraints[$package->getName()][] = new Constraint('==', $package->getVersion()); +} +} +} + + + + + + + + + + + +public function findBestCandidate(string $packageName, ?string $targetPackageVersion = null, string $preferredStability = 'stable', $platformRequirementFilter = null, int $repoSetFlags = 0, ?IOInterface $io = null, $showWarnings = true) +{ +if (!isset(BasePackage::$stabilities[$preferredStability])) { + +throw new \UnexpectedValueException('Expected a valid stability name as 3rd argument, got '.$preferredStability); +} + +if (null === $platformRequirementFilter) { +$platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); +} elseif (!($platformRequirementFilter instanceof PlatformRequirementFilterInterface)) { +trigger_error('VersionSelector::findBestCandidate with ignored platform reqs as bool|array is deprecated since Composer 2.2, use an instance of PlatformRequirementFilterInterface instead.', E_USER_DEPRECATED); +$platformRequirementFilter = PlatformRequirementFilterFactory::fromBoolOrList($platformRequirementFilter); +} + +$constraint = $targetPackageVersion ? $this->getParser()->parseConstraints($targetPackageVersion) : null; +$candidates = $this->repositorySet->findPackages(strtolower($packageName), $constraint, $repoSetFlags); + +$minPriority = BasePackage::$stabilities[$preferredStability]; +usort($candidates, static function (PackageInterface $a, PackageInterface $b) use ($minPriority) { +$aPriority = $a->getStabilityPriority(); +$bPriority = $b->getStabilityPriority(); + + + +if ($minPriority < $aPriority && $bPriority < $aPriority) { +return 1; +} + + + +if ($minPriority < $aPriority && $aPriority < $bPriority) { +return -1; +} + + + +if ($minPriority >= $aPriority && $minPriority < $bPriority) { +return -1; +} + + +return version_compare($b->getVersion(), $a->getVersion()); +}); + +if (count($this->platformConstraints) > 0 && !($platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter)) { + +$alreadyWarnedNames = []; + +$alreadySeenNames = []; + +foreach ($candidates as $pkg) { +$reqs = $pkg->getRequires(); +foreach ($reqs as $name => $link) { +if (!PlatformRepository::isPlatformPackage($name) || $platformRequirementFilter->isIgnored($name)) { +continue; +} +if (isset($this->platformConstraints[$name])) { +foreach ($this->platformConstraints[$name] as $providedConstraint) { +if ($link->getConstraint()->matches($providedConstraint)) { + +continue 2; +} +} + + +$reason = 'is not satisfied by your platform'; +} else { + + +$reason = 'is missing from your platform'; +} + +$isLatestVersion = !isset($alreadySeenNames[$pkg->getName()]); +$alreadySeenNames[$pkg->getName()] = true; +if ($io !== null && ($showWarnings === true || (is_callable($showWarnings) && $showWarnings($pkg)))) { +$isFirstWarning = !isset($alreadyWarnedNames[$pkg->getName()]); +$alreadyWarnedNames[$pkg->getName()] = true; +$latest = $isLatestVersion ? "'s latest version" : ''; +$io->writeError( +'Cannot use '.$pkg->getPrettyName().$latest.' '.$pkg->getPrettyVersion().' as it '.$link->getDescription().' '.$link->getTarget().' '.$link->getPrettyConstraint().' which '.$reason.'.', +true, +$isFirstWarning ? IOInterface::NORMAL : IOInterface::VERBOSE +); +} + + +continue 2; +} + +$package = $pkg; +break; +} +} else { +$package = count($candidates) > 0 ? $candidates[0] : null; +} + +if (!isset($package)) { +return false; +} + + +if ($package instanceof AliasPackage && $package->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { +$package = $package->getAliasOf(); +} + +return $package; +} + + + + + + + + + + + + + +public function findRecommendedRequireVersion(PackageInterface $package): string +{ + + +if (0 === strpos($package->getName(), 'ext-')) { +$phpVersion = PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; +$extVersion = implode('.', array_slice(explode('.', $package->getVersion()), 0, 3)); +if ($phpVersion === $extVersion) { +return '*'; +} +} + +$version = $package->getVersion(); +if (!$package->isDev()) { +return $this->transformVersion($version, $package->getPrettyVersion(), $package->getStability()); +} + +$loader = new ArrayLoader($this->getParser()); +$dumper = new ArrayDumper(); +$extra = $loader->getBranchAlias($dumper->dump($package)); +if ($extra && $extra !== VersionParser::DEFAULT_BRANCH_ALIAS) { +$extra = Preg::replace('{^(\d+\.\d+\.\d+)(\.9999999)-dev$}', '$1.0', $extra, -1, $count); +if ($count > 0) { +$extra = str_replace('.9999999', '.0', $extra); + +return $this->transformVersion($extra, $extra, 'dev'); +} +} + +return $package->getPrettyVersion(); +} + +private function transformVersion(string $version, string $prettyVersion, string $stability): string +{ + + +$semanticVersionParts = explode('.', $version); + + +if (count($semanticVersionParts) === 4 && Preg::isMatch('{^0\D?}', $semanticVersionParts[3])) { + +if ($semanticVersionParts[0] === '0') { +unset($semanticVersionParts[3]); +} else { +unset($semanticVersionParts[2], $semanticVersionParts[3]); +} +$version = implode('.', $semanticVersionParts); +} else { +return $prettyVersion; +} + + +if ($stability !== 'stable') { +$version .= '@'.$stability; +} + + +return '^' . $version; +} + +private function getParser(): VersionParser +{ +if ($this->parser === null) { +$this->parser = new VersionParser(); +} + +return $this->parser; +} +} diff --git a/composer/src/Composer/PartialComposer.php b/composer/src/Composer/PartialComposer.php new file mode 100644 index 000000000..223c8f923 --- /dev/null +++ b/composer/src/Composer/PartialComposer.php @@ -0,0 +1,115 @@ +package = $package; +} + +public function getPackage(): RootPackageInterface +{ +return $this->package; +} + +public function setConfig(Config $config): void +{ +$this->config = $config; +} + +public function getConfig(): Config +{ +return $this->config; +} + +public function setLoop(Loop $loop): void +{ +$this->loop = $loop; +} + +public function getLoop(): Loop +{ +return $this->loop; +} + +public function setRepositoryManager(RepositoryManager $manager): void +{ +$this->repositoryManager = $manager; +} + +public function getRepositoryManager(): RepositoryManager +{ +return $this->repositoryManager; +} + +public function setInstallationManager(InstallationManager $manager): void +{ +$this->installationManager = $manager; +} + +public function getInstallationManager(): InstallationManager +{ +return $this->installationManager; +} + +public function setEventDispatcher(EventDispatcher $eventDispatcher): void +{ +$this->eventDispatcher = $eventDispatcher; +} + +public function getEventDispatcher(): EventDispatcher +{ +return $this->eventDispatcher; +} +} diff --git a/composer/src/Composer/Platform/HhvmDetector.php b/composer/src/Composer/Platform/HhvmDetector.php new file mode 100644 index 000000000..f8aec15cc --- /dev/null +++ b/composer/src/Composer/Platform/HhvmDetector.php @@ -0,0 +1,65 @@ +executableFinder = $executableFinder; +$this->processExecutor = $processExecutor; +} + +public function reset(): void +{ +self::$hhvmVersion = null; +} + +public function getVersion(): ?string +{ +if (null !== self::$hhvmVersion) { +return self::$hhvmVersion ?: null; +} + +self::$hhvmVersion = defined('HHVM_VERSION') ? HHVM_VERSION : null; +if (self::$hhvmVersion === null && !Platform::isWindows()) { +self::$hhvmVersion = false; +$this->executableFinder = $this->executableFinder ?: new ExecutableFinder(); +$hhvmPath = $this->executableFinder->find('hhvm'); +if ($hhvmPath !== null) { +$this->processExecutor = $this->processExecutor ?? new ProcessExecutor(); +$exitCode = $this->processExecutor->execute( +ProcessExecutor::escape($hhvmPath). +' --php -d hhvm.jit=0 -r "echo HHVM_VERSION;" 2>/dev/null', +self::$hhvmVersion +); +if ($exitCode !== 0) { +self::$hhvmVersion = false; +} +} +} + +return self::$hhvmVersion ?: null; +} +} diff --git a/composer/src/Composer/Platform/Runtime.php b/composer/src/Composer/Platform/Runtime.php new file mode 100644 index 000000000..2f3290879 --- /dev/null +++ b/composer/src/Composer/Platform/Runtime.php @@ -0,0 +1,103 @@ +newInstanceArgs($arguments); +} + + +public function getExtensions(): array +{ +return get_loaded_extensions(); +} + +public function getExtensionVersion(string $extension): string +{ +$version = phpversion($extension); +if ($version === false) { +$version = '0'; +} + +return $version; +} + + + + +public function getExtensionInfo(string $extension): string +{ +$reflector = new \ReflectionExtension($extension); + +ob_start(); +$reflector->info(); + +return ob_get_clean(); +} +} diff --git a/composer/src/Composer/Platform/Version.php b/composer/src/Composer/Platform/Version.php new file mode 100644 index 000000000..b1337f749 --- /dev/null +++ b/composer/src/Composer/Platform/Version.php @@ -0,0 +1,90 @@ +[0-9.]+)(?[a-z]{0,2})(?(?:-?(?:dev|pre|alpha|beta|rc|fips)[\d]*)*)(?:-\w+)?(?: \(.+?\))?$/', $opensslVersion, $matches)) { +return null; +} + + +$patch = ''; +if (version_compare($matches['version'], '3.0.0', '<')) { +$patch = '.'.self::convertAlphaVersionToIntVersion($matches['patch']); +} + +$isFips = strpos($matches['suffix'], 'fips') !== false; +$suffix = strtr('-'.ltrim($matches['suffix'], '-'), ['-fips' => '', '-pre' => '-alpha']); + +return rtrim($matches['version'].$patch.$suffix, '-'); +} + +public static function parseLibjpeg(string $libjpegVersion): ?string +{ +if (!Preg::isMatchStrictGroups('/^(?\d+)(?[a-z]*)$/', $libjpegVersion, $matches)) { +return null; +} + +return $matches['major'].'.'.self::convertAlphaVersionToIntVersion($matches['minor']); +} + +public static function parseZoneinfoVersion(string $zoneinfoVersion): ?string +{ +if (!Preg::isMatchStrictGroups('/^(?\d{4})(?[a-z]*)$/', $zoneinfoVersion, $matches)) { +return null; +} + +return $matches['year'].'.'.self::convertAlphaVersionToIntVersion($matches['revision']); +} + + + + +private static function convertAlphaVersionToIntVersion(string $alpha): int +{ +return strlen($alpha) * (-ord('a') + 1) + array_sum(array_map('ord', str_split($alpha))); +} + +public static function convertLibxpmVersionId(int $versionId): string +{ +return self::convertVersionId($versionId, 100); +} + +public static function convertOpenldapVersionId(int $versionId): string +{ +return self::convertVersionId($versionId, 100); +} + +private static function convertVersionId(int $versionId, int $base): string +{ +return sprintf( +'%d.%d.%d', +$versionId / ($base * $base), +(int) ($versionId / $base) % $base, +$versionId % $base +); +} +} diff --git a/composer/src/Composer/Plugin/Capability/Capability.php b/composer/src/Composer/Plugin/Capability/Capability.php new file mode 100644 index 000000000..9d3ef1a39 --- /dev/null +++ b/composer/src/Composer/Plugin/Capability/Capability.php @@ -0,0 +1,23 @@ +commandName = $commandName; +$this->input = $input; +$this->output = $output; +} + + + + +public function getInput(): InputInterface +{ +return $this->input; +} + + + + +public function getOutput(): OutputInterface +{ +return $this->output; +} + + + + +public function getCommandName(): string +{ +return $this->commandName; +} +} diff --git a/composer/src/Composer/Plugin/PluginBlockedException.php b/composer/src/Composer/Plugin/PluginBlockedException.php new file mode 100644 index 000000000..ba0527ce3 --- /dev/null +++ b/composer/src/Composer/Plugin/PluginBlockedException.php @@ -0,0 +1,19 @@ +io = $io; + $this->composer = $composer; + $this->globalComposer = $globalComposer; + $this->versionParser = new VersionParser(); + $this->disablePlugins = $disablePlugins; + $this->allowPluginRules = $this->parseAllowedPlugins($composer->getConfig()->get('allow-plugins'), $composer->getLocker()); + $this->allowGlobalPluginRules = $this->parseAllowedPlugins($globalComposer !== null ? $globalComposer->getConfig()->get('allow-plugins') : false); + } + + public function setRunningInGlobalDir(bool $runningInGlobalDir): void + { + $this->runningInGlobalDir = $runningInGlobalDir; + } + + + public function loadInstalledPlugins(): void + { + if (!$this->arePluginsDisabled('local')) { + $repo = $this->composer->getRepositoryManager()->getLocalRepository(); + $this->loadRepository($repo, false); + } + + if ($this->globalComposer !== null && !$this->arePluginsDisabled('global')) { + $this->loadRepository($this->globalComposer->getRepositoryManager()->getLocalRepository(), true); + } + } + + + public function deactivateInstalledPlugins(): void + { + if (!$this->arePluginsDisabled('local')) { + $repo = $this->composer->getRepositoryManager()->getLocalRepository(); + $this->deactivateRepository($repo, false); + } + + if ($this->globalComposer !== null && !$this->arePluginsDisabled('global')) { + $this->deactivateRepository($this->globalComposer->getRepositoryManager()->getLocalRepository(), true); + } + } + + + public function getPlugins(): array + { + return $this->plugins; + } + + + public function getGlobalComposer(): ?PartialComposer + { + return $this->globalComposer; + } + + + public function registerPackage(PackageInterface $package, bool $failOnMissingClasses = false, bool $isGlobalPlugin = false): void + { + if ($this->arePluginsDisabled($isGlobalPlugin ? 'global' : 'local')) { + return; + } + + if ($package->getType() === 'composer-plugin') { + $requiresComposer = null; + foreach ($package->getRequires() as $link) { + if ('composer-plugin-api' === $link->getTarget()) { + $requiresComposer = $link->getConstraint(); + break; + } + } + + if (!$requiresComposer) { + throw new \RuntimeException("Plugin " . $package->getName() . " is missing a require statement for a version of the composer-plugin-api package."); + } + + $currentPluginApiVersion = $this->getPluginApiVersion(); + $currentPluginApiConstraint = new Constraint('==', $this->versionParser->normalize($currentPluginApiVersion)); + + if ($requiresComposer->getPrettyString() === $this->getPluginApiVersion()) { + $this->io->writeError('The "' . $package->getName() . '" plugin requires composer-plugin-api ' . $this->getPluginApiVersion() . ', this *WILL* break in the future and it should be fixed ASAP (require ^' . $this->getPluginApiVersion() . ' instead for example).'); + } elseif (!$requiresComposer->matches($currentPluginApiConstraint)) { + $this->io->writeError('The "' . $package->getName() . '" plugin ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'was skipped because it requires a Plugin API version ("' . $requiresComposer->getPrettyString() . '") that does not match your Composer installation ("' . $currentPluginApiVersion . '"). You may need to run composer update with the "--no-plugins" option.'); + + return; + } + + if ($package->getName() === 'symfony/flex' && Preg::isMatch('{^[0-9.]+$}', $package->getVersion()) && version_compare($package->getVersion(), '1.9.8', '<')) { + $this->io->writeError('The "' . $package->getName() . '" plugin ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'was skipped because it is not compatible with Composer 2+. Make sure to update it to version 1.9.8 or greater.'); + + return; + } + } + + if (!$this->isPluginAllowed($package->getName(), $isGlobalPlugin, $package->getExtra()['plugin-optional'] ?? false)) { + $this->io->writeError('Skipped loading "' . $package->getName() . '" ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'as it is not in config.allow-plugins', true, IOInterface::DEBUG); + + return; + } + + $oldInstallerPlugin = ($package->getType() === 'composer-installer'); + + if (isset($this->registeredPlugins[$package->getName()])) { + return; + } + + $extra = $package->getExtra(); + if (empty($extra['class'])) { + throw new \UnexpectedValueException('Error while installing ' . $package->getPrettyName() . ', composer-plugin packages should have a class defined in their extra key to be usable.'); + } + $classes = is_array($extra['class']) ? $extra['class'] : [$extra['class']]; + + $localRepo = $this->composer->getRepositoryManager()->getLocalRepository(); + $globalRepo = $this->globalComposer !== null ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; + + $rootPackage = clone $this->composer->getPackage(); + + + $rootPackageAutoloads = $rootPackage->getAutoload(); + $rootPackageAutoloads['files'] = []; + $rootPackage->setAutoload($rootPackageAutoloads); + $rootPackageAutoloads = $rootPackage->getDevAutoload(); + $rootPackageAutoloads['files'] = []; + $rootPackage->setDevAutoload($rootPackageAutoloads); + unset($rootPackageAutoloads); + + $rootPackageRepo = new RootPackageRepository($rootPackage); + $installedRepo = new InstalledRepository([$localRepo, $rootPackageRepo]); + if ($globalRepo) { + $installedRepo->addRepository($globalRepo); + } + + $autoloadPackages = [$package->getName() => $package]; + $autoloadPackages = $this->collectDependencies($installedRepo, $autoloadPackages, $package); + + $generator = $this->composer->getAutoloadGenerator(); + $autoloads = [[$rootPackage, '']]; + foreach ($autoloadPackages as $autoloadPackage) { + if ($autoloadPackage === $rootPackage) { + continue; + } + + $downloadPath = $this->getInstallPath($autoloadPackage, $globalRepo && $globalRepo->hasPackage($autoloadPackage)); + $autoloads[] = [$autoloadPackage, $downloadPath]; + } + + $map = $generator->parseAutoloads($autoloads, $rootPackage); + $classLoader = $generator->createLoader($map, $this->composer->getConfig()->get('vendor-dir')); + $classLoader->register(false); + + foreach ($map['files'] as $fileIdentifier => $file) { + + + if ($fileIdentifier === '7e9bd612cc444b3eed788ebbe46263a0') { + continue; + } + \Composer\Autoload\composerRequire($fileIdentifier, $file); + } + + foreach ($classes as $class) { + if (class_exists($class, false)) { + $class = trim($class, '\\'); + $path = $classLoader->findFile($class); + $code = file_get_contents($path); + $separatorPos = strrpos($class, '\\'); + $className = $class; + if ($separatorPos) { + $className = substr($class, $separatorPos + 1); + } + $code = Preg::replace('{^((?:final\s+)?(?:\s*))class\s+(' . preg_quote($className) . ')}mi', '$1class $2_composer_tmp' . self::$classCounter, $code, 1); + $code = strtr($code, [ + '__FILE__' => var_export($path, true), + '__DIR__' => var_export(dirname($path), true), + '__CLASS__' => var_export($class, true), + ]); + $code = Preg::replace('/^\s*<\?(php)?/i', '', $code, 1); + eval($code); + $class .= '_composer_tmp' . self::$classCounter; + self::$classCounter++; + } + + if ($oldInstallerPlugin) { + if (!is_a($class, 'Composer\Installer\InstallerInterface', true)) { + throw new \RuntimeException('Could not activate plugin "' . $package->getName() . '" as "' . $class . '" does not implement Composer\Installer\InstallerInterface'); + } + $this->io->writeError('Loading "' . $package->getName() . '" ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'which is a legacy composer-installer built for Composer 1.x, it is likely to cause issues as you are running Composer 2.x.'); + $installer = new $class($this->io, $this->composer); + $this->composer->getInstallationManager()->addInstaller($installer); + $this->registeredPlugins[$package->getName()] = $installer; + } elseif (class_exists($class)) { + if (!is_a($class, 'Composer\Plugin\PluginInterface', true)) { + throw new \RuntimeException('Could not activate plugin "' . $package->getName() . '" as "' . $class . '" does not implement Composer\Plugin\PluginInterface'); + } + $plugin = new $class(); + $this->addPlugin($plugin, $isGlobalPlugin, $package); + $this->registeredPlugins[$package->getName()] = $plugin; + } elseif ($failOnMissingClasses) { + throw new \UnexpectedValueException('Plugin ' . $package->getName() . ' could not be initialized, class not found: ' . $class); + } + } + } + + + public function deactivatePackage(PackageInterface $package): void + { + if (!isset($this->registeredPlugins[$package->getName()])) { + return; + } + + $plugin = $this->registeredPlugins[$package->getName()]; + unset($this->registeredPlugins[$package->getName()]); + if ($plugin instanceof InstallerInterface) { + $this->composer->getInstallationManager()->removeInstaller($plugin); + } else { + $this->removePlugin($plugin); + } + } + + + public function uninstallPackage(PackageInterface $package): void + { + if (!isset($this->registeredPlugins[$package->getName()])) { + return; + } + + $plugin = $this->registeredPlugins[$package->getName()]; + if ($plugin instanceof InstallerInterface) { + $this->deactivatePackage($package); + } else { + unset($this->registeredPlugins[$package->getName()]); + $this->removePlugin($plugin); + $this->uninstallPlugin($plugin); + } + } + + + protected function getPluginApiVersion(): string + { + return PluginInterface::PLUGIN_API_VERSION; + } + + + public function addPlugin(PluginInterface $plugin, bool $isGlobalPlugin = false, ?PackageInterface $sourcePackage = null): void + { + if ($this->arePluginsDisabled($isGlobalPlugin ? 'global' : 'local')) { + return; + } + + if ($sourcePackage === null) { + trigger_error('Calling PluginManager::addPlugin without $sourcePackage is deprecated, if you are using this please get in touch with us to explain the use case', E_USER_DEPRECATED); + } elseif (!$this->isPluginAllowed($sourcePackage->getName(), $isGlobalPlugin, $sourcePackage->getExtra()['plugin-optional'] ?? false)) { + $this->io->writeError('Skipped loading "' . get_class($plugin) . ' from ' . $sourcePackage->getName() . '" ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . ' as it is not in config.allow-plugins', true, IOInterface::DEBUG); + + return; + } + + $details = []; + if ($sourcePackage) { + $details[] = 'from ' . $sourcePackage->getName(); + } + if ($isGlobalPlugin || $this->runningInGlobalDir) { + $details[] = 'installed globally'; + } + $this->io->writeError('Loading plugin ' . get_class($plugin) . ($details ? ' (' . implode(', ', $details) . ')' : ''), true, IOInterface::DEBUG); + $this->plugins[] = $plugin; + $plugin->activate($this->composer, $this->io); + + if ($plugin instanceof EventSubscriberInterface) { + $this->composer->getEventDispatcher()->addSubscriber($plugin); + } + } + + + public function removePlugin(PluginInterface $plugin): void + { + $index = array_search($plugin, $this->plugins, true); + if ($index === false) { + return; + } + + $this->io->writeError('Unloading plugin ' . get_class($plugin), true, IOInterface::DEBUG); + unset($this->plugins[$index]); + $plugin->deactivate($this->composer, $this->io); + + $this->composer->getEventDispatcher()->removeListener($plugin); + } + + + public function uninstallPlugin(PluginInterface $plugin): void + { + $this->io->writeError('Uninstalling plugin ' . get_class($plugin), true, IOInterface::DEBUG); + $plugin->uninstall($this->composer, $this->io); + } + + + private function loadRepository(RepositoryInterface $repo, bool $isGlobalRepo): void + { + $packages = $repo->getPackages(); + + $weights = []; + foreach ($packages as $package) { + if ($package->getType() === 'composer-plugin') { + $extra = $package->getExtra(); + if ($package->getName() === 'composer/installers' || true === ($extra['plugin-modifies-install-path'] ?? false)) { + $weights[$package->getName()] = -10000; + } + } + } + + $sortedPackages = PackageSorter::sortPackages($packages, $weights); + foreach ($sortedPackages as $package) { + if (!($package instanceof CompletePackage)) { + continue; + } + if ('composer-plugin' === $package->getType()) { + $this->registerPackage($package, false, $isGlobalRepo); + + } elseif ('composer-installer' === $package->getType()) { + $this->registerPackage($package, false, $isGlobalRepo); + } + } + } + + + private function deactivateRepository(RepositoryInterface $repo, bool $isGlobalRepo): void + { + $packages = $repo->getPackages(); + $sortedPackages = array_reverse(PackageSorter::sortPackages($packages)); + + foreach ($sortedPackages as $package) { + if (!($package instanceof CompletePackage)) { + continue; + } + if ('composer-plugin' === $package->getType()) { + $this->deactivatePackage($package); + + } elseif ('composer-installer' === $package->getType()) { + $this->deactivatePackage($package); + } + } + } + + + private function collectDependencies(InstalledRepository $installedRepo, array $collected, PackageInterface $package): array + { + foreach ($package->getRequires() as $requireLink) { + foreach ($installedRepo->findPackagesWithReplacersAndProviders($requireLink->getTarget()) as $requiredPackage) { + if (!isset($collected[$requiredPackage->getName()])) { + $collected[$requiredPackage->getName()] = $requiredPackage; + $collected = $this->collectDependencies($installedRepo, $collected, $requiredPackage); + } + } + } + + return $collected; + } + + + private function getInstallPath(PackageInterface $package, bool $global = false): string + { + if (!$global) { + return $this->composer->getInstallationManager()->getInstallPath($package); + } + + assert(null !== $this->globalComposer); + + return $this->globalComposer->getInstallationManager()->getInstallPath($package); + } + + + protected function getCapabilityImplementationClassName(PluginInterface $plugin, string $capability): ?string + { + if (!($plugin instanceof Capable)) { + return null; + } + + $capabilities = (array)$plugin->getCapabilities(); + + if (!empty($capabilities[$capability]) && is_string($capabilities[$capability]) && trim($capabilities[$capability])) { + return trim($capabilities[$capability]); + } + + if ( + array_key_exists($capability, $capabilities) + && (empty($capabilities[$capability]) || !is_string($capabilities[$capability]) || !trim($capabilities[$capability])) + ) { + throw new \UnexpectedValueException('Plugin ' . get_class($plugin) . ' provided invalid capability class name(s), got ' . var_export($capabilities[$capability], true)); + } + + return null; + } + + + public function getPluginCapability(PluginInterface $plugin, $capabilityClassName, array $ctorArgs = []): ?Capability + { + if ($capabilityClass = $this->getCapabilityImplementationClassName($plugin, $capabilityClassName)) { + if (!class_exists($capabilityClass)) { + throw new \RuntimeException("Cannot instantiate Capability, as class $capabilityClass from plugin " . get_class($plugin) . " does not exist."); + } + + $ctorArgs['plugin'] = $plugin; + $capabilityObj = new $capabilityClass($ctorArgs); + + + if (!$capabilityObj instanceof Capability || !$capabilityObj instanceof $capabilityClassName) { + throw new \RuntimeException( + 'Class ' . $capabilityClass . ' must implement both Composer\Plugin\Capability\Capability and ' . $capabilityClassName . '.' + ); + } + + return $capabilityObj; + } + + return null; + } + + + public function getPluginCapabilities($capabilityClassName, array $ctorArgs = []): array + { + $capabilities = []; + foreach ($this->getPlugins() as $plugin) { + $capability = $this->getPluginCapability($plugin, $capabilityClassName, $ctorArgs); + if (null !== $capability) { + $capabilities[] = $capability; + } + } + + return $capabilities; + } + + + private function parseAllowedPlugins($allowPluginsConfig, ?Locker $locker = null): ?array + { + if ([] === $allowPluginsConfig && $locker !== null && $locker->isLocked() && version_compare($locker->getPluginApi(), '2.2.0', '<')) { + return null; + } + + if (true === $allowPluginsConfig) { + return ['{}' => true]; + } + + if (false === $allowPluginsConfig) { + return ['{}' => false]; + } + + $rules = []; + foreach ($allowPluginsConfig as $pattern => $allow) { + $rules[BasePackage::packageNameToRegexp($pattern)] = $allow; + } + + return $rules; + } + + + public function arePluginsDisabled($type) + { + return $this->disablePlugins === true || $this->disablePlugins === $type; + } + + + public function isPluginAllowed(string $package, bool $isGlobalPlugin, bool $optional = false): bool + { + if ($isGlobalPlugin) { + $rules = &$this->allowGlobalPluginRules; + } else { + $rules = &$this->allowPluginRules; + } + + + if ($rules === null) { + if (!$this->io->isInteractive()) { + $this->io->writeError('For additional security you should declare the allow-plugins config with a list of packages names that are allowed to run code. See https://getcomposer.org/allow-plugins'); + $this->io->writeError('This warning will become an exception once you run composer update!'); + + $rules = ['{}' => true]; + + + return true; + } + + + $rules = []; + } + + foreach ($rules as $pattern => $allow) { + if (Preg::isMatch($pattern, $package)) { + return $allow === true; + } + } + + if ($package === 'composer/package-versions-deprecated') { + return false; + } + + if ($this->io->isInteractive()) { + $composer = $isGlobalPlugin && $this->globalComposer !== null ? $this->globalComposer : $this->composer; + + $this->io->writeError('' . $package . ($isGlobalPlugin || $this->runningInGlobalDir ? ' (installed globally)' : '') . ' contains a Composer plugin which is currently not in your allow-plugins config. See https://getcomposer.org/allow-plugins'); + $attempts = 0; + while (true) { + + + $default = '?'; + if ($attempts > 5) { + $this->io->writeError('Too many failed prompts, aborting.'); + break; + } + + switch ($answer = $this->io->ask('Do you trust "' . $package . '" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?] ', $default)) { + case 'y': + case 'n': + case 'd': + $allow = $answer === 'y'; + + + $rules[BasePackage::packageNameToRegexp($package)] = $allow; + + + if ($answer === 'y' || $answer === 'n') { + $composer->getConfig()->getConfigSource()->addConfigSetting('allow-plugins.' . $package, $allow); + } + + return $allow; + + case '?': + default: + $attempts++; + $this->io->writeError([ + 'y - add package to allow-plugins in composer.json and let it run immediately', + 'n - add package (as disallowed) to allow-plugins in composer.json to suppress further prompts', + 'd - discard this, do not change composer.json and do not allow the plugin to run', + '? - print help', + ]); + break; + } + } + } elseif ($optional) { + return false; + } + + throw new PluginBlockedException( + $package . ($isGlobalPlugin || $this->runningInGlobalDir ? ' (installed globally)' : '') . ' contains a Composer plugin which is blocked by your allow-plugins config. You may add it to the list if you consider it safe.' . PHP_EOL . + 'You can run "composer ' . ($isGlobalPlugin || $this->runningInGlobalDir ? 'global ' : '') . 'config --no-plugins allow-plugins.' . $package . ' [true|false]" to enable it (true) or disable it explicitly and suppress this exception (false)' . PHP_EOL . + 'See https://getcomposer.org/allow-plugins' + ); + } +} diff --git a/composer/src/Composer/Plugin/PostFileDownloadEvent.php b/composer/src/Composer/Plugin/PostFileDownloadEvent.php new file mode 100644 index 000000000..789e22add --- /dev/null +++ b/composer/src/Composer/Plugin/PostFileDownloadEvent.php @@ -0,0 +1,139 @@ +fileName = $fileName; +$this->checksum = $checksum; +$this->url = $url; +$this->context = $context; +$this->type = $type; +} + + + + + + +public function getFileName(): ?string +{ +return $this->fileName; +} + + + + +public function getChecksum(): ?string +{ +return $this->checksum; +} + + + + +public function getUrl(): string +{ +return $this->url; +} + + + + + + + + + +public function getContext() +{ +return $this->context; +} + + + + + + + + + +public function getPackage(): ?PackageInterface +{ +trigger_error('PostFileDownloadEvent::getPackage is deprecated since Composer 2.1, use getContext instead.', E_USER_DEPRECATED); +$context = $this->getContext(); + +return $context instanceof PackageInterface ? $context : null; +} + + + + +public function getType(): string +{ +return $this->type; +} +} diff --git a/composer/src/Composer/Plugin/PreCommandRunEvent.php b/composer/src/Composer/Plugin/PreCommandRunEvent.php new file mode 100644 index 000000000..0ef948ff8 --- /dev/null +++ b/composer/src/Composer/Plugin/PreCommandRunEvent.php @@ -0,0 +1,63 @@ +input = $input; +$this->command = $command; +} + + + + +public function getInput(): InputInterface +{ +return $this->input; +} + + + + +public function getCommand(): string +{ +return $this->command; +} +} diff --git a/composer/src/Composer/Plugin/PreFileDownloadEvent.php b/composer/src/Composer/Plugin/PreFileDownloadEvent.php new file mode 100644 index 000000000..b6f63cde6 --- /dev/null +++ b/composer/src/Composer/Plugin/PreFileDownloadEvent.php @@ -0,0 +1,158 @@ +httpDownloader = $httpDownloader; +$this->processedUrl = $processedUrl; +$this->type = $type; +$this->context = $context; +} + +public function getHttpDownloader(): HttpDownloader +{ +return $this->httpDownloader; +} + + + + + + +public function getProcessedUrl(): string +{ +return $this->processedUrl; +} + + + + + + +public function setProcessedUrl(string $processedUrl): void +{ +$this->processedUrl = $processedUrl; +} + + + + +public function getCustomCacheKey(): ?string +{ +return $this->customCacheKey; +} + + + + + + +public function setCustomCacheKey(?string $customCacheKey): void +{ +$this->customCacheKey = $customCacheKey; +} + + + + +public function getType(): string +{ +return $this->type; +} + + + + + + + + + +public function getContext() +{ +return $this->context; +} + + + + + + + + +public function getTransportOptions(): array +{ +return $this->transportOptions; +} + + + + + + + + +public function setTransportOptions(array $options): void +{ +$this->transportOptions = $options; +} +} diff --git a/composer/src/Composer/Plugin/PrePoolCreateEvent.php b/composer/src/Composer/Plugin/PrePoolCreateEvent.php new file mode 100644 index 000000000..d34272c94 --- /dev/null +++ b/composer/src/Composer/Plugin/PrePoolCreateEvent.php @@ -0,0 +1,173 @@ +repositories = $repositories; +$this->request = $request; +$this->acceptableStabilities = $acceptableStabilities; +$this->stabilityFlags = $stabilityFlags; +$this->rootAliases = $rootAliases; +$this->rootReferences = $rootReferences; +$this->packages = $packages; +$this->unacceptableFixedPackages = $unacceptableFixedPackages; +} + + + + +public function getRepositories(): array +{ +return $this->repositories; +} + +public function getRequest(): Request +{ +return $this->request; +} + + + + + +public function getAcceptableStabilities(): array +{ +return $this->acceptableStabilities; +} + + + + + +public function getStabilityFlags(): array +{ +return $this->stabilityFlags; +} + + + + + +public function getRootAliases(): array +{ +return $this->rootAliases; +} + + + + + +public function getRootReferences(): array +{ +return $this->rootReferences; +} + + + + +public function getPackages(): array +{ +return $this->packages; +} + + + + +public function getUnacceptableFixedPackages(): array +{ +return $this->unacceptableFixedPackages; +} + + + + +public function setPackages(array $packages): void +{ +$this->packages = $packages; +} + + + + +public function setUnacceptableFixedPackages(array $packages): void +{ +$this->unacceptableFixedPackages = $packages; +} +} diff --git a/composer/src/Composer/Question/StrictConfirmationQuestion.php b/composer/src/Composer/Question/StrictConfirmationQuestion.php new file mode 100644 index 000000000..f2f1a1e46 --- /dev/null +++ b/composer/src/Composer/Question/StrictConfirmationQuestion.php @@ -0,0 +1,93 @@ +trueAnswerRegex = $trueAnswerRegex; +$this->falseAnswerRegex = $falseAnswerRegex; +$this->setNormalizer($this->getDefaultNormalizer()); +$this->setValidator($this->getDefaultValidator()); +} + + + + +private function getDefaultNormalizer(): callable +{ +$default = $this->getDefault(); +$trueRegex = $this->trueAnswerRegex; +$falseRegex = $this->falseAnswerRegex; + +return static function ($answer) use ($default, $trueRegex, $falseRegex) { +if (is_bool($answer)) { +return $answer; +} +if (empty($answer) && !empty($default)) { +return $default; +} + +if (Preg::isMatch($trueRegex, $answer)) { +return true; +} + +if (Preg::isMatch($falseRegex, $answer)) { +return false; +} + +return null; +}; +} + + + + +private function getDefaultValidator(): callable +{ +return static function ($answer): bool { +if (!is_bool($answer)) { +throw new InvalidArgumentException('Please answer yes, y, no, or n.'); +} + +return $answer; +}; +} +} diff --git a/composer/src/Composer/Repository/AdvisoryProviderInterface.php b/composer/src/Composer/Repository/AdvisoryProviderInterface.php new file mode 100644 index 000000000..d9eee3ee9 --- /dev/null +++ b/composer/src/Composer/Repository/AdvisoryProviderInterface.php @@ -0,0 +1,34 @@ +addPackage($package); +} +} + +public function getRepoName() +{ +return 'array repo (defining '.$this->count().' package'.($this->count() > 1 ? 's' : '').')'; +} + + + + +public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []) +{ +$packages = $this->getPackages(); + +$result = []; +$namesFound = []; +foreach ($packages as $package) { +if (array_key_exists($package->getName(), $packageNameMap)) { +if ( +(!$packageNameMap[$package->getName()] || $packageNameMap[$package->getName()]->matches(new Constraint('==', $package->getVersion()))) +&& StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, $package->getNames(), $package->getStability()) +&& !isset($alreadyLoaded[$package->getName()][$package->getVersion()]) +) { + +$result[spl_object_hash($package)] = $package; + +if ($package instanceof AliasPackage && !isset($result[spl_object_hash($package->getAliasOf())])) { +$result[spl_object_hash($package->getAliasOf())] = $package->getAliasOf(); +} +} + +$namesFound[$package->getName()] = true; +} +} + + +foreach ($packages as $package) { +if ($package instanceof AliasPackage) { +if (isset($result[spl_object_hash($package->getAliasOf())])) { +$result[spl_object_hash($package)] = $package; +} +} +} + +return ['namesFound' => array_keys($namesFound), 'packages' => $result]; +} + + + + +public function findPackage(string $name, $constraint) +{ +$name = strtolower($name); + +if (!$constraint instanceof ConstraintInterface) { +$versionParser = new VersionParser(); +$constraint = $versionParser->parseConstraints($constraint); +} + +foreach ($this->getPackages() as $package) { +if ($name === $package->getName()) { +$pkgConstraint = new Constraint('==', $package->getVersion()); +if ($constraint->matches($pkgConstraint)) { +return $package; +} +} +} + +return null; +} + + + + +public function findPackages(string $name, $constraint = null) +{ + +$name = strtolower($name); +$packages = []; + +if (null !== $constraint && !$constraint instanceof ConstraintInterface) { +$versionParser = new VersionParser(); +$constraint = $versionParser->parseConstraints($constraint); +} + +foreach ($this->getPackages() as $package) { +if ($name === $package->getName()) { +if (null === $constraint || $constraint->matches(new Constraint('==', $package->getVersion()))) { +$packages[] = $package; +} +} +} + +return $packages; +} + + + + +public function search(string $query, int $mode = 0, ?string $type = null) +{ +if ($mode === self::SEARCH_FULLTEXT) { +$regex = '{(?:'.implode('|', Preg::split('{\s+}', preg_quote($query))).')}i'; +} else { + +$regex = '{(?:'.implode('|', Preg::split('{\s+}', $query)).')}i'; +} + +$matches = []; +foreach ($this->getPackages() as $package) { +$name = $package->getName(); +if ($mode === self::SEARCH_VENDOR) { +[$name] = explode('/', $name); +} +if (isset($matches[$name])) { +continue; +} +if (null !== $type && $package->getType() !== $type) { +continue; +} + +if (Preg::isMatch($regex, $name) +|| ($mode === self::SEARCH_FULLTEXT && $package instanceof CompletePackageInterface && Preg::isMatch($regex, implode(' ', (array) $package->getKeywords()) . ' ' . $package->getDescription())) +) { +if ($mode === self::SEARCH_VENDOR) { +$matches[$name] = [ +'name' => $name, +'description' => null, +]; +} else { +$matches[$name] = [ +'name' => $package->getPrettyName(), +'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : null, +]; + +if ($package instanceof CompletePackageInterface && $package->isAbandoned()) { +$matches[$name]['abandoned'] = $package->getReplacementPackage() ?: true; +} +} +} +} + +return array_values($matches); +} + + + + +public function hasPackage(PackageInterface $package) +{ +if ($this->packageMap === null) { +$this->packageMap = []; +foreach ($this->getPackages() as $repoPackage) { +$this->packageMap[$repoPackage->getUniqueName()] = $repoPackage; +} +} + +return isset($this->packageMap[$package->getUniqueName()]); +} + + + + + + +public function addPackage(PackageInterface $package) +{ +if (!$package instanceof BasePackage) { +throw new \InvalidArgumentException('Only subclasses of BasePackage are supported'); +} +if (null === $this->packages) { +$this->initialize(); +} +$package->setRepository($this); +$this->packages[] = $package; + +if ($package instanceof AliasPackage) { +$aliasedPackage = $package->getAliasOf(); +if (null === $aliasedPackage->getRepository()) { +$this->addPackage($aliasedPackage); +} +} + + +$this->packageMap = null; +} + + + + +public function getProviders(string $packageName) +{ +$result = []; + +foreach ($this->getPackages() as $candidate) { +if (isset($result[$candidate->getName()])) { +continue; +} +foreach ($candidate->getProvides() as $link) { +if ($packageName === $link->getTarget()) { +$result[$candidate->getName()] = [ +'name' => $candidate->getName(), +'description' => $candidate instanceof CompletePackageInterface ? $candidate->getDescription() : null, +'type' => $candidate->getType(), +]; +continue 2; +} +} +} + +return $result; +} + + + + +protected function createAliasPackage(BasePackage $package, string $alias, string $prettyAlias) +{ +while ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} + +if ($package instanceof CompletePackage) { +return new CompleteAliasPackage($package, $alias, $prettyAlias); +} + +return new AliasPackage($package, $alias, $prettyAlias); +} + + + + + + + + +public function removePackage(PackageInterface $package) +{ +$packageId = $package->getUniqueName(); + +foreach ($this->getPackages() as $key => $repoPackage) { +if ($packageId === $repoPackage->getUniqueName()) { +array_splice($this->packages, $key, 1); + + +$this->packageMap = null; + +return; +} +} +} + + + + +public function getPackages() +{ +if (null === $this->packages) { +$this->initialize(); +} + +if (null === $this->packages) { +throw new \LogicException('initialize failed to initialize the packages array'); +} + +return $this->packages; +} + + + + + + +public function count(): int +{ +if (null === $this->packages) { +$this->initialize(); +} + +return count($this->packages); +} + + + + + + +protected function initialize() +{ +$this->packages = []; +} +} diff --git a/composer/src/Composer/Repository/ArtifactRepository.php b/composer/src/Composer/Repository/ArtifactRepository.php new file mode 100644 index 000000000..b24cb2e78 --- /dev/null +++ b/composer/src/Composer/Repository/ArtifactRepository.php @@ -0,0 +1,142 @@ +loader = new ArrayLoader(); +$this->lookup = $repoConfig['url']; +$this->io = $io; +$this->repoConfig = $repoConfig; +} + +public function getRepoName() +{ +return 'artifact repo ('.$this->lookup.')'; +} + +public function getRepoConfig() +{ +return $this->repoConfig; +} + +protected function initialize() +{ +parent::initialize(); + +$this->scanDirectory($this->lookup); +} + +private function scanDirectory(string $path): void +{ +$io = $this->io; + +$directory = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS); +$iterator = new \RecursiveIteratorIterator($directory); +$regex = new \RegexIterator($iterator, '/^.+\.(zip|tar|gz|tgz)$/i'); +foreach ($regex as $file) { + +if (!$file->isFile()) { +continue; +} + +$package = $this->getComposerInformation($file); +if (!$package) { +$io->writeError("File {$file->getBasename()} doesn't seem to hold a package", true, IOInterface::VERBOSE); +continue; +} + +$template = 'Found package %s (%s) in file %s'; +$io->writeError(sprintf($template, $package->getName(), $package->getPrettyVersion(), $file->getBasename()), true, IOInterface::VERBOSE); + +$this->addPackage($package); +} +} + + + + +private function getComposerInformation(\SplFileInfo $file): ?BasePackage +{ +$json = null; +$fileType = null; +$fileExtension = pathinfo($file->getPathname(), PATHINFO_EXTENSION); +if (in_array($fileExtension, ['gz', 'tar', 'tgz'], true)) { +$fileType = 'tar'; +} elseif ($fileExtension === 'zip') { +$fileType = 'zip'; +} else { +throw new \RuntimeException('Files with "'.$fileExtension.'" extensions aren\'t supported. Only ZIP and TAR/TAR.GZ/TGZ archives are supported.'); +} + +try { +if ($fileType === 'tar') { +$json = Tar::getComposerJson($file->getPathname()); +} else { +$json = Zip::getComposerJson($file->getPathname()); +} +} catch (\Exception $exception) { +$this->io->write('Failed loading package '.$file->getPathname().': '.$exception->getMessage(), false, IOInterface::VERBOSE); +} + +if (null === $json) { +return null; +} + +$package = JsonFile::parseJson($json, $file->getPathname().'#composer.json'); +$package['dist'] = [ +'type' => $fileType, +'url' => strtr($file->getPathname(), '\\', '/'), +'shasum' => sha1_file($file->getRealPath()), +]; + +try { +$package = $this->loader->load($package); +} catch (\UnexpectedValueException $e) { +throw new \UnexpectedValueException('Failed loading package in '.$file.': '.$e->getMessage(), 0, $e); +} + +return $package; +} +} diff --git a/composer/src/Composer/Repository/CanonicalPackagesTrait.php b/composer/src/Composer/Repository/CanonicalPackagesTrait.php new file mode 100644 index 000000000..da823a53c --- /dev/null +++ b/composer/src/Composer/Repository/CanonicalPackagesTrait.php @@ -0,0 +1,55 @@ +getPackages(); + + +$packagesByName = []; +foreach ($packages as $package) { +if (!isset($packagesByName[$package->getName()]) || $packagesByName[$package->getName()] instanceof AliasPackage) { +$packagesByName[$package->getName()] = $package; +} +} + +$canonicalPackages = []; + + +foreach ($packagesByName as $package) { +while ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} + +$canonicalPackages[] = $package; +} + +return $canonicalPackages; +} +} diff --git a/composer/src/Composer/Repository/ComposerRepository.php b/composer/src/Composer/Repository/ComposerRepository.php new file mode 100644 index 000000000..5b9876b98 --- /dev/null +++ b/composer/src/Composer/Repository/ComposerRepository.php @@ -0,0 +1,1755 @@ +allowSslDowngrade = true; +} + +$this->options = $repoConfig['options']; +$this->url = $repoConfig['url']; + + +if (Preg::isMatch('{^(?Phttps?)://packagist\.org/?$}i', $this->url, $match)) { +$this->url = $match['proto'].'://repo.packagist.org'; +} + +$baseUrl = rtrim(Preg::replace('{(?:/[^/\\\\]+\.json)?(?:[?#].*)?$}', '', $this->url), '/'); +assert($baseUrl !== ''); +$this->baseUrl = $baseUrl; +$this->io = $io; +$this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', Url::sanitize($this->url)), 'a-z0-9.$~_'); +$this->cache->setReadOnly($config->get('cache-read-only')); +$this->versionParser = new VersionParser(); +$this->loader = new ArrayLoader($this->versionParser); +$this->httpDownloader = $httpDownloader; +$this->eventDispatcher = $eventDispatcher; +$this->repoConfig = $repoConfig; +$this->loop = new Loop($this->httpDownloader); +} + +public function getRepoName() +{ +return 'composer repo ('.Url::sanitize($this->url).')'; +} + +public function getRepoConfig() +{ +return $this->repoConfig; +} + + + + +public function findPackage(string $name, $constraint) +{ + +$hasProviders = $this->hasProviders(); + +$name = strtolower($name); +if (!$constraint instanceof ConstraintInterface) { +$constraint = $this->versionParser->parseConstraints($constraint); +} + +if ($this->lazyProvidersUrl) { +if ($this->hasPartialPackages() && isset($this->partialPackagesByName[$name])) { +return $this->filterPackages($this->whatProvides($name), $constraint, true); +} + +if ($this->hasAvailablePackageList && !$this->lazyProvidersRepoContains($name)) { +return null; +} + +$packages = $this->loadAsyncPackages([$name => $constraint]); + +if (count($packages['packages']) > 0) { +return reset($packages['packages']); +} + +return null; +} + +if ($hasProviders) { +foreach ($this->getProviderNames() as $providerName) { +if ($name === $providerName) { +return $this->filterPackages($this->whatProvides($providerName), $constraint, true); +} +} + +return null; +} + +return parent::findPackage($name, $constraint); +} + + + + +public function findPackages(string $name, $constraint = null) +{ + +$hasProviders = $this->hasProviders(); + +$name = strtolower($name); +if (null !== $constraint && !$constraint instanceof ConstraintInterface) { +$constraint = $this->versionParser->parseConstraints($constraint); +} + +if ($this->lazyProvidersUrl) { +if ($this->hasPartialPackages() && isset($this->partialPackagesByName[$name])) { +return $this->filterPackages($this->whatProvides($name), $constraint); +} + +if ($this->hasAvailablePackageList && !$this->lazyProvidersRepoContains($name)) { +return []; +} + +$result = $this->loadAsyncPackages([$name => $constraint]); + +return $result['packages']; +} + +if ($hasProviders) { +foreach ($this->getProviderNames() as $providerName) { +if ($name === $providerName) { +return $this->filterPackages($this->whatProvides($providerName), $constraint); +} +} + +return []; +} + +return parent::findPackages($name, $constraint); +} + + + + + + +private function filterPackages(array $packages, ?ConstraintInterface $constraint = null, bool $returnFirstMatch = false) +{ +if (null === $constraint) { +if ($returnFirstMatch) { +return reset($packages); +} + +return $packages; +} + +$filteredPackages = []; + +foreach ($packages as $package) { +$pkgConstraint = new Constraint('==', $package->getVersion()); + +if ($constraint->matches($pkgConstraint)) { +if ($returnFirstMatch) { +return $package; +} + +$filteredPackages[] = $package; +} +} + +if ($returnFirstMatch) { +return null; +} + +return $filteredPackages; +} + +public function getPackages() +{ +$hasProviders = $this->hasProviders(); + +if ($this->lazyProvidersUrl) { +if (is_array($this->availablePackages) && !$this->availablePackagePatterns) { +$packageMap = []; +foreach ($this->availablePackages as $name) { +$packageMap[$name] = new MatchAllConstraint(); +} + +$result = $this->loadAsyncPackages($packageMap); + +return array_values($result['packages']); +} + +if ($this->hasPartialPackages()) { +if (!is_array($this->partialPackagesByName)) { +throw new \LogicException('hasPartialPackages failed to initialize $this->partialPackagesByName'); +} + +return $this->createPackages($this->partialPackagesByName, 'packages.json inline packages'); +} + +throw new \LogicException('Composer repositories that have lazy providers and no available-packages list can not load the complete list of packages, use getPackageNames instead.'); +} + +if ($hasProviders) { +throw new \LogicException('Composer repositories that have providers can not load the complete list of packages, use getPackageNames instead.'); +} + +return parent::getPackages(); +} + + + + + + +public function getPackageNames(?string $packageFilter = null) +{ +$hasProviders = $this->hasProviders(); + +$filterResults = + + + + +static function (array $results): array { +return $results; +} +; +if (null !== $packageFilter && '' !== $packageFilter) { +$packageFilterRegex = BasePackage::packageNameToRegexp($packageFilter); +$filterResults = + + + + +static function (array $results) use ($packageFilterRegex): array { + +return Preg::grep($packageFilterRegex, $results); +} +; +} + +if ($this->lazyProvidersUrl) { +if (is_array($this->availablePackages)) { +return $filterResults(array_keys($this->availablePackages)); +} + +if ($this->listUrl) { + +return $this->loadPackageList($packageFilter); +} + +if ($this->hasPartialPackages() && $this->partialPackagesByName !== null) { +return $filterResults(array_keys($this->partialPackagesByName)); +} + +return []; +} + +if ($hasProviders) { +return $filterResults($this->getProviderNames()); +} + +$names = []; +foreach ($this->getPackages() as $package) { +$names[] = $package->getPrettyName(); +} + +return $filterResults($names); +} + + + + +private function getVendorNames(): array +{ +$cacheKey = 'vendor-list.txt'; +$cacheAge = $this->cache->getAge($cacheKey); +if (false !== $cacheAge && $cacheAge < 600 && ($cachedData = $this->cache->read($cacheKey)) !== false) { +$cachedData = explode("\n", $cachedData); + +return $cachedData; +} + +$names = $this->getPackageNames(); + +$uniques = []; +foreach ($names as $name) { + +$uniques[substr($name, 0, strpos($name, '/'))] = true; +} + +$vendors = array_keys($uniques); + +if (!$this->cache->isReadOnly()) { +$this->cache->write($cacheKey, implode("\n", $vendors)); +} + +return $vendors; +} + + + + +private function loadPackageList(?string $packageFilter = null): array +{ +if (null === $this->listUrl) { +throw new \LogicException('Make sure to call loadRootServerFile before loadPackageList'); +} + +$url = $this->listUrl; +if (is_string($packageFilter) && $packageFilter !== '') { +$url .= '?filter='.urlencode($packageFilter); +$result = $this->httpDownloader->get($url, $this->options)->decodeJson(); + +return $result['packageNames']; +} + +$cacheKey = 'package-list.txt'; +$cacheAge = $this->cache->getAge($cacheKey); +if (false !== $cacheAge && $cacheAge < 600 && ($cachedData = $this->cache->read($cacheKey)) !== false) { +$cachedData = explode("\n", $cachedData); + +return $cachedData; +} + +$result = $this->httpDownloader->get($url, $this->options)->decodeJson(); +if (!$this->cache->isReadOnly()) { +$this->cache->write($cacheKey, implode("\n", $result['packageNames'])); +} + +return $result['packageNames']; +} + +public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []) +{ + +$hasProviders = $this->hasProviders(); + +if (!$hasProviders && !$this->hasPartialPackages() && null === $this->lazyProvidersUrl) { +return parent::loadPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); +} + +$packages = []; +$namesFound = []; + +if ($hasProviders || $this->hasPartialPackages()) { +foreach ($packageNameMap as $name => $constraint) { +$matches = []; + + + +if (!$hasProviders && !isset($this->partialPackagesByName[$name])) { +continue; +} + +$candidates = $this->whatProvides($name, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); +foreach ($candidates as $candidate) { +if ($candidate->getName() !== $name) { +throw new \LogicException('whatProvides should never return a package with a different name than the requested one'); +} +$namesFound[$name] = true; + +if (!$constraint || $constraint->matches(new Constraint('==', $candidate->getVersion()))) { +$matches[spl_object_hash($candidate)] = $candidate; +if ($candidate instanceof AliasPackage && !isset($matches[spl_object_hash($candidate->getAliasOf())])) { +$matches[spl_object_hash($candidate->getAliasOf())] = $candidate->getAliasOf(); +} +} +} + + +foreach ($candidates as $candidate) { +if ($candidate instanceof AliasPackage) { +if (isset($matches[spl_object_hash($candidate->getAliasOf())])) { +$matches[spl_object_hash($candidate)] = $candidate; +} +} +} +$packages = array_merge($packages, $matches); + +unset($packageNameMap[$name]); +} +} + +if ($this->lazyProvidersUrl && count($packageNameMap)) { +if ($this->hasAvailablePackageList) { +foreach ($packageNameMap as $name => $constraint) { +if (!$this->lazyProvidersRepoContains(strtolower($name))) { +unset($packageNameMap[$name]); +} +} +} + +$result = $this->loadAsyncPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); +$packages = array_merge($packages, $result['packages']); +$namesFound = array_merge($namesFound, $result['namesFound']); +} + +return ['namesFound' => array_keys($namesFound), 'packages' => $packages]; +} + + + + +public function search(string $query, int $mode = 0, ?string $type = null) +{ +$this->loadRootServerFile(600); + +if ($this->searchUrl && $mode === self::SEARCH_FULLTEXT) { +$url = str_replace(['%query%', '%type%'], [urlencode($query), $type], $this->searchUrl); + +$search = $this->httpDownloader->get($url, $this->options)->decodeJson(); + +if (empty($search['results'])) { +return []; +} + +$results = []; +foreach ($search['results'] as $result) { + +if (!empty($result['virtual'])) { +continue; +} + +$results[] = $result; +} + +return $results; +} + +if ($mode === self::SEARCH_VENDOR) { +$results = []; +$regex = '{(?:'.implode('|', Preg::split('{\s+}', $query)).')}i'; + +$vendorNames = $this->getVendorNames(); +foreach (Preg::grep($regex, $vendorNames) as $name) { +$results[] = ['name' => $name, 'description' => '']; +} + +return $results; +} + +if ($this->hasProviders() || $this->lazyProvidersUrl) { + +if (Preg::isMatchStrictGroups('{^\^(?P(?P[a-z0-9_.-]+)/[a-z0-9_.-]*)\*?$}i', $query, $match) && $this->listUrl !== null) { +$url = $this->listUrl . '?vendor='.urlencode($match['vendor']).'&filter='.urlencode($match['query'].'*'); +$result = $this->httpDownloader->get($url, $this->options)->decodeJson(); + +$results = []; +foreach ($result['packageNames'] as $name) { +$results[] = ['name' => $name, 'description' => '']; +} + +return $results; +} + +$results = []; +$regex = '{(?:'.implode('|', Preg::split('{\s+}', $query)).')}i'; + +$packageNames = $this->getPackageNames(); +foreach (Preg::grep($regex, $packageNames) as $name) { +$results[] = ['name' => $name, 'description' => '']; +} + +return $results; +} + +return parent::search($query, $mode); +} + +public function hasSecurityAdvisories(): bool +{ +$this->loadRootServerFile(600); + +return $this->securityAdvisoryConfig !== null && ($this->securityAdvisoryConfig['metadata'] || $this->securityAdvisoryConfig['api-url'] !== null); +} + + + + +public function getSecurityAdvisories(array $packageConstraintMap, bool $allowPartialAdvisories = false): array +{ +$this->loadRootServerFile(600); +if (null === $this->securityAdvisoryConfig) { +return ['namesFound' => [], 'advisories' => []]; +} + +$advisories = []; +$namesFound = []; + +$apiUrl = $this->securityAdvisoryConfig['api-url']; + +$parser = new VersionParser(); + + + + + +$create = function (array $data, string $name) use ($parser, $allowPartialAdvisories, &$packageConstraintMap): ?PartialSecurityAdvisory { +$advisory = PartialSecurityAdvisory::create($name, $data, $parser); +if (!$allowPartialAdvisories && !$advisory instanceof SecurityAdvisory) { +throw new \RuntimeException('Advisory for '.$name.' could not be loaded as a full advisory from '.$this->getRepoName() . PHP_EOL . var_export($data, true)); +} +if (!$advisory->affectedVersions->matches($packageConstraintMap[$name])) { +return null; +} + +return $advisory; +}; + +if ($this->securityAdvisoryConfig['metadata'] && ($allowPartialAdvisories || $apiUrl === null)) { +$promises = []; +foreach ($packageConstraintMap as $name => $constraint) { +$name = strtolower($name); + + +if (PlatformRepository::isPlatformPackage($name) || '__root__' === $name) { +continue; +} + +$promises[] = $this->startCachedAsyncDownload($name, $name) +->then(static function (array $spec) use (&$advisories, &$namesFound, &$packageConstraintMap, $name, $create): void { +[$response, ] = $spec; + +if (!isset($response['security-advisories']) || !is_array($response['security-advisories'])) { +return; +} + +$namesFound[$name] = true; +if (count($response['security-advisories']) > 0) { +$advisories[$name] = array_filter(array_map( +static function ($data) use ($name, $create) { +return $create($data, $name); +}, +$response['security-advisories'] +)); +} +unset($packageConstraintMap[$name]); +}); +} + +$this->loop->wait($promises); +} + +if ($apiUrl !== null && count($packageConstraintMap) > 0) { +$options = [ +'http' => [ +'method' => 'POST', +'header' => ['Content-type: application/x-www-form-urlencoded'], +'timeout' => 10, +'content' => http_build_query(['packages' => array_keys($packageConstraintMap)]), +], +]; +$response = $this->httpDownloader->get($apiUrl, $options); + +foreach ($response->decodeJson()['advisories'] as $name => $list) { +if (count($list) > 0) { +$advisories[$name] = array_filter(array_map( +static function ($data) use ($name, $create) { +return $create($data, $name); +}, +$list +)); +} +$namesFound[$name] = true; +} +} + +return ['namesFound' => array_keys($namesFound), 'advisories' => array_filter($advisories)]; +} + +public function getProviders(string $packageName) +{ +$this->loadRootServerFile(); +$result = []; + +if ($this->providersApiUrl) { +try { +$apiResult = $this->httpDownloader->get(str_replace('%package%', $packageName, $this->providersApiUrl), $this->options)->decodeJson(); +} catch (TransportException $e) { +if ($e->getStatusCode() === 404) { +return $result; +} +throw $e; +} + +foreach ($apiResult['providers'] as $provider) { +$result[$provider['name']] = $provider; +} + +return $result; +} + +if ($this->hasPartialPackages()) { +if (!is_array($this->partialPackagesByName)) { +throw new \LogicException('hasPartialPackages failed to initialize $this->partialPackagesByName'); +} +foreach ($this->partialPackagesByName as $versions) { +foreach ($versions as $candidate) { +if (isset($result[$candidate['name']]) || !isset($candidate['provide'][$packageName])) { +continue; +} +$result[$candidate['name']] = [ +'name' => $candidate['name'], +'description' => $candidate['description'] ?? '', +'type' => $candidate['type'] ?? '', +]; +} +} +} + +if ($this->packages) { +$result = array_merge($result, parent::getProviders($packageName)); +} + +return $result; +} + + + + +private function getProviderNames(): array +{ +$this->loadRootServerFile(); + +if (null === $this->providerListing) { +$data = $this->loadRootServerFile(); +if (is_array($data)) { +$this->loadProviderListings($data); +} +} + +if ($this->lazyProvidersUrl) { + +return []; +} + +if (null !== $this->providersUrl && null !== $this->providerListing) { +return array_keys($this->providerListing); +} + +return []; +} + +protected function configurePackageTransportOptions(PackageInterface $package): void +{ +foreach ($package->getDistUrls() as $url) { +if (strpos($url, $this->baseUrl) === 0) { +$package->setTransportOptions($this->options); + +return; +} +} +} + +private function hasProviders(): bool +{ +$this->loadRootServerFile(); + +return $this->hasProviders; +} + + + + + + + + + + + +private function whatProvides(string $name, ?array $acceptableStabilities = null, ?array $stabilityFlags = null, array $alreadyLoaded = []): array +{ +$packagesSource = null; +if (!$this->hasPartialPackages() || !isset($this->partialPackagesByName[$name])) { + +if (PlatformRepository::isPlatformPackage($name) || '__root__' === $name) { +return []; +} + +if (null === $this->providerListing) { +$data = $this->loadRootServerFile(); +if (is_array($data)) { +$this->loadProviderListings($data); +} +} + +$useLastModifiedCheck = false; +if ($this->lazyProvidersUrl && !isset($this->providerListing[$name])) { +$hash = null; +$url = str_replace('%package%', $name, $this->lazyProvidersUrl); +$cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; +$useLastModifiedCheck = true; +} elseif ($this->providersUrl) { + +if (!isset($this->providerListing[$name])) { +return []; +} + +$hash = $this->providerListing[$name]['sha256']; +$url = str_replace(['%package%', '%hash%'], [$name, $hash], $this->providersUrl); +$cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; +} else { +return []; +} + +$packages = null; +if (!$useLastModifiedCheck && $hash && $this->cache->sha256($cacheKey) === $hash) { +$packages = json_decode($this->cache->read($cacheKey), true); +$packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; +} elseif ($useLastModifiedCheck) { +if ($contents = $this->cache->read($cacheKey)) { +$contents = json_decode($contents, true); + +if (isset($alreadyLoaded[$name])) { +$packages = $contents; +$packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; +} elseif (isset($contents['last-modified'])) { +$response = $this->fetchFileIfLastModified($url, $cacheKey, $contents['last-modified']); +$packages = true === $response ? $contents : $response; +$packagesSource = true === $response ? 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')' : 'downloaded file ('.Url::sanitize($url).')'; +} +} +} + +if (!$packages) { +try { +$packages = $this->fetchFile($url, $cacheKey, $hash, $useLastModifiedCheck); +$packagesSource = 'downloaded file ('.Url::sanitize($url).')'; +} catch (TransportException $e) { + +if ($this->lazyProvidersUrl && in_array($e->getStatusCode(), [404, 499], true)) { +$packages = ['packages' => []]; +$packagesSource = 'not-found file ('.Url::sanitize($url).')'; +if ($e->getStatusCode() === 499) { +$this->io->error('' . $e->getMessage() . ''); +} +} else { +throw $e; +} +} +} + +$loadingPartialPackage = false; +} else { +$packages = ['packages' => ['versions' => $this->partialPackagesByName[$name]]]; +$packagesSource = 'root file ('.Url::sanitize($this->getPackagesJsonUrl()).')'; +$loadingPartialPackage = true; +} + +$result = []; +$versionsToLoad = []; +foreach ($packages['packages'] as $versions) { +foreach ($versions as $version) { +$normalizedName = strtolower($version['name']); + + +if ($normalizedName !== $name) { +continue; +} + +if (!$loadingPartialPackage && $this->hasPartialPackages() && isset($this->partialPackagesByName[$normalizedName])) { +continue; +} + +if (!isset($versionsToLoad[$version['uid']])) { +if (!isset($version['version_normalized'])) { +$version['version_normalized'] = $this->versionParser->normalize($version['version']); +} elseif ($version['version_normalized'] === VersionParser::DEFAULT_BRANCH_ALIAS) { + +$version['version_normalized'] = $this->versionParser->normalize($version['version']); +} + + +if (isset($alreadyLoaded[$name][$version['version_normalized']])) { +continue; +} + +if ($this->isVersionAcceptable(null, $normalizedName, $version, $acceptableStabilities, $stabilityFlags)) { +$versionsToLoad[$version['uid']] = $version; +} +} +} +} + + +$loadedPackages = $this->createPackages($versionsToLoad, $packagesSource); +$uids = array_keys($versionsToLoad); + +foreach ($loadedPackages as $index => $package) { +$package->setRepository($this); +$uid = $uids[$index]; + +if ($package instanceof AliasPackage) { +$aliased = $package->getAliasOf(); +$aliased->setRepository($this); + +$result[$uid] = $aliased; +$result[$uid.'-alias'] = $package; +} else { +$result[$uid] = $package; +} +} + +return $result; +} + + + + +protected function initialize() +{ +parent::initialize(); + +$repoData = $this->loadDataFromServer(); + +foreach ($this->createPackages($repoData, 'root file ('.Url::sanitize($this->getPackagesJsonUrl()).')') as $package) { +$this->addPackage($package); +} +} + + + + +public function addPackage(PackageInterface $package) +{ +parent::addPackage($package); +$this->configurePackageTransportOptions($package); +} + + + + + + + + + + + + +private function loadAsyncPackages(array $packageNames, ?array $acceptableStabilities = null, ?array $stabilityFlags = null, array $alreadyLoaded = []): array +{ +$this->loadRootServerFile(); + +$packages = []; +$namesFound = []; +$promises = []; + +if (null === $this->lazyProvidersUrl) { +throw new \LogicException('loadAsyncPackages only supports v2 protocol composer repos with a metadata-url'); +} + + +foreach ($packageNames as $name => $constraint) { +if ($acceptableStabilities === null || $stabilityFlags === null || StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, [$name], 'dev')) { +$packageNames[$name.'~dev'] = $constraint; +} + +if (isset($acceptableStabilities['dev']) && count($acceptableStabilities) === 1 && count($stabilityFlags) === 0) { +unset($packageNames[$name]); +} +} + +foreach ($packageNames as $name => $constraint) { +$name = strtolower($name); + +$realName = Preg::replace('{~dev$}', '', $name); + +if (PlatformRepository::isPlatformPackage($realName) || '__root__' === $realName) { +continue; +} + +$promises[] = $this->startCachedAsyncDownload($name, $realName) +->then(function (array $spec) use (&$packages, &$namesFound, $realName, $constraint, $acceptableStabilities, $stabilityFlags, $alreadyLoaded): void { +[$response, $packagesSource] = $spec; +if (null === $response || !isset($response['packages'][$realName])) { +return; +} + +$versions = $response['packages'][$realName]; + +if (isset($response['minified']) && $response['minified'] === 'composer/2.0') { +$versions = MetadataMinifier::expand($versions); +} + +$namesFound[$realName] = true; +$versionsToLoad = []; +foreach ($versions as $version) { +if (!isset($version['version_normalized'])) { +$version['version_normalized'] = $this->versionParser->normalize($version['version']); +} elseif ($version['version_normalized'] === VersionParser::DEFAULT_BRANCH_ALIAS) { + +$version['version_normalized'] = $this->versionParser->normalize($version['version']); +} + + +if (isset($alreadyLoaded[$realName][$version['version_normalized']])) { +continue; +} + +if ($this->isVersionAcceptable($constraint, $realName, $version, $acceptableStabilities, $stabilityFlags)) { +$versionsToLoad[] = $version; +} +} + +$loadedPackages = $this->createPackages($versionsToLoad, $packagesSource); +foreach ($loadedPackages as $package) { +$package->setRepository($this); +$packages[spl_object_hash($package)] = $package; + +if ($package instanceof AliasPackage && !isset($packages[spl_object_hash($package->getAliasOf())])) { +$package->getAliasOf()->setRepository($this); +$packages[spl_object_hash($package->getAliasOf())] = $package->getAliasOf(); +} +} +}); +} + +$this->loop->wait($promises); + +return ['namesFound' => $namesFound, 'packages' => $packages]; +} + +private function startCachedAsyncDownload(string $fileName, ?string $packageName = null): PromiseInterface +{ +if (null === $this->lazyProvidersUrl) { +throw new \LogicException('startCachedAsyncDownload only supports v2 protocol composer repos with a metadata-url'); +} + +$name = strtolower($fileName); +$packageName = $packageName ?? $name; + +$url = str_replace('%package%', $name, $this->lazyProvidersUrl); +$cacheKey = 'provider-'.strtr($name, '/', '~').'.json'; + +$lastModified = null; +if ($contents = $this->cache->read($cacheKey)) { +$contents = json_decode($contents, true); +$lastModified = $contents['last-modified'] ?? null; +} + +return $this->asyncFetchFile($url, $cacheKey, $lastModified) +->then(static function ($response) use ($url, $cacheKey, $contents, $packageName): array { +$packagesSource = 'downloaded file ('.Url::sanitize($url).')'; + +if (true === $response) { +$packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; +$response = $contents; +} + +if (!isset($response['packages'][$packageName]) && !isset($response['security-advisories'])) { +return [null, $packagesSource]; +} + +return [$response, $packagesSource]; +}); +} + + + + + + + + + +private function isVersionAcceptable(?ConstraintInterface $constraint, string $name, array $versionData, ?array $acceptableStabilities = null, ?array $stabilityFlags = null): bool +{ +$versions = [$versionData['version_normalized']]; + +if ($alias = $this->loader->getBranchAlias($versionData)) { +$versions[] = $alias; +} + +foreach ($versions as $version) { +if (null !== $acceptableStabilities && null !== $stabilityFlags && !StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, [$name], VersionParser::parseStability($version))) { +continue; +} + +if ($constraint && !CompilingMatcher::match($constraint, Constraint::OP_EQ, $version)) { +continue; +} + +return true; +} + +return false; +} + +private function getPackagesJsonUrl(): string +{ +$jsonUrlParts = parse_url(strtr($this->url, '\\', '/')); + +if (isset($jsonUrlParts['path']) && false !== strpos($jsonUrlParts['path'], '.json')) { +return $this->url; +} + +return $this->url . '/packages.json'; +} + + + + +protected function loadRootServerFile(?int $rootMaxAge = null) +{ +if (null !== $this->rootData) { +return $this->rootData; +} + +if (!extension_loaded('openssl') && strpos($this->url, 'https') === 0) { +throw new \RuntimeException('You must enable the openssl extension in your php.ini to load information from '.$this->url); +} + +if ($cachedData = $this->cache->read('packages.json')) { +$cachedData = json_decode($cachedData, true); +if ($rootMaxAge !== null && ($age = $this->cache->getAge('packages.json')) !== false && $age <= $rootMaxAge) { +$data = $cachedData; +} elseif (isset($cachedData['last-modified'])) { +$response = $this->fetchFileIfLastModified($this->getPackagesJsonUrl(), 'packages.json', $cachedData['last-modified']); +$data = true === $response ? $cachedData : $response; +} +} + +if (!isset($data)) { +$data = $this->fetchFile($this->getPackagesJsonUrl(), 'packages.json', null, true); +} + +if (!empty($data['notify-batch'])) { +$this->notifyUrl = $this->canonicalizeUrl($data['notify-batch']); +} elseif (!empty($data['notify'])) { +$this->notifyUrl = $this->canonicalizeUrl($data['notify']); +} + +if (!empty($data['search'])) { +$this->searchUrl = $this->canonicalizeUrl($data['search']); +} + +if (!empty($data['mirrors'])) { +foreach ($data['mirrors'] as $mirror) { +if (!empty($mirror['git-url'])) { +$this->sourceMirrors['git'][] = ['url' => $mirror['git-url'], 'preferred' => !empty($mirror['preferred'])]; +} +if (!empty($mirror['hg-url'])) { +$this->sourceMirrors['hg'][] = ['url' => $mirror['hg-url'], 'preferred' => !empty($mirror['preferred'])]; +} +if (!empty($mirror['dist-url'])) { +$this->distMirrors[] = [ +'url' => $this->canonicalizeUrl($mirror['dist-url']), +'preferred' => !empty($mirror['preferred']), +]; +} +} +} + +if (!empty($data['providers-lazy-url'])) { +$this->lazyProvidersUrl = $this->canonicalizeUrl($data['providers-lazy-url']); +$this->hasProviders = true; + +$this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); +} + + + + +if (!empty($data['metadata-url'])) { +$this->lazyProvidersUrl = $this->canonicalizeUrl($data['metadata-url']); +$this->providersUrl = null; +$this->hasProviders = false; +$this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); +$this->allowSslDowngrade = false; + + + + +if (!empty($data['available-packages'])) { +$availPackages = array_map('strtolower', $data['available-packages']); +$this->availablePackages = array_combine($availPackages, $availPackages); +$this->hasAvailablePackageList = true; +} + + + + +if (!empty($data['available-package-patterns'])) { +$this->availablePackagePatterns = array_map(static function ($pattern): string { +return BasePackage::packageNameToRegexp($pattern); +}, $data['available-package-patterns']); +$this->hasAvailablePackageList = true; +} + + + +unset($data['providers-url'], $data['providers'], $data['providers-includes']); + +if (isset($data['security-advisories']) && is_array($data['security-advisories'])) { +$this->securityAdvisoryConfig = [ +'metadata' => $data['security-advisories']['metadata'] ?? false, +'api-url' => $data['security-advisories']['api-url'] ?? null, +'query-all' => $data['security-advisories']['query-all'] ?? false, +]; +} +} + +if ($this->allowSslDowngrade) { +$this->url = str_replace('https://', 'http://', $this->url); +$this->baseUrl = str_replace('https://', 'http://', $this->baseUrl); +} + +if (!empty($data['providers-url'])) { +$this->providersUrl = $this->canonicalizeUrl($data['providers-url']); +$this->hasProviders = true; +} + +if (!empty($data['list'])) { +$this->listUrl = $this->canonicalizeUrl($data['list']); +} + +if (!empty($data['providers']) || !empty($data['providers-includes'])) { +$this->hasProviders = true; +} + +if (!empty($data['providers-api'])) { +$this->providersApiUrl = $this->canonicalizeUrl($data['providers-api']); +} + +return $this->rootData = $data; +} + + + + + +private function canonicalizeUrl(string $url): string +{ +if ('/' === $url[0]) { +if (Preg::isMatch('{^[^:]++://[^/]*+}', $this->url, $matches)) { +return $matches[0] . $url; +} + +return $this->url; +} + +return $url; +} + + + + +private function loadDataFromServer(): array +{ +$data = $this->loadRootServerFile(); +if (true === $data) { +throw new \LogicException('loadRootServerFile should not return true during initialization'); +} + +return $this->loadIncludes($data); +} + +private function hasPartialPackages(): bool +{ +if ($this->hasPartialPackages && null === $this->partialPackagesByName) { +$this->initializePartialPackages(); +} + +return $this->hasPartialPackages; +} + + + + +private function loadProviderListings($data): void +{ +if (isset($data['providers'])) { +if (!is_array($this->providerListing)) { +$this->providerListing = []; +} +$this->providerListing = array_merge($this->providerListing, $data['providers']); +} + +if ($this->providersUrl && isset($data['provider-includes'])) { +$includes = $data['provider-includes']; +foreach ($includes as $include => $metadata) { +$url = $this->baseUrl . '/' . str_replace('%hash%', $metadata['sha256'], $include); +$cacheKey = str_replace(['%hash%','$'], '', $include); +if ($this->cache->sha256($cacheKey) === $metadata['sha256']) { +$includedData = json_decode($this->cache->read($cacheKey), true); +} else { +$includedData = $this->fetchFile($url, $cacheKey, $metadata['sha256']); +} + +$this->loadProviderListings($includedData); +} +} +} + + + + + + +private function loadIncludes(array $data): array +{ +$packages = []; + + +if (!isset($data['packages']) && !isset($data['includes'])) { +foreach ($data as $pkg) { +if (isset($pkg['versions']) && is_array($pkg['versions'])) { +foreach ($pkg['versions'] as $metadata) { +$packages[] = $metadata; +} +} +} + +return $packages; +} + +if (isset($data['packages'])) { +foreach ($data['packages'] as $package => $versions) { +$packageName = strtolower((string) $package); +foreach ($versions as $version => $metadata) { +$packages[] = $metadata; +if (!$this->displayedWarningAboutNonMatchingPackageIndex && $packageName !== strtolower((string) ($metadata['name'] ?? ''))) { +$this->displayedWarningAboutNonMatchingPackageIndex = true; +$this->io->writeError(sprintf("Warning: the packages key '%s' doesn't match the name defined in the package metadata '%s' in repository %s", $package, $metadata['name'] ?? '', $this->baseUrl)); +} +} +} +} + +if (isset($data['includes'])) { +foreach ($data['includes'] as $include => $metadata) { +if (isset($metadata['sha1']) && $this->cache->sha1((string) $include) === $metadata['sha1']) { +$includedData = json_decode($this->cache->read((string) $include), true); +} else { +$includedData = $this->fetchFile($include); +} +$packages = array_merge($packages, $this->loadIncludes($includedData)); +} +} + +return $packages; +} + + + + + + +private function createPackages(array $packages, ?string $source = null): array +{ +if (!$packages) { +return []; +} + +try { +foreach ($packages as &$data) { +if (!isset($data['notification-url'])) { +$data['notification-url'] = $this->notifyUrl; +} +} + +$packageInstances = $this->loader->loadPackages($packages); + +foreach ($packageInstances as $package) { +if (isset($this->sourceMirrors[$package->getSourceType()])) { +$package->setSourceMirrors($this->sourceMirrors[$package->getSourceType()]); +} +$package->setDistMirrors($this->distMirrors); +$this->configurePackageTransportOptions($package); +} + +return $packageInstances; +} catch (\Exception $e) { +throw new \RuntimeException('Could not load packages '.($packages[0]['name'] ?? json_encode($packages)).' in '.$this->getRepoName().($source ? ' from '.$source : '').': ['.get_class($e).'] '.$e->getMessage(), 0, $e); +} +} + + + + +protected function fetchFile(string $filename, ?string $cacheKey = null, ?string $sha256 = null, bool $storeLastModifiedTime = false) +{ +if ('' === $filename) { +throw new \InvalidArgumentException('$filename should not be an empty string'); +} + +if (null === $cacheKey) { +$cacheKey = $filename; +$filename = $this->baseUrl.'/'.$filename; +} + + +if (($pos = strpos($filename, '$')) && Preg::isMatch('{^https?://}i', $filename)) { +$filename = substr($filename, 0, $pos) . '%24' . substr($filename, $pos + 1); +} + +$retries = 3; +while ($retries--) { +try { +$options = $this->options; +if ($this->eventDispatcher) { +$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata', ['repository' => $this]); +$preFileDownloadEvent->setTransportOptions($this->options); +$this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); +$filename = $preFileDownloadEvent->getProcessedUrl(); +$options = $preFileDownloadEvent->getTransportOptions(); +} + +$response = $this->httpDownloader->get($filename, $options); +$json = (string) $response->getBody(); +if ($sha256 && $sha256 !== hash('sha256', $json)) { + +if ($this->allowSslDowngrade) { +$this->url = str_replace('http://', 'https://', $this->url); +$this->baseUrl = str_replace('http://', 'https://', $this->baseUrl); +$filename = str_replace('http://', 'https://', $filename); +} + +if ($retries > 0) { +usleep(100000); + +continue; +} + + +throw new RepositorySecurityException('The contents of '.$filename.' do not match its signature. This could indicate a man-in-the-middle attack or e.g. antivirus software corrupting files. Try running composer again and report this if you think it is a mistake.'); +} + +if ($this->eventDispatcher) { +$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, null, $sha256, $filename, 'metadata', ['response' => $response, 'repository' => $this]); +$this->eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); +} + +$data = $response->decodeJson(); +HttpDownloader::outputWarnings($this->io, $this->url, $data); + +if ($cacheKey && !$this->cache->isReadOnly()) { +if ($storeLastModifiedTime) { +$lastModifiedDate = $response->getHeader('last-modified'); +if ($lastModifiedDate) { +$data['last-modified'] = $lastModifiedDate; +$json = JsonFile::encode($data, 0); +} +} +$this->cache->write($cacheKey, $json); +} + +$response->collect(); + +break; +} catch (\Exception $e) { +if ($e instanceof \LogicException) { +throw $e; +} + +if ($e instanceof TransportException && $e->getStatusCode() === 404) { +throw $e; +} + +if ($e instanceof RepositorySecurityException) { +throw $e; +} + +if ($cacheKey && ($contents = $this->cache->read($cacheKey))) { +if (!$this->degradedMode) { +$this->io->writeError(''.$this->url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); +} +$this->degradedMode = true; +$data = JsonFile::parseJson($contents, $this->cache->getRoot().$cacheKey); + +break; +} + +throw $e; +} +} + +if (!isset($data)) { +throw new \LogicException("ComposerRepository: Undefined \$data. Please report at https://github.com/composer/composer/issues/new."); +} + +return $data; +} + + + + +private function fetchFileIfLastModified(string $filename, string $cacheKey, string $lastModifiedTime) +{ +if ('' === $filename) { +throw new \InvalidArgumentException('$filename should not be an empty string'); +} + +try { +$options = $this->options; +if ($this->eventDispatcher) { +$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata', ['repository' => $this]); +$preFileDownloadEvent->setTransportOptions($this->options); +$this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); +$filename = $preFileDownloadEvent->getProcessedUrl(); +$options = $preFileDownloadEvent->getTransportOptions(); +} + +if (isset($options['http']['header'])) { +$options['http']['header'] = (array) $options['http']['header']; +} +$options['http']['header'][] = 'If-Modified-Since: '.$lastModifiedTime; +$response = $this->httpDownloader->get($filename, $options); +$json = (string) $response->getBody(); +if ($json === '' && $response->getStatusCode() === 304) { +return true; +} + +if ($this->eventDispatcher) { +$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, null, null, $filename, 'metadata', ['response' => $response, 'repository' => $this]); +$this->eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); +} + +$data = $response->decodeJson(); +HttpDownloader::outputWarnings($this->io, $this->url, $data); + +$lastModifiedDate = $response->getHeader('last-modified'); +$response->collect(); +if ($lastModifiedDate) { +$data['last-modified'] = $lastModifiedDate; +$json = JsonFile::encode($data, 0); +} +if (!$this->cache->isReadOnly()) { +$this->cache->write($cacheKey, $json); +} + +return $data; +} catch (\Exception $e) { +if ($e instanceof \LogicException) { +throw $e; +} + +if ($e instanceof TransportException && $e->getStatusCode() === 404) { +throw $e; +} + +if (!$this->degradedMode) { +$this->io->writeError(''.$this->url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); +} +$this->degradedMode = true; + +return true; +} +} + +private function asyncFetchFile(string $filename, string $cacheKey, ?string $lastModifiedTime = null): PromiseInterface +{ +if ('' === $filename) { +throw new \InvalidArgumentException('$filename should not be an empty string'); +} + +if (isset($this->packagesNotFoundCache[$filename])) { +return \React\Promise\resolve(['packages' => []]); +} + +if (isset($this->freshMetadataUrls[$filename]) && $lastModifiedTime) { + +return \React\Promise\resolve(true); +} + +$httpDownloader = $this->httpDownloader; +$options = $this->options; +if ($this->eventDispatcher) { +$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata', ['repository' => $this]); +$preFileDownloadEvent->setTransportOptions($this->options); +$this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); +$filename = $preFileDownloadEvent->getProcessedUrl(); +$options = $preFileDownloadEvent->getTransportOptions(); +} + +if ($lastModifiedTime) { +if (isset($options['http']['header'])) { +$options['http']['header'] = (array) $options['http']['header']; +} +$options['http']['header'][] = 'If-Modified-Since: '.$lastModifiedTime; +} + +$io = $this->io; +$url = $this->url; +$cache = $this->cache; +$degradedMode = &$this->degradedMode; +$eventDispatcher = $this->eventDispatcher; + + + + +$accept = function ($response) use ($io, $url, $filename, $cache, $cacheKey, $eventDispatcher) { + +if ($response->getStatusCode() === 404) { +$this->packagesNotFoundCache[$filename] = true; + +return ['packages' => []]; +} + +$json = (string) $response->getBody(); +if ($json === '' && $response->getStatusCode() === 304) { +$this->freshMetadataUrls[$filename] = true; + +return true; +} + +if ($eventDispatcher) { +$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, null, null, $filename, 'metadata', ['response' => $response, 'repository' => $this]); +$eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); +} + +$data = $response->decodeJson(); +HttpDownloader::outputWarnings($io, $url, $data); + +$lastModifiedDate = $response->getHeader('last-modified'); +$response->collect(); +if ($lastModifiedDate) { +$data['last-modified'] = $lastModifiedDate; +$json = JsonFile::encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); +} +if (!$cache->isReadOnly()) { +$cache->write($cacheKey, $json); +} +$this->freshMetadataUrls[$filename] = true; + +return $data; +}; + +$reject = function ($e) use ($filename, $accept, $io, $url, &$degradedMode, $lastModifiedTime) { +if ($e instanceof TransportException && $e->getStatusCode() === 404) { +$this->packagesNotFoundCache[$filename] = true; + +return false; +} + +if (!$degradedMode) { +$io->writeError(''.$url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); +} +$degradedMode = true; + + +if ($lastModifiedTime) { +return $accept(new Response(['url' => $url], 304, [], '')); +} + + +if ($e instanceof TransportException && $e->getStatusCode() === 499) { +return $accept(new Response(['url' => $url], 404, [], '')); +} + +throw $e; +}; + +return $httpDownloader->add($filename, $options)->then($accept, $reject); +} + + + + + + +private function initializePartialPackages(): void +{ +$rootData = $this->loadRootServerFile(); +if ($rootData === true) { +return; +} + +$this->partialPackagesByName = []; +foreach ($rootData['packages'] as $package => $versions) { +foreach ($versions as $version) { +$versionPackageName = strtolower((string) ($version['name'] ?? '')); +$this->partialPackagesByName[$versionPackageName][] = $version; +if (!$this->displayedWarningAboutNonMatchingPackageIndex && $versionPackageName !== strtolower($package)) { +$this->io->writeError(sprintf("Warning: the packages key '%s' doesn't match the name defined in the package metadata '%s' in repository %s", $package, $version['name'] ?? '', $this->baseUrl)); +$this->displayedWarningAboutNonMatchingPackageIndex = true; +} +} +} + + +$this->rootData = true; +} + + + + + + +protected function lazyProvidersRepoContains(string $name) +{ +if (!$this->hasAvailablePackageList) { +throw new \LogicException('lazyProvidersRepoContains should not be called unless hasAvailablePackageList is true'); +} + +if (is_array($this->availablePackages) && isset($this->availablePackages[$name])) { +return true; +} + +if (is_array($this->availablePackagePatterns)) { +foreach ($this->availablePackagePatterns as $providerRegex) { +if (Preg::isMatch($providerRegex, $name)) { +return true; +} +} +} + +return false; +} +} diff --git a/composer/src/Composer/Repository/CompositeRepository.php b/composer/src/Composer/Repository/CompositeRepository.php new file mode 100644 index 000000000..06b896a11 --- /dev/null +++ b/composer/src/Composer/Repository/CompositeRepository.php @@ -0,0 +1,203 @@ +repositories = []; +foreach ($repositories as $repo) { +$this->addRepository($repo); +} +} + +public function getRepoName(): string +{ +return 'composite repo ('.implode(', ', array_map(static function ($repo): string { +return $repo->getRepoName(); +}, $this->repositories)).')'; +} + + + + + + +public function getRepositories(): array +{ +return $this->repositories; +} + + + + +public function hasPackage(PackageInterface $package): bool +{ +foreach ($this->repositories as $repository) { + +if ($repository->hasPackage($package)) { +return true; +} +} + +return false; +} + + + + +public function findPackage($name, $constraint): ?BasePackage +{ +foreach ($this->repositories as $repository) { + +$package = $repository->findPackage($name, $constraint); +if (null !== $package) { +return $package; +} +} + +return null; +} + + + + +public function findPackages($name, $constraint = null): array +{ +$packages = []; +foreach ($this->repositories as $repository) { + +$packages[] = $repository->findPackages($name, $constraint); +} + +return $packages ? array_merge(...$packages) : []; +} + + + + +public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []): array +{ +$packages = []; +$namesFound = []; +foreach ($this->repositories as $repository) { + +$result = $repository->loadPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); +$packages[] = $result['packages']; +$namesFound[] = $result['namesFound']; +} + +return [ +'packages' => $packages ? array_merge(...$packages) : [], +'namesFound' => $namesFound ? array_unique(array_merge(...$namesFound)) : [], +]; +} + + + + +public function search(string $query, int $mode = 0, ?string $type = null): array +{ +$matches = []; +foreach ($this->repositories as $repository) { + +$matches[] = $repository->search($query, $mode, $type); +} + +return \count($matches) > 0 ? array_merge(...$matches) : []; +} + + + + +public function getPackages(): array +{ +$packages = []; +foreach ($this->repositories as $repository) { + +$packages[] = $repository->getPackages(); +} + +return $packages ? array_merge(...$packages) : []; +} + + + + +public function getProviders($packageName): array +{ +$results = []; +foreach ($this->repositories as $repository) { + +$results[] = $repository->getProviders($packageName); +} + +return $results ? array_merge(...$results) : []; +} + +public function removePackage(PackageInterface $package): void +{ +foreach ($this->repositories as $repository) { +if ($repository instanceof WritableRepositoryInterface) { +$repository->removePackage($package); +} +} +} + + + + +public function count(): int +{ +$total = 0; +foreach ($this->repositories as $repository) { + +$total += $repository->count(); +} + +return $total; +} + + + + +public function addRepository(RepositoryInterface $repository): void +{ +if ($repository instanceof self) { +foreach ($repository->getRepositories() as $repo) { +$this->addRepository($repo); +} +} else { +$this->repositories[] = $repository; +} +} +} diff --git a/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php b/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php new file mode 100644 index 000000000..fe0f6bdf3 --- /dev/null +++ b/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php @@ -0,0 +1,26 @@ +file = $repositoryFile; + $this->dumpVersions = $dumpVersions; + $this->rootPackage = $rootPackage; + $this->filesystem = $filesystem ?: new Filesystem; + if ($dumpVersions && !$rootPackage) { + throw new \InvalidArgumentException('Expected a root package instance if $dumpVersions is true'); + } + } + + + public function getDevMode() + { + return $this->devMode; + } + + + protected function initialize() + { + parent::initialize(); + + if (!$this->file->exists()) { + return; + } + + try { + $data = $this->file->read(); + if (isset($data['packages'])) { + $packages = $data['packages']; + } else { + $packages = $data; + } + + if (isset($data['dev-package-names'])) { + $this->setDevPackageNames($data['dev-package-names']); + } + if (isset($data['dev'])) { + $this->devMode = $data['dev']; + } + + if (!is_array($packages)) { + throw new \UnexpectedValueException('Could not parse package list from the repository'); + } + } catch (\Exception $e) { + throw new InvalidRepositoryException('Invalid repository data in ' . $this->file->getPath() . ', packages could not be loaded: [' . get_class($e) . '] ' . $e->getMessage()); + } + + $loader = new ArrayLoader(null, true); + foreach ($packages as $packageData) { + $package = $loader->load($packageData); + $this->addPackage($package); + } + } + + public function reload() + { + $this->packages = null; + $this->initialize(); + } + + + public function write(bool $devMode, InstallationManager $installationManager) + { + $data = ['packages' => [], 'dev' => $devMode, 'dev-package-names' => []]; + $dumper = new ArrayDumper(); + + + $repoDir = dirname($this->file->getPath()); + $this->filesystem->ensureDirectoryExists($repoDir); + + $repoDir = $this->filesystem->normalizePath(realpath($repoDir)); + $installPaths = []; + + foreach ($this->getCanonicalPackages() as $package) { + $pkgArray = $dumper->dump($package); + $path = $installationManager->getInstallPath($package); + $installPath = null; + if ('' !== $path && null !== $path) { + $normalizedPath = $this->filesystem->normalizePath($this->filesystem->isAbsolutePath($path) ? $path : Platform::getCwd() . '/' . $path); + $installPath = $this->filesystem->findShortestPath($repoDir, $normalizedPath, true); + } + $installPaths[$package->getName()] = $installPath; + + $pkgArray['install-path'] = $installPath; + $data['packages'][] = $pkgArray; + + + if (in_array($package->getName(), $this->devPackageNames, true)) { + $data['dev-package-names'][] = $package->getName(); + } + } + + sort($data['dev-package-names']); + usort($data['packages'], static function ($a, $b): int { + return strcmp($a['name'], $b['name']); + }); + + $this->file->write($data); + + if ($this->dumpVersions) { + $versions = $this->generateInstalledVersions($installationManager, $installPaths, $devMode, $repoDir); + + $this->filesystem->filePutContentsIfModified($repoDir . '/installed.php', 'dumpToPhpCode($versions) . ';' . "\n"); + $installedVersionsClass = file_get_contents(__DIR__ . '/../InstalledVersions.php'); + $this->filesystem->filePutContentsIfModified($repoDir . '/InstalledVersions.php', $installedVersionsClass); + + \Composer\InstalledVersions::reload($versions); + } + } + + + private function dumpToPhpCode(array $array = [], int $level = 0): string + { + $lines = "array(\n"; + $level++; + + foreach ($array as $key => $value) { + $lines .= str_repeat(' ', $level); + $lines .= is_int($key) ? $key . ' => ' : '\'' . $key . '\' => '; + + if (is_array($value)) { + if (!empty($value)) { + $lines .= $this->dumpToPhpCode($value, $level); + } else { + $lines .= "array(),\n"; + } + } elseif ($key === 'install_path' && is_string($value)) { + if ($this->filesystem->isAbsolutePath($value)) { + $lines .= var_export($value, true) . ",\n"; + } else { + $lines .= "__DIR__ . " . var_export('/' . $value, true) . ",\n"; + } + } else { + $lines .= var_export($value, true) . ",\n"; + } + } + + $lines .= str_repeat(' ', $level - 1) . ')' . ($level - 1 === 0 ? '' : ",\n"); + + return $lines; + } + + + private function generateInstalledVersions(InstallationManager $installationManager, array $installPaths, bool $devMode, string $repoDir): array + { + $devPackages = array_flip($this->devPackageNames); + $packages = $this->getPackages(); + if (null === $this->rootPackage) { + throw new \LogicException('It should not be possible to dump packages if no root package is given'); + } + $packages[] = $rootPackage = $this->rootPackage; + + while ($rootPackage instanceof RootAliasPackage) { + $rootPackage = $rootPackage->getAliasOf(); + $packages[] = $rootPackage; + } + $versions = [ + 'root' => $this->dumpRootPackage($rootPackage, $installPaths, $devMode, $repoDir, $devPackages), + 'versions' => [], + ]; + + + foreach ($packages as $package) { + if ($package instanceof AliasPackage) { + continue; + } + + $versions['versions'][$package->getName()] = $this->dumpInstalledPackage($package, $installPaths, $repoDir, $devPackages); + } + + + foreach ($packages as $package) { + $isDevPackage = isset($devPackages[$package->getName()]); + foreach ($package->getReplaces() as $replace) { + + if (PlatformRepository::isPlatformPackage($replace->getTarget())) { + continue; + } + if (!isset($versions['versions'][$replace->getTarget()]['dev_requirement'])) { + $versions['versions'][$replace->getTarget()]['dev_requirement'] = $isDevPackage; + } elseif (!$isDevPackage) { + $versions['versions'][$replace->getTarget()]['dev_requirement'] = false; + } + $replaced = $replace->getPrettyConstraint(); + if ($replaced === 'self.version') { + $replaced = $package->getPrettyVersion(); + } + if (!isset($versions['versions'][$replace->getTarget()]['replaced']) || !in_array($replaced, $versions['versions'][$replace->getTarget()]['replaced'], true)) { + $versions['versions'][$replace->getTarget()]['replaced'][] = $replaced; + } + } + foreach ($package->getProvides() as $provide) { + + if (PlatformRepository::isPlatformPackage($provide->getTarget())) { + continue; + } + if (!isset($versions['versions'][$provide->getTarget()]['dev_requirement'])) { + $versions['versions'][$provide->getTarget()]['dev_requirement'] = $isDevPackage; + } elseif (!$isDevPackage) { + $versions['versions'][$provide->getTarget()]['dev_requirement'] = false; + } + $provided = $provide->getPrettyConstraint(); + if ($provided === 'self.version') { + $provided = $package->getPrettyVersion(); + } + if (!isset($versions['versions'][$provide->getTarget()]['provided']) || !in_array($provided, $versions['versions'][$provide->getTarget()]['provided'], true)) { + $versions['versions'][$provide->getTarget()]['provided'][] = $provided; + } + } + } + + + foreach ($packages as $package) { + if (!$package instanceof AliasPackage) { + continue; + } + $versions['versions'][$package->getName()]['aliases'][] = $package->getPrettyVersion(); + if ($package instanceof RootPackageInterface) { + $versions['root']['aliases'][] = $package->getPrettyVersion(); + } + } + + ksort($versions['versions']); + ksort($versions); + + return $versions; + } + + + private function dumpInstalledPackage(PackageInterface $package, array $installPaths, string $repoDir, array $devPackages): array + { + $reference = null; + if ($package->getInstallationSource()) { + $reference = $package->getInstallationSource() === 'source' ? $package->getSourceReference() : $package->getDistReference(); + } + if (null === $reference) { + $reference = ($package->getSourceReference() ?: $package->getDistReference()) ?: null; + } + + if ($package instanceof RootPackageInterface) { + $to = $this->filesystem->normalizePath(realpath(Platform::getCwd())); + $installPath = $this->filesystem->findShortestPath($repoDir, $to, true); + } else { + $installPath = $installPaths[$package->getName()]; + } + + $data = [ + 'pretty_version' => $package->getPrettyVersion(), + 'version' => $package->getVersion(), + 'reference' => $reference, + 'type' => $package->getType(), + 'install_path' => $installPath, + 'aliases' => [], + 'dev_requirement' => isset($devPackages[$package->getName()]), + ]; + + return $data; + } + + + private function dumpRootPackage(RootPackageInterface $package, array $installPaths, bool $devMode, string $repoDir, array $devPackages) + { + $data = $this->dumpInstalledPackage($package, $installPaths, $repoDir, $devPackages); + + return [ + 'name' => $package->getName(), + 'pretty_version' => $data['pretty_version'], + 'version' => $data['version'], + 'reference' => $data['reference'], + 'type' => $data['type'], + 'install_path' => $data['install_path'], + 'aliases' => $data['aliases'], + 'dev' => $devMode, + ]; + } +} diff --git a/composer/src/Composer/Repository/FilterRepository.php b/composer/src/Composer/Repository/FilterRepository.php new file mode 100644 index 000000000..6a0a9f775 --- /dev/null +++ b/composer/src/Composer/Repository/FilterRepository.php @@ -0,0 +1,234 @@ +getRepoName().' should be an array'); +} +$this->only = BasePackage::packageNamesToRegexp($options['only']); +} +if (isset($options['exclude'])) { +if (!is_array($options['exclude'])) { +throw new \InvalidArgumentException('"exclude" key for repository '.$repo->getRepoName().' should be an array'); +} +$this->exclude = BasePackage::packageNamesToRegexp($options['exclude']); +} +if ($this->exclude && $this->only) { +throw new \InvalidArgumentException('Only one of "only" and "exclude" can be specified for repository '.$repo->getRepoName()); +} +if (isset($options['canonical'])) { +if (!is_bool($options['canonical'])) { +throw new \InvalidArgumentException('"canonical" key for repository '.$repo->getRepoName().' should be a boolean'); +} +$this->canonical = $options['canonical']; +} + +$this->repo = $repo; +} + +public function getRepoName(): string +{ +return $this->repo->getRepoName(); +} + + + + +public function getRepository(): RepositoryInterface +{ +return $this->repo; +} + + + + +public function hasPackage(PackageInterface $package): bool +{ +return $this->repo->hasPackage($package); +} + + + + +public function findPackage($name, $constraint): ?BasePackage +{ +if (!$this->isAllowed($name)) { +return null; +} + +return $this->repo->findPackage($name, $constraint); +} + + + + +public function findPackages($name, $constraint = null): array +{ +if (!$this->isAllowed($name)) { +return []; +} + +return $this->repo->findPackages($name, $constraint); +} + + + + +public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []): array +{ +foreach ($packageNameMap as $name => $constraint) { +if (!$this->isAllowed($name)) { +unset($packageNameMap[$name]); +} +} + +if (!$packageNameMap) { +return ['namesFound' => [], 'packages' => []]; +} + +$result = $this->repo->loadPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); +if (!$this->canonical) { +$result['namesFound'] = []; +} + +return $result; +} + + + + +public function search(string $query, int $mode = 0, ?string $type = null): array +{ +$result = []; + +foreach ($this->repo->search($query, $mode, $type) as $package) { +if ($this->isAllowed($package['name'])) { +$result[] = $package; +} +} + +return $result; +} + + + + +public function getPackages(): array +{ +$result = []; +foreach ($this->repo->getPackages() as $package) { +if ($this->isAllowed($package->getName())) { +$result[] = $package; +} +} + +return $result; +} + + + + +public function getProviders($packageName): array +{ +$result = []; +foreach ($this->repo->getProviders($packageName) as $name => $provider) { +if ($this->isAllowed($provider['name'])) { +$result[$name] = $provider; +} +} + +return $result; +} + + + + +public function count(): int +{ +if ($this->repo->count() > 0) { +return count($this->getPackages()); +} + +return 0; +} + +public function hasSecurityAdvisories(): bool +{ +if (!$this->repo instanceof AdvisoryProviderInterface) { +return false; +} + +return $this->repo->hasSecurityAdvisories(); +} + + + + +public function getSecurityAdvisories(array $packageConstraintMap, bool $allowPartialAdvisories = false): array +{ +if (!$this->repo instanceof AdvisoryProviderInterface) { +return ['namesFound' => [], 'advisories' => []]; +} + +foreach ($packageConstraintMap as $name => $constraint) { +if (!$this->isAllowed($name)) { +unset($packageConstraintMap[$name]); +} +} + +return $this->repo->getSecurityAdvisories($packageConstraintMap, $allowPartialAdvisories); +} + +private function isAllowed(string $name): bool +{ +if (!$this->only && !$this->exclude) { +return true; +} + +if ($this->only) { +return Preg::isMatch($this->only, $name); +} + +if ($this->exclude === null) { +return true; +} + +return !Preg::isMatch($this->exclude, $name); +} +} diff --git a/composer/src/Composer/Repository/InstalledArrayRepository.php b/composer/src/Composer/Repository/InstalledArrayRepository.php new file mode 100644 index 000000000..a137773f9 --- /dev/null +++ b/composer/src/Composer/Repository/InstalledArrayRepository.php @@ -0,0 +1,38 @@ +count() === 0; +} +} diff --git a/composer/src/Composer/Repository/InstalledFilesystemRepository.php b/composer/src/Composer/Repository/InstalledFilesystemRepository.php new file mode 100644 index 000000000..a975ad118 --- /dev/null +++ b/composer/src/Composer/Repository/InstalledFilesystemRepository.php @@ -0,0 +1,19 @@ +file->exists(); + } +} diff --git a/composer/src/Composer/Repository/InstalledRepository.php b/composer/src/Composer/Repository/InstalledRepository.php new file mode 100644 index 000000000..4ccbac106 --- /dev/null +++ b/composer/src/Composer/Repository/InstalledRepository.php @@ -0,0 +1,276 @@ +parseConstraints($constraint); +} + +$matches = []; +foreach ($this->getRepositories() as $repo) { +foreach ($repo->getPackages() as $candidate) { +if ($name === $candidate->getName()) { +if (null === $constraint || $constraint->matches(new Constraint('==', $candidate->getVersion()))) { +$matches[] = $candidate; +} +continue; +} + +foreach (array_merge($candidate->getProvides(), $candidate->getReplaces()) as $link) { +if ( +$name === $link->getTarget() +&& ($constraint === null || $constraint->matches($link->getConstraint())) +) { +$matches[] = $candidate; +continue 2; +} +} +} +} + +return $matches; +} + + + + + + + + + + + + + + + + +public function getDependents($needle, ?ConstraintInterface $constraint = null, bool $invert = false, bool $recurse = true, ?array $packagesFound = null): array +{ +$needles = array_map('strtolower', (array) $needle); +$results = []; + + +if (null === $packagesFound) { +$packagesFound = $needles; +} + + +$rootPackage = null; +foreach ($this->getPackages() as $package) { +if ($package instanceof RootPackageInterface) { +$rootPackage = $package; +break; +} +} + + +foreach ($this->getPackages() as $package) { +$links = $package->getRequires(); + + + +$packagesInTree = $packagesFound; + + +if (!$invert) { +$links += $package->getReplaces(); + + + + +foreach ($package->getReplaces() as $link) { +foreach ($needles as $needle) { +if ($link->getSource() === $needle) { +if ($constraint === null || ($link->getConstraint()->matches($constraint) === true)) { + +if (in_array($link->getTarget(), $packagesInTree)) { +$results[] = [$package, $link, false]; +continue; +} +$packagesInTree[] = $link->getTarget(); +$dependents = $recurse ? $this->getDependents($link->getTarget(), null, false, true, $packagesInTree) : []; +$results[] = [$package, $link, $dependents]; +$needles[] = $link->getTarget(); +} +} +} +} +} + + +if ($package instanceof RootPackageInterface) { +$links += $package->getDevRequires(); +} + + +foreach ($links as $link) { +foreach ($needles as $needle) { +if ($link->getTarget() === $needle) { +if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { + +if (in_array($link->getSource(), $packagesInTree)) { +$results[] = [$package, $link, false]; +continue; +} +$packagesInTree[] = $link->getSource(); +$dependents = $recurse ? $this->getDependents($link->getSource(), null, false, true, $packagesInTree) : []; +$results[] = [$package, $link, $dependents]; +} +} +} +} + + +if ($invert && in_array($package->getName(), $needles)) { +foreach ($package->getConflicts() as $link) { +foreach ($this->findPackages($link->getTarget()) as $pkg) { +$version = new Constraint('=', $pkg->getVersion()); +if ($link->getConstraint()->matches($version) === $invert) { +$results[] = [$package, $link, false]; +} +} +} +} + + +foreach ($package->getConflicts() as $link) { +if (in_array($link->getTarget(), $needles)) { +foreach ($this->findPackages($link->getTarget()) as $pkg) { +$version = new Constraint('=', $pkg->getVersion()); +if ($link->getConstraint()->matches($version) === $invert) { +$results[] = [$package, $link, false]; +} +} +} +} + + +if ($invert && $constraint && in_array($package->getName(), $needles) && $constraint->matches(new Constraint('=', $package->getVersion()))) { +foreach ($package->getRequires() as $link) { +if (PlatformRepository::isPlatformPackage($link->getTarget())) { +if ($this->findPackage($link->getTarget(), $link->getConstraint())) { +continue; +} + +$platformPkg = $this->findPackage($link->getTarget(), '*'); +$description = $platformPkg ? 'but '.$platformPkg->getPrettyVersion().' is installed' : 'but it is missing'; +$results[] = [$package, new Link($package->getName(), $link->getTarget(), new MatchAllConstraint, Link::TYPE_REQUIRE, $link->getPrettyConstraint().' '.$description), false]; + +continue; +} + +foreach ($this->getPackages() as $pkg) { +if (!in_array($link->getTarget(), $pkg->getNames())) { +continue; +} + +$version = new Constraint('=', $pkg->getVersion()); + +if ($link->getTarget() !== $pkg->getName()) { +foreach (array_merge($pkg->getReplaces(), $pkg->getProvides()) as $prov) { +if ($link->getTarget() === $prov->getTarget()) { +$version = $prov->getConstraint(); +break; +} +} +} + +if (!$link->getConstraint()->matches($version)) { + + +if ($rootPackage) { +foreach (array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires()) as $rootReq) { +if (in_array($rootReq->getTarget(), $pkg->getNames()) && !$rootReq->getConstraint()->matches($link->getConstraint())) { +$results[] = [$package, $link, false]; +$results[] = [$rootPackage, $rootReq, false]; +continue 3; +} +} + +$results[] = [$package, $link, false]; +$results[] = [$rootPackage, new Link($rootPackage->getName(), $link->getTarget(), new MatchAllConstraint, Link::TYPE_DOES_NOT_REQUIRE, 'but ' . $pkg->getPrettyVersion() . ' is installed'), false]; +} else { + +$results[] = [$package, $link, false]; +} +} + +continue 2; +} +} +} +} + +ksort($results); + +return $results; +} + +public function getRepoName(): string +{ +return 'installed repo ('.implode(', ', array_map(static function ($repo): string { +return $repo->getRepoName(); +}, $this->getRepositories())).')'; +} + + + + +public function addRepository(RepositoryInterface $repository): void +{ +if ( +$repository instanceof LockArrayRepository +|| $repository instanceof InstalledRepositoryInterface +|| $repository instanceof RootPackageRepository +|| $repository instanceof PlatformRepository +) { +parent::addRepository($repository); + +return; +} + +throw new \LogicException('An InstalledRepository can not contain a repository of type '.get_class($repository).' ('.$repository->getRepoName().')'); +} +} diff --git a/composer/src/Composer/Repository/InstalledRepositoryInterface.php b/composer/src/Composer/Repository/InstalledRepositoryInterface.php new file mode 100644 index 000000000..82ca23f51 --- /dev/null +++ b/composer/src/Composer/Repository/InstalledRepositoryInterface.php @@ -0,0 +1,33 @@ +config = $config['package']; + + +if (!is_numeric(key($this->config))) { +$this->config = [$this->config]; +} +} + + + + +protected function initialize(): void +{ +parent::initialize(); + +$loader = new ValidatingArrayLoader(new ArrayLoader(null, true), true); +foreach ($this->config as $package) { +try { +$package = $loader->load($package); +} catch (\Exception $e) { +throw new InvalidRepositoryException('A repository of type "package" contains an invalid package definition: '.$e->getMessage()."\n\nInvalid package definition:\n".json_encode($package)); +} + +$this->addPackage($package); +} +} + +public function getRepoName(): string +{ +return Preg::replace('{^array }', 'package ', parent::getRepoName()); +} +} diff --git a/composer/src/Composer/Repository/PathRepository.php b/composer/src/Composer/Repository/PathRepository.php new file mode 100644 index 000000000..9ca1f7fc9 --- /dev/null +++ b/composer/src/Composer/Repository/PathRepository.php @@ -0,0 +1,253 @@ +loader = new ArrayLoader(null, true); +$this->url = Platform::expandPath($repoConfig['url']); +$this->process = $process ?? new ProcessExecutor($io); +$this->versionGuesser = new VersionGuesser($config, $this->process, new VersionParser()); +$this->repoConfig = $repoConfig; +$this->options = $repoConfig['options'] ?? []; +if (!isset($this->options['relative'])) { +$filesystem = new Filesystem(); +$this->options['relative'] = !$filesystem->isAbsolutePath($this->url); +} + +parent::__construct(); +} + +public function getRepoName(): string +{ +return 'path repo ('.Url::sanitize($this->repoConfig['url']).')'; +} + +public function getRepoConfig(): array +{ +return $this->repoConfig; +} + + + + + + +protected function initialize(): void +{ +parent::initialize(); + +$urlMatches = $this->getUrlMatches(); + +if (empty($urlMatches)) { +if (Preg::isMatch('{[*{}]}', $this->url)) { +$url = $this->url; +while (Preg::isMatch('{[*{}]}', $url)) { +$url = dirname($url); +} + +if (is_dir($url)) { +return; +} +} + +throw new \RuntimeException('The `url` supplied for the path (' . $this->url . ') repository does not exist'); +} + +foreach ($urlMatches as $url) { +$path = realpath($url) . DIRECTORY_SEPARATOR; +$composerFilePath = $path.'composer.json'; + +if (!file_exists($composerFilePath)) { +continue; +} + +$json = file_get_contents($composerFilePath); +$package = JsonFile::parseJson($json, $composerFilePath); +$package['dist'] = [ +'type' => 'path', +'url' => $url, +]; +$reference = $this->options['reference'] ?? 'auto'; +if ('none' === $reference) { +$package['dist']['reference'] = null; +} elseif ('config' === $reference || 'auto' === $reference) { +$package['dist']['reference'] = sha1($json . serialize($this->options)); +} + + +$package['transport-options'] = array_intersect_key($this->options, ['symlink' => true, 'relative' => true]); + +if (isset($package['name'], $this->options['versions'][$package['name']])) { +$package['version'] = $this->options['versions'][$package['name']]; +} + + +if (!isset($package['version']) && ($rootVersion = Platform::getEnv('COMPOSER_ROOT_VERSION'))) { +if ( +0 === $this->process->execute('git rev-parse HEAD', $ref1, $path) +&& 0 === $this->process->execute('git rev-parse HEAD', $ref2) +&& $ref1 === $ref2 +) { +$package['version'] = $rootVersion; +} +} + +$output = ''; +if ('auto' === $reference && is_dir($path . DIRECTORY_SEPARATOR . '.git') && 0 === $this->process->execute('git log -n1 --pretty=%H'.GitUtil::getNoShowSignatureFlag($this->process), $output, $path)) { +$package['dist']['reference'] = trim($output); +} + +if (!isset($package['version'])) { +$versionData = $this->versionGuesser->guessVersion($package, $path); +if (is_array($versionData) && $versionData['pretty_version']) { + +if (!empty($versionData['feature_pretty_version'])) { +$package['version'] = $versionData['feature_pretty_version']; +$this->addPackage($this->loader->load($package)); +} + +$package['version'] = $versionData['pretty_version']; +} else { +$package['version'] = 'dev-main'; +} +} + +try { +$this->addPackage($this->loader->load($package)); +} catch (\Exception $e) { +throw new \RuntimeException('Failed loading the package in '.$composerFilePath, 0, $e); +} +} +} + + + + + + +private function getUrlMatches(): array +{ +$flags = GLOB_MARK | GLOB_ONLYDIR; + +if (defined('GLOB_BRACE')) { +$flags |= GLOB_BRACE; +} elseif (strpos($this->url, '{') !== false || strpos($this->url, '}') !== false) { +throw new \RuntimeException('The operating system does not support GLOB_BRACE which is required for the url '. $this->url); +} + + +return array_map(static function ($val): string { +return rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $val), '/'); +}, glob($this->url, $flags)); +} +} diff --git a/composer/src/Composer/Repository/PearRepository.php b/composer/src/Composer/Repository/PearRepository.php new file mode 100644 index 000000000..75ada6be0 --- /dev/null +++ b/composer/src/Composer/Repository/PearRepository.php @@ -0,0 +1,32 @@ +runtime = $runtime ?: new Runtime(); +$this->hhvmDetector = $hhvmDetector ?: new HhvmDetector(); +foreach ($overrides as $name => $version) { +if (!is_string($version) && false !== $version) { +throw new \UnexpectedValueException('config.platform.'.$name.' should be a string or false, but got '.gettype($version).' '.var_export($version, true)); +} +if ($name === 'php' && $version === false) { +throw new \UnexpectedValueException('config.platform.'.$name.' cannot be set to false as you cannot disable php entirely.'); +} +$this->overrides[strtolower($name)] = ['name' => $name, 'version' => $version]; +} +parent::__construct($packages); +} + +public function getRepoName(): string +{ +return 'platform repo'; +} + +public function isPlatformPackageDisabled(string $name): bool +{ +return isset($this->disabledPackages[$name]); +} + + + + +public function getDisabledPackages(): array +{ +return $this->disabledPackages; +} + +protected function initialize(): void +{ +parent::initialize(); + +$this->versionParser = new VersionParser(); + + + +foreach ($this->overrides as $override) { + +if (!self::isPlatformPackage($override['name'])) { +throw new \InvalidArgumentException('Invalid platform package name in config.platform: '.$override['name']); +} + +if ($override['version'] !== false) { +$this->addOverriddenPackage($override); +} +} + +$prettyVersion = Composer::getVersion(); +$version = $this->versionParser->normalize($prettyVersion); +$composer = new CompletePackage('composer', $version, $prettyVersion); +$composer->setDescription('Composer package'); +$this->addPackage($composer); + +$prettyVersion = PluginInterface::PLUGIN_API_VERSION; +$version = $this->versionParser->normalize($prettyVersion); +$composerPluginApi = new CompletePackage('composer-plugin-api', $version, $prettyVersion); +$composerPluginApi->setDescription('The Composer Plugin API'); +$this->addPackage($composerPluginApi); + +$prettyVersion = Composer::RUNTIME_API_VERSION; +$version = $this->versionParser->normalize($prettyVersion); +$composerRuntimeApi = new CompletePackage('composer-runtime-api', $version, $prettyVersion); +$composerRuntimeApi->setDescription('The Composer Runtime API'); +$this->addPackage($composerRuntimeApi); + +try { +$prettyVersion = $this->runtime->getConstant('PHP_VERSION'); +$version = $this->versionParser->normalize($prettyVersion); +} catch (\UnexpectedValueException $e) { +$prettyVersion = Preg::replace('#^([^~+-]+).*$#', '$1', $this->runtime->getConstant('PHP_VERSION')); +$version = $this->versionParser->normalize($prettyVersion); +} + +$php = new CompletePackage('php', $version, $prettyVersion); +$php->setDescription('The PHP interpreter'); +$this->addPackage($php); + +if ($this->runtime->getConstant('PHP_DEBUG')) { +$phpdebug = new CompletePackage('php-debug', $version, $prettyVersion); +$phpdebug->setDescription('The PHP interpreter, with debugging symbols'); +$this->addPackage($phpdebug); +} + +if ($this->runtime->hasConstant('PHP_ZTS') && $this->runtime->getConstant('PHP_ZTS')) { +$phpzts = new CompletePackage('php-zts', $version, $prettyVersion); +$phpzts->setDescription('The PHP interpreter, with Zend Thread Safety'); +$this->addPackage($phpzts); +} + +if ($this->runtime->getConstant('PHP_INT_SIZE') === 8) { +$php64 = new CompletePackage('php-64bit', $version, $prettyVersion); +$php64->setDescription('The PHP interpreter, 64bit'); +$this->addPackage($php64); +} + + + +if ($this->runtime->hasConstant('AF_INET6') || Silencer::call([$this->runtime, 'invoke'], 'inet_pton', ['::']) !== false) { +$phpIpv6 = new CompletePackage('php-ipv6', $version, $prettyVersion); +$phpIpv6->setDescription('The PHP interpreter, with IPv6 support'); +$this->addPackage($phpIpv6); +} + +$loadedExtensions = $this->runtime->getExtensions(); + + +foreach ($loadedExtensions as $name) { +if (in_array($name, ['standard', 'Core'])) { +continue; +} + +$this->addExtension($name, $this->runtime->getExtensionVersion($name)); +} + + +if (!in_array('xdebug', $loadedExtensions, true) && ($prettyVersion = XdebugHandler::getSkippedVersion())) { +$this->addExtension('xdebug', $prettyVersion); +} + + + + +foreach ($loadedExtensions as $name) { +switch ($name) { +case 'amqp': +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatch('/^librabbitmq version => (?.+)$/im', $info, $librabbitmqMatches)) { +$this->addLibrary($name.'-librabbitmq', $librabbitmqMatches['version'], 'AMQP librabbitmq version'); +} + + +if (Preg::isMatchStrictGroups('/^AMQP protocol version => (?.+)$/im', $info, $protocolMatches)) { +$this->addLibrary($name.'-protocol', str_replace('-', '.', $protocolMatches['version']), 'AMQP protocol version'); +} +break; + +case 'bz2': +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatch('/^BZip2 Version => (?.*),/im', $info, $matches)) { +$this->addLibrary($name, $matches['version']); +} +break; + +case 'curl': +$curlVersion = $this->runtime->invoke('curl_version'); +$this->addLibrary($name, $curlVersion['version']); + +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatchStrictGroups('{^SSL Version => (?[^/]+)/(?.+)$}im', $info, $sslMatches)) { +$library = strtolower($sslMatches['library']); +if ($library === 'openssl') { +$parsedVersion = Version::parseOpenssl($sslMatches['version'], $isFips); +$this->addLibrary($name.'-openssl'.($isFips ? '-fips' : ''), $parsedVersion, 'curl OpenSSL version ('.$parsedVersion.')', [], $isFips ? ['curl-openssl'] : []); +} else { +$this->addLibrary($name.'-'.$library, $sslMatches['version'], 'curl '.$library.' version ('.$sslMatches['version'].')', ['curl-openssl']); +} +} + + +if (Preg::isMatchStrictGroups('{^libSSH Version => (?[^/]+)/(?.+?)(?:/.*)?$}im', $info, $sshMatches)) { +$this->addLibrary($name.'-'.strtolower($sshMatches['library']), $sshMatches['version'], 'curl '.$sshMatches['library'].' version'); +} + + +if (Preg::isMatchStrictGroups('{^ZLib Version => (?.+)$}im', $info, $zlibMatches)) { +$this->addLibrary($name.'-zlib', $zlibMatches['version'], 'curl zlib version'); +} +break; + +case 'date': +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatchStrictGroups('/^timelib version => (?.+)$/im', $info, $timelibMatches)) { +$this->addLibrary($name.'-timelib', $timelibMatches['version'], 'date timelib version'); +} + + +if (Preg::isMatchStrictGroups('/^Timezone Database => (?internal|external)$/im', $info, $zoneinfoSourceMatches)) { +$external = $zoneinfoSourceMatches['source'] === 'external'; +if (Preg::isMatchStrictGroups('/^"Olson" Timezone Database Version => (?.+?)(?:\.system)?$/im', $info, $zoneinfoMatches)) { + +if ($external && in_array('timezonedb', $loadedExtensions, true)) { +$this->addLibrary('timezonedb-zoneinfo', $zoneinfoMatches['version'], 'zoneinfo ("Olson") database for date (replaced by timezonedb)', [$name.'-zoneinfo']); +} else { +$this->addLibrary($name.'-zoneinfo', $zoneinfoMatches['version'], 'zoneinfo ("Olson") database for date'); +} +} +} +break; + +case 'fileinfo': +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatch('/^libmagic => (?.+)$/im', $info, $magicMatches)) { +$this->addLibrary($name.'-libmagic', $magicMatches['version'], 'fileinfo libmagic version'); +} +break; + +case 'gd': +$this->addLibrary($name, $this->runtime->getConstant('GD_VERSION')); + +$info = $this->runtime->getExtensionInfo($name); + +if (Preg::isMatchStrictGroups('/^libJPEG Version => (?.+?)(?: compatible)?$/im', $info, $libjpegMatches)) { +$this->addLibrary($name.'-libjpeg', Version::parseLibjpeg($libjpegMatches['version']), 'libjpeg version for gd'); +} + +if (Preg::isMatchStrictGroups('/^libPNG Version => (?.+)$/im', $info, $libpngMatches)) { +$this->addLibrary($name.'-libpng', $libpngMatches['version'], 'libpng version for gd'); +} + +if (Preg::isMatchStrictGroups('/^FreeType Version => (?.+)$/im', $info, $freetypeMatches)) { +$this->addLibrary($name.'-freetype', $freetypeMatches['version'], 'freetype version for gd'); +} + +if (Preg::isMatchStrictGroups('/^libXpm Version => (?\d+)$/im', $info, $libxpmMatches)) { +$this->addLibrary($name.'-libxpm', Version::convertLibxpmVersionId((int) $libxpmMatches['versionId']), 'libxpm version for gd'); +} + +break; + +case 'gmp': +$this->addLibrary($name, $this->runtime->getConstant('GMP_VERSION')); +break; + +case 'iconv': +$this->addLibrary($name, $this->runtime->getConstant('ICONV_VERSION')); +break; + +case 'intl': +$info = $this->runtime->getExtensionInfo($name); + +$description = 'The ICU unicode and globalization support library'; + +if ($this->runtime->hasConstant('INTL_ICU_VERSION')) { +$this->addLibrary('icu', $this->runtime->getConstant('INTL_ICU_VERSION'), $description); +} elseif (Preg::isMatch('/^ICU version => (?.+)$/im', $info, $matches)) { +$this->addLibrary('icu', $matches['version'], $description); +} + + +if (Preg::isMatchStrictGroups('/^ICU TZData version => (?.*)$/im', $info, $zoneinfoMatches) && null !== ($version = Version::parseZoneinfoVersion($zoneinfoMatches['version']))) { +$this->addLibrary('icu-zoneinfo', $version, 'zoneinfo ("Olson") database for icu'); +} + + +if ($this->runtime->hasClass('ResourceBundle')) { +$cldrVersion = $this->runtime->invoke(['ResourceBundle', 'create'], ['root', 'ICUDATA', false])->get('Version'); +$this->addLibrary('icu-cldr', $cldrVersion, 'ICU CLDR project version'); +} + +if ($this->runtime->hasClass('IntlChar')) { +$this->addLibrary('icu-unicode', implode('.', array_slice($this->runtime->invoke(['IntlChar', 'getUnicodeVersion']), 0, 3)), 'ICU unicode version'); +} +break; + +case 'imagick': +$imageMagickVersion = $this->runtime->construct('Imagick')->getVersion(); + + +Preg::match('/^ImageMagick (?[\d.]+)(?:-(?\d+))?/', $imageMagickVersion['versionString'], $matches); +$version = $matches['version']; +if (isset($matches['patch'])) { +$version .= '.'.$matches['patch']; +} + +$this->addLibrary($name.'-imagemagick', $version, null, ['imagick']); +break; + +case 'ldap': +$info = $this->runtime->getExtensionInfo($name); + +if (Preg::isMatchStrictGroups('/^Vendor Version => (?\d+)$/im', $info, $matches) && Preg::isMatchStrictGroups('/^Vendor Name => (?.+)$/im', $info, $vendorMatches)) { +$this->addLibrary($name.'-'.strtolower($vendorMatches['vendor']), Version::convertOpenldapVersionId((int) $matches['versionId']), $vendorMatches['vendor'].' version of ldap'); +} +break; + +case 'libxml': + +$libxmlProvides = array_map(static function ($extension): string { +return $extension . '-libxml'; +}, array_intersect($loadedExtensions, ['dom', 'simplexml', 'xml', 'xmlreader', 'xmlwriter'])); +$this->addLibrary($name, $this->runtime->getConstant('LIBXML_DOTTED_VERSION'), 'libxml library version', [], $libxmlProvides); + +break; + +case 'mbstring': +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatch('/^libmbfl version => (?.+)$/im', $info, $libmbflMatches)) { +$this->addLibrary($name.'-libmbfl', $libmbflMatches['version'], 'mbstring libmbfl version'); +} + +if ($this->runtime->hasConstant('MB_ONIGURUMA_VERSION')) { +$this->addLibrary($name.'-oniguruma', $this->runtime->getConstant('MB_ONIGURUMA_VERSION'), 'mbstring oniguruma version'); + + + +} elseif (Preg::isMatch('/^(?:oniguruma|Multibyte regex \(oniguruma\)) version => (?.+)$/im', $info, $onigurumaMatches)) { +$this->addLibrary($name.'-oniguruma', $onigurumaMatches['version'], 'mbstring oniguruma version'); +} + +break; + +case 'memcached': +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatch('/^libmemcached version => (?.+)$/im', $info, $matches)) { +$this->addLibrary($name.'-libmemcached', $matches['version'], 'libmemcached version'); +} +break; + +case 'openssl': + +if (Preg::isMatchStrictGroups('{^(?:OpenSSL|LibreSSL)?\s*(?\S+)}i', $this->runtime->getConstant('OPENSSL_VERSION_TEXT'), $matches)) { +$parsedVersion = Version::parseOpenssl($matches['version'], $isFips); +$this->addLibrary($name.($isFips ? '-fips' : ''), $parsedVersion, $this->runtime->getConstant('OPENSSL_VERSION_TEXT'), [], $isFips ? [$name] : []); +} +break; + +case 'pcre': +$this->addLibrary($name, Preg::replace('{^(\S+).*}', '$1', $this->runtime->getConstant('PCRE_VERSION'))); + +$info = $this->runtime->getExtensionInfo($name); + + +if (Preg::isMatchStrictGroups('/^PCRE Unicode Version => (?.+)$/im', $info, $pcreUnicodeMatches)) { +$this->addLibrary($name.'-unicode', $pcreUnicodeMatches['version'], 'PCRE Unicode version support'); +} + +break; + +case 'mysqlnd': +case 'pdo_mysql': +$info = $this->runtime->getExtensionInfo($name); + +if (Preg::isMatchStrictGroups('/^(?:Client API version|Version) => mysqlnd (?.+?) /mi', $info, $matches)) { +$this->addLibrary($name.'-mysqlnd', $matches['version'], 'mysqlnd library version for '.$name); +} +break; + +case 'mongodb': +$info = $this->runtime->getExtensionInfo($name); + +if (Preg::isMatchStrictGroups('/^libmongoc bundled version => (?.+)$/im', $info, $libmongocMatches)) { +$this->addLibrary($name.'-libmongoc', $libmongocMatches['version'], 'libmongoc version of mongodb'); +} + +if (Preg::isMatchStrictGroups('/^libbson bundled version => (?.+)$/im', $info, $libbsonMatches)) { +$this->addLibrary($name.'-libbson', $libbsonMatches['version'], 'libbson version of mongodb'); +} +break; + +case 'pgsql': +case 'pdo_pgsql': +$info = $this->runtime->getExtensionInfo($name); + +if (Preg::isMatch('/^PostgreSQL\(libpq\) Version => (?.*)$/im', $info, $matches)) { +$this->addLibrary($name.'-libpq', $matches['version'], 'libpq for '.$name); +} +break; + +case 'libsodium': +case 'sodium': +if ($this->runtime->hasConstant('SODIUM_LIBRARY_VERSION')) { +$this->addLibrary('libsodium', $this->runtime->getConstant('SODIUM_LIBRARY_VERSION')); +} +break; + +case 'sqlite3': +case 'pdo_sqlite': +$info = $this->runtime->getExtensionInfo($name); + +if (Preg::isMatch('/^SQLite Library => (?.+)$/im', $info, $matches)) { +$this->addLibrary($name.'-sqlite', $matches['version']); +} +break; + +case 'ssh2': +$info = $this->runtime->getExtensionInfo($name); + +if (Preg::isMatch('/^libssh2 version => (?.+)$/im', $info, $matches)) { +$this->addLibrary($name.'-libssh2', $matches['version']); +} +break; + +case 'xsl': +$this->addLibrary('libxslt', $this->runtime->getConstant('LIBXSLT_DOTTED_VERSION'), null, ['xsl']); + +$info = $this->runtime->getExtensionInfo('xsl'); +if (Preg::isMatch('/^libxslt compiled against libxml Version => (?.+)$/im', $info, $matches)) { +$this->addLibrary('libxslt-libxml', $matches['version'], 'libxml version libxslt is compiled against'); +} +break; + +case 'yaml': +$info = $this->runtime->getExtensionInfo('yaml'); + +if (Preg::isMatch('/^LibYAML Version => (?.+)$/im', $info, $matches)) { +$this->addLibrary($name.'-libyaml', $matches['version'], 'libyaml version of yaml'); +} +break; + +case 'zip': +if ($this->runtime->hasConstant('LIBZIP_VERSION', 'ZipArchive')) { +$this->addLibrary($name.'-libzip', $this->runtime->getConstant('LIBZIP_VERSION', 'ZipArchive'), null, ['zip']); +} +break; + +case 'zlib': +if ($this->runtime->hasConstant('ZLIB_VERSION')) { +$this->addLibrary($name, $this->runtime->getConstant('ZLIB_VERSION')); + + +} elseif (Preg::isMatch('/^Linked Version => (?.+)$/im', $this->runtime->getExtensionInfo($name), $matches)) { +$this->addLibrary($name, $matches['version']); +} +break; + +default: +break; +} +} + +$hhvmVersion = $this->hhvmDetector->getVersion(); +if ($hhvmVersion) { +try { +$prettyVersion = $hhvmVersion; +$version = $this->versionParser->normalize($prettyVersion); +} catch (\UnexpectedValueException $e) { +$prettyVersion = Preg::replace('#^([^~+-]+).*$#', '$1', $hhvmVersion); +$version = $this->versionParser->normalize($prettyVersion); +} + +$hhvm = new CompletePackage('hhvm', $version, $prettyVersion); +$hhvm->setDescription('The HHVM Runtime (64bit)'); +$this->addPackage($hhvm); +} +} + + + + +public function addPackage(PackageInterface $package): void +{ +if (!$package instanceof CompletePackage) { +throw new \UnexpectedValueException('Expected CompletePackage but got '.get_class($package)); +} + + +if (isset($this->overrides[$package->getName()])) { +if ($this->overrides[$package->getName()]['version'] === false) { +$this->addDisabledPackage($package); + +return; +} + +$overrider = $this->findPackage($package->getName(), '*'); +if ($package->getVersion() === $overrider->getVersion()) { +$actualText = 'same as actual'; +} else { +$actualText = 'actual: '.$package->getPrettyVersion(); +} +if ($overrider instanceof CompletePackageInterface) { +$overrider->setDescription($overrider->getDescription().', '.$actualText); +} + +return; +} + + +if (isset($this->overrides['php']) && 0 === strpos($package->getName(), 'php-')) { +$overrider = $this->addOverriddenPackage($this->overrides['php'], $package->getPrettyName()); +if ($package->getVersion() === $overrider->getVersion()) { +$actualText = 'same as actual'; +} else { +$actualText = 'actual: '.$package->getPrettyVersion(); +} +$overrider->setDescription($overrider->getDescription().', '.$actualText); + +return; +} + +parent::addPackage($package); +} + + + + +private function addOverriddenPackage(array $override, ?string $name = null): CompletePackage +{ +$version = $this->versionParser->normalize($override['version']); +$package = new CompletePackage($name ?: $override['name'], $version, $override['version']); +$package->setDescription('Package overridden via config.platform'); +$package->setExtra(['config.platform' => true]); +parent::addPackage($package); + +if ($package->getName() === 'php') { +self::$lastSeenPlatformPhp = implode('.', array_slice(explode('.', $package->getVersion()), 0, 3)); +} + +return $package; +} + +private function addDisabledPackage(CompletePackage $package): void +{ +$package->setDescription($package->getDescription().'. Package disabled via config.platform'); +$package->setExtra(['config.platform' => true]); + +$this->disabledPackages[$package->getName()] = $package; +} + + + + +private function addExtension(string $name, string $prettyVersion): void +{ +$extraDescription = null; + +try { +$version = $this->versionParser->normalize($prettyVersion); +} catch (\UnexpectedValueException $e) { +$extraDescription = ' (actual version: '.$prettyVersion.')'; +if (Preg::isMatchStrictGroups('{^(\d+\.\d+\.\d+(?:\.\d+)?)}', $prettyVersion, $match)) { +$prettyVersion = $match[1]; +} else { +$prettyVersion = '0'; +} +$version = $this->versionParser->normalize($prettyVersion); +} + +$packageName = $this->buildPackageName($name); +$ext = new CompletePackage($packageName, $version, $prettyVersion); +$ext->setDescription('The '.$name.' PHP extension'.$extraDescription); + +if ($name === 'uuid') { +$ext->setReplaces([ +'lib-uuid' => new Link('ext-uuid', 'lib-uuid', new Constraint('=', $version), Link::TYPE_REPLACE, $ext->getPrettyVersion()), +]); +} + +$this->addPackage($ext); +} + +private function buildPackageName(string $name): string +{ +return 'ext-' . str_replace(' ', '-', strtolower($name)); +} + + + + + +private function addLibrary(string $name, ?string $prettyVersion, ?string $description = null, array $replaces = [], array $provides = []): void +{ +if (null === $prettyVersion) { +return; +} +try { +$version = $this->versionParser->normalize($prettyVersion); +} catch (\UnexpectedValueException $e) { +return; +} + +if ($description === null) { +$description = 'The '.$name.' library'; +} + +$lib = new CompletePackage('lib-'.$name, $version, $prettyVersion); +$lib->setDescription($description); + +$replaceLinks = []; +foreach ($replaces as $replace) { +$replace = strtolower($replace); +$replaceLinks[$replace] = new Link('lib-'.$name, 'lib-'.$replace, new Constraint('=', $version), Link::TYPE_REPLACE, $lib->getPrettyVersion()); +} +$provideLinks = []; +foreach ($provides as $provide) { +$provide = strtolower($provide); +$provideLinks[$provide] = new Link('lib-'.$name, 'lib-'.$provide, new Constraint('=', $version), Link::TYPE_PROVIDE, $lib->getPrettyVersion()); +} +$lib->setReplaces($replaceLinks); +$lib->setProvides($provideLinks); + +$this->addPackage($lib); +} + + + + +public static function isPlatformPackage(string $name): bool +{ +static $cache = []; + +if (isset($cache[$name])) { +return $cache[$name]; +} + +return $cache[$name] = Preg::isMatch(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name); +} + + + + + + + + + + +public static function getPlatformPhpVersion(): ?string +{ +return self::$lastSeenPlatformPhp; +} + +public function search(string $query, int $mode = 0, ?string $type = null): array +{ + +if ($mode === self::SEARCH_VENDOR) { +return []; +} + +return parent::search($query, $mode, $type); +} +} diff --git a/composer/src/Composer/Repository/RepositoryFactory.php b/composer/src/Composer/Repository/RepositoryFactory.php new file mode 100644 index 000000000..aa92ffd5d --- /dev/null +++ b/composer/src/Composer/Repository/RepositoryFactory.php @@ -0,0 +1,192 @@ + 'composer', 'url' => $repository]; +} elseif ("json" === pathinfo($repository, PATHINFO_EXTENSION)) { +$json = new JsonFile($repository, Factory::createHttpDownloader($io, $config)); +$data = $json->read(); +if (!empty($data['packages']) || !empty($data['includes']) || !empty($data['provider-includes'])) { +$repoConfig = ['type' => 'composer', 'url' => 'file://' . strtr(realpath($repository), '\\', '/')]; +} elseif ($allowFilesystem) { +$repoConfig = ['type' => 'filesystem', 'json' => $json]; +} else { +throw new \InvalidArgumentException("Invalid repository URL ($repository) given. This file does not contain a valid composer repository."); +} +} elseif (strpos($repository, '{') === 0) { + +$repoConfig = JsonFile::parseJson($repository); +} else { +throw new \InvalidArgumentException("Invalid repository url ($repository) given. Has to be a .json file, an http url or a JSON object."); +} + +return $repoConfig; +} + +public static function fromString(IOInterface $io, Config $config, string $repository, bool $allowFilesystem = false, ?RepositoryManager $rm = null): RepositoryInterface +{ +$repoConfig = static::configFromString($io, $config, $repository, $allowFilesystem); + +return static::createRepo($io, $config, $repoConfig, $rm); +} + + + + +public static function createRepo(IOInterface $io, Config $config, array $repoConfig, ?RepositoryManager $rm = null): RepositoryInterface +{ +if (!$rm) { +@trigger_error('Not passing a repository manager when calling createRepo is deprecated since Composer 2.3.6', E_USER_DEPRECATED); +$rm = static::manager($io, $config); +} +$repos = self::createRepos($rm, [$repoConfig]); + +return reset($repos); +} + + + + +public static function defaultRepos(?IOInterface $io = null, ?Config $config = null, ?RepositoryManager $rm = null): array +{ +if (null === $rm) { +@trigger_error('Not passing a repository manager when calling defaultRepos is deprecated since Composer 2.3.6, use defaultReposWithDefaultManager() instead if you cannot get a manager.', E_USER_DEPRECATED); +} + +if (null === $config) { +$config = Factory::createConfig($io); +} +if (null !== $io) { +$io->loadConfiguration($config); +} +if (null === $rm) { +if (null === $io) { +throw new \InvalidArgumentException('This function requires either an IOInterface or a RepositoryManager'); +} +$rm = static::manager($io, $config, Factory::createHttpDownloader($io, $config)); +} + +return self::createRepos($rm, $config->getRepositories()); +} + + + + + +public static function manager(IOInterface $io, Config $config, ?HttpDownloader $httpDownloader = null, ?EventDispatcher $eventDispatcher = null, ?ProcessExecutor $process = null): RepositoryManager +{ +if ($httpDownloader === null) { +$httpDownloader = Factory::createHttpDownloader($io, $config); +} +if ($process === null) { +$process = new ProcessExecutor($io); +$process->enableAsync(); +} + +$rm = new RepositoryManager($io, $config, $httpDownloader, $eventDispatcher, $process); +$rm->setRepositoryClass('composer', 'Composer\Repository\ComposerRepository'); +$rm->setRepositoryClass('vcs', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository'); +$rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository'); +$rm->setRepositoryClass('git', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('bitbucket', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('git-bitbucket', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('github', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('gitlab', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('svn', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('fossil', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('perforce', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('hg', 'Composer\Repository\VcsRepository'); +$rm->setRepositoryClass('artifact', 'Composer\Repository\ArtifactRepository'); +$rm->setRepositoryClass('path', 'Composer\Repository\PathRepository'); + +return $rm; +} + + + + +public static function defaultReposWithDefaultManager(IOInterface $io): array +{ +$manager = RepositoryFactory::manager($io, $config = Factory::createConfig($io)); +$io->loadConfiguration($config); + +return RepositoryFactory::defaultRepos($io, $config, $manager); +} + + + + + + +private static function createRepos(RepositoryManager $rm, array $repoConfigs): array +{ +$repos = []; + +foreach ($repoConfigs as $index => $repo) { +if (is_string($repo)) { +throw new \UnexpectedValueException('"repositories" should be an array of repository definitions, only a single repository was given'); +} +if (!is_array($repo)) { +throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') should be an array, '.gettype($repo).' given'); +} +if (!isset($repo['type'])) { +throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') must have a type defined'); +} + +$name = self::generateRepositoryName($index, $repo, $repos); +if ($repo['type'] === 'filesystem') { +$repos[$name] = new FilesystemRepository($repo['json']); +} else { +$repos[$name] = $rm->createRepository($repo['type'], $repo, (string) $index); +} +} + +return $repos; +} + + + + + + +public static function generateRepositoryName($index, array $repo, array $existingRepos): string +{ +$name = is_int($index) && isset($repo['url']) ? Preg::replace('{^https?://}i', '', $repo['url']) : (string) $index; +while (isset($existingRepos[$name])) { +$name .= '2'; +} + +return $name; +} +} diff --git a/composer/src/Composer/Repository/RepositoryInterface.php b/composer/src/Composer/Repository/RepositoryInterface.php new file mode 100644 index 000000000..4df95e7d9 --- /dev/null +++ b/composer/src/Composer/Repository/RepositoryInterface.php @@ -0,0 +1,118 @@ +io = $io; +$this->config = $config; +$this->httpDownloader = $httpDownloader; +$this->eventDispatcher = $eventDispatcher; +$this->process = $process ?? new ProcessExecutor($io); +} + + + + + + + +public function findPackage(string $name, $constraint): ?PackageInterface +{ +foreach ($this->repositories as $repository) { + +if ($package = $repository->findPackage($name, $constraint)) { +return $package; +} +} + +return null; +} + + + + + + + + + +public function findPackages(string $name, $constraint): array +{ +$packages = []; + +foreach ($this->getRepositories() as $repository) { +$packages = array_merge($packages, $repository->findPackages($name, $constraint)); +} + +return $packages; +} + + + + + + +public function addRepository(RepositoryInterface $repository): void +{ +$this->repositories[] = $repository; +} + + + + + + + + +public function prependRepository(RepositoryInterface $repository): void +{ +array_unshift($this->repositories, $repository); +} + + + + + + + + + +public function createRepository(string $type, array $config, ?string $name = null): RepositoryInterface +{ +if (!isset($this->repositoryClasses[$type])) { +throw new \InvalidArgumentException('Repository type is not registered: '.$type); +} + +if (isset($config['packagist']) && false === $config['packagist']) { +$this->io->writeError('Repository "'.$name.'" ('.json_encode($config).') has a packagist key which should be in its own repository definition'); +} + +$class = $this->repositoryClasses[$type]; + +if (isset($config['only']) || isset($config['exclude']) || isset($config['canonical'])) { +$filterConfig = $config; +unset($config['only'], $config['exclude'], $config['canonical']); +} + +$repository = new $class($config, $this->io, $this->config, $this->httpDownloader, $this->eventDispatcher, $this->process); + +if (isset($filterConfig)) { +$repository = new FilterRepository($repository, $filterConfig); +} + +return $repository; +} + + + + + + + +public function setRepositoryClass(string $type, $class): void +{ +$this->repositoryClasses[$type] = $class; +} + + + + + + +public function getRepositories(): array +{ +return $this->repositories; +} + + + + + + +public function setLocalRepository(InstalledRepositoryInterface $repository): void +{ +$this->localRepository = $repository; +} + + + + +public function getLocalRepository(): InstalledRepositoryInterface +{ +return $this->localRepository; +} +} diff --git a/composer/src/Composer/Repository/RepositorySecurityException.php b/composer/src/Composer/Repository/RepositorySecurityException.php new file mode 100644 index 000000000..efd1518fa --- /dev/null +++ b/composer/src/Composer/Repository/RepositorySecurityException.php @@ -0,0 +1,22 @@ +rootAliases = self::getRootAliasesPerPackage($rootAliases); +$this->rootReferences = $rootReferences; + +$this->acceptableStabilities = []; +foreach (BasePackage::$stabilities as $stability => $value) { +if ($value <= BasePackage::$stabilities[$minimumStability]) { +$this->acceptableStabilities[$stability] = $value; +} +} +$this->stabilityFlags = $stabilityFlags; +$this->rootRequires = $rootRequires; +foreach ($rootRequires as $name => $constraint) { +if (PlatformRepository::isPlatformPackage($name)) { +unset($this->rootRequires[$name]); +} +} + +$this->temporaryConstraints = $temporaryConstraints; +} + +public function allowInstalledRepositories(bool $allow = true): void +{ +$this->allowInstalledRepositories = $allow; +} + + + + + +public function getRootRequires(): array +{ +return $this->rootRequires; +} + + + + +public function getTemporaryConstraints(): array +{ +return $this->temporaryConstraints; +} + + + + + + + + + +public function addRepository(RepositoryInterface $repo): void +{ +if ($this->locked) { +throw new \RuntimeException("Pool has already been created from this repository set, it cannot be modified anymore."); +} + +if ($repo instanceof CompositeRepository) { +$repos = $repo->getRepositories(); +} else { +$repos = [$repo]; +} + +foreach ($repos as $repo) { +$this->repositories[] = $repo; +} +} + + + + + + + + + +public function findPackages(string $name, ?ConstraintInterface $constraint = null, int $flags = 0): array +{ +$ignoreStability = ($flags & self::ALLOW_UNACCEPTABLE_STABILITIES) !== 0; +$loadFromAllRepos = ($flags & self::ALLOW_SHADOWED_REPOSITORIES) !== 0; + +$packages = []; +if ($loadFromAllRepos) { +foreach ($this->repositories as $repository) { +$packages[] = $repository->findPackages($name, $constraint) ?: []; +} +} else { +foreach ($this->repositories as $repository) { +$result = $repository->loadPackages([$name => $constraint], $ignoreStability ? BasePackage::$stabilities : $this->acceptableStabilities, $ignoreStability ? [] : $this->stabilityFlags); + +$packages[] = $result['packages']; +foreach ($result['namesFound'] as $nameFound) { + +if ($name === $nameFound) { +break 2; +} +} +} +} + +$candidates = $packages ? array_merge(...$packages) : []; + + +if ($ignoreStability || !$loadFromAllRepos) { +return $candidates; +} + +$result = []; +foreach ($candidates as $candidate) { +if ($this->isPackageAcceptable($candidate->getNames(), $candidate->getStability())) { +$result[] = $candidate; +} +} + +return $result; +} + + + + + +public function getSecurityAdvisories(array $packageNames, bool $allowPartialAdvisories = false): array +{ +$map = []; +foreach ($packageNames as $name) { +$map[$name] = new MatchAllConstraint(); +} + +return $this->getSecurityAdvisoriesForConstraints($map, $allowPartialAdvisories); +} + + + + + +public function getMatchingSecurityAdvisories(array $packages, bool $allowPartialAdvisories = false): array +{ +$map = []; +foreach ($packages as $package) { +$map[$package->getName()] = new Constraint('=', $package->getVersion()); +} + +return $this->getSecurityAdvisoriesForConstraints($map, $allowPartialAdvisories); +} + + + + + +private function getSecurityAdvisoriesForConstraints(array $packageConstraintMap, bool $allowPartialAdvisories): array +{ +$advisories = []; +foreach ($this->repositories as $repository) { +if (!$repository instanceof AdvisoryProviderInterface || !$repository->hasSecurityAdvisories()) { +continue; +} + +$result = $repository->getSecurityAdvisories($packageConstraintMap, $allowPartialAdvisories); +foreach ($result['namesFound'] as $nameFound) { +unset($packageConstraintMap[$nameFound]); +} + +$advisories = array_merge($advisories, $result['advisories']); +} + +return $advisories; +} + + + + + +public function getProviders(string $packageName): array +{ +$providers = []; +foreach ($this->repositories as $repository) { +if ($repoProviders = $repository->getProviders($packageName)) { +$providers = array_merge($providers, $repoProviders); +} +} + +return $providers; +} + + + + + + + +public function isPackageAcceptable(array $names, string $stability): bool +{ +return StabilityFilter::isPackageAcceptable($this->acceptableStabilities, $this->stabilityFlags, $names, $stability); +} + + + + +public function createPool(Request $request, IOInterface $io, ?EventDispatcher $eventDispatcher = null, ?PoolOptimizer $poolOptimizer = null): Pool +{ +$poolBuilder = new PoolBuilder($this->acceptableStabilities, $this->stabilityFlags, $this->rootAliases, $this->rootReferences, $io, $eventDispatcher, $poolOptimizer, $this->temporaryConstraints); + +foreach ($this->repositories as $repo) { +if (($repo instanceof InstalledRepositoryInterface || $repo instanceof InstalledRepository) && !$this->allowInstalledRepositories) { +throw new \LogicException('The pool can not accept packages from an installed repository'); +} +} + +$this->locked = true; + +return $poolBuilder->buildPool($this->repositories, $request); +} + + + + +public function createPoolWithAllPackages(): Pool +{ +foreach ($this->repositories as $repo) { +if (($repo instanceof InstalledRepositoryInterface || $repo instanceof InstalledRepository) && !$this->allowInstalledRepositories) { +throw new \LogicException('The pool can not accept packages from an installed repository'); +} +} + +$this->locked = true; + +$packages = []; +foreach ($this->repositories as $repository) { +foreach ($repository->getPackages() as $package) { +$packages[] = $package; + +if (isset($this->rootAliases[$package->getName()][$package->getVersion()])) { +$alias = $this->rootAliases[$package->getName()][$package->getVersion()]; +while ($package instanceof AliasPackage) { +$package = $package->getAliasOf(); +} +if ($package instanceof CompletePackage) { +$aliasPackage = new CompleteAliasPackage($package, $alias['alias_normalized'], $alias['alias']); +} else { +$aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']); +} +$aliasPackage->setRootPackageAlias(true); +$packages[] = $aliasPackage; +} +} +} + +return new Pool($packages); +} + +public function createPoolForPackage(string $packageName, ?LockArrayRepository $lockedRepo = null): Pool +{ + +return $this->createPoolForPackages([$packageName], $lockedRepo); +} + + + + +public function createPoolForPackages(array $packageNames, ?LockArrayRepository $lockedRepo = null): Pool +{ +$request = new Request($lockedRepo); + +foreach ($packageNames as $packageName) { +if (PlatformRepository::isPlatformPackage($packageName)) { +throw new \LogicException('createPoolForPackage(s) can not be used for platform packages, as they are never loaded by the PoolBuilder which expects them to be fixed. Use createPoolWithAllPackages or pass in a proper request with the platform packages you need fixed in it.'); +} + +$request->requireName($packageName); +} + +return $this->createPool($request, new NullIO()); +} + + + + + + + +private static function getRootAliasesPerPackage(array $aliases): array +{ +$normalizedAliases = []; + +foreach ($aliases as $alias) { +$normalizedAliases[$alias['package']][$alias['version']] = [ +'alias' => $alias['alias'], +'alias_normalized' => $alias['alias_normalized'], +]; +} + +return $normalizedAliases; +} +} diff --git a/composer/src/Composer/Repository/RepositoryUtils.php b/composer/src/Composer/Repository/RepositoryUtils.php new file mode 100644 index 000000000..161cd77b4 --- /dev/null +++ b/composer/src/Composer/Repository/RepositoryUtils.php @@ -0,0 +1,78 @@ +getRequires(); + +foreach ($packages as $candidate) { +foreach ($candidate->getNames() as $name) { +if (isset($requires[$name])) { +if (!in_array($candidate, $bucket, true)) { +$bucket[] = $candidate; +$bucket = self::filterRequiredPackages($packages, $candidate, $bucket); +} +break; +} +} +} + +return $bucket; +} + + + + + + +public static function flattenRepositories(RepositoryInterface $repo, bool $unwrapFilterRepos = true): array +{ + +if ($unwrapFilterRepos && $repo instanceof FilterRepository) { +$repo = $repo->getRepository(); +} + +if (!$repo instanceof CompositeRepository) { +return [$repo]; +} + +$repos = []; +foreach ($repo->getRepositories() as $r) { +foreach (self::flattenRepositories($r, $unwrapFilterRepos) as $r2) { +$repos[] = $r2; +} +} + +return $repos; +} +} diff --git a/composer/src/Composer/Repository/RootPackageRepository.php b/composer/src/Composer/Repository/RootPackageRepository.php new file mode 100644 index 000000000..477020459 --- /dev/null +++ b/composer/src/Composer/Repository/RootPackageRepository.php @@ -0,0 +1,35 @@ +checkFossil(); + + +$this->config->prohibitUrlByConfig($this->url, $this->io); + + + +if (Filesystem::isLocalPath($this->url) && is_dir($this->url)) { +$this->checkoutDir = $this->url; +} else { +if (!Cache::isUsable($this->config->get('cache-repo-dir')) || !Cache::isUsable($this->config->get('cache-vcs-dir'))) { +throw new \RuntimeException('FossilDriver requires a usable cache directory, and it looks like you set it to be disabled'); +} + +$localName = Preg::replace('{[^a-z0-9]}i', '-', $this->url); +$this->repoFile = $this->config->get('cache-repo-dir') . '/' . $localName . '.fossil'; +$this->checkoutDir = $this->config->get('cache-vcs-dir') . '/' . $localName . '/'; + +$this->updateLocalRepo(); +} + +$this->getTags(); +$this->getBranches(); +} + + + + +protected function checkFossil(): void +{ +if (0 !== $this->process->execute('fossil version', $ignoredOutput)) { +throw new \RuntimeException("fossil was not found, check that it is installed and in your PATH env.\n\n" . $this->process->getErrorOutput()); +} +} + + + + +protected function updateLocalRepo(): void +{ +$fs = new Filesystem(); +$fs->ensureDirectoryExists($this->checkoutDir); + +if (!is_writable(dirname($this->checkoutDir))) { +throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$this->checkoutDir.'" directory is not writable by the current user.'); +} + + +if (is_file($this->repoFile) && is_dir($this->checkoutDir) && 0 === $this->process->execute('fossil info', $output, $this->checkoutDir)) { +if (0 !== $this->process->execute('fossil pull', $output, $this->checkoutDir)) { +$this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); +} +} else { + +$fs->removeDirectory($this->checkoutDir); +$fs->remove($this->repoFile); + +$fs->ensureDirectoryExists($this->checkoutDir); + +if (0 !== $this->process->execute(sprintf('fossil clone -- %s %s', ProcessExecutor::escape($this->url), ProcessExecutor::escape($this->repoFile)), $output)) { +$output = $this->process->getErrorOutput(); + +throw new \RuntimeException('Failed to clone '.$this->url.' to repository ' . $this->repoFile . "\n\n" .$output); +} + +if (0 !== $this->process->execute(sprintf('fossil open --nested -- %s', ProcessExecutor::escape($this->repoFile)), $output, $this->checkoutDir)) { +$output = $this->process->getErrorOutput(); + +throw new \RuntimeException('Failed to open repository '.$this->repoFile.' in ' . $this->checkoutDir . "\n\n" .$output); +} +} +} + + + + +public function getRootIdentifier(): string +{ +if (null === $this->rootIdentifier) { +$this->rootIdentifier = 'trunk'; +} + +return $this->rootIdentifier; +} + + + + +public function getUrl(): string +{ +return $this->url; +} + + + + +public function getSource(string $identifier): array +{ +return ['type' => 'fossil', 'url' => $this->getUrl(), 'reference' => $identifier]; +} + + + + +public function getDist(string $identifier): ?array +{ +return null; +} + + + + +public function getFileContent(string $file, string $identifier): ?string +{ +$command = sprintf('fossil cat -r %s -- %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); +$this->process->execute($command, $content, $this->checkoutDir); + +if (!trim($content)) { +return null; +} + +return $content; +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +$this->process->execute('fossil finfo -b -n 1 composer.json', $output, $this->checkoutDir); +[, $date] = explode(' ', trim($output), 3); + +return new \DateTimeImmutable($date, new \DateTimeZone('UTC')); +} + + + + +public function getTags(): array +{ +if (null === $this->tags) { +$tags = []; + +$this->process->execute('fossil tag list', $output, $this->checkoutDir); +foreach ($this->process->splitLines($output) as $tag) { +$tags[$tag] = $tag; +} + +$this->tags = $tags; +} + +return $this->tags; +} + + + + +public function getBranches(): array +{ +if (null === $this->branches) { +$branches = []; + +$this->process->execute('fossil branch list', $output, $this->checkoutDir); +foreach ($this->process->splitLines($output) as $branch) { +$branch = trim(Preg::replace('/^\*/', '', trim($branch))); +$branches[$branch] = $branch; +} + +$this->branches = $branches; +} + +return $this->branches; +} + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +if (Preg::isMatch('#(^(?:https?|ssh)://(?:[^@]@)?(?:chiselapp\.com|fossil\.))#i', $url)) { +return true; +} + +if (Preg::isMatch('!/fossil/|\.fossil!', $url)) { +return true; +} + + +if (Filesystem::isLocalPath($url)) { +$url = Filesystem::getPlatformPath($url); +if (!is_dir($url)) { +return false; +} + +$process = new ProcessExecutor($io); + +if ($process->execute('fossil info', $output, $url) === 0) { +return true; +} +} + +return false; +} +} diff --git a/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php b/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php new file mode 100644 index 000000000..539e9d020 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php @@ -0,0 +1,519 @@ +url, $match)) { +throw new \InvalidArgumentException(sprintf('The Bitbucket repository URL %s is invalid. It must be the HTTPS URL of a Bitbucket repository.', $this->url)); +} + +$this->owner = $match[1]; +$this->repository = $match[2]; +$this->originUrl = 'bitbucket.org'; +$this->cache = new Cache( +$this->io, +implode('/', [ +$this->config->get('cache-repo-dir'), +$this->originUrl, +$this->owner, +$this->repository, +]) +); +$this->cache->setReadOnly($this->config->get('cache-read-only')); +} + + + + +public function getUrl(): string +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getUrl(); +} + +return $this->cloneHttpsUrl; +} + + + + + + + +protected function getRepoData(): bool +{ +$resource = sprintf( +'https://api.bitbucket.org/2.0/repositories/%s/%s?%s', +$this->owner, +$this->repository, +http_build_query( +['fields' => '-project,-owner'], +'', +'&' +) +); + +$repoData = $this->fetchWithOAuthCredentials($resource, true)->decodeJson(); +if ($this->fallbackDriver) { +return false; +} +$this->parseCloneUrls($repoData['links']['clone']); + +$this->hasIssues = !empty($repoData['has_issues']); +$this->branchesUrl = $repoData['links']['branches']['href']; +$this->tagsUrl = $repoData['links']['tags']['href']; +$this->homeUrl = $repoData['links']['html']['href']; +$this->website = $repoData['website']; +$this->vcsType = $repoData['scm']; + +$this->repoData = $repoData; + +return true; +} + + + + +public function getComposerInformation(string $identifier): ?array +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getComposerInformation($identifier); +} + +if (!isset($this->infoCache[$identifier])) { +if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { +$composer = JsonFile::parseJson($res); +} else { +$composer = $this->getBaseComposerInformation($identifier); + +if ($this->shouldCache($identifier)) { +$this->cache->write($identifier, json_encode($composer)); +} +} + +if ($composer !== null) { + +if (!isset($composer['support']['source'])) { +$label = array_search( +$identifier, +$this->getTags() +) ?: array_search( +$identifier, +$this->getBranches() +) ?: $identifier; + +if (array_key_exists($label, $tags = $this->getTags())) { +$hash = $tags[$label]; +} elseif (array_key_exists($label, $branches = $this->getBranches())) { +$hash = $branches[$label]; +} + +if (!isset($hash)) { +$composer['support']['source'] = sprintf( +'https://%s/%s/%s/src', +$this->originUrl, +$this->owner, +$this->repository +); +} else { +$composer['support']['source'] = sprintf( +'https://%s/%s/%s/src/%s/?at=%s', +$this->originUrl, +$this->owner, +$this->repository, +$hash, +$label +); +} +} +if (!isset($composer['support']['issues']) && $this->hasIssues) { +$composer['support']['issues'] = sprintf( +'https://%s/%s/%s/issues', +$this->originUrl, +$this->owner, +$this->repository +); +} +if (!isset($composer['homepage'])) { +$composer['homepage'] = empty($this->website) ? $this->homeUrl : $this->website; +} +} + +$this->infoCache[$identifier] = $composer; +} + +return $this->infoCache[$identifier]; +} + + + + +public function getFileContent(string $file, string $identifier): ?string +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getFileContent($file, $identifier); +} + +if (strpos($identifier, '/') !== false) { +$branches = $this->getBranches(); +if (isset($branches[$identifier])) { +$identifier = $branches[$identifier]; +} +} + +$resource = sprintf( +'https://api.bitbucket.org/2.0/repositories/%s/%s/src/%s/%s', +$this->owner, +$this->repository, +$identifier, +$file +); + +return $this->fetchWithOAuthCredentials($resource)->getBody(); +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getChangeDate($identifier); +} + +if (strpos($identifier, '/') !== false) { +$branches = $this->getBranches(); +if (isset($branches[$identifier])) { +$identifier = $branches[$identifier]; +} +} + +$resource = sprintf( +'https://api.bitbucket.org/2.0/repositories/%s/%s/commit/%s?fields=date', +$this->owner, +$this->repository, +$identifier +); +$commit = $this->fetchWithOAuthCredentials($resource)->decodeJson(); + +return new \DateTimeImmutable($commit['date']); +} + + + + +public function getSource(string $identifier): array +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getSource($identifier); +} + +return ['type' => $this->vcsType, 'url' => $this->getUrl(), 'reference' => $identifier]; +} + + + + +public function getDist(string $identifier): ?array +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getDist($identifier); +} + +$url = sprintf( +'https://bitbucket.org/%s/%s/get/%s.zip', +$this->owner, +$this->repository, +$identifier +); + +return ['type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => '']; +} + + + + +public function getTags(): array +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getTags(); +} + +if (null === $this->tags) { +$tags = []; +$resource = sprintf( +'%s?%s', +$this->tagsUrl, +http_build_query( +[ +'pagelen' => 100, +'fields' => 'values.name,values.target.hash,next', +'sort' => '-target.date', +], +'', +'&' +) +); +$hasNext = true; +while ($hasNext) { +$tagsData = $this->fetchWithOAuthCredentials($resource)->decodeJson(); +foreach ($tagsData['values'] as $data) { +$tags[$data['name']] = $data['target']['hash']; +} +if (empty($tagsData['next'])) { +$hasNext = false; +} else { +$resource = $tagsData['next']; +} +} + +$this->tags = $tags; +} + +return $this->tags; +} + + + + +public function getBranches(): array +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getBranches(); +} + +if (null === $this->branches) { +$branches = []; +$resource = sprintf( +'%s?%s', +$this->branchesUrl, +http_build_query( +[ +'pagelen' => 100, +'fields' => 'values.name,values.target.hash,values.heads,next', +'sort' => '-target.date', +], +'', +'&' +) +); +$hasNext = true; +while ($hasNext) { +$branchData = $this->fetchWithOAuthCredentials($resource)->decodeJson(); +foreach ($branchData['values'] as $data) { +$branches[$data['name']] = $data['target']['hash']; +} +if (empty($branchData['next'])) { +$hasNext = false; +} else { +$resource = $branchData['next']; +} +} + +$this->branches = $branches; +} + +return $this->branches; +} + + + + + + + + + + +protected function fetchWithOAuthCredentials(string $url, bool $fetchingRepoData = false): Response +{ +try { +return parent::getContents($url); +} catch (TransportException $e) { +$bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process, $this->httpDownloader); + +if (in_array($e->getCode(), [403, 404], true) || (401 === $e->getCode() && strpos($e->getMessage(), 'Could not authenticate against') === 0)) { +if (!$this->io->hasAuthentication($this->originUrl) +&& $bitbucketUtil->authorizeOAuth($this->originUrl) +) { +return parent::getContents($url); +} + +if (!$this->io->isInteractive() && $fetchingRepoData) { +$this->attemptCloneFallback(); + +return new Response(['url' => 'dummy'], 200, [], 'null'); +} +} + +throw $e; +} +} + + + + +protected function generateSshUrl(): string +{ +return 'git@' . $this->originUrl . ':' . $this->owner.'/'.$this->repository.'.git'; +} + + + + + + + +protected function attemptCloneFallback(): bool +{ +try { +$this->setupFallbackDriver($this->generateSshUrl()); + +return true; +} catch (\RuntimeException $e) { +$this->fallbackDriver = null; + +$this->io->writeError( +'Failed to clone the ' . $this->generateSshUrl() . ' repository, try running in interactive mode' +. ' so that you can enter your Bitbucket OAuth consumer credentials' +); +throw $e; +} +} + +protected function setupFallbackDriver(string $url): void +{ +$this->fallbackDriver = new GitDriver( +['url' => $url], +$this->io, +$this->config, +$this->httpDownloader, +$this->process +); +$this->fallbackDriver->initialize(); +} + + + + +protected function parseCloneUrls(array $cloneLinks): void +{ +foreach ($cloneLinks as $cloneLink) { +if ($cloneLink['name'] === 'https') { + + +$this->cloneHttpsUrl = Preg::replace('/https:\/\/([^@]+@)?/', 'https://', $cloneLink['href']); +} +} +} + + + + +public function getRootIdentifier(): string +{ +if ($this->fallbackDriver) { +return $this->fallbackDriver->getRootIdentifier(); +} + +if (null === $this->rootIdentifier) { +if (!$this->getRepoData()) { +if (!$this->fallbackDriver) { +throw new \LogicException('A fallback driver should be setup if getRepoData returns false'); +} + +return $this->fallbackDriver->getRootIdentifier(); +} + +if ($this->vcsType !== 'git') { +throw new \RuntimeException( +$this->url.' does not appear to be a git repository, use '. +$this->cloneHttpsUrl.' but remember that Bitbucket no longer supports the mercurial repositories. '. +'https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket' +); +} + +$this->rootIdentifier = $this->repoData['mainbranch']['name'] ?? 'master'; +} + +return $this->rootIdentifier; +} + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +if (!Preg::isMatch('#^https?://bitbucket\.org/([^/]+)/([^/]+?)(\.git|/?)?$#i', $url)) { +return false; +} + +if (!extension_loaded('openssl')) { +$io->writeError('Skipping Bitbucket git driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); + +return false; +} + +return true; +} +} diff --git a/composer/src/Composer/Repository/Vcs/GitDriver.php b/composer/src/Composer/Repository/Vcs/GitDriver.php new file mode 100644 index 000000000..676d86ae7 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/GitDriver.php @@ -0,0 +1,258 @@ +url)) { +$this->url = Preg::replace('{[\\/]\.git/?$}', '', $this->url); +if (!is_dir($this->url)) { +throw new \RuntimeException('Failed to read package information from '.$this->url.' as the path does not exist'); +} +$this->repoDir = $this->url; +$cacheUrl = realpath($this->url); +} else { +if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { +throw new \RuntimeException('GitDriver requires a usable cache directory, and it looks like you set it to be disabled'); +} + +$this->repoDir = $this->config->get('cache-vcs-dir') . '/' . Preg::replace('{[^a-z0-9.]}i', '-', $this->url) . '/'; + +GitUtil::cleanEnv(); + +$fs = new Filesystem(); +$fs->ensureDirectoryExists(dirname($this->repoDir)); + +if (!is_writable(dirname($this->repoDir))) { +throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.dirname($this->repoDir).'" directory is not writable by the current user.'); +} + +if (Preg::isMatch('{^ssh://[^@]+@[^:]+:[^0-9]+}', $this->url)) { +throw new \InvalidArgumentException('The source URL '.$this->url.' is invalid, ssh URLs should have a port number after ":".'."\n".'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); +} + +$gitUtil = new GitUtil($this->io, $this->config, $this->process, $fs); +if (!$gitUtil->syncMirror($this->url, $this->repoDir)) { +if (!is_dir($this->repoDir)) { +throw new \RuntimeException('Failed to clone '.$this->url.' to read package information from it'); +} +$this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated'); +} + +$cacheUrl = $this->url; +} + +$this->getTags(); +$this->getBranches(); + +$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', Url::sanitize($cacheUrl))); +$this->cache->setReadOnly($this->config->get('cache-read-only')); +} + + + + +public function getRootIdentifier(): string +{ +if (null === $this->rootIdentifier) { +$this->rootIdentifier = 'master'; + +$gitUtil = new GitUtil($this->io, $this->config, $this->process, new Filesystem()); +if (!Filesystem::isLocalPath($this->url)) { +$defaultBranch = $gitUtil->getMirrorDefaultBranch($this->url, $this->repoDir, false); +if ($defaultBranch !== null) { +return $this->rootIdentifier = $defaultBranch; +} +} + + +$this->process->execute('git branch --no-color', $output, $this->repoDir); +$branches = $this->process->splitLines($output); +if (!in_array('* master', $branches)) { +foreach ($branches as $branch) { +if ($branch && Preg::isMatchStrictGroups('{^\* +(\S+)}', $branch, $match)) { +$this->rootIdentifier = $match[1]; +break; +} +} +} +} + +return $this->rootIdentifier; +} + + + + +public function getUrl(): string +{ +return $this->url; +} + + + + +public function getSource(string $identifier): array +{ +return ['type' => 'git', 'url' => $this->getUrl(), 'reference' => $identifier]; +} + + + + +public function getDist(string $identifier): ?array +{ +return null; +} + + + + +public function getFileContent(string $file, string $identifier): ?string +{ +if (isset($identifier[0]) && $identifier[0] === '-') { +throw new \RuntimeException('Invalid git identifier detected. Identifier must not start with a -, given: ' . $identifier); +} + +$resource = sprintf('%s:%s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); +$this->process->execute(sprintf('git show %s', $resource), $content, $this->repoDir); + +if (!trim($content)) { +return null; +} + +return $content; +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +$this->process->execute(sprintf( +'git -c log.showSignature=false log -1 --format=%%at %s', +ProcessExecutor::escape($identifier) +), $output, $this->repoDir); + +return new \DateTimeImmutable('@'.trim($output), new \DateTimeZone('UTC')); +} + + + + +public function getTags(): array +{ +if (null === $this->tags) { +$this->tags = []; + +$this->process->execute('git show-ref --tags --dereference', $output, $this->repoDir); +foreach ($output = $this->process->splitLines($output) as $tag) { +if ($tag && Preg::isMatch('{^([a-f0-9]{40}) refs/tags/(\S+?)(\^\{\})?$}', $tag, $match)) { +$this->tags[$match[2]] = (string) $match[1]; +} +} +} + +return $this->tags; +} + + + + +public function getBranches(): array +{ +if (null === $this->branches) { +$branches = []; + +$this->process->execute('git branch --no-color --no-abbrev -v', $output, $this->repoDir); +foreach ($this->process->splitLines($output) as $branch) { +if ($branch && !Preg::isMatch('{^ *[^/]+/HEAD }', $branch)) { +if (Preg::isMatchStrictGroups('{^(?:\* )? *(\S+) *([a-f0-9]+)(?: .*)?$}', $branch, $match) && $match[1][0] !== '-') { +$branches[$match[1]] = $match[2]; +} +} +} + +$this->branches = $branches; +} + +return $this->branches; +} + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +if (Preg::isMatch('#(^git://|\.git/?$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) { +return true; +} + + +if (Filesystem::isLocalPath($url)) { +$url = Filesystem::getPlatformPath($url); +if (!is_dir($url)) { +return false; +} + +$process = new ProcessExecutor($io); + +if ($process->execute('git tag', $output, $url) === 0) { +return true; +} +} + +if (!$deep) { +return false; +} + +$gitUtil = new GitUtil($io, $config, new ProcessExecutor($io), new Filesystem()); +GitUtil::cleanEnv(); + +try { +$gitUtil->runCommand(static function ($url): string { +return 'git ls-remote --heads -- ' . ProcessExecutor::escape($url); +}, $url, sys_get_temp_dir()); +} catch (\RuntimeException $e) { +return false; +} + +return true; +} +} diff --git a/composer/src/Composer/Repository/Vcs/GitHubDriver.php b/composer/src/Composer/Repository/Vcs/GitHubDriver.php new file mode 100644 index 000000000..d094f4705 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/GitHubDriver.php @@ -0,0 +1,621 @@ +url, $match)) { +throw new \InvalidArgumentException(sprintf('The GitHub repository URL %s is invalid.', $this->url)); +} + +assert(is_string($match[3])); +assert(is_string($match[4])); +$this->owner = $match[3]; +$this->repository = $match[4]; +$this->originUrl = strtolower($match[1] ?? (string) $match[2]); +if ($this->originUrl === 'www.github.com') { +$this->originUrl = 'github.com'; +} +$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->owner.'/'.$this->repository); +$this->cache->setReadOnly($this->config->get('cache-read-only')); + +if ($this->config->get('use-github-api') === false || (isset($this->repoConfig['no-api']) && $this->repoConfig['no-api'])) { +$this->setupGitDriver($this->url); + +return; +} + +$this->fetchRootIdentifier(); +} + +public function getRepositoryUrl(): string +{ +return 'https://'.$this->originUrl.'/'.$this->owner.'/'.$this->repository; +} + + + + +public function getRootIdentifier(): string +{ +if ($this->gitDriver) { +return $this->gitDriver->getRootIdentifier(); +} + +return $this->rootIdentifier; +} + + + + +public function getUrl(): string +{ +if ($this->gitDriver) { +return $this->gitDriver->getUrl(); +} + +return 'https://' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; +} + +protected function getApiUrl(): string +{ +if ('github.com' === $this->originUrl) { +$apiUrl = 'api.github.com'; +} else { +$apiUrl = $this->originUrl . '/api/v3'; +} + +return 'https://' . $apiUrl; +} + + + + +public function getSource(string $identifier): array +{ +if ($this->gitDriver) { +return $this->gitDriver->getSource($identifier); +} +if ($this->isPrivate) { + + +$url = $this->generateSshUrl(); +} else { +$url = $this->getUrl(); +} + +return ['type' => 'git', 'url' => $url, 'reference' => $identifier]; +} + + + + +public function getDist(string $identifier): ?array +{ +$url = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/zipball/'.$identifier; + +return ['type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => '']; +} + + + + +public function getComposerInformation(string $identifier): ?array +{ +if ($this->gitDriver) { +return $this->gitDriver->getComposerInformation($identifier); +} + +if (!isset($this->infoCache[$identifier])) { +if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { +$composer = JsonFile::parseJson($res); +} else { +$composer = $this->getBaseComposerInformation($identifier); + +if ($this->shouldCache($identifier)) { +$this->cache->write($identifier, json_encode($composer)); +} +} + +if ($composer !== null) { + +if (!isset($composer['support']['source'])) { +$label = array_search($identifier, $this->getTags()) ?: array_search($identifier, $this->getBranches()) ?: $identifier; +$composer['support']['source'] = sprintf('https://%s/%s/%s/tree/%s', $this->originUrl, $this->owner, $this->repository, $label); +} +if (!isset($composer['support']['issues']) && $this->hasIssues) { +$composer['support']['issues'] = sprintf('https://%s/%s/%s/issues', $this->originUrl, $this->owner, $this->repository); +} +if (!isset($composer['abandoned']) && $this->isArchived) { +$composer['abandoned'] = true; +} +if (!isset($composer['funding']) && $funding = $this->getFundingInfo()) { +$composer['funding'] = $funding; +} +} + +$this->infoCache[$identifier] = $composer; +} + +return $this->infoCache[$identifier]; +} + + + + +private function getFundingInfo() +{ +if (null !== $this->fundingInfo) { +return $this->fundingInfo; +} + +if ($this->originUrl !== 'github.com') { +return $this->fundingInfo = false; +} + +foreach ([$this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/.github/FUNDING.yml', $this->getApiUrl() . '/repos/'.$this->owner.'/.github/contents/FUNDING.yml'] as $file) { +try { +$response = $this->httpDownloader->get($file, [ +'retry-auth-failure' => false, +])->decodeJson(); +} catch (TransportException $e) { +continue; +} +if (empty($response['content']) || $response['encoding'] !== 'base64' || !($funding = base64_decode($response['content']))) { +continue; +} +break; +} +if (empty($funding)) { +return $this->fundingInfo = false; +} + +$result = []; +$key = null; +foreach (Preg::split('{\r?\n}', $funding) as $line) { +$line = trim($line); +if (Preg::isMatchStrictGroups('{^(\w+)\s*:\s*(.+)$}', $line, $match)) { +if ($match[2] === '[') { +$key = $match[1]; +continue; +} +if (Preg::isMatchStrictGroups('{^\[(.*)\](?:\s*#.*)?$}', $match[2], $match2)) { +foreach (array_map('trim', Preg::split('{[\'"]?\s*,\s*[\'"]?}', $match2[1])) as $item) { +$result[] = ['type' => $match[1], 'url' => trim($item, '"\' ')]; +} +} elseif (Preg::isMatchStrictGroups('{^([^#].*?)(?:\s+#.*)?$}', $match[2], $match2)) { +$result[] = ['type' => $match[1], 'url' => trim($match2[1], '"\' ')]; +} +$key = null; +} elseif (Preg::isMatchStrictGroups('{^(\w+)\s*:\s*#\s*$}', $line, $match)) { +$key = $match[1]; +} elseif ($key !== null && ( +Preg::isMatchStrictGroups('{^-\s*(.+)(?:\s+#.*)?$}', $line, $match) +|| Preg::isMatchStrictGroups('{^(.+),(?:\s*#.*)?$}', $line, $match) +)) { +$result[] = ['type' => $key, 'url' => trim($match[1], '"\' ')]; +} elseif ($key !== null && $line === ']') { +$key = null; +} +} + +foreach ($result as $key => $item) { +switch ($item['type']) { +case 'tidelift': +$result[$key]['url'] = 'https://tidelift.com/funding/github/' . $item['url']; +break; +case 'github': +$result[$key]['url'] = 'https://github.com/' . basename($item['url']); +break; +case 'patreon': +$result[$key]['url'] = 'https://www.patreon.com/' . basename($item['url']); +break; +case 'otechie': +$result[$key]['url'] = 'https://otechie.com/' . basename($item['url']); +break; +case 'open_collective': +$result[$key]['url'] = 'https://opencollective.com/' . basename($item['url']); +break; +case 'liberapay': +$result[$key]['url'] = 'https://liberapay.com/' . basename($item['url']); +break; +case 'ko_fi': +$result[$key]['url'] = 'https://ko-fi.com/' . basename($item['url']); +break; +case 'issuehunt': +$result[$key]['url'] = 'https://issuehunt.io/r/' . $item['url']; +break; +case 'community_bridge': +$result[$key]['url'] = 'https://funding.communitybridge.org/projects/' . basename($item['url']); +break; +} +} + +return $this->fundingInfo = $result; +} + + + + +public function getFileContent(string $file, string $identifier): ?string +{ +if ($this->gitDriver) { +return $this->gitDriver->getFileContent($file, $identifier); +} + +$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/' . $file . '?ref='.urlencode($identifier); +$resource = $this->getContents($resource)->decodeJson(); + + + +if ((!isset($resource['content']) || $resource['content'] === '') && $resource['encoding'] === 'none' && isset($resource['git_url'])) { +$resource = $this->getContents($resource['git_url'])->decodeJson(); +} + +if (empty($resource['content']) || $resource['encoding'] !== 'base64' || !($content = base64_decode($resource['content']))) { +throw new \RuntimeException('Could not retrieve ' . $file . ' for '.$identifier); +} + +return $content; +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +if ($this->gitDriver) { +return $this->gitDriver->getChangeDate($identifier); +} + +$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/commits/'.urlencode($identifier); +$commit = $this->getContents($resource)->decodeJson(); + +return new \DateTimeImmutable($commit['commit']['committer']['date']); +} + + + + +public function getTags(): array +{ +if ($this->gitDriver) { +return $this->gitDriver->getTags(); +} +if (null === $this->tags) { +$tags = []; +$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/tags?per_page=100'; + +do { +$response = $this->getContents($resource); +$tagsData = $response->decodeJson(); +foreach ($tagsData as $tag) { +$tags[$tag['name']] = $tag['commit']['sha']; +} + +$resource = $this->getNextPage($response); +} while ($resource); + +$this->tags = $tags; +} + +return $this->tags; +} + + + + +public function getBranches(): array +{ +if ($this->gitDriver) { +return $this->gitDriver->getBranches(); +} +if (null === $this->branches) { +$branches = []; +$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/git/refs/heads?per_page=100'; + +do { +$response = $this->getContents($resource); +$branchData = $response->decodeJson(); +foreach ($branchData as $branch) { +$name = substr($branch['ref'], 11); +if ($name !== 'gh-pages') { +$branches[$name] = $branch['object']['sha']; +} +} + +$resource = $this->getNextPage($response); +} while ($resource); + +$this->branches = $branches; +} + +return $this->branches; +} + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +if (!Preg::isMatch('#^((?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/([^/]+?)(?:\.git|/)?$#', $url, $matches)) { +return false; +} + +$originUrl = $matches[2] ?? (string) $matches[3]; +if (!in_array(strtolower(Preg::replace('{^www\.}i', '', $originUrl)), $config->get('github-domains'))) { +return false; +} + +if (!extension_loaded('openssl')) { +$io->writeError('Skipping GitHub driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); + +return false; +} + +return true; +} + + + + + + +public function getRepoData(): ?array +{ +$this->fetchRootIdentifier(); + +return $this->repoData; +} + + + + +protected function generateSshUrl(): string +{ +if (false !== strpos($this->originUrl, ':')) { +return 'ssh://git@' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; +} + +return 'git@' . $this->originUrl . ':'.$this->owner.'/'.$this->repository.'.git'; +} + + + + +protected function getContents(string $url, bool $fetchingRepoData = false): Response +{ +try { +return parent::getContents($url); +} catch (TransportException $e) { +$gitHubUtil = new GitHub($this->io, $this->config, $this->process, $this->httpDownloader); + +switch ($e->getCode()) { +case 401: +case 404: + +if (!$fetchingRepoData) { +throw $e; +} + +if ($gitHubUtil->authorizeOAuth($this->originUrl)) { +return parent::getContents($url); +} + +if (!$this->io->isInteractive()) { +$this->attemptCloneFallback(); + +return new Response(['url' => 'dummy'], 200, [], 'null'); +} + +$scopesIssued = []; +$scopesNeeded = []; +if ($headers = $e->getHeaders()) { +if ($scopes = Response::findHeaderValue($headers, 'X-OAuth-Scopes')) { +$scopesIssued = explode(' ', $scopes); +} +if ($scopes = Response::findHeaderValue($headers, 'X-Accepted-OAuth-Scopes')) { +$scopesNeeded = explode(' ', $scopes); +} +} +$scopesFailed = array_diff($scopesNeeded, $scopesIssued); + + +if (!$headers || !count($scopesNeeded) || count($scopesFailed)) { +$gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'Your GitHub credentials are required to fetch private repository metadata ('.$this->url.')'); +} + +return parent::getContents($url); + +case 403: +if (!$this->io->hasAuthentication($this->originUrl) && $gitHubUtil->authorizeOAuth($this->originUrl)) { +return parent::getContents($url); +} + +if (!$this->io->isInteractive() && $fetchingRepoData) { +$this->attemptCloneFallback(); + +return new Response(['url' => 'dummy'], 200, [], 'null'); +} + +$rateLimited = $gitHubUtil->isRateLimited((array) $e->getHeaders()); + +if (!$this->io->hasAuthentication($this->originUrl)) { +if (!$this->io->isInteractive()) { +$this->io->writeError('GitHub API limit exhausted. Failed to get metadata for the '.$this->url.' repository, try running in interactive mode so that you can enter your GitHub credentials to increase the API limit'); +throw $e; +} + +$gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'API limit exhausted. Enter your GitHub credentials to get a larger API limit ('.$this->url.')'); + +return parent::getContents($url); +} + +if ($rateLimited) { +$rateLimit = $gitHubUtil->getRateLimit($e->getHeaders()); +$this->io->writeError(sprintf( +'GitHub API limit (%d calls/hr) is exhausted. You are already authorized so you have to wait until %s before doing more requests', +$rateLimit['limit'], +$rateLimit['reset'] +)); +} + +throw $e; + +default: +throw $e; +} +} +} + + + + + + +protected function fetchRootIdentifier(): void +{ +if ($this->repoData) { +return; +} + +$repoDataUrl = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository; + +try { +$this->repoData = $this->getContents($repoDataUrl, true)->decodeJson(); +} catch (TransportException $e) { +if ($e->getCode() === 499) { +$this->attemptCloneFallback(); +} else { +throw $e; +} +} +if (null === $this->repoData && null !== $this->gitDriver) { +return; +} + +$this->owner = $this->repoData['owner']['login']; +$this->repository = $this->repoData['name']; + +$this->isPrivate = !empty($this->repoData['private']); +if (isset($this->repoData['default_branch'])) { +$this->rootIdentifier = $this->repoData['default_branch']; +} elseif (isset($this->repoData['master_branch'])) { +$this->rootIdentifier = $this->repoData['master_branch']; +} else { +$this->rootIdentifier = 'master'; +} +$this->hasIssues = !empty($this->repoData['has_issues']); +$this->isArchived = !empty($this->repoData['archived']); +} + + + + + + + +protected function attemptCloneFallback(): bool +{ +$this->isPrivate = true; + +try { + + + + +$this->setupGitDriver($this->generateSshUrl()); + +return true; +} catch (\RuntimeException $e) { +$this->gitDriver = null; + +$this->io->writeError('Failed to clone the '.$this->generateSshUrl().' repository, try running in interactive mode so that you can enter your GitHub credentials'); +throw $e; +} +} + +protected function setupGitDriver(string $url): void +{ +$this->gitDriver = new GitDriver( +['url' => $url], +$this->io, +$this->config, +$this->httpDownloader, +$this->process +); +$this->gitDriver->initialize(); +} + +protected function getNextPage(Response $response): ?string +{ +$header = $response->getHeader('link'); +if (!$header) { +return null; +} + +$links = explode(',', $header); +foreach ($links as $link) { +if (Preg::isMatch('{<(.+?)>; *rel="next"}', $link, $match)) { +return $match[1]; +} +} + +return null; +} +} diff --git a/composer/src/Composer/Repository/Vcs/GitLabDriver.php b/composer/src/Composer/Repository/Vcs/GitLabDriver.php new file mode 100644 index 000000000..01249b741 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/GitLabDriver.php @@ -0,0 +1,628 @@ +https?)://(?P.+?)(?::(?P[0-9]+))?/|git@(?P[^:]+):)(?P.+)/(?P[^/]+?)(?:\.git|/)?$#'; + + + + + + + + +public function initialize(): void +{ +if (!Preg::isMatch(self::URL_REGEX, $this->url, $match)) { +throw new \InvalidArgumentException(sprintf('The GitLab repository URL %s is invalid. It must be the HTTP URL of a GitLab project.', $this->url)); +} + +assert(is_string($match['parts'])); +assert(is_string($match['repo'])); +$guessedDomain = $match['domain'] ?? (string) $match['domain2']; +$configuredDomains = $this->config->get('gitlab-domains'); +$urlParts = explode('/', $match['parts']); + +$this->scheme = in_array($match['scheme'], ['https', 'http'], true) +? $match['scheme'] +: (isset($this->repoConfig['secure-http']) && $this->repoConfig['secure-http'] === false ? 'http' : 'https') +; +$origin = self::determineOrigin($configuredDomains, $guessedDomain, $urlParts, $match['port']); +if (false === $origin) { +throw new \LogicException('It should not be possible to create a gitlab driver with an unparseable origin URL ('.$this->url.')'); +} +$this->originUrl = $origin; + +if (is_string($protocol = $this->config->get('gitlab-protocol'))) { + +if (!in_array($protocol, ['git', 'http', 'https'])) { +throw new \RuntimeException('gitlab-protocol must be one of git, http.'); +} +$this->protocol = $protocol === 'git' ? 'ssh' : 'http'; +} + +if (false !== strpos($this->originUrl, ':') || false !== strpos($this->originUrl, '/')) { +$this->hasNonstandardOrigin = true; +} + +$this->namespace = implode('/', $urlParts); +$this->repository = Preg::replace('#(\.git)$#', '', $match['repo']); + +$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository); +$this->cache->setReadOnly($this->config->get('cache-read-only')); + +$this->fetchProject(); +} + + + + + + + +public function setHttpDownloader(HttpDownloader $httpDownloader): void +{ +$this->httpDownloader = $httpDownloader; +} + + + + +public function getComposerInformation(string $identifier): ?array +{ +if ($this->gitDriver) { +return $this->gitDriver->getComposerInformation($identifier); +} + +if (!isset($this->infoCache[$identifier])) { +if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { +$composer = JsonFile::parseJson($res); +} else { +$composer = $this->getBaseComposerInformation($identifier); + +if ($this->shouldCache($identifier)) { +$this->cache->write($identifier, json_encode($composer)); +} +} + +if (null !== $composer) { + +if (!isset($composer['support']['source']) && isset($this->project['web_url'])) { +$label = array_search($identifier, $this->getTags(), true) ?: array_search($identifier, $this->getBranches(), true) ?: $identifier; +$composer['support']['source'] = sprintf('%s/-/tree/%s', $this->project['web_url'], $label); +} +if (!isset($composer['support']['issues']) && !empty($this->project['issues_enabled']) && isset($this->project['web_url'])) { +$composer['support']['issues'] = sprintf('%s/-/issues', $this->project['web_url']); +} +if (!isset($composer['abandoned']) && !empty($this->project['archived'])) { +$composer['abandoned'] = true; +} +} + +$this->infoCache[$identifier] = $composer; +} + +return $this->infoCache[$identifier]; +} + + + + +public function getFileContent(string $file, string $identifier): ?string +{ +if ($this->gitDriver) { +return $this->gitDriver->getFileContent($file, $identifier); +} + + +if (!Preg::isMatch('{[a-f0-9]{40}}i', $identifier)) { +$branches = $this->getBranches(); +if (isset($branches[$identifier])) { +$identifier = $branches[$identifier]; +} +} + +$resource = $this->getApiUrl().'/repository/files/'.$this->urlEncodeAll($file).'/raw?ref='.$identifier; + +try { +$content = $this->getContents($resource)->getBody(); +} catch (TransportException $e) { +if ($e->getCode() !== 404) { +throw $e; +} + +return null; +} + +return $content; +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +if ($this->gitDriver) { +return $this->gitDriver->getChangeDate($identifier); +} + +if (isset($this->commits[$identifier])) { +return new \DateTimeImmutable($this->commits[$identifier]['committed_date']); +} + +return null; +} + +public function getRepositoryUrl(): string +{ +if ($this->protocol) { +return $this->project["{$this->protocol}_url_to_repo"]; +} + +return $this->isPrivate ? $this->project['ssh_url_to_repo'] : $this->project['http_url_to_repo']; +} + + + + +public function getUrl(): string +{ +if ($this->gitDriver) { +return $this->gitDriver->getUrl(); +} + +return $this->project['web_url']; +} + + + + +public function getDist(string $identifier): ?array +{ +$url = $this->getApiUrl().'/repository/archive.zip?sha='.$identifier; + +return ['type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => '']; +} + + + + +public function getSource(string $identifier): array +{ +if ($this->gitDriver) { +return $this->gitDriver->getSource($identifier); +} + +return ['type' => 'git', 'url' => $this->getRepositoryUrl(), 'reference' => $identifier]; +} + + + + +public function getRootIdentifier(): string +{ +if ($this->gitDriver) { +return $this->gitDriver->getRootIdentifier(); +} + +return $this->project['default_branch']; +} + + + + +public function getBranches(): array +{ +if ($this->gitDriver) { +return $this->gitDriver->getBranches(); +} + +if (null === $this->branches) { +$this->branches = $this->getReferences('branches'); +} + +return $this->branches; +} + + + + +public function getTags(): array +{ +if ($this->gitDriver) { +return $this->gitDriver->getTags(); +} + +if (null === $this->tags) { +$this->tags = $this->getReferences('tags'); +} + +return $this->tags; +} + + + + +public function getApiUrl(): string +{ +return $this->scheme.'://'.$this->originUrl.'/api/v4/projects/'.$this->urlEncodeAll($this->namespace).'%2F'.$this->urlEncodeAll($this->repository); +} + + + + +private function urlEncodeAll(string $string): string +{ +$encoded = ''; +for ($i = 0; isset($string[$i]); $i++) { +$character = $string[$i]; +if (!ctype_alnum($character) && !in_array($character, ['-', '_'], true)) { +$character = '%' . sprintf('%02X', ord($character)); +} +$encoded .= $character; +} + +return $encoded; +} + + + + +protected function getReferences(string $type): array +{ +$perPage = 100; +$resource = $this->getApiUrl().'/repository/'.$type.'?per_page='.$perPage; + +$references = []; +do { +$response = $this->getContents($resource); +$data = $response->decodeJson(); + +foreach ($data as $datum) { +$references[$datum['name']] = $datum['commit']['id']; + + + +$this->commits[$datum['commit']['id']] = $datum['commit']; +} + +if (count($data) >= $perPage) { +$resource = $this->getNextPage($response); +} else { +$resource = false; +} +} while ($resource); + +return $references; +} + +protected function fetchProject(): void +{ + +$resource = $this->getApiUrl(); +$this->project = $this->getContents($resource, true)->decodeJson(); +if (isset($this->project['visibility'])) { +$this->isPrivate = $this->project['visibility'] !== 'public'; +} else { + +$this->isPrivate = false; +} +} + + + + + + + +protected function attemptCloneFallback(): bool +{ +if ($this->isPrivate === false) { +$url = $this->generatePublicUrl(); +} else { +$url = $this->generateSshUrl(); +} + +try { + + + +$this->setupGitDriver($url); + +return true; +} catch (\RuntimeException $e) { +$this->gitDriver = null; + +$this->io->writeError('Failed to clone the '.$url.' repository, try running in interactive mode so that you can enter your credentials'); +throw $e; +} +} + + + + +protected function generateSshUrl(): string +{ +if ($this->hasNonstandardOrigin) { +return 'ssh://git@'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository.'.git'; +} + +return 'git@' . $this->originUrl . ':'.$this->namespace.'/'.$this->repository.'.git'; +} + +protected function generatePublicUrl(): string +{ +return $this->scheme . '://' . $this->originUrl . '/'.$this->namespace.'/'.$this->repository.'.git'; +} + +protected function setupGitDriver(string $url): void +{ +$this->gitDriver = new GitDriver( +['url' => $url], +$this->io, +$this->config, +$this->httpDownloader, +$this->process +); +$this->gitDriver->initialize(); +} + + + + +protected function getContents(string $url, bool $fetchingRepoData = false): Response +{ +try { +$response = parent::getContents($url); + +if ($fetchingRepoData) { +$json = $response->decodeJson(); + + + + +if (!isset($json['default_branch']) && isset($json['permissions'])) { +$this->isPrivate = $json['visibility'] !== 'public'; + +$moreThanGuestAccess = false; + + + +foreach ($json['permissions'] as $permission) { +if ($permission && $permission['access_level'] > 10) { +$moreThanGuestAccess = true; +} +} + +if (!$moreThanGuestAccess) { +$this->io->writeError('GitLab token with Guest only access detected'); + +$this->attemptCloneFallback(); + +return new Response(['url' => 'dummy'], 200, [], 'null'); +} +} + + +if (!isset($json['default_branch'])) { + +if (isset($json['repository_access_level']) && $json['repository_access_level'] === 'disabled') { +throw new TransportException('The GitLab repository is disabled in the project', 400); +} + +if (!empty($json['id'])) { +$this->isPrivate = false; +} + +throw new TransportException('GitLab API seems to not be authenticated as it did not return a default_branch', 401); +} +} + +return $response; +} catch (TransportException $e) { +$gitLabUtil = new GitLab($this->io, $this->config, $this->process, $this->httpDownloader); + +switch ($e->getCode()) { +case 401: +case 404: + +if (!$fetchingRepoData) { +throw $e; +} + +if ($gitLabUtil->authorizeOAuth($this->originUrl)) { +return parent::getContents($url); +} + +if ($gitLabUtil->isOAuthExpired($this->originUrl) && $gitLabUtil->authorizeOAuthRefresh($this->scheme, $this->originUrl)) { +return parent::getContents($url); +} + +if (!$this->io->isInteractive()) { +$this->attemptCloneFallback(); + +return new Response(['url' => 'dummy'], 200, [], 'null'); +} +$this->io->writeError('Failed to download ' . $this->namespace . '/' . $this->repository . ':' . $e->getMessage() . ''); +$gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, 'Your credentials are required to fetch private repository metadata ('.$this->url.')'); + +return parent::getContents($url); + +case 403: +if (!$this->io->hasAuthentication($this->originUrl) && $gitLabUtil->authorizeOAuth($this->originUrl)) { +return parent::getContents($url); +} + +if (!$this->io->isInteractive() && $fetchingRepoData) { +$this->attemptCloneFallback(); + +return new Response(['url' => 'dummy'], 200, [], 'null'); +} + +throw $e; + +default: +throw $e; +} +} +} + + + + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +if (!Preg::isMatch(self::URL_REGEX, $url, $match)) { +return false; +} + +assert(is_string($match['parts'])); +assert(is_string($match['repo'])); +$scheme = $match['scheme']; +$guessedDomain = $match['domain'] ?? (string) $match['domain2']; +$urlParts = explode('/', $match['parts']); + +if (false === self::determineOrigin($config->get('gitlab-domains'), $guessedDomain, $urlParts, $match['port'])) { +return false; +} + +if ('https' === $scheme && !extension_loaded('openssl')) { +$io->writeError('Skipping GitLab driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); + +return false; +} + +return true; +} + +protected function getNextPage(Response $response): ?string +{ +$header = $response->getHeader('link'); + +$links = explode(',', $header); +foreach ($links as $link) { +if (Preg::isMatchStrictGroups('{<(.+?)>; *rel="next"}', $link, $match)) { +return $match[1]; +} +} + +return null; +} + + + + + + + + +private static function determineOrigin(array $configuredDomains, string $guessedDomain, array &$urlParts, ?string $portNumber) +{ +$guessedDomain = strtolower($guessedDomain); + +if (in_array($guessedDomain, $configuredDomains) || (null !== $portNumber && in_array($guessedDomain.':'.$portNumber, $configuredDomains))) { +if (null !== $portNumber) { +return $guessedDomain.':'.$portNumber; +} + +return $guessedDomain; +} + +if (null !== $portNumber) { +$guessedDomain .= ':'.$portNumber; +} + +while (null !== ($part = array_shift($urlParts))) { +$guessedDomain .= '/' . $part; + +if (in_array($guessedDomain, $configuredDomains) || (null !== $portNumber && in_array(Preg::replace('{:\d+}', '', $guessedDomain), $configuredDomains))) { +return $guessedDomain; +} +} + +return false; +} +} diff --git a/composer/src/Composer/Repository/Vcs/HgDriver.php b/composer/src/Composer/Repository/Vcs/HgDriver.php new file mode 100644 index 000000000..5a83ee650 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/HgDriver.php @@ -0,0 +1,244 @@ +url)) { +$this->repoDir = $this->url; +} else { +if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { +throw new \RuntimeException('HgDriver requires a usable cache directory, and it looks like you set it to be disabled'); +} + +$cacheDir = $this->config->get('cache-vcs-dir'); +$this->repoDir = $cacheDir . '/' . Preg::replace('{[^a-z0-9]}i', '-', $this->url) . '/'; + +$fs = new Filesystem(); +$fs->ensureDirectoryExists($cacheDir); + +if (!is_writable(dirname($this->repoDir))) { +throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$cacheDir.'" directory is not writable by the current user.'); +} + + +$this->config->prohibitUrlByConfig($this->url, $this->io); + +$hgUtils = new HgUtils($this->io, $this->config, $this->process); + + +if (is_dir($this->repoDir) && 0 === $this->process->execute('hg summary', $output, $this->repoDir)) { +if (0 !== $this->process->execute('hg pull', $output, $this->repoDir)) { +$this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); +} +} else { + +$fs->removeDirectory($this->repoDir); + +$repoDir = $this->repoDir; +$command = static function ($url) use ($repoDir): string { +return sprintf('hg clone --noupdate -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($repoDir)); +}; + +$hgUtils->runCommand($command, $this->url, null); +} +} + +$this->getTags(); +$this->getBranches(); +} + + + + +public function getRootIdentifier(): string +{ +if (null === $this->rootIdentifier) { +$this->process->execute('hg tip --template "{node}"', $output, $this->repoDir); +$output = $this->process->splitLines($output); +$this->rootIdentifier = $output[0]; +} + +return $this->rootIdentifier; +} + + + + +public function getUrl(): string +{ +return $this->url; +} + + + + +public function getSource(string $identifier): array +{ +return ['type' => 'hg', 'url' => $this->getUrl(), 'reference' => $identifier]; +} + + + + +public function getDist(string $identifier): ?array +{ +return null; +} + + + + +public function getFileContent(string $file, string $identifier): ?string +{ +if (isset($identifier[0]) && $identifier[0] === '-') { +throw new \RuntimeException('Invalid hg identifier detected. Identifier must not start with a -, given: ' . $identifier); +} + +$resource = sprintf('hg cat -r %s -- %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); +$this->process->execute($resource, $content, $this->repoDir); + +if (!trim($content)) { +return null; +} + +return $content; +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +$this->process->execute( +sprintf( +'hg log --template "{date|rfc3339date}" -r %s', +ProcessExecutor::escape($identifier) +), +$output, +$this->repoDir +); + +return new \DateTimeImmutable(trim($output), new \DateTimeZone('UTC')); +} + + + + +public function getTags(): array +{ +if (null === $this->tags) { +$tags = []; + +$this->process->execute('hg tags', $output, $this->repoDir); +foreach ($this->process->splitLines($output) as $tag) { +if ($tag && Preg::isMatchStrictGroups('(^([^\s]+)\s+\d+:(.*)$)', $tag, $match)) { +$tags[$match[1]] = $match[2]; +} +} +unset($tags['tip']); + +$this->tags = $tags; +} + +return $this->tags; +} + + + + +public function getBranches(): array +{ +if (null === $this->branches) { +$branches = []; +$bookmarks = []; + +$this->process->execute('hg branches', $output, $this->repoDir); +foreach ($this->process->splitLines($output) as $branch) { +if ($branch && Preg::isMatchStrictGroups('(^([^\s]+)\s+\d+:([a-f0-9]+))', $branch, $match) && $match[1][0] !== '-') { +$branches[$match[1]] = $match[2]; +} +} + +$this->process->execute('hg bookmarks', $output, $this->repoDir); +foreach ($this->process->splitLines($output) as $branch) { +if ($branch && Preg::isMatchStrictGroups('(^(?:[\s*]*)([^\s]+)\s+\d+:(.*)$)', $branch, $match) && $match[1][0] !== '-') { +$bookmarks[$match[1]] = $match[2]; +} +} + + +$this->branches = array_merge($bookmarks, $branches); +} + +return $this->branches; +} + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +if (Preg::isMatch('#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { +return true; +} + + +if (Filesystem::isLocalPath($url)) { +$url = Filesystem::getPlatformPath($url); +if (!is_dir($url)) { +return false; +} + +$process = new ProcessExecutor($io); + +if ($process->execute('hg summary', $output, $url) === 0) { +return true; +} +} + +if (!$deep) { +return false; +} + +$process = new ProcessExecutor($io); +$exit = $process->execute(sprintf('hg identify -- %s', ProcessExecutor::escape($url)), $ignored); + +return $exit === 0; +} +} diff --git a/composer/src/Composer/Repository/Vcs/PerforceDriver.php b/composer/src/Composer/Repository/Vcs/PerforceDriver.php new file mode 100644 index 000000000..01f38c525 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/PerforceDriver.php @@ -0,0 +1,188 @@ +depot = $this->repoConfig['depot']; +$this->branch = ''; +if (!empty($this->repoConfig['branch'])) { +$this->branch = $this->repoConfig['branch']; +} + +$this->initPerforce($this->repoConfig); +$this->perforce->p4Login(); +$this->perforce->checkStream(); + +$this->perforce->writeP4ClientSpec(); +$this->perforce->connectClient(); +} + + + + +private function initPerforce(array $repoConfig): void +{ +if (!empty($this->perforce)) { +return; +} + +if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { +throw new \RuntimeException('PerforceDriver requires a usable cache directory, and it looks like you set it to be disabled'); +} + +$repoDir = $this->config->get('cache-vcs-dir') . '/' . $this->depot; +$this->perforce = Perforce::create($repoConfig, $this->getUrl(), $repoDir, $this->process, $this->io); +} + + + + +public function getFileContent(string $file, string $identifier): ?string +{ +return $this->perforce->getFileContent($file, $identifier); +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +return null; +} + + + + +public function getRootIdentifier(): string +{ +return $this->branch; +} + + + + +public function getBranches(): array +{ +return $this->perforce->getBranches(); +} + + + + +public function getTags(): array +{ +return $this->perforce->getTags(); +} + + + + +public function getDist(string $identifier): ?array +{ +return null; +} + + + + +public function getSource(string $identifier): array +{ +return [ +'type' => 'perforce', +'url' => $this->repoConfig['url'], +'reference' => $identifier, +'p4user' => $this->perforce->getUser(), +]; +} + + + + +public function getUrl(): string +{ +return $this->url; +} + + + + +public function hasComposerFile(string $identifier): bool +{ +$composerInfo = $this->perforce->getComposerInformation('//' . $this->depot . '/' . $identifier); + +return !empty($composerInfo); +} + + + + +public function getContents(string $url): Response +{ +throw new \BadMethodCallException('Not implemented/used in PerforceDriver'); +} + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +if ($deep || Preg::isMatch('#\b(perforce|p4)\b#i', $url)) { +return Perforce::checkServerExists($url, new ProcessExecutor($io)); +} + +return false; +} + + + + +public function cleanup(): void +{ +$this->perforce->cleanupClientSpec(); +$this->perforce = null; +} + +public function getDepot(): string +{ +return $this->depot; +} + +public function getBranch(): string +{ +return $this->branch; +} +} diff --git a/composer/src/Composer/Repository/Vcs/SvnDriver.php b/composer/src/Composer/Repository/Vcs/SvnDriver.php new file mode 100644 index 000000000..ab31adb15 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/SvnDriver.php @@ -0,0 +1,408 @@ +url = $this->baseUrl = rtrim(self::normalizeUrl($this->url), '/'); + +SvnUtil::cleanEnv(); + +if (isset($this->repoConfig['trunk-path'])) { +$this->trunkPath = $this->repoConfig['trunk-path']; +} +if (isset($this->repoConfig['branches-path'])) { +$this->branchesPath = $this->repoConfig['branches-path']; +} +if (isset($this->repoConfig['tags-path'])) { +$this->tagsPath = $this->repoConfig['tags-path']; +} +if (array_key_exists('svn-cache-credentials', $this->repoConfig)) { +$this->cacheCredentials = (bool) $this->repoConfig['svn-cache-credentials']; +} +if (isset($this->repoConfig['package-path'])) { +$this->packagePath = '/' . trim($this->repoConfig['package-path'], '/'); +} + +if (false !== ($pos = strrpos($this->url, '/' . $this->trunkPath))) { +$this->baseUrl = substr($this->url, 0, $pos); +} + +$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', Url::sanitize($this->baseUrl))); +$this->cache->setReadOnly($this->config->get('cache-read-only')); + +$this->getBranches(); +$this->getTags(); +} + + + + +public function getRootIdentifier(): string +{ +return $this->rootIdentifier ?: $this->trunkPath; +} + + + + +public function getUrl(): string +{ +return $this->url; +} + + + + +public function getSource(string $identifier): array +{ +return ['type' => 'svn', 'url' => $this->baseUrl, 'reference' => $identifier]; +} + + + + +public function getDist(string $identifier): ?array +{ +return null; +} + + + + +protected function shouldCache(string $identifier): bool +{ +return $this->cache && Preg::isMatch('{@\d+$}', $identifier); +} + + + + +public function getComposerInformation(string $identifier): ?array +{ +if (!isset($this->infoCache[$identifier])) { +if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier.'.json')) { + + +if ($res === '""') { +$res = 'null'; +$this->cache->write($identifier.'.json', json_encode(null)); +} + +return $this->infoCache[$identifier] = JsonFile::parseJson($res); +} + +try { +$composer = $this->getBaseComposerInformation($identifier); +} catch (TransportException $e) { +$message = $e->getMessage(); +if (stripos($message, 'path not found') === false && stripos($message, 'svn: warning: W160013') === false) { +throw $e; +} + +$composer = null; +} + +if ($this->shouldCache($identifier)) { +$this->cache->write($identifier.'.json', json_encode($composer)); +} + +$this->infoCache[$identifier] = $composer; +} + + +if (!is_array($this->infoCache[$identifier])) { +return null; +} + +return $this->infoCache[$identifier]; +} + +public function getFileContent(string $file, string $identifier): ?string +{ +$identifier = '/' . trim($identifier, '/') . '/'; + +Preg::match('{^(.+?)(@\d+)?/$}', $identifier, $match); +if (!empty($match[2])) { +$path = $match[1]; +$rev = $match[2]; +} else { +$path = $identifier; +$rev = ''; +} + +try { +$resource = $path.$file; +$output = $this->execute('svn cat', $this->baseUrl . $resource . $rev); +if (!trim($output)) { +return null; +} +} catch (\RuntimeException $e) { +throw new TransportException($e->getMessage()); +} + +return $output; +} + + + + +public function getChangeDate(string $identifier): ?\DateTimeImmutable +{ +$identifier = '/' . trim($identifier, '/') . '/'; + +Preg::match('{^(.+?)(@\d+)?/$}', $identifier, $match); +if (null !== $match[2] && null !== $match[1]) { +$path = $match[1]; +$rev = $match[2]; +} else { +$path = $identifier; +$rev = ''; +} + +$output = $this->execute('svn info', $this->baseUrl . $path . $rev); +foreach ($this->process->splitLines($output) as $line) { +if ($line && Preg::isMatchStrictGroups('{^Last Changed Date: ([^(]+)}', $line, $match)) { +return new \DateTimeImmutable($match[1], new \DateTimeZone('UTC')); +} +} + +return null; +} + + + + +public function getTags(): array +{ +if (null === $this->tags) { +$tags = []; + +if ($this->tagsPath !== false) { +$output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath); +if ($output) { +foreach ($this->process->splitLines($output) as $line) { +$line = trim($line); +if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { +if (isset($match[1], $match[2]) && $match[2] !== './') { +$tags[rtrim($match[2], '/')] = $this->buildIdentifier( +'/' . $this->tagsPath . '/' . $match[2], +$match[1] +); +} +} +} +} +} + +$this->tags = $tags; +} + +return $this->tags; +} + + + + +public function getBranches(): array +{ +if (null === $this->branches) { +$branches = []; + +if (false === $this->trunkPath) { +$trunkParent = $this->baseUrl . '/'; +} else { +$trunkParent = $this->baseUrl . '/' . $this->trunkPath; +} + +$output = $this->execute('svn ls --verbose', $trunkParent); +if ($output) { +foreach ($this->process->splitLines($output) as $line) { +$line = trim($line); +if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { +if (isset($match[1], $match[2]) && $match[2] === './') { +$branches['trunk'] = $this->buildIdentifier( +'/' . $this->trunkPath, +$match[1] +); +$this->rootIdentifier = $branches['trunk']; +break; +} +} +} +} +unset($output); + +if ($this->branchesPath !== false) { +$output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath); +if ($output) { +foreach ($this->process->splitLines(trim($output)) as $line) { +$line = trim($line); +if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { +if (isset($match[1], $match[2]) && $match[2] !== './') { +$branches[rtrim($match[2], '/')] = $this->buildIdentifier( +'/' . $this->branchesPath . '/' . $match[2], +$match[1] +); +} +} +} +} +} + +$this->branches = $branches; +} + +return $this->branches; +} + + + + +public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool +{ +$url = self::normalizeUrl($url); +if (Preg::isMatch('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) { +return true; +} + + +if (!$deep && !Filesystem::isLocalPath($url)) { +return false; +} + +$process = new ProcessExecutor($io); +$exit = $process->execute( +"svn info --non-interactive -- ".ProcessExecutor::escape($url), +$ignoredOutput +); + +if ($exit === 0) { + +return true; +} + + +if (false !== stripos($process->getErrorOutput(), 'authorization failed:')) { + + +return true; +} + + +if (false !== stripos($process->getErrorOutput(), 'Authentication failed')) { + + +return true; +} + +return false; +} + + + + +protected static function normalizeUrl(string $url): string +{ +$fs = new Filesystem(); +if ($fs->isAbsolutePath($url)) { +return 'file://' . strtr($url, '\\', '/'); +} + +return $url; +} + + + + + + + + + +protected function execute(string $command, string $url): string +{ +if (null === $this->util) { +$this->util = new SvnUtil($this->baseUrl, $this->io, $this->config, $this->process); +$this->util->setCacheCredentials($this->cacheCredentials); +} + +try { +return $this->util->execute($command, $url); +} catch (\RuntimeException $e) { +if (null === $this->util->binaryVersion()) { +throw new \RuntimeException('Failed to load '.$this->url.', svn was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput()); +} + +throw new \RuntimeException( +'Repository '.$this->url.' could not be processed, '.$e->getMessage() +); +} +} + + + + + + + +protected function buildIdentifier(string $baseDir, string $revision): string +{ +return rtrim($baseDir, '/') . $this->packagePath . '/@' . $revision; +} +} diff --git a/composer/src/Composer/Repository/Vcs/VcsDriver.php b/composer/src/Composer/Repository/Vcs/VcsDriver.php new file mode 100644 index 000000000..c09bf04a3 --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/VcsDriver.php @@ -0,0 +1,179 @@ +url = $repoConfig['url']; +$this->originUrl = $repoConfig['url']; +$this->repoConfig = $repoConfig; +$this->io = $io; +$this->config = $config; +$this->httpDownloader = $httpDownloader; +$this->process = $process; +} + + + + +protected function shouldCache(string $identifier): bool +{ +return $this->cache && Preg::isMatch('{^[a-f0-9]{40}$}iD', $identifier); +} + + + + +public function getComposerInformation(string $identifier): ?array +{ +if (!isset($this->infoCache[$identifier])) { +if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { +return $this->infoCache[$identifier] = JsonFile::parseJson($res); +} + +$composer = $this->getBaseComposerInformation($identifier); + +if ($this->shouldCache($identifier)) { +$this->cache->write($identifier, JsonFile::encode($composer, 0)); +} + +$this->infoCache[$identifier] = $composer; +} + +return $this->infoCache[$identifier]; +} + + + + +protected function getBaseComposerInformation(string $identifier): ?array +{ +$composerFileContent = $this->getFileContent('composer.json', $identifier); + +if (!$composerFileContent) { +return null; +} + +$composer = JsonFile::parseJson($composerFileContent, $identifier . ':composer.json'); + +if ([] === $composer || !is_array($composer)) { +return null; +} + +if (empty($composer['time']) && null !== ($changeDate = $this->getChangeDate($identifier))) { +$composer['time'] = $changeDate->format(DATE_RFC3339); +} + +return $composer; +} + + + + +public function hasComposerFile(string $identifier): bool +{ +try { +return null !== $this->getComposerInformation($identifier); +} catch (TransportException $e) { +} + +return false; +} + + + + + + + + +protected function getScheme(): string +{ +if (extension_loaded('openssl')) { +return 'https'; +} + +return 'http'; +} + + + + + + + + +protected function getContents(string $url): Response +{ +$options = $this->repoConfig['options'] ?? []; + +return $this->httpDownloader->get($url, $options); +} + + + + +public function cleanup(): void +{ +} +} diff --git a/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php b/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php new file mode 100644 index 000000000..d66df8b4b --- /dev/null +++ b/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php @@ -0,0 +1,110 @@ +drivers = $drivers ?: [ +'github' => 'Composer\Repository\Vcs\GitHubDriver', +'gitlab' => 'Composer\Repository\Vcs\GitLabDriver', +'bitbucket' => 'Composer\Repository\Vcs\GitBitbucketDriver', +'git-bitbucket' => 'Composer\Repository\Vcs\GitBitbucketDriver', +'git' => 'Composer\Repository\Vcs\GitDriver', +'hg' => 'Composer\Repository\Vcs\HgDriver', +'perforce' => 'Composer\Repository\Vcs\PerforceDriver', +'fossil' => 'Composer\Repository\Vcs\FossilDriver', + +'svn' => 'Composer\Repository\Vcs\SvnDriver', +]; + +$this->url = $repoConfig['url']; +$this->io = $io; +$this->type = $repoConfig['type'] ?? 'vcs'; +$this->isVerbose = $io->isVerbose(); +$this->isVeryVerbose = $io->isVeryVerbose(); +$this->config = $config; +$this->repoConfig = $repoConfig; +$this->versionCache = $versionCache; +$this->httpDownloader = $httpDownloader; +$this->processExecutor = $process ?? new ProcessExecutor($io); +} + +public function getRepoName() +{ +$driverClass = get_class($this->getDriver()); +$driverType = array_search($driverClass, $this->drivers); +if (!$driverType) { +$driverType = $driverClass; +} + +return 'vcs repo ('.$driverType.' '.Url::sanitize($this->url).')'; +} + +public function getRepoConfig() +{ +return $this->repoConfig; +} + +public function setLoader(LoaderInterface $loader): void +{ +$this->loader = $loader; +} + +public function getDriver(): ?VcsDriverInterface +{ +if ($this->driver) { +return $this->driver; +} + +if (isset($this->drivers[$this->type])) { +$class = $this->drivers[$this->type]; +$this->driver = new $class($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); +$this->driver->initialize(); + +return $this->driver; +} + +foreach ($this->drivers as $driver) { +if ($driver::supports($this->io, $this->config, $this->url)) { +$this->driver = new $driver($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); +$this->driver->initialize(); + +return $this->driver; +} +} + +foreach ($this->drivers as $driver) { +if ($driver::supports($this->io, $this->config, $this->url, true)) { +$this->driver = new $driver($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); +$this->driver->initialize(); + +return $this->driver; +} +} + +return null; +} + +public function hadInvalidBranches(): bool +{ +return $this->branchErrorOccurred; +} + + + + +public function getEmptyReferences(): array +{ +return $this->emptyReferences; +} + + + + +public function getVersionTransportExceptions(): array +{ +return $this->versionTransportExceptions; +} + +protected function initialize() +{ +parent::initialize(); + +$isVerbose = $this->isVerbose; +$isVeryVerbose = $this->isVeryVerbose; + +$driver = $this->getDriver(); +if (!$driver) { +throw new \InvalidArgumentException('No driver found to handle VCS repository '.$this->url); +} + +$this->versionParser = new VersionParser; +if (!$this->loader) { +$this->loader = new ArrayLoader($this->versionParser); +} + +$hasRootIdentifierComposerJson = false; +try { +$hasRootIdentifierComposerJson = $driver->hasComposerFile($driver->getRootIdentifier()); +if ($hasRootIdentifierComposerJson) { +$data = $driver->getComposerInformation($driver->getRootIdentifier()); +$this->packageName = !empty($data['name']) ? $data['name'] : null; +} +} catch (\Exception $e) { +if ($e instanceof TransportException && $this->shouldRethrowTransportException($e)) { +throw $e; +} + +if ($isVeryVerbose) { +$this->io->writeError('Skipped parsing '.$driver->getRootIdentifier().', '.$e->getMessage().''); +} +} + +foreach ($driver->getTags() as $tag => $identifier) { +$tag = (string) $tag; +$msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $tag . ')'; +if ($isVeryVerbose) { +$this->io->writeError($msg); +} elseif ($isVerbose) { +$this->io->overwriteError($msg, false); +} + + +$tag = str_replace('release-', '', $tag); + +$cachedPackage = $this->getCachedPackageVersion($tag, $identifier, $isVerbose, $isVeryVerbose); +if ($cachedPackage) { +$this->addPackage($cachedPackage); + +continue; +} +if ($cachedPackage === false) { +$this->emptyReferences[] = $identifier; + +continue; +} + +if (!$parsedTag = $this->validateTag($tag)) { +if ($isVeryVerbose) { +$this->io->writeError('Skipped tag '.$tag.', invalid tag name'); +} +continue; +} + +try { +$data = $driver->getComposerInformation($identifier); +if (null === $data) { +if ($isVeryVerbose) { +$this->io->writeError('Skipped tag '.$tag.', no composer file'); +} +$this->emptyReferences[] = $identifier; +continue; +} + + +if (isset($data['version'])) { +$data['version_normalized'] = $this->versionParser->normalize($data['version']); +} else { + +$data['version'] = $tag; +$data['version_normalized'] = $parsedTag; +} + + +$data['version'] = Preg::replace('{[.-]?dev$}i', '', $data['version']); +$data['version_normalized'] = Preg::replace('{(^dev-|[.-]?dev$)}i', '', $data['version_normalized']); + + +unset($data['default-branch']); + + +if ($data['version_normalized'] !== $parsedTag) { +if ($isVeryVerbose) { +if (Preg::isMatch('{(^dev-|[.-]?dev$)}i', $parsedTag)) { +$this->io->writeError('Skipped tag '.$tag.', invalid tag name, tags can not use dev prefixes or suffixes'); +} else { +$this->io->writeError('Skipped tag '.$tag.', tag ('.$parsedTag.') does not match version ('.$data['version_normalized'].') in composer.json'); +} +} +continue; +} + +$tagPackageName = $this->packageName ?: ($data['name'] ?? ''); +if ($existingPackage = $this->findPackage($tagPackageName, $data['version_normalized'])) { +if ($isVeryVerbose) { +$this->io->writeError('Skipped tag '.$tag.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$data['version_normalized'].' internally'); +} +continue; +} + +if ($isVeryVerbose) { +$this->io->writeError('Importing tag '.$tag.' ('.$data['version_normalized'].')'); +} + +$this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier))); +} catch (\Exception $e) { +if ($e instanceof TransportException) { +$this->versionTransportExceptions['tags'][$tag] = $e; +if ($e->getCode() === 404) { +$this->emptyReferences[] = $identifier; +} +if ($this->shouldRethrowTransportException($e)) { +throw $e; +} +} +if ($isVeryVerbose) { +$this->io->writeError('Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found (' . $e->getCode() . ' HTTP status code)' : $e->getMessage()).''); +} +continue; +} +} + +if (!$isVeryVerbose) { +$this->io->overwriteError('', false); +} + +$branches = $driver->getBranches(); + +if ($hasRootIdentifierComposerJson && isset($branches[$driver->getRootIdentifier()])) { +$branches = [$driver->getRootIdentifier() => $branches[$driver->getRootIdentifier()]] + $branches; +} + +foreach ($branches as $branch => $identifier) { +$branch = (string) $branch; +$msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $branch . ')'; +if ($isVeryVerbose) { +$this->io->writeError($msg); +} elseif ($isVerbose) { +$this->io->overwriteError($msg, false); +} + +if (!$parsedBranch = $this->validateBranch($branch)) { +if ($isVeryVerbose) { +$this->io->writeError('Skipped branch '.$branch.', invalid name'); +} +continue; +} + + +if (strpos($parsedBranch, 'dev-') === 0 || VersionParser::DEFAULT_BRANCH_ALIAS === $parsedBranch) { +$version = 'dev-' . $branch; +} else { +$prefix = strpos($branch, 'v') === 0 ? 'v' : ''; +$version = $prefix . Preg::replace('{(\.9{7})+}', '.x', $parsedBranch); +} + +$cachedPackage = $this->getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose, $driver->getRootIdentifier() === $branch); +if ($cachedPackage) { +$this->addPackage($cachedPackage); + +continue; +} +if ($cachedPackage === false) { +$this->emptyReferences[] = $identifier; + +continue; +} + +try { +$data = $driver->getComposerInformation($identifier); +if (null === $data) { +if ($isVeryVerbose) { +$this->io->writeError('Skipped branch '.$branch.', no composer file'); +} +$this->emptyReferences[] = $identifier; +continue; +} + + +$data['version'] = $version; +$data['version_normalized'] = $parsedBranch; + +unset($data['default-branch']); +if ($driver->getRootIdentifier() === $branch) { +$data['default-branch'] = true; +} + +if ($isVeryVerbose) { +$this->io->writeError('Importing branch '.$branch.' ('.$data['version'].')'); +} + +$packageData = $this->preProcess($driver, $data, $identifier); +$package = $this->loader->load($packageData); +if ($this->loader instanceof ValidatingArrayLoader && \count($this->loader->getWarnings()) > 0) { +throw new InvalidPackageException($this->loader->getErrors(), $this->loader->getWarnings(), $packageData); +} +$this->addPackage($package); +} catch (TransportException $e) { +$this->versionTransportExceptions['branches'][$branch] = $e; +if ($e->getCode() === 404) { +$this->emptyReferences[] = $identifier; +} +if ($this->shouldRethrowTransportException($e)) { +throw $e; +} +if ($isVeryVerbose) { +$this->io->writeError('Skipped branch '.$branch.', no composer file was found (' . $e->getCode() . ' HTTP status code)'); +} +continue; +} catch (\Exception $e) { +if (!$isVeryVerbose) { +$this->io->writeError(''); +} +$this->branchErrorOccurred = true; +$this->io->writeError('Skipped branch '.$branch.', '.$e->getMessage().''); +$this->io->writeError(''); +continue; +} +} +$driver->cleanup(); + +if (!$isVeryVerbose) { +$this->io->overwriteError('', false); +} + +if (!$this->getPackages()) { +throw new InvalidRepositoryException('No valid composer.json was found in any branch or tag of '.$this->url.', could not load a package from it.'); +} +} + + + + + + +protected function preProcess(VcsDriverInterface $driver, array $data, string $identifier): array +{ + + + +$dataPackageName = $data['name'] ?? null; +$data['name'] = $this->packageName ?: $dataPackageName; + +if (!isset($data['dist'])) { +$data['dist'] = $driver->getDist($identifier); +} +if (!isset($data['source'])) { +$data['source'] = $driver->getSource($identifier); +} + +return $data; +} + + + + +private function validateBranch(string $branch) +{ +try { +$normalizedBranch = $this->versionParser->normalizeBranch($branch); + + +$this->versionParser->parseConstraints($normalizedBranch); + +return $normalizedBranch; +} catch (\Exception $e) { +} + +return false; +} + + + + +private function validateTag(string $version) +{ +try { +return $this->versionParser->normalize($version); +} catch (\Exception $e) { +} + +return false; +} + + + + +private function getCachedPackageVersion(string $version, string $identifier, bool $isVerbose, bool $isVeryVerbose, bool $isDefaultBranch = false) +{ +if (!$this->versionCache) { +return null; +} + +$cachedPackage = $this->versionCache->getVersionPackage($version, $identifier); +if ($cachedPackage === false) { +if ($isVeryVerbose) { +$this->io->writeError('Skipped '.$version.', no composer file (cached from ref '.$identifier.')'); +} + +return false; +} + +if ($cachedPackage) { +$msg = 'Found cached composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $version . ')'; +if ($isVeryVerbose) { +$this->io->writeError($msg); +} elseif ($isVerbose) { +$this->io->overwriteError($msg, false); +} + +unset($cachedPackage['default-branch']); +if ($isDefaultBranch) { +$cachedPackage['default-branch'] = true; +} + +if ($existingPackage = $this->findPackage($cachedPackage['name'], new Constraint('=', $cachedPackage['version_normalized']))) { +if ($isVeryVerbose) { +$this->io->writeError('Skipped cached version '.$version.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$cachedPackage['version_normalized'].' internally'); +} +$cachedPackage = null; +} +} + +if ($cachedPackage) { +return $this->loader->load($cachedPackage); +} + +return null; +} + +private function shouldRethrowTransportException(TransportException $e): bool +{ +return in_array($e->getCode(), [401, 403, 429], true) || $e->getCode() >= 500; +} +} diff --git a/composer/src/Composer/Repository/VersionCacheInterface.php b/composer/src/Composer/Repository/VersionCacheInterface.php new file mode 100644 index 000000000..e26591d96 --- /dev/null +++ b/composer/src/Composer/Repository/VersionCacheInterface.php @@ -0,0 +1,21 @@ +devMode; +} + + + + +public function setDevPackageNames(array $devPackageNames) +{ +$this->devPackageNames = $devPackageNames; +} + + + + +public function getDevPackageNames() +{ +return $this->devPackageNames; +} + + + + +public function write(bool $devMode, InstallationManager $installationManager) +{ +$this->devMode = $devMode; +} + + + + +public function reload() +{ +$this->devMode = null; +} +} diff --git a/composer/src/Composer/Repository/WritableRepositoryInterface.php b/composer/src/Composer/Repository/WritableRepositoryInterface.php new file mode 100644 index 000000000..4a0cd8e49 --- /dev/null +++ b/composer/src/Composer/Repository/WritableRepositoryInterface.php @@ -0,0 +1,73 @@ +composer = $composer; +$this->io = $io; +$this->devMode = $devMode; +} + + + + +public function getComposer(): Composer +{ +return $this->composer; +} + + + + +public function getIO(): IOInterface +{ +return $this->io; +} + + + + +public function isDevMode(): bool +{ +return $this->devMode; +} + + + + + + +public function getOriginatingEvent(): ?BaseEvent +{ +return $this->originatingEvent; +} + + + + + + +public function setOriginatingEvent(BaseEvent $event): self +{ +$this->originatingEvent = $this->calculateOriginatingEvent($event); + +return $this; +} + + + + +private function calculateOriginatingEvent(BaseEvent $event): BaseEvent +{ +if ($event instanceof Event && $event->getOriginatingEvent()) { +return $this->calculateOriginatingEvent($event->getOriginatingEvent()); +} + +return $event; +} +} diff --git a/composer/src/Composer/Script/ScriptEvents.php b/composer/src/Composer/Script/ScriptEvents.php new file mode 100644 index 000000000..dfe1e7485 --- /dev/null +++ b/composer/src/Composer/Script/ScriptEvents.php @@ -0,0 +1,131 @@ +httpDownloader = $httpDownloader; +$this->config = $config; +} + +public function getChannel(): string +{ +if ($this->channel) { +return $this->channel; +} + +$channelFile = $this->config->get('home').'/update-channel'; +if (file_exists($channelFile)) { +$channel = trim(file_get_contents($channelFile)); +if (in_array($channel, ['stable', 'preview', 'snapshot', '2.2'], true)) { +return $this->channel = $channel; +} +} + +return $this->channel = 'stable'; +} + +public function setChannel(string $channel, ?IOInterface $io = null): void +{ +if (!in_array($channel, self::$channels, true)) { +throw new \InvalidArgumentException('Invalid channel '.$channel.', must be one of: ' . implode(', ', self::$channels)); +} + +$channelFile = $this->config->get('home').'/update-channel'; +$this->channel = $channel; + + +$storedChannel = Preg::isMatch('{^\d+$}D', $channel) ? 'stable' : $channel; +$previouslyStored = file_exists($channelFile) ? trim((string) file_get_contents($channelFile)) : null; +file_put_contents($channelFile, $storedChannel.PHP_EOL); + +if ($io !== null && $previouslyStored !== $storedChannel) { +$io->writeError('Storing "'.$storedChannel.'" as default update channel for the next self-update run.'); +} +} + + + + +public function getLatest(?string $channel = null): array +{ +$versions = $this->getVersionsData(); + +foreach ($versions[$channel ?: $this->getChannel()] as $version) { +if ($version['min-php'] <= PHP_VERSION_ID) { +return $version; +} +} + +throw new \UnexpectedValueException('There is no version of Composer available for your PHP version ('.PHP_VERSION.')'); +} + + + + +private function getVersionsData(): array +{ +if (null === $this->versionsData) { +if ($this->config->get('disable-tls') === true) { +$protocol = 'http'; +} else { +$protocol = 'https'; +} + +$this->versionsData = $this->httpDownloader->get($protocol . '://getcomposer.org/versions')->decodeJson(); +} + +return $this->versionsData; +} +} diff --git a/composer/src/Composer/Util/AuthHelper.php b/composer/src/Composer/Util/AuthHelper.php new file mode 100644 index 000000000..782cca0e8 --- /dev/null +++ b/composer/src/Composer/Util/AuthHelper.php @@ -0,0 +1,300 @@ +io = $io; +$this->config = $config; +} + + + + +public function storeAuth(string $origin, $storeAuth): void +{ +$store = false; +$configSource = $this->config->getAuthConfigSource(); +if ($storeAuth === true) { +$store = $configSource; +} elseif ($storeAuth === 'prompt') { +$answer = $this->io->askAndValidate( +'Do you want to store credentials for '.$origin.' in '.$configSource->getName().' ? [Yn] ', +static function ($value): string { +$input = strtolower(substr(trim($value), 0, 1)); +if (in_array($input, ['y','n'])) { +return $input; +} +throw new \RuntimeException('Please answer (y)es or (n)o'); +}, +null, +'y' +); + +if ($answer === 'y') { +$store = $configSource; +} +} +if ($store) { +$store->addConfigSetting( +'http-basic.'.$origin, +$this->io->getAuthentication($origin) +); +} +} + + + + + + + + + + +public function promptAuthIfNeeded(string $url, string $origin, int $statusCode, ?string $reason = null, array $headers = [], int $retryCount = 0): array +{ +$storeAuth = false; + +if (in_array($origin, $this->config->get('github-domains'), true)) { +$gitHubUtil = new GitHub($this->io, $this->config, null); +$message = "\n"; + +$rateLimited = $gitHubUtil->isRateLimited($headers); +$requiresSso = $gitHubUtil->requiresSso($headers); + +if ($requiresSso) { +$ssoUrl = $gitHubUtil->getSsoUrl($headers); +$message = 'GitHub API token requires SSO authorization. Authorize this token at ' . $ssoUrl . "\n"; +$this->io->writeError($message); +if (!$this->io->isInteractive()) { +throw new TransportException('Could not authenticate against ' . $origin, 403); +} +$this->io->ask('After authorizing your token, confirm that you would like to retry the request'); + +return ['retry' => true, 'storeAuth' => $storeAuth]; +} + +if ($rateLimited) { +$rateLimit = $gitHubUtil->getRateLimit($headers); +if ($this->io->hasAuthentication($origin)) { +$message = 'Review your configured GitHub OAuth token or enter a new one to go over the API rate limit.'; +} else { +$message = 'Create a GitHub OAuth token to go over the API rate limit.'; +} + +$message = sprintf( +'GitHub API limit (%d calls/hr) is exhausted, could not fetch '.$url.'. '.$message.' You can also wait until %s for the rate limit to reset.', +$rateLimit['limit'], +$rateLimit['reset'] +)."\n"; +} else { +$message .= 'Could not fetch '.$url.', please '; +if ($this->io->hasAuthentication($origin)) { +$message .= 'review your configured GitHub OAuth token or enter a new one to access private repos'; +} else { +$message .= 'create a GitHub OAuth token to access private repos'; +} +} + +if (!$gitHubUtil->authorizeOAuth($origin) +&& (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively($origin, $message)) +) { +throw new TransportException('Could not authenticate against '.$origin, 401); +} +} elseif (in_array($origin, $this->config->get('gitlab-domains'), true)) { +$message = "\n".'Could not fetch '.$url.', enter your ' . $origin . ' credentials ' .($statusCode === 401 ? 'to access private repos' : 'to go over the API rate limit'); +$gitLabUtil = new GitLab($this->io, $this->config, null); + +$auth = null; +if ($this->io->hasAuthentication($origin)) { +$auth = $this->io->getAuthentication($origin); +if (in_array($auth['password'], ['gitlab-ci-token', 'private-token', 'oauth2'], true)) { +throw new TransportException("Invalid credentials for '" . $url . "', aborting.", $statusCode); +} +} + +if (!$gitLabUtil->authorizeOAuth($origin) +&& (!$this->io->isInteractive() || !$gitLabUtil->authorizeOAuthInteractively(parse_url($url, PHP_URL_SCHEME), $origin, $message)) +) { +throw new TransportException('Could not authenticate against '.$origin, 401); +} + +if ($auth !== null && $this->io->hasAuthentication($origin)) { +if ($auth === $this->io->getAuthentication($origin)) { +throw new TransportException("Invalid credentials for '" . $url . "', aborting.", $statusCode); +} +} +} elseif ($origin === 'bitbucket.org' || $origin === 'api.bitbucket.org') { +$askForOAuthToken = true; +$origin = 'bitbucket.org'; +if ($this->io->hasAuthentication($origin)) { +$auth = $this->io->getAuthentication($origin); +if ($auth['username'] !== 'x-token-auth') { +$bitbucketUtil = new Bitbucket($this->io, $this->config); +$accessToken = $bitbucketUtil->requestToken($origin, $auth['username'], $auth['password']); +if (!empty($accessToken)) { +$this->io->setAuthentication($origin, 'x-token-auth', $accessToken); +$askForOAuthToken = false; +} +} else { +throw new TransportException('Could not authenticate against ' . $origin, 401); +} +} + +if ($askForOAuthToken) { +$message = "\n".'Could not fetch ' . $url . ', please create a bitbucket OAuth token to ' . (($statusCode === 401 || $statusCode === 403) ? 'access private repos' : 'go over the API rate limit'); +$bitBucketUtil = new Bitbucket($this->io, $this->config); +if (!$bitBucketUtil->authorizeOAuth($origin) +&& (!$this->io->isInteractive() || !$bitBucketUtil->authorizeOAuthInteractively($origin, $message)) +) { +throw new TransportException('Could not authenticate against ' . $origin, 401); +} +} +} else { + +if ($statusCode === 404) { +return ['retry' => false, 'storeAuth' => false]; +} + + +if (!$this->io->isInteractive()) { +if ($statusCode === 401) { +$message = "The '" . $url . "' URL required authentication (HTTP 401).\nYou must be using the interactive console to authenticate"; +} elseif ($statusCode === 403) { +$message = "The '" . $url . "' URL could not be accessed (HTTP 403): " . $reason; +} else { +$message = "Unknown error code '" . $statusCode . "', reason: " . $reason; +} + +throw new TransportException($message, $statusCode); +} + + +if ($this->io->hasAuthentication($origin)) { + + +if ($retryCount === 0) { +return ['retry' => true, 'storeAuth' => false]; +} + +throw new TransportException("Invalid credentials (HTTP $statusCode) for '$url', aborting.", $statusCode); +} + +$this->io->writeError(' Authentication required ('.$origin.'):'); +$username = $this->io->ask(' Username: '); +$password = $this->io->askAndHideAnswer(' Password: '); +$this->io->setAuthentication($origin, $username, $password); +$storeAuth = $this->config->get('store-auths'); +} + +return ['retry' => true, 'storeAuth' => $storeAuth]; +} + + + + + + +public function addAuthenticationHeader(array $headers, string $origin, string $url): array +{ +if ($this->io->hasAuthentication($origin)) { +$authenticationDisplayMessage = null; +$auth = $this->io->getAuthentication($origin); +if ($auth['password'] === 'bearer') { +$headers[] = 'Authorization: Bearer '.$auth['username']; +} elseif ('github.com' === $origin && 'x-oauth-basic' === $auth['password']) { + +if (Preg::isMatch('{^https?://api\.github\.com/}', $url)) { +$headers[] = 'Authorization: token '.$auth['username']; +$authenticationDisplayMessage = 'Using GitHub token authentication'; +} +} elseif ( +in_array($origin, $this->config->get('gitlab-domains'), true) +&& in_array($auth['password'], ['oauth2', 'private-token', 'gitlab-ci-token'], true) +) { +if ($auth['password'] === 'oauth2') { +$headers[] = 'Authorization: Bearer '.$auth['username']; +$authenticationDisplayMessage = 'Using GitLab OAuth token authentication'; +} else { +$headers[] = 'PRIVATE-TOKEN: '.$auth['username']; +$authenticationDisplayMessage = 'Using GitLab private token authentication'; +} +} elseif ( +'bitbucket.org' === $origin +&& $url !== Bitbucket::OAUTH2_ACCESS_TOKEN_URL +&& 'x-token-auth' === $auth['username'] +) { +if (!$this->isPublicBitBucketDownload($url)) { +$headers[] = 'Authorization: Bearer ' . $auth['password']; +$authenticationDisplayMessage = 'Using Bitbucket OAuth token authentication'; +} +} else { +$authStr = base64_encode($auth['username'] . ':' . $auth['password']); +$headers[] = 'Authorization: Basic '.$authStr; +$authenticationDisplayMessage = 'Using HTTP basic authentication with username "' . $auth['username'] . '"'; +} + +if ($authenticationDisplayMessage && (!isset($this->displayedOriginAuthentications[$origin]) || $this->displayedOriginAuthentications[$origin] !== $authenticationDisplayMessage)) { +$this->io->writeError($authenticationDisplayMessage, true, IOInterface::DEBUG); +$this->displayedOriginAuthentications[$origin] = $authenticationDisplayMessage; +} +} elseif (in_array($origin, ['api.bitbucket.org', 'api.github.com'], true)) { +return $this->addAuthenticationHeader($headers, str_replace('api.', '', $origin), $url); +} + +return $headers; +} + + + + + + + + +public function isPublicBitBucketDownload(string $urlToBitBucketFile): bool +{ +$domain = parse_url($urlToBitBucketFile, PHP_URL_HOST); +if (strpos($domain, 'bitbucket.org') === false) { + + +return true; +} + +$path = parse_url($urlToBitBucketFile, PHP_URL_PATH); + + + +$pathParts = explode('/', $path); + +return count($pathParts) >= 4 && $pathParts[3] === 'downloads'; +} +} diff --git a/composer/src/Composer/Util/Bitbucket.php b/composer/src/Composer/Util/Bitbucket.php new file mode 100644 index 000000000..2e7e8aae3 --- /dev/null +++ b/composer/src/Composer/Util/Bitbucket.php @@ -0,0 +1,256 @@ +io = $io; +$this->config = $config; +$this->process = $process ?: new ProcessExecutor($io); +$this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); +$this->time = $time; +} + +public function getToken(): string +{ +if (!isset($this->token['access_token'])) { +return ''; +} + +return $this->token['access_token']; +} + + + + + + + +public function authorizeOAuth(string $originUrl): bool +{ +if ($originUrl !== 'bitbucket.org') { +return false; +} + + +if (0 === $this->process->execute('git config bitbucket.accesstoken', $output)) { +$this->io->setAuthentication($originUrl, 'x-token-auth', trim($output)); + +return true; +} + +return false; +} + +private function requestAccessToken(): bool +{ +try { +$response = $this->httpDownloader->get(self::OAUTH2_ACCESS_TOKEN_URL, [ +'retry-auth-failure' => false, +'http' => [ +'method' => 'POST', +'content' => 'grant_type=client_credentials', +], +]); + +$token = $response->decodeJson(); +if (!isset($token['expires_in']) || !isset($token['access_token'])) { +throw new \LogicException('Expected a token configured with expires_in and access_token present, got '.json_encode($token)); +} + +$this->token = $token; +} catch (TransportException $e) { +if ($e->getCode() === 400) { +$this->io->writeError('Invalid OAuth consumer provided.'); +$this->io->writeError('This can have three reasons:'); +$this->io->writeError('1. You are authenticating with a bitbucket username/password combination'); +$this->io->writeError('2. You are using an OAuth consumer, but didn\'t configure a (dummy) callback url'); +$this->io->writeError('3. You are using an OAuth consumer, but didn\'t configure it as private consumer'); + +return false; +} +if (in_array($e->getCode(), [403, 401])) { +$this->io->writeError('Invalid OAuth consumer provided.'); +$this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); + +return false; +} + +throw $e; +} + +return true; +} + + + + + + + + + + +public function authorizeOAuthInteractively(string $originUrl, ?string $message = null): bool +{ +if ($message) { +$this->io->writeError($message); +} + +$localAuthConfig = $this->config->getLocalAuthConfigSource(); +$url = 'https://support.atlassian.com/bitbucket-cloud/docs/use-oauth-on-bitbucket-cloud/'; +$this->io->writeError(sprintf('Follow the instructions on %s', $url)); +$this->io->writeError(sprintf('to create a consumer. It will be stored in "%s" for future use by Composer.', ($localAuthConfig !== null ? $localAuthConfig->getName() . ' OR ' : '') . $this->config->getAuthConfigSource()->getName())); +$this->io->writeError('Ensure you enter a "Callback URL" (http://example.com is fine) or it will not be possible to create an Access Token (this callback url will not be used by composer)'); + +$storeInLocalAuthConfig = false; +if ($localAuthConfig !== null) { +$storeInLocalAuthConfig = $this->io->askConfirmation('A local auth config source was found, do you want to store the token there?', true); +} + +$consumerKey = trim((string) $this->io->askAndHideAnswer('Consumer Key (hidden): ')); + +if (!$consumerKey) { +$this->io->writeError('No consumer key given, aborting.'); +$this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); + +return false; +} + +$consumerSecret = trim((string) $this->io->askAndHideAnswer('Consumer Secret (hidden): ')); + +if (!$consumerSecret) { +$this->io->writeError('No consumer secret given, aborting.'); +$this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); + +return false; +} + +$this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); + +if (!$this->requestAccessToken()) { +return false; +} + + +$authConfigSource = $storeInLocalAuthConfig && $localAuthConfig !== null ? $localAuthConfig : $this->config->getAuthConfigSource(); +$this->storeInAuthConfig($authConfigSource, $originUrl, $consumerKey, $consumerSecret); + + +$this->config->getAuthConfigSource()->removeConfigSetting('http-basic.' . $originUrl); + +$this->io->writeError('Consumer stored successfully.'); + +return true; +} + + + + +public function requestToken(string $originUrl, string $consumerKey, string $consumerSecret): string +{ +if ($this->token !== null || $this->getTokenFromConfig($originUrl)) { +return $this->token['access_token']; +} + +$this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); +if (!$this->requestAccessToken()) { +return ''; +} + +$this->storeInAuthConfig($this->config->getLocalAuthConfigSource() ?? $this->config->getAuthConfigSource(), $originUrl, $consumerKey, $consumerSecret); + +if (!isset($this->token['access_token'])) { +throw new \LogicException('Failed to initialize token above'); +} + +return $this->token['access_token']; +} + + + + +private function storeInAuthConfig(Config\ConfigSourceInterface $authConfigSource, string $originUrl, string $consumerKey, string $consumerSecret): void +{ +$this->config->getConfigSource()->removeConfigSetting('bitbucket-oauth.'.$originUrl); + +if (null === $this->token || !isset($this->token['expires_in'])) { +throw new \LogicException('Expected a token configured with expires_in present, got '.json_encode($this->token)); +} + +$time = null === $this->time ? time() : $this->time; +$consumer = [ +"consumer-key" => $consumerKey, +"consumer-secret" => $consumerSecret, +"access-token" => $this->token['access_token'], +"access-token-expiration" => $time + $this->token['expires_in'], +]; + +$this->config->getAuthConfigSource()->addConfigSetting('bitbucket-oauth.'.$originUrl, $consumer); +} + + + + +private function getTokenFromConfig(string $originUrl): bool +{ +$authConfig = $this->config->get('bitbucket-oauth'); + +if ( +!isset($authConfig[$originUrl]['access-token'], $authConfig[$originUrl]['access-token-expiration']) +|| time() > $authConfig[$originUrl]['access-token-expiration'] +) { +return false; +} + +$this->token = [ +'access_token' => $authConfig[$originUrl]['access-token'], +]; + +return true; +} +} diff --git a/composer/src/Composer/Util/ComposerMirror.php b/composer/src/Composer/Util/ComposerMirror.php new file mode 100644 index 000000000..930cced24 --- /dev/null +++ b/composer/src/Composer/Util/ComposerMirror.php @@ -0,0 +1,77 @@ +io = $io; +} + + + + + + + + + + +public function validate(string $file, int $arrayLoaderValidationFlags = ValidatingArrayLoader::CHECK_ALL, int $flags = self::CHECK_VERSION): array +{ +$errors = []; +$publishErrors = []; +$warnings = []; + + +$laxValid = false; +$manifest = null; +try { +$json = new JsonFile($file, null, $this->io); +$manifest = $json->read(); + +$json->validateSchema(JsonFile::LAX_SCHEMA); +$laxValid = true; +$json->validateSchema(); +} catch (JsonValidationException $e) { +foreach ($e->getErrors() as $message) { +if ($laxValid) { +$publishErrors[] = $message; +} else { +$errors[] = $message; +} +} +} catch (\Exception $e) { +$errors[] = $e->getMessage(); + +return [$errors, $publishErrors, $warnings]; +} + +if (is_array($manifest)) { +$jsonParser = new JsonParser(); +try { +$jsonParser->parse((string) file_get_contents($file), JsonParser::DETECT_KEY_CONFLICTS); +} catch (DuplicateKeyException $e) { +$details = $e->getDetails(); +$warnings[] = 'Key '.$details['key'].' is a duplicate in '.$file.' at line '.$details['line']; +} +} + + +if (empty($manifest['license'])) { +$warnings[] = 'No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.'; +} else { +$licenses = (array) $manifest['license']; + + +foreach ($licenses as $key => $license) { +if ('proprietary' === $license) { +unset($licenses[$key]); +} +} + +$licenseValidator = new SpdxLicenses(); +foreach ($licenses as $license) { +$spdxLicense = $licenseValidator->getLicenseByIdentifier($license); +if ($spdxLicense && $spdxLicense[3]) { +if (Preg::isMatch('{^[AL]?GPL-[123](\.[01])?\+$}i', $license)) { +$warnings[] = sprintf( +'License "%s" is a deprecated SPDX license identifier, use "'.str_replace('+', '', $license).'-or-later" instead', +$license +); +} elseif (Preg::isMatch('{^[AL]?GPL-[123](\.[01])?$}i', $license)) { +$warnings[] = sprintf( +'License "%s" is a deprecated SPDX license identifier, use "'.$license.'-only" or "'.$license.'-or-later" instead', +$license +); +} else { +$warnings[] = sprintf( +'License "%s" is a deprecated SPDX license identifier, see https://spdx.org/licenses/', +$license +); +} +} +} +} + +if (($flags & self::CHECK_VERSION) && isset($manifest['version'])) { +$warnings[] = 'The version field is present, it is recommended to leave it out if the package is published on Packagist.'; +} + +if (!empty($manifest['name']) && Preg::isMatch('{[A-Z]}', $manifest['name'])) { +$suggestName = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $manifest['name']); +$suggestName = strtolower($suggestName); + +$publishErrors[] = sprintf( +'Name "%s" does not match the best practice (e.g. lower-cased/with-dashes). We suggest using "%s" instead. As such you will not be able to submit it to Packagist.', +$manifest['name'], +$suggestName +); +} + +if (!empty($manifest['type']) && $manifest['type'] === 'composer-installer') { +$warnings[] = "The package type 'composer-installer' is deprecated. Please distribute your custom installers as plugins from now on. See https://getcomposer.org/doc/articles/plugins.md for plugin documentation."; +} + + +if (isset($manifest['require'], $manifest['require-dev'])) { +$requireOverrides = array_intersect_key($manifest['require'], $manifest['require-dev']); + +if (!empty($requireOverrides)) { +$plural = (count($requireOverrides) > 1) ? 'are' : 'is'; +$warnings[] = implode(', ', array_keys($requireOverrides)). " {$plural} required both in require and require-dev, this can lead to unexpected behavior"; +} +} + + +foreach (['provide', 'replace'] as $linkType) { +if (isset($manifest[$linkType])) { +foreach (['require', 'require-dev'] as $requireType) { +if (isset($manifest[$requireType])) { +foreach ($manifest[$linkType] as $provide => $constraint) { +if (isset($manifest[$requireType][$provide])) { +$warnings[] = 'The package ' . $provide . ' in '.$requireType.' is also listed in '.$linkType.' which satisfies the requirement. Remove it from '.$linkType.' if you wish to install it.'; +} +} +} +} +} +} + + +$require = $manifest['require'] ?? []; +$requireDev = $manifest['require-dev'] ?? []; +$packages = array_merge($require, $requireDev); +foreach ($packages as $package => $version) { +if (Preg::isMatch('/#/', $version)) { +$warnings[] = sprintf( +'The package "%s" is pointing to a commit-ref, this is bad practice and can cause unforeseen issues.', +$package +); +} +} + + +$scriptsDescriptions = $manifest['scripts-descriptions'] ?? []; +$scripts = $manifest['scripts'] ?? []; +foreach ($scriptsDescriptions as $scriptName => $scriptDescription) { +if (!array_key_exists($scriptName, $scripts)) { +$warnings[] = sprintf( +'Description for non-existent script "%s" found in "scripts-descriptions"', +$scriptName +); +} +} + + +if (isset($manifest['autoload']['psr-0'][''])) { +$warnings[] = "Defining autoload.psr-0 with an empty namespace prefix is a bad idea for performance"; +} +if (isset($manifest['autoload']['psr-4'][''])) { +$warnings[] = "Defining autoload.psr-4 with an empty namespace prefix is a bad idea for performance"; +} + +$loader = new ValidatingArrayLoader(new ArrayLoader(), true, null, $arrayLoaderValidationFlags); +try { +if (!isset($manifest['version'])) { +$manifest['version'] = '1.0.0'; +} +if (!isset($manifest['name'])) { +$manifest['name'] = 'dummy/dummy'; +} +$loader->load($manifest); +} catch (InvalidPackageException $e) { +$errors = array_merge($errors, $e->getErrors()); +} + +$warnings = array_merge($warnings, $loader->getWarnings()); + +return [$errors, $publishErrors, $warnings]; +} +} diff --git a/composer/src/Composer/Util/ErrorHandler.php b/composer/src/Composer/Util/ErrorHandler.php new file mode 100644 index 000000000..bac49b0d4 --- /dev/null +++ b/composer/src/Composer/Util/ErrorHandler.php @@ -0,0 +1,82 @@ +writeError('Deprecation Notice: '.$message.' in '.$file.':'.$line.''); +if (self::$io->isVerbose()) { +self::$io->writeError('Stack trace:'); +self::$io->writeError(array_filter(array_map(static function ($a): ?string { +if (isset($a['line'], $a['file'])) { +return ' '.$a['file'].':'.$a['line'].''; +} + +return null; +}, array_slice(debug_backtrace(), 2)))); +} +} + +return true; +} + + + + +public static function register(?IOInterface $io = null): void +{ +set_error_handler([__CLASS__, 'handle']); +error_reporting(E_ALL | E_STRICT); +self::$io = $io; +} +} diff --git a/composer/src/Composer/Util/Filesystem.php b/composer/src/Composer/Util/Filesystem.php new file mode 100644 index 000000000..33c21487a --- /dev/null +++ b/composer/src/Composer/Util/Filesystem.php @@ -0,0 +1,917 @@ +processExecutor = $executor; +} + + + + +public function remove(string $file) +{ +if (is_dir($file)) { +return $this->removeDirectory($file); +} + +if (file_exists($file)) { +return $this->unlink($file); +} + +return false; +} + + + + + + +public function isDirEmpty(string $dir) +{ +$finder = Finder::create() +->ignoreVCS(false) +->ignoreDotFiles(false) +->depth(0) +->in($dir); + +return \count($finder) === 0; +} + + + + +public function emptyDirectory(string $dir, bool $ensureDirectoryExists = true) +{ +if (is_link($dir) && file_exists($dir)) { +$this->unlink($dir); +} + +if ($ensureDirectoryExists) { +$this->ensureDirectoryExists($dir); +} + +if (is_dir($dir)) { +$finder = Finder::create() +->ignoreVCS(false) +->ignoreDotFiles(false) +->depth(0) +->in($dir); + +foreach ($finder as $path) { +$this->remove((string) $path); +} +} +} + + + + + + + + + + +public function removeDirectory(string $directory) +{ +$edgeCaseResult = $this->removeEdgeCases($directory); +if ($edgeCaseResult !== null) { +return $edgeCaseResult; +} + +if (Platform::isWindows()) { +$cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape(realpath($directory))); +} else { +$cmd = sprintf('rm -rf %s', ProcessExecutor::escape($directory)); +} + +$result = $this->getProcess()->execute($cmd, $output) === 0; + + +clearstatcache(); + +if ($result && !is_dir($directory)) { +return true; +} + +return $this->removeDirectoryPhp($directory); +} + + + + + + + + + + +public function removeDirectoryAsync(string $directory) +{ +$edgeCaseResult = $this->removeEdgeCases($directory); +if ($edgeCaseResult !== null) { +return \React\Promise\resolve($edgeCaseResult); +} + +if (Platform::isWindows()) { +$cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape(realpath($directory))); +} else { +$cmd = sprintf('rm -rf %s', ProcessExecutor::escape($directory)); +} + +$promise = $this->getProcess()->executeAsync($cmd); + +return $promise->then(function ($process) use ($directory) { + +clearstatcache(); + +if ($process->isSuccessful()) { +if (!is_dir($directory)) { +return \React\Promise\resolve(true); +} +} + +return \React\Promise\resolve($this->removeDirectoryPhp($directory)); +}); +} + + + + +private function removeEdgeCases(string $directory, bool $fallbackToPhp = true): ?bool +{ +if ($this->isSymlinkedDirectory($directory)) { +return $this->unlinkSymlinkedDirectory($directory); +} + +if ($this->isJunction($directory)) { +return $this->removeJunction($directory); +} + +if (is_link($directory)) { +return unlink($directory); +} + +if (!is_dir($directory) || !file_exists($directory)) { +return true; +} + +if (Preg::isMatch('{^(?:[a-z]:)?[/\\\\]+$}i', $directory)) { +throw new \RuntimeException('Aborting an attempted deletion of '.$directory.', this was probably not intended, if it is a real use case please report it.'); +} + +if (!\function_exists('proc_open') && $fallbackToPhp) { +return $this->removeDirectoryPhp($directory); +} + +return null; +} + + + + + + + + + + +public function removeDirectoryPhp(string $directory) +{ +$edgeCaseResult = $this->removeEdgeCases($directory, false); +if ($edgeCaseResult !== null) { +return $edgeCaseResult; +} + +try { +$it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); +} catch (\UnexpectedValueException $e) { + + +clearstatcache(); +usleep(100000); +if (!is_dir($directory)) { +return true; +} +$it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); +} +$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + +foreach ($ri as $file) { +if ($file->isDir()) { +$this->rmdir($file->getPathname()); +} else { +$this->unlink($file->getPathname()); +} +} + + +unset($ri, $it, $file); + +return $this->rmdir($directory); +} + + + + +public function ensureDirectoryExists(string $directory) +{ +if (!is_dir($directory)) { +if (file_exists($directory)) { +throw new \RuntimeException( +$directory.' exists and is not a directory.' +); +} +if (!@mkdir($directory, 0777, true)) { +throw new \RuntimeException( +$directory.' does not exist and could not be created.' +); +} +} +} + + + + + + + +public function unlink(string $path) +{ +$unlinked = @$this->unlinkImplementation($path); +if (!$unlinked) { + +if (Platform::isWindows()) { +usleep(350000); +$unlinked = @$this->unlinkImplementation($path); +} + +if (!$unlinked) { +$error = error_get_last(); +$message = 'Could not delete '.$path.': ' . ($error['message'] ?? ''); +if (Platform::isWindows()) { +$message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; +} + +throw new \RuntimeException($message); +} +} + +return true; +} + + + + + + + +public function rmdir(string $path) +{ +$deleted = @rmdir($path); +if (!$deleted) { + +if (Platform::isWindows()) { +usleep(350000); +$deleted = @rmdir($path); +} + +if (!$deleted) { +$error = error_get_last(); +$message = 'Could not delete '.$path.': ' . ($error['message'] ?? ''); +if (Platform::isWindows()) { +$message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; +} + +throw new \RuntimeException($message); +} +} + +return true; +} + + + + + + + + + +public function copyThenRemove(string $source, string $target) +{ +$this->copy($source, $target); +if (!is_dir($source)) { +$this->unlink($source); + +return; +} + +$this->removeDirectoryPhp($source); +} + + + + + + +public function copy(string $source, string $target) +{ +if (!is_dir($source)) { +return copy($source, $target); +} + +$it = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS); +$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST); +$this->ensureDirectoryExists($target); + +$result = true; +foreach ($ri as $file) { +$targetPath = $target . DIRECTORY_SEPARATOR . $ri->getSubPathname(); +if ($file->isDir()) { +$this->ensureDirectoryExists($targetPath); +} else { +$result = $result && copy($file->getPathname(), $targetPath); +} +} + +return $result; +} + + + + +public function rename(string $source, string $target) +{ +if (true === @rename($source, $target)) { +return; +} + +if (!\function_exists('proc_open')) { +$this->copyThenRemove($source, $target); + +return; +} + +if (Platform::isWindows()) { + +$command = sprintf('xcopy %s %s /E /I /Q /Y', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); +$result = $this->getProcess()->execute($command, $output); + + +clearstatcache(); + +if (0 === $result) { +$this->remove($source); + +return; +} +} else { + + +$command = sprintf('mv %s %s', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); +$result = $this->getProcess()->execute($command, $output); + + +clearstatcache(); + +if (0 === $result) { +return; +} +} + +$this->copyThenRemove($source, $target); +} + + + + + + + + +public function findShortestPath(string $from, string $to, bool $directories = false) +{ +if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { +throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); +} + +$from = $this->normalizePath($from); +$to = $this->normalizePath($to); + +if ($directories) { +$from = rtrim($from, '/') . '/dummy_file'; +} + +if (\dirname($from) === \dirname($to)) { +return './'.basename($to); +} + +$commonPath = $to; +while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !Preg::isMatch('{^[A-Z]:/?$}i', $commonPath)) { +$commonPath = strtr(\dirname($commonPath), '\\', '/'); +} + + +if (0 !== strpos($from, $commonPath)) { +return $to; +} + +$commonPath = rtrim($commonPath, '/') . '/'; +$sourcePathDepth = substr_count((string) substr($from, \strlen($commonPath)), '/'); +$commonPathCode = str_repeat('../', $sourcePathDepth); + + +if ('/' === $commonPath && $sourcePathDepth > 1) { +return $to; +} + +$result = $commonPathCode . substr($to, \strlen($commonPath)); +if (\strlen($result) === 0) { +return './'; +} + +return $result; +} + + + + + + + + +public function findShortestPathCode(string $from, string $to, bool $directories = false, bool $staticCode = false) +{ +if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { +throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); +} + +$from = $this->normalizePath($from); +$to = $this->normalizePath($to); + +if ($from === $to) { +return $directories ? '__DIR__' : '__FILE__'; +} + +$commonPath = $to; +while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !Preg::isMatch('{^[A-Z]:/?$}i', $commonPath) && '.' !== $commonPath) { +$commonPath = strtr(\dirname($commonPath), '\\', '/'); +} + + +if (0 !== strpos($from, $commonPath) || '.' === $commonPath) { +return var_export($to, true); +} + +$commonPath = rtrim($commonPath, '/') . '/'; +if (str_starts_with($to, $from.'/')) { +return '__DIR__ . '.var_export((string) substr($to, \strlen($from)), true); +} +$sourcePathDepth = substr_count((string) substr($from, \strlen($commonPath)), '/') + (int) $directories; + + +if ('/' === $commonPath && $sourcePathDepth > 1) { +return var_export($to, true); +} + +if ($staticCode) { +$commonPathCode = "__DIR__ . '".str_repeat('/..', $sourcePathDepth)."'"; +} else { +$commonPathCode = str_repeat('dirname(', $sourcePathDepth).'__DIR__'.str_repeat(')', $sourcePathDepth); +} +$relTarget = (string) substr($to, \strlen($commonPath)); + +return $commonPathCode . (\strlen($relTarget) > 0 ? '.' . var_export('/' . $relTarget, true) : ''); +} + + + + + + +public function isAbsolutePath(string $path) +{ +return strpos($path, '/') === 0 || substr($path, 1, 1) === ':' || strpos($path, '\\\\') === 0; +} + + + + + + + + + +public function size(string $path) +{ +if (!file_exists($path)) { +throw new \RuntimeException("$path does not exist."); +} +if (is_dir($path)) { +return $this->directorySize($path); +} + +return (int) filesize($path); +} + + + + + + + + +public function normalizePath(string $path) +{ +$parts = []; +$path = strtr($path, '\\', '/'); +$prefix = ''; +$absolute = ''; + + +if (strpos($path, '//') === 0 && \strlen($path) > 2) { +$absolute = '//'; +$path = substr($path, 2); +} + + +if (Preg::isMatchStrictGroups('{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix', $path, $match)) { +$prefix = $match[1]; +$path = substr($path, \strlen($prefix)); +} + +if (strpos($path, '/') === 0) { +$absolute = '/'; +$path = substr($path, 1); +} + +$up = false; +foreach (explode('/', $path) as $chunk) { +if ('..' === $chunk && (\strlen($absolute) > 0 || $up)) { +array_pop($parts); +$up = !(\count($parts) === 0 || '..' === end($parts)); +} elseif ('.' !== $chunk && '' !== $chunk) { +$parts[] = $chunk; +$up = '..' !== $chunk; +} +} + + +$prefix = Preg::replaceCallback('{(^|://)[a-z]:$}i', static function (array $m) { +assert(is_string($m[0])); +return strtoupper($m[0]); +}, $prefix); + +return $prefix.$absolute.implode('/', $parts); +} + + + + + + + + +public static function trimTrailingSlash(string $path) +{ +if (!Preg::isMatch('{^[/\\\\]+$}', $path)) { +$path = rtrim($path, '/\\'); +} + +return $path; +} + + + + + + +public static function isLocalPath(string $path) +{ +return Preg::isMatch('{^(file://(?!//)|/(?!/)|/?[a-z]:[\\\\/]|\.\.[\\\\/]|[a-z0-9_.-]+[\\\\/])}i', $path); +} + + + + +public static function getPlatformPath(string $path) +{ +if (Platform::isWindows()) { +$path = Preg::replace('{^(?:file:///([a-z]):?/)}i', 'file://$1:/', $path); +} + +return Preg::replace('{^file://}i', '', $path); +} + + + + + + + + + +public static function isReadable(string $path) +{ +if (is_readable($path)) { +return true; +} + +if (is_file($path)) { +return false !== Silencer::call('file_get_contents', $path, false, null, 0, 1); +} + +if (is_dir($path)) { +return false !== Silencer::call('opendir', $path); +} + + +return false; +} + + + + +protected function directorySize(string $directory) +{ +$it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); +$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); + +$size = 0; +foreach ($ri as $file) { +if ($file->isFile()) { +$size += $file->getSize(); +} +} + +return $size; +} + + + + +protected function getProcess() +{ +if (null === $this->processExecutor) { +$this->processExecutor = new ProcessExecutor(); +} + +return $this->processExecutor; +} + + + + + + +private function unlinkImplementation(string $path): bool +{ +if (Platform::isWindows() && is_dir($path) && is_link($path)) { +return rmdir($path); +} + +return unlink($path); +} + + + + + + + + +public function relativeSymlink(string $target, string $link) +{ +if (!function_exists('symlink')) { +return false; +} + +$cwd = Platform::getCwd(); + +$relativePath = $this->findShortestPath($link, $target); +chdir(\dirname($link)); +$result = @symlink($relativePath, $link); + +chdir($cwd); + +return $result; +} + + + + + + +public function isSymlinkedDirectory(string $directory) +{ +if (!is_dir($directory)) { +return false; +} + +$resolved = $this->resolveSymlinkedDirectorySymlink($directory); + +return is_link($resolved); +} + +private function unlinkSymlinkedDirectory(string $directory): bool +{ +$resolved = $this->resolveSymlinkedDirectorySymlink($directory); + +return $this->unlink($resolved); +} + + + + + + + + +private function resolveSymlinkedDirectorySymlink(string $pathname): string +{ +if (!is_dir($pathname)) { +return $pathname; +} + +$resolved = rtrim($pathname, '/'); + +if (0 === \strlen($resolved)) { +return $pathname; +} + +return $resolved; +} + + + + + + +public function junction(string $target, string $junction) +{ +if (!Platform::isWindows()) { +throw new \LogicException(sprintf('Function %s is not available on non-Windows platform', __CLASS__)); +} +if (!is_dir($target)) { +throw new IOException(sprintf('Cannot junction to "%s" as it is not a directory.', $target), 0, null, $target); +} +$cmd = sprintf( +'mklink /J %s %s', +ProcessExecutor::escape(str_replace('/', DIRECTORY_SEPARATOR, $junction)), +ProcessExecutor::escape(realpath($target)) +); +if ($this->getProcess()->execute($cmd, $output) !== 0) { +throw new IOException(sprintf('Failed to create junction to "%s" at "%s".', $target, $junction), 0, null, $target); +} +clearstatcache(true, $junction); +} + + + + + + + + + + + + + + + + + + + + + +public function isJunction(string $junction) +{ +if (!Platform::isWindows()) { +return false; +} + + +clearstatcache(true, $junction); + +if (!is_dir($junction) || is_link($junction)) { +return false; +} + +$stat = lstat($junction); + + +return is_array($stat) ? 0x4000 !== ($stat['mode'] & 0xF000) : false; +} + + + + + + +public function removeJunction(string $junction) +{ +if (!Platform::isWindows()) { +return false; +} +$junction = rtrim(str_replace('/', DIRECTORY_SEPARATOR, $junction), DIRECTORY_SEPARATOR); +if (!$this->isJunction($junction)) { +throw new IOException(sprintf('%s is not a junction and thus cannot be removed as one', $junction)); +} + +return $this->rmdir($junction); +} + + + + +public function filePutContentsIfModified(string $path, string $content) +{ +$currentContent = Silencer::call('file_get_contents', $path); +if (false === $currentContent || $currentContent !== $content) { +return file_put_contents($path, $content); +} + +return 0; +} + + + + + + +public function safeCopy(string $source, string $target) +{ +if (!file_exists($target) || !file_exists($source) || !$this->filesAreEqual($source, $target)) { +$sourceHandle = fopen($source, 'r'); +assert($sourceHandle !== false, 'Could not open "'.$source.'" for reading.'); +$targetHandle = fopen($target, 'w+'); +assert($targetHandle !== false, 'Could not open "'.$target.'" for writing.'); + +stream_copy_to_stream($sourceHandle, $targetHandle); +fclose($sourceHandle); +fclose($targetHandle); +} +} + + + + + +private function filesAreEqual(string $a, string $b): bool +{ + +if (filesize($a) !== filesize($b)) { +return false; +} + + +$aHandle = fopen($a, 'rb'); +assert($aHandle !== false, 'Could not open "'.$a.'" for reading.'); +$bHandle = fopen($b, 'rb'); +assert($bHandle !== false, 'Could not open "'.$b.'" for reading.'); + +$result = true; +while (!feof($aHandle)) { +if (fread($aHandle, 8192) !== fread($bHandle, 8192)) { +$result = false; +break; +} +} + +fclose($aHandle); +fclose($bHandle); + +return $result; +} +} diff --git a/composer/src/Composer/Util/Git.php b/composer/src/Composer/Util/Git.php new file mode 100644 index 000000000..8aebeddbe --- /dev/null +++ b/composer/src/Composer/Util/Git.php @@ -0,0 +1,512 @@ +io = $io; +$this->config = $config; +$this->process = $process; +$this->filesystem = $fs; +} + + + + + +public function runCommand(callable $commandCallable, string $url, ?string $cwd, bool $initialClone = false, &$commandOutput = null): void +{ + +$this->config->prohibitUrlByConfig($url, $this->io); + +if ($initialClone) { +$origCwd = $cwd; +$cwd = null; +} + +if (Preg::isMatch('{^ssh://[^@]+@[^:]+:[^0-9]+}', $url)) { +throw new \InvalidArgumentException('The source URL ' . $url . ' is invalid, ssh URLs should have a port number after ":".' . "\n" . 'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); +} + +if (!$initialClone) { + +$this->process->execute('git remote -v', $output, $cwd); +if (Preg::isMatchStrictGroups('{^(?:composer|origin)\s+https?://(.+):(.+)@([^/]+)}im', $output, $match) && !$this->io->hasAuthentication($match[3])) { +$this->io->setAuthentication($match[3], rawurldecode($match[1]), rawurldecode($match[2])); +} +} + +$protocols = $this->config->get('github-protocols'); + +if (Preg::isMatchStrictGroups('{^(?:https?|git)://' . self::getGitHubDomainsRegex($this->config) . '/(.*)}', $url, $match)) { +$messages = []; +foreach ($protocols as $protocol) { +if ('ssh' === $protocol) { +$protoUrl = "git@" . $match[1] . ":" . $match[2]; +} else { +$protoUrl = $protocol . "://" . $match[1] . "/" . $match[2]; +} + +if (0 === $this->process->execute($commandCallable($protoUrl), $commandOutput, $cwd)) { +return; +} +$messages[] = '- ' . $protoUrl . "\n" . Preg::replace('#^#m', ' ', $this->process->getErrorOutput()); + +if ($initialClone && isset($origCwd)) { +$this->filesystem->removeDirectory($origCwd); +} +} + + +if (!$this->io->hasAuthentication($match[1]) && !$this->io->isInteractive()) { +$this->throwException('Failed to clone ' . $url . ' via ' . implode(', ', $protocols) . ' protocols, aborting.' . "\n\n" . implode("\n", $messages), $url); +} +} + + +$bypassSshForGitHub = Preg::isMatch('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url) && !in_array('ssh', $protocols, true); + +$command = $commandCallable($url); + +$auth = null; +$credentials = []; +if ($bypassSshForGitHub || 0 !== $this->process->execute($command, $commandOutput, $cwd)) { +$errorMsg = $this->process->getErrorOutput(); + +if (Preg::isMatchStrictGroups('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url, $match) +|| Preg::isMatchStrictGroups('{^https?://' . self::getGitHubDomainsRegex($this->config) . '/(.*?)(?:\.git)?$}i', $url, $match) +) { +if (!$this->io->hasAuthentication($match[1])) { +$gitHubUtil = new GitHub($this->io, $this->config, $this->process); +$message = 'Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos'; + +if (!$gitHubUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { +$gitHubUtil->authorizeOAuthInteractively($match[1], $message); +} +} + +if ($this->io->hasAuthentication($match[1])) { +$auth = $this->io->getAuthentication($match[1]); +$authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; +$command = $commandCallable($authUrl); +if (0 === $this->process->execute($command, $commandOutput, $cwd)) { +return; +} + +$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; +$errorMsg = $this->process->getErrorOutput(); +} +} elseif (Preg::isMatchStrictGroups('{^https://(bitbucket\.org)/(.*?)(?:\.git)?$}i', $url, $match)) { +$bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process); + +if (!$this->io->hasAuthentication($match[1])) { +$message = 'Enter your Bitbucket credentials to access private repos'; + +if (!$bitbucketUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { +$bitbucketUtil->authorizeOAuthInteractively($match[1], $message); +$accessToken = $bitbucketUtil->getToken(); +$this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); +} +} else { +$auth = $this->io->getAuthentication($match[1]); + + +if ($auth['username'] !== 'x-token-auth') { +$accessToken = $bitbucketUtil->requestToken($match[1], $auth['username'], $auth['password']); +if (!empty($accessToken)) { +$this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); +} +} +} + +if ($this->io->hasAuthentication($match[1])) { +$auth = $this->io->getAuthentication($match[1]); +$authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; + +$command = $commandCallable($authUrl); +if (0 === $this->process->execute($command, $commandOutput, $cwd)) { +return; +} + +$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; +$errorMsg = $this->process->getErrorOutput(); +} else { +$sshUrl = 'git@bitbucket.org:' . $match[2] . '.git'; +$this->io->writeError(' No bitbucket authentication configured. Falling back to ssh.'); +$command = $commandCallable($sshUrl); +if (0 === $this->process->execute($command, $commandOutput, $cwd)) { +return; +} + +$errorMsg = $this->process->getErrorOutput(); +} +} elseif ( +Preg::isMatchStrictGroups('{^(git)@' . self::getGitLabDomainsRegex($this->config) . ':(.+?\.git)$}i', $url, $match) +|| Preg::isMatchStrictGroups('{^(https?)://' . self::getGitLabDomainsRegex($this->config) . '/(.*)}i', $url, $match) +) { +if ($match[1] === 'git') { +$match[1] = 'https'; +} + +if (!$this->io->hasAuthentication($match[2])) { +$gitLabUtil = new GitLab($this->io, $this->config, $this->process); +$message = 'Cloning failed, enter your GitLab credentials to access private repos'; + +if (!$gitLabUtil->authorizeOAuth($match[2]) && $this->io->isInteractive()) { +$gitLabUtil->authorizeOAuthInteractively($match[1], $match[2], $message); +} +} + +if ($this->io->hasAuthentication($match[2])) { +$auth = $this->io->getAuthentication($match[2]); +if ($auth['password'] === 'private-token' || $auth['password'] === 'oauth2' || $auth['password'] === 'gitlab-ci-token') { +$authUrl = $match[1] . '://' . rawurlencode($auth['password']) . ':' . rawurlencode($auth['username']) . '@' . $match[2] . '/' . $match[3]; +} else { +$authUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . '/' . $match[3]; +} + +$command = $commandCallable($authUrl); +if (0 === $this->process->execute($command, $commandOutput, $cwd)) { +return; +} + +$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; +$errorMsg = $this->process->getErrorOutput(); +} +} elseif ($this->isAuthenticationFailure($url, $match)) { +if (strpos($match[2], '@')) { +[$authParts, $match[2]] = explode('@', $match[2], 2); +} + +$storeAuth = false; +if ($this->io->hasAuthentication($match[2])) { +$auth = $this->io->getAuthentication($match[2]); +} elseif ($this->io->isInteractive()) { +$defaultUsername = null; +if (isset($authParts) && $authParts) { +if (false !== strpos($authParts, ':')) { +[$defaultUsername, ] = explode(':', $authParts, 2); +} else { +$defaultUsername = $authParts; +} +} + +$this->io->writeError(' Authentication required (' . $match[2] . '):'); +$auth = [ +'username' => $this->io->ask(' Username: ', $defaultUsername), +'password' => $this->io->askAndHideAnswer(' Password: '), +]; +$storeAuth = $this->config->get('store-auths'); +} + +if (null !== $auth) { +$authUrl = $match[1] . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . $match[3]; + +$command = $commandCallable($authUrl); +if (0 === $this->process->execute($command, $commandOutput, $cwd)) { +$this->io->setAuthentication($match[2], $auth['username'], $auth['password']); +$authHelper = new AuthHelper($this->io, $this->config); +$authHelper->storeAuth($match[2], $storeAuth); + +return; +} + +$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; +$errorMsg = $this->process->getErrorOutput(); +} +} + +if ($initialClone && isset($origCwd)) { +$this->filesystem->removeDirectory($origCwd); +} + +if (count($credentials) > 0) { +$command = $this->maskCredentials($command, $credentials); +$errorMsg = $this->maskCredentials($errorMsg, $credentials); +} +$this->throwException('Failed to execute ' . $command . "\n\n" . $errorMsg, $url); +} +} + +public function syncMirror(string $url, string $dir): bool +{ +if (Platform::getEnv('COMPOSER_DISABLE_NETWORK') && Platform::getEnv('COMPOSER_DISABLE_NETWORK') !== 'prime') { +$this->io->writeError('Aborting git mirror sync of '.$url.' as network is disabled'); + +return false; +} + + +if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { +try { +$commandCallable = static function ($url): string { +$sanitizedUrl = Preg::replace('{://([^@]+?):(.+?)@}', '://', $url); + +return sprintf('git remote set-url origin -- %s && git remote update --prune origin && git remote set-url origin -- %s && git gc --auto', ProcessExecutor::escape($url), ProcessExecutor::escape($sanitizedUrl)); +}; +$this->runCommand($commandCallable, $url, $dir); +} catch (\Exception $e) { +$this->io->writeError('Sync mirror failed: ' . $e->getMessage() . '', true, IOInterface::DEBUG); + +return false; +} + +return true; +} + + +$this->filesystem->removeDirectory($dir); + +$commandCallable = static function ($url) use ($dir): string { +return sprintf('git clone --mirror -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($dir)); +}; + +$this->runCommand($commandCallable, $url, $dir, true); + +return true; +} + +public function fetchRefOrSyncMirror(string $url, string $dir, string $ref, string $prettyVersion = null): bool +{ +if ($this->checkRefIsInMirror($dir, $ref)) { +if (Preg::isMatch('{^[a-f0-9]{40}$}', $ref) && $prettyVersion !== null) { +$branch = Preg::replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $prettyVersion); +$branches = null; +$tags = null; +if (0 === $this->process->execute('git branch', $output, $dir)) { +$branches = $output; +} +if (0 === $this->process->execute('git tag', $output, $dir)) { +$tags = $output; +} + + + + + +if (null !== $branches && !Preg::isMatch('{^[\s*]*v?'.preg_quote($branch).'$}m', $branches) +&& null !== $tags && !Preg::isMatch('{^[\s*]*'.preg_quote($branch).'$}m', $tags) +) { +$this->syncMirror($url, $dir); +} +} + +return true; +} + +if ($this->syncMirror($url, $dir)) { +return $this->checkRefIsInMirror($dir, $ref); +} + +return false; +} + +public static function getNoShowSignatureFlag(ProcessExecutor $process): string +{ +$gitVersion = self::getVersion($process); +if ($gitVersion && version_compare($gitVersion, '2.10.0-rc0', '>=')) { +return ' --no-show-signature'; +} + +return ''; +} + +private function checkRefIsInMirror(string $dir, string $ref): bool +{ +if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { +$escapedRef = ProcessExecutor::escape($ref.'^{commit}'); +$exitCode = $this->process->execute(sprintf('git rev-parse --quiet --verify %s', $escapedRef), $ignoredOutput, $dir); +if ($exitCode === 0) { +return true; +} +} + +return false; +} + + + + +private function isAuthenticationFailure(string $url, array &$match): bool +{ +if (!Preg::isMatch('{^(https?://)([^/]+)(.*)$}i', $url, $match)) { +return false; +} + +$authFailures = [ +'fatal: Authentication failed', +'remote error: Invalid username or password.', +'error: 401 Unauthorized', +'fatal: unable to access', +'fatal: could not read Username', +]; + +$errorOutput = $this->process->getErrorOutput(); +foreach ($authFailures as $authFailure) { +if (strpos($errorOutput, $authFailure) !== false) { +return true; +} +} + +return false; +} + +public function getMirrorDefaultBranch(string $url, string $dir, bool $isLocalPathRepository): ?string +{ +if ((bool) Platform::getEnv('COMPOSER_DISABLE_NETWORK')) { +return null; +} + +try { +if ($isLocalPathRepository) { +$this->process->execute('git remote show origin', $output, $dir); +} else { +$commandCallable = static function ($url): string { +$sanitizedUrl = Preg::replace('{://([^@]+?):(.+?)@}', '://', $url); + +return sprintf('git remote set-url origin -- %s && git remote show origin && git remote set-url origin -- %s', ProcessExecutor::escape($url), ProcessExecutor::escape($sanitizedUrl)); +}; + +$this->runCommand($commandCallable, $url, $dir, false, $output); +} + +$lines = $this->process->splitLines($output); +foreach ($lines as $line) { +if (Preg::match('{^\s*HEAD branch:\s(.+)\s*$}m', $line, $matches) > 0) { +return $matches[1]; +} +} +} catch (\Exception $e) { +$this->io->writeError('Failed to fetch root identifier from remote: ' . $e->getMessage() . '', true, IOInterface::DEBUG); +} + +return null; +} + +public static function cleanEnv(): void +{ + +if (Platform::getEnv('GIT_ASKPASS') !== 'echo') { +Platform::putEnv('GIT_ASKPASS', 'echo'); +} + + +if (Platform::getEnv('GIT_DIR')) { +Platform::clearEnv('GIT_DIR'); +} +if (Platform::getEnv('GIT_WORK_TREE')) { +Platform::clearEnv('GIT_WORK_TREE'); +} + + +if (Platform::getEnv('LANGUAGE') !== 'C') { +Platform::putEnv('LANGUAGE', 'C'); +} + + +Platform::clearEnv('DYLD_LIBRARY_PATH'); +} + + + + +public static function getGitHubDomainsRegex(Config $config): string +{ +return '(' . implode('|', array_map('preg_quote', $config->get('github-domains'))) . ')'; +} + + + + +public static function getGitLabDomainsRegex(Config $config): string +{ +return '(' . implode('|', array_map('preg_quote', $config->get('gitlab-domains'))) . ')'; +} + + + + + + +private function throwException($message, string $url): void +{ + +clearstatcache(); + +if (0 !== $this->process->execute('git --version', $ignoredOutput)) { +throw new \RuntimeException(Url::sanitize('Failed to clone ' . $url . ', git was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); +} + +throw new \RuntimeException(Url::sanitize($message)); +} + + + + + + +public static function getVersion(ProcessExecutor $process): ?string +{ +if (false === self::$version) { +self::$version = null; +if (0 === $process->execute('git --version', $output) && Preg::isMatch('/^git version (\d+(?:\.\d+)+)/m', $output, $matches)) { +self::$version = $matches[1]; +} +} + +return self::$version; +} + + + + +private function maskCredentials(string $error, array $credentials): string +{ +$maskedCredentials = []; + +foreach ($credentials as $credential) { +if (in_array($credential, ['private-token', 'x-token-auth', 'oauth2', 'gitlab-ci-token', 'x-oauth-basic'])) { +$maskedCredentials[] = $credential; +} elseif (strlen($credential) > 6) { +$maskedCredentials[] = substr($credential, 0, 3) . '...' . substr($credential, -3); +} elseif (strlen($credential) > 3) { +$maskedCredentials[] = substr($credential, 0, 3) . '...'; +} else { +$maskedCredentials[] = 'XXX'; +} +} + +return str_replace($credentials, $maskedCredentials, $error); +} +} diff --git a/composer/src/Composer/Util/GitHub.php b/composer/src/Composer/Util/GitHub.php new file mode 100644 index 000000000..89981e503 --- /dev/null +++ b/composer/src/Composer/Util/GitHub.php @@ -0,0 +1,234 @@ +io = $io; +$this->config = $config; +$this->process = $process ?: new ProcessExecutor($io); +$this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); +} + + + + + + + +public function authorizeOAuth(string $originUrl): bool +{ +if (!in_array($originUrl, $this->config->get('github-domains'))) { +return false; +} + + +if (0 === $this->process->execute('git config github.accesstoken', $output)) { +$this->io->setAuthentication($originUrl, trim($output), 'x-oauth-basic'); + +return true; +} + +return false; +} + + + + + + + + + + +public function authorizeOAuthInteractively(string $originUrl, ?string $message = null): bool +{ +if ($message) { +$this->io->writeError($message); +} + +$note = 'Composer'; +if ($this->config->get('github-expose-hostname') === true && 0 === $this->process->execute('hostname', $output)) { +$note .= ' on ' . trim($output); +} +$note .= ' ' . date('Y-m-d Hi'); + +$url = 'https://'.$originUrl.'/settings/tokens/new?scopes=&description=' . str_replace('%20', '+', rawurlencode($note)); +$this->io->writeError(sprintf('When working with _public_ GitHub repositories only, head to %s to retrieve a token.', $url)); +$this->io->writeError('This token will have read-only permission for public information only.'); + +$localAuthConfig = $this->config->getLocalAuthConfigSource(); +$url = 'https://'.$originUrl.'/settings/tokens/new?scopes=repo&description=' . str_replace('%20', '+', rawurlencode($note)); +$this->io->writeError(sprintf('When you need to access _private_ GitHub repositories as well, go to %s', $url)); +$this->io->writeError('Note that such tokens have broad read/write permissions on your behalf, even if not needed by Composer.'); +$this->io->writeError(sprintf('Tokens will be stored in plain text in "%s" for future use by Composer.', ($localAuthConfig !== null ? $localAuthConfig->getName() . ' OR ' : '') . $this->config->getAuthConfigSource()->getName())); +$this->io->writeError('For additional information, check https://getcomposer.org/doc/articles/authentication-for-private-packages.md#github-oauth'); + +$storeInLocalAuthConfig = false; +if ($localAuthConfig !== null) { +$storeInLocalAuthConfig = $this->io->askConfirmation('A local auth config source was found, do you want to store the token there?', true); +} + +$token = trim((string) $this->io->askAndHideAnswer('Token (hidden): ')); + +if ($token === '') { +$this->io->writeError('No token given, aborting.'); +$this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); + +return false; +} + +$this->io->setAuthentication($originUrl, $token, 'x-oauth-basic'); + +try { +$apiUrl = ('github.com' === $originUrl) ? 'api.github.com/' : $originUrl . '/api/v3/'; + +$this->httpDownloader->get('https://'. $apiUrl, [ +'retry-auth-failure' => false, +]); +} catch (TransportException $e) { +if (in_array($e->getCode(), [403, 401])) { +$this->io->writeError('Invalid token provided.'); +$this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); + +return false; +} + +throw $e; +} + + +$authConfigSource = $storeInLocalAuthConfig && $localAuthConfig !== null ? $localAuthConfig : $this->config->getAuthConfigSource(); +$this->config->getConfigSource()->removeConfigSetting('github-oauth.'.$originUrl); +$authConfigSource->addConfigSetting('github-oauth.'.$originUrl, $token); + +$this->io->writeError('Token stored successfully.'); + +return true; +} + + + + + + + + +public function getRateLimit(array $headers): array +{ +$rateLimit = [ +'limit' => '?', +'reset' => '?', +]; + +foreach ($headers as $header) { +$header = trim($header); +if (false === strpos($header, 'X-RateLimit-')) { +continue; +} +[$type, $value] = explode(':', $header, 2); +switch ($type) { +case 'X-RateLimit-Limit': +$rateLimit['limit'] = (int) trim($value); +break; +case 'X-RateLimit-Reset': +$rateLimit['reset'] = date('Y-m-d H:i:s', (int) trim($value)); +break; +} +} + +return $rateLimit; +} + + + + + + +public function getSsoUrl(array $headers): ?string +{ +foreach ($headers as $header) { +$header = trim($header); +if (false === stripos($header, 'x-github-sso: required')) { +continue; +} +if (Preg::isMatch('{\burl=(?P[^\s;]+)}', $header, $match)) { +return $match['url']; +} +} + +return null; +} + + + + + + +public function isRateLimited(array $headers): bool +{ +foreach ($headers as $header) { +if (Preg::isMatch('{^X-RateLimit-Remaining: *0$}i', trim($header))) { +return true; +} +} + +return false; +} + + + + + + + + +public function requiresSso(array $headers): bool +{ +foreach ($headers as $header) { +if (Preg::isMatch('{^X-GitHub-SSO: required}i', trim($header))) { +return true; +} +} + +return false; +} +} diff --git a/composer/src/Composer/Util/GitLab.php b/composer/src/Composer/Util/GitLab.php new file mode 100644 index 000000000..1abf08df3 --- /dev/null +++ b/composer/src/Composer/Util/GitLab.php @@ -0,0 +1,311 @@ +io = $io; +$this->config = $config; +$this->process = $process ?: new ProcessExecutor($io); +$this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); +} + + + + + + + + +public function authorizeOAuth(string $originUrl): bool +{ + +$bcOriginUrl = Preg::replace('{:\d+}', '', $originUrl); + +if (!in_array($originUrl, $this->config->get('gitlab-domains'), true) && !in_array($bcOriginUrl, $this->config->get('gitlab-domains'), true)) { +return false; +} + + +if (0 === $this->process->execute('git config gitlab.accesstoken', $output)) { +$this->io->setAuthentication($originUrl, trim($output), 'oauth2'); + +return true; +} + + +if (0 === $this->process->execute('git config gitlab.deploytoken.user', $tokenUser) && 0 === $this->process->execute('git config gitlab.deploytoken.token', $tokenPassword)) { +$this->io->setAuthentication($originUrl, trim($tokenUser), trim($tokenPassword)); + +return true; +} + + +$authTokens = $this->config->get('gitlab-token'); + +if (isset($authTokens[$originUrl])) { +$token = $authTokens[$originUrl]; +} + +if (isset($authTokens[$bcOriginUrl])) { +$token = $authTokens[$bcOriginUrl]; +} + +if (isset($token)) { +$username = is_array($token) ? $token["username"] : $token; +$password = is_array($token) ? $token["token"] : 'private-token'; + + + +if (in_array($username, ['private-token', 'gitlab-ci-token', 'oauth2'], true)) { +$this->io->setAuthentication($originUrl, $password, $username); +} else { +$this->io->setAuthentication($originUrl, $username, $password); +} + +return true; +} + +return false; +} + + + + + + + + + + + + + +public function authorizeOAuthInteractively(string $scheme, string $originUrl, ?string $message = null): bool +{ +if ($message) { +$this->io->writeError($message); +} + +$localAuthConfig = $this->config->getLocalAuthConfigSource(); +$this->io->writeError(sprintf('A token will be created and stored in "%s", your password will never be stored', ($localAuthConfig !== null ? $localAuthConfig->getName() . ' OR ' : '') . $this->config->getAuthConfigSource()->getName())); +$this->io->writeError('To revoke access to this token you can visit '.$scheme.'://'.$originUrl.'/-/profile/applications'); +$this->io->writeError('Alternatively you can setup an personal access token on '.$scheme.'://'.$originUrl.'/-/profile/personal_access_tokens and store it under "gitlab-token" see https://getcomposer.org/doc/articles/authentication-for-private-packages.md#gitlab-token for more details.'); + +$storeInLocalAuthConfig = false; +if ($localAuthConfig !== null) { +$storeInLocalAuthConfig = $this->io->askConfirmation('A local auth config source was found, do you want to store the token there?', true); +} + +$attemptCounter = 0; + +while ($attemptCounter++ < 5) { +try { +$response = $this->createToken($scheme, $originUrl); +} catch (TransportException $e) { + + +if (in_array($e->getCode(), [403, 401])) { +if (401 === $e->getCode()) { +$response = json_decode($e->getResponse(), true); +if (isset($response['error']) && $response['error'] === 'invalid_grant') { +$this->io->writeError('Bad credentials. If you have two factor authentication enabled you will have to manually create a personal access token'); +} else { +$this->io->writeError('Bad credentials.'); +} +} else { +$this->io->writeError('Maximum number of login attempts exceeded. Please try again later.'); +} + +$this->io->writeError('You can also manually create a personal access token enabling the "read_api" scope at '.$scheme.'://'.$originUrl.'/profile/personal_access_tokens'); +$this->io->writeError('Add it using "composer config --global --auth gitlab-token.'.$originUrl.' "'); + +continue; +} + +throw $e; +} + +$this->io->setAuthentication($originUrl, $response['access_token'], 'oauth2'); + +$authConfigSource = $storeInLocalAuthConfig && $localAuthConfig !== null ? $localAuthConfig : $this->config->getAuthConfigSource(); + +if (isset($response['expires_in'])) { +$authConfigSource->addConfigSetting( +'gitlab-oauth.'.$originUrl, +[ +'expires-at' => intval($response['created_at']) + intval($response['expires_in']), +'refresh-token' => $response['refresh_token'], +'token' => $response['access_token'], +] +); +} else { +$authConfigSource->addConfigSetting('gitlab-oauth.'.$originUrl, $response['access_token']); +} + +return true; +} + +throw new \RuntimeException('Invalid GitLab credentials 5 times in a row, aborting.'); +} + + + + + + + + + + + + +public function authorizeOAuthRefresh(string $scheme, string $originUrl): bool +{ +try { +$response = $this->refreshToken($scheme, $originUrl); +} catch (TransportException $e) { +$this->io->writeError("Couldn't refresh access token: ".$e->getMessage()); + +return false; +} + +$this->io->setAuthentication($originUrl, $response['access_token'], 'oauth2'); + + +$this->config->getAuthConfigSource()->addConfigSetting( +'gitlab-oauth.'.$originUrl, +[ +'expires-at' => intval($response['created_at']) + intval($response['expires_in']), +'refresh-token' => $response['refresh_token'], +'token' => $response['access_token'], +] +); + +return true; +} + + + + + + +private function createToken(string $scheme, string $originUrl): array +{ +$username = $this->io->ask('Username: '); +$password = $this->io->askAndHideAnswer('Password: '); + +$headers = ['Content-Type: application/x-www-form-urlencoded']; + +$apiUrl = $originUrl; +$data = http_build_query([ +'username' => $username, +'password' => $password, +'grant_type' => 'password', +], '', '&'); +$options = [ +'retry-auth-failure' => false, +'http' => [ +'method' => 'POST', +'header' => $headers, +'content' => $data, +], +]; + +$token = $this->httpDownloader->get($scheme.'://'.$apiUrl.'/oauth/token', $options)->decodeJson(); + +$this->io->writeError('Token successfully created'); + +return $token; +} + + + + + + +public function isOAuthExpired(string $originUrl): bool +{ +$authTokens = $this->config->get('gitlab-oauth'); +if (isset($authTokens[$originUrl]['expires-at'])) { +if ($authTokens[$originUrl]['expires-at'] < time()) { +return true; +} +} + +return false; +} + + + + + + +private function refreshToken(string $scheme, string $originUrl): array +{ +$authTokens = $this->config->get('gitlab-oauth'); +if (!isset($authTokens[$originUrl]['refresh-token'])) { +throw new \RuntimeException('No GitLab refresh token present for '.$originUrl.'.'); +} + +$refreshToken = $authTokens[$originUrl]['refresh-token']; +$headers = ['Content-Type: application/x-www-form-urlencoded']; + +$data = http_build_query([ +'refresh_token' => $refreshToken, +'grant_type' => 'refresh_token', +], '', '&'); +$options = [ +'retry-auth-failure' => false, +'http' => [ +'method' => 'POST', +'header' => $headers, +'content' => $data, +], +]; + +$token = $this->httpDownloader->get($scheme.'://'.$originUrl.'/oauth/token', $options)->decodeJson(); +$this->io->writeError('GitLab token successfully refreshed', true, IOInterface::VERY_VERBOSE); +$this->io->writeError('To revoke access to this token you can visit '.$scheme.'://'.$originUrl.'/-/profile/applications', true, IOInterface::VERY_VERBOSE); + +return $token; +} +} diff --git a/composer/src/Composer/Util/Hg.php b/composer/src/Composer/Util/Hg.php new file mode 100644 index 000000000..325d63134 --- /dev/null +++ b/composer/src/Composer/Util/Hg.php @@ -0,0 +1,109 @@ +io = $io; +$this->config = $config; +$this->process = $process; +} + +public function runCommand(callable $commandCallable, string $url, ?string $cwd): void +{ +$this->config->prohibitUrlByConfig($url, $this->io); + + +$command = $commandCallable($url); + +if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { +return; +} + + +if (Preg::isMatch('{^(https?)://((.+)(?:\:(.+))?@)?([^/]+)(/.*)?}mi', $url, $match) && $this->io->hasAuthentication((string) $match[5])) { +$auth = $this->io->getAuthentication((string) $match[5]); +$authenticatedUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[5] . $match[6]; + +$command = $commandCallable($authenticatedUrl); + +if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { +return; +} + +$error = $this->process->getErrorOutput(); +} else { +$error = 'The given URL (' . $url . ') does not match the required format (http(s)://(username:password@)example.com/path-to-repository)'; +} + +$this->throwException('Failed to clone ' . $url . ', ' . "\n\n" . $error, $url); +} + + + + + + +private function throwException($message, string $url): void +{ +if (null === self::getVersion($this->process)) { +throw new \RuntimeException(Url::sanitize('Failed to clone ' . $url . ', hg was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); +} + +throw new \RuntimeException(Url::sanitize($message)); +} + + + + + + +public static function getVersion(ProcessExecutor $process): ?string +{ +if (false === self::$version) { +self::$version = null; +if (0 === $process->execute('hg --version', $output) && Preg::isMatch('/^.+? (\d+(?:\.\d+)+)(?:\+.*?)?\)?\r?\n/', $output, $matches)) { +self::$version = $matches[1]; +} +} + +return self::$version; +} +} diff --git a/composer/src/Composer/Util/Http/CurlDownloader.php b/composer/src/Composer/Util/Http/CurlDownloader.php new file mode 100644 index 000000000..79e61443b --- /dev/null +++ b/composer/src/Composer/Util/Http/CurlDownloader.php @@ -0,0 +1,653 @@ + ['CURLM_BAD_HANDLE', 'The passed-in handle is not a valid CURLM handle.'], +CURLM_BAD_EASY_HANDLE => ['CURLM_BAD_EASY_HANDLE', "An easy handle was not good/valid. It could mean that it isn't an easy handle at all, or possibly that the handle already is in used by this or another multi handle."], +CURLM_OUT_OF_MEMORY => ['CURLM_OUT_OF_MEMORY', 'You are doomed.'], +CURLM_INTERNAL_ERROR => ['CURLM_INTERNAL_ERROR', 'This can only be returned if libcurl bugs. Please report it to us!'], +]; + + +private static $options = [ +'http' => [ +'method' => CURLOPT_CUSTOMREQUEST, +'content' => CURLOPT_POSTFIELDS, +'header' => CURLOPT_HTTPHEADER, +'timeout' => CURLOPT_TIMEOUT, +], +'ssl' => [ +'cafile' => CURLOPT_CAINFO, +'capath' => CURLOPT_CAPATH, +'verify_peer' => CURLOPT_SSL_VERIFYPEER, +'verify_peer_name' => CURLOPT_SSL_VERIFYHOST, +'local_cert' => CURLOPT_SSLCERT, +'local_pk' => CURLOPT_SSLKEY, +'passphrase' => CURLOPT_SSLKEYPASSWD, +], +]; + + +private static $timeInfo = [ +'total_time' => true, +'namelookup_time' => true, +'connect_time' => true, +'pretransfer_time' => true, +'starttransfer_time' => true, +'redirect_time' => true, +]; + + + + +public function __construct(IOInterface $io, Config $config, array $options = [], bool $disableTls = false) +{ +$this->io = $io; +$this->config = $config; + +$this->multiHandle = $mh = curl_multi_init(); +if (function_exists('curl_multi_setopt')) { +curl_multi_setopt($mh, CURLMOPT_PIPELINING, PHP_VERSION_ID >= 70400 ? 2 : 3); +if (defined('CURLMOPT_MAX_HOST_CONNECTIONS') && !defined('HHVM_VERSION')) { +curl_multi_setopt($mh, CURLMOPT_MAX_HOST_CONNECTIONS, 8); +} +} + +if (function_exists('curl_share_init')) { +$this->shareHandle = $sh = curl_share_init(); +curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); +curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); +curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); +} + +$this->authHelper = new AuthHelper($io, $config); +$this->proxyManager = ProxyManager::getInstance(); + +$version = curl_version(); +$features = $version['features']; +$this->supportsSecureProxy = defined('CURL_VERSION_HTTPS_PROXY') && ($features & CURL_VERSION_HTTPS_PROXY); +} + + + + + + + +public function download(callable $resolve, callable $reject, string $origin, string $url, array $options, ?string $copyTo = null): int +{ +$attributes = []; +if (isset($options['retry-auth-failure'])) { +$attributes['retryAuthFailure'] = $options['retry-auth-failure']; +unset($options['retry-auth-failure']); +} + +return $this->initDownload($resolve, $reject, $origin, $url, $options, $copyTo, $attributes); +} + + + + + + + + + +private function initDownload(callable $resolve, callable $reject, string $origin, string $url, array $options, ?string $copyTo = null, array $attributes = []): int +{ +$attributes = array_merge([ +'retryAuthFailure' => true, +'redirects' => 0, +'retries' => 0, +'storeAuth' => false, +], $attributes); + +$originalOptions = $options; + + +if (!Preg::isMatch('{^http://(repo\.)?packagist\.org/p/}', $url) || (false === strpos($url, '$') && false === strpos($url, '%24'))) { +$this->config->prohibitUrlByConfig($url, $this->io, $options); +} + +$curlHandle = curl_init(); +$headerHandle = fopen('php://temp/maxmemory:32768', 'w+b'); +if (false === $headerHandle) { +throw new \RuntimeException('Failed to open a temp stream to store curl headers'); +} + +if ($copyTo !== null) { +$bodyTarget = $copyTo.'~'; +} else { +$bodyTarget = 'php://temp/maxmemory:524288'; +} + +$errorMessage = ''; + +set_error_handler(static function ($code, $msg) use (&$errorMessage): void { +if ($errorMessage) { +$errorMessage .= "\n"; +} +$errorMessage .= Preg::replace('{^fopen\(.*?\): }', '', $msg); +}); +$bodyHandle = fopen($bodyTarget, 'w+b'); +restore_error_handler(); +if (false === $bodyHandle) { +throw new TransportException('The "'.$url.'" file could not be written to '.($copyTo ?? 'a temporary file').': '.$errorMessage); +} + +curl_setopt($curlHandle, CURLOPT_URL, $url); +curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, false); +curl_setopt($curlHandle, CURLOPT_CONNECTTIMEOUT, 10); +curl_setopt($curlHandle, CURLOPT_TIMEOUT, max((int) ini_get("default_socket_timeout"), 300)); +curl_setopt($curlHandle, CURLOPT_WRITEHEADER, $headerHandle); +curl_setopt($curlHandle, CURLOPT_FILE, $bodyHandle); +curl_setopt($curlHandle, CURLOPT_ENCODING, ""); +curl_setopt($curlHandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); + +if (function_exists('curl_share_init')) { +curl_setopt($curlHandle, CURLOPT_SHARE, $this->shareHandle); +} + +if (!isset($options['http']['header'])) { +$options['http']['header'] = []; +} + +$options['http']['header'] = array_diff($options['http']['header'], ['Connection: close']); +$options['http']['header'][] = 'Connection: keep-alive'; + +$version = curl_version(); +$features = $version['features']; +if (0 === strpos($url, 'https://') && \defined('CURL_VERSION_HTTP2') && \defined('CURL_HTTP_VERSION_2_0') && (CURL_VERSION_HTTP2 & $features)) { +curl_setopt($curlHandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0); +} + +$options['http']['header'] = $this->authHelper->addAuthenticationHeader($options['http']['header'], $origin, $url); +$options = StreamContextFactory::initOptions($url, $options, true); + +foreach (self::$options as $type => $curlOptions) { +foreach ($curlOptions as $name => $curlOption) { +if (isset($options[$type][$name])) { +if ($type === 'ssl' && $name === 'verify_peer_name') { +curl_setopt($curlHandle, $curlOption, $options[$type][$name] === true ? 2 : $options[$type][$name]); +} else { +curl_setopt($curlHandle, $curlOption, $options[$type][$name]); +} +} +} +} + + + +$proxy = $this->proxyManager->getProxyForRequest($url); +if ($proxy->getUrl() !== '') { +curl_setopt($curlHandle, CURLOPT_PROXY, $proxy->getUrl()); +} + + + +if ($proxy->isSecure()) { +if (!$this->supportsSecureProxy) { +throw new TransportException('Connecting to a secure proxy using curl is not supported on PHP versions below 7.3.0.'); +} +if (!empty($options['ssl']['cafile'])) { +curl_setopt($curlHandle, CURLOPT_PROXY_CAINFO, $options['ssl']['cafile']); +} +if (!empty($options['ssl']['capath'])) { +curl_setopt($curlHandle, CURLOPT_PROXY_CAPATH, $options['ssl']['capath']); +} +} + +$progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo); + +$this->jobs[(int) $curlHandle] = [ +'url' => $url, +'origin' => $origin, +'attributes' => $attributes, +'options' => $originalOptions, +'progress' => $progress, +'curlHandle' => $curlHandle, +'filename' => $copyTo, +'headerHandle' => $headerHandle, +'bodyHandle' => $bodyHandle, +'resolve' => $resolve, +'reject' => $reject, +]; + +$usingProxy = $proxy->getFormattedUrl(' using proxy (%s)'); +$ifModified = false !== stripos(implode(',', $options['http']['header']), 'if-modified-since:') ? ' if modified' : ''; +if ($attributes['redirects'] === 0 && $attributes['retries'] === 0) { +$this->io->writeError('Downloading ' . Url::sanitize($url) . $usingProxy . $ifModified, true, IOInterface::DEBUG); +} + +$this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $curlHandle)); + + +return (int) $curlHandle; +} + +public function abortRequest(int $id): void +{ +if (isset($this->jobs[$id], $this->jobs[$id]['curlHandle'])) { +$job = $this->jobs[$id]; +curl_multi_remove_handle($this->multiHandle, $job['curlHandle']); +curl_close($job['curlHandle']); +if (is_resource($job['headerHandle'])) { +fclose($job['headerHandle']); +} +if (is_resource($job['bodyHandle'])) { +fclose($job['bodyHandle']); +} +if (null !== $job['filename']) { +@unlink($job['filename'].'~'); +} +unset($this->jobs[$id]); +} +} + +public function tick(): void +{ +static $timeoutWarning = false; + +if (count($this->jobs) === 0) { +return; +} + +$active = true; +$this->checkCurlResult(curl_multi_exec($this->multiHandle, $active)); +if (-1 === curl_multi_select($this->multiHandle, $this->selectTimeout)) { + +usleep(150); +} + +while ($progress = curl_multi_info_read($this->multiHandle)) { +$curlHandle = $progress['handle']; +$result = $progress['result']; +$i = (int) $curlHandle; +if (!isset($this->jobs[$i])) { +continue; +} + +$progress = curl_getinfo($curlHandle); +if (false === $progress) { +throw new \RuntimeException('Failed getting info from curl handle '.$i.' ('.$this->jobs[$i]['url'].')'); +} +$job = $this->jobs[$i]; +unset($this->jobs[$i]); +$error = curl_error($curlHandle); +$errno = curl_errno($curlHandle); +curl_multi_remove_handle($this->multiHandle, $curlHandle); +curl_close($curlHandle); + +$headers = null; +$statusCode = null; +$response = null; +try { + +if (CURLE_OK !== $errno || $error || $result !== CURLE_OK) { +$errno = $errno ?: $result; +if (!$error && function_exists('curl_strerror')) { +$error = curl_strerror($errno); +} +$progress['error_code'] = $errno; + +if ( +(!isset($job['options']['http']['method']) || $job['options']['http']['method'] === 'GET') +&& ( +in_array($errno, [7 , 16 , 92 , 6 ], true) +|| ($errno === 35 && false !== strpos($error, 'Connection reset by peer')) +) && $job['attributes']['retries'] < $this->maxRetries +) { +$this->io->writeError('Retrying ('.($job['attributes']['retries'] + 1).') ' . Url::sanitize($job['url']) . ' due to curl error '. $errno, true, IOInterface::DEBUG); +$this->restartJobWithDelay($job, $job['url'], ['retries' => $job['attributes']['retries'] + 1]); +continue; +} + +if ($errno === 28 && PHP_VERSION_ID >= 70300 && $progress['namelookup_time'] === 0.0 && !$timeoutWarning) { +$timeoutWarning = true; +$this->io->writeError('A connection timeout was encountered. If you intend to run Composer without connecting to the internet, run the command again prefixed with COMPOSER_DISABLE_NETWORK=1 to make Composer run in offline mode.'); +} + +throw new TransportException('curl error '.$errno.' while downloading '.Url::sanitize($progress['url']).': '.$error); +} +$statusCode = $progress['http_code']; +rewind($job['headerHandle']); +$headers = explode("\r\n", rtrim(stream_get_contents($job['headerHandle']))); +fclose($job['headerHandle']); + +if ($statusCode === 0) { +throw new \LogicException('Received unexpected http status code 0 without error for '.Url::sanitize($progress['url']).': headers '.var_export($headers, true).' curl info '.var_export($progress, true)); +} + + +if (null !== $job['filename']) { +$contents = $job['filename'].'~'; +if ($statusCode >= 300) { +rewind($job['bodyHandle']); +$contents = stream_get_contents($job['bodyHandle']); +} +$response = new CurlResponse(['url' => $job['url']], $statusCode, $headers, $contents, $progress); +$this->io->writeError('['.$statusCode.'] '.Url::sanitize($job['url']), true, IOInterface::DEBUG); +} else { +$maxFileSize = $job['options']['max_file_size'] ?? null; +rewind($job['bodyHandle']); +if ($maxFileSize !== null) { +$contents = stream_get_contents($job['bodyHandle'], $maxFileSize); + + +if ($contents !== false && Platform::strlen($contents) >= $maxFileSize) { +throw new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . Platform::strlen($contents) . ' of allowed ' . $maxFileSize . ' bytes'); +} +} else { +$contents = stream_get_contents($job['bodyHandle']); +} + +$response = new CurlResponse(['url' => $job['url']], $statusCode, $headers, $contents, $progress); +$this->io->writeError('['.$statusCode.'] '.Url::sanitize($job['url']), true, IOInterface::DEBUG); +} +fclose($job['bodyHandle']); + +if ($response->getStatusCode() >= 400 && $response->getHeader('content-type') === 'application/json') { +HttpDownloader::outputWarnings($this->io, $job['origin'], json_decode($response->getBody(), true)); +} + +$result = $this->isAuthenticatedRetryNeeded($job, $response); +if ($result['retry']) { +$this->restartJob($job, $job['url'], ['storeAuth' => $result['storeAuth']]); +continue; +} + + +if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $job['attributes']['redirects'] < $this->maxRedirects) { +$location = $this->handleRedirect($job, $response); +if ($location) { +$this->restartJob($job, $location, ['redirects' => $job['attributes']['redirects'] + 1]); +continue; +} +} + + +if ($statusCode >= 400 && $statusCode <= 599) { +if ( +(!isset($job['options']['http']['method']) || $job['options']['http']['method'] === 'GET') +&& in_array($statusCode, [423, 425, 500, 502, 503, 504, 507, 510], true) +&& $job['attributes']['retries'] < $this->maxRetries +) { +$this->io->writeError('Retrying ('.($job['attributes']['retries'] + 1).') ' . Url::sanitize($job['url']) . ' due to status code '. $statusCode, true, IOInterface::DEBUG); +$this->restartJobWithDelay($job, $job['url'], ['retries' => $job['attributes']['retries'] + 1]); +continue; +} + +throw $this->failResponse($job, $response, $response->getStatusMessage()); +} + +if ($job['attributes']['storeAuth'] !== false) { +$this->authHelper->storeAuth($job['origin'], $job['attributes']['storeAuth']); +} + + +if (null !== $job['filename']) { +rename($job['filename'].'~', $job['filename']); +$job['resolve']($response); +} else { +$job['resolve']($response); +} +} catch (\Exception $e) { +if ($e instanceof TransportException) { +if (null !== $headers) { +$e->setHeaders($headers); +$e->setStatusCode($statusCode); +} +if (null !== $response) { +$e->setResponse($response->getBody()); +} +$e->setResponseInfo($progress); +} + +$this->rejectJob($job, $e); +} +} + +foreach ($this->jobs as $i => $curlHandle) { +$curlHandle = $this->jobs[$i]['curlHandle']; +$progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo); + +if ($this->jobs[$i]['progress'] !== $progress) { +$this->jobs[$i]['progress'] = $progress; + +if (isset($this->jobs[$i]['options']['max_file_size'])) { + +if ($this->jobs[$i]['options']['max_file_size'] < $progress['download_content_length']) { +$this->rejectJob($this->jobs[$i], new MaxFileSizeExceededException('Maximum allowed download size reached. Content-length header indicates ' . $progress['download_content_length'] . ' bytes. Allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes')); +} + + +if ($this->jobs[$i]['options']['max_file_size'] < $progress['size_download']) { +$this->rejectJob($this->jobs[$i], new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . $progress['size_download'] . ' of allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes')); +} +} + + +} +} +} + + + + +private function handleRedirect(array $job, Response $response): string +{ +if ($locationHeader = $response->getHeader('location')) { +if (parse_url($locationHeader, PHP_URL_SCHEME)) { + +$targetUrl = $locationHeader; +} elseif (parse_url($locationHeader, PHP_URL_HOST)) { + +$targetUrl = parse_url($job['url'], PHP_URL_SCHEME).':'.$locationHeader; +} elseif ('/' === $locationHeader[0]) { + +$urlHost = parse_url($job['url'], PHP_URL_HOST); + + +$targetUrl = Preg::replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $job['url']); +} else { + + +$targetUrl = Preg::replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $job['url']); +} +} + +if (!empty($targetUrl)) { +$this->io->writeError(sprintf('Following redirect (%u) %s', $job['attributes']['redirects'] + 1, Url::sanitize($targetUrl)), true, IOInterface::DEBUG); + +return $targetUrl; +} + +throw new TransportException('The "'.$job['url'].'" file could not be downloaded, got redirect without Location ('.$response->getStatusMessage().')'); +} + + + + + +private function isAuthenticatedRetryNeeded(array $job, Response $response): array +{ +if (in_array($response->getStatusCode(), [401, 403]) && $job['attributes']['retryAuthFailure']) { +$result = $this->authHelper->promptAuthIfNeeded($job['url'], $job['origin'], $response->getStatusCode(), $response->getStatusMessage(), $response->getHeaders(), $job['attributes']['retries']); + +if ($result['retry']) { +return $result; +} +} + +$locationHeader = $response->getHeader('location'); +$needsAuthRetry = false; + + +if ( +$job['origin'] === 'bitbucket.org' +&& !$this->authHelper->isPublicBitBucketDownload($job['url']) +&& substr($job['url'], -4) === '.zip' +&& (!$locationHeader || substr($locationHeader, -4) !== '.zip') +&& Preg::isMatch('{^text/html\b}i', $response->getHeader('content-type')) +) { +$needsAuthRetry = 'Bitbucket requires authentication and it was not provided'; +} + + +if ( +$response->getStatusCode() === 404 +&& in_array($job['origin'], $this->config->get('gitlab-domains'), true) +&& false !== strpos($job['url'], 'archive.zip') +) { +$needsAuthRetry = 'GitLab requires authentication and it was not provided'; +} + +if ($needsAuthRetry) { +if ($job['attributes']['retryAuthFailure']) { +$result = $this->authHelper->promptAuthIfNeeded($job['url'], $job['origin'], 401, null, [], $job['attributes']['retries']); +if ($result['retry']) { +return $result; +} +} + +throw $this->failResponse($job, $response, $needsAuthRetry); +} + +return ['retry' => false, 'storeAuth' => false]; +} + + + + + + + +private function restartJob(array $job, string $url, array $attributes = []): void +{ +if (null !== $job['filename']) { +@unlink($job['filename'].'~'); +} + +$attributes = array_merge($job['attributes'], $attributes); +$origin = Url::getOrigin($this->config, $url); + +$this->initDownload($job['resolve'], $job['reject'], $origin, $url, $job['options'], $job['filename'], $attributes); +} + + + + + + + +private function restartJobWithDelay(array $job, string $url, array $attributes): void +{ +if ($attributes['retries'] >= 3) { +usleep(500000); +} elseif ($attributes['retries'] >= 2) { +usleep(100000); +} + +$this->restartJob($job, $url, $attributes); +} + + + + +private function failResponse(array $job, Response $response, string $errorMessage): TransportException +{ +if (null !== $job['filename']) { +@unlink($job['filename'].'~'); +} + +$details = ''; +if (in_array(strtolower((string) $response->getHeader('content-type')), ['application/json', 'application/json; charset=utf-8'], true)) { +$details = ':'.PHP_EOL.substr($response->getBody(), 0, 200).(strlen($response->getBody()) > 200 ? '...' : ''); +} + +return new TransportException('The "'.$job['url'].'" file could not be downloaded ('.$errorMessage.')' . $details, $response->getStatusCode()); +} + + + + +private function rejectJob(array $job, \Exception $e): void +{ +if (is_resource($job['headerHandle'])) { +fclose($job['headerHandle']); +} +if (is_resource($job['bodyHandle'])) { +fclose($job['bodyHandle']); +} +if (null !== $job['filename']) { +@unlink($job['filename'].'~'); +} +$job['reject']($e); +} + +private function checkCurlResult(int $code): void +{ +if ($code !== CURLM_OK && $code !== CURLM_CALL_MULTI_PERFORM) { +throw new \RuntimeException( +isset($this->multiErrors[$code]) +? "cURL error: {$code} ({$this->multiErrors[$code][0]}): cURL message: {$this->multiErrors[$code][1]}" +: 'Unexpected cURL error: ' . $code +); +} +} +} diff --git a/composer/src/Composer/Util/Http/CurlResponse.php b/composer/src/Composer/Util/Http/CurlResponse.php new file mode 100644 index 000000000..8aaf5a66d --- /dev/null +++ b/composer/src/Composer/Util/Http/CurlResponse.php @@ -0,0 +1,43 @@ +curlInfo = $curlInfo; +} + + + + +public function getCurlInfo(): array +{ +return $this->curlInfo; +} +} diff --git a/composer/src/Composer/Util/Http/ProxyHelper.php b/composer/src/Composer/Util/Http/ProxyHelper.php new file mode 100644 index 000000000..0efa8a789 --- /dev/null +++ b/composer/src/Composer/Util/Http/ProxyHelper.php @@ -0,0 +1,181 @@ +fullProxy = $this->safeProxy = [ +'http' => null, +'https' => null, +]; + +$this->streams['http'] = $this->streams['https'] = [ +'options' => null, +]; + +$this->hasProxy = false; +$this->initProxyData(); +} + +public static function getInstance(): ProxyManager +{ +if (!self::$instance) { +self::$instance = new self(); +} + +return self::$instance; +} + + + + +public static function reset(): void +{ +self::$instance = null; +} + + + + + + +public function getProxyForRequest(string $requestUrl): RequestProxy +{ +if ($this->error) { +throw new TransportException('Unable to use a proxy: '.$this->error); +} + +$scheme = parse_url($requestUrl, PHP_URL_SCHEME) ?: 'http'; +$proxyUrl = ''; +$options = []; +$formattedProxyUrl = ''; + +if ($this->hasProxy && in_array($scheme, ['http', 'https'], true) && $this->fullProxy[$scheme]) { +if ($this->noProxy($requestUrl)) { +$formattedProxyUrl = 'excluded by no_proxy'; +} else { +$proxyUrl = $this->fullProxy[$scheme]; +$options = $this->streams[$scheme]['options']; +ProxyHelper::setRequestFullUri($requestUrl, $options); +$formattedProxyUrl = $this->safeProxy[$scheme]; +} +} + +return new RequestProxy($proxyUrl, $options, $formattedProxyUrl); +} + + + + + + +public function isProxying(): bool +{ +return $this->hasProxy; +} + + + + + + +public function getFormattedProxy(): ?string +{ +return $this->hasProxy ? $this->info : $this->error; +} + + + + +private function initProxyData(): void +{ +try { +[$httpProxy, $httpsProxy, $noProxy] = ProxyHelper::getProxyData(); +} catch (\RuntimeException $e) { +$this->error = $e->getMessage(); + +return; +} + +$info = []; + +if ($httpProxy) { +$info[] = $this->setData($httpProxy, 'http'); +} +if ($httpsProxy) { +$info[] = $this->setData($httpsProxy, 'https'); +} +if ($this->hasProxy) { +$this->info = implode(', ', $info); +if ($noProxy) { +$this->noProxyHandler = new NoProxyPattern($noProxy); +} +} +} + + + + + + + + + +private function setData($url, $scheme): string +{ +$safeProxy = Url::sanitize($url); +$this->fullProxy[$scheme] = $url; +$this->safeProxy[$scheme] = $safeProxy; +$this->streams[$scheme]['options'] = ProxyHelper::getContextOptions($url); +$this->hasProxy = true; + +return sprintf('%s=%s', $scheme, $safeProxy); +} + + + + +private function noProxy(string $requestUrl): bool +{ +return $this->noProxyHandler && $this->noProxyHandler->test($requestUrl); +} +} diff --git a/composer/src/Composer/Util/Http/RequestProxy.php b/composer/src/Composer/Util/Http/RequestProxy.php new file mode 100644 index 000000000..fcc712949 --- /dev/null +++ b/composer/src/Composer/Util/Http/RequestProxy.php @@ -0,0 +1,89 @@ +url = $url; +$this->contextOptions = $contextOptions; +$this->formattedUrl = $formattedUrl; +$this->isSecure = 0 === strpos($url, 'https://'); +} + + + + + + +public function getContextOptions(): array +{ +return $this->contextOptions; +} + + + + + + + +public function getFormattedUrl(?string $format = ''): string +{ +$result = ''; +if ($this->formattedUrl) { +$format = $format ?: '%s'; +$result = sprintf($format, $this->formattedUrl); +} + +return $result; +} + + + + + + +public function getUrl(): string +{ +return $this->url; +} + + + + + + +public function isSecure(): bool +{ +return $this->isSecure; +} +} diff --git a/composer/src/Composer/Util/Http/Response.php b/composer/src/Composer/Util/Http/Response.php new file mode 100644 index 000000000..6b4af473d --- /dev/null +++ b/composer/src/Composer/Util/Http/Response.php @@ -0,0 +1,123 @@ +request = $request; +$this->code = (int) $code; +$this->headers = $headers; +$this->body = $body; +} + +public function getStatusCode(): int +{ +return $this->code; +} + +public function getStatusMessage(): ?string +{ +$value = null; +foreach ($this->headers as $header) { +if (Preg::isMatch('{^HTTP/\S+ \d+}i', $header)) { + + +$value = $header; +} +} + +return $value; +} + + + + +public function getHeaders(): array +{ +return $this->headers; +} + + + + +public function getHeader(string $name): ?string +{ +return self::findHeaderValue($this->headers, $name); +} + + + + +public function getBody(): ?string +{ +return $this->body; +} + + + + +public function decodeJson() +{ +return JsonFile::parseJson($this->body, $this->request['url']); +} + + + + +public function collect(): void +{ + +$this->request = $this->code = $this->headers = $this->body = null; +} + + + + + +public static function findHeaderValue(array $headers, string $name): ?string +{ +$value = null; +foreach ($headers as $header) { +if (Preg::isMatch('{^'.preg_quote($name).':\s*(.+?)\s*$}i', $header, $match)) { +$value = $match[1]; +} +} + +return $value; +} +} diff --git a/composer/src/Composer/Util/HttpDownloader.php b/composer/src/Composer/Util/HttpDownloader.php new file mode 100644 index 000000000..4a3da4bcb --- /dev/null +++ b/composer/src/Composer/Util/HttpDownloader.php @@ -0,0 +1,545 @@ +io = $io; + +$this->disabled = (bool) Platform::getEnv('COMPOSER_DISABLE_NETWORK'); + + + +if ($disableTls === false) { +$this->options = StreamContextFactory::getTlsDefaults($options, $io); +} + + +$this->options = array_replace_recursive($this->options, $options); +$this->config = $config; + +if (self::isCurlEnabled()) { +$this->curl = new CurlDownloader($io, $config, $options, $disableTls); +} + +$this->rfs = new RemoteFilesystem($io, $config, $options, $disableTls); + +if (is_numeric($maxJobs = Platform::getEnv('COMPOSER_MAX_PARALLEL_HTTP'))) { +$this->maxJobs = max(1, min(50, (int) $maxJobs)); +} +} + + + + + + + + + + +public function get(string $url, array $options = []) +{ +if ('' === $url) { +throw new \InvalidArgumentException('$url must not be an empty string'); +} +[$job] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => null], true); +$this->wait($job['id']); + +$response = $this->getResponse($job['id']); + +return $response; +} + + + + + + + + + + +public function add(string $url, array $options = []) +{ +if ('' === $url) { +throw new \InvalidArgumentException('$url must not be an empty string'); +} +[, $promise] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => null]); + +return $promise; +} + + + + + + + + + + + +public function copy(string $url, string $to, array $options = []) +{ +if ('' === $url) { +throw new \InvalidArgumentException('$url must not be an empty string'); +} +[$job] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => $to], true); +$this->wait($job['id']); + +return $this->getResponse($job['id']); +} + + + + + + + + + + + +public function addCopy(string $url, string $to, array $options = []) +{ +if ('' === $url) { +throw new \InvalidArgumentException('$url must not be an empty string'); +} +[, $promise] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => $to]); + +return $promise; +} + + + + + + +public function getOptions() +{ +return $this->options; +} + + + + + + + +public function setOptions(array $options) +{ +$this->options = array_replace_recursive($this->options, $options); +} + + + + + +private function addJob(array $request, bool $sync = false): array +{ +$request['options'] = array_replace_recursive($this->options, $request['options']); + + +$job = [ +'id' => $this->idGen++, +'status' => self::STATUS_QUEUED, +'request' => $request, +'sync' => $sync, +'origin' => Url::getOrigin($this->config, $request['url']), +]; + +if (!$sync && !$this->allowAsync) { +throw new \LogicException('You must use the HttpDownloader instance which is part of a Composer\Loop instance to be able to run async http requests'); +} + + +if (Preg::isMatchStrictGroups('{^https?://([^:/]+):([^@/]+)@([^/]+)}i', $request['url'], $match)) { +$this->io->setAuthentication($job['origin'], rawurldecode($match[1]), rawurldecode($match[2])); +} + +$rfs = $this->rfs; + +if ($this->canUseCurl($job)) { +$resolver = static function ($resolve, $reject) use (&$job): void { +$job['status'] = HttpDownloader::STATUS_QUEUED; +$job['resolve'] = $resolve; +$job['reject'] = $reject; +}; +} else { +$resolver = static function ($resolve, $reject) use (&$job, $rfs): void { + +$url = $job['request']['url']; +$options = $job['request']['options']; + +$job['status'] = HttpDownloader::STATUS_STARTED; + +if ($job['request']['copyTo']) { +$rfs->copy($job['origin'], $url, $job['request']['copyTo'], false , $options); + +$headers = $rfs->getLastHeaders(); +$response = new Http\Response($job['request'], $rfs->findStatusCode($headers), $headers, $job['request']['copyTo'].'~'); + +$resolve($response); +} else { +$body = $rfs->getContents($job['origin'], $url, false , $options); +$headers = $rfs->getLastHeaders(); +$response = new Http\Response($job['request'], $rfs->findStatusCode($headers), $headers, $body); + +$resolve($response); +} +}; +} + +$curl = $this->curl; + +$canceler = static function () use (&$job, $curl): void { +if ($job['status'] === HttpDownloader::STATUS_QUEUED) { +$job['status'] = HttpDownloader::STATUS_ABORTED; +} +if ($job['status'] !== HttpDownloader::STATUS_STARTED) { +return; +} +$job['status'] = HttpDownloader::STATUS_ABORTED; +if (isset($job['curl_id'])) { +$curl->abortRequest($job['curl_id']); +} +throw new IrrecoverableDownloadException('Download of ' . Url::sanitize($job['request']['url']) . ' canceled'); +}; + +$promise = new Promise($resolver, $canceler); +$promise = $promise->then(function ($response) use (&$job) { +$job['status'] = HttpDownloader::STATUS_COMPLETED; +$job['response'] = $response; + +$this->markJobDone(); + +return $response; +}, function ($e) use (&$job): void { +$job['status'] = HttpDownloader::STATUS_FAILED; +$job['exception'] = $e; + +$this->markJobDone(); + +throw $e; +}); +$this->jobs[$job['id']] = &$job; + +if ($this->runningJobs < $this->maxJobs) { +$this->startJob($job['id']); +} + +return [$job, $promise]; +} + +private function startJob(int $id): void +{ +$job = &$this->jobs[$id]; +if ($job['status'] !== self::STATUS_QUEUED) { +return; +} + + +$job['status'] = self::STATUS_STARTED; +$this->runningJobs++; + +assert(isset($job['resolve'])); +assert(isset($job['reject'])); + +$resolve = $job['resolve']; +$reject = $job['reject']; +$url = $job['request']['url']; +$options = $job['request']['options']; +$origin = $job['origin']; + +if ($this->disabled) { +if (isset($job['request']['options']['http']['header']) && false !== stripos(implode('', $job['request']['options']['http']['header']), 'if-modified-since')) { +$resolve(new Response(['url' => $url], 304, [], '')); +} else { +$e = new TransportException('Network disabled, request canceled: '.Url::sanitize($url), 499); +$e->setStatusCode(499); +$reject($e); +} + +return; +} + +try { +if ($job['request']['copyTo']) { +$job['curl_id'] = $this->curl->download($resolve, $reject, $origin, $url, $options, $job['request']['copyTo']); +} else { +$job['curl_id'] = $this->curl->download($resolve, $reject, $origin, $url, $options); +} +} catch (\Exception $exception) { +$reject($exception); +} +} + +private function markJobDone(): void +{ +$this->runningJobs--; +} + + + + + + + + +public function wait(?int $index = null) +{ +do { +$jobCount = $this->countActiveJobs($index); +} while ($jobCount); +} + + + + +public function enableAsync(): void +{ +$this->allowAsync = true; +} + + + + + + + +public function countActiveJobs(?int $index = null): int +{ +if ($this->runningJobs < $this->maxJobs) { +foreach ($this->jobs as $job) { +if ($job['status'] === self::STATUS_QUEUED && $this->runningJobs < $this->maxJobs) { +$this->startJob($job['id']); +} +} +} + +if ($this->curl) { +$this->curl->tick(); +} + +if (null !== $index) { +return $this->jobs[$index]['status'] < self::STATUS_COMPLETED ? 1 : 0; +} + +$active = 0; +foreach ($this->jobs as $job) { +if ($job['status'] < self::STATUS_COMPLETED) { +$active++; +} elseif (!$job['sync']) { +unset($this->jobs[$job['id']]); +} +} + +return $active; +} + + + + +private function getResponse(int $index): Response +{ +if (!isset($this->jobs[$index])) { +throw new \LogicException('Invalid request id'); +} + +if ($this->jobs[$index]['status'] === self::STATUS_FAILED) { +assert(isset($this->jobs[$index]['exception'])); +throw $this->jobs[$index]['exception']; +} + +if (!isset($this->jobs[$index]['response'])) { +throw new \LogicException('Response not available yet, call wait() first'); +} + +$resp = $this->jobs[$index]['response']; + +unset($this->jobs[$index]); + +return $resp; +} + + + + + + +public static function outputWarnings(IOInterface $io, string $url, $data): void +{ +$cleanMessage = static function ($msg) use ($io) { +if (!$io->isDecorated()) { +$msg = Preg::replace('{'.chr(27).'\\[[;\d]*m}u', '', $msg); +} + +return $msg; +}; + + +foreach (['warning', 'info'] as $type) { +if (empty($data[$type])) { +continue; +} + +if (!empty($data[$type . '-versions'])) { +$versionParser = new VersionParser(); +$constraint = $versionParser->parseConstraints($data[$type . '-versions']); +$composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); +if (!$constraint->matches($composer)) { +continue; +} +} + +$io->writeError('<'.$type.'>'.ucfirst($type).' from '.Url::sanitize($url).': '.$cleanMessage($data[$type]).''); +} + + +foreach (['warnings', 'infos'] as $key) { +if (empty($data[$key])) { +continue; +} + +$versionParser = new VersionParser(); +foreach ($data[$key] as $spec) { +$type = substr($key, 0, -1); +$constraint = $versionParser->parseConstraints($spec['versions']); +$composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); +if (!$constraint->matches($composer)) { +continue; +} + +$io->writeError('<'.$type.'>'.ucfirst($type).' from '.Url::sanitize($url).': '.$cleanMessage($spec['message']).''); +} +} +} + + + + + + +public static function getExceptionHints(\Throwable $e): ?array +{ +if (!$e instanceof TransportException) { +return null; +} + +if ( +false !== strpos($e->getMessage(), 'Resolving timed out') +|| false !== strpos($e->getMessage(), 'Could not resolve host') +) { +Silencer::suppress(); +$testConnectivity = file_get_contents('https://8.8.8.8', false, stream_context_create([ +'ssl' => ['verify_peer' => false], +'http' => ['follow_location' => false, 'ignore_errors' => true], +])); +Silencer::restore(); +if (false !== $testConnectivity) { +return [ +'The following exception probably indicates you have misconfigured DNS resolver(s)', +]; +} + +return [ +'The following exception probably indicates you are offline or have misconfigured DNS resolver(s)', +]; +} + +return null; +} + + + + +private function canUseCurl(array $job): bool +{ +if (!$this->curl) { +return false; +} + +if (!Preg::isMatch('{^https?://}i', $job['request']['url'])) { +return false; +} + +if (!empty($job['request']['options']['ssl']['allow_self_signed'])) { +return false; +} + +return true; +} + + + + +public static function isCurlEnabled(): bool +{ +return \extension_loaded('curl') && \function_exists('curl_multi_exec') && \function_exists('curl_multi_init'); +} +} diff --git a/composer/src/Composer/Util/IniHelper.php b/composer/src/Composer/Util/IniHelper.php new file mode 100644 index 000000000..4501a0e6e --- /dev/null +++ b/composer/src/Composer/Util/IniHelper.php @@ -0,0 +1,62 @@ +httpDownloader = $httpDownloader; +$this->httpDownloader->enableAsync(); + +$this->processExecutor = $processExecutor; +if ($this->processExecutor) { +$this->processExecutor->enableAsync(); +} +} + +public function getHttpDownloader(): HttpDownloader +{ +return $this->httpDownloader; +} + +public function getProcessExecutor(): ?ProcessExecutor +{ +return $this->processExecutor; +} + + + + + +public function wait(array $promises, ?ProgressBar $progress = null): void +{ + +$uncaught = null; + +\React\Promise\all($promises)->then( +static function (): void { +}, +static function ($e) use (&$uncaught): void { +$uncaught = $e; +} +); + + + +$waitIndex = $this->waitIndex++; +$this->currentPromises[$waitIndex] = $promises; + +if ($progress) { +$totalJobs = 0; +$totalJobs += $this->httpDownloader->countActiveJobs(); +if ($this->processExecutor) { +$totalJobs += $this->processExecutor->countActiveJobs(); +} +$progress->start($totalJobs); +} + +$lastUpdate = 0; +while (true) { +$activeJobs = 0; + +$activeJobs += $this->httpDownloader->countActiveJobs(); +if ($this->processExecutor) { +$activeJobs += $this->processExecutor->countActiveJobs(); +} + +if ($progress && microtime(true) - $lastUpdate > 0.1) { +$lastUpdate = microtime(true); +$progress->setProgress($progress->getMaxSteps() - $activeJobs); +} + +if (!$activeJobs) { +break; +} +} + + +if ($progress) { +$progress->finish(); +} + +unset($this->currentPromises[$waitIndex]); +if ($uncaught) { +throw $uncaught; +} +} + +public function abortJobs(): void +{ +foreach ($this->currentPromises as $promiseGroup) { +foreach ($promiseGroup as $promise) { +if ($promise instanceof CancellablePromiseInterface) { +$promise->cancel(); +} +} +} +} +} diff --git a/composer/src/Composer/Util/MetadataMinifier.php b/composer/src/Composer/Util/MetadataMinifier.php new file mode 100644 index 000000000..0a24e014e --- /dev/null +++ b/composer/src/Composer/Util/MetadataMinifier.php @@ -0,0 +1,22 @@ +hostNames = Preg::split('{[\s,]+}', $pattern, -1, PREG_SPLIT_NO_EMPTY); +$this->noproxy = empty($this->hostNames) || '*' === $this->hostNames[0]; +} + + + + +public function test(string $url): bool +{ +if ($this->noproxy) { +return true; +} + +if (!$urlData = $this->getUrlData($url)) { +return false; +} + +foreach ($this->hostNames as $index => $hostName) { +if ($this->match($index, $hostName, $urlData)) { +return true; +} +} + +return false; +} + + + + + + +protected function getUrlData(string $url) +{ +if (!$host = parse_url($url, PHP_URL_HOST)) { +return false; +} + +$port = parse_url($url, PHP_URL_PORT); + +if (empty($port)) { +switch (parse_url($url, PHP_URL_SCHEME)) { +case 'http': +$port = 80; +break; +case 'https': +$port = 443; +break; +} +} + +$hostName = $host . ($port ? ':' . $port : ''); +[$host, $port, $err] = $this->splitHostPort($hostName); + +if ($err || !$this->ipCheckData($host, $ipdata)) { +return false; +} + +return $this->makeData($host, $port, $ipdata); +} + + + + +protected function match(int $index, string $hostName, stdClass $url): bool +{ +if (!$rule = $this->getRule($index, $hostName)) { + +return false; +} + +if ($rule->ipdata) { + +if (!$url->ipdata) { +return false; +} + +if ($rule->ipdata->netmask) { +return $this->matchRange($rule->ipdata, $url->ipdata); +} + +$match = $rule->ipdata->ip === $url->ipdata->ip; +} else { + +$haystack = substr($url->name, -strlen($rule->name)); +$match = stripos($haystack, $rule->name) === 0; +} + +if ($match && $rule->port) { +$match = $rule->port === $url->port; +} + +return $match; +} + + + + +protected function matchRange(stdClass $network, stdClass $target): bool +{ +$net = unpack('C*', $network->ip); +$mask = unpack('C*', $network->netmask); +$ip = unpack('C*', $target->ip); +if (false === $net) { +throw new \RuntimeException('Could not parse network IP '.$network->ip); +} +if (false === $mask) { +throw new \RuntimeException('Could not parse netmask '.$network->netmask); +} +if (false === $ip) { +throw new \RuntimeException('Could not parse target IP '.$target->ip); +} + +for ($i = 1; $i < 17; ++$i) { +if (($net[$i] & $mask[$i]) !== ($ip[$i] & $mask[$i])) { +return false; +} +} + +return true; +} + + + + + + +private function getRule(int $index, string $hostName): ?stdClass +{ +if (array_key_exists($index, $this->rules)) { +return $this->rules[$index]; +} + +$this->rules[$index] = null; +[$host, $port, $err] = $this->splitHostPort($hostName); + +if ($err || !$this->ipCheckData($host, $ipdata, true)) { +return null; +} + +$this->rules[$index] = $this->makeData($host, $port, $ipdata); + +return $this->rules[$index]; +} + + + + + + + + + +private function ipCheckData(string $host, ?stdClass &$ipdata, bool $allowPrefix = false): bool +{ +$ipdata = null; +$netmask = null; +$prefix = null; +$modified = false; + + +if (strpos($host, '/') !== false) { +[$host, $prefix] = explode('/', $host); + +if (!$allowPrefix || !$this->validateInt($prefix, 0, 128)) { +return false; +} +$prefix = (int) $prefix; +$modified = true; +} + + +if (!filter_var($host, FILTER_VALIDATE_IP)) { +return !$modified; +} + +[$ip, $size] = $this->ipGetAddr($host); + +if ($prefix !== null) { + +if ($prefix > $size * 8) { +return false; +} + +[$ip, $netmask] = $this->ipGetNetwork($ip, $size, $prefix); +} + +$ipdata = $this->makeIpData($ip, $size, $netmask); + +return true; +} + + + + + + + + + +private function ipGetAddr(string $host): array +{ +$ip = inet_pton($host); +$size = strlen($ip); +$mapped = $this->ipMapTo6($ip, $size); + +return [$mapped, $size]; +} + + + + + + + +private function ipGetMask(int $prefix, int $size): string +{ +$mask = ''; + +if ($ones = floor($prefix / 8)) { +$mask = str_repeat(chr(255), (int) $ones); +} + +if ($remainder = $prefix % 8) { +$mask .= chr(0xff ^ (0xff >> $remainder)); +} + +$mask = str_pad($mask, $size, chr(0)); + +return $this->ipMapTo6($mask, $size); +} + + + + + + + + + + +private function ipGetNetwork(string $rangeIp, int $size, int $prefix): array +{ +$netmask = $this->ipGetMask($prefix, $size); + + +$mask = unpack('C*', $netmask); +$ip = unpack('C*', $rangeIp); +$net = ''; +if (false === $mask) { +throw new \RuntimeException('Could not parse netmask '.$netmask); +} +if (false === $ip) { +throw new \RuntimeException('Could not parse range IP '.$rangeIp); +} + +for ($i = 1; $i < 17; ++$i) { +$net .= chr($ip[$i] & $mask[$i]); +} + +return [$net, $netmask]; +} + + + + + + + + + +private function ipMapTo6(string $binary, int $size): string +{ +if ($size === 4) { +$prefix = str_repeat(chr(0), 10) . str_repeat(chr(255), 2); +$binary = $prefix . $binary; +} + +return $binary; +} + + + + +private function makeData(string $host, int $port, ?stdClass $ipdata): stdClass +{ +return (object) [ +'host' => $host, +'name' => '.' . ltrim($host, '.'), +'port' => $port, +'ipdata' => $ipdata, +]; +} + + + + + + + + +private function makeIpData(string $ip, int $size, ?string $netmask): stdClass +{ +return (object) [ +'ip' => $ip, +'size' => $size, +'netmask' => $netmask, +]; +} + + + + + + +private function splitHostPort(string $hostName): array +{ + +$error = ['', '', true]; +$port = 0; +$ip6 = ''; + + +if ($hostName[0] === '[') { +$index = strpos($hostName, ']'); + + +if (false === $index || $index < 3) { +return $error; +} + +$ip6 = substr($hostName, 1, $index - 1); +$hostName = substr($hostName, $index + 1); + +if (strpbrk($hostName, '[]') !== false || substr_count($hostName, ':') > 1) { +return $error; +} +} + +if (substr_count($hostName, ':') === 1) { +$index = strpos($hostName, ':'); +$port = substr($hostName, $index + 1); +$hostName = substr($hostName, 0, $index); + +if (!$this->validateInt($port, 1, 65535)) { +return $error; +} + +$port = (int) $port; +} + +$host = $ip6 . $hostName; + +return [$host, $port, false]; +} + + + + +private function validateInt(string $int, int $min, int $max): bool +{ +$options = [ +'options' => [ +'min_range' => $min, +'max_range' => $max, +], +]; + +return false !== filter_var($int, FILTER_VALIDATE_INT, $options); +} +} diff --git a/composer/src/Composer/Util/PackageInfo.php b/composer/src/Composer/Util/PackageInfo.php new file mode 100644 index 000000000..ca4ba3078 --- /dev/null +++ b/composer/src/Composer/Util/PackageInfo.php @@ -0,0 +1,33 @@ +getSupport()['source'])) { +return $package->getSupport()['source']; +} + +return $package->getSourceUrl(); +} + +public static function getViewSourceOrHomepageUrl(PackageInterface $package): ?string +{ +return self::getViewSourceUrl($package) ?? ($package instanceof CompletePackageInterface ? $package->getHomepage() : null); +} +} diff --git a/composer/src/Composer/Util/PackageSorter.php b/composer/src/Composer/Util/PackageSorter.php new file mode 100644 index 000000000..44af7a170 --- /dev/null +++ b/composer/src/Composer/Util/PackageSorter.php @@ -0,0 +1,140 @@ +isDefaultBranch()) { +return $candidate; +} + +if (version_compare($highest->getVersion(), $candidate->getVersion(), '<')) { +$highest = $candidate; +} +} + +return $highest; +} + + + + + + + + +public static function sortPackagesAlphabetically(array $packages): array +{ +usort($packages, static function (PackageInterface $a, PackageInterface $b) { +return $a->getName() <=> $b->getName(); +}); + +return $packages; +} + + + + + + + + + + +public static function sortPackages(array $packages, array $weights = []): array +{ +$usageList = []; + +foreach ($packages as $package) { +$links = $package->getRequires(); +if ($package instanceof RootPackageInterface) { +$links = array_merge($links, $package->getDevRequires()); +} +foreach ($links as $link) { +$target = $link->getTarget(); +$usageList[$target][] = $package->getName(); +} +} +$computing = []; +$computed = []; +$computeImportance = static function ($name) use (&$computeImportance, &$computing, &$computed, $usageList, $weights) { + +if (isset($computed[$name])) { +return $computed[$name]; +} + + +if (isset($computing[$name])) { +return 0; +} + +$computing[$name] = true; +$weight = $weights[$name] ?? 0; + +if (isset($usageList[$name])) { +foreach ($usageList[$name] as $user) { +$weight -= 1 - $computeImportance($user); +} +} + +unset($computing[$name]); +$computed[$name] = $weight; + +return $weight; +}; + +$weightedPackages = []; + +foreach ($packages as $index => $package) { +$name = $package->getName(); +$weight = $computeImportance($name); +$weightedPackages[] = ['name' => $name, 'weight' => $weight, 'index' => $index]; +} + +usort($weightedPackages, static function (array $a, array $b): int { +if ($a['weight'] !== $b['weight']) { +return $a['weight'] - $b['weight']; +} + +return strnatcasecmp($a['name'], $b['name']); +}); + +$sortedPackages = []; + +foreach ($weightedPackages as $pkg) { +$sortedPackages[] = $packages[$pkg['index']]; +} + +return $sortedPackages; +} +} diff --git a/composer/src/Composer/Util/Perforce.php b/composer/src/Composer/Util/Perforce.php new file mode 100644 index 000000000..73fb7c552 --- /dev/null +++ b/composer/src/Composer/Util/Perforce.php @@ -0,0 +1,623 @@ +windowsFlag = $isWindows; +$this->p4Port = $port; +$this->initializePath($path); +$this->process = $process; +$this->initialize($repoConfig); +$this->io = $io; +} + + + + +public static function create($repoConfig, string $port, string $path, ProcessExecutor $process, IOInterface $io): self +{ +return new Perforce($repoConfig, $port, $path, $process, Platform::isWindows(), $io); +} + +public static function checkServerExists(string $url, ProcessExecutor $processExecutor): bool +{ +return 0 === $processExecutor->execute('p4 -p ' . ProcessExecutor::escape($url) . ' info -s', $ignoredOutput); +} + + + + +public function initialize($repoConfig): void +{ +$this->uniquePerforceClientName = $this->generateUniquePerforceClientName(); +if (!$repoConfig) { +return; +} +if (isset($repoConfig['unique_perforce_client_name'])) { +$this->uniquePerforceClientName = $repoConfig['unique_perforce_client_name']; +} + +if (isset($repoConfig['depot'])) { +$this->p4Depot = $repoConfig['depot']; +} +if (isset($repoConfig['branch'])) { +$this->p4Branch = $repoConfig['branch']; +} +if (isset($repoConfig['p4user'])) { +$this->p4User = $repoConfig['p4user']; +} else { +$this->p4User = $this->getP4variable('P4USER'); +} +if (isset($repoConfig['p4password'])) { +$this->p4Password = $repoConfig['p4password']; +} +} + +public function initializeDepotAndBranch(?string $depot, ?string $branch): void +{ +if (isset($depot)) { +$this->p4Depot = $depot; +} +if (isset($branch)) { +$this->p4Branch = $branch; +} +} + + + + +public function generateUniquePerforceClientName(): string +{ +return gethostname() . "_" . time(); +} + +public function cleanupClientSpec(): void +{ +$client = $this->getClient(); +$task = 'client -d ' . ProcessExecutor::escape($client); +$useP4Client = false; +$command = $this->generateP4Command($task, $useP4Client); +$this->executeCommand($command); +$clientSpec = $this->getP4ClientSpec(); +$fileSystem = $this->getFilesystem(); +$fileSystem->remove($clientSpec); +} + + + + +protected function executeCommand($command): int +{ +$this->commandResult = ''; + +return $this->process->execute($command, $this->commandResult); +} + +public function getClient(): string +{ +if (!isset($this->p4Client)) { +$cleanStreamName = str_replace(['//', '/', '@'], ['', '_', ''], $this->getStream()); +$this->p4Client = 'composer_perforce_' . $this->uniquePerforceClientName . '_' . $cleanStreamName; +} + +return $this->p4Client; +} + +protected function getPath(): string +{ +return $this->path; +} + +public function initializePath(string $path): void +{ +$this->path = $path; +$fs = $this->getFilesystem(); +$fs->ensureDirectoryExists($path); +} + +protected function getPort(): string +{ +return $this->p4Port; +} + +public function setStream(string $stream): void +{ +$this->p4Stream = $stream; +$index = strrpos($stream, '/'); + +if ($index > 2) { +$this->p4DepotType = 'stream'; +} +} + +public function isStream(): bool +{ +return is_string($this->p4DepotType) && (strcmp($this->p4DepotType, 'stream') === 0); +} + +public function getStream(): string +{ +if (!isset($this->p4Stream)) { +if ($this->isStream()) { +$this->p4Stream = '//' . $this->p4Depot . '/' . $this->p4Branch; +} else { +$this->p4Stream = '//' . $this->p4Depot; +} +} + +return $this->p4Stream; +} + +public function getStreamWithoutLabel(string $stream): string +{ +$index = strpos($stream, '@'); +if ($index === false) { +return $stream; +} + +return substr($stream, 0, $index); +} + + + + +public function getP4ClientSpec(): string +{ +return $this->path . '/' . $this->getClient() . '.p4.spec'; +} + +public function getUser(): ?string +{ +return $this->p4User; +} + +public function setUser(?string $user): void +{ +$this->p4User = $user; +} + +public function queryP4User(): void +{ +$this->getUser(); +if (strlen((string) $this->p4User) > 0) { +return; +} +$this->p4User = $this->getP4variable('P4USER'); +if (strlen((string) $this->p4User) > 0) { +return; +} +$this->p4User = $this->io->ask('Enter P4 User:'); +if ($this->windowsFlag) { +$command = 'p4 set P4USER=' . $this->p4User; +} else { +$command = 'export P4USER=' . $this->p4User; +} +$this->executeCommand($command); +} + + + + +protected function getP4variable(string $name): ?string +{ +if ($this->windowsFlag) { +$command = 'p4 set'; +$this->executeCommand($command); +$result = trim($this->commandResult); +$resArray = explode(PHP_EOL, $result); +foreach ($resArray as $line) { +$fields = explode('=', $line); +if (strcmp($name, $fields[0]) === 0) { +$index = strpos($fields[1], ' '); +if ($index === false) { +$value = $fields[1]; +} else { +$value = substr($fields[1], 0, $index); +} +$value = trim($value); + +return $value; +} +} + +return null; +} + +$command = 'echo $' . $name; +$this->executeCommand($command); +$result = trim($this->commandResult); + +return $result; +} + +public function queryP4Password(): ?string +{ +if (isset($this->p4Password)) { +return $this->p4Password; +} +$password = $this->getP4variable('P4PASSWD'); +if (strlen((string) $password) <= 0) { +$password = $this->io->askAndHideAnswer('Enter password for Perforce user ' . $this->getUser() . ': '); +} +$this->p4Password = $password; + +return $password; +} + + + + +public function generateP4Command(string $command, bool $useClient = true): string +{ +$p4Command = 'p4 '; +$p4Command .= '-u ' . $this->getUser() . ' '; +if ($useClient) { +$p4Command .= '-c ' . $this->getClient() . ' '; +} +$p4Command .= '-p ' . $this->getPort() . ' ' . $command; + +return $p4Command; +} + +public function isLoggedIn(): bool +{ +$command = $this->generateP4Command('login -s', false); +$exitCode = $this->executeCommand($command); +if ($exitCode) { +$errorOutput = $this->process->getErrorOutput(); +$index = strpos($errorOutput, $this->getUser()); +if ($index === false) { +$index = strpos($errorOutput, 'p4'); +if ($index === false) { +return false; +} +throw new \Exception('p4 command not found in path: ' . $errorOutput); +} +throw new \Exception('Invalid user name: ' . $this->getUser()); +} + +return true; +} + +public function connectClient(): void +{ +$p4CreateClientCommand = $this->generateP4Command( +'client -i < ' . str_replace(" ", "\\ ", $this->getP4ClientSpec()) +); +$this->executeCommand($p4CreateClientCommand); +} + +public function syncCodeBase(?string $sourceReference): void +{ +$prevDir = Platform::getCwd(); +chdir($this->path); +$p4SyncCommand = $this->generateP4Command('sync -f '); +if (null !== $sourceReference) { +$p4SyncCommand .= '@' . $sourceReference; +} +$this->executeCommand($p4SyncCommand); +chdir($prevDir); +} + + + + +public function writeClientSpecToFile($spec): void +{ +fwrite($spec, 'Client: ' . $this->getClient() . PHP_EOL . PHP_EOL); +fwrite($spec, 'Update: ' . date('Y/m/d H:i:s') . PHP_EOL . PHP_EOL); +fwrite($spec, 'Access: ' . date('Y/m/d H:i:s') . PHP_EOL); +fwrite($spec, 'Owner: ' . $this->getUser() . PHP_EOL . PHP_EOL); +fwrite($spec, 'Description:' . PHP_EOL); +fwrite($spec, ' Created by ' . $this->getUser() . ' from composer.' . PHP_EOL . PHP_EOL); +fwrite($spec, 'Root: ' . $this->getPath() . PHP_EOL . PHP_EOL); +fwrite($spec, 'Options: noallwrite noclobber nocompress unlocked modtime rmdir' . PHP_EOL . PHP_EOL); +fwrite($spec, 'SubmitOptions: revertunchanged' . PHP_EOL . PHP_EOL); +fwrite($spec, 'LineEnd: local' . PHP_EOL . PHP_EOL); +if ($this->isStream()) { +fwrite($spec, 'Stream:' . PHP_EOL); +fwrite($spec, ' ' . $this->getStreamWithoutLabel($this->p4Stream) . PHP_EOL); +} else { +fwrite( +$spec, +'View: ' . $this->getStream() . '/... //' . $this->getClient() . '/... ' . PHP_EOL +); +} +} + +public function writeP4ClientSpec(): void +{ +$clientSpec = $this->getP4ClientSpec(); +$spec = fopen($clientSpec, 'w'); +try { +$this->writeClientSpecToFile($spec); +} catch (\Exception $e) { +fclose($spec); +throw $e; +} +fclose($spec); +} + + + + + +protected function read($pipe, $name): void +{ +if (feof($pipe)) { +return; +} +$line = fgets($pipe); +while ($line !== false) { +$line = fgets($pipe); +} +} + +public function windowsLogin(?string $password): int +{ +$command = $this->generateP4Command(' login -a'); + +$process = Process::fromShellCommandline($command, null, null, $password); + +return $process->run(); +} + +public function p4Login(): void +{ +$this->queryP4User(); +if (!$this->isLoggedIn()) { +$password = $this->queryP4Password(); +if ($this->windowsFlag) { +$this->windowsLogin($password); +} else { +$command = 'echo ' . ProcessExecutor::escape($password) . ' | ' . $this->generateP4Command(' login -a', false); +$exitCode = $this->executeCommand($command); +if ($exitCode) { +throw new \Exception("Error logging in:" . $this->process->getErrorOutput()); +} +} +} +} + + + + +public function getComposerInformation(string $identifier): ?array +{ +$composerFileContent = $this->getFileContent('composer.json', $identifier); + +if (!$composerFileContent) { +return null; +} + +return json_decode($composerFileContent, true); +} + +public function getFileContent(string $file, string $identifier): ?string +{ +$path = $this->getFilePath($file, $identifier); + +$command = $this->generateP4Command(' print ' . ProcessExecutor::escape($path)); +$this->executeCommand($command); +$result = $this->commandResult; + +if (!trim($result)) { +return null; +} + +return $result; +} + +public function getFilePath(string $file, string $identifier): ?string +{ +$index = strpos($identifier, '@'); +if ($index === false) { +return $identifier. '/' . $file; +} + +$path = substr($identifier, 0, $index) . '/' . $file . substr($identifier, $index); +$command = $this->generateP4Command(' files ' . ProcessExecutor::escape($path), false); +$this->executeCommand($command); +$result = $this->commandResult; +$index2 = strpos($result, 'no such file(s).'); +if ($index2 === false) { +$index3 = strpos($result, 'change'); +if ($index3 !== false) { +$phrase = trim(substr($result, $index3)); +$fields = explode(' ', $phrase); + +return substr($identifier, 0, $index) . '/' . $file . '@' . $fields[1]; +} +} + +return null; +} + + + + +public function getBranches(): array +{ +$possibleBranches = []; +if (!$this->isStream()) { +$possibleBranches[$this->p4Branch] = $this->getStream(); +} else { +$command = $this->generateP4Command('streams '.ProcessExecutor::escape('//' . $this->p4Depot . '/...')); +$this->executeCommand($command); +$result = $this->commandResult; +$resArray = explode(PHP_EOL, $result); +foreach ($resArray as $line) { +$resBits = explode(' ', $line); +if (count($resBits) > 4) { +$branch = Preg::replace('/[^A-Za-z0-9 ]/', '', $resBits[4]); +$possibleBranches[$branch] = $resBits[1]; +} +} +} +$command = $this->generateP4Command('changes '. ProcessExecutor::escape($this->getStream() . '/...'), false); +$this->executeCommand($command); +$result = $this->commandResult; +$resArray = explode(PHP_EOL, $result); +$lastCommit = $resArray[0]; +$lastCommitArr = explode(' ', $lastCommit); +$lastCommitNum = $lastCommitArr[1]; + +return ['master' => $possibleBranches[$this->p4Branch] . '@'. $lastCommitNum]; +} + + + + +public function getTags(): array +{ +$command = $this->generateP4Command('labels'); +$this->executeCommand($command); +$result = $this->commandResult; +$resArray = explode(PHP_EOL, $result); +$tags = []; +foreach ($resArray as $line) { +if (strpos($line, 'Label') !== false) { +$fields = explode(' ', $line); +$tags[$fields[1]] = $this->getStream() . '@' . $fields[1]; +} +} + +return $tags; +} + +public function checkStream(): bool +{ +$command = $this->generateP4Command('depots', false); +$this->executeCommand($command); +$result = $this->commandResult; +$resArray = explode(PHP_EOL, $result); +foreach ($resArray as $line) { +if (strpos($line, 'Depot') !== false) { +$fields = explode(' ', $line); +if (strcmp($this->p4Depot, $fields[1]) === 0) { +$this->p4DepotType = $fields[3]; + +return $this->isStream(); +} +} +} + +return false; +} + + + + +protected function getChangeList(string $reference): mixed +{ +$index = strpos($reference, '@'); +if ($index === false) { +return null; +} +$label = substr($reference, $index); +$command = $this->generateP4Command(' changes -m1 ' . ProcessExecutor::escape($label)); +$this->executeCommand($command); +$changes = $this->commandResult; +if (strpos($changes, 'Change') !== 0) { +return null; +} +$fields = explode(' ', $changes); + +return $fields[1]; +} + + + + +public function getCommitLogs(string $fromReference, string $toReference): mixed +{ +$fromChangeList = $this->getChangeList($fromReference); +if ($fromChangeList === null) { +return null; +} +$toChangeList = $this->getChangeList($toReference); +if ($toChangeList === null) { +return null; +} +$index = strpos($fromReference, '@'); +$main = substr($fromReference, 0, $index) . '/...'; +$command = $this->generateP4Command('filelog ' . ProcessExecutor::escape($main . '@' . $fromChangeList. ',' . $toChangeList)); +$this->executeCommand($command); + +return $this->commandResult; +} + +public function getFilesystem(): Filesystem +{ +if (null === $this->filesystem) { +$this->filesystem = new Filesystem($this->process); +} + +return $this->filesystem; +} + +public function setFilesystem(Filesystem $fs): void +{ +$this->filesystem = $fs; +} +} diff --git a/composer/src/Composer/Util/Platform.php b/composer/src/Composer/Util/Platform.php new file mode 100644 index 000000000..c25423fdb --- /dev/null +++ b/composer/src/Composer/Util/Platform.php @@ -0,0 +1,285 @@ +%))(?P\w++)(?(percent)%)(?P.*)#', static function ($matches): string { +assert(is_string($matches['var'])); + + +if (Platform::isWindows() && $matches['var'] === 'HOME') { +return (Platform::getEnv('HOME') ?: Platform::getEnv('USERPROFILE')) . $matches['path']; +} + +return Platform::getEnv($matches['var']) . $matches['path']; +}, $path); +} + + + + + +public static function getUserDirectory(): string +{ +if (false !== ($home = self::getEnv('HOME'))) { +return $home; +} + +if (self::isWindows() && false !== ($home = self::getEnv('USERPROFILE'))) { +return $home; +} + +if (\function_exists('posix_getuid') && \function_exists('posix_getpwuid')) { +$info = posix_getpwuid(posix_getuid()); + +return $info['dir']; +} + +throw new \RuntimeException('Could not determine user directory'); +} + + + + +public static function isWindowsSubsystemForLinux(): bool +{ +if (null === self::$isWindowsSubsystemForLinux) { +self::$isWindowsSubsystemForLinux = false; + + +if (self::isWindows()) { +return self::$isWindowsSubsystemForLinux = false; +} + +if ( +!ini_get('open_basedir') +&& is_readable('/proc/version') +&& false !== stripos(Silencer::call('file_get_contents', '/proc/version'), 'microsoft') +&& !file_exists('/.dockerenv') +) { +return self::$isWindowsSubsystemForLinux = true; +} +} + +return self::$isWindowsSubsystemForLinux; +} + + + + +public static function isWindows(): bool +{ +return \defined('PHP_WINDOWS_VERSION_BUILD'); +} + + + + +public static function strlen(string $str): int +{ +static $useMbString = null; +if (null === $useMbString) { +$useMbString = \function_exists('mb_strlen') && ini_get('mbstring.func_overload'); +} + +if ($useMbString) { +return mb_strlen($str, '8bit'); +} + +return \strlen($str); +} + + + + +public static function isTty($fd = null): bool +{ +if ($fd === null) { +$fd = defined('STDOUT') ? STDOUT : fopen('php://stdout', 'w'); +if ($fd === false) { +return false; +} +} + + + +if (in_array(strtoupper(self::getEnv('MSYSTEM') ?: ''), ['MINGW32', 'MINGW64'], true)) { +return true; +} + + + +if (function_exists('stream_isatty')) { +return stream_isatty($fd); +} + + +if (function_exists('posix_isatty') && posix_isatty($fd)) { +return true; +} + +$stat = @fstat($fd); + +return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; +} + + + + +public static function isInputCompletionProcess(): bool +{ +return '_complete' === ($_SERVER['argv'][1] ?? null); +} + +public static function workaroundFilesystemIssues(): void +{ +if (self::isVirtualBoxGuest()) { +usleep(200000); +} +} + + + + + + +private static function isVirtualBoxGuest(): bool +{ +if (null === self::$isVirtualBoxGuest) { +self::$isVirtualBoxGuest = false; +if (self::isWindows()) { +return self::$isVirtualBoxGuest; +} + +if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { +$processUser = posix_getpwuid(posix_geteuid()); +if ($processUser && $processUser['name'] === 'vagrant') { +return self::$isVirtualBoxGuest = true; +} +} + +if (self::getEnv('COMPOSER_RUNTIME_ENV') === 'virtualbox') { +return self::$isVirtualBoxGuest = true; +} + +if (defined('PHP_OS_FAMILY') && PHP_OS_FAMILY === 'Linux') { +$process = new ProcessExecutor(); +try { +if (0 === $process->execute('lsmod | grep vboxguest', $ignoredOutput)) { +return self::$isVirtualBoxGuest = true; +} +} catch (\Exception $e) { + +} +} +} + +return self::$isVirtualBoxGuest; +} + + + + +public static function getDevNull(): string +{ +if (self::isWindows()) { +return 'NUL'; +} + +return '/dev/null'; +} +} diff --git a/composer/src/Composer/Util/ProcessExecutor.php b/composer/src/Composer/Util/ProcessExecutor.php new file mode 100644 index 000000000..b6e37d094 --- /dev/null +++ b/composer/src/Composer/Util/ProcessExecutor.php @@ -0,0 +1,480 @@ +io = $io; +} + + + + + + + + + + +public function execute($command, &$output = null, ?string $cwd = null): int +{ +if (func_num_args() > 1) { +return $this->doExecute($command, $cwd, false, $output); +} + +return $this->doExecute($command, $cwd, false); +} + + + + + + + + +public function executeTty($command, ?string $cwd = null): int +{ +if (Platform::isTty()) { +return $this->doExecute($command, $cwd, true); +} + +return $this->doExecute($command, $cwd, false); +} + + + + + +private function doExecute($command, ?string $cwd, bool $tty, &$output = null): int +{ +$this->outputCommandRun($command, $cwd, false); + +$this->captureOutput = func_num_args() > 3; +$this->errorOutput = ''; + +if (is_string($command)) { +$process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); +} else { +$process = new Process($command, $cwd, null, null, static::getTimeout()); +} + +if (!Platform::isWindows() && $tty) { +try { +$process->setTty(true); +} catch (RuntimeException $e) { + +} +} + +$callback = is_callable($output) ? $output : function (string $type, string $buffer): void { +$this->outputHandler($type, $buffer); +}; + +$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal) { +if ($this->io !== null) { +$this->io->writeError('Received '.$signal.', aborting when child process is done', true, IOInterface::DEBUG); +} +}); + +try { +$process->run($callback); + +if ($this->captureOutput && !is_callable($output)) { +$output = $process->getOutput(); +} + +$this->errorOutput = $process->getErrorOutput(); +} catch (ProcessSignaledException $e) { +if ($signalHandler->isTriggered()) { + +$signalHandler->exitWithLastSignal(); +} +} finally { +$signalHandler->unregister(); +} + +return $process->getExitCode(); +} + + + + + + + +public function executeAsync($command, ?string $cwd = null): PromiseInterface +{ +if (!$this->allowAsync) { +throw new \LogicException('You must use the ProcessExecutor instance which is part of a Composer\Loop instance to be able to run async processes'); +} + +$job = [ +'id' => $this->idGen++, +'status' => self::STATUS_QUEUED, +'command' => $command, +'cwd' => $cwd, +]; + +$resolver = static function ($resolve, $reject) use (&$job): void { +$job['status'] = ProcessExecutor::STATUS_QUEUED; +$job['resolve'] = $resolve; +$job['reject'] = $reject; +}; + +$canceler = static function () use (&$job): void { +if ($job['status'] === ProcessExecutor::STATUS_QUEUED) { +$job['status'] = ProcessExecutor::STATUS_ABORTED; +} +if ($job['status'] !== ProcessExecutor::STATUS_STARTED) { +return; +} +$job['status'] = ProcessExecutor::STATUS_ABORTED; +try { +if (defined('SIGINT')) { +$job['process']->signal(SIGINT); +} +} catch (\Exception $e) { + +} +$job['process']->stop(1); + +throw new \RuntimeException('Aborted process'); +}; + +$promise = new Promise($resolver, $canceler); +$promise = $promise->then(function () use (&$job) { +if ($job['process']->isSuccessful()) { +$job['status'] = ProcessExecutor::STATUS_COMPLETED; +} else { +$job['status'] = ProcessExecutor::STATUS_FAILED; +} + +$this->markJobDone(); + +return $job['process']; +}, function ($e) use (&$job): void { +$job['status'] = ProcessExecutor::STATUS_FAILED; + +$this->markJobDone(); + +throw $e; +}); +$this->jobs[$job['id']] = &$job; + +if ($this->runningJobs < $this->maxJobs) { +$this->startJob($job['id']); +} + +return $promise; +} + +protected function outputHandler(string $type, string $buffer): void +{ +if ($this->captureOutput) { +return; +} + +if (null === $this->io) { +echo $buffer; + +return; +} + +if (Process::ERR === $type) { +$this->io->writeErrorRaw($buffer, false); +} else { +$this->io->writeRaw($buffer, false); +} +} + +private function startJob(int $id): void +{ +$job = &$this->jobs[$id]; +if ($job['status'] !== self::STATUS_QUEUED) { +return; +} + + +$job['status'] = self::STATUS_STARTED; +$this->runningJobs++; + +$command = $job['command']; +$cwd = $job['cwd']; + +$this->outputCommandRun($command, $cwd, true); + +try { +if (is_string($command)) { +$process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); +} else { +$process = new Process($command, $cwd, null, null, static::getTimeout()); +} +} catch (\Throwable $e) { +$job['reject']($e); + +return; +} + +$job['process'] = $process; + +try { +$process->start(); +} catch (\Throwable $e) { +$job['reject']($e); + +return; +} +} + +public function setMaxJobs(int $maxJobs): void +{ +$this->maxJobs = $maxJobs; +} + +public function resetMaxJobs(): void +{ +$this->maxJobs = 10; +} + + + + +public function wait($index = null): void +{ +while (true) { +if (0 === $this->countActiveJobs($index)) { +return; +} + +usleep(1000); +} +} + + + + +public function enableAsync(): void +{ +$this->allowAsync = true; +} + + + + + + + +public function countActiveJobs($index = null): int +{ + +foreach ($this->jobs as $job) { +if ($job['status'] === self::STATUS_STARTED) { +if (!$job['process']->isRunning()) { +call_user_func($job['resolve'], $job['process']); +} + +$job['process']->checkTimeout(); +} + +if ($this->runningJobs < $this->maxJobs) { +if ($job['status'] === self::STATUS_QUEUED) { +$this->startJob($job['id']); +} +} +} + +if (null !== $index) { +return $this->jobs[$index]['status'] < self::STATUS_COMPLETED ? 1 : 0; +} + +$active = 0; +foreach ($this->jobs as $job) { +if ($job['status'] < self::STATUS_COMPLETED) { +$active++; +} else { +unset($this->jobs[$job['id']]); +} +} + +return $active; +} + +private function markJobDone(): void +{ +$this->runningJobs--; +} + + + + +public function splitLines(?string $output): array +{ +$output = trim((string) $output); + +return $output === '' ? [] : Preg::split('{\r?\n}', $output); +} + + + + +public function getErrorOutput(): string +{ +return $this->errorOutput; +} + + + + +public static function getTimeout(): int +{ +return static::$timeout; +} + + + + +public static function setTimeout(int $timeout): void +{ +static::$timeout = $timeout; +} + + + + + + + + +public static function escape($argument): string +{ +return self::escapeArgument($argument); +} + + + + +private function outputCommandRun($command, ?string $cwd, bool $async): void +{ +if (null === $this->io || !$this->io->isDebug()) { +return; +} + +$commandString = is_string($command) ? $command : implode(' ', array_map(self::class.'::escape', $command)); +$safeCommand = Preg::replaceCallback('{://(?P[^:/\s]+):(?P[^@\s/]+)@}i', static function ($m): string { +assert(is_string($m['user'])); + + +if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+)$}', $m['user'])) { +return '://***:***@'; +} +if (Preg::isMatch('{^[a-f0-9]{12,}$}', $m['user'])) { +return '://***:***@'; +} + +return '://'.$m['user'].':***@'; +}, $commandString); +$safeCommand = Preg::replace("{--password (.*[^\\\\]\') }", '--password \'***\' ', $safeCommand); +$this->io->writeError('Executing'.($async ? ' async' : '').' command ('.($cwd ?: 'CWD').'): '.$safeCommand); +} + + + + + + + + + + + + + + +private static function escapeArgument($argument): string +{ +if ('' === ($argument = (string) $argument)) { +return escapeshellarg($argument); +} + +if (!Platform::isWindows()) { +return "'".str_replace("'", "'\\''", $argument)."'"; +} + + +$argument = strtr($argument, "\n", ' '); + + +$quote = strpbrk($argument, " \t,") !== false; +$argument = Preg::replace('/(\\\\*)"/', '$1$1\\"', $argument, -1, $dquotes); +$meta = $dquotes > 0 || Preg::isMatch('/%[^%]+%|![^!]+!/', $argument); + +if (!$meta && !$quote) { +$quote = strpbrk($argument, '^&|<>()') !== false; +} + +if ($quote) { +$argument = '"'.Preg::replace('/(\\\\*)$/', '$1$1', $argument).'"'; +} + +if ($meta) { +$argument = Preg::replace('/(["^&|<>()%])/', '^$1', $argument); +$argument = Preg::replace('/(!)/', '^^$1', $argument); +} + +return $argument; +} +} diff --git a/composer/src/Composer/Util/RemoteFilesystem.php b/composer/src/Composer/Util/RemoteFilesystem.php new file mode 100644 index 000000000..b908b7c83 --- /dev/null +++ b/composer/src/Composer/Util/RemoteFilesystem.php @@ -0,0 +1,726 @@ +io = $io; + + + +if ($disableTls === false) { +$this->options = StreamContextFactory::getTlsDefaults($options, $io); +} else { +$this->disableTls = true; +} + + +$this->options = array_replace_recursive($this->options, $options); +$this->config = $config; +$this->authHelper = $authHelper ?? new AuthHelper($io, $config); +$this->proxyManager = ProxyManager::getInstance(); +} + + + + + + + + + + + + +public function copy(string $originUrl, string $fileUrl, string $fileName, bool $progress = true, array $options = []) +{ +return $this->get($originUrl, $fileUrl, $options, $fileName, $progress); +} + + + + + + + + + + + +public function getContents(string $originUrl, string $fileUrl, bool $progress = true, array $options = []) +{ +return $this->get($originUrl, $fileUrl, $options, null, $progress); +} + + + + + + +public function getOptions() +{ +return $this->options; +} + + + + + + + +public function setOptions(array $options) +{ +$this->options = array_replace_recursive($this->options, $options); +} + + + + + + +public function isTlsDisabled() +{ +return $this->disableTls === true; +} + + + + + + +public function getLastHeaders() +{ +return $this->lastHeaders; +} + + + + + +public static function findStatusCode(array $headers) +{ +$value = null; +foreach ($headers as $header) { +if (Preg::isMatch('{^HTTP/\S+ (\d+)}i', $header, $match)) { + + +$value = (int) $match[1]; +} +} + +return $value; +} + + + + + +public function findStatusMessage(array $headers) +{ +$value = null; +foreach ($headers as $header) { +if (Preg::isMatch('{^HTTP/\S+ \d+}i', $header)) { + + +$value = $header; +} +} + +return $value; +} + + + + + + + + + + + + + + + +protected function get(string $originUrl, string $fileUrl, array $additionalOptions = [], ?string $fileName = null, bool $progress = true) +{ +$this->scheme = parse_url(strtr($fileUrl, '\\', '/'), PHP_URL_SCHEME); +$this->bytesMax = 0; +$this->originUrl = $originUrl; +$this->fileUrl = $fileUrl; +$this->fileName = $fileName; +$this->progress = $progress; +$this->lastProgress = null; +$retryAuthFailure = true; +$this->lastHeaders = []; +$this->redirects = 1; + +$tempAdditionalOptions = $additionalOptions; +if (isset($tempAdditionalOptions['retry-auth-failure'])) { +$retryAuthFailure = (bool) $tempAdditionalOptions['retry-auth-failure']; + +unset($tempAdditionalOptions['retry-auth-failure']); +} + +$isRedirect = false; +if (isset($tempAdditionalOptions['redirects'])) { +$this->redirects = $tempAdditionalOptions['redirects']; +$isRedirect = true; + +unset($tempAdditionalOptions['redirects']); +} + +$options = $this->getOptionsForUrl($originUrl, $tempAdditionalOptions); +unset($tempAdditionalOptions); + +$origFileUrl = $fileUrl; + +if (isset($options['gitlab-token'])) { +$fileUrl .= (false === strpos($fileUrl, '?') ? '?' : '&') . 'access_token='.$options['gitlab-token']; +unset($options['gitlab-token']); +} + +if (isset($options['http'])) { +$options['http']['ignore_errors'] = true; +} + +if ($this->degradedMode && strpos($fileUrl, 'http://repo.packagist.org/') === 0) { + +$fileUrl = 'http://' . gethostbyname('repo.packagist.org') . substr($fileUrl, 20); +$degradedPackagist = true; +} + +$maxFileSize = null; +if (isset($options['max_file_size'])) { +$maxFileSize = $options['max_file_size']; +unset($options['max_file_size']); +} + +$ctx = StreamContextFactory::getContext($fileUrl, $options, ['notification' => [$this, 'callbackGet']]); + +$proxy = $this->proxyManager->getProxyForRequest($fileUrl); +$usingProxy = $proxy->getFormattedUrl(' using proxy (%s)'); +$this->io->writeError((strpos($origFileUrl, 'http') === 0 ? 'Downloading ' : 'Reading ') . Url::sanitize($origFileUrl) . $usingProxy, true, IOInterface::DEBUG); +unset($origFileUrl, $proxy, $usingProxy); + + +if ((!Preg::isMatch('{^http://(repo\.)?packagist\.org/p/}', $fileUrl) || (false === strpos($fileUrl, '$') && false === strpos($fileUrl, '%24'))) && empty($degradedPackagist)) { +$this->config->prohibitUrlByConfig($fileUrl, $this->io); +} + +if ($this->progress && !$isRedirect) { +$this->io->writeError("Downloading (connecting...)", false); +} + +$errorMessage = ''; +$errorCode = 0; +$result = false; +set_error_handler(static function ($code, $msg) use (&$errorMessage): bool { +if ($errorMessage) { +$errorMessage .= "\n"; +} +$errorMessage .= Preg::replace('{^file_get_contents\(.*?\): }', '', $msg); + +return true; +}); +$http_response_header = []; +try { +$result = $this->getRemoteContents($originUrl, $fileUrl, $ctx, $http_response_header, $maxFileSize); + +if (!empty($http_response_header[0])) { +$statusCode = self::findStatusCode($http_response_header); +if ($statusCode >= 400 && Response::findHeaderValue($http_response_header, 'content-type') === 'application/json') { +HttpDownloader::outputWarnings($this->io, $originUrl, json_decode($result, true)); +} + +if (in_array($statusCode, [401, 403]) && $retryAuthFailure) { +$this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), $http_response_header); +} +} + +$contentLength = !empty($http_response_header[0]) ? Response::findHeaderValue($http_response_header, 'content-length') : null; +if ($contentLength && Platform::strlen($result) < $contentLength) { + +$e = new TransportException('Content-Length mismatch, received '.Platform::strlen($result).' bytes out of the expected '.$contentLength); +$e->setHeaders($http_response_header); +$e->setStatusCode(self::findStatusCode($http_response_header)); +try { +$e->setResponse($this->decodeResult($result, $http_response_header)); +} catch (\Exception $discarded) { +$e->setResponse($this->normalizeResult($result)); +} + +$this->io->writeError('Content-Length mismatch, received '.Platform::strlen($result).' out of '.$contentLength.' bytes: (' . base64_encode($result).')', true, IOInterface::DEBUG); + +throw $e; +} +} catch (\Exception $e) { +if ($e instanceof TransportException && !empty($http_response_header[0])) { +$e->setHeaders($http_response_header); +$e->setStatusCode(self::findStatusCode($http_response_header)); +} +if ($e instanceof TransportException && $result !== false) { +$e->setResponse($this->decodeResult($result, $http_response_header)); +} +$result = false; +} +if ($errorMessage && !filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { +$errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')'; +} +restore_error_handler(); +if (isset($e) && !$this->retry) { +if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { +$this->degradedMode = true; +$this->io->writeError(''); +$this->io->writeError([ +''.$e->getMessage().'', +'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', +]); + +return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); +} + +throw $e; +} + +$statusCode = null; +$contentType = null; +$locationHeader = null; +if (!empty($http_response_header[0])) { +$statusCode = self::findStatusCode($http_response_header); +$contentType = Response::findHeaderValue($http_response_header, 'content-type'); +$locationHeader = Response::findHeaderValue($http_response_header, 'location'); +} + + +if ($originUrl === 'bitbucket.org' +&& !$this->authHelper->isPublicBitBucketDownload($fileUrl) +&& substr($fileUrl, -4) === '.zip' +&& (!$locationHeader || substr(parse_url($locationHeader, PHP_URL_PATH), -4) !== '.zip') +&& $contentType && Preg::isMatch('{^text/html\b}i', $contentType) +) { +$result = false; +if ($retryAuthFailure) { +$this->promptAuthAndRetry(401); +} +} + + +if ($statusCode === 404 +&& in_array($originUrl, $this->config->get('gitlab-domains'), true) +&& false !== strpos($fileUrl, 'archive.zip') +) { +$result = false; +if ($retryAuthFailure) { +$this->promptAuthAndRetry(401); +} +} + + +$hasFollowedRedirect = false; +if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $this->redirects < $this->maxRedirects) { +$hasFollowedRedirect = true; +$result = $this->handleRedirect($http_response_header, $additionalOptions, $result); +} + + +if ($statusCode && $statusCode >= 400 && $statusCode <= 599) { +if (!$this->retry) { +if ($this->progress && !$isRedirect) { +$this->io->overwriteError("Downloading (failed)", false); +} + +$e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.$http_response_header[0].')', $statusCode); +$e->setHeaders($http_response_header); +$e->setResponse($this->decodeResult($result, $http_response_header)); +$e->setStatusCode($statusCode); +throw $e; +} +$result = false; +} + +if ($this->progress && !$this->retry && !$isRedirect) { +$this->io->overwriteError("Downloading (".($result === false ? 'failed' : '100%').")", false); +} + + +if ($result && extension_loaded('zlib') && strpos($fileUrl, 'http') === 0 && !$hasFollowedRedirect) { +try { +$result = $this->decodeResult($result, $http_response_header); +} catch (\Exception $e) { +if ($this->degradedMode) { +throw $e; +} + +$this->degradedMode = true; +$this->io->writeError([ +'', +'Failed to decode response: '.$e->getMessage().'', +'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', +]); + +return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); +} +} + + +if (false !== $result && null !== $fileName && !$isRedirect) { +if ('' === $result) { +throw new TransportException('"'.$this->fileUrl.'" appears broken, and returned an empty 200 response'); +} + +$errorMessage = ''; +set_error_handler(static function ($code, $msg) use (&$errorMessage): bool { +if ($errorMessage) { +$errorMessage .= "\n"; +} +$errorMessage .= Preg::replace('{^file_put_contents\(.*?\): }', '', $msg); + +return true; +}); +$result = (bool) file_put_contents($fileName, $result); +restore_error_handler(); +if (false === $result) { +throw new TransportException('The "'.$this->fileUrl.'" file could not be written to '.$fileName.': '.$errorMessage); +} +} + +if ($this->retry) { +$this->retry = false; + +$result = $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); + +if ($this->storeAuth) { +$this->authHelper->storeAuth($this->originUrl, $this->storeAuth); +$this->storeAuth = false; +} + +return $result; +} + +if (false === $result) { +$e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded: '.$errorMessage, $errorCode); +if (!empty($http_response_header[0])) { +$e->setHeaders($http_response_header); +} + +if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { +$this->degradedMode = true; +$this->io->writeError(''); +$this->io->writeError([ +''.$e->getMessage().'', +'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', +]); + +return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); +} + +throw $e; +} + +if (!empty($http_response_header[0])) { +$this->lastHeaders = $http_response_header; +} + +return $result; +} + + + + + + + + + + + + +protected function getRemoteContents(string $originUrl, string $fileUrl, $context, ?array &$responseHeaders = null, ?int $maxFileSize = null) +{ +$result = false; + +try { +$e = null; +if ($maxFileSize !== null) { +$result = file_get_contents($fileUrl, false, $context, 0, $maxFileSize); +} else { + +$result = file_get_contents($fileUrl, false, $context); +} +} catch (\Throwable $e) { +} + +if ($result !== false && $maxFileSize !== null && Platform::strlen($result) >= $maxFileSize) { +throw new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . Platform::strlen($result) . ' of allowed ' . $maxFileSize . ' bytes'); +} + + +$responseHeaders = $http_response_header ?? []; + +if (null !== $e) { +throw $e; +} + +return $result; +} + + + + + + + + + + + + + + + +protected function callbackGet(int $notificationCode, int $severity, ?string $message, int $messageCode, int $bytesTransferred, int $bytesMax) +{ +switch ($notificationCode) { +case STREAM_NOTIFY_FAILURE: +if (400 === $messageCode) { + + +throw new TransportException("The '" . $this->fileUrl . "' URL could not be accessed: " . $message, $messageCode); +} +break; + +case STREAM_NOTIFY_FILE_SIZE_IS: +$this->bytesMax = $bytesMax; +break; + +case STREAM_NOTIFY_PROGRESS: +if ($this->bytesMax > 0 && $this->progress) { +$progression = min(100, (int) round($bytesTransferred / $this->bytesMax * 100)); + +if ((0 === $progression % 5) && 100 !== $progression && $progression !== $this->lastProgress) { +$this->lastProgress = $progression; +$this->io->overwriteError("Downloading ($progression%)", false); +} +} +break; + +default: +break; +} +} + + + + + + + +protected function promptAuthAndRetry($httpStatus, ?string $reason = null, array $headers = []) +{ +$result = $this->authHelper->promptAuthIfNeeded($this->fileUrl, $this->originUrl, $httpStatus, $reason, $headers, 1 ); + +$this->storeAuth = $result['storeAuth']; +$this->retry = $result['retry']; + +if ($this->retry) { +throw new TransportException('RETRY'); +} +} + + + + + + +protected function getOptionsForUrl(string $originUrl, array $additionalOptions) +{ +$tlsOptions = []; +$headers = []; + +if (extension_loaded('zlib')) { +$headers[] = 'Accept-Encoding: gzip'; +} + +$options = array_replace_recursive($this->options, $tlsOptions, $additionalOptions); +if (!$this->degradedMode) { + + +$options['http']['protocol_version'] = 1.1; +$headers[] = 'Connection: close'; +} + +$headers = $this->authHelper->addAuthenticationHeader($headers, $originUrl, $this->fileUrl); + +$options['http']['follow_location'] = 0; + +if (isset($options['http']['header']) && !is_array($options['http']['header'])) { +$options['http']['header'] = explode("\r\n", trim($options['http']['header'], "\r\n")); +} +foreach ($headers as $header) { +$options['http']['header'][] = $header; +} + +return $options; +} + + + + + + + + +private function handleRedirect(array $http_response_header, array $additionalOptions, $result) +{ +if ($locationHeader = Response::findHeaderValue($http_response_header, 'location')) { +if (parse_url($locationHeader, PHP_URL_SCHEME)) { + +$targetUrl = $locationHeader; +} elseif (parse_url($locationHeader, PHP_URL_HOST)) { + +$targetUrl = $this->scheme.':'.$locationHeader; +} elseif ('/' === $locationHeader[0]) { + +$urlHost = parse_url($this->fileUrl, PHP_URL_HOST); + + +$targetUrl = Preg::replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $this->fileUrl); +} else { + + +$targetUrl = Preg::replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $this->fileUrl); +} +} + +if (!empty($targetUrl)) { +$this->redirects++; + +$this->io->writeError('', true, IOInterface::DEBUG); +$this->io->writeError(sprintf('Following redirect (%u) %s', $this->redirects, Url::sanitize($targetUrl)), true, IOInterface::DEBUG); + +$additionalOptions['redirects'] = $this->redirects; + +return $this->get(parse_url($targetUrl, PHP_URL_HOST), $targetUrl, $additionalOptions, $this->fileName, $this->progress); +} + +if (!$this->retry) { +$e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded, got redirect without Location ('.$http_response_header[0].')'); +$e->setHeaders($http_response_header); +$e->setResponse($this->decodeResult($result, $http_response_header)); + +throw $e; +} + +return false; +} + + + + + +private function decodeResult($result, array $http_response_header): ?string +{ + +if ($result && extension_loaded('zlib')) { +$contentEncoding = Response::findHeaderValue($http_response_header, 'content-encoding'); +$decode = $contentEncoding && 'gzip' === strtolower($contentEncoding); + +if ($decode) { +$result = zlib_decode($result); + +if ($result === false) { +throw new TransportException('Failed to decode zlib stream'); +} +} +} + +return $this->normalizeResult($result); +} + + + + +private function normalizeResult($result): ?string +{ +if ($result === false) { +return null; +} + +return $result; +} +} diff --git a/composer/src/Composer/Util/Silencer.php b/composer/src/Composer/Util/Silencer.php new file mode 100644 index 000000000..3762a7cb1 --- /dev/null +++ b/composer/src/Composer/Util/Silencer.php @@ -0,0 +1,77 @@ + [ + +'follow_location' => 1, +'max_redirects' => 20, +]]; + +$options = array_replace_recursive($options, self::initOptions($url, $defaultOptions)); +unset($defaultOptions['http']['header']); +$options = array_replace_recursive($options, $defaultOptions); + +if (isset($options['http']['header'])) { +$options['http']['header'] = self::fixHttpHeaderField($options['http']['header']); +} + +return stream_context_create($options, $defaultParams); +} + + + + + + + + +public static function initOptions(string $url, array $options, bool $forCurl = false): array +{ + +if (!isset($options['http']['header'])) { +$options['http']['header'] = []; +} +if (is_string($options['http']['header'])) { +$options['http']['header'] = explode("\r\n", $options['http']['header']); +} + + +if (!$forCurl) { +$proxy = ProxyManager::getInstance()->getProxyForRequest($url); +if ($proxyOptions = $proxy->getContextOptions()) { +$isHttpsRequest = 0 === strpos($url, 'https://'); + +if ($proxy->isSecure()) { +if (!extension_loaded('openssl')) { +throw new TransportException('You must enable the openssl extension to use a secure proxy.'); +} +if ($isHttpsRequest) { +throw new TransportException('You must enable the curl extension to make https requests through a secure proxy.'); +} +} elseif ($isHttpsRequest && !extension_loaded('openssl')) { +throw new TransportException('You must enable the openssl extension to make https requests through a proxy.'); +} + + +if (isset($proxyOptions['http']['header'])) { +$options['http']['header'][] = $proxyOptions['http']['header']; +unset($proxyOptions['http']['header']); +} +$options = array_replace_recursive($options, $proxyOptions); +} +} + +if (defined('HHVM_VERSION')) { +$phpVersion = 'HHVM ' . HHVM_VERSION; +} else { +$phpVersion = 'PHP ' . PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; +} + +if ($forCurl) { +$curl = curl_version(); +$httpVersion = 'cURL '.$curl['version']; +} else { +$httpVersion = 'streams'; +} + +if (!isset($options['http']['header']) || false === stripos(implode('', $options['http']['header']), 'user-agent')) { +$platformPhpVersion = PlatformRepository::getPlatformPhpVersion(); +$options['http']['header'][] = sprintf( +'User-Agent: Composer/%s (%s; %s; %s; %s%s%s)', +Composer::getVersion(), +function_exists('php_uname') ? php_uname('s') : 'Unknown', +function_exists('php_uname') ? php_uname('r') : 'Unknown', +$phpVersion, +$httpVersion, +$platformPhpVersion ? '; Platform-PHP '.$platformPhpVersion : '', +Platform::getEnv('CI') ? '; CI' : '' +); +} + +return $options; +} + + + + + + +public static function getTlsDefaults(array $options, ?LoggerInterface $logger = null): array +{ +$ciphers = implode(':', [ +'ECDHE-RSA-AES128-GCM-SHA256', +'ECDHE-ECDSA-AES128-GCM-SHA256', +'ECDHE-RSA-AES256-GCM-SHA384', +'ECDHE-ECDSA-AES256-GCM-SHA384', +'DHE-RSA-AES128-GCM-SHA256', +'DHE-DSS-AES128-GCM-SHA256', +'kEDH+AESGCM', +'ECDHE-RSA-AES128-SHA256', +'ECDHE-ECDSA-AES128-SHA256', +'ECDHE-RSA-AES128-SHA', +'ECDHE-ECDSA-AES128-SHA', +'ECDHE-RSA-AES256-SHA384', +'ECDHE-ECDSA-AES256-SHA384', +'ECDHE-RSA-AES256-SHA', +'ECDHE-ECDSA-AES256-SHA', +'DHE-RSA-AES128-SHA256', +'DHE-RSA-AES128-SHA', +'DHE-DSS-AES128-SHA256', +'DHE-RSA-AES256-SHA256', +'DHE-DSS-AES256-SHA', +'DHE-RSA-AES256-SHA', +'AES128-GCM-SHA256', +'AES256-GCM-SHA384', +'AES128-SHA256', +'AES256-SHA256', +'AES128-SHA', +'AES256-SHA', +'AES', +'CAMELLIA', +'DES-CBC3-SHA', +'!aNULL', +'!eNULL', +'!EXPORT', +'!DES', +'!RC4', +'!MD5', +'!PSK', +'!aECDH', +'!EDH-DSS-DES-CBC3-SHA', +'!EDH-RSA-DES-CBC3-SHA', +'!KRB5-DES-CBC3-SHA', +]); + + + + + + + +$defaults = [ +'ssl' => [ +'ciphers' => $ciphers, +'verify_peer' => true, +'verify_depth' => 7, +'SNI_enabled' => true, +'capture_peer_cert' => true, +], +]; + +if (isset($options['ssl'])) { +$defaults['ssl'] = array_replace_recursive($defaults['ssl'], $options['ssl']); +} + + + + + +if (!isset($defaults['ssl']['cafile']) && !isset($defaults['ssl']['capath'])) { +$result = CaBundle::getSystemCaRootBundlePath($logger); + +if (is_dir($result)) { +$defaults['ssl']['capath'] = $result; +} else { +$defaults['ssl']['cafile'] = $result; +} +} + +if (isset($defaults['ssl']['cafile']) && (!Filesystem::isReadable($defaults['ssl']['cafile']) || !CaBundle::validateCaFile($defaults['ssl']['cafile'], $logger))) { +throw new TransportException('The configured cafile was not valid or could not be read.'); +} + +if (isset($defaults['ssl']['capath']) && (!is_dir($defaults['ssl']['capath']) || !Filesystem::isReadable($defaults['ssl']['capath']))) { +throw new TransportException('The configured capath was not valid or could not be read.'); +} + + + + +$defaults['ssl']['disable_compression'] = true; + +return $defaults; +} + + + + + + + + + + + +private static function fixHttpHeaderField($header): array +{ +if (!is_array($header)) { +$header = explode("\r\n", $header); +} +uasort($header, static function ($el): int { +return stripos($el, 'content-type') === 0 ? 1 : -1; +}); + +return $header; +} +} diff --git a/composer/src/Composer/Util/Svn.php b/composer/src/Composer/Util/Svn.php new file mode 100644 index 000000000..852b96b32 --- /dev/null +++ b/composer/src/Composer/Util/Svn.php @@ -0,0 +1,361 @@ +url = $url; +$this->io = $io; +$this->config = $config; +$this->process = $process ?: new ProcessExecutor($io); +} + +public static function cleanEnv(): void +{ + +Platform::clearEnv('DYLD_LIBRARY_PATH'); +} + + + + + + + + + + + + + +public function execute(string $command, string $url, ?string $cwd = null, ?string $path = null, bool $verbose = false): string +{ + +$this->config->prohibitUrlByConfig($url, $this->io); + +return $this->executeWithAuthRetry($command, $cwd, $url, $path, $verbose); +} + + + + + + + + + + + + +public function executeLocal(string $command, string $path, ?string $cwd = null, bool $verbose = false): string +{ + +return $this->executeWithAuthRetry($command, $cwd, '', $path, $verbose); +} + +private function executeWithAuthRetry(string $svnCommand, ?string $cwd, string $url, ?string $path, bool $verbose): ?string +{ + +$command = $this->getCommand($svnCommand, $url, $path); + +$output = null; +$io = $this->io; +$handler = static function ($type, $buffer) use (&$output, $io, $verbose) { +if ($type !== 'out') { +return null; +} +if (strpos($buffer, 'Redirecting to URL ') === 0) { +return null; +} +$output .= $buffer; +if ($verbose) { +$io->writeError($buffer, false); +} +}; +$status = $this->process->execute($command, $handler, $cwd); +if (0 === $status) { +return $output; +} + +$errorOutput = $this->process->getErrorOutput(); +$fullOutput = trim(implode("\n", [$output, $errorOutput])); + + +if (false === stripos($fullOutput, 'Could not authenticate to server:') +&& false === stripos($fullOutput, 'authorization failed') +&& false === stripos($fullOutput, 'svn: E170001:') +&& false === stripos($fullOutput, 'svn: E215004:')) { +throw new \RuntimeException($fullOutput); +} + +if (!$this->hasAuth()) { +$this->doAuthDance(); +} + + +if ($this->qtyAuthTries++ < self::MAX_QTY_AUTH_TRIES) { + +return $this->executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose); +} + +throw new \RuntimeException( +'wrong credentials provided ('.$fullOutput.')' +); +} + +public function setCacheCredentials(bool $cacheCredentials): void +{ +$this->cacheCredentials = $cacheCredentials; +} + + + + + + + +protected function doAuthDance(): Svn +{ + +if (!$this->io->isInteractive()) { +throw new \RuntimeException( +'can not ask for authentication in non interactive mode' +); +} + +$this->io->writeError("The Subversion server ({$this->url}) requested credentials:"); + +$this->hasAuth = true; +$this->credentials = [ +'username' => (string) $this->io->ask("Username: ", ''), +'password' => (string) $this->io->askAndHideAnswer("Password: "), +]; + +$this->cacheCredentials = $this->io->askConfirmation("Should Subversion cache these credentials? (yes/no) "); + +return $this; +} + + + + + + + + +protected function getCommand(string $cmd, string $url, ?string $path = null): string +{ +$cmd = sprintf( +'%s %s%s -- %s', +$cmd, +'--non-interactive ', +$this->getCredentialString(), +ProcessExecutor::escape($url) +); + +if ($path) { +$cmd .= ' ' . ProcessExecutor::escape($path); +} + +return $cmd; +} + + + + + + +protected function getCredentialString(): string +{ +if (!$this->hasAuth()) { +return ''; +} + +return sprintf( +' %s--username %s --password %s ', +$this->getAuthCache(), +ProcessExecutor::escape($this->getUsername()), +ProcessExecutor::escape($this->getPassword()) +); +} + + + + + + +protected function getPassword(): string +{ +if ($this->credentials === null) { +throw new \LogicException("No svn auth detected."); +} + +return $this->credentials['password']; +} + + + + + + +protected function getUsername(): string +{ +if ($this->credentials === null) { +throw new \LogicException("No svn auth detected."); +} + +return $this->credentials['username']; +} + + + + +protected function hasAuth(): bool +{ +if (null !== $this->hasAuth) { +return $this->hasAuth; +} + +if (false === $this->createAuthFromConfig()) { +$this->createAuthFromUrl(); +} + +return (bool) $this->hasAuth; +} + + + + +protected function getAuthCache(): string +{ +return $this->cacheCredentials ? '' : '--no-auth-cache '; +} + + + + +private function createAuthFromConfig(): bool +{ +if (!$this->config->has('http-basic')) { +return $this->hasAuth = false; +} + +$authConfig = $this->config->get('http-basic'); + +$host = parse_url($this->url, PHP_URL_HOST); +if (isset($authConfig[$host])) { +$this->credentials = [ +'username' => $authConfig[$host]['username'], +'password' => $authConfig[$host]['password'], +]; + +return $this->hasAuth = true; +} + +return $this->hasAuth = false; +} + + + + +private function createAuthFromUrl(): bool +{ +$uri = parse_url($this->url); +if (empty($uri['user'])) { +return $this->hasAuth = false; +} + +$this->credentials = [ +'username' => $uri['user'], +'password' => !empty($uri['pass']) ? $uri['pass'] : '', +]; + +return $this->hasAuth = true; +} + + + + +public function binaryVersion(): ?string +{ +if (!self::$version) { +if (0 === $this->process->execute('svn --version', $output)) { +if (Preg::isMatch('{(\d+(?:\.\d+)+)}', $output, $match)) { +self::$version = $match[1]; +} +} +} + +return self::$version; +} +} diff --git a/composer/src/Composer/Util/SyncHelper.php b/composer/src/Composer/Util/SyncHelper.php new file mode 100644 index 000000000..716bef886 --- /dev/null +++ b/composer/src/Composer/Util/SyncHelper.php @@ -0,0 +1,65 @@ +download($package, $path, $prevPackage)); + +self::await($loop, $downloader->prepare($type, $package, $path, $prevPackage)); + +if ($type === 'update') { +self::await($loop, $downloader->update($package, $prevPackage, $path)); +} else { +self::await($loop, $downloader->install($package, $path)); +} +} catch (\Exception $e) { +self::await($loop, $downloader->cleanup($type, $package, $path, $prevPackage)); +throw $e; +} + +self::await($loop, $downloader->cleanup($type, $package, $path, $prevPackage)); +} + + + + + + +public static function await(Loop $loop, ?PromiseInterface $promise = null): void +{ +if ($promise) { +$loop->wait([$promise]); +} +} +} diff --git a/composer/src/Composer/Util/Tar.php b/composer/src/Composer/Util/Tar.php new file mode 100644 index 000000000..ec5948555 --- /dev/null +++ b/composer/src/Composer/Util/Tar.php @@ -0,0 +1,59 @@ +valid()) { +return null; +} + +return self::extractComposerJsonFromFolder($phar); +} + + + + +private static function extractComposerJsonFromFolder(\PharData $phar): string +{ +if (isset($phar['composer.json'])) { +return $phar['composer.json']->getContent(); +} + +$topLevelPaths = []; +foreach ($phar as $folderFile) { +$name = $folderFile->getBasename(); + +if ($folderFile->isDir()) { +$topLevelPaths[$name] = true; +if (\count($topLevelPaths) > 1) { +throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); +} +} +} + +$composerJsonPath = key($topLevelPaths).'/composer.json'; +if ($topLevelPaths && isset($phar[$composerJsonPath])) { +return $phar[$composerJsonPath]->getContent(); +} + +throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory'); +} +} diff --git a/composer/src/Composer/Util/TlsHelper.php b/composer/src/Composer/Util/TlsHelper.php new file mode 100644 index 000000000..bd05a4ed2 --- /dev/null +++ b/composer/src/Composer/Util/TlsHelper.php @@ -0,0 +1,204 @@ + $commonName, +'san' => $subjectAltNames, +]; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +public static function getCertificateFingerprint(string $certificate): string +{ +$pubkey = openssl_get_publickey($certificate); +if ($pubkey === false) { +throw new \RuntimeException('Failed to retrieve the public key from certificate'); +} +$pubkeydetails = openssl_pkey_get_details($pubkey); +$pubkeypem = $pubkeydetails['key']; + +$start = '-----BEGIN PUBLIC KEY-----'; +$end = '-----END PUBLIC KEY-----'; +$pemtrim = substr($pubkeypem, strpos($pubkeypem, $start) + strlen($start), (strlen($pubkeypem) - strpos($pubkeypem, $end)) * (-1)); +$der = base64_decode($pemtrim); + +return sha1($der); +} + + + + + + + +public static function isOpensslParseSafe(): bool +{ +return CaBundle::isOpensslParseSafe(); +} + + + + + + +private static function certNameMatcher(string $certName): ?callable +{ +$wildcards = substr_count($certName, '*'); + +if (0 === $wildcards) { + +return static function ($hostname) use ($certName): bool { +return $hostname === $certName; +}; +} + +if (1 === $wildcards) { +$components = explode('.', $certName); + +if (3 > count($components)) { + +return null; +} + +$firstComponent = $components[0]; + + +if ('*' !== $firstComponent[strlen($firstComponent) - 1]) { +return null; +} + +$wildcardRegex = preg_quote($certName); +$wildcardRegex = str_replace('\\*', '[a-z0-9-]+', $wildcardRegex); +$wildcardRegex = "{^{$wildcardRegex}$}"; + +return static function ($hostname) use ($wildcardRegex): bool { +return Preg::isMatch($wildcardRegex, $hostname); +}; +} + +return null; +} +} diff --git a/composer/src/Composer/Util/Url.php b/composer/src/Composer/Util/Url.php new file mode 100644 index 000000000..f84e83e08 --- /dev/null +++ b/composer/src/Composer/Util/Url.php @@ -0,0 +1,124 @@ +get('github-domains'), true)) { +$url = Preg::replace('{(/repos/[^/]+/[^/]+/(zip|tar)ball)(?:/.+)?$}i', '$1/'.$ref, $url); +} elseif (in_array($host, $config->get('gitlab-domains'), true)) { +$url = Preg::replace('{(/api/v[34]/projects/[^/]+/repository/archive\.(?:zip|tar\.gz|tar\.bz2|tar)\?sha=).+$}i', '${1}'.$ref, $url); +} + +assert($url !== ''); + +return $url; +} + + + + + +public static function getOrigin(Config $config, string $url): string +{ +if (0 === strpos($url, 'file://')) { +return $url; +} + +$origin = (string) parse_url($url, PHP_URL_HOST); +if ($port = parse_url($url, PHP_URL_PORT)) { +$origin .= ':'.$port; +} + +if (strpos($origin, '.github.com') === (strlen($origin) - 11)) { +return 'github.com'; +} + +if ($origin === 'repo.packagist.org') { +return 'packagist.org'; +} + +if ($origin === '') { +$origin = $url; +} + + + +if ( +false === strpos($origin, '/') +&& !in_array($origin, $config->get('gitlab-domains'), true) +) { +foreach ($config->get('gitlab-domains') as $gitlabDomain) { +if ($gitlabDomain !== '' && str_starts_with($gitlabDomain, $origin)) { +return $gitlabDomain; +} +} +} + +return $origin; +} + +public static function sanitize(string $url): string +{ + + +$url = Preg::replace('{([&?]access_token=)[^&]+}', '$1***', $url); + +$url = Preg::replaceCallback('{^(?P[a-z0-9]+://)?(?P[^:/\s@]+):(?P[^@\s/]+)@}i', static function ($m): string { +assert(is_string($m['user'])); + +if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+|github_pat_[a-zA-Z0-9_]+)$}', $m['user'])) { +return $m['prefix'].'***:***@'; +} + +return $m['prefix'].$m['user'].':***@'; +}, $url); + +return $url; +} +} diff --git a/composer/src/Composer/Util/Zip.php b/composer/src/Composer/Util/Zip.php new file mode 100644 index 000000000..b721500f0 --- /dev/null +++ b/composer/src/Composer/Util/Zip.php @@ -0,0 +1,101 @@ +open($pathToZip) !== true) { +return null; +} + +if (0 === $zip->numFiles) { +$zip->close(); + +return null; +} + +$foundFileIndex = self::locateFile($zip, 'composer.json'); + +$content = null; +$configurationFileName = $zip->getNameIndex($foundFileIndex); +$stream = $zip->getStream($configurationFileName); + +if (false !== $stream) { +$content = stream_get_contents($stream); +} + +$zip->close(); + +return $content; +} + + + + + + +private static function locateFile(\ZipArchive $zip, string $filename): int +{ + +if (false !== ($index = $zip->locateName($filename)) && $zip->getFromIndex($index) !== false) { +return $index; +} + +$topLevelPaths = []; +for ($i = 0; $i < $zip->numFiles; $i++) { +$name = $zip->getNameIndex($i); +$dirname = dirname($name); + + +if (strpos($name, '__MACOSX') !== false) { +continue; +} + + +if ($dirname === '.') { +$topLevelPaths[$name] = true; +if (\count($topLevelPaths) > 1) { +throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); +} +continue; +} + + +if (false === strpos($dirname, '\\') && false === strpos($dirname, '/')) { +$topLevelPaths[$dirname.'/'] = true; +if (\count($topLevelPaths) > 1) { +throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); +} +} +} + +if ($topLevelPaths && false !== ($index = $zip->locateName(key($topLevelPaths).$filename)) && $zip->getFromIndex($index) !== false) { +return $index; +} + +throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory'); +} +} diff --git a/composer/src/bootstrap.php b/composer/src/bootstrap.php new file mode 100644 index 000000000..4cbb6c00e --- /dev/null +++ b/composer/src/bootstrap.php @@ -0,0 +1,26 @@ +vendorDir = $vendorDir; +self::initializeIncludeClosure(); +} + + + + +public function getPrefixes() +{ +if (!empty($this->prefixesPsr0)) { +return call_user_func_array('array_merge', array_values($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; +} + + + + + + + +public function addClassMap(array $classMap) +{ +if ($this->classMap) { +$this->classMap = array_merge($this->classMap, $classMap); +} else { +$this->classMap = $classMap; +} +} + + + + + + + + + + + +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 +); +} +} + + + + + + + + + + + + + +public function addPsr4($prefix, $paths, $prepend = false) +{ +if (!$prefix) { + +if ($prepend) { +$this->fallbackDirsPsr4 = array_merge( +(array) $paths, +$this->fallbackDirsPsr4 +); +} else { +$this->fallbackDirsPsr4 = array_merge( +$this->fallbackDirsPsr4, +(array) $paths +); +} +} elseif (!isset($this->prefixDirsPsr4[$prefix])) { + +$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) { + +$this->prefixDirsPsr4[$prefix] = array_merge( +(array) $paths, +$this->prefixDirsPsr4[$prefix] +); +} else { + +$this->prefixDirsPsr4[$prefix] = array_merge( +$this->prefixDirsPsr4[$prefix], +(array) $paths +); +} +} + + + + + + + + + + +public function set($prefix, $paths) +{ +if (!$prefix) { +$this->fallbackDirsPsr0 = (array) $paths; +} else { +$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; +} +} + + + + + + + + + + + + +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; +} +} + + + + + + + + +public function setUseIncludePath($useIncludePath) +{ +$this->useIncludePath = $useIncludePath; +} + + + + + + + +public function getUseIncludePath() +{ +return $this->useIncludePath; +} + + + + + + + + + +public function setClassMapAuthoritative($classMapAuthoritative) +{ +$this->classMapAuthoritative = $classMapAuthoritative; +} + + + + + + +public function isClassMapAuthoritative() +{ +return $this->classMapAuthoritative; +} + + + + + + + + +public function setApcuPrefix($apcuPrefix) +{ +$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; +} + + + + + + +public function getApcuPrefix() +{ +return $this->apcuPrefix; +} + + + + + + + + +public function register($prepend = false) +{ +spl_autoload_register(array($this, 'loadClass'), true, $prepend); + +if (null === $this->vendorDir) { +return; +} + +if ($prepend) { +self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; +} else { +unset(self::$registeredLoaders[$this->vendorDir]); +self::$registeredLoaders[$this->vendorDir] = $this; +} +} + + + + + + +public function unregister() +{ +spl_autoload_unregister(array($this, 'loadClass')); + +if (null !== $this->vendorDir) { +unset(self::$registeredLoaders[$this->vendorDir]); +} +} + + + + + + + +public function loadClass($class) +{ +if ($file = $this->findFile($class)) { +$includeFile = self::$includeFile; +$includeFile($file); + +return true; +} + +return null; +} + + + + + + + + +public function findFile($class) +{ + +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'); + + +if (false === $file && defined('HHVM_VERSION')) { +$file = $this->findFileWithExtension($class, '.hh'); +} + +if (null !== $this->apcuPrefix) { +apcu_add($this->apcuPrefix.$class, $file); +} + +if (false === $file) { + +$this->missingClasses[$class] = true; +} + +return $file; +} + + + + + + +public static function getRegisteredLoaders() +{ +return self::$registeredLoaders; +} + + + + + + +private function findFileWithExtension($class, $ext) +{ + +$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; +} +} +} +} +} + + +foreach ($this->fallbackDirsPsr4 as $dir) { +if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { +return $file; +} +} + + +if (false !== $pos = strrpos($class, '\\')) { + +$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) +. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); +} else { + +$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; +} +} +} +} +} + + +foreach ($this->fallbackDirsPsr0 as $dir) { +if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { +return $file; +} +} + + +if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { +return $file; +} + +return false; +} + + + + +private static function initializeIncludeClosure() +{ +if (self::$includeFile !== null) { +return; +} + + + + + + + + + +self::$includeFile = \Closure::bind(static function($file) { +include $file; +}, null, null); +} +} diff --git a/composer/vendor/composer/InstalledVersions.php b/composer/vendor/composer/InstalledVersions.php new file mode 100644 index 000000000..487cfa8d7 --- /dev/null +++ b/composer/vendor/composer/InstalledVersions.php @@ -0,0 +1,352 @@ + $package) { +if (isset($package['type']) && $package['type'] === $type) { +$packagesByType[] = $name; +} +} +} + +return $packagesByType; +} + + + + + + + + + + +public static function isInstalled($packageName, $includeDevRequirements = true) +{ +foreach (self::getInstalled() as $installed) { +if (isset($installed['versions'][$packageName])) { +return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); +} +} + +return false; +} + + + + + + + + + + + + + +public static function satisfies(VersionParser $parser, $packageName, $constraint) +{ +$constraint = $parser->parseConstraints($constraint); +$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + +return $provided->matches($constraint); +} + + + + + + + + + + +public static function getVersionRanges($packageName) +{ +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; +} + +$ranges = array(); +if (isset($installed['versions'][$packageName]['pretty_version'])) { +$ranges[] = $installed['versions'][$packageName]['pretty_version']; +} +if (array_key_exists('aliases', $installed['versions'][$packageName])) { +$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); +} +if (array_key_exists('replaced', $installed['versions'][$packageName])) { +$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); +} +if (array_key_exists('provided', $installed['versions'][$packageName])) { +$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); +} + +return implode(' || ', $ranges); +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + + + + + +public static function getVersion($packageName) +{ +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; +} + +if (!isset($installed['versions'][$packageName]['version'])) { +return null; +} + +return $installed['versions'][$packageName]['version']; +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + + + + + +public static function getPrettyVersion($packageName) +{ +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; +} + +if (!isset($installed['versions'][$packageName]['pretty_version'])) { +return null; +} + +return $installed['versions'][$packageName]['pretty_version']; +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + + + + + +public static function getReference($packageName) +{ +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; +} + +if (!isset($installed['versions'][$packageName]['reference'])) { +return null; +} + +return $installed['versions'][$packageName]['reference']; +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + + + + + +public static function getInstallPath($packageName) +{ +foreach (self::getInstalled() as $installed) { +if (!isset($installed['versions'][$packageName])) { +continue; +} + +return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; +} + +throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); +} + + + + + +public static function getRootPackage() +{ +$installed = self::getInstalled(); + +return $installed[0]['root']; +} + + + + + + + + +public static function getRawData() +{ +@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + +if (null === self::$installed) { + + +if (substr(__DIR__, -8, 1) !== 'C') { +self::$installed = include __DIR__ . '/installed.php'; +} else { +self::$installed = array(); +} +} + +return self::$installed; +} + + + + + + + +public static function getAllRawData() +{ +return self::getInstalled(); +} + + + + + + + + + + + + + + + + + + + +public static function reload($data) +{ +self::$installed = $data; +self::$installedByVendor = array(); +} + + + + + +private static function getInstalled() +{ +if (null === self::$canGetVendors) { +self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); +} + +$installed = array(); + +if (self::$canGetVendors) { +foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { +if (isset(self::$installedByVendor[$vendorDir])) { +$installed[] = self::$installedByVendor[$vendorDir]; +} elseif (is_file($vendorDir.'/composer/installed.php')) { +$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; +if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { +self::$installed = $installed[count($installed) - 1]; +} +} +} +} + +if (null === self::$installed) { + + +if (substr(__DIR__, -8, 1) !== 'C') { +self::$installed = require __DIR__ . '/installed.php'; +} else { +self::$installed = array(); +} +} +$installed[] = self::$installed; + +return $installed; +} +} diff --git a/composer/vendor/composer/autoload_classmap.php b/composer/vendor/composer/autoload_classmap.php new file mode 100644 index 000000000..ac14dcdf3 --- /dev/null +++ b/composer/vendor/composer/autoload_classmap.php @@ -0,0 +1,18 @@ + $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', +'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', +'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', +'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', +'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', +'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', +'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', +'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', +'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', +); diff --git a/composer/vendor/composer/autoload_files.php b/composer/vendor/composer/autoload_files.php new file mode 100644 index 000000000..d9a203475 --- /dev/null +++ b/composer/vendor/composer/autoload_files.php @@ -0,0 +1,19 @@ + $vendorDir . '/symfony/polyfill-php80/bootstrap.php', +'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', +'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', +'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', +'8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', +'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', +'0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', +'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', +'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php', +'23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', +); diff --git a/composer/vendor/composer/autoload_namespaces.php b/composer/vendor/composer/autoload_namespaces.php new file mode 100644 index 000000000..50619c924 --- /dev/null +++ b/composer/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/symfony/polyfill-php81'), +'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), +'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'), +'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), +'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), +'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), +'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), +'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), +'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), +'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), +'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), +'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), +'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), +'Seld\\Signal\\' => array($vendorDir . '/seld/signal-handler/src'), +'Seld\\PharUtils\\' => array($vendorDir . '/seld/phar-utils/src'), +'Seld\\JsonLint\\' => array($vendorDir . '/seld/jsonlint/src/Seld/JsonLint'), +'React\\Promise\\' => array($vendorDir . '/react/promise/src'), +'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), +'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), +'JsonSchema\\' => array($vendorDir . '/justinrainbow/json-schema/src/JsonSchema'), +'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), +'Composer\\Spdx\\' => array($vendorDir . '/composer/spdx-licenses/src'), +'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), +'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'), +'Composer\\MetadataMinifier\\' => array($vendorDir . '/composer/metadata-minifier/src'), +'Composer\\ClassMapGenerator\\' => array($vendorDir . '/composer/class-map-generator/src'), +'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), +'Composer\\' => array($baseDir . '/src/Composer'), +); diff --git a/composer/vendor/composer/autoload_real.php b/composer/vendor/composer/autoload_real.php new file mode 100644 index 000000000..fe3088d5f --- /dev/null +++ b/composer/vendor/composer/autoload_real.php @@ -0,0 +1,48 @@ +register(true); + +$filesToLoad = \Composer\Autoload\ComposerStaticInitComposerPhar1676031832::$files; +$requireFile = \Closure::bind(static function ($fileIdentifier, $file) { +if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { +$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + +require $file; +} +}, null, null); +foreach ($filesToLoad as $fileIdentifier => $file) { +$requireFile($fileIdentifier, $file); +} + +return $loader; +} +} diff --git a/composer/vendor/composer/autoload_static.php b/composer/vendor/composer/autoload_static.php new file mode 100644 index 000000000..98cac0e44 --- /dev/null +++ b/composer/vendor/composer/autoload_static.php @@ -0,0 +1,204 @@ + __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', +'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', +'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', +'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', +'8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', +'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', +'0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', +'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', +'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', +'23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', +); + +public static $prefixLengthsPsr4 = array ( +'S' => +array ( +'Symfony\\Polyfill\\Php81\\' => 23, +'Symfony\\Polyfill\\Php80\\' => 23, +'Symfony\\Polyfill\\Php73\\' => 23, +'Symfony\\Polyfill\\Mbstring\\' => 26, +'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, +'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, +'Symfony\\Polyfill\\Ctype\\' => 23, +'Symfony\\Contracts\\Service\\' => 26, +'Symfony\\Component\\String\\' => 25, +'Symfony\\Component\\Process\\' => 26, +'Symfony\\Component\\Finder\\' => 25, +'Symfony\\Component\\Filesystem\\' => 29, +'Symfony\\Component\\Console\\' => 26, +'Seld\\Signal\\' => 12, +'Seld\\PharUtils\\' => 15, +'Seld\\JsonLint\\' => 14, +), +'R' => +array ( +'React\\Promise\\' => 14, +), +'P' => +array ( +'Psr\\Log\\' => 8, +'Psr\\Container\\' => 14, +), +'J' => +array ( +'JsonSchema\\' => 11, +), +'C' => +array ( +'Composer\\XdebugHandler\\' => 23, +'Composer\\Spdx\\' => 14, +'Composer\\Semver\\' => 16, +'Composer\\Pcre\\' => 14, +'Composer\\MetadataMinifier\\' => 26, +'Composer\\ClassMapGenerator\\' => 27, +'Composer\\CaBundle\\' => 18, +'Composer\\' => 9, +), +); + +public static $prefixDirsPsr4 = array ( +'Symfony\\Polyfill\\Php81\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/polyfill-php81', +), +'Symfony\\Polyfill\\Php80\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/polyfill-php80', +), +'Symfony\\Polyfill\\Php73\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/polyfill-php73', +), +'Symfony\\Polyfill\\Mbstring\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', +), +'Symfony\\Polyfill\\Intl\\Normalizer\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', +), +'Symfony\\Polyfill\\Intl\\Grapheme\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', +), +'Symfony\\Polyfill\\Ctype\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', +), +'Symfony\\Contracts\\Service\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/service-contracts', +), +'Symfony\\Component\\String\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/string', +), +'Symfony\\Component\\Process\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/process', +), +'Symfony\\Component\\Finder\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/finder', +), +'Symfony\\Component\\Filesystem\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/filesystem', +), +'Symfony\\Component\\Console\\' => +array ( +0 => __DIR__ . '/..' . '/symfony/console', +), +'Seld\\Signal\\' => +array ( +0 => __DIR__ . '/..' . '/seld/signal-handler/src', +), +'Seld\\PharUtils\\' => +array ( +0 => __DIR__ . '/..' . '/seld/phar-utils/src', +), +'Seld\\JsonLint\\' => +array ( +0 => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint', +), +'React\\Promise\\' => +array ( +0 => __DIR__ . '/..' . '/react/promise/src', +), +'Psr\\Log\\' => +array ( +0 => __DIR__ . '/..' . '/psr/log/Psr/Log', +), +'Psr\\Container\\' => +array ( +0 => __DIR__ . '/..' . '/psr/container/src', +), +'JsonSchema\\' => +array ( +0 => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema', +), +'Composer\\XdebugHandler\\' => +array ( +0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', +), +'Composer\\Spdx\\' => +array ( +0 => __DIR__ . '/..' . '/composer/spdx-licenses/src', +), +'Composer\\Semver\\' => +array ( +0 => __DIR__ . '/..' . '/composer/semver/src', +), +'Composer\\Pcre\\' => +array ( +0 => __DIR__ . '/..' . '/composer/pcre/src', +), +'Composer\\MetadataMinifier\\' => +array ( +0 => __DIR__ . '/..' . '/composer/metadata-minifier/src', +), +'Composer\\ClassMapGenerator\\' => +array ( +0 => __DIR__ . '/..' . '/composer/class-map-generator/src', +), +'Composer\\CaBundle\\' => +array ( +0 => __DIR__ . '/..' . '/composer/ca-bundle/src', +), +'Composer\\' => +array ( +0 => __DIR__ . '/../..' . '/src/Composer', +), +); + +public static $classMap = array ( +'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', +'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', +'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', +'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', +'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', +'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', +'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', +'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', +'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', +); + +public static function getInitializer(ClassLoader $loader) +{ +return \Closure::bind(function () use ($loader) { +$loader->prefixLengthsPsr4 = ComposerStaticInitComposerPhar1676031832::$prefixLengthsPsr4; +$loader->prefixDirsPsr4 = ComposerStaticInitComposerPhar1676031832::$prefixDirsPsr4; +$loader->classMap = ComposerStaticInitComposerPhar1676031832::$classMap; + +}, null, ClassLoader::class); +} +} diff --git a/composer/vendor/composer/ca-bundle/LICENSE b/composer/vendor/composer/ca-bundle/LICENSE new file mode 100644 index 000000000..395c98b03 --- /dev/null +++ b/composer/vendor/composer/ca-bundle/LICENSE @@ -0,0 +1,21 @@ + +Copyright (C) 2016 Composer + +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/composer/vendor/composer/ca-bundle/res/cacert.pem b/composer/vendor/composer/ca-bundle/res/cacert.pem new file mode 100644 index 000000000..2ae7b6cb2 --- /dev/null +++ b/composer/vendor/composer/ca-bundle/res/cacert.pem @@ -0,0 +1,3372 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Tue Jan 10 04:12:06 2023 GMT +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.29. +## SHA256: 90c470e705b4b5f36f09684dc50e2b79c8b86989a848b62cd1a7bd6460ee65f6 +## + + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +======================================== +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe +Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE +LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD +ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA +BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv +KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z +p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC +AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ +4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y +eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw +MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G +PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw +OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm +2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 +o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV +dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph +X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= +-----END CERTIFICATE----- + +D-TRUST Root Class 3 CA 2 EV 2009 +================================= +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK +DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw +OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS +egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh +zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T +7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 +sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 +11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv +cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v +ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El +MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp +b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh +c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ +PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 +nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX +ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA +NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv +w9y4AyHqnxbxLFS1 +-----END CERTIFICATE----- + +CA Disig Root R2 +================ +-----BEGIN CERTIFICATE----- +MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw +EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp +ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx +EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp +c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC +w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia +xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 +A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S +GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV +g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa +5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE +koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A +Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i +Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV +HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u +Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM +tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV +sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je +dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 +1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx +mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 +utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 +sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg +UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV +7+ZtsH8tZ/3zbBt1RqPlShfppNcL +-----END CERTIFICATE----- + +ACCVRAIZ1 +========= +-----BEGIN CERTIFICATE----- +MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB +SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 +MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH +UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM +jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 +RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD +aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ +0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG +WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 +8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR +5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J +9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK +Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw +Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu +Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 +VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM +Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA +QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh +AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA +YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj +AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA +IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk +aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 +dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 +MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI +hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E +R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN +YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 +nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ +TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 +sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h +I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg +Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd +3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p +EfbRD0tVNEYqi4Y7 +-----END CERTIFICATE----- + +TWCA Global Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT +CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD +QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK +EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg +Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C +nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV +r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR +Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV +tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W +KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 +sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p +yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn +kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI +zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g +cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn +LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M +8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg +/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg +lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP +A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m +i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 +EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 +zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= +-----END CERTIFICATE----- + +TeliaSonera Root CA v1 +====================== +-----BEGIN CERTIFICATE----- +MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE +CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 +MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW +VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ +6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA +3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k +B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn +Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH +oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 +F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ +oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 +gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc +TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB +AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW +DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm +zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx +0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW +pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV +G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc +c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT +JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 +qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 +Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems +WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= +-----END CERTIFICATE----- + +E-Tugra Certification Authority +=============================== +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w +DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls +ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN +ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw +NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx +QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl +cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD +DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd +hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K +CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g +ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ +BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 +E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz +rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq +jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn +rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 +dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB +/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG +MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK +kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO +XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 +VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo +a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc +dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV +KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT +Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 +8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G +C7TbO6Orb1wdtn7os4I07QZcJA== +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 2 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx +MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ +SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F +vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 +2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV +WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy +YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 +r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf +vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR +3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN +9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== +-----END CERTIFICATE----- + +Atos TrustedRoot 2011 +===================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU +cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 +MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG +A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV +hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr +54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ +DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 +HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR +z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R +l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ +bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h +k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh +TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 +61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G +3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed +-----END CERTIFICATE----- + +QuoVadis Root CA 1 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE +PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm +PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 +Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN +ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l +g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV +7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX +9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f +iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg +t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI +hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC +MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 +GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct +Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP ++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh +3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa +wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 +O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 +FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV +hMJKzRwuJIczYOXD +-----END CERTIFICATE----- + +QuoVadis Root CA 2 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh +ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY +NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t +oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o +MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l +V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo +L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ +sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD +6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh +lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI +hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 +AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K +pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 +x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz +dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X +U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw +mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD +zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN +JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr +O3jtZsSOeWmD3n+M +-----END CERTIFICATE----- + +QuoVadis Root CA 3 G3 +===================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG +A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv +b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN +MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg +RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 +IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL +Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe +6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 +I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U +VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 +5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi +Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM +dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt +rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI +hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px +KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS +t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ +TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du +DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib +Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD +hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX +0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW +dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 +PpxxVJkES/1Y+Zj0 +-----END CERTIFICATE----- + +DigiCert Assured ID Root G2 +=========================== +-----BEGIN CERTIFICATE----- +MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw +MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH +35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq +bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw +VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP +YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn +lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO +w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv +0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz +d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW +hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M +jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo +IhNzbM8m9Yop5w== +-----END CERTIFICATE----- + +DigiCert Assured ID Root G3 +=========================== +-----BEGIN CERTIFICATE----- +MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD +VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb +RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs +KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF +UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy +YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy +1vUhZscv6pZjamVFkpUBtA== +-----END CERTIFICATE----- + +DigiCert Global Root G2 +======================= +-----BEGIN CERTIFICATE----- +MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx +MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ +kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO +3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV +BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM +UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB +o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu +5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr +F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U +WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH +QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ +iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl +MrY= +-----END CERTIFICATE----- + +DigiCert Global Root G3 +======================= +-----BEGIN CERTIFICATE----- +MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV +UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD +VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw +MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k +aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C +AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O +YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP +BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp +Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y +3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 +VOKa5Vt8sycX +-----END CERTIFICATE----- + +DigiCert Trusted Root G4 +======================== +-----BEGIN CERTIFICATE----- +MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw +HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 +MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp +pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o +k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa +vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY +QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 +MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm +mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 +f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH +dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 +oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud +DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD +ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY +ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr +yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy +7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah +ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN +5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb +/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa +5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK +G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP +82Z+ +-----END CERTIFICATE----- + +COMODO RSA Certification Authority +================================== +-----BEGIN CERTIFICATE----- +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 +LaZRfyHBNVOFBkpdn627G190 +-----END CERTIFICATE----- + +USERTrust RSA Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +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 +Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 +-----END CERTIFICATE----- + +USERTrust ECC Certification Authority +===================================== +-----BEGIN CERTIFICATE----- +MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC +VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU +aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 +0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez +nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV +HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB +HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu +9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R5 +=========================== +-----BEGIN CERTIFICATE----- +MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb +R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD +EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 +SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS +h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx +uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 +yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 +-----END CERTIFICATE----- + +IdenTrust Commercial Root CA 1 +============================== +-----BEGIN CERTIFICATE----- +MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS +b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES +MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB +IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld +hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ +mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi +1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C +XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl +3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy +NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV +WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg +xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix +uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI +hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH +6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg +ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt +ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV +YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX +feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro +kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe +2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz +Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R +cGzM7vRX+Bi6hG6H +-----END CERTIFICATE----- + +IdenTrust Public Sector Root CA 1 +================================= +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG +EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv +ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV +UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS +b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy +P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 +Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI +rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf +qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS +mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn +ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh +LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v +iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL +4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B +Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw +DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj +t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A +mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt +GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt +m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx +NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 +Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI +ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC +ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ +3Wl9af0AVqW3rLatt8o+Ae+c +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy +bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug +b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw +HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT +DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx +OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP +/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz +HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU +s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y +TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx +AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 +0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z +iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ +Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi +nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ +vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO +e4pIb4tF9g== +-----END CERTIFICATE----- + +Entrust Root Certification Authority - EC1 +========================================== +-----BEGIN CERTIFICATE----- +MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx +FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn +YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw +FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs +LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg +dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt +IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy +AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef +9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h +vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 +kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G +-----END CERTIFICATE----- + +CFCA EV ROOT +============ +-----BEGIN CERTIFICATE----- +MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE +CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB +IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw +MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD +DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV +BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD +7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN +uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW +ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 +xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f +py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K +gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol +hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ +tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf +BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB +ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q +ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua +4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG +E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX +BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn +aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy +PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX +kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C +ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GB CA +=============================== +-----BEGIN CERTIFICATE----- +MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG +EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl +ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw +MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD +VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds +b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX +scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP +rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk +9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o +Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg +GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI +hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD +dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 +VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui +HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic +Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= +-----END CERTIFICATE----- + +SZAFIR ROOT CA2 +=============== +-----BEGIN CERTIFICATE----- +MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG +A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV +BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ +BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD +VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q +qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK +DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE +2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ +ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi +ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P +AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC +AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 +O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 +oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul +4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 ++/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== +-----END CERTIFICATE----- + +Certum Trusted Network CA 2 +=========================== +-----BEGIN CERTIFICATE----- +MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE +BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 +bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y +ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ +TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB +IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 +7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o +CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b +Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p +uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 +GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ +9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB +Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye +hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM +BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI +hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW +Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA +L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo +clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM +pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb +w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo +J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm +ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX +is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 +zAYspsbiDrW5viSP +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2015 +======================================================= +-----BEGIN CERTIFICATE----- +MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT +BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 +aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl +YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx +MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg +QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV +BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw +MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv +bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh +iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ +6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd +FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr +i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F +GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 +fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu +iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc +Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI +hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ +D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM +d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y +d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn +82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb +davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F +Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt +J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa +JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q +p/UsQu0yrbYhnr68 +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions ECC RootCA 2015 +=========================================================== +-----BEGIN CERTIFICATE----- +MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 +aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj +aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw +MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj +IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD +VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 +Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP +dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK +Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA +GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn +dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR +-----END CERTIFICATE----- + +ISRG Root X1 +============ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE +BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD +EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG +EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT +DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r +Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 +3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K +b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN +Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ +4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf +1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu +hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH +usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r +OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G +A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY +9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV +0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt +hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw +TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx +e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA +JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD +YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n +JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ +m+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM +================ +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT +AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw +MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD +TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf +qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr +btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL +j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou +08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw +WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT +tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ +47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC +ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa +i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o +dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD +nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s +D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ +j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT +Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW ++YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 +Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d +8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm +5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG +rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= +-----END CERTIFICATE----- + +Amazon Root CA 1 +================ +-----BEGIN CERTIFICATE----- +MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 +MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH +FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ +gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t +dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce +VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 +DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM +CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy +8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa +2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 +xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 +-----END CERTIFICATE----- + +Amazon Root CA 2 +================ +-----BEGIN CERTIFICATE----- +MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD +VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 +MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv +bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 +kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp +N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 +AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd +fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx +kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS +btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 +Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN +c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ +3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw +DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA +A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY ++gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE +YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW +xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ +gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW +aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV +Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 +KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi +JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= +-----END CERTIFICATE----- + +Amazon Root CA 3 +================ +-----BEGIN CERTIFICATE----- +MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB +f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr +Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 +rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc +eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== +-----END CERTIFICATE----- + +Amazon Root CA 4 +================ +-----BEGIN CERTIFICATE----- +MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG +EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy +NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ +MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN +/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri +83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV +HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA +MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 +AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== +-----END CERTIFICATE----- + +TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT +D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr +IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g +TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp +ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD +VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt +c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth +bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 +IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 +6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc +wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 +3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 +WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU +ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh +AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc +lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R +e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j +q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= +-----END CERTIFICATE----- + +GDCA TrustAUTH R5 ROOT +====================== +-----BEGIN CERTIFICATE----- +MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw +BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD +DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow +YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ +IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs +AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p +OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr +pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ +9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ +xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM +R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ +D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 +oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx +9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg +p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 +H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 +6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd ++PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ +HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD +F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ +8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv +/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT +aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== +-----END CERTIFICATE----- + +SSL.com Root Certification Authority RSA +======================================== +-----BEGIN CERTIFICATE----- +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 +WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= +-----END CERTIFICATE----- + +SSL.com Root Certification Authority ECC +======================================== +-----BEGIN CERTIFICATE----- +MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv +BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy +MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO +BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv +bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ +8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR +hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT +jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW +e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z +5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority RSA R2 +============================================== +-----BEGIN CERTIFICATE----- +MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w +DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u +MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy +MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI +DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD +VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN +BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh +hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w +cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO +Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ +B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh +CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim +9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto +RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm +JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 ++qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV +HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp +qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 +++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx +Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G +guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz +OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 +CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq +lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR +rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 +hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX +9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== +-----END CERTIFICATE----- + +SSL.com EV Root Certification Authority ECC +=========================================== +-----BEGIN CERTIFICATE----- +MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV +BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy +BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw +MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx +EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM +LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB +BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy +3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O +BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe +5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ +N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm +m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== +-----END CERTIFICATE----- + +GlobalSign Root CA - R6 +======================= +-----BEGIN CERTIFICATE----- +MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX +R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i +YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs +U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss +grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE +3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF +vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM +PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+ +azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O +WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy +CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP +0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN +b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE +AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV +HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN +nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0 +lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY +BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym +Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr +3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1 +0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T +uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK +oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t +JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GC CA +=============================== +-----BEGIN CERTIFICATE----- +MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD +SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo +MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa +Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL +ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh +bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr +VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab +NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E +AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk +AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 +-----END CERTIFICATE----- + +UCA Global G2 Root +================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x +NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU +cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT +oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV +8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS +h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o +LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/ +R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe +KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa +4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc +OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97 +8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O +BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo +5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 +1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A +Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9 +yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX +c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo +jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk +bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x +ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn +RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A== +-----END CERTIFICATE----- + +UCA Extended Validation Root +============================ +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG +EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u +IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G +A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs +iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF +Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu +eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR +59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH +0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR +el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv +B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth +WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS +NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS +3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL +BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR +ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM +aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4 +dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb ++7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW +F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi +GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc +GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi +djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr +dhh2n1ax +-----END CERTIFICATE----- + +Certigna Root CA +================ +-----BEGIN CERTIFICATE----- +MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE +BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ +MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda +MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz +MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX +stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz +KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8 +JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16 +XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq +4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej +wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ +lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI +jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/ +/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of +1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy +dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h +LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl +cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt +OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP +TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq +7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3 +4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd +8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS +6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY +tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS +aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde +E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= +-----END CERTIFICATE----- + +emSign Root CA - G1 +=================== +-----BEGIN CERTIFICATE----- +MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET +MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl +ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx +ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk +aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN +LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1 +cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW +DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ +6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH +hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2 +vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q +NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q ++Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih +U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx +iN66zB+Afko= +-----END CERTIFICATE----- + +emSign ECC Root CA - G3 +======================= +-----BEGIN CERTIFICATE----- +MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG +A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg +MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4 +MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11 +ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g +RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc +58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr +MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC +AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D +CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7 +jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj +-----END CERTIFICATE----- + +emSign Root CA - C1 +=================== +-----BEGIN CERTIFICATE----- +MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx +EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp +Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE +BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD +ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up +ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/ +Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX +OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V +I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms +lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+ +XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD +ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp +/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1 +NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9 +wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ +BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI= +-----END CERTIFICATE----- + +emSign ECC Root CA - C3 +======================= +-----BEGIN CERTIFICATE----- +MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG +A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF +Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE +BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD +ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd +6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9 +SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA +B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA +MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU +ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 3 +======================= +-----BEGIN CERTIFICATE----- +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 +dBb9HxEGmpv0 +-----END CERTIFICATE----- + +Entrust Root Certification Authority - G4 +========================================= +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu +bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 +dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT +AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D +umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV +3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds +8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ +e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 +ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X +xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV +7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 +dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW +Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n +MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q +jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht +7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK +YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt +jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ +m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW +RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA +JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G ++TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT +kcpG2om3PVODLAgfi49T3f+sHw== +-----END CERTIFICATE----- + +Microsoft ECC Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND +IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4 +MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6 +thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB +eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM ++Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf +Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR +eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +Microsoft RSA Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg +UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw +NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml +7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e +S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7 +1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+ +dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F +yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS +MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr +lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ +0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ +ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og +6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80 +dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk ++ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex +/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy +AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW +ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE +7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT +c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D +5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +e-Szigno Root CA 2017 +===================== +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw +DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt +MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa +Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE +CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp +Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx +s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G +A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv +vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA +tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO +svxyqltZ+efcMQ== +-----END CERTIFICATE----- + +certSIGN Root CA G2 +=================== +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw +EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy +MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH +TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05 +N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk +abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg +wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp +dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh +ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732 +jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf +95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc +z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL +iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud +DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB +ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB +/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5 +8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5 +BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW +atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU +Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M +NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N +0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +Trustwave Global Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +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 +29FpHOTKyeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +Trustwave Global ECC P256 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1 +NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj +43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm +P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt +0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz +RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +Trustwave Global ECC P384 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4 +NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH +Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr +/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV +HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn +ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl +CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw== +-----END CERTIFICATE----- + +NAVER Global Root Certification Authority +========================================= +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG +A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD +DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4 +NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT +UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb +UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW ++j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7 +XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2 +aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4 +Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z +VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B +A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai +cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy +YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV +HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK +21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB +jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx +hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg +E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH +D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ +A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY +qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG +I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg +kpzNNIaRkPpkUZ3+/uul9XXeifdy +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM SERVIDORES SEGUROS +=================================== +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF +UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy +NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4 +MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt +UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB +QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2 +LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG +SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD +zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c= +-----END CERTIFICATE----- + +GlobalSign Root R46 +=================== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv +b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX +BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es +CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/ +r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje +2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt +bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj +K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4 +12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on +ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls +eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9 +vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM +BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy +gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92 +CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm +OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq +JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye +qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz +nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7 +DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3 +QEUxeCp6 +-----END CERTIFICATE----- + +GlobalSign Root E46 +=================== +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT +AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg +RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV +BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB +jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj +QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL +gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk +vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ +CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +GLOBALTRUST 2020 +================ +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx +IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT +VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh +BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy +MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi +D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO +VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM +CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm +fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA +A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR +JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG +DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU +clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ +mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud +IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw +4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 +iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS +8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 +HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS +vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 +oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF +YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl +gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + +ANF Secure Server Root CA +========================= +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Certum EC-384 CA +================ +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ +TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2 +MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh +dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx +GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq +vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn +iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo +ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0 +QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +Certum Trusted Root CA +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +TunTrust Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG +A1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj +dHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw +NDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD +ZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz +2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b +bjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7 +NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd +gjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW +VSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f +Tpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ +juXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas +DXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS +VXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI +04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 +90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl +0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd +Ao74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY +YdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp +adbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x +xBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP +jCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM +MEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z +ZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r +AZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= +-----END CERTIFICATE----- + +HARICA TLS RSA Root CA 2021 +=========================== +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG +EwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz +OFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl +bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB +IFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN +JLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu +a2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y +Ulhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K +5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv +dmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR +0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH +GjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm +haZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ +CPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU +EapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq +QRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD +QpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR +j88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5 +vZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0 +qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6 +Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/ +PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn +kf3/W9b3raYvAwtt41dU63ZTGI0RmLo= +-----END CERTIFICATE----- + +HARICA TLS ECC Root CA 2021 +=========================== +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH +UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD +QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX +DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj +IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv +b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l +AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b +ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW +0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi +rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw +CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud +DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w +gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A +bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL +4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb +LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il +I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP +cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA +LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A +lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH +9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf +NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE +ZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +vTrus ECC Root CA +================= +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE +BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS +b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa +BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c +ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n +TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT +QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL +YgmRWAD5Tfs0aNoJrSEGGJTO +-----END CERTIFICATE----- + +vTrus Root CA +============= +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG +A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv +b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG +A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots +SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI +ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF +XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA +YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70 +kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2 +AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu +/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu +1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO +9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg +scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC +AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr +jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4 +8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn +xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg +icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4 +sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW +nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc +SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H +l3s= +-----END CERTIFICATE----- + +ISRG Root X2 +============ +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV +UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT +UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT +MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS +RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H +ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb +d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF +cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5 +U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +HiPKI Root CA - G1 +================== +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ +IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT +AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg +Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0 +o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k +wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE +YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA +GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd +hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj +1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4 +9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/ +Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF +8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD +AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl +tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE +wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q +JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv +5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz +jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg +hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb +yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/ +yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i +YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i +YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW +ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E +BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI +KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg +UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +GTS Root R1 +=========== +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM +f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0 +xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w +B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW +nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk +9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq +kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A +K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX +V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW +cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD +ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi +ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar +J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci +NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me +LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF +fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+ +7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3 +FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3 +gm3c +-----END CERTIFICATE----- + +GTS Root R2 +=========== +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv +CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl +e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb +a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS ++LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M +kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG +r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q +S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV +J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL +dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD +ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 +0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh +swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel +/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn +jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5 +9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M +7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8 +0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR +WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW +HYbL +-----END CERTIFICATE----- + +GTS Root R3 +=========== +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi +MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw +HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ +R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO +PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout +736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA +MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq +Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT +L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV +11RZt+cRLInUue4X +-----END CERTIFICATE----- + +GTS Root R4 +=========== +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi +MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw +HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ +R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO +PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu +hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA +MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1 +PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C +r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh +4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +Telia Root CA v2 +================ +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT +AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2 +MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK +DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7 +6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q +9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn +pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl +tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW +5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr +RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E +BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4 +M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau +BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W +xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5 +tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H +eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C +y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC +QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15 +h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70 +sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9 +xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ +raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc= +-----END CERTIFICATE----- + +D-TRUST BR Root CA 1 2020 +========================= +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE +RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy +MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV +BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7 +dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu +QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t +MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu +bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP +PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD +AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom +AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +D-TRUST EV Root CA 1 2020 +========================= +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE +RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy +MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV +BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8 +ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ +raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL +MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu +bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP +PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD +AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR +AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- + +DigiCert TLS ECC P384 Root G5 +============================= +-----BEGIN CERTIFICATE----- +MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4 +NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg +Um9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd +lHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj +n4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB +/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds +Jk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx +AJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA== +-----END CERTIFICATE----- + +DigiCert TLS RSA4096 Root G5 +============================ +-----BEGIN CERTIFICATE----- +MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG +EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0 +MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2 +IFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8 +7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU +AT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces +tyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa +zOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV +DdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q +TXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy +z6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/ +MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk +wcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E +FgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w +DQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw +GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN +lnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN +MBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/ +u4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G +OUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh +47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU +FvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ +yqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP +bEtoL8pU9ozaMv7Da4M/OMZ+ +-----END CERTIFICATE----- + +Certainly Root R1 +================= +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE +BhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN +MjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy +dGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O +5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl +8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl +DbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI +XsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN +KPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ +AjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb +rlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1 +VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS +p6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud +DgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz +HQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d +8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v +MMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB +GsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+ +gjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH +JBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7 +fpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw +x06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S +X3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8= +-----END CERTIFICATE----- + +Certainly Root E1 +================= +-----BEGIN CERTIFICATE----- +MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV +UzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0 +MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu +bHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4 +fxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9 +YBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E +AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8 +rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR +-----END CERTIFICATE----- + +E-Tugra Global Root CA RSA v3 +============================= +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +E-Tugra Global Root CA ECC v3 +============================= +-----BEGIN CERTIFICATE----- +MIICpTCCAiqgAwIBAgIUJkYZdzHhT28oNt45UYbm1JeIIsEwCgYIKoZIzj0EAwMwgYAxCzAJBgNV +BAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUtVHVncmEgRUJHIEEuUy4xHTAbBgNV +BAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYwJAYDVQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENB +IEVDQyB2MzAeFw0yMDAzMTgwOTQ2NThaFw00NTAzMTIwOTQ2NThaMIGAMQswCQYDVQQGEwJUUjEP +MA0GA1UEBxMGQW5rYXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1 +Z3JhIFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBFQ0MgdjMw +djAQBgcqhkjOPQIBBgUrgQQAIgNiAASOmCm/xxAeJ9urA8woLNheSBkQKczLWYHMjLiSF4mDKpL2 +w6QdTGLVn9agRtwcvHbB40fQWxPa56WzZkjnIZpKT4YKfWzqTTKACrJ6CZtpS5iB4i7sAnCWH/31 +Rs7K3IKjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU/4Ixcj75xGZsrTie0bBRiKWQ +zPUwHQYDVR0OBBYEFP+CMXI++cRmbK04ntGwUYilkMz1MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO +PQQDAwNpADBmAjEA5gVYaWHlLcoNy/EZCL3W/VGSGn5jVASQkZo1kTmZ+gepZpO6yGjUij/67W4W +Aie3AjEA3VoXK3YdZUKWpqxdinlW2Iob35reX8dQj7FbcQwm32pAAOwzkSFxvmjkI6TZraE3 +-----END CERTIFICATE----- + +Security Communication RootCA3 +============================== +-----BEGIN CERTIFICATE----- +MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw +IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD +b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw +CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE +AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r +hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE +NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2 +/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm +npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY +XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK +p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC +3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf +GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw +CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB +/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS +YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu +Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O +H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx +YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ +XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml ++LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn +KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9 +dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm +6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg== +-----END CERTIFICATE----- + +Security Communication ECC RootCA1 +================================== +-----BEGIN CERTIFICATE----- +MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUwIwYD +VQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21t +dW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYxNjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTEL +MAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNV +BAMTIlNlY3VyaXR5IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+CnnfdldB9sELLo +5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpKULGjQjBAMB0GA1UdDgQW +BBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAK +BggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L +snNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e +N9k= +-----END CERTIFICATE----- diff --git a/composer/vendor/composer/ca-bundle/src/CaBundle.php b/composer/vendor/composer/ca-bundle/src/CaBundle.php new file mode 100644 index 000000000..454c62cc0 --- /dev/null +++ b/composer/vendor/composer/ca-bundle/src/CaBundle.php @@ -0,0 +1,431 @@ +warning(sprintf( +'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', +PHP_VERSION +)); +$warned = true; +} + +$isValid = !empty($contents); +} elseif (is_string($contents) && strlen($contents) > 0) { +$contents = preg_replace("/^(\\-+(?:BEGIN|END))\\s+TRUSTED\\s+(CERTIFICATE\\-+)\$/m", '$1 $2', $contents); +if (null === $contents) { + +$isValid = false; +} else { +$isValid = (bool) openssl_x509_parse($contents); +} +} else { +$isValid = false; +} + +if ($logger) { +$logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid')); +} + +return self::$caFileValidity[$filename] = $isValid; +} + + + + + + + + + +public static function isOpensslParseSafe() +{ +if (null !== self::$useOpensslParse) { +return self::$useOpensslParse; +} + +if (PHP_VERSION_ID >= 50600) { +return self::$useOpensslParse = true; +} + + + + + +if ( +(PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328) +|| (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423) +|| PHP_VERSION_ID >= 50507 +) { + +return self::$useOpensslParse = true; +} + +if (defined('PHP_WINDOWS_VERSION_BUILD')) { + +return self::$useOpensslParse = false; +} + +$compareDistroVersionPrefix = function ($prefix, $fixedVersion) { +$regex = '{^'.preg_quote($prefix).'([0-9]+)$}'; + +if (preg_match($regex, PHP_VERSION, $m)) { +return ((int) $m[1]) >= $fixedVersion; +} + +return false; +}; + + +if ( +$compareDistroVersionPrefix('5.3.3-7+squeeze', 18) +|| $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) +|| $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) +) { +return self::$useOpensslParse = true; +} + + +if (!class_exists('Symfony\Component\Process\PhpProcess')) { +return self::$useOpensslParse = false; +} + + + + + + + + + + +$cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'; +$script = <<<'EOT' + +error_reporting(-1); +$info = openssl_x509_parse(base64_decode('%s')); +var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']); + +EOT; +$script = '<'."?php\n".sprintf($script, $cert); + +try { +$process = new PhpProcess($script); +$process->mustRun(); +} catch (\Exception $e) { + + +return self::$useOpensslParse = false; +} + +$output = preg_split('{\r?\n}', trim($process->getOutput())); +$errorOutput = trim($process->getErrorOutput()); + +if ( +is_array($output) +&& count($output) === 3 +&& $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION) +&& $output[1] === 'string(27) "stefan.esser@sektioneins.de"' +&& $output[2] === 'int(-1)' +&& preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput) +) { + +return self::$useOpensslParse = true; +} + +return self::$useOpensslParse = false; +} + + + + + +public static function reset() +{ +self::$caFileValidity = array(); +self::$caPath = null; +self::$useOpensslParse = null; +} + + + + + +private static function getEnvVariable($name) +{ +if (isset($_SERVER[$name])) { +return (string) $_SERVER[$name]; +} + +if (PHP_SAPI === 'cli' && ($value = getenv($name)) !== false && $value !== null) { +return (string) $value; +} + +return false; +} + + + + + + +private static function caFileUsable($certFile, LoggerInterface $logger = null) +{ +return $certFile +&& static::isFile($certFile, $logger) +&& static::isReadable($certFile, $logger) +&& static::validateCaFile($certFile, $logger); +} + + + + + + +private static function caDirUsable($certDir, LoggerInterface $logger = null) +{ +return $certDir +&& static::isDir($certDir, $logger) +&& static::isReadable($certDir, $logger) +&& static::glob($certDir . '/*', $logger); +} + + + + + + +private static function isFile($certFile, LoggerInterface $logger = null) +{ +$isFile = @is_file($certFile); +if (!$isFile && $logger) { +$logger->debug(sprintf('Checked CA file %s does not exist or it is not a file.', $certFile)); +} + +return $isFile; +} + + + + + + +private static function isDir($certDir, LoggerInterface $logger = null) +{ +$isDir = @is_dir($certDir); +if (!$isDir && $logger) { +$logger->debug(sprintf('Checked directory %s does not exist or it is not a directory.', $certDir)); +} + +return $isDir; +} + + + + + + +private static function isReadable($certFileOrDir, LoggerInterface $logger = null) +{ +$isReadable = @is_readable($certFileOrDir); +if (!$isReadable && $logger) { +$logger->debug(sprintf('Checked file or directory %s is not readable.', $certFileOrDir)); +} + +return $isReadable; +} + + + + + + +private static function glob($pattern, LoggerInterface $logger = null) +{ +$certs = glob($pattern); +if ($certs === false) { +if ($logger) { +$logger->debug(sprintf("An error occurred while trying to find certificates for pattern: %s", $pattern)); +} +return false; +} + +if (count($certs) === 0) { +if ($logger) { +$logger->debug(sprintf("No CA files found for pattern: %s", $pattern)); +} +return false; +} + +return true; +} +} diff --git a/composer/vendor/composer/class-map-generator/LICENSE b/composer/vendor/composer/class-map-generator/LICENSE new file mode 100644 index 000000000..b7b64e162 --- /dev/null +++ b/composer/vendor/composer/class-map-generator/LICENSE @@ -0,0 +1,21 @@ + +Copyright (C) 2022 Composer + +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/composer/vendor/composer/class-map-generator/src/ClassMap.php b/composer/vendor/composer/class-map-generator/src/ClassMap.php new file mode 100644 index 000000000..df8846c01 --- /dev/null +++ b/composer/vendor/composer/class-map-generator/src/ClassMap.php @@ -0,0 +1,131 @@ +map; +} + + + + + + + + + + + + +public function getPsrViolations(): array +{ +return $this->psrViolations; +} + + + + + + + + + + +public function getAmbiguousClasses(): array +{ +return $this->ambiguousClasses; +} + + + + +public function sort(): void +{ +ksort($this->map); +} + + + + + +public function addClass(string $className, string $path): void +{ +$this->map[$className] = $path; +} + + + + + +public function getClassPath(string $className): string +{ +if (!isset($this->map[$className])) { +throw new \OutOfBoundsException('Class '.$className.' is not present in the map'); +} + +return $this->map[$className]; +} + + + + +public function hasClass(string $className): bool +{ +return isset($this->map[$className]); +} + +public function addPsrViolation(string $warning): void +{ +$this->psrViolations[] = $warning; +} + + + + + +public function addAmbiguousClass(string $className, string $path): void +{ +$this->ambiguousClasses[$className][] = $path; +} + +public function count(): int +{ +return \count($this->map); +} +} diff --git a/composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php b/composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php new file mode 100644 index 000000000..25b51073b --- /dev/null +++ b/composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php @@ -0,0 +1,334 @@ +extensions = $extensions; +$this->classMap = new ClassMap; +} + + + + + + + + +public function avoidDuplicateScans(FileList $scannedFiles = null): self +{ +$this->scannedFiles = $scannedFiles ?? new FileList; + +return $this; +} + + + + + + + + + +public static function createMap($path): array +{ +$generator = new self(); + +$generator->scanPaths($path); + +return $generator->getClassMap()->getMap(); +} + +public function getClassMap(): ClassMap +{ +return $this->classMap; +} + + + + + + + + + + + +public function scanPaths($path, string $excluded = null, string $autoloadType = 'classmap', ?string $namespace = null): void +{ +if (!in_array($autoloadType, ['psr-0', 'psr-4', 'classmap'], true)) { +throw new \InvalidArgumentException('$autoloadType must be one of: "psr-0", "psr-4" or "classmap"'); +} + +if ('classmap' !== $autoloadType) { +if (!is_string($path)) { +throw new \InvalidArgumentException('$path must be a string when specifying a psr-0 or psr-4 autoload type'); +} +if (!is_string($namespace)) { +throw new \InvalidArgumentException('$namespace must be given (even if it is an empty string if you do not want to filter) when specifying a psr-0 or psr-4 autoload type'); +} +$basePath = $path; +} + +if (is_string($path)) { +if (is_file($path)) { +$path = [new \SplFileInfo($path)]; +} elseif (is_dir($path) || strpos($path, '*') !== false) { +$path = Finder::create() +->files() +->followLinks() +->name('/\.(?:'.implode('|', array_map('preg_quote', $this->extensions)).')$/') +->in($path); +} else { +throw new \RuntimeException( +'Could not scan for classes inside "'.$path.'" which does not appear to be a file nor a folder' +); +} +} + +$cwd = realpath(self::getCwd()); + +foreach ($path as $file) { +$filePath = $file->getPathname(); +if (!in_array(pathinfo($filePath, PATHINFO_EXTENSION), $this->extensions, true)) { +continue; +} + +if (!self::isAbsolutePath($filePath)) { +$filePath = $cwd . '/' . $filePath; +$filePath = self::normalizePath($filePath); +} else { +$filePath = Preg::replace('{[\\\\/]{2,}}', '/', $filePath); +} + +if ('' === $filePath) { +throw new \LogicException('Got an empty $filePath for '.$file->getPathname()); +} + +$realPath = realpath($filePath); + + +if (false === $realPath) { +throw new \RuntimeException('realpath of '.$filePath.' failed to resolve, got false'); +} + + + +if ($this->scannedFiles !== null && $this->scannedFiles->contains($realPath)) { +continue; +} + + +if (null !== $excluded && Preg::isMatch($excluded, strtr($realPath, '\\', '/'))) { +continue; +} + +if (null !== $excluded && Preg::isMatch($excluded, strtr($filePath, '\\', '/'))) { +continue; +} + +$classes = PhpFileParser::findClasses($filePath); +if ('classmap' !== $autoloadType && isset($namespace, $basePath)) { +$classes = $this->filterByNamespace($classes, $filePath, $namespace, $autoloadType, $basePath); + + +if (\count($classes) > 0 && $this->scannedFiles !== null) { +$this->scannedFiles->add($realPath); +} +} elseif ($this->scannedFiles !== null) { + +$this->scannedFiles->add($realPath); +} + +foreach ($classes as $class) { +if (!$this->classMap->hasClass($class)) { +$this->classMap->addClass($class, $filePath); +} elseif ($filePath !== $this->classMap->getClassPath($class) && !Preg::isMatch('{/(test|fixture|example|stub)s?/}i', strtr($this->classMap->getClassPath($class).' '.$filePath, '\\', '/'))) { +$this->classMap->addAmbiguousClass($class, $filePath); +} +} +} +} + + + + + + + + + + + +private function filterByNamespace(array $classes, string $filePath, string $baseNamespace, string $namespaceType, string $basePath): array +{ +$validClasses = []; +$rejectedClasses = []; + +$realSubPath = substr($filePath, strlen($basePath) + 1); +$dotPosition = strrpos($realSubPath, '.'); +$realSubPath = substr($realSubPath, 0, $dotPosition === false ? PHP_INT_MAX : $dotPosition); + +foreach ($classes as $class) { + +if ('' !== $baseNamespace && 0 !== strpos($class, $baseNamespace)) { +continue; +} + +if ('psr-0' === $namespaceType) { +$namespaceLength = strrpos($class, '\\'); +if (false !== $namespaceLength) { +$namespace = substr($class, 0, $namespaceLength + 1); +$className = substr($class, $namespaceLength + 1); +$subPath = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) +. str_replace('_', DIRECTORY_SEPARATOR, $className); +} else { +$subPath = str_replace('_', DIRECTORY_SEPARATOR, $class); +} +} elseif ('psr-4' === $namespaceType) { +$subNamespace = ('' !== $baseNamespace) ? substr($class, strlen($baseNamespace)) : $class; +$subPath = str_replace('\\', DIRECTORY_SEPARATOR, $subNamespace); +} else { +throw new \InvalidArgumentException('$namespaceType must be "psr-0" or "psr-4"'); +} +if ($subPath === $realSubPath) { +$validClasses[] = $class; +} else { +$rejectedClasses[] = $class; +} +} + +if (\count($validClasses) === 0) { +foreach ($rejectedClasses as $class) { +$this->classMap->addPsrViolation("Class $class located in ".Preg::replace('{^'.preg_quote(self::getCwd()).'}', '.', $filePath, 1)." does not comply with $namespaceType autoloading standard. Skipping."); +} + +return []; +} + +return $validClasses; +} + + + + + + + + + +private static function isAbsolutePath(string $path) +{ +return strpos($path, '/') === 0 || substr($path, 1, 1) === ':' || strpos($path, '\\\\') === 0; +} + + + + + + + + + + +private static function normalizePath(string $path) +{ +$parts = []; +$path = strtr($path, '\\', '/'); +$prefix = ''; +$absolute = ''; + + +if (strpos($path, '//') === 0 && \strlen($path) > 2) { +$absolute = '//'; +$path = substr($path, 2); +} + + +if (Preg::isMatch('{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix', $path, $match)) { +$prefix = $match[1]; +$path = substr($path, \strlen($prefix)); +} + +if (strpos($path, '/') === 0) { +$absolute = '/'; +$path = substr($path, 1); +} + +$up = false; +foreach (explode('/', $path) as $chunk) { +if ('..' === $chunk && (\strlen($absolute) > 0 || $up)) { +array_pop($parts); +$up = !(\count($parts) === 0 || '..' === end($parts)); +} elseif ('.' !== $chunk && '' !== $chunk) { +$parts[] = $chunk; +$up = '..' !== $chunk; +} +} + + +$prefix = Preg::replaceCallback('{(^|://)[a-z]:$}i', function (array $m) { return strtoupper($m[0]); }, $prefix); + +return $prefix.$absolute.implode('/', $parts); +} + + + + +private static function getCwd(): string +{ +$cwd = getcwd(); + +if (false === $cwd) { +throw new \RuntimeException('Could not determine the current working directory'); +} + +return $cwd; +} +} diff --git a/composer/vendor/composer/class-map-generator/src/FileList.php b/composer/vendor/composer/class-map-generator/src/FileList.php new file mode 100644 index 000000000..fb3516df9 --- /dev/null +++ b/composer/vendor/composer/class-map-generator/src/FileList.php @@ -0,0 +1,42 @@ +files[$path] = true; +} + + + + +public function contains(string $path): bool +{ +return isset($this->files[$path]); +} +} diff --git a/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php b/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php new file mode 100644 index 000000000..2e55c2bda --- /dev/null +++ b/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php @@ -0,0 +1,247 @@ + $type, +'length' => \strlen($type), +'pattern' => '{.\b(?])'.$type.'\s++[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+}Ais', +); +} + +self::$restPattern = '{[^?"\'contents = $contents; +$this->len = \strlen($this->contents); +$this->maxMatches = $maxMatches; +} + +public function clean(): string +{ +$clean = ''; + +while ($this->index < $this->len) { +$this->skipToPhp(); +$clean .= 'index < $this->len) { +$char = $this->contents[$this->index]; +if ($char === '?' && $this->peek('>')) { +$clean .= '?>'; +$this->index += 2; +continue 2; +} + +if ($char === '"') { +$this->skipString('"'); +$clean .= 'null'; +continue; +} + +if ($char === "'") { +$this->skipString("'"); +$clean .= 'null'; +continue; +} + +if ($char === "<" && $this->peek('<') && $this->match('{<<<[ \t]*+([\'"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*+)\\1(?:\r\n|\n|\r)}A', $match)) { +$this->index += \strlen($match[0]); +$this->skipHeredoc($match[2]); +$clean .= 'null'; +continue; +} + +if ($char === '/') { +if ($this->peek('/')) { +$this->skipToNewline(); +continue; +} +if ($this->peek('*')) { +$this->skipComment(); +continue; +} +} + +if ($this->maxMatches === 1 && isset(self::$typeConfig[$char])) { +$type = self::$typeConfig[$char]; +if ( +\substr($this->contents, $this->index, $type['length']) === $type['name'] +&& Preg::isMatch($type['pattern'], $this->contents, $match, 0, $this->index - 1) +) { +$clean .= $match[0]; + +return $clean; +} +} + +$this->index += 1; +if ($this->match(self::$restPattern, $match)) { +$clean .= $char . $match[0]; +$this->index += \strlen($match[0]); +} else { +$clean .= $char; +} +} +} + +return $clean; +} + +private function skipToPhp(): void +{ +while ($this->index < $this->len) { +if ($this->contents[$this->index] === '<' && $this->peek('?')) { +$this->index += 2; +break; +} + +$this->index += 1; +} +} + +private function skipString(string $delimiter): void +{ +$this->index += 1; +while ($this->index < $this->len) { +if ($this->contents[$this->index] === '\\' && ($this->peek('\\') || $this->peek($delimiter))) { +$this->index += 2; +continue; +} +if ($this->contents[$this->index] === $delimiter) { +$this->index += 1; +break; +} +$this->index += 1; +} +} + +private function skipComment(): void +{ +$this->index += 2; +while ($this->index < $this->len) { +if ($this->contents[$this->index] === '*' && $this->peek('/')) { +$this->index += 2; +break; +} + +$this->index += 1; +} +} + +private function skipToNewline(): void +{ +while ($this->index < $this->len) { +if ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n") { +return; +} +$this->index += 1; +} +} + +private function skipHeredoc(string $delimiter): void +{ +$firstDelimiterChar = $delimiter[0]; +$delimiterLength = \strlen($delimiter); +$delimiterPattern = '{'.preg_quote($delimiter).'(?![a-zA-Z0-9_\x80-\xff])}A'; + +while ($this->index < $this->len) { + +switch ($this->contents[$this->index]) { +case "\t": +case " ": +$this->index += 1; +continue 2; +case $firstDelimiterChar: +if ( +\substr($this->contents, $this->index, $delimiterLength) === $delimiter +&& $this->match($delimiterPattern) +) { +$this->index += $delimiterLength; + +return; +} +break; +} + + +while ($this->index < $this->len) { +$this->skipToNewline(); + + +while ($this->index < $this->len && ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n")) { +$this->index += 1; +} + +break; +} +} +} + +private function peek(string $char): bool +{ +return $this->index + 1 < $this->len && $this->contents[$this->index + 1] === $char; +} + + + + + +private function match(string $regex, array &$match = null): bool +{ +return Preg::isMatch($regex, $this->contents, $match, 0, $this->index); +} +} diff --git a/composer/vendor/composer/class-map-generator/src/PhpFileParser.php b/composer/vendor/composer/class-map-generator/src/PhpFileParser.php new file mode 100644 index 000000000..2e6f071b2 --- /dev/null +++ b/composer/vendor/composer/class-map-generator/src/PhpFileParser.php @@ -0,0 +1,150 @@ +clean(); +unset($p); + +Preg::matchAll('{ + (?: + \b(?])(?Pclass|interface|trait'.$extraTypes.') \s++ (?P[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+) + | \b(?])(?Pnamespace) (?P\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;] + ) + }ix', $contents, $matches); + +$classes = array(); +$namespace = ''; + +for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { +if (isset($matches['ns'][$i]) && $matches['ns'][$i] !== '') { +$namespace = str_replace(array(' ', "\t", "\r", "\n"), '', (string) $matches['nsname'][$i]) . '\\'; +} else { +$name = $matches['name'][$i]; + +if ($name === 'extends' || $name === 'implements') { +continue; +} +if ($name[0] === ':') { + +$name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); +} elseif (strtolower($matches['type'][$i]) === 'enum') { + + + + + + + + +$colonPos = strrpos($name, ':'); +if (false !== $colonPos) { +$name = substr($name, 0, $colonPos); +} +} +$classes[] = ltrim($namespace . $name, '\\'); +} +} + +return $classes; +} + + + + +private static function getExtraTypes(): string +{ +static $extraTypes = null; + +if (null === $extraTypes) { +$extraTypes = ''; +if (PHP_VERSION_ID >= 80100 || (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>='))) { +$extraTypes .= '|enum'; +} + +PhpFileCleaner::setTypeConfig(array_merge(['class', 'interface', 'trait'], array_filter(explode('|', $extraTypes)))); +} + +return $extraTypes; +} + + + + + + + + + + + + +private static function isReadable(string $path) +{ +if (is_readable($path)) { +return true; +} + +if (is_file($path)) { +return false !== @file_get_contents($path, false, null, 0, 1); +} + + +return false; +} +} diff --git a/composer/vendor/composer/installed.php b/composer/vendor/composer/installed.php new file mode 100644 index 000000000..f677438ac --- /dev/null +++ b/composer/vendor/composer/installed.php @@ -0,0 +1,281 @@ + array( +'name' => 'composer/composer', +'pretty_version' => '2.5.3', +'version' => '2.5.3.0', +'reference' => '607a4c04006ce1d2b6fdfd5467bae3d7ad9ce5ab', +'type' => 'library', +'install_path' => __DIR__ . '/../../', +'aliases' => array(), +'dev' => false, +), +'versions' => array( +'composer/ca-bundle' => array( +'pretty_version' => '1.3.5', +'version' => '1.3.5.0', +'reference' => '74780ccf8c19d6acb8d65c5f39cd72110e132bbd', +'type' => 'library', +'install_path' => __DIR__ . '/./ca-bundle', +'aliases' => array(), +'dev_requirement' => false, +), +'composer/class-map-generator' => array( +'pretty_version' => '1.0.0', +'version' => '1.0.0.0', +'reference' => '1e1cb2b791facb2dfe32932a7718cf2571187513', +'type' => 'library', +'install_path' => __DIR__ . '/./class-map-generator', +'aliases' => array(), +'dev_requirement' => false, +), +'composer/composer' => array( +'pretty_version' => '2.5.3', +'version' => '2.5.3.0', +'reference' => '607a4c04006ce1d2b6fdfd5467bae3d7ad9ce5ab', +'type' => 'library', +'install_path' => __DIR__ . '/../../', +'aliases' => array(), +'dev_requirement' => false, +), +'composer/metadata-minifier' => array( +'pretty_version' => '1.0.0', +'version' => '1.0.0.0', +'reference' => 'c549d23829536f0d0e984aaabbf02af91f443207', +'type' => 'library', +'install_path' => __DIR__ . '/./metadata-minifier', +'aliases' => array(), +'dev_requirement' => false, +), +'composer/pcre' => array( +'pretty_version' => '2.1.0', +'version' => '2.1.0.0', +'reference' => '3fdb2807b31a78a40ad89570e30ec77466c98717', +'type' => 'library', +'install_path' => __DIR__ . '/./pcre', +'aliases' => array(), +'dev_requirement' => false, +), +'composer/semver' => array( +'pretty_version' => '3.3.2', +'version' => '3.3.2.0', +'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', +'type' => 'library', +'install_path' => __DIR__ . '/./semver', +'aliases' => array(), +'dev_requirement' => false, +), +'composer/spdx-licenses' => array( +'pretty_version' => '1.5.7', +'version' => '1.5.7.0', +'reference' => 'c848241796da2abf65837d51dce1fae55a960149', +'type' => 'library', +'install_path' => __DIR__ . '/./spdx-licenses', +'aliases' => array(), +'dev_requirement' => false, +), +'composer/xdebug-handler' => array( +'pretty_version' => '3.0.3', +'version' => '3.0.3.0', +'reference' => 'ced299686f41dce890debac69273b47ffe98a40c', +'type' => 'library', +'install_path' => __DIR__ . '/./xdebug-handler', +'aliases' => array(), +'dev_requirement' => false, +), +'justinrainbow/json-schema' => array( +'pretty_version' => '5.2.12', +'version' => '5.2.12.0', +'reference' => 'ad87d5a5ca981228e0e205c2bc7dfb8e24559b60', +'type' => 'library', +'install_path' => __DIR__ . '/../justinrainbow/json-schema', +'aliases' => array(), +'dev_requirement' => false, +), +'psr/container' => array( +'pretty_version' => '1.1.1', +'version' => '1.1.1.0', +'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', +'type' => 'library', +'install_path' => __DIR__ . '/../psr/container', +'aliases' => array(), +'dev_requirement' => false, +), +'psr/log' => array( +'pretty_version' => '1.1.4', +'version' => '1.1.4.0', +'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', +'type' => 'library', +'install_path' => __DIR__ . '/../psr/log', +'aliases' => array(), +'dev_requirement' => false, +), +'psr/log-implementation' => array( +'dev_requirement' => false, +'provided' => array( +0 => '1.0|2.0', +), +), +'react/promise' => array( +'pretty_version' => 'v2.9.0', +'version' => '2.9.0.0', +'reference' => '234f8fd1023c9158e2314fa9d7d0e6a83db42910', +'type' => 'library', +'install_path' => __DIR__ . '/../react/promise', +'aliases' => array(), +'dev_requirement' => false, +), +'seld/jsonlint' => array( +'pretty_version' => '1.9.0', +'version' => '1.9.0.0', +'reference' => '4211420d25eba80712bff236a98960ef68b866b7', +'type' => 'library', +'install_path' => __DIR__ . '/../seld/jsonlint', +'aliases' => array(), +'dev_requirement' => false, +), +'seld/phar-utils' => array( +'pretty_version' => '1.2.1', +'version' => '1.2.1.0', +'reference' => 'ea2f4014f163c1be4c601b9b7bd6af81ba8d701c', +'type' => 'library', +'install_path' => __DIR__ . '/../seld/phar-utils', +'aliases' => array(), +'dev_requirement' => false, +), +'seld/signal-handler' => array( +'pretty_version' => '2.0.1', +'version' => '2.0.1.0', +'reference' => 'f69d119511dc0360440cdbdaa71829c149b7be75', +'type' => 'library', +'install_path' => __DIR__ . '/../seld/signal-handler', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/console' => array( +'pretty_version' => 'v5.4.19', +'version' => '5.4.19.0', +'reference' => 'dccb8d251a9017d5994c988b034d3e18aaabf740', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/console', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/deprecation-contracts' => array( +'pretty_version' => 'v2.5.2', +'version' => '2.5.2.0', +'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/deprecation-contracts', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/filesystem' => array( +'pretty_version' => 'v5.4.19', +'version' => '5.4.19.0', +'reference' => '648bfaca6a494f3e22378123bcee2894045dc9d8', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/filesystem', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/finder' => array( +'pretty_version' => 'v5.4.19', +'version' => '5.4.19.0', +'reference' => '6071aebf810ad13fe8200c224f36103abb37cf1f', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/finder', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/polyfill-ctype' => array( +'pretty_version' => 'v1.27.0', +'version' => '1.27.0.0', +'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/polyfill-ctype', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/polyfill-intl-grapheme' => array( +'pretty_version' => 'v1.27.0', +'version' => '1.27.0.0', +'reference' => '511a08c03c1960e08a883f4cffcacd219b758354', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/polyfill-intl-normalizer' => array( +'pretty_version' => 'v1.27.0', +'version' => '1.27.0.0', +'reference' => '19bd1e4fcd5b91116f14d8533c57831ed00571b6', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/polyfill-mbstring' => array( +'pretty_version' => 'v1.27.0', +'version' => '1.27.0.0', +'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/polyfill-php73' => array( +'pretty_version' => 'v1.27.0', +'version' => '1.27.0.0', +'reference' => '9e8ecb5f92152187c4799efd3c96b78ccab18ff9', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/polyfill-php73', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/polyfill-php80' => array( +'pretty_version' => 'v1.27.0', +'version' => '1.27.0.0', +'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/polyfill-php80', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/polyfill-php81' => array( +'pretty_version' => 'v1.27.0', +'version' => '1.27.0.0', +'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/polyfill-php81', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/process' => array( +'pretty_version' => 'v5.4.19', +'version' => '5.4.19.0', +'reference' => 'c5ba874c9b636dbccf761e22ce750e88ec3f55e1', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/process', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/service-contracts' => array( +'pretty_version' => 'v2.5.2', +'version' => '2.5.2.0', +'reference' => '4b426aac47d6427cc1a1d0f7e2ac724627f5966c', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/service-contracts', +'aliases' => array(), +'dev_requirement' => false, +), +'symfony/string' => array( +'pretty_version' => 'v5.4.19', +'version' => '5.4.19.0', +'reference' => '0a01071610fd861cc160dfb7e2682ceec66064cb', +'type' => 'library', +'install_path' => __DIR__ . '/../symfony/string', +'aliases' => array(), +'dev_requirement' => false, +), +), +); diff --git a/composer/vendor/composer/metadata-minifier/LICENSE b/composer/vendor/composer/metadata-minifier/LICENSE new file mode 100644 index 000000000..35aad3355 --- /dev/null +++ b/composer/vendor/composer/metadata-minifier/LICENSE @@ -0,0 +1,21 @@ + +Copyright (C) 2021 Composer + +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/composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php b/composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php new file mode 100644 index 000000000..adcb6c569 --- /dev/null +++ b/composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php @@ -0,0 +1,89 @@ + $val) { +if ($val === '__unset') { +unset($expandedVersion[$key]); +} else { +$expandedVersion[$key] = $val; +} +} + +$expanded[] = $expandedVersion; +} + +return $expanded; +} + + + + + + + +public static function minify(array $versions) +{ +$minifiedVersions = array(); + +$lastKnownVersionData = null; +foreach ($versions as $version) { +if (!$lastKnownVersionData) { +$lastKnownVersionData = $version; +$minifiedVersions[] = $version; +continue; +} + +$minifiedVersion = array(); + + +foreach ($version as $key => $val) { +if (!isset($lastKnownVersionData[$key]) || $lastKnownVersionData[$key] !== $val) { +$minifiedVersion[$key] = $val; +$lastKnownVersionData[$key] = $val; +} +} + + +foreach ($lastKnownVersionData as $key => $val) { +if (!isset($version[$key])) { +$minifiedVersion[$key] = "__unset"; +unset($lastKnownVersionData[$key]); +} +} + +$minifiedVersions[] = $minifiedVersion; +} + +return $minifiedVersions; +} +} diff --git a/composer/vendor/composer/pcre/LICENSE b/composer/vendor/composer/pcre/LICENSE new file mode 100644 index 000000000..35aad3355 --- /dev/null +++ b/composer/vendor/composer/pcre/LICENSE @@ -0,0 +1,21 @@ + +Copyright (C) 2021 Composer + +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/composer/vendor/composer/pcre/src/MatchAllResult.php b/composer/vendor/composer/pcre/src/MatchAllResult.php new file mode 100644 index 000000000..8168221ca --- /dev/null +++ b/composer/vendor/composer/pcre/src/MatchAllResult.php @@ -0,0 +1,46 @@ +matches = $matches; +$this->matched = (bool) $count; +$this->count = $count; +} +} diff --git a/composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php b/composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php new file mode 100644 index 000000000..0b4cd7458 --- /dev/null +++ b/composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php @@ -0,0 +1,46 @@ +matches = $matches; +$this->matched = (bool) $count; +$this->count = $count; +} +} diff --git a/composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php b/composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php new file mode 100644 index 000000000..b8f056b74 --- /dev/null +++ b/composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php @@ -0,0 +1,48 @@ +matches = $matches; +$this->matched = (bool) $count; +$this->count = $count; +} +} diff --git a/composer/vendor/composer/pcre/src/MatchResult.php b/composer/vendor/composer/pcre/src/MatchResult.php new file mode 100644 index 000000000..8a2899c56 --- /dev/null +++ b/composer/vendor/composer/pcre/src/MatchResult.php @@ -0,0 +1,39 @@ +matches = $matches; +$this->matched = (bool) $count; +} +} diff --git a/composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php b/composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php new file mode 100644 index 000000000..dea22d898 --- /dev/null +++ b/composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php @@ -0,0 +1,39 @@ +matches = $matches; +$this->matched = (bool) $count; +} +} diff --git a/composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php b/composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php new file mode 100644 index 000000000..e49f57533 --- /dev/null +++ b/composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php @@ -0,0 +1,41 @@ +matches = $matches; +$this->matched = (bool) $count; +} +} diff --git a/composer/vendor/composer/pcre/src/PcreException.php b/composer/vendor/composer/pcre/src/PcreException.php new file mode 100644 index 000000000..0b2245008 --- /dev/null +++ b/composer/vendor/composer/pcre/src/PcreException.php @@ -0,0 +1,60 @@ + $val) { +if ($val === $code && substr($const, -6) === '_ERROR') { +return $const; +} +} + +return 'UNDEFINED_ERROR'; +} +} diff --git a/composer/vendor/composer/pcre/src/Preg.php b/composer/vendor/composer/pcre/src/Preg.php new file mode 100644 index 000000000..be4c097f0 --- /dev/null +++ b/composer/vendor/composer/pcre/src/Preg.php @@ -0,0 +1,454 @@ += 70400) { +$result = preg_replace_callback($pattern, $replacement, $subject, $limit, $count, $flags); +} else { +$result = preg_replace_callback($pattern, $replacement, $subject, $limit, $count); +} +if ($result === null) { +throw PcreException::fromFunction('preg_replace_callback', $pattern); +} + +return $result; +} + + + + + + + + + +public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, int &$count = null, int $flags = 0): string +{ +if (!is_scalar($subject)) { +if (is_array($subject)) { +throw new \InvalidArgumentException(static::ARRAY_MSG); +} + +throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject))); +} + +if (PHP_VERSION_ID >= 70400) { +$result = preg_replace_callback_array($pattern, $subject, $limit, $count, $flags); +} else { +$result = preg_replace_callback_array($pattern, $subject, $limit, $count); +} +if ($result === null) { +$pattern = array_keys($pattern); +throw PcreException::fromFunction('preg_replace_callback_array', $pattern); +} + +return $result; +} + + + + + +public static function split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array +{ +if (($flags & PREG_SPLIT_OFFSET_CAPTURE) !== 0) { +throw new \InvalidArgumentException('PREG_SPLIT_OFFSET_CAPTURE is not supported as it changes the type of $matches, use splitWithOffsets() instead'); +} + +$result = preg_split($pattern, $subject, $limit, $flags); +if ($result === false) { +throw PcreException::fromFunction('preg_split', $pattern); +} + +return $result; +} + + + + + + +public static function splitWithOffsets(string $pattern, string $subject, int $limit = -1, int $flags = 0): array +{ +$result = preg_split($pattern, $subject, $limit, $flags | PREG_SPLIT_OFFSET_CAPTURE); +if ($result === false) { +throw PcreException::fromFunction('preg_split', $pattern); +} + +return $result; +} + + + + + + + + +public static function grep(string $pattern, array $array, int $flags = 0): array +{ +$result = preg_grep($pattern, $array, $flags); +if ($result === false) { +throw PcreException::fromFunction('preg_grep', $pattern); +} + +return $result; +} + + + + + + + + + + +public static function isMatch(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool +{ +return (bool) static::match($pattern, $subject, $matches, $flags, $offset); +} + + + + + + + + + + + +public static function isMatchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool +{ +return (bool) self::matchStrictGroups($pattern, $subject, $matches, $flags, $offset); +} + + + + + + + + + + +public static function isMatchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool +{ +return (bool) static::matchAll($pattern, $subject, $matches, $flags, $offset); +} + + + + + + + + + + +public static function isMatchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool +{ +return (bool) self::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset); +} + + + + + + + + + + + + +public static function isMatchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool +{ +return (bool) static::matchWithOffsets($pattern, $subject, $matches, $flags, $offset); +} + + + + + + + + + + + + +public static function isMatchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool +{ +return (bool) static::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset); +} + +private static function checkOffsetCapture(int $flags, string $useFunctionName): void +{ +if (($flags & PREG_OFFSET_CAPTURE) !== 0) { +throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the type of $matches, use ' . $useFunctionName . '() instead'); +} +} + +private static function checkSetOrder(int $flags): void +{ +if (($flags & PREG_SET_ORDER) !== 0) { +throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the type of $matches'); +} +} + + + + + + +private static function enforceNonNullMatches(string $pattern, array $matches, string $variantMethod) +{ +foreach ($matches as $group => $match) { +if (null === $match) { +throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.'); +} +} + + +return $matches; +} + + + + + + +private static function enforceNonNullMatchAll(string $pattern, array $matches, string $variantMethod) +{ +foreach ($matches as $group => $groupMatches) { +foreach ($groupMatches as $match) { +if (null === $match) { +throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.'); +} +} +} + + +return $matches; +} + + + + + + + + + +private static function pregMatch(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) +{ +if (PHP_VERSION_ID >= 70400) { +return preg_match($pattern, $subject, $matches, $flags, $offset); +} + + + + + + + + +$result = preg_match_all($pattern, $subject, $matchesInternal, $flags, $offset); +if (!is_int($result)) { +throw PcreException::fromFunction('preg_match', $pattern); +} + +if ($result === 0) { +$matches = []; +} else { +$matches = array_map(function ($m) { return reset($m); }, $matchesInternal); +$result = min($result, 1); +} + +return $result; +} +} diff --git a/composer/vendor/composer/pcre/src/Regex.php b/composer/vendor/composer/pcre/src/Regex.php new file mode 100644 index 000000000..2adb108df --- /dev/null +++ b/composer/vendor/composer/pcre/src/Regex.php @@ -0,0 +1,159 @@ +count = $count; +$this->matched = (bool) $count; +$this->result = $result; +} +} diff --git a/composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php b/composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php new file mode 100644 index 000000000..281496549 --- /dev/null +++ b/composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php @@ -0,0 +1,20 @@ +', $version2); +} + + + + + + + + + +public static function greaterThanOrEqualTo($version1, $version2) +{ +return self::compare($version1, '>=', $version2); +} + + + + + + + + + +public static function lessThan($version1, $version2) +{ +return self::compare($version1, '<', $version2); +} + + + + + + + + + +public static function lessThanOrEqualTo($version1, $version2) +{ +return self::compare($version1, '<=', $version2); +} + + + + + + + + + +public static function equalTo($version1, $version2) +{ +return self::compare($version1, '==', $version2); +} + + + + + + + + + +public static function notEqualTo($version1, $version2) +{ +return self::compare($version1, '!=', $version2); +} + + + + + + + + + + + + +public static function compare($version1, $operator, $version2) +{ +$constraint = new Constraint($operator, $version2); + +return $constraint->matchSpecific(new Constraint('==', $version1), true); +} +} diff --git a/composer/vendor/composer/semver/src/CompilingMatcher.php b/composer/vendor/composer/semver/src/CompilingMatcher.php new file mode 100644 index 000000000..8db85010c --- /dev/null +++ b/composer/vendor/composer/semver/src/CompilingMatcher.php @@ -0,0 +1,94 @@ + Constraint::STR_OP_EQ, +Constraint::OP_LT => Constraint::STR_OP_LT, +Constraint::OP_LE => Constraint::STR_OP_LE, +Constraint::OP_GT => Constraint::STR_OP_GT, +Constraint::OP_GE => Constraint::STR_OP_GE, +Constraint::OP_NE => Constraint::STR_OP_NE, +); + + + + + + +public static function clear() +{ +self::$resultCache = array(); +self::$compiledCheckerCache = array(); +} + + + + + + + + + + + +public static function match(ConstraintInterface $constraint, $operator, $version) +{ +$resultCacheKey = $operator.$constraint.';'.$version; + +if (isset(self::$resultCache[$resultCacheKey])) { +return self::$resultCache[$resultCacheKey]; +} + +if (self::$enabled === null) { +self::$enabled = !\in_array('eval', explode(',', (string) ini_get('disable_functions')), true); +} +if (!self::$enabled) { +return self::$resultCache[$resultCacheKey] = $constraint->matches(new Constraint(self::$transOpInt[$operator], $version)); +} + +$cacheKey = $operator.$constraint; +if (!isset(self::$compiledCheckerCache[$cacheKey])) { +$code = $constraint->compile($operator); +self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return '.$code.';};'); +} else { +$function = self::$compiledCheckerCache[$cacheKey]; +} + +return self::$resultCache[$resultCacheKey] = $function($version, strpos($version, 'dev-') === 0); +} +} diff --git a/composer/vendor/composer/semver/src/Constraint/Bound.php b/composer/vendor/composer/semver/src/Constraint/Bound.php new file mode 100644 index 000000000..135cbadae --- /dev/null +++ b/composer/vendor/composer/semver/src/Constraint/Bound.php @@ -0,0 +1,122 @@ +version = $version; +$this->isInclusive = $isInclusive; +} + + + + +public function getVersion() +{ +return $this->version; +} + + + + +public function isInclusive() +{ +return $this->isInclusive; +} + + + + +public function isZero() +{ +return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive(); +} + + + + +public function isPositiveInfinity() +{ +return $this->getVersion() === PHP_INT_MAX.'.0.0.0' && !$this->isInclusive(); +} + + + + + + + + + +public function compareTo(Bound $other, $operator) +{ +if (!\in_array($operator, array('<', '>'), true)) { +throw new \InvalidArgumentException('Does not support any other operator other than > or <.'); +} + + +if ($this == $other) { +return false; +} + +$compareResult = version_compare($this->getVersion(), $other->getVersion()); + + +if (0 !== $compareResult) { +return (('>' === $operator) ? 1 : -1) === $compareResult; +} + + +return '>' === $operator ? $other->isInclusive() : !$other->isInclusive(); +} + +public function __toString() +{ +return sprintf( +'%s [%s]', +$this->getVersion(), +$this->isInclusive() ? 'inclusive' : 'exclusive' +); +} + + + + +public static function zero() +{ +return new Bound('0.0.0.0-dev', true); +} + + + + +public static function positiveInfinity() +{ +return new Bound(PHP_INT_MAX.'.0.0.0', false); +} +} diff --git a/composer/vendor/composer/semver/src/Constraint/Constraint.php b/composer/vendor/composer/semver/src/Constraint/Constraint.php new file mode 100644 index 000000000..fe5caf95b --- /dev/null +++ b/composer/vendor/composer/semver/src/Constraint/Constraint.php @@ -0,0 +1,435 @@ +'; +const STR_OP_GE = '>='; +const STR_OP_NE = '!='; +const STR_OP_NE_ALT = '<>'; + + + + + + + +private static $transOpStr = array( +'=' => self::OP_EQ, +'==' => self::OP_EQ, +'<' => self::OP_LT, +'<=' => self::OP_LE, +'>' => self::OP_GT, +'>=' => self::OP_GE, +'<>' => self::OP_NE, +'!=' => self::OP_NE, +); + + + + + + + +private static $transOpInt = array( +self::OP_EQ => '==', +self::OP_LT => '<', +self::OP_LE => '<=', +self::OP_GT => '>', +self::OP_GE => '>=', +self::OP_NE => '!=', +); + + + + + +protected $operator; + + +protected $version; + + +protected $prettyString; + + +protected $lowerBound; + + +protected $upperBound; + + + + + + + + + + + +public function __construct($operator, $version) +{ +if (!isset(self::$transOpStr[$operator])) { +throw new \InvalidArgumentException(sprintf( +'Invalid operator "%s" given, expected one of: %s', +$operator, +implode(', ', self::getSupportedOperators()) +)); +} + +$this->operator = self::$transOpStr[$operator]; +$this->version = $version; +} + + + + +public function getVersion() +{ +return $this->version; +} + + + + + + +public function getOperator() +{ +return self::$transOpInt[$this->operator]; +} + + + + + + +public function matches(ConstraintInterface $provider) +{ +if ($provider instanceof self) { +return $this->matchSpecific($provider); +} + + +return $provider->matches($this); +} + + + + +public function setPrettyString($prettyString) +{ +$this->prettyString = $prettyString; +} + + + + +public function getPrettyString() +{ +if ($this->prettyString) { +return $this->prettyString; +} + +return $this->__toString(); +} + + + + + + + + +public static function getSupportedOperators() +{ +return array_keys(self::$transOpStr); +} + + + + + + + + +public static function getOperatorConstant($operator) +{ +return self::$transOpStr[$operator]; +} + + + + + + + + + + + + + +public function versionCompare($a, $b, $operator, $compareBranches = false) +{ +if (!isset(self::$transOpStr[$operator])) { +throw new \InvalidArgumentException(sprintf( +'Invalid operator "%s" given, expected one of: %s', +$operator, +implode(', ', self::getSupportedOperators()) +)); +} + +$aIsBranch = strpos($a, 'dev-') === 0; +$bIsBranch = strpos($b, 'dev-') === 0; + +if ($operator === '!=' && ($aIsBranch || $bIsBranch)) { +return $a !== $b; +} + +if ($aIsBranch && $bIsBranch) { +return $operator === '==' && $a === $b; +} + + +if (!$compareBranches && ($aIsBranch || $bIsBranch)) { +return false; +} + +return \version_compare($a, $b, $operator); +} + + + + +public function compile($otherOperator) +{ +if (strpos($this->version, 'dev-') === 0) { +if (self::OP_EQ === $this->operator) { +if (self::OP_EQ === $otherOperator) { +return sprintf('$b && $v === %s', \var_export($this->version, true)); +} +if (self::OP_NE === $otherOperator) { +return sprintf('!$b || $v !== %s', \var_export($this->version, true)); +} +return 'false'; +} + +if (self::OP_NE === $this->operator) { +if (self::OP_EQ === $otherOperator) { +return sprintf('!$b || $v !== %s', \var_export($this->version, true)); +} +if (self::OP_NE === $otherOperator) { +return 'true'; +} +return '!$b'; +} + +return 'false'; +} + +if (self::OP_EQ === $this->operator) { +if (self::OP_EQ === $otherOperator) { +return sprintf('\version_compare($v, %s, \'==\')', \var_export($this->version, true)); +} +if (self::OP_NE === $otherOperator) { +return sprintf('$b || \version_compare($v, %s, \'!=\')', \var_export($this->version, true)); +} + +return sprintf('!$b && \version_compare(%s, $v, \'%s\')', \var_export($this->version, true), self::$transOpInt[$otherOperator]); +} + +if (self::OP_NE === $this->operator) { +if (self::OP_EQ === $otherOperator) { +return sprintf('$b || (!$b && \version_compare($v, %s, \'!=\'))', \var_export($this->version, true)); +} + +if (self::OP_NE === $otherOperator) { +return 'true'; +} +return '!$b'; +} + +if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) { +if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) { +return '!$b'; +} +} else { +if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) { +return '!$b'; +} +} + +if (self::OP_NE === $otherOperator) { +return 'true'; +} + +$codeComparison = sprintf('\version_compare($v, %s, \'%s\')', \var_export($this->version, true), self::$transOpInt[$this->operator]); +if ($this->operator === self::OP_LE) { +if ($otherOperator === self::OP_GT) { +return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; +} +} elseif ($this->operator === self::OP_GE) { +if ($otherOperator === self::OP_LT) { +return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; +} +} + +return sprintf('!$b && %s', $codeComparison); +} + + + + + + + +public function matchSpecific(Constraint $provider, $compareBranches = false) +{ +$noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]); +$providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]); + +$isEqualOp = self::OP_EQ === $this->operator; +$isNonEqualOp = self::OP_NE === $this->operator; +$isProviderEqualOp = self::OP_EQ === $provider->operator; +$isProviderNonEqualOp = self::OP_NE === $provider->operator; + + + +if ($isNonEqualOp || $isProviderNonEqualOp) { +if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && strpos($provider->version, 'dev-') === 0) { +return false; +} + +if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && strpos($this->version, 'dev-') === 0) { +return false; +} + +if (!$isEqualOp && !$isProviderEqualOp) { +return true; +} +return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); +} + + + +if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { +return !(strpos($this->version, 'dev-') === 0 || strpos($provider->version, 'dev-') === 0); +} + +$version1 = $isEqualOp ? $this->version : $provider->version; +$version2 = $isEqualOp ? $provider->version : $this->version; +$operator = $isEqualOp ? $provider->operator : $this->operator; + +if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) { + + + +return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp +&& self::$transOpInt[$this->operator] !== $noEqualOp +&& \version_compare($provider->version, $this->version, '==')); +} + +return false; +} + + + + +public function __toString() +{ +return self::$transOpInt[$this->operator] . ' ' . $this->version; +} + + + + +public function getLowerBound() +{ +$this->extractBounds(); + +return $this->lowerBound; +} + + + + +public function getUpperBound() +{ +$this->extractBounds(); + +return $this->upperBound; +} + + + + +private function extractBounds() +{ +if (null !== $this->lowerBound) { +return; +} + + +if (strpos($this->version, 'dev-') === 0) { +$this->lowerBound = Bound::zero(); +$this->upperBound = Bound::positiveInfinity(); + +return; +} + +switch ($this->operator) { +case self::OP_EQ: +$this->lowerBound = new Bound($this->version, true); +$this->upperBound = new Bound($this->version, true); +break; +case self::OP_LT: +$this->lowerBound = Bound::zero(); +$this->upperBound = new Bound($this->version, false); +break; +case self::OP_LE: +$this->lowerBound = Bound::zero(); +$this->upperBound = new Bound($this->version, true); +break; +case self::OP_GT: +$this->lowerBound = new Bound($this->version, false); +$this->upperBound = Bound::positiveInfinity(); +break; +case self::OP_GE: +$this->lowerBound = new Bound($this->version, true); +$this->upperBound = Bound::positiveInfinity(); +break; +case self::OP_NE: +$this->lowerBound = Bound::zero(); +$this->upperBound = Bound::positiveInfinity(); +break; +} +} +} diff --git a/composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php new file mode 100644 index 000000000..28476df14 --- /dev/null +++ b/composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php @@ -0,0 +1,75 @@ +prettyString = $prettyString; +} + + + + +public function getPrettyString() +{ +if ($this->prettyString) { +return $this->prettyString; +} + +return (string) $this; +} + + + + +public function __toString() +{ +return '*'; +} + + + + +public function getUpperBound() +{ +return Bound::positiveInfinity(); +} + + + + +public function getLowerBound() +{ +return Bound::zero(); +} +} diff --git a/composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php b/composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php new file mode 100644 index 000000000..f75c1df76 --- /dev/null +++ b/composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php @@ -0,0 +1,83 @@ +prettyString = $prettyString; +} + + + + +public function getPrettyString() +{ +if ($this->prettyString) { +return $this->prettyString; +} + +return (string) $this; +} + + + + +public function __toString() +{ +return '[]'; +} + + + + +public function getUpperBound() +{ +return new Bound('0.0.0.0-dev', false); +} + + + + +public function getLowerBound() +{ +return new Bound('0.0.0.0-dev', false); +} +} diff --git a/composer/vendor/composer/semver/src/Constraint/MultiConstraint.php b/composer/vendor/composer/semver/src/Constraint/MultiConstraint.php new file mode 100644 index 000000000..9a0d328b5 --- /dev/null +++ b/composer/vendor/composer/semver/src/Constraint/MultiConstraint.php @@ -0,0 +1,325 @@ +constraints = $constraints; +$this->conjunctive = $conjunctive; +} + + + + +public function getConstraints() +{ +return $this->constraints; +} + + + + +public function isConjunctive() +{ +return $this->conjunctive; +} + + + + +public function isDisjunctive() +{ +return !$this->conjunctive; +} + + + + +public function compile($otherOperator) +{ +$parts = array(); +foreach ($this->constraints as $constraint) { +$code = $constraint->compile($otherOperator); +if ($code === 'true') { +if (!$this->conjunctive) { +return 'true'; +} +} elseif ($code === 'false') { +if ($this->conjunctive) { +return 'false'; +} +} else { +$parts[] = '('.$code.')'; +} +} + +if (!$parts) { +return $this->conjunctive ? 'true' : 'false'; +} + +return $this->conjunctive ? implode('&&', $parts) : implode('||', $parts); +} + + + + + + +public function matches(ConstraintInterface $provider) +{ +if (false === $this->conjunctive) { +foreach ($this->constraints as $constraint) { +if ($provider->matches($constraint)) { +return true; +} +} + +return false; +} + + + + +if ($provider instanceof MultiConstraint && $provider->isDisjunctive()) { +return $provider->matches($this); +} + +foreach ($this->constraints as $constraint) { +if (!$provider->matches($constraint)) { +return false; +} +} + +return true; +} + + + + +public function setPrettyString($prettyString) +{ +$this->prettyString = $prettyString; +} + + + + +public function getPrettyString() +{ +if ($this->prettyString) { +return $this->prettyString; +} + +return (string) $this; +} + + + + +public function __toString() +{ +if ($this->string !== null) { +return $this->string; +} + +$constraints = array(); +foreach ($this->constraints as $constraint) { +$constraints[] = (string) $constraint; +} + +return $this->string = '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; +} + + + + +public function getLowerBound() +{ +$this->extractBounds(); + +if (null === $this->lowerBound) { +throw new \LogicException('extractBounds should have populated the lowerBound property'); +} + +return $this->lowerBound; +} + + + + +public function getUpperBound() +{ +$this->extractBounds(); + +if (null === $this->upperBound) { +throw new \LogicException('extractBounds should have populated the upperBound property'); +} + +return $this->upperBound; +} + + + + + + + + + + + + +public static function create(array $constraints, $conjunctive = true) +{ +if (0 === \count($constraints)) { +return new MatchAllConstraint(); +} + +if (1 === \count($constraints)) { +return $constraints[0]; +} + +$optimized = self::optimizeConstraints($constraints, $conjunctive); +if ($optimized !== null) { +list($constraints, $conjunctive) = $optimized; +if (\count($constraints) === 1) { +return $constraints[0]; +} +} + +return new self($constraints, $conjunctive); +} + + + + + + + + +private static function optimizeConstraints(array $constraints, $conjunctive) +{ + + + +if (!$conjunctive) { +$left = $constraints[0]; +$mergedConstraints = array(); +$optimized = false; +for ($i = 1, $l = \count($constraints); $i < $l; $i++) { +$right = $constraints[$i]; +if ( +$left instanceof self +&& $left->conjunctive +&& $right instanceof self +&& $right->conjunctive +&& \count($left->constraints) === 2 +&& \count($right->constraints) === 2 +&& ($left0 = (string) $left->constraints[0]) +&& $left0[0] === '>' && $left0[1] === '=' +&& ($left1 = (string) $left->constraints[1]) +&& $left1[0] === '<' +&& ($right0 = (string) $right->constraints[0]) +&& $right0[0] === '>' && $right0[1] === '=' +&& ($right1 = (string) $right->constraints[1]) +&& $right1[0] === '<' +&& substr($left1, 2) === substr($right0, 3) +) { +$optimized = true; +$left = new MultiConstraint( +array( +$left->constraints[0], +$right->constraints[1], +), +true); +} else { +$mergedConstraints[] = $left; +$left = $right; +} +} +if ($optimized) { +$mergedConstraints[] = $left; +return array($mergedConstraints, false); +} +} + + + +return null; +} + + + + +private function extractBounds() +{ +if (null !== $this->lowerBound) { +return; +} + +foreach ($this->constraints as $constraint) { +if (null === $this->lowerBound || null === $this->upperBound) { +$this->lowerBound = $constraint->getLowerBound(); +$this->upperBound = $constraint->getUpperBound(); +continue; +} + +if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) { +$this->lowerBound = $constraint->getLowerBound(); +} + +if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) { +$this->upperBound = $constraint->getUpperBound(); +} +} +} +} diff --git a/composer/vendor/composer/semver/src/Interval.php b/composer/vendor/composer/semver/src/Interval.php new file mode 100644 index 000000000..76021d8d7 --- /dev/null +++ b/composer/vendor/composer/semver/src/Interval.php @@ -0,0 +1,98 @@ +start = $start; +$this->end = $end; +} + + + + +public function getStart() +{ +return $this->start; +} + + + + +public function getEnd() +{ +return $this->end; +} + + + + +public static function fromZero() +{ +static $zero; + +if (null === $zero) { +$zero = new Constraint('>=', '0.0.0.0-dev'); +} + +return $zero; +} + + + + +public static function untilPositiveInfinity() +{ +static $positiveInfinity; + +if (null === $positiveInfinity) { +$positiveInfinity = new Constraint('<', PHP_INT_MAX.'.0.0.0'); +} + +return $positiveInfinity; +} + + + + +public static function any() +{ +return new self(self::fromZero(), self::untilPositiveInfinity()); +} + + + + +public static function anyDev() +{ + +return array('names' => array(), 'exclude' => true); +} + + + + +public static function noDev() +{ + +return array('names' => array(), 'exclude' => false); +} +} diff --git a/composer/vendor/composer/semver/src/Intervals.php b/composer/vendor/composer/semver/src/Intervals.php new file mode 100644 index 000000000..c83a42628 --- /dev/null +++ b/composer/vendor/composer/semver/src/Intervals.php @@ -0,0 +1,478 @@ +=' => -3, +'<' => -2, +'>' => 2, +'<=' => 3, +); + + + + + + +public static function clear() +{ +self::$intervalsCache = array(); +} + + + + + + +public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint) +{ +if ($constraint instanceof MatchAllConstraint) { +return true; +} + +if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) { +return false; +} + +$intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), true)); +$candidateIntervals = self::get($candidate); +if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) { +return false; +} + +foreach ($intersectionIntervals['numeric'] as $index => $interval) { +if (!isset($candidateIntervals['numeric'][$index])) { +return false; +} + +if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) { +return false; +} + +if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) { +return false; +} +} + +if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) { +return false; +} +if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) { +return false; +} +foreach ($intersectionIntervals['branches']['names'] as $index => $name) { +if ($name !== $candidateIntervals['branches']['names'][$index]) { +return false; +} +} + +return true; +} + + + + + + +public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b) +{ +if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) { +return true; +} + +if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) { +return false; +} + +$intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), true), true); + +return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0; +} + + + + + + + + + + + +public static function compactConstraint(ConstraintInterface $constraint) +{ +if (!$constraint instanceof MultiConstraint) { +return $constraint; +} + +$intervals = self::generateIntervals($constraint); +$constraints = array(); +$hasNumericMatchAll = false; + +if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) { +$constraints[] = $intervals['numeric'][0]->getStart(); +$hasNumericMatchAll = true; +} else { +$unEqualConstraints = array(); +for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) { +$interval = $intervals['numeric'][$i]; + + + + + +if ($interval->getEnd()->getOperator() === '<' && $i+1 < $count) { +$nextInterval = $intervals['numeric'][$i+1]; +if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') { + + + +if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) { +$unEqualConstraints[] = $interval->getStart(); +} +$unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion()); +continue; +} +} + +if (\count($unEqualConstraints) > 0) { + +if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) { +$unEqualConstraints[] = $interval->getEnd(); +} + + +if (\count($unEqualConstraints) > 1) { +$constraints[] = new MultiConstraint($unEqualConstraints, true); +} else { +$constraints[] = $unEqualConstraints[0]; +} + +$unEqualConstraints = array(); +continue; +} + + +if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') { +$constraints[] = new Constraint('==', $interval->getStart()->getVersion()); +continue; +} + +if ((string) $interval->getStart() === (string) Interval::fromZero()) { +$constraints[] = $interval->getEnd(); +} elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) { +$constraints[] = $interval->getStart(); +} else { +$constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), true); +} +} +} + +$devConstraints = array(); + +if (0 === \count($intervals['branches']['names'])) { +if ($intervals['branches']['exclude']) { +if ($hasNumericMatchAll) { +return new MatchAllConstraint; +} + +} +} else { +foreach ($intervals['branches']['names'] as $branchName) { +if ($intervals['branches']['exclude']) { +$devConstraints[] = new Constraint('!=', $branchName); +} else { +$devConstraints[] = new Constraint('==', $branchName); +} +} + + + +if ($intervals['branches']['exclude']) { +if (\count($constraints) > 1) { +return new MultiConstraint(array_merge( +array(new MultiConstraint($constraints, false)), +$devConstraints +), true); +} + +if (\count($constraints) === 1 && (string)$constraints[0] === (string)Interval::fromZero()) { +if (\count($devConstraints) > 1) { +return new MultiConstraint($devConstraints, true); +} +return $devConstraints[0]; +} + +return new MultiConstraint(array_merge($constraints, $devConstraints), true); +} + + + +$constraints = array_merge($constraints, $devConstraints); +} + +if (\count($constraints) > 1) { +return new MultiConstraint($constraints, false); +} + +if (\count($constraints) === 1) { +return $constraints[0]; +} + +return new MatchNoneConstraint; +} + + + + + + + + + + + +public static function get(ConstraintInterface $constraint) +{ +$key = (string) $constraint; + +if (!isset(self::$intervalsCache[$key])) { +self::$intervalsCache[$key] = self::generateIntervals($constraint); +} + +return self::$intervalsCache[$key]; +} + + + + + + +private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = false) +{ +if ($constraint instanceof MatchAllConstraint) { +return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); +} + +if ($constraint instanceof MatchNoneConstraint) { +return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => false)); +} + +if ($constraint instanceof Constraint) { +return self::generateSingleConstraintIntervals($constraint); +} + +if (!$constraint instanceof MultiConstraint) { +throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got '.\get_class($constraint).'.'); +} + +$constraints = $constraint->getConstraints(); + +$numericGroups = array(); +$constraintBranches = array(); +foreach ($constraints as $c) { +$res = self::get($c); +$numericGroups[] = $res['numeric']; +$constraintBranches[] = $res['branches']; +} + +if ($constraint->isDisjunctive()) { +$branches = Interval::noDev(); +foreach ($constraintBranches as $b) { +if ($b['exclude']) { +if ($branches['exclude']) { + + +$branches['names'] = array_intersect($branches['names'], $b['names']); +} else { + + +$branches['exclude'] = true; +$branches['names'] = array_diff($b['names'], $branches['names']); +} +} else { +if ($branches['exclude']) { + + +$branches['names'] = array_diff($branches['names'], $b['names']); +} else { + + +$branches['names'] = array_merge($branches['names'], $b['names']); +} +} +} +} else { +$branches = Interval::anyDev(); +foreach ($constraintBranches as $b) { +if ($b['exclude']) { +if ($branches['exclude']) { + + +$branches['names'] = array_merge($branches['names'], $b['names']); +} else { + + +$branches['names'] = array_diff($branches['names'], $b['names']); +} +} else { +if ($branches['exclude']) { + + +$branches['names'] = array_diff($b['names'], $branches['names']); +$branches['exclude'] = false; +} else { + + +$branches['names'] = array_intersect($branches['names'], $b['names']); +} +} +} +} + +$branches['names'] = array_unique($branches['names']); + +if (\count($numericGroups) === 1) { +return array('numeric' => $numericGroups[0], 'branches' => $branches); +} + +$borders = array(); +foreach ($numericGroups as $group) { +foreach ($group as $interval) { +$borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start'); +$borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end'); +} +} + +$opSortOrder = self::$opSortOrder; +usort($borders, function ($a, $b) use ($opSortOrder) { +$order = version_compare($a['version'], $b['version']); +if ($order === 0) { +return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']]; +} + +return $order; +}); + +$activeIntervals = 0; +$intervals = array(); +$index = 0; +$activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1; +$start = null; +foreach ($borders as $border) { +if ($border['side'] === 'start') { +$activeIntervals++; +} else { +$activeIntervals--; +} +if (!$start && $activeIntervals >= $activationThreshold) { +$start = new Constraint($border['operator'], $border['version']); +} elseif ($start && $activeIntervals < $activationThreshold) { + +if ( +version_compare($start->getVersion(), $border['version'], '=') +&& ( +($start->getOperator() === '>' && $border['operator'] === '<=') +|| ($start->getOperator() === '>=' && $border['operator'] === '<') +) +) { +unset($intervals[$index]); +} else { +$intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version'])); +$index++; + +if ($stopOnFirstValidInterval) { +break; +} +} + +$start = null; +} +} + +return array('numeric' => $intervals, 'branches' => $branches); +} + + + + +private static function generateSingleConstraintIntervals(Constraint $constraint) +{ +$op = $constraint->getOperator(); + + +if (strpos($constraint->getVersion(), 'dev-') === 0) { +$intervals = array(); +$branches = array('names' => array(), 'exclude' => false); + + +if ($op === '!=') { +$intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity()); +$branches = array('names' => array($constraint->getVersion()), 'exclude' => true); +} elseif ($op === '==') { +$branches['names'][] = $constraint->getVersion(); +} + +return array( +'numeric' => $intervals, +'branches' => $branches, +); +} + +if ($op[0] === '>') { +return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev()); +} +if ($op[0] === '<') { +return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev()); +} +if ($op === '!=') { + +return array('numeric' => array( +new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())), +new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity()), +), 'branches' => Interval::anyDev()); +} + + +return array('numeric' => array( +new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion())), +), 'branches' => Interval::noDev()); +} +} diff --git a/composer/vendor/composer/semver/src/Semver.php b/composer/vendor/composer/semver/src/Semver.php new file mode 100644 index 000000000..a051b6c7f --- /dev/null +++ b/composer/vendor/composer/semver/src/Semver.php @@ -0,0 +1,129 @@ +normalize($version)); +$parsedConstraints = $versionParser->parseConstraints($constraints); + +return $parsedConstraints->matches($provider); +} + + + + + + + + + +public static function satisfiedBy(array $versions, $constraints) +{ +$versions = array_filter($versions, function ($version) use ($constraints) { +return Semver::satisfies($version, $constraints); +}); + +return array_values($versions); +} + + + + + + + + +public static function sort(array $versions) +{ +return self::usort($versions, self::SORT_ASC); +} + + + + + + + + +public static function rsort(array $versions) +{ +return self::usort($versions, self::SORT_DESC); +} + + + + + + + +private static function usort(array $versions, $direction) +{ +if (null === self::$versionParser) { +self::$versionParser = new VersionParser(); +} + +$versionParser = self::$versionParser; +$normalized = array(); + + + +foreach ($versions as $key => $version) { +$normalizedVersion = $versionParser->normalize($version); +$normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); +$normalized[] = array($normalizedVersion, $key); +} + +usort($normalized, function (array $left, array $right) use ($direction) { +if ($left[0] === $right[0]) { +return 0; +} + +if (Comparator::lessThan($left[0], $right[0])) { +return -$direction; +} + +return $direction; +}); + + +$sorted = array(); +foreach ($normalized as $item) { +$sorted[] = $versions[$item[1]]; +} + +return $sorted; +} +} diff --git a/composer/vendor/composer/semver/src/VersionParser.php b/composer/vendor/composer/semver/src/VersionParser.php new file mode 100644 index 000000000..687e48d5e --- /dev/null +++ b/composer/vendor/composer/semver/src/VersionParser.php @@ -0,0 +1,586 @@ +expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? ltrim($matches[$index + 1], '.-') : ''); +} + +if (!empty($matches[$index + 2])) { +$version .= '-dev'; +} + +return $version; +} + + +if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { +try { +$normalized = $this->normalizeBranch($match[1]); + + + +if (strpos($normalized, 'dev-') === false) { +return $normalized; +} +} catch (\Exception $e) { +} +} + +$extraMessage = ''; +if (preg_match('{ +as +' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))?$}', $fullVersion)) { +$extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; +} elseif (preg_match('{^' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))? +as +}', $fullVersion)) { +$extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; +} + +throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage); +} + + + + + + + + +public function parseNumericAliasPrefix($branch) +{ +if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', (string) $branch, $matches)) { +return $matches['version'] . '.'; +} + +return false; +} + + + + + + + + +public function normalizeBranch($name) +{ +$name = trim((string) $name); + +if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) { +$version = ''; +for ($i = 1; $i < 5; ++$i) { +$version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; +} + +return str_replace('x', '9999999', $version) . '-dev'; +} + +return 'dev-' . $name; +} + + + + + + + + + + +public function normalizeDefaultBranch($name) +{ +if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') { +return '9999999-dev'; +} + +return (string) $name; +} + + + + + + + + +public function parseConstraints($constraints) +{ +$prettyConstraint = (string) $constraints; + +$orConstraints = preg_split('{\s*\|\|?\s*}', trim((string) $constraints)); +if (false === $orConstraints) { +throw new \RuntimeException('Failed to preg_split string: '.$constraints); +} +$orGroups = array(); + +foreach ($orConstraints as $constraints) { +$andConstraints = preg_split('{(?< ,]) *(? 1) { +$constraintObjects = array(); +foreach ($andConstraints as $constraint) { +foreach ($this->parseConstraint($constraint) as $parsedConstraint) { +$constraintObjects[] = $parsedConstraint; +} +} +} else { +$constraintObjects = $this->parseConstraint($andConstraints[0]); +} + +if (1 === \count($constraintObjects)) { +$constraint = $constraintObjects[0]; +} else { +$constraint = new MultiConstraint($constraintObjects); +} + +$orGroups[] = $constraint; +} + +$constraint = MultiConstraint::create($orGroups, false); + +$constraint->setPrettyString($prettyConstraint); + +return $constraint; +} + + + + + + + + + + +private function parseConstraint($constraint) +{ + +if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $constraint, $match)) { +$constraint = $match[1]; +} + + +if (preg_match('{^([^,\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) { +$constraint = '' !== $match[1] ? $match[1] : '*'; +if ($match[2] !== 'stable') { +$stabilityModifier = $match[2]; +} +} + + +if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraint, $match)) { +$constraint = $match[1]; +} + +if (preg_match('{^(v)?[xX*](\.[xX*])*$}i', $constraint, $match)) { +if (!empty($match[1]) || !empty($match[2])) { +return array(new Constraint('>=', '0.0.0.0-dev')); +} + +return array(new MatchAllConstraint()); +} + +$versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?(?:' . self::$modifierRegex . '|\.([xX*][.-]?dev))(?:\+[^\s]+)?'; + + + + + + +if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { +if (strpos($constraint, '~>') === 0) { +throw new \UnexpectedValueException( +'Could not parse version constraint ' . $constraint . ': ' . +'Invalid operator "~>", you probably meant to use the "~" operator' +); +} + + +if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { +$position = 4; +} elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { +$position = 3; +} elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { +$position = 2; +} else { +$position = 1; +} + + +if (!empty($matches[8])) { +$position++; +} + + +$stabilitySuffix = ''; +if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { +$stabilitySuffix .= '-dev'; +} + +$lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); +$lowerBound = new Constraint('>=', $lowVersion); + + + +$highPosition = max(1, $position - 1); +$highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; +$upperBound = new Constraint('<', $highVersion); + +return array( +$lowerBound, +$upperBound, +); +} + + + + + + +if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) { + +if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { +$position = 1; +} elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { +$position = 2; +} else { +$position = 3; +} + + +$stabilitySuffix = ''; +if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { +$stabilitySuffix .= '-dev'; +} + +$lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); +$lowerBound = new Constraint('>=', $lowVersion); + + + +$highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; +$upperBound = new Constraint('<', $highVersion); + +return array( +$lowerBound, +$upperBound, +); +} + + + + + +if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) { +if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { +$position = 3; +} elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { +$position = 2; +} else { +$position = 1; +} + +$lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; +$highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; + +if ($lowVersion === '0.0.0.0-dev') { +return array(new Constraint('<', $highVersion)); +} + +return array( +new Constraint('>=', $lowVersion), +new Constraint('<', $highVersion), +); +} + + + + + + + +if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { + +$lowStabilitySuffix = ''; +if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) { +$lowStabilitySuffix = '-dev'; +} + +$lowVersion = $this->normalize($matches['from']); +$lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); + +$empty = function ($x) { +return ($x === 0 || $x === '0') ? false : empty($x); +}; + +if ((!$empty($matches[12]) && !$empty($matches[13])) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) { +$highVersion = $this->normalize($matches['to']); +$upperBound = new Constraint('<=', $highVersion); +} else { +$highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]); + + +$this->normalize($matches['to']); + +$highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev'; +$upperBound = new Constraint('<', $highVersion); +} + +return array( +$lowerBound, +$upperBound, +); +} + + +if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) { +try { +try { +$version = $this->normalize($matches[2]); +} catch (\UnexpectedValueException $e) { + + +if (substr($matches[2], -4) === '-dev' && preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) { +$version = $this->normalize('dev-'.substr($matches[2], 0, -4)); +} else { +throw $e; +} +} + +$op = $matches[1] ?: '='; + +if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') { +$version .= '-' . $stabilityModifier; +} elseif ('<' === $op || '>=' === $op) { +if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) { +if (strpos($matches[2], 'dev-') !== 0) { +$version .= '-dev'; +} +} +} + +return array(new Constraint($matches[1] ?: '=', $version)); +} catch (\Exception $e) { +} +} + +$message = 'Could not parse version constraint ' . $constraint; +if (isset($e)) { +$message .= ': ' . $e->getMessage(); +} + +throw new \UnexpectedValueException($message); +} + + + + + + + + + + + + + + + +private function manipulateVersionString(array $matches, $position, $increment = 0, $pad = '0') +{ +for ($i = 4; $i > 0; --$i) { +if ($i > $position) { +$matches[$i] = $pad; +} elseif ($i === $position && $increment) { +$matches[$i] += $increment; + +if ($matches[$i] < 0) { +$matches[$i] = $pad; +--$position; + + +if ($i === 1) { +return null; +} +} +} +} + +return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; +} + + + + + + + + +private function expandStability($stability) +{ +$stability = strtolower($stability); + +switch ($stability) { +case 'a': +return 'alpha'; +case 'b': +return 'beta'; +case 'p': +case 'pl': +return 'patch'; +case 'rc': +return 'RC'; +default: +return $stability; +} +} +} diff --git a/composer/vendor/composer/spdx-licenses/LICENSE b/composer/vendor/composer/spdx-licenses/LICENSE new file mode 100644 index 000000000..851b1edcd --- /dev/null +++ b/composer/vendor/composer/spdx-licenses/LICENSE @@ -0,0 +1,21 @@ + +Copyright (C) 2015 Composer + +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/composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json b/composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json new file mode 100644 index 000000000..b9ac244c1 --- /dev/null +++ b/composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json @@ -0,0 +1,125 @@ +{ + "389-exception": [ + "389 Directory Server Exception" + ], + "Autoconf-exception-2.0": [ + "Autoconf exception 2.0" + ], + "Autoconf-exception-3.0": [ + "Autoconf exception 3.0" + ], + "Bison-exception-2.2": [ + "Bison exception 2.2" + ], + "Bootloader-exception": [ + "Bootloader Distribution Exception" + ], + "Classpath-exception-2.0": [ + "Classpath exception 2.0" + ], + "CLISP-exception-2.0": [ + "CLISP exception 2.0" + ], + "DigiRule-FOSS-exception": [ + "DigiRule FOSS License Exception" + ], + "eCos-exception-2.0": [ + "eCos exception 2.0" + ], + "Fawkes-Runtime-exception": [ + "Fawkes Runtime Exception" + ], + "FLTK-exception": [ + "FLTK exception" + ], + "Font-exception-2.0": [ + "Font exception 2.0" + ], + "freertos-exception-2.0": [ + "FreeRTOS Exception 2.0" + ], + "GCC-exception-2.0": [ + "GCC Runtime Library exception 2.0" + ], + "GCC-exception-3.1": [ + "GCC Runtime Library exception 3.1" + ], + "gnu-javamail-exception": [ + "GNU JavaMail exception" + ], + "GPL-3.0-linking-exception": [ + "GPL-3.0 Linking Exception" + ], + "GPL-3.0-linking-source-exception": [ + "GPL-3.0 Linking Exception (with Corresponding Source)" + ], + "GPL-CC-1.0": [ + "GPL Cooperation Commitment 1.0" + ], + "i2p-gpl-java-exception": [ + "i2p GPL+Java Exception" + ], + "LGPL-3.0-linking-exception": [ + "LGPL-3.0 Linking Exception" + ], + "Libtool-exception": [ + "Libtool Exception" + ], + "Linux-syscall-note": [ + "Linux Syscall Note" + ], + "LLVM-exception": [ + "LLVM Exception" + ], + "LZMA-exception": [ + "LZMA exception" + ], + "mif-exception": [ + "Macros and Inline Functions Exception" + ], + "Nokia-Qt-exception-1.1": [ + "Nokia Qt LGPL exception 1.1" + ], + "OCaml-LGPL-linking-exception": [ + "OCaml LGPL Linking Exception" + ], + "OCCT-exception-1.0": [ + "Open CASCADE Exception 1.0" + ], + "OpenJDK-assembly-exception-1.0": [ + "OpenJDK Assembly exception 1.0" + ], + "openvpn-openssl-exception": [ + "OpenVPN OpenSSL Exception" + ], + "PS-or-PDF-font-exception-20170817": [ + "PS/PDF font exception (2017-08-17)" + ], + "Qt-GPL-exception-1.0": [ + "Qt GPL exception 1.0" + ], + "Qt-LGPL-exception-1.1": [ + "Qt LGPL exception 1.1" + ], + "Qwt-exception-1.0": [ + "Qwt exception 1.0" + ], + "SHL-2.0": [ + "Solderpad Hardware License v2.0" + ], + "SHL-2.1": [ + "Solderpad Hardware License v2.1" + ], + "Swift-exception": [ + "Swift Exception" + ], + "u-boot-exception-2.0": [ + "U-Boot exception 2.0" + ], + "Universal-FOSS-exception-1.0": [ + "Universal FOSS Exception, Version 1.0" + ], + "WxWindows-exception-3.1": [ + "WxWindows Library Exception 3.1" + ] +} \ No newline at end of file diff --git a/composer/vendor/composer/spdx-licenses/res/spdx-licenses.json b/composer/vendor/composer/spdx-licenses/res/spdx-licenses.json new file mode 100644 index 000000000..6916b53b5 --- /dev/null +++ b/composer/vendor/composer/spdx-licenses/res/spdx-licenses.json @@ -0,0 +1,2447 @@ +{ + "0BSD": [ + "BSD Zero Clause License", + true, + false + ], + "AAL": [ + "Attribution Assurance License", + true, + false + ], + "Abstyles": [ + "Abstyles License", + false, + false + ], + "Adobe-2006": [ + "Adobe Systems Incorporated Source Code License Agreement", + false, + false + ], + "Adobe-Glyph": [ + "Adobe Glyph List License", + false, + false + ], + "ADSL": [ + "Amazon Digital Services License", + false, + false + ], + "AFL-1.1": [ + "Academic Free License v1.1", + true, + false + ], + "AFL-1.2": [ + "Academic Free License v1.2", + true, + false + ], + "AFL-2.0": [ + "Academic Free License v2.0", + true, + false + ], + "AFL-2.1": [ + "Academic Free License v2.1", + true, + false + ], + "AFL-3.0": [ + "Academic Free License v3.0", + true, + false + ], + "Afmparse": [ + "Afmparse License", + false, + false + ], + "AGPL-1.0": [ + "Affero General Public License v1.0", + false, + true + ], + "AGPL-1.0-only": [ + "Affero General Public License v1.0 only", + false, + false + ], + "AGPL-1.0-or-later": [ + "Affero General Public License v1.0 or later", + false, + false + ], + "AGPL-3.0": [ + "GNU Affero General Public License v3.0", + true, + true + ], + "AGPL-3.0-only": [ + "GNU Affero General Public License v3.0 only", + true, + false + ], + "AGPL-3.0-or-later": [ + "GNU Affero General Public License v3.0 or later", + true, + false + ], + "Aladdin": [ + "Aladdin Free Public License", + false, + false + ], + "AMDPLPA": [ + "AMD's plpa_map.c License", + false, + false + ], + "AML": [ + "Apple MIT License", + false, + false + ], + "AMPAS": [ + "Academy of Motion Picture Arts and Sciences BSD", + false, + false + ], + "ANTLR-PD": [ + "ANTLR Software Rights Notice", + false, + false + ], + "ANTLR-PD-fallback": [ + "ANTLR Software Rights Notice with license fallback", + false, + false + ], + "Apache-1.0": [ + "Apache License 1.0", + false, + false + ], + "Apache-1.1": [ + "Apache License 1.1", + true, + false + ], + "Apache-2.0": [ + "Apache License 2.0", + true, + false + ], + "APAFML": [ + "Adobe Postscript AFM License", + false, + false + ], + "APL-1.0": [ + "Adaptive Public License 1.0", + true, + false + ], + "App-s2p": [ + "App::s2p License", + false, + false + ], + "APSL-1.0": [ + "Apple Public Source License 1.0", + true, + false + ], + "APSL-1.1": [ + "Apple Public Source License 1.1", + true, + false + ], + "APSL-1.2": [ + "Apple Public Source License 1.2", + true, + false + ], + "APSL-2.0": [ + "Apple Public Source License 2.0", + true, + false + ], + "Arphic-1999": [ + "Arphic Public License", + false, + false + ], + "Artistic-1.0": [ + "Artistic License 1.0", + true, + false + ], + "Artistic-1.0-cl8": [ + "Artistic License 1.0 w/clause 8", + true, + false + ], + "Artistic-1.0-Perl": [ + "Artistic License 1.0 (Perl)", + true, + false + ], + "Artistic-2.0": [ + "Artistic License 2.0", + true, + false + ], + "Baekmuk": [ + "Baekmuk License", + false, + false + ], + "Bahyph": [ + "Bahyph License", + false, + false + ], + "Barr": [ + "Barr License", + false, + false + ], + "Beerware": [ + "Beerware License", + false, + false + ], + "Bitstream-Vera": [ + "Bitstream Vera Font License", + false, + false + ], + "BitTorrent-1.0": [ + "BitTorrent Open Source License v1.0", + false, + false + ], + "BitTorrent-1.1": [ + "BitTorrent Open Source License v1.1", + false, + false + ], + "blessing": [ + "SQLite Blessing", + false, + false + ], + "BlueOak-1.0.0": [ + "Blue Oak Model License 1.0.0", + false, + false + ], + "Borceux": [ + "Borceux license", + false, + false + ], + "BSD-1-Clause": [ + "BSD 1-Clause License", + true, + false + ], + "BSD-2-Clause": [ + "BSD 2-Clause \"Simplified\" License", + true, + false + ], + "BSD-2-Clause-FreeBSD": [ + "BSD 2-Clause FreeBSD License", + false, + true + ], + "BSD-2-Clause-NetBSD": [ + "BSD 2-Clause NetBSD License", + false, + true + ], + "BSD-2-Clause-Patent": [ + "BSD-2-Clause Plus Patent License", + true, + false + ], + "BSD-2-Clause-Views": [ + "BSD 2-Clause with views sentence", + false, + false + ], + "BSD-3-Clause": [ + "BSD 3-Clause \"New\" or \"Revised\" License", + true, + false + ], + "BSD-3-Clause-Attribution": [ + "BSD with attribution", + false, + false + ], + "BSD-3-Clause-Clear": [ + "BSD 3-Clause Clear License", + false, + false + ], + "BSD-3-Clause-LBNL": [ + "Lawrence Berkeley National Labs BSD variant license", + true, + false + ], + "BSD-3-Clause-Modification": [ + "BSD 3-Clause Modification", + false, + false + ], + "BSD-3-Clause-No-Military-License": [ + "BSD 3-Clause No Military License", + false, + false + ], + "BSD-3-Clause-No-Nuclear-License": [ + "BSD 3-Clause No Nuclear License", + false, + false + ], + "BSD-3-Clause-No-Nuclear-License-2014": [ + "BSD 3-Clause No Nuclear License 2014", + false, + false + ], + "BSD-3-Clause-No-Nuclear-Warranty": [ + "BSD 3-Clause No Nuclear Warranty", + false, + false + ], + "BSD-3-Clause-Open-MPI": [ + "BSD 3-Clause Open MPI variant", + false, + false + ], + "BSD-4-Clause": [ + "BSD 4-Clause \"Original\" or \"Old\" License", + false, + false + ], + "BSD-4-Clause-Shortened": [ + "BSD 4 Clause Shortened", + false, + false + ], + "BSD-4-Clause-UC": [ + "BSD-4-Clause (University of California-Specific)", + false, + false + ], + "BSD-Protection": [ + "BSD Protection License", + false, + false + ], + "BSD-Source-Code": [ + "BSD Source Code Attribution", + false, + false + ], + "BSL-1.0": [ + "Boost Software License 1.0", + true, + false + ], + "BUSL-1.1": [ + "Business Source License 1.1", + false, + false + ], + "bzip2-1.0.5": [ + "bzip2 and libbzip2 License v1.0.5", + false, + true + ], + "bzip2-1.0.6": [ + "bzip2 and libbzip2 License v1.0.6", + false, + false + ], + "C-UDA-1.0": [ + "Computational Use of Data Agreement v1.0", + false, + false + ], + "CAL-1.0": [ + "Cryptographic Autonomy License 1.0", + true, + false + ], + "CAL-1.0-Combined-Work-Exception": [ + "Cryptographic Autonomy License 1.0 (Combined Work Exception)", + true, + false + ], + "Caldera": [ + "Caldera License", + false, + false + ], + "CATOSL-1.1": [ + "Computer Associates Trusted Open Source License 1.1", + true, + false + ], + "CC-BY-1.0": [ + "Creative Commons Attribution 1.0 Generic", + false, + false + ], + "CC-BY-2.0": [ + "Creative Commons Attribution 2.0 Generic", + false, + false + ], + "CC-BY-2.5": [ + "Creative Commons Attribution 2.5 Generic", + false, + false + ], + "CC-BY-2.5-AU": [ + "Creative Commons Attribution 2.5 Australia", + false, + false + ], + "CC-BY-3.0": [ + "Creative Commons Attribution 3.0 Unported", + false, + false + ], + "CC-BY-3.0-AT": [ + "Creative Commons Attribution 3.0 Austria", + false, + false + ], + "CC-BY-3.0-DE": [ + "Creative Commons Attribution 3.0 Germany", + false, + false + ], + "CC-BY-3.0-NL": [ + "Creative Commons Attribution 3.0 Netherlands", + false, + false + ], + "CC-BY-3.0-US": [ + "Creative Commons Attribution 3.0 United States", + false, + false + ], + "CC-BY-4.0": [ + "Creative Commons Attribution 4.0 International", + false, + false + ], + "CC-BY-NC-1.0": [ + "Creative Commons Attribution Non Commercial 1.0 Generic", + false, + false + ], + "CC-BY-NC-2.0": [ + "Creative Commons Attribution Non Commercial 2.0 Generic", + false, + false + ], + "CC-BY-NC-2.5": [ + "Creative Commons Attribution Non Commercial 2.5 Generic", + false, + false + ], + "CC-BY-NC-3.0": [ + "Creative Commons Attribution Non Commercial 3.0 Unported", + false, + false + ], + "CC-BY-NC-3.0-DE": [ + "Creative Commons Attribution Non Commercial 3.0 Germany", + false, + false + ], + "CC-BY-NC-4.0": [ + "Creative Commons Attribution Non Commercial 4.0 International", + false, + false + ], + "CC-BY-NC-ND-1.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + false, + false + ], + "CC-BY-NC-ND-2.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + false, + false + ], + "CC-BY-NC-ND-2.5": [ + "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + false, + false + ], + "CC-BY-NC-ND-3.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + false, + false + ], + "CC-BY-NC-ND-3.0-DE": [ + "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", + false, + false + ], + "CC-BY-NC-ND-3.0-IGO": [ + "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", + false, + false + ], + "CC-BY-NC-ND-4.0": [ + "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + false, + false + ], + "CC-BY-NC-SA-1.0": [ + "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + false, + false + ], + "CC-BY-NC-SA-2.0": [ + "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + false, + false + ], + "CC-BY-NC-SA-2.0-FR": [ + "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", + false, + false + ], + "CC-BY-NC-SA-2.0-UK": [ + "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", + false, + false + ], + "CC-BY-NC-SA-2.5": [ + "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + false, + false + ], + "CC-BY-NC-SA-3.0": [ + "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + false, + false + ], + "CC-BY-NC-SA-3.0-DE": [ + "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", + false, + false + ], + "CC-BY-NC-SA-3.0-IGO": [ + "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", + false, + false + ], + "CC-BY-NC-SA-4.0": [ + "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + false, + false + ], + "CC-BY-ND-1.0": [ + "Creative Commons Attribution No Derivatives 1.0 Generic", + false, + false + ], + "CC-BY-ND-2.0": [ + "Creative Commons Attribution No Derivatives 2.0 Generic", + false, + false + ], + "CC-BY-ND-2.5": [ + "Creative Commons Attribution No Derivatives 2.5 Generic", + false, + false + ], + "CC-BY-ND-3.0": [ + "Creative Commons Attribution No Derivatives 3.0 Unported", + false, + false + ], + "CC-BY-ND-3.0-DE": [ + "Creative Commons Attribution No Derivatives 3.0 Germany", + false, + false + ], + "CC-BY-ND-4.0": [ + "Creative Commons Attribution No Derivatives 4.0 International", + false, + false + ], + "CC-BY-SA-1.0": [ + "Creative Commons Attribution Share Alike 1.0 Generic", + false, + false + ], + "CC-BY-SA-2.0": [ + "Creative Commons Attribution Share Alike 2.0 Generic", + false, + false + ], + "CC-BY-SA-2.0-UK": [ + "Creative Commons Attribution Share Alike 2.0 England and Wales", + false, + false + ], + "CC-BY-SA-2.1-JP": [ + "Creative Commons Attribution Share Alike 2.1 Japan", + false, + false + ], + "CC-BY-SA-2.5": [ + "Creative Commons Attribution Share Alike 2.5 Generic", + false, + false + ], + "CC-BY-SA-3.0": [ + "Creative Commons Attribution Share Alike 3.0 Unported", + false, + false + ], + "CC-BY-SA-3.0-AT": [ + "Creative Commons Attribution Share Alike 3.0 Austria", + false, + false + ], + "CC-BY-SA-3.0-DE": [ + "Creative Commons Attribution Share Alike 3.0 Germany", + false, + false + ], + "CC-BY-SA-4.0": [ + "Creative Commons Attribution Share Alike 4.0 International", + false, + false + ], + "CC-PDDC": [ + "Creative Commons Public Domain Dedication and Certification", + false, + false + ], + "CC0-1.0": [ + "Creative Commons Zero v1.0 Universal", + false, + false + ], + "CDDL-1.0": [ + "Common Development and Distribution License 1.0", + true, + false + ], + "CDDL-1.1": [ + "Common Development and Distribution License 1.1", + false, + false + ], + "CDL-1.0": [ + "Common Documentation License 1.0", + false, + false + ], + "CDLA-Permissive-1.0": [ + "Community Data License Agreement Permissive 1.0", + false, + false + ], + "CDLA-Permissive-2.0": [ + "Community Data License Agreement Permissive 2.0", + false, + false + ], + "CDLA-Sharing-1.0": [ + "Community Data License Agreement Sharing 1.0", + false, + false + ], + "CECILL-1.0": [ + "CeCILL Free Software License Agreement v1.0", + false, + false + ], + "CECILL-1.1": [ + "CeCILL Free Software License Agreement v1.1", + false, + false + ], + "CECILL-2.0": [ + "CeCILL Free Software License Agreement v2.0", + false, + false + ], + "CECILL-2.1": [ + "CeCILL Free Software License Agreement v2.1", + true, + false + ], + "CECILL-B": [ + "CeCILL-B Free Software License Agreement", + false, + false + ], + "CECILL-C": [ + "CeCILL-C Free Software License Agreement", + false, + false + ], + "CERN-OHL-1.1": [ + "CERN Open Hardware Licence v1.1", + false, + false + ], + "CERN-OHL-1.2": [ + "CERN Open Hardware Licence v1.2", + false, + false + ], + "CERN-OHL-P-2.0": [ + "CERN Open Hardware Licence Version 2 - Permissive", + true, + false + ], + "CERN-OHL-S-2.0": [ + "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", + true, + false + ], + "CERN-OHL-W-2.0": [ + "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", + true, + false + ], + "ClArtistic": [ + "Clarified Artistic License", + false, + false + ], + "CNRI-Jython": [ + "CNRI Jython License", + false, + false + ], + "CNRI-Python": [ + "CNRI Python License", + true, + false + ], + "CNRI-Python-GPL-Compatible": [ + "CNRI Python Open Source GPL Compatible License Agreement", + false, + false + ], + "COIL-1.0": [ + "Copyfree Open Innovation License", + false, + false + ], + "Community-Spec-1.0": [ + "Community Specification License 1.0", + false, + false + ], + "Condor-1.1": [ + "Condor Public License v1.1", + false, + false + ], + "copyleft-next-0.3.0": [ + "copyleft-next 0.3.0", + false, + false + ], + "copyleft-next-0.3.1": [ + "copyleft-next 0.3.1", + false, + false + ], + "CPAL-1.0": [ + "Common Public Attribution License 1.0", + true, + false + ], + "CPL-1.0": [ + "Common Public License 1.0", + true, + false + ], + "CPOL-1.02": [ + "Code Project Open License 1.02", + false, + false + ], + "Crossword": [ + "Crossword License", + false, + false + ], + "CrystalStacker": [ + "CrystalStacker License", + false, + false + ], + "CUA-OPL-1.0": [ + "CUA Office Public License v1.0", + true, + false + ], + "Cube": [ + "Cube License", + false, + false + ], + "curl": [ + "curl License", + false, + false + ], + "D-FSL-1.0": [ + "Deutsche Freie Software Lizenz", + false, + false + ], + "diffmark": [ + "diffmark license", + false, + false + ], + "DL-DE-BY-2.0": [ + "Data licence Germany \u2013 attribution \u2013 version 2.0", + false, + false + ], + "DOC": [ + "DOC License", + false, + false + ], + "Dotseqn": [ + "Dotseqn License", + false, + false + ], + "DRL-1.0": [ + "Detection Rule License 1.0", + false, + false + ], + "DSDP": [ + "DSDP License", + false, + false + ], + "dvipdfm": [ + "dvipdfm License", + false, + false + ], + "ECL-1.0": [ + "Educational Community License v1.0", + true, + false + ], + "ECL-2.0": [ + "Educational Community License v2.0", + true, + false + ], + "eCos-2.0": [ + "eCos license version 2.0", + false, + true + ], + "EFL-1.0": [ + "Eiffel Forum License v1.0", + true, + false + ], + "EFL-2.0": [ + "Eiffel Forum License v2.0", + true, + false + ], + "eGenix": [ + "eGenix.com Public License 1.1.0", + false, + false + ], + "Elastic-2.0": [ + "Elastic License 2.0", + false, + false + ], + "Entessa": [ + "Entessa Public License v1.0", + true, + false + ], + "EPICS": [ + "EPICS Open License", + false, + false + ], + "EPL-1.0": [ + "Eclipse Public License 1.0", + true, + false + ], + "EPL-2.0": [ + "Eclipse Public License 2.0", + true, + false + ], + "ErlPL-1.1": [ + "Erlang Public License v1.1", + false, + false + ], + "etalab-2.0": [ + "Etalab Open License 2.0", + false, + false + ], + "EUDatagrid": [ + "EU DataGrid Software License", + true, + false + ], + "EUPL-1.0": [ + "European Union Public License 1.0", + false, + false + ], + "EUPL-1.1": [ + "European Union Public License 1.1", + true, + false + ], + "EUPL-1.2": [ + "European Union Public License 1.2", + true, + false + ], + "Eurosym": [ + "Eurosym License", + false, + false + ], + "Fair": [ + "Fair License", + true, + false + ], + "FDK-AAC": [ + "Fraunhofer FDK AAC Codec Library", + false, + false + ], + "Frameworx-1.0": [ + "Frameworx Open License 1.0", + true, + false + ], + "FreeBSD-DOC": [ + "FreeBSD Documentation License", + false, + false + ], + "FreeImage": [ + "FreeImage Public License v1.0", + false, + false + ], + "FSFAP": [ + "FSF All Permissive License", + false, + false + ], + "FSFUL": [ + "FSF Unlimited License", + false, + false + ], + "FSFULLR": [ + "FSF Unlimited License (with License Retention)", + false, + false + ], + "FTL": [ + "Freetype Project License", + false, + false + ], + "GD": [ + "GD License", + false, + false + ], + "GFDL-1.1": [ + "GNU Free Documentation License v1.1", + false, + true + ], + "GFDL-1.1-invariants-only": [ + "GNU Free Documentation License v1.1 only - invariants", + false, + false + ], + "GFDL-1.1-invariants-or-later": [ + "GNU Free Documentation License v1.1 or later - invariants", + false, + false + ], + "GFDL-1.1-no-invariants-only": [ + "GNU Free Documentation License v1.1 only - no invariants", + false, + false + ], + "GFDL-1.1-no-invariants-or-later": [ + "GNU Free Documentation License v1.1 or later - no invariants", + false, + false + ], + "GFDL-1.1-only": [ + "GNU Free Documentation License v1.1 only", + false, + false + ], + "GFDL-1.1-or-later": [ + "GNU Free Documentation License v1.1 or later", + false, + false + ], + "GFDL-1.2": [ + "GNU Free Documentation License v1.2", + false, + true + ], + "GFDL-1.2-invariants-only": [ + "GNU Free Documentation License v1.2 only - invariants", + false, + false + ], + "GFDL-1.2-invariants-or-later": [ + "GNU Free Documentation License v1.2 or later - invariants", + false, + false + ], + "GFDL-1.2-no-invariants-only": [ + "GNU Free Documentation License v1.2 only - no invariants", + false, + false + ], + "GFDL-1.2-no-invariants-or-later": [ + "GNU Free Documentation License v1.2 or later - no invariants", + false, + false + ], + "GFDL-1.2-only": [ + "GNU Free Documentation License v1.2 only", + false, + false + ], + "GFDL-1.2-or-later": [ + "GNU Free Documentation License v1.2 or later", + false, + false + ], + "GFDL-1.3": [ + "GNU Free Documentation License v1.3", + false, + true + ], + "GFDL-1.3-invariants-only": [ + "GNU Free Documentation License v1.3 only - invariants", + false, + false + ], + "GFDL-1.3-invariants-or-later": [ + "GNU Free Documentation License v1.3 or later - invariants", + false, + false + ], + "GFDL-1.3-no-invariants-only": [ + "GNU Free Documentation License v1.3 only - no invariants", + false, + false + ], + "GFDL-1.3-no-invariants-or-later": [ + "GNU Free Documentation License v1.3 or later - no invariants", + false, + false + ], + "GFDL-1.3-only": [ + "GNU Free Documentation License v1.3 only", + false, + false + ], + "GFDL-1.3-or-later": [ + "GNU Free Documentation License v1.3 or later", + false, + false + ], + "Giftware": [ + "Giftware License", + false, + false + ], + "GL2PS": [ + "GL2PS License", + false, + false + ], + "Glide": [ + "3dfx Glide License", + false, + false + ], + "Glulxe": [ + "Glulxe License", + false, + false + ], + "GLWTPL": [ + "Good Luck With That Public License", + false, + false + ], + "gnuplot": [ + "gnuplot License", + false, + false + ], + "GPL-1.0": [ + "GNU General Public License v1.0 only", + false, + true + ], + "GPL-1.0+": [ + "GNU General Public License v1.0 or later", + false, + true + ], + "GPL-1.0-only": [ + "GNU General Public License v1.0 only", + false, + false + ], + "GPL-1.0-or-later": [ + "GNU General Public License v1.0 or later", + false, + false + ], + "GPL-2.0": [ + "GNU General Public License v2.0 only", + true, + true + ], + "GPL-2.0+": [ + "GNU General Public License v2.0 or later", + true, + true + ], + "GPL-2.0-only": [ + "GNU General Public License v2.0 only", + true, + false + ], + "GPL-2.0-or-later": [ + "GNU General Public License v2.0 or later", + true, + false + ], + "GPL-2.0-with-autoconf-exception": [ + "GNU General Public License v2.0 w/Autoconf exception", + false, + true + ], + "GPL-2.0-with-bison-exception": [ + "GNU General Public License v2.0 w/Bison exception", + false, + true + ], + "GPL-2.0-with-classpath-exception": [ + "GNU General Public License v2.0 w/Classpath exception", + false, + true + ], + "GPL-2.0-with-font-exception": [ + "GNU General Public License v2.0 w/Font exception", + false, + true + ], + "GPL-2.0-with-GCC-exception": [ + "GNU General Public License v2.0 w/GCC Runtime Library exception", + false, + true + ], + "GPL-3.0": [ + "GNU General Public License v3.0 only", + true, + true + ], + "GPL-3.0+": [ + "GNU General Public License v3.0 or later", + true, + true + ], + "GPL-3.0-only": [ + "GNU General Public License v3.0 only", + true, + false + ], + "GPL-3.0-or-later": [ + "GNU General Public License v3.0 or later", + true, + false + ], + "GPL-3.0-with-autoconf-exception": [ + "GNU General Public License v3.0 w/Autoconf exception", + false, + true + ], + "GPL-3.0-with-GCC-exception": [ + "GNU General Public License v3.0 w/GCC Runtime Library exception", + true, + true + ], + "gSOAP-1.3b": [ + "gSOAP Public License v1.3b", + false, + false + ], + "HaskellReport": [ + "Haskell Language Report License", + false, + false + ], + "Hippocratic-2.1": [ + "Hippocratic License 2.1", + false, + false + ], + "HPND": [ + "Historical Permission Notice and Disclaimer", + true, + false + ], + "HPND-sell-variant": [ + "Historical Permission Notice and Disclaimer - sell variant", + false, + false + ], + "HTMLTIDY": [ + "HTML Tidy License", + false, + false + ], + "IBM-pibs": [ + "IBM PowerPC Initialization and Boot Software", + false, + false + ], + "ICU": [ + "ICU License", + false, + false + ], + "IJG": [ + "Independent JPEG Group License", + false, + false + ], + "ImageMagick": [ + "ImageMagick License", + false, + false + ], + "iMatix": [ + "iMatix Standard Function Library Agreement", + false, + false + ], + "Imlib2": [ + "Imlib2 License", + false, + false + ], + "Info-ZIP": [ + "Info-ZIP License", + false, + false + ], + "Intel": [ + "Intel Open Source License", + true, + false + ], + "Intel-ACPI": [ + "Intel ACPI Software License Agreement", + false, + false + ], + "Interbase-1.0": [ + "Interbase Public License v1.0", + false, + false + ], + "IPA": [ + "IPA Font License", + true, + false + ], + "IPL-1.0": [ + "IBM Public License v1.0", + true, + false + ], + "ISC": [ + "ISC License", + true, + false + ], + "Jam": [ + "Jam License", + true, + false + ], + "JasPer-2.0": [ + "JasPer License", + false, + false + ], + "JPNIC": [ + "Japan Network Information Center License", + false, + false + ], + "JSON": [ + "JSON License", + false, + false + ], + "KiCad-libraries-exception": [ + "KiCad Libraries Exception", + false, + false + ], + "LAL-1.2": [ + "Licence Art Libre 1.2", + false, + false + ], + "LAL-1.3": [ + "Licence Art Libre 1.3", + false, + false + ], + "Latex2e": [ + "Latex2e License", + false, + false + ], + "Leptonica": [ + "Leptonica License", + false, + false + ], + "LGPL-2.0": [ + "GNU Library General Public License v2 only", + true, + true + ], + "LGPL-2.0+": [ + "GNU Library General Public License v2 or later", + true, + true + ], + "LGPL-2.0-only": [ + "GNU Library General Public License v2 only", + true, + false + ], + "LGPL-2.0-or-later": [ + "GNU Library General Public License v2 or later", + true, + false + ], + "LGPL-2.1": [ + "GNU Lesser General Public License v2.1 only", + true, + true + ], + "LGPL-2.1+": [ + "GNU Library General Public License v2.1 or later", + true, + true + ], + "LGPL-2.1-only": [ + "GNU Lesser General Public License v2.1 only", + true, + false + ], + "LGPL-2.1-or-later": [ + "GNU Lesser General Public License v2.1 or later", + true, + false + ], + "LGPL-3.0": [ + "GNU Lesser General Public License v3.0 only", + true, + true + ], + "LGPL-3.0+": [ + "GNU Lesser General Public License v3.0 or later", + true, + true + ], + "LGPL-3.0-only": [ + "GNU Lesser General Public License v3.0 only", + true, + false + ], + "LGPL-3.0-or-later": [ + "GNU Lesser General Public License v3.0 or later", + true, + false + ], + "LGPLLR": [ + "Lesser General Public License For Linguistic Resources", + false, + false + ], + "Libpng": [ + "libpng License", + false, + false + ], + "libpng-2.0": [ + "PNG Reference Library version 2", + false, + false + ], + "libselinux-1.0": [ + "libselinux public domain notice", + false, + false + ], + "libtiff": [ + "libtiff License", + false, + false + ], + "LiLiQ-P-1.1": [ + "Licence Libre du Qu\u00e9bec \u2013 Permissive version 1.1", + true, + false + ], + "LiLiQ-R-1.1": [ + "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 version 1.1", + true, + false + ], + "LiLiQ-Rplus-1.1": [ + "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 forte version 1.1", + true, + false + ], + "Linux-man-pages-copyleft": [ + "Linux man-pages Copyleft", + false, + false + ], + "Linux-OpenIB": [ + "Linux Kernel Variant of OpenIB.org license", + false, + false + ], + "LPL-1.0": [ + "Lucent Public License Version 1.0", + true, + false + ], + "LPL-1.02": [ + "Lucent Public License v1.02", + true, + false + ], + "LPPL-1.0": [ + "LaTeX Project Public License v1.0", + false, + false + ], + "LPPL-1.1": [ + "LaTeX Project Public License v1.1", + false, + false + ], + "LPPL-1.2": [ + "LaTeX Project Public License v1.2", + false, + false + ], + "LPPL-1.3a": [ + "LaTeX Project Public License v1.3a", + false, + false + ], + "LPPL-1.3c": [ + "LaTeX Project Public License v1.3c", + true, + false + ], + "MakeIndex": [ + "MakeIndex License", + false, + false + ], + "MirOS": [ + "The MirOS Licence", + true, + false + ], + "MIT": [ + "MIT License", + true, + false + ], + "MIT-0": [ + "MIT No Attribution", + true, + false + ], + "MIT-advertising": [ + "Enlightenment License (e16)", + false, + false + ], + "MIT-CMU": [ + "CMU License", + false, + false + ], + "MIT-enna": [ + "enna License", + false, + false + ], + "MIT-feh": [ + "feh License", + false, + false + ], + "MIT-Modern-Variant": [ + "MIT License Modern Variant", + true, + false + ], + "MIT-open-group": [ + "MIT Open Group variant", + false, + false + ], + "MITNFA": [ + "MIT +no-false-attribs license", + false, + false + ], + "Motosoto": [ + "Motosoto License", + true, + false + ], + "mpich2": [ + "mpich2 License", + false, + false + ], + "MPL-1.0": [ + "Mozilla Public License 1.0", + true, + false + ], + "MPL-1.1": [ + "Mozilla Public License 1.1", + true, + false + ], + "MPL-2.0": [ + "Mozilla Public License 2.0", + true, + false + ], + "MPL-2.0-no-copyleft-exception": [ + "Mozilla Public License 2.0 (no copyleft exception)", + true, + false + ], + "mplus": [ + "mplus Font License", + false, + false + ], + "MS-PL": [ + "Microsoft Public License", + true, + false + ], + "MS-RL": [ + "Microsoft Reciprocal License", + true, + false + ], + "MTLL": [ + "Matrix Template Library License", + false, + false + ], + "MulanPSL-1.0": [ + "Mulan Permissive Software License, Version 1", + false, + false + ], + "MulanPSL-2.0": [ + "Mulan Permissive Software License, Version 2", + true, + false + ], + "Multics": [ + "Multics License", + true, + false + ], + "Mup": [ + "Mup License", + false, + false + ], + "NAIST-2003": [ + "Nara Institute of Science and Technology License (2003)", + false, + false + ], + "NASA-1.3": [ + "NASA Open Source Agreement 1.3", + true, + false + ], + "Naumen": [ + "Naumen Public License", + true, + false + ], + "NBPL-1.0": [ + "Net Boolean Public License v1", + false, + false + ], + "NCGL-UK-2.0": [ + "Non-Commercial Government Licence", + false, + false + ], + "NCSA": [ + "University of Illinois/NCSA Open Source License", + true, + false + ], + "Net-SNMP": [ + "Net-SNMP License", + false, + false + ], + "NetCDF": [ + "NetCDF license", + false, + false + ], + "Newsletr": [ + "Newsletr License", + false, + false + ], + "NGPL": [ + "Nethack General Public License", + true, + false + ], + "NIST-PD": [ + "NIST Public Domain Notice", + false, + false + ], + "NIST-PD-fallback": [ + "NIST Public Domain Notice with license fallback", + false, + false + ], + "NLOD-1.0": [ + "Norwegian Licence for Open Government Data (NLOD) 1.0", + false, + false + ], + "NLOD-2.0": [ + "Norwegian Licence for Open Government Data (NLOD) 2.0", + false, + false + ], + "NLPL": [ + "No Limit Public License", + false, + false + ], + "Nokia": [ + "Nokia Open Source License", + true, + false + ], + "NOSL": [ + "Netizen Open Source License", + false, + false + ], + "Noweb": [ + "Noweb License", + false, + false + ], + "NPL-1.0": [ + "Netscape Public License v1.0", + false, + false + ], + "NPL-1.1": [ + "Netscape Public License v1.1", + false, + false + ], + "NPOSL-3.0": [ + "Non-Profit Open Software License 3.0", + true, + false + ], + "NRL": [ + "NRL License", + false, + false + ], + "NTP": [ + "NTP License", + true, + false + ], + "NTP-0": [ + "NTP No Attribution", + false, + false + ], + "Nunit": [ + "Nunit License", + false, + true + ], + "O-UDA-1.0": [ + "Open Use of Data Agreement v1.0", + false, + false + ], + "OCCT-PL": [ + "Open CASCADE Technology Public License", + false, + false + ], + "OCLC-2.0": [ + "OCLC Research Public License 2.0", + true, + false + ], + "ODbL-1.0": [ + "Open Data Commons Open Database License v1.0", + false, + false + ], + "ODC-By-1.0": [ + "Open Data Commons Attribution License v1.0", + false, + false + ], + "OFL-1.0": [ + "SIL Open Font License 1.0", + false, + false + ], + "OFL-1.0-no-RFN": [ + "SIL Open Font License 1.0 with no Reserved Font Name", + false, + false + ], + "OFL-1.0-RFN": [ + "SIL Open Font License 1.0 with Reserved Font Name", + false, + false + ], + "OFL-1.1": [ + "SIL Open Font License 1.1", + true, + false + ], + "OFL-1.1-no-RFN": [ + "SIL Open Font License 1.1 with no Reserved Font Name", + true, + false + ], + "OFL-1.1-RFN": [ + "SIL Open Font License 1.1 with Reserved Font Name", + true, + false + ], + "OGC-1.0": [ + "OGC Software License, Version 1.0", + false, + false + ], + "OGDL-Taiwan-1.0": [ + "Taiwan Open Government Data License, version 1.0", + false, + false + ], + "OGL-Canada-2.0": [ + "Open Government Licence - Canada", + false, + false + ], + "OGL-UK-1.0": [ + "Open Government Licence v1.0", + false, + false + ], + "OGL-UK-2.0": [ + "Open Government Licence v2.0", + false, + false + ], + "OGL-UK-3.0": [ + "Open Government Licence v3.0", + false, + false + ], + "OGTSL": [ + "Open Group Test Suite License", + true, + false + ], + "OLDAP-1.1": [ + "Open LDAP Public License v1.1", + false, + false + ], + "OLDAP-1.2": [ + "Open LDAP Public License v1.2", + false, + false + ], + "OLDAP-1.3": [ + "Open LDAP Public License v1.3", + false, + false + ], + "OLDAP-1.4": [ + "Open LDAP Public License v1.4", + false, + false + ], + "OLDAP-2.0": [ + "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + false, + false + ], + "OLDAP-2.0.1": [ + "Open LDAP Public License v2.0.1", + false, + false + ], + "OLDAP-2.1": [ + "Open LDAP Public License v2.1", + false, + false + ], + "OLDAP-2.2": [ + "Open LDAP Public License v2.2", + false, + false + ], + "OLDAP-2.2.1": [ + "Open LDAP Public License v2.2.1", + false, + false + ], + "OLDAP-2.2.2": [ + "Open LDAP Public License 2.2.2", + false, + false + ], + "OLDAP-2.3": [ + "Open LDAP Public License v2.3", + false, + false + ], + "OLDAP-2.4": [ + "Open LDAP Public License v2.4", + false, + false + ], + "OLDAP-2.5": [ + "Open LDAP Public License v2.5", + false, + false + ], + "OLDAP-2.6": [ + "Open LDAP Public License v2.6", + false, + false + ], + "OLDAP-2.7": [ + "Open LDAP Public License v2.7", + false, + false + ], + "OLDAP-2.8": [ + "Open LDAP Public License v2.8", + true, + false + ], + "OML": [ + "Open Market License", + false, + false + ], + "OpenSSL": [ + "OpenSSL License", + false, + false + ], + "OPL-1.0": [ + "Open Public License v1.0", + false, + false + ], + "OPUBL-1.0": [ + "Open Publication License v1.0", + false, + false + ], + "OSET-PL-2.1": [ + "OSET Public License version 2.1", + true, + false + ], + "OSL-1.0": [ + "Open Software License 1.0", + true, + false + ], + "OSL-1.1": [ + "Open Software License 1.1", + false, + false + ], + "OSL-2.0": [ + "Open Software License 2.0", + true, + false + ], + "OSL-2.1": [ + "Open Software License 2.1", + true, + false + ], + "OSL-3.0": [ + "Open Software License 3.0", + true, + false + ], + "Parity-6.0.0": [ + "The Parity Public License 6.0.0", + false, + false + ], + "Parity-7.0.0": [ + "The Parity Public License 7.0.0", + false, + false + ], + "PDDL-1.0": [ + "Open Data Commons Public Domain Dedication & License 1.0", + false, + false + ], + "PHP-3.0": [ + "PHP License v3.0", + true, + false + ], + "PHP-3.01": [ + "PHP License v3.01", + true, + false + ], + "Plexus": [ + "Plexus Classworlds License", + false, + false + ], + "PolyForm-Noncommercial-1.0.0": [ + "PolyForm Noncommercial License 1.0.0", + false, + false + ], + "PolyForm-Small-Business-1.0.0": [ + "PolyForm Small Business License 1.0.0", + false, + false + ], + "PostgreSQL": [ + "PostgreSQL License", + true, + false + ], + "PSF-2.0": [ + "Python Software Foundation License 2.0", + false, + false + ], + "psfrag": [ + "psfrag License", + false, + false + ], + "psutils": [ + "psutils License", + false, + false + ], + "Python-2.0": [ + "Python License 2.0", + true, + false + ], + "Qhull": [ + "Qhull License", + false, + false + ], + "QPL-1.0": [ + "Q Public License 1.0", + true, + false + ], + "Rdisc": [ + "Rdisc License", + false, + false + ], + "RHeCos-1.1": [ + "Red Hat eCos Public License v1.1", + false, + false + ], + "RPL-1.1": [ + "Reciprocal Public License 1.1", + true, + false + ], + "RPL-1.5": [ + "Reciprocal Public License 1.5", + true, + false + ], + "RPSL-1.0": [ + "RealNetworks Public Source License v1.0", + true, + false + ], + "RSA-MD": [ + "RSA Message-Digest License", + false, + false + ], + "RSCPL": [ + "Ricoh Source Code Public License", + true, + false + ], + "Ruby": [ + "Ruby License", + false, + false + ], + "SAX-PD": [ + "Sax Public Domain Notice", + false, + false + ], + "Saxpath": [ + "Saxpath License", + false, + false + ], + "SCEA": [ + "SCEA Shared Source License", + false, + false + ], + "SchemeReport": [ + "Scheme Language Report License", + false, + false + ], + "Sendmail": [ + "Sendmail License", + false, + false + ], + "Sendmail-8.23": [ + "Sendmail License 8.23", + false, + false + ], + "SGI-B-1.0": [ + "SGI Free Software License B v1.0", + false, + false + ], + "SGI-B-1.1": [ + "SGI Free Software License B v1.1", + false, + false + ], + "SGI-B-2.0": [ + "SGI Free Software License B v2.0", + false, + false + ], + "SHL-0.5": [ + "Solderpad Hardware License v0.5", + false, + false + ], + "SHL-0.51": [ + "Solderpad Hardware License, Version 0.51", + false, + false + ], + "SimPL-2.0": [ + "Simple Public License 2.0", + true, + false + ], + "SISSL": [ + "Sun Industry Standards Source License v1.1", + true, + false + ], + "SISSL-1.2": [ + "Sun Industry Standards Source License v1.2", + false, + false + ], + "Sleepycat": [ + "Sleepycat License", + true, + false + ], + "SMLNJ": [ + "Standard ML of New Jersey License", + false, + false + ], + "SMPPL": [ + "Secure Messaging Protocol Public License", + false, + false + ], + "SNIA": [ + "SNIA Public License 1.1", + false, + false + ], + "Spencer-86": [ + "Spencer License 86", + false, + false + ], + "Spencer-94": [ + "Spencer License 94", + false, + false + ], + "Spencer-99": [ + "Spencer License 99", + false, + false + ], + "SPL-1.0": [ + "Sun Public License v1.0", + true, + false + ], + "SSH-OpenSSH": [ + "SSH OpenSSH license", + false, + false + ], + "SSH-short": [ + "SSH short notice", + false, + false + ], + "SSPL-1.0": [ + "Server Side Public License, v 1", + false, + false + ], + "StandardML-NJ": [ + "Standard ML of New Jersey License", + false, + true + ], + "SugarCRM-1.1.3": [ + "SugarCRM Public License v1.1.3", + false, + false + ], + "SWL": [ + "Scheme Widget Library (SWL) Software License Agreement", + false, + false + ], + "TAPR-OHL-1.0": [ + "TAPR Open Hardware License v1.0", + false, + false + ], + "TCL": [ + "TCL/TK License", + false, + false + ], + "TCP-wrappers": [ + "TCP Wrappers License", + false, + false + ], + "TMate": [ + "TMate Open Source License", + false, + false + ], + "TORQUE-1.1": [ + "TORQUE v2.5+ Software License v1.1", + false, + false + ], + "TOSL": [ + "Trusster Open Source License", + false, + false + ], + "TU-Berlin-1.0": [ + "Technische Universitaet Berlin License 1.0", + false, + false + ], + "TU-Berlin-2.0": [ + "Technische Universitaet Berlin License 2.0", + false, + false + ], + "UCL-1.0": [ + "Upstream Compatibility License v1.0", + true, + false + ], + "Unicode-DFS-2015": [ + "Unicode License Agreement - Data Files and Software (2015)", + false, + false + ], + "Unicode-DFS-2016": [ + "Unicode License Agreement - Data Files and Software (2016)", + true, + false + ], + "Unicode-TOU": [ + "Unicode Terms of Use", + false, + false + ], + "Unlicense": [ + "The Unlicense", + true, + false + ], + "UPL-1.0": [ + "Universal Permissive License v1.0", + true, + false + ], + "Vim": [ + "Vim License", + false, + false + ], + "VOSTROM": [ + "VOSTROM Public License for Open Source", + false, + false + ], + "VSL-1.0": [ + "Vovida Software License v1.0", + true, + false + ], + "W3C": [ + "W3C Software Notice and License (2002-12-31)", + true, + false + ], + "W3C-19980720": [ + "W3C Software Notice and License (1998-07-20)", + false, + false + ], + "W3C-20150513": [ + "W3C Software Notice and Document License (2015-05-13)", + false, + false + ], + "Watcom-1.0": [ + "Sybase Open Watcom Public License 1.0", + true, + false + ], + "Wsuipa": [ + "Wsuipa License", + false, + false + ], + "WTFPL": [ + "Do What The F*ck You Want To Public License", + false, + false + ], + "wxWindows": [ + "wxWindows Library License", + true, + true + ], + "X11": [ + "X11 License", + false, + false + ], + "X11-distribute-modifications-variant": [ + "X11 License Distribution Modification Variant", + false, + false + ], + "Xerox": [ + "Xerox License", + false, + false + ], + "XFree86-1.1": [ + "XFree86 License 1.1", + false, + false + ], + "xinetd": [ + "xinetd License", + false, + false + ], + "Xnet": [ + "X.Net License", + true, + false + ], + "xpp": [ + "XPP License", + false, + false + ], + "XSkat": [ + "XSkat License", + false, + false + ], + "YPL-1.0": [ + "Yahoo! Public License v1.0", + false, + false + ], + "YPL-1.1": [ + "Yahoo! Public License v1.1", + false, + false + ], + "Zed": [ + "Zed License", + false, + false + ], + "Zend-2.0": [ + "Zend License v2.0", + false, + false + ], + "Zimbra-1.3": [ + "Zimbra Public License v1.3", + false, + false + ], + "Zimbra-1.4": [ + "Zimbra Public License v1.4", + false, + false + ], + "Zlib": [ + "zlib License", + true, + false + ], + "zlib-acknowledgement": [ + "zlib/libpng License with Acknowledgement", + false, + false + ], + "ZPL-1.1": [ + "Zope Public License 1.1", + false, + false + ], + "ZPL-2.0": [ + "Zope Public License 2.0", + true, + false + ], + "ZPL-2.1": [ + "Zope Public License 2.1", + true, + false + ] +} \ No newline at end of file diff --git a/composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php b/composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php new file mode 100644 index 000000000..ac75247c3 --- /dev/null +++ b/composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php @@ -0,0 +1,357 @@ +loadLicenses(); +$this->loadExceptions(); +} + + + + + + + + + + + + + +public function getLicenseByIdentifier($identifier) +{ +$key = strtolower($identifier); + +if (!isset($this->licenses[$key])) { +return null; +} + +list($identifier, $name, $isOsiApproved, $isDeprecatedLicenseId) = $this->licenses[$key]; + +return array( +$name, +$isOsiApproved, +'https://spdx.org/licenses/' . $identifier . '.html#licenseText', +$isDeprecatedLicenseId, +); +} + + + + + + +public function getLicenses() +{ +return $this->licenses; +} + + + + + + + + + + + + + +public function getExceptionByIdentifier($identifier) +{ +$key = strtolower($identifier); + +if (!isset($this->exceptions[$key])) { +return null; +} + +list($identifier, $name) = $this->exceptions[$key]; + +return array( +$name, +'https://spdx.org/licenses/' . $identifier . '.html#licenseExceptionText', +); +} + + + + + + + + +public function getIdentifierByName($name) +{ +foreach ($this->licenses as $licenseData) { +if ($licenseData[1] === $name) { +return $licenseData[0]; +} +} + +foreach ($this->exceptions as $licenseData) { +if ($licenseData[1] === $name) { +return $licenseData[0]; +} +} + +return null; +} + + + + + + + + +public function isOsiApprovedByIdentifier($identifier) +{ +return $this->licenses[strtolower($identifier)][2]; +} + + + + + + + + +public function isDeprecatedByIdentifier($identifier) +{ +return $this->licenses[strtolower($identifier)][3]; +} + + + + + + + + +public function validate($license) +{ +if (is_array($license)) { +$count = count($license); +if ($count !== count(array_filter($license, 'is_string'))) { +throw new \InvalidArgumentException('Array of strings expected.'); +} +$license = $count > 1 ? '(' . implode(' OR ', $license) . ')' : (string) reset($license); +} + +if (!is_string($license)) { +throw new \InvalidArgumentException(sprintf( +'Array or String expected, %s given.', +gettype($license) +)); +} + +return $this->isValidLicenseString($license); +} + + + + +public static function getResourcesDir() +{ +return dirname(__DIR__) . '/res'; +} + + + + +private function loadLicenses() +{ +if (null !== $this->licenses) { +return; +} + +$json = file_get_contents(self::getResourcesDir() . '/' . self::LICENSES_FILE); +if (false === $json) { +throw new \RuntimeException('Missing license file in ' . self::getResourcesDir() . '/' . self::LICENSES_FILE); +} +$this->licenses = array(); + +foreach (json_decode($json, true) as $identifier => $license) { +$this->licenses[strtolower($identifier)] = array($identifier, $license[0], $license[1], $license[2]); +} +} + + + + +private function loadExceptions() +{ +if (null !== $this->exceptions) { +return; +} + +$json = file_get_contents(self::getResourcesDir() . '/' . self::EXCEPTIONS_FILE); +if (false === $json) { +throw new \RuntimeException('Missing exceptions file in ' . self::getResourcesDir() . '/' . self::EXCEPTIONS_FILE); +} +$this->exceptions = array(); + +foreach (json_decode($json, true) as $identifier => $exception) { +$this->exceptions[strtolower($identifier)] = array($identifier, $exception[0]); +} +} + + + + +private function getLicensesExpression() +{ +if (null === $this->licensesExpression) { +$licenses = array_map('preg_quote', array_keys($this->licenses)); +rsort($licenses); +$licenses = implode('|', $licenses); +$this->licensesExpression = $licenses; +} + +return $this->licensesExpression; +} + + + + +private function getExceptionsExpression() +{ +if (null === $this->exceptionsExpression) { +$exceptions = array_map('preg_quote', array_keys($this->exceptions)); +rsort($exceptions); +$exceptions = implode('|', $exceptions); +$this->exceptionsExpression = $exceptions; +} + +return $this->exceptionsExpression; +} + + + + + + + + +private function isValidLicenseString($license) +{ +if (isset($this->licenses[strtolower($license)])) { +return true; +} + +$licenses = $this->getLicensesExpression(); +$exceptions = $this->getExceptionsExpression(); + +$regex = <<[\pL\pN.-]{1,}) + + # license-id: taken from list + (?{$licenses}) + + # license-exception-id: taken from list + (?{$exceptions}) + + # license-ref: [DocumentRef-1*(idstring):]LicenseRef-1*(idstring) + (?(?:DocumentRef-(?&idstring):)?LicenseRef-(?&idstring)) + + # simple-expresssion: license-id / license-id+ / license-ref + (?(?&licenseid)\+? | (?&licenseid) | (?&licenseref)) + + # compound-expression: 1*( + # simple-expression / + # simple-expression WITH license-exception-id / + # compound-expression AND compound-expression / + # compound-expression OR compound-expression + # ) / ( compound-expression ) ) + (? + (?&simple_expression) ( \s+ WITH \s+ (?&licenseexceptionid))? + | \( \s* (?&compound_expression) \s* \) + ) + (? + (?&compound_head) (?: \s+ (?:AND|OR) \s+ (?&compound_expression))? + ) + + # license-expression: 1*1(simple-expression / compound-expression) + (?(?&compound_expression) | (?&simple_expression)) +) # end of define + +^(NONE | NOASSERTION | (?&license_expression))$ +}xi +REGEX; + +$match = preg_match($regex, $license); + +if (0 === $match) { +return false; +} + +if (false === $match) { +throw new \RuntimeException('Regex failed to compile/run.'); +} + +return true; +} +} diff --git a/composer/vendor/composer/xdebug-handler/LICENSE b/composer/vendor/composer/xdebug-handler/LICENSE new file mode 100644 index 000000000..c17073236 --- /dev/null +++ b/composer/vendor/composer/xdebug-handler/LICENSE @@ -0,0 +1,23 @@ + +MIT License + +Copyright (c) 2017 Composer + +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/composer/vendor/composer/xdebug-handler/src/PhpConfig.php b/composer/vendor/composer/xdebug-handler/src/PhpConfig.php new file mode 100644 index 000000000..d3cad6782 --- /dev/null +++ b/composer/vendor/composer/xdebug-handler/src/PhpConfig.php @@ -0,0 +1,91 @@ +getDataAndReset(); +return []; +} + + + + + + +public function useStandard(): array +{ +$data = $this->getDataAndReset(); +if ($data !== null) { +return ['-n', '-c', $data['tmpIni']]; +} + +return []; +} + + + + + + +public function usePersistent(): array +{ +$data = $this->getDataAndReset(); +if ($data !== null) { +$this->updateEnv('PHPRC', $data['tmpIni']); +$this->updateEnv('PHP_INI_SCAN_DIR', ''); +} + +return []; +} + + + + + + +private function getDataAndReset(): ?array +{ +$data = XdebugHandler::getRestartSettings(); +if ($data !== null) { +$this->updateEnv('PHPRC', $data['phprc']); +$this->updateEnv('PHP_INI_SCAN_DIR', $data['scanDir']); +} + +return $data; +} + + + + + + + +private function updateEnv(string $name, $value): void +{ +Process::setEnv($name, false !== $value ? $value : null); +} +} diff --git a/composer/vendor/composer/xdebug-handler/src/Process.php b/composer/vendor/composer/xdebug-handler/src/Process.php new file mode 100644 index 000000000..d7ec82e5e --- /dev/null +++ b/composer/vendor/composer/xdebug-handler/src/Process.php @@ -0,0 +1,118 @@ +()') !== false; +} elseif ($module && !$dquotes && $quote) { +$meta = false; +} +} + +if ($quote) { +$arg = '"'.(Preg::replace('/(\\\\*)$/', '$1$1', $arg)).'"'; +} + +if ($meta) { +$arg = Preg::replace('/(["^&|<>()%])/', '^$1', $arg); +} + +return $arg; +} + + + + + + +public static function escapeShellCommand(array $args): string +{ +$command = ''; +$module = array_shift($args); + +if ($module !== null) { +$command = self::escape($module, true, true); + +foreach ($args as $arg) { +$command .= ' '.self::escape($arg); +} +} + +return $command; +} + + + + + + + +public static function setEnv(string $name, ?string $value = null): bool +{ +$unset = null === $value; + +if (!putenv($unset ? $name : $name.'='.$value)) { +return false; +} + +if ($unset) { +unset($_SERVER[$name]); +} else { +$_SERVER[$name] = $value; +} + + +if (false !== stripos((string) ini_get('variables_order'), 'E')) { +if ($unset) { +unset($_ENV[$name]); +} else { +$_ENV[$name] = $value; +} +} + +return true; +} +} diff --git a/composer/vendor/composer/xdebug-handler/src/Status.php b/composer/vendor/composer/xdebug-handler/src/Status.php new file mode 100644 index 000000000..eb74f6c8a --- /dev/null +++ b/composer/vendor/composer/xdebug-handler/src/Status.php @@ -0,0 +1,203 @@ +time = is_numeric($start) ? round((microtime(true) - $start) * 1000) : 0; + +$this->envAllowXdebug = $envAllowXdebug; +$this->debug = $debug && defined('STDERR'); +$this->modeOff = false; +} + + + + + + +public function setLogger(LoggerInterface $logger): void +{ +$this->logger = $logger; +} + + + + + + +public function report(string $op, ?string $data): void +{ +if ($this->logger !== null || $this->debug) { +$callable = [$this, 'report'.$op]; + +if (!is_callable($callable)) { +throw new \InvalidArgumentException('Unknown op handler: '.$op); +} + +$params = $data !== null ? [$data] : []; +call_user_func_array($callable, $params); +} +} + + + + +private function output(string $text, ?string $level = null): void +{ +if ($this->logger !== null) { +$this->logger->log($level !== null ? $level: LogLevel::DEBUG, $text); +} + +if ($this->debug) { +fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL)); +} +} + + + + +private function reportCheck(string $loaded): void +{ +list($version, $mode) = explode('|', $loaded); + +if ($version !== '') { +$this->loaded = '('.$version.')'.($mode !== '' ? ' xdebug.mode='.$mode : ''); +} +$this->modeOff = $mode === 'off'; +$this->output('Checking '.$this->envAllowXdebug); +} + + + + +private function reportError(string $error): void +{ +$this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING); +} + + + + +private function reportInfo(string $info): void +{ +$this->output($info); +} + + + + +private function reportNoRestart(): void +{ +$this->output($this->getLoadedMessage()); + +if ($this->loaded !== null) { +$text = sprintf('No restart (%s)', $this->getEnvAllow()); +if (!((bool) getenv($this->envAllowXdebug))) { +$text .= ' Allowed by '.($this->modeOff ? 'xdebug.mode' : 'application'); +} +$this->output($text); +} +} + + + + +private function reportRestart(): void +{ +$this->output($this->getLoadedMessage()); +Process::setEnv(self::ENV_RESTART, (string) microtime(true)); +} + + + + +private function reportRestarted(): void +{ +$loaded = $this->getLoadedMessage(); +$text = sprintf('Restarted (%d ms). %s', $this->time, $loaded); +$level = $this->loaded !== null ? LogLevel::WARNING : null; +$this->output($text, $level); +} + + + + +private function reportRestarting(string $command): void +{ +$text = sprintf('Process restarting (%s)', $this->getEnvAllow()); +$this->output($text); +$text = 'Running '.$command; +$this->output($text); +} + + + + +private function getEnvAllow(): string +{ +return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug); +} + + + + +private function getLoadedMessage(): string +{ +$loaded = $this->loaded !== null ? sprintf('loaded %s', $this->loaded) : 'not loaded'; +return 'The Xdebug extension is '.$loaded; +} +} diff --git a/composer/vendor/composer/xdebug-handler/src/XdebugHandler.php b/composer/vendor/composer/xdebug-handler/src/XdebugHandler.php new file mode 100644 index 000000000..4e9fd1be3 --- /dev/null +++ b/composer/vendor/composer/xdebug-handler/src/XdebugHandler.php @@ -0,0 +1,668 @@ +envAllowXdebug = self::$name.self::SUFFIX_ALLOW; +$this->envOriginalInis = self::$name.self::SUFFIX_INIS; + +self::setXdebugDetails(); +self::$inRestart = false; + +if ($this->cli = PHP_SAPI === 'cli') { +$this->debug = (string) getenv(self::DEBUG); +} + +$this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug); +} + + + + +public function setLogger(LoggerInterface $logger): self +{ +$this->statusWriter->setLogger($logger); +return $this; +} + + + + +public function setMainScript(string $script): self +{ +$this->script = $script; +return $this; +} + + + + +public function setPersistent(): self +{ +$this->persistent = true; +return $this; +} + + + + + + + + +public function check(): void +{ +$this->notify(Status::CHECK, self::$xdebugVersion.'|'.self::$xdebugMode); +$envArgs = explode('|', (string) getenv($this->envAllowXdebug)); + +if (!((bool) $envArgs[0]) && $this->requiresRestart(self::$xdebugActive)) { + +$this->notify(Status::RESTART); + +if ($this->prepareRestart()) { +$command = $this->getCommand(); +$this->restart($command); +} +return; +} + +if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) { + +$this->notify(Status::RESTARTED); + +Process::setEnv($this->envAllowXdebug); +self::$inRestart = true; + +if (self::$xdebugVersion === null) { + +self::$skipped = $envArgs[1]; +} + +$this->tryEnableSignals(); + + +$this->setEnvRestartSettings($envArgs); +return; +} + +$this->notify(Status::NORESTART); +$settings = self::getRestartSettings(); + +if ($settings !== null) { + +$this->syncSettings($settings); +} +} + + + + + + + + + +public static function getAllIniFiles(): array +{ +if (self::$name !== null) { +$env = getenv(self::$name.self::SUFFIX_INIS); + +if (false !== $env) { +return explode(PATH_SEPARATOR, $env); +} +} + +$paths = [(string) php_ini_loaded_file()]; +$scanned = php_ini_scanned_files(); + +if ($scanned !== false) { +$paths = array_merge($paths, array_map('trim', explode(',', $scanned))); +} + +return $paths; +} + + + + + + + + + +public static function getRestartSettings(): ?array +{ +$envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS)); + +if (count($envArgs) !== 6 +|| (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) { +return null; +} + +return [ +'tmpIni' => $envArgs[0], +'scannedInis' => (bool) $envArgs[1], +'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2], +'phprc' => '*' === $envArgs[3] ? false : $envArgs[3], +'inis' => explode(PATH_SEPARATOR, $envArgs[4]), +'skipped' => $envArgs[5], +]; +} + + + + +public static function getSkippedVersion(): string +{ +return (string) self::$skipped; +} + + + + + + + +public static function isXdebugActive(): bool +{ +self::setXdebugDetails(); +return self::$xdebugActive; +} + + + + + + +protected function requiresRestart(bool $default): bool +{ +return $default; +} + + + + + + +protected function restart(array $command): void +{ +$this->doRestart($command); +} + + + + + + + +private function doRestart(array $command): void +{ +$this->tryEnableSignals(); +$this->notify(Status::RESTARTING, implode(' ', $command)); + +if (PHP_VERSION_ID >= 70400) { +$cmd = $command; +} else { +$cmd = Process::escapeShellCommand($command); +if (defined('PHP_WINDOWS_VERSION_BUILD')) { + +$cmd = '"'.$cmd.'"'; +} +} + +$process = proc_open($cmd, [], $pipes); +if (is_resource($process)) { +$exitCode = proc_close($process); +} + +if (!isset($exitCode)) { + +$this->notify(Status::ERROR, 'Unable to restart process'); +$exitCode = -1; +} else { +$this->notify(Status::INFO, 'Restarted process exited '.$exitCode); +} + +if ($this->debug === '2') { +$this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni); +} else { +@unlink((string) $this->tmpIni); +} + +exit($exitCode); +} + + + + + + + + + +private function prepareRestart(): bool +{ +$error = null; +$iniFiles = self::getAllIniFiles(); +$scannedInis = count($iniFiles) > 1; +$tmpDir = sys_get_temp_dir(); + +if (!$this->cli) { +$error = 'Unsupported SAPI: '.PHP_SAPI; +} elseif (!$this->checkConfiguration($info)) { +$error = $info; +} elseif (!$this->checkMainScript()) { +$error = 'Unable to access main script: '.$this->script; +} elseif (!$this->writeTmpIni($iniFiles, $tmpDir, $error)) { +$error = $error !== null ? $error : 'Unable to create temp ini file at: '.$tmpDir; +} elseif (!$this->setEnvironment($scannedInis, $iniFiles)) { +$error = 'Unable to set environment variables'; +} + +if ($error !== null) { +$this->notify(Status::ERROR, $error); +} + +return $error === null; +} + + + + + + +private function writeTmpIni(array $iniFiles, string $tmpDir, ?string &$error): bool +{ +if (($tmpfile = @tempnam($tmpDir, '')) === false) { +return false; +} + +$this->tmpIni = $tmpfile; + + +if ($iniFiles[0] === '') { +array_shift($iniFiles); +} + +$content = ''; +$sectionRegex = '/^\s*\[(?:PATH|HOST)\s*=/mi'; +$xdebugRegex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi'; + +foreach ($iniFiles as $file) { + +if (($data = @file_get_contents($file)) === false) { +$error = 'Unable to read ini: '.$file; +return false; +} + +if (Preg::isMatchWithOffsets($sectionRegex, $data, $matches, PREG_OFFSET_CAPTURE)) { +$data = substr($data, 0, $matches[0][1]); +} +$content .= Preg::replace($xdebugRegex, ';$1', $data).PHP_EOL; +} + + +$config = parse_ini_string($content); +$loaded = ini_get_all(null, false); + +if (false === $config || false === $loaded) { +$error = 'Unable to parse ini data'; +return false; +} + +$content .= $this->mergeLoadedConfig($loaded, $config); + + +$content .= 'opcache.enable_cli=0'.PHP_EOL; + +return (bool) @file_put_contents($this->tmpIni, $content); +} + + + + + + +private function getCommand(): array +{ +$php = [PHP_BINARY]; +$args = array_slice($_SERVER['argv'], 1); + +if (!$this->persistent) { + +array_push($php, '-n', '-c', $this->tmpIni); +} + +return array_merge($php, [$this->script], $args); +} + + + + + + + + +private function setEnvironment(bool $scannedInis, array $iniFiles): bool +{ +$scanDir = getenv('PHP_INI_SCAN_DIR'); +$phprc = getenv('PHPRC'); + + +if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) { +return false; +} + +if ($this->persistent) { + +if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$this->tmpIni)) { +return false; +} +} + + +$envArgs = [ +self::RESTART_ID, +self::$xdebugVersion, +(int) $scannedInis, +false === $scanDir ? '*' : $scanDir, +false === $phprc ? '*' : $phprc, +]; + +return putenv($this->envAllowXdebug.'='.implode('|', $envArgs)); +} + + + + +private function notify(string $op, ?string $data = null): void +{ +$this->statusWriter->report($op, $data); +} + + + + + + + + +private function mergeLoadedConfig(array $loadedConfig, array $iniConfig): string +{ +$content = ''; + +foreach ($loadedConfig as $name => $value) { + +if (!is_string($value) +|| strpos($name, 'xdebug') === 0 +|| $name === 'apc.mmap_file_mask') { +continue; +} + +if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { + +$content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL; +} +} + +return $content; +} + + + + +private function checkMainScript(): bool +{ +if ($this->script !== null) { + +return file_exists($this->script) || '--' === $this->script; +} + +if (file_exists($this->script = $_SERVER['argv'][0])) { +return true; +} + + +$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); +$main = end($trace); + +if ($main !== false && isset($main['file'])) { +return file_exists($this->script = $main['file']); +} + +return false; +} + + + + + + +private function setEnvRestartSettings(array $envArgs): void +{ +$settings = [ +php_ini_loaded_file(), +$envArgs[2], +$envArgs[3], +$envArgs[4], +getenv($this->envOriginalInis), +self::$skipped, +]; + +Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings)); +} + + + + + + +private function syncSettings(array $settings): void +{ +if (false === getenv($this->envOriginalInis)) { + +Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis'])); +} + +self::$skipped = $settings['skipped']; +$this->notify(Status::INFO, 'Process called with existing restart settings'); +} + + + + +private function checkConfiguration(?string &$info): bool +{ +if (!function_exists('proc_open')) { +$info = 'proc_open function is disabled'; +return false; +} + +if (extension_loaded('uopz') && !((bool) ini_get('uopz.disable'))) { + +if (function_exists('uopz_allow_exit')) { +@uopz_allow_exit(true); +} else { +$info = 'uopz extension is not compatible'; +return false; +} +} + + +if (defined('PHP_WINDOWS_VERSION_BUILD') && PHP_VERSION_ID < 70400) { +$workingDir = getcwd(); + +if ($workingDir === false) { +$info = 'unable to determine working directory'; +return false; +} + +if (0 === strpos($workingDir, '\\\\')) { +$info = 'cmd.exe does not support UNC paths: '.$workingDir; +return false; +} +} + +return true; +} + + + + + + +private function tryEnableSignals(): void +{ +if (function_exists('pcntl_async_signals') && function_exists('pcntl_signal')) { +pcntl_async_signals(true); +$message = 'Async signals enabled'; + +if (!self::$inRestart) { + +pcntl_signal(SIGINT, SIG_IGN); +} elseif (is_int(pcntl_signal_get_handler(SIGINT))) { + +pcntl_signal(SIGINT, SIG_DFL); +} +} + +if (!self::$inRestart && function_exists('sapi_windows_set_ctrl_handler')) { + + + +sapi_windows_set_ctrl_handler(function ($evt) {}); +} +} + + + + +private static function setXdebugDetails(): void +{ +if (self::$xdebugActive !== null) { +return; +} + +self::$xdebugActive = false; +if (!extension_loaded('xdebug')) { +return; +} + +$version = phpversion('xdebug'); +self::$xdebugVersion = $version !== false ? $version : 'unknown'; + +if (version_compare(self::$xdebugVersion, '3.1', '>=')) { +$modes = xdebug_info('mode'); +self::$xdebugMode = count($modes) === 0 ? 'off' : implode(',', $modes); +self::$xdebugActive = self::$xdebugMode !== 'off'; +return; +} + + +$iniMode = ini_get('xdebug.mode'); +if ($iniMode === false) { +self::$xdebugActive = true; +return; +} + + +$envMode = (string) getenv('XDEBUG_MODE'); +if ($envMode !== '') { +self::$xdebugMode = $envMode; +} else { +self::$xdebugMode = $iniMode !== '' ? $iniMode : 'off'; +} + + +if (Preg::isMatch('/^,+$/', str_replace(' ', '', self::$xdebugMode))) { +self::$xdebugMode = 'off'; +} + +self::$xdebugActive = self::$xdebugMode !== 'off'; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/LICENSE b/composer/vendor/justinrainbow/json-schema/LICENSE new file mode 100644 index 000000000..7029069d1 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/LICENSE @@ -0,0 +1,23 @@ + +MIT License + +Copyright (c) 2016 + +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/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php new file mode 100644 index 000000000..049a216d3 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php @@ -0,0 +1,148 @@ +factory = $factory ?: new Factory(); +} + +public function addError(JsonPointer $path = null, $message, $constraint = '', array $more = null) +{ +$error = array( +'property' => $this->convertJsonPointerIntoPropertyPath($path ?: new JsonPointer('')), +'pointer' => ltrim(strval($path ?: new JsonPointer('')), '#'), +'message' => $message, +'constraint' => $constraint, +'context' => $this->factory->getErrorContext(), +); + +if ($this->factory->getConfig(Constraint::CHECK_MODE_EXCEPTIONS)) { +throw new ValidationException(sprintf('Error validating %s: %s', $error['pointer'], $error['message'])); +} + +if (is_array($more) && count($more) > 0) { +$error += $more; +} + +$this->errors[] = $error; +$this->errorMask |= $error['context']; +} + +public function addErrors(array $errors) +{ +if ($errors) { +$this->errors = array_merge($this->errors, $errors); +$errorMask = &$this->errorMask; +array_walk($errors, function ($error) use (&$errorMask) { +if (isset($error['context'])) { +$errorMask |= $error['context']; +} +}); +} +} + +public function getErrors($errorContext = Validator::ERROR_ALL) +{ +if ($errorContext === Validator::ERROR_ALL) { +return $this->errors; +} + +return array_filter($this->errors, function ($error) use ($errorContext) { +if ($errorContext & $error['context']) { +return true; +} +}); +} + +public function numErrors($errorContext = Validator::ERROR_ALL) +{ +if ($errorContext === Validator::ERROR_ALL) { +return count($this->errors); +} + +return count($this->getErrors($errorContext)); +} + +public function isValid() +{ +return !$this->getErrors(); +} + + + + + +public function reset() +{ +$this->errors = array(); +$this->errorMask = Validator::ERROR_NONE; +} + + + + + + +public function getErrorMask() +{ +return $this->errorMask; +} + + + + + + + + +public static function arrayToObjectRecursive($array) +{ +$json = json_encode($array); +if (json_last_error() !== \JSON_ERROR_NONE) { +$message = 'Unable to encode schema array as JSON'; +if (function_exists('json_last_error_msg')) { +$message .= ': ' . json_last_error_msg(); +} +throw new InvalidArgumentException($message); +} + +return (object) json_decode($json); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php new file mode 100644 index 000000000..99ccee4f7 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php @@ -0,0 +1,121 @@ +minItems) && count($value) < $schema->minItems) { +$this->addError($path, 'There must be a minimum of ' . $schema->minItems . ' items in the array', 'minItems', array('minItems' => $schema->minItems)); +} + + +if (isset($schema->maxItems) && count($value) > $schema->maxItems) { +$this->addError($path, 'There must be a maximum of ' . $schema->maxItems . ' items in the array', 'maxItems', array('maxItems' => $schema->maxItems)); +} + + +if (isset($schema->uniqueItems) && $schema->uniqueItems) { +$unique = $value; +if (is_array($value) && count($value)) { +$unique = array_map(function ($e) { +return var_export($e, true); +}, $value); +} +if (count(array_unique($unique)) != count($value)) { +$this->addError($path, 'There are no duplicates allowed in the array', 'uniqueItems'); +} +} + + +if (isset($schema->items)) { +$this->validateItems($value, $schema, $path, $i); +} +} + + + + + + + + + +protected function validateItems(&$value, $schema = null, JsonPointer $path = null, $i = null) +{ +if (is_object($schema->items)) { + +foreach ($value as $k => &$v) { +$initErrors = $this->getErrors(); + + +$this->checkUndefined($v, $schema->items, $path, $k); + + +if (count($initErrors) < count($this->getErrors()) && (isset($schema->additionalItems) && $schema->additionalItems !== false)) { +$secondErrors = $this->getErrors(); +$this->checkUndefined($v, $schema->additionalItems, $path, $k); +} + + +if (isset($secondErrors) && count($secondErrors) < count($this->getErrors())) { +$this->errors = $secondErrors; +} elseif (isset($secondErrors) && count($secondErrors) === count($this->getErrors())) { +$this->errors = $initErrors; +} +} +unset($v); + +} else { + +foreach ($value as $k => &$v) { +if (array_key_exists($k, $schema->items)) { +$this->checkUndefined($v, $schema->items[$k], $path, $k); +} else { + +if (property_exists($schema, 'additionalItems')) { +if ($schema->additionalItems !== false) { +$this->checkUndefined($v, $schema->additionalItems, $path, $k); +} else { +$this->addError( +$path, 'The item ' . $i . '[' . $k . '] is not defined and the definition does not allow additional items', 'additionalItems', array('additionalItems' => $schema->additionalItems)); +} +} else { + +$this->checkUndefined($v, new \stdClass(), $path, $k); +} +} +} +unset($v); + + + +if (count($value) > 0) { +for ($k = count($value); $k < count($schema->items); $k++) { +$undefinedInstance = $this->factory->createInstanceFor('undefined'); +$this->checkUndefined($undefinedInstance, $schema->items[$k], $path, $k); +} +} +} +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php new file mode 100644 index 000000000..ce91138de --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php @@ -0,0 +1,218 @@ +withPropertyPaths( +array_merge( +$path->getPropertyPaths(), +array($i) +) +); + +return $path; +} + + + + + + + + + +protected function checkArray(&$value, $schema = null, JsonPointer $path = null, $i = null) +{ +$validator = $this->factory->createInstanceFor('collection'); +$validator->check($value, $schema, $path, $i); + +$this->addErrors($validator->getErrors()); +} + + + + + + + + + + + +protected function checkObject(&$value, $schema = null, JsonPointer $path = null, $properties = null, +$additionalProperties = null, $patternProperties = null, $appliedDefaults = array()) +{ +$validator = $this->factory->createInstanceFor('object'); +$validator->check($value, $schema, $path, $properties, $additionalProperties, $patternProperties, $appliedDefaults); + +$this->addErrors($validator->getErrors()); +} + + + + + + + + + +protected function checkType(&$value, $schema = null, JsonPointer $path = null, $i = null) +{ +$validator = $this->factory->createInstanceFor('type'); +$validator->check($value, $schema, $path, $i); + +$this->addErrors($validator->getErrors()); +} + + + + + + + + + +protected function checkUndefined(&$value, $schema = null, JsonPointer $path = null, $i = null, $fromDefault = false) +{ +$validator = $this->factory->createInstanceFor('undefined'); + +$validator->check($value, $this->factory->getSchemaStorage()->resolveRefSchema($schema), $path, $i, $fromDefault); + +$this->addErrors($validator->getErrors()); +} + + + + + + + + + +protected function checkString($value, $schema = null, JsonPointer $path = null, $i = null) +{ +$validator = $this->factory->createInstanceFor('string'); +$validator->check($value, $schema, $path, $i); + +$this->addErrors($validator->getErrors()); +} + + + + + + + + + +protected function checkNumber($value, $schema = null, JsonPointer $path = null, $i = null) +{ +$validator = $this->factory->createInstanceFor('number'); +$validator->check($value, $schema, $path, $i); + +$this->addErrors($validator->getErrors()); +} + + + + + + + + + +protected function checkEnum($value, $schema = null, JsonPointer $path = null, $i = null) +{ +$validator = $this->factory->createInstanceFor('enum'); +$validator->check($value, $schema, $path, $i); + +$this->addErrors($validator->getErrors()); +} + + + + + + + + + +protected function checkFormat($value, $schema = null, JsonPointer $path = null, $i = null) +{ +$validator = $this->factory->createInstanceFor('format'); +$validator->check($value, $schema, $path, $i); + +$this->addErrors($validator->getErrors()); +} + + + + + + +protected function getTypeCheck() +{ +return $this->factory->getTypeCheck(); +} + + + + + + +protected function convertJsonPointerIntoPropertyPath(JsonPointer $pointer) +{ +$result = array_map( +function ($path) { +return sprintf(is_numeric($path) ? '[%d]' : '.%s', $path); +}, +$pointer->getPropertyPaths() +); + +return trim(implode('', $result), '.'); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php new file mode 100644 index 000000000..9d4907d9c --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php @@ -0,0 +1,65 @@ +required) || !$schema->required)) { +return; +} +$type = gettype($element); + +foreach ($schema->enum as $enum) { +$enumType = gettype($enum); +if ($this->factory->getConfig(self::CHECK_MODE_TYPE_CAST) && $type == 'array' && $enumType == 'object') { +if ((object) $element == $enum) { +return; +} +} + +if ($type === gettype($enum)) { +if ($type == 'object') { +if ($element == $enum) { +return; +} +} elseif ($element === $enum) { +return; +} +} +} + +$this->addError($path, 'Does not have a value in the enumeration ' . json_encode($schema->enum), 'enum', array('enum' => $schema->enum)); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php new file mode 100644 index 000000000..0349ed49d --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php @@ -0,0 +1,220 @@ + 'JsonSchema\Constraints\CollectionConstraint', +'collection' => 'JsonSchema\Constraints\CollectionConstraint', +'object' => 'JsonSchema\Constraints\ObjectConstraint', +'type' => 'JsonSchema\Constraints\TypeConstraint', +'undefined' => 'JsonSchema\Constraints\UndefinedConstraint', +'string' => 'JsonSchema\Constraints\StringConstraint', +'number' => 'JsonSchema\Constraints\NumberConstraint', +'enum' => 'JsonSchema\Constraints\EnumConstraint', +'format' => 'JsonSchema\Constraints\FormatConstraint', +'schema' => 'JsonSchema\Constraints\SchemaConstraint', +'validator' => 'JsonSchema\Validator' +); + + + + +private $instanceCache = array(); + + + + + + +public function __construct( +SchemaStorageInterface $schemaStorage = null, +UriRetrieverInterface $uriRetriever = null, +$checkMode = Constraint::CHECK_MODE_NORMAL +) { + +$this->setConfig($checkMode); + +$this->uriRetriever = $uriRetriever ?: new UriRetriever(); +$this->schemaStorage = $schemaStorage ?: new SchemaStorage($this->uriRetriever); +} + + + + + + +public function setConfig($checkMode = Constraint::CHECK_MODE_NORMAL) +{ +$this->checkMode = $checkMode; +} + + + + + + +public function addConfig($options) +{ +$this->checkMode |= $options; +} + + + + + + +public function removeConfig($options) +{ +$this->checkMode &= ~$options; +} + + + + + + + + +public function getConfig($options = null) +{ +if ($options === null) { +return $this->checkMode; +} + +return $this->checkMode & $options; +} + + + + +public function getUriRetriever() +{ +return $this->uriRetriever; +} + +public function getSchemaStorage() +{ +return $this->schemaStorage; +} + +public function getTypeCheck() +{ +if (!isset($this->typeCheck[$this->checkMode])) { +$this->typeCheck[$this->checkMode] = ($this->checkMode & Constraint::CHECK_MODE_TYPE_CAST) +? new TypeCheck\LooseTypeCheck() +: new TypeCheck\StrictTypeCheck(); +} + +return $this->typeCheck[$this->checkMode]; +} + + + + + + + +public function setConstraintClass($name, $class) +{ + +if (!class_exists($class)) { +throw new InvalidArgumentException('Unknown constraint ' . $name); +} + +if (!in_array('JsonSchema\Constraints\ConstraintInterface', class_implements($class))) { +throw new InvalidArgumentException('Invalid class ' . $name); +} +$this->constraintMap[$name] = $class; + +return $this; +} + + + + + + + + + + +public function createInstanceFor($constraintName) +{ +if (!isset($this->constraintMap[$constraintName])) { +throw new InvalidArgumentException('Unknown constraint ' . $constraintName); +} + +if (!isset($this->instanceCache[$constraintName])) { +$this->instanceCache[$constraintName] = new $this->constraintMap[$constraintName]($this); +} + +return clone $this->instanceCache[$constraintName]; +} + + + + + + +public function getErrorContext() +{ +return $this->errorContext; +} + + + + + + +public function setErrorContext($errorContext) +{ +$this->errorContext = $errorContext; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php new file mode 100644 index 000000000..e449fa820 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php @@ -0,0 +1,214 @@ +format) || $this->factory->getConfig(self::CHECK_MODE_DISABLE_FORMAT)) { +return; +} + +switch ($schema->format) { +case 'date': +if (!$date = $this->validateDateTime($element, 'Y-m-d')) { +$this->addError($path, sprintf('Invalid date %s, expected format YYYY-MM-DD', json_encode($element)), 'format', array('format' => $schema->format)); +} +break; + +case 'time': +if (!$this->validateDateTime($element, 'H:i:s')) { +$this->addError($path, sprintf('Invalid time %s, expected format hh:mm:ss', json_encode($element)), 'format', array('format' => $schema->format)); +} +break; + +case 'date-time': +if (null === Rfc3339::createFromString($element)) { +$this->addError($path, sprintf('Invalid date-time %s, expected format YYYY-MM-DDThh:mm:ssZ or YYYY-MM-DDThh:mm:ss+hh:mm', json_encode($element)), 'format', array('format' => $schema->format)); +} +break; + +case 'utc-millisec': +if (!$this->validateDateTime($element, 'U')) { +$this->addError($path, sprintf('Invalid time %s, expected integer of milliseconds since Epoch', json_encode($element)), 'format', array('format' => $schema->format)); +} +break; + +case 'regex': +if (!$this->validateRegex($element)) { +$this->addError($path, 'Invalid regex format ' . $element, 'format', array('format' => $schema->format)); +} +break; + +case 'color': +if (!$this->validateColor($element)) { +$this->addError($path, 'Invalid color', 'format', array('format' => $schema->format)); +} +break; + +case 'style': +if (!$this->validateStyle($element)) { +$this->addError($path, 'Invalid style', 'format', array('format' => $schema->format)); +} +break; + +case 'phone': +if (!$this->validatePhone($element)) { +$this->addError($path, 'Invalid phone number', 'format', array('format' => $schema->format)); +} +break; + +case 'uri': +if (null === filter_var($element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE)) { +$this->addError($path, 'Invalid URL format', 'format', array('format' => $schema->format)); +} +break; + +case 'uriref': +case 'uri-reference': +if (null === filter_var($element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE)) { + + + +if (substr($element, 0, 2) === '//') { +$validURL = filter_var('scheme:' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); +} elseif (substr($element, 0, 1) === '/') { +$validURL = filter_var('scheme://host' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); +} elseif (strlen($element)) { +$pathParts = explode('/', $element, 2); +if (strpos($pathParts[0], ':') !== false) { +$validURL = null; +} else { +$validURL = filter_var('scheme://host/' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); +} +} else { +$validURL = null; +} +if ($validURL === null) { +$this->addError($path, 'Invalid URL format', 'format', array('format' => $schema->format)); +} +} +break; + +case 'email': +$filterFlags = FILTER_NULL_ON_FAILURE; +if (defined('FILTER_FLAG_EMAIL_UNICODE')) { + +$filterFlags |= constant('FILTER_FLAG_EMAIL_UNICODE'); +} +if (null === filter_var($element, FILTER_VALIDATE_EMAIL, $filterFlags)) { +$this->addError($path, 'Invalid email', 'format', array('format' => $schema->format)); +} +break; + +case 'ip-address': +case 'ipv4': +if (null === filter_var($element, FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE | FILTER_FLAG_IPV4)) { +$this->addError($path, 'Invalid IP address', 'format', array('format' => $schema->format)); +} +break; + +case 'ipv6': +if (null === filter_var($element, FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE | FILTER_FLAG_IPV6)) { +$this->addError($path, 'Invalid IP address', 'format', array('format' => $schema->format)); +} +break; + +case 'host-name': +case 'hostname': +if (!$this->validateHostname($element)) { +$this->addError($path, 'Invalid hostname', 'format', array('format' => $schema->format)); +} +break; + +default: + + + + + + +break; +} +} + +protected function validateDateTime($datetime, $format) +{ +$dt = \DateTime::createFromFormat($format, $datetime); + +if (!$dt) { +return false; +} + +if ($datetime === $dt->format($format)) { +return true; +} + + + + + +if ((strpos('u', $format) !== -1) && (preg_match('/\.\d+Z$/', $datetime))) { +return true; +} + +return false; +} + +protected function validateRegex($regex) +{ +return false !== @preg_match('/' . $regex . '/u', ''); +} + +protected function validateColor($color) +{ +if (in_array(strtolower($color), array('aqua', 'black', 'blue', 'fuchsia', +'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'orange', 'purple', +'red', 'silver', 'teal', 'white', 'yellow'))) { +return true; +} + +return preg_match('/^#([a-f0-9]{3}|[a-f0-9]{6})$/i', $color); +} + +protected function validateStyle($style) +{ +$properties = explode(';', rtrim($style, ';')); +$invalidEntries = preg_grep('/^\s*[-a-z]+\s*:\s*.+$/i', $properties, PREG_GREP_INVERT); + +return empty($invalidEntries); +} + +protected function validatePhone($phone) +{ +return preg_match('/^\+?(\(\d{3}\)|\d{3}) \d{3} \d{4}$/', $phone); +} + +protected function validateHostname($host) +{ +$hostnameRegex = '/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/i'; + +return preg_match($hostnameRegex, $host); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php new file mode 100644 index 000000000..5f53062cb --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php @@ -0,0 +1,81 @@ +exclusiveMinimum)) { +if (isset($schema->minimum)) { +if ($schema->exclusiveMinimum && $element <= $schema->minimum) { +$this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'exclusiveMinimum', array('minimum' => $schema->minimum)); +} elseif ($element < $schema->minimum) { +$this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); +} +} else { +$this->addError($path, 'Use of exclusiveMinimum requires presence of minimum', 'missingMinimum'); +} +} elseif (isset($schema->minimum) && $element < $schema->minimum) { +$this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); +} + + +if (isset($schema->exclusiveMaximum)) { +if (isset($schema->maximum)) { +if ($schema->exclusiveMaximum && $element >= $schema->maximum) { +$this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'exclusiveMaximum', array('maximum' => $schema->maximum)); +} elseif ($element > $schema->maximum) { +$this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); +} +} else { +$this->addError($path, 'Use of exclusiveMaximum requires presence of maximum', 'missingMaximum'); +} +} elseif (isset($schema->maximum) && $element > $schema->maximum) { +$this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); +} + + +if (isset($schema->divisibleBy) && $this->fmod($element, $schema->divisibleBy) != 0) { +$this->addError($path, 'Is not divisible by ' . $schema->divisibleBy, 'divisibleBy', array('divisibleBy' => $schema->divisibleBy)); +} + + +if (isset($schema->multipleOf) && $this->fmod($element, $schema->multipleOf) != 0) { +$this->addError($path, 'Must be a multiple of ' . $schema->multipleOf, 'multipleOf', array('multipleOf' => $schema->multipleOf)); +} + +$this->checkFormat($element, $schema, $path, $i); +} + +private function fmod($number1, $number2) +{ +$modulus = ($number1 - round($number1 / $number2) * $number2); +$precision = 0.0000000001; + +if (-$precision < $modulus && $modulus < $precision) { +return 0.0; +} + +return $modulus; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php new file mode 100644 index 000000000..4bd152428 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php @@ -0,0 +1,192 @@ +appliedDefaults = $appliedDefaults; + +$matches = array(); +if ($patternProperties) { + +$matches = $this->validatePatternProperties($element, $path, $patternProperties); +} + +if ($properties) { + +$this->validateProperties($element, $properties, $path); +} + + +$this->validateElement($element, $matches, $schema, $path, $properties, $additionalProp); +} + +public function validatePatternProperties($element, JsonPointer $path = null, $patternProperties) +{ +$try = array('/', '#', '+', '~', '%'); +$matches = array(); +foreach ($patternProperties as $pregex => $schema) { +$delimiter = '/'; + +foreach ($try as $delimiter) { +if (strpos($pregex, $delimiter) === false) { +break; +} +} + + +if (@preg_match($delimiter . $pregex . $delimiter . 'u', '') === false) { +$this->addError($path, 'The pattern "' . $pregex . '" is invalid', 'pregex', array('pregex' => $pregex)); +continue; +} +foreach ($element as $i => $value) { +if (preg_match($delimiter . $pregex . $delimiter . 'u', $i)) { +$matches[] = $i; +$this->checkUndefined($value, $schema ?: new \stdClass(), $path, $i, in_array($i, $this->appliedDefaults)); +} +} +} + +return $matches; +} + + + + + + + + + + + +public function validateElement($element, $matches, $schema = null, JsonPointer $path = null, +$properties = null, $additionalProp = null) +{ +$this->validateMinMaxConstraint($element, $schema, $path); + +foreach ($element as $i => $value) { +$definition = $this->getProperty($properties, $i); + + +if (!in_array($i, $matches) && $additionalProp === false && $this->inlineSchemaProperty !== $i && !$definition) { +$this->addError($path, 'The property ' . $i . ' is not defined and the definition does not allow additional properties', 'additionalProp'); +} + + +if (!in_array($i, $matches) && $additionalProp && !$definition) { +if ($additionalProp === true) { +$this->checkUndefined($value, null, $path, $i, in_array($i, $this->appliedDefaults)); +} else { +$this->checkUndefined($value, $additionalProp, $path, $i, in_array($i, $this->appliedDefaults)); +} +} + + +$require = $this->getProperty($definition, 'requires'); +if ($require && !$this->getProperty($element, $require)) { +$this->addError($path, 'The presence of the property ' . $i . ' requires that ' . $require . ' also be present', 'requires'); +} + +$property = $this->getProperty($element, $i, $this->factory->createInstanceFor('undefined')); +if (is_object($property)) { +$this->validateMinMaxConstraint(!($property instanceof UndefinedConstraint) ? $property : $element, $definition, $path); +} +} +} + + + + + + + + +public function validateProperties(&$element, $properties = null, JsonPointer $path = null) +{ +$undefinedConstraint = $this->factory->createInstanceFor('undefined'); + +foreach ($properties as $i => $value) { +$property = &$this->getProperty($element, $i, $undefinedConstraint); +$definition = $this->getProperty($properties, $i); + +if (is_object($definition)) { + +$this->checkUndefined($property, $definition, $path, $i, in_array($i, $this->appliedDefaults)); +} +} +} + + + + + + + + + + +protected function &getProperty(&$element, $property, $fallback = null) +{ +if (is_array($element) && (isset($element[$property]) || array_key_exists($property, $element)) ) { +return $element[$property]; +} elseif (is_object($element) && property_exists($element, $property)) { +return $element->$property; +} + +return $fallback; +} + + + + + + + + +protected function validateMinMaxConstraint($element, $objectDefinition, JsonPointer $path = null) +{ + +if (isset($objectDefinition->minProperties) && !is_object($objectDefinition->minProperties)) { +if ($this->getTypeCheck()->propertyCount($element) < $objectDefinition->minProperties) { +$this->addError($path, 'Must contain a minimum of ' . $objectDefinition->minProperties . ' properties', 'minProperties', array('minProperties' => $objectDefinition->minProperties)); +} +} + +if (isset($objectDefinition->maxProperties) && !is_object($objectDefinition->maxProperties)) { +if ($this->getTypeCheck()->propertyCount($element) > $objectDefinition->maxProperties) { +$this->addError($path, 'Must contain no more than ' . $objectDefinition->maxProperties . ' properties', 'maxProperties', array('maxProperties' => $objectDefinition->maxProperties)); +} +} +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php new file mode 100644 index 000000000..0cdd22a39 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php @@ -0,0 +1,94 @@ +getTypeCheck()->propertyExists($element, $this->inlineSchemaProperty)) { + +$validationSchema = $this->getTypeCheck()->propertyGet($element, $this->inlineSchemaProperty); +} else { +throw new InvalidArgumentException('no schema found to verify against'); +} + + +if (is_array($validationSchema)) { +$validationSchema = BaseConstraint::arrayToObjectRecursive($validationSchema); +} + + + +if ($this->factory->getConfig(self::CHECK_MODE_VALIDATE_SCHEMA)) { +if (!$this->getTypeCheck()->isObject($validationSchema)) { +throw new RuntimeException('Cannot validate the schema of a non-object'); +} +if ($this->getTypeCheck()->propertyExists($validationSchema, '$schema')) { +$schemaSpec = $this->getTypeCheck()->propertyGet($validationSchema, '$schema'); +} else { +$schemaSpec = self::DEFAULT_SCHEMA_SPEC; +} + + +$schemaStorage = $this->factory->getSchemaStorage(); +if (!$this->getTypeCheck()->isObject($schemaSpec)) { +$schemaSpec = $schemaStorage->getSchema($schemaSpec); +} + + +$initialErrorCount = $this->numErrors(); +$initialConfig = $this->factory->getConfig(); +$initialContext = $this->factory->getErrorContext(); +$this->factory->removeConfig(self::CHECK_MODE_VALIDATE_SCHEMA | self::CHECK_MODE_APPLY_DEFAULTS); +$this->factory->addConfig(self::CHECK_MODE_TYPE_CAST); +$this->factory->setErrorContext(Validator::ERROR_SCHEMA_VALIDATION); + + +try { +$this->check($validationSchema, $schemaSpec); +} catch (\Exception $e) { +if ($this->factory->getConfig(self::CHECK_MODE_EXCEPTIONS)) { +throw new InvalidSchemaException('Schema did not pass validation', 0, $e); +} +} +if ($this->numErrors() > $initialErrorCount) { +$this->addError($path, 'Schema is not valid', 'schema'); +} + + +$this->factory->setConfig($initialConfig); +$this->factory->setErrorContext($initialContext); +} + + +$this->checkUndefined($element, $validationSchema, $path, $i); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php new file mode 100644 index 000000000..ecfa27213 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php @@ -0,0 +1,60 @@ +maxLength) && $this->strlen($element) > $schema->maxLength) { +$this->addError($path, 'Must be at most ' . $schema->maxLength . ' characters long', 'maxLength', array( +'maxLength' => $schema->maxLength, +)); +} + + +if (isset($schema->minLength) && $this->strlen($element) < $schema->minLength) { +$this->addError($path, 'Must be at least ' . $schema->minLength . ' characters long', 'minLength', array( +'minLength' => $schema->minLength, +)); +} + + +if (isset($schema->pattern) && !preg_match('#' . str_replace('#', '\\#', $schema->pattern) . '#u', $element)) { +$this->addError($path, 'Does not match the regex pattern ' . $schema->pattern, 'pattern', array( +'pattern' => $schema->pattern, +)); +} + +$this->checkFormat($element, $schema, $path, $i); +} + +private function strlen($string) +{ +if (extension_loaded('mbstring')) { +return mb_strlen($string, mb_detect_encoding($string)); +} + + +return strlen($string); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php new file mode 100644 index 000000000..da5017f5c --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php @@ -0,0 +1,68 @@ +{$property}; +} + +return $value[$property]; +} + +public static function propertySet(&$value, $property, $data) +{ +if (is_object($value)) { +$value->{$property} = $data; +} else { +$value[$property] = $data; +} +} + +public static function propertyExists($value, $property) +{ +if (is_object($value)) { +return property_exists($value, $property); +} + +return array_key_exists($property, $value); +} + +public static function propertyCount($value) +{ +if (is_object($value)) { +return count(get_object_vars($value)); +} + +return count($value); +} + + + + + + + + +private static function isAssociativeArray($arr) +{ +return array_keys($arr) !== range(0, count($arr) - 1); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php new file mode 100644 index 000000000..e6a73d2d3 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php @@ -0,0 +1,40 @@ +{$property}; +} + +public static function propertySet(&$value, $property, $data) +{ +$value->{$property} = $data; +} + +public static function propertyExists($value, $property) +{ +return property_exists($value, $property); +} + +public static function propertyCount($value) +{ +if (!is_object($value)) { +return 0; +} + +return count(get_object_vars($value)); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php new file mode 100644 index 000000000..0d08e2de2 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php @@ -0,0 +1,18 @@ + 'an integer', +'number' => 'a number', +'boolean' => 'a boolean', +'object' => 'an object', +'array' => 'an array', +'string' => 'a string', +'null' => 'a null', +'any' => null, +0 => null, +); + + + + +public function check(&$value = null, $schema = null, JsonPointer $path = null, $i = null) +{ +$type = isset($schema->type) ? $schema->type : null; +$isValid = false; +$wording = array(); + +if (is_array($type)) { +$this->validateTypesArray($value, $type, $wording, $isValid, $path); +} elseif (is_object($type)) { +$this->checkUndefined($value, $type, $path); + +return; +} else { +$isValid = $this->validateType($value, $type); +} + +if ($isValid === false) { +if (!is_array($type)) { +$this->validateTypeNameWording($type); +$wording[] = self::$wording[$type]; +} +$this->addError($path, ucwords(gettype($value)) . ' value found, but ' . +$this->implodeWith($wording, ', ', 'or') . ' is required', 'type'); +} +} + + + + + + + + + + + + +protected function validateTypesArray(&$value, array $type, &$validTypesWording, &$isValid, $path) +{ +foreach ($type as $tp) { + + +if (is_object($tp)) { +if (!$isValid) { +$validator = $this->factory->createInstanceFor('type'); +$subSchema = new \stdClass(); +$subSchema->type = $tp; +$validator->check($value, $subSchema, $path, null); +$error = $validator->getErrors(); +$isValid = !(bool) $error; +$validTypesWording[] = self::$wording['object']; +} +} else { +$this->validateTypeNameWording($tp); +$validTypesWording[] = self::$wording[$tp]; +if (!$isValid) { +$isValid = $this->validateType($value, $tp); +} +} +} +} + + + + + + + + + + + + +protected function implodeWith(array $elements, $delimiter = ', ', $listEnd = false) +{ +if ($listEnd === false || !isset($elements[1])) { +return implode($delimiter, $elements); +} +$lastElement = array_slice($elements, -1); +$firsElements = join($delimiter, array_slice($elements, 0, -1)); +$implodedElements = array_merge(array($firsElements), $lastElement); + +return join(" $listEnd ", $implodedElements); +} + + + + + + + + + +protected function validateTypeNameWording($type) +{ +if (!array_key_exists($type, self::$wording)) { +throw new StandardUnexpectedValueException( +sprintf( +'No wording for %s available, expected wordings are: [%s]', +var_export($type, true), +implode(', ', array_filter(self::$wording))) +); +} +} + + + + + + + + + + + +protected function validateType(&$value, $type) +{ + +if (!$type) { +return true; +} + +if ('any' === $type) { +return true; +} + +if ('object' === $type) { +return $this->getTypeCheck()->isObject($value); +} + +if ('array' === $type) { +return $this->getTypeCheck()->isArray($value); +} + +$coerce = $this->factory->getConfig(Constraint::CHECK_MODE_COERCE_TYPES); + +if ('integer' === $type) { +if ($coerce) { +$value = $this->toInteger($value); +} + +return is_int($value); +} + +if ('number' === $type) { +if ($coerce) { +$value = $this->toNumber($value); +} + +return is_numeric($value) && !is_string($value); +} + +if ('boolean' === $type) { +if ($coerce) { +$value = $this->toBoolean($value); +} + +return is_bool($value); +} + +if ('string' === $type) { +return is_string($value); +} + +if ('email' === $type) { +return is_string($value); +} + +if ('null' === $type) { +return is_null($value); +} + +throw new InvalidArgumentException((is_object($value) ? 'object' : $value) . ' is an invalid type for ' . $type); +} + + + + + + + + +protected function toBoolean($value) +{ +if ($value === 'true') { +return true; +} + +if ($value === 'false') { +return false; +} + +return $value; +} + + + + + + + + +protected function toNumber($value) +{ +if (is_numeric($value)) { +return $value + 0; +} + +return $value; +} + +protected function toInteger($value) +{ +if (is_numeric($value) && (int) $value == $value) { +return (int) $value; +} + +return $value; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php new file mode 100644 index 000000000..4fd490a74 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php @@ -0,0 +1,419 @@ +incrementPath($path ?: new JsonPointer(''), $i); +if ($fromDefault) { +$path->setFromDefault(); +} + + +$this->validateCommonProperties($value, $schema, $path, $i); + + +$this->validateOfProperties($value, $schema, $path, ''); + + +$this->validateTypes($value, $schema, $path, $i); +} + + + + + + + + + +public function validateTypes(&$value, $schema, JsonPointer $path, $i = null) +{ + +if ($this->getTypeCheck()->isArray($value)) { +$this->checkArray($value, $schema, $path, $i); +} + + +if (LooseTypeCheck::isObject($value)) { + + +$this->checkObject( +$value, +$schema, +$path, +isset($schema->properties) ? $schema->properties : null, +isset($schema->additionalProperties) ? $schema->additionalProperties : null, +isset($schema->patternProperties) ? $schema->patternProperties : null, +$this->appliedDefaults +); +} + + +if (is_string($value)) { +$this->checkString($value, $schema, $path, $i); +} + + +if (is_numeric($value)) { +$this->checkNumber($value, $schema, $path, $i); +} + + +if (isset($schema->enum)) { +$this->checkEnum($value, $schema, $path, $i); +} +} + + + + + + + + + +protected function validateCommonProperties(&$value, $schema, JsonPointer $path, $i = '') +{ + +if (isset($schema->extends)) { +if (is_string($schema->extends)) { +$schema->extends = $this->validateUri($schema, $schema->extends); +} +if (is_array($schema->extends)) { +foreach ($schema->extends as $extends) { +$this->checkUndefined($value, $extends, $path, $i); +} +} else { +$this->checkUndefined($value, $schema->extends, $path, $i); +} +} + + +if (!$path->fromDefault()) { +$this->applyDefaultValues($value, $schema, $path); +} + + +if ($this->getTypeCheck()->isObject($value)) { +if (!($value instanceof self) && isset($schema->required) && is_array($schema->required)) { + +foreach ($schema->required as $required) { +if (!$this->getTypeCheck()->propertyExists($value, $required)) { +$this->addError( +$this->incrementPath($path ?: new JsonPointer(''), $required), +'The property ' . $required . ' is required', +'required' +); +} +} +} elseif (isset($schema->required) && !is_array($schema->required)) { + +if ($schema->required && $value instanceof self) { +$propertyPaths = $path->getPropertyPaths(); +$propertyName = end($propertyPaths); +$this->addError( +$path, +'The property ' . $propertyName . ' is required', +'required' +); +} +} else { + + +if ($value instanceof self) { +return; +} +} +} + + +if (!($value instanceof self)) { +$this->checkType($value, $schema, $path, $i); +} + + +if (isset($schema->disallow)) { +$initErrors = $this->getErrors(); + +$typeSchema = new \stdClass(); +$typeSchema->type = $schema->disallow; +$this->checkType($value, $typeSchema, $path); + + +if (count($this->getErrors()) == count($initErrors)) { +$this->addError($path, 'Disallowed value was matched', 'disallow'); +} else { +$this->errors = $initErrors; +} +} + +if (isset($schema->not)) { +$initErrors = $this->getErrors(); +$this->checkUndefined($value, $schema->not, $path, $i); + + +if (count($this->getErrors()) == count($initErrors)) { +$this->addError($path, 'Matched a schema which it should not', 'not'); +} else { +$this->errors = $initErrors; +} +} + + +if (isset($schema->dependencies) && $this->getTypeCheck()->isObject($value)) { +$this->validateDependencies($value, $schema->dependencies, $path); +} +} + + + + + + + + + + +private function shouldApplyDefaultValue($requiredOnly, $schema, $name = null, $parentSchema = null) +{ + +if (!$requiredOnly) { +return true; +} + +if ( +$name !== null +&& isset($parentSchema->required) +&& is_array($parentSchema->required) +&& in_array($name, $parentSchema->required) +) { +return true; +} + +if (isset($schema->required) && !is_array($schema->required) && $schema->required) { +return true; +} + +return false; +} + + + + + + + + +protected function applyDefaultValues(&$value, $schema, $path) +{ + +if (!$this->factory->getConfig(self::CHECK_MODE_APPLY_DEFAULTS)) { +return; +} + + +$requiredOnly = $this->factory->getConfig(self::CHECK_MODE_ONLY_REQUIRED_DEFAULTS); +if (isset($schema->properties) && LooseTypeCheck::isObject($value)) { + +foreach ($schema->properties as $currentProperty => $propertyDefinition) { +$propertyDefinition = $this->factory->getSchemaStorage()->resolveRefSchema($propertyDefinition); +if ( +!LooseTypeCheck::propertyExists($value, $currentProperty) +&& property_exists($propertyDefinition, 'default') +&& $this->shouldApplyDefaultValue($requiredOnly, $propertyDefinition, $currentProperty, $schema) +) { + +if (is_object($propertyDefinition->default)) { +LooseTypeCheck::propertySet($value, $currentProperty, clone $propertyDefinition->default); +} else { +LooseTypeCheck::propertySet($value, $currentProperty, $propertyDefinition->default); +} +$this->appliedDefaults[] = $currentProperty; +} +} +} elseif (isset($schema->items) && LooseTypeCheck::isArray($value)) { +$items = array(); +if (LooseTypeCheck::isArray($schema->items)) { +$items = $schema->items; +} elseif (isset($schema->minItems) && count($value) < $schema->minItems) { +$items = array_fill(count($value), $schema->minItems - count($value), $schema->items); +} + +foreach ($items as $currentItem => $itemDefinition) { +$itemDefinition = $this->factory->getSchemaStorage()->resolveRefSchema($itemDefinition); +if ( +!array_key_exists($currentItem, $value) +&& property_exists($itemDefinition, 'default') +&& $this->shouldApplyDefaultValue($requiredOnly, $itemDefinition)) { +if (is_object($itemDefinition->default)) { +$value[$currentItem] = clone $itemDefinition->default; +} else { +$value[$currentItem] = $itemDefinition->default; +} +} +$path->setFromDefault(); +} +} elseif ( +$value instanceof self +&& property_exists($schema, 'default') +&& $this->shouldApplyDefaultValue($requiredOnly, $schema)) { + +$value = is_object($schema->default) ? clone $schema->default : $schema->default; +$path->setFromDefault(); +} +} + + + + + + + + + +protected function validateOfProperties(&$value, $schema, JsonPointer $path, $i = '') +{ + +if ($value instanceof self) { +return; +} + +if (isset($schema->allOf)) { +$isValid = true; +foreach ($schema->allOf as $allOf) { +$initErrors = $this->getErrors(); +$this->checkUndefined($value, $allOf, $path, $i); +$isValid = $isValid && (count($this->getErrors()) == count($initErrors)); +} +if (!$isValid) { +$this->addError($path, 'Failed to match all schemas', 'allOf'); +} +} + +if (isset($schema->anyOf)) { +$isValid = false; +$startErrors = $this->getErrors(); +$caughtException = null; +foreach ($schema->anyOf as $anyOf) { +$initErrors = $this->getErrors(); +try { +$this->checkUndefined($value, $anyOf, $path, $i); +if ($isValid = (count($this->getErrors()) == count($initErrors))) { +break; +} +} catch (ValidationException $e) { +$isValid = false; +} +} +if (!$isValid) { +$this->addError($path, 'Failed to match at least one schema', 'anyOf'); +} else { +$this->errors = $startErrors; +} +} + +if (isset($schema->oneOf)) { +$allErrors = array(); +$matchedSchemas = 0; +$startErrors = $this->getErrors(); +foreach ($schema->oneOf as $oneOf) { +try { +$this->errors = array(); +$this->checkUndefined($value, $oneOf, $path, $i); +if (count($this->getErrors()) == 0) { +$matchedSchemas++; +} +$allErrors = array_merge($allErrors, array_values($this->getErrors())); +} catch (ValidationException $e) { + + +} +} +if ($matchedSchemas !== 1) { +$this->addErrors(array_merge($allErrors, $startErrors)); +$this->addError($path, 'Failed to match exactly one schema', 'oneOf'); +} else { +$this->errors = $startErrors; +} +} +} + + + + + + + + + +protected function validateDependencies($value, $dependencies, JsonPointer $path, $i = '') +{ +foreach ($dependencies as $key => $dependency) { +if ($this->getTypeCheck()->propertyExists($value, $key)) { +if (is_string($dependency)) { + +if (!$this->getTypeCheck()->propertyExists($value, $dependency)) { +$this->addError($path, "$key depends on $dependency and $dependency is missing", 'dependencies'); +} +} elseif (is_array($dependency)) { + +foreach ($dependency as $d) { +if (!$this->getTypeCheck()->propertyExists($value, $d)) { +$this->addError($path, "$key depends on $d and $d is missing", 'dependencies'); +} +} +} elseif (is_object($dependency)) { + +$this->checkUndefined($value, $dependency, $path, $i); +} +} +} +} + +protected function validateUri($schema, $schemaUri = null) +{ +$resolver = new UriResolver(); +$retriever = $this->factory->getUriRetriever(); + +$jsonSchema = null; +if ($resolver->isValid($schemaUri)) { +$schemaId = property_exists($schema, 'id') ? $schema->id : null; +$jsonSchema = $retriever->retrieve($schemaId, $schemaUri); +} + +return $jsonSchema; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php new file mode 100644 index 000000000..75c43f46d --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php @@ -0,0 +1,161 @@ +filename = $splitRef[0]; +if (array_key_exists(1, $splitRef)) { +$this->propertyPaths = $this->decodePropertyPaths($splitRef[1]); +} +} + + + + + + +private function decodePropertyPaths($propertyPathString) +{ +$paths = array(); +foreach (explode('/', trim($propertyPathString, '/')) as $path) { +$path = $this->decodePath($path); +if (is_string($path) && '' !== $path) { +$paths[] = $path; +} +} + +return $paths; +} + + + + +private function encodePropertyPaths() +{ +return array_map( +array($this, 'encodePath'), +$this->getPropertyPaths() +); +} + + + + + + +private function decodePath($path) +{ +return strtr($path, array('~1' => '/', '~0' => '~', '%25' => '%')); +} + + + + + + +private function encodePath($path) +{ +return strtr($path, array('/' => '~1', '~' => '~0', '%' => '%25')); +} + + + + +public function getFilename() +{ +return $this->filename; +} + + + + +public function getPropertyPaths() +{ +return $this->propertyPaths; +} + + + + + + +public function withPropertyPaths(array $propertyPaths) +{ +$new = clone $this; +$new->propertyPaths = $propertyPaths; + +return $new; +} + + + + +public function getPropertyPathAsString() +{ +return rtrim('#/' . implode('/', $this->encodePropertyPaths()), '/'); +} + + + + +public function __toString() +{ +return $this->getFilename() . $this->getPropertyPathAsString(); +} + + + + +public function setFromDefault() +{ +$this->fromDefault = true; +} + + + + + + +public function fromDefault() +{ +return $this->fromDefault; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php new file mode 100644 index 000000000..439bd277e --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php @@ -0,0 +1,7 @@ +object = $object; +} + + + + +public function current() +{ +$this->initialize(); + +return $this->data[$this->position]; +} + + + + +public function next() +{ +$this->initialize(); +$this->position++; +} + + + + +public function key() +{ +$this->initialize(); + +return $this->position; +} + + + + +public function valid() +{ +$this->initialize(); + +return isset($this->data[$this->position]); +} + + + + +public function rewind() +{ +$this->initialize(); +$this->position = 0; +} + + + + +public function count() +{ +$this->initialize(); + +return count($this->data); +} + + + + +private function initialize() +{ +if (!$this->initialized) { +$this->data = $this->buildDataFromObject($this->object); +$this->initialized = true; +} +} + + + + + + +private function buildDataFromObject($object) +{ +$result = array(); + +$stack = new \SplStack(); +$stack->push($object); + +while (!$stack->isEmpty()) { +$current = $stack->pop(); +if (is_object($current)) { +array_push($result, $current); +} + +foreach ($this->getDataFromItem($current) as $propertyName => $propertyValue) { +if (is_object($propertyValue) || is_array($propertyValue)) { +$stack->push($propertyValue); +} +} +} + +return $result; +} + + + + + + +private function getDataFromItem($item) +{ +if (!is_object($item) && !is_array($item)) { +return array(); +} + +return is_object($item) ? get_object_vars($item) : $item; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php new file mode 100644 index 000000000..7ed61d6cd --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php @@ -0,0 +1,30 @@ +uriRetriever = $uriRetriever ?: new UriRetriever(); +$this->uriResolver = $uriResolver ?: new UriResolver(); +} + + + + +public function getUriRetriever() +{ +return $this->uriRetriever; +} + + + + +public function getUriResolver() +{ +return $this->uriResolver; +} + + + + +public function addSchema($id, $schema = null) +{ +if (is_null($schema) && $id !== self::INTERNAL_PROVIDED_SCHEMA_URI) { + + + +$schema = $this->uriRetriever->retrieve($id); +} + + +if (is_array($schema)) { +$schema = BaseConstraint::arrayToObjectRecursive($schema); +} + + + +if (is_object($schema) && property_exists($schema, 'id')) { +if ($schema->id == 'http://json-schema.org/draft-04/schema#') { +$schema->properties->id->format = 'uri-reference'; +} elseif ($schema->id == 'http://json-schema.org/draft-03/schema#') { +$schema->properties->id->format = 'uri-reference'; +$schema->properties->{'$ref'}->format = 'uri-reference'; +} +} + + +$this->expandRefs($schema, $id); + +$this->schemas[$id] = $schema; +} + + + + + + + +private function expandRefs(&$schema, $base = null) +{ +if (!is_object($schema)) { +if (is_array($schema)) { +foreach ($schema as &$member) { +$this->expandRefs($member, $base); +} +} + +return; +} + +if (property_exists($schema, 'id') && is_string($schema->id) && $base != $schema->id) { +$base = $this->uriResolver->resolve($schema->id, $base); +} + +if (property_exists($schema, '$ref') && is_string($schema->{'$ref'})) { +$refPointer = new JsonPointer($this->uriResolver->resolve($schema->{'$ref'}, $base)); +$schema->{'$ref'} = (string) $refPointer; +} + +foreach ($schema as &$member) { +$this->expandRefs($member, $base); +} +} + + + + +public function getSchema($id) +{ +if (!array_key_exists($id, $this->schemas)) { +$this->addSchema($id); +} + +return $this->schemas[$id]; +} + + + + +public function resolveRef($ref) +{ +$jsonPointer = new JsonPointer($ref); + + +$fileName = $jsonPointer->getFilename(); +if (!strlen($fileName)) { +throw new UnresolvableJsonPointerException(sprintf( +"Could not resolve fragment '%s': no file is defined", +$jsonPointer->getPropertyPathAsString() +)); +} + + +$refSchema = $this->getSchema($fileName); +foreach ($jsonPointer->getPropertyPaths() as $path) { +if (is_object($refSchema) && property_exists($refSchema, $path)) { +$refSchema = $this->resolveRefSchema($refSchema->{$path}); +} elseif (is_array($refSchema) && array_key_exists($path, $refSchema)) { +$refSchema = $this->resolveRefSchema($refSchema[$path]); +} else { +throw new UnresolvableJsonPointerException(sprintf( +'File: %s is found, but could not resolve fragment: %s', +$jsonPointer->getFilename(), +$jsonPointer->getPropertyPathAsString() +)); +} +} + +return $refSchema; +} + + + + +public function resolveRefSchema($refSchema) +{ +if (is_object($refSchema) && property_exists($refSchema, '$ref') && is_string($refSchema->{'$ref'})) { +$newSchema = $this->resolveRef($refSchema->{'$ref'}); +$refSchema = (object) (get_object_vars($refSchema) + get_object_vars($newSchema)); +unset($refSchema->{'$ref'}); +} + +return $refSchema; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php new file mode 100644 index 000000000..4def56b13 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php @@ -0,0 +1,41 @@ +contentType; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php new file mode 100644 index 000000000..53f5a249d --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php @@ -0,0 +1,83 @@ +fetchMessageBody($response); +$this->fetchContentType($response); + +curl_close($ch); + +return $this->messageBody; +} + + + + +private function fetchMessageBody($response) +{ +preg_match("/(?:\r\n){2}(.*)$/ms", $response, $match); +$this->messageBody = $match[1]; +} + + + + + + +protected function fetchContentType($response) +{ +if (0 < preg_match("/Content-Type:(\V*)/ims", $response, $match)) { +$this->contentType = trim($match[1]); + +return true; +} + +return false; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php new file mode 100644 index 000000000..3d810300d --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php @@ -0,0 +1,93 @@ +messageBody = $response; +if (!empty($http_response_header)) { + + +$this->fetchContentType($http_response_header); +} else { + +$this->contentType = null; +} + +return $this->messageBody; +} + + + + + + +private function fetchContentType(array $headers) +{ +foreach ($headers as $header) { +if ($this->contentType = self::getContentTypeMatchInHeader($header)) { +return true; +} +} + +return false; +} + + + + + + +protected static function getContentTypeMatchInHeader($header) +{ +if (0 < preg_match("/Content-Type:(\V*)/ims", $header, $match)) { +return trim($match[1]); +} + +return null; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php new file mode 100644 index 000000000..606daef00 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php @@ -0,0 +1,56 @@ +schemas = $schemas; +$this->contentType = $contentType; +} + + + + + + +public function retrieve($uri) +{ +if (!array_key_exists($uri, $this->schemas)) { +throw new \JsonSchema\Exception\ResourceNotFoundException(sprintf( +'The JSON schema "%s" was not found.', +$uri +)); +} + +return $this->schemas[$uri]; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php new file mode 100644 index 000000000..d8cdfa114 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php @@ -0,0 +1,36 @@ + $match[2], +'authority' => $match[4], +'path' => $match[5] +); +} +if (7 < count($match)) { +$components['query'] = $match[7]; +} +if (9 < count($match)) { +$components['fragment'] = $match[9]; +} + +return $components; +} + + + + + + + + +public function generate(array $components) +{ +$uri = $components['scheme'] . '://' +. $components['authority'] +. $components['path']; + +if (array_key_exists('query', $components) && strlen($components['query'])) { +$uri .= '?' . $components['query']; +} +if (array_key_exists('fragment', $components)) { +$uri .= '#' . $components['fragment']; +} + +return $uri; +} + + + + +public function resolve($uri, $baseUri = null) +{ + +if ( +!is_null($baseUri) && +!filter_var($baseUri, \FILTER_VALIDATE_URL) && +!preg_match('|^[^/]+://|u', $baseUri) +) { +if (is_file($baseUri)) { +$baseUri = 'file://' . realpath($baseUri); +} elseif (is_dir($baseUri)) { +$baseUri = 'file://' . realpath($baseUri) . '/'; +} else { +$baseUri = 'file://' . getcwd() . '/' . $baseUri; +} +} + +if ($uri == '') { +return $baseUri; +} + +$components = $this->parse($uri); +$path = $components['path']; + +if (!empty($components['scheme'])) { +return $uri; +} +$baseComponents = $this->parse($baseUri); +$basePath = $baseComponents['path']; + +$baseComponents['path'] = self::combineRelativePathWithBasePath($path, $basePath); +if (isset($components['fragment'])) { +$baseComponents['fragment'] = $components['fragment']; +} + +return $this->generate($baseComponents); +} + + + + + + + + + + + +public static function combineRelativePathWithBasePath($relativePath, $basePath) +{ +$relativePath = self::normalizePath($relativePath); +if ($relativePath == '') { +return $basePath; +} +if ($relativePath[0] == '/') { +return $relativePath; +} + +$basePathSegments = explode('/', $basePath); + +preg_match('|^/?(\.\./(?:\./)*)*|', $relativePath, $match); +$numLevelUp = strlen($match[0]) /3 + 1; +if ($numLevelUp >= count($basePathSegments)) { +throw new UriResolverException(sprintf("Unable to resolve URI '%s' from base '%s'", $relativePath, $basePath)); +} + +$basePathSegments = array_slice($basePathSegments, 0, -$numLevelUp); +$path = preg_replace('|^/?(\.\./(\./)*)*|', '', $relativePath); + +return implode('/', $basePathSegments) . '/' . $path; +} + + + + + + + + +private static function normalizePath($path) +{ +$path = preg_replace('|((?parse($uri); + +return !empty($components); +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php new file mode 100644 index 000000000..6cdfd8911 --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php @@ -0,0 +1,349 @@ + 'package://dist/schema/json-schema-draft-$1.json' +); + + + + +protected $allowedInvalidContentTypeEndpoints = array( +'http://json-schema.org/', +'https://json-schema.org/' +); + + + + +protected $uriRetriever = null; + + + + + + +private $schemaCache = array(); + + + + + + +public function addInvalidContentTypeEndpoint($endpoint) +{ +$this->allowedInvalidContentTypeEndpoints[] = $endpoint; +} + + + + + + + + + +public function confirmMediaType($uriRetriever, $uri) +{ +$contentType = $uriRetriever->getContentType(); + +if (is_null($contentType)) { + +return; +} + +if (in_array($contentType, array(Validator::SCHEMA_MEDIA_TYPE, 'application/json'))) { +return; +} + +foreach ($this->allowedInvalidContentTypeEndpoints as $endpoint) { +if (strpos($uri, $endpoint) === 0) { +return true; +} +} + +throw new InvalidSchemaMediaTypeException(sprintf('Media type %s expected', Validator::SCHEMA_MEDIA_TYPE)); +} + + + + + + + + + +public function getUriRetriever() +{ +if (is_null($this->uriRetriever)) { +$this->setUriRetriever(new FileGetContents()); +} + +return $this->uriRetriever; +} + + + + + + + + + + + + + + + +public function resolvePointer($jsonSchema, $uri) +{ +$resolver = new UriResolver(); +$parsed = $resolver->parse($uri); +if (empty($parsed['fragment'])) { +return $jsonSchema; +} + +$path = explode('/', $parsed['fragment']); +while ($path) { +$pathElement = array_shift($path); +if (!empty($pathElement)) { +$pathElement = str_replace('~1', '/', $pathElement); +$pathElement = str_replace('~0', '~', $pathElement); +if (!empty($jsonSchema->$pathElement)) { +$jsonSchema = $jsonSchema->$pathElement; +} else { +throw new ResourceNotFoundException( +'Fragment "' . $parsed['fragment'] . '" not found' +. ' in ' . $uri +); +} + +if (!is_object($jsonSchema)) { +throw new ResourceNotFoundException( +'Fragment part "' . $pathElement . '" is no object ' +. ' in ' . $uri +); +} +} +} + +return $jsonSchema; +} + + + + +public function retrieve($uri, $baseUri = null, $translate = true) +{ +$resolver = new UriResolver(); +$resolvedUri = $fetchUri = $resolver->resolve($uri, $baseUri); + + +$arParts = $resolver->parse($resolvedUri); +if (isset($arParts['fragment'])) { +unset($arParts['fragment']); +$fetchUri = $resolver->generate($arParts); +} + + +if ($translate) { +$fetchUri = $this->translate($fetchUri); +} + +$jsonSchema = $this->loadSchema($fetchUri); + + +$jsonSchema = $this->resolvePointer($jsonSchema, $resolvedUri); + +if ($jsonSchema instanceof \stdClass) { +$jsonSchema->id = $resolvedUri; +} + +return $jsonSchema; +} + + + + + + + + + +protected function loadSchema($fetchUri) +{ +if (isset($this->schemaCache[$fetchUri])) { +return $this->schemaCache[$fetchUri]; +} + +$uriRetriever = $this->getUriRetriever(); +$contents = $this->uriRetriever->retrieve($fetchUri); +$this->confirmMediaType($uriRetriever, $fetchUri); +$jsonSchema = json_decode($contents); + +if (JSON_ERROR_NONE < $error = json_last_error()) { +throw new JsonDecodingException($error); +} + +$this->schemaCache[$fetchUri] = $jsonSchema; + +return $jsonSchema; +} + + + + + + + + +public function setUriRetriever(UriRetrieverInterface $uriRetriever) +{ +$this->uriRetriever = $uriRetriever; + +return $this; +} + + + + + + + + +public function parse($uri) +{ +preg_match('|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?|', $uri, $match); + +$components = array(); +if (5 < count($match)) { +$components = array( +'scheme' => $match[2], +'authority' => $match[4], +'path' => $match[5] +); +} + +if (7 < count($match)) { +$components['query'] = $match[7]; +} + +if (9 < count($match)) { +$components['fragment'] = $match[9]; +} + +return $components; +} + + + + + + + + +public function generate(array $components) +{ +$uri = $components['scheme'] . '://' +. $components['authority'] +. $components['path']; + +if (array_key_exists('query', $components)) { +$uri .= $components['query']; +} + +if (array_key_exists('fragment', $components)) { +$uri .= $components['fragment']; +} + +return $uri; +} + + + + + + + + + +public function resolve($uri, $baseUri = null) +{ +$components = $this->parse($uri); +$path = $components['path']; + +if ((array_key_exists('scheme', $components)) && ('http' === $components['scheme'])) { +return $uri; +} + +$baseComponents = $this->parse($baseUri); +$basePath = $baseComponents['path']; + +$baseComponents['path'] = UriResolver::combineRelativePathWithBasePath($path, $basePath); + +return $this->generate($baseComponents); +} + + + + + + +public function isValid($uri) +{ +$components = $this->parse($uri); + +return !empty($components); +} + + + + +public function setTranslation($from, $to) +{ +$this->translationMap[$from] = $to; +} + + + + +public function translate($uri) +{ +foreach ($this->translationMap as $from => $to) { +$uri = preg_replace($from, $to, $uri); +} + + +$uri = preg_replace('|^package://|', sprintf('file://%s/', realpath(__DIR__ . '/../../..')), $uri); + +return $uri; +} +} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php new file mode 100644 index 000000000..30d06c2cc --- /dev/null +++ b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php @@ -0,0 +1,26 @@ +factory->getConfig(); +if ($checkMode !== null) { +$this->factory->setConfig($checkMode); +} + + +if (is_object($schema) && property_exists($schema, 'id')) { +$schemaURI = $schema->id; +} else { +$schemaURI = SchemaStorage::INTERNAL_PROVIDED_SCHEMA_URI; +} +$this->factory->getSchemaStorage()->addSchema($schemaURI, $schema); + +$validator = $this->factory->createInstanceFor('schema'); +$validator->check( +$value, +$this->factory->getSchemaStorage()->getSchema($schemaURI) +); + +$this->factory->setConfig($initialCheckMode); + +$this->addErrors(array_unique($validator->getErrors(), SORT_REGULAR)); + +return $validator->getErrorMask(); +} + + + + +public function check($value, $schema) +{ +return $this->validate($value, $schema); +} + + + + +public function coerce(&$value, $schema) +{ +return $this->validate($value, $schema, Constraint::CHECK_MODE_COERCE_TYPES); +} +} diff --git a/composer/vendor/psr/container/LICENSE b/composer/vendor/psr/container/LICENSE new file mode 100644 index 000000000..307d5a599 --- /dev/null +++ b/composer/vendor/psr/container/LICENSE @@ -0,0 +1,23 @@ + +The MIT License (MIT) + +Copyright (c) 2013-2016 container-interop +Copyright (c) 2016 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/composer/vendor/psr/container/src/ContainerExceptionInterface.php b/composer/vendor/psr/container/src/ContainerExceptionInterface.php new file mode 100644 index 000000000..6126aa164 --- /dev/null +++ b/composer/vendor/psr/container/src/ContainerExceptionInterface.php @@ -0,0 +1,10 @@ +log(LogLevel::EMERGENCY, $message, $context); +} + + + + + + + + + + + + +public function alert($message, array $context = array()) +{ +$this->log(LogLevel::ALERT, $message, $context); +} + + + + + + + + + + + +public function critical($message, array $context = array()) +{ +$this->log(LogLevel::CRITICAL, $message, $context); +} + + + + + + + + + + +public function error($message, array $context = array()) +{ +$this->log(LogLevel::ERROR, $message, $context); +} + + + + + + + + + + + + +public function warning($message, array $context = array()) +{ +$this->log(LogLevel::WARNING, $message, $context); +} + + + + + + + + + +public function notice($message, array $context = array()) +{ +$this->log(LogLevel::NOTICE, $message, $context); +} + + + + + + + + + + + +public function info($message, array $context = array()) +{ +$this->log(LogLevel::INFO, $message, $context); +} + + + + + + + + + +public function debug($message, array $context = array()) +{ +$this->log(LogLevel::DEBUG, $message, $context); +} +} diff --git a/composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php new file mode 100644 index 000000000..67f852d1d --- /dev/null +++ b/composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php @@ -0,0 +1,7 @@ +logger = $logger; +} +} diff --git a/composer/vendor/psr/log/Psr/Log/LoggerInterface.php b/composer/vendor/psr/log/Psr/Log/LoggerInterface.php new file mode 100644 index 000000000..a29608db3 --- /dev/null +++ b/composer/vendor/psr/log/Psr/Log/LoggerInterface.php @@ -0,0 +1,125 @@ +log(LogLevel::EMERGENCY, $message, $context); +} + + + + + + + + + + + + +public function alert($message, array $context = array()) +{ +$this->log(LogLevel::ALERT, $message, $context); +} + + + + + + + + + + + +public function critical($message, array $context = array()) +{ +$this->log(LogLevel::CRITICAL, $message, $context); +} + + + + + + + + + + +public function error($message, array $context = array()) +{ +$this->log(LogLevel::ERROR, $message, $context); +} + + + + + + + + + + + + +public function warning($message, array $context = array()) +{ +$this->log(LogLevel::WARNING, $message, $context); +} + + + + + + + + + +public function notice($message, array $context = array()) +{ +$this->log(LogLevel::NOTICE, $message, $context); +} + + + + + + + + + + + +public function info($message, array $context = array()) +{ +$this->log(LogLevel::INFO, $message, $context); +} + + + + + + + + + +public function debug($message, array $context = array()) +{ +$this->log(LogLevel::DEBUG, $message, $context); +} + + + + + + + + + + + + +abstract public function log($level, $message, array $context = array()); +} diff --git a/composer/vendor/psr/log/Psr/Log/NullLogger.php b/composer/vendor/psr/log/Psr/Log/NullLogger.php new file mode 100644 index 000000000..03eb9f5ff --- /dev/null +++ b/composer/vendor/psr/log/Psr/Log/NullLogger.php @@ -0,0 +1,30 @@ +assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger()); +} + + + + +public function testLogsAtAllLevels($level, $message) +{ +$logger = $this->getLogger(); +$logger->{$level}($message, array('user' => 'Bob')); +$logger->log($level, $message, array('user' => 'Bob')); + +$expected = array( +$level.' message of level '.$level.' with context: Bob', +$level.' message of level '.$level.' with context: Bob', +); +$this->assertEquals($expected, $this->getLogs()); +} + +public function provideLevelsAndMessages() +{ +return array( +LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), +LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'), +LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'), +LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'), +LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'), +LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'), +LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'), +LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'), +); +} + + + + +public function testThrowsOnInvalidLevel() +{ +$logger = $this->getLogger(); +$logger->log('invalid level', 'Foo'); +} + +public function testContextReplacement() +{ +$logger = $this->getLogger(); +$logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); + +$expected = array('info {Message {nothing} Bob Bar a}'); +$this->assertEquals($expected, $this->getLogs()); +} + +public function testObjectCastToString() +{ +if (method_exists($this, 'createPartialMock')) { +$dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString')); +} else { +$dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); +} +$dummy->expects($this->once()) +->method('__toString') +->will($this->returnValue('DUMMY')); + +$this->getLogger()->warning($dummy); + +$expected = array('warning DUMMY'); +$this->assertEquals($expected, $this->getLogs()); +} + +public function testContextCanContainAnything() +{ +$closed = fopen('php://memory', 'r'); +fclose($closed); + +$context = array( +'bool' => true, +'null' => null, +'string' => 'Foo', +'int' => 0, +'float' => 0.5, +'nested' => array('with object' => new DummyTest), +'object' => new \DateTime, +'resource' => fopen('php://memory', 'r'), +'closed' => $closed, +); + +$this->getLogger()->warning('Crazy context data', $context); + +$expected = array('warning Crazy context data'); +$this->assertEquals($expected, $this->getLogs()); +} + +public function testContextExceptionKeyCanBeExceptionOrOtherValues() +{ +$logger = $this->getLogger(); +$logger->warning('Random message', array('exception' => 'oops')); +$logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); + +$expected = array( +'warning Random message', +'critical Uncaught Exception!' +); +$this->assertEquals($expected, $this->getLogs()); +} +} diff --git a/composer/vendor/psr/log/Psr/Log/Test/TestLogger.php b/composer/vendor/psr/log/Psr/Log/Test/TestLogger.php new file mode 100644 index 000000000..66120a2e7 --- /dev/null +++ b/composer/vendor/psr/log/Psr/Log/Test/TestLogger.php @@ -0,0 +1,147 @@ + $level, +'message' => $message, +'context' => $context, +]; + +$this->recordsByLevel[$record['level']][] = $record; +$this->records[] = $record; +} + +public function hasRecords($level) +{ +return isset($this->recordsByLevel[$level]); +} + +public function hasRecord($record, $level) +{ +if (is_string($record)) { +$record = ['message' => $record]; +} +return $this->hasRecordThatPasses(function ($rec) use ($record) { +if ($rec['message'] !== $record['message']) { +return false; +} +if (isset($record['context']) && $rec['context'] !== $record['context']) { +return false; +} +return true; +}, $level); +} + +public function hasRecordThatContains($message, $level) +{ +return $this->hasRecordThatPasses(function ($rec) use ($message) { +return strpos($rec['message'], $message) !== false; +}, $level); +} + +public function hasRecordThatMatches($regex, $level) +{ +return $this->hasRecordThatPasses(function ($rec) use ($regex) { +return preg_match($regex, $rec['message']) > 0; +}, $level); +} + +public function hasRecordThatPasses(callable $predicate, $level) +{ +if (!isset($this->recordsByLevel[$level])) { +return false; +} +foreach ($this->recordsByLevel[$level] as $i => $rec) { +if (call_user_func($predicate, $rec, $i)) { +return true; +} +} +return false; +} + +public function __call($method, $args) +{ +if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { +$genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; +$level = strtolower($matches[2]); +if (method_exists($this, $genericMethod)) { +$args[] = $level; +return call_user_func_array([$this, $genericMethod], $args); +} +} +throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); +} + +public function reset() +{ +$this->records = []; +$this->recordsByLevel = []; +} +} diff --git a/composer/vendor/react/promise/LICENSE b/composer/vendor/react/promise/LICENSE new file mode 100644 index 000000000..1e2c78b9c --- /dev/null +++ b/composer/vendor/react/promise/LICENSE @@ -0,0 +1,26 @@ + +The MIT License (MIT) + +Copyright (c) 2012 Jan Sorgalla, Christian Lück, Cees-Jan Kiewiet, Chris Boden + +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/composer/vendor/react/promise/src/CancellablePromiseInterface.php b/composer/vendor/react/promise/src/CancellablePromiseInterface.php new file mode 100644 index 000000000..e01e4b799 --- /dev/null +++ b/composer/vendor/react/promise/src/CancellablePromiseInterface.php @@ -0,0 +1,17 @@ +started) { +return; +} + +$this->started = true; +$this->drain(); +} + +public function enqueue($cancellable) +{ +if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) { +return; +} + +$length = \array_push($this->queue, $cancellable); + +if ($this->started && 1 === $length) { +$this->drain(); +} +} + +private function drain() +{ +for ($i = key($this->queue); isset($this->queue[$i]); $i++) { +$cancellable = $this->queue[$i]; + +$exception = null; + +try { +$cancellable->cancel(); +} catch (\Throwable $exception) { +} catch (\Exception $exception) { +} + +unset($this->queue[$i]); + +if ($exception) { +throw $exception; +} +} + +$this->queue = []; +} +} diff --git a/composer/vendor/react/promise/src/Deferred.php b/composer/vendor/react/promise/src/Deferred.php new file mode 100644 index 000000000..20baa845f --- /dev/null +++ b/composer/vendor/react/promise/src/Deferred.php @@ -0,0 +1,65 @@ +canceller = $canceller; +} + +public function promise() +{ +if (null === $this->promise) { +$this->promise = new Promise(function ($resolve, $reject, $notify) { +$this->resolveCallback = $resolve; +$this->rejectCallback = $reject; +$this->notifyCallback = $notify; +}, $this->canceller); +$this->canceller = null; +} + +return $this->promise; +} + +public function resolve($value = null) +{ +$this->promise(); + +\call_user_func($this->resolveCallback, $value); +} + +public function reject($reason = null) +{ +$this->promise(); + +\call_user_func($this->rejectCallback, $reason); +} + + + + + +public function notify($update = null) +{ +$this->promise(); + +\call_user_func($this->notifyCallback, $update); +} + + + + + +public function progress($update = null) +{ +$this->notify($update); +} +} diff --git a/composer/vendor/react/promise/src/Exception/LengthException.php b/composer/vendor/react/promise/src/Exception/LengthException.php new file mode 100644 index 000000000..775c48db6 --- /dev/null +++ b/composer/vendor/react/promise/src/Exception/LengthException.php @@ -0,0 +1,7 @@ +value = $value; +} + +public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +if (null === $onFulfilled) { +return $this; +} + +try { +return resolve($onFulfilled($this->value)); +} catch (\Throwable $exception) { +return new RejectedPromise($exception); +} catch (\Exception $exception) { +return new RejectedPromise($exception); +} +} + +public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +if (null === $onFulfilled) { +return; +} + +$result = $onFulfilled($this->value); + +if ($result instanceof ExtendedPromiseInterface) { +$result->done(); +} +} + +public function otherwise(callable $onRejected) +{ +return $this; +} + +public function always(callable $onFulfilledOrRejected) +{ +return $this->then(function ($value) use ($onFulfilledOrRejected) { +return resolve($onFulfilledOrRejected())->then(function () use ($value) { +return $value; +}); +}); +} + +public function progress(callable $onProgress) +{ +return $this; +} + +public function cancel() +{ +} +} diff --git a/composer/vendor/react/promise/src/LazyPromise.php b/composer/vendor/react/promise/src/LazyPromise.php new file mode 100644 index 000000000..11eb52ff7 --- /dev/null +++ b/composer/vendor/react/promise/src/LazyPromise.php @@ -0,0 +1,66 @@ +factory = $factory; +} + +public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +return $this->promise()->then($onFulfilled, $onRejected, $onProgress); +} + +public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +return $this->promise()->done($onFulfilled, $onRejected, $onProgress); +} + +public function otherwise(callable $onRejected) +{ +return $this->promise()->otherwise($onRejected); +} + +public function always(callable $onFulfilledOrRejected) +{ +return $this->promise()->always($onFulfilledOrRejected); +} + +public function progress(callable $onProgress) +{ +return $this->promise()->progress($onProgress); +} + +public function cancel() +{ +return $this->promise()->cancel(); +} + + + + + +public function promise() +{ +if (null === $this->promise) { +try { +$this->promise = resolve(\call_user_func($this->factory)); +} catch (\Throwable $exception) { +$this->promise = new RejectedPromise($exception); +} catch (\Exception $exception) { +$this->promise = new RejectedPromise($exception); +} +} + +return $this->promise; +} +} diff --git a/composer/vendor/react/promise/src/Promise.php b/composer/vendor/react/promise/src/Promise.php new file mode 100644 index 000000000..e48ffe417 --- /dev/null +++ b/composer/vendor/react/promise/src/Promise.php @@ -0,0 +1,256 @@ +canceller = $canceller; + + + + +$cb = $resolver; +$resolver = $canceller = null; +$this->call($cb); +} + +public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +if (null !== $this->result) { +return $this->result->then($onFulfilled, $onRejected, $onProgress); +} + +if (null === $this->canceller) { +return new static($this->resolver($onFulfilled, $onRejected, $onProgress)); +} + + + + + + +$parent = $this; +++$parent->requiredCancelRequests; + +return new static( +$this->resolver($onFulfilled, $onRejected, $onProgress), +static function () use (&$parent) { +if (++$parent->cancelRequests >= $parent->requiredCancelRequests) { +$parent->cancel(); +} + +$parent = null; +} +); +} + +public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +if (null !== $this->result) { +return $this->result->done($onFulfilled, $onRejected, $onProgress); +} + +$this->handlers[] = static function (ExtendedPromiseInterface $promise) use ($onFulfilled, $onRejected) { +$promise +->done($onFulfilled, $onRejected); +}; + +if ($onProgress) { +$this->progressHandlers[] = $onProgress; +} +} + +public function otherwise(callable $onRejected) +{ +return $this->then(null, static function ($reason) use ($onRejected) { +if (!_checkTypehint($onRejected, $reason)) { +return new RejectedPromise($reason); +} + +return $onRejected($reason); +}); +} + +public function always(callable $onFulfilledOrRejected) +{ +return $this->then(static function ($value) use ($onFulfilledOrRejected) { +return resolve($onFulfilledOrRejected())->then(function () use ($value) { +return $value; +}); +}, static function ($reason) use ($onFulfilledOrRejected) { +return resolve($onFulfilledOrRejected())->then(function () use ($reason) { +return new RejectedPromise($reason); +}); +}); +} + +public function progress(callable $onProgress) +{ +return $this->then(null, null, $onProgress); +} + +public function cancel() +{ +if (null === $this->canceller || null !== $this->result) { +return; +} + +$canceller = $this->canceller; +$this->canceller = null; + +$this->call($canceller); +} + +private function resolver(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +return function ($resolve, $reject, $notify) use ($onFulfilled, $onRejected, $onProgress) { +if ($onProgress) { +$progressHandler = static function ($update) use ($notify, $onProgress) { +try { +$notify($onProgress($update)); +} catch (\Throwable $e) { +$notify($e); +} catch (\Exception $e) { +$notify($e); +} +}; +} else { +$progressHandler = $notify; +} + +$this->handlers[] = static function (ExtendedPromiseInterface $promise) use ($onFulfilled, $onRejected, $resolve, $reject, $progressHandler) { +$promise +->then($onFulfilled, $onRejected) +->done($resolve, $reject, $progressHandler); +}; + +$this->progressHandlers[] = $progressHandler; +}; +} + +private function reject($reason = null) +{ +if (null !== $this->result) { +return; +} + +$this->settle(reject($reason)); +} + +private function settle(ExtendedPromiseInterface $promise) +{ +$promise = $this->unwrap($promise); + +if ($promise === $this) { +$promise = new RejectedPromise( +new \LogicException('Cannot resolve a promise with itself.') +); +} + +$handlers = $this->handlers; + +$this->progressHandlers = $this->handlers = []; +$this->result = $promise; +$this->canceller = null; + +foreach ($handlers as $handler) { +$handler($promise); +} +} + +private function unwrap($promise) +{ +$promise = $this->extract($promise); + +while ($promise instanceof self && null !== $promise->result) { +$promise = $this->extract($promise->result); +} + +return $promise; +} + +private function extract($promise) +{ +if ($promise instanceof LazyPromise) { +$promise = $promise->promise(); +} + +return $promise; +} + +private function call(callable $cb) +{ + + +$callback = $cb; +$cb = null; + + + + + + +if (\is_array($callback)) { +$ref = new \ReflectionMethod($callback[0], $callback[1]); +} elseif (\is_object($callback) && !$callback instanceof \Closure) { +$ref = new \ReflectionMethod($callback, '__invoke'); +} else { +$ref = new \ReflectionFunction($callback); +} +$args = $ref->getNumberOfParameters(); + +try { +if ($args === 0) { +$callback(); +} else { + + + + + + + + +$target =& $this; +$progressHandlers =& $this->progressHandlers; + +$callback( +static function ($value = null) use (&$target) { +if ($target !== null) { +$target->settle(resolve($value)); +$target = null; +} +}, +static function ($reason = null) use (&$target) { +if ($target !== null) { +$target->reject($reason); +$target = null; +} +}, +static function ($update = null) use (&$progressHandlers) { +foreach ($progressHandlers as $handler) { +$handler($update); +} +} +); +} +} catch (\Throwable $e) { +$target = null; +$this->reject($e); +} catch (\Exception $e) { +$target = null; +$this->reject($e); +} +} +} diff --git a/composer/vendor/react/promise/src/PromiseInterface.php b/composer/vendor/react/promise/src/PromiseInterface.php new file mode 100644 index 000000000..8070d0841 --- /dev/null +++ b/composer/vendor/react/promise/src/PromiseInterface.php @@ -0,0 +1,41 @@ +reason = $reason; +} + +public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +if (null === $onRejected) { +return $this; +} + +try { +return resolve($onRejected($this->reason)); +} catch (\Throwable $exception) { +return new RejectedPromise($exception); +} catch (\Exception $exception) { +return new RejectedPromise($exception); +} +} + +public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) +{ +if (null === $onRejected) { +throw UnhandledRejectionException::resolve($this->reason); +} + +$result = $onRejected($this->reason); + +if ($result instanceof self) { +throw UnhandledRejectionException::resolve($result->reason); +} + +if ($result instanceof ExtendedPromiseInterface) { +$result->done(); +} +} + +public function otherwise(callable $onRejected) +{ +if (!_checkTypehint($onRejected, $this->reason)) { +return $this; +} + +return $this->then(null, $onRejected); +} + +public function always(callable $onFulfilledOrRejected) +{ +return $this->then(null, function ($reason) use ($onFulfilledOrRejected) { +return resolve($onFulfilledOrRejected())->then(function () use ($reason) { +return new RejectedPromise($reason); +}); +}); +} + +public function progress(callable $onProgress) +{ +return $this; +} + +public function cancel() +{ +} +} diff --git a/composer/vendor/react/promise/src/UnhandledRejectionException.php b/composer/vendor/react/promise/src/UnhandledRejectionException.php new file mode 100644 index 000000000..3030491ba --- /dev/null +++ b/composer/vendor/react/promise/src/UnhandledRejectionException.php @@ -0,0 +1,31 @@ +reason = $reason; + +$message = \sprintf('Unhandled Rejection: %s', \json_encode($reason)); + +parent::__construct($message, 0); +} + +public function getReason() +{ +return $this->reason; +} +} diff --git a/composer/vendor/react/promise/src/functions.php b/composer/vendor/react/promise/src/functions.php new file mode 100644 index 000000000..557cb33b1 --- /dev/null +++ b/composer/vendor/react/promise/src/functions.php @@ -0,0 +1,407 @@ +then($resolve, $reject, $notify); +}, $canceller); +} + +return new FulfilledPromise($promiseOrValue); +} + + + + + + + + + + + + + + + + + +function reject($promiseOrValue = null) +{ +if ($promiseOrValue instanceof PromiseInterface) { +return resolve($promiseOrValue)->then(function ($value) { +return new RejectedPromise($value); +}); +} + +return new RejectedPromise($promiseOrValue); +} + + + + + + + + + + +function all($promisesOrValues) +{ +return map($promisesOrValues, function ($val) { +return $val; +}); +} + + + + + + + + + + + +function race($promisesOrValues) +{ +$cancellationQueue = new CancellationQueue(); +$cancellationQueue->enqueue($promisesOrValues); + +return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $cancellationQueue) { +resolve($promisesOrValues) +->done(function ($array) use ($cancellationQueue, $resolve, $reject, $notify) { +if (!is_array($array) || !$array) { +$resolve(); +return; +} + +foreach ($array as $promiseOrValue) { +$cancellationQueue->enqueue($promiseOrValue); + +resolve($promiseOrValue) +->done($resolve, $reject, $notify); +} +}, $reject, $notify); +}, $cancellationQueue); +} + + + + + + + + + + + + + + + +function any($promisesOrValues) +{ +return some($promisesOrValues, 1) +->then(function ($val) { +return \array_shift($val); +}); +} + + + + + + + + + + + + + + + + + + + +function some($promisesOrValues, $howMany) +{ +$cancellationQueue = new CancellationQueue(); +$cancellationQueue->enqueue($promisesOrValues); + +return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $howMany, $cancellationQueue) { +resolve($promisesOrValues) +->done(function ($array) use ($howMany, $cancellationQueue, $resolve, $reject, $notify) { +if (!\is_array($array) || $howMany < 1) { +$resolve([]); +return; +} + +$len = \count($array); + +if ($len < $howMany) { +throw new Exception\LengthException( +\sprintf( +'Input array must contain at least %d item%s but contains only %s item%s.', +$howMany, +1 === $howMany ? '' : 's', +$len, +1 === $len ? '' : 's' +) +); +} + +$toResolve = $howMany; +$toReject = ($len - $toResolve) + 1; +$values = []; +$reasons = []; + +foreach ($array as $i => $promiseOrValue) { +$fulfiller = function ($val) use ($i, &$values, &$toResolve, $toReject, $resolve) { +if ($toResolve < 1 || $toReject < 1) { +return; +} + +$values[$i] = $val; + +if (0 === --$toResolve) { +$resolve($values); +} +}; + +$rejecter = function ($reason) use ($i, &$reasons, &$toReject, $toResolve, $reject) { +if ($toResolve < 1 || $toReject < 1) { +return; +} + +$reasons[$i] = $reason; + +if (0 === --$toReject) { +$reject($reasons); +} +}; + +$cancellationQueue->enqueue($promiseOrValue); + +resolve($promiseOrValue) +->done($fulfiller, $rejecter, $notify); +} +}, $reject, $notify); +}, $cancellationQueue); +} + + + + + + + + + + + + +function map($promisesOrValues, callable $mapFunc) +{ +$cancellationQueue = new CancellationQueue(); +$cancellationQueue->enqueue($promisesOrValues); + +return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $mapFunc, $cancellationQueue) { +resolve($promisesOrValues) +->done(function ($array) use ($mapFunc, $cancellationQueue, $resolve, $reject, $notify) { +if (!\is_array($array) || !$array) { +$resolve([]); +return; +} + +$toResolve = \count($array); +$values = []; + +foreach ($array as $i => $promiseOrValue) { +$cancellationQueue->enqueue($promiseOrValue); +$values[$i] = null; + +resolve($promiseOrValue) +->then($mapFunc) +->done( +function ($mapped) use ($i, &$values, &$toResolve, $resolve) { +$values[$i] = $mapped; + +if (0 === --$toResolve) { +$resolve($values); +} +}, +$reject, +$notify +); +} +}, $reject, $notify); +}, $cancellationQueue); +} + + + + + + + + + + + + +function reduce($promisesOrValues, callable $reduceFunc, $initialValue = null) +{ +$cancellationQueue = new CancellationQueue(); +$cancellationQueue->enqueue($promisesOrValues); + +return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $reduceFunc, $initialValue, $cancellationQueue) { +resolve($promisesOrValues) +->done(function ($array) use ($reduceFunc, $initialValue, $cancellationQueue, $resolve, $reject, $notify) { +if (!\is_array($array)) { +$array = []; +} + +$total = \count($array); +$i = 0; + + + +$wrappedReduceFunc = function ($current, $val) use ($reduceFunc, $cancellationQueue, $total, &$i) { +$cancellationQueue->enqueue($val); + +return $current +->then(function ($c) use ($reduceFunc, $total, &$i, $val) { +return resolve($val) +->then(function ($value) use ($reduceFunc, $total, &$i, $c) { +return $reduceFunc($c, $value, $i++, $total); +}); +}); +}; + +$cancellationQueue->enqueue($initialValue); + +\array_reduce($array, $wrappedReduceFunc, resolve($initialValue)) +->done($resolve, $reject, $notify); +}, $reject, $notify); +}, $cancellationQueue); +} + + + + +function _checkTypehint(callable $callback, $object) +{ +if (!\is_object($object)) { +return true; +} + +if (\is_array($callback)) { +$callbackReflection = new \ReflectionMethod($callback[0], $callback[1]); +} elseif (\is_object($callback) && !$callback instanceof \Closure) { +$callbackReflection = new \ReflectionMethod($callback, '__invoke'); +} else { +$callbackReflection = new \ReflectionFunction($callback); +} + +$parameters = $callbackReflection->getParameters(); + +if (!isset($parameters[0])) { +return true; +} + +$expectedException = $parameters[0]; + + +if (\PHP_VERSION_ID < 70100 || \defined('HHVM_VERSION')) { +if (!$expectedException->getClass()) { +return true; +} + +return $expectedException->getClass()->isInstance($object); +} + + +$type = $expectedException->getType(); + +$isTypeUnion = true; +$types = []; + +switch (true) { +case $type === null: +break; +case $type instanceof \ReflectionNamedType: +$types = [$type]; +break; +case $type instanceof \ReflectionIntersectionType: +$isTypeUnion = false; +case $type instanceof \ReflectionUnionType; +$types = $type->getTypes(); +break; +default: +throw new \LogicException('Unexpected return value of ReflectionParameter::getType'); +} + + +if (empty($types)) { +return true; +} + +foreach ($types as $type) { +if (!$type instanceof \ReflectionNamedType) { +throw new \LogicException('This implementation does not support groups of intersection or union types'); +} + + +$matches = ($type->isBuiltin() && \gettype($object) === $type->getName()) +|| (new \ReflectionClass($type->getName()))->isInstance($object); + + + + +if ($matches) { +if ($isTypeUnion) { +return true; +} +} else { +if (!$isTypeUnion) { +return false; +} +} +} + + + +return $isTypeUnion ? false : true; +} diff --git a/composer/vendor/react/promise/src/functions_include.php b/composer/vendor/react/promise/src/functions_include.php new file mode 100644 index 000000000..6d727b631 --- /dev/null +++ b/composer/vendor/react/promise/src/functions_include.php @@ -0,0 +1,5 @@ +details['key']; +} + + + + +public function getDetails() +{ +return $this->details; +} +} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php new file mode 100644 index 000000000..ace4f022d --- /dev/null +++ b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php @@ -0,0 +1,584 @@ + 2, +'JSONString' => 3, +'STRING' => 4, +'JSONNumber' => 5, +'NUMBER' => 6, +'JSONNullLiteral' => 7, +'NULL' => 8, +'JSONBooleanLiteral' => 9, +'TRUE' => 10, +'FALSE' => 11, +'JSONText' => 12, +'JSONValue' => 13, +'EOF' => 14, +'JSONObject' => 15, +'JSONArray' => 16, +'{' => 17, +'}' => 18, +'JSONMemberList' => 19, +'JSONMember' => 20, +':' => 21, +',' => 22, +'[' => 23, +']' => 24, +'JSONElementList' => 25, +'$accept' => 0, +'$end' => 1, +); + + + + + +private $terminals_ = array( +2 => "error", +4 => "STRING", +6 => "NUMBER", +8 => "NULL", +10 => "TRUE", +11 => "FALSE", +14 => "EOF", +17 => "{", +18 => "}", +21 => ":", +22 => ",", +23 => "[", +24 => "]", +); + + + + + +private $productions_ = array( +1 => array(3, 1), +2 => array(5, 1), +3 => array(7, 1), +4 => array(9, 1), +5 => array(9, 1), +6 => array(12, 2), +7 => array(13, 1), +8 => array(13, 1), +9 => array(13, 1), +10 => array(13, 1), +11 => array(13, 1), +12 => array(13, 1), +13 => array(15, 2), +14 => array(15, 3), +15 => array(20, 3), +16 => array(19, 1), +17 => array(19, 3), +18 => array(16, 2), +19 => array(16, 3), +20 => array(25, 1), +21 => array(25, 3) +); + + + + + +private $table = array( +0 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 12 => 1, 13 => 2, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), +1 => array( 1 => array(3)), +2 => array( 14 => array(1,16)), +3 => array( 14 => array(2,7), 18 => array(2,7), 22 => array(2,7), 24 => array(2,7)), +4 => array( 14 => array(2,8), 18 => array(2,8), 22 => array(2,8), 24 => array(2,8)), +5 => array( 14 => array(2,9), 18 => array(2,9), 22 => array(2,9), 24 => array(2,9)), +6 => array( 14 => array(2,10), 18 => array(2,10), 22 => array(2,10), 24 => array(2,10)), +7 => array( 14 => array(2,11), 18 => array(2,11), 22 => array(2,11), 24 => array(2,11)), +8 => array( 14 => array(2,12), 18 => array(2,12), 22 => array(2,12), 24 => array(2,12)), +9 => array( 14 => array(2,3), 18 => array(2,3), 22 => array(2,3), 24 => array(2,3)), +10 => array( 14 => array(2,4), 18 => array(2,4), 22 => array(2,4), 24 => array(2,4)), +11 => array( 14 => array(2,5), 18 => array(2,5), 22 => array(2,5), 24 => array(2,5)), +12 => array( 14 => array(2,1), 18 => array(2,1), 21 => array(2,1), 22 => array(2,1), 24 => array(2,1)), +13 => array( 14 => array(2,2), 18 => array(2,2), 22 => array(2,2), 24 => array(2,2)), +14 => array( 3 => 20, 4 => array(1,12), 18 => array(1,17), 19 => 18, 20 => 19 ), +15 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 23, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15), 24 => array(1,21), 25 => 22 ), +16 => array( 1 => array(2,6)), +17 => array( 14 => array(2,13), 18 => array(2,13), 22 => array(2,13), 24 => array(2,13)), +18 => array( 18 => array(1,24), 22 => array(1,25)), +19 => array( 18 => array(2,16), 22 => array(2,16)), +20 => array( 21 => array(1,26)), +21 => array( 14 => array(2,18), 18 => array(2,18), 22 => array(2,18), 24 => array(2,18)), +22 => array( 22 => array(1,28), 24 => array(1,27)), +23 => array( 22 => array(2,20), 24 => array(2,20)), +24 => array( 14 => array(2,14), 18 => array(2,14), 22 => array(2,14), 24 => array(2,14)), +25 => array( 3 => 20, 4 => array(1,12), 20 => 29 ), +26 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 30, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), +27 => array( 14 => array(2,19), 18 => array(2,19), 22 => array(2,19), 24 => array(2,19)), +28 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 31, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), +29 => array( 18 => array(2,17), 22 => array(2,17)), +30 => array( 18 => array(2,15), 22 => array(2,15)), +31 => array( 22 => array(2,21), 24 => array(2,21)), +); + + + + + +private $defaultActions = array( +16 => array(2, 6) +); + + + + + + +public function lint($input, $flags = 0) +{ +try { +$this->parse($input, $flags); +} catch (ParsingException $e) { +return $e; +} +return null; +} + + + + + + + +public function parse($input, $flags = 0) +{ +$this->failOnBOM($input); + +$this->flags = $flags; + +$this->stack = array(0); +$this->vstack = array(null); +$this->lstack = array(); + +$yytext = ''; +$yylineno = 0; +$yyleng = 0; + +$recovering = 0; + +$this->lexer = new Lexer(); +$this->lexer->setInput($input); + +$yyloc = $this->lexer->yylloc; +$this->lstack[] = $yyloc; + +$symbol = null; +$preErrorSymbol = null; +$action = null; +$a = null; +$r = null; +$p = null; +$len = null; +$newState = null; +$expected = null; + +$errStr = null; + +while (true) { + +$state = $this->stack[\count($this->stack)-1]; + + +if (isset($this->defaultActions[$state])) { +$action = $this->defaultActions[$state]; +} else { +if ($symbol === null) { +$symbol = $this->lexer->lex(); +} + + +$action = isset($this->table[$state][$symbol]) ? $this->table[$state][$symbol] : false; +} + + +if (!$action || !$action[0]) { +assert(isset($symbol)); +if (!$recovering) { + +$expected = array(); +foreach ($this->table[$state] as $p => $ignore) { +if (isset($this->terminals_[$p]) && $p > 2) { +$expected[] = "'" . $this->terminals_[$p] . "'"; +} +} + +$message = null; +if (\in_array("'STRING'", $expected) && \in_array(substr($this->lexer->match, 0, 1), array('"', "'"))) { +$message = "Invalid string"; +if ("'" === substr($this->lexer->match, 0, 1)) { +$message .= ", it appears you used single quotes instead of double quotes"; +} elseif (preg_match('{".+?(\\\\[^"bfnrt/\\\\u](...)?)}', $this->lexer->getFullUpcomingInput(), $match)) { +$message .= ", it appears you have an unescaped backslash at: ".$match[1]; +} elseif (preg_match('{"(?:[^"]+|\\\\")*$}m', $this->lexer->getFullUpcomingInput())) { +$message .= ", it appears you forgot to terminate a string, or attempted to write a multiline string which is invalid"; +} +} + +$errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; +$errStr .= $this->lexer->showPosition() . "\n"; +if ($message) { +$errStr .= $message; +} else { +$errStr .= (\count($expected) > 1) ? "Expected one of: " : "Expected: "; +$errStr .= implode(', ', $expected); +} + +if (',' === substr(trim($this->lexer->getPastInput()), -1)) { +$errStr .= " - It appears you have an extra trailing comma"; +} + +$this->parseError($errStr, array( +'text' => $this->lexer->match, +'token' => isset($this->terminals_[$symbol]) ? $this->terminals_[$symbol] : $symbol, +'line' => $this->lexer->yylineno, +'loc' => $yyloc, +'expected' => $expected, +)); +} + + +if ($recovering == 3) { +if ($symbol === Lexer::EOF) { +throw new ParsingException($errStr ?: 'Parsing halted.'); +} + + +$yyleng = $this->lexer->yyleng; +$yytext = $this->lexer->yytext; +$yylineno = $this->lexer->yylineno; +$yyloc = $this->lexer->yylloc; +$symbol = $this->lexer->lex(); +} + + +while (true) { + +if (\array_key_exists(Lexer::T_ERROR, $this->table[$state])) { +break; +} +if ($state == 0) { +throw new ParsingException($errStr ?: 'Parsing halted.'); +} +$this->popStack(1); +$state = $this->stack[\count($this->stack)-1]; +} + +$preErrorSymbol = $symbol; +$symbol = Lexer::T_ERROR; +$state = $this->stack[\count($this->stack)-1]; + +$action = isset($this->table[$state][Lexer::T_ERROR]) ? $this->table[$state][Lexer::T_ERROR] : false; +if ($action === false) { +throw new \LogicException('No table value found for '.$state.' => '.Lexer::T_ERROR); +} +$recovering = 3; +} + + +if (\is_array($action[0]) && \count($action) > 1) { +throw new ParsingException('Parse Error: multiple actions possible at state: ' . $state . ', token: ' . $symbol); +} + +switch ($action[0]) { +case 1: +assert(isset($symbol)); +$this->stack[] = $symbol; +$this->vstack[] = $this->lexer->yytext; +$this->lstack[] = $this->lexer->yylloc; +$this->stack[] = $action[1]; +$symbol = null; +if (!$preErrorSymbol) { +$yyleng = $this->lexer->yyleng; +$yytext = $this->lexer->yytext; +$yylineno = $this->lexer->yylineno; +$yyloc = $this->lexer->yylloc; +if ($recovering > 0) { +$recovering--; +} +} else { +$symbol = $preErrorSymbol; +$preErrorSymbol = null; +} +break; + +case 2: +$len = $this->productions_[$action[1]][1]; + + +$currentToken = $this->vstack[\count($this->vstack) - $len]; + +$position = array( +'first_line' => $this->lstack[\count($this->lstack) - ($len ?: 1)]['first_line'], +'last_line' => $this->lstack[\count($this->lstack) - 1]['last_line'], +'first_column' => $this->lstack[\count($this->lstack) - ($len ?: 1)]['first_column'], +'last_column' => $this->lstack[\count($this->lstack) - 1]['last_column'], +); +list($newToken, $actionResult) = $this->performAction($currentToken, $yytext, $yyleng, $yylineno, $action[1]); + +if (!$actionResult instanceof Undefined) { +return $actionResult; +} + +if ($len) { +$this->popStack($len); +} + +$this->stack[] = $this->productions_[$action[1]][0]; +$this->vstack[] = $newToken; +$this->lstack[] = $position; + +$newState = $this->table[$this->stack[\count($this->stack)-2]][$this->stack[\count($this->stack)-1]]; +$this->stack[] = $newState; +break; + +case 3: + +return true; +} +} +} + + + + + + +protected function parseError($str, $hash = null) +{ +throw new ParsingException($str, $hash ?: array()); +} + + + + + + + + + +private function performAction($currentToken, $yytext, $yyleng, $yylineno, $yystate) +{ +$token = $currentToken; + +$len = \count($this->vstack) - 1; +switch ($yystate) { +case 1: +$yytext = preg_replace_callback('{(?:\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4})}', array($this, 'stringInterpolation'), $yytext); +$token = $yytext; +break; +case 2: +if (strpos($yytext, 'e') !== false || strpos($yytext, 'E') !== false) { +$token = \floatval($yytext); +} else { +$token = strpos($yytext, '.') === false ? \intval($yytext) : \floatval($yytext); +} +break; +case 3: +$token = null; +break; +case 4: +$token = true; +break; +case 5: +$token = false; +break; +case 6: +$token = $this->vstack[$len-1]; + +return array($token, $token); +case 13: +if ($this->flags & self::PARSE_TO_ASSOC) { +$token = array(); +} else { +$token = new stdClass; +} +break; +case 14: +$token = $this->vstack[$len-1]; +break; +case 15: +$token = array($this->vstack[$len-2], $this->vstack[$len]); +break; +case 16: +assert(\is_array($this->vstack[$len])); +if (PHP_VERSION_ID < 70100) { +$property = $this->vstack[$len][0] === '' ? '_empty_' : $this->vstack[$len][0]; +} else { +$property = $this->vstack[$len][0]; +} +if ($this->flags & self::PARSE_TO_ASSOC) { +$token = array(); +$token[$property] = $this->vstack[$len][1]; +} else { +$token = new stdClass; +$token->$property = $this->vstack[$len][1]; +} +break; +case 17: +assert(\is_array($this->vstack[$len])); +if ($this->flags & self::PARSE_TO_ASSOC) { +assert(\is_array($this->vstack[$len-2])); +$token =& $this->vstack[$len-2]; +$key = $this->vstack[$len][0]; +if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($this->vstack[$len-2][$key])) { +$errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; +$errStr .= $this->lexer->showPosition() . "\n"; +$errStr .= "Duplicate key: ".$this->vstack[$len][0]; +throw new DuplicateKeyException($errStr, $this->vstack[$len][0], array('line' => $yylineno+1)); +} elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($this->vstack[$len-2][$key])) { +$duplicateCount = 1; +do { +$duplicateKey = $key . '.' . $duplicateCount++; +} while (isset($this->vstack[$len-2][$duplicateKey])); +$key = $duplicateKey; +} +$this->vstack[$len-2][$key] = $this->vstack[$len][1]; +} else { +assert($this->vstack[$len-2] instanceof stdClass); +$token = $this->vstack[$len-2]; +if (PHP_VERSION_ID < 70100) { +$key = $this->vstack[$len][0] === '' ? '_empty_' : $this->vstack[$len][0]; +} else { +$key = $this->vstack[$len][0]; +} +if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($this->vstack[$len-2]->{$key})) { +$errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; +$errStr .= $this->lexer->showPosition() . "\n"; +$errStr .= "Duplicate key: ".$this->vstack[$len][0]; +throw new DuplicateKeyException($errStr, $this->vstack[$len][0], array('line' => $yylineno+1)); +} elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($this->vstack[$len-2]->{$key})) { +$duplicateCount = 1; +do { +$duplicateKey = $key . '.' . $duplicateCount++; +} while (isset($this->vstack[$len-2]->$duplicateKey)); +$key = $duplicateKey; +} +$this->vstack[$len-2]->$key = $this->vstack[$len][1]; +} +break; +case 18: +$token = array(); +break; +case 19: +$token = $this->vstack[$len-1]; +break; +case 20: +$token = array($this->vstack[$len]); +break; +case 21: +assert(\is_array($this->vstack[$len-2])); +$this->vstack[$len-2][] = $this->vstack[$len]; +$token = $this->vstack[$len-2]; +break; +} + +return array($token, new Undefined()); +} + + + + + +private function stringInterpolation($match) +{ +switch ($match[0]) { +case '\\\\': +return '\\'; +case '\"': +return '"'; +case '\b': +return \chr(8); +case '\f': +return \chr(12); +case '\n': +return "\n"; +case '\r': +return "\r"; +case '\t': +return "\t"; +case '\/': +return "/"; +default: +return html_entity_decode('&#x'.ltrim(substr($match[0], 2), '0').';', ENT_QUOTES, 'UTF-8'); +} +} + + + + + +private function popStack($n) +{ +$this->stack = \array_slice($this->stack, 0, - (2 * $n)); +$this->vstack = \array_slice($this->vstack, 0, - $n); +$this->lstack = \array_slice($this->lstack, 0, - $n); +} + + + + + +private function failOnBOM($input) +{ + +$bom = "\xEF\xBB\xBF"; + +if (substr($input, 0, 3) === $bom) { +$this->parseError("BOM detected, make sure your input does not include a Unicode Byte-Order-Mark"); +} +} +} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php new file mode 100644 index 000000000..6a1147458 --- /dev/null +++ b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php @@ -0,0 +1,257 @@ + '/\G\s+/', +1 => '/\G-?([0-9]|[1-9][0-9]+)(\.[0-9]+)?([eE][+-]?[0-9]+)?\b/', +2 => '{\G"(?>\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\0-\x1f\\\\"]++)*+"}', +3 => '/\G\{/', +4 => '/\G\}/', +5 => '/\G\[/', +6 => '/\G\]/', +7 => '/\G,/', +8 => '/\G:/', +9 => '/\Gtrue\b/', +10 => '/\Gfalse\b/', +11 => '/\Gnull\b/', +12 => '/\G$/', +13 => '/\G./', +); + + +private $input; + +private $more; + +private $done; + +private $offset; + + +public $match; + +public $yylineno; + +public $yyleng; + +public $yytext; + +public $yylloc; + + + + +public function lex() +{ +do { +$symbol = $this->next(); +} while ($symbol === self::T_SKIP_WHITESPACE); + +return $symbol; +} + + + + + +public function setInput($input) +{ +$this->input = $input; +$this->more = false; +$this->done = false; +$this->offset = 0; +$this->yylineno = $this->yyleng = 0; +$this->yytext = $this->match = ''; +$this->yylloc = array('first_line' => 1, 'first_column' => 0, 'last_line' => 1, 'last_column' => 0); + +return $this; +} + + + + +public function showPosition() +{ +$pre = str_replace("\n", '', $this->getPastInput()); +$c = str_repeat('-', max(0, \strlen($pre) - 1)); + +return $pre . str_replace("\n", '', $this->getUpcomingInput()) . "\n" . $c . "^"; +} + + + + +public function getPastInput() +{ +$pastLength = $this->offset - \strlen($this->match); + +return ($pastLength > 20 ? '...' : '') . substr($this->input, max(0, $pastLength - 20), min(20, $pastLength)); +} + + + + +public function getUpcomingInput() +{ +$next = $this->match; +if (\strlen($next) < 20) { +$next .= substr($this->input, $this->offset, 20 - \strlen($next)); +} + +return substr($next, 0, 20) . (\strlen($next) > 20 ? '...' : ''); +} + + + + +public function getFullUpcomingInput() +{ +$next = $this->match; +if (substr($next, 0, 1) === '"' && substr_count($next, '"') === 1) { +$len = \strlen($this->input); +if ($len === $this->offset) { +$strEnd = $len; +} else { +$strEnd = min(strpos($this->input, '"', $this->offset + 1) ?: $len, strpos($this->input, "\n", $this->offset + 1) ?: $len); +} +$next .= substr($this->input, $this->offset, $strEnd - $this->offset); +} elseif (\strlen($next) < 20) { +$next .= substr($this->input, $this->offset, 20 - \strlen($next)); +} + +return $next; +} + + + + + +protected function parseError($str) +{ +throw new ParsingException($str); +} + + + + +private function next() +{ +if ($this->done) { +return self::EOF; +} +if ($this->offset === \strlen($this->input)) { +$this->done = true; +} + +$token = null; +$match = null; +$col = null; +$lines = null; + +if (!$this->more) { +$this->yytext = ''; +$this->match = ''; +} + +$rulesLen = 14; + +for ($i=0; $i < $rulesLen; $i++) { +if (preg_match($this->rules[$i], $this->input, $match, 0, $this->offset)) { +$lines = explode("\n", $match[0]); +array_shift($lines); +$lineCount = \count($lines); +$this->yylineno += $lineCount; +$this->yylloc = array( +'first_line' => $this->yylloc['last_line'], +'last_line' => $this->yylineno+1, +'first_column' => $this->yylloc['last_column'], +'last_column' => $lineCount > 0 ? \strlen($lines[$lineCount - 1]) : $this->yylloc['last_column'] + \strlen($match[0]), +); +$this->yytext .= $match[0]; +$this->match .= $match[0]; +$this->yyleng = \strlen($this->yytext); +$this->more = false; +$this->offset += \strlen($match[0]); +return $this->performAction($i); +} +} + +if ($this->offset === \strlen($this->input)) { +return self::EOF; +} + +$this->parseError( +'Lexical error on line ' . ($this->yylineno+1) . ". Unrecognized text.\n" . $this->showPosition() +); +} + + + + + +private function performAction($rule) +{ +switch ($rule) { +case 0: +return self::T_SKIP_WHITESPACE; +case 1: +return 6; +case 2: +$this->yytext = substr($this->yytext, 1, $this->yyleng-2); + +return 4; +case 3: +return 17; +case 4: +return 18; +case 5: +return 23; +case 6: +return 24; +case 7: +return 22; +case 8: +return 21; +case 9: +return 10; +case 10: +return 11; +case 11: +return 8; +case 12: +return 14; +case 13: +return self::T_INVALID; +default: +throw new \LogicException('Unsupported rule '.$rule); +} +} +} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php new file mode 100644 index 000000000..40d90a328 --- /dev/null +++ b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php @@ -0,0 +1,38 @@ +details = $details; +parent::__construct($message); +} + + + + +public function getDetails() +{ +return $this->details; +} +} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php new file mode 100644 index 000000000..49d17d3e1 --- /dev/null +++ b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php @@ -0,0 +1,16 @@ += 80000) { +$format = '%s -l %s'; +} else { +$format = '"%s -l %s"'; +} + +$command = sprintf($format, $php, $tmpFile); +} else { +$command = "'".$php."' -l"; +} + +$descriptorspec = array( +0 => array('pipe', 'r'), +1 => array('pipe', 'w'), +2 => array('pipe', 'w') +); + + +$baseLen = strlen(realpath($path)) + 7 + 1; +foreach (new \RecursiveIteratorIterator(new \Phar($path)) as $file) { +if ($file->isDir()) { +continue; +} +if (substr($file, -4) === '.php') { +$filename = (string) $file; +if (in_array(substr($filename, $baseLen), $excludedPaths, true)) { +continue; +} +if ($isWindows) { +file_put_contents($tmpFile, file_get_contents($filename)); +} + +$process = proc_open($command, $descriptorspec, $pipes); +if (is_resource($process)) { +if (!$isWindows) { +fwrite($pipes[0], file_get_contents($filename)); +} +fclose($pipes[0]); + +$stdout = stream_get_contents($pipes[1]); +fclose($pipes[1]); +$stderr = stream_get_contents($pipes[2]); +fclose($pipes[2]); + +$exitCode = proc_close($process); + +if ($exitCode !== 0) { +if ($isWindows) { +$stderr = str_replace($tmpFile, $filename, $stderr); +} +throw new \UnexpectedValueException('Failed linting '.$file.': '.$stderr); +} +} else { +throw new \RuntimeException('Could not start linter process'); +} +} +} + +if ($isWindows) { +@unlink($tmpFile); +} +} + + + + + + + +private static function escapeWindowsPath($path) +{ + +if (strpbrk($path, " ()") !== false) { +$path = '"'.$path.'"'; +} + +return $path; +} +} diff --git a/composer/vendor/seld/phar-utils/src/Timestamps.php b/composer/vendor/seld/phar-utils/src/Timestamps.php new file mode 100644 index 000000000..889d9e501 --- /dev/null +++ b/composer/vendor/seld/phar-utils/src/Timestamps.php @@ -0,0 +1,196 @@ +contents = file_get_contents($file); +} + + + + + + + + +public function updateTimestamps($timestamp = null) +{ +if ($timestamp instanceof \DateTime || $timestamp instanceof \DateTimeInterface) { +$timestamp = $timestamp->getTimestamp(); +} elseif (is_string($timestamp)) { +$timestamp = strtotime($timestamp); +} elseif (!is_int($timestamp)) { +$timestamp = strtotime('1984-12-24T00:00:00Z'); +} + + +if (!preg_match('{__HALT_COMPILER\(\);(?: +\?>)?\r?\n}', $this->contents, $match, PREG_OFFSET_CAPTURE)) { +throw new \RuntimeException('Could not detect the stub\'s end in the phar'); +} + + +$pos = $match[0][1] + strlen($match[0][0]); +$stubEnd = $pos + $this->readUint($pos, 4); +$pos += 4; + +$numFiles = $this->readUint($pos, 4); +$pos += 4; + + +$pos += 2; + + +$pos += 4; + +$aliasLength = $this->readUint($pos, 4); +$pos += 4 + $aliasLength; + +$metadataLength = $this->readUint($pos, 4); +$pos += 4 + $metadataLength; + +while ($pos < $stubEnd) { +$filenameLength = $this->readUint($pos, 4); +$pos += 4 + $filenameLength; + + +$pos += 4; + + +$timeStampBytes = pack('L', $timestamp); +$this->contents[$pos + 0] = $timeStampBytes[0]; +$this->contents[$pos + 1] = $timeStampBytes[1]; +$this->contents[$pos + 2] = $timeStampBytes[2]; +$this->contents[$pos + 3] = $timeStampBytes[3]; + + +$pos += 4*4; + +$metadataLength = $this->readUint($pos, 4); +$pos += 4 + $metadataLength; + +$numFiles--; +} + +if ($numFiles !== 0) { +throw new \LogicException('All files were not processed, something must have gone wrong'); +} +} + + + + + + + + +public function save($path, $signatureAlgo) +{ +$pos = $this->determineSignatureBegin(); + +$algos = array( +\Phar::MD5 => 'md5', +\Phar::SHA1 => 'sha1', +\Phar::SHA256 => 'sha256', +\Phar::SHA512 => 'sha512', +); + +if (!isset($algos[$signatureAlgo])) { +throw new \UnexpectedValueException('Invalid hash algorithm given: '.$signatureAlgo.' expected one of Phar::MD5, Phar::SHA1, Phar::SHA256 or Phar::SHA512'); +} +$algo = $algos[$signatureAlgo]; + + + +$signature = hash($algo, substr($this->contents, 0, $pos), true) + +. pack('L', $signatureAlgo) + +. 'GBMB'; + +$this->contents = substr($this->contents, 0, $pos) . $signature; + +return file_put_contents($path, $this->contents); +} + +private function readUint($pos, $bytes) +{ +$res = unpack('V', substr($this->contents, $pos, $bytes)); + +return $res[1]; +} + + + + + + +private function determineSignatureBegin() +{ + +if (!preg_match('{__HALT_COMPILER\(\);(?: +\?>)?\r?\n}', $this->contents, $match, PREG_OFFSET_CAPTURE)) { +throw new \RuntimeException('Could not detect the stub\'s end in the phar'); +} + + +$pos = $match[0][1] + strlen($match[0][0]); +$manifestEnd = $pos + 4 + $this->readUint($pos, 4); + +$pos += 4; +$numFiles = $this->readUint($pos, 4); + +$pos += 4; + + +$pos += 2; + + +$pos += 4; + +$aliasLength = $this->readUint($pos, 4); +$pos += 4 + $aliasLength; + +$metadataLength = $this->readUint($pos, 4); +$pos += 4 + $metadataLength; + +$compressedSizes = 0; +while (($numFiles > 0) && ($pos < $manifestEnd - 24)) { +$filenameLength = $this->readUint($pos, 4); +$pos += 4 + $filenameLength; + + +$pos += 2*4; + +$compressedSizes += $this->readUint($pos, 4); + +$pos += 3*4; + +$metadataLength = $this->readUint($pos, 4); +$pos += 4 + $metadataLength; + +$numFiles--; +} + +if ($numFiles !== 0) { +throw new \LogicException('All files were not processed, something must have gone wrong'); +} + +return $manifestEnd + $compressedSizes; +} +} diff --git a/composer/vendor/seld/signal-handler/LICENSE b/composer/vendor/seld/signal-handler/LICENSE new file mode 100644 index 000000000..0432a5c77 --- /dev/null +++ b/composer/vendor/seld/signal-handler/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2015 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/composer/vendor/seld/signal-handler/src/SignalHandler.php b/composer/vendor/seld/signal-handler/src/SignalHandler.php new file mode 100644 index 000000000..cc8e0dd8b --- /dev/null +++ b/composer/vendor/seld/signal-handler/src/SignalHandler.php @@ -0,0 +1,567 @@ +signals = $signals; +$this->loggerOrCallback = $loggerOrCallback; +} + + + + +private function trigger(string $signalName): void +{ +$this->triggered = $signalName; + +if ($this->loggerOrCallback instanceof LoggerInterface) { +$this->loggerOrCallback->info('Received '.$signalName); +} elseif ($this->loggerOrCallback !== null) { +($this->loggerOrCallback)($signalName, $this); +} +} + + + + + + +public function isTriggered(): bool +{ +return $this->triggered !== null; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +public function exitWithLastSignal(): void +{ +$signal = $this->triggered ?? 'SIGINT'; +$signal = defined($signal) ? constant($signal) : 2; + +if (function_exists('posix_kill') && function_exists('posix_getpid')) { +pcntl_signal($signal, SIG_DFL); +posix_kill(posix_getpid(), $signal); +} + + + +exit(128 + $signal); +} + + + + +public function reset(): void +{ +$this->triggered = null; +} + +public function __destruct() +{ +$this->unregister(); +} + + + + + + + + + +public static function create(?array $signals = null, $loggerOrCallback = null): self +{ +if ($signals === null) { +$signals = [self::SIGINT, self::SIGTERM]; +} +$signals = array_map(function ($signal) { +if (is_int($signal)) { +return self::getSignalName($signal); +} elseif (!in_array($signal, self::ALL_SIGNALS, true)) { +throw new \InvalidArgumentException('$signals must be an array of SIG* constants or self::SIG* constants, got '.var_export($signal, true)); +} +return $signal; +}, (array) $signals); + +$handler = new self($signals, $loggerOrCallback); + +if (PHP_VERSION_ID >= 80000) { +array_unshift(self::$handlers, WeakReference::create($handler)); +} else { +array_unshift(self::$handlers, $handler); +} + +if (function_exists('sapi_windows_set_ctrl_handler') && PHP_SAPI === 'cli' && (in_array(self::SIGINT, $signals, true) || in_array(self::SIGBREAK, $signals, true))) { +if (null === self::$windowsHandler) { +self::$windowsHandler = Closure::fromCallable([self::class, 'handleWindowsSignal']); +sapi_windows_set_ctrl_handler(self::$windowsHandler); +} +} + +if (function_exists('pcntl_signal') && function_exists('pcntl_async_signals')) { +pcntl_async_signals(true); + +self::registerPcntlHandler($signals); +} + +return $handler; +} + + + + + + + + + +public function unregister(): void +{ +$signals = $this->signals; + +$index = false; +foreach (self::$handlers as $key => $handler) { +if (($handler instanceof WeakReference && $handler->get() === $this) || $handler === $this) { +$index = $key; +break; +} +} +if ($index === false) { + +return; +} + +unset(self::$handlers[$index]); + +if (self::$windowsHandler !== null && (in_array(self::SIGINT, $signals, true) || in_array(self::SIGBREAK, $signals, true))) { +if (self::getHandlerFor(self::SIGINT) === null && self::getHandlerFor(self::SIGBREAK) === null) { +sapi_windows_set_ctrl_handler(self::$windowsHandler, false); +self::$windowsHandler = null; +} +} + +if (function_exists('pcntl_signal')) { +foreach ($signals as $signal) { + +if (!defined($signal)) { +continue; +} + + +if (self::getHandlerFor($signal) !== null) { +continue; +} + +pcntl_signal(constant($signal), SIG_DFL); +} +} +} + + + + + + + + + +public static function unregisterAll(): void +{ +if (self::$windowsHandler !== null) { +sapi_windows_set_ctrl_handler(self::$windowsHandler, false); +self::$windowsHandler = null; +} + +foreach (self::$handlers as $key => $handler) { +if ($handler instanceof WeakReference) { +$handler = $handler->get(); +if ($handler === null) { +unset(self::$handlers[$key]); +continue; +} +} +$handler->unregister(); +} +} + + + + +private static function registerPcntlHandler(array $signals): void +{ +static $callable; +if ($callable === null) { +$callable = Closure::fromCallable([self::class, 'handlePcntlSignal']); +} +foreach ($signals as $signal) { + +if (!defined($signal)) { +continue; +} + +pcntl_signal(constant($signal), $callable); +} +} + +private static function handleWindowsSignal(int $event): void +{ +if (PHP_WINDOWS_EVENT_CTRL_C === $event) { +self::callHandlerFor(self::SIGINT); +} elseif (PHP_WINDOWS_EVENT_CTRL_BREAK === $event) { +self::callHandlerFor(self::SIGBREAK); +} +} + +private static function handlePcntlSignal(int $signal): void +{ +self::callHandlerFor(self::getSignalName($signal)); +} + + + + + + +private static function callHandlerFor(string $signal): void +{ +$handler = self::getHandlerFor($signal); +if ($handler !== null) { +$handler->trigger($signal); +} +} + + + + + + + +private static function getHandlerFor(string $signal): ?self +{ +foreach (self::$handlers as $key => $handler) { +if ($handler instanceof WeakReference) { +$handler = $handler->get(); +if ($handler === null) { +unset(self::$handlers[$key]); +continue; +} +} +if (in_array($signal, $handler->signals, true)) { +return $handler; +} +} + +return null; +} + + + + +private static function getSignalName(int $signo): string +{ +static $signals = null; +if ($signals === null) { +$signals = []; +foreach (self::ALL_SIGNALS as $value) { +if (defined($value)) { +$signals[constant($value)] = $value; +} +} +} + +if (isset($signals[$signo])) { +return $signals[$signo]; +} + +throw new \InvalidArgumentException('Unknown signal #'.$signo); +} +} diff --git a/composer/vendor/symfony/console/Application.php b/composer/vendor/symfony/console/Application.php new file mode 100644 index 000000000..efc33d4e4 --- /dev/null +++ b/composer/vendor/symfony/console/Application.php @@ -0,0 +1,1301 @@ +name = $name; +$this->version = $version; +$this->terminal = new Terminal(); +$this->defaultCommand = 'list'; +if (\defined('SIGINT') && SignalRegistry::isSupported()) { +$this->signalRegistry = new SignalRegistry(); +$this->signalsToDispatchEvent = [\SIGINT, \SIGTERM, \SIGUSR1, \SIGUSR2]; +} +} + + + + +public function setDispatcher(EventDispatcherInterface $dispatcher) +{ +$this->dispatcher = $dispatcher; +} + +public function setCommandLoader(CommandLoaderInterface $commandLoader) +{ +$this->commandLoader = $commandLoader; +} + +public function getSignalRegistry(): SignalRegistry +{ +if (!$this->signalRegistry) { +throw new RuntimeException('Signals are not supported. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); +} + +return $this->signalRegistry; +} + +public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent) +{ +$this->signalsToDispatchEvent = $signalsToDispatchEvent; +} + + + + + + + + +public function run(InputInterface $input = null, OutputInterface $output = null) +{ +if (\function_exists('putenv')) { +@putenv('LINES='.$this->terminal->getHeight()); +@putenv('COLUMNS='.$this->terminal->getWidth()); +} + +if (null === $input) { +$input = new ArgvInput(); +} + +if (null === $output) { +$output = new ConsoleOutput(); +} + +$renderException = function (\Throwable $e) use ($output) { +if ($output instanceof ConsoleOutputInterface) { +$this->renderThrowable($e, $output->getErrorOutput()); +} else { +$this->renderThrowable($e, $output); +} +}; +if ($phpHandler = set_exception_handler($renderException)) { +restore_exception_handler(); +if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { +$errorHandler = true; +} elseif ($errorHandler = $phpHandler[0]->setExceptionHandler($renderException)) { +$phpHandler[0]->setExceptionHandler($errorHandler); +} +} + +$this->configureIO($input, $output); + +try { +$exitCode = $this->doRun($input, $output); +} catch (\Exception $e) { +if (!$this->catchExceptions) { +throw $e; +} + +$renderException($e); + +$exitCode = $e->getCode(); +if (is_numeric($exitCode)) { +$exitCode = (int) $exitCode; +if ($exitCode <= 0) { +$exitCode = 1; +} +} else { +$exitCode = 1; +} +} finally { + + +if (!$phpHandler) { +if (set_exception_handler($renderException) === $renderException) { +restore_exception_handler(); +} +restore_exception_handler(); +} elseif (!$errorHandler) { +$finalHandler = $phpHandler[0]->setExceptionHandler(null); +if ($finalHandler !== $renderException) { +$phpHandler[0]->setExceptionHandler($finalHandler); +} +} +} + +if ($this->autoExit) { +if ($exitCode > 255) { +$exitCode = 255; +} + +exit($exitCode); +} + +return $exitCode; +} + + + + + + +public function doRun(InputInterface $input, OutputInterface $output) +{ +if (true === $input->hasParameterOption(['--version', '-V'], true)) { +$output->writeln($this->getLongVersion()); + +return 0; +} + +try { + +$input->bind($this->getDefinition()); +} catch (ExceptionInterface $e) { + +} + +$name = $this->getCommandName($input); +if (true === $input->hasParameterOption(['--help', '-h'], true)) { +if (!$name) { +$name = 'help'; +$input = new ArrayInput(['command_name' => $this->defaultCommand]); +} else { +$this->wantHelps = true; +} +} + +if (!$name) { +$name = $this->defaultCommand; +$definition = $this->getDefinition(); +$definition->setArguments(array_merge( +$definition->getArguments(), +[ +'command' => new InputArgument('command', InputArgument::OPTIONAL, $definition->getArgument('command')->getDescription(), $name), +] +)); +} + +try { +$this->runningCommand = null; + +$command = $this->find($name); +} catch (\Throwable $e) { +if (!($e instanceof CommandNotFoundException && !$e instanceof NamespaceNotFoundException) || 1 !== \count($alternatives = $e->getAlternatives()) || !$input->isInteractive()) { +if (null !== $this->dispatcher) { +$event = new ConsoleErrorEvent($input, $output, $e); +$this->dispatcher->dispatch($event, ConsoleEvents::ERROR); + +if (0 === $event->getExitCode()) { +return 0; +} + +$e = $event->getError(); +} + +throw $e; +} + +$alternative = $alternatives[0]; + +$style = new SymfonyStyle($input, $output); +$output->writeln(''); +$formattedBlock = (new FormatterHelper())->formatBlock(sprintf('Command "%s" is not defined.', $name), 'error', true); +$output->writeln($formattedBlock); +if (!$style->confirm(sprintf('Do you want to run "%s" instead? ', $alternative), false)) { +if (null !== $this->dispatcher) { +$event = new ConsoleErrorEvent($input, $output, $e); +$this->dispatcher->dispatch($event, ConsoleEvents::ERROR); + +return $event->getExitCode(); +} + +return 1; +} + +$command = $this->find($alternative); +} + +if ($command instanceof LazyCommand) { +$command = $command->getCommand(); +} + +$this->runningCommand = $command; +$exitCode = $this->doRunCommand($command, $input, $output); +$this->runningCommand = null; + +return $exitCode; +} + + + + +public function reset() +{ +} + +public function setHelperSet(HelperSet $helperSet) +{ +$this->helperSet = $helperSet; +} + + + + + + +public function getHelperSet() +{ +if (!$this->helperSet) { +$this->helperSet = $this->getDefaultHelperSet(); +} + +return $this->helperSet; +} + +public function setDefinition(InputDefinition $definition) +{ +$this->definition = $definition; +} + + + + + + +public function getDefinition() +{ +if (!$this->definition) { +$this->definition = $this->getDefaultInputDefinition(); +} + +if ($this->singleCommand) { +$inputDefinition = $this->definition; +$inputDefinition->setArguments(); + +return $inputDefinition; +} + +return $this->definition; +} + + + + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +if ( +CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() +&& 'command' === $input->getCompletionName() +) { +$commandNames = []; +foreach ($this->all() as $name => $command) { + +if ($command->isHidden() || $command->getName() !== $name) { +continue; +} +$commandNames[] = $command->getName(); +foreach ($command->getAliases() as $name) { +$commandNames[] = $name; +} +} +$suggestions->suggestValues(array_filter($commandNames)); + +return; +} + +if (CompletionInput::TYPE_OPTION_NAME === $input->getCompletionType()) { +$suggestions->suggestOptions($this->getDefinition()->getOptions()); + +return; +} +} + + + + + + +public function getHelp() +{ +return $this->getLongVersion(); +} + + + + + + +public function areExceptionsCaught() +{ +return $this->catchExceptions; +} + + + + +public function setCatchExceptions(bool $boolean) +{ +$this->catchExceptions = $boolean; +} + + + + + + +public function isAutoExitEnabled() +{ +return $this->autoExit; +} + + + + +public function setAutoExit(bool $boolean) +{ +$this->autoExit = $boolean; +} + + + + + + +public function getName() +{ +return $this->name; +} + + + + +public function setName(string $name) +{ +$this->name = $name; +} + + + + + + +public function getVersion() +{ +return $this->version; +} + + + + +public function setVersion(string $version) +{ +$this->version = $version; +} + + + + + + +public function getLongVersion() +{ +if ('UNKNOWN' !== $this->getName()) { +if ('UNKNOWN' !== $this->getVersion()) { +return sprintf('%s %s', $this->getName(), $this->getVersion()); +} + +return $this->getName(); +} + +return 'Console Tool'; +} + + + + + + +public function register(string $name) +{ +return $this->add(new Command($name)); +} + + + + + + + + +public function addCommands(array $commands) +{ +foreach ($commands as $command) { +$this->add($command); +} +} + + + + + + + + + +public function add(Command $command) +{ +$this->init(); + +$command->setApplication($this); + +if (!$command->isEnabled()) { +$command->setApplication(null); + +return null; +} + +if (!$command instanceof LazyCommand) { + +$command->getDefinition(); +} + +if (!$command->getName()) { +throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_debug_type($command))); +} + +$this->commands[$command->getName()] = $command; + +foreach ($command->getAliases() as $alias) { +$this->commands[$alias] = $command; +} + +return $command; +} + + + + + + + + +public function get(string $name) +{ +$this->init(); + +if (!$this->has($name)) { +throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); +} + + +if (!isset($this->commands[$name])) { +throw new CommandNotFoundException(sprintf('The "%s" command cannot be found because it is registered under multiple names. Make sure you don\'t set a different name via constructor or "setName()".', $name)); +} + +$command = $this->commands[$name]; + +if ($this->wantHelps) { +$this->wantHelps = false; + +$helpCommand = $this->get('help'); +$helpCommand->setCommand($command); + +return $helpCommand; +} + +return $command; +} + + + + + + +public function has(string $name) +{ +$this->init(); + +return isset($this->commands[$name]) || ($this->commandLoader && $this->commandLoader->has($name) && $this->add($this->commandLoader->get($name))); +} + + + + + + + + +public function getNamespaces() +{ +$namespaces = []; +foreach ($this->all() as $command) { +if ($command->isHidden()) { +continue; +} + +$namespaces[] = $this->extractAllNamespaces($command->getName()); + +foreach ($command->getAliases() as $alias) { +$namespaces[] = $this->extractAllNamespaces($alias); +} +} + +return array_values(array_unique(array_filter(array_merge([], ...$namespaces)))); +} + + + + + + + + +public function findNamespace(string $namespace) +{ +$allNamespaces = $this->getNamespaces(); +$expr = implode('[^:]*:', array_map('preg_quote', explode(':', $namespace))).'[^:]*'; +$namespaces = preg_grep('{^'.$expr.'}', $allNamespaces); + +if (empty($namespaces)) { +$message = sprintf('There are no commands defined in the "%s" namespace.', $namespace); + +if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { +if (1 == \count($alternatives)) { +$message .= "\n\nDid you mean this?\n "; +} else { +$message .= "\n\nDid you mean one of these?\n "; +} + +$message .= implode("\n ", $alternatives); +} + +throw new NamespaceNotFoundException($message, $alternatives); +} + +$exact = \in_array($namespace, $namespaces, true); +if (\count($namespaces) > 1 && !$exact) { +throw new NamespaceNotFoundException(sprintf("The namespace \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))), array_values($namespaces)); +} + +return $exact ? $namespace : reset($namespaces); +} + + + + + + + + + + + +public function find(string $name) +{ +$this->init(); + +$aliases = []; + +foreach ($this->commands as $command) { +foreach ($command->getAliases() as $alias) { +if (!$this->has($alias)) { +$this->commands[$alias] = $command; +} +} +} + +if ($this->has($name)) { +return $this->get($name); +} + +$allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands); +$expr = implode('[^:]*:', array_map('preg_quote', explode(':', $name))).'[^:]*'; +$commands = preg_grep('{^'.$expr.'}', $allCommands); + +if (empty($commands)) { +$commands = preg_grep('{^'.$expr.'}i', $allCommands); +} + + +if (empty($commands) || \count(preg_grep('{^'.$expr.'$}i', $commands)) < 1) { +if (false !== $pos = strrpos($name, ':')) { + +$this->findNamespace(substr($name, 0, $pos)); +} + +$message = sprintf('Command "%s" is not defined.', $name); + +if ($alternatives = $this->findAlternatives($name, $allCommands)) { + +$alternatives = array_filter($alternatives, function ($name) { +return !$this->get($name)->isHidden(); +}); + +if (1 == \count($alternatives)) { +$message .= "\n\nDid you mean this?\n "; +} else { +$message .= "\n\nDid you mean one of these?\n "; +} +$message .= implode("\n ", $alternatives); +} + +throw new CommandNotFoundException($message, array_values($alternatives)); +} + + +if (\count($commands) > 1) { +$commandList = $this->commandLoader ? array_merge(array_flip($this->commandLoader->getNames()), $this->commands) : $this->commands; +$commands = array_unique(array_filter($commands, function ($nameOrAlias) use (&$commandList, $commands, &$aliases) { +if (!$commandList[$nameOrAlias] instanceof Command) { +$commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); +} + +$commandName = $commandList[$nameOrAlias]->getName(); + +$aliases[$nameOrAlias] = $commandName; + +return $commandName === $nameOrAlias || !\in_array($commandName, $commands); +})); +} + +if (\count($commands) > 1) { +$usableWidth = $this->terminal->getWidth() - 10; +$abbrevs = array_values($commands); +$maxLen = 0; +foreach ($abbrevs as $abbrev) { +$maxLen = max(Helper::width($abbrev), $maxLen); +} +$abbrevs = array_map(function ($cmd) use ($commandList, $usableWidth, $maxLen, &$commands) { +if ($commandList[$cmd]->isHidden()) { +unset($commands[array_search($cmd, $commands)]); + +return false; +} + +$abbrev = str_pad($cmd, $maxLen, ' ').' '.$commandList[$cmd]->getDescription(); + +return Helper::width($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; +}, array_values($commands)); + +if (\count($commands) > 1) { +$suggestions = $this->getAbbreviationSuggestions(array_filter($abbrevs)); + +throw new CommandNotFoundException(sprintf("Command \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $name, $suggestions), array_values($commands)); +} +} + +$command = $this->get(reset($commands)); + +if ($command->isHidden()) { +throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); +} + +return $command; +} + + + + + + + + +public function all(string $namespace = null) +{ +$this->init(); + +if (null === $namespace) { +if (!$this->commandLoader) { +return $this->commands; +} + +$commands = $this->commands; +foreach ($this->commandLoader->getNames() as $name) { +if (!isset($commands[$name]) && $this->has($name)) { +$commands[$name] = $this->get($name); +} +} + +return $commands; +} + +$commands = []; +foreach ($this->commands as $name => $command) { +if ($namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1)) { +$commands[$name] = $command; +} +} + +if ($this->commandLoader) { +foreach ($this->commandLoader->getNames() as $name) { +if (!isset($commands[$name]) && $namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1) && $this->has($name)) { +$commands[$name] = $this->get($name); +} +} +} + +return $commands; +} + + + + + + +public static function getAbbreviations(array $names) +{ +$abbrevs = []; +foreach ($names as $name) { +for ($len = \strlen($name); $len > 0; --$len) { +$abbrev = substr($name, 0, $len); +$abbrevs[$abbrev][] = $name; +} +} + +return $abbrevs; +} + +public function renderThrowable(\Throwable $e, OutputInterface $output): void +{ +$output->writeln('', OutputInterface::VERBOSITY_QUIET); + +$this->doRenderThrowable($e, $output); + +if (null !== $this->runningCommand) { +$output->writeln(sprintf('%s', OutputFormatter::escape(sprintf($this->runningCommand->getSynopsis(), $this->getName()))), OutputInterface::VERBOSITY_QUIET); +$output->writeln('', OutputInterface::VERBOSITY_QUIET); +} +} + +protected function doRenderThrowable(\Throwable $e, OutputInterface $output): void +{ +do { +$message = trim($e->getMessage()); +if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { +$class = get_debug_type($e); +$title = sprintf(' [%s%s] ', $class, 0 !== ($code = $e->getCode()) ? ' ('.$code.')' : ''); +$len = Helper::width($title); +} else { +$len = 0; +} + +if (str_contains($message, "@anonymous\0")) { +$message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) { +return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0]; +}, $message); +} + +$width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; +$lines = []; +foreach ('' !== $message ? preg_split('/\r?\n/', $message) : [] as $line) { +foreach ($this->splitStringByWidth($line, $width - 4) as $line) { + +$lineLength = Helper::width($line) + 4; +$lines[] = [$line, $lineLength]; + +$len = max($lineLength, $len); +} +} + +$messages = []; +if (!$e instanceof ExceptionInterface || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { +$messages[] = sprintf('%s', OutputFormatter::escape(sprintf('In %s line %s:', basename($e->getFile()) ?: 'n/a', $e->getLine() ?: 'n/a'))); +} +$messages[] = $emptyLine = sprintf('%s', str_repeat(' ', $len)); +if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { +$messages[] = sprintf('%s%s', $title, str_repeat(' ', max(0, $len - Helper::width($title)))); +} +foreach ($lines as $line) { +$messages[] = sprintf(' %s %s', OutputFormatter::escape($line[0]), str_repeat(' ', $len - $line[1])); +} +$messages[] = $emptyLine; +$messages[] = ''; + +$output->writeln($messages, OutputInterface::VERBOSITY_QUIET); + +if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { +$output->writeln('Exception trace:', OutputInterface::VERBOSITY_QUIET); + + +$trace = $e->getTrace(); + +array_unshift($trace, [ +'function' => '', +'file' => $e->getFile() ?: 'n/a', +'line' => $e->getLine() ?: 'n/a', +'args' => [], +]); + +for ($i = 0, $count = \count($trace); $i < $count; ++$i) { +$class = $trace[$i]['class'] ?? ''; +$type = $trace[$i]['type'] ?? ''; +$function = $trace[$i]['function'] ?? ''; +$file = $trace[$i]['file'] ?? 'n/a'; +$line = $trace[$i]['line'] ?? 'n/a'; + +$output->writeln(sprintf(' %s%s at %s:%s', $class, $function ? $type.$function.'()' : '', $file, $line), OutputInterface::VERBOSITY_QUIET); +} + +$output->writeln('', OutputInterface::VERBOSITY_QUIET); +} +} while ($e = $e->getPrevious()); +} + + + + +protected function configureIO(InputInterface $input, OutputInterface $output) +{ +if (true === $input->hasParameterOption(['--ansi'], true)) { +$output->setDecorated(true); +} elseif (true === $input->hasParameterOption(['--no-ansi'], true)) { +$output->setDecorated(false); +} + +if (true === $input->hasParameterOption(['--no-interaction', '-n'], true)) { +$input->setInteractive(false); +} + +switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { +case -1: +$output->setVerbosity(OutputInterface::VERBOSITY_QUIET); +break; +case 1: +$output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); +break; +case 2: +$output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); +break; +case 3: +$output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); +break; +default: +$shellVerbosity = 0; +break; +} + +if (true === $input->hasParameterOption(['--quiet', '-q'], true)) { +$output->setVerbosity(OutputInterface::VERBOSITY_QUIET); +$shellVerbosity = -1; +} else { +if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || 3 === $input->getParameterOption('--verbose', false, true)) { +$output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); +$shellVerbosity = 3; +} elseif ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || 2 === $input->getParameterOption('--verbose', false, true)) { +$output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); +$shellVerbosity = 2; +} elseif ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true) || $input->getParameterOption('--verbose', false, true)) { +$output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); +$shellVerbosity = 1; +} +} + +if (-1 === $shellVerbosity) { +$input->setInteractive(false); +} + +if (\function_exists('putenv')) { +@putenv('SHELL_VERBOSITY='.$shellVerbosity); +} +$_ENV['SHELL_VERBOSITY'] = $shellVerbosity; +$_SERVER['SHELL_VERBOSITY'] = $shellVerbosity; +} + + + + + + + + + +protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) +{ +foreach ($command->getHelperSet() as $helper) { +if ($helper instanceof InputAwareInterface) { +$helper->setInput($input); +} +} + +if ($this->signalsToDispatchEvent) { +$commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; + +if ($commandSignals || null !== $this->dispatcher) { +if (!$this->signalRegistry) { +throw new RuntimeException('Unable to subscribe to signal events. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); +} + +if (Terminal::hasSttyAvailable()) { +$sttyMode = shell_exec('stty -g'); + +foreach ([\SIGINT, \SIGTERM] as $signal) { +$this->signalRegistry->register($signal, static function () use ($sttyMode) { +shell_exec('stty '.$sttyMode); +}); +} +} +} + +if (null !== $this->dispatcher) { +foreach ($this->signalsToDispatchEvent as $signal) { +$event = new ConsoleSignalEvent($command, $input, $output, $signal); + +$this->signalRegistry->register($signal, function ($signal, $hasNext) use ($event) { +$this->dispatcher->dispatch($event, ConsoleEvents::SIGNAL); + + +if (!$hasNext) { +if (!\in_array($signal, [\SIGUSR1, \SIGUSR2], true)) { +exit(0); +} +} +}); +} +} + +foreach ($commandSignals as $signal) { +$this->signalRegistry->register($signal, [$command, 'handleSignal']); +} +} + +if (null === $this->dispatcher) { +return $command->run($input, $output); +} + + +try { +$command->mergeApplicationDefinition(); +$input->bind($command->getDefinition()); +} catch (ExceptionInterface $e) { + +} + +$event = new ConsoleCommandEvent($command, $input, $output); +$e = null; + +try { +$this->dispatcher->dispatch($event, ConsoleEvents::COMMAND); + +if ($event->commandShouldRun()) { +$exitCode = $command->run($input, $output); +} else { +$exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; +} +} catch (\Throwable $e) { +$event = new ConsoleErrorEvent($input, $output, $e, $command); +$this->dispatcher->dispatch($event, ConsoleEvents::ERROR); +$e = $event->getError(); + +if (0 === $exitCode = $event->getExitCode()) { +$e = null; +} +} + +$event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); +$this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); + +if (null !== $e) { +throw $e; +} + +return $event->getExitCode(); +} + + + + + + +protected function getCommandName(InputInterface $input) +{ +return $this->singleCommand ? $this->defaultCommand : $input->getFirstArgument(); +} + + + + + + +protected function getDefaultInputDefinition() +{ +return new InputDefinition([ +new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), +new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display help for the given command. When no command is given display help for the '.$this->defaultCommand.' command'), +new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), +new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), +new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), +new InputOption('--ansi', '', InputOption::VALUE_NEGATABLE, 'Force (or disable --no-ansi) ANSI output', null), +new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), +]); +} + + + + + + +protected function getDefaultCommands() +{ +return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; +} + + + + + + +protected function getDefaultHelperSet() +{ +return new HelperSet([ +new FormatterHelper(), +new DebugFormatterHelper(), +new ProcessHelper(), +new QuestionHelper(), +]); +} + + + + +private function getAbbreviationSuggestions(array $abbrevs): string +{ +return ' '.implode("\n ", $abbrevs); +} + + + + + + + + +public function extractNamespace(string $name, int $limit = null) +{ +$parts = explode(':', $name, -1); + +return implode(':', null === $limit ? $parts : \array_slice($parts, 0, $limit)); +} + + + + + + + +private function findAlternatives(string $name, iterable $collection): array +{ +$threshold = 1e3; +$alternatives = []; + +$collectionParts = []; +foreach ($collection as $item) { +$collectionParts[$item] = explode(':', $item); +} + +foreach (explode(':', $name) as $i => $subname) { +foreach ($collectionParts as $collectionName => $parts) { +$exists = isset($alternatives[$collectionName]); +if (!isset($parts[$i]) && $exists) { +$alternatives[$collectionName] += $threshold; +continue; +} elseif (!isset($parts[$i])) { +continue; +} + +$lev = levenshtein($subname, $parts[$i]); +if ($lev <= \strlen($subname) / 3 || '' !== $subname && str_contains($parts[$i], $subname)) { +$alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; +} elseif ($exists) { +$alternatives[$collectionName] += $threshold; +} +} +} + +foreach ($collection as $item) { +$lev = levenshtein($name, $item); +if ($lev <= \strlen($name) / 3 || str_contains($item, $name)) { +$alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; +} +} + +$alternatives = array_filter($alternatives, function ($lev) use ($threshold) { return $lev < 2 * $threshold; }); +ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); + +return array_keys($alternatives); +} + + + + + + +public function setDefaultCommand(string $commandName, bool $isSingleCommand = false) +{ +$this->defaultCommand = explode('|', ltrim($commandName, '|'))[0]; + +if ($isSingleCommand) { + +$this->find($commandName); + +$this->singleCommand = true; +} + +return $this; +} + + + + +public function isSingleCommand(): bool +{ +return $this->singleCommand; +} + +private function splitStringByWidth(string $string, int $width): array +{ + + + +if (false === $encoding = mb_detect_encoding($string, null, true)) { +return str_split($string, $width); +} + +$utf8String = mb_convert_encoding($string, 'utf8', $encoding); +$lines = []; +$line = ''; + +$offset = 0; +while (preg_match('/.{1,10000}/u', $utf8String, $m, 0, $offset)) { +$offset += \strlen($m[0]); + +foreach (preg_split('//u', $m[0]) as $char) { + +if (mb_strwidth($line.$char, 'utf8') <= $width) { +$line .= $char; +continue; +} + +$lines[] = str_pad($line, $width); +$line = $char; +} +} + +$lines[] = \count($lines) ? str_pad($line, $width) : $line; + +mb_convert_variables($encoding, 'utf8', $lines); + +return $lines; +} + + + + + + +private function extractAllNamespaces(string $name): array +{ + +$parts = explode(':', $name, -1); +$namespaces = []; + +foreach ($parts as $part) { +if (\count($namespaces)) { +$namespaces[] = end($namespaces).':'.$part; +} else { +$namespaces[] = $part; +} +} + +return $namespaces; +} + +private function init() +{ +if ($this->initialized) { +return; +} +$this->initialized = true; + +foreach ($this->getDefaultCommands() as $command) { +$this->add($command); +} +} +} diff --git a/composer/vendor/symfony/console/Attribute/AsCommand.php b/composer/vendor/symfony/console/Attribute/AsCommand.php new file mode 100644 index 000000000..cb8dfb54d --- /dev/null +++ b/composer/vendor/symfony/console/Attribute/AsCommand.php @@ -0,0 +1,39 @@ +name = implode('|', $name); +} +} diff --git a/composer/vendor/symfony/console/CI/GithubActionReporter.php b/composer/vendor/symfony/console/CI/GithubActionReporter.php new file mode 100644 index 000000000..06ce50557 --- /dev/null +++ b/composer/vendor/symfony/console/CI/GithubActionReporter.php @@ -0,0 +1,99 @@ + '%25', +"\r" => '%0D', +"\n" => '%0A', +]; + + + + +private const ESCAPED_PROPERTIES = [ +'%' => '%25', +"\r" => '%0D', +"\n" => '%0A', +':' => '%3A', +',' => '%2C', +]; + +public function __construct(OutputInterface $output) +{ +$this->output = $output; +} + +public static function isGithubActionEnvironment(): bool +{ +return false !== getenv('GITHUB_ACTIONS'); +} + + + + + + +public function error(string $message, string $file = null, int $line = null, int $col = null): void +{ +$this->log('error', $message, $file, $line, $col); +} + + + + + + +public function warning(string $message, string $file = null, int $line = null, int $col = null): void +{ +$this->log('warning', $message, $file, $line, $col); +} + + + + + + +public function debug(string $message, string $file = null, int $line = null, int $col = null): void +{ +$this->log('debug', $message, $file, $line, $col); +} + +private function log(string $type, string $message, string $file = null, int $line = null, int $col = null): void +{ + +$message = strtr($message, self::ESCAPED_DATA); + +if (!$file) { + +$this->output->writeln(sprintf('::%s::%s', $type, $message)); + +return; +} + +$this->output->writeln(sprintf('::%s file=%s,line=%s,col=%s::%s', $type, strtr($file, self::ESCAPED_PROPERTIES), strtr($line ?? 1, self::ESCAPED_PROPERTIES), strtr($col ?? 0, self::ESCAPED_PROPERTIES), $message)); +} +} diff --git a/composer/vendor/symfony/console/Color.php b/composer/vendor/symfony/console/Color.php new file mode 100644 index 000000000..d4256d13d --- /dev/null +++ b/composer/vendor/symfony/console/Color.php @@ -0,0 +1,180 @@ + 0, +'red' => 1, +'green' => 2, +'yellow' => 3, +'blue' => 4, +'magenta' => 5, +'cyan' => 6, +'white' => 7, +'default' => 9, +]; + +private const BRIGHT_COLORS = [ +'gray' => 0, +'bright-red' => 1, +'bright-green' => 2, +'bright-yellow' => 3, +'bright-blue' => 4, +'bright-magenta' => 5, +'bright-cyan' => 6, +'bright-white' => 7, +]; + +private const AVAILABLE_OPTIONS = [ +'bold' => ['set' => 1, 'unset' => 22], +'underscore' => ['set' => 4, 'unset' => 24], +'blink' => ['set' => 5, 'unset' => 25], +'reverse' => ['set' => 7, 'unset' => 27], +'conceal' => ['set' => 8, 'unset' => 28], +]; + +private $foreground; +private $background; +private $options = []; + +public function __construct(string $foreground = '', string $background = '', array $options = []) +{ +$this->foreground = $this->parseColor($foreground); +$this->background = $this->parseColor($background, true); + +foreach ($options as $option) { +if (!isset(self::AVAILABLE_OPTIONS[$option])) { +throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(self::AVAILABLE_OPTIONS)))); +} + +$this->options[$option] = self::AVAILABLE_OPTIONS[$option]; +} +} + +public function apply(string $text): string +{ +return $this->set().$text.$this->unset(); +} + +public function set(): string +{ +$setCodes = []; +if ('' !== $this->foreground) { +$setCodes[] = $this->foreground; +} +if ('' !== $this->background) { +$setCodes[] = $this->background; +} +foreach ($this->options as $option) { +$setCodes[] = $option['set']; +} +if (0 === \count($setCodes)) { +return ''; +} + +return sprintf("\033[%sm", implode(';', $setCodes)); +} + +public function unset(): string +{ +$unsetCodes = []; +if ('' !== $this->foreground) { +$unsetCodes[] = 39; +} +if ('' !== $this->background) { +$unsetCodes[] = 49; +} +foreach ($this->options as $option) { +$unsetCodes[] = $option['unset']; +} +if (0 === \count($unsetCodes)) { +return ''; +} + +return sprintf("\033[%sm", implode(';', $unsetCodes)); +} + +private function parseColor(string $color, bool $background = false): string +{ +if ('' === $color) { +return ''; +} + +if ('#' === $color[0]) { +$color = substr($color, 1); + +if (3 === \strlen($color)) { +$color = $color[0].$color[0].$color[1].$color[1].$color[2].$color[2]; +} + +if (6 !== \strlen($color)) { +throw new InvalidArgumentException(sprintf('Invalid "%s" color.', $color)); +} + +return ($background ? '4' : '3').$this->convertHexColorToAnsi(hexdec($color)); +} + +if (isset(self::COLORS[$color])) { +return ($background ? '4' : '3').self::COLORS[$color]; +} + +if (isset(self::BRIGHT_COLORS[$color])) { +return ($background ? '10' : '9').self::BRIGHT_COLORS[$color]; +} + +throw new InvalidArgumentException(sprintf('Invalid "%s" color; expected one of (%s).', $color, implode(', ', array_merge(array_keys(self::COLORS), array_keys(self::BRIGHT_COLORS))))); +} + +private function convertHexColorToAnsi(int $color): string +{ +$r = ($color >> 16) & 255; +$g = ($color >> 8) & 255; +$b = $color & 255; + + +if ('truecolor' !== getenv('COLORTERM')) { +return (string) $this->degradeHexColorToAnsi($r, $g, $b); +} + +return sprintf('8;2;%d;%d;%d', $r, $g, $b); +} + +private function degradeHexColorToAnsi(int $r, int $g, int $b): int +{ +if (0 === round($this->getSaturation($r, $g, $b) / 50)) { +return 0; +} + +return (round($b / 255) << 2) | (round($g / 255) << 1) | round($r / 255); +} + +private function getSaturation(int $r, int $g, int $b): int +{ +$r = $r / 255; +$g = $g / 255; +$b = $b / 255; +$v = max($r, $g, $b); + +if (0 === $diff = $v - min($r, $g, $b)) { +return 0; +} + +return (int) $diff * 100 / $v; +} +} diff --git a/composer/vendor/symfony/console/Command/Command.php b/composer/vendor/symfony/console/Command/Command.php new file mode 100644 index 000000000..a64144314 --- /dev/null +++ b/composer/vendor/symfony/console/Command/Command.php @@ -0,0 +1,710 @@ += 80000 && $attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { +return $attribute[0]->newInstance()->name; +} + +$r = new \ReflectionProperty($class, 'defaultName'); + +return $class === $r->class ? static::$defaultName : null; +} + +public static function getDefaultDescription(): ?string +{ +$class = static::class; + +if (\PHP_VERSION_ID >= 80000 && $attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { +return $attribute[0]->newInstance()->description; +} + +$r = new \ReflectionProperty($class, 'defaultDescription'); + +return $class === $r->class ? static::$defaultDescription : null; +} + + + + + + +public function __construct(string $name = null) +{ +$this->definition = new InputDefinition(); + +if (null === $name && null !== $name = static::getDefaultName()) { +$aliases = explode('|', $name); + +if ('' === $name = array_shift($aliases)) { +$this->setHidden(true); +$name = array_shift($aliases); +} + +$this->setAliases($aliases); +} + +if (null !== $name) { +$this->setName($name); +} + +if ('' === $this->description) { +$this->setDescription(static::getDefaultDescription() ?? ''); +} + +$this->configure(); +} + + + + + + +public function ignoreValidationErrors() +{ +$this->ignoreValidationErrors = true; +} + +public function setApplication(Application $application = null) +{ +$this->application = $application; +if ($application) { +$this->setHelperSet($application->getHelperSet()); +} else { +$this->helperSet = null; +} + +$this->fullDefinition = null; +} + +public function setHelperSet(HelperSet $helperSet) +{ +$this->helperSet = $helperSet; +} + + + + + + +public function getHelperSet() +{ +return $this->helperSet; +} + + + + + + +public function getApplication() +{ +return $this->application; +} + + + + + + + + + +public function isEnabled() +{ +return true; +} + + + + +protected function configure() +{ +} + + + + + + + + + + + + + + + +protected function execute(InputInterface $input, OutputInterface $output) +{ +throw new LogicException('You must override the execute() method in the concrete command class.'); +} + + + + + + + + +protected function interact(InputInterface $input, OutputInterface $output) +{ +} + + + + + + + + + + + +protected function initialize(InputInterface $input, OutputInterface $output) +{ +} + + + + + + + + + + + + + + + +public function run(InputInterface $input, OutputInterface $output) +{ + +$this->mergeApplicationDefinition(); + + +try { +$input->bind($this->getDefinition()); +} catch (ExceptionInterface $e) { +if (!$this->ignoreValidationErrors) { +throw $e; +} +} + +$this->initialize($input, $output); + +if (null !== $this->processTitle) { +if (\function_exists('cli_set_process_title')) { +if (!@cli_set_process_title($this->processTitle)) { +if ('Darwin' === \PHP_OS) { +$output->writeln('Running "cli_set_process_title" as an unprivileged user is not supported on MacOS.', OutputInterface::VERBOSITY_VERY_VERBOSE); +} else { +cli_set_process_title($this->processTitle); +} +} +} elseif (\function_exists('setproctitle')) { +setproctitle($this->processTitle); +} elseif (OutputInterface::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) { +$output->writeln('Install the proctitle PECL to be able to change the process title.'); +} +} + +if ($input->isInteractive()) { +$this->interact($input, $output); +} + + + + +if ($input->hasArgument('command') && null === $input->getArgument('command')) { +$input->setArgument('command', $this->getName()); +} + +$input->validate(); + +if ($this->code) { +$statusCode = ($this->code)($input, $output); +} else { +$statusCode = $this->execute($input, $output); + +if (!\is_int($statusCode)) { +throw new \TypeError(sprintf('Return value of "%s::execute()" must be of the type int, "%s" returned.', static::class, get_debug_type($statusCode))); +} +} + +return is_numeric($statusCode) ? (int) $statusCode : 0; +} + + + + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +} + + + + + + + + + + + + + + + +public function setCode(callable $code) +{ +if ($code instanceof \Closure) { +$r = new \ReflectionFunction($code); +if (null === $r->getClosureThis()) { +set_error_handler(static function () {}); +try { +if ($c = \Closure::bind($code, $this)) { +$code = $c; +} +} finally { +restore_error_handler(); +} +} +} + +$this->code = $code; + +return $this; +} + + + + + + + + + + +public function mergeApplicationDefinition(bool $mergeArgs = true) +{ +if (null === $this->application) { +return; +} + +$this->fullDefinition = new InputDefinition(); +$this->fullDefinition->setOptions($this->definition->getOptions()); +$this->fullDefinition->addOptions($this->application->getDefinition()->getOptions()); + +if ($mergeArgs) { +$this->fullDefinition->setArguments($this->application->getDefinition()->getArguments()); +$this->fullDefinition->addArguments($this->definition->getArguments()); +} else { +$this->fullDefinition->setArguments($this->definition->getArguments()); +} +} + + + + + + + + +public function setDefinition($definition) +{ +if ($definition instanceof InputDefinition) { +$this->definition = $definition; +} else { +$this->definition->setDefinition($definition); +} + +$this->fullDefinition = null; + +return $this; +} + + + + + + +public function getDefinition() +{ +return $this->fullDefinition ?? $this->getNativeDefinition(); +} + + + + + + + + + + + +public function getNativeDefinition() +{ +if (null === $this->definition) { +throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', static::class)); +} + +return $this->definition; +} + + + + + + + + + + + +public function addArgument(string $name, int $mode = null, string $description = '', $default = null) +{ +$this->definition->addArgument(new InputArgument($name, $mode, $description, $default)); +if (null !== $this->fullDefinition) { +$this->fullDefinition->addArgument(new InputArgument($name, $mode, $description, $default)); +} + +return $this; +} + + + + + + + + + + + + +public function addOption(string $name, $shortcut = null, int $mode = null, string $description = '', $default = null) +{ +$this->definition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); +if (null !== $this->fullDefinition) { +$this->fullDefinition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); +} + +return $this; +} + + + + + + + + + + + + + +public function setName(string $name) +{ +$this->validateName($name); + +$this->name = $name; + +return $this; +} + + + + + + + + + +public function setProcessTitle(string $title) +{ +$this->processTitle = $title; + +return $this; +} + + + + + + +public function getName() +{ +return $this->name; +} + + + + + + + + + +public function setHidden(bool $hidden ) +{ +$this->hidden = $hidden; + +return $this; +} + + + + +public function isHidden() +{ +return $this->hidden; +} + + + + + + +public function setDescription(string $description) +{ +$this->description = $description; + +return $this; +} + + + + + + +public function getDescription() +{ +return $this->description; +} + + + + + + +public function setHelp(string $help) +{ +$this->help = $help; + +return $this; +} + + + + + + +public function getHelp() +{ +return $this->help; +} + + + + + + + +public function getProcessedHelp() +{ +$name = $this->name; +$isSingleCommand = $this->application && $this->application->isSingleCommand(); + +$placeholders = [ +'%command.name%', +'%command.full_name%', +]; +$replacements = [ +$name, +$isSingleCommand ? $_SERVER['PHP_SELF'] : $_SERVER['PHP_SELF'].' '.$name, +]; + +return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription()); +} + + + + + + + + + + +public function setAliases(iterable $aliases) +{ +$list = []; + +foreach ($aliases as $alias) { +$this->validateName($alias); +$list[] = $alias; +} + +$this->aliases = \is_array($aliases) ? $aliases : $list; + +return $this; +} + + + + + + +public function getAliases() +{ +return $this->aliases; +} + + + + + + + + +public function getSynopsis(bool $short = false) +{ +$key = $short ? 'short' : 'long'; + +if (!isset($this->synopsis[$key])) { +$this->synopsis[$key] = trim(sprintf('%s %s', $this->name, $this->definition->getSynopsis($short))); +} + +return $this->synopsis[$key]; +} + + + + + + +public function addUsage(string $usage) +{ +if (!str_starts_with($usage, $this->name)) { +$usage = sprintf('%s %s', $this->name, $usage); +} + +$this->usages[] = $usage; + +return $this; +} + + + + + + +public function getUsages() +{ +return $this->usages; +} + + + + + + + + + +public function getHelper(string $name) +{ +if (null === $this->helperSet) { +throw new LogicException(sprintf('Cannot retrieve helper "%s" because there is no HelperSet defined. Did you forget to add your command to the application or to set the application on the command using the setApplication() method? You can also set the HelperSet directly using the setHelperSet() method.', $name)); +} + +return $this->helperSet->get($name); +} + + + + + + + + +private function validateName(string $name) +{ +if (!preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)) { +throw new InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name)); +} +} +} diff --git a/composer/vendor/symfony/console/Command/CompleteCommand.php b/composer/vendor/symfony/console/Command/CompleteCommand.php new file mode 100644 index 000000000..f88805914 --- /dev/null +++ b/composer/vendor/symfony/console/Command/CompleteCommand.php @@ -0,0 +1,205 @@ +completionOutputs = $completionOutputs + ['bash' => BashCompletionOutput::class]; + +parent::__construct(); +} + +protected function configure(): void +{ +$this +->addOption('shell', 's', InputOption::VALUE_REQUIRED, 'The shell type ("'.implode('", "', array_keys($this->completionOutputs)).'")') +->addOption('input', 'i', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'An array of input tokens (e.g. COMP_WORDS or argv)') +->addOption('current', 'c', InputOption::VALUE_REQUIRED, 'The index of the "input" array that the cursor is in (e.g. COMP_CWORD)') +->addOption('symfony', 'S', InputOption::VALUE_REQUIRED, 'The version of the completion script') +; +} + +protected function initialize(InputInterface $input, OutputInterface $output) +{ +$this->isDebug = filter_var(getenv('SYMFONY_COMPLETION_DEBUG'), \FILTER_VALIDATE_BOOLEAN); +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +try { + + + + + + + + + + + +$shell = $input->getOption('shell'); +if (!$shell) { +throw new \RuntimeException('The "--shell" option must be set.'); +} + +if (!$completionOutput = $this->completionOutputs[$shell] ?? false) { +throw new \RuntimeException(sprintf('Shell completion is not supported for your shell: "%s" (supported: "%s").', $shell, implode('", "', array_keys($this->completionOutputs)))); +} + +$completionInput = $this->createCompletionInput($input); +$suggestions = new CompletionSuggestions(); + +$this->log([ +'', +''.date('Y-m-d H:i:s').'', +'Input: ("|" indicates the cursor position)', +' '.(string) $completionInput, +'Command:', +' '.(string) implode(' ', $_SERVER['argv']), +'Messages:', +]); + +$command = $this->findCommand($completionInput, $output); +if (null === $command) { +$this->log(' No command found, completing using the Application class.'); + +$this->getApplication()->complete($completionInput, $suggestions); +} elseif ( +$completionInput->mustSuggestArgumentValuesFor('command') +&& $command->getName() !== $completionInput->getCompletionValue() +&& !\in_array($completionInput->getCompletionValue(), $command->getAliases(), true) +) { +$this->log(' No command found, completing using the Application class.'); + + +$suggestions->suggestValues(array_filter(array_merge([$command->getName()], $command->getAliases()))); +} else { +$command->mergeApplicationDefinition(); +$completionInput->bind($command->getDefinition()); + +if (CompletionInput::TYPE_OPTION_NAME === $completionInput->getCompletionType()) { +$this->log(' Completing option names for the '.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).' command.'); + +$suggestions->suggestOptions($command->getDefinition()->getOptions()); +} else { +$this->log([ +' Completing using the '.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).' class.', +' Completing '.$completionInput->getCompletionType().' for '.$completionInput->getCompletionName().'', +]); +if (null !== $compval = $completionInput->getCompletionValue()) { +$this->log(' Current value: '.$compval.''); +} + +$command->complete($completionInput, $suggestions); +} +} + + +$completionOutput = new $completionOutput(); + +$this->log('Suggestions:'); +if ($options = $suggestions->getOptionSuggestions()) { +$this->log(' --'.implode(' --', array_map(function ($o) { return $o->getName(); }, $options))); +} elseif ($values = $suggestions->getValueSuggestions()) { +$this->log(' '.implode(' ', $values)); +} else { +$this->log(' No suggestions were provided'); +} + +$completionOutput->write($suggestions, $output); +} catch (\Throwable $e) { +$this->log([ +'Error!', +(string) $e, +]); + +if ($output->isDebug()) { +throw $e; +} + +return self::FAILURE; +} + +return self::SUCCESS; +} + +private function createCompletionInput(InputInterface $input): CompletionInput +{ +$currentIndex = $input->getOption('current'); +if (!$currentIndex || !ctype_digit($currentIndex)) { +throw new \RuntimeException('The "--current" option must be set and it must be an integer.'); +} + +$completionInput = CompletionInput::fromTokens($input->getOption('input'), (int) $currentIndex); + +try { +$completionInput->bind($this->getApplication()->getDefinition()); +} catch (ExceptionInterface $e) { +} + +return $completionInput; +} + +private function findCommand(CompletionInput $completionInput, OutputInterface $output): ?Command +{ +try { +$inputName = $completionInput->getFirstArgument(); +if (null === $inputName) { +return null; +} + +return $this->getApplication()->find($inputName); +} catch (CommandNotFoundException $e) { +} + +return null; +} + +private function log($messages): void +{ +if (!$this->isDebug) { +return; +} + +$commandName = basename($_SERVER['argv'][0]); +file_put_contents(sys_get_temp_dir().'/sf_'.$commandName.'.log', implode(\PHP_EOL, (array) $messages).\PHP_EOL, \FILE_APPEND); +} +} diff --git a/composer/vendor/symfony/console/Command/DumpCompletionCommand.php b/composer/vendor/symfony/console/Command/DumpCompletionCommand.php new file mode 100644 index 000000000..973a83572 --- /dev/null +++ b/composer/vendor/symfony/console/Command/DumpCompletionCommand.php @@ -0,0 +1,139 @@ +mustSuggestArgumentValuesFor('shell')) { +$suggestions->suggestValues($this->getSupportedShells()); +} +} + +protected function configure() +{ +$fullCommand = $_SERVER['PHP_SELF']; +$commandName = basename($fullCommand); +$fullCommand = @realpath($fullCommand) ?: $fullCommand; + +$this +->setHelp(<<%command.name% command dumps the shell completion script required +to use shell autocompletion (currently only bash completion is supported). + +Static installation +------------------- + +Dump the script to a global completion file and restart your shell: + + %command.full_name% bash | sudo tee /etc/bash_completion.d/{$commandName} + +Or dump the script to a local file and source it: + + %command.full_name% bash > completion.sh + + # source the file whenever you use the project + source completion.sh + + # or add this line at the end of your "~/.bashrc" file: + source /path/to/completion.sh + +Dynamic installation +-------------------- + +Add this to the end of your shell configuration file (e.g. "~/.bashrc"): + + eval "$({$fullCommand} completion bash)" +EOH +) +->addArgument('shell', InputArgument::OPTIONAL, 'The shell type (e.g. "bash"), the value of the "$SHELL" env var will be used if this is not given') +->addOption('debug', null, InputOption::VALUE_NONE, 'Tail the completion debug log') +; +} + +protected function execute(InputInterface $input, OutputInterface $output): int +{ +$commandName = basename($_SERVER['argv'][0]); + +if ($input->getOption('debug')) { +$this->tailDebugLog($commandName, $output); + +return self::SUCCESS; +} + +$shell = $input->getArgument('shell') ?? self::guessShell(); +$completionFile = __DIR__.'/../Resources/completion.'.$shell; +if (!file_exists($completionFile)) { +$supportedShells = $this->getSupportedShells(); + +if ($output instanceof ConsoleOutputInterface) { +$output = $output->getErrorOutput(); +} +if ($shell) { +$output->writeln(sprintf('Detected shell "%s", which is not supported by Symfony shell completion (supported shells: "%s").', $shell, implode('", "', $supportedShells))); +} else { +$output->writeln(sprintf('Shell not detected, Symfony shell completion only supports "%s").', implode('", "', $supportedShells))); +} + +return self::INVALID; +} + +$output->write(str_replace(['{{ COMMAND_NAME }}', '{{ VERSION }}'], [$commandName, $this->getApplication()->getVersion()], file_get_contents($completionFile))); + +return self::SUCCESS; +} + +private static function guessShell(): string +{ +return basename($_SERVER['SHELL'] ?? ''); +} + +private function tailDebugLog(string $commandName, OutputInterface $output): void +{ +$debugFile = sys_get_temp_dir().'/sf_'.$commandName.'.log'; +if (!file_exists($debugFile)) { +touch($debugFile); +} +$process = new Process(['tail', '-f', $debugFile], null, null, null, 0); +$process->run(function (string $type, string $line) use ($output): void { +$output->write($line); +}); +} + + + + +private function getSupportedShells(): array +{ +return array_map(function ($f) { +return pathinfo($f, \PATHINFO_EXTENSION); +}, glob(__DIR__.'/../Resources/completion.*')); +} +} diff --git a/composer/vendor/symfony/console/Command/HelpCommand.php b/composer/vendor/symfony/console/Command/HelpCommand.php new file mode 100644 index 000000000..6c921071a --- /dev/null +++ b/composer/vendor/symfony/console/Command/HelpCommand.php @@ -0,0 +1,101 @@ +ignoreValidationErrors(); + +$this +->setName('help') +->setDefinition([ +new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help'), +new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), +new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help'), +]) +->setDescription('Display help for a command') +->setHelp(<<<'EOF' +The %command.name% command displays help for a given command: + + %command.full_name% list + +You can also output the help in other formats by using the --format option: + + %command.full_name% --format=xml list + +To display the list of available commands, please use the list command. +EOF +) +; +} + +public function setCommand(Command $command) +{ +$this->command = $command; +} + + + + +protected function execute(InputInterface $input, OutputInterface $output) +{ +if (null === $this->command) { +$this->command = $this->getApplication()->find($input->getArgument('command_name')); +} + +$helper = new DescriptorHelper(); +$helper->describe($output, $this->command, [ +'format' => $input->getOption('format'), +'raw_text' => $input->getOption('raw'), +]); + +$this->command = null; + +return 0; +} + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +if ($input->mustSuggestArgumentValuesFor('command_name')) { +$descriptor = new ApplicationDescription($this->getApplication()); +$suggestions->suggestValues(array_keys($descriptor->getCommands())); + +return; +} + +if ($input->mustSuggestOptionValuesFor('format')) { +$helper = new DescriptorHelper(); +$suggestions->suggestValues($helper->getFormats()); +} +} +} diff --git a/composer/vendor/symfony/console/Command/LazyCommand.php b/composer/vendor/symfony/console/Command/LazyCommand.php new file mode 100644 index 000000000..47a883052 --- /dev/null +++ b/composer/vendor/symfony/console/Command/LazyCommand.php @@ -0,0 +1,218 @@ +setName($name) +->setAliases($aliases) +->setHidden($isHidden) +->setDescription($description); + +$this->command = $commandFactory; +$this->isEnabled = $isEnabled; +} + +public function ignoreValidationErrors(): void +{ +$this->getCommand()->ignoreValidationErrors(); +} + +public function setApplication(Application $application = null): void +{ +if ($this->command instanceof parent) { +$this->command->setApplication($application); +} + +parent::setApplication($application); +} + +public function setHelperSet(HelperSet $helperSet): void +{ +if ($this->command instanceof parent) { +$this->command->setHelperSet($helperSet); +} + +parent::setHelperSet($helperSet); +} + +public function isEnabled(): bool +{ +return $this->isEnabled ?? $this->getCommand()->isEnabled(); +} + +public function run(InputInterface $input, OutputInterface $output): int +{ +return $this->getCommand()->run($input, $output); +} + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +$this->getCommand()->complete($input, $suggestions); +} + + + + +public function setCode(callable $code): self +{ +$this->getCommand()->setCode($code); + +return $this; +} + + + + +public function mergeApplicationDefinition(bool $mergeArgs = true): void +{ +$this->getCommand()->mergeApplicationDefinition($mergeArgs); +} + + + + +public function setDefinition($definition): self +{ +$this->getCommand()->setDefinition($definition); + +return $this; +} + +public function getDefinition(): InputDefinition +{ +return $this->getCommand()->getDefinition(); +} + +public function getNativeDefinition(): InputDefinition +{ +return $this->getCommand()->getNativeDefinition(); +} + + + + +public function addArgument(string $name, int $mode = null, string $description = '', $default = null): self +{ +$this->getCommand()->addArgument($name, $mode, $description, $default); + +return $this; +} + + + + +public function addOption(string $name, $shortcut = null, int $mode = null, string $description = '', $default = null): self +{ +$this->getCommand()->addOption($name, $shortcut, $mode, $description, $default); + +return $this; +} + + + + +public function setProcessTitle(string $title): self +{ +$this->getCommand()->setProcessTitle($title); + +return $this; +} + + + + +public function setHelp(string $help): self +{ +$this->getCommand()->setHelp($help); + +return $this; +} + +public function getHelp(): string +{ +return $this->getCommand()->getHelp(); +} + +public function getProcessedHelp(): string +{ +return $this->getCommand()->getProcessedHelp(); +} + +public function getSynopsis(bool $short = false): string +{ +return $this->getCommand()->getSynopsis($short); +} + + + + +public function addUsage(string $usage): self +{ +$this->getCommand()->addUsage($usage); + +return $this; +} + +public function getUsages(): array +{ +return $this->getCommand()->getUsages(); +} + + + + +public function getHelper(string $name) +{ +return $this->getCommand()->getHelper($name); +} + +public function getCommand(): parent +{ +if (!$this->command instanceof \Closure) { +return $this->command; +} + +$command = $this->command = ($this->command)(); +$command->setApplication($this->getApplication()); + +if (null !== $this->getHelperSet()) { +$command->setHelperSet($this->getHelperSet()); +} + +$command->setName($this->getName()) +->setAliases($this->getAliases()) +->setHidden($this->isHidden()) +->setDescription($this->getDescription()); + + +$command->getDefinition(); + +return $command; +} +} diff --git a/composer/vendor/symfony/console/Command/ListCommand.php b/composer/vendor/symfony/console/Command/ListCommand.php new file mode 100644 index 000000000..d97263be2 --- /dev/null +++ b/composer/vendor/symfony/console/Command/ListCommand.php @@ -0,0 +1,95 @@ +setName('list') +->setDefinition([ +new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'), +new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), +new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), +new InputOption('short', null, InputOption::VALUE_NONE, 'To skip describing commands\' arguments'), +]) +->setDescription('List commands') +->setHelp(<<<'EOF' +The %command.name% command lists all commands: + + %command.full_name% + +You can also display the commands for a specific namespace: + + %command.full_name% test + +You can also output the information in other formats by using the --format option: + + %command.full_name% --format=xml + +It's also possible to get raw list of commands (useful for embedding command runner): + + %command.full_name% --raw +EOF +) +; +} + + + + +protected function execute(InputInterface $input, OutputInterface $output) +{ +$helper = new DescriptorHelper(); +$helper->describe($output, $this->getApplication(), [ +'format' => $input->getOption('format'), +'raw_text' => $input->getOption('raw'), +'namespace' => $input->getArgument('namespace'), +'short' => $input->getOption('short'), +]); + +return 0; +} + +public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void +{ +if ($input->mustSuggestArgumentValuesFor('namespace')) { +$descriptor = new ApplicationDescription($this->getApplication()); +$suggestions->suggestValues(array_keys($descriptor->getNamespaces())); + +return; +} + +if ($input->mustSuggestOptionValuesFor('format')) { +$helper = new DescriptorHelper(); +$suggestions->suggestValues($helper->getFormats()); +} +} +} diff --git a/composer/vendor/symfony/console/Command/LockableTrait.php b/composer/vendor/symfony/console/Command/LockableTrait.php new file mode 100644 index 000000000..ddf2d44c8 --- /dev/null +++ b/composer/vendor/symfony/console/Command/LockableTrait.php @@ -0,0 +1,69 @@ +lock) { +throw new LogicException('A lock is already in place.'); +} + +if (SemaphoreStore::isSupported()) { +$store = new SemaphoreStore(); +} else { +$store = new FlockStore(); +} + +$this->lock = (new LockFactory($store))->createLock($name ?: $this->getName()); +if (!$this->lock->acquire($blocking)) { +$this->lock = null; + +return false; +} + +return true; +} + + + + +private function release() +{ +if ($this->lock) { +$this->lock->release(); +$this->lock = null; +} +} +} diff --git a/composer/vendor/symfony/console/Command/SignalableCommandInterface.php b/composer/vendor/symfony/console/Command/SignalableCommandInterface.php new file mode 100644 index 000000000..6da52d12d --- /dev/null +++ b/composer/vendor/symfony/console/Command/SignalableCommandInterface.php @@ -0,0 +1,30 @@ +container = $container; +$this->commandMap = $commandMap; +} + + + + +public function get(string $name) +{ +if (!$this->has($name)) { +throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); +} + +return $this->container->get($this->commandMap[$name]); +} + + + + +public function has(string $name) +{ +return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); +} + + + + +public function getNames() +{ +return array_keys($this->commandMap); +} +} diff --git a/composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php b/composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php new file mode 100644 index 000000000..3ae38caba --- /dev/null +++ b/composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php @@ -0,0 +1,62 @@ +factories = $factories; +} + + + + +public function has(string $name) +{ +return isset($this->factories[$name]); +} + + + + +public function get(string $name) +{ +if (!isset($this->factories[$name])) { +throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); +} + +$factory = $this->factories[$name]; + +return $factory(); +} + + + + +public function getNames() +{ +return array_keys($this->factories); +} +} diff --git a/composer/vendor/symfony/console/Completion/CompletionInput.php b/composer/vendor/symfony/console/Completion/CompletionInput.php new file mode 100644 index 000000000..54b08edd4 --- /dev/null +++ b/composer/vendor/symfony/console/Completion/CompletionInput.php @@ -0,0 +1,249 @@ +tokens = $tokens; +$input->currentIndex = $currentIndex; + +return $input; +} + + + + +public function bind(InputDefinition $definition): void +{ +parent::bind($definition); + +$relevantToken = $this->getRelevantToken(); +if ('-' === $relevantToken[0]) { + +[$optionToken, $optionValue] = explode('=', $relevantToken, 2) + ['', '']; + +$option = $this->getOptionFromToken($optionToken); +if (null === $option && !$this->isCursorFree()) { +$this->completionType = self::TYPE_OPTION_NAME; +$this->completionValue = $relevantToken; + +return; +} + +if (null !== $option && $option->acceptValue()) { +$this->completionType = self::TYPE_OPTION_VALUE; +$this->completionName = $option->getName(); +$this->completionValue = $optionValue ?: (!str_starts_with($optionToken, '--') ? substr($optionToken, 2) : ''); + +return; +} +} + +$previousToken = $this->tokens[$this->currentIndex - 1]; +if ('-' === $previousToken[0] && '' !== trim($previousToken, '-')) { + +$previousOption = $this->getOptionFromToken($previousToken); +if (null !== $previousOption && $previousOption->acceptValue()) { +$this->completionType = self::TYPE_OPTION_VALUE; +$this->completionName = $previousOption->getName(); +$this->completionValue = $relevantToken; + +return; +} +} + + +$this->completionType = self::TYPE_ARGUMENT_VALUE; + +foreach ($this->definition->getArguments() as $argumentName => $argument) { +if (!isset($this->arguments[$argumentName])) { +break; +} + +$argumentValue = $this->arguments[$argumentName]; +$this->completionName = $argumentName; +if (\is_array($argumentValue)) { +$this->completionValue = $argumentValue ? $argumentValue[array_key_last($argumentValue)] : null; +} else { +$this->completionValue = $argumentValue; +} +} + +if ($this->currentIndex >= \count($this->tokens)) { +if (!isset($this->arguments[$argumentName]) || $this->definition->getArgument($argumentName)->isArray()) { +$this->completionName = $argumentName; +$this->completionValue = ''; +} else { + +$this->completionType = self::TYPE_NONE; +$this->completionName = null; +$this->completionValue = ''; +} +} +} + + + + + + + + + + + +public function getCompletionType(): string +{ +return $this->completionType; +} + + + + + + +public function getCompletionName(): ?string +{ +return $this->completionName; +} + + + + +public function getCompletionValue(): string +{ +return $this->completionValue; +} + +public function mustSuggestOptionValuesFor(string $optionName): bool +{ +return self::TYPE_OPTION_VALUE === $this->getCompletionType() && $optionName === $this->getCompletionName(); +} + +public function mustSuggestArgumentValuesFor(string $argumentName): bool +{ +return self::TYPE_ARGUMENT_VALUE === $this->getCompletionType() && $argumentName === $this->getCompletionName(); +} + +protected function parseToken(string $token, bool $parseOptions): bool +{ +try { +return parent::parseToken($token, $parseOptions); +} catch (RuntimeException $e) { + +} + +return $parseOptions; +} + +private function getOptionFromToken(string $optionToken): ?InputOption +{ +$optionName = ltrim($optionToken, '-'); +if (!$optionName) { +return null; +} + +if ('-' === ($optionToken[1] ?? ' ')) { + +return $this->definition->hasOption($optionName) ? $this->definition->getOption($optionName) : null; +} + + +return $this->definition->hasShortcut($optionName[0]) ? $this->definition->getOptionForShortcut($optionName[0]) : null; +} + + + + +private function getRelevantToken(): string +{ +return $this->tokens[$this->isCursorFree() ? $this->currentIndex - 1 : $this->currentIndex]; +} + + + + +private function isCursorFree(): bool +{ +$nrOfTokens = \count($this->tokens); +if ($this->currentIndex > $nrOfTokens) { +throw new \LogicException('Current index is invalid, it must be the number of input tokens or one more.'); +} + +return $this->currentIndex >= $nrOfTokens; +} + +public function __toString() +{ +$str = ''; +foreach ($this->tokens as $i => $token) { +$str .= $token; + +if ($this->currentIndex === $i) { +$str .= '|'; +} + +$str .= ' '; +} + +if ($this->currentIndex > $i) { +$str .= '|'; +} + +return rtrim($str); +} +} diff --git a/composer/vendor/symfony/console/Completion/CompletionSuggestions.php b/composer/vendor/symfony/console/Completion/CompletionSuggestions.php new file mode 100644 index 000000000..4d16e5c3a --- /dev/null +++ b/composer/vendor/symfony/console/Completion/CompletionSuggestions.php @@ -0,0 +1,99 @@ +valueSuggestions[] = !$value instanceof Suggestion ? new Suggestion($value) : $value; + +return $this; +} + + + + + + + + +public function suggestValues(array $values): self +{ +foreach ($values as $value) { +$this->suggestValue($value); +} + +return $this; +} + + + + + + +public function suggestOption(InputOption $option): self +{ +$this->optionSuggestions[] = $option; + +return $this; +} + + + + + + + + +public function suggestOptions(array $options): self +{ +foreach ($options as $option) { +$this->suggestOption($option); +} + +return $this; +} + + + + +public function getOptionSuggestions(): array +{ +return $this->optionSuggestions; +} + + + + +public function getValueSuggestions(): array +{ +return $this->valueSuggestions; +} +} diff --git a/composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php b/composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php new file mode 100644 index 000000000..0913eac7e --- /dev/null +++ b/composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php @@ -0,0 +1,33 @@ +getValueSuggestions(); +foreach ($suggestions->getOptionSuggestions() as $option) { +$values[] = '--'.$option->getName(); +if ($option->isNegatable()) { +$values[] = '--no-'.$option->getName(); +} +} +$output->writeln(implode("\n", $values)); +} +} diff --git a/composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php b/composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php new file mode 100644 index 000000000..d2d86c929 --- /dev/null +++ b/composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php @@ -0,0 +1,25 @@ +value = $value; +} + +public function getValue(): string +{ +return $this->value; +} + +public function __toString(): string +{ +return $this->getValue(); +} +} diff --git a/composer/vendor/symfony/console/ConsoleEvents.php b/composer/vendor/symfony/console/ConsoleEvents.php new file mode 100644 index 000000000..7e8291c37 --- /dev/null +++ b/composer/vendor/symfony/console/ConsoleEvents.php @@ -0,0 +1,72 @@ + self::COMMAND, +ConsoleErrorEvent::class => self::ERROR, +ConsoleSignalEvent::class => self::SIGNAL, +ConsoleTerminateEvent::class => self::TERMINATE, +]; +} diff --git a/composer/vendor/symfony/console/Cursor.php b/composer/vendor/symfony/console/Cursor.php new file mode 100644 index 000000000..7ab735e33 --- /dev/null +++ b/composer/vendor/symfony/console/Cursor.php @@ -0,0 +1,207 @@ +output = $output; +$this->input = $input ?? (\defined('STDIN') ? \STDIN : fopen('php://input', 'r+')); +} + + + + +public function moveUp(int $lines = 1): self +{ +$this->output->write(sprintf("\x1b[%dA", $lines)); + +return $this; +} + + + + +public function moveDown(int $lines = 1): self +{ +$this->output->write(sprintf("\x1b[%dB", $lines)); + +return $this; +} + + + + +public function moveRight(int $columns = 1): self +{ +$this->output->write(sprintf("\x1b[%dC", $columns)); + +return $this; +} + + + + +public function moveLeft(int $columns = 1): self +{ +$this->output->write(sprintf("\x1b[%dD", $columns)); + +return $this; +} + + + + +public function moveToColumn(int $column): self +{ +$this->output->write(sprintf("\x1b[%dG", $column)); + +return $this; +} + + + + +public function moveToPosition(int $column, int $row): self +{ +$this->output->write(sprintf("\x1b[%d;%dH", $row + 1, $column)); + +return $this; +} + + + + +public function savePosition(): self +{ +$this->output->write("\x1b7"); + +return $this; +} + + + + +public function restorePosition(): self +{ +$this->output->write("\x1b8"); + +return $this; +} + + + + +public function hide(): self +{ +$this->output->write("\x1b[?25l"); + +return $this; +} + + + + +public function show(): self +{ +$this->output->write("\x1b[?25h\x1b[?0c"); + +return $this; +} + + + + + + +public function clearLine(): self +{ +$this->output->write("\x1b[2K"); + +return $this; +} + + + + +public function clearLineAfter(): self +{ +$this->output->write("\x1b[K"); + +return $this; +} + + + + + + +public function clearOutput(): self +{ +$this->output->write("\x1b[0J"); + +return $this; +} + + + + + + +public function clearScreen(): self +{ +$this->output->write("\x1b[2J"); + +return $this; +} + + + + +public function getCurrentPosition(): array +{ +static $isTtySupported; + +if (null === $isTtySupported && \function_exists('proc_open')) { +$isTtySupported = (bool) @proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); +} + +if (!$isTtySupported) { +return [1, 1]; +} + +$sttyMode = shell_exec('stty -g'); +shell_exec('stty -icanon -echo'); + +@fwrite($this->input, "\033[6n"); + +$code = trim(fread($this->input, 1024)); + +shell_exec(sprintf('stty %s', $sttyMode)); + +sscanf($code, "\033[%d;%dR", $row, $col); + +return [$col, $row]; +} +} diff --git a/composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php b/composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php new file mode 100644 index 000000000..28813ff63 --- /dev/null +++ b/composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php @@ -0,0 +1,148 @@ +commandLoaderServiceId = $commandLoaderServiceId; +$this->commandTag = $commandTag; +$this->noPreloadTag = $noPreloadTag; +$this->privateTagName = $privateTagName; +} + +public function process(ContainerBuilder $container) +{ +$commandServices = $container->findTaggedServiceIds($this->commandTag, true); +$lazyCommandMap = []; +$lazyCommandRefs = []; +$serviceIds = []; + +foreach ($commandServices as $id => $tags) { +$definition = $container->getDefinition($id); +$definition->addTag($this->noPreloadTag); +$class = $container->getParameterBag()->resolveValue($definition->getClass()); + +if (isset($tags[0]['command'])) { +$aliases = $tags[0]['command']; +} else { +if (!$r = $container->getReflectionClass($class)) { +throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); +} +if (!$r->isSubclassOf(Command::class)) { +throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); +} +$aliases = str_replace('%', '%%', $class::getDefaultName() ?? ''); +} + +$aliases = explode('|', $aliases ?? ''); +$commandName = array_shift($aliases); + +if ($isHidden = '' === $commandName) { +$commandName = array_shift($aliases); +} + +if (null === $commandName) { +if (!$definition->isPublic() || $definition->isPrivate() || $definition->hasTag($this->privateTagName)) { +$commandId = 'console.command.public_alias.'.$id; +$container->setAlias($commandId, $id)->setPublic(true); +$id = $commandId; +} +$serviceIds[] = $id; + +continue; +} + +$description = $tags[0]['description'] ?? null; + +unset($tags[0]); +$lazyCommandMap[$commandName] = $id; +$lazyCommandRefs[$id] = new TypedReference($id, $class); + +foreach ($aliases as $alias) { +$lazyCommandMap[$alias] = $id; +} + +foreach ($tags as $tag) { +if (isset($tag['command'])) { +$aliases[] = $tag['command']; +$lazyCommandMap[$tag['command']] = $id; +} + +$description = $description ?? $tag['description'] ?? null; +} + +$definition->addMethodCall('setName', [$commandName]); + +if ($aliases) { +$definition->addMethodCall('setAliases', [$aliases]); +} + +if ($isHidden) { +$definition->addMethodCall('setHidden', [true]); +} + +if (!$description) { +if (!$r = $container->getReflectionClass($class)) { +throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); +} +if (!$r->isSubclassOf(Command::class)) { +throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); +} +$description = str_replace('%', '%%', $class::getDefaultDescription() ?? ''); +} + +if ($description) { +$definition->addMethodCall('setDescription', [$description]); + +$container->register('.'.$id.'.lazy', LazyCommand::class) +->setArguments([$commandName, $aliases, $description, $isHidden, new ServiceClosureArgument($lazyCommandRefs[$id])]); + +$lazyCommandRefs[$id] = new Reference('.'.$id.'.lazy'); +} +} + +$container +->register($this->commandLoaderServiceId, ContainerCommandLoader::class) +->setPublic(true) +->addTag($this->noPreloadTag) +->setArguments([ServiceLocatorTagPass::register($container, $lazyCommandRefs), $lazyCommandMap]); + +$container->setParameter('console.command.ids', $serviceIds); +} +} diff --git a/composer/vendor/symfony/console/Descriptor/ApplicationDescription.php b/composer/vendor/symfony/console/Descriptor/ApplicationDescription.php new file mode 100644 index 000000000..f215510cb --- /dev/null +++ b/composer/vendor/symfony/console/Descriptor/ApplicationDescription.php @@ -0,0 +1,143 @@ +application = $application; +$this->namespace = $namespace; +$this->showHidden = $showHidden; +} + +public function getNamespaces(): array +{ +if (null === $this->namespaces) { +$this->inspectApplication(); +} + +return $this->namespaces; +} + + + + +public function getCommands(): array +{ +if (null === $this->commands) { +$this->inspectApplication(); +} + +return $this->commands; +} + + + + +public function getCommand(string $name): Command +{ +if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) { +throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); +} + +return $this->commands[$name] ?? $this->aliases[$name]; +} + +private function inspectApplication() +{ +$this->commands = []; +$this->namespaces = []; + +$all = $this->application->all($this->namespace ? $this->application->findNamespace($this->namespace) : null); +foreach ($this->sortCommands($all) as $namespace => $commands) { +$names = []; + + +foreach ($commands as $name => $command) { +if (!$command->getName() || (!$this->showHidden && $command->isHidden())) { +continue; +} + +if ($command->getName() === $name) { +$this->commands[$name] = $command; +} else { +$this->aliases[$name] = $command; +} + +$names[] = $name; +} + +$this->namespaces[$namespace] = ['id' => $namespace, 'commands' => $names]; +} +} + +private function sortCommands(array $commands): array +{ +$namespacedCommands = []; +$globalCommands = []; +$sortedCommands = []; +foreach ($commands as $name => $command) { +$key = $this->application->extractNamespace($name, 1); +if (\in_array($key, ['', self::GLOBAL_NAMESPACE], true)) { +$globalCommands[$name] = $command; +} else { +$namespacedCommands[$key][$name] = $command; +} +} + +if ($globalCommands) { +ksort($globalCommands); +$sortedCommands[self::GLOBAL_NAMESPACE] = $globalCommands; +} + +if ($namespacedCommands) { +ksort($namespacedCommands, \SORT_STRING); +foreach ($namespacedCommands as $key => $commandsSet) { +ksort($commandsSet); +$sortedCommands[$key] = $commandsSet; +} +} + +return $sortedCommands; +} +} diff --git a/composer/vendor/symfony/console/Descriptor/Descriptor.php b/composer/vendor/symfony/console/Descriptor/Descriptor.php new file mode 100644 index 000000000..523283dc4 --- /dev/null +++ b/composer/vendor/symfony/console/Descriptor/Descriptor.php @@ -0,0 +1,94 @@ +output = $output; + +switch (true) { +case $object instanceof InputArgument: +$this->describeInputArgument($object, $options); +break; +case $object instanceof InputOption: +$this->describeInputOption($object, $options); +break; +case $object instanceof InputDefinition: +$this->describeInputDefinition($object, $options); +break; +case $object instanceof Command: +$this->describeCommand($object, $options); +break; +case $object instanceof Application: +$this->describeApplication($object, $options); +break; +default: +throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_debug_type($object))); +} +} + + + + +protected function write(string $content, bool $decorated = false) +{ +$this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW); +} + + + + +abstract protected function describeInputArgument(InputArgument $argument, array $options = []); + + + + +abstract protected function describeInputOption(InputOption $option, array $options = []); + + + + +abstract protected function describeInputDefinition(InputDefinition $definition, array $options = []); + + + + +abstract protected function describeCommand(Command $command, array $options = []); + + + + +abstract protected function describeApplication(Application $application, array $options = []); +} diff --git a/composer/vendor/symfony/console/Descriptor/DescriptorInterface.php b/composer/vendor/symfony/console/Descriptor/DescriptorInterface.php new file mode 100644 index 000000000..621df656a --- /dev/null +++ b/composer/vendor/symfony/console/Descriptor/DescriptorInterface.php @@ -0,0 +1,24 @@ +writeData($this->getInputArgumentData($argument), $options); +} + + + + +protected function describeInputOption(InputOption $option, array $options = []) +{ +$this->writeData($this->getInputOptionData($option), $options); +if ($option->isNegatable()) { +$this->writeData($this->getInputOptionData($option, true), $options); +} +} + + + + +protected function describeInputDefinition(InputDefinition $definition, array $options = []) +{ +$this->writeData($this->getInputDefinitionData($definition), $options); +} + + + + +protected function describeCommand(Command $command, array $options = []) +{ +$this->writeData($this->getCommandData($command, $options['short'] ?? false), $options); +} + + + + +protected function describeApplication(Application $application, array $options = []) +{ +$describedNamespace = $options['namespace'] ?? null; +$description = new ApplicationDescription($application, $describedNamespace, true); +$commands = []; + +foreach ($description->getCommands() as $command) { +$commands[] = $this->getCommandData($command, $options['short'] ?? false); +} + +$data = []; +if ('UNKNOWN' !== $application->getName()) { +$data['application']['name'] = $application->getName(); +if ('UNKNOWN' !== $application->getVersion()) { +$data['application']['version'] = $application->getVersion(); +} +} + +$data['commands'] = $commands; + +if ($describedNamespace) { +$data['namespace'] = $describedNamespace; +} else { +$data['namespaces'] = array_values($description->getNamespaces()); +} + +$this->writeData($data, $options); +} + + + + +private function writeData(array $data, array $options) +{ +$flags = $options['json_encoding'] ?? 0; + +$this->write(json_encode($data, $flags)); +} + +private function getInputArgumentData(InputArgument $argument): array +{ +return [ +'name' => $argument->getName(), +'is_required' => $argument->isRequired(), +'is_array' => $argument->isArray(), +'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()), +'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault(), +]; +} + +private function getInputOptionData(InputOption $option, bool $negated = false): array +{ +return $negated ? [ +'name' => '--no-'.$option->getName(), +'shortcut' => '', +'accept_value' => false, +'is_value_required' => false, +'is_multiple' => false, +'description' => 'Negate the "--'.$option->getName().'" option', +'default' => false, +] : [ +'name' => '--'.$option->getName(), +'shortcut' => $option->getShortcut() ? '-'.str_replace('|', '|-', $option->getShortcut()) : '', +'accept_value' => $option->acceptValue(), +'is_value_required' => $option->isValueRequired(), +'is_multiple' => $option->isArray(), +'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()), +'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault(), +]; +} + +private function getInputDefinitionData(InputDefinition $definition): array +{ +$inputArguments = []; +foreach ($definition->getArguments() as $name => $argument) { +$inputArguments[$name] = $this->getInputArgumentData($argument); +} + +$inputOptions = []; +foreach ($definition->getOptions() as $name => $option) { +$inputOptions[$name] = $this->getInputOptionData($option); +if ($option->isNegatable()) { +$inputOptions['no-'.$name] = $this->getInputOptionData($option, true); +} +} + +return ['arguments' => $inputArguments, 'options' => $inputOptions]; +} + +private function getCommandData(Command $command, bool $short = false): array +{ +$data = [ +'name' => $command->getName(), +'description' => $command->getDescription(), +]; + +if ($short) { +$data += [ +'usage' => $command->getAliases(), +]; +} else { +$command->mergeApplicationDefinition(false); + +$data += [ +'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), +'help' => $command->getProcessedHelp(), +'definition' => $this->getInputDefinitionData($command->getDefinition()), +]; +} + +$data['hidden'] = $command->isHidden(); + +return $data; +} +} diff --git a/composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php b/composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php new file mode 100644 index 000000000..08d38d263 --- /dev/null +++ b/composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php @@ -0,0 +1,206 @@ +isDecorated(); +$output->setDecorated(false); + +parent::describe($output, $object, $options); + +$output->setDecorated($decorated); +} + + + + +protected function write(string $content, bool $decorated = true) +{ +parent::write($content, $decorated); +} + + + + +protected function describeInputArgument(InputArgument $argument, array $options = []) +{ +$this->write( +'#### `'.($argument->getName() ?: '')."`\n\n" +.($argument->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $argument->getDescription())."\n\n" : '') +.'* Is required: '.($argument->isRequired() ? 'yes' : 'no')."\n" +.'* Is array: '.($argument->isArray() ? 'yes' : 'no')."\n" +.'* Default: `'.str_replace("\n", '', var_export($argument->getDefault(), true)).'`' +); +} + + + + +protected function describeInputOption(InputOption $option, array $options = []) +{ +$name = '--'.$option->getName(); +if ($option->isNegatable()) { +$name .= '|--no-'.$option->getName(); +} +if ($option->getShortcut()) { +$name .= '|-'.str_replace('|', '|-', $option->getShortcut()).''; +} + +$this->write( +'#### `'.$name.'`'."\n\n" +.($option->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $option->getDescription())."\n\n" : '') +.'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n" +.'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n" +.'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n" +.'* Is negatable: '.($option->isNegatable() ? 'yes' : 'no')."\n" +.'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`' +); +} + + + + +protected function describeInputDefinition(InputDefinition $definition, array $options = []) +{ +if ($showArguments = \count($definition->getArguments()) > 0) { +$this->write('### Arguments'); +foreach ($definition->getArguments() as $argument) { +$this->write("\n\n"); +if (null !== $describeInputArgument = $this->describeInputArgument($argument)) { +$this->write($describeInputArgument); +} +} +} + +if (\count($definition->getOptions()) > 0) { +if ($showArguments) { +$this->write("\n\n"); +} + +$this->write('### Options'); +foreach ($definition->getOptions() as $option) { +$this->write("\n\n"); +if (null !== $describeInputOption = $this->describeInputOption($option)) { +$this->write($describeInputOption); +} +} +} +} + + + + +protected function describeCommand(Command $command, array $options = []) +{ +if ($options['short'] ?? false) { +$this->write( +'`'.$command->getName()."`\n" +.str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" +.($command->getDescription() ? $command->getDescription()."\n\n" : '') +.'### Usage'."\n\n" +.array_reduce($command->getAliases(), function ($carry, $usage) { +return $carry.'* `'.$usage.'`'."\n"; +}) +); + +return; +} + +$command->mergeApplicationDefinition(false); + +$this->write( +'`'.$command->getName()."`\n" +.str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" +.($command->getDescription() ? $command->getDescription()."\n\n" : '') +.'### Usage'."\n\n" +.array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), function ($carry, $usage) { +return $carry.'* `'.$usage.'`'."\n"; +}) +); + +if ($help = $command->getProcessedHelp()) { +$this->write("\n"); +$this->write($help); +} + +$definition = $command->getDefinition(); +if ($definition->getOptions() || $definition->getArguments()) { +$this->write("\n\n"); +$this->describeInputDefinition($definition); +} +} + + + + +protected function describeApplication(Application $application, array $options = []) +{ +$describedNamespace = $options['namespace'] ?? null; +$description = new ApplicationDescription($application, $describedNamespace); +$title = $this->getApplicationTitle($application); + +$this->write($title."\n".str_repeat('=', Helper::width($title))); + +foreach ($description->getNamespaces() as $namespace) { +if (ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { +$this->write("\n\n"); +$this->write('**'.$namespace['id'].':**'); +} + +$this->write("\n\n"); +$this->write(implode("\n", array_map(function ($commandName) use ($description) { +return sprintf('* [`%s`](#%s)', $commandName, str_replace(':', '', $description->getCommand($commandName)->getName())); +}, $namespace['commands']))); +} + +foreach ($description->getCommands() as $command) { +$this->write("\n\n"); +if (null !== $describeCommand = $this->describeCommand($command, $options)) { +$this->write($describeCommand); +} +} +} + +private function getApplicationTitle(Application $application): string +{ +if ('UNKNOWN' !== $application->getName()) { +if ('UNKNOWN' !== $application->getVersion()) { +return sprintf('%s %s', $application->getName(), $application->getVersion()); +} + +return $application->getName(); +} + +return 'Console Tool'; +} +} diff --git a/composer/vendor/symfony/console/Descriptor/TextDescriptor.php b/composer/vendor/symfony/console/Descriptor/TextDescriptor.php new file mode 100644 index 000000000..e7e1ddadb --- /dev/null +++ b/composer/vendor/symfony/console/Descriptor/TextDescriptor.php @@ -0,0 +1,341 @@ +getDefault() && (!\is_array($argument->getDefault()) || \count($argument->getDefault()))) { +$default = sprintf(' [default: %s]', $this->formatDefaultValue($argument->getDefault())); +} else { +$default = ''; +} + +$totalWidth = $options['total_width'] ?? Helper::width($argument->getName()); +$spacingWidth = $totalWidth - \strlen($argument->getName()); + +$this->writeText(sprintf(' %s %s%s%s', +$argument->getName(), +str_repeat(' ', $spacingWidth), + +preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $argument->getDescription()), +$default +), $options); +} + + + + +protected function describeInputOption(InputOption $option, array $options = []) +{ +if ($option->acceptValue() && null !== $option->getDefault() && (!\is_array($option->getDefault()) || \count($option->getDefault()))) { +$default = sprintf(' [default: %s]', $this->formatDefaultValue($option->getDefault())); +} else { +$default = ''; +} + +$value = ''; +if ($option->acceptValue()) { +$value = '='.strtoupper($option->getName()); + +if ($option->isValueOptional()) { +$value = '['.$value.']'; +} +} + +$totalWidth = $options['total_width'] ?? $this->calculateTotalWidthForOptions([$option]); +$synopsis = sprintf('%s%s', +$option->getShortcut() ? sprintf('-%s, ', $option->getShortcut()) : ' ', +sprintf($option->isNegatable() ? '--%1$s|--no-%1$s' : '--%1$s%2$s', $option->getName(), $value) +); + +$spacingWidth = $totalWidth - Helper::width($synopsis); + +$this->writeText(sprintf(' %s %s%s%s%s', +$synopsis, +str_repeat(' ', $spacingWidth), + +preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $option->getDescription()), +$default, +$option->isArray() ? ' (multiple values allowed)' : '' +), $options); +} + + + + +protected function describeInputDefinition(InputDefinition $definition, array $options = []) +{ +$totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); +foreach ($definition->getArguments() as $argument) { +$totalWidth = max($totalWidth, Helper::width($argument->getName())); +} + +if ($definition->getArguments()) { +$this->writeText('Arguments:', $options); +$this->writeText("\n"); +foreach ($definition->getArguments() as $argument) { +$this->describeInputArgument($argument, array_merge($options, ['total_width' => $totalWidth])); +$this->writeText("\n"); +} +} + +if ($definition->getArguments() && $definition->getOptions()) { +$this->writeText("\n"); +} + +if ($definition->getOptions()) { +$laterOptions = []; + +$this->writeText('Options:', $options); +foreach ($definition->getOptions() as $option) { +if (\strlen($option->getShortcut() ?? '') > 1) { +$laterOptions[] = $option; +continue; +} +$this->writeText("\n"); +$this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); +} +foreach ($laterOptions as $option) { +$this->writeText("\n"); +$this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); +} +} +} + + + + +protected function describeCommand(Command $command, array $options = []) +{ +$command->mergeApplicationDefinition(false); + +if ($description = $command->getDescription()) { +$this->writeText('Description:', $options); +$this->writeText("\n"); +$this->writeText(' '.$description); +$this->writeText("\n\n"); +} + +$this->writeText('Usage:', $options); +foreach (array_merge([$command->getSynopsis(true)], $command->getAliases(), $command->getUsages()) as $usage) { +$this->writeText("\n"); +$this->writeText(' '.OutputFormatter::escape($usage), $options); +} +$this->writeText("\n"); + +$definition = $command->getDefinition(); +if ($definition->getOptions() || $definition->getArguments()) { +$this->writeText("\n"); +$this->describeInputDefinition($definition, $options); +$this->writeText("\n"); +} + +$help = $command->getProcessedHelp(); +if ($help && $help !== $description) { +$this->writeText("\n"); +$this->writeText('Help:', $options); +$this->writeText("\n"); +$this->writeText(' '.str_replace("\n", "\n ", $help), $options); +$this->writeText("\n"); +} +} + + + + +protected function describeApplication(Application $application, array $options = []) +{ +$describedNamespace = $options['namespace'] ?? null; +$description = new ApplicationDescription($application, $describedNamespace); + +if (isset($options['raw_text']) && $options['raw_text']) { +$width = $this->getColumnWidth($description->getCommands()); + +foreach ($description->getCommands() as $command) { +$this->writeText(sprintf("%-{$width}s %s", $command->getName(), $command->getDescription()), $options); +$this->writeText("\n"); +} +} else { +if ('' != $help = $application->getHelp()) { +$this->writeText("$help\n\n", $options); +} + +$this->writeText("Usage:\n", $options); +$this->writeText(" command [options] [arguments]\n\n", $options); + +$this->describeInputDefinition(new InputDefinition($application->getDefinition()->getOptions()), $options); + +$this->writeText("\n"); +$this->writeText("\n"); + +$commands = $description->getCommands(); +$namespaces = $description->getNamespaces(); +if ($describedNamespace && $namespaces) { + +$describedNamespaceInfo = reset($namespaces); +foreach ($describedNamespaceInfo['commands'] as $name) { +$commands[$name] = $description->getCommand($name); +} +} + + +$width = $this->getColumnWidth(array_merge(...array_values(array_map(function ($namespace) use ($commands) { +return array_intersect($namespace['commands'], array_keys($commands)); +}, array_values($namespaces))))); + +if ($describedNamespace) { +$this->writeText(sprintf('Available commands for the "%s" namespace:', $describedNamespace), $options); +} else { +$this->writeText('Available commands:', $options); +} + +foreach ($namespaces as $namespace) { +$namespace['commands'] = array_filter($namespace['commands'], function ($name) use ($commands) { +return isset($commands[$name]); +}); + +if (!$namespace['commands']) { +continue; +} + +if (!$describedNamespace && ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { +$this->writeText("\n"); +$this->writeText(' '.$namespace['id'].'', $options); +} + +foreach ($namespace['commands'] as $name) { +$this->writeText("\n"); +$spacingWidth = $width - Helper::width($name); +$command = $commands[$name]; +$commandAliases = $name === $command->getName() ? $this->getCommandAliasesText($command) : ''; +$this->writeText(sprintf(' %s%s%s', $name, str_repeat(' ', $spacingWidth), $commandAliases.$command->getDescription()), $options); +} +} + +$this->writeText("\n"); +} +} + + + + +private function writeText(string $content, array $options = []) +{ +$this->write( +isset($options['raw_text']) && $options['raw_text'] ? strip_tags($content) : $content, +isset($options['raw_output']) ? !$options['raw_output'] : true +); +} + + + + +private function getCommandAliasesText(Command $command): string +{ +$text = ''; +$aliases = $command->getAliases(); + +if ($aliases) { +$text = '['.implode('|', $aliases).'] '; +} + +return $text; +} + + + + + + +private function formatDefaultValue($default): string +{ +if (\INF === $default) { +return 'INF'; +} + +if (\is_string($default)) { +$default = OutputFormatter::escape($default); +} elseif (\is_array($default)) { +foreach ($default as $key => $value) { +if (\is_string($value)) { +$default[$key] = OutputFormatter::escape($value); +} +} +} + +return str_replace('\\\\', '\\', json_encode($default, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE)); +} + + + + +private function getColumnWidth(array $commands): int +{ +$widths = []; + +foreach ($commands as $command) { +if ($command instanceof Command) { +$widths[] = Helper::width($command->getName()); +foreach ($command->getAliases() as $alias) { +$widths[] = Helper::width($alias); +} +} else { +$widths[] = Helper::width($command); +} +} + +return $widths ? max($widths) + 2 : 0; +} + + + + +private function calculateTotalWidthForOptions(array $options): int +{ +$totalWidth = 0; +foreach ($options as $option) { + +$nameLength = 1 + max(Helper::width($option->getShortcut()), 1) + 4 + Helper::width($option->getName()); +if ($option->isNegatable()) { +$nameLength += 6 + Helper::width($option->getName()); +} elseif ($option->acceptValue()) { +$valueLength = 1 + Helper::width($option->getName()); +$valueLength += $option->isValueOptional() ? 2 : 0; + +$nameLength += $valueLength; +} +$totalWidth = max($totalWidth, $nameLength); +} + +return $totalWidth; +} +} diff --git a/composer/vendor/symfony/console/Descriptor/XmlDescriptor.php b/composer/vendor/symfony/console/Descriptor/XmlDescriptor.php new file mode 100644 index 000000000..40e71eae0 --- /dev/null +++ b/composer/vendor/symfony/console/Descriptor/XmlDescriptor.php @@ -0,0 +1,247 @@ +appendChild($definitionXML = $dom->createElement('definition')); + +$definitionXML->appendChild($argumentsXML = $dom->createElement('arguments')); +foreach ($definition->getArguments() as $argument) { +$this->appendDocument($argumentsXML, $this->getInputArgumentDocument($argument)); +} + +$definitionXML->appendChild($optionsXML = $dom->createElement('options')); +foreach ($definition->getOptions() as $option) { +$this->appendDocument($optionsXML, $this->getInputOptionDocument($option)); +} + +return $dom; +} + +public function getCommandDocument(Command $command, bool $short = false): \DOMDocument +{ +$dom = new \DOMDocument('1.0', 'UTF-8'); +$dom->appendChild($commandXML = $dom->createElement('command')); + +$commandXML->setAttribute('id', $command->getName()); +$commandXML->setAttribute('name', $command->getName()); +$commandXML->setAttribute('hidden', $command->isHidden() ? 1 : 0); + +$commandXML->appendChild($usagesXML = $dom->createElement('usages')); + +$commandXML->appendChild($descriptionXML = $dom->createElement('description')); +$descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription()))); + +if ($short) { +foreach ($command->getAliases() as $usage) { +$usagesXML->appendChild($dom->createElement('usage', $usage)); +} +} else { +$command->mergeApplicationDefinition(false); + +foreach (array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()) as $usage) { +$usagesXML->appendChild($dom->createElement('usage', $usage)); +} + +$commandXML->appendChild($helpXML = $dom->createElement('help')); +$helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); + +$definitionXML = $this->getInputDefinitionDocument($command->getDefinition()); +$this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); +} + +return $dom; +} + +public function getApplicationDocument(Application $application, string $namespace = null, bool $short = false): \DOMDocument +{ +$dom = new \DOMDocument('1.0', 'UTF-8'); +$dom->appendChild($rootXml = $dom->createElement('symfony')); + +if ('UNKNOWN' !== $application->getName()) { +$rootXml->setAttribute('name', $application->getName()); +if ('UNKNOWN' !== $application->getVersion()) { +$rootXml->setAttribute('version', $application->getVersion()); +} +} + +$rootXml->appendChild($commandsXML = $dom->createElement('commands')); + +$description = new ApplicationDescription($application, $namespace, true); + +if ($namespace) { +$commandsXML->setAttribute('namespace', $namespace); +} + +foreach ($description->getCommands() as $command) { +$this->appendDocument($commandsXML, $this->getCommandDocument($command, $short)); +} + +if (!$namespace) { +$rootXml->appendChild($namespacesXML = $dom->createElement('namespaces')); + +foreach ($description->getNamespaces() as $namespaceDescription) { +$namespacesXML->appendChild($namespaceArrayXML = $dom->createElement('namespace')); +$namespaceArrayXML->setAttribute('id', $namespaceDescription['id']); + +foreach ($namespaceDescription['commands'] as $name) { +$namespaceArrayXML->appendChild($commandXML = $dom->createElement('command')); +$commandXML->appendChild($dom->createTextNode($name)); +} +} +} + +return $dom; +} + + + + +protected function describeInputArgument(InputArgument $argument, array $options = []) +{ +$this->writeDocument($this->getInputArgumentDocument($argument)); +} + + + + +protected function describeInputOption(InputOption $option, array $options = []) +{ +$this->writeDocument($this->getInputOptionDocument($option)); +} + + + + +protected function describeInputDefinition(InputDefinition $definition, array $options = []) +{ +$this->writeDocument($this->getInputDefinitionDocument($definition)); +} + + + + +protected function describeCommand(Command $command, array $options = []) +{ +$this->writeDocument($this->getCommandDocument($command, $options['short'] ?? false)); +} + + + + +protected function describeApplication(Application $application, array $options = []) +{ +$this->writeDocument($this->getApplicationDocument($application, $options['namespace'] ?? null, $options['short'] ?? false)); +} + + + + +private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent) +{ +foreach ($importedParent->childNodes as $childNode) { +$parentNode->appendChild($parentNode->ownerDocument->importNode($childNode, true)); +} +} + + + + +private function writeDocument(\DOMDocument $dom) +{ +$dom->formatOutput = true; +$this->write($dom->saveXML()); +} + +private function getInputArgumentDocument(InputArgument $argument): \DOMDocument +{ +$dom = new \DOMDocument('1.0', 'UTF-8'); + +$dom->appendChild($objectXML = $dom->createElement('argument')); +$objectXML->setAttribute('name', $argument->getName()); +$objectXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0); +$objectXML->setAttribute('is_array', $argument->isArray() ? 1 : 0); +$objectXML->appendChild($descriptionXML = $dom->createElement('description')); +$descriptionXML->appendChild($dom->createTextNode($argument->getDescription())); + +$objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); +$defaults = \is_array($argument->getDefault()) ? $argument->getDefault() : (\is_bool($argument->getDefault()) ? [var_export($argument->getDefault(), true)] : ($argument->getDefault() ? [$argument->getDefault()] : [])); +foreach ($defaults as $default) { +$defaultsXML->appendChild($defaultXML = $dom->createElement('default')); +$defaultXML->appendChild($dom->createTextNode($default)); +} + +return $dom; +} + +private function getInputOptionDocument(InputOption $option): \DOMDocument +{ +$dom = new \DOMDocument('1.0', 'UTF-8'); + +$dom->appendChild($objectXML = $dom->createElement('option')); +$objectXML->setAttribute('name', '--'.$option->getName()); +$pos = strpos($option->getShortcut() ?? '', '|'); +if (false !== $pos) { +$objectXML->setAttribute('shortcut', '-'.substr($option->getShortcut(), 0, $pos)); +$objectXML->setAttribute('shortcuts', '-'.str_replace('|', '|-', $option->getShortcut())); +} else { +$objectXML->setAttribute('shortcut', $option->getShortcut() ? '-'.$option->getShortcut() : ''); +} +$objectXML->setAttribute('accept_value', $option->acceptValue() ? 1 : 0); +$objectXML->setAttribute('is_value_required', $option->isValueRequired() ? 1 : 0); +$objectXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0); +$objectXML->appendChild($descriptionXML = $dom->createElement('description')); +$descriptionXML->appendChild($dom->createTextNode($option->getDescription())); + +if ($option->acceptValue()) { +$defaults = \is_array($option->getDefault()) ? $option->getDefault() : (\is_bool($option->getDefault()) ? [var_export($option->getDefault(), true)] : ($option->getDefault() ? [$option->getDefault()] : [])); +$objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); + +if (!empty($defaults)) { +foreach ($defaults as $default) { +$defaultsXML->appendChild($defaultXML = $dom->createElement('default')); +$defaultXML->appendChild($dom->createTextNode($default)); +} +} +} + +if ($option->isNegatable()) { +$dom->appendChild($objectXML = $dom->createElement('option')); +$objectXML->setAttribute('name', '--no-'.$option->getName()); +$objectXML->setAttribute('shortcut', ''); +$objectXML->setAttribute('accept_value', 0); +$objectXML->setAttribute('is_value_required', 0); +$objectXML->setAttribute('is_multiple', 0); +$objectXML->appendChild($descriptionXML = $dom->createElement('description')); +$descriptionXML->appendChild($dom->createTextNode('Negate the "--'.$option->getName().'" option')); +} + +return $dom; +} +} diff --git a/composer/vendor/symfony/console/Event/ConsoleCommandEvent.php b/composer/vendor/symfony/console/Event/ConsoleCommandEvent.php new file mode 100644 index 000000000..3635826a4 --- /dev/null +++ b/composer/vendor/symfony/console/Event/ConsoleCommandEvent.php @@ -0,0 +1,51 @@ +commandShouldRun = false; +} + +public function enableCommand(): bool +{ +return $this->commandShouldRun = true; +} + + + + +public function commandShouldRun(): bool +{ +return $this->commandShouldRun; +} +} diff --git a/composer/vendor/symfony/console/Event/ConsoleErrorEvent.php b/composer/vendor/symfony/console/Event/ConsoleErrorEvent.php new file mode 100644 index 000000000..45499f775 --- /dev/null +++ b/composer/vendor/symfony/console/Event/ConsoleErrorEvent.php @@ -0,0 +1,58 @@ +error = $error; +} + +public function getError(): \Throwable +{ +return $this->error; +} + +public function setError(\Throwable $error): void +{ +$this->error = $error; +} + +public function setExitCode(int $exitCode): void +{ +$this->exitCode = $exitCode; + +$r = new \ReflectionProperty($this->error, 'code'); +$r->setAccessible(true); +$r->setValue($this->error, $this->exitCode); +} + +public function getExitCode(): int +{ +return $this->exitCode ?? (\is_int($this->error->getCode()) && 0 !== $this->error->getCode() ? $this->error->getCode() : 1); +} +} diff --git a/composer/vendor/symfony/console/Event/ConsoleEvent.php b/composer/vendor/symfony/console/Event/ConsoleEvent.php new file mode 100644 index 000000000..82bf1033f --- /dev/null +++ b/composer/vendor/symfony/console/Event/ConsoleEvent.php @@ -0,0 +1,67 @@ +command = $command; +$this->input = $input; +$this->output = $output; +} + + + + + + +public function getCommand() +{ +return $this->command; +} + + + + + + +public function getInput() +{ +return $this->input; +} + + + + + + +public function getOutput() +{ +return $this->output; +} +} diff --git a/composer/vendor/symfony/console/Event/ConsoleSignalEvent.php b/composer/vendor/symfony/console/Event/ConsoleSignalEvent.php new file mode 100644 index 000000000..5c697c1fc --- /dev/null +++ b/composer/vendor/symfony/console/Event/ConsoleSignalEvent.php @@ -0,0 +1,35 @@ +handlingSignal = $handlingSignal; +} + +public function getHandlingSignal(): int +{ +return $this->handlingSignal; +} +} diff --git a/composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php b/composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php new file mode 100644 index 000000000..7d698e98e --- /dev/null +++ b/composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php @@ -0,0 +1,43 @@ +setExitCode($exitCode); +} + +public function setExitCode(int $exitCode): void +{ +$this->exitCode = $exitCode; +} + +public function getExitCode(): int +{ +return $this->exitCode; +} +} diff --git a/composer/vendor/symfony/console/EventListener/ErrorListener.php b/composer/vendor/symfony/console/EventListener/ErrorListener.php new file mode 100644 index 000000000..c22b436a6 --- /dev/null +++ b/composer/vendor/symfony/console/EventListener/ErrorListener.php @@ -0,0 +1,95 @@ +logger = $logger; +} + +public function onConsoleError(ConsoleErrorEvent $event) +{ +if (null === $this->logger) { +return; +} + +$error = $event->getError(); + +if (!$inputString = $this->getInputString($event)) { +$this->logger->critical('An error occurred while using the console. Message: "{message}"', ['exception' => $error, 'message' => $error->getMessage()]); + +return; +} + +$this->logger->critical('Error thrown while running command "{command}". Message: "{message}"', ['exception' => $error, 'command' => $inputString, 'message' => $error->getMessage()]); +} + +public function onConsoleTerminate(ConsoleTerminateEvent $event) +{ +if (null === $this->logger) { +return; +} + +$exitCode = $event->getExitCode(); + +if (0 === $exitCode) { +return; +} + +if (!$inputString = $this->getInputString($event)) { +$this->logger->debug('The console exited with code "{code}"', ['code' => $exitCode]); + +return; +} + +$this->logger->debug('Command "{command}" exited with code "{code}"', ['command' => $inputString, 'code' => $exitCode]); +} + +public static function getSubscribedEvents() +{ +return [ +ConsoleEvents::ERROR => ['onConsoleError', -128], +ConsoleEvents::TERMINATE => ['onConsoleTerminate', -128], +]; +} + +private static function getInputString(ConsoleEvent $event): ?string +{ +$commandName = $event->getCommand() ? $event->getCommand()->getName() : null; +$input = $event->getInput(); + +if (method_exists($input, '__toString')) { +if ($commandName) { +return str_replace(["'$commandName'", "\"$commandName\""], $commandName, (string) $input); +} + +return (string) $input; +} + +return $commandName; +} +} diff --git a/composer/vendor/symfony/console/Exception/CommandNotFoundException.php b/composer/vendor/symfony/console/Exception/CommandNotFoundException.php new file mode 100644 index 000000000..75ee726f4 --- /dev/null +++ b/composer/vendor/symfony/console/Exception/CommandNotFoundException.php @@ -0,0 +1,43 @@ +alternatives = $alternatives; +} + + + + +public function getAlternatives() +{ +return $this->alternatives; +} +} diff --git a/composer/vendor/symfony/console/Exception/ExceptionInterface.php b/composer/vendor/symfony/console/Exception/ExceptionInterface.php new file mode 100644 index 000000000..1ec15240a --- /dev/null +++ b/composer/vendor/symfony/console/Exception/ExceptionInterface.php @@ -0,0 +1,21 @@ +style ?? $this->style = new NullOutputFormatterStyle(); +} + + + + +public function hasStyle(string $name): bool +{ +return false; +} + + + + +public function isDecorated(): bool +{ +return false; +} + + + + +public function setDecorated(bool $decorated): void +{ + +} + + + + +public function setStyle(string $name, OutputFormatterStyleInterface $style): void +{ + +} +} diff --git a/composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php b/composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php new file mode 100644 index 000000000..198015df8 --- /dev/null +++ b/composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php @@ -0,0 +1,66 @@ +styleStack = clone $this->styleStack; +foreach ($this->styles as $key => $value) { +$this->styles[$key] = clone $value; +} +} + + + + + + +public static function escape(string $text) +{ +$text = preg_replace('/([^\\\\]|^)([<>])/', '$1\\\\$2', $text); + +return self::escapeTrailingBackslash($text); +} + + + + + + +public static function escapeTrailingBackslash(string $text): string +{ +if (str_ends_with($text, '\\')) { +$len = \strlen($text); +$text = rtrim($text, '\\'); +$text = str_replace("\0", '', $text); +$text .= str_repeat("\0", $len - \strlen($text)); +} + +return $text; +} + + + + + + +public function __construct(bool $decorated = false, array $styles = []) +{ +$this->decorated = $decorated; + +$this->setStyle('error', new OutputFormatterStyle('white', 'red')); +$this->setStyle('info', new OutputFormatterStyle('green')); +$this->setStyle('comment', new OutputFormatterStyle('yellow')); +$this->setStyle('question', new OutputFormatterStyle('black', 'cyan')); + +foreach ($styles as $name => $style) { +$this->setStyle($name, $style); +} + +$this->styleStack = new OutputFormatterStyleStack(); +} + + + + +public function setDecorated(bool $decorated) +{ +$this->decorated = $decorated; +} + + + + +public function isDecorated() +{ +return $this->decorated; +} + + + + +public function setStyle(string $name, OutputFormatterStyleInterface $style) +{ +$this->styles[strtolower($name)] = $style; +} + + + + +public function hasStyle(string $name) +{ +return isset($this->styles[strtolower($name)]); +} + + + + +public function getStyle(string $name) +{ +if (!$this->hasStyle($name)) { +throw new InvalidArgumentException(sprintf('Undefined style: "%s".', $name)); +} + +return $this->styles[strtolower($name)]; +} + + + + +public function format(?string $message) +{ +return $this->formatAndWrap($message, 0); +} + + + + +public function formatAndWrap(?string $message, int $width) +{ +if (null === $message) { +return ''; +} + +$offset = 0; +$output = ''; +$openTagRegex = '[a-z](?:[^\\\\<>]*+ | \\\\.)*'; +$closeTagRegex = '[a-z][^<>]*+'; +$currentLineLength = 0; +preg_match_all("#<(($openTagRegex) | /($closeTagRegex)?)>#ix", $message, $matches, \PREG_OFFSET_CAPTURE); +foreach ($matches[0] as $i => $match) { +$pos = $match[1]; +$text = $match[0]; + +if (0 != $pos && '\\' == $message[$pos - 1]) { +continue; +} + + +$output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset), $output, $width, $currentLineLength); +$offset = $pos + \strlen($text); + + +if ($open = '/' != $text[1]) { +$tag = $matches[1][$i][0]; +} else { +$tag = $matches[3][$i][0] ?? ''; +} + +if (!$open && !$tag) { + +$this->styleStack->pop(); +} elseif (null === $style = $this->createStyleFromString($tag)) { +$output .= $this->applyCurrentStyle($text, $output, $width, $currentLineLength); +} elseif ($open) { +$this->styleStack->push($style); +} else { +$this->styleStack->pop($style); +} +} + +$output .= $this->applyCurrentStyle(substr($message, $offset), $output, $width, $currentLineLength); + +return strtr($output, ["\0" => '\\', '\\<' => '<', '\\>' => '>']); +} + + + + +public function getStyleStack() +{ +return $this->styleStack; +} + + + + +private function createStyleFromString(string $string): ?OutputFormatterStyleInterface +{ +if (isset($this->styles[$string])) { +return $this->styles[$string]; +} + +if (!preg_match_all('/([^=]+)=([^;]+)(;|$)/', $string, $matches, \PREG_SET_ORDER)) { +return null; +} + +$style = new OutputFormatterStyle(); +foreach ($matches as $match) { +array_shift($match); +$match[0] = strtolower($match[0]); + +if ('fg' == $match[0]) { +$style->setForeground(strtolower($match[1])); +} elseif ('bg' == $match[0]) { +$style->setBackground(strtolower($match[1])); +} elseif ('href' === $match[0]) { +$url = preg_replace('{\\\\([<>])}', '$1', $match[1]); +$style->setHref($url); +} elseif ('options' === $match[0]) { +preg_match_all('([^,;]+)', strtolower($match[1]), $options); +$options = array_shift($options); +foreach ($options as $option) { +$style->setOption($option); +} +} else { +return null; +} +} + +return $style; +} + + + + +private function applyCurrentStyle(string $text, string $current, int $width, int &$currentLineLength): string +{ +if ('' === $text) { +return ''; +} + +if (!$width) { +return $this->isDecorated() ? $this->styleStack->getCurrent()->apply($text) : $text; +} + +if (!$currentLineLength && '' !== $current) { +$text = ltrim($text); +} + +if ($currentLineLength) { +$prefix = substr($text, 0, $i = $width - $currentLineLength)."\n"; +$text = substr($text, $i); +} else { +$prefix = ''; +} + +preg_match('~(\\n)$~', $text, $matches); +$text = $prefix.preg_replace('~([^\\n]{'.$width.'})\\ *~', "\$1\n", $text); +$text = rtrim($text, "\n").($matches[1] ?? ''); + +if (!$currentLineLength && '' !== $current && "\n" !== substr($current, -1)) { +$text = "\n".$text; +} + +$lines = explode("\n", $text); + +foreach ($lines as $line) { +$currentLineLength += \strlen($line); +if ($width <= $currentLineLength) { +$currentLineLength = 0; +} +} + +if ($this->isDecorated()) { +foreach ($lines as $i => $line) { +$lines[$i] = $this->styleStack->getCurrent()->apply($line); +} +} + +return implode("\n", $lines); +} +} diff --git a/composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php b/composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php new file mode 100644 index 000000000..f5d19733e --- /dev/null +++ b/composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php @@ -0,0 +1,60 @@ +color = new Color($this->foreground = $foreground ?: '', $this->background = $background ?: '', $this->options = $options); +} + + + + +public function setForeground(string $color = null) +{ +$this->color = new Color($this->foreground = $color ?: '', $this->background, $this->options); +} + + + + +public function setBackground(string $color = null) +{ +$this->color = new Color($this->foreground, $this->background = $color ?: '', $this->options); +} + +public function setHref(string $url): void +{ +$this->href = $url; +} + + + + +public function setOption(string $option) +{ +$this->options[] = $option; +$this->color = new Color($this->foreground, $this->background, $this->options); +} + + + + +public function unsetOption(string $option) +{ +$pos = array_search($option, $this->options); +if (false !== $pos) { +unset($this->options[$pos]); +} + +$this->color = new Color($this->foreground, $this->background, $this->options); +} + + + + +public function setOptions(array $options) +{ +$this->color = new Color($this->foreground, $this->background, $this->options = $options); +} + + + + +public function apply(string $text) +{ +if (null === $this->handlesHrefGracefully) { +$this->handlesHrefGracefully = 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR') +&& (!getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100); +} + +if (null !== $this->href && $this->handlesHrefGracefully) { +$text = "\033]8;;$this->href\033\\$text\033]8;;\033\\"; +} + +return $this->color->apply($text); +} +} diff --git a/composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php b/composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php new file mode 100644 index 000000000..5b614b293 --- /dev/null +++ b/composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php @@ -0,0 +1,52 @@ +emptyStyle = $emptyStyle ?? new OutputFormatterStyle(); +$this->reset(); +} + + + + +public function reset() +{ +$this->styles = []; +} + + + + +public function push(OutputFormatterStyleInterface $style) +{ +$this->styles[] = $style; +} + + + + + + + + +public function pop(OutputFormatterStyleInterface $style = null) +{ +if (empty($this->styles)) { +return $this->emptyStyle; +} + +if (null === $style) { +return array_pop($this->styles); +} + +foreach (array_reverse($this->styles, true) as $index => $stackedStyle) { +if ($style->apply('') === $stackedStyle->apply('')) { +$this->styles = \array_slice($this->styles, 0, $index); + +return $stackedStyle; +} +} + +throw new InvalidArgumentException('Incorrectly nested style tag found.'); +} + + + + + + +public function getCurrent() +{ +if (empty($this->styles)) { +return $this->emptyStyle; +} + +return $this->styles[\count($this->styles) - 1]; +} + + + + +public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle) +{ +$this->emptyStyle = $emptyStyle; + +return $this; +} + + + + +public function getEmptyStyle() +{ +return $this->emptyStyle; +} +} diff --git a/composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php b/composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php new file mode 100644 index 000000000..86186c377 --- /dev/null +++ b/composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php @@ -0,0 +1,25 @@ +started[$id] = ['border' => ++$this->count % \count(self::COLORS)]; + +return sprintf("%s %s %s\n", $this->getBorder($id), $prefix, $message); +} + + + + + + +public function progress(string $id, string $buffer, bool $error = false, string $prefix = 'OUT', string $errorPrefix = 'ERR') +{ +$message = ''; + +if ($error) { +if (isset($this->started[$id]['out'])) { +$message .= "\n"; +unset($this->started[$id]['out']); +} +if (!isset($this->started[$id]['err'])) { +$message .= sprintf('%s %s ', $this->getBorder($id), $errorPrefix); +$this->started[$id]['err'] = true; +} + +$message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $errorPrefix), $buffer); +} else { +if (isset($this->started[$id]['err'])) { +$message .= "\n"; +unset($this->started[$id]['err']); +} +if (!isset($this->started[$id]['out'])) { +$message .= sprintf('%s %s ', $this->getBorder($id), $prefix); +$this->started[$id]['out'] = true; +} + +$message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $prefix), $buffer); +} + +return $message; +} + + + + + + +public function stop(string $id, string $message, bool $successful, string $prefix = 'RES') +{ +$trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : ''; + +if ($successful) { +return sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); +} + +$message = sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); + +unset($this->started[$id]['out'], $this->started[$id]['err']); + +return $message; +} + +private function getBorder(string $id): string +{ +return sprintf(' ', self::COLORS[$this->started[$id]['border']]); +} + + + + +public function getName() +{ +return 'debug_formatter'; +} +} diff --git a/composer/vendor/symfony/console/Helper/DescriptorHelper.php b/composer/vendor/symfony/console/Helper/DescriptorHelper.php new file mode 100644 index 000000000..c1cae46aa --- /dev/null +++ b/composer/vendor/symfony/console/Helper/DescriptorHelper.php @@ -0,0 +1,92 @@ +register('txt', new TextDescriptor()) +->register('xml', new XmlDescriptor()) +->register('json', new JsonDescriptor()) +->register('md', new MarkdownDescriptor()) +; +} + + + + + + + + + + +public function describe(OutputInterface $output, ?object $object, array $options = []) +{ +$options = array_merge([ +'raw_text' => false, +'format' => 'txt', +], $options); + +if (!isset($this->descriptors[$options['format']])) { +throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format'])); +} + +$descriptor = $this->descriptors[$options['format']]; +$descriptor->describe($output, $object, $options); +} + + + + + + +public function register(string $format, DescriptorInterface $descriptor) +{ +$this->descriptors[$format] = $descriptor; + +return $this; +} + + + + +public function getName() +{ +return 'descriptor'; +} + +public function getFormats(): array +{ +return array_keys($this->descriptors); +} +} diff --git a/composer/vendor/symfony/console/Helper/Dumper.php b/composer/vendor/symfony/console/Helper/Dumper.php new file mode 100644 index 000000000..42eb04af9 --- /dev/null +++ b/composer/vendor/symfony/console/Helper/Dumper.php @@ -0,0 +1,64 @@ +output = $output; +$this->dumper = $dumper; +$this->cloner = $cloner; + +if (class_exists(CliDumper::class)) { +$this->handler = function ($var): string { +$dumper = $this->dumper ?? $this->dumper = new CliDumper(null, null, CliDumper::DUMP_LIGHT_ARRAY | CliDumper::DUMP_COMMA_SEPARATOR); +$dumper->setColors($this->output->isDecorated()); + +return rtrim($dumper->dump(($this->cloner ?? $this->cloner = new VarCloner())->cloneVar($var)->withRefHandles(false), true)); +}; +} else { +$this->handler = function ($var): string { +switch (true) { +case null === $var: +return 'null'; +case true === $var: +return 'true'; +case false === $var: +return 'false'; +case \is_string($var): +return '"'.$var.'"'; +default: +return rtrim(print_r($var, true)); +} +}; +} +} + +public function __invoke($var): string +{ +return ($this->handler)($var); +} +} diff --git a/composer/vendor/symfony/console/Helper/FormatterHelper.php b/composer/vendor/symfony/console/Helper/FormatterHelper.php new file mode 100644 index 000000000..d6f1b94ef --- /dev/null +++ b/composer/vendor/symfony/console/Helper/FormatterHelper.php @@ -0,0 +1,92 @@ +[%s] %s', $style, $section, $style, $message); +} + + + + + + + + +public function formatBlock($messages, string $style, bool $large = false) +{ +if (!\is_array($messages)) { +$messages = [$messages]; +} + +$len = 0; +$lines = []; +foreach ($messages as $message) { +$message = OutputFormatter::escape($message); +$lines[] = sprintf($large ? ' %s ' : ' %s ', $message); +$len = max(self::width($message) + ($large ? 4 : 2), $len); +} + +$messages = $large ? [str_repeat(' ', $len)] : []; +for ($i = 0; isset($lines[$i]); ++$i) { +$messages[] = $lines[$i].str_repeat(' ', $len - self::width($lines[$i])); +} +if ($large) { +$messages[] = str_repeat(' ', $len); +} + +for ($i = 0; isset($messages[$i]); ++$i) { +$messages[$i] = sprintf('<%s>%s', $style, $messages[$i], $style); +} + +return implode("\n", $messages); +} + + + + + + +public function truncate(string $message, int $length, string $suffix = '...') +{ +$computedLength = $length - self::width($suffix); + +if ($computedLength > self::width($message)) { +return $message; +} + +return self::substr($message, 0, $length).$suffix; +} + + + + +public function getName() +{ +return 'formatter'; +} +} diff --git a/composer/vendor/symfony/console/Helper/Helper.php b/composer/vendor/symfony/console/Helper/Helper.php new file mode 100644 index 000000000..d434f58f2 --- /dev/null +++ b/composer/vendor/symfony/console/Helper/Helper.php @@ -0,0 +1,180 @@ +helperSet = $helperSet; +} + + + + +public function getHelperSet() +{ +return $this->helperSet; +} + + + + + + + + +public static function strlen(?string $string) +{ +trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::width() or Helper::length() instead.', __METHOD__); + +return self::width($string); +} + + + + + +public static function width(?string $string): int +{ +$string ?? $string = ''; + +if (preg_match('//u', $string)) { +return (new UnicodeString($string))->width(false); +} + +if (false === $encoding = mb_detect_encoding($string, null, true)) { +return \strlen($string); +} + +return mb_strwidth($string, $encoding); +} + + + + + +public static function length(?string $string): int +{ +$string ?? $string = ''; + +if (preg_match('//u', $string)) { +return (new UnicodeString($string))->length(); +} + +if (false === $encoding = mb_detect_encoding($string, null, true)) { +return \strlen($string); +} + +return mb_strlen($string, $encoding); +} + + + + + + +public static function substr(?string $string, int $from, int $length = null) +{ +$string ?? $string = ''; + +if (false === $encoding = mb_detect_encoding($string, null, true)) { +return substr($string, $from, $length); +} + +return mb_substr($string, $from, $length, $encoding); +} + +public static function formatTime($secs) +{ +static $timeFormats = [ +[0, '< 1 sec'], +[1, '1 sec'], +[2, 'secs', 1], +[60, '1 min'], +[120, 'mins', 60], +[3600, '1 hr'], +[7200, 'hrs', 3600], +[86400, '1 day'], +[172800, 'days', 86400], +]; + +foreach ($timeFormats as $index => $format) { +if ($secs >= $format[0]) { +if ((isset($timeFormats[$index + 1]) && $secs < $timeFormats[$index + 1][0]) +|| $index == \count($timeFormats) - 1 +) { +if (2 == \count($format)) { +return $format[1]; +} + +return floor($secs / $format[2]).' '.$format[1]; +} +} +} +} + +public static function formatMemory(int $memory) +{ +if ($memory >= 1024 * 1024 * 1024) { +return sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024); +} + +if ($memory >= 1024 * 1024) { +return sprintf('%.1f MiB', $memory / 1024 / 1024); +} + +if ($memory >= 1024) { +return sprintf('%d KiB', $memory / 1024); +} + +return sprintf('%d B', $memory); +} + + + + +public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, ?string $string) +{ +trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::removeDecoration() instead.', __METHOD__); + +return self::width(self::removeDecoration($formatter, $string)); +} + +public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) +{ +$isDecorated = $formatter->isDecorated(); +$formatter->setDecorated(false); + +$string = $formatter->format($string ?? ''); + +$string = preg_replace("/\033\[[^m]*m/", '', $string ?? ''); + +$string = preg_replace('/\\033]8;[^;]*;[^\\033]*\\033\\\\/', '', $string ?? ''); +$formatter->setDecorated($isDecorated); + +return $string; +} +} diff --git a/composer/vendor/symfony/console/Helper/HelperInterface.php b/composer/vendor/symfony/console/Helper/HelperInterface.php new file mode 100644 index 000000000..eee26bbab --- /dev/null +++ b/composer/vendor/symfony/console/Helper/HelperInterface.php @@ -0,0 +1,39 @@ + $helper) { +$this->set($helper, \is_int($alias) ? null : $alias); +} +} + +public function set(HelperInterface $helper, string $alias = null) +{ +$this->helpers[$helper->getName()] = $helper; +if (null !== $alias) { +$this->helpers[$alias] = $helper; +} + +$helper->setHelperSet($this); +} + + + + + + +public function has(string $name) +{ +return isset($this->helpers[$name]); +} + + + + + + + + +public function get(string $name) +{ +if (!$this->has($name)) { +throw new InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name)); +} + +return $this->helpers[$name]; +} + + + + +public function setCommand(Command $command = null) +{ +trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); + +$this->command = $command; +} + + + + + + + + +public function getCommand() +{ +trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); + +return $this->command; +} + + + + +#[\ReturnTypeWillChange] +public function getIterator() +{ +return new \ArrayIterator($this->helpers); +} +} diff --git a/composer/vendor/symfony/console/Helper/InputAwareHelper.php b/composer/vendor/symfony/console/Helper/InputAwareHelper.php new file mode 100644 index 000000000..b7376df12 --- /dev/null +++ b/composer/vendor/symfony/console/Helper/InputAwareHelper.php @@ -0,0 +1,33 @@ +input = $input; +} +} diff --git a/composer/vendor/symfony/console/Helper/ProcessHelper.php b/composer/vendor/symfony/console/Helper/ProcessHelper.php new file mode 100644 index 000000000..ec765705b --- /dev/null +++ b/composer/vendor/symfony/console/Helper/ProcessHelper.php @@ -0,0 +1,144 @@ +getErrorOutput(); +} + +$formatter = $this->getHelperSet()->get('debug_formatter'); + +if ($cmd instanceof Process) { +$cmd = [$cmd]; +} + +if (!\is_array($cmd)) { +throw new \TypeError(sprintf('The "command" argument of "%s()" must be an array or a "%s" instance, "%s" given.', __METHOD__, Process::class, get_debug_type($cmd))); +} + +if (\is_string($cmd[0] ?? null)) { +$process = new Process($cmd); +$cmd = []; +} elseif (($cmd[0] ?? null) instanceof Process) { +$process = $cmd[0]; +unset($cmd[0]); +} else { +throw new \InvalidArgumentException(sprintf('Invalid command provided to "%s()": the command should be an array whose first element is either the path to the binary to run or a "Process" object.', __METHOD__)); +} + +if ($verbosity <= $output->getVerbosity()) { +$output->write($formatter->start(spl_object_hash($process), $this->escapeString($process->getCommandLine()))); +} + +if ($output->isDebug()) { +$callback = $this->wrapCallback($output, $process, $callback); +} + +$process->run($callback, $cmd); + +if ($verbosity <= $output->getVerbosity()) { +$message = $process->isSuccessful() ? 'Command ran successfully' : sprintf('%s Command did not run successfully', $process->getExitCode()); +$output->write($formatter->stop(spl_object_hash($process), $message, $process->isSuccessful())); +} + +if (!$process->isSuccessful() && null !== $error) { +$output->writeln(sprintf('%s', $this->escapeString($error))); +} + +return $process; +} + + + + + + + + + + + + + + + +public function mustRun(OutputInterface $output, $cmd, string $error = null, callable $callback = null): Process +{ +$process = $this->run($output, $cmd, $error, $callback); + +if (!$process->isSuccessful()) { +throw new ProcessFailedException($process); +} + +return $process; +} + + + + +public function wrapCallback(OutputInterface $output, Process $process, callable $callback = null): callable +{ +if ($output instanceof ConsoleOutputInterface) { +$output = $output->getErrorOutput(); +} + +$formatter = $this->getHelperSet()->get('debug_formatter'); + +return function ($type, $buffer) use ($output, $process, $callback, $formatter) { +$output->write($formatter->progress(spl_object_hash($process), $this->escapeString($buffer), Process::ERR === $type)); + +if (null !== $callback) { +$callback($type, $buffer); +} +}; +} + +private function escapeString(string $str): string +{ +return str_replace('<', '\\<', $str); +} + + + + +public function getName(): string +{ +return 'process'; +} +} diff --git a/composer/vendor/symfony/console/Helper/ProgressBar.php b/composer/vendor/symfony/console/Helper/ProgressBar.php new file mode 100644 index 000000000..5853b1c12 --- /dev/null +++ b/composer/vendor/symfony/console/Helper/ProgressBar.php @@ -0,0 +1,609 @@ +'; +private $format; +private $internalFormat; +private $redrawFreq = 1; +private $writeCount; +private $lastWriteTime; +private $minSecondsBetweenRedraws = 0; +private $maxSecondsBetweenRedraws = 1; +private $output; +private $step = 0; +private $max; +private $startTime; +private $stepWidth; +private $percent = 0.0; +private $messages = []; +private $overwrite = true; +private $terminal; +private $previousMessage; +private $cursor; + +private static $formatters; +private static $formats; + + + + +public function __construct(OutputInterface $output, int $max = 0, float $minSecondsBetweenRedraws = 1 / 25) +{ +if ($output instanceof ConsoleOutputInterface) { +$output = $output->getErrorOutput(); +} + +$this->output = $output; +$this->setMaxSteps($max); +$this->terminal = new Terminal(); + +if (0 < $minSecondsBetweenRedraws) { +$this->redrawFreq = null; +$this->minSecondsBetweenRedraws = $minSecondsBetweenRedraws; +} + +if (!$this->output->isDecorated()) { + +$this->overwrite = false; + + +$this->redrawFreq = null; +} + +$this->startTime = time(); +$this->cursor = new Cursor($output); +} + + + + + + + + + +public static function setPlaceholderFormatterDefinition(string $name, callable $callable): void +{ +if (!self::$formatters) { +self::$formatters = self::initPlaceholderFormatters(); +} + +self::$formatters[$name] = $callable; +} + + + + + + +public static function getPlaceholderFormatterDefinition(string $name): ?callable +{ +if (!self::$formatters) { +self::$formatters = self::initPlaceholderFormatters(); +} + +return self::$formatters[$name] ?? null; +} + + + + + + + + + +public static function setFormatDefinition(string $name, string $format): void +{ +if (!self::$formats) { +self::$formats = self::initFormats(); +} + +self::$formats[$name] = $format; +} + + + + + + +public static function getFormatDefinition(string $name): ?string +{ +if (!self::$formats) { +self::$formats = self::initFormats(); +} + +return self::$formats[$name] ?? null; +} + + + + + + + + + + + +public function setMessage(string $message, string $name = 'message') +{ +$this->messages[$name] = $message; +} + +public function getMessage(string $name = 'message') +{ +return $this->messages[$name]; +} + +public function getStartTime(): int +{ +return $this->startTime; +} + +public function getMaxSteps(): int +{ +return $this->max; +} + +public function getProgress(): int +{ +return $this->step; +} + +private function getStepWidth(): int +{ +return $this->stepWidth; +} + +public function getProgressPercent(): float +{ +return $this->percent; +} + +public function getBarOffset(): float +{ +return floor($this->max ? $this->percent * $this->barWidth : (null === $this->redrawFreq ? (int) (min(5, $this->barWidth / 15) * $this->writeCount) : $this->step) % $this->barWidth); +} + +public function getEstimated(): float +{ +if (!$this->step) { +return 0; +} + +return round((time() - $this->startTime) / $this->step * $this->max); +} + +public function getRemaining(): float +{ +if (!$this->step) { +return 0; +} + +return round((time() - $this->startTime) / $this->step * ($this->max - $this->step)); +} + +public function setBarWidth(int $size) +{ +$this->barWidth = max(1, $size); +} + +public function getBarWidth(): int +{ +return $this->barWidth; +} + +public function setBarCharacter(string $char) +{ +$this->barChar = $char; +} + +public function getBarCharacter(): string +{ +return $this->barChar ?? ($this->max ? '=' : $this->emptyBarChar); +} + +public function setEmptyBarCharacter(string $char) +{ +$this->emptyBarChar = $char; +} + +public function getEmptyBarCharacter(): string +{ +return $this->emptyBarChar; +} + +public function setProgressCharacter(string $char) +{ +$this->progressChar = $char; +} + +public function getProgressCharacter(): string +{ +return $this->progressChar; +} + +public function setFormat(string $format) +{ +$this->format = null; +$this->internalFormat = $format; +} + + + + + + +public function setRedrawFrequency(?int $freq) +{ +$this->redrawFreq = null !== $freq ? max(1, $freq) : null; +} + +public function minSecondsBetweenRedraws(float $seconds): void +{ +$this->minSecondsBetweenRedraws = $seconds; +} + +public function maxSecondsBetweenRedraws(float $seconds): void +{ +$this->maxSecondsBetweenRedraws = $seconds; +} + + + + + + +public function iterate(iterable $iterable, int $max = null): iterable +{ +$this->start($max ?? (is_countable($iterable) ? \count($iterable) : 0)); + +foreach ($iterable as $key => $value) { +yield $key => $value; + +$this->advance(); +} + +$this->finish(); +} + + + + + + +public function start(int $max = null) +{ +$this->startTime = time(); +$this->step = 0; +$this->percent = 0.0; + +if (null !== $max) { +$this->setMaxSteps($max); +} + +$this->display(); +} + + + + + + +public function advance(int $step = 1) +{ +$this->setProgress($this->step + $step); +} + + + + +public function setOverwrite(bool $overwrite) +{ +$this->overwrite = $overwrite; +} + +public function setProgress(int $step) +{ +if ($this->max && $step > $this->max) { +$this->max = $step; +} elseif ($step < 0) { +$step = 0; +} + +$redrawFreq = $this->redrawFreq ?? (($this->max ?: 10) / 10); +$prevPeriod = (int) ($this->step / $redrawFreq); +$currPeriod = (int) ($step / $redrawFreq); +$this->step = $step; +$this->percent = $this->max ? (float) $this->step / $this->max : 0; +$timeInterval = microtime(true) - $this->lastWriteTime; + + +if ($this->max === $step) { +$this->display(); + +return; +} + + +if ($timeInterval < $this->minSecondsBetweenRedraws) { +return; +} + + +if ($prevPeriod !== $currPeriod || $timeInterval >= $this->maxSecondsBetweenRedraws) { +$this->display(); +} +} + +public function setMaxSteps(int $max) +{ +$this->format = null; +$this->max = max(0, $max); +$this->stepWidth = $this->max ? Helper::width((string) $this->max) : 4; +} + + + + +public function finish(): void +{ +if (!$this->max) { +$this->max = $this->step; +} + +if ($this->step === $this->max && !$this->overwrite) { + +return; +} + +$this->setProgress($this->max); +} + + + + +public function display(): void +{ +if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { +return; +} + +if (null === $this->format) { +$this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); +} + +$this->overwrite($this->buildLine()); +} + + + + + + + + +public function clear(): void +{ +if (!$this->overwrite) { +return; +} + +if (null === $this->format) { +$this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); +} + +$this->overwrite(''); +} + +private function setRealFormat(string $format) +{ + +if (!$this->max && null !== self::getFormatDefinition($format.'_nomax')) { +$this->format = self::getFormatDefinition($format.'_nomax'); +} elseif (null !== self::getFormatDefinition($format)) { +$this->format = self::getFormatDefinition($format); +} else { +$this->format = $format; +} +} + + + + +private function overwrite(string $message): void +{ +if ($this->previousMessage === $message) { +return; +} + +$originalMessage = $message; + +if ($this->overwrite) { +if (null !== $this->previousMessage) { +if ($this->output instanceof ConsoleSectionOutput) { +$messageLines = explode("\n", $this->previousMessage); +$lineCount = \count($messageLines); +foreach ($messageLines as $messageLine) { +$messageLineLength = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $messageLine)); +if ($messageLineLength > $this->terminal->getWidth()) { +$lineCount += floor($messageLineLength / $this->terminal->getWidth()); +} +} +$this->output->clear($lineCount); +} else { +$lineCount = substr_count($this->previousMessage, "\n"); +for ($i = 0; $i < $lineCount; ++$i) { +$this->cursor->moveToColumn(1); +$this->cursor->clearLine(); +$this->cursor->moveUp(); +} + +$this->cursor->moveToColumn(1); +$this->cursor->clearLine(); +} +} +} elseif ($this->step > 0) { +$message = \PHP_EOL.$message; +} + +$this->previousMessage = $originalMessage; +$this->lastWriteTime = microtime(true); + +$this->output->write($message); +++$this->writeCount; +} + +private function determineBestFormat(): string +{ +switch ($this->output->getVerbosity()) { + +case OutputInterface::VERBOSITY_VERBOSE: +return $this->max ? self::FORMAT_VERBOSE : self::FORMAT_VERBOSE_NOMAX; +case OutputInterface::VERBOSITY_VERY_VERBOSE: +return $this->max ? self::FORMAT_VERY_VERBOSE : self::FORMAT_VERY_VERBOSE_NOMAX; +case OutputInterface::VERBOSITY_DEBUG: +return $this->max ? self::FORMAT_DEBUG : self::FORMAT_DEBUG_NOMAX; +default: +return $this->max ? self::FORMAT_NORMAL : self::FORMAT_NORMAL_NOMAX; +} +} + +private static function initPlaceholderFormatters(): array +{ +return [ +'bar' => function (self $bar, OutputInterface $output) { +$completeBars = $bar->getBarOffset(); +$display = str_repeat($bar->getBarCharacter(), $completeBars); +if ($completeBars < $bar->getBarWidth()) { +$emptyBars = $bar->getBarWidth() - $completeBars - Helper::length(Helper::removeDecoration($output->getFormatter(), $bar->getProgressCharacter())); +$display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars); +} + +return $display; +}, +'elapsed' => function (self $bar) { +return Helper::formatTime(time() - $bar->getStartTime()); +}, +'remaining' => function (self $bar) { +if (!$bar->getMaxSteps()) { +throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); +} + +return Helper::formatTime($bar->getRemaining()); +}, +'estimated' => function (self $bar) { +if (!$bar->getMaxSteps()) { +throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); +} + +return Helper::formatTime($bar->getEstimated()); +}, +'memory' => function (self $bar) { +return Helper::formatMemory(memory_get_usage(true)); +}, +'current' => function (self $bar) { +return str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT); +}, +'max' => function (self $bar) { +return $bar->getMaxSteps(); +}, +'percent' => function (self $bar) { +return floor($bar->getProgressPercent() * 100); +}, +]; +} + +private static function initFormats(): array +{ +return [ +self::FORMAT_NORMAL => ' %current%/%max% [%bar%] %percent:3s%%', +self::FORMAT_NORMAL_NOMAX => ' %current% [%bar%]', + +self::FORMAT_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', +self::FORMAT_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', + +self::FORMAT_VERY_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', +self::FORMAT_VERY_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', + +self::FORMAT_DEBUG => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', +self::FORMAT_DEBUG_NOMAX => ' %current% [%bar%] %elapsed:6s% %memory:6s%', +]; +} + +private function buildLine(): string +{ +$regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i"; +$callback = function ($matches) { +if ($formatter = $this::getPlaceholderFormatterDefinition($matches[1])) { +$text = $formatter($this, $this->output); +} elseif (isset($this->messages[$matches[1]])) { +$text = $this->messages[$matches[1]]; +} else { +return $matches[0]; +} + +if (isset($matches[2])) { +$text = sprintf('%'.$matches[2], $text); +} + +return $text; +}; +$line = preg_replace_callback($regex, $callback, $this->format); + + +$linesLength = array_map(function ($subLine) { +return Helper::width(Helper::removeDecoration($this->output->getFormatter(), rtrim($subLine, "\r"))); +}, explode("\n", $line)); + +$linesWidth = max($linesLength); + +$terminalWidth = $this->terminal->getWidth(); +if ($linesWidth <= $terminalWidth) { +return $line; +} + +$this->setBarWidth($this->barWidth - $linesWidth + $terminalWidth); + +return preg_replace_callback($regex, $callback, $this->format); +} +} diff --git a/composer/vendor/symfony/console/Helper/ProgressIndicator.php b/composer/vendor/symfony/console/Helper/ProgressIndicator.php new file mode 100644 index 000000000..e1581e13e --- /dev/null +++ b/composer/vendor/symfony/console/Helper/ProgressIndicator.php @@ -0,0 +1,249 @@ + ' %indicator% %message%', +'normal_no_ansi' => ' %message%', + +'verbose' => ' %indicator% %message% (%elapsed:6s%)', +'verbose_no_ansi' => ' %message% (%elapsed:6s%)', + +'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)', +'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)', +]; + +private $output; +private $startTime; +private $format; +private $message; +private $indicatorValues; +private $indicatorCurrent; +private $indicatorChangeInterval; +private $indicatorUpdateTime; +private $started = false; + + + + +private static $formatters; + + + + + +public function __construct(OutputInterface $output, string $format = null, int $indicatorChangeInterval = 100, array $indicatorValues = null) +{ +$this->output = $output; + +if (null === $format) { +$format = $this->determineBestFormat(); +} + +if (null === $indicatorValues) { +$indicatorValues = ['-', '\\', '|', '/']; +} + +$indicatorValues = array_values($indicatorValues); + +if (2 > \count($indicatorValues)) { +throw new InvalidArgumentException('Must have at least 2 indicator value characters.'); +} + +$this->format = self::getFormatDefinition($format); +$this->indicatorChangeInterval = $indicatorChangeInterval; +$this->indicatorValues = $indicatorValues; +$this->startTime = time(); +} + + + + +public function setMessage(?string $message) +{ +$this->message = $message; + +$this->display(); +} + + + + +public function start(string $message) +{ +if ($this->started) { +throw new LogicException('Progress indicator already started.'); +} + +$this->message = $message; +$this->started = true; +$this->startTime = time(); +$this->indicatorUpdateTime = $this->getCurrentTimeInMilliseconds() + $this->indicatorChangeInterval; +$this->indicatorCurrent = 0; + +$this->display(); +} + + + + +public function advance() +{ +if (!$this->started) { +throw new LogicException('Progress indicator has not yet been started.'); +} + +if (!$this->output->isDecorated()) { +return; +} + +$currentTime = $this->getCurrentTimeInMilliseconds(); + +if ($currentTime < $this->indicatorUpdateTime) { +return; +} + +$this->indicatorUpdateTime = $currentTime + $this->indicatorChangeInterval; +++$this->indicatorCurrent; + +$this->display(); +} + + + + + + +public function finish(string $message) +{ +if (!$this->started) { +throw new LogicException('Progress indicator has not yet been started.'); +} + +$this->message = $message; +$this->display(); +$this->output->writeln(''); +$this->started = false; +} + + + + + + +public static function getFormatDefinition(string $name) +{ +return self::FORMATS[$name] ?? null; +} + + + + + + +public static function setPlaceholderFormatterDefinition(string $name, callable $callable) +{ +if (!self::$formatters) { +self::$formatters = self::initPlaceholderFormatters(); +} + +self::$formatters[$name] = $callable; +} + + + + + + +public static function getPlaceholderFormatterDefinition(string $name) +{ +if (!self::$formatters) { +self::$formatters = self::initPlaceholderFormatters(); +} + +return self::$formatters[$name] ?? null; +} + +private function display() +{ +if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { +return; +} + +$this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) { +if ($formatter = self::getPlaceholderFormatterDefinition($matches[1])) { +return $formatter($this); +} + +return $matches[0]; +}, $this->format ?? '')); +} + +private function determineBestFormat(): string +{ +switch ($this->output->getVerbosity()) { + +case OutputInterface::VERBOSITY_VERBOSE: +return $this->output->isDecorated() ? 'verbose' : 'verbose_no_ansi'; +case OutputInterface::VERBOSITY_VERY_VERBOSE: +case OutputInterface::VERBOSITY_DEBUG: +return $this->output->isDecorated() ? 'very_verbose' : 'very_verbose_no_ansi'; +default: +return $this->output->isDecorated() ? 'normal' : 'normal_no_ansi'; +} +} + + + + +private function overwrite(string $message) +{ +if ($this->output->isDecorated()) { +$this->output->write("\x0D\x1B[2K"); +$this->output->write($message); +} else { +$this->output->writeln($message); +} +} + +private function getCurrentTimeInMilliseconds(): float +{ +return round(microtime(true) * 1000); +} + +private static function initPlaceholderFormatters(): array +{ +return [ +'indicator' => function (self $indicator) { +return $indicator->indicatorValues[$indicator->indicatorCurrent % \count($indicator->indicatorValues)]; +}, +'message' => function (self $indicator) { +return $indicator->message; +}, +'elapsed' => function (self $indicator) { +return Helper::formatTime(time() - $indicator->startTime); +}, +'memory' => function () { +return Helper::formatMemory(memory_get_usage(true)); +}, +]; +} +} diff --git a/composer/vendor/symfony/console/Helper/QuestionHelper.php b/composer/vendor/symfony/console/Helper/QuestionHelper.php new file mode 100644 index 000000000..4daeab940 --- /dev/null +++ b/composer/vendor/symfony/console/Helper/QuestionHelper.php @@ -0,0 +1,616 @@ +getErrorOutput(); +} + +if (!$input->isInteractive()) { +return $this->getDefaultAnswer($question); +} + +if ($input instanceof StreamableInputInterface && $stream = $input->getStream()) { +$this->inputStream = $stream; +} + +try { +if (!$question->getValidator()) { +return $this->doAsk($output, $question); +} + +$interviewer = function () use ($output, $question) { +return $this->doAsk($output, $question); +}; + +return $this->validateAttempts($interviewer, $output, $question); +} catch (MissingInputException $exception) { +$input->setInteractive(false); + +if (null === $fallbackOutput = $this->getDefaultAnswer($question)) { +throw $exception; +} + +return $fallbackOutput; +} +} + + + + +public function getName() +{ +return 'question'; +} + + + + +public static function disableStty() +{ +self::$stty = false; +} + + + + + + + + +private function doAsk(OutputInterface $output, Question $question) +{ +$this->writePrompt($output, $question); + +$inputStream = $this->inputStream ?: \STDIN; +$autocomplete = $question->getAutocompleterCallback(); + +if (null === $autocomplete || !self::$stty || !Terminal::hasSttyAvailable()) { +$ret = false; +if ($question->isHidden()) { +try { +$hiddenResponse = $this->getHiddenResponse($output, $inputStream, $question->isTrimmable()); +$ret = $question->isTrimmable() ? trim($hiddenResponse) : $hiddenResponse; +} catch (RuntimeException $e) { +if (!$question->isHiddenFallback()) { +throw $e; +} +} +} + +if (false === $ret) { +$ret = $this->readInput($inputStream, $question); +if (false === $ret) { +throw new MissingInputException('Aborted.'); +} +if ($question->isTrimmable()) { +$ret = trim($ret); +} +} +} else { +$autocomplete = $this->autocomplete($output, $question, $inputStream, $autocomplete); +$ret = $question->isTrimmable() ? trim($autocomplete) : $autocomplete; +} + +if ($output instanceof ConsoleSectionOutput) { +$output->addContent($ret); +} + +$ret = \strlen($ret) > 0 ? $ret : $question->getDefault(); + +if ($normalizer = $question->getNormalizer()) { +return $normalizer($ret); +} + +return $ret; +} + + + + +private function getDefaultAnswer(Question $question) +{ +$default = $question->getDefault(); + +if (null === $default) { +return $default; +} + +if ($validator = $question->getValidator()) { +return \call_user_func($question->getValidator(), $default); +} elseif ($question instanceof ChoiceQuestion) { +$choices = $question->getChoices(); + +if (!$question->isMultiselect()) { +return $choices[$default] ?? $default; +} + +$default = explode(',', $default); +foreach ($default as $k => $v) { +$v = $question->isTrimmable() ? trim($v) : $v; +$default[$k] = $choices[$v] ?? $v; +} +} + +return $default; +} + + + + +protected function writePrompt(OutputInterface $output, Question $question) +{ +$message = $question->getQuestion(); + +if ($question instanceof ChoiceQuestion) { +$output->writeln(array_merge([ +$question->getQuestion(), +], $this->formatChoiceQuestionChoices($question, 'info'))); + +$message = $question->getPrompt(); +} + +$output->write($message); +} + + + + +protected function formatChoiceQuestionChoices(ChoiceQuestion $question, string $tag) +{ +$messages = []; + +$maxWidth = max(array_map([__CLASS__, 'width'], array_keys($choices = $question->getChoices()))); + +foreach ($choices as $key => $value) { +$padding = str_repeat(' ', $maxWidth - self::width($key)); + +$messages[] = sprintf(" [<$tag>%s$padding] %s", $key, $value); +} + +return $messages; +} + + + + +protected function writeError(OutputInterface $output, \Exception $error) +{ +if (null !== $this->getHelperSet() && $this->getHelperSet()->has('formatter')) { +$message = $this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error'); +} else { +$message = ''.$error->getMessage().''; +} + +$output->writeln($message); +} + + + + + + +private function autocomplete(OutputInterface $output, Question $question, $inputStream, callable $autocomplete): string +{ +$cursor = new Cursor($output, $inputStream); + +$fullChoice = ''; +$ret = ''; + +$i = 0; +$ofs = -1; +$matches = $autocomplete($ret); +$numMatches = \count($matches); + +$sttyMode = shell_exec('stty -g'); +$isStdin = 'php://stdin' === (stream_get_meta_data($inputStream)['uri'] ?? null); +$r = [$inputStream]; +$w = []; + + +shell_exec('stty -icanon -echo'); + + +$output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white')); + + +while (!feof($inputStream)) { +while ($isStdin && 0 === @stream_select($r, $w, $w, 0, 100)) { + +$r = [$inputStream]; +} +$c = fread($inputStream, 1); + + +if (false === $c || ('' === $ret && '' === $c && null === $question->getDefault())) { +shell_exec('stty '.$sttyMode); +throw new MissingInputException('Aborted.'); +} elseif ("\177" === $c) { +if (0 === $numMatches && 0 !== $i) { +--$i; +$cursor->moveLeft(s($fullChoice)->slice(-1)->width(false)); + +$fullChoice = self::substr($fullChoice, 0, $i); +} + +if (0 === $i) { +$ofs = -1; +$matches = $autocomplete($ret); +$numMatches = \count($matches); +} else { +$numMatches = 0; +} + + +$ret = self::substr($ret, 0, $i); +} elseif ("\033" === $c) { + +$c .= fread($inputStream, 2); + + +if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) { +if ('A' === $c[2] && -1 === $ofs) { +$ofs = 0; +} + +if (0 === $numMatches) { +continue; +} + +$ofs += ('A' === $c[2]) ? -1 : 1; +$ofs = ($numMatches + $ofs) % $numMatches; +} +} elseif (\ord($c) < 32) { +if ("\t" === $c || "\n" === $c) { +if ($numMatches > 0 && -1 !== $ofs) { +$ret = (string) $matches[$ofs]; + +$remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)))); +$output->write($remainingCharacters); +$fullChoice .= $remainingCharacters; +$i = (false === $encoding = mb_detect_encoding($fullChoice, null, true)) ? \strlen($fullChoice) : mb_strlen($fullChoice, $encoding); + +$matches = array_filter( +$autocomplete($ret), +function ($match) use ($ret) { +return '' === $ret || str_starts_with($match, $ret); +} +); +$numMatches = \count($matches); +$ofs = -1; +} + +if ("\n" === $c) { +$output->write($c); +break; +} + +$numMatches = 0; +} + +continue; +} else { +if ("\x80" <= $c) { +$c .= fread($inputStream, ["\xC0" => 1, "\xD0" => 1, "\xE0" => 2, "\xF0" => 3][$c & "\xF0"]); +} + +$output->write($c); +$ret .= $c; +$fullChoice .= $c; +++$i; + +$tempRet = $ret; + +if ($question instanceof ChoiceQuestion && $question->isMultiselect()) { +$tempRet = $this->mostRecentlyEnteredValue($fullChoice); +} + +$numMatches = 0; +$ofs = 0; + +foreach ($autocomplete($ret) as $value) { + +if (str_starts_with($value, $tempRet)) { +$matches[$numMatches++] = $value; +} +} +} + +$cursor->clearLineAfter(); + +if ($numMatches > 0 && -1 !== $ofs) { +$cursor->savePosition(); + +$charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))); +$output->write(''.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).''); +$cursor->restorePosition(); +} +} + + +shell_exec('stty '.$sttyMode); + +return $fullChoice; +} + +private function mostRecentlyEnteredValue(string $entered): string +{ + +if (!str_contains($entered, ',')) { +return $entered; +} + +$choices = explode(',', $entered); +if ('' !== $lastChoice = trim($choices[\count($choices) - 1])) { +return $lastChoice; +} + +return $entered; +} + + + + + + + + + +private function getHiddenResponse(OutputInterface $output, $inputStream, bool $trimmable = true): string +{ +if ('\\' === \DIRECTORY_SEPARATOR) { +$exe = __DIR__.'/../Resources/bin/hiddeninput.exe'; + + +if ('phar:' === substr(__FILE__, 0, 5)) { +$tmpExe = sys_get_temp_dir().'/hiddeninput.exe'; +copy($exe, $tmpExe); +$exe = $tmpExe; +} + +$sExec = shell_exec('"'.$exe.'"'); +$value = $trimmable ? rtrim($sExec) : $sExec; +$output->writeln(''); + +if (isset($tmpExe)) { +unlink($tmpExe); +} + +return $value; +} + +if (self::$stty && Terminal::hasSttyAvailable()) { +$sttyMode = shell_exec('stty -g'); +shell_exec('stty -echo'); +} elseif ($this->isInteractiveInput($inputStream)) { +throw new RuntimeException('Unable to hide the response.'); +} + +$value = fgets($inputStream, 4096); + +if (self::$stty && Terminal::hasSttyAvailable()) { +shell_exec('stty '.$sttyMode); +} + +if (false === $value) { +throw new MissingInputException('Aborted.'); +} +if ($trimmable) { +$value = trim($value); +} +$output->writeln(''); + +return $value; +} + + + + + + + + + + +private function validateAttempts(callable $interviewer, OutputInterface $output, Question $question) +{ +$error = null; +$attempts = $question->getMaxAttempts(); + +while (null === $attempts || $attempts--) { +if (null !== $error) { +$this->writeError($output, $error); +} + +try { +return $question->getValidator()($interviewer()); +} catch (RuntimeException $e) { +throw $e; +} catch (\Exception $error) { +} +} + +throw $error; +} + +private function isInteractiveInput($inputStream): bool +{ +if ('php://stdin' !== (stream_get_meta_data($inputStream)['uri'] ?? null)) { +return false; +} + +if (null !== self::$stdinIsInteractive) { +return self::$stdinIsInteractive; +} + +if (\function_exists('stream_isatty')) { +return self::$stdinIsInteractive = @stream_isatty(fopen('php://stdin', 'r')); +} + +if (\function_exists('posix_isatty')) { +return self::$stdinIsInteractive = @posix_isatty(fopen('php://stdin', 'r')); +} + +if (!\function_exists('exec')) { +return self::$stdinIsInteractive = true; +} + +exec('stty 2> /dev/null', $output, $status); + +return self::$stdinIsInteractive = 1 !== $status; +} + + + + + + + + + +private function readInput($inputStream, Question $question) +{ +if (!$question->isMultiline()) { +$cp = $this->setIOCodepage(); +$ret = fgets($inputStream, 4096); + +return $this->resetIOCodepage($cp, $ret); +} + +$multiLineStreamReader = $this->cloneInputStream($inputStream); +if (null === $multiLineStreamReader) { +return false; +} + +$ret = ''; +$cp = $this->setIOCodepage(); +while (false !== ($char = fgetc($multiLineStreamReader))) { +if (\PHP_EOL === "{$ret}{$char}") { +break; +} +$ret .= $char; +} + +return $this->resetIOCodepage($cp, $ret); +} + + + + + + +private function setIOCodepage(): int +{ +if (\function_exists('sapi_windows_cp_set')) { +$cp = sapi_windows_cp_get(); +sapi_windows_cp_set(sapi_windows_cp_get('oem')); + +return $cp; +} + +return 0; +} + + + + + + + + +private function resetIOCodepage(int $cp, $input) +{ +if (0 !== $cp) { +sapi_windows_cp_set($cp); + +if (false !== $input && '' !== $input) { +$input = sapi_windows_cp_conv(sapi_windows_cp_get('oem'), $cp, $input); +} +} + +return $input; +} + + + + + + + + + +private function cloneInputStream($inputStream) +{ +$streamMetaData = stream_get_meta_data($inputStream); +$seekable = $streamMetaData['seekable'] ?? false; +$mode = $streamMetaData['mode'] ?? 'rb'; +$uri = $streamMetaData['uri'] ?? null; + +if (null === $uri) { +return null; +} + +$cloneStream = fopen($uri, $mode); + + + +if (true === $seekable && !\in_array($mode, ['r', 'rb', 'rt'])) { +$offset = ftell($inputStream); +rewind($inputStream); +stream_copy_to_stream($inputStream, $cloneStream); +fseek($inputStream, $offset); +fseek($cloneStream, $offset); +} + +return $cloneStream; +} +} diff --git a/composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php new file mode 100644 index 000000000..3453b25b2 --- /dev/null +++ b/composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php @@ -0,0 +1,109 @@ +getQuestion()); +$default = $question->getDefault(); + +if ($question->isMultiline()) { +$text .= sprintf(' (press %s to continue)', $this->getEofShortcut()); +} + +switch (true) { +case null === $default: +$text = sprintf(' %s:', $text); + +break; + +case $question instanceof ConfirmationQuestion: +$text = sprintf(' %s (yes/no) [%s]:', $text, $default ? 'yes' : 'no'); + +break; + +case $question instanceof ChoiceQuestion && $question->isMultiselect(): +$choices = $question->getChoices(); +$default = explode(',', $default); + +foreach ($default as $key => $value) { +$default[$key] = $choices[trim($value)]; +} + +$text = sprintf(' %s [%s]:', $text, OutputFormatter::escape(implode(', ', $default))); + +break; + +case $question instanceof ChoiceQuestion: +$choices = $question->getChoices(); +$text = sprintf(' %s [%s]:', $text, OutputFormatter::escape($choices[$default] ?? $default)); + +break; + +default: +$text = sprintf(' %s [%s]:', $text, OutputFormatter::escape($default)); +} + +$output->writeln($text); + +$prompt = ' > '; + +if ($question instanceof ChoiceQuestion) { +$output->writeln($this->formatChoiceQuestionChoices($question, 'comment')); + +$prompt = $question->getPrompt(); +} + +$output->write($prompt); +} + + + + +protected function writeError(OutputInterface $output, \Exception $error) +{ +if ($output instanceof SymfonyStyle) { +$output->newLine(); +$output->error($error->getMessage()); + +return; +} + +parent::writeError($output, $error); +} + +private function getEofShortcut(): string +{ +if ('Windows' === \PHP_OS_FAMILY) { +return 'Ctrl+Z then Enter'; +} + +return 'Ctrl+D'; +} +} diff --git a/composer/vendor/symfony/console/Helper/Table.php b/composer/vendor/symfony/console/Helper/Table.php new file mode 100644 index 000000000..d920c646d --- /dev/null +++ b/composer/vendor/symfony/console/Helper/Table.php @@ -0,0 +1,915 @@ +output = $output; + +if (!self::$styles) { +self::$styles = self::initStyles(); +} + +$this->setStyle('default'); +} + + + + +public static function setStyleDefinition(string $name, TableStyle $style) +{ +if (!self::$styles) { +self::$styles = self::initStyles(); +} + +self::$styles[$name] = $style; +} + + + + + + +public static function getStyleDefinition(string $name) +{ +if (!self::$styles) { +self::$styles = self::initStyles(); +} + +if (isset(self::$styles[$name])) { +return self::$styles[$name]; +} + +throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); +} + + + + + + + + +public function setStyle($name) +{ +$this->style = $this->resolveStyle($name); + +return $this; +} + + + + + + +public function getStyle() +{ +return $this->style; +} + + + + + + + + +public function setColumnStyle(int $columnIndex, $name) +{ +$this->columnStyles[$columnIndex] = $this->resolveStyle($name); + +return $this; +} + + + + + + + + +public function getColumnStyle(int $columnIndex) +{ +return $this->columnStyles[$columnIndex] ?? $this->getStyle(); +} + + + + + + +public function setColumnWidth(int $columnIndex, int $width) +{ +$this->columnWidths[$columnIndex] = $width; + +return $this; +} + + + + + + +public function setColumnWidths(array $widths) +{ +$this->columnWidths = []; +foreach ($widths as $index => $width) { +$this->setColumnWidth($index, $width); +} + +return $this; +} + + + + + + + + + +public function setColumnMaxWidth(int $columnIndex, int $width): self +{ +if (!$this->output->getFormatter() instanceof WrappableOutputFormatterInterface) { +throw new \LogicException(sprintf('Setting a maximum column width is only supported when using a "%s" formatter, got "%s".', WrappableOutputFormatterInterface::class, get_debug_type($this->output->getFormatter()))); +} + +$this->columnMaxWidths[$columnIndex] = $width; + +return $this; +} + + + + +public function setHeaders(array $headers) +{ +$headers = array_values($headers); +if (!empty($headers) && !\is_array($headers[0])) { +$headers = [$headers]; +} + +$this->headers = $headers; + +return $this; +} + +public function setRows(array $rows) +{ +$this->rows = []; + +return $this->addRows($rows); +} + + + + +public function addRows(array $rows) +{ +foreach ($rows as $row) { +$this->addRow($row); +} + +return $this; +} + + + + +public function addRow($row) +{ +if ($row instanceof TableSeparator) { +$this->rows[] = $row; + +return $this; +} + +if (!\is_array($row)) { +throw new InvalidArgumentException('A row must be an array or a TableSeparator instance.'); +} + +$this->rows[] = array_values($row); + +return $this; +} + + + + + + +public function appendRow($row): self +{ +if (!$this->output instanceof ConsoleSectionOutput) { +throw new RuntimeException(sprintf('Output should be an instance of "%s" when calling "%s".', ConsoleSectionOutput::class, __METHOD__)); +} + +if ($this->rendered) { +$this->output->clear($this->calculateRowCount()); +} + +$this->addRow($row); +$this->render(); + +return $this; +} + + + + +public function setRow($column, array $row) +{ +$this->rows[$column] = $row; + +return $this; +} + + + + +public function setHeaderTitle(?string $title): self +{ +$this->headerTitle = $title; + +return $this; +} + + + + +public function setFooterTitle(?string $title): self +{ +$this->footerTitle = $title; + +return $this; +} + + + + +public function setHorizontal(bool $horizontal = true): self +{ +$this->horizontal = $horizontal; + +return $this; +} + + + + + + + + + + + + + + +public function render() +{ +$divider = new TableSeparator(); +if ($this->horizontal) { +$rows = []; +foreach ($this->headers[0] ?? [] as $i => $header) { +$rows[$i] = [$header]; +foreach ($this->rows as $row) { +if ($row instanceof TableSeparator) { +continue; +} +if (isset($row[$i])) { +$rows[$i][] = $row[$i]; +} elseif ($rows[$i][0] instanceof TableCell && $rows[$i][0]->getColspan() >= 2) { + +} else { +$rows[$i][] = null; +} +} +} +} else { +$rows = array_merge($this->headers, [$divider], $this->rows); +} + +$this->calculateNumberOfColumns($rows); + +$rowGroups = $this->buildTableRows($rows); +$this->calculateColumnsWidth($rowGroups); + +$isHeader = !$this->horizontal; +$isFirstRow = $this->horizontal; +$hasTitle = (bool) $this->headerTitle; + +foreach ($rowGroups as $rowGroup) { +$isHeaderSeparatorRendered = false; + +foreach ($rowGroup as $row) { +if ($divider === $row) { +$isHeader = false; +$isFirstRow = true; + +continue; +} + +if ($row instanceof TableSeparator) { +$this->renderRowSeparator(); + +continue; +} + +if (!$row) { +continue; +} + +if ($isHeader && !$isHeaderSeparatorRendered) { +$this->renderRowSeparator( +$isHeader ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, +$hasTitle ? $this->headerTitle : null, +$hasTitle ? $this->style->getHeaderTitleFormat() : null +); +$hasTitle = false; +$isHeaderSeparatorRendered = true; +} + +if ($isFirstRow) { +$this->renderRowSeparator( +$isHeader ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, +$hasTitle ? $this->headerTitle : null, +$hasTitle ? $this->style->getHeaderTitleFormat() : null +); +$isFirstRow = false; +$hasTitle = false; +} + +if ($this->horizontal) { +$this->renderRow($row, $this->style->getCellRowFormat(), $this->style->getCellHeaderFormat()); +} else { +$this->renderRow($row, $isHeader ? $this->style->getCellHeaderFormat() : $this->style->getCellRowFormat()); +} +} +} +$this->renderRowSeparator(self::SEPARATOR_BOTTOM, $this->footerTitle, $this->style->getFooterTitleFormat()); + +$this->cleanup(); +$this->rendered = true; +} + + + + + + + + +private function renderRowSeparator(int $type = self::SEPARATOR_MID, string $title = null, string $titleFormat = null) +{ +if (0 === $count = $this->numberOfColumns) { +return; +} + +$borders = $this->style->getBorderChars(); +if (!$borders[0] && !$borders[2] && !$this->style->getCrossingChar()) { +return; +} + +$crossings = $this->style->getCrossingChars(); +if (self::SEPARATOR_MID === $type) { +[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[2], $crossings[8], $crossings[0], $crossings[4]]; +} elseif (self::SEPARATOR_TOP === $type) { +[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[1], $crossings[2], $crossings[3]]; +} elseif (self::SEPARATOR_TOP_BOTTOM === $type) { +[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[9], $crossings[10], $crossings[11]]; +} else { +[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[7], $crossings[6], $crossings[5]]; +} + +$markup = $leftChar; +for ($column = 0; $column < $count; ++$column) { +$markup .= str_repeat($horizontal, $this->effectiveColumnWidths[$column]); +$markup .= $column === $count - 1 ? $rightChar : $midChar; +} + +if (null !== $title) { +$titleLength = Helper::width(Helper::removeDecoration($formatter = $this->output->getFormatter(), $formattedTitle = sprintf($titleFormat, $title))); +$markupLength = Helper::width($markup); +if ($titleLength > $limit = $markupLength - 4) { +$titleLength = $limit; +$formatLength = Helper::width(Helper::removeDecoration($formatter, sprintf($titleFormat, ''))); +$formattedTitle = sprintf($titleFormat, Helper::substr($title, 0, $limit - $formatLength - 3).'...'); +} + +$titleStart = intdiv($markupLength - $titleLength, 2); +if (false === mb_detect_encoding($markup, null, true)) { +$markup = substr_replace($markup, $formattedTitle, $titleStart, $titleLength); +} else { +$markup = mb_substr($markup, 0, $titleStart).$formattedTitle.mb_substr($markup, $titleStart + $titleLength); +} +} + +$this->output->writeln(sprintf($this->style->getBorderFormat(), $markup)); +} + + + + +private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE): string +{ +$borders = $this->style->getBorderChars(); + +return sprintf($this->style->getBorderFormat(), self::BORDER_OUTSIDE === $type ? $borders[1] : $borders[3]); +} + + + + + + + + +private function renderRow(array $row, string $cellFormat, string $firstCellFormat = null) +{ +$rowContent = $this->renderColumnSeparator(self::BORDER_OUTSIDE); +$columns = $this->getRowColumns($row); +$last = \count($columns) - 1; +foreach ($columns as $i => $column) { +if ($firstCellFormat && 0 === $i) { +$rowContent .= $this->renderCell($row, $column, $firstCellFormat); +} else { +$rowContent .= $this->renderCell($row, $column, $cellFormat); +} +$rowContent .= $this->renderColumnSeparator($last === $i ? self::BORDER_OUTSIDE : self::BORDER_INSIDE); +} +$this->output->writeln($rowContent); +} + + + + +private function renderCell(array $row, int $column, string $cellFormat): string +{ +$cell = $row[$column] ?? ''; +$width = $this->effectiveColumnWidths[$column]; +if ($cell instanceof TableCell && $cell->getColspan() > 1) { + +foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) { +$width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn]; +} +} + + +if (false !== $encoding = mb_detect_encoding($cell, null, true)) { +$width += \strlen($cell) - mb_strwidth($cell, $encoding); +} + +$style = $this->getColumnStyle($column); + +if ($cell instanceof TableSeparator) { +return sprintf($style->getBorderFormat(), str_repeat($style->getBorderChars()[2], $width)); +} + +$width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter(), $cell)); +$content = sprintf($style->getCellRowContentFormat(), $cell); + +$padType = $style->getPadType(); +if ($cell instanceof TableCell && $cell->getStyle() instanceof TableCellStyle) { +$isNotStyledByTag = !preg_match('/^<(\w+|(\w+=[\w,]+;?)*)>.+<\/(\w+|(\w+=\w+;?)*)?>$/', $cell); +if ($isNotStyledByTag) { +$cellFormat = $cell->getStyle()->getCellFormat(); +if (!\is_string($cellFormat)) { +$tag = http_build_query($cell->getStyle()->getTagOptions(), '', ';'); +$cellFormat = '<'.$tag.'>%s'; +} + +if (strstr($content, '')) { +$content = str_replace('', '', $content); +$width -= 3; +} +if (strstr($content, '')) { +$content = str_replace('', '', $content); +$width -= \strlen(''); +} +} + +$padType = $cell->getStyle()->getPadByAlign(); +} + +return sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $padType)); +} + + + + +private function calculateNumberOfColumns(array $rows) +{ +$columns = [0]; +foreach ($rows as $row) { +if ($row instanceof TableSeparator) { +continue; +} + +$columns[] = $this->getNumberOfColumns($row); +} + +$this->numberOfColumns = max($columns); +} + +private function buildTableRows(array $rows): TableRows +{ + +$formatter = $this->output->getFormatter(); +$unmergedRows = []; +for ($rowKey = 0; $rowKey < \count($rows); ++$rowKey) { +$rows = $this->fillNextRows($rows, $rowKey); + + +foreach ($rows[$rowKey] as $column => $cell) { +$colspan = $cell instanceof TableCell ? $cell->getColspan() : 1; + +if (isset($this->columnMaxWidths[$column]) && Helper::width(Helper::removeDecoration($formatter, $cell)) > $this->columnMaxWidths[$column]) { +$cell = $formatter->formatAndWrap($cell, $this->columnMaxWidths[$column] * $colspan); +} +if (!strstr($cell ?? '', "\n")) { +continue; +} +$escaped = implode("\n", array_map([OutputFormatter::class, 'escapeTrailingBackslash'], explode("\n", $cell))); +$cell = $cell instanceof TableCell ? new TableCell($escaped, ['colspan' => $cell->getColspan()]) : $escaped; +$lines = explode("\n", str_replace("\n", "\n", $cell)); +foreach ($lines as $lineKey => $line) { +if ($colspan > 1) { +$line = new TableCell($line, ['colspan' => $colspan]); +} +if (0 === $lineKey) { +$rows[$rowKey][$column] = $line; +} else { +if (!\array_key_exists($rowKey, $unmergedRows) || !\array_key_exists($lineKey, $unmergedRows[$rowKey])) { +$unmergedRows[$rowKey][$lineKey] = $this->copyRow($rows, $rowKey); +} +$unmergedRows[$rowKey][$lineKey][$column] = $line; +} +} +} +} + +return new TableRows(function () use ($rows, $unmergedRows): \Traversable { +foreach ($rows as $rowKey => $row) { +$rowGroup = [$row instanceof TableSeparator ? $row : $this->fillCells($row)]; + +if (isset($unmergedRows[$rowKey])) { +foreach ($unmergedRows[$rowKey] as $row) { +$rowGroup[] = $row instanceof TableSeparator ? $row : $this->fillCells($row); +} +} +yield $rowGroup; +} +}); +} + +private function calculateRowCount(): int +{ +$numberOfRows = \count(iterator_to_array($this->buildTableRows(array_merge($this->headers, [new TableSeparator()], $this->rows)))); + +if ($this->headers) { +++$numberOfRows; +} + +if (\count($this->rows) > 0) { +++$numberOfRows; +} + +return $numberOfRows; +} + + + + + + +private function fillNextRows(array $rows, int $line): array +{ +$unmergedRows = []; +foreach ($rows[$line] as $column => $cell) { +if (null !== $cell && !$cell instanceof TableCell && !\is_scalar($cell) && !(\is_object($cell) && method_exists($cell, '__toString'))) { +throw new InvalidArgumentException(sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', get_debug_type($cell))); +} +if ($cell instanceof TableCell && $cell->getRowspan() > 1) { +$nbLines = $cell->getRowspan() - 1; +$lines = [$cell]; +if (strstr($cell, "\n")) { +$lines = explode("\n", str_replace("\n", "\n", $cell)); +$nbLines = \count($lines) > $nbLines ? substr_count($cell, "\n") : $nbLines; + +$rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); +unset($lines[0]); +} + + +$unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, []), $unmergedRows); +foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { +$value = $lines[$unmergedRowKey - $line] ?? ''; +$unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); +if ($nbLines === $unmergedRowKey - $line) { +break; +} +} +} +} + +foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { + +if (isset($rows[$unmergedRowKey]) && \is_array($rows[$unmergedRowKey]) && ($this->getNumberOfColumns($rows[$unmergedRowKey]) + $this->getNumberOfColumns($unmergedRows[$unmergedRowKey]) <= $this->numberOfColumns)) { +foreach ($unmergedRow as $cellKey => $cell) { + +array_splice($rows[$unmergedRowKey], $cellKey, 0, [$cell]); +} +} else { +$row = $this->copyRow($rows, $unmergedRowKey - 1); +foreach ($unmergedRow as $column => $cell) { +if (!empty($cell)) { +$row[$column] = $unmergedRow[$column]; +} +} +array_splice($rows, $unmergedRowKey, 0, [$row]); +} +} + +return $rows; +} + + + + +private function fillCells(iterable $row) +{ +$newRow = []; + +foreach ($row as $column => $cell) { +$newRow[] = $cell; +if ($cell instanceof TableCell && $cell->getColspan() > 1) { +foreach (range($column + 1, $column + $cell->getColspan() - 1) as $position) { + +$newRow[] = ''; +} +} +} + +return $newRow ?: $row; +} + +private function copyRow(array $rows, int $line): array +{ +$row = $rows[$line]; +foreach ($row as $cellKey => $cellValue) { +$row[$cellKey] = ''; +if ($cellValue instanceof TableCell) { +$row[$cellKey] = new TableCell('', ['colspan' => $cellValue->getColspan()]); +} +} + +return $row; +} + + + + +private function getNumberOfColumns(array $row): int +{ +$columns = \count($row); +foreach ($row as $column) { +$columns += $column instanceof TableCell ? ($column->getColspan() - 1) : 0; +} + +return $columns; +} + + + + +private function getRowColumns(array $row): array +{ +$columns = range(0, $this->numberOfColumns - 1); +foreach ($row as $cellKey => $cell) { +if ($cell instanceof TableCell && $cell->getColspan() > 1) { + +$columns = array_diff($columns, range($cellKey + 1, $cellKey + $cell->getColspan() - 1)); +} +} + +return $columns; +} + + + + +private function calculateColumnsWidth(iterable $groups) +{ +for ($column = 0; $column < $this->numberOfColumns; ++$column) { +$lengths = []; +foreach ($groups as $group) { +foreach ($group as $row) { +if ($row instanceof TableSeparator) { +continue; +} + +foreach ($row as $i => $cell) { +if ($cell instanceof TableCell) { +$textContent = Helper::removeDecoration($this->output->getFormatter(), $cell); +$textLength = Helper::width($textContent); +if ($textLength > 0) { +$contentColumns = str_split($textContent, ceil($textLength / $cell->getColspan())); +foreach ($contentColumns as $position => $content) { +$row[$i + $position] = $content; +} +} +} +} + +$lengths[] = $this->getCellWidth($row, $column); +} +} + +$this->effectiveColumnWidths[$column] = max($lengths) + Helper::width($this->style->getCellRowContentFormat()) - 2; +} +} + +private function getColumnSeparatorWidth(): int +{ +return Helper::width(sprintf($this->style->getBorderFormat(), $this->style->getBorderChars()[3])); +} + +private function getCellWidth(array $row, int $column): int +{ +$cellWidth = 0; + +if (isset($row[$column])) { +$cell = $row[$column]; +$cellWidth = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $cell)); +} + +$columnWidth = $this->columnWidths[$column] ?? 0; +$cellWidth = max($cellWidth, $columnWidth); + +return isset($this->columnMaxWidths[$column]) ? min($this->columnMaxWidths[$column], $cellWidth) : $cellWidth; +} + + + + +private function cleanup() +{ +$this->effectiveColumnWidths = []; +$this->numberOfColumns = null; +} + + + + +private static function initStyles(): array +{ +$borderless = new TableStyle(); +$borderless +->setHorizontalBorderChars('=') +->setVerticalBorderChars(' ') +->setDefaultCrossingChar(' ') +; + +$compact = new TableStyle(); +$compact +->setHorizontalBorderChars('') +->setVerticalBorderChars('') +->setDefaultCrossingChar('') +->setCellRowContentFormat('%s ') +; + +$styleGuide = new TableStyle(); +$styleGuide +->setHorizontalBorderChars('-') +->setVerticalBorderChars(' ') +->setDefaultCrossingChar(' ') +->setCellHeaderFormat('%s') +; + +$box = (new TableStyle()) +->setHorizontalBorderChars('─') +->setVerticalBorderChars('│') +->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├') +; + +$boxDouble = (new TableStyle()) +->setHorizontalBorderChars('═', '─') +->setVerticalBorderChars('║', '│') +->setCrossingChars('┼', '╔', '╤', '╗', '╢', '╝', '╧', '╚', '╟', '╠', '╪', '╣') +; + +return [ +'default' => new TableStyle(), +'borderless' => $borderless, +'compact' => $compact, +'symfony-style-guide' => $styleGuide, +'box' => $box, +'box-double' => $boxDouble, +]; +} + +private function resolveStyle($name): TableStyle +{ +if ($name instanceof TableStyle) { +return $name; +} + +if (isset(self::$styles[$name])) { +return self::$styles[$name]; +} + +throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); +} +} diff --git a/composer/vendor/symfony/console/Helper/TableCell.php b/composer/vendor/symfony/console/Helper/TableCell.php new file mode 100644 index 000000000..f3144be6c --- /dev/null +++ b/composer/vendor/symfony/console/Helper/TableCell.php @@ -0,0 +1,78 @@ + 1, +'colspan' => 1, +'style' => null, +]; + +public function __construct(string $value = '', array $options = []) +{ +$this->value = $value; + + +if ($diff = array_diff(array_keys($options), array_keys($this->options))) { +throw new InvalidArgumentException(sprintf('The TableCell does not support the following options: \'%s\'.', implode('\', \'', $diff))); +} + +if (isset($options['style']) && !$options['style'] instanceof TableCellStyle) { +throw new InvalidArgumentException('The style option must be an instance of "TableCellStyle".'); +} + +$this->options = array_merge($this->options, $options); +} + + + + + + +public function __toString() +{ +return $this->value; +} + + + + + + +public function getColspan() +{ +return (int) $this->options['colspan']; +} + + + + + + +public function getRowspan() +{ +return (int) $this->options['rowspan']; +} + +public function getStyle(): ?TableCellStyle +{ +return $this->options['style']; +} +} diff --git a/composer/vendor/symfony/console/Helper/TableCellStyle.php b/composer/vendor/symfony/console/Helper/TableCellStyle.php new file mode 100644 index 000000000..d584484e8 --- /dev/null +++ b/composer/vendor/symfony/console/Helper/TableCellStyle.php @@ -0,0 +1,89 @@ + \STR_PAD_RIGHT, +'center' => \STR_PAD_BOTH, +'right' => \STR_PAD_LEFT, +]; + +private $options = [ +'fg' => 'default', +'bg' => 'default', +'options' => null, +'align' => self::DEFAULT_ALIGN, +'cellFormat' => null, +]; + +public function __construct(array $options = []) +{ +if ($diff = array_diff(array_keys($options), array_keys($this->options))) { +throw new InvalidArgumentException(sprintf('The TableCellStyle does not support the following options: \'%s\'.', implode('\', \'', $diff))); +} + +if (isset($options['align']) && !\array_key_exists($options['align'], self::ALIGN_MAP)) { +throw new InvalidArgumentException(sprintf('Wrong align value. Value must be following: \'%s\'.', implode('\', \'', array_keys(self::ALIGN_MAP)))); +} + +$this->options = array_merge($this->options, $options); +} + +public function getOptions(): array +{ +return $this->options; +} + + + + + + +public function getTagOptions() +{ +return array_filter( +$this->getOptions(), +function ($key) { +return \in_array($key, self::TAG_OPTIONS) && isset($this->options[$key]); +}, +\ARRAY_FILTER_USE_KEY +); +} + + + + +public function getPadByAlign() +{ +return self::ALIGN_MAP[$this->getOptions()['align']]; +} + +public function getCellFormat(): ?string +{ +return $this->getOptions()['cellFormat']; +} +} diff --git a/composer/vendor/symfony/console/Helper/TableRows.php b/composer/vendor/symfony/console/Helper/TableRows.php new file mode 100644 index 000000000..997358e2b --- /dev/null +++ b/composer/vendor/symfony/console/Helper/TableRows.php @@ -0,0 +1,30 @@ +generator = $generator; +} + +public function getIterator(): \Traversable +{ +return ($this->generator)(); +} +} diff --git a/composer/vendor/symfony/console/Helper/TableSeparator.php b/composer/vendor/symfony/console/Helper/TableSeparator.php new file mode 100644 index 000000000..80c80f8fd --- /dev/null +++ b/composer/vendor/symfony/console/Helper/TableSeparator.php @@ -0,0 +1,25 @@ + %s '; +private $footerTitleFormat = ' %s '; +private $cellHeaderFormat = '%s'; +private $cellRowFormat = '%s'; +private $cellRowContentFormat = ' %s '; +private $borderFormat = '%s'; +private $padType = \STR_PAD_RIGHT; + + + + + + +public function setPaddingChar(string $paddingChar) +{ +if (!$paddingChar) { +throw new LogicException('The padding char must not be empty.'); +} + +$this->paddingChar = $paddingChar; + +return $this; +} + + + + + + +public function getPaddingChar() +{ +return $this->paddingChar; +} + + + + + + + + + + + + + + + + + +public function setHorizontalBorderChars(string $outside, string $inside = null): self +{ +$this->horizontalOutsideBorderChar = $outside; +$this->horizontalInsideBorderChar = $inside ?? $outside; + +return $this; +} + + + + + + + + + + + + + + + + + + +public function setVerticalBorderChars(string $outside, string $inside = null): self +{ +$this->verticalOutsideBorderChar = $outside; +$this->verticalInsideBorderChar = $inside ?? $outside; + +return $this; +} + + + + + + +public function getBorderChars(): array +{ +return [ +$this->horizontalOutsideBorderChar, +$this->verticalOutsideBorderChar, +$this->horizontalInsideBorderChar, +$this->verticalInsideBorderChar, +]; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +public function setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, string $topLeftBottom = null, string $topMidBottom = null, string $topRightBottom = null): self +{ +$this->crossingChar = $cross; +$this->crossingTopLeftChar = $topLeft; +$this->crossingTopMidChar = $topMid; +$this->crossingTopRightChar = $topRight; +$this->crossingMidRightChar = $midRight; +$this->crossingBottomRightChar = $bottomRight; +$this->crossingBottomMidChar = $bottomMid; +$this->crossingBottomLeftChar = $bottomLeft; +$this->crossingMidLeftChar = $midLeft; +$this->crossingTopLeftBottomChar = $topLeftBottom ?? $midLeft; +$this->crossingTopMidBottomChar = $topMidBottom ?? $cross; +$this->crossingTopRightBottomChar = $topRightBottom ?? $midRight; + +return $this; +} + + + + + + +public function setDefaultCrossingChar(string $char): self +{ +return $this->setCrossingChars($char, $char, $char, $char, $char, $char, $char, $char, $char); +} + + + + + + +public function getCrossingChar() +{ +return $this->crossingChar; +} + + + + + + +public function getCrossingChars(): array +{ +return [ +$this->crossingChar, +$this->crossingTopLeftChar, +$this->crossingTopMidChar, +$this->crossingTopRightChar, +$this->crossingMidRightChar, +$this->crossingBottomRightChar, +$this->crossingBottomMidChar, +$this->crossingBottomLeftChar, +$this->crossingMidLeftChar, +$this->crossingTopLeftBottomChar, +$this->crossingTopMidBottomChar, +$this->crossingTopRightBottomChar, +]; +} + + + + + + +public function setCellHeaderFormat(string $cellHeaderFormat) +{ +$this->cellHeaderFormat = $cellHeaderFormat; + +return $this; +} + + + + + + +public function getCellHeaderFormat() +{ +return $this->cellHeaderFormat; +} + + + + + + +public function setCellRowFormat(string $cellRowFormat) +{ +$this->cellRowFormat = $cellRowFormat; + +return $this; +} + + + + + + +public function getCellRowFormat() +{ +return $this->cellRowFormat; +} + + + + + + +public function setCellRowContentFormat(string $cellRowContentFormat) +{ +$this->cellRowContentFormat = $cellRowContentFormat; + +return $this; +} + + + + + + +public function getCellRowContentFormat() +{ +return $this->cellRowContentFormat; +} + + + + + + +public function setBorderFormat(string $borderFormat) +{ +$this->borderFormat = $borderFormat; + +return $this; +} + + + + + + +public function getBorderFormat() +{ +return $this->borderFormat; +} + + + + + + +public function setPadType(int $padType) +{ +if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], true)) { +throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).'); +} + +$this->padType = $padType; + +return $this; +} + + + + + + +public function getPadType() +{ +return $this->padType; +} + +public function getHeaderTitleFormat(): string +{ +return $this->headerTitleFormat; +} + + + + +public function setHeaderTitleFormat(string $format): self +{ +$this->headerTitleFormat = $format; + +return $this; +} + +public function getFooterTitleFormat(): string +{ +return $this->footerTitleFormat; +} + + + + +public function setFooterTitleFormat(string $format): self +{ +$this->footerTitleFormat = $format; + +return $this; +} +} diff --git a/composer/vendor/symfony/console/Input/ArgvInput.php b/composer/vendor/symfony/console/Input/ArgvInput.php new file mode 100644 index 000000000..9ba84bfbd --- /dev/null +++ b/composer/vendor/symfony/console/Input/ArgvInput.php @@ -0,0 +1,378 @@ +tokens = $argv; + +parent::__construct($definition); +} + +protected function setTokens(array $tokens) +{ +$this->tokens = $tokens; +} + + + + +protected function parse() +{ +$parseOptions = true; +$this->parsed = $this->tokens; +while (null !== $token = array_shift($this->parsed)) { +$parseOptions = $this->parseToken($token, $parseOptions); +} +} + +protected function parseToken(string $token, bool $parseOptions): bool +{ +if ($parseOptions && '' == $token) { +$this->parseArgument($token); +} elseif ($parseOptions && '--' == $token) { +return false; +} elseif ($parseOptions && str_starts_with($token, '--')) { +$this->parseLongOption($token); +} elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { +$this->parseShortOption($token); +} else { +$this->parseArgument($token); +} + +return $parseOptions; +} + + + + +private function parseShortOption(string $token) +{ +$name = substr($token, 1); + +if (\strlen($name) > 1) { +if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) { + +$this->addShortOption($name[0], substr($name, 1)); +} else { +$this->parseShortOptionSet($name); +} +} else { +$this->addShortOption($name, null); +} +} + + + + + + +private function parseShortOptionSet(string $name) +{ +$len = \strlen($name); +for ($i = 0; $i < $len; ++$i) { +if (!$this->definition->hasShortcut($name[$i])) { +$encoding = mb_detect_encoding($name, null, true); +throw new RuntimeException(sprintf('The "-%s" option does not exist.', false === $encoding ? $name[$i] : mb_substr($name, $i, 1, $encoding))); +} + +$option = $this->definition->getOptionForShortcut($name[$i]); +if ($option->acceptValue()) { +$this->addLongOption($option->getName(), $i === $len - 1 ? null : substr($name, $i + 1)); + +break; +} else { +$this->addLongOption($option->getName(), null); +} +} +} + + + + +private function parseLongOption(string $token) +{ +$name = substr($token, 2); + +if (false !== $pos = strpos($name, '=')) { +if ('' === $value = substr($name, $pos + 1)) { +array_unshift($this->parsed, $value); +} +$this->addLongOption(substr($name, 0, $pos), $value); +} else { +$this->addLongOption($name, null); +} +} + + + + + + +private function parseArgument(string $token) +{ +$c = \count($this->arguments); + + +if ($this->definition->hasArgument($c)) { +$arg = $this->definition->getArgument($c); +$this->arguments[$arg->getName()] = $arg->isArray() ? [$token] : $token; + + +} elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { +$arg = $this->definition->getArgument($c - 1); +$this->arguments[$arg->getName()][] = $token; + + +} else { +$all = $this->definition->getArguments(); +$symfonyCommandName = null; +if (($inputArgument = $all[$key = array_key_first($all)] ?? null) && 'command' === $inputArgument->getName()) { +$symfonyCommandName = $this->arguments['command'] ?? null; +unset($all[$key]); +} + +if (\count($all)) { +if ($symfonyCommandName) { +$message = sprintf('Too many arguments to "%s" command, expected arguments "%s".', $symfonyCommandName, implode('" "', array_keys($all))); +} else { +$message = sprintf('Too many arguments, expected arguments "%s".', implode('" "', array_keys($all))); +} +} elseif ($symfonyCommandName) { +$message = sprintf('No arguments expected for "%s" command, got "%s".', $symfonyCommandName, $token); +} else { +$message = sprintf('No arguments expected, got "%s".', $token); +} + +throw new RuntimeException($message); +} +} + + + + + + +private function addShortOption(string $shortcut, $value) +{ +if (!$this->definition->hasShortcut($shortcut)) { +throw new RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut)); +} + +$this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); +} + + + + + + +private function addLongOption(string $name, $value) +{ +if (!$this->definition->hasOption($name)) { +if (!$this->definition->hasNegation($name)) { +throw new RuntimeException(sprintf('The "--%s" option does not exist.', $name)); +} + +$optionName = $this->definition->negationToName($name); +if (null !== $value) { +throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); +} +$this->options[$optionName] = false; + +return; +} + +$option = $this->definition->getOption($name); + +if (null !== $value && !$option->acceptValue()) { +throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); +} + +if (\in_array($value, ['', null], true) && $option->acceptValue() && \count($this->parsed)) { + + +$next = array_shift($this->parsed); +if ((isset($next[0]) && '-' !== $next[0]) || \in_array($next, ['', null], true)) { +$value = $next; +} else { +array_unshift($this->parsed, $next); +} +} + +if (null === $value) { +if ($option->isValueRequired()) { +throw new RuntimeException(sprintf('The "--%s" option requires a value.', $name)); +} + +if (!$option->isArray() && !$option->isValueOptional()) { +$value = true; +} +} + +if ($option->isArray()) { +$this->options[$name][] = $value; +} else { +$this->options[$name] = $value; +} +} + + + + +public function getFirstArgument() +{ +$isOption = false; +foreach ($this->tokens as $i => $token) { +if ($token && '-' === $token[0]) { +if (str_contains($token, '=') || !isset($this->tokens[$i + 1])) { +continue; +} + + + +$name = '-' === $token[1] ? substr($token, 2) : substr($token, -1); +if (!isset($this->options[$name]) && !$this->definition->hasShortcut($name)) { + +} elseif ((isset($this->options[$name]) || isset($this->options[$name = $this->definition->shortcutToName($name)])) && $this->tokens[$i + 1] === $this->options[$name]) { +$isOption = true; +} + +continue; +} + +if ($isOption) { +$isOption = false; +continue; +} + +return $token; +} + +return null; +} + + + + +public function hasParameterOption($values, bool $onlyParams = false) +{ +$values = (array) $values; + +foreach ($this->tokens as $token) { +if ($onlyParams && '--' === $token) { +return false; +} +foreach ($values as $value) { + + + +$leading = str_starts_with($value, '--') ? $value.'=' : $value; +if ($token === $value || '' !== $leading && str_starts_with($token, $leading)) { +return true; +} +} +} + +return false; +} + + + + +public function getParameterOption($values, $default = false, bool $onlyParams = false) +{ +$values = (array) $values; +$tokens = $this->tokens; + +while (0 < \count($tokens)) { +$token = array_shift($tokens); +if ($onlyParams && '--' === $token) { +return $default; +} + +foreach ($values as $value) { +if ($token === $value) { +return array_shift($tokens); +} + + + +$leading = str_starts_with($value, '--') ? $value.'=' : $value; +if ('' !== $leading && str_starts_with($token, $leading)) { +return substr($token, \strlen($leading)); +} +} +} + +return $default; +} + + + + + + +public function __toString() +{ +$tokens = array_map(function ($token) { +if (preg_match('{^(-[^=]+=)(.+)}', $token, $match)) { +return $match[1].$this->escapeToken($match[2]); +} + +if ($token && '-' !== $token[0]) { +return $this->escapeToken($token); +} + +return $token; +}, $this->tokens); + +return implode(' ', $tokens); +} +} diff --git a/composer/vendor/symfony/console/Input/ArrayInput.php b/composer/vendor/symfony/console/Input/ArrayInput.php new file mode 100644 index 000000000..1f5086c69 --- /dev/null +++ b/composer/vendor/symfony/console/Input/ArrayInput.php @@ -0,0 +1,210 @@ +parameters = $parameters; + +parent::__construct($definition); +} + + + + +public function getFirstArgument() +{ +foreach ($this->parameters as $param => $value) { +if ($param && \is_string($param) && '-' === $param[0]) { +continue; +} + +return $value; +} + +return null; +} + + + + +public function hasParameterOption($values, bool $onlyParams = false) +{ +$values = (array) $values; + +foreach ($this->parameters as $k => $v) { +if (!\is_int($k)) { +$v = $k; +} + +if ($onlyParams && '--' === $v) { +return false; +} + +if (\in_array($v, $values)) { +return true; +} +} + +return false; +} + + + + +public function getParameterOption($values, $default = false, bool $onlyParams = false) +{ +$values = (array) $values; + +foreach ($this->parameters as $k => $v) { +if ($onlyParams && ('--' === $k || (\is_int($k) && '--' === $v))) { +return $default; +} + +if (\is_int($k)) { +if (\in_array($v, $values)) { +return true; +} +} elseif (\in_array($k, $values)) { +return $v; +} +} + +return $default; +} + + + + + + +public function __toString() +{ +$params = []; +foreach ($this->parameters as $param => $val) { +if ($param && \is_string($param) && '-' === $param[0]) { +$glue = ('-' === $param[1]) ? '=' : ' '; +if (\is_array($val)) { +foreach ($val as $v) { +$params[] = $param.('' != $v ? $glue.$this->escapeToken($v) : ''); +} +} else { +$params[] = $param.('' != $val ? $glue.$this->escapeToken($val) : ''); +} +} else { +$params[] = \is_array($val) ? implode(' ', array_map([$this, 'escapeToken'], $val)) : $this->escapeToken($val); +} +} + +return implode(' ', $params); +} + + + + +protected function parse() +{ +foreach ($this->parameters as $key => $value) { +if ('--' === $key) { +return; +} +if (str_starts_with($key, '--')) { +$this->addLongOption(substr($key, 2), $value); +} elseif (str_starts_with($key, '-')) { +$this->addShortOption(substr($key, 1), $value); +} else { +$this->addArgument($key, $value); +} +} +} + + + + + + +private function addShortOption(string $shortcut, $value) +{ +if (!$this->definition->hasShortcut($shortcut)) { +throw new InvalidOptionException(sprintf('The "-%s" option does not exist.', $shortcut)); +} + +$this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); +} + + + + + + + +private function addLongOption(string $name, $value) +{ +if (!$this->definition->hasOption($name)) { +if (!$this->definition->hasNegation($name)) { +throw new InvalidOptionException(sprintf('The "--%s" option does not exist.', $name)); +} + +$optionName = $this->definition->negationToName($name); +$this->options[$optionName] = false; + +return; +} + +$option = $this->definition->getOption($name); + +if (null === $value) { +if ($option->isValueRequired()) { +throw new InvalidOptionException(sprintf('The "--%s" option requires a value.', $name)); +} + +if (!$option->isValueOptional()) { +$value = true; +} +} + +$this->options[$name] = $value; +} + + + + + + + + + +private function addArgument($name, $value) +{ +if (!$this->definition->hasArgument($name)) { +throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); +} + +$this->arguments[$name] = $value; +} +} diff --git a/composer/vendor/symfony/console/Input/Input.php b/composer/vendor/symfony/console/Input/Input.php new file mode 100644 index 000000000..432338ff2 --- /dev/null +++ b/composer/vendor/symfony/console/Input/Input.php @@ -0,0 +1,213 @@ +definition = new InputDefinition(); +} else { +$this->bind($definition); +$this->validate(); +} +} + + + + +public function bind(InputDefinition $definition) +{ +$this->arguments = []; +$this->options = []; +$this->definition = $definition; + +$this->parse(); +} + + + + +abstract protected function parse(); + + + + +public function validate() +{ +$definition = $this->definition; +$givenArguments = $this->arguments; + +$missingArguments = array_filter(array_keys($definition->getArguments()), function ($argument) use ($definition, $givenArguments) { +return !\array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired(); +}); + +if (\count($missingArguments) > 0) { +throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments))); +} +} + + + + +public function isInteractive() +{ +return $this->interactive; +} + + + + +public function setInteractive(bool $interactive) +{ +$this->interactive = $interactive; +} + + + + +public function getArguments() +{ +return array_merge($this->definition->getArgumentDefaults(), $this->arguments); +} + + + + +public function getArgument(string $name) +{ +if (!$this->definition->hasArgument($name)) { +throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); +} + +return $this->arguments[$name] ?? $this->definition->getArgument($name)->getDefault(); +} + + + + +public function setArgument(string $name, $value) +{ +if (!$this->definition->hasArgument($name)) { +throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); +} + +$this->arguments[$name] = $value; +} + + + + +public function hasArgument(string $name) +{ +return $this->definition->hasArgument($name); +} + + + + +public function getOptions() +{ +return array_merge($this->definition->getOptionDefaults(), $this->options); +} + + + + +public function getOption(string $name) +{ +if ($this->definition->hasNegation($name)) { +if (null === $value = $this->getOption($this->definition->negationToName($name))) { +return $value; +} + +return !$value; +} + +if (!$this->definition->hasOption($name)) { +throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); +} + +return \array_key_exists($name, $this->options) ? $this->options[$name] : $this->definition->getOption($name)->getDefault(); +} + + + + +public function setOption(string $name, $value) +{ +if ($this->definition->hasNegation($name)) { +$this->options[$this->definition->negationToName($name)] = !$value; + +return; +} elseif (!$this->definition->hasOption($name)) { +throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); +} + +$this->options[$name] = $value; +} + + + + +public function hasOption(string $name) +{ +return $this->definition->hasOption($name) || $this->definition->hasNegation($name); +} + + + + + + +public function escapeToken(string $token) +{ +return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token); +} + + + + +public function setStream($stream) +{ +$this->stream = $stream; +} + + + + +public function getStream() +{ +return $this->stream; +} +} diff --git a/composer/vendor/symfony/console/Input/InputArgument.php b/composer/vendor/symfony/console/Input/InputArgument.php new file mode 100644 index 000000000..fa1a3de08 --- /dev/null +++ b/composer/vendor/symfony/console/Input/InputArgument.php @@ -0,0 +1,129 @@ + 7 || $mode < 1) { +throw new InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode)); +} + +$this->name = $name; +$this->mode = $mode; +$this->description = $description; + +$this->setDefault($default); +} + + + + + + +public function getName() +{ +return $this->name; +} + + + + + + +public function isRequired() +{ +return self::REQUIRED === (self::REQUIRED & $this->mode); +} + + + + + + +public function isArray() +{ +return self::IS_ARRAY === (self::IS_ARRAY & $this->mode); +} + + + + + + + + +public function setDefault($default = null) +{ +if ($this->isRequired() && null !== $default) { +throw new LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.'); +} + +if ($this->isArray()) { +if (null === $default) { +$default = []; +} elseif (!\is_array($default)) { +throw new LogicException('A default value for an array argument must be an array.'); +} +} + +$this->default = $default; +} + + + + + + +public function getDefault() +{ +return $this->default; +} + + + + + + +public function getDescription() +{ +return $this->description; +} +} diff --git a/composer/vendor/symfony/console/Input/InputAwareInterface.php b/composer/vendor/symfony/console/Input/InputAwareInterface.php new file mode 100644 index 000000000..730fe8d2e --- /dev/null +++ b/composer/vendor/symfony/console/Input/InputAwareInterface.php @@ -0,0 +1,26 @@ +setDefinition($definition); +} + + + + +public function setDefinition(array $definition) +{ +$arguments = []; +$options = []; +foreach ($definition as $item) { +if ($item instanceof InputOption) { +$options[] = $item; +} else { +$arguments[] = $item; +} +} + +$this->setArguments($arguments); +$this->setOptions($options); +} + + + + + + +public function setArguments(array $arguments = []) +{ +$this->arguments = []; +$this->requiredCount = 0; +$this->lastOptionalArgument = null; +$this->lastArrayArgument = null; +$this->addArguments($arguments); +} + + + + + + +public function addArguments(?array $arguments = []) +{ +if (null !== $arguments) { +foreach ($arguments as $argument) { +$this->addArgument($argument); +} +} +} + + + + +public function addArgument(InputArgument $argument) +{ +if (isset($this->arguments[$argument->getName()])) { +throw new LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName())); +} + +if (null !== $this->lastArrayArgument) { +throw new LogicException(sprintf('Cannot add a required argument "%s" after an array argument "%s".', $argument->getName(), $this->lastArrayArgument->getName())); +} + +if ($argument->isRequired() && null !== $this->lastOptionalArgument) { +throw new LogicException(sprintf('Cannot add a required argument "%s" after an optional one "%s".', $argument->getName(), $this->lastOptionalArgument->getName())); +} + +if ($argument->isArray()) { +$this->lastArrayArgument = $argument; +} + +if ($argument->isRequired()) { +++$this->requiredCount; +} else { +$this->lastOptionalArgument = $argument; +} + +$this->arguments[$argument->getName()] = $argument; +} + + + + + + + + + + +public function getArgument($name) +{ +if (!$this->hasArgument($name)) { +throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); +} + +$arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; + +return $arguments[$name]; +} + + + + + + + + +public function hasArgument($name) +{ +$arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; + +return isset($arguments[$name]); +} + + + + + + +public function getArguments() +{ +return $this->arguments; +} + + + + + + +public function getArgumentCount() +{ +return null !== $this->lastArrayArgument ? \PHP_INT_MAX : \count($this->arguments); +} + + + + + + +public function getArgumentRequiredCount() +{ +return $this->requiredCount; +} + + + + +public function getArgumentDefaults() +{ +$values = []; +foreach ($this->arguments as $argument) { +$values[$argument->getName()] = $argument->getDefault(); +} + +return $values; +} + + + + + + +public function setOptions(array $options = []) +{ +$this->options = []; +$this->shortcuts = []; +$this->negations = []; +$this->addOptions($options); +} + + + + + + +public function addOptions(array $options = []) +{ +foreach ($options as $option) { +$this->addOption($option); +} +} + + + + +public function addOption(InputOption $option) +{ +if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) { +throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); +} +if (isset($this->negations[$option->getName()])) { +throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); +} + +if ($option->getShortcut()) { +foreach (explode('|', $option->getShortcut()) as $shortcut) { +if (isset($this->shortcuts[$shortcut]) && !$option->equals($this->options[$this->shortcuts[$shortcut]])) { +throw new LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut)); +} +} +} + +$this->options[$option->getName()] = $option; +if ($option->getShortcut()) { +foreach (explode('|', $option->getShortcut()) as $shortcut) { +$this->shortcuts[$shortcut] = $option->getName(); +} +} + +if ($option->isNegatable()) { +$negatedName = 'no-'.$option->getName(); +if (isset($this->options[$negatedName])) { +throw new LogicException(sprintf('An option named "%s" already exists.', $negatedName)); +} +$this->negations[$negatedName] = $option->getName(); +} +} + + + + + + + + +public function getOption(string $name) +{ +if (!$this->hasOption($name)) { +throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name)); +} + +return $this->options[$name]; +} + + + + + + + + + +public function hasOption(string $name) +{ +return isset($this->options[$name]); +} + + + + + + +public function getOptions() +{ +return $this->options; +} + + + + + + +public function hasShortcut(string $name) +{ +return isset($this->shortcuts[$name]); +} + + + + +public function hasNegation(string $name): bool +{ +return isset($this->negations[$name]); +} + + + + + + +public function getOptionForShortcut(string $shortcut) +{ +return $this->getOption($this->shortcutToName($shortcut)); +} + + + + +public function getOptionDefaults() +{ +$values = []; +foreach ($this->options as $option) { +$values[$option->getName()] = $option->getDefault(); +} + +return $values; +} + + + + + + + + +public function shortcutToName(string $shortcut): string +{ +if (!isset($this->shortcuts[$shortcut])) { +throw new InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut)); +} + +return $this->shortcuts[$shortcut]; +} + + + + + + + + +public function negationToName(string $negation): string +{ +if (!isset($this->negations[$negation])) { +throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $negation)); +} + +return $this->negations[$negation]; +} + + + + + + +public function getSynopsis(bool $short = false) +{ +$elements = []; + +if ($short && $this->getOptions()) { +$elements[] = '[options]'; +} elseif (!$short) { +foreach ($this->getOptions() as $option) { +$value = ''; +if ($option->acceptValue()) { +$value = sprintf( +' %s%s%s', +$option->isValueOptional() ? '[' : '', +strtoupper($option->getName()), +$option->isValueOptional() ? ']' : '' +); +} + +$shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; +$negation = $option->isNegatable() ? sprintf('|--no-%s', $option->getName()) : ''; +$elements[] = sprintf('[%s--%s%s%s]', $shortcut, $option->getName(), $value, $negation); +} +} + +if (\count($elements) && $this->getArguments()) { +$elements[] = '[--]'; +} + +$tail = ''; +foreach ($this->getArguments() as $argument) { +$element = '<'.$argument->getName().'>'; +if ($argument->isArray()) { +$element .= '...'; +} + +if (!$argument->isRequired()) { +$element = '['.$element; +$tail .= ']'; +} + +$elements[] = $element; +} + +return implode(' ', $elements).$tail; +} +} diff --git a/composer/vendor/symfony/console/Input/InputInterface.php b/composer/vendor/symfony/console/Input/InputInterface.php new file mode 100644 index 000000000..c94fdb757 --- /dev/null +++ b/composer/vendor/symfony/console/Input/InputInterface.php @@ -0,0 +1,151 @@ += (self::VALUE_NEGATABLE << 1) || $mode < 1) { +throw new InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode)); +} + +$this->name = $name; +$this->shortcut = $shortcut; +$this->mode = $mode; +$this->description = $description; + +if ($this->isArray() && !$this->acceptValue()) { +throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.'); +} +if ($this->isNegatable() && $this->acceptValue()) { +throw new InvalidArgumentException('Impossible to have an option mode VALUE_NEGATABLE if the option also accepts a value.'); +} + +$this->setDefault($default); +} + + + + + + +public function getShortcut() +{ +return $this->shortcut; +} + + + + + + +public function getName() +{ +return $this->name; +} + + + + + + +public function acceptValue() +{ +return $this->isValueRequired() || $this->isValueOptional(); +} + + + + + + +public function isValueRequired() +{ +return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode); +} + + + + + + +public function isValueOptional() +{ +return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode); +} + + + + + + +public function isArray() +{ +return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode); +} + +public function isNegatable(): bool +{ +return self::VALUE_NEGATABLE === (self::VALUE_NEGATABLE & $this->mode); +} + + + + +public function setDefault($default = null) +{ +if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) { +throw new LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.'); +} + +if ($this->isArray()) { +if (null === $default) { +$default = []; +} elseif (!\is_array($default)) { +throw new LogicException('A default value for an array option must be an array.'); +} +} + +$this->default = $this->acceptValue() || $this->isNegatable() ? $default : false; +} + + + + + + +public function getDefault() +{ +return $this->default; +} + + + + + + +public function getDescription() +{ +return $this->description; +} + + + + + + +public function equals(self $option) +{ +return $option->getName() === $this->getName() +&& $option->getShortcut() === $this->getShortcut() +&& $option->getDefault() === $this->getDefault() +&& $option->isNegatable() === $this->isNegatable() +&& $option->isArray() === $this->isArray() +&& $option->isValueRequired() === $this->isValueRequired() +&& $option->isValueOptional() === $this->isValueOptional() +; +} +} diff --git a/composer/vendor/symfony/console/Input/StreamableInputInterface.php b/composer/vendor/symfony/console/Input/StreamableInputInterface.php new file mode 100644 index 000000000..e1b806c55 --- /dev/null +++ b/composer/vendor/symfony/console/Input/StreamableInputInterface.php @@ -0,0 +1,37 @@ +setTokens($this->tokenize($input)); +} + + + + + + +private function tokenize(string $input): array +{ +$tokens = []; +$length = \strlen($input); +$cursor = 0; +$token = null; +while ($cursor < $length) { +if ('\\' === $input[$cursor]) { +$token .= $input[++$cursor] ?? ''; +++$cursor; +continue; +} + +if (preg_match('/\s+/A', $input, $match, 0, $cursor)) { +if (null !== $token) { +$tokens[] = $token; +$token = null; +} +} elseif (preg_match('/([^="\'\s]+?)(=?)('.self::REGEX_QUOTED_STRING.'+)/A', $input, $match, 0, $cursor)) { +$token .= $match[1].$match[2].stripcslashes(str_replace(['"\'', '\'"', '\'\'', '""'], '', substr($match[3], 1, -1))); +} elseif (preg_match('/'.self::REGEX_QUOTED_STRING.'/A', $input, $match, 0, $cursor)) { +$token .= stripcslashes(substr($match[0], 1, -1)); +} elseif (preg_match('/'.self::REGEX_UNQUOTED_STRING.'/A', $input, $match, 0, $cursor)) { +$token .= $match[1]; +} else { + +throw new InvalidArgumentException(sprintf('Unable to parse input near "... %s ...".', substr($input, $cursor, 10))); +} + +$cursor += \strlen($match[0]); +} + +if (null !== $token) { +$tokens[] = $token; +} + +return $tokens; +} +} diff --git a/composer/vendor/symfony/console/LICENSE b/composer/vendor/symfony/console/LICENSE new file mode 100644 index 000000000..3622370ec --- /dev/null +++ b/composer/vendor/symfony/console/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2004-2023 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/composer/vendor/symfony/console/Logger/ConsoleLogger.php b/composer/vendor/symfony/console/Logger/ConsoleLogger.php new file mode 100644 index 000000000..26a133858 --- /dev/null +++ b/composer/vendor/symfony/console/Logger/ConsoleLogger.php @@ -0,0 +1,126 @@ + OutputInterface::VERBOSITY_NORMAL, +LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, +LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, +LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, +LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, +LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE, +LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE, +LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG, +]; +private $formatLevelMap = [ +LogLevel::EMERGENCY => self::ERROR, +LogLevel::ALERT => self::ERROR, +LogLevel::CRITICAL => self::ERROR, +LogLevel::ERROR => self::ERROR, +LogLevel::WARNING => self::INFO, +LogLevel::NOTICE => self::INFO, +LogLevel::INFO => self::INFO, +LogLevel::DEBUG => self::INFO, +]; +private $errored = false; + +public function __construct(OutputInterface $output, array $verbosityLevelMap = [], array $formatLevelMap = []) +{ +$this->output = $output; +$this->verbosityLevelMap = $verbosityLevelMap + $this->verbosityLevelMap; +$this->formatLevelMap = $formatLevelMap + $this->formatLevelMap; +} + + + + + + +public function log($level, $message, array $context = []) +{ +if (!isset($this->verbosityLevelMap[$level])) { +throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level)); +} + +$output = $this->output; + + +if (self::ERROR === $this->formatLevelMap[$level]) { +if ($this->output instanceof ConsoleOutputInterface) { +$output = $output->getErrorOutput(); +} +$this->errored = true; +} + + + +if ($output->getVerbosity() >= $this->verbosityLevelMap[$level]) { +$output->writeln(sprintf('<%1$s>[%2$s] %3$s', $this->formatLevelMap[$level], $level, $this->interpolate($message, $context)), $this->verbosityLevelMap[$level]); +} +} + + + + + + +public function hasErrored() +{ +return $this->errored; +} + + + + + + +private function interpolate(string $message, array $context): string +{ +if (!str_contains($message, '{')) { +return $message; +} + +$replacements = []; +foreach ($context as $key => $val) { +if (null === $val || \is_scalar($val) || (\is_object($val) && method_exists($val, '__toString'))) { +$replacements["{{$key}}"] = $val; +} elseif ($val instanceof \DateTimeInterface) { +$replacements["{{$key}}"] = $val->format(\DateTime::RFC3339); +} elseif (\is_object($val)) { +$replacements["{{$key}}"] = '[object '.\get_class($val).']'; +} else { +$replacements["{{$key}}"] = '['.\gettype($val).']'; +} +} + +return strtr($message, $replacements); +} +} diff --git a/composer/vendor/symfony/console/Output/BufferedOutput.php b/composer/vendor/symfony/console/Output/BufferedOutput.php new file mode 100644 index 000000000..da18c1107 --- /dev/null +++ b/composer/vendor/symfony/console/Output/BufferedOutput.php @@ -0,0 +1,45 @@ +buffer; +$this->buffer = ''; + +return $content; +} + + + + +protected function doWrite(string $message, bool $newline) +{ +$this->buffer .= $message; + +if ($newline) { +$this->buffer .= \PHP_EOL; +} +} +} diff --git a/composer/vendor/symfony/console/Output/ConsoleOutput.php b/composer/vendor/symfony/console/Output/ConsoleOutput.php new file mode 100644 index 000000000..354b32063 --- /dev/null +++ b/composer/vendor/symfony/console/Output/ConsoleOutput.php @@ -0,0 +1,172 @@ +openOutputStream(), $verbosity, $decorated, $formatter); + +if (null === $formatter) { + +$this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated); + +return; +} + +$actualDecorated = $this->isDecorated(); +$this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated, $this->getFormatter()); + +if (null === $decorated) { +$this->setDecorated($actualDecorated && $this->stderr->isDecorated()); +} +} + + + + +public function section(): ConsoleSectionOutput +{ +return new ConsoleSectionOutput($this->getStream(), $this->consoleSectionOutputs, $this->getVerbosity(), $this->isDecorated(), $this->getFormatter()); +} + + + + +public function setDecorated(bool $decorated) +{ +parent::setDecorated($decorated); +$this->stderr->setDecorated($decorated); +} + + + + +public function setFormatter(OutputFormatterInterface $formatter) +{ +parent::setFormatter($formatter); +$this->stderr->setFormatter($formatter); +} + + + + +public function setVerbosity(int $level) +{ +parent::setVerbosity($level); +$this->stderr->setVerbosity($level); +} + + + + +public function getErrorOutput() +{ +return $this->stderr; +} + + + + +public function setErrorOutput(OutputInterface $error) +{ +$this->stderr = $error; +} + + + + + + + +protected function hasStdoutSupport() +{ +return false === $this->isRunningOS400(); +} + + + + + + + +protected function hasStderrSupport() +{ +return false === $this->isRunningOS400(); +} + + + + + +private function isRunningOS400(): bool +{ +$checks = [ +\function_exists('php_uname') ? php_uname('s') : '', +getenv('OSTYPE'), +\PHP_OS, +]; + +return false !== stripos(implode(';', $checks), 'OS400'); +} + + + + +private function openOutputStream() +{ +if (!$this->hasStdoutSupport()) { +return fopen('php://output', 'w'); +} + + +return \defined('STDOUT') ? \STDOUT : (@fopen('php://stdout', 'w') ?: fopen('php://output', 'w')); +} + + + + +private function openErrorStream() +{ +if (!$this->hasStderrSupport()) { +return fopen('php://output', 'w'); +} + + +return \defined('STDERR') ? \STDERR : (@fopen('php://stderr', 'w') ?: fopen('php://output', 'w')); +} +} diff --git a/composer/vendor/symfony/console/Output/ConsoleOutputInterface.php b/composer/vendor/symfony/console/Output/ConsoleOutputInterface.php new file mode 100644 index 000000000..d39a07642 --- /dev/null +++ b/composer/vendor/symfony/console/Output/ConsoleOutputInterface.php @@ -0,0 +1,32 @@ +sections = &$sections; +$this->terminal = new Terminal(); +} + + + + + + +public function clear(int $lines = null) +{ +if (empty($this->content) || !$this->isDecorated()) { +return; +} + +if ($lines) { +array_splice($this->content, -($lines * 2)); +} else { +$lines = $this->lines; +$this->content = []; +} + +$this->lines -= $lines; + +parent::doWrite($this->popStreamContentUntilCurrentSection($lines), false); +} + + + + + + +public function overwrite($message) +{ +$this->clear(); +$this->writeln($message); +} + +public function getContent(): string +{ +return implode('', $this->content); +} + + + + +public function addContent(string $input) +{ +foreach (explode(\PHP_EOL, $input) as $lineContent) { +$this->lines += ceil($this->getDisplayLength($lineContent) / $this->terminal->getWidth()) ?: 1; +$this->content[] = $lineContent; +$this->content[] = \PHP_EOL; +} +} + + + + +protected function doWrite(string $message, bool $newline) +{ +if (!$this->isDecorated()) { +parent::doWrite($message, $newline); + +return; +} + +$erasedContent = $this->popStreamContentUntilCurrentSection(); + +$this->addContent($message); + +parent::doWrite($message, true); +parent::doWrite($erasedContent, false); +} + + + + + +private function popStreamContentUntilCurrentSection(int $numberOfLinesToClearFromCurrentSection = 0): string +{ +$numberOfLinesToClear = $numberOfLinesToClearFromCurrentSection; +$erasedContent = []; + +foreach ($this->sections as $section) { +if ($section === $this) { +break; +} + +$numberOfLinesToClear += $section->lines; +$erasedContent[] = $section->getContent(); +} + +if ($numberOfLinesToClear > 0) { + +parent::doWrite(sprintf("\x1b[%dA", $numberOfLinesToClear), false); + +parent::doWrite("\x1b[0J", false); +} + +return implode('', array_reverse($erasedContent)); +} + +private function getDisplayLength(string $text): int +{ +return Helper::width(Helper::removeDecoration($this->getFormatter(), str_replace("\t", ' ', $text))); +} +} diff --git a/composer/vendor/symfony/console/Output/NullOutput.php b/composer/vendor/symfony/console/Output/NullOutput.php new file mode 100644 index 000000000..4f9f721c7 --- /dev/null +++ b/composer/vendor/symfony/console/Output/NullOutput.php @@ -0,0 +1,128 @@ +formatter) { +return $this->formatter; +} + +return $this->formatter = new NullOutputFormatter(); +} + + + + +public function setDecorated(bool $decorated) +{ + +} + + + + +public function isDecorated() +{ +return false; +} + + + + +public function setVerbosity(int $level) +{ + +} + + + + +public function getVerbosity() +{ +return self::VERBOSITY_QUIET; +} + + + + +public function isQuiet() +{ +return true; +} + + + + +public function isVerbose() +{ +return false; +} + + + + +public function isVeryVerbose() +{ +return false; +} + + + + +public function isDebug() +{ +return false; +} + + + + +public function writeln($messages, int $options = self::OUTPUT_NORMAL) +{ + +} + + + + +public function write($messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) +{ + +} +} diff --git a/composer/vendor/symfony/console/Output/Output.php b/composer/vendor/symfony/console/Output/Output.php new file mode 100644 index 000000000..8be0b7167 --- /dev/null +++ b/composer/vendor/symfony/console/Output/Output.php @@ -0,0 +1,174 @@ +verbosity = $verbosity ?? self::VERBOSITY_NORMAL; +$this->formatter = $formatter ?? new OutputFormatter(); +$this->formatter->setDecorated($decorated); +} + + + + +public function setFormatter(OutputFormatterInterface $formatter) +{ +$this->formatter = $formatter; +} + + + + +public function getFormatter() +{ +return $this->formatter; +} + + + + +public function setDecorated(bool $decorated) +{ +$this->formatter->setDecorated($decorated); +} + + + + +public function isDecorated() +{ +return $this->formatter->isDecorated(); +} + + + + +public function setVerbosity(int $level) +{ +$this->verbosity = $level; +} + + + + +public function getVerbosity() +{ +return $this->verbosity; +} + + + + +public function isQuiet() +{ +return self::VERBOSITY_QUIET === $this->verbosity; +} + + + + +public function isVerbose() +{ +return self::VERBOSITY_VERBOSE <= $this->verbosity; +} + + + + +public function isVeryVerbose() +{ +return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; +} + + + + +public function isDebug() +{ +return self::VERBOSITY_DEBUG <= $this->verbosity; +} + + + + +public function writeln($messages, int $options = self::OUTPUT_NORMAL) +{ +$this->write($messages, true, $options); +} + + + + +public function write($messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) +{ +if (!is_iterable($messages)) { +$messages = [$messages]; +} + +$types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN; +$type = $types & $options ?: self::OUTPUT_NORMAL; + +$verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG; +$verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL; + +if ($verbosity > $this->getVerbosity()) { +return; +} + +foreach ($messages as $message) { +switch ($type) { +case OutputInterface::OUTPUT_NORMAL: +$message = $this->formatter->format($message); +break; +case OutputInterface::OUTPUT_RAW: +break; +case OutputInterface::OUTPUT_PLAIN: +$message = strip_tags($this->formatter->format($message)); +break; +} + +$this->doWrite($message ?? '', $newline); +} +} + + + + +abstract protected function doWrite(string $message, bool $newline); +} diff --git a/composer/vendor/symfony/console/Output/OutputInterface.php b/composer/vendor/symfony/console/Output/OutputInterface.php new file mode 100644 index 000000000..09b6470cf --- /dev/null +++ b/composer/vendor/symfony/console/Output/OutputInterface.php @@ -0,0 +1,110 @@ +stream = $stream; + +if (null === $decorated) { +$decorated = $this->hasColorSupport(); +} + +parent::__construct($verbosity, $decorated, $formatter); +} + + + + + + +public function getStream() +{ +return $this->stream; +} + + + + +protected function doWrite(string $message, bool $newline) +{ +if ($newline) { +$message .= \PHP_EOL; +} + +@fwrite($this->stream, $message); + +fflush($this->stream); +} + + + + + + + + + + + + + + +protected function hasColorSupport() +{ + +if (isset($_SERVER['NO_COLOR']) || false !== getenv('NO_COLOR')) { +return false; +} + +if ('Hyper' === getenv('TERM_PROGRAM')) { +return true; +} + +if (\DIRECTORY_SEPARATOR === '\\') { +return (\function_exists('sapi_windows_vt100_support') +&& @sapi_windows_vt100_support($this->stream)) +|| false !== getenv('ANSICON') +|| 'ON' === getenv('ConEmuANSI') +|| 'xterm' === getenv('TERM'); +} + +return stream_isatty($this->stream); +} +} diff --git a/composer/vendor/symfony/console/Output/TrimmedBufferOutput.php b/composer/vendor/symfony/console/Output/TrimmedBufferOutput.php new file mode 100644 index 000000000..1caa084d9 --- /dev/null +++ b/composer/vendor/symfony/console/Output/TrimmedBufferOutput.php @@ -0,0 +1,63 @@ +maxLength = $maxLength; +} + + + + + + +public function fetch() +{ +$content = $this->buffer; +$this->buffer = ''; + +return $content; +} + + + + +protected function doWrite(string $message, bool $newline) +{ +$this->buffer .= $message; + +if ($newline) { +$this->buffer .= \PHP_EOL; +} + +$this->buffer = substr($this->buffer, 0 - $this->maxLength); +} +} diff --git a/composer/vendor/symfony/console/Question/ChoiceQuestion.php b/composer/vendor/symfony/console/Question/ChoiceQuestion.php new file mode 100644 index 000000000..f41765c30 --- /dev/null +++ b/composer/vendor/symfony/console/Question/ChoiceQuestion.php @@ -0,0 +1,183 @@ + '; +private $errorMessage = 'Value "%s" is invalid'; + + + + + + +public function __construct(string $question, array $choices, $default = null) +{ +if (!$choices) { +throw new \LogicException('Choice question must have at least 1 choice available.'); +} + +parent::__construct($question, $default); + +$this->choices = $choices; +$this->setValidator($this->getDefaultValidator()); +$this->setAutocompleterValues($choices); +} + + + + + + +public function getChoices() +{ +return $this->choices; +} + + + + + + + + +public function setMultiselect(bool $multiselect) +{ +$this->multiselect = $multiselect; +$this->setValidator($this->getDefaultValidator()); + +return $this; +} + + + + + + +public function isMultiselect() +{ +return $this->multiselect; +} + + + + + + +public function getPrompt() +{ +return $this->prompt; +} + + + + + + +public function setPrompt(string $prompt) +{ +$this->prompt = $prompt; + +return $this; +} + + + + + + + + +public function setErrorMessage(string $errorMessage) +{ +$this->errorMessage = $errorMessage; +$this->setValidator($this->getDefaultValidator()); + +return $this; +} + +private function getDefaultValidator(): callable +{ +$choices = $this->choices; +$errorMessage = $this->errorMessage; +$multiselect = $this->multiselect; +$isAssoc = $this->isAssoc($choices); + +return function ($selected) use ($choices, $errorMessage, $multiselect, $isAssoc) { +if ($multiselect) { + +if (!preg_match('/^[^,]+(?:,[^,]+)*$/', (string) $selected, $matches)) { +throw new InvalidArgumentException(sprintf($errorMessage, $selected)); +} + +$selectedChoices = explode(',', (string) $selected); +} else { +$selectedChoices = [$selected]; +} + +if ($this->isTrimmable()) { +foreach ($selectedChoices as $k => $v) { +$selectedChoices[$k] = trim((string) $v); +} +} + +$multiselectChoices = []; +foreach ($selectedChoices as $value) { +$results = []; +foreach ($choices as $key => $choice) { +if ($choice === $value) { +$results[] = $key; +} +} + +if (\count($results) > 1) { +throw new InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of "%s".', implode('" or "', $results))); +} + +$result = array_search($value, $choices); + +if (!$isAssoc) { +if (false !== $result) { +$result = $choices[$result]; +} elseif (isset($choices[$value])) { +$result = $choices[$value]; +} +} elseif (false === $result && isset($choices[$value])) { +$result = $value; +} + +if (false === $result) { +throw new InvalidArgumentException(sprintf($errorMessage, $value)); +} + + +$multiselectChoices[] = $isAssoc ? (string) $result : $result; +} + +if ($multiselect) { +return $multiselectChoices; +} + +return current($multiselectChoices); +}; +} +} diff --git a/composer/vendor/symfony/console/Question/ConfirmationQuestion.php b/composer/vendor/symfony/console/Question/ConfirmationQuestion.php new file mode 100644 index 000000000..2d02f80f0 --- /dev/null +++ b/composer/vendor/symfony/console/Question/ConfirmationQuestion.php @@ -0,0 +1,57 @@ +trueAnswerRegex = $trueAnswerRegex; +$this->setNormalizer($this->getDefaultNormalizer()); +} + + + + +private function getDefaultNormalizer(): callable +{ +$default = $this->getDefault(); +$regex = $this->trueAnswerRegex; + +return function ($answer) use ($default, $regex) { +if (\is_bool($answer)) { +return $answer; +} + +$answerIsTrue = (bool) preg_match($regex, $answer); +if (false === $default) { +return $answer && $answerIsTrue; +} + +return '' === $answer || $answerIsTrue; +}; +} +} diff --git a/composer/vendor/symfony/console/Question/Question.php b/composer/vendor/symfony/console/Question/Question.php new file mode 100644 index 000000000..2e3012dd3 --- /dev/null +++ b/composer/vendor/symfony/console/Question/Question.php @@ -0,0 +1,299 @@ +question = $question; +$this->default = $default; +} + + + + + + +public function getQuestion() +{ +return $this->question; +} + + + + + + +public function getDefault() +{ +return $this->default; +} + + + + +public function isMultiline(): bool +{ +return $this->multiline; +} + + + + + + +public function setMultiline(bool $multiline): self +{ +$this->multiline = $multiline; + +return $this; +} + + + + + + +public function isHidden() +{ +return $this->hidden; +} + + + + + + + + +public function setHidden(bool $hidden) +{ +if ($this->autocompleterCallback) { +throw new LogicException('A hidden question cannot use the autocompleter.'); +} + +$this->hidden = $hidden; + +return $this; +} + + + + + + +public function isHiddenFallback() +{ +return $this->hiddenFallback; +} + + + + + + +public function setHiddenFallback(bool $fallback) +{ +$this->hiddenFallback = $fallback; + +return $this; +} + + + + + + +public function getAutocompleterValues() +{ +$callback = $this->getAutocompleterCallback(); + +return $callback ? $callback('') : null; +} + + + + + + + + +public function setAutocompleterValues(?iterable $values) +{ +if (\is_array($values)) { +$values = $this->isAssoc($values) ? array_merge(array_keys($values), array_values($values)) : array_values($values); + +$callback = static function () use ($values) { +return $values; +}; +} elseif ($values instanceof \Traversable) { +$valueCache = null; +$callback = static function () use ($values, &$valueCache) { +return $valueCache ?? $valueCache = iterator_to_array($values, false); +}; +} else { +$callback = null; +} + +return $this->setAutocompleterCallback($callback); +} + + + + +public function getAutocompleterCallback(): ?callable +{ +return $this->autocompleterCallback; +} + + + + + + + + +public function setAutocompleterCallback(callable $callback = null): self +{ +if ($this->hidden && null !== $callback) { +throw new LogicException('A hidden question cannot use the autocompleter.'); +} + +$this->autocompleterCallback = $callback; + +return $this; +} + + + + + + +public function setValidator(callable $validator = null) +{ +$this->validator = $validator; + +return $this; +} + + + + + + +public function getValidator() +{ +return $this->validator; +} + + + + + + + + + + +public function setMaxAttempts(?int $attempts) +{ +if (null !== $attempts && $attempts < 1) { +throw new InvalidArgumentException('Maximum number of attempts must be a positive value.'); +} + +$this->attempts = $attempts; + +return $this; +} + + + + + + + + +public function getMaxAttempts() +{ +return $this->attempts; +} + + + + + + + + +public function setNormalizer(callable $normalizer) +{ +$this->normalizer = $normalizer; + +return $this; +} + + + + + + + + +public function getNormalizer() +{ +return $this->normalizer; +} + +protected function isAssoc(array $array) +{ +return (bool) \count(array_filter(array_keys($array), 'is_string')); +} + +public function isTrimmable(): bool +{ +return $this->trimmable; +} + + + + +public function setTrimmable(bool $trimmable): self +{ +$this->trimmable = $trimmable; + +return $this; +} +} diff --git a/composer/vendor/symfony/console/Resources/bin/hiddeninput.exe b/composer/vendor/symfony/console/Resources/bin/hiddeninput.exe new file mode 100644 index 0000000000000000000000000000000000000000..c8cf65e8d819e6e525121cf6b21f1c2429746038 GIT binary patch literal 9216 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 J0sQ~1{4brj`U(I5 literal 0 HcmV?d00001 diff --git a/composer/vendor/symfony/console/Resources/completion.bash b/composer/vendor/symfony/console/Resources/completion.bash new file mode 100644 index 000000000..64b87ccf7 --- /dev/null +++ b/composer/vendor/symfony/console/Resources/completion.bash @@ -0,0 +1,84 @@ +# This file is part of the Symfony package. +# +# (c) Fabien Potencier +# +# For the full copyright and license information, please view +# https://symfony.com/doc/current/contributing/code/license.html + +_sf_{{ COMMAND_NAME }}() { + # Use newline as only separator to allow space in completion values + IFS=$'\n' + local sf_cmd="${COMP_WORDS[0]}" + + # for an alias, get the real script behind it + sf_cmd_type=$(type -t $sf_cmd) + if [[ $sf_cmd_type == "alias" ]]; then + sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") + elif [[ $sf_cmd_type == "file" ]]; then + sf_cmd=$(type -p $sf_cmd) + fi + + if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then + return 1 + fi + + local cur prev words cword + _get_comp_words_by_ref -n := cur prev words cword + + local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-S{{ VERSION }}") + for w in ${words[@]}; do + w=$(printf -- '%b' "$w") + # remove quotes from typed values + quote="${w:0:1}" + if [ "$quote" == \' ]; then + w="${w%\'}" + w="${w#\'}" + elif [ "$quote" == \" ]; then + w="${w%\"}" + w="${w#\"}" + fi + # empty values are ignored + if [ ! -z "$w" ]; then + completecmd+=("-i$w") + fi + done + + local sfcomplete + if sfcomplete=$(${completecmd[@]} 2>&1); then + local quote suggestions + quote=${cur:0:1} + + # Use single quotes by default if suggestions contains backslash (FQCN) + if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then + quote=\' + fi + + if [ "$quote" == \' ]; then + # single quotes: no additional escaping (does not accept ' in values) + suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) + elif [ "$quote" == \" ]; then + # double quotes: double escaping for \ $ ` " + suggestions=$(for s in $sfcomplete; do + s=${s//\\/\\\\} + s=${s//\$/\\\$} + s=${s//\`/\\\`} + s=${s//\"/\\\"} + printf $'%q%q%q\n' "$quote" "$s" "$quote"; + done) + else + # no quotes: double escaping + suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done) + fi + COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur"))) + __ltrim_colon_completions "$cur" + else + if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then + >&2 echo + >&2 echo $sfcomplete + fi + + return 1 + fi +} + +complete -F _sf_{{ COMMAND_NAME }} {{ COMMAND_NAME }} diff --git a/composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php b/composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php new file mode 100644 index 000000000..ee9419e38 --- /dev/null +++ b/composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php @@ -0,0 +1,65 @@ +signalHandlers[$signal])) { +$previousCallback = pcntl_signal_get_handler($signal); + +if (\is_callable($previousCallback)) { +$this->signalHandlers[$signal][] = $previousCallback; +} +} + +$this->signalHandlers[$signal][] = $signalHandler; + +pcntl_signal($signal, [$this, 'handle']); +} + +public static function isSupported(): bool +{ +if (!\function_exists('pcntl_signal')) { +return false; +} + +if (\in_array('pcntl_signal', explode(',', \ini_get('disable_functions')))) { +return false; +} + +return true; +} + + + + +public function handle(int $signal): void +{ +$count = \count($this->signalHandlers[$signal]); + +foreach ($this->signalHandlers[$signal] as $i => $signalHandler) { +$hasNext = $i !== $count - 1; +$signalHandler($signal, $hasNext); +} +} +} diff --git a/composer/vendor/symfony/console/SingleCommandApplication.php b/composer/vendor/symfony/console/SingleCommandApplication.php new file mode 100644 index 000000000..765bc9743 --- /dev/null +++ b/composer/vendor/symfony/console/SingleCommandApplication.php @@ -0,0 +1,72 @@ +version = $version; + +return $this; +} + + + + + + +public function setAutoExit(bool $autoExit): self +{ +$this->autoExit = $autoExit; + +return $this; +} + +public function run(InputInterface $input = null, OutputInterface $output = null): int +{ +if ($this->running) { +return parent::run($input, $output); +} + + +$application = new Application($this->getName() ?: 'UNKNOWN', $this->version); +$application->setAutoExit($this->autoExit); + +$this->setName($_SERVER['argv'][0]); +$application->add($this); +$application->setDefaultCommand($this->getName(), true); + +$this->running = true; +try { +$ret = $application->run($input, $output); +} finally { +$this->running = false; +} + +return $ret ?? 1; +} +} diff --git a/composer/vendor/symfony/console/Style/OutputStyle.php b/composer/vendor/symfony/console/Style/OutputStyle.php new file mode 100644 index 000000000..ebb7659aa --- /dev/null +++ b/composer/vendor/symfony/console/Style/OutputStyle.php @@ -0,0 +1,153 @@ +output = $output; +} + + + + +public function newLine(int $count = 1) +{ +$this->output->write(str_repeat(\PHP_EOL, $count)); +} + + + + +public function createProgressBar(int $max = 0) +{ +return new ProgressBar($this->output, $max); +} + + + + +public function write($messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) +{ +$this->output->write($messages, $newline, $type); +} + + + + +public function writeln($messages, int $type = self::OUTPUT_NORMAL) +{ +$this->output->writeln($messages, $type); +} + + + + +public function setVerbosity(int $level) +{ +$this->output->setVerbosity($level); +} + + + + +public function getVerbosity() +{ +return $this->output->getVerbosity(); +} + + + + +public function setDecorated(bool $decorated) +{ +$this->output->setDecorated($decorated); +} + + + + +public function isDecorated() +{ +return $this->output->isDecorated(); +} + + + + +public function setFormatter(OutputFormatterInterface $formatter) +{ +$this->output->setFormatter($formatter); +} + + + + +public function getFormatter() +{ +return $this->output->getFormatter(); +} + + + + +public function isQuiet() +{ +return $this->output->isQuiet(); +} + + + + +public function isVerbose() +{ +return $this->output->isVerbose(); +} + + + + +public function isVeryVerbose() +{ +return $this->output->isVeryVerbose(); +} + + + + +public function isDebug() +{ +return $this->output->isDebug(); +} + +protected function getErrorOutput() +{ +if (!$this->output instanceof ConsoleOutputInterface) { +return $this->output; +} + +return $this->output->getErrorOutput(); +} +} diff --git a/composer/vendor/symfony/console/Style/StyleInterface.php b/composer/vendor/symfony/console/Style/StyleInterface.php new file mode 100644 index 000000000..b9e112b4f --- /dev/null +++ b/composer/vendor/symfony/console/Style/StyleInterface.php @@ -0,0 +1,132 @@ +input = $input; +$this->bufferedOutput = new TrimmedBufferOutput(\DIRECTORY_SEPARATOR === '\\' ? 4 : 2, $output->getVerbosity(), false, clone $output->getFormatter()); + +$width = (new Terminal())->getWidth() ?: self::MAX_LINE_LENGTH; +$this->lineLength = min($width - (int) (\DIRECTORY_SEPARATOR === '\\'), self::MAX_LINE_LENGTH); + +parent::__construct($this->output = $output); +} + + + + + + +public function block($messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = true) +{ +$messages = \is_array($messages) ? array_values($messages) : [$messages]; + +$this->autoPrependBlock(); +$this->writeln($this->createBlock($messages, $type, $style, $prefix, $padding, $escape)); +$this->newLine(); +} + + + + +public function title(string $message) +{ +$this->autoPrependBlock(); +$this->writeln([ +sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), +sprintf('%s', str_repeat('=', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), +]); +$this->newLine(); +} + + + + +public function section(string $message) +{ +$this->autoPrependBlock(); +$this->writeln([ +sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), +sprintf('%s', str_repeat('-', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), +]); +$this->newLine(); +} + + + + +public function listing(array $elements) +{ +$this->autoPrependText(); +$elements = array_map(function ($element) { +return sprintf(' * %s', $element); +}, $elements); + +$this->writeln($elements); +$this->newLine(); +} + + + + +public function text($message) +{ +$this->autoPrependText(); + +$messages = \is_array($message) ? array_values($message) : [$message]; +foreach ($messages as $message) { +$this->writeln(sprintf(' %s', $message)); +} +} + + + + + + +public function comment($message) +{ +$this->block($message, null, null, ' // ', false, false); +} + + + + +public function success($message) +{ +$this->block($message, 'OK', 'fg=black;bg=green', ' ', true); +} + + + + +public function error($message) +{ +$this->block($message, 'ERROR', 'fg=white;bg=red', ' ', true); +} + + + + +public function warning($message) +{ +$this->block($message, 'WARNING', 'fg=black;bg=yellow', ' ', true); +} + + + + +public function note($message) +{ +$this->block($message, 'NOTE', 'fg=yellow', ' ! '); +} + + + + + + +public function info($message) +{ +$this->block($message, 'INFO', 'fg=green', ' ', true); +} + + + + +public function caution($message) +{ +$this->block($message, 'CAUTION', 'fg=white;bg=red', ' ! ', true); +} + + + + +public function table(array $headers, array $rows) +{ +$this->createTable() +->setHeaders($headers) +->setRows($rows) +->render() +; + +$this->newLine(); +} + + + + +public function horizontalTable(array $headers, array $rows) +{ +$this->createTable() +->setHorizontal(true) +->setHeaders($headers) +->setRows($rows) +->render() +; + +$this->newLine(); +} + + + + + + + + + + + +public function definitionList(...$list) +{ +$headers = []; +$row = []; +foreach ($list as $value) { +if ($value instanceof TableSeparator) { +$headers[] = $value; +$row[] = $value; +continue; +} +if (\is_string($value)) { +$headers[] = new TableCell($value, ['colspan' => 2]); +$row[] = null; +continue; +} +if (!\is_array($value)) { +throw new InvalidArgumentException('Value should be an array, string, or an instance of TableSeparator.'); +} +$headers[] = key($value); +$row[] = current($value); +} + +$this->horizontalTable($headers, [$row]); +} + + + + +public function ask(string $question, string $default = null, callable $validator = null) +{ +$question = new Question($question, $default); +$question->setValidator($validator); + +return $this->askQuestion($question); +} + + + + +public function askHidden(string $question, callable $validator = null) +{ +$question = new Question($question); + +$question->setHidden(true); +$question->setValidator($validator); + +return $this->askQuestion($question); +} + + + + +public function confirm(string $question, bool $default = true) +{ +return $this->askQuestion(new ConfirmationQuestion($question, $default)); +} + + + + +public function choice(string $question, array $choices, $default = null) +{ +if (null !== $default) { +$values = array_flip($choices); +$default = $values[$default] ?? $default; +} + +return $this->askQuestion(new ChoiceQuestion($question, $choices, $default)); +} + + + + +public function progressStart(int $max = 0) +{ +$this->progressBar = $this->createProgressBar($max); +$this->progressBar->start(); +} + + + + +public function progressAdvance(int $step = 1) +{ +$this->getProgressBar()->advance($step); +} + + + + +public function progressFinish() +{ +$this->getProgressBar()->finish(); +$this->newLine(2); +$this->progressBar = null; +} + + + + +public function createProgressBar(int $max = 0) +{ +$progressBar = parent::createProgressBar($max); + +if ('\\' !== \DIRECTORY_SEPARATOR || 'Hyper' === getenv('TERM_PROGRAM')) { +$progressBar->setEmptyBarCharacter('░'); +$progressBar->setProgressCharacter(''); +$progressBar->setBarCharacter('▓'); +} + +return $progressBar; +} + + + + +public function progressIterate(iterable $iterable, int $max = null): iterable +{ +yield from $this->createProgressBar()->iterate($iterable, $max); + +$this->newLine(2); +} + + + + +public function askQuestion(Question $question) +{ +if ($this->input->isInteractive()) { +$this->autoPrependBlock(); +} + +if (!$this->questionHelper) { +$this->questionHelper = new SymfonyQuestionHelper(); +} + +$answer = $this->questionHelper->ask($this->input, $this, $question); + +if ($this->input->isInteractive()) { +$this->newLine(); +$this->bufferedOutput->write("\n"); +} + +return $answer; +} + + + + +public function writeln($messages, int $type = self::OUTPUT_NORMAL) +{ +if (!is_iterable($messages)) { +$messages = [$messages]; +} + +foreach ($messages as $message) { +parent::writeln($message, $type); +$this->writeBuffer($message, true, $type); +} +} + + + + +public function write($messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) +{ +if (!is_iterable($messages)) { +$messages = [$messages]; +} + +foreach ($messages as $message) { +parent::write($message, $newline, $type); +$this->writeBuffer($message, $newline, $type); +} +} + + + + +public function newLine(int $count = 1) +{ +parent::newLine($count); +$this->bufferedOutput->write(str_repeat("\n", $count)); +} + + + + + + +public function getErrorStyle() +{ +return new self($this->input, $this->getErrorOutput()); +} + +public function createTable(): Table +{ +$output = $this->output instanceof ConsoleOutputInterface ? $this->output->section() : $this->output; +$style = clone Table::getStyleDefinition('symfony-style-guide'); +$style->setCellHeaderFormat('%s'); + +return (new Table($output))->setStyle($style); +} + +private function getProgressBar(): ProgressBar +{ +if (!$this->progressBar) { +throw new RuntimeException('The ProgressBar is not started.'); +} + +return $this->progressBar; +} + +private function autoPrependBlock(): void +{ +$chars = substr(str_replace(\PHP_EOL, "\n", $this->bufferedOutput->fetch()), -2); + +if (!isset($chars[0])) { +$this->newLine(); + +return; +} + +$this->newLine(2 - substr_count($chars, "\n")); +} + +private function autoPrependText(): void +{ +$fetched = $this->bufferedOutput->fetch(); + +if (!str_ends_with($fetched, "\n")) { +$this->newLine(); +} +} + +private function writeBuffer(string $message, bool $newLine, int $type): void +{ + +$this->bufferedOutput->write($message, $newLine, $type); +} + +private function createBlock(iterable $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = false): array +{ +$indentLength = 0; +$prefixLength = Helper::width(Helper::removeDecoration($this->getFormatter(), $prefix)); +$lines = []; + +if (null !== $type) { +$type = sprintf('[%s] ', $type); +$indentLength = \strlen($type); +$lineIndentation = str_repeat(' ', $indentLength); +} + + +foreach ($messages as $key => $message) { +if ($escape) { +$message = OutputFormatter::escape($message); +} + +$decorationLength = Helper::width($message) - Helper::width(Helper::removeDecoration($this->getFormatter(), $message)); +$messageLineLength = min($this->lineLength - $prefixLength - $indentLength + $decorationLength, $this->lineLength); +$messageLines = explode(\PHP_EOL, wordwrap($message, $messageLineLength, \PHP_EOL, true)); +foreach ($messageLines as $messageLine) { +$lines[] = $messageLine; +} + +if (\count($messages) > 1 && $key < \count($messages) - 1) { +$lines[] = ''; +} +} + +$firstLineIndex = 0; +if ($padding && $this->isDecorated()) { +$firstLineIndex = 1; +array_unshift($lines, ''); +$lines[] = ''; +} + +foreach ($lines as $i => &$line) { +if (null !== $type) { +$line = $firstLineIndex === $i ? $type.$line : $lineIndentation.$line; +} + +$line = $prefix.$line; +$line .= str_repeat(' ', max($this->lineLength - Helper::width(Helper::removeDecoration($this->getFormatter(), $line)), 0)); + +if ($style) { +$line = sprintf('<%s>%s', $style, $line); +} +} + +return $lines; +} +} diff --git a/composer/vendor/symfony/console/Terminal.php b/composer/vendor/symfony/console/Terminal.php new file mode 100644 index 000000000..f9d26a38d --- /dev/null +++ b/composer/vendor/symfony/console/Terminal.php @@ -0,0 +1,172 @@ +&1', $output, $exitcode); + +return self::$stty = 0 === $exitcode; +} + +private static function initDimensions() +{ +if ('\\' === \DIRECTORY_SEPARATOR) { +if (preg_match('/^(\d+)x(\d+)(?: \((\d+)x(\d+)\))?$/', trim(getenv('ANSICON')), $matches)) { + + +self::$width = (int) $matches[1]; +self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; +} elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { + + +self::initDimensionsUsingStty(); +} elseif (null !== $dimensions = self::getConsoleMode()) { + +self::$width = (int) $dimensions[0]; +self::$height = (int) $dimensions[1]; +} +} else { +self::initDimensionsUsingStty(); +} +} + + + + +private static function hasVt100Support(): bool +{ +return \function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(fopen('php://stdout', 'w')); +} + + + + +private static function initDimensionsUsingStty() +{ +if ($sttyString = self::getSttyColumns()) { +if (preg_match('/rows.(\d+);.columns.(\d+);/i', $sttyString, $matches)) { + +self::$width = (int) $matches[2]; +self::$height = (int) $matches[1]; +} elseif (preg_match('/;.(\d+).rows;.(\d+).columns/i', $sttyString, $matches)) { + +self::$width = (int) $matches[2]; +self::$height = (int) $matches[1]; +} +} +} + + + + + + +private static function getConsoleMode(): ?array +{ +$info = self::readFromProcess('mode CON'); + +if (null === $info || !preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { +return null; +} + +return [(int) $matches[2], (int) $matches[1]]; +} + + + + +private static function getSttyColumns(): ?string +{ +return self::readFromProcess('stty -a | grep columns'); +} + +private static function readFromProcess(string $command): ?string +{ +if (!\function_exists('proc_open')) { +return null; +} + +$descriptorspec = [ +1 => ['pipe', 'w'], +2 => ['pipe', 'w'], +]; + +$process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true]); +if (!\is_resource($process)) { +return null; +} + +$info = stream_get_contents($pipes[1]); +fclose($pipes[1]); +fclose($pipes[2]); +proc_close($process); + +return $info; +} +} diff --git a/composer/vendor/symfony/console/Tester/ApplicationTester.php b/composer/vendor/symfony/console/Tester/ApplicationTester.php new file mode 100644 index 000000000..f82017508 --- /dev/null +++ b/composer/vendor/symfony/console/Tester/ApplicationTester.php @@ -0,0 +1,85 @@ +application = $application; +} + + + + + + + + + + + + + +public function run(array $input, array $options = []) +{ +$prevShellVerbosity = getenv('SHELL_VERBOSITY'); + +try { +$this->input = new ArrayInput($input); +if (isset($options['interactive'])) { +$this->input->setInteractive($options['interactive']); +} + +if ($this->inputs) { +$this->input->setStream(self::createStream($this->inputs)); +} + +$this->initOutput($options); + +return $this->statusCode = $this->application->run($this->input, $this->output); +} finally { + + +if (false === $prevShellVerbosity) { +if (\function_exists('putenv')) { +@putenv('SHELL_VERBOSITY'); +} +unset($_ENV['SHELL_VERBOSITY']); +unset($_SERVER['SHELL_VERBOSITY']); +} else { +if (\function_exists('putenv')) { +@putenv('SHELL_VERBOSITY='.$prevShellVerbosity); +} +$_ENV['SHELL_VERBOSITY'] = $prevShellVerbosity; +$_SERVER['SHELL_VERBOSITY'] = $prevShellVerbosity; +} +} +} +} diff --git a/composer/vendor/symfony/console/Tester/CommandCompletionTester.php b/composer/vendor/symfony/console/Tester/CommandCompletionTester.php new file mode 100644 index 000000000..85d68522b --- /dev/null +++ b/composer/vendor/symfony/console/Tester/CommandCompletionTester.php @@ -0,0 +1,56 @@ +command = $command; +} + + + + +public function complete(array $input): array +{ +$currentIndex = \count($input); +if ('' === end($input)) { +array_pop($input); +} +array_unshift($input, $this->command->getName()); + +$completionInput = CompletionInput::fromTokens($input, $currentIndex); +$completionInput->bind($this->command->getDefinition()); +$suggestions = new CompletionSuggestions(); + +$this->command->complete($completionInput, $suggestions); + +$options = []; +foreach ($suggestions->getOptionSuggestions() as $option) { +$options[] = '--'.$option->getName(); +} + +return array_map('strval', array_merge($options, $suggestions->getValueSuggestions())); +} +} diff --git a/composer/vendor/symfony/console/Tester/CommandTester.php b/composer/vendor/symfony/console/Tester/CommandTester.php new file mode 100644 index 000000000..926b45b96 --- /dev/null +++ b/composer/vendor/symfony/console/Tester/CommandTester.php @@ -0,0 +1,76 @@ +command = $command; +} + + + + + + + + + + + + + + + + +public function execute(array $input, array $options = []) +{ + + +if (!isset($input['command']) +&& (null !== $application = $this->command->getApplication()) +&& $application->getDefinition()->hasArgument('command') +) { +$input = array_merge(['command' => $this->command->getName()], $input); +} + +$this->input = new ArrayInput($input); + +$this->input->setStream(self::createStream($this->inputs)); + +if (isset($options['interactive'])) { +$this->input->setInteractive($options['interactive']); +} + +if (!isset($options['decorated'])) { +$options['decorated'] = false; +} + +$this->initOutput($options); + +return $this->statusCode = $this->command->run($this->input, $this->output); +} +} diff --git a/composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php b/composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php new file mode 100644 index 000000000..5a31054e9 --- /dev/null +++ b/composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php @@ -0,0 +1,55 @@ +toString(); +} + + + + +protected function additionalFailureDescription($other): string +{ +$mapping = [ +Command::FAILURE => 'Command failed.', +Command::INVALID => 'Command was invalid.', +]; + +return $mapping[$other] ?? sprintf('Command returned exit status %d.', $other); +} +} diff --git a/composer/vendor/symfony/console/Tester/TesterTrait.php b/composer/vendor/symfony/console/Tester/TesterTrait.php new file mode 100644 index 000000000..b318ce209 --- /dev/null +++ b/composer/vendor/symfony/console/Tester/TesterTrait.php @@ -0,0 +1,197 @@ +output) { +throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); +} + +rewind($this->output->getStream()); + +$display = stream_get_contents($this->output->getStream()); + +if ($normalize) { +$display = str_replace(\PHP_EOL, "\n", $display); +} + +return $display; +} + + + + + + + + +public function getErrorOutput(bool $normalize = false) +{ +if (!$this->captureStreamsIndependently) { +throw new \LogicException('The error output is not available when the tester is run without "capture_stderr_separately" option set.'); +} + +rewind($this->output->getErrorOutput()->getStream()); + +$display = stream_get_contents($this->output->getErrorOutput()->getStream()); + +if ($normalize) { +$display = str_replace(\PHP_EOL, "\n", $display); +} + +return $display; +} + + + + + + +public function getInput() +{ +return $this->input; +} + + + + + + +public function getOutput() +{ +return $this->output; +} + + + + + + + + +public function getStatusCode() +{ +if (null === $this->statusCode) { +throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the status code?'); +} + +return $this->statusCode; +} + +public function assertCommandIsSuccessful(string $message = ''): void +{ +Assert::assertThat($this->statusCode, new CommandIsSuccessful(), $message); +} + + + + + + + + + +public function setInputs(array $inputs) +{ +$this->inputs = $inputs; + +return $this; +} + + + + + + + + + + +private function initOutput(array $options) +{ +$this->captureStreamsIndependently = \array_key_exists('capture_stderr_separately', $options) && $options['capture_stderr_separately']; +if (!$this->captureStreamsIndependently) { +$this->output = new StreamOutput(fopen('php://memory', 'w', false)); +if (isset($options['decorated'])) { +$this->output->setDecorated($options['decorated']); +} +if (isset($options['verbosity'])) { +$this->output->setVerbosity($options['verbosity']); +} +} else { +$this->output = new ConsoleOutput( +$options['verbosity'] ?? ConsoleOutput::VERBOSITY_NORMAL, +$options['decorated'] ?? null +); + +$errorOutput = new StreamOutput(fopen('php://memory', 'w', false)); +$errorOutput->setFormatter($this->output->getFormatter()); +$errorOutput->setVerbosity($this->output->getVerbosity()); +$errorOutput->setDecorated($this->output->isDecorated()); + +$reflectedOutput = new \ReflectionObject($this->output); +$strErrProperty = $reflectedOutput->getProperty('stderr'); +$strErrProperty->setAccessible(true); +$strErrProperty->setValue($this->output, $errorOutput); + +$reflectedParent = $reflectedOutput->getParentClass(); +$streamProperty = $reflectedParent->getProperty('stream'); +$streamProperty->setAccessible(true); +$streamProperty->setValue($this->output, fopen('php://memory', 'w', false)); +} +} + + + + +private static function createStream(array $inputs) +{ +$stream = fopen('php://memory', 'r+', false); + +foreach ($inputs as $input) { +fwrite($stream, $input.\PHP_EOL); +} + +rewind($stream); + +return $stream; +} +} diff --git a/composer/vendor/symfony/deprecation-contracts/LICENSE b/composer/vendor/symfony/deprecation-contracts/LICENSE new file mode 100644 index 000000000..3bbb6272b --- /dev/null +++ b/composer/vendor/symfony/deprecation-contracts/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2020-2022 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/composer/vendor/symfony/deprecation-contracts/function.php b/composer/vendor/symfony/deprecation-contracts/function.php new file mode 100644 index 000000000..6d79f5a83 --- /dev/null +++ b/composer/vendor/symfony/deprecation-contracts/function.php @@ -0,0 +1,27 @@ +path = $path; + +parent::__construct($message, $code, $previous); +} + + + + +public function getPath() +{ +return $this->path; +} +} diff --git a/composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php b/composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php new file mode 100644 index 000000000..86be832d7 --- /dev/null +++ b/composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php @@ -0,0 +1,27 @@ +mkdir(\dirname($targetFile)); + +$doCopy = true; +if (!$overwriteNewerFiles && null === parse_url($originFile, \PHP_URL_HOST) && is_file($targetFile)) { +$doCopy = filemtime($originFile) > filemtime($targetFile); +} + +if ($doCopy) { + +if (!$source = self::box('fopen', $originFile, 'r')) { +throw new IOException(sprintf('Failed to copy "%s" to "%s" because source file could not be opened for reading: ', $originFile, $targetFile).self::$lastError, 0, null, $originFile); +} + + +if (!$target = self::box('fopen', $targetFile, 'w', false, stream_context_create(['ftp' => ['overwrite' => true]]))) { +throw new IOException(sprintf('Failed to copy "%s" to "%s" because target file could not be opened for writing: ', $originFile, $targetFile).self::$lastError, 0, null, $originFile); +} + +$bytesCopied = stream_copy_to_stream($source, $target); +fclose($source); +fclose($target); +unset($source, $target); + +if (!is_file($targetFile)) { +throw new IOException(sprintf('Failed to copy "%s" to "%s".', $originFile, $targetFile), 0, null, $originFile); +} + +if ($originIsLocal) { + +self::box('chmod', $targetFile, fileperms($targetFile) | (fileperms($originFile) & 0111)); + +if ($bytesCopied !== $bytesOrigin = filesize($originFile)) { +throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s" (%g of %g bytes copied).', $originFile, $targetFile, $bytesCopied, $bytesOrigin), 0, null, $originFile); +} +} +} +} + + + + + + + + +public function mkdir($dirs, int $mode = 0777) +{ +foreach ($this->toIterable($dirs) as $dir) { +if (is_dir($dir)) { +continue; +} + +if (!self::box('mkdir', $dir, $mode, true) && !is_dir($dir)) { +throw new IOException(sprintf('Failed to create "%s": ', $dir).self::$lastError, 0, null, $dir); +} +} +} + + + + + + + + +public function exists($files) +{ +$maxPathLength = \PHP_MAXPATHLEN - 2; + +foreach ($this->toIterable($files) as $file) { +if (\strlen($file) > $maxPathLength) { +throw new IOException(sprintf('Could not check if file exist because path length exceeds %d characters.', $maxPathLength), 0, null, $file); +} + +if (!file_exists($file)) { +return false; +} +} + +return true; +} + + + + + + + + + + +public function touch($files, int $time = null, int $atime = null) +{ +foreach ($this->toIterable($files) as $file) { +if (!($time ? self::box('touch', $file, $time, $atime) : self::box('touch', $file))) { +throw new IOException(sprintf('Failed to touch "%s": ', $file).self::$lastError, 0, null, $file); +} +} +} + + + + + + + + +public function remove($files) +{ +if ($files instanceof \Traversable) { +$files = iterator_to_array($files, false); +} elseif (!\is_array($files)) { +$files = [$files]; +} + +self::doRemove($files, false); +} + +private static function doRemove(array $files, bool $isRecursive): void +{ +$files = array_reverse($files); +foreach ($files as $file) { +if (is_link($file)) { + +if (!(self::box('unlink', $file) || '\\' !== \DIRECTORY_SEPARATOR || self::box('rmdir', $file)) && file_exists($file)) { +throw new IOException(sprintf('Failed to remove symlink "%s": ', $file).self::$lastError); +} +} elseif (is_dir($file)) { +if (!$isRecursive) { +$tmpName = \dirname(realpath($file)).'/.'.strrev(strtr(base64_encode(random_bytes(2)), '/=', '-.')); + +if (file_exists($tmpName)) { +try { +self::doRemove([$tmpName], true); +} catch (IOException $e) { +} +} + +if (!file_exists($tmpName) && self::box('rename', $file, $tmpName)) { +$origFile = $file; +$file = $tmpName; +} else { +$origFile = null; +} +} + +$files = new \FilesystemIterator($file, \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS); +self::doRemove(iterator_to_array($files, true), true); + +if (!self::box('rmdir', $file) && file_exists($file) && !$isRecursive) { +$lastError = self::$lastError; + +if (null !== $origFile && self::box('rename', $file, $origFile)) { +$file = $origFile; +} + +throw new IOException(sprintf('Failed to remove directory "%s": ', $file).$lastError); +} +} elseif (!self::box('unlink', $file) && (str_contains(self::$lastError, 'Permission denied') || file_exists($file))) { +throw new IOException(sprintf('Failed to remove file "%s": ', $file).self::$lastError); +} +} +} + + + + + + + + + + + +public function chmod($files, int $mode, int $umask = 0000, bool $recursive = false) +{ +foreach ($this->toIterable($files) as $file) { +if ((\PHP_VERSION_ID < 80000 || \is_int($mode)) && !self::box('chmod', $file, $mode & ~$umask)) { +throw new IOException(sprintf('Failed to chmod file "%s": ', $file).self::$lastError, 0, null, $file); +} +if ($recursive && is_dir($file) && !is_link($file)) { +$this->chmod(new \FilesystemIterator($file), $mode, $umask, true); +} +} +} + + + + + + + + + + +public function chown($files, $user, bool $recursive = false) +{ +foreach ($this->toIterable($files) as $file) { +if ($recursive && is_dir($file) && !is_link($file)) { +$this->chown(new \FilesystemIterator($file), $user, true); +} +if (is_link($file) && \function_exists('lchown')) { +if (!self::box('lchown', $file, $user)) { +throw new IOException(sprintf('Failed to chown file "%s": ', $file).self::$lastError, 0, null, $file); +} +} else { +if (!self::box('chown', $file, $user)) { +throw new IOException(sprintf('Failed to chown file "%s": ', $file).self::$lastError, 0, null, $file); +} +} +} +} + + + + + + + + + + +public function chgrp($files, $group, bool $recursive = false) +{ +foreach ($this->toIterable($files) as $file) { +if ($recursive && is_dir($file) && !is_link($file)) { +$this->chgrp(new \FilesystemIterator($file), $group, true); +} +if (is_link($file) && \function_exists('lchgrp')) { +if (!self::box('lchgrp', $file, $group)) { +throw new IOException(sprintf('Failed to chgrp file "%s": ', $file).self::$lastError, 0, null, $file); +} +} else { +if (!self::box('chgrp', $file, $group)) { +throw new IOException(sprintf('Failed to chgrp file "%s": ', $file).self::$lastError, 0, null, $file); +} +} +} +} + + + + + + + +public function rename(string $origin, string $target, bool $overwrite = false) +{ + +if (!$overwrite && $this->isReadable($target)) { +throw new IOException(sprintf('Cannot rename because the target "%s" already exists.', $target), 0, null, $target); +} + +if (!self::box('rename', $origin, $target)) { +if (is_dir($origin)) { + +$this->mirror($origin, $target, null, ['override' => $overwrite, 'delete' => $overwrite]); +$this->remove($origin); + +return; +} +throw new IOException(sprintf('Cannot rename "%s" to "%s": ', $origin, $target).self::$lastError, 0, null, $target); +} +} + + + + + + +private function isReadable(string $filename): bool +{ +$maxPathLength = \PHP_MAXPATHLEN - 2; + +if (\strlen($filename) > $maxPathLength) { +throw new IOException(sprintf('Could not check if file is readable because path length exceeds %d characters.', $maxPathLength), 0, null, $filename); +} + +return is_readable($filename); +} + + + + + + +public function symlink(string $originDir, string $targetDir, bool $copyOnWindows = false) +{ +self::assertFunctionExists('symlink'); + +if ('\\' === \DIRECTORY_SEPARATOR) { +$originDir = strtr($originDir, '/', '\\'); +$targetDir = strtr($targetDir, '/', '\\'); + +if ($copyOnWindows) { +$this->mirror($originDir, $targetDir); + +return; +} +} + +$this->mkdir(\dirname($targetDir)); + +if (is_link($targetDir)) { +if (readlink($targetDir) === $originDir) { +return; +} +$this->remove($targetDir); +} + +if (!self::box('symlink', $originDir, $targetDir)) { +$this->linkException($originDir, $targetDir, 'symbolic'); +} +} + + + + + + + + + +public function hardlink(string $originFile, $targetFiles) +{ +self::assertFunctionExists('link'); + +if (!$this->exists($originFile)) { +throw new FileNotFoundException(null, 0, null, $originFile); +} + +if (!is_file($originFile)) { +throw new FileNotFoundException(sprintf('Origin file "%s" is not a file.', $originFile)); +} + +foreach ($this->toIterable($targetFiles) as $targetFile) { +if (is_file($targetFile)) { +if (fileinode($originFile) === fileinode($targetFile)) { +continue; +} +$this->remove($targetFile); +} + +if (!self::box('link', $originFile, $targetFile)) { +$this->linkException($originFile, $targetFile, 'hard'); +} +} +} + + + + +private function linkException(string $origin, string $target, string $linkType) +{ +if (self::$lastError) { +if ('\\' === \DIRECTORY_SEPARATOR && str_contains(self::$lastError, 'error code(1314)')) { +throw new IOException(sprintf('Unable to create "%s" link due to error code 1314: \'A required privilege is not held by the client\'. Do you have the required Administrator-rights?', $linkType), 0, null, $target); +} +} +throw new IOException(sprintf('Failed to create "%s" link from "%s" to "%s": ', $linkType, $origin, $target).self::$lastError, 0, null, $target); +} + + + + + + + + + + + + + + +public function readlink(string $path, bool $canonicalize = false) +{ +if (!$canonicalize && !is_link($path)) { +return null; +} + +if ($canonicalize) { +if (!$this->exists($path)) { +return null; +} + +if ('\\' === \DIRECTORY_SEPARATOR && \PHP_VERSION_ID < 70410) { +$path = readlink($path); +} + +return realpath($path); +} + +if ('\\' === \DIRECTORY_SEPARATOR && \PHP_VERSION_ID < 70400) { +return realpath($path); +} + +return readlink($path); +} + + + + + + +public function makePathRelative(string $endPath, string $startPath) +{ +if (!$this->isAbsolutePath($startPath)) { +throw new InvalidArgumentException(sprintf('The start path "%s" is not absolute.', $startPath)); +} + +if (!$this->isAbsolutePath($endPath)) { +throw new InvalidArgumentException(sprintf('The end path "%s" is not absolute.', $endPath)); +} + + +if ('\\' === \DIRECTORY_SEPARATOR) { +$endPath = str_replace('\\', '/', $endPath); +$startPath = str_replace('\\', '/', $startPath); +} + +$splitDriveLetter = function ($path) { +return (\strlen($path) > 2 && ':' === $path[1] && '/' === $path[2] && ctype_alpha($path[0])) +? [substr($path, 2), strtoupper($path[0])] +: [$path, null]; +}; + +$splitPath = function ($path) { +$result = []; + +foreach (explode('/', trim($path, '/')) as $segment) { +if ('..' === $segment) { +array_pop($result); +} elseif ('.' !== $segment && '' !== $segment) { +$result[] = $segment; +} +} + +return $result; +}; + +[$endPath, $endDriveLetter] = $splitDriveLetter($endPath); +[$startPath, $startDriveLetter] = $splitDriveLetter($startPath); + +$startPathArr = $splitPath($startPath); +$endPathArr = $splitPath($endPath); + +if ($endDriveLetter && $startDriveLetter && $endDriveLetter != $startDriveLetter) { + +return $endDriveLetter.':/'.($endPathArr ? implode('/', $endPathArr).'/' : ''); +} + + +$index = 0; +while (isset($startPathArr[$index]) && isset($endPathArr[$index]) && $startPathArr[$index] === $endPathArr[$index]) { +++$index; +} + + +if (1 === \count($startPathArr) && '' === $startPathArr[0]) { +$depth = 0; +} else { +$depth = \count($startPathArr) - $index; +} + + +$traverser = str_repeat('../', $depth); + +$endPathRemainder = implode('/', \array_slice($endPathArr, $index)); + + +$relativePath = $traverser.('' !== $endPathRemainder ? $endPathRemainder.'/' : ''); + +return '' === $relativePath ? './' : $relativePath; +} + + + + + + + + + + + + + + + + + + +public function mirror(string $originDir, string $targetDir, \Traversable $iterator = null, array $options = []) +{ +$targetDir = rtrim($targetDir, '/\\'); +$originDir = rtrim($originDir, '/\\'); +$originDirLen = \strlen($originDir); + +if (!$this->exists($originDir)) { +throw new IOException(sprintf('The origin directory specified "%s" was not found.', $originDir), 0, null, $originDir); +} + + +if ($this->exists($targetDir) && isset($options['delete']) && $options['delete']) { +$deleteIterator = $iterator; +if (null === $deleteIterator) { +$flags = \FilesystemIterator::SKIP_DOTS; +$deleteIterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($targetDir, $flags), \RecursiveIteratorIterator::CHILD_FIRST); +} +$targetDirLen = \strlen($targetDir); +foreach ($deleteIterator as $file) { +$origin = $originDir.substr($file->getPathname(), $targetDirLen); +if (!$this->exists($origin)) { +$this->remove($file); +} +} +} + +$copyOnWindows = $options['copy_on_windows'] ?? false; + +if (null === $iterator) { +$flags = $copyOnWindows ? \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS : \FilesystemIterator::SKIP_DOTS; +$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($originDir, $flags), \RecursiveIteratorIterator::SELF_FIRST); +} + +$this->mkdir($targetDir); +$filesCreatedWhileMirroring = []; + +foreach ($iterator as $file) { +if ($file->getPathname() === $targetDir || $file->getRealPath() === $targetDir || isset($filesCreatedWhileMirroring[$file->getRealPath()])) { +continue; +} + +$target = $targetDir.substr($file->getPathname(), $originDirLen); +$filesCreatedWhileMirroring[$target] = true; + +if (!$copyOnWindows && is_link($file)) { +$this->symlink($file->getLinkTarget(), $target); +} elseif (is_dir($file)) { +$this->mkdir($target); +} elseif (is_file($file)) { +$this->copy($file, $target, $options['override'] ?? false); +} else { +throw new IOException(sprintf('Unable to guess "%s" file type.', $file), 0, null, $file); +} +} +} + + + + + + +public function isAbsolutePath(string $file) +{ +return '' !== $file && (strspn($file, '/\\', 0, 1) +|| (\strlen($file) > 3 && ctype_alpha($file[0]) +&& ':' === $file[1] +&& strspn($file, '/\\', 2, 1) +) +|| null !== parse_url($file, \PHP_URL_SCHEME) +); +} + + + + + + + + + + +public function tempnam(string $dir, string $prefix) +{ +$suffix = \func_num_args() > 2 ? func_get_arg(2) : ''; +[$scheme, $hierarchy] = $this->getSchemeAndHierarchy($dir); + + +if ((null === $scheme || 'file' === $scheme || 'gs' === $scheme) && '' === $suffix) { + +if ($tmpFile = self::box('tempnam', $hierarchy, $prefix)) { +if (null !== $scheme && 'gs' !== $scheme) { +return $scheme.'://'.$tmpFile; +} + +return $tmpFile; +} + +throw new IOException('A temporary file could not be created: '.self::$lastError); +} + + +for ($i = 0; $i < 10; ++$i) { + +$tmpFile = $dir.'/'.$prefix.uniqid(mt_rand(), true).$suffix; + + + +if (!$handle = self::box('fopen', $tmpFile, 'x+')) { +continue; +} + + +self::box('fclose', $handle); + +return $tmpFile; +} + +throw new IOException('A temporary file could not be created: '.self::$lastError); +} + + + + + + + + +public function dumpFile(string $filename, $content) +{ +if (\is_array($content)) { +throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be string or resource, array given.', __METHOD__)); +} + +$dir = \dirname($filename); + +if (!is_dir($dir)) { +$this->mkdir($dir); +} + + + +$tmpFile = $this->tempnam($dir, basename($filename)); + +try { +if (false === self::box('file_put_contents', $tmpFile, $content)) { +throw new IOException(sprintf('Failed to write file "%s": ', $filename).self::$lastError, 0, null, $filename); +} + +self::box('chmod', $tmpFile, file_exists($filename) ? fileperms($filename) : 0666 & ~umask()); + +$this->rename($tmpFile, $filename, true); +} finally { +if (file_exists($tmpFile)) { +self::box('unlink', $tmpFile); +} +} +} + + + + + + + + + +public function appendToFile(string $filename, $content) +{ +if (\is_array($content)) { +throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be string or resource, array given.', __METHOD__)); +} + +$dir = \dirname($filename); + +if (!is_dir($dir)) { +$this->mkdir($dir); +} + +$lock = \func_num_args() > 2 && func_get_arg(2); + +if (false === self::box('file_put_contents', $filename, $content, \FILE_APPEND | ($lock ? \LOCK_EX : 0))) { +throw new IOException(sprintf('Failed to write file "%s": ', $filename).self::$lastError, 0, null, $filename); +} +} + +private function toIterable($files): iterable +{ +return is_iterable($files) ? $files : [$files]; +} + + + + +private function getSchemeAndHierarchy(string $filename): array +{ +$components = explode('://', $filename, 2); + +return 2 === \count($components) ? [$components[0], $components[1]] : [null, $components[0]]; +} + +private static function assertFunctionExists(string $func): void +{ +if (!\function_exists($func)) { +throw new IOException(sprintf('Unable to perform filesystem operation because the "%s()" function has been disabled.', $func)); +} +} + + + + + + +private static function box(string $func, ...$args) +{ +self::assertFunctionExists($func); + +self::$lastError = null; +set_error_handler(__CLASS__.'::handleError'); +try { +return $func(...$args); +} finally { +restore_error_handler(); +} +} + + + + +public static function handleError(int $type, string $msg) +{ +self::$lastError = $msg; +} +} diff --git a/composer/vendor/symfony/filesystem/LICENSE b/composer/vendor/symfony/filesystem/LICENSE new file mode 100644 index 000000000..3622370ec --- /dev/null +++ b/composer/vendor/symfony/filesystem/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2004-2023 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/composer/vendor/symfony/filesystem/Path.php b/composer/vendor/symfony/filesystem/Path.php new file mode 100644 index 000000000..71f6fde8e --- /dev/null +++ b/composer/vendor/symfony/filesystem/Path.php @@ -0,0 +1,819 @@ + self::CLEANUP_THRESHOLD) { +self::$buffer = \array_slice(self::$buffer, -self::CLEANUP_SIZE, null, true); +self::$bufferSize = self::CLEANUP_SIZE; +} + +return $canonicalPath; +} + + + + + + + + + + + + +public static function normalize(string $path): string +{ +return str_replace('\\', '/', $path); +} + + + + + + + + + + + + + + + + + + + + + + + + +public static function getDirectory(string $path): string +{ +if ('' === $path) { +return ''; +} + +$path = self::canonicalize($path); + + +if (false !== $schemeSeparatorPosition = strpos($path, '://')) { +$scheme = substr($path, 0, $schemeSeparatorPosition + 3); +$path = substr($path, $schemeSeparatorPosition + 3); +} else { +$scheme = ''; +} + +if (false === $dirSeparatorPosition = strrpos($path, '/')) { +return ''; +} + + +if (0 === $dirSeparatorPosition) { +return $scheme.'/'; +} + + +if (2 === $dirSeparatorPosition && ctype_alpha($path[0]) && ':' === $path[1]) { +return $scheme.substr($path, 0, 3); +} + +return $scheme.substr($path, 0, $dirSeparatorPosition); +} + + + + + + + + + + + + + + + +public static function getHomeDirectory(): string +{ + +if (getenv('HOME')) { +return self::canonicalize(getenv('HOME')); +} + + +if (getenv('HOMEDRIVE') && getenv('HOMEPATH')) { +return self::canonicalize(getenv('HOMEDRIVE').getenv('HOMEPATH')); +} + +throw new RuntimeException("Cannot find the home directory path: Your environment or operating system isn't supported."); +} + + + + + + + + + +public static function getRoot(string $path): string +{ +if ('' === $path) { +return ''; +} + + +if (false !== $schemeSeparatorPosition = strpos($path, '://')) { +$scheme = substr($path, 0, $schemeSeparatorPosition + 3); +$path = substr($path, $schemeSeparatorPosition + 3); +} else { +$scheme = ''; +} + +$firstCharacter = $path[0]; + + +if ('/' === $firstCharacter || '\\' === $firstCharacter) { +return $scheme.'/'; +} + +$length = \strlen($path); + + +if ($length > 1 && ':' === $path[1] && ctype_alpha($firstCharacter)) { + +if (2 === $length) { +return $scheme.$path.'/'; +} + + +if ('/' === $path[2] || '\\' === $path[2]) { +return $scheme.$firstCharacter.$path[1].'/'; +} +} + +return ''; +} + + + + + + + +public static function getFilenameWithoutExtension(string $path, string $extension = null): string +{ +if ('' === $path) { +return ''; +} + +if (null !== $extension) { + +return rtrim(basename($path, $extension), '.'); +} + +return pathinfo($path, \PATHINFO_FILENAME); +} + + + + + + +public static function getExtension(string $path, bool $forceLowerCase = false): string +{ +if ('' === $path) { +return ''; +} + +$extension = pathinfo($path, \PATHINFO_EXTENSION); + +if ($forceLowerCase) { +$extension = self::toLower($extension); +} + +return $extension; +} + + + + + + + + + + + + +public static function hasExtension(string $path, $extensions = null, bool $ignoreCase = false): bool +{ +if ('' === $path) { +return false; +} + +$actualExtension = self::getExtension($path, $ignoreCase); + + +if ([] === $extensions || null === $extensions) { +return '' !== $actualExtension; +} + +if (\is_string($extensions)) { +$extensions = [$extensions]; +} + +foreach ($extensions as $key => $extension) { +if ($ignoreCase) { +$extension = self::toLower($extension); +} + + +$extensions[$key] = ltrim($extension, '.'); +} + +return \in_array($actualExtension, $extensions, true); +} + + + + + + + + + +public static function changeExtension(string $path, string $extension): string +{ +if ('' === $path) { +return ''; +} + +$actualExtension = self::getExtension($path); +$extension = ltrim($extension, '.'); + + +if ('/' === substr($path, -1)) { +return $path; +} + + +if (empty($actualExtension)) { +return $path.('.' === substr($path, -1) ? '' : '.').$extension; +} + +return substr($path, 0, -\strlen($actualExtension)).$extension; +} + +public static function isAbsolute(string $path): bool +{ +if ('' === $path) { +return false; +} + + +if (false !== $schemeSeparatorPosition = strpos($path, '://')) { +$path = substr($path, $schemeSeparatorPosition + 3); +} + +$firstCharacter = $path[0]; + + +if ('/' === $firstCharacter || '\\' === $firstCharacter) { +return true; +} + + +if (\strlen($path) > 1 && ctype_alpha($firstCharacter) && ':' === $path[1]) { + +if (2 === \strlen($path)) { +return true; +} + + +if ('/' === $path[2] || '\\' === $path[2]) { +return true; +} +} + +return false; +} + +public static function isRelative(string $path): bool +{ +return !self::isAbsolute($path); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +public static function makeAbsolute(string $path, string $basePath): string +{ +if ('' === $basePath) { +throw new InvalidArgumentException(sprintf('The base path must be a non-empty string. Got: "%s".', $basePath)); +} + +if (!self::isAbsolute($basePath)) { +throw new InvalidArgumentException(sprintf('The base path "%s" is not an absolute path.', $basePath)); +} + +if (self::isAbsolute($path)) { +return self::canonicalize($path); +} + +if (false !== $schemeSeparatorPosition = strpos($basePath, '://')) { +$scheme = substr($basePath, 0, $schemeSeparatorPosition + 3); +$basePath = substr($basePath, $schemeSeparatorPosition + 3); +} else { +$scheme = ''; +} + +return $scheme.self::canonicalize(rtrim($basePath, '/\\').'/'.$path); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +public static function makeRelative(string $path, string $basePath): string +{ +$path = self::canonicalize($path); +$basePath = self::canonicalize($basePath); + +[$root, $relativePath] = self::split($path); +[$baseRoot, $relativeBasePath] = self::split($basePath); + + + + +if ('' === $root && '' !== $baseRoot) { + +if ('' === $relativeBasePath) { +$relativePath = ltrim($relativePath, './\\'); +} + +return $relativePath; +} + + + +if ('' !== $root && '' === $baseRoot) { +throw new InvalidArgumentException(sprintf('The absolute path "%s" cannot be made relative to the relative path "%s". You should provide an absolute base path instead.', $path, $basePath)); +} + + +if ($baseRoot && $root !== $baseRoot) { +throw new InvalidArgumentException(sprintf('The path "%s" cannot be made relative to "%s", because they have different roots ("%s" and "%s").', $path, $basePath, $root, $baseRoot)); +} + +if ('' === $relativeBasePath) { +return $relativePath; +} + + +$parts = explode('/', $relativePath); +$baseParts = explode('/', $relativeBasePath); +$dotDotPrefix = ''; + + + +$match = true; + +foreach ($baseParts as $index => $basePart) { +if ($match && isset($parts[$index]) && $basePart === $parts[$index]) { +unset($parts[$index]); + +continue; +} + +$match = false; +$dotDotPrefix .= '../'; +} + +return rtrim($dotDotPrefix.implode('/', $parts), '/'); +} + + + + +public static function isLocal(string $path): bool +{ +return '' !== $path && false === strpos($path, '://'); +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +public static function getLongestCommonBasePath(string ...$paths): ?string +{ +[$bpRoot, $basePath] = self::split(self::canonicalize(reset($paths))); + +for (next($paths); null !== key($paths) && '' !== $basePath; next($paths)) { +[$root, $path] = self::split(self::canonicalize(current($paths))); + + + +if ($root !== $bpRoot) { +return null; +} + + +while (true) { +if ('.' === $basePath) { + +$basePath = ''; + + +continue 2; +} + + + +if (0 === strpos($path.'/', $basePath.'/')) { + +continue 2; +} + +$basePath = \dirname($basePath); +} +} + +return $bpRoot.$basePath; +} + + + + +public static function join(string ...$paths): string +{ +$finalPath = null; +$wasScheme = false; + +foreach ($paths as $path) { +if ('' === $path) { +continue; +} + +if (null === $finalPath) { + +$finalPath = $path; +$wasScheme = (false !== strpos($path, '://')); +continue; +} + + +if (!\in_array(substr($finalPath, -1), ['/', '\\'])) { +$finalPath .= '/'; +} + + +$finalPath .= $wasScheme ? $path : ltrim($path, '/'); +$wasScheme = false; +} + +if (null === $finalPath) { +return ''; +} + +return self::canonicalize($finalPath); +} + + + + + + + + + + + + + + + + + + + + + +public static function isBasePath(string $basePath, string $ofPath): bool +{ +$basePath = self::canonicalize($basePath); +$ofPath = self::canonicalize($ofPath); + + + + + + +return 0 === strpos($ofPath.'/', rtrim($basePath, '/').'/'); +} + + + + +private static function findCanonicalParts(string $root, string $pathWithoutRoot): array +{ +$parts = explode('/', $pathWithoutRoot); + +$canonicalParts = []; + + +foreach ($parts as $part) { +if ('.' === $part || '' === $part) { +continue; +} + + + +if ('..' === $part && \count($canonicalParts) > 0 && '..' !== $canonicalParts[\count($canonicalParts) - 1]) { +array_pop($canonicalParts); + +continue; +} + + +if ('..' !== $part || '' === $root) { +$canonicalParts[] = $part; +} +} + +return $canonicalParts; +} + + + + + + + + + + + + + + + + + + +private static function split(string $path): array +{ +if ('' === $path) { +return ['', '']; +} + + +if (false !== $schemeSeparatorPosition = strpos($path, '://')) { +$root = substr($path, 0, $schemeSeparatorPosition + 3); +$path = substr($path, $schemeSeparatorPosition + 3); +} else { +$root = ''; +} + +$length = \strlen($path); + + +if (0 === strpos($path, '/')) { +$root .= '/'; +$path = $length > 1 ? substr($path, 1) : ''; +} elseif ($length > 1 && ctype_alpha($path[0]) && ':' === $path[1]) { +if (2 === $length) { + +$root .= $path.'/'; +$path = ''; +} elseif ('/' === $path[2]) { + +$root .= substr($path, 0, 3); +$path = $length > 3 ? substr($path, 3) : ''; +} +} + +return [$root, $path]; +} + +private static function toLower(string $string): string +{ +if (false !== $encoding = mb_detect_encoding($string, null, true)) { +return mb_strtolower($string, $encoding); +} + +return strtolower($string); +} + +private function __construct() +{ +} +} diff --git a/composer/vendor/symfony/finder/Comparator/Comparator.php b/composer/vendor/symfony/finder/Comparator/Comparator.php new file mode 100644 index 000000000..b3f93cea7 --- /dev/null +++ b/composer/vendor/symfony/finder/Comparator/Comparator.php @@ -0,0 +1,117 @@ +target = $target; +$this->doSetOperator($operator); +} + + + + + + +public function getTarget() +{ +if (null === $this->target) { +trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); +} + +return $this->target; +} + + + + +public function setTarget(string $target) +{ +trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the target via the constructor instead.', __METHOD__); + +$this->target = $target; +} + + + + + + +public function getOperator() +{ +return $this->operator; +} + + + + + + + + +public function setOperator(string $operator) +{ +trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the operator via the constructor instead.', __METHOD__); + +$this->doSetOperator('' === $operator ? '==' : $operator); +} + + + + + + + + +public function test($test) +{ +if (null === $this->target) { +trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); +} + +switch ($this->operator) { +case '>': +return $test > $this->target; +case '>=': +return $test >= $this->target; +case '<': +return $test < $this->target; +case '<=': +return $test <= $this->target; +case '!=': +return $test != $this->target; +} + +return $test == $this->target; +} + +private function doSetOperator(string $operator): void +{ +if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) { +throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator)); +} + +$this->operator = $operator; +} +} diff --git a/composer/vendor/symfony/finder/Comparator/DateComparator.php b/composer/vendor/symfony/finder/Comparator/DateComparator.php new file mode 100644 index 000000000..c35ba1513 --- /dev/null +++ b/composer/vendor/symfony/finder/Comparator/DateComparator.php @@ -0,0 +1,50 @@ +]=?|after|since|before|until)?\s*(.+?)\s*$#i', $test, $matches)) { +throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a date test.', $test)); +} + +try { +$date = new \DateTime($matches[2]); +$target = $date->format('U'); +} catch (\Exception $e) { +throw new \InvalidArgumentException(sprintf('"%s" is not a valid date.', $matches[2])); +} + +$operator = $matches[1] ?? '=='; +if ('since' === $operator || 'after' === $operator) { +$operator = '>'; +} + +if ('until' === $operator || 'before' === $operator) { +$operator = '<'; +} + +parent::__construct($target, $operator); +} +} diff --git a/composer/vendor/symfony/finder/Comparator/NumberComparator.php b/composer/vendor/symfony/finder/Comparator/NumberComparator.php new file mode 100644 index 000000000..798912f9d --- /dev/null +++ b/composer/vendor/symfony/finder/Comparator/NumberComparator.php @@ -0,0 +1,78 @@ +]=?)?\s*([0-9\.]+)\s*([kmg]i?)?\s*$#i', $test, $matches)) { +throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a number test.', $test ?? 'null')); +} + +$target = $matches[2]; +if (!is_numeric($target)) { +throw new \InvalidArgumentException(sprintf('Invalid number "%s".', $target)); +} +if (isset($matches[3])) { + +switch (strtolower($matches[3])) { +case 'k': +$target *= 1000; +break; +case 'ki': +$target *= 1024; +break; +case 'm': +$target *= 1000000; +break; +case 'mi': +$target *= 1024 * 1024; +break; +case 'g': +$target *= 1000000000; +break; +case 'gi': +$target *= 1024 * 1024 * 1024; +break; +} +} + +parent::__construct($target, $matches[1] ?: '=='); +} +} diff --git a/composer/vendor/symfony/finder/Exception/AccessDeniedException.php b/composer/vendor/symfony/finder/Exception/AccessDeniedException.php new file mode 100644 index 000000000..4812f5a50 --- /dev/null +++ b/composer/vendor/symfony/finder/Exception/AccessDeniedException.php @@ -0,0 +1,19 @@ +ignore = static::IGNORE_VCS_FILES | static::IGNORE_DOT_FILES; +} + + + + + + +public static function create() +{ +return new static(); +} + + + + + + +public function directories() +{ +$this->mode = Iterator\FileTypeFilterIterator::ONLY_DIRECTORIES; + +return $this; +} + + + + + + +public function files() +{ +$this->mode = Iterator\FileTypeFilterIterator::ONLY_FILES; + +return $this; +} + + + + + + + + + + + + + + + + + +public function depth($levels) +{ +foreach ((array) $levels as $level) { +$this->depths[] = new Comparator\NumberComparator($level); +} + +return $this; +} + + + + + + + + + + + + + + + + + + + + +public function date($dates) +{ +foreach ((array) $dates as $date) { +$this->dates[] = new Comparator\DateComparator($date); +} + +return $this; +} + + + + + + + + + + + + + + + + + +public function name($patterns) +{ +$this->names = array_merge($this->names, (array) $patterns); + +return $this; +} + + + + + + + + + + +public function notName($patterns) +{ +$this->notNames = array_merge($this->notNames, (array) $patterns); + +return $this; +} + + + + + + + + + + + + + + + + +public function contains($patterns) +{ +$this->contains = array_merge($this->contains, (array) $patterns); + +return $this; +} + + + + + + + + + + + + + + + + +public function notContains($patterns) +{ +$this->notContains = array_merge($this->notContains, (array) $patterns); + +return $this; +} + + + + + + + + + + + + + + + + + + +public function path($patterns) +{ +$this->paths = array_merge($this->paths, (array) $patterns); + +return $this; +} + + + + + + + + + + + + + + + + + + +public function notPath($patterns) +{ +$this->notPaths = array_merge($this->notPaths, (array) $patterns); + +return $this; +} + + + + + + + + + + + + + + + + +public function size($sizes) +{ +foreach ((array) $sizes as $size) { +$this->sizes[] = new Comparator\NumberComparator($size); +} + +return $this; +} + + + + + + + + + + + + + + +public function exclude($dirs) +{ +$this->exclude = array_merge($this->exclude, (array) $dirs); + +return $this; +} + + + + + + + + + + +public function ignoreDotFiles(bool $ignoreDotFiles) +{ +if ($ignoreDotFiles) { +$this->ignore |= static::IGNORE_DOT_FILES; +} else { +$this->ignore &= ~static::IGNORE_DOT_FILES; +} + +return $this; +} + + + + + + + + + + +public function ignoreVCS(bool $ignoreVCS) +{ +if ($ignoreVCS) { +$this->ignore |= static::IGNORE_VCS_FILES; +} else { +$this->ignore &= ~static::IGNORE_VCS_FILES; +} + +return $this; +} + + + + + + + + +public function ignoreVCSIgnored(bool $ignoreVCSIgnored) +{ +if ($ignoreVCSIgnored) { +$this->ignore |= static::IGNORE_VCS_IGNORED_FILES; +} else { +$this->ignore &= ~static::IGNORE_VCS_IGNORED_FILES; +} + +return $this; +} + + + + + + + + +public static function addVCSPattern($pattern) +{ +foreach ((array) $pattern as $p) { +self::$vcsPatterns[] = $p; +} + +self::$vcsPatterns = array_unique(self::$vcsPatterns); +} + + + + + + + + + + + + +public function sort(\Closure $closure) +{ +$this->sort = $closure; + +return $this; +} + + + + + + + + + + +public function sortByName(bool $useNaturalSort = false) +{ +$this->sort = $useNaturalSort ? Iterator\SortableIterator::SORT_BY_NAME_NATURAL : Iterator\SortableIterator::SORT_BY_NAME; + +return $this; +} + + + + + + + + + + +public function sortByType() +{ +$this->sort = Iterator\SortableIterator::SORT_BY_TYPE; + +return $this; +} + + + + + + + + + + + + +public function sortByAccessedTime() +{ +$this->sort = Iterator\SortableIterator::SORT_BY_ACCESSED_TIME; + +return $this; +} + + + + + + +public function reverseSorting() +{ +$this->reverseSorting = true; + +return $this; +} + + + + + + + + + + + + + + +public function sortByChangedTime() +{ +$this->sort = Iterator\SortableIterator::SORT_BY_CHANGED_TIME; + +return $this; +} + + + + + + + + + + + + +public function sortByModifiedTime() +{ +$this->sort = Iterator\SortableIterator::SORT_BY_MODIFIED_TIME; + +return $this; +} + + + + + + + + + + + +public function filter(\Closure $closure) +{ +$this->filters[] = $closure; + +return $this; +} + + + + + + +public function followLinks() +{ +$this->followLinks = true; + +return $this; +} + + + + + + + + +public function ignoreUnreadableDirs(bool $ignore = true) +{ +$this->ignoreUnreadableDirs = $ignore; + +return $this; +} + + + + + + + + + + +public function in($dirs) +{ +$resolvedDirs = []; + +foreach ((array) $dirs as $dir) { +if (is_dir($dir)) { +$resolvedDirs[] = [$this->normalizeDir($dir)]; +} elseif ($glob = glob($dir, (\defined('GLOB_BRACE') ? \GLOB_BRACE : 0) | \GLOB_ONLYDIR | \GLOB_NOSORT)) { +sort($glob); +$resolvedDirs[] = array_map([$this, 'normalizeDir'], $glob); +} else { +throw new DirectoryNotFoundException(sprintf('The "%s" directory does not exist.', $dir)); +} +} + +$this->dirs = array_merge($this->dirs, ...$resolvedDirs); + +return $this; +} + + + + + + + + + + +#[\ReturnTypeWillChange] +public function getIterator() +{ +if (0 === \count($this->dirs) && 0 === \count($this->iterators)) { +throw new \LogicException('You must call one of in() or append() methods before iterating over a Finder.'); +} + +if (1 === \count($this->dirs) && 0 === \count($this->iterators)) { +$iterator = $this->searchInDirectory($this->dirs[0]); + +if ($this->sort || $this->reverseSorting) { +$iterator = (new Iterator\SortableIterator($iterator, $this->sort, $this->reverseSorting))->getIterator(); +} + +return $iterator; +} + +$iterator = new \AppendIterator(); +foreach ($this->dirs as $dir) { +$iterator->append(new \IteratorIterator(new LazyIterator(function () use ($dir) { +return $this->searchInDirectory($dir); +}))); +} + +foreach ($this->iterators as $it) { +$iterator->append($it); +} + +if ($this->sort || $this->reverseSorting) { +$iterator = (new Iterator\SortableIterator($iterator, $this->sort, $this->reverseSorting))->getIterator(); +} + +return $iterator; +} + + + + + + + + + + +public function append(iterable $iterator) +{ +if ($iterator instanceof \IteratorAggregate) { +$this->iterators[] = $iterator->getIterator(); +} elseif ($iterator instanceof \Iterator) { +$this->iterators[] = $iterator; +} elseif (is_iterable($iterator)) { +$it = new \ArrayIterator(); +foreach ($iterator as $file) { +$file = $file instanceof \SplFileInfo ? $file : new \SplFileInfo($file); +$it[$file->getPathname()] = $file; +} +$this->iterators[] = $it; +} else { +throw new \InvalidArgumentException('Finder::append() method wrong argument type.'); +} + +return $this; +} + + + + + + +public function hasResults() +{ +foreach ($this->getIterator() as $_) { +return true; +} + +return false; +} + + + + + + +#[\ReturnTypeWillChange] +public function count() +{ +return iterator_count($this->getIterator()); +} + +private function searchInDirectory(string $dir): \Iterator +{ +$exclude = $this->exclude; +$notPaths = $this->notPaths; + +if (static::IGNORE_VCS_FILES === (static::IGNORE_VCS_FILES & $this->ignore)) { +$exclude = array_merge($exclude, self::$vcsPatterns); +} + +if (static::IGNORE_DOT_FILES === (static::IGNORE_DOT_FILES & $this->ignore)) { +$notPaths[] = '#(^|/)\..+(/|$)#'; +} + +$minDepth = 0; +$maxDepth = \PHP_INT_MAX; + +foreach ($this->depths as $comparator) { +switch ($comparator->getOperator()) { +case '>': +$minDepth = $comparator->getTarget() + 1; +break; +case '>=': +$minDepth = $comparator->getTarget(); +break; +case '<': +$maxDepth = $comparator->getTarget() - 1; +break; +case '<=': +$maxDepth = $comparator->getTarget(); +break; +default: +$minDepth = $maxDepth = $comparator->getTarget(); +} +} + +$flags = \RecursiveDirectoryIterator::SKIP_DOTS; + +if ($this->followLinks) { +$flags |= \RecursiveDirectoryIterator::FOLLOW_SYMLINKS; +} + +$iterator = new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs); + +if ($exclude) { +$iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $exclude); +} + +$iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST); + +if ($minDepth > 0 || $maxDepth < \PHP_INT_MAX) { +$iterator = new Iterator\DepthRangeFilterIterator($iterator, $minDepth, $maxDepth); +} + +if ($this->mode) { +$iterator = new Iterator\FileTypeFilterIterator($iterator, $this->mode); +} + +if ($this->names || $this->notNames) { +$iterator = new Iterator\FilenameFilterIterator($iterator, $this->names, $this->notNames); +} + +if ($this->contains || $this->notContains) { +$iterator = new Iterator\FilecontentFilterIterator($iterator, $this->contains, $this->notContains); +} + +if ($this->sizes) { +$iterator = new Iterator\SizeRangeFilterIterator($iterator, $this->sizes); +} + +if ($this->dates) { +$iterator = new Iterator\DateRangeFilterIterator($iterator, $this->dates); +} + +if ($this->filters) { +$iterator = new Iterator\CustomFilterIterator($iterator, $this->filters); +} + +if ($this->paths || $notPaths) { +$iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $notPaths); +} + +if (static::IGNORE_VCS_IGNORED_FILES === (static::IGNORE_VCS_IGNORED_FILES & $this->ignore)) { +$iterator = new Iterator\VcsIgnoredFilterIterator($iterator, $dir); +} + +return $iterator; +} + + + + + + +private function normalizeDir(string $dir): string +{ +if ('/' === $dir) { +return $dir; +} + +$dir = rtrim($dir, '/'.\DIRECTORY_SEPARATOR); + +if (preg_match('#^(ssh2\.)?s?ftp://#', $dir)) { +$dir .= '/'; +} + +return $dir; +} +} diff --git a/composer/vendor/symfony/finder/Gitignore.php b/composer/vendor/symfony/finder/Gitignore.php new file mode 100644 index 000000000..a1fabf2b2 --- /dev/null +++ b/composer/vendor/symfony/finder/Gitignore.php @@ -0,0 +1,93 @@ +filters = $filters; + +parent::__construct($iterator); +} + + + + + + +#[\ReturnTypeWillChange] +public function accept() +{ +$fileinfo = $this->current(); + +foreach ($this->filters as $filter) { +if (false === $filter($fileinfo)) { +return false; +} +} + +return true; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php new file mode 100644 index 000000000..f7dfb987c --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php @@ -0,0 +1,61 @@ +comparators = $comparators; + +parent::__construct($iterator); +} + + + + + + +#[\ReturnTypeWillChange] +public function accept() +{ +$fileinfo = $this->current(); + +if (!file_exists($fileinfo->getPathname())) { +return false; +} + +$filedate = $fileinfo->getMTime(); +foreach ($this->comparators as $compare) { +if (!$compare->test($filedate)) { +return false; +} +} + +return true; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php new file mode 100644 index 000000000..e04ca2f8d --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php @@ -0,0 +1,51 @@ +minDepth = $minDepth; +$iterator->setMaxDepth(\PHP_INT_MAX === $maxDepth ? -1 : $maxDepth); + +parent::__construct($iterator); +} + + + + + + +#[\ReturnTypeWillChange] +public function accept() +{ +return $this->getInnerIterator()->getDepth() >= $this->minDepth; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php b/composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php new file mode 100644 index 000000000..3067d588d --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php @@ -0,0 +1,96 @@ +iterator = $iterator; +$this->isRecursive = $iterator instanceof \RecursiveIterator; +$patterns = []; +foreach ($directories as $directory) { +$directory = rtrim($directory, '/'); +if (!$this->isRecursive || str_contains($directory, '/')) { +$patterns[] = preg_quote($directory, '#'); +} else { +$this->excludedDirs[$directory] = true; +} +} +if ($patterns) { +$this->excludedPattern = '#(?:^|/)(?:'.implode('|', $patterns).')(?:/|$)#'; +} + +parent::__construct($iterator); +} + + + + + + +#[\ReturnTypeWillChange] +public function accept() +{ +if ($this->isRecursive && isset($this->excludedDirs[$this->getFilename()]) && $this->isDir()) { +return false; +} + +if ($this->excludedPattern) { +$path = $this->isDir() ? $this->current()->getRelativePathname() : $this->current()->getRelativePath(); +$path = str_replace('\\', '/', $path); + +return !preg_match($this->excludedPattern, $path); +} + +return true; +} + + + + +#[\ReturnTypeWillChange] +public function hasChildren() +{ +return $this->isRecursive && $this->iterator->hasChildren(); +} + + + + +#[\ReturnTypeWillChange] +public function getChildren() +{ +$children = new self($this->iterator->getChildren(), []); +$children->excludedDirs = $this->excludedDirs; +$children->excludedPattern = $this->excludedPattern; + +return $children; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php new file mode 100644 index 000000000..c12dc5452 --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php @@ -0,0 +1,56 @@ +mode = $mode; + +parent::__construct($iterator); +} + + + + + + +#[\ReturnTypeWillChange] +public function accept() +{ +$fileinfo = $this->current(); +if (self::ONLY_DIRECTORIES === (self::ONLY_DIRECTORIES & $this->mode) && $fileinfo->isFile()) { +return false; +} elseif (self::ONLY_FILES === (self::ONLY_FILES & $this->mode) && $fileinfo->isDir()) { +return false; +} + +return true; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php b/composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php new file mode 100644 index 000000000..5abcc8b63 --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php @@ -0,0 +1,61 @@ +matchRegexps && !$this->noMatchRegexps) { +return true; +} + +$fileinfo = $this->current(); + +if ($fileinfo->isDir() || !$fileinfo->isReadable()) { +return false; +} + +$content = $fileinfo->getContents(); +if (!$content) { +return false; +} + +return $this->isAccepted($content); +} + + + + + + + + +protected function toRegex(string $str) +{ +return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php b/composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php new file mode 100644 index 000000000..9de88c73e --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php @@ -0,0 +1,50 @@ +isAccepted($this->current()->getFilename()); +} + + + + + + + + + + + +protected function toRegex(string $str) +{ +return $this->isRegex($str) ? $str : Glob::toRegex($str); +} +} diff --git a/composer/vendor/symfony/finder/Iterator/LazyIterator.php b/composer/vendor/symfony/finder/Iterator/LazyIterator.php new file mode 100644 index 000000000..d6cbc5d68 --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/LazyIterator.php @@ -0,0 +1,32 @@ +iteratorFactory = $iteratorFactory; +} + +public function getIterator(): \Traversable +{ +yield from ($this->iteratorFactory)(); +} +} diff --git a/composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php b/composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php new file mode 100644 index 000000000..d9f72858e --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php @@ -0,0 +1,117 @@ +matchRegexps[] = $this->toRegex($pattern); +} + +foreach ($noMatchPatterns as $pattern) { +$this->noMatchRegexps[] = $this->toRegex($pattern); +} + +parent::__construct($iterator); +} + + + + + + + + + + +protected function isAccepted(string $string) +{ + +foreach ($this->noMatchRegexps as $regex) { +if (preg_match($regex, $string)) { +return false; +} +} + + +if ($this->matchRegexps) { +foreach ($this->matchRegexps as $regex) { +if (preg_match($regex, $string)) { +return true; +} +} + +return false; +} + + +return true; +} + + + + + + +protected function isRegex(string $str) +{ +$availableModifiers = 'imsxuADU'; + +if (\PHP_VERSION_ID >= 80200) { +$availableModifiers .= 'n'; +} + +if (preg_match('/^(.{3,}?)['.$availableModifiers.']*$/', $str, $m)) { +$start = substr($m[1], 0, 1); +$end = substr($m[1], -1); + +if ($start === $end) { +return !preg_match('/[*?[:alnum:] \\\\]/', $start); +} + +foreach ([['{', '}'], ['(', ')'], ['[', ']'], ['<', '>']] as $delimiters) { +if ($start === $delimiters[0] && $end === $delimiters[1]) { +return true; +} +} +} + +return false; +} + + + + + + +abstract protected function toRegex(string $str); +} diff --git a/composer/vendor/symfony/finder/Iterator/PathFilterIterator.php b/composer/vendor/symfony/finder/Iterator/PathFilterIterator.php new file mode 100644 index 000000000..bdb3b4832 --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/PathFilterIterator.php @@ -0,0 +1,59 @@ +current()->getRelativePathname(); + +if ('\\' === \DIRECTORY_SEPARATOR) { +$filename = str_replace('\\', '/', $filename); +} + +return $this->isAccepted($filename); +} + + + + + + + + + + + + + + + +protected function toRegex(string $str) +{ +return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php b/composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php new file mode 100644 index 000000000..48fc80a2b --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php @@ -0,0 +1,168 @@ +ignoreUnreadableDirs = $ignoreUnreadableDirs; +$this->rootPath = $path; +if ('/' !== \DIRECTORY_SEPARATOR && !($flags & self::UNIX_PATHS)) { +$this->directorySeparator = \DIRECTORY_SEPARATOR; +} +} + + + + + + +#[\ReturnTypeWillChange] +public function current() +{ + + +if (null === $subPathname = $this->subPath) { +$subPathname = $this->subPath = $this->getSubPath(); +} +if ('' !== $subPathname) { +$subPathname .= $this->directorySeparator; +} +$subPathname .= $this->getFilename(); + +if ('/' !== $basePath = $this->rootPath) { +$basePath .= $this->directorySeparator; +} + +return new SplFileInfo($basePath.$subPathname, $this->subPath, $subPathname); +} + + + + + + +#[\ReturnTypeWillChange] +public function hasChildren($allowLinks = false) +{ +$hasChildren = parent::hasChildren($allowLinks); + +if (!$hasChildren || !$this->ignoreUnreadableDirs) { +return $hasChildren; +} + +try { +parent::getChildren(); + +return true; +} catch (\UnexpectedValueException $e) { + +return false; +} +} + + + + + + +#[\ReturnTypeWillChange] +public function getChildren() +{ +try { +$children = parent::getChildren(); + +if ($children instanceof self) { + +$children->ignoreUnreadableDirs = $this->ignoreUnreadableDirs; + + +$children->rewindable = &$this->rewindable; +$children->rootPath = $this->rootPath; +} + +return $children; +} catch (\UnexpectedValueException $e) { +throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e); +} +} + + + + + + +#[\ReturnTypeWillChange] +public function rewind() +{ +if (false === $this->isRewindable()) { +return; +} + +parent::rewind(); +} + + + + + + +public function isRewindable() +{ +if (null !== $this->rewindable) { +return $this->rewindable; +} + +if (false !== $stream = @opendir($this->getPath())) { +$infos = stream_get_meta_data($stream); +closedir($stream); + +if ($infos['seekable']) { +return $this->rewindable = true; +} +} + +return $this->rewindable = false; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php new file mode 100644 index 000000000..644b0a24f --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php @@ -0,0 +1,60 @@ +comparators = $comparators; + +parent::__construct($iterator); +} + + + + + + +#[\ReturnTypeWillChange] +public function accept() +{ +$fileinfo = $this->current(); +if (!$fileinfo->isFile()) { +return true; +} + +$filesize = $fileinfo->getSize(); +foreach ($this->comparators as $compare) { +if (!$compare->test($filesize)) { +return false; +} +} + +return true; +} +} diff --git a/composer/vendor/symfony/finder/Iterator/SortableIterator.php b/composer/vendor/symfony/finder/Iterator/SortableIterator.php new file mode 100644 index 000000000..73bd223da --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/SortableIterator.php @@ -0,0 +1,104 @@ +iterator = $iterator; +$order = $reverseOrder ? -1 : 1; + +if (self::SORT_BY_NAME === $sort) { +$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { +return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); +}; +} elseif (self::SORT_BY_NAME_NATURAL === $sort) { +$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { +return $order * strnatcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); +}; +} elseif (self::SORT_BY_TYPE === $sort) { +$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { +if ($a->isDir() && $b->isFile()) { +return -$order; +} elseif ($a->isFile() && $b->isDir()) { +return $order; +} + +return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); +}; +} elseif (self::SORT_BY_ACCESSED_TIME === $sort) { +$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { +return $order * ($a->getATime() - $b->getATime()); +}; +} elseif (self::SORT_BY_CHANGED_TIME === $sort) { +$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { +return $order * ($a->getCTime() - $b->getCTime()); +}; +} elseif (self::SORT_BY_MODIFIED_TIME === $sort) { +$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { +return $order * ($a->getMTime() - $b->getMTime()); +}; +} elseif (self::SORT_BY_NONE === $sort) { +$this->sort = $order; +} elseif (\is_callable($sort)) { +$this->sort = $reverseOrder ? static function (\SplFileInfo $a, \SplFileInfo $b) use ($sort) { return -$sort($a, $b); } : $sort; +} else { +throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.'); +} +} + + + + +#[\ReturnTypeWillChange] +public function getIterator() +{ +if (1 === $this->sort) { +return $this->iterator; +} + +$array = iterator_to_array($this->iterator, true); + +if (-1 === $this->sort) { +$array = array_reverse($array); +} else { +uasort($array, $this->sort); +} + +return new \ArrayIterator($array); +} +} diff --git a/composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php b/composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php new file mode 100644 index 000000000..ac05f5e11 --- /dev/null +++ b/composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php @@ -0,0 +1,151 @@ +baseDir = $this->normalizePath($baseDir); + +parent::__construct($iterator); +} + +public function accept(): bool +{ +$file = $this->current(); + +$fileRealPath = $this->normalizePath($file->getRealPath()); + +return !$this->isIgnored($fileRealPath); +} + +private function isIgnored(string $fileRealPath): bool +{ +if (is_dir($fileRealPath) && !str_ends_with($fileRealPath, '/')) { +$fileRealPath .= '/'; +} + +if (isset($this->ignoredPathsCache[$fileRealPath])) { +return $this->ignoredPathsCache[$fileRealPath]; +} + +$ignored = false; + +foreach ($this->parentsDirectoryDownward($fileRealPath) as $parentDirectory) { +if ($this->isIgnored($parentDirectory)) { + +break; +} + +$fileRelativePath = substr($fileRealPath, \strlen($parentDirectory) + 1); + +if (null === $regexps = $this->readGitignoreFile("{$parentDirectory}/.gitignore")) { +continue; +} + +[$exclusionRegex, $inclusionRegex] = $regexps; + +if (preg_match($exclusionRegex, $fileRelativePath)) { +$ignored = true; + +continue; +} + +if (preg_match($inclusionRegex, $fileRelativePath)) { +$ignored = false; +} +} + +return $this->ignoredPathsCache[$fileRealPath] = $ignored; +} + + + + +private function parentsDirectoryDownward(string $fileRealPath): array +{ +$parentDirectories = []; + +$parentDirectory = $fileRealPath; + +while (true) { +$newParentDirectory = \dirname($parentDirectory); + + +if ($newParentDirectory === $parentDirectory) { +break; +} + +$parentDirectory = $newParentDirectory; + +if (0 !== strpos($parentDirectory, $this->baseDir)) { +break; +} + +$parentDirectories[] = $parentDirectory; +} + +return array_reverse($parentDirectories); +} + + + + +private function readGitignoreFile(string $path): ?array +{ +if (\array_key_exists($path, $this->gitignoreFilesCache)) { +return $this->gitignoreFilesCache[$path]; +} + +if (!file_exists($path)) { +return $this->gitignoreFilesCache[$path] = null; +} + +if (!is_file($path) || !is_readable($path)) { +throw new \RuntimeException("The \"ignoreVCSIgnored\" option cannot be used by the Finder as the \"{$path}\" file is not readable."); +} + +$gitignoreFileContent = file_get_contents($path); + +return $this->gitignoreFilesCache[$path] = [ +Gitignore::toRegex($gitignoreFileContent), +Gitignore::toRegexMatchingNegatedPatterns($gitignoreFileContent), +]; +} + +private function normalizePath(string $path): string +{ +if ('\\' === \DIRECTORY_SEPARATOR) { +return str_replace('\\', '/', $path); +} + +return $path; +} +} diff --git a/composer/vendor/symfony/finder/LICENSE b/composer/vendor/symfony/finder/LICENSE new file mode 100644 index 000000000..3622370ec --- /dev/null +++ b/composer/vendor/symfony/finder/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2004-2023 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/composer/vendor/symfony/finder/SplFileInfo.php b/composer/vendor/symfony/finder/SplFileInfo.php new file mode 100644 index 000000000..7768bd0f6 --- /dev/null +++ b/composer/vendor/symfony/finder/SplFileInfo.php @@ -0,0 +1,88 @@ +relativePath = $relativePath; +$this->relativePathname = $relativePathname; +} + + + + + + + + +public function getRelativePath() +{ +return $this->relativePath; +} + + + + + + + + +public function getRelativePathname() +{ +return $this->relativePathname; +} + +public function getFilenameWithoutExtension(): string +{ +$filename = $this->getFilename(); + +return pathinfo($filename, \PATHINFO_FILENAME); +} + + + + + + + + +public function getContents() +{ +set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); +try { +$content = file_get_contents($this->getPathname()); +} finally { +restore_error_handler(); +} +if (false === $content) { +throw new \RuntimeException($error); +} + +return $content; +} +} diff --git a/composer/vendor/symfony/polyfill-ctype/Ctype.php b/composer/vendor/symfony/polyfill-ctype/Ctype.php new file mode 100644 index 000000000..b52d290f8 --- /dev/null +++ b/composer/vendor/symfony/polyfill-ctype/Ctype.php @@ -0,0 +1,232 @@ + 255) { +return (string) $int; +} + +if (\PHP_VERSION_ID >= 80100) { +@trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED); +} + +if ($int < 0) { +$int += 256; +} + +return \chr($int); +} +} diff --git a/composer/vendor/symfony/polyfill-ctype/LICENSE b/composer/vendor/symfony/polyfill-ctype/LICENSE new file mode 100644 index 000000000..e5a36a180 --- /dev/null +++ b/composer/vendor/symfony/polyfill-ctype/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2018-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/composer/vendor/symfony/polyfill-ctype/bootstrap.php b/composer/vendor/symfony/polyfill-ctype/bootstrap.php new file mode 100644 index 000000000..5f1f758bd --- /dev/null +++ b/composer/vendor/symfony/polyfill-ctype/bootstrap.php @@ -0,0 +1,50 @@ += 80000) { +return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('ctype_alnum')) { +function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { +function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { +function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { +function ctype_digit($text) { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { +function ctype_graph($text) { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { +function ctype_lower($text) { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { +function ctype_print($text) { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { +function ctype_punct($text) { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { +function ctype_space($text) { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { +function ctype_upper($text) { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { +function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } +} diff --git a/composer/vendor/symfony/polyfill-ctype/bootstrap80.php b/composer/vendor/symfony/polyfill-ctype/bootstrap80.php new file mode 100644 index 000000000..dea0a8614 --- /dev/null +++ b/composer/vendor/symfony/polyfill-ctype/bootstrap80.php @@ -0,0 +1,46 @@ += 8.32 : (float) \PCRE_VERSION >= 10.39) ? '\X' : Grapheme::GRAPHEME_CLUSTER_RX); + + + + + + + + + + + + + + + + + + + +final class Grapheme +{ + + +public const GRAPHEME_CLUSTER_RX = '(?:\r\n|(?:[ -~\x{200C}\x{200D}]|[ᆨ-ᇹ]+|[ᄀ-ᅟ]*(?:[가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기까깨꺄꺠꺼께껴꼐꼬꽈꽤꾀꾜꾸꿔꿰뀌뀨끄끠끼나내냐냬너네녀녜노놔놰뇌뇨누눠눼뉘뉴느늬니다대댜댸더데뎌뎨도돠돼되됴두둬뒈뒤듀드듸디따때땨떄떠떼뗘뗴또똬뙈뙤뚀뚜뚸뛔뛰뜌뜨띄띠라래랴럐러레려례로롸뢔뢰료루뤄뤠뤼류르릐리마매먀먜머메며몌모뫄뫠뫼묘무뭐뭬뮈뮤므믜미바배뱌뱨버베벼볘보봐봬뵈뵤부붜붸뷔뷰브븨비빠빼뺘뺴뻐뻬뼈뼤뽀뽜뽸뾔뾰뿌뿨쀄쀠쀼쁘쁴삐사새샤섀서세셔셰소솨쇄쇠쇼수숴쉐쉬슈스싀시싸쌔쌰썌써쎄쎠쎼쏘쏴쐐쐬쑈쑤쒀쒜쒸쓔쓰씌씨아애야얘어에여예오와왜외요우워웨위유으의이자재쟈쟤저제져졔조좌좨죄죠주줘줴쥐쥬즈즤지짜째쨔쨰쩌쩨쪄쪠쪼쫘쫴쬐쬬쭈쭤쮀쮜쮸쯔쯰찌차채챠챼처체쳐쳬초촤쵀최쵸추춰췌취츄츠츼치카캐캬컈커케켜켸코콰쾌쾨쿄쿠쿼퀘퀴큐크킈키타태탸턔터테텨톄토톼퇘퇴툐투퉈퉤튀튜트틔티파패퍄퍠퍼페펴폐포퐈퐤푀표푸풔풰퓌퓨프픠피하해햐햬허헤혀혜호화홰회효후훠훼휘휴흐희히]?[ᅠ-ᆢ]+|[가-힣])[ᆨ-ᇹ]*|[ᄀ-ᅟ]+|[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}])[\p{Mn}\p{Me}\x{09BE}\x{09D7}\x{0B3E}\x{0B57}\x{0BBE}\x{0BD7}\x{0CC2}\x{0CD5}\x{0CD6}\x{0D3E}\x{0D57}\x{0DCF}\x{0DDF}\x{200C}\x{200D}\x{1D165}\x{1D16E}-\x{1D172}]*|[\p{Cc}\p{Cf}\p{Zl}\p{Zp}])'; + +private const CASE_FOLD = [ +['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], +['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], +]; + +public static function grapheme_extract($s, $size, $type = \GRAPHEME_EXTR_COUNT, $start = 0, &$next = 0) +{ +if (0 > $start) { +$start = \strlen($s) + $start; +} + +if (!\is_scalar($s)) { +$hasError = false; +set_error_handler(function () use (&$hasError) { $hasError = true; }); +$next = substr($s, $start); +restore_error_handler(); +if ($hasError) { +substr($s, $start); +$s = ''; +} else { +$s = $next; +} +} else { +$s = substr($s, $start); +} +$size = (int) $size; +$type = (int) $type; +$start = (int) $start; + +if (\GRAPHEME_EXTR_COUNT !== $type && \GRAPHEME_EXTR_MAXBYTES !== $type && \GRAPHEME_EXTR_MAXCHARS !== $type) { +if (80000 > \PHP_VERSION_ID) { +return false; +} + +throw new \ValueError('grapheme_extract(): Argument #3 ($type) must be one of GRAPHEME_EXTR_COUNT, GRAPHEME_EXTR_MAXBYTES, or GRAPHEME_EXTR_MAXCHARS'); +} + +if (!isset($s[0]) || 0 > $size || 0 > $start) { +return false; +} +if (0 === $size) { +return ''; +} + +$next = $start; + +$s = preg_split('/('.SYMFONY_GRAPHEME_CLUSTER_RX.')/u', "\r\n".$s, $size + 1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); + +if (!isset($s[1])) { +return false; +} + +$i = 1; +$ret = ''; + +do { +if (\GRAPHEME_EXTR_COUNT === $type) { +--$size; +} elseif (\GRAPHEME_EXTR_MAXBYTES === $type) { +$size -= \strlen($s[$i]); +} else { +$size -= iconv_strlen($s[$i], 'UTF-8//IGNORE'); +} + +if ($size >= 0) { +$ret .= $s[$i]; +} +} while (isset($s[++$i]) && $size > 0); + +$next += \strlen($ret); + +return $ret; +} + +public static function grapheme_strlen($s) +{ +preg_replace('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', '', $s, -1, $len); + +return 0 === $len && '' !== $s ? null : $len; +} + +public static function grapheme_substr($s, $start, $len = null) +{ +if (null === $len) { +$len = 2147483647; +} + +preg_match_all('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', $s, $s); + +$slen = \count($s[0]); +$start = (int) $start; + +if (0 > $start) { +$start += $slen; +} +if (0 > $start) { +if (\PHP_VERSION_ID < 80000) { +return false; +} + +$start = 0; +} +if ($start >= $slen) { +return \PHP_VERSION_ID >= 80000 ? '' : false; +} + +$rem = $slen - $start; + +if (0 > $len) { +$len += $rem; +} +if (0 === $len) { +return ''; +} +if (0 > $len) { +return \PHP_VERSION_ID >= 80000 ? '' : false; +} +if ($len > $rem) { +$len = $rem; +} + +return implode('', \array_slice($s[0], $start, $len)); +} + +public static function grapheme_strpos($s, $needle, $offset = 0) +{ +return self::grapheme_position($s, $needle, $offset, 0); +} + +public static function grapheme_stripos($s, $needle, $offset = 0) +{ +return self::grapheme_position($s, $needle, $offset, 1); +} + +public static function grapheme_strrpos($s, $needle, $offset = 0) +{ +return self::grapheme_position($s, $needle, $offset, 2); +} + +public static function grapheme_strripos($s, $needle, $offset = 0) +{ +return self::grapheme_position($s, $needle, $offset, 3); +} + +public static function grapheme_stristr($s, $needle, $beforeNeedle = false) +{ +return mb_stristr($s, $needle, $beforeNeedle, 'UTF-8'); +} + +public static function grapheme_strstr($s, $needle, $beforeNeedle = false) +{ +return mb_strstr($s, $needle, $beforeNeedle, 'UTF-8'); +} + +private static function grapheme_position($s, $needle, $offset, $mode) +{ +$needle = (string) $needle; +if (80000 > \PHP_VERSION_ID && !preg_match('/./us', $needle)) { +return false; +} +$s = (string) $s; +if (!preg_match('/./us', $s)) { +return false; +} +if ($offset > 0) { +$s = self::grapheme_substr($s, $offset); +} elseif ($offset < 0) { +if (2 > $mode) { +$offset += self::grapheme_strlen($s); +$s = self::grapheme_substr($s, $offset); +if (0 > $offset) { +$offset = 0; +} +} elseif (0 > $offset += self::grapheme_strlen($needle)) { +$s = self::grapheme_substr($s, 0, $offset); +$offset = 0; +} else { +$offset = 0; +} +} + + + + +$caseInsensitive = $mode & 1; +$reverse = $mode & 2; +if ($caseInsensitive) { + + + +$mode = \defined('MB_CASE_FOLD_SIMPLE') ? \MB_CASE_FOLD_SIMPLE : \MB_CASE_LOWER; +$s = mb_convert_case($s, $mode, 'UTF-8'); +$needle = mb_convert_case($needle, $mode, 'UTF-8'); + +if (!\defined('MB_CASE_FOLD_SIMPLE')) { +$s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); +$needle = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $needle); +} +} +if ($reverse) { +$needlePos = strrpos($s, $needle); +} else { +$needlePos = strpos($s, $needle); +} + +return false !== $needlePos ? self::grapheme_strlen(substr($s, 0, $needlePos)) + $offset : false; +} +} diff --git a/composer/vendor/symfony/polyfill-intl-grapheme/LICENSE b/composer/vendor/symfony/polyfill-intl-grapheme/LICENSE new file mode 100644 index 000000000..2a2f86774 --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-grapheme/LICENSE @@ -0,0 +1,21 @@ + +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/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php b/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php new file mode 100644 index 000000000..880c8a2ed --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php @@ -0,0 +1,58 @@ += 80000) { +return require __DIR__.'/bootstrap80.php'; +} + +if (!defined('GRAPHEME_EXTR_COUNT')) { +define('GRAPHEME_EXTR_COUNT', 0); +} +if (!defined('GRAPHEME_EXTR_MAXBYTES')) { +define('GRAPHEME_EXTR_MAXBYTES', 1); +} +if (!defined('GRAPHEME_EXTR_MAXCHARS')) { +define('GRAPHEME_EXTR_MAXCHARS', 2); +} + +if (!function_exists('grapheme_extract')) { +function grapheme_extract($haystack, $size, $type = 0, $start = 0, &$next = 0) { return p\Grapheme::grapheme_extract($haystack, $size, $type, $start, $next); } +} +if (!function_exists('grapheme_stripos')) { +function grapheme_stripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_stripos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_stristr')) { +function grapheme_stristr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_stristr($haystack, $needle, $beforeNeedle); } +} +if (!function_exists('grapheme_strlen')) { +function grapheme_strlen($input) { return p\Grapheme::grapheme_strlen($input); } +} +if (!function_exists('grapheme_strpos')) { +function grapheme_strpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strpos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_strripos')) { +function grapheme_strripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strripos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_strrpos')) { +function grapheme_strrpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strrpos($haystack, $needle, $offset); } +} +if (!function_exists('grapheme_strstr')) { +function grapheme_strstr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_strstr($haystack, $needle, $beforeNeedle); } +} +if (!function_exists('grapheme_substr')) { +function grapheme_substr($string, $offset, $length = null) { return p\Grapheme::grapheme_substr($string, $offset, $length); } +} diff --git a/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php b/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php new file mode 100644 index 000000000..cde24b878 --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php @@ -0,0 +1,50 @@ + 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(string $s, int $form = self::FORM_C) +{ +if (!\in_array($form, [self::NFD, self::NFKD, self::NFC, self::NFKC])) { +return false; +} +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(string $s, int $form = self::FORM_C) +{ +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; +} + +if (80000 > \PHP_VERSION_ID) { +return false; +} + +throw new \ValueError('normalizer_normalize(): Argument #2 ($form) must be a a valid normalization form'); +} + +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 & (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") { + + +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) { + + +$ucls = $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 { + + +$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 = []; +$i = 0; +$len = \strlen($s); + +while ($i < $len) { +if ($s[$i] < "\x80") { + + +if ($c) { +ksort($c); +$result .= implode('', $c); +$c = []; +} + +$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) { + + +if ($uchr !== $j = $compatMap[$uchr] ?? ($decompMap[$uchr] ?? $uchr)) { +$uchr = $j; + +$j = \strlen($uchr); +$ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"]; + +if ($ulen != $j) { + + +$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])) { + + +if (!isset($c[$combClass[$uchr]])) { +$c[$combClass[$uchr]] = ''; +} +$c[$combClass[$uchr]] .= $uchr; +continue; +} +} else { + + +$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 = []; +} + +$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/composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php new file mode 100644 index 000000000..27a7e850c --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php @@ -0,0 +1,17 @@ + 'À', +'Á' => 'Á', +'Â' => 'Â', +'Ã' => 'Ã', +'Ä' => 'Ä', +'Å' => 'Å', +'Ç' => 'Ç', +'È' => 'È', +'É' => 'É', +'Ê' => 'Ê', +'Ë' => 'Ë', +'Ì' => 'Ì', +'Í' => 'Í', +'Î' => 'Î', +'Ï' => 'Ï', +'Ñ' => 'Ñ', +'Ò' => 'Ò', +'Ó' => 'Ó', +'Ô' => 'Ô', +'Õ' => 'Õ', +'Ö' => 'Ö', +'Ù' => 'Ù', +'Ú' => 'Ú', +'Û' => 'Û', +'Ü' => 'Ü', +'Ý' => 'Ý', +'à' => 'à', +'á' => 'á', +'â' => 'â', +'ã' => 'ã', +'ä' => 'ä', +'å' => 'å', +'ç' => 'ç', +'è' => 'è', +'é' => 'é', +'ê' => 'ê', +'ë' => 'ë', +'ì' => 'ì', +'í' => 'í', +'î' => 'î', +'ï' => 'ï', +'ñ' => 'ñ', +'ò' => 'ò', +'ó' => 'ó', +'ô' => 'ô', +'õ' => 'õ', +'ö' => 'ö', +'ù' => 'ù', +'ú' => 'ú', +'û' => 'û', +'ü' => 'ü', +'ý' => 'ý', +'ÿ' => 'ÿ', +'Ā' => 'Ā', +'ā' => 'ā', +'Ă' => 'Ă', +'ă' => 'ă', +'Ą' => 'Ą', +'ą' => 'ą', +'Ć' => 'Ć', +'ć' => 'ć', +'Ĉ' => 'Ĉ', +'ĉ' => 'ĉ', +'Ċ' => 'Ċ', +'ċ' => 'ċ', +'Č' => 'Č', +'č' => 'č', +'Ď' => 'Ď', +'ď' => 'ď', +'Ē' => 'Ē', +'ē' => 'ē', +'Ĕ' => 'Ĕ', +'ĕ' => 'ĕ', +'Ė' => 'Ė', +'ė' => 'ė', +'Ę' => 'Ę', +'ę' => 'ę', +'Ě' => 'Ě', +'ě' => 'ě', +'Ĝ' => 'Ĝ', +'ĝ' => 'ĝ', +'Ğ' => 'Ğ', +'ğ' => 'ğ', +'Ġ' => 'Ġ', +'ġ' => 'ġ', +'Ģ' => 'Ģ', +'ģ' => 'ģ', +'Ĥ' => 'Ĥ', +'ĥ' => 'ĥ', +'Ĩ' => 'Ĩ', +'ĩ' => 'ĩ', +'Ī' => 'Ī', +'ī' => 'ī', +'Ĭ' => 'Ĭ', +'ĭ' => 'ĭ', +'Į' => 'Į', +'į' => 'į', +'İ' => 'İ', +'Ĵ' => 'Ĵ', +'ĵ' => 'ĵ', +'Ķ' => 'Ķ', +'ķ' => 'ķ', +'Ĺ' => 'Ĺ', +'ĺ' => 'ĺ', +'Ļ' => 'Ļ', +'ļ' => 'ļ', +'Ľ' => 'Ľ', +'ľ' => 'ľ', +'Ń' => 'Ń', +'ń' => 'ń', +'Ņ' => 'Ņ', +'ņ' => 'ņ', +'Ň' => 'Ň', +'ň' => 'ň', +'Ō' => 'Ō', +'ō' => 'ō', +'Ŏ' => 'Ŏ', +'ŏ' => 'ŏ', +'Ő' => 'Ő', +'ő' => 'ő', +'Ŕ' => 'Ŕ', +'ŕ' => 'ŕ', +'Ŗ' => 'Ŗ', +'ŗ' => 'ŗ', +'Ř' => 'Ř', +'ř' => 'ř', +'Ś' => 'Ś', +'ś' => 'ś', +'Ŝ' => 'Ŝ', +'ŝ' => 'ŝ', +'Ş' => 'Ş', +'ş' => 'ş', +'Š' => 'Š', +'š' => 'š', +'Ţ' => 'Ţ', +'ţ' => 'ţ', +'Ť' => 'Ť', +'ť' => 'ť', +'Ũ' => 'Ũ', +'ũ' => 'ũ', +'Ū' => 'Ū', +'ū' => 'ū', +'Ŭ' => 'Ŭ', +'ŭ' => 'ŭ', +'Ů' => 'Ů', +'ů' => 'ů', +'Ű' => 'Ű', +'ű' => 'ű', +'Ų' => 'Ų', +'ų' => 'ų', +'Ŵ' => 'Ŵ', +'ŵ' => 'ŵ', +'Ŷ' => 'Ŷ', +'ŷ' => 'ŷ', +'Ÿ' => 'Ÿ', +'Ź' => 'Ź', +'ź' => 'ź', +'Ż' => 'Ż', +'ż' => 'ż', +'Ž' => 'Ž', +'ž' => 'ž', +'Ơ' => 'Ơ', +'ơ' => 'ơ', +'Ư' => 'Ư', +'ư' => 'ư', +'Ǎ' => 'Ǎ', +'ǎ' => 'ǎ', +'Ǐ' => 'Ǐ', +'ǐ' => 'ǐ', +'Ǒ' => 'Ǒ', +'ǒ' => 'ǒ', +'Ǔ' => 'Ǔ', +'ǔ' => 'ǔ', +'Ǖ' => 'Ǖ', +'ǖ' => 'ǖ', +'Ǘ' => 'Ǘ', +'ǘ' => 'ǘ', +'Ǚ' => 'Ǚ', +'ǚ' => 'ǚ', +'Ǜ' => 'Ǜ', +'ǜ' => 'ǜ', +'Ǟ' => 'Ǟ', +'ǟ' => 'ǟ', +'Ǡ' => 'Ǡ', +'ǡ' => 'ǡ', +'Ǣ' => 'Ǣ', +'ǣ' => 'ǣ', +'Ǧ' => 'Ǧ', +'ǧ' => 'ǧ', +'Ǩ' => 'Ǩ', +'ǩ' => 'ǩ', +'Ǫ' => 'Ǫ', +'ǫ' => 'ǫ', +'Ǭ' => 'Ǭ', +'ǭ' => 'ǭ', +'Ǯ' => 'Ǯ', +'ǯ' => 'ǯ', +'ǰ' => 'ǰ', +'Ǵ' => 'Ǵ', +'ǵ' => 'ǵ', +'Ǹ' => 'Ǹ', +'ǹ' => 'ǹ', +'Ǻ' => 'Ǻ', +'ǻ' => 'ǻ', +'Ǽ' => 'Ǽ', +'ǽ' => 'ǽ', +'Ǿ' => 'Ǿ', +'ǿ' => 'ǿ', +'Ȁ' => 'Ȁ', +'ȁ' => 'ȁ', +'Ȃ' => 'Ȃ', +'ȃ' => 'ȃ', +'Ȅ' => 'Ȅ', +'ȅ' => 'ȅ', +'Ȇ' => 'Ȇ', +'ȇ' => 'ȇ', +'Ȉ' => 'Ȉ', +'ȉ' => 'ȉ', +'Ȋ' => 'Ȋ', +'ȋ' => 'ȋ', +'Ȍ' => 'Ȍ', +'ȍ' => 'ȍ', +'Ȏ' => 'Ȏ', +'ȏ' => 'ȏ', +'Ȑ' => 'Ȑ', +'ȑ' => 'ȑ', +'Ȓ' => 'Ȓ', +'ȓ' => 'ȓ', +'Ȕ' => 'Ȕ', +'ȕ' => 'ȕ', +'Ȗ' => 'Ȗ', +'ȗ' => 'ȗ', +'Ș' => 'Ș', +'ș' => 'ș', +'Ț' => 'Ț', +'ț' => 'ț', +'Ȟ' => 'Ȟ', +'ȟ' => 'ȟ', +'Ȧ' => 'Ȧ', +'ȧ' => 'ȧ', +'Ȩ' => 'Ȩ', +'ȩ' => 'ȩ', +'Ȫ' => 'Ȫ', +'ȫ' => 'ȫ', +'Ȭ' => 'Ȭ', +'ȭ' => 'ȭ', +'Ȯ' => 'Ȯ', +'ȯ' => 'ȯ', +'Ȱ' => 'Ȱ', +'ȱ' => 'ȱ', +'Ȳ' => 'Ȳ', +'ȳ' => 'ȳ', +'΅' => '΅', +'Ά' => 'Ά', +'Έ' => 'Έ', +'Ή' => 'Ή', +'Ί' => 'Ί', +'Ό' => 'Ό', +'Ύ' => 'Ύ', +'Ώ' => 'Ώ', +'ΐ' => 'ΐ', +'Ϊ' => 'Ϊ', +'Ϋ' => 'Ϋ', +'ά' => 'ά', +'έ' => 'έ', +'ή' => 'ή', +'ί' => 'ί', +'ΰ' => 'ΰ', +'ϊ' => 'ϊ', +'ϋ' => 'ϋ', +'ό' => 'ό', +'ύ' => 'ύ', +'ώ' => 'ώ', +'ϓ' => 'ϓ', +'ϔ' => 'ϔ', +'Ѐ' => 'Ѐ', +'Ё' => 'Ё', +'Ѓ' => 'Ѓ', +'Ї' => 'Ї', +'Ќ' => 'Ќ', +'Ѝ' => 'Ѝ', +'Ў' => 'Ў', +'Й' => 'Й', +'й' => 'й', +'ѐ' => 'ѐ', +'ё' => 'ё', +'ѓ' => 'ѓ', +'ї' => 'ї', +'ќ' => 'ќ', +'ѝ' => 'ѝ', +'ў' => 'ў', +'Ѷ' => 'Ѷ', +'ѷ' => 'ѷ', +'Ӂ' => 'Ӂ', +'ӂ' => 'ӂ', +'Ӑ' => 'Ӑ', +'ӑ' => 'ӑ', +'Ӓ' => 'Ӓ', +'ӓ' => 'ӓ', +'Ӗ' => 'Ӗ', +'ӗ' => 'ӗ', +'Ӛ' => 'Ӛ', +'ӛ' => 'ӛ', +'Ӝ' => 'Ӝ', +'ӝ' => 'ӝ', +'Ӟ' => 'Ӟ', +'ӟ' => 'ӟ', +'Ӣ' => 'Ӣ', +'ӣ' => 'ӣ', +'Ӥ' => 'Ӥ', +'ӥ' => 'ӥ', +'Ӧ' => 'Ӧ', +'ӧ' => 'ӧ', +'Ӫ' => 'Ӫ', +'ӫ' => 'ӫ', +'Ӭ' => 'Ӭ', +'ӭ' => 'ӭ', +'Ӯ' => 'Ӯ', +'ӯ' => 'ӯ', +'Ӱ' => 'Ӱ', +'ӱ' => 'ӱ', +'Ӳ' => 'Ӳ', +'ӳ' => 'ӳ', +'Ӵ' => 'Ӵ', +'ӵ' => 'ӵ', +'Ӹ' => 'Ӹ', +'ӹ' => 'ӹ', +'آ' => 'آ', +'أ' => 'أ', +'ؤ' => 'ؤ', +'إ' => 'إ', +'ئ' => 'ئ', +'ۀ' => 'ۀ', +'ۂ' => 'ۂ', +'ۓ' => 'ۓ', +'ऩ' => 'ऩ', +'ऱ' => 'ऱ', +'ऴ' => 'ऴ', +'ো' => 'ো', +'ৌ' => 'ৌ', +'ୈ' => 'ୈ', +'ୋ' => 'ୋ', +'ୌ' => 'ୌ', +'ஔ' => 'ஔ', +'ொ' => 'ொ', +'ோ' => 'ோ', +'ௌ' => 'ௌ', +'ై' => 'ై', +'ೀ' => 'ೀ', +'ೇ' => 'ೇ', +'ೈ' => 'ೈ', +'ೊ' => 'ೊ', +'ೋ' => 'ೋ', +'ൊ' => 'ൊ', +'ോ' => 'ോ', +'ൌ' => 'ൌ', +'ේ' => 'ේ', +'ො' => 'ො', +'ෝ' => 'ෝ', +'ෞ' => 'ෞ', +'ဦ' => 'ဦ', +'ᬆ' => 'ᬆ', +'ᬈ' => 'ᬈ', +'ᬊ' => 'ᬊ', +'ᬌ' => 'ᬌ', +'ᬎ' => 'ᬎ', +'ᬒ' => 'ᬒ', +'ᬻ' => 'ᬻ', +'ᬽ' => 'ᬽ', +'ᭀ' => 'ᭀ', +'ᭁ' => 'ᭁ', +'ᭃ' => 'ᭃ', +'Ḁ' => 'Ḁ', +'ḁ' => 'ḁ', +'Ḃ' => 'Ḃ', +'ḃ' => 'ḃ', +'Ḅ' => 'Ḅ', +'ḅ' => 'ḅ', +'Ḇ' => 'Ḇ', +'ḇ' => 'ḇ', +'Ḉ' => 'Ḉ', +'ḉ' => 'ḉ', +'Ḋ' => 'Ḋ', +'ḋ' => 'ḋ', +'Ḍ' => 'Ḍ', +'ḍ' => 'ḍ', +'Ḏ' => 'Ḏ', +'ḏ' => 'ḏ', +'Ḑ' => 'Ḑ', +'ḑ' => 'ḑ', +'Ḓ' => 'Ḓ', +'ḓ' => 'ḓ', +'Ḕ' => 'Ḕ', +'ḕ' => 'ḕ', +'Ḗ' => 'Ḗ', +'ḗ' => 'ḗ', +'Ḙ' => 'Ḙ', +'ḙ' => 'ḙ', +'Ḛ' => 'Ḛ', +'ḛ' => 'ḛ', +'Ḝ' => 'Ḝ', +'ḝ' => 'ḝ', +'Ḟ' => 'Ḟ', +'ḟ' => 'ḟ', +'Ḡ' => 'Ḡ', +'ḡ' => 'ḡ', +'Ḣ' => 'Ḣ', +'ḣ' => 'ḣ', +'Ḥ' => 'Ḥ', +'ḥ' => 'ḥ', +'Ḧ' => 'Ḧ', +'ḧ' => 'ḧ', +'Ḩ' => 'Ḩ', +'ḩ' => 'ḩ', +'Ḫ' => 'Ḫ', +'ḫ' => 'ḫ', +'Ḭ' => 'Ḭ', +'ḭ' => 'ḭ', +'Ḯ' => 'Ḯ', +'ḯ' => 'ḯ', +'Ḱ' => 'Ḱ', +'ḱ' => 'ḱ', +'Ḳ' => 'Ḳ', +'ḳ' => 'ḳ', +'Ḵ' => 'Ḵ', +'ḵ' => 'ḵ', +'Ḷ' => 'Ḷ', +'ḷ' => 'ḷ', +'Ḹ' => 'Ḹ', +'ḹ' => 'ḹ', +'Ḻ' => 'Ḻ', +'ḻ' => 'ḻ', +'Ḽ' => 'Ḽ', +'ḽ' => 'ḽ', +'Ḿ' => 'Ḿ', +'ḿ' => 'ḿ', +'Ṁ' => 'Ṁ', +'ṁ' => 'ṁ', +'Ṃ' => 'Ṃ', +'ṃ' => 'ṃ', +'Ṅ' => 'Ṅ', +'ṅ' => 'ṅ', +'Ṇ' => 'Ṇ', +'ṇ' => 'ṇ', +'Ṉ' => 'Ṉ', +'ṉ' => 'ṉ', +'Ṋ' => 'Ṋ', +'ṋ' => 'ṋ', +'Ṍ' => 'Ṍ', +'ṍ' => 'ṍ', +'Ṏ' => 'Ṏ', +'ṏ' => 'ṏ', +'Ṑ' => 'Ṑ', +'ṑ' => 'ṑ', +'Ṓ' => 'Ṓ', +'ṓ' => 'ṓ', +'Ṕ' => 'Ṕ', +'ṕ' => 'ṕ', +'Ṗ' => 'Ṗ', +'ṗ' => 'ṗ', +'Ṙ' => 'Ṙ', +'ṙ' => 'ṙ', +'Ṛ' => 'Ṛ', +'ṛ' => 'ṛ', +'Ṝ' => 'Ṝ', +'ṝ' => 'ṝ', +'Ṟ' => 'Ṟ', +'ṟ' => 'ṟ', +'Ṡ' => 'Ṡ', +'ṡ' => 'ṡ', +'Ṣ' => 'Ṣ', +'ṣ' => 'ṣ', +'Ṥ' => 'Ṥ', +'ṥ' => 'ṥ', +'Ṧ' => 'Ṧ', +'ṧ' => 'ṧ', +'Ṩ' => 'Ṩ', +'ṩ' => 'ṩ', +'Ṫ' => 'Ṫ', +'ṫ' => 'ṫ', +'Ṭ' => 'Ṭ', +'ṭ' => 'ṭ', +'Ṯ' => 'Ṯ', +'ṯ' => 'ṯ', +'Ṱ' => 'Ṱ', +'ṱ' => 'ṱ', +'Ṳ' => 'Ṳ', +'ṳ' => 'ṳ', +'Ṵ' => 'Ṵ', +'ṵ' => 'ṵ', +'Ṷ' => 'Ṷ', +'ṷ' => 'ṷ', +'Ṹ' => 'Ṹ', +'ṹ' => 'ṹ', +'Ṻ' => 'Ṻ', +'ṻ' => 'ṻ', +'Ṽ' => 'Ṽ', +'ṽ' => 'ṽ', +'Ṿ' => 'Ṿ', +'ṿ' => 'ṿ', +'Ẁ' => 'Ẁ', +'ẁ' => 'ẁ', +'Ẃ' => 'Ẃ', +'ẃ' => 'ẃ', +'Ẅ' => 'Ẅ', +'ẅ' => 'ẅ', +'Ẇ' => 'Ẇ', +'ẇ' => 'ẇ', +'Ẉ' => 'Ẉ', +'ẉ' => 'ẉ', +'Ẋ' => 'Ẋ', +'ẋ' => 'ẋ', +'Ẍ' => 'Ẍ', +'ẍ' => 'ẍ', +'Ẏ' => 'Ẏ', +'ẏ' => 'ẏ', +'Ẑ' => 'Ẑ', +'ẑ' => 'ẑ', +'Ẓ' => 'Ẓ', +'ẓ' => 'ẓ', +'Ẕ' => 'Ẕ', +'ẕ' => 'ẕ', +'ẖ' => 'ẖ', +'ẗ' => 'ẗ', +'ẘ' => 'ẘ', +'ẙ' => 'ẙ', +'ẛ' => 'ẛ', +'Ạ' => 'Ạ', +'ạ' => 'ạ', +'Ả' => 'Ả', +'ả' => 'ả', +'Ấ' => 'Ấ', +'ấ' => 'ấ', +'Ầ' => 'Ầ', +'ầ' => 'ầ', +'Ẩ' => 'Ẩ', +'ẩ' => 'ẩ', +'Ẫ' => 'Ẫ', +'ẫ' => 'ẫ', +'Ậ' => 'Ậ', +'ậ' => 'ậ', +'Ắ' => 'Ắ', +'ắ' => 'ắ', +'Ằ' => 'Ằ', +'ằ' => 'ằ', +'Ẳ' => 'Ẳ', +'ẳ' => 'ẳ', +'Ẵ' => 'Ẵ', +'ẵ' => 'ẵ', +'Ặ' => 'Ặ', +'ặ' => 'ặ', +'Ẹ' => 'Ẹ', +'ẹ' => 'ẹ', +'Ẻ' => 'Ẻ', +'ẻ' => 'ẻ', +'Ẽ' => 'Ẽ', +'ẽ' => 'ẽ', +'Ế' => 'Ế', +'ế' => 'ế', +'Ề' => 'Ề', +'ề' => 'ề', +'Ể' => 'Ể', +'ể' => 'ể', +'Ễ' => 'Ễ', +'ễ' => 'ễ', +'Ệ' => 'Ệ', +'ệ' => 'ệ', +'Ỉ' => 'Ỉ', +'ỉ' => 'ỉ', +'Ị' => 'Ị', +'ị' => 'ị', +'Ọ' => 'Ọ', +'ọ' => 'ọ', +'Ỏ' => 'Ỏ', +'ỏ' => 'ỏ', +'Ố' => 'Ố', +'ố' => 'ố', +'Ồ' => 'Ồ', +'ồ' => 'ồ', +'Ổ' => 'Ổ', +'ổ' => 'ổ', +'Ỗ' => 'Ỗ', +'ỗ' => 'ỗ', +'Ộ' => 'Ộ', +'ộ' => 'ộ', +'Ớ' => 'Ớ', +'ớ' => 'ớ', +'Ờ' => 'Ờ', +'ờ' => 'ờ', +'Ở' => 'Ở', +'ở' => 'ở', +'Ỡ' => 'Ỡ', +'ỡ' => 'ỡ', +'Ợ' => 'Ợ', +'ợ' => 'ợ', +'Ụ' => 'Ụ', +'ụ' => 'ụ', +'Ủ' => 'Ủ', +'ủ' => 'ủ', +'Ứ' => 'Ứ', +'ứ' => 'ứ', +'Ừ' => 'Ừ', +'ừ' => 'ừ', +'Ử' => 'Ử', +'ử' => 'ử', +'Ữ' => 'Ữ', +'ữ' => 'ữ', +'Ự' => 'Ự', +'ự' => 'ự', +'Ỳ' => 'Ỳ', +'ỳ' => 'ỳ', +'Ỵ' => 'Ỵ', +'ỵ' => 'ỵ', +'Ỷ' => 'Ỷ', +'ỷ' => 'ỷ', +'Ỹ' => 'Ỹ', +'ỹ' => 'ỹ', +'ἀ' => 'ἀ', +'ἁ' => 'ἁ', +'ἂ' => 'ἂ', +'ἃ' => 'ἃ', +'ἄ' => 'ἄ', +'ἅ' => 'ἅ', +'ἆ' => 'ἆ', +'ἇ' => 'ἇ', +'Ἀ' => 'Ἀ', +'Ἁ' => 'Ἁ', +'Ἂ' => 'Ἂ', +'Ἃ' => 'Ἃ', +'Ἄ' => 'Ἄ', +'Ἅ' => 'Ἅ', +'Ἆ' => 'Ἆ', +'Ἇ' => 'Ἇ', +'ἐ' => 'ἐ', +'ἑ' => 'ἑ', +'ἒ' => 'ἒ', +'ἓ' => 'ἓ', +'ἔ' => 'ἔ', +'ἕ' => 'ἕ', +'Ἐ' => 'Ἐ', +'Ἑ' => 'Ἑ', +'Ἒ' => 'Ἒ', +'Ἓ' => 'Ἓ', +'Ἔ' => 'Ἔ', +'Ἕ' => 'Ἕ', +'ἠ' => 'ἠ', +'ἡ' => 'ἡ', +'ἢ' => 'ἢ', +'ἣ' => 'ἣ', +'ἤ' => 'ἤ', +'ἥ' => 'ἥ', +'ἦ' => 'ἦ', +'ἧ' => 'ἧ', +'Ἠ' => 'Ἠ', +'Ἡ' => 'Ἡ', +'Ἢ' => 'Ἢ', +'Ἣ' => 'Ἣ', +'Ἤ' => 'Ἤ', +'Ἥ' => 'Ἥ', +'Ἦ' => 'Ἦ', +'Ἧ' => 'Ἧ', +'ἰ' => 'ἰ', +'ἱ' => 'ἱ', +'ἲ' => 'ἲ', +'ἳ' => 'ἳ', +'ἴ' => 'ἴ', +'ἵ' => 'ἵ', +'ἶ' => 'ἶ', +'ἷ' => 'ἷ', +'Ἰ' => 'Ἰ', +'Ἱ' => 'Ἱ', +'Ἲ' => 'Ἲ', +'Ἳ' => 'Ἳ', +'Ἴ' => 'Ἴ', +'Ἵ' => 'Ἵ', +'Ἶ' => 'Ἶ', +'Ἷ' => 'Ἷ', +'ὀ' => 'ὀ', +'ὁ' => 'ὁ', +'ὂ' => 'ὂ', +'ὃ' => 'ὃ', +'ὄ' => 'ὄ', +'ὅ' => 'ὅ', +'Ὀ' => 'Ὀ', +'Ὁ' => 'Ὁ', +'Ὂ' => 'Ὂ', +'Ὃ' => 'Ὃ', +'Ὄ' => 'Ὄ', +'Ὅ' => 'Ὅ', +'ὐ' => 'ὐ', +'ὑ' => 'ὑ', +'ὒ' => 'ὒ', +'ὓ' => 'ὓ', +'ὔ' => 'ὔ', +'ὕ' => 'ὕ', +'ὖ' => 'ὖ', +'ὗ' => 'ὗ', +'Ὑ' => 'Ὑ', +'Ὓ' => 'Ὓ', +'Ὕ' => 'Ὕ', +'Ὗ' => 'Ὗ', +'ὠ' => 'ὠ', +'ὡ' => 'ὡ', +'ὢ' => 'ὢ', +'ὣ' => 'ὣ', +'ὤ' => 'ὤ', +'ὥ' => 'ὥ', +'ὦ' => 'ὦ', +'ὧ' => 'ὧ', +'Ὠ' => 'Ὠ', +'Ὡ' => 'Ὡ', +'Ὢ' => 'Ὢ', +'Ὣ' => 'Ὣ', +'Ὤ' => 'Ὤ', +'Ὥ' => 'Ὥ', +'Ὦ' => 'Ὦ', +'Ὧ' => 'Ὧ', +'ὰ' => 'ὰ', +'ὲ' => 'ὲ', +'ὴ' => 'ὴ', +'ὶ' => 'ὶ', +'ὸ' => 'ὸ', +'ὺ' => 'ὺ', +'ὼ' => 'ὼ', +'ᾀ' => 'ᾀ', +'ᾁ' => 'ᾁ', +'ᾂ' => 'ᾂ', +'ᾃ' => 'ᾃ', +'ᾄ' => 'ᾄ', +'ᾅ' => 'ᾅ', +'ᾆ' => 'ᾆ', +'ᾇ' => 'ᾇ', +'ᾈ' => 'ᾈ', +'ᾉ' => 'ᾉ', +'ᾊ' => 'ᾊ', +'ᾋ' => 'ᾋ', +'ᾌ' => 'ᾌ', +'ᾍ' => 'ᾍ', +'ᾎ' => 'ᾎ', +'ᾏ' => 'ᾏ', +'ᾐ' => 'ᾐ', +'ᾑ' => 'ᾑ', +'ᾒ' => 'ᾒ', +'ᾓ' => 'ᾓ', +'ᾔ' => 'ᾔ', +'ᾕ' => 'ᾕ', +'ᾖ' => 'ᾖ', +'ᾗ' => 'ᾗ', +'ᾘ' => 'ᾘ', +'ᾙ' => 'ᾙ', +'ᾚ' => 'ᾚ', +'ᾛ' => 'ᾛ', +'ᾜ' => 'ᾜ', +'ᾝ' => 'ᾝ', +'ᾞ' => 'ᾞ', +'ᾟ' => 'ᾟ', +'ᾠ' => 'ᾠ', +'ᾡ' => 'ᾡ', +'ᾢ' => 'ᾢ', +'ᾣ' => 'ᾣ', +'ᾤ' => 'ᾤ', +'ᾥ' => 'ᾥ', +'ᾦ' => 'ᾦ', +'ᾧ' => 'ᾧ', +'ᾨ' => 'ᾨ', +'ᾩ' => 'ᾩ', +'ᾪ' => 'ᾪ', +'ᾫ' => 'ᾫ', +'ᾬ' => 'ᾬ', +'ᾭ' => 'ᾭ', +'ᾮ' => 'ᾮ', +'ᾯ' => 'ᾯ', +'ᾰ' => 'ᾰ', +'ᾱ' => 'ᾱ', +'ᾲ' => 'ᾲ', +'ᾳ' => 'ᾳ', +'ᾴ' => 'ᾴ', +'ᾶ' => 'ᾶ', +'ᾷ' => 'ᾷ', +'Ᾰ' => 'Ᾰ', +'Ᾱ' => 'Ᾱ', +'Ὰ' => 'Ὰ', +'ᾼ' => 'ᾼ', +'῁' => '῁', +'ῂ' => 'ῂ', +'ῃ' => 'ῃ', +'ῄ' => 'ῄ', +'ῆ' => 'ῆ', +'ῇ' => 'ῇ', +'Ὲ' => 'Ὲ', +'Ὴ' => 'Ὴ', +'ῌ' => 'ῌ', +'῍' => '῍', +'῎' => '῎', +'῏' => '῏', +'ῐ' => 'ῐ', +'ῑ' => 'ῑ', +'ῒ' => 'ῒ', +'ῖ' => 'ῖ', +'ῗ' => 'ῗ', +'Ῐ' => 'Ῐ', +'Ῑ' => 'Ῑ', +'Ὶ' => 'Ὶ', +'῝' => '῝', +'῞' => '῞', +'῟' => '῟', +'ῠ' => 'ῠ', +'ῡ' => 'ῡ', +'ῢ' => 'ῢ', +'ῤ' => 'ῤ', +'ῥ' => 'ῥ', +'ῦ' => 'ῦ', +'ῧ' => 'ῧ', +'Ῠ' => 'Ῠ', +'Ῡ' => 'Ῡ', +'Ὺ' => 'Ὺ', +'Ῥ' => 'Ῥ', +'῭' => '῭', +'ῲ' => 'ῲ', +'ῳ' => 'ῳ', +'ῴ' => 'ῴ', +'ῶ' => 'ῶ', +'ῷ' => 'ῷ', +'Ὸ' => 'Ὸ', +'Ὼ' => 'Ὼ', +'ῼ' => 'ῼ', +'↚' => '↚', +'↛' => '↛', +'↮' => '↮', +'⇍' => '⇍', +'⇎' => '⇎', +'⇏' => '⇏', +'∄' => '∄', +'∉' => '∉', +'∌' => '∌', +'∤' => '∤', +'∦' => '∦', +'≁' => '≁', +'≄' => '≄', +'≇' => '≇', +'≉' => '≉', +'≠' => '≠', +'≢' => '≢', +'≭' => '≭', +'≮' => '≮', +'≯' => '≯', +'≰' => '≰', +'≱' => '≱', +'≴' => '≴', +'≵' => '≵', +'≸' => '≸', +'≹' => '≹', +'⊀' => '⊀', +'⊁' => '⊁', +'⊄' => '⊄', +'⊅' => '⊅', +'⊈' => '⊈', +'⊉' => '⊉', +'⊬' => '⊬', +'⊭' => '⊭', +'⊮' => '⊮', +'⊯' => '⊯', +'⋠' => '⋠', +'⋡' => '⋡', +'⋢' => '⋢', +'⋣' => '⋣', +'⋪' => '⋪', +'⋫' => '⋫', +'⋬' => '⋬', +'⋭' => '⋭', +'が' => 'が', +'ぎ' => 'ぎ', +'ぐ' => 'ぐ', +'げ' => 'げ', +'ご' => 'ご', +'ざ' => 'ざ', +'じ' => 'じ', +'ず' => 'ず', +'ぜ' => 'ぜ', +'ぞ' => 'ぞ', +'だ' => 'だ', +'ぢ' => 'ぢ', +'づ' => 'づ', +'で' => 'で', +'ど' => 'ど', +'ば' => 'ば', +'ぱ' => 'ぱ', +'び' => 'び', +'ぴ' => 'ぴ', +'ぶ' => 'ぶ', +'ぷ' => 'ぷ', +'べ' => 'べ', +'ぺ' => 'ぺ', +'ぼ' => 'ぼ', +'ぽ' => 'ぽ', +'ゔ' => 'ゔ', +'ゞ' => 'ゞ', +'ガ' => 'ガ', +'ギ' => 'ギ', +'グ' => 'グ', +'ゲ' => 'ゲ', +'ゴ' => 'ゴ', +'ザ' => 'ザ', +'ジ' => 'ジ', +'ズ' => 'ズ', +'ゼ' => 'ゼ', +'ゾ' => 'ゾ', +'ダ' => 'ダ', +'ヂ' => 'ヂ', +'ヅ' => 'ヅ', +'デ' => 'デ', +'ド' => 'ド', +'バ' => 'バ', +'パ' => 'パ', +'ビ' => 'ビ', +'ピ' => 'ピ', +'ブ' => 'ブ', +'プ' => 'プ', +'ベ' => 'ベ', +'ペ' => 'ペ', +'ボ' => 'ボ', +'ポ' => 'ポ', +'ヴ' => 'ヴ', +'ヷ' => 'ヷ', +'ヸ' => 'ヸ', +'ヹ' => 'ヹ', +'ヺ' => 'ヺ', +'ヾ' => 'ヾ', +'𑂚' => '𑂚', +'𑂜' => '𑂜', +'𑂫' => '𑂫', +'𑄮' => '𑄮', +'𑄯' => '𑄯', +'𑍋' => '𑍋', +'𑍌' => '𑍌', +'𑒻' => '𑒻', +'𑒼' => '𑒼', +'𑒾' => '𑒾', +'𑖺' => '𑖺', +'𑖻' => '𑖻', +'𑤸' => '𑤸', +); diff --git a/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php new file mode 100644 index 000000000..c09566e4c --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php @@ -0,0 +1,2065 @@ + 'À', +'Á' => 'Á', +'Â' => 'Â', +'Ã' => 'Ã', +'Ä' => 'Ä', +'Å' => 'Å', +'Ç' => 'Ç', +'È' => 'È', +'É' => 'É', +'Ê' => 'Ê', +'Ë' => 'Ë', +'Ì' => 'Ì', +'Í' => 'Í', +'Î' => 'Î', +'Ï' => 'Ï', +'Ñ' => 'Ñ', +'Ò' => 'Ò', +'Ó' => 'Ó', +'Ô' => 'Ô', +'Õ' => 'Õ', +'Ö' => 'Ö', +'Ù' => 'Ù', +'Ú' => 'Ú', +'Û' => 'Û', +'Ü' => 'Ü', +'Ý' => 'Ý', +'à' => 'à', +'á' => 'á', +'â' => 'â', +'ã' => 'ã', +'ä' => 'ä', +'å' => 'å', +'ç' => 'ç', +'è' => 'è', +'é' => 'é', +'ê' => 'ê', +'ë' => 'ë', +'ì' => 'ì', +'í' => 'í', +'î' => 'î', +'ï' => 'ï', +'ñ' => 'ñ', +'ò' => 'ò', +'ó' => 'ó', +'ô' => 'ô', +'õ' => 'õ', +'ö' => 'ö', +'ù' => 'ù', +'ú' => 'ú', +'û' => 'û', +'ü' => 'ü', +'ý' => 'ý', +'ÿ' => 'ÿ', +'Ā' => 'Ā', +'ā' => 'ā', +'Ă' => 'Ă', +'ă' => 'ă', +'Ą' => 'Ą', +'ą' => 'ą', +'Ć' => 'Ć', +'ć' => 'ć', +'Ĉ' => 'Ĉ', +'ĉ' => 'ĉ', +'Ċ' => 'Ċ', +'ċ' => 'ċ', +'Č' => 'Č', +'č' => 'č', +'Ď' => 'Ď', +'ď' => 'ď', +'Ē' => 'Ē', +'ē' => 'ē', +'Ĕ' => 'Ĕ', +'ĕ' => 'ĕ', +'Ė' => 'Ė', +'ė' => 'ė', +'Ę' => 'Ę', +'ę' => 'ę', +'Ě' => 'Ě', +'ě' => 'ě', +'Ĝ' => 'Ĝ', +'ĝ' => 'ĝ', +'Ğ' => 'Ğ', +'ğ' => 'ğ', +'Ġ' => 'Ġ', +'ġ' => 'ġ', +'Ģ' => 'Ģ', +'ģ' => 'ģ', +'Ĥ' => 'Ĥ', +'ĥ' => 'ĥ', +'Ĩ' => 'Ĩ', +'ĩ' => 'ĩ', +'Ī' => 'Ī', +'ī' => 'ī', +'Ĭ' => 'Ĭ', +'ĭ' => 'ĭ', +'Į' => 'Į', +'į' => 'į', +'İ' => 'İ', +'Ĵ' => 'Ĵ', +'ĵ' => 'ĵ', +'Ķ' => 'Ķ', +'ķ' => 'ķ', +'Ĺ' => 'Ĺ', +'ĺ' => 'ĺ', +'Ļ' => 'Ļ', +'ļ' => 'ļ', +'Ľ' => 'Ľ', +'ľ' => 'ľ', +'Ń' => 'Ń', +'ń' => 'ń', +'Ņ' => 'Ņ', +'ņ' => 'ņ', +'Ň' => 'Ň', +'ň' => 'ň', +'Ō' => 'Ō', +'ō' => 'ō', +'Ŏ' => 'Ŏ', +'ŏ' => 'ŏ', +'Ő' => 'Ő', +'ő' => 'ő', +'Ŕ' => 'Ŕ', +'ŕ' => 'ŕ', +'Ŗ' => 'Ŗ', +'ŗ' => 'ŗ', +'Ř' => 'Ř', +'ř' => 'ř', +'Ś' => 'Ś', +'ś' => 'ś', +'Ŝ' => 'Ŝ', +'ŝ' => 'ŝ', +'Ş' => 'Ş', +'ş' => 'ş', +'Š' => 'Š', +'š' => 'š', +'Ţ' => 'Ţ', +'ţ' => 'ţ', +'Ť' => 'Ť', +'ť' => 'ť', +'Ũ' => 'Ũ', +'ũ' => 'ũ', +'Ū' => 'Ū', +'ū' => 'ū', +'Ŭ' => 'Ŭ', +'ŭ' => 'ŭ', +'Ů' => 'Ů', +'ů' => 'ů', +'Ű' => 'Ű', +'ű' => 'ű', +'Ų' => 'Ų', +'ų' => 'ų', +'Ŵ' => 'Ŵ', +'ŵ' => 'ŵ', +'Ŷ' => 'Ŷ', +'ŷ' => 'ŷ', +'Ÿ' => 'Ÿ', +'Ź' => 'Ź', +'ź' => 'ź', +'Ż' => 'Ż', +'ż' => 'ż', +'Ž' => 'Ž', +'ž' => 'ž', +'Ơ' => 'Ơ', +'ơ' => 'ơ', +'Ư' => 'Ư', +'ư' => 'ư', +'Ǎ' => 'Ǎ', +'ǎ' => 'ǎ', +'Ǐ' => 'Ǐ', +'ǐ' => 'ǐ', +'Ǒ' => 'Ǒ', +'ǒ' => 'ǒ', +'Ǔ' => 'Ǔ', +'ǔ' => 'ǔ', +'Ǖ' => 'Ǖ', +'ǖ' => 'ǖ', +'Ǘ' => 'Ǘ', +'ǘ' => 'ǘ', +'Ǚ' => 'Ǚ', +'ǚ' => 'ǚ', +'Ǜ' => 'Ǜ', +'ǜ' => 'ǜ', +'Ǟ' => 'Ǟ', +'ǟ' => 'ǟ', +'Ǡ' => 'Ǡ', +'ǡ' => 'ǡ', +'Ǣ' => 'Ǣ', +'ǣ' => 'ǣ', +'Ǧ' => 'Ǧ', +'ǧ' => 'ǧ', +'Ǩ' => 'Ǩ', +'ǩ' => 'ǩ', +'Ǫ' => 'Ǫ', +'ǫ' => 'ǫ', +'Ǭ' => 'Ǭ', +'ǭ' => 'ǭ', +'Ǯ' => 'Ǯ', +'ǯ' => 'ǯ', +'ǰ' => 'ǰ', +'Ǵ' => 'Ǵ', +'ǵ' => 'ǵ', +'Ǹ' => 'Ǹ', +'ǹ' => 'ǹ', +'Ǻ' => 'Ǻ', +'ǻ' => 'ǻ', +'Ǽ' => 'Ǽ', +'ǽ' => 'ǽ', +'Ǿ' => 'Ǿ', +'ǿ' => 'ǿ', +'Ȁ' => 'Ȁ', +'ȁ' => 'ȁ', +'Ȃ' => 'Ȃ', +'ȃ' => 'ȃ', +'Ȅ' => 'Ȅ', +'ȅ' => 'ȅ', +'Ȇ' => 'Ȇ', +'ȇ' => 'ȇ', +'Ȉ' => 'Ȉ', +'ȉ' => 'ȉ', +'Ȋ' => 'Ȋ', +'ȋ' => 'ȋ', +'Ȍ' => 'Ȍ', +'ȍ' => 'ȍ', +'Ȏ' => 'Ȏ', +'ȏ' => 'ȏ', +'Ȑ' => 'Ȑ', +'ȑ' => 'ȑ', +'Ȓ' => 'Ȓ', +'ȓ' => 'ȓ', +'Ȕ' => 'Ȕ', +'ȕ' => 'ȕ', +'Ȗ' => 'Ȗ', +'ȗ' => 'ȗ', +'Ș' => 'Ș', +'ș' => 'ș', +'Ț' => 'Ț', +'ț' => 'ț', +'Ȟ' => 'Ȟ', +'ȟ' => 'ȟ', +'Ȧ' => 'Ȧ', +'ȧ' => 'ȧ', +'Ȩ' => 'Ȩ', +'ȩ' => 'ȩ', +'Ȫ' => 'Ȫ', +'ȫ' => 'ȫ', +'Ȭ' => 'Ȭ', +'ȭ' => 'ȭ', +'Ȯ' => 'Ȯ', +'ȯ' => 'ȯ', +'Ȱ' => 'Ȱ', +'ȱ' => 'ȱ', +'Ȳ' => 'Ȳ', +'ȳ' => 'ȳ', +'̀' => '̀', +'́' => '́', +'̓' => '̓', +'̈́' => '̈́', +'ʹ' => 'ʹ', +';' => ';', +'΅' => '΅', +'Ά' => 'Ά', +'·' => '·', +'Έ' => 'Έ', +'Ή' => 'Ή', +'Ί' => 'Ί', +'Ό' => 'Ό', +'Ύ' => 'Ύ', +'Ώ' => 'Ώ', +'ΐ' => 'ΐ', +'Ϊ' => 'Ϊ', +'Ϋ' => 'Ϋ', +'ά' => 'ά', +'έ' => 'έ', +'ή' => 'ή', +'ί' => 'ί', +'ΰ' => 'ΰ', +'ϊ' => 'ϊ', +'ϋ' => 'ϋ', +'ό' => 'ό', +'ύ' => 'ύ', +'ώ' => 'ώ', +'ϓ' => 'ϓ', +'ϔ' => 'ϔ', +'Ѐ' => 'Ѐ', +'Ё' => 'Ё', +'Ѓ' => 'Ѓ', +'Ї' => 'Ї', +'Ќ' => 'Ќ', +'Ѝ' => 'Ѝ', +'Ў' => 'Ў', +'Й' => 'Й', +'й' => 'й', +'ѐ' => 'ѐ', +'ё' => 'ё', +'ѓ' => 'ѓ', +'ї' => 'ї', +'ќ' => 'ќ', +'ѝ' => 'ѝ', +'ў' => 'ў', +'Ѷ' => 'Ѷ', +'ѷ' => 'ѷ', +'Ӂ' => 'Ӂ', +'ӂ' => 'ӂ', +'Ӑ' => 'Ӑ', +'ӑ' => 'ӑ', +'Ӓ' => 'Ӓ', +'ӓ' => 'ӓ', +'Ӗ' => 'Ӗ', +'ӗ' => 'ӗ', +'Ӛ' => 'Ӛ', +'ӛ' => 'ӛ', +'Ӝ' => 'Ӝ', +'ӝ' => 'ӝ', +'Ӟ' => 'Ӟ', +'ӟ' => 'ӟ', +'Ӣ' => 'Ӣ', +'ӣ' => 'ӣ', +'Ӥ' => 'Ӥ', +'ӥ' => 'ӥ', +'Ӧ' => 'Ӧ', +'ӧ' => 'ӧ', +'Ӫ' => 'Ӫ', +'ӫ' => 'ӫ', +'Ӭ' => 'Ӭ', +'ӭ' => 'ӭ', +'Ӯ' => 'Ӯ', +'ӯ' => 'ӯ', +'Ӱ' => 'Ӱ', +'ӱ' => 'ӱ', +'Ӳ' => 'Ӳ', +'ӳ' => 'ӳ', +'Ӵ' => 'Ӵ', +'ӵ' => 'ӵ', +'Ӹ' => 'Ӹ', +'ӹ' => 'ӹ', +'آ' => 'آ', +'أ' => 'أ', +'ؤ' => 'ؤ', +'إ' => 'إ', +'ئ' => 'ئ', +'ۀ' => 'ۀ', +'ۂ' => 'ۂ', +'ۓ' => 'ۓ', +'ऩ' => 'ऩ', +'ऱ' => 'ऱ', +'ऴ' => 'ऴ', +'क़' => 'क़', +'ख़' => 'ख़', +'ग़' => 'ग़', +'ज़' => 'ज़', +'ड़' => 'ड़', +'ढ़' => 'ढ़', +'फ़' => 'फ़', +'य़' => 'य़', +'ো' => 'ো', +'ৌ' => 'ৌ', +'ড়' => 'ড়', +'ঢ়' => 'ঢ়', +'য়' => 'য়', +'ਲ਼' => 'ਲ਼', +'ਸ਼' => 'ਸ਼', +'ਖ਼' => 'ਖ਼', +'ਗ਼' => 'ਗ਼', +'ਜ਼' => 'ਜ਼', +'ਫ਼' => 'ਫ਼', +'ୈ' => 'ୈ', +'ୋ' => 'ୋ', +'ୌ' => 'ୌ', +'ଡ଼' => 'ଡ଼', +'ଢ଼' => 'ଢ଼', +'ஔ' => 'ஔ', +'ொ' => 'ொ', +'ோ' => 'ோ', +'ௌ' => 'ௌ', +'ై' => 'ై', +'ೀ' => 'ೀ', +'ೇ' => 'ೇ', +'ೈ' => 'ೈ', +'ೊ' => 'ೊ', +'ೋ' => 'ೋ', +'ൊ' => 'ൊ', +'ോ' => 'ോ', +'ൌ' => 'ൌ', +'ේ' => 'ේ', +'ො' => 'ො', +'ෝ' => 'ෝ', +'ෞ' => 'ෞ', +'གྷ' => 'གྷ', +'ཌྷ' => 'ཌྷ', +'དྷ' => 'དྷ', +'བྷ' => 'བྷ', +'ཛྷ' => 'ཛྷ', +'ཀྵ' => 'ཀྵ', +'ཱི' => 'ཱི', +'ཱུ' => 'ཱུ', +'ྲྀ' => 'ྲྀ', +'ླྀ' => 'ླྀ', +'ཱྀ' => 'ཱྀ', +'ྒྷ' => 'ྒྷ', +'ྜྷ' => 'ྜྷ', +'ྡྷ' => 'ྡྷ', +'ྦྷ' => 'ྦྷ', +'ྫྷ' => 'ྫྷ', +'ྐྵ' => 'ྐྵ', +'ဦ' => 'ဦ', +'ᬆ' => 'ᬆ', +'ᬈ' => 'ᬈ', +'ᬊ' => 'ᬊ', +'ᬌ' => 'ᬌ', +'ᬎ' => 'ᬎ', +'ᬒ' => 'ᬒ', +'ᬻ' => 'ᬻ', +'ᬽ' => 'ᬽ', +'ᭀ' => 'ᭀ', +'ᭁ' => 'ᭁ', +'ᭃ' => 'ᭃ', +'Ḁ' => 'Ḁ', +'ḁ' => 'ḁ', +'Ḃ' => 'Ḃ', +'ḃ' => 'ḃ', +'Ḅ' => 'Ḅ', +'ḅ' => 'ḅ', +'Ḇ' => 'Ḇ', +'ḇ' => 'ḇ', +'Ḉ' => 'Ḉ', +'ḉ' => 'ḉ', +'Ḋ' => 'Ḋ', +'ḋ' => 'ḋ', +'Ḍ' => 'Ḍ', +'ḍ' => 'ḍ', +'Ḏ' => 'Ḏ', +'ḏ' => 'ḏ', +'Ḑ' => 'Ḑ', +'ḑ' => 'ḑ', +'Ḓ' => 'Ḓ', +'ḓ' => 'ḓ', +'Ḕ' => 'Ḕ', +'ḕ' => 'ḕ', +'Ḗ' => 'Ḗ', +'ḗ' => 'ḗ', +'Ḙ' => 'Ḙ', +'ḙ' => 'ḙ', +'Ḛ' => 'Ḛ', +'ḛ' => 'ḛ', +'Ḝ' => 'Ḝ', +'ḝ' => 'ḝ', +'Ḟ' => 'Ḟ', +'ḟ' => 'ḟ', +'Ḡ' => 'Ḡ', +'ḡ' => 'ḡ', +'Ḣ' => 'Ḣ', +'ḣ' => 'ḣ', +'Ḥ' => 'Ḥ', +'ḥ' => 'ḥ', +'Ḧ' => 'Ḧ', +'ḧ' => 'ḧ', +'Ḩ' => 'Ḩ', +'ḩ' => 'ḩ', +'Ḫ' => 'Ḫ', +'ḫ' => 'ḫ', +'Ḭ' => 'Ḭ', +'ḭ' => 'ḭ', +'Ḯ' => 'Ḯ', +'ḯ' => 'ḯ', +'Ḱ' => 'Ḱ', +'ḱ' => 'ḱ', +'Ḳ' => 'Ḳ', +'ḳ' => 'ḳ', +'Ḵ' => 'Ḵ', +'ḵ' => 'ḵ', +'Ḷ' => 'Ḷ', +'ḷ' => 'ḷ', +'Ḹ' => 'Ḹ', +'ḹ' => 'ḹ', +'Ḻ' => 'Ḻ', +'ḻ' => 'ḻ', +'Ḽ' => 'Ḽ', +'ḽ' => 'ḽ', +'Ḿ' => 'Ḿ', +'ḿ' => 'ḿ', +'Ṁ' => 'Ṁ', +'ṁ' => 'ṁ', +'Ṃ' => 'Ṃ', +'ṃ' => 'ṃ', +'Ṅ' => 'Ṅ', +'ṅ' => 'ṅ', +'Ṇ' => 'Ṇ', +'ṇ' => 'ṇ', +'Ṉ' => 'Ṉ', +'ṉ' => 'ṉ', +'Ṋ' => 'Ṋ', +'ṋ' => 'ṋ', +'Ṍ' => 'Ṍ', +'ṍ' => 'ṍ', +'Ṏ' => 'Ṏ', +'ṏ' => 'ṏ', +'Ṑ' => 'Ṑ', +'ṑ' => 'ṑ', +'Ṓ' => 'Ṓ', +'ṓ' => 'ṓ', +'Ṕ' => 'Ṕ', +'ṕ' => 'ṕ', +'Ṗ' => 'Ṗ', +'ṗ' => 'ṗ', +'Ṙ' => 'Ṙ', +'ṙ' => 'ṙ', +'Ṛ' => 'Ṛ', +'ṛ' => 'ṛ', +'Ṝ' => 'Ṝ', +'ṝ' => 'ṝ', +'Ṟ' => 'Ṟ', +'ṟ' => 'ṟ', +'Ṡ' => 'Ṡ', +'ṡ' => 'ṡ', +'Ṣ' => 'Ṣ', +'ṣ' => 'ṣ', +'Ṥ' => 'Ṥ', +'ṥ' => 'ṥ', +'Ṧ' => 'Ṧ', +'ṧ' => 'ṧ', +'Ṩ' => 'Ṩ', +'ṩ' => 'ṩ', +'Ṫ' => 'Ṫ', +'ṫ' => 'ṫ', +'Ṭ' => 'Ṭ', +'ṭ' => 'ṭ', +'Ṯ' => 'Ṯ', +'ṯ' => 'ṯ', +'Ṱ' => 'Ṱ', +'ṱ' => 'ṱ', +'Ṳ' => 'Ṳ', +'ṳ' => 'ṳ', +'Ṵ' => 'Ṵ', +'ṵ' => 'ṵ', +'Ṷ' => 'Ṷ', +'ṷ' => 'ṷ', +'Ṹ' => 'Ṹ', +'ṹ' => 'ṹ', +'Ṻ' => 'Ṻ', +'ṻ' => 'ṻ', +'Ṽ' => 'Ṽ', +'ṽ' => 'ṽ', +'Ṿ' => 'Ṿ', +'ṿ' => 'ṿ', +'Ẁ' => 'Ẁ', +'ẁ' => 'ẁ', +'Ẃ' => 'Ẃ', +'ẃ' => 'ẃ', +'Ẅ' => 'Ẅ', +'ẅ' => 'ẅ', +'Ẇ' => 'Ẇ', +'ẇ' => 'ẇ', +'Ẉ' => 'Ẉ', +'ẉ' => 'ẉ', +'Ẋ' => 'Ẋ', +'ẋ' => 'ẋ', +'Ẍ' => 'Ẍ', +'ẍ' => 'ẍ', +'Ẏ' => 'Ẏ', +'ẏ' => 'ẏ', +'Ẑ' => 'Ẑ', +'ẑ' => 'ẑ', +'Ẓ' => 'Ẓ', +'ẓ' => 'ẓ', +'Ẕ' => 'Ẕ', +'ẕ' => 'ẕ', +'ẖ' => 'ẖ', +'ẗ' => 'ẗ', +'ẘ' => 'ẘ', +'ẙ' => 'ẙ', +'ẛ' => 'ẛ', +'Ạ' => 'Ạ', +'ạ' => 'ạ', +'Ả' => 'Ả', +'ả' => 'ả', +'Ấ' => 'Ấ', +'ấ' => 'ấ', +'Ầ' => 'Ầ', +'ầ' => 'ầ', +'Ẩ' => 'Ẩ', +'ẩ' => 'ẩ', +'Ẫ' => 'Ẫ', +'ẫ' => 'ẫ', +'Ậ' => 'Ậ', +'ậ' => 'ậ', +'Ắ' => 'Ắ', +'ắ' => 'ắ', +'Ằ' => 'Ằ', +'ằ' => 'ằ', +'Ẳ' => 'Ẳ', +'ẳ' => 'ẳ', +'Ẵ' => 'Ẵ', +'ẵ' => 'ẵ', +'Ặ' => 'Ặ', +'ặ' => 'ặ', +'Ẹ' => 'Ẹ', +'ẹ' => 'ẹ', +'Ẻ' => 'Ẻ', +'ẻ' => 'ẻ', +'Ẽ' => 'Ẽ', +'ẽ' => 'ẽ', +'Ế' => 'Ế', +'ế' => 'ế', +'Ề' => 'Ề', +'ề' => 'ề', +'Ể' => 'Ể', +'ể' => 'ể', +'Ễ' => 'Ễ', +'ễ' => 'ễ', +'Ệ' => 'Ệ', +'ệ' => 'ệ', +'Ỉ' => 'Ỉ', +'ỉ' => 'ỉ', +'Ị' => 'Ị', +'ị' => 'ị', +'Ọ' => 'Ọ', +'ọ' => 'ọ', +'Ỏ' => 'Ỏ', +'ỏ' => 'ỏ', +'Ố' => 'Ố', +'ố' => 'ố', +'Ồ' => 'Ồ', +'ồ' => 'ồ', +'Ổ' => 'Ổ', +'ổ' => 'ổ', +'Ỗ' => 'Ỗ', +'ỗ' => 'ỗ', +'Ộ' => 'Ộ', +'ộ' => 'ộ', +'Ớ' => 'Ớ', +'ớ' => 'ớ', +'Ờ' => 'Ờ', +'ờ' => 'ờ', +'Ở' => 'Ở', +'ở' => 'ở', +'Ỡ' => 'Ỡ', +'ỡ' => 'ỡ', +'Ợ' => 'Ợ', +'ợ' => 'ợ', +'Ụ' => 'Ụ', +'ụ' => 'ụ', +'Ủ' => 'Ủ', +'ủ' => 'ủ', +'Ứ' => 'Ứ', +'ứ' => 'ứ', +'Ừ' => 'Ừ', +'ừ' => 'ừ', +'Ử' => 'Ử', +'ử' => 'ử', +'Ữ' => 'Ữ', +'ữ' => 'ữ', +'Ự' => 'Ự', +'ự' => 'ự', +'Ỳ' => 'Ỳ', +'ỳ' => 'ỳ', +'Ỵ' => 'Ỵ', +'ỵ' => 'ỵ', +'Ỷ' => 'Ỷ', +'ỷ' => 'ỷ', +'Ỹ' => 'Ỹ', +'ỹ' => 'ỹ', +'ἀ' => 'ἀ', +'ἁ' => 'ἁ', +'ἂ' => 'ἂ', +'ἃ' => 'ἃ', +'ἄ' => 'ἄ', +'ἅ' => 'ἅ', +'ἆ' => 'ἆ', +'ἇ' => 'ἇ', +'Ἀ' => 'Ἀ', +'Ἁ' => 'Ἁ', +'Ἂ' => 'Ἂ', +'Ἃ' => 'Ἃ', +'Ἄ' => 'Ἄ', +'Ἅ' => 'Ἅ', +'Ἆ' => 'Ἆ', +'Ἇ' => 'Ἇ', +'ἐ' => 'ἐ', +'ἑ' => 'ἑ', +'ἒ' => 'ἒ', +'ἓ' => 'ἓ', +'ἔ' => 'ἔ', +'ἕ' => 'ἕ', +'Ἐ' => 'Ἐ', +'Ἑ' => 'Ἑ', +'Ἒ' => 'Ἒ', +'Ἓ' => 'Ἓ', +'Ἔ' => 'Ἔ', +'Ἕ' => 'Ἕ', +'ἠ' => 'ἠ', +'ἡ' => 'ἡ', +'ἢ' => 'ἢ', +'ἣ' => 'ἣ', +'ἤ' => 'ἤ', +'ἥ' => 'ἥ', +'ἦ' => 'ἦ', +'ἧ' => 'ἧ', +'Ἠ' => 'Ἠ', +'Ἡ' => 'Ἡ', +'Ἢ' => 'Ἢ', +'Ἣ' => 'Ἣ', +'Ἤ' => 'Ἤ', +'Ἥ' => 'Ἥ', +'Ἦ' => 'Ἦ', +'Ἧ' => 'Ἧ', +'ἰ' => 'ἰ', +'ἱ' => 'ἱ', +'ἲ' => 'ἲ', +'ἳ' => 'ἳ', +'ἴ' => 'ἴ', +'ἵ' => 'ἵ', +'ἶ' => 'ἶ', +'ἷ' => 'ἷ', +'Ἰ' => 'Ἰ', +'Ἱ' => 'Ἱ', +'Ἲ' => 'Ἲ', +'Ἳ' => 'Ἳ', +'Ἴ' => 'Ἴ', +'Ἵ' => 'Ἵ', +'Ἶ' => 'Ἶ', +'Ἷ' => 'Ἷ', +'ὀ' => 'ὀ', +'ὁ' => 'ὁ', +'ὂ' => 'ὂ', +'ὃ' => 'ὃ', +'ὄ' => 'ὄ', +'ὅ' => 'ὅ', +'Ὀ' => 'Ὀ', +'Ὁ' => 'Ὁ', +'Ὂ' => 'Ὂ', +'Ὃ' => 'Ὃ', +'Ὄ' => 'Ὄ', +'Ὅ' => 'Ὅ', +'ὐ' => 'ὐ', +'ὑ' => 'ὑ', +'ὒ' => 'ὒ', +'ὓ' => 'ὓ', +'ὔ' => 'ὔ', +'ὕ' => 'ὕ', +'ὖ' => 'ὖ', +'ὗ' => 'ὗ', +'Ὑ' => 'Ὑ', +'Ὓ' => 'Ὓ', +'Ὕ' => 'Ὕ', +'Ὗ' => 'Ὗ', +'ὠ' => 'ὠ', +'ὡ' => 'ὡ', +'ὢ' => 'ὢ', +'ὣ' => 'ὣ', +'ὤ' => 'ὤ', +'ὥ' => 'ὥ', +'ὦ' => 'ὦ', +'ὧ' => 'ὧ', +'Ὠ' => 'Ὠ', +'Ὡ' => 'Ὡ', +'Ὢ' => 'Ὢ', +'Ὣ' => 'Ὣ', +'Ὤ' => 'Ὤ', +'Ὥ' => 'Ὥ', +'Ὦ' => 'Ὦ', +'Ὧ' => 'Ὧ', +'ὰ' => 'ὰ', +'ά' => 'ά', +'ὲ' => 'ὲ', +'έ' => 'έ', +'ὴ' => 'ὴ', +'ή' => 'ή', +'ὶ' => 'ὶ', +'ί' => 'ί', +'ὸ' => 'ὸ', +'ό' => 'ό', +'ὺ' => 'ὺ', +'ύ' => 'ύ', +'ὼ' => 'ὼ', +'ώ' => 'ώ', +'ᾀ' => 'ᾀ', +'ᾁ' => 'ᾁ', +'ᾂ' => 'ᾂ', +'ᾃ' => 'ᾃ', +'ᾄ' => 'ᾄ', +'ᾅ' => 'ᾅ', +'ᾆ' => 'ᾆ', +'ᾇ' => 'ᾇ', +'ᾈ' => 'ᾈ', +'ᾉ' => 'ᾉ', +'ᾊ' => 'ᾊ', +'ᾋ' => 'ᾋ', +'ᾌ' => 'ᾌ', +'ᾍ' => 'ᾍ', +'ᾎ' => 'ᾎ', +'ᾏ' => 'ᾏ', +'ᾐ' => 'ᾐ', +'ᾑ' => 'ᾑ', +'ᾒ' => 'ᾒ', +'ᾓ' => 'ᾓ', +'ᾔ' => 'ᾔ', +'ᾕ' => 'ᾕ', +'ᾖ' => 'ᾖ', +'ᾗ' => 'ᾗ', +'ᾘ' => 'ᾘ', +'ᾙ' => 'ᾙ', +'ᾚ' => 'ᾚ', +'ᾛ' => 'ᾛ', +'ᾜ' => 'ᾜ', +'ᾝ' => 'ᾝ', +'ᾞ' => 'ᾞ', +'ᾟ' => 'ᾟ', +'ᾠ' => 'ᾠ', +'ᾡ' => 'ᾡ', +'ᾢ' => 'ᾢ', +'ᾣ' => 'ᾣ', +'ᾤ' => 'ᾤ', +'ᾥ' => 'ᾥ', +'ᾦ' => 'ᾦ', +'ᾧ' => 'ᾧ', +'ᾨ' => 'ᾨ', +'ᾩ' => 'ᾩ', +'ᾪ' => 'ᾪ', +'ᾫ' => 'ᾫ', +'ᾬ' => 'ᾬ', +'ᾭ' => 'ᾭ', +'ᾮ' => 'ᾮ', +'ᾯ' => 'ᾯ', +'ᾰ' => 'ᾰ', +'ᾱ' => 'ᾱ', +'ᾲ' => 'ᾲ', +'ᾳ' => 'ᾳ', +'ᾴ' => 'ᾴ', +'ᾶ' => 'ᾶ', +'ᾷ' => 'ᾷ', +'Ᾰ' => 'Ᾰ', +'Ᾱ' => 'Ᾱ', +'Ὰ' => 'Ὰ', +'Ά' => 'Ά', +'ᾼ' => 'ᾼ', +'ι' => 'ι', +'῁' => '῁', +'ῂ' => 'ῂ', +'ῃ' => 'ῃ', +'ῄ' => 'ῄ', +'ῆ' => 'ῆ', +'ῇ' => 'ῇ', +'Ὲ' => 'Ὲ', +'Έ' => 'Έ', +'Ὴ' => 'Ὴ', +'Ή' => 'Ή', +'ῌ' => 'ῌ', +'῍' => '῍', +'῎' => '῎', +'῏' => '῏', +'ῐ' => 'ῐ', +'ῑ' => 'ῑ', +'ῒ' => 'ῒ', +'ΐ' => 'ΐ', +'ῖ' => 'ῖ', +'ῗ' => 'ῗ', +'Ῐ' => 'Ῐ', +'Ῑ' => 'Ῑ', +'Ὶ' => 'Ὶ', +'Ί' => 'Ί', +'῝' => '῝', +'῞' => '῞', +'῟' => '῟', +'ῠ' => 'ῠ', +'ῡ' => 'ῡ', +'ῢ' => 'ῢ', +'ΰ' => 'ΰ', +'ῤ' => 'ῤ', +'ῥ' => 'ῥ', +'ῦ' => 'ῦ', +'ῧ' => 'ῧ', +'Ῠ' => 'Ῠ', +'Ῡ' => 'Ῡ', +'Ὺ' => 'Ὺ', +'Ύ' => 'Ύ', +'Ῥ' => 'Ῥ', +'῭' => '῭', +'΅' => '΅', +'`' => '`', +'ῲ' => 'ῲ', +'ῳ' => 'ῳ', +'ῴ' => 'ῴ', +'ῶ' => 'ῶ', +'ῷ' => 'ῷ', +'Ὸ' => 'Ὸ', +'Ό' => 'Ό', +'Ὼ' => 'Ὼ', +'Ώ' => 'Ώ', +'ῼ' => 'ῼ', +'´' => '´', +' ' => ' ', +' ' => ' ', +'Ω' => 'Ω', +'K' => 'K', +'Å' => 'Å', +'↚' => '↚', +'↛' => '↛', +'↮' => '↮', +'⇍' => '⇍', +'⇎' => '⇎', +'⇏' => '⇏', +'∄' => '∄', +'∉' => '∉', +'∌' => '∌', +'∤' => '∤', +'∦' => '∦', +'≁' => '≁', +'≄' => '≄', +'≇' => '≇', +'≉' => '≉', +'≠' => '≠', +'≢' => '≢', +'≭' => '≭', +'≮' => '≮', +'≯' => '≯', +'≰' => '≰', +'≱' => '≱', +'≴' => '≴', +'≵' => '≵', +'≸' => '≸', +'≹' => '≹', +'⊀' => '⊀', +'⊁' => '⊁', +'⊄' => '⊄', +'⊅' => '⊅', +'⊈' => '⊈', +'⊉' => '⊉', +'⊬' => '⊬', +'⊭' => '⊭', +'⊮' => '⊮', +'⊯' => '⊯', +'⋠' => '⋠', +'⋡' => '⋡', +'⋢' => '⋢', +'⋣' => '⋣', +'⋪' => '⋪', +'⋫' => '⋫', +'⋬' => '⋬', +'⋭' => '⋭', +'〈' => '〈', +'〉' => '〉', +'⫝̸' => '⫝̸', +'が' => 'が', +'ぎ' => 'ぎ', +'ぐ' => 'ぐ', +'げ' => 'げ', +'ご' => 'ご', +'ざ' => 'ざ', +'じ' => 'じ', +'ず' => 'ず', +'ぜ' => 'ぜ', +'ぞ' => 'ぞ', +'だ' => 'だ', +'ぢ' => 'ぢ', +'づ' => 'づ', +'で' => 'で', +'ど' => 'ど', +'ば' => 'ば', +'ぱ' => 'ぱ', +'び' => 'び', +'ぴ' => 'ぴ', +'ぶ' => 'ぶ', +'ぷ' => 'ぷ', +'べ' => 'べ', +'ぺ' => 'ぺ', +'ぼ' => 'ぼ', +'ぽ' => 'ぽ', +'ゔ' => 'ゔ', +'ゞ' => 'ゞ', +'ガ' => 'ガ', +'ギ' => 'ギ', +'グ' => 'グ', +'ゲ' => 'ゲ', +'ゴ' => 'ゴ', +'ザ' => 'ザ', +'ジ' => 'ジ', +'ズ' => 'ズ', +'ゼ' => 'ゼ', +'ゾ' => 'ゾ', +'ダ' => 'ダ', +'ヂ' => 'ヂ', +'ヅ' => 'ヅ', +'デ' => 'デ', +'ド' => 'ド', +'バ' => 'バ', +'パ' => 'パ', +'ビ' => 'ビ', +'ピ' => 'ピ', +'ブ' => 'ブ', +'プ' => 'プ', +'ベ' => 'ベ', +'ペ' => 'ペ', +'ボ' => 'ボ', +'ポ' => 'ポ', +'ヴ' => 'ヴ', +'ヷ' => 'ヷ', +'ヸ' => 'ヸ', +'ヹ' => 'ヹ', +'ヺ' => 'ヺ', +'ヾ' => 'ヾ', +'豈' => '豈', +'更' => '更', +'車' => '車', +'賈' => '賈', +'滑' => '滑', +'串' => '串', +'句' => '句', +'龜' => '龜', +'龜' => '龜', +'契' => '契', +'金' => '金', +'喇' => '喇', +'奈' => '奈', +'懶' => '懶', +'癩' => '癩', +'羅' => '羅', +'蘿' => '蘿', +'螺' => '螺', +'裸' => '裸', +'邏' => '邏', +'樂' => '樂', +'洛' => '洛', +'烙' => '烙', +'珞' => '珞', +'落' => '落', +'酪' => '酪', +'駱' => '駱', +'亂' => '亂', +'卵' => '卵', +'欄' => '欄', +'爛' => '爛', +'蘭' => '蘭', +'鸞' => '鸞', +'嵐' => '嵐', +'濫' => '濫', +'藍' => '藍', +'襤' => '襤', +'拉' => '拉', +'臘' => '臘', +'蠟' => '蠟', +'廊' => '廊', +'朗' => '朗', +'浪' => '浪', +'狼' => '狼', +'郎' => '郎', +'來' => '來', +'冷' => '冷', +'勞' => '勞', +'擄' => '擄', +'櫓' => '櫓', +'爐' => '爐', +'盧' => '盧', +'老' => '老', +'蘆' => '蘆', +'虜' => '虜', +'路' => '路', +'露' => '露', +'魯' => '魯', +'鷺' => '鷺', +'碌' => '碌', +'祿' => '祿', +'綠' => '綠', +'菉' => '菉', +'錄' => '錄', +'鹿' => '鹿', +'論' => '論', +'壟' => '壟', +'弄' => '弄', +'籠' => '籠', +'聾' => '聾', +'牢' => '牢', +'磊' => '磊', +'賂' => '賂', +'雷' => '雷', +'壘' => '壘', +'屢' => '屢', +'樓' => '樓', +'淚' => '淚', +'漏' => '漏', +'累' => '累', +'縷' => '縷', +'陋' => '陋', +'勒' => '勒', +'肋' => '肋', +'凜' => '凜', +'凌' => '凌', +'稜' => '稜', +'綾' => '綾', +'菱' => '菱', +'陵' => '陵', +'讀' => '讀', +'拏' => '拏', +'樂' => '樂', +'諾' => '諾', +'丹' => '丹', +'寧' => '寧', +'怒' => '怒', +'率' => '率', +'異' => '異', +'北' => '北', +'磻' => '磻', +'便' => '便', +'復' => '復', +'不' => '不', +'泌' => '泌', +'數' => '數', +'索' => '索', +'參' => '參', +'塞' => '塞', +'省' => '省', +'葉' => '葉', +'說' => '說', +'殺' => '殺', +'辰' => '辰', +'沈' => '沈', +'拾' => '拾', +'若' => '若', +'掠' => '掠', +'略' => '略', +'亮' => '亮', +'兩' => '兩', +'凉' => '凉', +'梁' => '梁', +'糧' => '糧', +'良' => '良', +'諒' => '諒', +'量' => '量', +'勵' => '勵', +'呂' => '呂', +'女' => '女', +'廬' => '廬', +'旅' => '旅', +'濾' => '濾', +'礪' => '礪', +'閭' => '閭', +'驪' => '驪', +'麗' => '麗', +'黎' => '黎', +'力' => '力', +'曆' => '曆', +'歷' => '歷', +'轢' => '轢', +'年' => '年', +'憐' => '憐', +'戀' => '戀', +'撚' => '撚', +'漣' => '漣', +'煉' => '煉', +'璉' => '璉', +'秊' => '秊', +'練' => '練', +'聯' => '聯', +'輦' => '輦', +'蓮' => '蓮', +'連' => '連', +'鍊' => '鍊', +'列' => '列', +'劣' => '劣', +'咽' => '咽', +'烈' => '烈', +'裂' => '裂', +'說' => '說', +'廉' => '廉', +'念' => '念', +'捻' => '捻', +'殮' => '殮', +'簾' => '簾', +'獵' => '獵', +'令' => '令', +'囹' => '囹', +'寧' => '寧', +'嶺' => '嶺', +'怜' => '怜', +'玲' => '玲', +'瑩' => '瑩', +'羚' => '羚', +'聆' => '聆', +'鈴' => '鈴', +'零' => '零', +'靈' => '靈', +'領' => '領', +'例' => '例', +'禮' => '禮', +'醴' => '醴', +'隸' => '隸', +'惡' => '惡', +'了' => '了', +'僚' => '僚', +'寮' => '寮', +'尿' => '尿', +'料' => '料', +'樂' => '樂', +'燎' => '燎', +'療' => '療', +'蓼' => '蓼', +'遼' => '遼', +'龍' => '龍', +'暈' => '暈', +'阮' => '阮', +'劉' => '劉', +'杻' => '杻', +'柳' => '柳', +'流' => '流', +'溜' => '溜', +'琉' => '琉', +'留' => '留', +'硫' => '硫', +'紐' => '紐', +'類' => '類', +'六' => '六', +'戮' => '戮', +'陸' => '陸', +'倫' => '倫', +'崙' => '崙', +'淪' => '淪', +'輪' => '輪', +'律' => '律', +'慄' => '慄', +'栗' => '栗', +'率' => '率', +'隆' => '隆', +'利' => '利', +'吏' => '吏', +'履' => '履', +'易' => '易', +'李' => '李', +'梨' => '梨', +'泥' => '泥', +'理' => '理', +'痢' => '痢', +'罹' => '罹', +'裏' => '裏', +'裡' => '裡', +'里' => '里', +'離' => '離', +'匿' => '匿', +'溺' => '溺', +'吝' => '吝', +'燐' => '燐', +'璘' => '璘', +'藺' => '藺', +'隣' => '隣', +'鱗' => '鱗', +'麟' => '麟', +'林' => '林', +'淋' => '淋', +'臨' => '臨', +'立' => '立', +'笠' => '笠', +'粒' => '粒', +'狀' => '狀', +'炙' => '炙', +'識' => '識', +'什' => '什', +'茶' => '茶', +'刺' => '刺', +'切' => '切', +'度' => '度', +'拓' => '拓', +'糖' => '糖', +'宅' => '宅', +'洞' => '洞', +'暴' => '暴', +'輻' => '輻', +'行' => '行', +'降' => '降', +'見' => '見', +'廓' => '廓', +'兀' => '兀', +'嗀' => '嗀', +'塚' => '塚', +'晴' => '晴', +'凞' => '凞', +'猪' => '猪', +'益' => '益', +'礼' => '礼', +'神' => '神', +'祥' => '祥', +'福' => '福', +'靖' => '靖', +'精' => '精', +'羽' => '羽', +'蘒' => '蘒', +'諸' => '諸', +'逸' => '逸', +'都' => '都', +'飯' => '飯', +'飼' => '飼', +'館' => '館', +'鶴' => '鶴', +'郞' => '郞', +'隷' => '隷', +'侮' => '侮', +'僧' => '僧', +'免' => '免', +'勉' => '勉', +'勤' => '勤', +'卑' => '卑', +'喝' => '喝', +'嘆' => '嘆', +'器' => '器', +'塀' => '塀', +'墨' => '墨', +'層' => '層', +'屮' => '屮', +'悔' => '悔', +'慨' => '慨', +'憎' => '憎', +'懲' => '懲', +'敏' => '敏', +'既' => '既', +'暑' => '暑', +'梅' => '梅', +'海' => '海', +'渚' => '渚', +'漢' => '漢', +'煮' => '煮', +'爫' => '爫', +'琢' => '琢', +'碑' => '碑', +'社' => '社', +'祉' => '祉', +'祈' => '祈', +'祐' => '祐', +'祖' => '祖', +'祝' => '祝', +'禍' => '禍', +'禎' => '禎', +'穀' => '穀', +'突' => '突', +'節' => '節', +'練' => '練', +'縉' => '縉', +'繁' => '繁', +'署' => '署', +'者' => '者', +'臭' => '臭', +'艹' => '艹', +'艹' => '艹', +'著' => '著', +'褐' => '褐', +'視' => '視', +'謁' => '謁', +'謹' => '謹', +'賓' => '賓', +'贈' => '贈', +'辶' => '辶', +'逸' => '逸', +'難' => '難', +'響' => '響', +'頻' => '頻', +'恵' => '恵', +'𤋮' => '𤋮', +'舘' => '舘', +'並' => '並', +'况' => '况', +'全' => '全', +'侀' => '侀', +'充' => '充', +'冀' => '冀', +'勇' => '勇', +'勺' => '勺', +'喝' => '喝', +'啕' => '啕', +'喙' => '喙', +'嗢' => '嗢', +'塚' => '塚', +'墳' => '墳', +'奄' => '奄', +'奔' => '奔', +'婢' => '婢', +'嬨' => '嬨', +'廒' => '廒', +'廙' => '廙', +'彩' => '彩', +'徭' => '徭', +'惘' => '惘', +'慎' => '慎', +'愈' => '愈', +'憎' => '憎', +'慠' => '慠', +'懲' => '懲', +'戴' => '戴', +'揄' => '揄', +'搜' => '搜', +'摒' => '摒', +'敖' => '敖', +'晴' => '晴', +'朗' => '朗', +'望' => '望', +'杖' => '杖', +'歹' => '歹', +'殺' => '殺', +'流' => '流', +'滛' => '滛', +'滋' => '滋', +'漢' => '漢', +'瀞' => '瀞', +'煮' => '煮', +'瞧' => '瞧', +'爵' => '爵', +'犯' => '犯', +'猪' => '猪', +'瑱' => '瑱', +'甆' => '甆', +'画' => '画', +'瘝' => '瘝', +'瘟' => '瘟', +'益' => '益', +'盛' => '盛', +'直' => '直', +'睊' => '睊', +'着' => '着', +'磌' => '磌', +'窱' => '窱', +'節' => '節', +'类' => '类', +'絛' => '絛', +'練' => '練', +'缾' => '缾', +'者' => '者', +'荒' => '荒', +'華' => '華', +'蝹' => '蝹', +'襁' => '襁', +'覆' => '覆', +'視' => '視', +'調' => '調', +'諸' => '諸', +'請' => '請', +'謁' => '謁', +'諾' => '諾', +'諭' => '諭', +'謹' => '謹', +'變' => '變', +'贈' => '贈', +'輸' => '輸', +'遲' => '遲', +'醙' => '醙', +'鉶' => '鉶', +'陼' => '陼', +'難' => '難', +'靖' => '靖', +'韛' => '韛', +'響' => '響', +'頋' => '頋', +'頻' => '頻', +'鬒' => '鬒', +'龜' => '龜', +'𢡊' => '𢡊', +'𢡄' => '𢡄', +'𣏕' => '𣏕', +'㮝' => '㮝', +'䀘' => '䀘', +'䀹' => '䀹', +'𥉉' => '𥉉', +'𥳐' => '𥳐', +'𧻓' => '𧻓', +'齃' => '齃', +'龎' => '龎', +'יִ' => 'יִ', +'ײַ' => 'ײַ', +'שׁ' => 'שׁ', +'שׂ' => 'שׂ', +'שּׁ' => 'שּׁ', +'שּׂ' => 'שּׂ', +'אַ' => 'אַ', +'אָ' => 'אָ', +'אּ' => 'אּ', +'בּ' => 'בּ', +'גּ' => 'גּ', +'דּ' => 'דּ', +'הּ' => 'הּ', +'וּ' => 'וּ', +'זּ' => 'זּ', +'טּ' => 'טּ', +'יּ' => 'יּ', +'ךּ' => 'ךּ', +'כּ' => 'כּ', +'לּ' => 'לּ', +'מּ' => 'מּ', +'נּ' => 'נּ', +'סּ' => 'סּ', +'ףּ' => 'ףּ', +'פּ' => 'פּ', +'צּ' => 'צּ', +'קּ' => 'קּ', +'רּ' => 'רּ', +'שּ' => 'שּ', +'תּ' => 'תּ', +'וֹ' => 'וֹ', +'בֿ' => 'בֿ', +'כֿ' => 'כֿ', +'פֿ' => 'פֿ', +'𑂚' => '𑂚', +'𑂜' => '𑂜', +'𑂫' => '𑂫', +'𑄮' => '𑄮', +'𑄯' => '𑄯', +'𑍋' => '𑍋', +'𑍌' => '𑍌', +'𑒻' => '𑒻', +'𑒼' => '𑒼', +'𑒾' => '𑒾', +'𑖺' => '𑖺', +'𑖻' => '𑖻', +'𑤸' => '𑤸', +'𝅗𝅥' => '𝅗𝅥', +'𝅘𝅥' => '𝅘𝅥', +'𝅘𝅥𝅮' => '𝅘𝅥𝅮', +'𝅘𝅥𝅯' => '𝅘𝅥𝅯', +'𝅘𝅥𝅰' => '𝅘𝅥𝅰', +'𝅘𝅥𝅱' => '𝅘𝅥𝅱', +'𝅘𝅥𝅲' => '𝅘𝅥𝅲', +'𝆹𝅥' => '𝆹𝅥', +'𝆺𝅥' => '𝆺𝅥', +'𝆹𝅥𝅮' => '𝆹𝅥𝅮', +'𝆺𝅥𝅮' => '𝆺𝅥𝅮', +'𝆹𝅥𝅯' => '𝆹𝅥𝅯', +'𝆺𝅥𝅯' => '𝆺𝅥𝅯', +'丽' => '丽', +'丸' => '丸', +'乁' => '乁', +'𠄢' => '𠄢', +'你' => '你', +'侮' => '侮', +'侻' => '侻', +'倂' => '倂', +'偺' => '偺', +'備' => '備', +'僧' => '僧', +'像' => '像', +'㒞' => '㒞', +'𠘺' => '𠘺', +'免' => '免', +'兔' => '兔', +'兤' => '兤', +'具' => '具', +'𠔜' => '𠔜', +'㒹' => '㒹', +'內' => '內', +'再' => '再', +'𠕋' => '𠕋', +'冗' => '冗', +'冤' => '冤', +'仌' => '仌', +'冬' => '冬', +'况' => '况', +'𩇟' => '𩇟', +'凵' => '凵', +'刃' => '刃', +'㓟' => '㓟', +'刻' => '刻', +'剆' => '剆', +'割' => '割', +'剷' => '剷', +'㔕' => '㔕', +'勇' => '勇', +'勉' => '勉', +'勤' => '勤', +'勺' => '勺', +'包' => '包', +'匆' => '匆', +'北' => '北', +'卉' => '卉', +'卑' => '卑', +'博' => '博', +'即' => '即', +'卽' => '卽', +'卿' => '卿', +'卿' => '卿', +'卿' => '卿', +'𠨬' => '𠨬', +'灰' => '灰', +'及' => '及', +'叟' => '叟', +'𠭣' => '𠭣', +'叫' => '叫', +'叱' => '叱', +'吆' => '吆', +'咞' => '咞', +'吸' => '吸', +'呈' => '呈', +'周' => '周', +'咢' => '咢', +'哶' => '哶', +'唐' => '唐', +'啓' => '啓', +'啣' => '啣', +'善' => '善', +'善' => '善', +'喙' => '喙', +'喫' => '喫', +'喳' => '喳', +'嗂' => '嗂', +'圖' => '圖', +'嘆' => '嘆', +'圗' => '圗', +'噑' => '噑', +'噴' => '噴', +'切' => '切', +'壮' => '壮', +'城' => '城', +'埴' => '埴', +'堍' => '堍', +'型' => '型', +'堲' => '堲', +'報' => '報', +'墬' => '墬', +'𡓤' => '𡓤', +'売' => '売', +'壷' => '壷', +'夆' => '夆', +'多' => '多', +'夢' => '夢', +'奢' => '奢', +'𡚨' => '𡚨', +'𡛪' => '𡛪', +'姬' => '姬', +'娛' => '娛', +'娧' => '娧', +'姘' => '姘', +'婦' => '婦', +'㛮' => '㛮', +'㛼' => '㛼', +'嬈' => '嬈', +'嬾' => '嬾', +'嬾' => '嬾', +'𡧈' => '𡧈', +'寃' => '寃', +'寘' => '寘', +'寧' => '寧', +'寳' => '寳', +'𡬘' => '𡬘', +'寿' => '寿', +'将' => '将', +'当' => '当', +'尢' => '尢', +'㞁' => '㞁', +'屠' => '屠', +'屮' => '屮', +'峀' => '峀', +'岍' => '岍', +'𡷤' => '𡷤', +'嵃' => '嵃', +'𡷦' => '𡷦', +'嵮' => '嵮', +'嵫' => '嵫', +'嵼' => '嵼', +'巡' => '巡', +'巢' => '巢', +'㠯' => '㠯', +'巽' => '巽', +'帨' => '帨', +'帽' => '帽', +'幩' => '幩', +'㡢' => '㡢', +'𢆃' => '𢆃', +'㡼' => '㡼', +'庰' => '庰', +'庳' => '庳', +'庶' => '庶', +'廊' => '廊', +'𪎒' => '𪎒', +'廾' => '廾', +'𢌱' => '𢌱', +'𢌱' => '𢌱', +'舁' => '舁', +'弢' => '弢', +'弢' => '弢', +'㣇' => '㣇', +'𣊸' => '𣊸', +'𦇚' => '𦇚', +'形' => '形', +'彫' => '彫', +'㣣' => '㣣', +'徚' => '徚', +'忍' => '忍', +'志' => '志', +'忹' => '忹', +'悁' => '悁', +'㤺' => '㤺', +'㤜' => '㤜', +'悔' => '悔', +'𢛔' => '𢛔', +'惇' => '惇', +'慈' => '慈', +'慌' => '慌', +'慎' => '慎', +'慌' => '慌', +'慺' => '慺', +'憎' => '憎', +'憲' => '憲', +'憤' => '憤', +'憯' => '憯', +'懞' => '懞', +'懲' => '懲', +'懶' => '懶', +'成' => '成', +'戛' => '戛', +'扝' => '扝', +'抱' => '抱', +'拔' => '拔', +'捐' => '捐', +'𢬌' => '𢬌', +'挽' => '挽', +'拼' => '拼', +'捨' => '捨', +'掃' => '掃', +'揤' => '揤', +'𢯱' => '𢯱', +'搢' => '搢', +'揅' => '揅', +'掩' => '掩', +'㨮' => '㨮', +'摩' => '摩', +'摾' => '摾', +'撝' => '撝', +'摷' => '摷', +'㩬' => '㩬', +'敏' => '敏', +'敬' => '敬', +'𣀊' => '𣀊', +'旣' => '旣', +'書' => '書', +'晉' => '晉', +'㬙' => '㬙', +'暑' => '暑', +'㬈' => '㬈', +'㫤' => '㫤', +'冒' => '冒', +'冕' => '冕', +'最' => '最', +'暜' => '暜', +'肭' => '肭', +'䏙' => '䏙', +'朗' => '朗', +'望' => '望', +'朡' => '朡', +'杞' => '杞', +'杓' => '杓', +'𣏃' => '𣏃', +'㭉' => '㭉', +'柺' => '柺', +'枅' => '枅', +'桒' => '桒', +'梅' => '梅', +'𣑭' => '𣑭', +'梎' => '梎', +'栟' => '栟', +'椔' => '椔', +'㮝' => '㮝', +'楂' => '楂', +'榣' => '榣', +'槪' => '槪', +'檨' => '檨', +'𣚣' => '𣚣', +'櫛' => '櫛', +'㰘' => '㰘', +'次' => '次', +'𣢧' => '𣢧', +'歔' => '歔', +'㱎' => '㱎', +'歲' => '歲', +'殟' => '殟', +'殺' => '殺', +'殻' => '殻', +'𣪍' => '𣪍', +'𡴋' => '𡴋', +'𣫺' => '𣫺', +'汎' => '汎', +'𣲼' => '𣲼', +'沿' => '沿', +'泍' => '泍', +'汧' => '汧', +'洖' => '洖', +'派' => '派', +'海' => '海', +'流' => '流', +'浩' => '浩', +'浸' => '浸', +'涅' => '涅', +'𣴞' => '𣴞', +'洴' => '洴', +'港' => '港', +'湮' => '湮', +'㴳' => '㴳', +'滋' => '滋', +'滇' => '滇', +'𣻑' => '𣻑', +'淹' => '淹', +'潮' => '潮', +'𣽞' => '𣽞', +'𣾎' => '𣾎', +'濆' => '濆', +'瀹' => '瀹', +'瀞' => '瀞', +'瀛' => '瀛', +'㶖' => '㶖', +'灊' => '灊', +'災' => '災', +'灷' => '灷', +'炭' => '炭', +'𠔥' => '𠔥', +'煅' => '煅', +'𤉣' => '𤉣', +'熜' => '熜', +'𤎫' => '𤎫', +'爨' => '爨', +'爵' => '爵', +'牐' => '牐', +'𤘈' => '𤘈', +'犀' => '犀', +'犕' => '犕', +'𤜵' => '𤜵', +'𤠔' => '𤠔', +'獺' => '獺', +'王' => '王', +'㺬' => '㺬', +'玥' => '玥', +'㺸' => '㺸', +'㺸' => '㺸', +'瑇' => '瑇', +'瑜' => '瑜', +'瑱' => '瑱', +'璅' => '璅', +'瓊' => '瓊', +'㼛' => '㼛', +'甤' => '甤', +'𤰶' => '𤰶', +'甾' => '甾', +'𤲒' => '𤲒', +'異' => '異', +'𢆟' => '𢆟', +'瘐' => '瘐', +'𤾡' => '𤾡', +'𤾸' => '𤾸', +'𥁄' => '𥁄', +'㿼' => '㿼', +'䀈' => '䀈', +'直' => '直', +'𥃳' => '𥃳', +'𥃲' => '𥃲', +'𥄙' => '𥄙', +'𥄳' => '𥄳', +'眞' => '眞', +'真' => '真', +'真' => '真', +'睊' => '睊', +'䀹' => '䀹', +'瞋' => '瞋', +'䁆' => '䁆', +'䂖' => '䂖', +'𥐝' => '𥐝', +'硎' => '硎', +'碌' => '碌', +'磌' => '磌', +'䃣' => '䃣', +'𥘦' => '𥘦', +'祖' => '祖', +'𥚚' => '𥚚', +'𥛅' => '𥛅', +'福' => '福', +'秫' => '秫', +'䄯' => '䄯', +'穀' => '穀', +'穊' => '穊', +'穏' => '穏', +'𥥼' => '𥥼', +'𥪧' => '𥪧', +'𥪧' => '𥪧', +'竮' => '竮', +'䈂' => '䈂', +'𥮫' => '𥮫', +'篆' => '篆', +'築' => '築', +'䈧' => '䈧', +'𥲀' => '𥲀', +'糒' => '糒', +'䊠' => '䊠', +'糨' => '糨', +'糣' => '糣', +'紀' => '紀', +'𥾆' => '𥾆', +'絣' => '絣', +'䌁' => '䌁', +'緇' => '緇', +'縂' => '縂', +'繅' => '繅', +'䌴' => '䌴', +'𦈨' => '𦈨', +'𦉇' => '𦉇', +'䍙' => '䍙', +'𦋙' => '𦋙', +'罺' => '罺', +'𦌾' => '𦌾', +'羕' => '羕', +'翺' => '翺', +'者' => '者', +'𦓚' => '𦓚', +'𦔣' => '𦔣', +'聠' => '聠', +'𦖨' => '𦖨', +'聰' => '聰', +'𣍟' => '𣍟', +'䏕' => '䏕', +'育' => '育', +'脃' => '脃', +'䐋' => '䐋', +'脾' => '脾', +'媵' => '媵', +'𦞧' => '𦞧', +'𦞵' => '𦞵', +'𣎓' => '𣎓', +'𣎜' => '𣎜', +'舁' => '舁', +'舄' => '舄', +'辞' => '辞', +'䑫' => '䑫', +'芑' => '芑', +'芋' => '芋', +'芝' => '芝', +'劳' => '劳', +'花' => '花', +'芳' => '芳', +'芽' => '芽', +'苦' => '苦', +'𦬼' => '𦬼', +'若' => '若', +'茝' => '茝', +'荣' => '荣', +'莭' => '莭', +'茣' => '茣', +'莽' => '莽', +'菧' => '菧', +'著' => '著', +'荓' => '荓', +'菊' => '菊', +'菌' => '菌', +'菜' => '菜', +'𦰶' => '𦰶', +'𦵫' => '𦵫', +'𦳕' => '𦳕', +'䔫' => '䔫', +'蓱' => '蓱', +'蓳' => '蓳', +'蔖' => '蔖', +'𧏊' => '𧏊', +'蕤' => '蕤', +'𦼬' => '𦼬', +'䕝' => '䕝', +'䕡' => '䕡', +'𦾱' => '𦾱', +'𧃒' => '𧃒', +'䕫' => '䕫', +'虐' => '虐', +'虜' => '虜', +'虧' => '虧', +'虩' => '虩', +'蚩' => '蚩', +'蚈' => '蚈', +'蜎' => '蜎', +'蛢' => '蛢', +'蝹' => '蝹', +'蜨' => '蜨', +'蝫' => '蝫', +'螆' => '螆', +'䗗' => '䗗', +'蟡' => '蟡', +'蠁' => '蠁', +'䗹' => '䗹', +'衠' => '衠', +'衣' => '衣', +'𧙧' => '𧙧', +'裗' => '裗', +'裞' => '裞', +'䘵' => '䘵', +'裺' => '裺', +'㒻' => '㒻', +'𧢮' => '𧢮', +'𧥦' => '𧥦', +'䚾' => '䚾', +'䛇' => '䛇', +'誠' => '誠', +'諭' => '諭', +'變' => '變', +'豕' => '豕', +'𧲨' => '𧲨', +'貫' => '貫', +'賁' => '賁', +'贛' => '贛', +'起' => '起', +'𧼯' => '𧼯', +'𠠄' => '𠠄', +'跋' => '跋', +'趼' => '趼', +'跰' => '跰', +'𠣞' => '𠣞', +'軔' => '軔', +'輸' => '輸', +'𨗒' => '𨗒', +'𨗭' => '𨗭', +'邔' => '邔', +'郱' => '郱', +'鄑' => '鄑', +'𨜮' => '𨜮', +'鄛' => '鄛', +'鈸' => '鈸', +'鋗' => '鋗', +'鋘' => '鋘', +'鉼' => '鉼', +'鏹' => '鏹', +'鐕' => '鐕', +'𨯺' => '𨯺', +'開' => '開', +'䦕' => '䦕', +'閷' => '閷', +'𨵷' => '𨵷', +'䧦' => '䧦', +'雃' => '雃', +'嶲' => '嶲', +'霣' => '霣', +'𩅅' => '𩅅', +'𩈚' => '𩈚', +'䩮' => '䩮', +'䩶' => '䩶', +'韠' => '韠', +'𩐊' => '𩐊', +'䪲' => '䪲', +'𩒖' => '𩒖', +'頋' => '頋', +'頋' => '頋', +'頩' => '頩', +'𩖶' => '𩖶', +'飢' => '飢', +'䬳' => '䬳', +'餩' => '餩', +'馧' => '馧', +'駂' => '駂', +'駾' => '駾', +'䯎' => '䯎', +'𩬰' => '𩬰', +'鬒' => '鬒', +'鱀' => '鱀', +'鳽' => '鳽', +'䳎' => '䳎', +'䳭' => '䳭', +'鵧' => '鵧', +'𪃎' => '𪃎', +'䳸' => '䳸', +'𪄅' => '𪄅', +'𪈎' => '𪈎', +'𪊑' => '𪊑', +'麻' => '麻', +'䵖' => '䵖', +'黹' => '黹', +'黾' => '黾', +'鼅' => '鼅', +'鼏' => '鼏', +'鼖' => '鼖', +'鼻' => '鼻', +'𪘀' => '𪘀', +); diff --git a/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php new file mode 100644 index 000000000..9f4065683 --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php @@ -0,0 +1,876 @@ + 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/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php new file mode 100644 index 000000000..e35a5f06c --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php @@ -0,0 +1,3695 @@ + ' ', +'¨' => ' ̈', +'ª' => 'a', +'¯' => ' ̄', +'²' => '2', +'³' => '3', +'´' => ' ́', +'µ' => 'μ', +'¸' => ' ̧', +'¹' => '1', +'º' => 'o', +'¼' => '1⁄4', +'½' => '1⁄2', +'¾' => '3⁄4', +'IJ' => 'IJ', +'ij' => 'ij', +'Ŀ' => 'L·', +'ŀ' => 'l·', +'ʼn' => 'ʼn', +'ſ' => 's', +'DŽ' => 'DŽ', +'Dž' => 'Dž', +'dž' => 'dž', +'LJ' => 'LJ', +'Lj' => 'Lj', +'lj' => 'lj', +'NJ' => 'NJ', +'Nj' => 'Nj', +'nj' => 'nj', +'DZ' => 'DZ', +'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' => 'ff', +'fi' => 'fi', +'fl' => 'fl', +'ffi' => 'ffi', +'ffl' => 'ffl', +'ſt' => 'st', +'st' => 'st', +'ﬓ' => 'մն', +'ﬔ' => 'մե', +'ﬕ' => 'մի', +'ﬖ' => 'վն', +'ﬗ' => 'մխ', +'ﬠ' => 'ע', +'ﬡ' => 'א', +'ﬢ' => 'ד', +'ﬣ' => 'ה', +'ﬤ' => 'כ', +'ﬥ' => 'ל', +'ﬦ' => 'ם', +'ﬧ' => 'ר', +'ﬨ' => 'ת', +'﬩' => '+', +'ﭏ' => 'אל', +'ﭐ' => 'ٱ', +'ﭑ' => 'ٱ', +'ﭒ' => 'ٻ', +'ﭓ' => 'ٻ', +'ﭔ' => 'ٻ', +'ﭕ' => 'ٻ', +'ﭖ' => 'پ', +'ﭗ' => 'پ', +'ﭘ' => 'پ', +'ﭙ' => 'پ', +'ﭚ' => 'ڀ', +'ﭛ' => 'ڀ', +'ﭜ' => 'ڀ', +'ﭝ' => 'ڀ', +'ﭞ' => 'ٺ', +'ﭟ' => 'ٺ', +'ﭠ' => 'ٺ', +'ﭡ' => 'ٺ', +'ﭢ' => 'ٿ', +'ﭣ' => 'ٿ', +'ﭤ' => 'ٿ', +'ﭥ' => 'ٿ', +'ﭦ' => 'ٹ', +'ﭧ' => 'ٹ', +'ﭨ' => 'ٹ', +'ﭩ' => 'ٹ', +'ﭪ' => 'ڤ', +'ﭫ' => 'ڤ', +'ﭬ' => 'ڤ', +'ﭭ' => 'ڤ', +'ﭮ' => 'ڦ', +'ﭯ' => 'ڦ', +'ﭰ' => 'ڦ', +'ﭱ' => 'ڦ', +'ﭲ' => 'ڄ', +'ﭳ' => 'ڄ', +'ﭴ' => 'ڄ', +'ﭵ' => 'ڄ', +'ﭶ' => 'ڃ', +'ﭷ' => 'ڃ', +'ﭸ' => 'ڃ', +'ﭹ' => 'ڃ', +'ﭺ' => 'چ', +'ﭻ' => 'چ', +'ﭼ' => 'چ', +'ﭽ' => 'چ', +'ﭾ' => 'ڇ', +'ﭿ' => 'ڇ', +'ﮀ' => 'ڇ', +'ﮁ' => 'ڇ', +'ﮂ' => 'ڍ', +'ﮃ' => 'ڍ', +'ﮄ' => 'ڌ', +'ﮅ' => 'ڌ', +'ﮆ' => 'ڎ', +'ﮇ' => 'ڎ', +'ﮈ' => 'ڈ', +'ﮉ' => 'ڈ', +'ﮊ' => 'ژ', +'ﮋ' => 'ژ', +'ﮌ' => 'ڑ', +'ﮍ' => 'ڑ', +'ﮎ' => 'ک', +'ﮏ' => 'ک', +'ﮐ' => 'ک', +'ﮑ' => 'ک', +'ﮒ' => 'گ', +'ﮓ' => 'گ', +'ﮔ' => 'گ', +'ﮕ' => 'گ', +'ﮖ' => 'ڳ', +'ﮗ' => 'ڳ', +'ﮘ' => 'ڳ', +'ﮙ' => 'ڳ', +'ﮚ' => 'ڱ', +'ﮛ' => 'ڱ', +'ﮜ' => 'ڱ', +'ﮝ' => 'ڱ', +'ﮞ' => 'ں', +'ﮟ' => 'ں', +'ﮠ' => 'ڻ', +'ﮡ' => 'ڻ', +'ﮢ' => 'ڻ', +'ﮣ' => 'ڻ', +'ﮤ' => 'ۀ', +'ﮥ' => 'ۀ', +'ﮦ' => 'ہ', +'ﮧ' => 'ہ', +'ﮨ' => 'ہ', +'ﮩ' => 'ہ', +'ﮪ' => 'ھ', +'ﮫ' => 'ھ', +'ﮬ' => 'ھ', +'ﮭ' => 'ھ', +'ﮮ' => 'ے', +'ﮯ' => 'ے', +'ﮰ' => 'ۓ', +'ﮱ' => 'ۓ', +'ﯓ' => 'ڭ', +'ﯔ' => 'ڭ', +'ﯕ' => 'ڭ', +'ﯖ' => 'ڭ', +'ﯗ' => 'ۇ', +'ﯘ' => 'ۇ', +'ﯙ' => 'ۆ', +'ﯚ' => 'ۆ', +'ﯛ' => 'ۈ', +'ﯜ' => 'ۈ', +'ﯝ' => 'ۇٴ', +'ﯞ' => 'ۋ', +'ﯟ' => 'ۋ', +'ﯠ' => 'ۅ', +'ﯡ' => 'ۅ', +'ﯢ' => 'ۉ', +'ﯣ' => 'ۉ', +'ﯤ' => 'ې', +'ﯥ' => 'ې', +'ﯦ' => 'ې', +'ﯧ' => 'ې', +'ﯨ' => 'ى', +'ﯩ' => 'ى', +'ﯪ' => 'ئا', +'ﯫ' => 'ئا', +'ﯬ' => 'ئە', +'ﯭ' => 'ئە', +'ﯮ' => 'ئو', +'ﯯ' => 'ئو', +'ﯰ' => 'ئۇ', +'ﯱ' => 'ئۇ', +'ﯲ' => 'ئۆ', +'ﯳ' => 'ئۆ', +'ﯴ' => 'ئۈ', +'ﯵ' => 'ئۈ', +'ﯶ' => 'ئې', +'ﯷ' => 'ئې', +'ﯸ' => 'ئې', +'ﯹ' => 'ئى', +'ﯺ' => 'ئى', +'ﯻ' => 'ئى', +'ﯼ' => 'ی', +'ﯽ' => 'ی', +'ﯾ' => 'ی', +'ﯿ' => 'ی', +'ﰀ' => 'ئج', +'ﰁ' => 'ئح', +'ﰂ' => 'ئم', +'ﰃ' => 'ئى', +'ﰄ' => 'ئي', +'ﰅ' => 'بج', +'ﰆ' => 'بح', +'ﰇ' => 'بخ', +'ﰈ' => 'بم', +'ﰉ' => 'بى', +'ﰊ' => 'بي', +'ﰋ' => 'تج', +'ﰌ' => 'تح', +'ﰍ' => 'تخ', +'ﰎ' => 'تم', +'ﰏ' => 'تى', +'ﰐ' => 'تي', +'ﰑ' => 'ثج', +'ﰒ' => 'ثم', +'ﰓ' => 'ثى', +'ﰔ' => 'ثي', +'ﰕ' => 'جح', +'ﰖ' => 'جم', +'ﰗ' => 'حج', +'ﰘ' => 'حم', +'ﰙ' => 'خج', +'ﰚ' => 'خح', +'ﰛ' => 'خم', +'ﰜ' => 'سج', +'ﰝ' => 'سح', +'ﰞ' => 'سخ', +'ﰟ' => 'سم', +'ﰠ' => 'صح', +'ﰡ' => 'صم', +'ﰢ' => 'ضج', +'ﰣ' => 'ضح', +'ﰤ' => 'ضخ', +'ﰥ' => 'ضم', +'ﰦ' => 'طح', +'ﰧ' => 'طم', +'ﰨ' => 'ظم', +'ﰩ' => 'عج', +'ﰪ' => 'عم', +'ﰫ' => 'غج', +'ﰬ' => 'غم', +'ﰭ' => 'فج', +'ﰮ' => 'فح', +'ﰯ' => 'فخ', +'ﰰ' => 'فم', +'ﰱ' => 'فى', +'ﰲ' => 'في', +'ﰳ' => 'قح', +'ﰴ' => 'قم', +'ﰵ' => 'قى', +'ﰶ' => 'قي', +'ﰷ' => 'كا', +'ﰸ' => 'كج', +'ﰹ' => 'كح', +'ﰺ' => 'كخ', +'ﰻ' => 'كل', +'ﰼ' => 'كم', +'ﰽ' => 'كى', +'ﰾ' => 'كي', +'ﰿ' => 'لج', +'ﱀ' => 'لح', +'ﱁ' => 'لخ', +'ﱂ' => 'لم', +'ﱃ' => 'لى', +'ﱄ' => 'لي', +'ﱅ' => 'مج', +'ﱆ' => 'مح', +'ﱇ' => 'مخ', +'ﱈ' => 'مم', +'ﱉ' => 'مى', +'ﱊ' => 'مي', +'ﱋ' => 'نج', +'ﱌ' => 'نح', +'ﱍ' => 'نخ', +'ﱎ' => 'نم', +'ﱏ' => 'نى', +'ﱐ' => 'ني', +'ﱑ' => 'هج', +'ﱒ' => 'هم', +'ﱓ' => 'هى', +'ﱔ' => 'هي', +'ﱕ' => 'يج', +'ﱖ' => 'يح', +'ﱗ' => 'يخ', +'ﱘ' => 'يم', +'ﱙ' => 'يى', +'ﱚ' => 'يي', +'ﱛ' => 'ذٰ', +'ﱜ' => 'رٰ', +'ﱝ' => 'ىٰ', +'ﱞ' => ' ٌّ', +'ﱟ' => ' ٍّ', +'ﱠ' => ' َّ', +'ﱡ' => ' ُّ', +'ﱢ' => ' ِّ', +'ﱣ' => ' ّٰ', +'ﱤ' => 'ئر', +'ﱥ' => 'ئز', +'ﱦ' => 'ئم', +'ﱧ' => 'ئن', +'ﱨ' => 'ئى', +'ﱩ' => 'ئي', +'ﱪ' => 'بر', +'ﱫ' => 'بز', +'ﱬ' => 'بم', +'ﱭ' => 'بن', +'ﱮ' => 'بى', +'ﱯ' => 'بي', +'ﱰ' => 'تر', +'ﱱ' => 'تز', +'ﱲ' => 'تم', +'ﱳ' => 'تن', +'ﱴ' => 'تى', +'ﱵ' => 'تي', +'ﱶ' => 'ثر', +'ﱷ' => 'ثز', +'ﱸ' => 'ثم', +'ﱹ' => 'ثن', +'ﱺ' => 'ثى', +'ﱻ' => 'ثي', +'ﱼ' => 'فى', +'ﱽ' => 'في', +'ﱾ' => 'قى', +'ﱿ' => 'قي', +'ﲀ' => 'كا', +'ﲁ' => 'كل', +'ﲂ' => 'كم', +'ﲃ' => 'كى', +'ﲄ' => 'كي', +'ﲅ' => 'لم', +'ﲆ' => 'لى', +'ﲇ' => 'لي', +'ﲈ' => 'ما', +'ﲉ' => 'مم', +'ﲊ' => 'نر', +'ﲋ' => 'نز', +'ﲌ' => 'نم', +'ﲍ' => 'نن', +'ﲎ' => 'نى', +'ﲏ' => 'ني', +'ﲐ' => 'ىٰ', +'ﲑ' => 'ير', +'ﲒ' => 'يز', +'ﲓ' => 'يم', +'ﲔ' => 'ين', +'ﲕ' => 'يى', +'ﲖ' => 'يي', +'ﲗ' => 'ئج', +'ﲘ' => 'ئح', +'ﲙ' => 'ئخ', +'ﲚ' => 'ئم', +'ﲛ' => 'ئه', +'ﲜ' => 'بج', +'ﲝ' => 'بح', +'ﲞ' => 'بخ', +'ﲟ' => 'بم', +'ﲠ' => 'به', +'ﲡ' => 'تج', +'ﲢ' => 'تح', +'ﲣ' => 'تخ', +'ﲤ' => 'تم', +'ﲥ' => 'ته', +'ﲦ' => 'ثم', +'ﲧ' => 'جح', +'ﲨ' => 'جم', +'ﲩ' => 'حج', +'ﲪ' => 'حم', +'ﲫ' => 'خج', +'ﲬ' => 'خم', +'ﲭ' => 'سج', +'ﲮ' => 'سح', +'ﲯ' => 'سخ', +'ﲰ' => 'سم', +'ﲱ' => 'صح', +'ﲲ' => 'صخ', +'ﲳ' => 'صم', +'ﲴ' => 'ضج', +'ﲵ' => 'ضح', +'ﲶ' => 'ضخ', +'ﲷ' => 'ضم', +'ﲸ' => 'طح', +'ﲹ' => 'ظم', +'ﲺ' => 'عج', +'ﲻ' => 'عم', +'ﲼ' => 'غج', +'ﲽ' => 'غم', +'ﲾ' => 'فج', +'ﲿ' => 'فح', +'ﳀ' => 'فخ', +'ﳁ' => 'فم', +'ﳂ' => 'قح', +'ﳃ' => 'قم', +'ﳄ' => 'كج', +'ﳅ' => 'كح', +'ﳆ' => 'كخ', +'ﳇ' => 'كل', +'ﳈ' => 'كم', +'ﳉ' => 'لج', +'ﳊ' => 'لح', +'ﳋ' => 'لخ', +'ﳌ' => 'لم', +'ﳍ' => 'له', +'ﳎ' => 'مج', +'ﳏ' => 'مح', +'ﳐ' => 'مخ', +'ﳑ' => 'مم', +'ﳒ' => 'نج', +'ﳓ' => 'نح', +'ﳔ' => 'نخ', +'ﳕ' => 'نم', +'ﳖ' => 'نه', +'ﳗ' => 'هج', +'ﳘ' => 'هم', +'ﳙ' => 'هٰ', +'ﳚ' => 'يج', +'ﳛ' => 'يح', +'ﳜ' => 'يخ', +'ﳝ' => 'يم', +'ﳞ' => 'يه', +'ﳟ' => 'ئم', +'ﳠ' => 'ئه', +'ﳡ' => 'بم', +'ﳢ' => 'به', +'ﳣ' => 'تم', +'ﳤ' => 'ته', +'ﳥ' => 'ثم', +'ﳦ' => 'ثه', +'ﳧ' => 'سم', +'ﳨ' => 'سه', +'ﳩ' => 'شم', +'ﳪ' => 'شه', +'ﳫ' => 'كل', +'ﳬ' => 'كم', +'ﳭ' => 'لم', +'ﳮ' => 'نم', +'ﳯ' => 'نه', +'ﳰ' => 'يم', +'ﳱ' => 'يه', +'ﳲ' => 'ـَّ', +'ﳳ' => 'ـُّ', +'ﳴ' => 'ـِّ', +'ﳵ' => 'طى', +'ﳶ' => 'طي', +'ﳷ' => 'عى', +'ﳸ' => 'عي', +'ﳹ' => 'غى', +'ﳺ' => 'غي', +'ﳻ' => 'سى', +'ﳼ' => 'سي', +'ﳽ' => 'شى', +'ﳾ' => 'شي', +'ﳿ' => 'حى', +'ﴀ' => 'حي', +'ﴁ' => 'جى', +'ﴂ' => 'جي', +'ﴃ' => 'خى', +'ﴄ' => 'خي', +'ﴅ' => 'صى', +'ﴆ' => 'صي', +'ﴇ' => 'ضى', +'ﴈ' => 'ضي', +'ﴉ' => 'شج', +'ﴊ' => 'شح', +'ﴋ' => 'شخ', +'ﴌ' => 'شم', +'ﴍ' => 'شر', +'ﴎ' => 'سر', +'ﴏ' => 'صر', +'ﴐ' => 'ضر', +'ﴑ' => 'طى', +'ﴒ' => 'طي', +'ﴓ' => 'عى', +'ﴔ' => 'عي', +'ﴕ' => 'غى', +'ﴖ' => 'غي', +'ﴗ' => 'سى', +'ﴘ' => 'سي', +'ﴙ' => 'شى', +'ﴚ' => 'شي', +'ﴛ' => 'حى', +'ﴜ' => 'حي', +'ﴝ' => 'جى', +'ﴞ' => 'جي', +'ﴟ' => 'خى', +'ﴠ' => 'خي', +'ﴡ' => 'صى', +'ﴢ' => 'صي', +'ﴣ' => 'ضى', +'ﴤ' => 'ضي', +'ﴥ' => 'شج', +'ﴦ' => 'شح', +'ﴧ' => 'شخ', +'ﴨ' => 'شم', +'ﴩ' => 'شر', +'ﴪ' => 'سر', +'ﴫ' => 'صر', +'ﴬ' => 'ضر', +'ﴭ' => 'شج', +'ﴮ' => 'شح', +'ﴯ' => 'شخ', +'ﴰ' => 'شم', +'ﴱ' => 'سه', +'ﴲ' => 'شه', +'ﴳ' => 'طم', +'ﴴ' => 'سج', +'ﴵ' => 'سح', +'ﴶ' => 'سخ', +'ﴷ' => 'شج', +'ﴸ' => 'شح', +'ﴹ' => 'شخ', +'ﴺ' => 'طم', +'ﴻ' => 'ظم', +'ﴼ' => 'اً', +'ﴽ' => 'اً', +'ﵐ' => 'تجم', +'ﵑ' => 'تحج', +'ﵒ' => 'تحج', +'ﵓ' => 'تحم', +'ﵔ' => 'تخم', +'ﵕ' => 'تمج', +'ﵖ' => 'تمح', +'ﵗ' => 'تمخ', +'ﵘ' => 'جمح', +'ﵙ' => 'جمح', +'ﵚ' => 'حمي', +'ﵛ' => 'حمى', +'ﵜ' => 'سحج', +'ﵝ' => 'سجح', +'ﵞ' => 'سجى', +'ﵟ' => 'سمح', +'ﵠ' => 'سمح', +'ﵡ' => 'سمج', +'ﵢ' => 'سمم', +'ﵣ' => 'سمم', +'ﵤ' => 'صحح', +'ﵥ' => 'صحح', +'ﵦ' => 'صمم', +'ﵧ' => 'شحم', +'ﵨ' => 'شحم', +'ﵩ' => 'شجي', +'ﵪ' => 'شمخ', +'ﵫ' => 'شمخ', +'ﵬ' => 'شمم', +'ﵭ' => 'شمم', +'ﵮ' => 'ضحى', +'ﵯ' => 'ضخم', +'ﵰ' => 'ضخم', +'ﵱ' => 'طمح', +'ﵲ' => 'طمح', +'ﵳ' => 'طمم', +'ﵴ' => 'طمي', +'ﵵ' => 'عجم', +'ﵶ' => 'عمم', +'ﵷ' => 'عمم', +'ﵸ' => 'عمى', +'ﵹ' => 'غمم', +'ﵺ' => 'غمي', +'ﵻ' => 'غمى', +'ﵼ' => 'فخم', +'ﵽ' => 'فخم', +'ﵾ' => 'قمح', +'ﵿ' => 'قمم', +'ﶀ' => 'لحم', +'ﶁ' => 'لحي', +'ﶂ' => 'لحى', +'ﶃ' => 'لجج', +'ﶄ' => 'لجج', +'ﶅ' => 'لخم', +'ﶆ' => 'لخم', +'ﶇ' => 'لمح', +'ﶈ' => 'لمح', +'ﶉ' => 'محج', +'ﶊ' => 'محم', +'ﶋ' => 'محي', +'ﶌ' => 'مجح', +'ﶍ' => 'مجم', +'ﶎ' => 'مخج', +'ﶏ' => 'مخم', +'ﶒ' => 'مجخ', +'ﶓ' => 'همج', +'ﶔ' => 'همم', +'ﶕ' => 'نحم', +'ﶖ' => 'نحى', +'ﶗ' => 'نجم', +'ﶘ' => 'نجم', +'ﶙ' => 'نجى', +'ﶚ' => 'نمي', +'ﶛ' => 'نمى', +'ﶜ' => 'يمم', +'ﶝ' => 'يمم', +'ﶞ' => 'بخي', +'ﶟ' => 'تجي', +'ﶠ' => 'تجى', +'ﶡ' => 'تخي', +'ﶢ' => 'تخى', +'ﶣ' => 'تمي', +'ﶤ' => 'تمى', +'ﶥ' => 'جمي', +'ﶦ' => 'جحى', +'ﶧ' => 'جمى', +'ﶨ' => 'سخى', +'ﶩ' => 'صحي', +'ﶪ' => 'شحي', +'ﶫ' => 'ضحي', +'ﶬ' => 'لجي', +'ﶭ' => 'لمي', +'ﶮ' => 'يحي', +'ﶯ' => 'يجي', +'ﶰ' => 'يمي', +'ﶱ' => 'ممي', +'ﶲ' => 'قمي', +'ﶳ' => 'نحي', +'ﶴ' => 'قمح', +'ﶵ' => 'لحم', +'ﶶ' => 'عمي', +'ﶷ' => 'كمي', +'ﶸ' => 'نجح', +'ﶹ' => 'مخي', +'ﶺ' => 'لجم', +'ﶻ' => 'كمم', +'ﶼ' => 'لجم', +'ﶽ' => 'نجح', +'ﶾ' => 'جحي', +'ﶿ' => 'حجي', +'ﷀ' => 'مجي', +'ﷁ' => 'فمي', +'ﷂ' => 'بحي', +'ﷃ' => 'كمم', +'ﷄ' => 'عجم', +'ﷅ' => 'صمم', +'ﷆ' => 'سخي', +'ﷇ' => 'نجي', +'ﷰ' => 'صلے', +'ﷱ' => 'قلے', +'ﷲ' => 'الله', +'ﷳ' => 'اكبر', +'ﷴ' => 'محمد', +'ﷵ' => 'صلعم', +'ﷶ' => 'رسول', +'ﷷ' => 'عليه', +'ﷸ' => 'وسلم', +'ﷹ' => 'صلى', +'ﷺ' => 'صلى الله عليه وسلم', +'ﷻ' => 'جل جلاله', +'﷼' => 'ریال', +'︐' => ',', +'︑' => '、', +'︒' => '。', +'︓' => ':', +'︔' => ';', +'︕' => '!', +'︖' => '?', +'︗' => '〖', +'︘' => '〗', +'︙' => '...', +'︰' => '..', +'︱' => '—', +'︲' => '–', +'︳' => '_', +'︴' => '_', +'︵' => '(', +'︶' => ')', +'︷' => '{', +'︸' => '}', +'︹' => '〔', +'︺' => '〕', +'︻' => '【', +'︼' => '】', +'︽' => '《', +'︾' => '》', +'︿' => '〈', +'﹀' => '〉', +'﹁' => '「', +'﹂' => '」', +'﹃' => '『', +'﹄' => '』', +'﹇' => '[', +'﹈' => ']', +'﹉' => ' ̅', +'﹊' => ' ̅', +'﹋' => ' ̅', +'﹌' => ' ̅', +'﹍' => '_', +'﹎' => '_', +'﹏' => '_', +'﹐' => ',', +'﹑' => '、', +'﹒' => '.', +'﹔' => ';', +'﹕' => ':', +'﹖' => '?', +'﹗' => '!', +'﹘' => '—', +'﹙' => '(', +'﹚' => ')', +'﹛' => '{', +'﹜' => '}', +'﹝' => '〔', +'﹞' => '〕', +'﹟' => '#', +'﹠' => '&', +'﹡' => '*', +'﹢' => '+', +'﹣' => '-', +'﹤' => '<', +'﹥' => '>', +'﹦' => '=', +'﹨' => '\\', +'﹩' => '$', +'﹪' => '%', +'﹫' => '@', +'ﹰ' => ' ً', +'ﹱ' => 'ـً', +'ﹲ' => ' ٌ', +'ﹴ' => ' ٍ', +'ﹶ' => ' َ', +'ﹷ' => 'ـَ', +'ﹸ' => ' ُ', +'ﹹ' => 'ـُ', +'ﹺ' => ' ِ', +'ﹻ' => 'ـِ', +'ﹼ' => ' ّ', +'ﹽ' => 'ـّ', +'ﹾ' => ' ْ', +'ﹿ' => 'ـْ', +'ﺀ' => 'ء', +'ﺁ' => 'آ', +'ﺂ' => 'آ', +'ﺃ' => 'أ', +'ﺄ' => 'أ', +'ﺅ' => 'ؤ', +'ﺆ' => 'ؤ', +'ﺇ' => 'إ', +'ﺈ' => 'إ', +'ﺉ' => 'ئ', +'ﺊ' => 'ئ', +'ﺋ' => 'ئ', +'ﺌ' => 'ئ', +'ﺍ' => 'ا', +'ﺎ' => 'ا', +'ﺏ' => 'ب', +'ﺐ' => 'ب', +'ﺑ' => 'ب', +'ﺒ' => 'ب', +'ﺓ' => 'ة', +'ﺔ' => 'ة', +'ﺕ' => 'ت', +'ﺖ' => 'ت', +'ﺗ' => 'ت', +'ﺘ' => 'ت', +'ﺙ' => 'ث', +'ﺚ' => 'ث', +'ﺛ' => 'ث', +'ﺜ' => 'ث', +'ﺝ' => 'ج', +'ﺞ' => 'ج', +'ﺟ' => 'ج', +'ﺠ' => 'ج', +'ﺡ' => 'ح', +'ﺢ' => 'ح', +'ﺣ' => 'ح', +'ﺤ' => 'ح', +'ﺥ' => 'خ', +'ﺦ' => 'خ', +'ﺧ' => 'خ', +'ﺨ' => 'خ', +'ﺩ' => 'د', +'ﺪ' => 'د', +'ﺫ' => 'ذ', +'ﺬ' => 'ذ', +'ﺭ' => 'ر', +'ﺮ' => 'ر', +'ﺯ' => 'ز', +'ﺰ' => 'ز', +'ﺱ' => 'س', +'ﺲ' => 'س', +'ﺳ' => 'س', +'ﺴ' => 'س', +'ﺵ' => 'ش', +'ﺶ' => 'ش', +'ﺷ' => 'ش', +'ﺸ' => 'ش', +'ﺹ' => 'ص', +'ﺺ' => 'ص', +'ﺻ' => 'ص', +'ﺼ' => 'ص', +'ﺽ' => 'ض', +'ﺾ' => 'ض', +'ﺿ' => 'ض', +'ﻀ' => 'ض', +'ﻁ' => 'ط', +'ﻂ' => 'ط', +'ﻃ' => 'ط', +'ﻄ' => 'ط', +'ﻅ' => 'ظ', +'ﻆ' => 'ظ', +'ﻇ' => 'ظ', +'ﻈ' => 'ظ', +'ﻉ' => 'ع', +'ﻊ' => 'ع', +'ﻋ' => 'ع', +'ﻌ' => 'ع', +'ﻍ' => 'غ', +'ﻎ' => 'غ', +'ﻏ' => 'غ', +'ﻐ' => 'غ', +'ﻑ' => 'ف', +'ﻒ' => 'ف', +'ﻓ' => 'ف', +'ﻔ' => 'ف', +'ﻕ' => 'ق', +'ﻖ' => 'ق', +'ﻗ' => 'ق', +'ﻘ' => 'ق', +'ﻙ' => 'ك', +'ﻚ' => 'ك', +'ﻛ' => 'ك', +'ﻜ' => 'ك', +'ﻝ' => 'ل', +'ﻞ' => 'ل', +'ﻟ' => 'ل', +'ﻠ' => 'ل', +'ﻡ' => 'م', +'ﻢ' => 'م', +'ﻣ' => 'م', +'ﻤ' => 'م', +'ﻥ' => 'ن', +'ﻦ' => 'ن', +'ﻧ' => 'ن', +'ﻨ' => 'ن', +'ﻩ' => 'ه', +'ﻪ' => 'ه', +'ﻫ' => 'ه', +'ﻬ' => 'ه', +'ﻭ' => 'و', +'ﻮ' => 'و', +'ﻯ' => 'ى', +'ﻰ' => 'ى', +'ﻱ' => 'ي', +'ﻲ' => 'ي', +'ﻳ' => 'ي', +'ﻴ' => 'ي', +'ﻵ' => 'لآ', +'ﻶ' => 'لآ', +'ﻷ' => 'لأ', +'ﻸ' => 'لأ', +'ﻹ' => 'لإ', +'ﻺ' => 'لإ', +'ﻻ' => 'لا', +'ﻼ' => 'لا', +'!' => '!', +'"' => '"', +'#' => '#', +'$' => '$', +'%' => '%', +'&' => '&', +''' => '\'', +'(' => '(', +')' => ')', +'*' => '*', +'+' => '+', +',' => ',', +'-' => '-', +'.' => '.', +'/' => '/', +'0' => '0', +'1' => '1', +'2' => '2', +'3' => '3', +'4' => '4', +'5' => '5', +'6' => '6', +'7' => '7', +'8' => '8', +'9' => '9', +':' => ':', +';' => ';', +'<' => '<', +'=' => '=', +'>' => '>', +'?' => '?', +'@' => '@', +'A' => 'A', +'B' => 'B', +'C' => 'C', +'D' => 'D', +'E' => 'E', +'F' => 'F', +'G' => 'G', +'H' => 'H', +'I' => 'I', +'J' => 'J', +'K' => 'K', +'L' => 'L', +'M' => 'M', +'N' => 'N', +'O' => 'O', +'P' => 'P', +'Q' => 'Q', +'R' => 'R', +'S' => 'S', +'T' => 'T', +'U' => 'U', +'V' => 'V', +'W' => 'W', +'X' => 'X', +'Y' => 'Y', +'Z' => 'Z', +'[' => '[', +'\' => '\\', +']' => ']', +'^' => '^', +'_' => '_', +'`' => '`', +'a' => 'a', +'b' => 'b', +'c' => 'c', +'d' => 'd', +'e' => 'e', +'f' => 'f', +'g' => 'g', +'h' => 'h', +'i' => 'i', +'j' => 'j', +'k' => 'k', +'l' => 'l', +'m' => 'm', +'n' => 'n', +'o' => 'o', +'p' => 'p', +'q' => 'q', +'r' => 'r', +'s' => 's', +'t' => 't', +'u' => 'u', +'v' => 'v', +'w' => 'w', +'x' => 'x', +'y' => 'y', +'z' => '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/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php new file mode 100644 index 000000000..3df89cc71 --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php @@ -0,0 +1,23 @@ += 80000) { +return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('normalizer_is_normalized')) { +function normalizer_is_normalized($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::isNormalized($string, $form); } +} +if (!function_exists('normalizer_normalize')) { +function normalizer_normalize($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::normalize($string, $form); } +} diff --git a/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php b/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php new file mode 100644 index 000000000..606aed37b --- /dev/null +++ b/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php @@ -0,0 +1,19 @@ + \PHP_VERSION_ID && !$convmap)) { +return false; +} + +if (null !== $encoding && !\is_scalar($encoding)) { +trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + +return ''; +} + +$s = (string) $s; +if ('' === $s) { +return ''; +} + +$encoding = self::getEncoding($encoding); + +if ('UTF-8' === $encoding) { +$encoding = null; +if (!preg_match('//u', $s)) { +$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); +} +} else { +$s = iconv($encoding, 'UTF-8//IGNORE', $s); +} + +$cnt = floor(\count($convmap) / 4) * 4; + +for ($i = 0; $i < $cnt; $i += 4) { + +$convmap[$i] += $convmap[$i + 2]; +$convmap[$i + 1] += $convmap[$i + 2]; +} + +$s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { +$c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; +for ($i = 0; $i < $cnt; $i += 4) { +if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { +return self::mb_chr($c - $convmap[$i + 2]); +} +} + +return $m[0]; +}, $s); + +if (null === $encoding) { +return $s; +} + +return iconv('UTF-8', $encoding.'//IGNORE', $s); +} + +public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) +{ +if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { +trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); + +return null; +} + +if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { +return false; +} + +if (null !== $encoding && !\is_scalar($encoding)) { +trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + +return null; +} + +if (null !== $is_hex && !\is_scalar($is_hex)) { +trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING); + +return null; +} + +$s = (string) $s; +if ('' === $s) { +return ''; +} + +$encoding = self::getEncoding($encoding); + +if ('UTF-8' === $encoding) { +$encoding = null; +if (!preg_match('//u', $s)) { +$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); +} +} else { +$s = iconv($encoding, 'UTF-8//IGNORE', $s); +} + +static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + +$cnt = floor(\count($convmap) / 4) * 4; +$i = 0; +$len = \strlen($s); +$result = ''; + +while ($i < $len) { +$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; +$uchr = substr($s, $i, $ulen); +$i += $ulen; +$c = self::mb_ord($uchr); + +for ($j = 0; $j < $cnt; $j += 4) { +if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { +$cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; +$result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; +continue 2; +} +} +$result .= $uchr; +} + +if (null === $encoding) { +return $result; +} + +return iconv('UTF-8', $encoding.'//IGNORE', $result); +} + +public static function mb_convert_case($s, $mode, $encoding = null) +{ +$s = (string) $s; +if ('' === $s) { +return ''; +} + +$encoding = self::getEncoding($encoding); + +if ('UTF-8' === $encoding) { +$encoding = null; +if (!preg_match('//u', $s)) { +$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); +} +} else { +$s = iconv($encoding, 'UTF-8//IGNORE', $s); +} + +if (\MB_CASE_TITLE == $mode) { +static $titleRegexp = null; +if (null === $titleRegexp) { +$titleRegexp = self::getData('titleCaseRegexp'); +} +$s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s); +} else { +if (\MB_CASE_UPPER == $mode) { +static $upper = null; +if (null === $upper) { +$upper = self::getData('upperCase'); +} +$map = $upper; +} else { +if (self::MB_CASE_FOLD === $mode) { +$s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); +} + +static $lower = null; +if (null === $lower) { +$lower = self::getData('lowerCase'); +} +$map = $lower; +} + +static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + +$i = 0; +$len = \strlen($s); + +while ($i < $len) { +$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; +$uchr = substr($s, $i, $ulen); +$i += $ulen; + +if (isset($map[$uchr])) { +$uchr = $map[$uchr]; +$nlen = \strlen($uchr); + +if ($nlen == $ulen) { +$nlen = $i; +do { +$s[--$nlen] = $uchr[--$ulen]; +} while ($ulen); +} else { +$s = substr_replace($s, $uchr, $i - $ulen, $ulen); +$len += $nlen - $ulen; +$i += $nlen - $ulen; +} +} +} +} + +if (null === $encoding) { +return $s; +} + +return iconv('UTF-8', $encoding.'//IGNORE', $s); +} + +public static function mb_internal_encoding($encoding = null) +{ +if (null === $encoding) { +return self::$internalEncoding; +} + +$normalizedEncoding = self::getEncoding($encoding); + +if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) { +self::$internalEncoding = $normalizedEncoding; + +return true; +} + +if (80000 > \PHP_VERSION_ID) { +return false; +} + +throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding)); +} + +public static function mb_language($lang = null) +{ +if (null === $lang) { +return self::$language; +} + +switch ($normalizedLang = strtolower($lang)) { +case 'uni': +case 'neutral': +self::$language = $normalizedLang; + +return true; +} + +if (80000 > \PHP_VERSION_ID) { +return false; +} + +throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang)); +} + +public static function mb_list_encodings() +{ +return ['UTF-8']; +} + +public static function mb_encoding_aliases($encoding) +{ +switch (strtoupper($encoding)) { +case 'UTF8': +case 'UTF-8': +return ['utf8']; +} + +return false; +} + +public static function mb_check_encoding($var = null, $encoding = null) +{ +if (null === $encoding) { +if (null === $var) { +return false; +} +$encoding = self::$internalEncoding; +} + +return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var); +} + +public static function mb_detect_encoding($str, $encodingList = null, $strict = false) +{ +if (null === $encodingList) { +$encodingList = self::$encodingList; +} else { +if (!\is_array($encodingList)) { +$encodingList = array_map('trim', explode(',', $encodingList)); +} +$encodingList = array_map('strtoupper', $encodingList); +} + +foreach ($encodingList as $enc) { +switch ($enc) { +case 'ASCII': +if (!preg_match('/[\x80-\xFF]/', $str)) { +return $enc; +} +break; + +case 'UTF8': +case 'UTF-8': +if (preg_match('//u', $str)) { +return 'UTF-8'; +} +break; + +default: +if (0 === strncmp($enc, 'ISO-8859-', 9)) { +return $enc; +} +} +} + +return false; +} + +public static function mb_detect_order($encodingList = null) +{ +if (null === $encodingList) { +return self::$encodingList; +} + +if (!\is_array($encodingList)) { +$encodingList = array_map('trim', explode(',', $encodingList)); +} +$encodingList = array_map('strtoupper', $encodingList); + +foreach ($encodingList as $enc) { +switch ($enc) { +default: +if (strncmp($enc, 'ISO-8859-', 9)) { +return false; +} + +case 'ASCII': +case 'UTF8': +case 'UTF-8': +} +} + +self::$encodingList = $encodingList; + +return true; +} + +public static function mb_strlen($s, $encoding = null) +{ +$encoding = self::getEncoding($encoding); +if ('CP850' === $encoding || 'ASCII' === $encoding) { +return \strlen($s); +} + +return @iconv_strlen($s, $encoding); +} + +public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) +{ +$encoding = self::getEncoding($encoding); +if ('CP850' === $encoding || 'ASCII' === $encoding) { +return strpos($haystack, $needle, $offset); +} + +$needle = (string) $needle; +if ('' === $needle) { +if (80000 > \PHP_VERSION_ID) { +trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING); + +return false; +} + +return 0; +} + +return iconv_strpos($haystack, $needle, $offset, $encoding); +} + +public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) +{ +$encoding = self::getEncoding($encoding); +if ('CP850' === $encoding || 'ASCII' === $encoding) { +return strrpos($haystack, $needle, $offset); +} + +if ($offset != (int) $offset) { +$offset = 0; +} elseif ($offset = (int) $offset) { +if ($offset < 0) { +if (0 > $offset += self::mb_strlen($needle)) { +$haystack = self::mb_substr($haystack, 0, $offset, $encoding); +} +$offset = 0; +} else { +$haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); +} +} + +$pos = '' !== $needle || 80000 > \PHP_VERSION_ID +? iconv_strrpos($haystack, $needle, $encoding) +: self::mb_strlen($haystack, $encoding); + +return false !== $pos ? $offset + $pos : false; +} + +public static function mb_str_split($string, $split_length = 1, $encoding = null) +{ +if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { +trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); + +return null; +} + +if (1 > $split_length = (int) $split_length) { +if (80000 > \PHP_VERSION_ID) { +trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); + +return false; +} + +throw new \ValueError('Argument #2 ($length) must be greater than 0'); +} + +if (null === $encoding) { +$encoding = mb_internal_encoding(); +} + +if ('UTF-8' === $encoding = self::getEncoding($encoding)) { +$rx = '/('; +while (65535 < $split_length) { +$rx .= '.{65535}'; +$split_length -= 65535; +} +$rx .= '.{'.$split_length.'})/us'; + +return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); +} + +$result = []; +$length = mb_strlen($string, $encoding); + +for ($i = 0; $i < $length; $i += $split_length) { +$result[] = mb_substr($string, $i, $split_length, $encoding); +} + +return $result; +} + +public static function mb_strtolower($s, $encoding = null) +{ +return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding); +} + +public static function mb_strtoupper($s, $encoding = null) +{ +return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding); +} + +public static function mb_substitute_character($c = null) +{ +if (null === $c) { +return 'none'; +} +if (0 === strcasecmp($c, 'none')) { +return true; +} +if (80000 > \PHP_VERSION_ID) { +return false; +} +if (\is_int($c) || 'long' === $c || 'entity' === $c) { +return false; +} + +throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint'); +} + +public static function mb_substr($s, $start, $length = null, $encoding = null) +{ +$encoding = self::getEncoding($encoding); +if ('CP850' === $encoding || 'ASCII' === $encoding) { +return (string) substr($s, $start, null === $length ? 2147483647 : $length); +} + +if ($start < 0) { +$start = iconv_strlen($s, $encoding) + $start; +if ($start < 0) { +$start = 0; +} +} + +if (null === $length) { +$length = 2147483647; +} elseif ($length < 0) { +$length = iconv_strlen($s, $encoding) + $length - $start; +if ($length < 0) { +return ''; +} +} + +return (string) iconv_substr($s, $start, $length, $encoding); +} + +public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) +{ +$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); +$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + +return self::mb_strpos($haystack, $needle, $offset, $encoding); +} + +public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) +{ +$pos = self::mb_stripos($haystack, $needle, 0, $encoding); + +return self::getSubpart($pos, $part, $haystack, $encoding); +} + +public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) +{ +$encoding = self::getEncoding($encoding); +if ('CP850' === $encoding || 'ASCII' === $encoding) { +$pos = strrpos($haystack, $needle); +} else { +$needle = self::mb_substr($needle, 0, 1, $encoding); +$pos = iconv_strrpos($haystack, $needle, $encoding); +} + +return self::getSubpart($pos, $part, $haystack, $encoding); +} + +public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) +{ +$needle = self::mb_substr($needle, 0, 1, $encoding); +$pos = self::mb_strripos($haystack, $needle, $encoding); + +return self::getSubpart($pos, $part, $haystack, $encoding); +} + +public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) +{ +$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); +$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + +return self::mb_strrpos($haystack, $needle, $offset, $encoding); +} + +public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) +{ +$pos = strpos($haystack, $needle); +if (false === $pos) { +return false; +} +if ($part) { +return substr($haystack, 0, $pos); +} + +return substr($haystack, $pos); +} + +public static function mb_get_info($type = 'all') +{ +$info = [ +'internal_encoding' => self::$internalEncoding, +'http_output' => 'pass', +'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', +'func_overload' => 0, +'func_overload_list' => 'no overload', +'mail_charset' => 'UTF-8', +'mail_header_encoding' => 'BASE64', +'mail_body_encoding' => 'BASE64', +'illegal_chars' => 0, +'encoding_translation' => 'Off', +'language' => self::$language, +'detect_order' => self::$encodingList, +'substitute_character' => 'none', +'strict_detection' => 'Off', +]; + +if ('all' === $type) { +return $info; +} +if (isset($info[$type])) { +return $info[$type]; +} + +return false; +} + +public static function mb_http_input($type = '') +{ +return false; +} + +public static function mb_http_output($encoding = null) +{ +return null !== $encoding ? 'pass' === $encoding : 'pass'; +} + +public static function mb_strwidth($s, $encoding = null) +{ +$encoding = self::getEncoding($encoding); + +if ('UTF-8' !== $encoding) { +$s = iconv($encoding, 'UTF-8//IGNORE', $s); +} + +$s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); + +return ($wide << 1) + iconv_strlen($s, 'UTF-8'); +} + +public static function mb_substr_count($haystack, $needle, $encoding = null) +{ +return substr_count($haystack, $needle); +} + +public static function mb_output_handler($contents, $status) +{ +return $contents; +} + +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 = self::getEncoding($encoding)) { +$s = mb_convert_encoding($s, $encoding, 'UTF-8'); +} + +return $s; +} + +public static function mb_ord($s, $encoding = null) +{ +if ('UTF-8' !== $encoding = self::getEncoding($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; +} + +private static function getSubpart($pos, $part, $haystack, $encoding) +{ +if (false === $pos) { +return false; +} +if ($part) { +return self::mb_substr($haystack, 0, $pos, $encoding); +} + +return self::mb_substr($haystack, $pos, null, $encoding); +} + +private static function html_encoding_callback(array $m) +{ +$i = 1; +$entities = ''; +$m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8')); + +while (isset($m[$i])) { +if (0x80 > $m[$i]) { +$entities .= \chr($m[$i++]); +continue; +} +if (0xF0 <= $m[$i]) { +$c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; +} elseif (0xE0 <= $m[$i]) { +$c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; +} else { +$c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; +} + +$entities .= '&#'.$c.';'; +} + +return $entities; +} + +private static function title_case(array $s) +{ +return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8'); +} + +private static function getData($file) +{ +if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { +return require $file; +} + +return false; +} + +private static function getEncoding($encoding) +{ +if (null === $encoding) { +return self::$internalEncoding; +} + +if ('UTF-8' === $encoding) { +return 'UTF-8'; +} + +$encoding = strtoupper($encoding); + +if ('8BIT' === $encoding || 'BINARY' === $encoding) { +return 'CP850'; +} + +if ('UTF8' === $encoding) { +return 'UTF-8'; +} + +return $encoding; +} +} diff --git a/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php new file mode 100644 index 000000000..29985d433 --- /dev/null +++ b/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php @@ -0,0 +1,1397 @@ + 'a', +'B' => 'b', +'C' => 'c', +'D' => 'd', +'E' => 'e', +'F' => 'f', +'G' => 'g', +'H' => 'h', +'I' => 'i', +'J' => 'j', +'K' => 'k', +'L' => 'l', +'M' => 'm', +'N' => 'n', +'O' => 'o', +'P' => 'p', +'Q' => 'q', +'R' => 'r', +'S' => 's', +'T' => 't', +'U' => 'u', +'V' => 'v', +'W' => 'w', +'X' => 'x', +'Y' => 'y', +'Z' => 'z', +'À' => 'à', +'Á' => 'á', +'Â' => 'â', +'Ã' => 'ã', +'Ä' => 'ä', +'Å' => 'å', +'Æ' => 'æ', +'Ç' => 'ç', +'È' => 'è', +'É' => 'é', +'Ê' => 'ê', +'Ë' => 'ë', +'Ì' => 'ì', +'Í' => 'í', +'Î' => 'î', +'Ï' => 'ï', +'Ð' => 'ð', +'Ñ' => 'ñ', +'Ò' => 'ò', +'Ó' => 'ó', +'Ô' => 'ô', +'Õ' => 'õ', +'Ö' => 'ö', +'Ø' => 'ø', +'Ù' => 'ù', +'Ú' => 'ú', +'Û' => 'û', +'Ü' => 'ü', +'Ý' => 'ý', +'Þ' => 'þ', +'Ā' => 'ā', +'Ă' => 'ă', +'Ą' => 'ą', +'Ć' => 'ć', +'Ĉ' => 'ĉ', +'Ċ' => 'ċ', +'Č' => 'č', +'Ď' => 'ď', +'Đ' => 'đ', +'Ē' => 'ē', +'Ĕ' => 'ĕ', +'Ė' => 'ė', +'Ę' => 'ę', +'Ě' => 'ě', +'Ĝ' => 'ĝ', +'Ğ' => 'ğ', +'Ġ' => 'ġ', +'Ģ' => 'ģ', +'Ĥ' => 'ĥ', +'Ħ' => 'ħ', +'Ĩ' => 'ĩ', +'Ī' => 'ī', +'Ĭ' => 'ĭ', +'Į' => 'į', +'İ' => 'i̇', +'IJ' => 'ij', +'Ĵ' => 'ĵ', +'Ķ' => 'ķ', +'Ĺ' => 'ĺ', +'Ļ' => 'ļ', +'Ľ' => 'ľ', +'Ŀ' => 'ŀ', +'Ł' => 'ł', +'Ń' => 'ń', +'Ņ' => 'ņ', +'Ň' => 'ň', +'Ŋ' => 'ŋ', +'Ō' => 'ō', +'Ŏ' => 'ŏ', +'Ő' => 'ő', +'Œ' => 'œ', +'Ŕ' => 'ŕ', +'Ŗ' => 'ŗ', +'Ř' => 'ř', +'Ś' => 'ś', +'Ŝ' => 'ŝ', +'Ş' => 'ş', +'Š' => 'š', +'Ţ' => 'ţ', +'Ť' => 'ť', +'Ŧ' => 'ŧ', +'Ũ' => 'ũ', +'Ū' => 'ū', +'Ŭ' => 'ŭ', +'Ů' => 'ů', +'Ű' => 'ű', +'Ų' => 'ų', +'Ŵ' => 'ŵ', +'Ŷ' => 'ŷ', +'Ÿ' => 'ÿ', +'Ź' => 'ź', +'Ż' => 'ż', +'Ž' => 'ž', +'Ɓ' => 'ɓ', +'Ƃ' => 'ƃ', +'Ƅ' => 'ƅ', +'Ɔ' => 'ɔ', +'Ƈ' => 'ƈ', +'Ɖ' => 'ɖ', +'Ɗ' => 'ɗ', +'Ƌ' => 'ƌ', +'Ǝ' => 'ǝ', +'Ə' => 'ə', +'Ɛ' => 'ɛ', +'Ƒ' => 'ƒ', +'Ɠ' => 'ɠ', +'Ɣ' => 'ɣ', +'Ɩ' => 'ɩ', +'Ɨ' => 'ɨ', +'Ƙ' => 'ƙ', +'Ɯ' => 'ɯ', +'Ɲ' => 'ɲ', +'Ɵ' => 'ɵ', +'Ơ' => 'ơ', +'Ƣ' => 'ƣ', +'Ƥ' => 'ƥ', +'Ʀ' => 'ʀ', +'Ƨ' => 'ƨ', +'Ʃ' => 'ʃ', +'Ƭ' => 'ƭ', +'Ʈ' => 'ʈ', +'Ư' => 'ư', +'Ʊ' => 'ʊ', +'Ʋ' => 'ʋ', +'Ƴ' => 'ƴ', +'Ƶ' => 'ƶ', +'Ʒ' => 'ʒ', +'Ƹ' => 'ƹ', +'Ƽ' => 'ƽ', +'DŽ' => 'dž', +'Dž' => 'dž', +'LJ' => 'lj', +'Lj' => 'lj', +'NJ' => 'nj', +'Nj' => 'nj', +'Ǎ' => 'ǎ', +'Ǐ' => 'ǐ', +'Ǒ' => 'ǒ', +'Ǔ' => 'ǔ', +'Ǖ' => 'ǖ', +'Ǘ' => 'ǘ', +'Ǚ' => 'ǚ', +'Ǜ' => 'ǜ', +'Ǟ' => 'ǟ', +'Ǡ' => 'ǡ', +'Ǣ' => 'ǣ', +'Ǥ' => 'ǥ', +'Ǧ' => 'ǧ', +'Ǩ' => 'ǩ', +'Ǫ' => 'ǫ', +'Ǭ' => 'ǭ', +'Ǯ' => 'ǯ', +'DZ' => 'dz', +'Dz' => 'dz', +'Ǵ' => 'ǵ', +'Ƕ' => 'ƕ', +'Ƿ' => 'ƿ', +'Ǹ' => 'ǹ', +'Ǻ' => 'ǻ', +'Ǽ' => 'ǽ', +'Ǿ' => 'ǿ', +'Ȁ' => 'ȁ', +'Ȃ' => 'ȃ', +'Ȅ' => 'ȅ', +'Ȇ' => 'ȇ', +'Ȉ' => 'ȉ', +'Ȋ' => 'ȋ', +'Ȍ' => 'ȍ', +'Ȏ' => 'ȏ', +'Ȑ' => 'ȑ', +'Ȓ' => 'ȓ', +'Ȕ' => 'ȕ', +'Ȗ' => 'ȗ', +'Ș' => 'ș', +'Ț' => 'ț', +'Ȝ' => 'ȝ', +'Ȟ' => 'ȟ', +'Ƞ' => 'ƞ', +'Ȣ' => 'ȣ', +'Ȥ' => 'ȥ', +'Ȧ' => 'ȧ', +'Ȩ' => 'ȩ', +'Ȫ' => 'ȫ', +'Ȭ' => 'ȭ', +'Ȯ' => 'ȯ', +'Ȱ' => 'ȱ', +'Ȳ' => 'ȳ', +'Ⱥ' => 'ⱥ', +'Ȼ' => 'ȼ', +'Ƚ' => 'ƚ', +'Ⱦ' => 'ⱦ', +'Ɂ' => 'ɂ', +'Ƀ' => 'ƀ', +'Ʉ' => 'ʉ', +'Ʌ' => 'ʌ', +'Ɇ' => 'ɇ', +'Ɉ' => 'ɉ', +'Ɋ' => 'ɋ', +'Ɍ' => 'ɍ', +'Ɏ' => 'ɏ', +'Ͱ' => 'ͱ', +'Ͳ' => 'ͳ', +'Ͷ' => 'ͷ', +'Ϳ' => 'ϳ', +'Ά' => 'ά', +'Έ' => 'έ', +'Ή' => 'ή', +'Ί' => 'ί', +'Ό' => 'ό', +'Ύ' => 'ύ', +'Ώ' => 'ώ', +'Α' => 'α', +'Β' => 'β', +'Γ' => 'γ', +'Δ' => 'δ', +'Ε' => 'ε', +'Ζ' => 'ζ', +'Η' => 'η', +'Θ' => 'θ', +'Ι' => 'ι', +'Κ' => 'κ', +'Λ' => 'λ', +'Μ' => 'μ', +'Ν' => 'ν', +'Ξ' => 'ξ', +'Ο' => 'ο', +'Π' => 'π', +'Ρ' => 'ρ', +'Σ' => 'σ', +'Τ' => 'τ', +'Υ' => 'υ', +'Φ' => 'φ', +'Χ' => 'χ', +'Ψ' => 'ψ', +'Ω' => 'ω', +'Ϊ' => 'ϊ', +'Ϋ' => 'ϋ', +'Ϗ' => 'ϗ', +'Ϙ' => 'ϙ', +'Ϛ' => 'ϛ', +'Ϝ' => 'ϝ', +'Ϟ' => 'ϟ', +'Ϡ' => 'ϡ', +'Ϣ' => 'ϣ', +'Ϥ' => 'ϥ', +'Ϧ' => 'ϧ', +'Ϩ' => 'ϩ', +'Ϫ' => 'ϫ', +'Ϭ' => 'ϭ', +'Ϯ' => 'ϯ', +'ϴ' => 'θ', +'Ϸ' => 'ϸ', +'Ϲ' => 'ϲ', +'Ϻ' => 'ϻ', +'Ͻ' => 'ͻ', +'Ͼ' => 'ͼ', +'Ͽ' => 'ͽ', +'Ѐ' => 'ѐ', +'Ё' => 'ё', +'Ђ' => 'ђ', +'Ѓ' => 'ѓ', +'Є' => 'є', +'Ѕ' => 'ѕ', +'І' => 'і', +'Ї' => 'ї', +'Ј' => 'ј', +'Љ' => 'љ', +'Њ' => 'њ', +'Ћ' => 'ћ', +'Ќ' => 'ќ', +'Ѝ' => 'ѝ', +'Ў' => 'ў', +'Џ' => 'џ', +'А' => 'а', +'Б' => 'б', +'В' => 'в', +'Г' => 'г', +'Д' => 'д', +'Е' => 'е', +'Ж' => 'ж', +'З' => 'з', +'И' => 'и', +'Й' => 'й', +'К' => 'к', +'Л' => 'л', +'М' => 'м', +'Н' => 'н', +'О' => 'о', +'П' => 'п', +'Р' => 'р', +'С' => 'с', +'Т' => 'т', +'У' => 'у', +'Ф' => 'ф', +'Х' => 'х', +'Ц' => 'ц', +'Ч' => 'ч', +'Ш' => 'ш', +'Щ' => 'щ', +'Ъ' => 'ъ', +'Ы' => 'ы', +'Ь' => 'ь', +'Э' => 'э', +'Ю' => 'ю', +'Я' => 'я', +'Ѡ' => 'ѡ', +'Ѣ' => 'ѣ', +'Ѥ' => 'ѥ', +'Ѧ' => 'ѧ', +'Ѩ' => 'ѩ', +'Ѫ' => 'ѫ', +'Ѭ' => 'ѭ', +'Ѯ' => 'ѯ', +'Ѱ' => 'ѱ', +'Ѳ' => 'ѳ', +'Ѵ' => 'ѵ', +'Ѷ' => 'ѷ', +'Ѹ' => 'ѹ', +'Ѻ' => 'ѻ', +'Ѽ' => 'ѽ', +'Ѿ' => 'ѿ', +'Ҁ' => 'ҁ', +'Ҋ' => 'ҋ', +'Ҍ' => 'ҍ', +'Ҏ' => 'ҏ', +'Ґ' => 'ґ', +'Ғ' => 'ғ', +'Ҕ' => 'ҕ', +'Җ' => 'җ', +'Ҙ' => 'ҙ', +'Қ' => 'қ', +'Ҝ' => 'ҝ', +'Ҟ' => 'ҟ', +'Ҡ' => 'ҡ', +'Ң' => 'ң', +'Ҥ' => 'ҥ', +'Ҧ' => 'ҧ', +'Ҩ' => 'ҩ', +'Ҫ' => 'ҫ', +'Ҭ' => 'ҭ', +'Ү' => 'ү', +'Ұ' => 'ұ', +'Ҳ' => 'ҳ', +'Ҵ' => 'ҵ', +'Ҷ' => 'ҷ', +'Ҹ' => 'ҹ', +'Һ' => 'һ', +'Ҽ' => 'ҽ', +'Ҿ' => 'ҿ', +'Ӏ' => 'ӏ', +'Ӂ' => 'ӂ', +'Ӄ' => 'ӄ', +'Ӆ' => 'ӆ', +'Ӈ' => 'ӈ', +'Ӊ' => 'ӊ', +'Ӌ' => 'ӌ', +'Ӎ' => 'ӎ', +'Ӑ' => 'ӑ', +'Ӓ' => 'ӓ', +'Ӕ' => 'ӕ', +'Ӗ' => 'ӗ', +'Ә' => 'ә', +'Ӛ' => 'ӛ', +'Ӝ' => 'ӝ', +'Ӟ' => 'ӟ', +'Ӡ' => 'ӡ', +'Ӣ' => 'ӣ', +'Ӥ' => 'ӥ', +'Ӧ' => 'ӧ', +'Ө' => 'ө', +'Ӫ' => 'ӫ', +'Ӭ' => 'ӭ', +'Ӯ' => 'ӯ', +'Ӱ' => 'ӱ', +'Ӳ' => 'ӳ', +'Ӵ' => 'ӵ', +'Ӷ' => 'ӷ', +'Ӹ' => 'ӹ', +'Ӻ' => 'ӻ', +'Ӽ' => 'ӽ', +'Ӿ' => 'ӿ', +'Ԁ' => 'ԁ', +'Ԃ' => 'ԃ', +'Ԅ' => 'ԅ', +'Ԇ' => 'ԇ', +'Ԉ' => 'ԉ', +'Ԋ' => 'ԋ', +'Ԍ' => 'ԍ', +'Ԏ' => 'ԏ', +'Ԑ' => 'ԑ', +'Ԓ' => 'ԓ', +'Ԕ' => 'ԕ', +'Ԗ' => 'ԗ', +'Ԙ' => 'ԙ', +'Ԛ' => 'ԛ', +'Ԝ' => 'ԝ', +'Ԟ' => 'ԟ', +'Ԡ' => 'ԡ', +'Ԣ' => 'ԣ', +'Ԥ' => 'ԥ', +'Ԧ' => 'ԧ', +'Ԩ' => 'ԩ', +'Ԫ' => 'ԫ', +'Ԭ' => 'ԭ', +'Ԯ' => 'ԯ', +'Ա' => 'ա', +'Բ' => 'բ', +'Գ' => 'գ', +'Դ' => 'դ', +'Ե' => 'ե', +'Զ' => 'զ', +'Է' => 'է', +'Ը' => 'ը', +'Թ' => 'թ', +'Ժ' => 'ժ', +'Ի' => 'ի', +'Լ' => 'լ', +'Խ' => 'խ', +'Ծ' => 'ծ', +'Կ' => 'կ', +'Հ' => 'հ', +'Ձ' => 'ձ', +'Ղ' => 'ղ', +'Ճ' => 'ճ', +'Մ' => 'մ', +'Յ' => 'յ', +'Ն' => 'ն', +'Շ' => 'շ', +'Ո' => 'ո', +'Չ' => 'չ', +'Պ' => 'պ', +'Ջ' => 'ջ', +'Ռ' => 'ռ', +'Ս' => 'ս', +'Վ' => 'վ', +'Տ' => 'տ', +'Ր' => 'ր', +'Ց' => 'ց', +'Ւ' => 'ւ', +'Փ' => 'փ', +'Ք' => 'ք', +'Օ' => 'օ', +'Ֆ' => 'ֆ', +'Ⴀ' => 'ⴀ', +'Ⴁ' => 'ⴁ', +'Ⴂ' => 'ⴂ', +'Ⴃ' => 'ⴃ', +'Ⴄ' => 'ⴄ', +'Ⴅ' => 'ⴅ', +'Ⴆ' => 'ⴆ', +'Ⴇ' => 'ⴇ', +'Ⴈ' => 'ⴈ', +'Ⴉ' => 'ⴉ', +'Ⴊ' => 'ⴊ', +'Ⴋ' => 'ⴋ', +'Ⴌ' => 'ⴌ', +'Ⴍ' => 'ⴍ', +'Ⴎ' => 'ⴎ', +'Ⴏ' => 'ⴏ', +'Ⴐ' => 'ⴐ', +'Ⴑ' => 'ⴑ', +'Ⴒ' => 'ⴒ', +'Ⴓ' => 'ⴓ', +'Ⴔ' => 'ⴔ', +'Ⴕ' => 'ⴕ', +'Ⴖ' => 'ⴖ', +'Ⴗ' => 'ⴗ', +'Ⴘ' => 'ⴘ', +'Ⴙ' => 'ⴙ', +'Ⴚ' => 'ⴚ', +'Ⴛ' => 'ⴛ', +'Ⴜ' => 'ⴜ', +'Ⴝ' => 'ⴝ', +'Ⴞ' => 'ⴞ', +'Ⴟ' => 'ⴟ', +'Ⴠ' => 'ⴠ', +'Ⴡ' => 'ⴡ', +'Ⴢ' => 'ⴢ', +'Ⴣ' => 'ⴣ', +'Ⴤ' => 'ⴤ', +'Ⴥ' => 'ⴥ', +'Ⴧ' => 'ⴧ', +'Ⴭ' => 'ⴭ', +'Ꭰ' => 'ꭰ', +'Ꭱ' => 'ꭱ', +'Ꭲ' => 'ꭲ', +'Ꭳ' => 'ꭳ', +'Ꭴ' => 'ꭴ', +'Ꭵ' => 'ꭵ', +'Ꭶ' => 'ꭶ', +'Ꭷ' => 'ꭷ', +'Ꭸ' => 'ꭸ', +'Ꭹ' => 'ꭹ', +'Ꭺ' => 'ꭺ', +'Ꭻ' => 'ꭻ', +'Ꭼ' => 'ꭼ', +'Ꭽ' => 'ꭽ', +'Ꭾ' => 'ꭾ', +'Ꭿ' => 'ꭿ', +'Ꮀ' => 'ꮀ', +'Ꮁ' => 'ꮁ', +'Ꮂ' => 'ꮂ', +'Ꮃ' => 'ꮃ', +'Ꮄ' => 'ꮄ', +'Ꮅ' => 'ꮅ', +'Ꮆ' => 'ꮆ', +'Ꮇ' => 'ꮇ', +'Ꮈ' => 'ꮈ', +'Ꮉ' => 'ꮉ', +'Ꮊ' => 'ꮊ', +'Ꮋ' => 'ꮋ', +'Ꮌ' => 'ꮌ', +'Ꮍ' => 'ꮍ', +'Ꮎ' => 'ꮎ', +'Ꮏ' => 'ꮏ', +'Ꮐ' => 'ꮐ', +'Ꮑ' => 'ꮑ', +'Ꮒ' => 'ꮒ', +'Ꮓ' => 'ꮓ', +'Ꮔ' => 'ꮔ', +'Ꮕ' => 'ꮕ', +'Ꮖ' => 'ꮖ', +'Ꮗ' => 'ꮗ', +'Ꮘ' => 'ꮘ', +'Ꮙ' => 'ꮙ', +'Ꮚ' => 'ꮚ', +'Ꮛ' => 'ꮛ', +'Ꮜ' => 'ꮜ', +'Ꮝ' => 'ꮝ', +'Ꮞ' => 'ꮞ', +'Ꮟ' => 'ꮟ', +'Ꮠ' => 'ꮠ', +'Ꮡ' => 'ꮡ', +'Ꮢ' => 'ꮢ', +'Ꮣ' => 'ꮣ', +'Ꮤ' => 'ꮤ', +'Ꮥ' => 'ꮥ', +'Ꮦ' => 'ꮦ', +'Ꮧ' => 'ꮧ', +'Ꮨ' => 'ꮨ', +'Ꮩ' => 'ꮩ', +'Ꮪ' => 'ꮪ', +'Ꮫ' => 'ꮫ', +'Ꮬ' => 'ꮬ', +'Ꮭ' => 'ꮭ', +'Ꮮ' => 'ꮮ', +'Ꮯ' => 'ꮯ', +'Ꮰ' => 'ꮰ', +'Ꮱ' => 'ꮱ', +'Ꮲ' => 'ꮲ', +'Ꮳ' => 'ꮳ', +'Ꮴ' => 'ꮴ', +'Ꮵ' => 'ꮵ', +'Ꮶ' => 'ꮶ', +'Ꮷ' => 'ꮷ', +'Ꮸ' => 'ꮸ', +'Ꮹ' => 'ꮹ', +'Ꮺ' => 'ꮺ', +'Ꮻ' => 'ꮻ', +'Ꮼ' => 'ꮼ', +'Ꮽ' => 'ꮽ', +'Ꮾ' => 'ꮾ', +'Ꮿ' => 'ꮿ', +'Ᏸ' => 'ᏸ', +'Ᏹ' => 'ᏹ', +'Ᏺ' => 'ᏺ', +'Ᏻ' => 'ᏻ', +'Ᏼ' => 'ᏼ', +'Ᏽ' => 'ᏽ', +'Ა' => 'ა', +'Ბ' => 'ბ', +'Გ' => 'გ', +'Დ' => 'დ', +'Ე' => 'ე', +'Ვ' => 'ვ', +'Ზ' => 'ზ', +'Თ' => 'თ', +'Ი' => 'ი', +'Კ' => 'კ', +'Ლ' => 'ლ', +'Მ' => 'მ', +'Ნ' => 'ნ', +'Ო' => 'ო', +'Პ' => 'პ', +'Ჟ' => 'ჟ', +'Რ' => 'რ', +'Ს' => 'ს', +'Ტ' => 'ტ', +'Უ' => 'უ', +'Ფ' => 'ფ', +'Ქ' => 'ქ', +'Ღ' => 'ღ', +'Ყ' => 'ყ', +'Შ' => 'შ', +'Ჩ' => 'ჩ', +'Ც' => 'ც', +'Ძ' => 'ძ', +'Წ' => 'წ', +'Ჭ' => 'ჭ', +'Ხ' => 'ხ', +'Ჯ' => 'ჯ', +'Ჰ' => 'ჰ', +'Ჱ' => 'ჱ', +'Ჲ' => 'ჲ', +'Ჳ' => 'ჳ', +'Ჴ' => 'ჴ', +'Ჵ' => 'ჵ', +'Ჶ' => 'ჶ', +'Ჷ' => 'ჷ', +'Ჸ' => 'ჸ', +'Ჹ' => 'ჹ', +'Ჺ' => 'ჺ', +'Ჽ' => 'ჽ', +'Ჾ' => 'ჾ', +'Ჿ' => 'ჿ', +'Ḁ' => 'ḁ', +'Ḃ' => 'ḃ', +'Ḅ' => 'ḅ', +'Ḇ' => 'ḇ', +'Ḉ' => 'ḉ', +'Ḋ' => 'ḋ', +'Ḍ' => 'ḍ', +'Ḏ' => 'ḏ', +'Ḑ' => 'ḑ', +'Ḓ' => 'ḓ', +'Ḕ' => 'ḕ', +'Ḗ' => 'ḗ', +'Ḙ' => 'ḙ', +'Ḛ' => 'ḛ', +'Ḝ' => 'ḝ', +'Ḟ' => 'ḟ', +'Ḡ' => 'ḡ', +'Ḣ' => 'ḣ', +'Ḥ' => 'ḥ', +'Ḧ' => 'ḧ', +'Ḩ' => 'ḩ', +'Ḫ' => 'ḫ', +'Ḭ' => 'ḭ', +'Ḯ' => 'ḯ', +'Ḱ' => 'ḱ', +'Ḳ' => 'ḳ', +'Ḵ' => 'ḵ', +'Ḷ' => 'ḷ', +'Ḹ' => 'ḹ', +'Ḻ' => 'ḻ', +'Ḽ' => 'ḽ', +'Ḿ' => 'ḿ', +'Ṁ' => 'ṁ', +'Ṃ' => 'ṃ', +'Ṅ' => 'ṅ', +'Ṇ' => 'ṇ', +'Ṉ' => 'ṉ', +'Ṋ' => 'ṋ', +'Ṍ' => 'ṍ', +'Ṏ' => 'ṏ', +'Ṑ' => 'ṑ', +'Ṓ' => 'ṓ', +'Ṕ' => 'ṕ', +'Ṗ' => 'ṗ', +'Ṙ' => 'ṙ', +'Ṛ' => 'ṛ', +'Ṝ' => 'ṝ', +'Ṟ' => 'ṟ', +'Ṡ' => 'ṡ', +'Ṣ' => 'ṣ', +'Ṥ' => 'ṥ', +'Ṧ' => 'ṧ', +'Ṩ' => 'ṩ', +'Ṫ' => 'ṫ', +'Ṭ' => 'ṭ', +'Ṯ' => 'ṯ', +'Ṱ' => 'ṱ', +'Ṳ' => 'ṳ', +'Ṵ' => 'ṵ', +'Ṷ' => 'ṷ', +'Ṹ' => 'ṹ', +'Ṻ' => 'ṻ', +'Ṽ' => 'ṽ', +'Ṿ' => 'ṿ', +'Ẁ' => 'ẁ', +'Ẃ' => 'ẃ', +'Ẅ' => 'ẅ', +'Ẇ' => 'ẇ', +'Ẉ' => 'ẉ', +'Ẋ' => 'ẋ', +'Ẍ' => 'ẍ', +'Ẏ' => 'ẏ', +'Ẑ' => 'ẑ', +'Ẓ' => 'ẓ', +'Ẕ' => 'ẕ', +'ẞ' => 'ß', +'Ạ' => 'ạ', +'Ả' => 'ả', +'Ấ' => 'ấ', +'Ầ' => 'ầ', +'Ẩ' => 'ẩ', +'Ẫ' => 'ẫ', +'Ậ' => 'ậ', +'Ắ' => 'ắ', +'Ằ' => 'ằ', +'Ẳ' => 'ẳ', +'Ẵ' => 'ẵ', +'Ặ' => 'ặ', +'Ẹ' => 'ẹ', +'Ẻ' => 'ẻ', +'Ẽ' => 'ẽ', +'Ế' => 'ế', +'Ề' => 'ề', +'Ể' => 'ể', +'Ễ' => 'ễ', +'Ệ' => 'ệ', +'Ỉ' => 'ỉ', +'Ị' => 'ị', +'Ọ' => 'ọ', +'Ỏ' => 'ỏ', +'Ố' => 'ố', +'Ồ' => 'ồ', +'Ổ' => 'ổ', +'Ỗ' => 'ỗ', +'Ộ' => 'ộ', +'Ớ' => 'ớ', +'Ờ' => 'ờ', +'Ở' => 'ở', +'Ỡ' => 'ỡ', +'Ợ' => 'ợ', +'Ụ' => 'ụ', +'Ủ' => 'ủ', +'Ứ' => 'ứ', +'Ừ' => 'ừ', +'Ử' => 'ử', +'Ữ' => 'ữ', +'Ự' => 'ự', +'Ỳ' => 'ỳ', +'Ỵ' => 'ỵ', +'Ỷ' => 'ỷ', +'Ỹ' => 'ỹ', +'Ỻ' => 'ỻ', +'Ỽ' => 'ỽ', +'Ỿ' => 'ỿ', +'Ἀ' => 'ἀ', +'Ἁ' => 'ἁ', +'Ἂ' => 'ἂ', +'Ἃ' => 'ἃ', +'Ἄ' => 'ἄ', +'Ἅ' => 'ἅ', +'Ἆ' => 'ἆ', +'Ἇ' => 'ἇ', +'Ἐ' => 'ἐ', +'Ἑ' => 'ἑ', +'Ἒ' => 'ἒ', +'Ἓ' => 'ἓ', +'Ἔ' => 'ἔ', +'Ἕ' => 'ἕ', +'Ἠ' => 'ἠ', +'Ἡ' => 'ἡ', +'Ἢ' => 'ἢ', +'Ἣ' => 'ἣ', +'Ἤ' => 'ἤ', +'Ἥ' => 'ἥ', +'Ἦ' => 'ἦ', +'Ἧ' => 'ἧ', +'Ἰ' => 'ἰ', +'Ἱ' => 'ἱ', +'Ἲ' => 'ἲ', +'Ἳ' => 'ἳ', +'Ἴ' => 'ἴ', +'Ἵ' => 'ἵ', +'Ἶ' => 'ἶ', +'Ἷ' => 'ἷ', +'Ὀ' => 'ὀ', +'Ὁ' => 'ὁ', +'Ὂ' => 'ὂ', +'Ὃ' => 'ὃ', +'Ὄ' => 'ὄ', +'Ὅ' => 'ὅ', +'Ὑ' => 'ὑ', +'Ὓ' => 'ὓ', +'Ὕ' => 'ὕ', +'Ὗ' => 'ὗ', +'Ὠ' => 'ὠ', +'Ὡ' => 'ὡ', +'Ὢ' => 'ὢ', +'Ὣ' => 'ὣ', +'Ὤ' => 'ὤ', +'Ὥ' => 'ὥ', +'Ὦ' => 'ὦ', +'Ὧ' => 'ὧ', +'ᾈ' => 'ᾀ', +'ᾉ' => 'ᾁ', +'ᾊ' => 'ᾂ', +'ᾋ' => 'ᾃ', +'ᾌ' => 'ᾄ', +'ᾍ' => 'ᾅ', +'ᾎ' => 'ᾆ', +'ᾏ' => 'ᾇ', +'ᾘ' => 'ᾐ', +'ᾙ' => 'ᾑ', +'ᾚ' => 'ᾒ', +'ᾛ' => 'ᾓ', +'ᾜ' => 'ᾔ', +'ᾝ' => 'ᾕ', +'ᾞ' => 'ᾖ', +'ᾟ' => 'ᾗ', +'ᾨ' => 'ᾠ', +'ᾩ' => 'ᾡ', +'ᾪ' => 'ᾢ', +'ᾫ' => 'ᾣ', +'ᾬ' => 'ᾤ', +'ᾭ' => 'ᾥ', +'ᾮ' => 'ᾦ', +'ᾯ' => 'ᾧ', +'Ᾰ' => 'ᾰ', +'Ᾱ' => 'ᾱ', +'Ὰ' => 'ὰ', +'Ά' => 'ά', +'ᾼ' => 'ᾳ', +'Ὲ' => 'ὲ', +'Έ' => 'έ', +'Ὴ' => 'ὴ', +'Ή' => 'ή', +'ῌ' => 'ῃ', +'Ῐ' => 'ῐ', +'Ῑ' => 'ῑ', +'Ὶ' => 'ὶ', +'Ί' => 'ί', +'Ῠ' => 'ῠ', +'Ῡ' => 'ῡ', +'Ὺ' => 'ὺ', +'Ύ' => 'ύ', +'Ῥ' => 'ῥ', +'Ὸ' => 'ὸ', +'Ό' => 'ό', +'Ὼ' => 'ὼ', +'Ώ' => 'ώ', +'ῼ' => 'ῳ', +'Ω' => 'ω', +'K' => 'k', +'Å' => 'å', +'Ⅎ' => 'ⅎ', +'Ⅰ' => 'ⅰ', +'Ⅱ' => 'ⅱ', +'Ⅲ' => 'ⅲ', +'Ⅳ' => 'ⅳ', +'Ⅴ' => 'ⅴ', +'Ⅵ' => 'ⅵ', +'Ⅶ' => 'ⅶ', +'Ⅷ' => 'ⅷ', +'Ⅸ' => 'ⅸ', +'Ⅹ' => 'ⅹ', +'Ⅺ' => 'ⅺ', +'Ⅻ' => 'ⅻ', +'Ⅼ' => 'ⅼ', +'Ⅽ' => 'ⅽ', +'Ⅾ' => 'ⅾ', +'Ⅿ' => 'ⅿ', +'Ↄ' => 'ↄ', +'Ⓐ' => 'ⓐ', +'Ⓑ' => 'ⓑ', +'Ⓒ' => 'ⓒ', +'Ⓓ' => 'ⓓ', +'Ⓔ' => 'ⓔ', +'Ⓕ' => 'ⓕ', +'Ⓖ' => 'ⓖ', +'Ⓗ' => 'ⓗ', +'Ⓘ' => 'ⓘ', +'Ⓙ' => 'ⓙ', +'Ⓚ' => 'ⓚ', +'Ⓛ' => 'ⓛ', +'Ⓜ' => 'ⓜ', +'Ⓝ' => 'ⓝ', +'Ⓞ' => 'ⓞ', +'Ⓟ' => 'ⓟ', +'Ⓠ' => 'ⓠ', +'Ⓡ' => 'ⓡ', +'Ⓢ' => 'ⓢ', +'Ⓣ' => 'ⓣ', +'Ⓤ' => 'ⓤ', +'Ⓥ' => 'ⓥ', +'Ⓦ' => 'ⓦ', +'Ⓧ' => 'ⓧ', +'Ⓨ' => 'ⓨ', +'Ⓩ' => 'ⓩ', +'Ⰰ' => 'ⰰ', +'Ⰱ' => 'ⰱ', +'Ⰲ' => 'ⰲ', +'Ⰳ' => 'ⰳ', +'Ⰴ' => 'ⰴ', +'Ⰵ' => 'ⰵ', +'Ⰶ' => 'ⰶ', +'Ⰷ' => 'ⰷ', +'Ⰸ' => 'ⰸ', +'Ⰹ' => 'ⰹ', +'Ⰺ' => 'ⰺ', +'Ⰻ' => 'ⰻ', +'Ⰼ' => 'ⰼ', +'Ⰽ' => 'ⰽ', +'Ⰾ' => 'ⰾ', +'Ⰿ' => 'ⰿ', +'Ⱀ' => 'ⱀ', +'Ⱁ' => 'ⱁ', +'Ⱂ' => 'ⱂ', +'Ⱃ' => 'ⱃ', +'Ⱄ' => 'ⱄ', +'Ⱅ' => 'ⱅ', +'Ⱆ' => 'ⱆ', +'Ⱇ' => 'ⱇ', +'Ⱈ' => 'ⱈ', +'Ⱉ' => 'ⱉ', +'Ⱊ' => 'ⱊ', +'Ⱋ' => 'ⱋ', +'Ⱌ' => 'ⱌ', +'Ⱍ' => 'ⱍ', +'Ⱎ' => 'ⱎ', +'Ⱏ' => 'ⱏ', +'Ⱐ' => 'ⱐ', +'Ⱑ' => 'ⱑ', +'Ⱒ' => 'ⱒ', +'Ⱓ' => 'ⱓ', +'Ⱔ' => 'ⱔ', +'Ⱕ' => 'ⱕ', +'Ⱖ' => 'ⱖ', +'Ⱗ' => 'ⱗ', +'Ⱘ' => 'ⱘ', +'Ⱙ' => 'ⱙ', +'Ⱚ' => 'ⱚ', +'Ⱛ' => 'ⱛ', +'Ⱜ' => 'ⱜ', +'Ⱝ' => 'ⱝ', +'Ⱞ' => 'ⱞ', +'Ⱡ' => 'ⱡ', +'Ɫ' => 'ɫ', +'Ᵽ' => 'ᵽ', +'Ɽ' => 'ɽ', +'Ⱨ' => 'ⱨ', +'Ⱪ' => 'ⱪ', +'Ⱬ' => 'ⱬ', +'Ɑ' => 'ɑ', +'Ɱ' => 'ɱ', +'Ɐ' => 'ɐ', +'Ɒ' => 'ɒ', +'Ⱳ' => 'ⱳ', +'Ⱶ' => 'ⱶ', +'Ȿ' => 'ȿ', +'Ɀ' => 'ɀ', +'Ⲁ' => 'ⲁ', +'Ⲃ' => 'ⲃ', +'Ⲅ' => 'ⲅ', +'Ⲇ' => 'ⲇ', +'Ⲉ' => 'ⲉ', +'Ⲋ' => 'ⲋ', +'Ⲍ' => 'ⲍ', +'Ⲏ' => 'ⲏ', +'Ⲑ' => 'ⲑ', +'Ⲓ' => 'ⲓ', +'Ⲕ' => 'ⲕ', +'Ⲗ' => 'ⲗ', +'Ⲙ' => 'ⲙ', +'Ⲛ' => 'ⲛ', +'Ⲝ' => 'ⲝ', +'Ⲟ' => 'ⲟ', +'Ⲡ' => 'ⲡ', +'Ⲣ' => 'ⲣ', +'Ⲥ' => 'ⲥ', +'Ⲧ' => 'ⲧ', +'Ⲩ' => 'ⲩ', +'Ⲫ' => 'ⲫ', +'Ⲭ' => 'ⲭ', +'Ⲯ' => 'ⲯ', +'Ⲱ' => 'ⲱ', +'Ⲳ' => 'ⲳ', +'Ⲵ' => 'ⲵ', +'Ⲷ' => 'ⲷ', +'Ⲹ' => 'ⲹ', +'Ⲻ' => 'ⲻ', +'Ⲽ' => 'ⲽ', +'Ⲿ' => 'ⲿ', +'Ⳁ' => 'ⳁ', +'Ⳃ' => 'ⳃ', +'Ⳅ' => 'ⳅ', +'Ⳇ' => 'ⳇ', +'Ⳉ' => 'ⳉ', +'Ⳋ' => 'ⳋ', +'Ⳍ' => 'ⳍ', +'Ⳏ' => 'ⳏ', +'Ⳑ' => 'ⳑ', +'Ⳓ' => 'ⳓ', +'Ⳕ' => 'ⳕ', +'Ⳗ' => 'ⳗ', +'Ⳙ' => 'ⳙ', +'Ⳛ' => 'ⳛ', +'Ⳝ' => 'ⳝ', +'Ⳟ' => 'ⳟ', +'Ⳡ' => 'ⳡ', +'Ⳣ' => 'ⳣ', +'Ⳬ' => 'ⳬ', +'Ⳮ' => 'ⳮ', +'Ⳳ' => 'ⳳ', +'Ꙁ' => 'ꙁ', +'Ꙃ' => 'ꙃ', +'Ꙅ' => 'ꙅ', +'Ꙇ' => 'ꙇ', +'Ꙉ' => 'ꙉ', +'Ꙋ' => 'ꙋ', +'Ꙍ' => 'ꙍ', +'Ꙏ' => 'ꙏ', +'Ꙑ' => 'ꙑ', +'Ꙓ' => 'ꙓ', +'Ꙕ' => 'ꙕ', +'Ꙗ' => 'ꙗ', +'Ꙙ' => 'ꙙ', +'Ꙛ' => 'ꙛ', +'Ꙝ' => 'ꙝ', +'Ꙟ' => 'ꙟ', +'Ꙡ' => 'ꙡ', +'Ꙣ' => 'ꙣ', +'Ꙥ' => 'ꙥ', +'Ꙧ' => 'ꙧ', +'Ꙩ' => 'ꙩ', +'Ꙫ' => 'ꙫ', +'Ꙭ' => 'ꙭ', +'Ꚁ' => 'ꚁ', +'Ꚃ' => 'ꚃ', +'Ꚅ' => 'ꚅ', +'Ꚇ' => 'ꚇ', +'Ꚉ' => 'ꚉ', +'Ꚋ' => 'ꚋ', +'Ꚍ' => 'ꚍ', +'Ꚏ' => 'ꚏ', +'Ꚑ' => 'ꚑ', +'Ꚓ' => 'ꚓ', +'Ꚕ' => 'ꚕ', +'Ꚗ' => 'ꚗ', +'Ꚙ' => 'ꚙ', +'Ꚛ' => 'ꚛ', +'Ꜣ' => 'ꜣ', +'Ꜥ' => 'ꜥ', +'Ꜧ' => 'ꜧ', +'Ꜩ' => 'ꜩ', +'Ꜫ' => 'ꜫ', +'Ꜭ' => 'ꜭ', +'Ꜯ' => 'ꜯ', +'Ꜳ' => 'ꜳ', +'Ꜵ' => 'ꜵ', +'Ꜷ' => 'ꜷ', +'Ꜹ' => 'ꜹ', +'Ꜻ' => 'ꜻ', +'Ꜽ' => 'ꜽ', +'Ꜿ' => 'ꜿ', +'Ꝁ' => 'ꝁ', +'Ꝃ' => 'ꝃ', +'Ꝅ' => 'ꝅ', +'Ꝇ' => 'ꝇ', +'Ꝉ' => 'ꝉ', +'Ꝋ' => 'ꝋ', +'Ꝍ' => 'ꝍ', +'Ꝏ' => 'ꝏ', +'Ꝑ' => 'ꝑ', +'Ꝓ' => 'ꝓ', +'Ꝕ' => 'ꝕ', +'Ꝗ' => 'ꝗ', +'Ꝙ' => 'ꝙ', +'Ꝛ' => 'ꝛ', +'Ꝝ' => 'ꝝ', +'Ꝟ' => 'ꝟ', +'Ꝡ' => 'ꝡ', +'Ꝣ' => 'ꝣ', +'Ꝥ' => 'ꝥ', +'Ꝧ' => 'ꝧ', +'Ꝩ' => 'ꝩ', +'Ꝫ' => 'ꝫ', +'Ꝭ' => 'ꝭ', +'Ꝯ' => 'ꝯ', +'Ꝺ' => 'ꝺ', +'Ꝼ' => 'ꝼ', +'Ᵹ' => 'ᵹ', +'Ꝿ' => 'ꝿ', +'Ꞁ' => 'ꞁ', +'Ꞃ' => 'ꞃ', +'Ꞅ' => 'ꞅ', +'Ꞇ' => 'ꞇ', +'Ꞌ' => 'ꞌ', +'Ɥ' => 'ɥ', +'Ꞑ' => 'ꞑ', +'Ꞓ' => 'ꞓ', +'Ꞗ' => 'ꞗ', +'Ꞙ' => 'ꞙ', +'Ꞛ' => 'ꞛ', +'Ꞝ' => 'ꞝ', +'Ꞟ' => 'ꞟ', +'Ꞡ' => 'ꞡ', +'Ꞣ' => 'ꞣ', +'Ꞥ' => 'ꞥ', +'Ꞧ' => 'ꞧ', +'Ꞩ' => 'ꞩ', +'Ɦ' => 'ɦ', +'Ɜ' => 'ɜ', +'Ɡ' => 'ɡ', +'Ɬ' => 'ɬ', +'Ɪ' => 'ɪ', +'Ʞ' => 'ʞ', +'Ʇ' => 'ʇ', +'Ʝ' => 'ʝ', +'Ꭓ' => 'ꭓ', +'Ꞵ' => 'ꞵ', +'Ꞷ' => 'ꞷ', +'Ꞹ' => 'ꞹ', +'Ꞻ' => 'ꞻ', +'Ꞽ' => 'ꞽ', +'Ꞿ' => 'ꞿ', +'Ꟃ' => 'ꟃ', +'Ꞔ' => 'ꞔ', +'Ʂ' => 'ʂ', +'Ᶎ' => 'ᶎ', +'Ꟈ' => 'ꟈ', +'Ꟊ' => 'ꟊ', +'Ꟶ' => 'ꟶ', +'A' => 'a', +'B' => 'b', +'C' => 'c', +'D' => 'd', +'E' => 'e', +'F' => 'f', +'G' => 'g', +'H' => 'h', +'I' => 'i', +'J' => 'j', +'K' => 'k', +'L' => 'l', +'M' => 'm', +'N' => 'n', +'O' => 'o', +'P' => 'p', +'Q' => 'q', +'R' => 'r', +'S' => 's', +'T' => 't', +'U' => 'u', +'V' => 'v', +'W' => 'w', +'X' => 'x', +'Y' => 'y', +'Z' => 'z', +'𐐀' => '𐐨', +'𐐁' => '𐐩', +'𐐂' => '𐐪', +'𐐃' => '𐐫', +'𐐄' => '𐐬', +'𐐅' => '𐐭', +'𐐆' => '𐐮', +'𐐇' => '𐐯', +'𐐈' => '𐐰', +'𐐉' => '𐐱', +'𐐊' => '𐐲', +'𐐋' => '𐐳', +'𐐌' => '𐐴', +'𐐍' => '𐐵', +'𐐎' => '𐐶', +'𐐏' => '𐐷', +'𐐐' => '𐐸', +'𐐑' => '𐐹', +'𐐒' => '𐐺', +'𐐓' => '𐐻', +'𐐔' => '𐐼', +'𐐕' => '𐐽', +'𐐖' => '𐐾', +'𐐗' => '𐐿', +'𐐘' => '𐑀', +'𐐙' => '𐑁', +'𐐚' => '𐑂', +'𐐛' => '𐑃', +'𐐜' => '𐑄', +'𐐝' => '𐑅', +'𐐞' => '𐑆', +'𐐟' => '𐑇', +'𐐠' => '𐑈', +'𐐡' => '𐑉', +'𐐢' => '𐑊', +'𐐣' => '𐑋', +'𐐤' => '𐑌', +'𐐥' => '𐑍', +'𐐦' => '𐑎', +'𐐧' => '𐑏', +'𐒰' => '𐓘', +'𐒱' => '𐓙', +'𐒲' => '𐓚', +'𐒳' => '𐓛', +'𐒴' => '𐓜', +'𐒵' => '𐓝', +'𐒶' => '𐓞', +'𐒷' => '𐓟', +'𐒸' => '𐓠', +'𐒹' => '𐓡', +'𐒺' => '𐓢', +'𐒻' => '𐓣', +'𐒼' => '𐓤', +'𐒽' => '𐓥', +'𐒾' => '𐓦', +'𐒿' => '𐓧', +'𐓀' => '𐓨', +'𐓁' => '𐓩', +'𐓂' => '𐓪', +'𐓃' => '𐓫', +'𐓄' => '𐓬', +'𐓅' => '𐓭', +'𐓆' => '𐓮', +'𐓇' => '𐓯', +'𐓈' => '𐓰', +'𐓉' => '𐓱', +'𐓊' => '𐓲', +'𐓋' => '𐓳', +'𐓌' => '𐓴', +'𐓍' => '𐓵', +'𐓎' => '𐓶', +'𐓏' => '𐓷', +'𐓐' => '𐓸', +'𐓑' => '𐓹', +'𐓒' => '𐓺', +'𐓓' => '𐓻', +'𐲀' => '𐳀', +'𐲁' => '𐳁', +'𐲂' => '𐳂', +'𐲃' => '𐳃', +'𐲄' => '𐳄', +'𐲅' => '𐳅', +'𐲆' => '𐳆', +'𐲇' => '𐳇', +'𐲈' => '𐳈', +'𐲉' => '𐳉', +'𐲊' => '𐳊', +'𐲋' => '𐳋', +'𐲌' => '𐳌', +'𐲍' => '𐳍', +'𐲎' => '𐳎', +'𐲏' => '𐳏', +'𐲐' => '𐳐', +'𐲑' => '𐳑', +'𐲒' => '𐳒', +'𐲓' => '𐳓', +'𐲔' => '𐳔', +'𐲕' => '𐳕', +'𐲖' => '𐳖', +'𐲗' => '𐳗', +'𐲘' => '𐳘', +'𐲙' => '𐳙', +'𐲚' => '𐳚', +'𐲛' => '𐳛', +'𐲜' => '𐳜', +'𐲝' => '𐳝', +'𐲞' => '𐳞', +'𐲟' => '𐳟', +'𐲠' => '𐳠', +'𐲡' => '𐳡', +'𐲢' => '𐳢', +'𐲣' => '𐳣', +'𐲤' => '𐳤', +'𐲥' => '𐳥', +'𐲦' => '𐳦', +'𐲧' => '𐳧', +'𐲨' => '𐳨', +'𐲩' => '𐳩', +'𐲪' => '𐳪', +'𐲫' => '𐳫', +'𐲬' => '𐳬', +'𐲭' => '𐳭', +'𐲮' => '𐳮', +'𐲯' => '𐳯', +'𐲰' => '𐳰', +'𐲱' => '𐳱', +'𐲲' => '𐳲', +'𑢠' => '𑣀', +'𑢡' => '𑣁', +'𑢢' => '𑣂', +'𑢣' => '𑣃', +'𑢤' => '𑣄', +'𑢥' => '𑣅', +'𑢦' => '𑣆', +'𑢧' => '𑣇', +'𑢨' => '𑣈', +'𑢩' => '𑣉', +'𑢪' => '𑣊', +'𑢫' => '𑣋', +'𑢬' => '𑣌', +'𑢭' => '𑣍', +'𑢮' => '𑣎', +'𑢯' => '𑣏', +'𑢰' => '𑣐', +'𑢱' => '𑣑', +'𑢲' => '𑣒', +'𑢳' => '𑣓', +'𑢴' => '𑣔', +'𑢵' => '𑣕', +'𑢶' => '𑣖', +'𑢷' => '𑣗', +'𑢸' => '𑣘', +'𑢹' => '𑣙', +'𑢺' => '𑣚', +'𑢻' => '𑣛', +'𑢼' => '𑣜', +'𑢽' => '𑣝', +'𑢾' => '𑣞', +'𑢿' => '𑣟', +'𖹀' => '𖹠', +'𖹁' => '𖹡', +'𖹂' => '𖹢', +'𖹃' => '𖹣', +'𖹄' => '𖹤', +'𖹅' => '𖹥', +'𖹆' => '𖹦', +'𖹇' => '𖹧', +'𖹈' => '𖹨', +'𖹉' => '𖹩', +'𖹊' => '𖹪', +'𖹋' => '𖹫', +'𖹌' => '𖹬', +'𖹍' => '𖹭', +'𖹎' => '𖹮', +'𖹏' => '𖹯', +'𖹐' => '𖹰', +'𖹑' => '𖹱', +'𖹒' => '𖹲', +'𖹓' => '𖹳', +'𖹔' => '𖹴', +'𖹕' => '𖹵', +'𖹖' => '𖹶', +'𖹗' => '𖹷', +'𖹘' => '𖹸', +'𖹙' => '𖹹', +'𖹚' => '𖹺', +'𖹛' => '𖹻', +'𖹜' => '𖹼', +'𖹝' => '𖹽', +'𖹞' => '𖹾', +'𖹟' => '𖹿', +'𞤀' => '𞤢', +'𞤁' => '𞤣', +'𞤂' => '𞤤', +'𞤃' => '𞤥', +'𞤄' => '𞤦', +'𞤅' => '𞤧', +'𞤆' => '𞤨', +'𞤇' => '𞤩', +'𞤈' => '𞤪', +'𞤉' => '𞤫', +'𞤊' => '𞤬', +'𞤋' => '𞤭', +'𞤌' => '𞤮', +'𞤍' => '𞤯', +'𞤎' => '𞤰', +'𞤏' => '𞤱', +'𞤐' => '𞤲', +'𞤑' => '𞤳', +'𞤒' => '𞤴', +'𞤓' => '𞤵', +'𞤔' => '𞤶', +'𞤕' => '𞤷', +'𞤖' => '𞤸', +'𞤗' => '𞤹', +'𞤘' => '𞤺', +'𞤙' => '𞤻', +'𞤚' => '𞤼', +'𞤛' => '𞤽', +'𞤜' => '𞤾', +'𞤝' => '𞤿', +'𞤞' => '𞥀', +'𞤟' => '𞥁', +'𞤠' => '𞥂', +'𞤡' => '𞥃', +); diff --git a/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php new file mode 100644 index 000000000..6615e1697 --- /dev/null +++ b/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php @@ -0,0 +1,5 @@ + 'A', +'b' => 'B', +'c' => 'C', +'d' => 'D', +'e' => 'E', +'f' => 'F', +'g' => 'G', +'h' => 'H', +'i' => 'I', +'j' => 'J', +'k' => 'K', +'l' => 'L', +'m' => 'M', +'n' => 'N', +'o' => 'O', +'p' => 'P', +'q' => 'Q', +'r' => 'R', +'s' => 'S', +'t' => 'T', +'u' => 'U', +'v' => 'V', +'w' => 'W', +'x' => 'X', +'y' => 'Y', +'z' => 'Z', +'µ' => 'Μ', +'à' => 'À', +'á' => 'Á', +'â' => 'Â', +'ã' => 'Ã', +'ä' => 'Ä', +'å' => 'Å', +'æ' => 'Æ', +'ç' => 'Ç', +'è' => 'È', +'é' => 'É', +'ê' => 'Ê', +'ë' => 'Ë', +'ì' => 'Ì', +'í' => 'Í', +'î' => 'Î', +'ï' => 'Ï', +'ð' => 'Ð', +'ñ' => 'Ñ', +'ò' => 'Ò', +'ó' => 'Ó', +'ô' => 'Ô', +'õ' => 'Õ', +'ö' => 'Ö', +'ø' => 'Ø', +'ù' => 'Ù', +'ú' => 'Ú', +'û' => 'Û', +'ü' => 'Ü', +'ý' => 'Ý', +'þ' => 'Þ', +'ÿ' => 'Ÿ', +'ā' => 'Ā', +'ă' => 'Ă', +'ą' => 'Ą', +'ć' => 'Ć', +'ĉ' => 'Ĉ', +'ċ' => 'Ċ', +'č' => 'Č', +'ď' => 'Ď', +'đ' => 'Đ', +'ē' => 'Ē', +'ĕ' => 'Ĕ', +'ė' => 'Ė', +'ę' => 'Ę', +'ě' => 'Ě', +'ĝ' => 'Ĝ', +'ğ' => 'Ğ', +'ġ' => 'Ġ', +'ģ' => 'Ģ', +'ĥ' => 'Ĥ', +'ħ' => 'Ħ', +'ĩ' => 'Ĩ', +'ī' => 'Ī', +'ĭ' => 'Ĭ', +'į' => 'Į', +'ı' => 'I', +'ij' => 'IJ', +'ĵ' => 'Ĵ', +'ķ' => 'Ķ', +'ĺ' => 'Ĺ', +'ļ' => 'Ļ', +'ľ' => 'Ľ', +'ŀ' => 'Ŀ', +'ł' => 'Ł', +'ń' => 'Ń', +'ņ' => 'Ņ', +'ň' => 'Ň', +'ŋ' => 'Ŋ', +'ō' => 'Ō', +'ŏ' => 'Ŏ', +'ő' => 'Ő', +'œ' => 'Œ', +'ŕ' => 'Ŕ', +'ŗ' => 'Ŗ', +'ř' => 'Ř', +'ś' => 'Ś', +'ŝ' => 'Ŝ', +'ş' => 'Ş', +'š' => 'Š', +'ţ' => 'Ţ', +'ť' => 'Ť', +'ŧ' => 'Ŧ', +'ũ' => 'Ũ', +'ū' => 'Ū', +'ŭ' => 'Ŭ', +'ů' => 'Ů', +'ű' => 'Ű', +'ų' => 'Ų', +'ŵ' => 'Ŵ', +'ŷ' => 'Ŷ', +'ź' => 'Ź', +'ż' => 'Ż', +'ž' => 'Ž', +'ſ' => 'S', +'ƀ' => 'Ƀ', +'ƃ' => 'Ƃ', +'ƅ' => 'Ƅ', +'ƈ' => 'Ƈ', +'ƌ' => 'Ƌ', +'ƒ' => 'Ƒ', +'ƕ' => 'Ƕ', +'ƙ' => 'Ƙ', +'ƚ' => 'Ƚ', +'ƞ' => 'Ƞ', +'ơ' => 'Ơ', +'ƣ' => 'Ƣ', +'ƥ' => 'Ƥ', +'ƨ' => 'Ƨ', +'ƭ' => 'Ƭ', +'ư' => 'Ư', +'ƴ' => 'Ƴ', +'ƶ' => 'Ƶ', +'ƹ' => 'Ƹ', +'ƽ' => 'Ƽ', +'ƿ' => 'Ƿ', +'Dž' => 'DŽ', +'dž' => 'DŽ', +'Lj' => 'LJ', +'lj' => 'LJ', +'Nj' => 'NJ', +'nj' => 'NJ', +'ǎ' => 'Ǎ', +'ǐ' => 'Ǐ', +'ǒ' => 'Ǒ', +'ǔ' => 'Ǔ', +'ǖ' => 'Ǖ', +'ǘ' => 'Ǘ', +'ǚ' => 'Ǚ', +'ǜ' => 'Ǜ', +'ǝ' => 'Ǝ', +'ǟ' => 'Ǟ', +'ǡ' => 'Ǡ', +'ǣ' => 'Ǣ', +'ǥ' => 'Ǥ', +'ǧ' => 'Ǧ', +'ǩ' => 'Ǩ', +'ǫ' => 'Ǫ', +'ǭ' => 'Ǭ', +'ǯ' => 'Ǯ', +'Dz' => 'DZ', +'dz' => 'DZ', +'ǵ' => 'Ǵ', +'ǹ' => 'Ǹ', +'ǻ' => 'Ǻ', +'ǽ' => 'Ǽ', +'ǿ' => 'Ǿ', +'ȁ' => 'Ȁ', +'ȃ' => 'Ȃ', +'ȅ' => 'Ȅ', +'ȇ' => 'Ȇ', +'ȉ' => 'Ȉ', +'ȋ' => 'Ȋ', +'ȍ' => 'Ȍ', +'ȏ' => 'Ȏ', +'ȑ' => 'Ȑ', +'ȓ' => 'Ȓ', +'ȕ' => 'Ȕ', +'ȗ' => 'Ȗ', +'ș' => 'Ș', +'ț' => 'Ț', +'ȝ' => 'Ȝ', +'ȟ' => 'Ȟ', +'ȣ' => 'Ȣ', +'ȥ' => 'Ȥ', +'ȧ' => 'Ȧ', +'ȩ' => 'Ȩ', +'ȫ' => 'Ȫ', +'ȭ' => 'Ȭ', +'ȯ' => 'Ȯ', +'ȱ' => 'Ȱ', +'ȳ' => 'Ȳ', +'ȼ' => 'Ȼ', +'ȿ' => 'Ȿ', +'ɀ' => 'Ɀ', +'ɂ' => 'Ɂ', +'ɇ' => 'Ɇ', +'ɉ' => 'Ɉ', +'ɋ' => 'Ɋ', +'ɍ' => 'Ɍ', +'ɏ' => 'Ɏ', +'ɐ' => 'Ɐ', +'ɑ' => 'Ɑ', +'ɒ' => 'Ɒ', +'ɓ' => 'Ɓ', +'ɔ' => 'Ɔ', +'ɖ' => 'Ɖ', +'ɗ' => 'Ɗ', +'ə' => 'Ə', +'ɛ' => 'Ɛ', +'ɜ' => 'Ɜ', +'ɠ' => 'Ɠ', +'ɡ' => 'Ɡ', +'ɣ' => 'Ɣ', +'ɥ' => 'Ɥ', +'ɦ' => 'Ɦ', +'ɨ' => 'Ɨ', +'ɩ' => 'Ɩ', +'ɪ' => 'Ɪ', +'ɫ' => 'Ɫ', +'ɬ' => 'Ɬ', +'ɯ' => 'Ɯ', +'ɱ' => 'Ɱ', +'ɲ' => 'Ɲ', +'ɵ' => 'Ɵ', +'ɽ' => 'Ɽ', +'ʀ' => 'Ʀ', +'ʂ' => 'Ʂ', +'ʃ' => 'Ʃ', +'ʇ' => 'Ʇ', +'ʈ' => 'Ʈ', +'ʉ' => 'Ʉ', +'ʊ' => 'Ʊ', +'ʋ' => 'Ʋ', +'ʌ' => 'Ʌ', +'ʒ' => 'Ʒ', +'ʝ' => 'Ʝ', +'ʞ' => 'Ʞ', +'ͅ' => 'Ι', +'ͱ' => 'Ͱ', +'ͳ' => 'Ͳ', +'ͷ' => 'Ͷ', +'ͻ' => 'Ͻ', +'ͼ' => 'Ͼ', +'ͽ' => 'Ͽ', +'ά' => 'Ά', +'έ' => 'Έ', +'ή' => 'Ή', +'ί' => 'Ί', +'α' => 'Α', +'β' => 'Β', +'γ' => 'Γ', +'δ' => 'Δ', +'ε' => 'Ε', +'ζ' => 'Ζ', +'η' => 'Η', +'θ' => 'Θ', +'ι' => 'Ι', +'κ' => 'Κ', +'λ' => 'Λ', +'μ' => 'Μ', +'ν' => 'Ν', +'ξ' => 'Ξ', +'ο' => 'Ο', +'π' => 'Π', +'ρ' => 'Ρ', +'ς' => 'Σ', +'σ' => 'Σ', +'τ' => 'Τ', +'υ' => 'Υ', +'φ' => 'Φ', +'χ' => 'Χ', +'ψ' => 'Ψ', +'ω' => 'Ω', +'ϊ' => 'Ϊ', +'ϋ' => 'Ϋ', +'ό' => 'Ό', +'ύ' => 'Ύ', +'ώ' => 'Ώ', +'ϐ' => 'Β', +'ϑ' => 'Θ', +'ϕ' => 'Φ', +'ϖ' => 'Π', +'ϗ' => 'Ϗ', +'ϙ' => 'Ϙ', +'ϛ' => 'Ϛ', +'ϝ' => 'Ϝ', +'ϟ' => 'Ϟ', +'ϡ' => 'Ϡ', +'ϣ' => 'Ϣ', +'ϥ' => 'Ϥ', +'ϧ' => 'Ϧ', +'ϩ' => 'Ϩ', +'ϫ' => 'Ϫ', +'ϭ' => 'Ϭ', +'ϯ' => 'Ϯ', +'ϰ' => 'Κ', +'ϱ' => 'Ρ', +'ϲ' => 'Ϲ', +'ϳ' => 'Ϳ', +'ϵ' => 'Ε', +'ϸ' => 'Ϸ', +'ϻ' => 'Ϻ', +'а' => 'А', +'б' => 'Б', +'в' => 'В', +'г' => 'Г', +'д' => 'Д', +'е' => 'Е', +'ж' => 'Ж', +'з' => 'З', +'и' => 'И', +'й' => 'Й', +'к' => 'К', +'л' => 'Л', +'м' => 'М', +'н' => 'Н', +'о' => 'О', +'п' => 'П', +'р' => 'Р', +'с' => 'С', +'т' => 'Т', +'у' => 'У', +'ф' => 'Ф', +'х' => 'Х', +'ц' => 'Ц', +'ч' => 'Ч', +'ш' => 'Ш', +'щ' => 'Щ', +'ъ' => 'Ъ', +'ы' => 'Ы', +'ь' => 'Ь', +'э' => 'Э', +'ю' => 'Ю', +'я' => 'Я', +'ѐ' => 'Ѐ', +'ё' => 'Ё', +'ђ' => 'Ђ', +'ѓ' => 'Ѓ', +'є' => 'Є', +'ѕ' => 'Ѕ', +'і' => 'І', +'ї' => 'Ї', +'ј' => 'Ј', +'љ' => 'Љ', +'њ' => 'Њ', +'ћ' => 'Ћ', +'ќ' => 'Ќ', +'ѝ' => 'Ѝ', +'ў' => 'Ў', +'џ' => 'Џ', +'ѡ' => 'Ѡ', +'ѣ' => 'Ѣ', +'ѥ' => 'Ѥ', +'ѧ' => 'Ѧ', +'ѩ' => 'Ѩ', +'ѫ' => 'Ѫ', +'ѭ' => 'Ѭ', +'ѯ' => 'Ѯ', +'ѱ' => 'Ѱ', +'ѳ' => 'Ѳ', +'ѵ' => 'Ѵ', +'ѷ' => 'Ѷ', +'ѹ' => 'Ѹ', +'ѻ' => 'Ѻ', +'ѽ' => 'Ѽ', +'ѿ' => 'Ѿ', +'ҁ' => 'Ҁ', +'ҋ' => 'Ҋ', +'ҍ' => 'Ҍ', +'ҏ' => 'Ҏ', +'ґ' => 'Ґ', +'ғ' => 'Ғ', +'ҕ' => 'Ҕ', +'җ' => 'Җ', +'ҙ' => 'Ҙ', +'қ' => 'Қ', +'ҝ' => 'Ҝ', +'ҟ' => 'Ҟ', +'ҡ' => 'Ҡ', +'ң' => 'Ң', +'ҥ' => 'Ҥ', +'ҧ' => 'Ҧ', +'ҩ' => 'Ҩ', +'ҫ' => 'Ҫ', +'ҭ' => 'Ҭ', +'ү' => 'Ү', +'ұ' => 'Ұ', +'ҳ' => 'Ҳ', +'ҵ' => 'Ҵ', +'ҷ' => 'Ҷ', +'ҹ' => 'Ҹ', +'һ' => 'Һ', +'ҽ' => 'Ҽ', +'ҿ' => 'Ҿ', +'ӂ' => 'Ӂ', +'ӄ' => 'Ӄ', +'ӆ' => 'Ӆ', +'ӈ' => 'Ӈ', +'ӊ' => 'Ӊ', +'ӌ' => 'Ӌ', +'ӎ' => 'Ӎ', +'ӏ' => 'Ӏ', +'ӑ' => 'Ӑ', +'ӓ' => 'Ӓ', +'ӕ' => 'Ӕ', +'ӗ' => 'Ӗ', +'ә' => 'Ә', +'ӛ' => 'Ӛ', +'ӝ' => 'Ӝ', +'ӟ' => 'Ӟ', +'ӡ' => 'Ӡ', +'ӣ' => 'Ӣ', +'ӥ' => 'Ӥ', +'ӧ' => 'Ӧ', +'ө' => 'Ө', +'ӫ' => 'Ӫ', +'ӭ' => 'Ӭ', +'ӯ' => 'Ӯ', +'ӱ' => 'Ӱ', +'ӳ' => 'Ӳ', +'ӵ' => 'Ӵ', +'ӷ' => 'Ӷ', +'ӹ' => 'Ӹ', +'ӻ' => 'Ӻ', +'ӽ' => 'Ӽ', +'ӿ' => 'Ӿ', +'ԁ' => 'Ԁ', +'ԃ' => 'Ԃ', +'ԅ' => 'Ԅ', +'ԇ' => 'Ԇ', +'ԉ' => 'Ԉ', +'ԋ' => 'Ԋ', +'ԍ' => 'Ԍ', +'ԏ' => 'Ԏ', +'ԑ' => 'Ԑ', +'ԓ' => 'Ԓ', +'ԕ' => 'Ԕ', +'ԗ' => 'Ԗ', +'ԙ' => 'Ԙ', +'ԛ' => 'Ԛ', +'ԝ' => 'Ԝ', +'ԟ' => 'Ԟ', +'ԡ' => 'Ԡ', +'ԣ' => 'Ԣ', +'ԥ' => 'Ԥ', +'ԧ' => 'Ԧ', +'ԩ' => 'Ԩ', +'ԫ' => 'Ԫ', +'ԭ' => 'Ԭ', +'ԯ' => 'Ԯ', +'ա' => 'Ա', +'բ' => 'Բ', +'գ' => 'Գ', +'դ' => 'Դ', +'ե' => 'Ե', +'զ' => 'Զ', +'է' => 'Է', +'ը' => 'Ը', +'թ' => 'Թ', +'ժ' => 'Ժ', +'ի' => 'Ի', +'լ' => 'Լ', +'խ' => 'Խ', +'ծ' => 'Ծ', +'կ' => 'Կ', +'հ' => 'Հ', +'ձ' => 'Ձ', +'ղ' => 'Ղ', +'ճ' => 'Ճ', +'մ' => 'Մ', +'յ' => 'Յ', +'ն' => 'Ն', +'շ' => 'Շ', +'ո' => 'Ո', +'չ' => 'Չ', +'պ' => 'Պ', +'ջ' => 'Ջ', +'ռ' => 'Ռ', +'ս' => 'Ս', +'վ' => 'Վ', +'տ' => 'Տ', +'ր' => 'Ր', +'ց' => 'Ց', +'ւ' => 'Ւ', +'փ' => 'Փ', +'ք' => 'Ք', +'օ' => 'Օ', +'ֆ' => 'Ֆ', +'ა' => 'Ა', +'ბ' => 'Ბ', +'გ' => 'Გ', +'დ' => 'Დ', +'ე' => 'Ე', +'ვ' => 'Ვ', +'ზ' => 'Ზ', +'თ' => 'Თ', +'ი' => 'Ი', +'კ' => 'Კ', +'ლ' => 'Ლ', +'მ' => 'Მ', +'ნ' => 'Ნ', +'ო' => 'Ო', +'პ' => 'Პ', +'ჟ' => 'Ჟ', +'რ' => 'Რ', +'ს' => 'Ს', +'ტ' => 'Ტ', +'უ' => 'Უ', +'ფ' => 'Ფ', +'ქ' => 'Ქ', +'ღ' => 'Ღ', +'ყ' => 'Ყ', +'შ' => 'Შ', +'ჩ' => 'Ჩ', +'ც' => 'Ც', +'ძ' => 'Ძ', +'წ' => 'Წ', +'ჭ' => 'Ჭ', +'ხ' => 'Ხ', +'ჯ' => 'Ჯ', +'ჰ' => 'Ჰ', +'ჱ' => 'Ჱ', +'ჲ' => 'Ჲ', +'ჳ' => 'Ჳ', +'ჴ' => 'Ჴ', +'ჵ' => 'Ჵ', +'ჶ' => 'Ჶ', +'ჷ' => 'Ჷ', +'ჸ' => 'Ჸ', +'ჹ' => 'Ჹ', +'ჺ' => 'Ჺ', +'ჽ' => 'Ჽ', +'ჾ' => 'Ჾ', +'ჿ' => 'Ჿ', +'ᏸ' => 'Ᏸ', +'ᏹ' => 'Ᏹ', +'ᏺ' => 'Ᏺ', +'ᏻ' => 'Ᏻ', +'ᏼ' => 'Ᏼ', +'ᏽ' => 'Ᏽ', +'ᲀ' => 'В', +'ᲁ' => 'Д', +'ᲂ' => 'О', +'ᲃ' => 'С', +'ᲄ' => 'Т', +'ᲅ' => 'Т', +'ᲆ' => 'Ъ', +'ᲇ' => 'Ѣ', +'ᲈ' => 'Ꙋ', +'ᵹ' => 'Ᵹ', +'ᵽ' => 'Ᵽ', +'ᶎ' => 'Ᶎ', +'ḁ' => 'Ḁ', +'ḃ' => 'Ḃ', +'ḅ' => 'Ḅ', +'ḇ' => 'Ḇ', +'ḉ' => 'Ḉ', +'ḋ' => 'Ḋ', +'ḍ' => 'Ḍ', +'ḏ' => 'Ḏ', +'ḑ' => 'Ḑ', +'ḓ' => 'Ḓ', +'ḕ' => 'Ḕ', +'ḗ' => 'Ḗ', +'ḙ' => 'Ḙ', +'ḛ' => 'Ḛ', +'ḝ' => 'Ḝ', +'ḟ' => 'Ḟ', +'ḡ' => 'Ḡ', +'ḣ' => 'Ḣ', +'ḥ' => 'Ḥ', +'ḧ' => 'Ḧ', +'ḩ' => 'Ḩ', +'ḫ' => 'Ḫ', +'ḭ' => 'Ḭ', +'ḯ' => 'Ḯ', +'ḱ' => 'Ḱ', +'ḳ' => 'Ḳ', +'ḵ' => 'Ḵ', +'ḷ' => 'Ḷ', +'ḹ' => 'Ḹ', +'ḻ' => 'Ḻ', +'ḽ' => 'Ḽ', +'ḿ' => 'Ḿ', +'ṁ' => 'Ṁ', +'ṃ' => 'Ṃ', +'ṅ' => 'Ṅ', +'ṇ' => 'Ṇ', +'ṉ' => 'Ṉ', +'ṋ' => 'Ṋ', +'ṍ' => 'Ṍ', +'ṏ' => 'Ṏ', +'ṑ' => 'Ṑ', +'ṓ' => 'Ṓ', +'ṕ' => 'Ṕ', +'ṗ' => 'Ṗ', +'ṙ' => 'Ṙ', +'ṛ' => 'Ṛ', +'ṝ' => 'Ṝ', +'ṟ' => 'Ṟ', +'ṡ' => 'Ṡ', +'ṣ' => 'Ṣ', +'ṥ' => 'Ṥ', +'ṧ' => 'Ṧ', +'ṩ' => 'Ṩ', +'ṫ' => 'Ṫ', +'ṭ' => 'Ṭ', +'ṯ' => 'Ṯ', +'ṱ' => 'Ṱ', +'ṳ' => 'Ṳ', +'ṵ' => 'Ṵ', +'ṷ' => 'Ṷ', +'ṹ' => 'Ṹ', +'ṻ' => 'Ṻ', +'ṽ' => 'Ṽ', +'ṿ' => 'Ṿ', +'ẁ' => 'Ẁ', +'ẃ' => 'Ẃ', +'ẅ' => 'Ẅ', +'ẇ' => 'Ẇ', +'ẉ' => 'Ẉ', +'ẋ' => 'Ẋ', +'ẍ' => 'Ẍ', +'ẏ' => 'Ẏ', +'ẑ' => 'Ẑ', +'ẓ' => 'Ẓ', +'ẕ' => 'Ẕ', +'ẛ' => 'Ṡ', +'ạ' => 'Ạ', +'ả' => 'Ả', +'ấ' => 'Ấ', +'ầ' => 'Ầ', +'ẩ' => 'Ẩ', +'ẫ' => 'Ẫ', +'ậ' => 'Ậ', +'ắ' => 'Ắ', +'ằ' => 'Ằ', +'ẳ' => 'Ẳ', +'ẵ' => 'Ẵ', +'ặ' => 'Ặ', +'ẹ' => 'Ẹ', +'ẻ' => 'Ẻ', +'ẽ' => 'Ẽ', +'ế' => 'Ế', +'ề' => 'Ề', +'ể' => 'Ể', +'ễ' => 'Ễ', +'ệ' => 'Ệ', +'ỉ' => 'Ỉ', +'ị' => 'Ị', +'ọ' => 'Ọ', +'ỏ' => 'Ỏ', +'ố' => 'Ố', +'ồ' => 'Ồ', +'ổ' => 'Ổ', +'ỗ' => 'Ỗ', +'ộ' => 'Ộ', +'ớ' => 'Ớ', +'ờ' => 'Ờ', +'ở' => 'Ở', +'ỡ' => 'Ỡ', +'ợ' => 'Ợ', +'ụ' => 'Ụ', +'ủ' => 'Ủ', +'ứ' => 'Ứ', +'ừ' => 'Ừ', +'ử' => 'Ử', +'ữ' => 'Ữ', +'ự' => 'Ự', +'ỳ' => 'Ỳ', +'ỵ' => 'Ỵ', +'ỷ' => 'Ỷ', +'ỹ' => 'Ỹ', +'ỻ' => 'Ỻ', +'ỽ' => 'Ỽ', +'ỿ' => 'Ỿ', +'ἀ' => 'Ἀ', +'ἁ' => 'Ἁ', +'ἂ' => 'Ἂ', +'ἃ' => 'Ἃ', +'ἄ' => 'Ἄ', +'ἅ' => 'Ἅ', +'ἆ' => 'Ἆ', +'ἇ' => 'Ἇ', +'ἐ' => 'Ἐ', +'ἑ' => 'Ἑ', +'ἒ' => 'Ἒ', +'ἓ' => 'Ἓ', +'ἔ' => 'Ἔ', +'ἕ' => 'Ἕ', +'ἠ' => 'Ἠ', +'ἡ' => 'Ἡ', +'ἢ' => 'Ἢ', +'ἣ' => 'Ἣ', +'ἤ' => 'Ἤ', +'ἥ' => 'Ἥ', +'ἦ' => 'Ἦ', +'ἧ' => 'Ἧ', +'ἰ' => 'Ἰ', +'ἱ' => 'Ἱ', +'ἲ' => 'Ἲ', +'ἳ' => 'Ἳ', +'ἴ' => 'Ἴ', +'ἵ' => 'Ἵ', +'ἶ' => 'Ἶ', +'ἷ' => 'Ἷ', +'ὀ' => 'Ὀ', +'ὁ' => 'Ὁ', +'ὂ' => 'Ὂ', +'ὃ' => 'Ὃ', +'ὄ' => 'Ὄ', +'ὅ' => 'Ὅ', +'ὑ' => 'Ὑ', +'ὓ' => 'Ὓ', +'ὕ' => 'Ὕ', +'ὗ' => 'Ὗ', +'ὠ' => 'Ὠ', +'ὡ' => 'Ὡ', +'ὢ' => 'Ὢ', +'ὣ' => 'Ὣ', +'ὤ' => 'Ὤ', +'ὥ' => 'Ὥ', +'ὦ' => 'Ὦ', +'ὧ' => 'Ὧ', +'ὰ' => 'Ὰ', +'ά' => 'Ά', +'ὲ' => 'Ὲ', +'έ' => 'Έ', +'ὴ' => 'Ὴ', +'ή' => 'Ή', +'ὶ' => 'Ὶ', +'ί' => 'Ί', +'ὸ' => 'Ὸ', +'ό' => 'Ό', +'ὺ' => 'Ὺ', +'ύ' => 'Ύ', +'ὼ' => 'Ὼ', +'ώ' => 'Ώ', +'ᾀ' => 'ἈΙ', +'ᾁ' => 'ἉΙ', +'ᾂ' => 'ἊΙ', +'ᾃ' => 'ἋΙ', +'ᾄ' => 'ἌΙ', +'ᾅ' => 'ἍΙ', +'ᾆ' => 'ἎΙ', +'ᾇ' => 'ἏΙ', +'ᾐ' => 'ἨΙ', +'ᾑ' => 'ἩΙ', +'ᾒ' => 'ἪΙ', +'ᾓ' => 'ἫΙ', +'ᾔ' => 'ἬΙ', +'ᾕ' => 'ἭΙ', +'ᾖ' => 'ἮΙ', +'ᾗ' => 'ἯΙ', +'ᾠ' => 'ὨΙ', +'ᾡ' => 'ὩΙ', +'ᾢ' => 'ὪΙ', +'ᾣ' => 'ὫΙ', +'ᾤ' => 'ὬΙ', +'ᾥ' => 'ὭΙ', +'ᾦ' => 'ὮΙ', +'ᾧ' => 'ὯΙ', +'ᾰ' => 'Ᾰ', +'ᾱ' => 'Ᾱ', +'ᾳ' => 'ΑΙ', +'ι' => 'Ι', +'ῃ' => 'ΗΙ', +'ῐ' => 'Ῐ', +'ῑ' => 'Ῑ', +'ῠ' => 'Ῠ', +'ῡ' => 'Ῡ', +'ῥ' => 'Ῥ', +'ῳ' => 'ΩΙ', +'ⅎ' => 'Ⅎ', +'ⅰ' => 'Ⅰ', +'ⅱ' => 'Ⅱ', +'ⅲ' => 'Ⅲ', +'ⅳ' => 'Ⅳ', +'ⅴ' => 'Ⅴ', +'ⅵ' => 'Ⅵ', +'ⅶ' => 'Ⅶ', +'ⅷ' => 'Ⅷ', +'ⅸ' => 'Ⅸ', +'ⅹ' => 'Ⅹ', +'ⅺ' => 'Ⅺ', +'ⅻ' => 'Ⅻ', +'ⅼ' => 'Ⅼ', +'ⅽ' => 'Ⅽ', +'ⅾ' => 'Ⅾ', +'ⅿ' => 'Ⅿ', +'ↄ' => 'Ↄ', +'ⓐ' => 'Ⓐ', +'ⓑ' => 'Ⓑ', +'ⓒ' => 'Ⓒ', +'ⓓ' => 'Ⓓ', +'ⓔ' => 'Ⓔ', +'ⓕ' => 'Ⓕ', +'ⓖ' => 'Ⓖ', +'ⓗ' => 'Ⓗ', +'ⓘ' => 'Ⓘ', +'ⓙ' => 'Ⓙ', +'ⓚ' => 'Ⓚ', +'ⓛ' => 'Ⓛ', +'ⓜ' => 'Ⓜ', +'ⓝ' => 'Ⓝ', +'ⓞ' => 'Ⓞ', +'ⓟ' => 'Ⓟ', +'ⓠ' => 'Ⓠ', +'ⓡ' => 'Ⓡ', +'ⓢ' => 'Ⓢ', +'ⓣ' => 'Ⓣ', +'ⓤ' => 'Ⓤ', +'ⓥ' => 'Ⓥ', +'ⓦ' => 'Ⓦ', +'ⓧ' => 'Ⓧ', +'ⓨ' => 'Ⓨ', +'ⓩ' => 'Ⓩ', +'ⰰ' => 'Ⰰ', +'ⰱ' => 'Ⰱ', +'ⰲ' => 'Ⰲ', +'ⰳ' => 'Ⰳ', +'ⰴ' => 'Ⰴ', +'ⰵ' => 'Ⰵ', +'ⰶ' => 'Ⰶ', +'ⰷ' => 'Ⰷ', +'ⰸ' => 'Ⰸ', +'ⰹ' => 'Ⰹ', +'ⰺ' => 'Ⰺ', +'ⰻ' => 'Ⰻ', +'ⰼ' => 'Ⰼ', +'ⰽ' => 'Ⰽ', +'ⰾ' => 'Ⰾ', +'ⰿ' => 'Ⰿ', +'ⱀ' => 'Ⱀ', +'ⱁ' => 'Ⱁ', +'ⱂ' => 'Ⱂ', +'ⱃ' => 'Ⱃ', +'ⱄ' => 'Ⱄ', +'ⱅ' => 'Ⱅ', +'ⱆ' => 'Ⱆ', +'ⱇ' => 'Ⱇ', +'ⱈ' => 'Ⱈ', +'ⱉ' => 'Ⱉ', +'ⱊ' => 'Ⱊ', +'ⱋ' => 'Ⱋ', +'ⱌ' => 'Ⱌ', +'ⱍ' => 'Ⱍ', +'ⱎ' => 'Ⱎ', +'ⱏ' => 'Ⱏ', +'ⱐ' => 'Ⱐ', +'ⱑ' => 'Ⱑ', +'ⱒ' => 'Ⱒ', +'ⱓ' => 'Ⱓ', +'ⱔ' => 'Ⱔ', +'ⱕ' => 'Ⱕ', +'ⱖ' => 'Ⱖ', +'ⱗ' => 'Ⱗ', +'ⱘ' => 'Ⱘ', +'ⱙ' => 'Ⱙ', +'ⱚ' => 'Ⱚ', +'ⱛ' => 'Ⱛ', +'ⱜ' => 'Ⱜ', +'ⱝ' => 'Ⱝ', +'ⱞ' => 'Ⱞ', +'ⱡ' => 'Ⱡ', +'ⱥ' => 'Ⱥ', +'ⱦ' => 'Ⱦ', +'ⱨ' => 'Ⱨ', +'ⱪ' => 'Ⱪ', +'ⱬ' => 'Ⱬ', +'ⱳ' => 'Ⱳ', +'ⱶ' => 'Ⱶ', +'ⲁ' => 'Ⲁ', +'ⲃ' => 'Ⲃ', +'ⲅ' => 'Ⲅ', +'ⲇ' => 'Ⲇ', +'ⲉ' => 'Ⲉ', +'ⲋ' => 'Ⲋ', +'ⲍ' => 'Ⲍ', +'ⲏ' => 'Ⲏ', +'ⲑ' => 'Ⲑ', +'ⲓ' => 'Ⲓ', +'ⲕ' => 'Ⲕ', +'ⲗ' => 'Ⲗ', +'ⲙ' => 'Ⲙ', +'ⲛ' => 'Ⲛ', +'ⲝ' => 'Ⲝ', +'ⲟ' => 'Ⲟ', +'ⲡ' => 'Ⲡ', +'ⲣ' => 'Ⲣ', +'ⲥ' => 'Ⲥ', +'ⲧ' => 'Ⲧ', +'ⲩ' => 'Ⲩ', +'ⲫ' => 'Ⲫ', +'ⲭ' => 'Ⲭ', +'ⲯ' => 'Ⲯ', +'ⲱ' => 'Ⲱ', +'ⲳ' => 'Ⲳ', +'ⲵ' => 'Ⲵ', +'ⲷ' => 'Ⲷ', +'ⲹ' => 'Ⲹ', +'ⲻ' => 'Ⲻ', +'ⲽ' => 'Ⲽ', +'ⲿ' => 'Ⲿ', +'ⳁ' => 'Ⳁ', +'ⳃ' => 'Ⳃ', +'ⳅ' => 'Ⳅ', +'ⳇ' => 'Ⳇ', +'ⳉ' => 'Ⳉ', +'ⳋ' => 'Ⳋ', +'ⳍ' => 'Ⳍ', +'ⳏ' => 'Ⳏ', +'ⳑ' => 'Ⳑ', +'ⳓ' => 'Ⳓ', +'ⳕ' => 'Ⳕ', +'ⳗ' => 'Ⳗ', +'ⳙ' => 'Ⳙ', +'ⳛ' => 'Ⳛ', +'ⳝ' => 'Ⳝ', +'ⳟ' => 'Ⳟ', +'ⳡ' => 'Ⳡ', +'ⳣ' => 'Ⳣ', +'ⳬ' => 'Ⳬ', +'ⳮ' => 'Ⳮ', +'ⳳ' => 'Ⳳ', +'ⴀ' => 'Ⴀ', +'ⴁ' => 'Ⴁ', +'ⴂ' => 'Ⴂ', +'ⴃ' => 'Ⴃ', +'ⴄ' => 'Ⴄ', +'ⴅ' => 'Ⴅ', +'ⴆ' => 'Ⴆ', +'ⴇ' => 'Ⴇ', +'ⴈ' => 'Ⴈ', +'ⴉ' => 'Ⴉ', +'ⴊ' => 'Ⴊ', +'ⴋ' => 'Ⴋ', +'ⴌ' => 'Ⴌ', +'ⴍ' => 'Ⴍ', +'ⴎ' => 'Ⴎ', +'ⴏ' => 'Ⴏ', +'ⴐ' => 'Ⴐ', +'ⴑ' => 'Ⴑ', +'ⴒ' => 'Ⴒ', +'ⴓ' => 'Ⴓ', +'ⴔ' => 'Ⴔ', +'ⴕ' => 'Ⴕ', +'ⴖ' => 'Ⴖ', +'ⴗ' => 'Ⴗ', +'ⴘ' => 'Ⴘ', +'ⴙ' => 'Ⴙ', +'ⴚ' => 'Ⴚ', +'ⴛ' => 'Ⴛ', +'ⴜ' => 'Ⴜ', +'ⴝ' => 'Ⴝ', +'ⴞ' => 'Ⴞ', +'ⴟ' => 'Ⴟ', +'ⴠ' => 'Ⴠ', +'ⴡ' => 'Ⴡ', +'ⴢ' => 'Ⴢ', +'ⴣ' => 'Ⴣ', +'ⴤ' => 'Ⴤ', +'ⴥ' => 'Ⴥ', +'ⴧ' => 'Ⴧ', +'ⴭ' => 'Ⴭ', +'ꙁ' => 'Ꙁ', +'ꙃ' => 'Ꙃ', +'ꙅ' => 'Ꙅ', +'ꙇ' => 'Ꙇ', +'ꙉ' => 'Ꙉ', +'ꙋ' => 'Ꙋ', +'ꙍ' => 'Ꙍ', +'ꙏ' => 'Ꙏ', +'ꙑ' => 'Ꙑ', +'ꙓ' => 'Ꙓ', +'ꙕ' => 'Ꙕ', +'ꙗ' => 'Ꙗ', +'ꙙ' => 'Ꙙ', +'ꙛ' => 'Ꙛ', +'ꙝ' => 'Ꙝ', +'ꙟ' => 'Ꙟ', +'ꙡ' => 'Ꙡ', +'ꙣ' => 'Ꙣ', +'ꙥ' => 'Ꙥ', +'ꙧ' => 'Ꙧ', +'ꙩ' => 'Ꙩ', +'ꙫ' => 'Ꙫ', +'ꙭ' => 'Ꙭ', +'ꚁ' => 'Ꚁ', +'ꚃ' => 'Ꚃ', +'ꚅ' => 'Ꚅ', +'ꚇ' => 'Ꚇ', +'ꚉ' => 'Ꚉ', +'ꚋ' => 'Ꚋ', +'ꚍ' => 'Ꚍ', +'ꚏ' => 'Ꚏ', +'ꚑ' => 'Ꚑ', +'ꚓ' => 'Ꚓ', +'ꚕ' => 'Ꚕ', +'ꚗ' => 'Ꚗ', +'ꚙ' => 'Ꚙ', +'ꚛ' => 'Ꚛ', +'ꜣ' => 'Ꜣ', +'ꜥ' => 'Ꜥ', +'ꜧ' => 'Ꜧ', +'ꜩ' => 'Ꜩ', +'ꜫ' => 'Ꜫ', +'ꜭ' => 'Ꜭ', +'ꜯ' => 'Ꜯ', +'ꜳ' => 'Ꜳ', +'ꜵ' => 'Ꜵ', +'ꜷ' => 'Ꜷ', +'ꜹ' => 'Ꜹ', +'ꜻ' => 'Ꜻ', +'ꜽ' => 'Ꜽ', +'ꜿ' => 'Ꜿ', +'ꝁ' => 'Ꝁ', +'ꝃ' => 'Ꝃ', +'ꝅ' => 'Ꝅ', +'ꝇ' => 'Ꝇ', +'ꝉ' => 'Ꝉ', +'ꝋ' => 'Ꝋ', +'ꝍ' => 'Ꝍ', +'ꝏ' => 'Ꝏ', +'ꝑ' => 'Ꝑ', +'ꝓ' => 'Ꝓ', +'ꝕ' => 'Ꝕ', +'ꝗ' => 'Ꝗ', +'ꝙ' => 'Ꝙ', +'ꝛ' => 'Ꝛ', +'ꝝ' => 'Ꝝ', +'ꝟ' => 'Ꝟ', +'ꝡ' => 'Ꝡ', +'ꝣ' => 'Ꝣ', +'ꝥ' => 'Ꝥ', +'ꝧ' => 'Ꝧ', +'ꝩ' => 'Ꝩ', +'ꝫ' => 'Ꝫ', +'ꝭ' => 'Ꝭ', +'ꝯ' => 'Ꝯ', +'ꝺ' => 'Ꝺ', +'ꝼ' => 'Ꝼ', +'ꝿ' => 'Ꝿ', +'ꞁ' => 'Ꞁ', +'ꞃ' => 'Ꞃ', +'ꞅ' => 'Ꞅ', +'ꞇ' => 'Ꞇ', +'ꞌ' => 'Ꞌ', +'ꞑ' => 'Ꞑ', +'ꞓ' => 'Ꞓ', +'ꞔ' => 'Ꞔ', +'ꞗ' => 'Ꞗ', +'ꞙ' => 'Ꞙ', +'ꞛ' => 'Ꞛ', +'ꞝ' => 'Ꞝ', +'ꞟ' => 'Ꞟ', +'ꞡ' => 'Ꞡ', +'ꞣ' => 'Ꞣ', +'ꞥ' => 'Ꞥ', +'ꞧ' => 'Ꞧ', +'ꞩ' => 'Ꞩ', +'ꞵ' => 'Ꞵ', +'ꞷ' => 'Ꞷ', +'ꞹ' => 'Ꞹ', +'ꞻ' => 'Ꞻ', +'ꞽ' => 'Ꞽ', +'ꞿ' => 'Ꞿ', +'ꟃ' => 'Ꟃ', +'ꟈ' => 'Ꟈ', +'ꟊ' => 'Ꟊ', +'ꟶ' => 'Ꟶ', +'ꭓ' => 'Ꭓ', +'ꭰ' => 'Ꭰ', +'ꭱ' => 'Ꭱ', +'ꭲ' => 'Ꭲ', +'ꭳ' => 'Ꭳ', +'ꭴ' => 'Ꭴ', +'ꭵ' => 'Ꭵ', +'ꭶ' => 'Ꭶ', +'ꭷ' => 'Ꭷ', +'ꭸ' => 'Ꭸ', +'ꭹ' => 'Ꭹ', +'ꭺ' => 'Ꭺ', +'ꭻ' => 'Ꭻ', +'ꭼ' => 'Ꭼ', +'ꭽ' => 'Ꭽ', +'ꭾ' => 'Ꭾ', +'ꭿ' => 'Ꭿ', +'ꮀ' => 'Ꮀ', +'ꮁ' => 'Ꮁ', +'ꮂ' => 'Ꮂ', +'ꮃ' => 'Ꮃ', +'ꮄ' => 'Ꮄ', +'ꮅ' => 'Ꮅ', +'ꮆ' => 'Ꮆ', +'ꮇ' => 'Ꮇ', +'ꮈ' => 'Ꮈ', +'ꮉ' => 'Ꮉ', +'ꮊ' => 'Ꮊ', +'ꮋ' => 'Ꮋ', +'ꮌ' => 'Ꮌ', +'ꮍ' => 'Ꮍ', +'ꮎ' => 'Ꮎ', +'ꮏ' => 'Ꮏ', +'ꮐ' => 'Ꮐ', +'ꮑ' => 'Ꮑ', +'ꮒ' => 'Ꮒ', +'ꮓ' => 'Ꮓ', +'ꮔ' => 'Ꮔ', +'ꮕ' => 'Ꮕ', +'ꮖ' => 'Ꮖ', +'ꮗ' => 'Ꮗ', +'ꮘ' => 'Ꮘ', +'ꮙ' => 'Ꮙ', +'ꮚ' => 'Ꮚ', +'ꮛ' => 'Ꮛ', +'ꮜ' => 'Ꮜ', +'ꮝ' => 'Ꮝ', +'ꮞ' => 'Ꮞ', +'ꮟ' => 'Ꮟ', +'ꮠ' => 'Ꮠ', +'ꮡ' => 'Ꮡ', +'ꮢ' => 'Ꮢ', +'ꮣ' => 'Ꮣ', +'ꮤ' => 'Ꮤ', +'ꮥ' => 'Ꮥ', +'ꮦ' => 'Ꮦ', +'ꮧ' => 'Ꮧ', +'ꮨ' => 'Ꮨ', +'ꮩ' => 'Ꮩ', +'ꮪ' => 'Ꮪ', +'ꮫ' => 'Ꮫ', +'ꮬ' => 'Ꮬ', +'ꮭ' => 'Ꮭ', +'ꮮ' => 'Ꮮ', +'ꮯ' => 'Ꮯ', +'ꮰ' => 'Ꮰ', +'ꮱ' => 'Ꮱ', +'ꮲ' => 'Ꮲ', +'ꮳ' => 'Ꮳ', +'ꮴ' => 'Ꮴ', +'ꮵ' => 'Ꮵ', +'ꮶ' => 'Ꮶ', +'ꮷ' => 'Ꮷ', +'ꮸ' => 'Ꮸ', +'ꮹ' => 'Ꮹ', +'ꮺ' => 'Ꮺ', +'ꮻ' => 'Ꮻ', +'ꮼ' => 'Ꮼ', +'ꮽ' => 'Ꮽ', +'ꮾ' => 'Ꮾ', +'ꮿ' => 'Ꮿ', +'a' => 'A', +'b' => 'B', +'c' => 'C', +'d' => 'D', +'e' => 'E', +'f' => 'F', +'g' => 'G', +'h' => 'H', +'i' => 'I', +'j' => 'J', +'k' => 'K', +'l' => 'L', +'m' => 'M', +'n' => 'N', +'o' => 'O', +'p' => 'P', +'q' => 'Q', +'r' => 'R', +'s' => 'S', +'t' => 'T', +'u' => 'U', +'v' => 'V', +'w' => 'W', +'x' => 'X', +'y' => 'Y', +'z' => 'Z', +'𐐨' => '𐐀', +'𐐩' => '𐐁', +'𐐪' => '𐐂', +'𐐫' => '𐐃', +'𐐬' => '𐐄', +'𐐭' => '𐐅', +'𐐮' => '𐐆', +'𐐯' => '𐐇', +'𐐰' => '𐐈', +'𐐱' => '𐐉', +'𐐲' => '𐐊', +'𐐳' => '𐐋', +'𐐴' => '𐐌', +'𐐵' => '𐐍', +'𐐶' => '𐐎', +'𐐷' => '𐐏', +'𐐸' => '𐐐', +'𐐹' => '𐐑', +'𐐺' => '𐐒', +'𐐻' => '𐐓', +'𐐼' => '𐐔', +'𐐽' => '𐐕', +'𐐾' => '𐐖', +'𐐿' => '𐐗', +'𐑀' => '𐐘', +'𐑁' => '𐐙', +'𐑂' => '𐐚', +'𐑃' => '𐐛', +'𐑄' => '𐐜', +'𐑅' => '𐐝', +'𐑆' => '𐐞', +'𐑇' => '𐐟', +'𐑈' => '𐐠', +'𐑉' => '𐐡', +'𐑊' => '𐐢', +'𐑋' => '𐐣', +'𐑌' => '𐐤', +'𐑍' => '𐐥', +'𐑎' => '𐐦', +'𐑏' => '𐐧', +'𐓘' => '𐒰', +'𐓙' => '𐒱', +'𐓚' => '𐒲', +'𐓛' => '𐒳', +'𐓜' => '𐒴', +'𐓝' => '𐒵', +'𐓞' => '𐒶', +'𐓟' => '𐒷', +'𐓠' => '𐒸', +'𐓡' => '𐒹', +'𐓢' => '𐒺', +'𐓣' => '𐒻', +'𐓤' => '𐒼', +'𐓥' => '𐒽', +'𐓦' => '𐒾', +'𐓧' => '𐒿', +'𐓨' => '𐓀', +'𐓩' => '𐓁', +'𐓪' => '𐓂', +'𐓫' => '𐓃', +'𐓬' => '𐓄', +'𐓭' => '𐓅', +'𐓮' => '𐓆', +'𐓯' => '𐓇', +'𐓰' => '𐓈', +'𐓱' => '𐓉', +'𐓲' => '𐓊', +'𐓳' => '𐓋', +'𐓴' => '𐓌', +'𐓵' => '𐓍', +'𐓶' => '𐓎', +'𐓷' => '𐓏', +'𐓸' => '𐓐', +'𐓹' => '𐓑', +'𐓺' => '𐓒', +'𐓻' => '𐓓', +'𐳀' => '𐲀', +'𐳁' => '𐲁', +'𐳂' => '𐲂', +'𐳃' => '𐲃', +'𐳄' => '𐲄', +'𐳅' => '𐲅', +'𐳆' => '𐲆', +'𐳇' => '𐲇', +'𐳈' => '𐲈', +'𐳉' => '𐲉', +'𐳊' => '𐲊', +'𐳋' => '𐲋', +'𐳌' => '𐲌', +'𐳍' => '𐲍', +'𐳎' => '𐲎', +'𐳏' => '𐲏', +'𐳐' => '𐲐', +'𐳑' => '𐲑', +'𐳒' => '𐲒', +'𐳓' => '𐲓', +'𐳔' => '𐲔', +'𐳕' => '𐲕', +'𐳖' => '𐲖', +'𐳗' => '𐲗', +'𐳘' => '𐲘', +'𐳙' => '𐲙', +'𐳚' => '𐲚', +'𐳛' => '𐲛', +'𐳜' => '𐲜', +'𐳝' => '𐲝', +'𐳞' => '𐲞', +'𐳟' => '𐲟', +'𐳠' => '𐲠', +'𐳡' => '𐲡', +'𐳢' => '𐲢', +'𐳣' => '𐲣', +'𐳤' => '𐲤', +'𐳥' => '𐲥', +'𐳦' => '𐲦', +'𐳧' => '𐲧', +'𐳨' => '𐲨', +'𐳩' => '𐲩', +'𐳪' => '𐲪', +'𐳫' => '𐲫', +'𐳬' => '𐲬', +'𐳭' => '𐲭', +'𐳮' => '𐲮', +'𐳯' => '𐲯', +'𐳰' => '𐲰', +'𐳱' => '𐲱', +'𐳲' => '𐲲', +'𑣀' => '𑢠', +'𑣁' => '𑢡', +'𑣂' => '𑢢', +'𑣃' => '𑢣', +'𑣄' => '𑢤', +'𑣅' => '𑢥', +'𑣆' => '𑢦', +'𑣇' => '𑢧', +'𑣈' => '𑢨', +'𑣉' => '𑢩', +'𑣊' => '𑢪', +'𑣋' => '𑢫', +'𑣌' => '𑢬', +'𑣍' => '𑢭', +'𑣎' => '𑢮', +'𑣏' => '𑢯', +'𑣐' => '𑢰', +'𑣑' => '𑢱', +'𑣒' => '𑢲', +'𑣓' => '𑢳', +'𑣔' => '𑢴', +'𑣕' => '𑢵', +'𑣖' => '𑢶', +'𑣗' => '𑢷', +'𑣘' => '𑢸', +'𑣙' => '𑢹', +'𑣚' => '𑢺', +'𑣛' => '𑢻', +'𑣜' => '𑢼', +'𑣝' => '𑢽', +'𑣞' => '𑢾', +'𑣟' => '𑢿', +'𖹠' => '𖹀', +'𖹡' => '𖹁', +'𖹢' => '𖹂', +'𖹣' => '𖹃', +'𖹤' => '𖹄', +'𖹥' => '𖹅', +'𖹦' => '𖹆', +'𖹧' => '𖹇', +'𖹨' => '𖹈', +'𖹩' => '𖹉', +'𖹪' => '𖹊', +'𖹫' => '𖹋', +'𖹬' => '𖹌', +'𖹭' => '𖹍', +'𖹮' => '𖹎', +'𖹯' => '𖹏', +'𖹰' => '𖹐', +'𖹱' => '𖹑', +'𖹲' => '𖹒', +'𖹳' => '𖹓', +'𖹴' => '𖹔', +'𖹵' => '𖹕', +'𖹶' => '𖹖', +'𖹷' => '𖹗', +'𖹸' => '𖹘', +'𖹹' => '𖹙', +'𖹺' => '𖹚', +'𖹻' => '𖹛', +'𖹼' => '𖹜', +'𖹽' => '𖹝', +'𖹾' => '𖹞', +'𖹿' => '𖹟', +'𞤢' => '𞤀', +'𞤣' => '𞤁', +'𞤤' => '𞤂', +'𞤥' => '𞤃', +'𞤦' => '𞤄', +'𞤧' => '𞤅', +'𞤨' => '𞤆', +'𞤩' => '𞤇', +'𞤪' => '𞤈', +'𞤫' => '𞤉', +'𞤬' => '𞤊', +'𞤭' => '𞤋', +'𞤮' => '𞤌', +'𞤯' => '𞤍', +'𞤰' => '𞤎', +'𞤱' => '𞤏', +'𞤲' => '𞤐', +'𞤳' => '𞤑', +'𞤴' => '𞤒', +'𞤵' => '𞤓', +'𞤶' => '𞤔', +'𞤷' => '𞤕', +'𞤸' => '𞤖', +'𞤹' => '𞤗', +'𞤺' => '𞤘', +'𞤻' => '𞤙', +'𞤼' => '𞤚', +'𞤽' => '𞤛', +'𞤾' => '𞤜', +'𞤿' => '𞤝', +'𞥀' => '𞤞', +'𞥁' => '𞤟', +'𞥂' => '𞤠', +'𞥃' => '𞤡', +'ß' => 'SS', +'ff' => 'FF', +'fi' => 'FI', +'fl' => 'FL', +'ffi' => 'FFI', +'ffl' => 'FFL', +'ſt' => 'ST', +'st' => 'ST', +'և' => 'ԵՒ', +'ﬓ' => 'ՄՆ', +'ﬔ' => 'ՄԵ', +'ﬕ' => 'ՄԻ', +'ﬖ' => 'ՎՆ', +'ﬗ' => 'ՄԽ', +'ʼn' => 'ʼN', +'ΐ' => 'Ϊ́', +'ΰ' => 'Ϋ́', +'ǰ' => 'J̌', +'ẖ' => 'H̱', +'ẗ' => 'T̈', +'ẘ' => 'W̊', +'ẙ' => 'Y̊', +'ẚ' => 'Aʾ', +'ὐ' => 'Υ̓', +'ὒ' => 'Υ̓̀', +'ὔ' => 'Υ̓́', +'ὖ' => 'Υ̓͂', +'ᾶ' => 'Α͂', +'ῆ' => 'Η͂', +'ῒ' => 'Ϊ̀', +'ΐ' => 'Ϊ́', +'ῖ' => 'Ι͂', +'ῗ' => 'Ϊ͂', +'ῢ' => 'Ϋ̀', +'ΰ' => 'Ϋ́', +'ῤ' => 'Ρ̓', +'ῦ' => 'Υ͂', +'ῧ' => 'Ϋ͂', +'ῶ' => 'Ω͂', +'ᾈ' => 'ἈΙ', +'ᾉ' => 'ἉΙ', +'ᾊ' => 'ἊΙ', +'ᾋ' => 'ἋΙ', +'ᾌ' => 'ἌΙ', +'ᾍ' => 'ἍΙ', +'ᾎ' => 'ἎΙ', +'ᾏ' => 'ἏΙ', +'ᾘ' => 'ἨΙ', +'ᾙ' => 'ἩΙ', +'ᾚ' => 'ἪΙ', +'ᾛ' => 'ἫΙ', +'ᾜ' => 'ἬΙ', +'ᾝ' => 'ἭΙ', +'ᾞ' => 'ἮΙ', +'ᾟ' => 'ἯΙ', +'ᾨ' => 'ὨΙ', +'ᾩ' => 'ὩΙ', +'ᾪ' => 'ὪΙ', +'ᾫ' => 'ὫΙ', +'ᾬ' => 'ὬΙ', +'ᾭ' => 'ὭΙ', +'ᾮ' => 'ὮΙ', +'ᾯ' => 'ὯΙ', +'ᾼ' => 'ΑΙ', +'ῌ' => 'ΗΙ', +'ῼ' => 'ΩΙ', +'ᾲ' => 'ᾺΙ', +'ᾴ' => 'ΆΙ', +'ῂ' => 'ῊΙ', +'ῄ' => 'ΉΙ', +'ῲ' => 'ῺΙ', +'ῴ' => 'ΏΙ', +'ᾷ' => 'Α͂Ι', +'ῇ' => 'Η͂Ι', +'ῷ' => 'Ω͂Ι', +); diff --git a/composer/vendor/symfony/polyfill-mbstring/bootstrap.php b/composer/vendor/symfony/polyfill-mbstring/bootstrap.php new file mode 100644 index 000000000..66ecf572f --- /dev/null +++ b/composer/vendor/symfony/polyfill-mbstring/bootstrap.php @@ -0,0 +1,147 @@ += 80000) { +return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('mb_convert_encoding')) { +function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } +} +if (!function_exists('mb_decode_mimeheader')) { +function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } +} +if (!function_exists('mb_encode_mimeheader')) { +function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } +} +if (!function_exists('mb_decode_numericentity')) { +function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } +} +if (!function_exists('mb_encode_numericentity')) { +function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } +} +if (!function_exists('mb_convert_case')) { +function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } +} +if (!function_exists('mb_internal_encoding')) { +function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } +} +if (!function_exists('mb_language')) { +function mb_language($language = null) { return p\Mbstring::mb_language($language); } +} +if (!function_exists('mb_list_encodings')) { +function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } +} +if (!function_exists('mb_encoding_aliases')) { +function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } +} +if (!function_exists('mb_check_encoding')) { +function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } +} +if (!function_exists('mb_detect_encoding')) { +function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } +} +if (!function_exists('mb_detect_order')) { +function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } +} +if (!function_exists('mb_parse_str')) { +function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; } +} +if (!function_exists('mb_strlen')) { +function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } +} +if (!function_exists('mb_strpos')) { +function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strtolower')) { +function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } +} +if (!function_exists('mb_strtoupper')) { +function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } +} +if (!function_exists('mb_substitute_character')) { +function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } +} +if (!function_exists('mb_substr')) { +function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } +} +if (!function_exists('mb_stripos')) { +function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_stristr')) { +function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrchr')) { +function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrichr')) { +function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strripos')) { +function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strrpos')) { +function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strstr')) { +function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_get_info')) { +function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } +} +if (!function_exists('mb_http_output')) { +function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } +} +if (!function_exists('mb_strwidth')) { +function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } +} +if (!function_exists('mb_substr_count')) { +function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } +} +if (!function_exists('mb_output_handler')) { +function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } +} +if (!function_exists('mb_http_input')) { +function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); } +} + +if (!function_exists('mb_convert_variables')) { +function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); } +} + +if (!function_exists('mb_ord')) { +function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } +} +if (!function_exists('mb_chr')) { +function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } +} +if (!function_exists('mb_scrub')) { +function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } +} +if (!function_exists('mb_str_split')) { +function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } +} + +if (extension_loaded('mbstring')) { +return; +} + +if (!defined('MB_CASE_UPPER')) { +define('MB_CASE_UPPER', 0); +} +if (!defined('MB_CASE_LOWER')) { +define('MB_CASE_LOWER', 1); +} +if (!defined('MB_CASE_TITLE')) { +define('MB_CASE_TITLE', 2); +} diff --git a/composer/vendor/symfony/polyfill-mbstring/bootstrap80.php b/composer/vendor/symfony/polyfill-mbstring/bootstrap80.php new file mode 100644 index 000000000..5d2344bed --- /dev/null +++ b/composer/vendor/symfony/polyfill-mbstring/bootstrap80.php @@ -0,0 +1,143 @@ += 70300) { +return; +} + +if (!function_exists('is_countable')) { +function is_countable($value) { return is_array($value) || $value instanceof Countable || $value instanceof ResourceBundle || $value instanceof SimpleXmlElement; } +} +if (!function_exists('hrtime')) { +require_once __DIR__.'/Php73.php'; +p\Php73::$startAt = (int) microtime(true); +function hrtime($as_number = false) { return p\Php73::hrtime($as_number); } +} +if (!function_exists('array_key_first')) { +function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } } +} +if (!function_exists('array_key_last')) { +function array_key_last(array $array) { return key(array_slice($array, -1, 1, true)); } +} diff --git a/composer/vendor/symfony/polyfill-php80/LICENSE b/composer/vendor/symfony/polyfill-php80/LICENSE new file mode 100644 index 000000000..a0815467c --- /dev/null +++ b/composer/vendor/symfony/polyfill-php80/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2020 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/composer/vendor/symfony/polyfill-php80/Php80.php b/composer/vendor/symfony/polyfill-php80/Php80.php new file mode 100644 index 000000000..41a6d0d5f --- /dev/null +++ b/composer/vendor/symfony/polyfill-php80/Php80.php @@ -0,0 +1,115 @@ +id = $id; +$this->text = $text; +$this->line = $line; +$this->pos = $position; +} + +public function getTokenName(): ?string +{ +if ('UNKNOWN' === $name = token_name($this->id)) { +$name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text; +} + +return $name; +} + + + + +public function is($kind): bool +{ +foreach ((array) $kind as $value) { +if (\in_array($value, [$this->id, $this->text], true)) { +return true; +} +} + +return false; +} + +public function isIgnorable(): bool +{ +return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true); +} + +public function __toString(): string +{ +return (string) $this->text; +} + + + + +public static function tokenize(string $code, int $flags = 0): array +{ +$line = 1; +$position = 0; +$tokens = token_get_all($code, $flags); +foreach ($tokens as $index => $token) { +if (\is_string($token)) { +$id = \ord($token); +$text = $token; +} else { +[$id, $text, $line] = $token; +} +$tokens[$index] = new static($id, $text, $line, $position); +$position += \strlen($text); +} + +return $tokens; +} +} diff --git a/composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php new file mode 100644 index 000000000..c780615a4 --- /dev/null +++ b/composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php @@ -0,0 +1,31 @@ +flags = $flags; +} +} diff --git a/composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php b/composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php new file mode 100644 index 000000000..59fe3d0a1 --- /dev/null +++ b/composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php @@ -0,0 +1,16 @@ += 80000) { +return; +} + +if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) { +define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN); +} + +if (!function_exists('fdiv')) { +function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); } +} +if (!function_exists('preg_last_error_msg')) { +function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } +} +if (!function_exists('str_contains')) { +function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('str_starts_with')) { +function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('str_ends_with')) { +function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('get_debug_type')) { +function get_debug_type($value): string { return p\Php80::get_debug_type($value); } +} +if (!function_exists('get_resource_id')) { +function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); } +} diff --git a/composer/vendor/symfony/polyfill-php81/LICENSE b/composer/vendor/symfony/polyfill-php81/LICENSE new file mode 100644 index 000000000..6205914f9 --- /dev/null +++ b/composer/vendor/symfony/polyfill-php81/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2021 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/composer/vendor/symfony/polyfill-php81/Php81.php b/composer/vendor/symfony/polyfill-php81/Php81.php new file mode 100644 index 000000000..1b222330d --- /dev/null +++ b/composer/vendor/symfony/polyfill-php81/Php81.php @@ -0,0 +1,37 @@ + $v) { +if ($k !== ++$nextKey) { +return false; +} +} + +return true; +} +} diff --git a/composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php b/composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php new file mode 100644 index 000000000..8bf85d40a --- /dev/null +++ b/composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php @@ -0,0 +1,20 @@ += 80100) { +return; +} + +if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) { +define('MYSQLI_REFRESH_REPLICA', 64); +} + +if (!function_exists('array_is_list')) { +function array_is_list(array $array): bool { return p\Php81::array_is_list($array); } +} + +if (!function_exists('enum_exists')) { +function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; } +} diff --git a/composer/vendor/symfony/process/Exception/ExceptionInterface.php b/composer/vendor/symfony/process/Exception/ExceptionInterface.php new file mode 100644 index 000000000..244e473d4 --- /dev/null +++ b/composer/vendor/symfony/process/Exception/ExceptionInterface.php @@ -0,0 +1,21 @@ +isSuccessful()) { +throw new InvalidArgumentException('Expected a failed process, but the given process was successful.'); +} + +$error = sprintf('The command "%s" failed.'."\n\nExit Code: %s(%s)\n\nWorking directory: %s", +$process->getCommandLine(), +$process->getExitCode(), +$process->getExitCodeText(), +$process->getWorkingDirectory() +); + +if (!$process->isOutputDisabled()) { +$error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", +$process->getOutput(), +$process->getErrorOutput() +); +} + +parent::__construct($error); + +$this->process = $process; +} + +public function getProcess() +{ +return $this->process; +} +} diff --git a/composer/vendor/symfony/process/Exception/ProcessSignaledException.php b/composer/vendor/symfony/process/Exception/ProcessSignaledException.php new file mode 100644 index 000000000..49ecdaa6a --- /dev/null +++ b/composer/vendor/symfony/process/Exception/ProcessSignaledException.php @@ -0,0 +1,41 @@ +process = $process; + +parent::__construct(sprintf('The process has been signaled with signal "%s".', $process->getTermSignal())); +} + +public function getProcess(): Process +{ +return $this->process; +} + +public function getSignal(): int +{ +return $this->getProcess()->getTermSignal(); +} +} diff --git a/composer/vendor/symfony/process/Exception/ProcessTimedOutException.php b/composer/vendor/symfony/process/Exception/ProcessTimedOutException.php new file mode 100644 index 000000000..eb182832f --- /dev/null +++ b/composer/vendor/symfony/process/Exception/ProcessTimedOutException.php @@ -0,0 +1,69 @@ +process = $process; +$this->timeoutType = $timeoutType; + +parent::__construct(sprintf( +'The process "%s" exceeded the timeout of %s seconds.', +$process->getCommandLine(), +$this->getExceededTimeout() +)); +} + +public function getProcess() +{ +return $this->process; +} + +public function isGeneralTimeout() +{ +return self::TYPE_GENERAL === $this->timeoutType; +} + +public function isIdleTimeout() +{ +return self::TYPE_IDLE === $this->timeoutType; +} + +public function getExceededTimeout() +{ +switch ($this->timeoutType) { +case self::TYPE_GENERAL: +return $this->process->getTimeout(); + +case self::TYPE_IDLE: +return $this->process->getIdleTimeout(); + +default: +throw new \LogicException(sprintf('Unknown timeout type "%d".', $this->timeoutType)); +} +} +} diff --git a/composer/vendor/symfony/process/Exception/RuntimeException.php b/composer/vendor/symfony/process/Exception/RuntimeException.php new file mode 100644 index 000000000..aa4ebcbeb --- /dev/null +++ b/composer/vendor/symfony/process/Exception/RuntimeException.php @@ -0,0 +1,21 @@ +suffixes = $suffixes; +} + + + + +public function addSuffix(string $suffix) +{ +$this->suffixes[] = $suffix; +} + + + + + + + + + + +public function find(string $name, string $default = null, array $extraDirs = []) +{ +if (\ini_get('open_basedir')) { +$searchPath = array_merge(explode(\PATH_SEPARATOR, \ini_get('open_basedir')), $extraDirs); +$dirs = []; +foreach ($searchPath as $path) { + +if (@is_dir($path)) { +$dirs[] = $path; +} else { +if (basename($path) == $name && @is_executable($path)) { +return $path; +} +} +} +} else { +$dirs = array_merge( +explode(\PATH_SEPARATOR, getenv('PATH') ?: getenv('Path')), +$extraDirs +); +} + +$suffixes = ['']; +if ('\\' === \DIRECTORY_SEPARATOR) { +$pathExt = getenv('PATHEXT'); +$suffixes = array_merge($pathExt ? explode(\PATH_SEPARATOR, $pathExt) : $this->suffixes, $suffixes); +} +foreach ($suffixes as $suffix) { +foreach ($dirs as $dir) { +if (@is_file($file = $dir.\DIRECTORY_SEPARATOR.$name.$suffix) && ('\\' === \DIRECTORY_SEPARATOR || @is_executable($file))) { +return $file; +} +} +} + +return $default; +} +} diff --git a/composer/vendor/symfony/process/InputStream.php b/composer/vendor/symfony/process/InputStream.php new file mode 100644 index 000000000..1abeab1a6 --- /dev/null +++ b/composer/vendor/symfony/process/InputStream.php @@ -0,0 +1,96 @@ +onEmpty = $onEmpty; +} + + + + + + + +public function write($input) +{ +if (null === $input) { +return; +} +if ($this->isClosed()) { +throw new RuntimeException(sprintf('"%s" is closed.', static::class)); +} +$this->input[] = ProcessUtils::validateInput(__METHOD__, $input); +} + + + + +public function close() +{ +$this->open = false; +} + + + + +public function isClosed() +{ +return !$this->open; +} + + + + +#[\ReturnTypeWillChange] +public function getIterator() +{ +$this->open = true; + +while ($this->open || $this->input) { +if (!$this->input) { +yield ''; +continue; +} +$current = array_shift($this->input); + +if ($current instanceof \Iterator) { +yield from $current; +} else { +yield $current; +} +if (!$this->input && $this->open && null !== $onEmpty = $this->onEmpty) { +$this->write($onEmpty($this)); +} +} +} +} diff --git a/composer/vendor/symfony/process/LICENSE b/composer/vendor/symfony/process/LICENSE new file mode 100644 index 000000000..3622370ec --- /dev/null +++ b/composer/vendor/symfony/process/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) 2004-2023 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/composer/vendor/symfony/process/PhpExecutableFinder.php b/composer/vendor/symfony/process/PhpExecutableFinder.php new file mode 100644 index 000000000..8f2359c61 --- /dev/null +++ b/composer/vendor/symfony/process/PhpExecutableFinder.php @@ -0,0 +1,103 @@ +executableFinder = new ExecutableFinder(); +} + + + + + + +public function find(bool $includeArgs = true) +{ +if ($php = getenv('PHP_BINARY')) { +if (!is_executable($php)) { +$command = '\\' === \DIRECTORY_SEPARATOR ? 'where' : 'command -v'; +if ($php = strtok(exec($command.' '.escapeshellarg($php)), \PHP_EOL)) { +if (!is_executable($php)) { +return false; +} +} else { +return false; +} +} + +if (@is_dir($php)) { +return false; +} + +return $php; +} + +$args = $this->findArguments(); +$args = $includeArgs && $args ? ' '.implode(' ', $args) : ''; + + +if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cgi-fcgi', 'cli', 'cli-server', 'phpdbg'], true)) { +return \PHP_BINARY.$args; +} + +if ($php = getenv('PHP_PATH')) { +if (!@is_executable($php) || @is_dir($php)) { +return false; +} + +return $php; +} + +if ($php = getenv('PHP_PEAR_PHP_BIN')) { +if (@is_executable($php) && !@is_dir($php)) { +return $php; +} +} + +if (@is_executable($php = \PHP_BINDIR.('\\' === \DIRECTORY_SEPARATOR ? '\\php.exe' : '/php')) && !@is_dir($php)) { +return $php; +} + +$dirs = [\PHP_BINDIR]; +if ('\\' === \DIRECTORY_SEPARATOR) { +$dirs[] = 'C:\xampp\php\\'; +} + +return $this->executableFinder->find('php', false, $dirs); +} + + + + + + +public function findArguments() +{ +$arguments = []; +if ('phpdbg' === \PHP_SAPI) { +$arguments[] = '-qrr'; +} + +return $arguments; +} +} diff --git a/composer/vendor/symfony/process/PhpProcess.php b/composer/vendor/symfony/process/PhpProcess.php new file mode 100644 index 000000000..488c59346 --- /dev/null +++ b/composer/vendor/symfony/process/PhpProcess.php @@ -0,0 +1,72 @@ +find(false); +$php = false === $php ? null : array_merge([$php], $executableFinder->findArguments()); +} +if ('phpdbg' === \PHP_SAPI) { +$file = tempnam(sys_get_temp_dir(), 'dbg'); +file_put_contents($file, $script); +register_shutdown_function('unlink', $file); +$php[] = $file; +$script = null; +} + +parent::__construct($php, $cwd, $env, $script, $timeout); +} + + + + +public static function fromShellCommandline(string $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) +{ +throw new LogicException(sprintf('The "%s()" method cannot be called when using "%s".', __METHOD__, self::class)); +} + + + + +public function start(callable $callback = null, array $env = []) +{ +if (null === $this->getCommandLine()) { +throw new RuntimeException('Unable to find the PHP executable.'); +} + +parent::start($callback, $env); +} +} diff --git a/composer/vendor/symfony/process/Pipes/AbstractPipes.php b/composer/vendor/symfony/process/Pipes/AbstractPipes.php new file mode 100644 index 000000000..cb09c389f --- /dev/null +++ b/composer/vendor/symfony/process/Pipes/AbstractPipes.php @@ -0,0 +1,180 @@ +input = $input; +} elseif (\is_string($input)) { +$this->inputBuffer = $input; +} else { +$this->inputBuffer = (string) $input; +} +} + + + + +public function close() +{ +foreach ($this->pipes as $pipe) { +if (\is_resource($pipe)) { +fclose($pipe); +} +} +$this->pipes = []; +} + + + + +protected function hasSystemCallBeenInterrupted(): bool +{ +$lastError = $this->lastError; +$this->lastError = null; + + +return null !== $lastError && false !== stripos($lastError, 'interrupted system call'); +} + + + + +protected function unblock() +{ +if (!$this->blocked) { +return; +} + +foreach ($this->pipes as $pipe) { +stream_set_blocking($pipe, 0); +} +if (\is_resource($this->input)) { +stream_set_blocking($this->input, 0); +} + +$this->blocked = false; +} + + + + + + +protected function write(): ?array +{ +if (!isset($this->pipes[0])) { +return null; +} +$input = $this->input; + +if ($input instanceof \Iterator) { +if (!$input->valid()) { +$input = null; +} elseif (\is_resource($input = $input->current())) { +stream_set_blocking($input, 0); +} elseif (!isset($this->inputBuffer[0])) { +if (!\is_string($input)) { +if (!\is_scalar($input)) { +throw new InvalidArgumentException(sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', get_debug_type($this->input), get_debug_type($input))); +} +$input = (string) $input; +} +$this->inputBuffer = $input; +$this->input->next(); +$input = null; +} else { +$input = null; +} +} + +$r = $e = []; +$w = [$this->pipes[0]]; + + +if (false === @stream_select($r, $w, $e, 0, 0)) { +return null; +} + +foreach ($w as $stdin) { +if (isset($this->inputBuffer[0])) { +$written = fwrite($stdin, $this->inputBuffer); +$this->inputBuffer = substr($this->inputBuffer, $written); +if (isset($this->inputBuffer[0])) { +return [$this->pipes[0]]; +} +} + +if ($input) { +while (true) { +$data = fread($input, self::CHUNK_SIZE); +if (!isset($data[0])) { +break; +} +$written = fwrite($stdin, $data); +$data = substr($data, $written); +if (isset($data[0])) { +$this->inputBuffer = $data; + +return [$this->pipes[0]]; +} +} +if (feof($input)) { +if ($this->input instanceof \Iterator) { +$this->input->next(); +} else { +$this->input = null; +} +} +} +} + + +if (!isset($this->inputBuffer[0]) && !($this->input instanceof \Iterator ? $this->input->valid() : $this->input)) { +$this->input = null; +fclose($this->pipes[0]); +unset($this->pipes[0]); +} elseif (!$w) { +return [$this->pipes[0]]; +} + +return null; +} + + + + +public function handleError(int $type, string $msg) +{ +$this->lastError = $msg; +} +} diff --git a/composer/vendor/symfony/process/Pipes/PipesInterface.php b/composer/vendor/symfony/process/Pipes/PipesInterface.php new file mode 100644 index 000000000..d547e2249 --- /dev/null +++ b/composer/vendor/symfony/process/Pipes/PipesInterface.php @@ -0,0 +1,61 @@ +ttyMode = $ttyMode; +$this->ptyMode = $ptyMode; +$this->haveReadSupport = $haveReadSupport; + +parent::__construct($input); +} + +public function __sleep(): array +{ +throw new \BadMethodCallException('Cannot serialize '.__CLASS__); +} + +public function __wakeup() +{ +throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); +} + +public function __destruct() +{ +$this->close(); +} + + + + +public function getDescriptors(): array +{ +if (!$this->haveReadSupport) { +$nullstream = fopen('/dev/null', 'c'); + +return [ +['pipe', 'r'], +$nullstream, +$nullstream, +]; +} + +if ($this->ttyMode) { +return [ +['file', '/dev/tty', 'r'], +['file', '/dev/tty', 'w'], +['file', '/dev/tty', 'w'], +]; +} + +if ($this->ptyMode && Process::isPtySupported()) { +return [ +['pty'], +['pty'], +['pty'], +]; +} + +return [ +['pipe', 'r'], +['pipe', 'w'], +['pipe', 'w'], +]; +} + + + + +public function getFiles(): array +{ +return []; +} + + + + +public function readAndWrite(bool $blocking, bool $close = false): array +{ +$this->unblock(); +$w = $this->write(); + +$read = $e = []; +$r = $this->pipes; +unset($r[0]); + + +set_error_handler([$this, 'handleError']); +if (($r || $w) && false === stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) { +restore_error_handler(); + + +if (!$this->hasSystemCallBeenInterrupted()) { +$this->pipes = []; +} + +return $read; +} +restore_error_handler(); + +foreach ($r as $pipe) { + + +$read[$type = array_search($pipe, $this->pipes, true)] = ''; + +do { +$data = @fread($pipe, self::CHUNK_SIZE); +$read[$type] .= $data; +} while (isset($data[0]) && ($close || isset($data[self::CHUNK_SIZE - 1]))); + +if (!isset($read[$type][0])) { +unset($read[$type]); +} + +if ($close && feof($pipe)) { +fclose($pipe); +unset($this->pipes[$type]); +} +} + +return $read; +} + + + + +public function haveReadSupport(): bool +{ +return $this->haveReadSupport; +} + + + + +public function areOpen(): bool +{ +return (bool) $this->pipes; +} +} diff --git a/composer/vendor/symfony/process/Pipes/WindowsPipes.php b/composer/vendor/symfony/process/Pipes/WindowsPipes.php new file mode 100644 index 000000000..bf2da33c1 --- /dev/null +++ b/composer/vendor/symfony/process/Pipes/WindowsPipes.php @@ -0,0 +1,204 @@ + 0, +Process::STDERR => 0, +]; +private $haveReadSupport; + +public function __construct($input, bool $haveReadSupport) +{ +$this->haveReadSupport = $haveReadSupport; + +if ($this->haveReadSupport) { + + + + +$pipes = [ +Process::STDOUT => Process::OUT, +Process::STDERR => Process::ERR, +]; +$tmpDir = sys_get_temp_dir(); +$lastError = 'unknown reason'; +set_error_handler(function ($type, $msg) use (&$lastError) { $lastError = $msg; }); +for ($i = 0;; ++$i) { +foreach ($pipes as $pipe => $name) { +$file = sprintf('%s\\sf_proc_%02X.%s', $tmpDir, $i, $name); + +if (!$h = fopen($file.'.lock', 'w')) { +if (file_exists($file.'.lock')) { +continue 2; +} +restore_error_handler(); +throw new RuntimeException('A temporary file could not be opened to write the process output: '.$lastError); +} +if (!flock($h, \LOCK_EX | \LOCK_NB)) { +continue 2; +} +if (isset($this->lockHandles[$pipe])) { +flock($this->lockHandles[$pipe], \LOCK_UN); +fclose($this->lockHandles[$pipe]); +} +$this->lockHandles[$pipe] = $h; + +if (!($h = fopen($file, 'w')) || !fclose($h) || !$h = fopen($file, 'r')) { +flock($this->lockHandles[$pipe], \LOCK_UN); +fclose($this->lockHandles[$pipe]); +unset($this->lockHandles[$pipe]); +continue 2; +} +$this->fileHandles[$pipe] = $h; +$this->files[$pipe] = $file; +} +break; +} +restore_error_handler(); +} + +parent::__construct($input); +} + +public function __sleep(): array +{ +throw new \BadMethodCallException('Cannot serialize '.__CLASS__); +} + +public function __wakeup() +{ +throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); +} + +public function __destruct() +{ +$this->close(); +} + + + + +public function getDescriptors(): array +{ +if (!$this->haveReadSupport) { +$nullstream = fopen('NUL', 'c'); + +return [ +['pipe', 'r'], +$nullstream, +$nullstream, +]; +} + + + + +return [ +['pipe', 'r'], +['file', 'NUL', 'w'], +['file', 'NUL', 'w'], +]; +} + + + + +public function getFiles(): array +{ +return $this->files; +} + + + + +public function readAndWrite(bool $blocking, bool $close = false): array +{ +$this->unblock(); +$w = $this->write(); +$read = $r = $e = []; + +if ($blocking) { +if ($w) { +@stream_select($r, $w, $e, 0, Process::TIMEOUT_PRECISION * 1E6); +} elseif ($this->fileHandles) { +usleep(Process::TIMEOUT_PRECISION * 1E6); +} +} +foreach ($this->fileHandles as $type => $fileHandle) { +$data = stream_get_contents($fileHandle, -1, $this->readBytes[$type]); + +if (isset($data[0])) { +$this->readBytes[$type] += \strlen($data); +$read[$type] = $data; +} +if ($close) { +ftruncate($fileHandle, 0); +fclose($fileHandle); +flock($this->lockHandles[$type], \LOCK_UN); +fclose($this->lockHandles[$type]); +unset($this->fileHandles[$type], $this->lockHandles[$type]); +} +} + +return $read; +} + + + + +public function haveReadSupport(): bool +{ +return $this->haveReadSupport; +} + + + + +public function areOpen(): bool +{ +return $this->pipes && $this->fileHandles; +} + + + + +public function close() +{ +parent::close(); +foreach ($this->fileHandles as $type => $handle) { +ftruncate($handle, 0); +fclose($handle); +flock($this->lockHandles[$type], \LOCK_UN); +fclose($this->lockHandles[$type]); +} +$this->fileHandles = $this->lockHandles = []; +} +} diff --git a/composer/vendor/symfony/process/Process.php b/composer/vendor/symfony/process/Process.php new file mode 100644 index 000000000..bbe1db70b --- /dev/null +++ b/composer/vendor/symfony/process/Process.php @@ -0,0 +1,1652 @@ + true, 'bypass_shell' => true]; + +private $useFileHandles = false; + +private $processPipes; + +private $latestSignal; + +private static $sigchild; + + + + + + +public static $exitCodes = [ +0 => 'OK', +1 => 'General error', +2 => 'Misuse of shell builtins', + +126 => 'Invoked command cannot execute', +127 => 'Command not found', +128 => 'Invalid exit argument', + + +129 => 'Hangup', +130 => 'Interrupt', +131 => 'Quit and dump core', +132 => 'Illegal instruction', +133 => 'Trace/breakpoint trap', +134 => 'Process aborted', +135 => 'Bus error: "access to undefined portion of memory object"', +136 => 'Floating point exception: "erroneous arithmetic operation"', +137 => 'Kill (terminate immediately)', +138 => 'User-defined 1', +139 => 'Segmentation violation', +140 => 'User-defined 2', +141 => 'Write to pipe with no one reading', +142 => 'Signal raised by alarm', +143 => 'Termination (request to terminate)', + +145 => 'Child process terminated, stopped (or continued*)', +146 => 'Continue if stopped', +147 => 'Stop executing temporarily', +148 => 'Terminal stop signal', +149 => 'Background process attempting to read from tty ("in")', +150 => 'Background process attempting to write to tty ("out")', +151 => 'Urgent data available on socket', +152 => 'CPU time limit exceeded', +153 => 'File size limit exceeded', +154 => 'Signal raised by timer counting virtual time: "virtual timer expired"', +155 => 'Profiling timer expired', + +157 => 'Pollable event', + +159 => 'Bad syscall', +]; + + + + + + + + + + +public function __construct(array $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) +{ +if (!\function_exists('proc_open')) { +throw new LogicException('The Process class relies on proc_open, which is not available on your PHP installation.'); +} + +$this->commandline = $command; +$this->cwd = $cwd; + + + + + +if (null === $this->cwd && (\defined('ZEND_THREAD_SAFE') || '\\' === \DIRECTORY_SEPARATOR)) { +$this->cwd = getcwd(); +} +if (null !== $env) { +$this->setEnv($env); +} + +$this->setInput($input); +$this->setTimeout($timeout); +$this->useFileHandles = '\\' === \DIRECTORY_SEPARATOR; +$this->pty = false; +} + + + + + + + + + + + + + + + + + + + + + + + + +public static function fromShellCommandline(string $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) +{ +$process = new static([], $cwd, $env, $input, $timeout); +$process->commandline = $command; + +return $process; +} + + + + +public function __sleep() +{ +throw new \BadMethodCallException('Cannot serialize '.__CLASS__); +} + +public function __wakeup() +{ +throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); +} + +public function __destruct() +{ +if ($this->options['create_new_console'] ?? false) { +$this->processPipes->close(); +} else { +$this->stop(0); +} +} + +public function __clone() +{ +$this->resetProcessData(); +} + + + + + + + + + + + + + + + + + + + + + + + + +public function run(callable $callback = null, array $env = []): int +{ +$this->start($callback, $env); + +return $this->wait(); +} + + + + + + + + + + + + + +public function mustRun(callable $callback = null, array $env = []): self +{ +if (0 !== $this->run($callback, $env)) { +throw new ProcessFailedException($this); +} + +return $this; +} + + + + + + + + + + + + + + + + + + + + +public function start(callable $callback = null, array $env = []) +{ +if ($this->isRunning()) { +throw new RuntimeException('Process is already running.'); +} + +$this->resetProcessData(); +$this->starttime = $this->lastOutputTime = microtime(true); +$this->callback = $this->buildCallback($callback); +$this->hasCallback = null !== $callback; +$descriptors = $this->getDescriptors(); + +if ($this->env) { +$env += '\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($this->env, $env, 'strcasecmp') : $this->env; +} + +$env += '\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($this->getDefaultEnv(), $env, 'strcasecmp') : $this->getDefaultEnv(); + +if (\is_array($commandline = $this->commandline)) { +$commandline = implode(' ', array_map([$this, 'escapeArgument'], $commandline)); + +if ('\\' !== \DIRECTORY_SEPARATOR) { + +$commandline = 'exec '.$commandline; +} +} else { +$commandline = $this->replacePlaceholders($commandline, $env); +} + +if ('\\' === \DIRECTORY_SEPARATOR) { +$commandline = $this->prepareWindowsCommandLine($commandline, $env); +} elseif (!$this->useFileHandles && $this->isSigchildEnabled()) { + +$descriptors[3] = ['pipe', 'w']; + + +$commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; +$commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; + + + +$ptsWorkaround = fopen(__FILE__, 'r'); +} + +$envPairs = []; +foreach ($env as $k => $v) { +if (false !== $v && false === \in_array($k, ['argc', 'argv', 'ARGC', 'ARGV'], true)) { +$envPairs[] = $k.'='.$v; +} +} + +if (!is_dir($this->cwd)) { +throw new RuntimeException(sprintf('The provided cwd "%s" does not exist.', $this->cwd)); +} + +$this->process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $this->options); + +if (!\is_resource($this->process)) { +throw new RuntimeException('Unable to launch a new process.'); +} +$this->status = self::STATUS_STARTED; + +if (isset($descriptors[3])) { +$this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); +} + +if ($this->tty) { +return; +} + +$this->updateStatus(false); +$this->checkTimeout(); +} + + + + + + + + + + + + + + + + + + +public function restart(callable $callback = null, array $env = []): self +{ +if ($this->isRunning()) { +throw new RuntimeException('Process is already running.'); +} + +$process = clone $this; +$process->start($callback, $env); + +return $process; +} + + + + + + + + + + + + + + + + +public function wait(callable $callback = null) +{ +$this->requireProcessIsStarted(__FUNCTION__); + +$this->updateStatus(false); + +if (null !== $callback) { +if (!$this->processPipes->haveReadSupport()) { +$this->stop(0); +throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::wait".'); +} +$this->callback = $this->buildCallback($callback); +} + +do { +$this->checkTimeout(); +$running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); +$this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); +} while ($running); + +while ($this->isRunning()) { +$this->checkTimeout(); +usleep(1000); +} + +if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) { +throw new ProcessSignaledException($this); +} + +return $this->exitcode; +} + + + + + + + + + + + + +public function waitUntil(callable $callback): bool +{ +$this->requireProcessIsStarted(__FUNCTION__); +$this->updateStatus(false); + +if (!$this->processPipes->haveReadSupport()) { +$this->stop(0); +throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::waitUntil".'); +} +$callback = $this->buildCallback($callback); + +$ready = false; +while (true) { +$this->checkTimeout(); +$running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); +$output = $this->processPipes->readAndWrite($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); + +foreach ($output as $type => $data) { +if (3 !== $type) { +$ready = $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data) || $ready; +} elseif (!isset($this->fallbackStatus['signaled'])) { +$this->fallbackStatus['exitcode'] = (int) $data; +} +} +if ($ready) { +return true; +} +if (!$running) { +return false; +} + +usleep(1000); +} +} + + + + + + +public function getPid() +{ +return $this->isRunning() ? $this->processInformation['pid'] : null; +} + + + + + + + + + + + + +public function signal(int $signal) +{ +$this->doSignal($signal, true); + +return $this; +} + + + + + + + + + +public function disableOutput() +{ +if ($this->isRunning()) { +throw new RuntimeException('Disabling output while the process is running is not possible.'); +} +if (null !== $this->idleTimeout) { +throw new LogicException('Output cannot be disabled while an idle timeout is set.'); +} + +$this->outputDisabled = true; + +return $this; +} + + + + + + + + +public function enableOutput() +{ +if ($this->isRunning()) { +throw new RuntimeException('Enabling output while the process is running is not possible.'); +} + +$this->outputDisabled = false; + +return $this; +} + + + + + + +public function isOutputDisabled() +{ +return $this->outputDisabled; +} + + + + + + + + + +public function getOutput() +{ +$this->readPipesForOutput(__FUNCTION__); + +if (false === $ret = stream_get_contents($this->stdout, -1, 0)) { +return ''; +} + +return $ret; +} + + + + + + + + + + + + +public function getIncrementalOutput() +{ +$this->readPipesForOutput(__FUNCTION__); + +$latest = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); +$this->incrementalOutputOffset = ftell($this->stdout); + +if (false === $latest) { +return ''; +} + +return $latest; +} + + + + + + + + + + + +#[\ReturnTypeWillChange] +public function getIterator(int $flags = 0) +{ +$this->readPipesForOutput(__FUNCTION__, false); + +$clearOutput = !(self::ITER_KEEP_OUTPUT & $flags); +$blocking = !(self::ITER_NON_BLOCKING & $flags); +$yieldOut = !(self::ITER_SKIP_OUT & $flags); +$yieldErr = !(self::ITER_SKIP_ERR & $flags); + +while (null !== $this->callback || ($yieldOut && !feof($this->stdout)) || ($yieldErr && !feof($this->stderr))) { +if ($yieldOut) { +$out = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); + +if (isset($out[0])) { +if ($clearOutput) { +$this->clearOutput(); +} else { +$this->incrementalOutputOffset = ftell($this->stdout); +} + +yield self::OUT => $out; +} +} + +if ($yieldErr) { +$err = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); + +if (isset($err[0])) { +if ($clearOutput) { +$this->clearErrorOutput(); +} else { +$this->incrementalErrorOutputOffset = ftell($this->stderr); +} + +yield self::ERR => $err; +} +} + +if (!$blocking && !isset($out[0]) && !isset($err[0])) { +yield self::OUT => ''; +} + +$this->checkTimeout(); +$this->readPipesForOutput(__FUNCTION__, $blocking); +} +} + + + + + + +public function clearOutput() +{ +ftruncate($this->stdout, 0); +fseek($this->stdout, 0); +$this->incrementalOutputOffset = 0; + +return $this; +} + + + + + + + + + +public function getErrorOutput() +{ +$this->readPipesForOutput(__FUNCTION__); + +if (false === $ret = stream_get_contents($this->stderr, -1, 0)) { +return ''; +} + +return $ret; +} + + + + + + + + + + + + + +public function getIncrementalErrorOutput() +{ +$this->readPipesForOutput(__FUNCTION__); + +$latest = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); +$this->incrementalErrorOutputOffset = ftell($this->stderr); + +if (false === $latest) { +return ''; +} + +return $latest; +} + + + + + + +public function clearErrorOutput() +{ +ftruncate($this->stderr, 0); +fseek($this->stderr, 0); +$this->incrementalErrorOutputOffset = 0; + +return $this; +} + + + + + + +public function getExitCode() +{ +$this->updateStatus(false); + +return $this->exitcode; +} + + + + + + + + + + + + +public function getExitCodeText() +{ +if (null === $exitcode = $this->getExitCode()) { +return null; +} + +return self::$exitCodes[$exitcode] ?? 'Unknown error'; +} + + + + + + +public function isSuccessful() +{ +return 0 === $this->getExitCode(); +} + + + + + + + + + + +public function hasBeenSignaled() +{ +$this->requireProcessIsTerminated(__FUNCTION__); + +return $this->processInformation['signaled']; +} + + + + + + + + + + + +public function getTermSignal() +{ +$this->requireProcessIsTerminated(__FUNCTION__); + +if ($this->isSigchildEnabled() && -1 === $this->processInformation['termsig']) { +throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal cannot be retrieved.'); +} + +return $this->processInformation['termsig']; +} + + + + + + + + + + +public function hasBeenStopped() +{ +$this->requireProcessIsTerminated(__FUNCTION__); + +return $this->processInformation['stopped']; +} + + + + + + + + + + +public function getStopSignal() +{ +$this->requireProcessIsTerminated(__FUNCTION__); + +return $this->processInformation['stopsig']; +} + + + + + + +public function isRunning() +{ +if (self::STATUS_STARTED !== $this->status) { +return false; +} + +$this->updateStatus(false); + +return $this->processInformation['running']; +} + + + + + + +public function isStarted() +{ +return self::STATUS_READY != $this->status; +} + + + + + + +public function isTerminated() +{ +$this->updateStatus(false); + +return self::STATUS_TERMINATED == $this->status; +} + + + + + + + + +public function getStatus() +{ +$this->updateStatus(false); + +return $this->status; +} + + + + + + + + + +public function stop(float $timeout = 10, int $signal = null) +{ +$timeoutMicro = microtime(true) + $timeout; +if ($this->isRunning()) { + +$this->doSignal(15, false); +do { +usleep(1000); +} while ($this->isRunning() && microtime(true) < $timeoutMicro); + +if ($this->isRunning()) { + + +$this->doSignal($signal ?: 9, false); +} +} + +if ($this->isRunning()) { +if (isset($this->fallbackStatus['pid'])) { +unset($this->fallbackStatus['pid']); + +return $this->stop(0, $signal); +} +$this->close(); +} + +return $this->exitcode; +} + + + + + + +public function addOutput(string $line) +{ +$this->lastOutputTime = microtime(true); + +fseek($this->stdout, 0, \SEEK_END); +fwrite($this->stdout, $line); +fseek($this->stdout, $this->incrementalOutputOffset); +} + + + + + + +public function addErrorOutput(string $line) +{ +$this->lastOutputTime = microtime(true); + +fseek($this->stderr, 0, \SEEK_END); +fwrite($this->stderr, $line); +fseek($this->stderr, $this->incrementalErrorOutputOffset); +} + + + + +public function getLastOutputTime(): ?float +{ +return $this->lastOutputTime; +} + + + + + + +public function getCommandLine() +{ +return \is_array($this->commandline) ? implode(' ', array_map([$this, 'escapeArgument'], $this->commandline)) : $this->commandline; +} + + + + + + +public function getTimeout() +{ +return $this->timeout; +} + + + + + + +public function getIdleTimeout() +{ +return $this->idleTimeout; +} + + + + + + + + + + +public function setTimeout(?float $timeout) +{ +$this->timeout = $this->validateTimeout($timeout); + +return $this; +} + + + + + + + + + + + +public function setIdleTimeout(?float $timeout) +{ +if (null !== $timeout && $this->outputDisabled) { +throw new LogicException('Idle timeout cannot be set while the output is disabled.'); +} + +$this->idleTimeout = $this->validateTimeout($timeout); + +return $this; +} + + + + + + + + +public function setTty(bool $tty) +{ +if ('\\' === \DIRECTORY_SEPARATOR && $tty) { +throw new RuntimeException('TTY mode is not supported on Windows platform.'); +} + +if ($tty && !self::isTtySupported()) { +throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.'); +} + +$this->tty = $tty; + +return $this; +} + + + + + + +public function isTty() +{ +return $this->tty; +} + + + + + + +public function setPty(bool $bool) +{ +$this->pty = $bool; + +return $this; +} + + + + + + +public function isPty() +{ +return $this->pty; +} + + + + + + +public function getWorkingDirectory() +{ +if (null === $this->cwd) { + + +return getcwd() ?: null; +} + +return $this->cwd; +} + + + + + + +public function setWorkingDirectory(string $cwd) +{ +$this->cwd = $cwd; + +return $this; +} + + + + + + +public function getEnv() +{ +return $this->env; +} + + + + + + + + +public function setEnv(array $env) +{ +$this->env = $env; + +return $this; +} + + + + + + +public function getInput() +{ +return $this->input; +} + + + + + + + + + + + + +public function setInput($input) +{ +if ($this->isRunning()) { +throw new LogicException('Input cannot be set while the process is running.'); +} + +$this->input = ProcessUtils::validateInput(__METHOD__, $input); + +return $this; +} + + + + + + + + + +public function checkTimeout() +{ +if (self::STATUS_STARTED !== $this->status) { +return; +} + +if (null !== $this->timeout && $this->timeout < microtime(true) - $this->starttime) { +$this->stop(0); + +throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL); +} + +if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) { +$this->stop(0); + +throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE); +} +} + + + + +public function getStartTime(): float +{ +if (!$this->isStarted()) { +throw new LogicException('Start time is only available after process start.'); +} + +return $this->starttime; +} + + + + + + + + + +public function setOptions(array $options) +{ +if ($this->isRunning()) { +throw new RuntimeException('Setting options while the process is running is not possible.'); +} + +$defaultOptions = $this->options; +$existingOptions = ['blocking_pipes', 'create_process_group', 'create_new_console']; + +foreach ($options as $key => $value) { +if (!\in_array($key, $existingOptions)) { +$this->options = $defaultOptions; +throw new LogicException(sprintf('Invalid option "%s" passed to "%s()". Supported options are "%s".', $key, __METHOD__, implode('", "', $existingOptions))); +} +$this->options[$key] = $value; +} +} + + + + +public static function isTtySupported(): bool +{ +static $isTtySupported; + +if (null === $isTtySupported) { +$isTtySupported = (bool) @proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); +} + +return $isTtySupported; +} + + + + + + +public static function isPtySupported() +{ +static $result; + +if (null !== $result) { +return $result; +} + +if ('\\' === \DIRECTORY_SEPARATOR) { +return $result = false; +} + +return $result = (bool) @proc_open('echo 1 >/dev/null', [['pty'], ['pty'], ['pty']], $pipes); +} + + + + +private function getDescriptors(): array +{ +if ($this->input instanceof \Iterator) { +$this->input->rewind(); +} +if ('\\' === \DIRECTORY_SEPARATOR) { +$this->processPipes = new WindowsPipes($this->input, !$this->outputDisabled || $this->hasCallback); +} else { +$this->processPipes = new UnixPipes($this->isTty(), $this->isPty(), $this->input, !$this->outputDisabled || $this->hasCallback); +} + +return $this->processPipes->getDescriptors(); +} + + + + + + + + + + + +protected function buildCallback(callable $callback = null) +{ +if ($this->outputDisabled) { +return function ($type, $data) use ($callback): bool { +return null !== $callback && $callback($type, $data); +}; +} + +$out = self::OUT; + +return function ($type, $data) use ($callback, $out): bool { +if ($out == $type) { +$this->addOutput($data); +} else { +$this->addErrorOutput($data); +} + +return null !== $callback && $callback($type, $data); +}; +} + + + + + + +protected function updateStatus(bool $blocking) +{ +if (self::STATUS_STARTED !== $this->status) { +return; +} + +$this->processInformation = proc_get_status($this->process); +$running = $this->processInformation['running']; + +$this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running); + +if ($this->fallbackStatus && $this->isSigchildEnabled()) { +$this->processInformation = $this->fallbackStatus + $this->processInformation; +} + +if (!$running) { +$this->close(); +} +} + + + + + + +protected function isSigchildEnabled() +{ +if (null !== self::$sigchild) { +return self::$sigchild; +} + +if (!\function_exists('phpinfo')) { +return self::$sigchild = false; +} + +ob_start(); +phpinfo(\INFO_GENERAL); + +return self::$sigchild = str_contains(ob_get_clean(), '--enable-sigchild'); +} + + + + + + + + + +private function readPipesForOutput(string $caller, bool $blocking = false) +{ +if ($this->outputDisabled) { +throw new LogicException('Output has been disabled.'); +} + +$this->requireProcessIsStarted($caller); + +$this->updateStatus($blocking); +} + + + + + + +private function validateTimeout(?float $timeout): ?float +{ +$timeout = (float) $timeout; + +if (0.0 === $timeout) { +$timeout = null; +} elseif ($timeout < 0) { +throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); +} + +return $timeout; +} + + + + + + + +private function readPipes(bool $blocking, bool $close) +{ +$result = $this->processPipes->readAndWrite($blocking, $close); + +$callback = $this->callback; +foreach ($result as $type => $data) { +if (3 !== $type) { +$callback(self::STDOUT === $type ? self::OUT : self::ERR, $data); +} elseif (!isset($this->fallbackStatus['signaled'])) { +$this->fallbackStatus['exitcode'] = (int) $data; +} +} +} + + + + + + +private function close(): int +{ +$this->processPipes->close(); +if (\is_resource($this->process)) { +proc_close($this->process); +} +$this->exitcode = $this->processInformation['exitcode']; +$this->status = self::STATUS_TERMINATED; + +if (-1 === $this->exitcode) { +if ($this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) { + +$this->exitcode = 128 + $this->processInformation['termsig']; +} elseif ($this->isSigchildEnabled()) { +$this->processInformation['signaled'] = true; +$this->processInformation['termsig'] = -1; +} +} + + + + +$this->callback = null; + +return $this->exitcode; +} + + + + +private function resetProcessData() +{ +$this->starttime = null; +$this->callback = null; +$this->exitcode = null; +$this->fallbackStatus = []; +$this->processInformation = null; +$this->stdout = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+'); +$this->stderr = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+'); +$this->process = null; +$this->latestSignal = null; +$this->status = self::STATUS_READY; +$this->incrementalOutputOffset = 0; +$this->incrementalErrorOutputOffset = 0; +} + + + + + + + + + + + +private function doSignal(int $signal, bool $throwException): bool +{ +if (null === $pid = $this->getPid()) { +if ($throwException) { +throw new LogicException('Cannot send signal on a non running process.'); +} + +return false; +} + +if ('\\' === \DIRECTORY_SEPARATOR) { +exec(sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode); +if ($exitCode && $this->isRunning()) { +if ($throwException) { +throw new RuntimeException(sprintf('Unable to kill the process (%s).', implode(' ', $output))); +} + +return false; +} +} else { +if (!$this->isSigchildEnabled()) { +$ok = @proc_terminate($this->process, $signal); +} elseif (\function_exists('posix_kill')) { +$ok = @posix_kill($pid, $signal); +} elseif ($ok = proc_open(sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) { +$ok = false === fgets($pipes[2]); +} +if (!$ok) { +if ($throwException) { +throw new RuntimeException(sprintf('Error while sending signal "%s".', $signal)); +} + +return false; +} +} + +$this->latestSignal = $signal; +$this->fallbackStatus['signaled'] = true; +$this->fallbackStatus['exitcode'] = -1; +$this->fallbackStatus['termsig'] = $this->latestSignal; + +return true; +} + +private function prepareWindowsCommandLine(string $cmd, array &$env): string +{ +$uid = uniqid('', true); +$varCount = 0; +$varCache = []; +$cmd = preg_replace_callback( +'/"(?:( + [^"%!^]*+ + (?: + (?: !LF! | "(?:\^[%!^])?+" ) + [^"%!^]*+ + )++ + ) | [^"]*+ )"/x', +function ($m) use (&$env, &$varCache, &$varCount, $uid) { +if (!isset($m[1])) { +return $m[0]; +} +if (isset($varCache[$m[0]])) { +return $varCache[$m[0]]; +} +if (str_contains($value = $m[1], "\0")) { +$value = str_replace("\0", '?', $value); +} +if (false === strpbrk($value, "\"%!\n")) { +return '"'.$value.'"'; +} + +$value = str_replace(['!LF!', '"^!"', '"^%"', '"^^"', '""'], ["\n", '!', '%', '^', '"'], $value); +$value = '"'.preg_replace('/(\\\\*)"/', '$1$1\\"', $value).'"'; +$var = $uid.++$varCount; + +$env[$var] = $value; + +return $varCache[$m[0]] = '!'.$var.'!'; +}, +$cmd +); + +$cmd = 'cmd /V:ON /E:ON /D /C ('.str_replace("\n", ' ', $cmd).')'; +foreach ($this->processPipes->getFiles() as $offset => $filename) { +$cmd .= ' '.$offset.'>"'.$filename.'"'; +} + +return $cmd; +} + + + + + + +private function requireProcessIsStarted(string $functionName) +{ +if (!$this->isStarted()) { +throw new LogicException(sprintf('Process must be started before calling "%s()".', $functionName)); +} +} + + + + + + +private function requireProcessIsTerminated(string $functionName) +{ +if (!$this->isTerminated()) { +throw new LogicException(sprintf('Process must be terminated before calling "%s()".', $functionName)); +} +} + + + + +private function escapeArgument(?string $argument): string +{ +if ('' === $argument || null === $argument) { +return '""'; +} +if ('\\' !== \DIRECTORY_SEPARATOR) { +return "'".str_replace("'", "'\\''", $argument)."'"; +} +if (str_contains($argument, "\0")) { +$argument = str_replace("\0", '?', $argument); +} +if (!preg_match('/[\/()%!^"<>&|\s]/', $argument)) { +return $argument; +} +$argument = preg_replace('/(\\\\+)$/', '$1$1', $argument); + +return '"'.str_replace(['"', '^', '%', '!', "\n"], ['""', '"^^"', '"^%"', '"^!"', '!LF!'], $argument).'"'; +} + +private function replacePlaceholders(string $commandline, array $env) +{ +return preg_replace_callback('/"\$\{:([_a-zA-Z]++[_a-zA-Z0-9]*+)\}"/', function ($matches) use ($commandline, $env) { +if (!isset($env[$matches[1]]) || false === $env[$matches[1]]) { +throw new InvalidArgumentException(sprintf('Command line is missing a value for parameter "%s": ', $matches[1]).$commandline); +} + +return $this->escapeArgument($env[$matches[1]]); +}, $commandline); +} + +private function getDefaultEnv(): array +{ +$env = getenv(); +$env = ('\\' === \DIRECTORY_SEPARATOR ? array_intersect_ukey($env, $_SERVER, 'strcasecmp') : array_intersect_key($env, $_SERVER)) ?: $env; + +return $_ENV + ('\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($env, $_ENV, 'strcasecmp') : $env); +} +} diff --git a/composer/vendor/symfony/process/ProcessUtils.php b/composer/vendor/symfony/process/ProcessUtils.php new file mode 100644 index 000000000..9f2c7ec29 --- /dev/null +++ b/composer/vendor/symfony/process/ProcessUtils.php @@ -0,0 +1,69 @@ +getIterator($input::ITER_SKIP_ERR); +} +if ($input instanceof \Iterator) { +return $input; +} +if ($input instanceof \Traversable) { +return new \IteratorIterator($input); +} + +throw new InvalidArgumentException(sprintf('"%s" only accepts strings, Traversable objects or stream resources.', $caller)); +} + +return $input; +} +} diff --git a/composer/vendor/symfony/service-contracts/Attribute/Required.php b/composer/vendor/symfony/service-contracts/Attribute/Required.php new file mode 100644 index 000000000..19038315b --- /dev/null +++ b/composer/vendor/symfony/service-contracts/Attribute/Required.php @@ -0,0 +1,25 @@ +factories = $factories; +} + + + + + + +public function has(string $id) +{ +return isset($this->factories[$id]); +} + + + + + + +public function get(string $id) +{ +if (!isset($this->factories[$id])) { +throw $this->createNotFoundException($id); +} + +if (isset($this->loading[$id])) { +$ids = array_values($this->loading); +$ids = \array_slice($this->loading, array_search($id, $ids)); +$ids[] = $id; + +throw $this->createCircularReferenceException($id, $ids); +} + +$this->loading[$id] = $id; +try { +return $this->factories[$id]($this); +} finally { +unset($this->loading[$id]); +} +} + + + + +public function getProvidedServices(): array +{ +if (null === $this->providedTypes) { +$this->providedTypes = []; + +foreach ($this->factories as $name => $factory) { +if (!\is_callable($factory)) { +$this->providedTypes[$name] = '?'; +} else { +$type = (new \ReflectionFunction($factory))->getReturnType(); + +$this->providedTypes[$name] = $type ? ($type->allowsNull() ? '?' : '').($type instanceof \ReflectionNamedType ? $type->getName() : $type) : '?'; +} +} +} + +return $this->providedTypes; +} + +private function createNotFoundException(string $id): NotFoundExceptionInterface +{ +if (!$alternatives = array_keys($this->factories)) { +$message = 'is empty...'; +} else { +$last = array_pop($alternatives); +if ($alternatives) { +$message = sprintf('only knows about the "%s" and "%s" services.', implode('", "', $alternatives), $last); +} else { +$message = sprintf('only knows about the "%s" service.', $last); +} +} + +if ($this->loading) { +$message = sprintf('The service "%s" has a dependency on a non-existent service "%s". This locator %s', end($this->loading), $id, $message); +} else { +$message = sprintf('Service "%s" not found: the current service locator %s', $id, $message); +} + +return new class($message) extends \InvalidArgumentException implements NotFoundExceptionInterface { +}; +} + +private function createCircularReferenceException(string $id, array $path): ContainerExceptionInterface +{ +return new class(sprintf('Circular reference detected for service "%s", path: "%s".', $id, implode(' -> ', $path))) extends \RuntimeException implements ContainerExceptionInterface { +}; +} +} diff --git a/composer/vendor/symfony/service-contracts/ServiceProviderInterface.php b/composer/vendor/symfony/service-contracts/ServiceProviderInterface.php new file mode 100644 index 000000000..41a07faac --- /dev/null +++ b/composer/vendor/symfony/service-contracts/ServiceProviderInterface.php @@ -0,0 +1,36 @@ += 80000) { +foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { +if (self::class !== $method->getDeclaringClass()->name) { +continue; +} + +if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) { +continue; +} + +if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { +throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name)); +} + +if (!$returnType = $method->getReturnType()) { +throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class)); +} + +$serviceId = $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType; + +if ($returnType->allowsNull()) { +$serviceId = '?'.$serviceId; +} + +$services[$attribute->newInstance()->key ?? self::class.'::'.$method->name] = $serviceId; +$attributeOptIn = true; +} +} + +if (!$attributeOptIn) { +foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { +if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { +continue; +} + +if (self::class !== $method->getDeclaringClass()->name) { +continue; +} + +if (!($returnType = $method->getReturnType()) instanceof \ReflectionNamedType) { +continue; +} + +if ($returnType->isBuiltin()) { +continue; +} + +if (\PHP_VERSION_ID >= 80000) { +trigger_deprecation('symfony/service-contracts', '2.5', 'Using "%s" in "%s" without using the "%s" attribute on any method is deprecated.', ServiceSubscriberTrait::class, self::class, SubscribedService::class); +} + +$services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $returnType); +} +} + +return $services; +} + + + + + + +public function setContainer(ContainerInterface $container) +{ +$this->container = $container; + +if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) { +return parent::setContainer($container); +} + +return null; +} +} diff --git a/composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php b/composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php new file mode 100644 index 000000000..c84d445bd --- /dev/null +++ b/composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php @@ -0,0 +1,95 @@ +getServiceLocator([ +'foo' => function () { return 'bar'; }, +'bar' => function () { return 'baz'; }, +function () { return 'dummy'; }, +]); + +$this->assertTrue($locator->has('foo')); +$this->assertTrue($locator->has('bar')); +$this->assertFalse($locator->has('dummy')); +} + +public function testGet() +{ +$locator = $this->getServiceLocator([ +'foo' => function () { return 'bar'; }, +'bar' => function () { return 'baz'; }, +]); + +$this->assertSame('bar', $locator->get('foo')); +$this->assertSame('baz', $locator->get('bar')); +} + +public function testGetDoesNotMemoize() +{ +$i = 0; +$locator = $this->getServiceLocator([ +'foo' => function () use (&$i) { +++$i; + +return 'bar'; +}, +]); + +$this->assertSame('bar', $locator->get('foo')); +$this->assertSame('bar', $locator->get('foo')); +$this->assertSame(2, $i); +} + +public function testThrowsOnUndefinedInternalService() +{ +if (!$this->getExpectedException()) { +$this->expectException(\Psr\Container\NotFoundExceptionInterface::class); +$this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.'); +} +$locator = $this->getServiceLocator([ +'foo' => function () use (&$locator) { return $locator->get('bar'); }, +]); + +$locator->get('foo'); +} + +public function testThrowsOnCircularReference() +{ +$this->expectException(\Psr\Container\ContainerExceptionInterface::class); +$this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".'); +$locator = $this->getServiceLocator([ +'foo' => function () use (&$locator) { return $locator->get('bar'); }, +'bar' => function () use (&$locator) { return $locator->get('baz'); }, +'baz' => function () use (&$locator) { return $locator->get('bar'); }, +]); + +$locator->get('foo'); +} +} diff --git a/composer/vendor/symfony/string/AbstractString.php b/composer/vendor/symfony/string/AbstractString.php new file mode 100644 index 000000000..7a47197f1 --- /dev/null +++ b/composer/vendor/symfony/string/AbstractString.php @@ -0,0 +1,795 @@ + $v) { +if ($v instanceof self) { +$values[$k] = $v->__toString(); +} elseif (\is_array($v) && $values[$k] !== $v = static::unwrap($v)) { +$values[$k] = $v; +} +} + +return $values; +} + + + + + + +public static function wrap(array $values): array +{ +$i = 0; +$keys = null; + +foreach ($values as $k => $v) { +if (\is_string($k) && '' !== $k && $k !== $j = (string) new static($k)) { +$keys = $keys ?? array_keys($values); +$keys[$i] = $j; +} + +if (\is_string($v)) { +$values[$k] = new static($v); +} elseif (\is_array($v) && $values[$k] !== $v = static::wrap($v)) { +$values[$k] = $v; +} + +++$i; +} + +return null !== $keys ? array_combine($keys, $values) : $values; +} + + + + + + +public function after($needle, bool $includeNeedle = false, int $offset = 0): self +{ +$str = clone $this; +$i = \PHP_INT_MAX; + +foreach ((array) $needle as $n) { +$n = (string) $n; +$j = $this->indexOf($n, $offset); + +if (null !== $j && $j < $i) { +$i = $j; +$str->string = $n; +} +} + +if (\PHP_INT_MAX === $i) { +return $str; +} + +if (!$includeNeedle) { +$i += $str->length(); +} + +return $this->slice($i); +} + + + + + + +public function afterLast($needle, bool $includeNeedle = false, int $offset = 0): self +{ +$str = clone $this; +$i = null; + +foreach ((array) $needle as $n) { +$n = (string) $n; +$j = $this->indexOfLast($n, $offset); + +if (null !== $j && $j >= $i) { +$i = $offset = $j; +$str->string = $n; +} +} + +if (null === $i) { +return $str; +} + +if (!$includeNeedle) { +$i += $str->length(); +} + +return $this->slice($i); +} + + + + +abstract public function append(string ...$suffix): self; + + + + + + +public function before($needle, bool $includeNeedle = false, int $offset = 0): self +{ +$str = clone $this; +$i = \PHP_INT_MAX; + +foreach ((array) $needle as $n) { +$n = (string) $n; +$j = $this->indexOf($n, $offset); + +if (null !== $j && $j < $i) { +$i = $j; +$str->string = $n; +} +} + +if (\PHP_INT_MAX === $i) { +return $str; +} + +if ($includeNeedle) { +$i += $str->length(); +} + +return $this->slice(0, $i); +} + + + + + + +public function beforeLast($needle, bool $includeNeedle = false, int $offset = 0): self +{ +$str = clone $this; +$i = null; + +foreach ((array) $needle as $n) { +$n = (string) $n; +$j = $this->indexOfLast($n, $offset); + +if (null !== $j && $j >= $i) { +$i = $offset = $j; +$str->string = $n; +} +} + +if (null === $i) { +return $str; +} + +if ($includeNeedle) { +$i += $str->length(); +} + +return $this->slice(0, $i); +} + + + + +public function bytesAt(int $offset): array +{ +$str = $this->slice($offset, 1); + +return '' === $str->string ? [] : array_values(unpack('C*', $str->string)); +} + + + + +abstract public function camel(): self; + + + + +abstract public function chunk(int $length = 1): array; + + + + +public function collapseWhitespace(): self +{ +$str = clone $this; +$str->string = trim(preg_replace("/(?:[ \n\r\t\x0C]{2,}+|[\n\r\t\x0C])/", ' ', $str->string), " \n\r\t\x0C"); + +return $str; +} + + + + +public function containsAny($needle): bool +{ +return null !== $this->indexOf($needle); +} + + + + +public function endsWith($suffix): bool +{ +if (!\is_array($suffix) && !$suffix instanceof \Traversable) { +throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); +} + +foreach ($suffix as $s) { +if ($this->endsWith((string) $s)) { +return true; +} +} + +return false; +} + + + + +public function ensureEnd(string $suffix): self +{ +if (!$this->endsWith($suffix)) { +return $this->append($suffix); +} + +$suffix = preg_quote($suffix); +$regex = '{('.$suffix.')(?:'.$suffix.')++$}D'; + +return $this->replaceMatches($regex.($this->ignoreCase ? 'i' : ''), '$1'); +} + + + + +public function ensureStart(string $prefix): self +{ +$prefix = new static($prefix); + +if (!$this->startsWith($prefix)) { +return $this->prepend($prefix); +} + +$str = clone $this; +$i = $prefixLen = $prefix->length(); + +while ($this->indexOf($prefix, $i) === $i) { +$str = $str->slice($prefixLen); +$i += $prefixLen; +} + +return $str; +} + + + + +public function equalsTo($string): bool +{ +if (!\is_array($string) && !$string instanceof \Traversable) { +throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); +} + +foreach ($string as $s) { +if ($this->equalsTo((string) $s)) { +return true; +} +} + +return false; +} + + + + +abstract public function folded(): self; + + + + +public function ignoreCase(): self +{ +$str = clone $this; +$str->ignoreCase = true; + +return $str; +} + + + + +public function indexOf($needle, int $offset = 0): ?int +{ +if (!\is_array($needle) && !$needle instanceof \Traversable) { +throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); +} + +$i = \PHP_INT_MAX; + +foreach ($needle as $n) { +$j = $this->indexOf((string) $n, $offset); + +if (null !== $j && $j < $i) { +$i = $j; +} +} + +return \PHP_INT_MAX === $i ? null : $i; +} + + + + +public function indexOfLast($needle, int $offset = 0): ?int +{ +if (!\is_array($needle) && !$needle instanceof \Traversable) { +throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); +} + +$i = null; + +foreach ($needle as $n) { +$j = $this->indexOfLast((string) $n, $offset); + +if (null !== $j && $j >= $i) { +$i = $offset = $j; +} +} + +return $i; +} + +public function isEmpty(): bool +{ +return '' === $this->string; +} + + + + +abstract public function join(array $strings, string $lastGlue = null): self; + +public function jsonSerialize(): string +{ +return $this->string; +} + +abstract public function length(): int; + + + + +abstract public function lower(): self; + + + + + + + + +abstract public function match(string $regexp, int $flags = 0, int $offset = 0): array; + + + + +abstract public function padBoth(int $length, string $padStr = ' '): self; + + + + +abstract public function padEnd(int $length, string $padStr = ' '): self; + + + + +abstract public function padStart(int $length, string $padStr = ' '): self; + + + + +abstract public function prepend(string ...$prefix): self; + + + + +public function repeat(int $multiplier): self +{ +if (0 > $multiplier) { +throw new InvalidArgumentException(sprintf('Multiplier must be positive, %d given.', $multiplier)); +} + +$str = clone $this; +$str->string = str_repeat($str->string, $multiplier); + +return $str; +} + + + + +abstract public function replace(string $from, string $to): self; + + + + + + +abstract public function replaceMatches(string $fromRegexp, $to): self; + + + + +abstract public function reverse(): self; + + + + +abstract public function slice(int $start = 0, int $length = null): self; + + + + +abstract public function snake(): self; + + + + +abstract public function splice(string $replacement, int $start = 0, int $length = null): self; + + + + +public function split(string $delimiter, int $limit = null, int $flags = null): array +{ +if (null === $flags) { +throw new \TypeError('Split behavior when $flags is null must be implemented by child classes.'); +} + +if ($this->ignoreCase) { +$delimiter .= 'i'; +} + +set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + +try { +if (false === $chunks = preg_split($delimiter, $this->string, $limit, $flags)) { +$lastError = preg_last_error(); + +foreach (get_defined_constants(true)['pcre'] as $k => $v) { +if ($lastError === $v && '_ERROR' === substr($k, -6)) { +throw new RuntimeException('Splitting failed with '.$k.'.'); +} +} + +throw new RuntimeException('Splitting failed with unknown error code.'); +} +} finally { +restore_error_handler(); +} + +$str = clone $this; + +if (self::PREG_SPLIT_OFFSET_CAPTURE & $flags) { +foreach ($chunks as &$chunk) { +$str->string = $chunk[0]; +$chunk[0] = clone $str; +} +} else { +foreach ($chunks as &$chunk) { +$str->string = $chunk; +$chunk = clone $str; +} +} + +return $chunks; +} + + + + +public function startsWith($prefix): bool +{ +if (!\is_array($prefix) && !$prefix instanceof \Traversable) { +throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); +} + +foreach ($prefix as $prefix) { +if ($this->startsWith((string) $prefix)) { +return true; +} +} + +return false; +} + + + + +abstract public function title(bool $allWords = false): self; + +public function toByteString(string $toEncoding = null): ByteString +{ +$b = new ByteString(); + +$toEncoding = \in_array($toEncoding, ['utf8', 'utf-8', 'UTF8'], true) ? 'UTF-8' : $toEncoding; + +if (null === $toEncoding || $toEncoding === $fromEncoding = $this instanceof AbstractUnicodeString || preg_match('//u', $b->string) ? 'UTF-8' : 'Windows-1252') { +$b->string = $this->string; + +return $b; +} + +set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + +try { +try { +$b->string = mb_convert_encoding($this->string, $toEncoding, 'UTF-8'); +} catch (InvalidArgumentException $e) { +if (!\function_exists('iconv')) { +throw $e; +} + +$b->string = iconv('UTF-8', $toEncoding, $this->string); +} +} finally { +restore_error_handler(); +} + +return $b; +} + +public function toCodePointString(): CodePointString +{ +return new CodePointString($this->string); +} + +public function toString(): string +{ +return $this->string; +} + +public function toUnicodeString(): UnicodeString +{ +return new UnicodeString($this->string); +} + + + + +abstract public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; + + + + +abstract public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; + + + + + + +public function trimPrefix($prefix): self +{ +if (\is_array($prefix) || $prefix instanceof \Traversable) { +foreach ($prefix as $s) { +$t = $this->trimPrefix($s); + +if ($t->string !== $this->string) { +return $t; +} +} + +return clone $this; +} + +$str = clone $this; + +if ($prefix instanceof self) { +$prefix = $prefix->string; +} else { +$prefix = (string) $prefix; +} + +if ('' !== $prefix && \strlen($this->string) >= \strlen($prefix) && 0 === substr_compare($this->string, $prefix, 0, \strlen($prefix), $this->ignoreCase)) { +$str->string = substr($this->string, \strlen($prefix)); +} + +return $str; +} + + + + +abstract public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; + + + + + + +public function trimSuffix($suffix): self +{ +if (\is_array($suffix) || $suffix instanceof \Traversable) { +foreach ($suffix as $s) { +$t = $this->trimSuffix($s); + +if ($t->string !== $this->string) { +return $t; +} +} + +return clone $this; +} + +$str = clone $this; + +if ($suffix instanceof self) { +$suffix = $suffix->string; +} else { +$suffix = (string) $suffix; +} + +if ('' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase)) { +$str->string = substr($this->string, 0, -\strlen($suffix)); +} + +return $str; +} + + + + +public function truncate(int $length, string $ellipsis = '', bool $cut = true): self +{ +$stringLength = $this->length(); + +if ($stringLength <= $length) { +return clone $this; +} + +$ellipsisLength = '' !== $ellipsis ? (new static($ellipsis))->length() : 0; + +if ($length < $ellipsisLength) { +$ellipsisLength = 0; +} + +if (!$cut) { +if (null === $length = $this->indexOf([' ', "\r", "\n", "\t"], ($length ?: 1) - 1)) { +return clone $this; +} + +$length += $ellipsisLength; +} + +$str = $this->slice(0, $length - $ellipsisLength); + +return $ellipsisLength ? $str->trimEnd()->append($ellipsis) : $str; +} + + + + +abstract public function upper(): self; + + + + +abstract public function width(bool $ignoreAnsiDecoration = true): int; + + + + +public function wordwrap(int $width = 75, string $break = "\n", bool $cut = false): self +{ +$lines = '' !== $break ? $this->split($break) : [clone $this]; +$chars = []; +$mask = ''; + +if (1 === \count($lines) && '' === $lines[0]->string) { +return $lines[0]; +} + +foreach ($lines as $i => $line) { +if ($i) { +$chars[] = $break; +$mask .= '#'; +} + +foreach ($line->chunk() as $char) { +$chars[] = $char->string; +$mask .= ' ' === $char->string ? ' ' : '?'; +} +} + +$string = ''; +$j = 0; +$b = $i = -1; +$mask = wordwrap($mask, $width, '#', $cut); + +while (false !== $b = strpos($mask, '#', $b + 1)) { +for (++$i; $i < $b; ++$i) { +$string .= $chars[$j]; +unset($chars[$j++]); +} + +if ($break === $chars[$j] || ' ' === $chars[$j]) { +unset($chars[$j++]); +} + +$string .= $break; +} + +$str = clone $this; +$str->string = $string.implode('', $chars); + +return $str; +} + +public function __sleep(): array +{ +return ['string']; +} + +public function __clone() +{ +$this->ignoreCase = false; +} + +public function __toString(): string +{ +return $this->string; +} +} diff --git a/composer/vendor/symfony/string/AbstractUnicodeString.php b/composer/vendor/symfony/string/AbstractUnicodeString.php new file mode 100644 index 000000000..9ab84ac87 --- /dev/null +++ b/composer/vendor/symfony/string/AbstractUnicodeString.php @@ -0,0 +1,623 @@ +>', '<', '>', '-', '-', '-', '-', '-', '-', '-', '-', '-', '||', '/', '[', ']', '*', ',', '.', '<', '>', '<<', '>>', '[', ']', '[', ']', '[', ']', ',', '.', '[', ']', '<<', '>>', '<', '>', ',', '[', ']', '((', '))', '.', ',', '*', '/', '-', '/', '\\', '|', '||', '<<', '>>', '((', '))']; + +private static $transliterators = []; +private static $tableZero; +private static $tableWide; + + + + +public static function fromCodePoints(int ...$codes): self +{ +$string = ''; + +foreach ($codes as $code) { +if (0x80 > $code %= 0x200000) { +$string .= \chr($code); +} elseif (0x800 > $code) { +$string .= \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); +} elseif (0x10000 > $code) { +$string .= \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); +} else { +$string .= \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); +} +} + +return new static($string); +} + + + + + + + + +public function ascii(array $rules = []): self +{ +$str = clone $this; +$s = $str->string; +$str->string = ''; + +array_unshift($rules, 'nfd'); +$rules[] = 'latin-ascii'; + +if (\function_exists('transliterator_transliterate')) { +$rules[] = 'any-latin/bgn'; +} + +$rules[] = 'nfkd'; +$rules[] = '[:nonspacing mark:] remove'; + +while (\strlen($s) - 1 > $i = strspn($s, self::ASCII)) { +if (0 < --$i) { +$str->string .= substr($s, 0, $i); +$s = substr($s, $i); +} + +if (!$rule = array_shift($rules)) { +$rules = []; +} + +if ($rule instanceof \Transliterator) { +$s = $rule->transliterate($s); +} elseif ($rule instanceof \Closure) { +$s = $rule($s); +} elseif ($rule) { +if ('nfd' === $rule = strtolower($rule)) { +normalizer_is_normalized($s, self::NFD) ?: $s = normalizer_normalize($s, self::NFD); +} elseif ('nfkd' === $rule) { +normalizer_is_normalized($s, self::NFKD) ?: $s = normalizer_normalize($s, self::NFKD); +} elseif ('[:nonspacing mark:] remove' === $rule) { +$s = preg_replace('/\p{Mn}++/u', '', $s); +} elseif ('latin-ascii' === $rule) { +$s = str_replace(self::TRANSLIT_FROM, self::TRANSLIT_TO, $s); +} elseif ('de-ascii' === $rule) { +$s = preg_replace("/([AUO])\u{0308}(?=\p{Ll})/u", '$1e', $s); +$s = str_replace(["a\u{0308}", "o\u{0308}", "u\u{0308}", "A\u{0308}", "O\u{0308}", "U\u{0308}"], ['ae', 'oe', 'ue', 'AE', 'OE', 'UE'], $s); +} elseif (\function_exists('transliterator_transliterate')) { +if (null === $transliterator = self::$transliterators[$rule] ?? self::$transliterators[$rule] = \Transliterator::create($rule)) { +if ('any-latin/bgn' === $rule) { +$rule = 'any-latin'; +$transliterator = self::$transliterators[$rule] ?? self::$transliterators[$rule] = \Transliterator::create($rule); +} + +if (null === $transliterator) { +throw new InvalidArgumentException(sprintf('Unknown transliteration rule "%s".', $rule)); +} + +self::$transliterators['any-latin/bgn'] = $transliterator; +} + +$s = $transliterator->transliterate($s); +} +} elseif (!\function_exists('iconv')) { +$s = preg_replace('/[^\x00-\x7F]/u', '?', $s); +} else { +$s = @preg_replace_callback('/[^\x00-\x7F]/u', static function ($c) { +$c = (string) iconv('UTF-8', 'ASCII//TRANSLIT', $c[0]); + +if ('' === $c && '' === iconv('UTF-8', 'ASCII//TRANSLIT', '²')) { +throw new \LogicException(sprintf('"%s" requires a translit-able iconv implementation, try installing "gnu-libiconv" if you\'re using Alpine Linux.', static::class)); +} + +return 1 < \strlen($c) ? ltrim($c, '\'`"^~') : ('' !== $c ? $c : '?'); +}, $s); +} +} + +$str->string .= $s; + +return $str; +} + +public function camel(): parent +{ +$str = clone $this; +$str->string = str_replace(' ', '', preg_replace_callback('/\b.(?![A-Z]{2,})/u', static function ($m) use (&$i) { +return 1 === ++$i ? ('İ' === $m[0] ? 'i̇' : mb_strtolower($m[0], 'UTF-8')) : mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); +}, preg_replace('/[^\pL0-9]++/u', ' ', $this->string))); + +return $str; +} + + + + +public function codePointsAt(int $offset): array +{ +$str = $this->slice($offset, 1); + +if ('' === $str->string) { +return []; +} + +$codePoints = []; + +foreach (preg_split('//u', $str->string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { +$codePoints[] = mb_ord($c, 'UTF-8'); +} + +return $codePoints; +} + +public function folded(bool $compat = true): parent +{ +$str = clone $this; + +if (!$compat || \PHP_VERSION_ID < 70300 || !\defined('Normalizer::NFKC_CF')) { +$str->string = normalizer_normalize($str->string, $compat ? \Normalizer::NFKC : \Normalizer::NFC); +$str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $this->string), 'UTF-8'); +} else { +$str->string = normalizer_normalize($str->string, \Normalizer::NFKC_CF); +} + +return $str; +} + +public function join(array $strings, string $lastGlue = null): parent +{ +$str = clone $this; + +$tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; +$str->string = implode($this->string, $strings).$tail; + +if (!preg_match('//u', $str->string)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +return $str; +} + +public function lower(): parent +{ +$str = clone $this; +$str->string = mb_strtolower(str_replace('İ', 'i̇', $str->string), 'UTF-8'); + +return $str; +} + +public function match(string $regexp, int $flags = 0, int $offset = 0): array +{ +$match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; + +if ($this->ignoreCase) { +$regexp .= 'i'; +} + +set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + +try { +if (false === $match($regexp.'u', $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { +$lastError = preg_last_error(); + +foreach (get_defined_constants(true)['pcre'] as $k => $v) { +if ($lastError === $v && '_ERROR' === substr($k, -6)) { +throw new RuntimeException('Matching failed with '.$k.'.'); +} +} + +throw new RuntimeException('Matching failed with unknown error code.'); +} +} finally { +restore_error_handler(); +} + +return $matches; +} + + + + +public function normalize(int $form = self::NFC): self +{ +if (!\in_array($form, [self::NFC, self::NFD, self::NFKC, self::NFKD])) { +throw new InvalidArgumentException('Unsupported normalization form.'); +} + +$str = clone $this; +normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); + +return $str; +} + +public function padBoth(int $length, string $padStr = ' '): parent +{ +if ('' === $padStr || !preg_match('//u', $padStr)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +$pad = clone $this; +$pad->string = $padStr; + +return $this->pad($length, $pad, \STR_PAD_BOTH); +} + +public function padEnd(int $length, string $padStr = ' '): parent +{ +if ('' === $padStr || !preg_match('//u', $padStr)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +$pad = clone $this; +$pad->string = $padStr; + +return $this->pad($length, $pad, \STR_PAD_RIGHT); +} + +public function padStart(int $length, string $padStr = ' '): parent +{ +if ('' === $padStr || !preg_match('//u', $padStr)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +$pad = clone $this; +$pad->string = $padStr; + +return $this->pad($length, $pad, \STR_PAD_LEFT); +} + +public function replaceMatches(string $fromRegexp, $to): parent +{ +if ($this->ignoreCase) { +$fromRegexp .= 'i'; +} + +if (\is_array($to) || $to instanceof \Closure) { +if (!\is_callable($to)) { +throw new \TypeError(sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); +} + +$replace = 'preg_replace_callback'; +$to = static function (array $m) use ($to): string { +$to = $to($m); + +if ('' !== $to && (!\is_string($to) || !preg_match('//u', $to))) { +throw new InvalidArgumentException('Replace callback must return a valid UTF-8 string.'); +} + +return $to; +}; +} elseif ('' !== $to && !preg_match('//u', $to)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} else { +$replace = 'preg_replace'; +} + +set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + +try { +if (null === $string = $replace($fromRegexp.'u', $to, $this->string)) { +$lastError = preg_last_error(); + +foreach (get_defined_constants(true)['pcre'] as $k => $v) { +if ($lastError === $v && '_ERROR' === substr($k, -6)) { +throw new RuntimeException('Matching failed with '.$k.'.'); +} +} + +throw new RuntimeException('Matching failed with unknown error code.'); +} +} finally { +restore_error_handler(); +} + +$str = clone $this; +$str->string = $string; + +return $str; +} + +public function reverse(): parent +{ +$str = clone $this; +$str->string = implode('', array_reverse(preg_split('/(\X)/u', $str->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY))); + +return $str; +} + +public function snake(): parent +{ +$str = $this->camel(); +$str->string = mb_strtolower(preg_replace(['/(\p{Lu}+)(\p{Lu}\p{Ll})/u', '/([\p{Ll}0-9])(\p{Lu})/u'], '\1_\2', $str->string), 'UTF-8'); + +return $str; +} + +public function title(bool $allWords = false): parent +{ +$str = clone $this; + +$limit = $allWords ? -1 : 1; + +$str->string = preg_replace_callback('/\b./u', static function (array $m): string { +return mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); +}, $str->string, $limit); + +return $str; +} + +public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent +{ +if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { +throw new InvalidArgumentException('Invalid UTF-8 chars.'); +} +$chars = preg_quote($chars); + +$str = clone $this; +$str->string = preg_replace("{^[$chars]++|[$chars]++$}uD", '', $str->string); + +return $str; +} + +public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent +{ +if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { +throw new InvalidArgumentException('Invalid UTF-8 chars.'); +} +$chars = preg_quote($chars); + +$str = clone $this; +$str->string = preg_replace("{[$chars]++$}uD", '', $str->string); + +return $str; +} + +public function trimPrefix($prefix): parent +{ +if (!$this->ignoreCase) { +return parent::trimPrefix($prefix); +} + +$str = clone $this; + +if ($prefix instanceof \Traversable) { +$prefix = iterator_to_array($prefix, false); +} elseif ($prefix instanceof parent) { +$prefix = $prefix->string; +} + +$prefix = implode('|', array_map('preg_quote', (array) $prefix)); +$str->string = preg_replace("{^(?:$prefix)}iuD", '', $this->string); + +return $str; +} + +public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent +{ +if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { +throw new InvalidArgumentException('Invalid UTF-8 chars.'); +} +$chars = preg_quote($chars); + +$str = clone $this; +$str->string = preg_replace("{^[$chars]++}uD", '', $str->string); + +return $str; +} + +public function trimSuffix($suffix): parent +{ +if (!$this->ignoreCase) { +return parent::trimSuffix($suffix); +} + +$str = clone $this; + +if ($suffix instanceof \Traversable) { +$suffix = iterator_to_array($suffix, false); +} elseif ($suffix instanceof parent) { +$suffix = $suffix->string; +} + +$suffix = implode('|', array_map('preg_quote', (array) $suffix)); +$str->string = preg_replace("{(?:$suffix)$}iuD", '', $this->string); + +return $str; +} + +public function upper(): parent +{ +$str = clone $this; +$str->string = mb_strtoupper($str->string, 'UTF-8'); + +if (\PHP_VERSION_ID < 70300) { +$str->string = str_replace(self::UPPER_FROM, self::UPPER_TO, $str->string); +} + +return $str; +} + +public function width(bool $ignoreAnsiDecoration = true): int +{ +$width = 0; +$s = str_replace(["\x00", "\x05", "\x07"], '', $this->string); + +if (false !== strpos($s, "\r")) { +$s = str_replace(["\r\n", "\r"], "\n", $s); +} + +if (!$ignoreAnsiDecoration) { +$s = preg_replace('/[\p{Cc}\x7F]++/u', '', $s); +} + +foreach (explode("\n", $s) as $s) { +if ($ignoreAnsiDecoration) { +$s = preg_replace('/(?:\x1B(?: + \[ [\x30-\x3F]*+ [\x20-\x2F]*+ [\x40-\x7E] + | [P\]X^_] .*? \x1B\\\\ + | [\x41-\x7E] + )|[\p{Cc}\x7F]++)/xu', '', $s); +} + +$lineWidth = $this->wcswidth($s); + +if ($lineWidth > $width) { +$width = $lineWidth; +} +} + +return $width; +} + + + + +private function pad(int $len, self $pad, int $type): parent +{ +$sLen = $this->length(); + +if ($len <= $sLen) { +return clone $this; +} + +$padLen = $pad->length(); +$freeLen = $len - $sLen; +$len = $freeLen % $padLen; + +switch ($type) { +case \STR_PAD_RIGHT: +return $this->append(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + +case \STR_PAD_LEFT: +return $this->prepend(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + +case \STR_PAD_BOTH: +$freeLen /= 2; + +$rightLen = ceil($freeLen); +$len = $rightLen % $padLen; +$str = $this->append(str_repeat($pad->string, intdiv($rightLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + +$leftLen = floor($freeLen); +$len = $leftLen % $padLen; + +return $str->prepend(str_repeat($pad->string, intdiv($leftLen, $padLen)).($len ? $pad->slice(0, $len) : '')); + +default: +throw new InvalidArgumentException('Invalid padding type.'); +} +} + + + + +private function wcswidth(string $string): int +{ +$width = 0; + +foreach (preg_split('//u', $string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { +$codePoint = mb_ord($c, 'UTF-8'); + +if (0 === $codePoint +|| 0x034F === $codePoint +|| (0x200B <= $codePoint && 0x200F >= $codePoint) +|| 0x2028 === $codePoint +|| 0x2029 === $codePoint +|| (0x202A <= $codePoint && 0x202E >= $codePoint) +|| (0x2060 <= $codePoint && 0x2063 >= $codePoint) +) { +continue; +} + + +if (32 > $codePoint +|| (0x07F <= $codePoint && 0x0A0 > $codePoint) +) { +return -1; +} + +if (null === self::$tableZero) { +self::$tableZero = require __DIR__.'/Resources/data/wcswidth_table_zero.php'; +} + +if ($codePoint >= self::$tableZero[0][0] && $codePoint <= self::$tableZero[$ubound = \count(self::$tableZero) - 1][1]) { +$lbound = 0; +while ($ubound >= $lbound) { +$mid = floor(($lbound + $ubound) / 2); + +if ($codePoint > self::$tableZero[$mid][1]) { +$lbound = $mid + 1; +} elseif ($codePoint < self::$tableZero[$mid][0]) { +$ubound = $mid - 1; +} else { +continue 2; +} +} +} + +if (null === self::$tableWide) { +self::$tableWide = require __DIR__.'/Resources/data/wcswidth_table_wide.php'; +} + +if ($codePoint >= self::$tableWide[0][0] && $codePoint <= self::$tableWide[$ubound = \count(self::$tableWide) - 1][1]) { +$lbound = 0; +while ($ubound >= $lbound) { +$mid = floor(($lbound + $ubound) / 2); + +if ($codePoint > self::$tableWide[$mid][1]) { +$lbound = $mid + 1; +} elseif ($codePoint < self::$tableWide[$mid][0]) { +$ubound = $mid - 1; +} else { +$width += 2; + +continue 2; +} +} +} + +++$width; +} + +return $width; +} +} diff --git a/composer/vendor/symfony/string/ByteString.php b/composer/vendor/symfony/string/ByteString.php new file mode 100644 index 000000000..f4f6d6ff3 --- /dev/null +++ b/composer/vendor/symfony/string/ByteString.php @@ -0,0 +1,509 @@ +string = $string; +} + + + + + + + + + + + +public static function fromRandom(int $length = 16, string $alphabet = null): self +{ +if ($length <= 0) { +throw new InvalidArgumentException(sprintf('A strictly positive length is expected, "%d" given.', $length)); +} + +$alphabet = $alphabet ?? self::ALPHABET_ALPHANUMERIC; +$alphabetSize = \strlen($alphabet); +$bits = (int) ceil(log($alphabetSize, 2.0)); +if ($bits <= 0 || $bits > 56) { +throw new InvalidArgumentException('The length of the alphabet must in the [2^1, 2^56] range.'); +} + +$ret = ''; +while ($length > 0) { +$urandomLength = (int) ceil(2 * $length * $bits / 8.0); +$data = random_bytes($urandomLength); +$unpackedData = 0; +$unpackedBits = 0; +for ($i = 0; $i < $urandomLength && $length > 0; ++$i) { + +$unpackedData = ($unpackedData << 8) | \ord($data[$i]); +$unpackedBits += 8; + + + +for (; $unpackedBits >= $bits && $length > 0; $unpackedBits -= $bits) { +$index = ($unpackedData & ((1 << $bits) - 1)); +$unpackedData >>= $bits; + + + +if ($index < $alphabetSize) { +$ret .= $alphabet[$index]; +--$length; +} +} +} +} + +return new static($ret); +} + +public function bytesAt(int $offset): array +{ +$str = $this->string[$offset] ?? ''; + +return '' === $str ? [] : [\ord($str)]; +} + +public function append(string ...$suffix): parent +{ +$str = clone $this; +$str->string .= 1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix); + +return $str; +} + +public function camel(): parent +{ +$str = clone $this; + +$parts = explode(' ', trim(ucwords(preg_replace('/[^a-zA-Z0-9\x7f-\xff]++/', ' ', $this->string)))); +$parts[0] = 1 !== \strlen($parts[0]) && ctype_upper($parts[0]) ? $parts[0] : lcfirst($parts[0]); +$str->string = implode('', $parts); + +return $str; +} + +public function chunk(int $length = 1): array +{ +if (1 > $length) { +throw new InvalidArgumentException('The chunk length must be greater than zero.'); +} + +if ('' === $this->string) { +return []; +} + +$str = clone $this; +$chunks = []; + +foreach (str_split($this->string, $length) as $chunk) { +$str->string = $chunk; +$chunks[] = clone $str; +} + +return $chunks; +} + +public function endsWith($suffix): bool +{ +if ($suffix instanceof parent) { +$suffix = $suffix->string; +} elseif (\is_array($suffix) || $suffix instanceof \Traversable) { +return parent::endsWith($suffix); +} else { +$suffix = (string) $suffix; +} + +return '' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase); +} + +public function equalsTo($string): bool +{ +if ($string instanceof parent) { +$string = $string->string; +} elseif (\is_array($string) || $string instanceof \Traversable) { +return parent::equalsTo($string); +} else { +$string = (string) $string; +} + +if ('' !== $string && $this->ignoreCase) { +return 0 === strcasecmp($string, $this->string); +} + +return $string === $this->string; +} + +public function folded(): parent +{ +$str = clone $this; +$str->string = strtolower($str->string); + +return $str; +} + +public function indexOf($needle, int $offset = 0): ?int +{ +if ($needle instanceof parent) { +$needle = $needle->string; +} elseif (\is_array($needle) || $needle instanceof \Traversable) { +return parent::indexOf($needle, $offset); +} else { +$needle = (string) $needle; +} + +if ('' === $needle) { +return null; +} + +$i = $this->ignoreCase ? stripos($this->string, $needle, $offset) : strpos($this->string, $needle, $offset); + +return false === $i ? null : $i; +} + +public function indexOfLast($needle, int $offset = 0): ?int +{ +if ($needle instanceof parent) { +$needle = $needle->string; +} elseif (\is_array($needle) || $needle instanceof \Traversable) { +return parent::indexOfLast($needle, $offset); +} else { +$needle = (string) $needle; +} + +if ('' === $needle) { +return null; +} + +$i = $this->ignoreCase ? strripos($this->string, $needle, $offset) : strrpos($this->string, $needle, $offset); + +return false === $i ? null : $i; +} + +public function isUtf8(): bool +{ +return '' === $this->string || preg_match('//u', $this->string); +} + +public function join(array $strings, string $lastGlue = null): parent +{ +$str = clone $this; + +$tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; +$str->string = implode($this->string, $strings).$tail; + +return $str; +} + +public function length(): int +{ +return \strlen($this->string); +} + +public function lower(): parent +{ +$str = clone $this; +$str->string = strtolower($str->string); + +return $str; +} + +public function match(string $regexp, int $flags = 0, int $offset = 0): array +{ +$match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; + +if ($this->ignoreCase) { +$regexp .= 'i'; +} + +set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + +try { +if (false === $match($regexp, $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { +$lastError = preg_last_error(); + +foreach (get_defined_constants(true)['pcre'] as $k => $v) { +if ($lastError === $v && '_ERROR' === substr($k, -6)) { +throw new RuntimeException('Matching failed with '.$k.'.'); +} +} + +throw new RuntimeException('Matching failed with unknown error code.'); +} +} finally { +restore_error_handler(); +} + +return $matches; +} + +public function padBoth(int $length, string $padStr = ' '): parent +{ +$str = clone $this; +$str->string = str_pad($this->string, $length, $padStr, \STR_PAD_BOTH); + +return $str; +} + +public function padEnd(int $length, string $padStr = ' '): parent +{ +$str = clone $this; +$str->string = str_pad($this->string, $length, $padStr, \STR_PAD_RIGHT); + +return $str; +} + +public function padStart(int $length, string $padStr = ' '): parent +{ +$str = clone $this; +$str->string = str_pad($this->string, $length, $padStr, \STR_PAD_LEFT); + +return $str; +} + +public function prepend(string ...$prefix): parent +{ +$str = clone $this; +$str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$str->string; + +return $str; +} + +public function replace(string $from, string $to): parent +{ +$str = clone $this; + +if ('' !== $from) { +$str->string = $this->ignoreCase ? str_ireplace($from, $to, $this->string) : str_replace($from, $to, $this->string); +} + +return $str; +} + +public function replaceMatches(string $fromRegexp, $to): parent +{ +if ($this->ignoreCase) { +$fromRegexp .= 'i'; +} + +if (\is_array($to)) { +if (!\is_callable($to)) { +throw new \TypeError(sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); +} + +$replace = 'preg_replace_callback'; +} else { +$replace = $to instanceof \Closure ? 'preg_replace_callback' : 'preg_replace'; +} + +set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + +try { +if (null === $string = $replace($fromRegexp, $to, $this->string)) { +$lastError = preg_last_error(); + +foreach (get_defined_constants(true)['pcre'] as $k => $v) { +if ($lastError === $v && '_ERROR' === substr($k, -6)) { +throw new RuntimeException('Matching failed with '.$k.'.'); +} +} + +throw new RuntimeException('Matching failed with unknown error code.'); +} +} finally { +restore_error_handler(); +} + +$str = clone $this; +$str->string = $string; + +return $str; +} + +public function reverse(): parent +{ +$str = clone $this; +$str->string = strrev($str->string); + +return $str; +} + +public function slice(int $start = 0, int $length = null): parent +{ +$str = clone $this; +$str->string = (string) substr($this->string, $start, $length ?? \PHP_INT_MAX); + +return $str; +} + +public function snake(): parent +{ +$str = $this->camel(); +$str->string = strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], '\1_\2', $str->string)); + +return $str; +} + +public function splice(string $replacement, int $start = 0, int $length = null): parent +{ +$str = clone $this; +$str->string = substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); + +return $str; +} + +public function split(string $delimiter, int $limit = null, int $flags = null): array +{ +if (1 > $limit = $limit ?? \PHP_INT_MAX) { +throw new InvalidArgumentException('Split limit must be a positive integer.'); +} + +if ('' === $delimiter) { +throw new InvalidArgumentException('Split delimiter is empty.'); +} + +if (null !== $flags) { +return parent::split($delimiter, $limit, $flags); +} + +$str = clone $this; +$chunks = $this->ignoreCase +? preg_split('{'.preg_quote($delimiter).'}iD', $this->string, $limit) +: explode($delimiter, $this->string, $limit); + +foreach ($chunks as &$chunk) { +$str->string = $chunk; +$chunk = clone $str; +} + +return $chunks; +} + +public function startsWith($prefix): bool +{ +if ($prefix instanceof parent) { +$prefix = $prefix->string; +} elseif (!\is_string($prefix)) { +return parent::startsWith($prefix); +} + +return '' !== $prefix && 0 === ($this->ignoreCase ? strncasecmp($this->string, $prefix, \strlen($prefix)) : strncmp($this->string, $prefix, \strlen($prefix))); +} + +public function title(bool $allWords = false): parent +{ +$str = clone $this; +$str->string = $allWords ? ucwords($str->string) : ucfirst($str->string); + +return $str; +} + +public function toUnicodeString(string $fromEncoding = null): UnicodeString +{ +return new UnicodeString($this->toCodePointString($fromEncoding)->string); +} + +public function toCodePointString(string $fromEncoding = null): CodePointString +{ +$u = new CodePointString(); + +if (\in_array($fromEncoding, [null, 'utf8', 'utf-8', 'UTF8', 'UTF-8'], true) && preg_match('//u', $this->string)) { +$u->string = $this->string; + +return $u; +} + +set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); + +try { +try { +$validEncoding = false !== mb_detect_encoding($this->string, $fromEncoding ?? 'Windows-1252', true); +} catch (InvalidArgumentException $e) { +if (!\function_exists('iconv')) { +throw $e; +} + +$u->string = iconv($fromEncoding ?? 'Windows-1252', 'UTF-8', $this->string); + +return $u; +} +} finally { +restore_error_handler(); +} + +if (!$validEncoding) { +throw new InvalidArgumentException(sprintf('Invalid "%s" string.', $fromEncoding ?? 'Windows-1252')); +} + +$u->string = mb_convert_encoding($this->string, 'UTF-8', $fromEncoding ?? 'Windows-1252'); + +return $u; +} + +public function trim(string $chars = " \t\n\r\0\x0B\x0C"): parent +{ +$str = clone $this; +$str->string = trim($str->string, $chars); + +return $str; +} + +public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C"): parent +{ +$str = clone $this; +$str->string = rtrim($str->string, $chars); + +return $str; +} + +public function trimStart(string $chars = " \t\n\r\0\x0B\x0C"): parent +{ +$str = clone $this; +$str->string = ltrim($str->string, $chars); + +return $str; +} + +public function upper(): parent +{ +$str = clone $this; +$str->string = strtoupper($str->string); + +return $str; +} + +public function width(bool $ignoreAnsiDecoration = true): int +{ +$string = preg_match('//u', $this->string) ? $this->string : preg_replace('/[\x80-\xFF]/', '?', $this->string); + +return (new CodePointString($string))->width($ignoreAnsiDecoration); +} +} diff --git a/composer/vendor/symfony/string/CodePointString.php b/composer/vendor/symfony/string/CodePointString.php new file mode 100644 index 000000000..49669ba94 --- /dev/null +++ b/composer/vendor/symfony/string/CodePointString.php @@ -0,0 +1,270 @@ +string = $string; +} + +public function append(string ...$suffix): AbstractString +{ +$str = clone $this; +$str->string .= 1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix); + +if (!preg_match('//u', $str->string)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +return $str; +} + +public function chunk(int $length = 1): array +{ +if (1 > $length) { +throw new InvalidArgumentException('The chunk length must be greater than zero.'); +} + +if ('' === $this->string) { +return []; +} + +$rx = '/('; +while (65535 < $length) { +$rx .= '.{65535}'; +$length -= 65535; +} +$rx .= '.{'.$length.'})/us'; + +$str = clone $this; +$chunks = []; + +foreach (preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { +$str->string = $chunk; +$chunks[] = clone $str; +} + +return $chunks; +} + +public function codePointsAt(int $offset): array +{ +$str = $offset ? $this->slice($offset, 1) : $this; + +return '' === $str->string ? [] : [mb_ord($str->string, 'UTF-8')]; +} + +public function endsWith($suffix): bool +{ +if ($suffix instanceof AbstractString) { +$suffix = $suffix->string; +} elseif (\is_array($suffix) || $suffix instanceof \Traversable) { +return parent::endsWith($suffix); +} else { +$suffix = (string) $suffix; +} + +if ('' === $suffix || !preg_match('//u', $suffix)) { +return false; +} + +if ($this->ignoreCase) { +return preg_match('{'.preg_quote($suffix).'$}iuD', $this->string); +} + +return \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix)); +} + +public function equalsTo($string): bool +{ +if ($string instanceof AbstractString) { +$string = $string->string; +} elseif (\is_array($string) || $string instanceof \Traversable) { +return parent::equalsTo($string); +} else { +$string = (string) $string; +} + +if ('' !== $string && $this->ignoreCase) { +return \strlen($string) === \strlen($this->string) && 0 === mb_stripos($this->string, $string, 0, 'UTF-8'); +} + +return $string === $this->string; +} + +public function indexOf($needle, int $offset = 0): ?int +{ +if ($needle instanceof AbstractString) { +$needle = $needle->string; +} elseif (\is_array($needle) || $needle instanceof \Traversable) { +return parent::indexOf($needle, $offset); +} else { +$needle = (string) $needle; +} + +if ('' === $needle) { +return null; +} + +$i = $this->ignoreCase ? mb_stripos($this->string, $needle, $offset, 'UTF-8') : mb_strpos($this->string, $needle, $offset, 'UTF-8'); + +return false === $i ? null : $i; +} + +public function indexOfLast($needle, int $offset = 0): ?int +{ +if ($needle instanceof AbstractString) { +$needle = $needle->string; +} elseif (\is_array($needle) || $needle instanceof \Traversable) { +return parent::indexOfLast($needle, $offset); +} else { +$needle = (string) $needle; +} + +if ('' === $needle) { +return null; +} + +$i = $this->ignoreCase ? mb_strripos($this->string, $needle, $offset, 'UTF-8') : mb_strrpos($this->string, $needle, $offset, 'UTF-8'); + +return false === $i ? null : $i; +} + +public function length(): int +{ +return mb_strlen($this->string, 'UTF-8'); +} + +public function prepend(string ...$prefix): AbstractString +{ +$str = clone $this; +$str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$this->string; + +if (!preg_match('//u', $str->string)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +return $str; +} + +public function replace(string $from, string $to): AbstractString +{ +$str = clone $this; + +if ('' === $from || !preg_match('//u', $from)) { +return $str; +} + +if ('' !== $to && !preg_match('//u', $to)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +if ($this->ignoreCase) { +$str->string = implode($to, preg_split('{'.preg_quote($from).'}iuD', $this->string)); +} else { +$str->string = str_replace($from, $to, $this->string); +} + +return $str; +} + +public function slice(int $start = 0, int $length = null): AbstractString +{ +$str = clone $this; +$str->string = mb_substr($this->string, $start, $length, 'UTF-8'); + +return $str; +} + +public function splice(string $replacement, int $start = 0, int $length = null): AbstractString +{ +if (!preg_match('//u', $replacement)) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +$str = clone $this; +$start = $start ? \strlen(mb_substr($this->string, 0, $start, 'UTF-8')) : 0; +$length = $length ? \strlen(mb_substr($this->string, $start, $length, 'UTF-8')) : $length; +$str->string = substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); + +return $str; +} + +public function split(string $delimiter, int $limit = null, int $flags = null): array +{ +if (1 > $limit = $limit ?? \PHP_INT_MAX) { +throw new InvalidArgumentException('Split limit must be a positive integer.'); +} + +if ('' === $delimiter) { +throw new InvalidArgumentException('Split delimiter is empty.'); +} + +if (null !== $flags) { +return parent::split($delimiter.'u', $limit, $flags); +} + +if (!preg_match('//u', $delimiter)) { +throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); +} + +$str = clone $this; +$chunks = $this->ignoreCase +? preg_split('{'.preg_quote($delimiter).'}iuD', $this->string, $limit) +: explode($delimiter, $this->string, $limit); + +foreach ($chunks as &$chunk) { +$str->string = $chunk; +$chunk = clone $str; +} + +return $chunks; +} + +public function startsWith($prefix): bool +{ +if ($prefix instanceof AbstractString) { +$prefix = $prefix->string; +} elseif (\is_array($prefix) || $prefix instanceof \Traversable) { +return parent::startsWith($prefix); +} else { +$prefix = (string) $prefix; +} + +if ('' === $prefix || !preg_match('//u', $prefix)) { +return false; +} + +if ($this->ignoreCase) { +return 0 === mb_stripos($this->string, $prefix, 0, 'UTF-8'); +} + +return 0 === strncmp($this->string, $prefix, \strlen($prefix)); +} +} diff --git a/composer/vendor/symfony/string/Exception/ExceptionInterface.php b/composer/vendor/symfony/string/Exception/ExceptionInterface.php new file mode 100644 index 000000000..f0744b41a --- /dev/null +++ b/composer/vendor/symfony/string/Exception/ExceptionInterface.php @@ -0,0 +1,16 @@ +isInflectedWord($plural)) { +return [$plural]; +} + +foreach (self::SINGULARIZE_REGEXP as $rule) { +[$regexp, $replace] = $rule; + +if (1 === preg_match($regexp, $plural)) { +return [preg_replace($regexp, $replace, $plural)]; +} +} + +return [$plural]; +} + + + + +public function pluralize(string $singular): array +{ +if ($this->isInflectedWord($singular)) { +return [$singular]; +} + +foreach (self::PLURALIZE_REGEXP as $rule) { +[$regexp, $replace] = $rule; + +if (1 === preg_match($regexp, $singular)) { +return [preg_replace($regexp, $replace, $singular)]; +} +} + +return [$singular.'s']; +} + +private function isInflectedWord(string $word): bool +{ +return 1 === preg_match(self::UNINFLECTED, $word); +} +} diff --git a/composer/vendor/symfony/string/Inflector/InflectorInterface.php b/composer/vendor/symfony/string/Inflector/InflectorInterface.php new file mode 100644 index 000000000..8cbac46d5 --- /dev/null +++ b/composer/vendor/symfony/string/Inflector/InflectorInterface.php @@ -0,0 +1,33 @@ += \count($callback))) { +throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a callable or a [Closure, method] lazy-callable, "%s" given.', __METHOD__, get_debug_type($callback))); +} + +$lazyString = new static(); +$lazyString->value = static function () use (&$callback, &$arguments, &$value): string { +if (null !== $arguments) { +if (!\is_callable($callback)) { +$callback[0] = $callback[0](); +$callback[1] = $callback[1] ?? '__invoke'; +} +$value = $callback(...$arguments); +$callback = self::getPrettyName($callback); +$arguments = null; +} + +return $value ?? ''; +}; + +return $lazyString; +} + + + + + + +public static function fromStringable($value): self +{ +if (!self::isStringable($value)) { +throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a scalar or a stringable object, "%s" given.', __METHOD__, get_debug_type($value))); +} + +if (\is_object($value)) { +return static::fromCallable([$value, '__toString']); +} + +$lazyString = new static(); +$lazyString->value = (string) $value; + +return $lazyString; +} + + + + +final public static function isStringable($value): bool +{ +return \is_string($value) || $value instanceof self || (\is_object($value) ? method_exists($value, '__toString') : \is_scalar($value)); +} + + + + + + + + +final public static function resolve($value): string +{ +return $value; +} + + + + +public function __toString() +{ +if (\is_string($this->value)) { +return $this->value; +} + +try { +return $this->value = ($this->value)(); +} catch (\Throwable $e) { +if (\TypeError::class === \get_class($e) && __FILE__ === $e->getFile()) { +$type = explode(', ', $e->getMessage()); +$type = substr(array_pop($type), 0, -\strlen(' returned')); +$r = new \ReflectionFunction($this->value); +$callback = $r->getStaticVariables()['callback']; + +$e = new \TypeError(sprintf('Return value of %s() passed to %s::fromCallable() must be of the type string, %s returned.', $callback, static::class, $type)); +} + +if (\PHP_VERSION_ID < 70400) { + +return trigger_error($e, \E_USER_ERROR); +} + +throw $e; +} +} + +public function __sleep(): array +{ +$this->__toString(); + +return ['value']; +} + +public function jsonSerialize(): string +{ +return $this->__toString(); +} + +private function __construct() +{ +} + +private static function getPrettyName(callable $callback): string +{ +if (\is_string($callback)) { +return $callback; +} + +if (\is_array($callback)) { +$class = \is_object($callback[0]) ? get_debug_type($callback[0]) : $callback[0]; +$method = $callback[1]; +} elseif ($callback instanceof \Closure) { +$r = new \ReflectionFunction($callback); + +if (false !== strpos($r->name, '{closure}') || !$class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass()) { +return $r->name; +} + +$class = $class->name; +$method = $r->name; +} else { +$class = get_debug_type($callback); +$method = '__invoke'; +} + +return $class.'::'.$method; +} +} diff --git a/composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php b/composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php new file mode 100644 index 000000000..8c1f2e111 --- /dev/null +++ b/composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php @@ -0,0 +1,1143 @@ + 'Amharic-Latin', +'ar' => 'Arabic-Latin', +'az' => 'Azerbaijani-Latin', +'be' => 'Belarusian-Latin', +'bg' => 'Bulgarian-Latin', +'bn' => 'Bengali-Latin', +'de' => 'de-ASCII', +'el' => 'Greek-Latin', +'fa' => 'Persian-Latin', +'he' => 'Hebrew-Latin', +'hy' => 'Armenian-Latin', +'ka' => 'Georgian-Latin', +'kk' => 'Kazakh-Latin', +'ky' => 'Kirghiz-Latin', +'ko' => 'Korean-Latin', +'mk' => 'Macedonian-Latin', +'mn' => 'Mongolian-Latin', +'or' => 'Oriya-Latin', +'ps' => 'Pashto-Latin', +'ru' => 'Russian-Latin', +'sr' => 'Serbian-Latin', +'sr_Cyrl' => 'Serbian-Latin', +'th' => 'Thai-Latin', +'tk' => 'Turkmen-Latin', +'uk' => 'Ukrainian-Latin', +'uz' => 'Uzbek-Latin', +'zh' => 'Han-Latin', +]; + +private $defaultLocale; +private $symbolsMap = [ +'en' => ['@' => 'at', '&' => 'and'], +]; + + + + + + +private $transliterators = []; + + + + +public function __construct(string $defaultLocale = null, $symbolsMap = null) +{ +if (null !== $symbolsMap && !\is_array($symbolsMap) && !$symbolsMap instanceof \Closure) { +throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be array, Closure or null, "%s" given.', __METHOD__, \gettype($symbolsMap))); +} + +$this->defaultLocale = $defaultLocale; +$this->symbolsMap = $symbolsMap ?? $this->symbolsMap; +} + + + + +public function setLocale($locale) +{ +$this->defaultLocale = $locale; +} + + + + +public function getLocale() +{ +return $this->defaultLocale; +} + + + + +public function slug(string $string, string $separator = '-', string $locale = null): AbstractUnicodeString +{ +$locale = $locale ?? $this->defaultLocale; + +$transliterator = []; +if ($locale && ('de' === $locale || 0 === strpos($locale, 'de_'))) { + +$transliterator = ['de-ASCII']; +} elseif (\function_exists('transliterator_transliterate') && $locale) { +$transliterator = (array) $this->createTransliterator($locale); +} + +if ($this->symbolsMap instanceof \Closure) { + + +$symbolsMap = $this->symbolsMap; +array_unshift($transliterator, static function ($s) use ($symbolsMap, $locale) { +return $symbolsMap($s, $locale); +}); +} + +$unicodeString = (new UnicodeString($string))->ascii($transliterator); + +if (\is_array($this->symbolsMap)) { +$map = null; +if (isset($this->symbolsMap[$locale])) { +$map = $this->symbolsMap[$locale]; +} else { +$parent = self::getParentLocale($locale); +if ($parent && isset($this->symbolsMap[$parent])) { +$map = $this->symbolsMap[$parent]; +} +} +if ($map) { +foreach ($map as $char => $replace) { +$unicodeString = $unicodeString->replace($char, ' '.$replace.' '); +} +} +} + +return $unicodeString +->replaceMatches('/[^A-Za-z0-9]++/', $separator) +->trim($separator) +; +} + +private function createTransliterator(string $locale): ?\Transliterator +{ +if (\array_key_exists($locale, $this->transliterators)) { +return $this->transliterators[$locale]; +} + + +if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$locale] ?? null) { +return $this->transliterators[$locale] = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); +} + + +if (!$parent = self::getParentLocale($locale)) { +return $this->transliterators[$locale] = null; +} + + +if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$parent] ?? null) { +$transliterator = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); +} + +return $this->transliterators[$locale] = $this->transliterators[$parent] = $transliterator ?? null; +} + +private static function getParentLocale(?string $locale): ?string +{ +if (!$locale) { +return null; +} +if (false === $str = strrchr($locale, '_')) { + +return null; +} + +return substr($locale, 0, -\strlen($str)); +} +} diff --git a/composer/vendor/symfony/string/Slugger/SluggerInterface.php b/composer/vendor/symfony/string/Slugger/SluggerInterface.php new file mode 100644 index 000000000..47dae83b0 --- /dev/null +++ b/composer/vendor/symfony/string/Slugger/SluggerInterface.php @@ -0,0 +1,27 @@ +string = normalizer_is_normalized($string) ? $string : normalizer_normalize($string); + +if (false === $this->string) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} +} + +public function append(string ...$suffix): AbstractString +{ +$str = clone $this; +$str->string = $this->string.(1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix)); +normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + +if (false === $str->string) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +return $str; +} + +public function chunk(int $length = 1): array +{ +if (1 > $length) { +throw new InvalidArgumentException('The chunk length must be greater than zero.'); +} + +if ('' === $this->string) { +return []; +} + +$rx = '/('; +while (65535 < $length) { +$rx .= '\X{65535}'; +$length -= 65535; +} +$rx .= '\X{'.$length.'})/u'; + +$str = clone $this; +$chunks = []; + +foreach (preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { +$str->string = $chunk; +$chunks[] = clone $str; +} + +return $chunks; +} + +public function endsWith($suffix): bool +{ +if ($suffix instanceof AbstractString) { +$suffix = $suffix->string; +} elseif (\is_array($suffix) || $suffix instanceof \Traversable) { +return parent::endsWith($suffix); +} else { +$suffix = (string) $suffix; +} + +$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; +normalizer_is_normalized($suffix, $form) ?: $suffix = normalizer_normalize($suffix, $form); + +if ('' === $suffix || false === $suffix) { +return false; +} + +if ($this->ignoreCase) { +return 0 === mb_stripos(grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)), $suffix, 0, 'UTF-8'); +} + +return $suffix === grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)); +} + +public function equalsTo($string): bool +{ +if ($string instanceof AbstractString) { +$string = $string->string; +} elseif (\is_array($string) || $string instanceof \Traversable) { +return parent::equalsTo($string); +} else { +$string = (string) $string; +} + +$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; +normalizer_is_normalized($string, $form) ?: $string = normalizer_normalize($string, $form); + +if ('' !== $string && false !== $string && $this->ignoreCase) { +return \strlen($string) === \strlen($this->string) && 0 === mb_stripos($this->string, $string, 0, 'UTF-8'); +} + +return $string === $this->string; +} + +public function indexOf($needle, int $offset = 0): ?int +{ +if ($needle instanceof AbstractString) { +$needle = $needle->string; +} elseif (\is_array($needle) || $needle instanceof \Traversable) { +return parent::indexOf($needle, $offset); +} else { +$needle = (string) $needle; +} + +$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; +normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); + +if ('' === $needle || false === $needle) { +return null; +} + +try { +$i = $this->ignoreCase ? grapheme_stripos($this->string, $needle, $offset) : grapheme_strpos($this->string, $needle, $offset); +} catch (\ValueError $e) { +return null; +} + +return false === $i ? null : $i; +} + +public function indexOfLast($needle, int $offset = 0): ?int +{ +if ($needle instanceof AbstractString) { +$needle = $needle->string; +} elseif (\is_array($needle) || $needle instanceof \Traversable) { +return parent::indexOfLast($needle, $offset); +} else { +$needle = (string) $needle; +} + +$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; +normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); + +if ('' === $needle || false === $needle) { +return null; +} + +$string = $this->string; + +if (0 > $offset) { + +if (0 > $offset += grapheme_strlen($needle)) { +$string = grapheme_substr($string, 0, $offset); +} +$offset = 0; +} + +$i = $this->ignoreCase ? grapheme_strripos($string, $needle, $offset) : grapheme_strrpos($string, $needle, $offset); + +return false === $i ? null : $i; +} + +public function join(array $strings, string $lastGlue = null): AbstractString +{ +$str = parent::join($strings, $lastGlue); +normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + +return $str; +} + +public function length(): int +{ +return grapheme_strlen($this->string); +} + + + + +public function normalize(int $form = self::NFC): parent +{ +$str = clone $this; + +if (\in_array($form, [self::NFC, self::NFKC], true)) { +normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); +} elseif (!\in_array($form, [self::NFD, self::NFKD], true)) { +throw new InvalidArgumentException('Unsupported normalization form.'); +} elseif (!normalizer_is_normalized($str->string, $form)) { +$str->string = normalizer_normalize($str->string, $form); +$str->ignoreCase = null; +} + +return $str; +} + +public function prepend(string ...$prefix): AbstractString +{ +$str = clone $this; +$str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$this->string; +normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + +if (false === $str->string) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +return $str; +} + +public function replace(string $from, string $to): AbstractString +{ +$str = clone $this; +normalizer_is_normalized($from) ?: $from = normalizer_normalize($from); + +if ('' !== $from && false !== $from) { +$tail = $str->string; +$result = ''; +$indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; + +while ('' !== $tail && false !== $i = $indexOf($tail, $from)) { +$slice = grapheme_substr($tail, 0, $i); +$result .= $slice.$to; +$tail = substr($tail, \strlen($slice) + \strlen($from)); +} + +$str->string = $result.$tail; +normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + +if (false === $str->string) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} +} + +return $str; +} + +public function replaceMatches(string $fromRegexp, $to): AbstractString +{ +$str = parent::replaceMatches($fromRegexp, $to); +normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + +return $str; +} + +public function slice(int $start = 0, int $length = null): AbstractString +{ +$str = clone $this; + +if (\PHP_VERSION_ID < 80000 && 0 > $start && grapheme_strlen($this->string) < -$start) { +$start = 0; +} +$str->string = (string) grapheme_substr($this->string, $start, $length ?? 2147483647); + +return $str; +} + +public function splice(string $replacement, int $start = 0, int $length = null): AbstractString +{ +$str = clone $this; + +if (\PHP_VERSION_ID < 80000 && 0 > $start && grapheme_strlen($this->string) < -$start) { +$start = 0; +} +$start = $start ? \strlen(grapheme_substr($this->string, 0, $start)) : 0; +$length = $length ? \strlen(grapheme_substr($this->string, $start, $length ?? 2147483647)) : $length; +$str->string = substr_replace($this->string, $replacement, $start, $length ?? 2147483647); +normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); + +if (false === $str->string) { +throw new InvalidArgumentException('Invalid UTF-8 string.'); +} + +return $str; +} + +public function split(string $delimiter, int $limit = null, int $flags = null): array +{ +if (1 > $limit = $limit ?? 2147483647) { +throw new InvalidArgumentException('Split limit must be a positive integer.'); +} + +if ('' === $delimiter) { +throw new InvalidArgumentException('Split delimiter is empty.'); +} + +if (null !== $flags) { +return parent::split($delimiter.'u', $limit, $flags); +} + +normalizer_is_normalized($delimiter) ?: $delimiter = normalizer_normalize($delimiter); + +if (false === $delimiter) { +throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); +} + +$str = clone $this; +$tail = $this->string; +$chunks = []; +$indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; + +while (1 < $limit && false !== $i = $indexOf($tail, $delimiter)) { +$str->string = grapheme_substr($tail, 0, $i); +$chunks[] = clone $str; +$tail = substr($tail, \strlen($str->string) + \strlen($delimiter)); +--$limit; +} + +$str->string = $tail; +$chunks[] = clone $str; + +return $chunks; +} + +public function startsWith($prefix): bool +{ +if ($prefix instanceof AbstractString) { +$prefix = $prefix->string; +} elseif (\is_array($prefix) || $prefix instanceof \Traversable) { +return parent::startsWith($prefix); +} else { +$prefix = (string) $prefix; +} + +$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; +normalizer_is_normalized($prefix, $form) ?: $prefix = normalizer_normalize($prefix, $form); + +if ('' === $prefix || false === $prefix) { +return false; +} + +if ($this->ignoreCase) { +return 0 === mb_stripos(grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES), $prefix, 0, 'UTF-8'); +} + +return $prefix === grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES); +} + +public function __wakeup() +{ +if (!\is_string($this->string)) { +throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); +} + +normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); +} + +public function __clone() +{ +if (null === $this->ignoreCase) { +normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); +} + +$this->ignoreCase = false; +} +} diff --git a/fixtures/build/dir017/.box_dump/.box_configuration b/fixtures/build/dir017/.box_dump/.box_configuration new file mode 100644 index 000000000..9bf229ecd --- /dev/null +++ b/fixtures/build/dir017/.box_dump/.box_configuration @@ -0,0 +1,221 @@ +// +// Processed content of the configuration file "/Users/tfidry/Project/Humbug/box/fixtures/build/dir017/box.json.dist" dumped for debugging purposes +// +// PHP Version: 8.1.14 +// PHP extensions: Core,date,libxml,openssl,pcre,zlib,bcmath,bz2,calendar,ctype,curl,dom,fileinfo,filter,hash,iconv,intl,json,mbstring,SPL,session,pcntl,standard,mysqlnd,PDO,pdo_mysql,pdo_pgsql,pgsql,Phar,posix,readline,Reflection,mysqli,shmop,SimpleXML,sockets,sodium,sysvmsg,sysvsem,sysvshm,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,gd,pdo_sqlite,redis,soap,xdebug +// OS: Darwin / 20.6.0 +// Command: /Users/tfidry/Project/Humbug/box/bin/box compile --debug --no-restart +// Box: dev-main@4a0e146 +// Time: 2023-02-13T09:39:31+00:00 +// + +KevinGH\Box\Configuration\ExportableConfiguration {#240 + -file: "box.json.dist" + -alias: "box-auto-generated-alias-6c7d79a985e2.phar" + -basePath: "/Users/tfidry/Project/Humbug/box/fixtures/build/dir017" + -composerJson: KevinGH\Box\Composer\ComposerFile {#244 + -path: "composer.json" + -contents: array:4 [ + "bin" => "index.php" + "require" => array:1 [ + "php" => "^8.1" + ] + "require-dev" => array:2 [ + "phpstan/phpstan" => "^1.9" + "phpstan/extension-installer" => "^1.2" + ] + "config" => array:1 [ + "allow-plugins" => array:1 [ + "phpstan/extension-installer" => true + ] + ] + ] + } + -composerLock: KevinGH\Box\Composer\ComposerFile {#227 + -path: "composer.lock" + -contents: array:12 [ + "_readme" => array:3 [ + 0 => "This file locks the dependencies of your project to a known state" + 1 => "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies" + 2 => "This file is @generated automatically" + ] + "content-hash" => "d81279cb2a39d4658ba9a88f221c4c0b" + "packages" => [] + "packages-dev" => array:2 [ + 0 => array:14 [ + "name" => "phpstan/extension-installer" + "version" => "1.2.0" + "source" => array:3 [ + "type" => "git" + "url" => "https://github.com/phpstan/extension-installer.git" + "reference" => "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + ] + "dist" => array:4 [ + "type" => "zip" + "url" => "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + "reference" => "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + "shasum" => "" + ] + "require" => array:3 [ + "composer-plugin-api" => "^2.0" + "php" => "^7.2 || ^8.0" + "phpstan/phpstan" => "^1.8.0" + ] + "require-dev" => array:3 [ + "composer/composer" => "^2.0" + "php-parallel-lint/php-parallel-lint" => "^1.2.0" + "phpstan/phpstan-strict-rules" => "^0.11 || ^0.12 || ^1.0" + ] + "type" => "composer-plugin" + "extra" => array:1 [ + "class" => "PHPStan\ExtensionInstaller\Plugin" + ] + "autoload" => array:1 [ + "psr-4" => array:1 [ + "PHPStan\ExtensionInstaller\" => "src/" + ] + ] + "notification-url" => "https://packagist.org/downloads/" + "license" => array:1 [ + 0 => "MIT" + ] + "description" => "Composer plugin for automatic installation of PHPStan extensions" + "support" => array:2 [ + "issues" => "https://github.com/phpstan/extension-installer/issues" + "source" => "https://github.com/phpstan/extension-installer/tree/1.2.0" + ] + "time" => "2022-10-17T12:59:16+00:00" + ] + 1 => array:16 [ + "name" => "phpstan/phpstan" + "version" => "1.9.17" + "source" => array:3 [ + "type" => "git" + "url" => "https://github.com/phpstan/phpstan.git" + "reference" => "204e459e7822f2c586463029f5ecec31bb45a1f2" + ] + "dist" => array:4 [ + "type" => "zip" + "url" => "https://api.github.com/repos/phpstan/phpstan/zipball/204e459e7822f2c586463029f5ecec31bb45a1f2" + "reference" => "204e459e7822f2c586463029f5ecec31bb45a1f2" + "shasum" => "" + ] + "require" => array:1 [ + "php" => "^7.2|^8.0" + ] + "conflict" => array:1 [ + "phpstan/phpstan-shim" => "*" + ] + "bin" => array:2 [ + 0 => "phpstan" + 1 => "phpstan.phar" + ] + "type" => "library" + "autoload" => array:1 [ + "files" => array:1 [ + 0 => "bootstrap.php" + ] + ] + "notification-url" => "https://packagist.org/downloads/" + "license" => array:1 [ + 0 => "MIT" + ] + "description" => "PHPStan - PHP Static Analysis Tool" + "keywords" => array:2 [ + 0 => "dev" + 1 => "static analysis" + ] + "support" => array:2 [ + "issues" => "https://github.com/phpstan/phpstan/issues" + "source" => "https://github.com/phpstan/phpstan/tree/1.9.17" + ] + "funding" => array:3 [ + 0 => array:2 [ + "url" => "https://github.com/ondrejmirtes" + "type" => "github" + ] + 1 => array:2 [ + "url" => "https://github.com/phpstan" + "type" => "github" + ] + 2 => array:2 [ + "url" => "https://tidelift.com/funding/github/packagist/phpstan/phpstan" + "type" => "tidelift" + ] + ] + "time" => "2023-02-08T12:25:00+00:00" + ] + ] + "aliases" => [] + "minimum-stability" => "stable" + "stability-flags" => [] + "prefer-stable" => false + "prefer-lowest" => false + "platform" => array:1 [ + "php" => "^8.1" + ] + "platform-dev" => [] + "plugin-api-version" => "2.3.0" + ] + } + -files: array:7 [ + 0 => "box.json.dist" + 1 => "composer.json" + 2 => "composer.lock" + 3 => "expected-output" + 4 => "vendor/composer/InstalledVersions.php" + 5 => "vendor/composer/installed.json" + 6 => "vendor/composer/installed.php" + ] + -binaryFiles: [] + -autodiscoveredFiles: true + -dumpAutoload: true + -excludeComposerFiles: true + -excludeDevFiles: true + -compactors: [] + -compressionAlgorithm: "NONE" + -fileMode: "0755" + -mainScriptPath: "index.php" + -mainScriptContents: """ + \n + * Théo Fidry \n + *\n + * This source file is subject to the MIT license that is bundled\n + * with this source code in the file LICENSE.\n + */\n + \n + echo 'Everything is fine!'.PHP_EOL;\n + """ + -fileMapper: KevinGH\Box\MapFile {#247 + -basePath: "/Users/tfidry/Project/Humbug/box/fixtures/build/dir017" + -map: [] + } + -metadata: null + -tmpOutputPath: "index.phar" + -outputPath: "index.phar" + -privateKeyPassphrase: null + -privateKeyPath: null + -promptForPrivateKey: false + -processedReplacements: [] + -shebang: "#!/usr/bin/env php" + -signingAlgorithm: "SHA1" + -stubBannerContents: """ + Generated by Humbug Box dev-main@4a0e146.\n + \n + @link https://github.com/humbug/box + """ + -stubBannerPath: null + -stubPath: null + -isInterceptFileFuncs: false + -isStubGenerated: true + -checkRequirements: true + -warnings: [] + -recommendations: [] +} diff --git a/fixtures/build/dir017/.gitignore b/fixtures/build/dir017/.gitignore new file mode 100644 index 000000000..2d230ec5c --- /dev/null +++ b/fixtures/build/dir017/.gitignore @@ -0,0 +1,2 @@ +/*.phar +/vendor/ diff --git a/fixtures/build/dir017/box.json.dist b/fixtures/build/dir017/box.json.dist new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/fixtures/build/dir017/box.json.dist @@ -0,0 +1 @@ +{} diff --git a/fixtures/build/dir017/composer.json b/fixtures/build/dir017/composer.json new file mode 100644 index 000000000..0bb88ac7c --- /dev/null +++ b/fixtures/build/dir017/composer.json @@ -0,0 +1,15 @@ +{ + "bin": "index.php", + "require": { + "php": "^8.1" + }, + "require-dev": { + "phpstan/phpstan": "^1.9", + "phpstan/extension-installer": "^1.2" + }, + "config": { + "allow-plugins": { + "phpstan/extension-installer": true + } + } +} diff --git a/fixtures/build/dir017/composer.lock b/fixtures/build/dir017/composer.lock new file mode 100644 index 000000000..677608add --- /dev/null +++ b/fixtures/build/dir017/composer.lock @@ -0,0 +1,124 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "d81279cb2a39d4658ba9a88f221c4c0b", + "packages": [], + "packages-dev": [ + { + "name": "phpstan/extension-installer", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.8.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.2.0" + }, + "time": "2022-10-17T12:59:16+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.9.17", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/204e459e7822f2c586463029f5ecec31bb45a1f2", + "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.9.17" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-02-08T12:25:00+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/fixtures/build/dir017/expected-output b/fixtures/build/dir017/expected-output new file mode 100644 index 000000000..c168b4865 --- /dev/null +++ b/fixtures/build/dir017/expected-output @@ -0,0 +1 @@ +Everything is fine! diff --git a/fixtures/build/dir017/index.php b/fixtures/build/dir017/index.php new file mode 100644 index 000000000..f4230e5a5 --- /dev/null +++ b/fixtures/build/dir017/index.php @@ -0,0 +1,15 @@ + + * Théo Fidry + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +echo 'Everything is fine!'.PHP_EOL; diff --git a/src/Composer/ComposerFile.php b/src/Composer/ComposerFile.php index 65cd2a33d..f75a5f754 100644 --- a/src/Composer/ComposerFile.php +++ b/src/Composer/ComposerFile.php @@ -15,18 +15,21 @@ namespace KevinGH\Box\Composer; use Webmozart\Assert\Assert; +use function is_array; +use function is_string; -final class ComposerFile +class ComposerFile { - private $path; - private $contents; + private ?string $path; + private string $contents; + private array $decodedContents; - public static function createEmpty(): self + final public static function createEmpty(): self { return new self(null, []); } - public function __construct(?string $path, array $contents) + public function __construct(?string $path, array|string $contents) { Assert::nullOrNotEmpty($path); @@ -35,16 +38,22 @@ public function __construct(?string $path, array $contents) } $this->path = $path; - $this->contents = $contents; + $this->contents = is_string($contents) ? $contents : ''; + $this->decodedContents = is_array($contents) ? $contents : []; } - public function getPath(): ?string + final public function getPath(): ?string { return $this->path; } - public function getDecodedContents(): array + final public function getContents(): string { return $this->contents; } + + final public function getDecodedContents(): array + { + return $this->decodedContents; + } } diff --git a/src/Composer/ComposerFiles.php b/src/Composer/ComposerFiles.php index 79a36ab14..f63bb4366 100644 --- a/src/Composer/ComposerFiles.php +++ b/src/Composer/ComposerFiles.php @@ -26,6 +26,7 @@ public static function createEmpty(): self ComposerFile::createEmpty(), ComposerFile::createEmpty(), ComposerFile::createEmpty(), + ComposerFile::createEmpty(), ); } @@ -33,6 +34,7 @@ public function __construct( private readonly ComposerFile $composerJson, private readonly ComposerFile $composerLock, private readonly ComposerFile $installedJson, + private readonly ComposerFile $installedPhp, ) { } @@ -51,6 +53,11 @@ public function getInstalledJson(): ComposerFile return $this->installedJson; } + public function getInstalledPhp(): ComposerFile + { + return $this->installedPhp; + } + /** * @return list */ @@ -60,9 +67,18 @@ public function getPaths(): array array_filter( array_map( static fn (ComposerFile $file): ?string => $file->getPath(), - [$this->composerJson, $this->composerLock, $this->installedJson], + [ + $this->composerJson, + $this->composerLock, + $this->installedJson, + $this->installedPhp, + ], ), ), ); } + + public function excludeDevPackagesFromInstalledFiles(): self + { + } } diff --git a/src/Composer/InstalledJsonFile.php b/src/Composer/InstalledJsonFile.php new file mode 100644 index 000000000..0ddfae7a0 --- /dev/null +++ b/src/Composer/InstalledJsonFile.php @@ -0,0 +1,51 @@ + + * Théo Fidry + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace KevinGH\Box\Composer; + +use Webmozart\Assert\Assert; +use function array_filter; +use function array_values; +use function in_array; +use function is_array; +use function is_string; + +final class InstalledJsonFile extends ComposerFile +{ + public function excludeDevPackages(): self + { + $path = $this->getPath(); + $decodedContents = $this->getDecodedContents(); + + if ($decodedContents['dev'] === false) { + // Nothing to do. + return $this; + } + + $devPackageNames = $decodedContents['dev-package-names']; + + $newDecodedContents = [ + 'packages' => array_values( + array_filter( + $decodedContents['packages'], + static fn (array $package) => !in_array($package['name'], $devPackageNames, true), + ), + ), + 'dev' => false, + 'dev-package-names' => [], + ]; + + return new self($path, $newDecodedContents); + } +} diff --git a/src/Configuration/Configuration.php b/src/Configuration/Configuration.php index fb9884a6d..85563a0ca 100644 --- a/src/Configuration/Configuration.php +++ b/src/Configuration/Configuration.php @@ -60,6 +60,7 @@ use function dirname; use function explode; use function file_exists; +use function file_get_contents; use function getcwd; use function implode; use function in_array; @@ -268,6 +269,10 @@ public static function create(?string $file, stdClass $raw): self $excludeDevPackages = self::retrieveExcludeDevFiles($raw, $dumpAutoload, $logger); + if ($excludeDevPackages) { + $composerFiles = $composerFiles->excludeDevPackagesFromInstalledFiles(); + } + $devPackages = ComposerConfiguration::retrieveDevPackages( $basePath, $composerFiles->getComposerJson()->getDecodedContents(), @@ -1830,10 +1835,22 @@ private static function retrieveComposerFiles(string $basePath): ComposerFiles return new ComposerFile($file, $contents); }; + $installedPhpPath = canonicalize($basePath.'/vendor/composer/installed.php'); + + $installedPhp = false === file_exists($installedPhpPath) + || false === is_file($installedPhpPath) + || false === is_readable($installedPhpPath) + ? ComposerFile::createEmpty() + : new ComposerFile( + $installedPhpPath, + file_get_contents($installedPhpPath), + ); + return new ComposerFiles( $retrieveFileAndContents(canonicalize($basePath.'/composer.json')), $retrieveFileAndContents(canonicalize($basePath.'/composer.lock')), $retrieveFileAndContents(canonicalize($basePath.'/vendor/composer/installed.json')), + $installedPhp, ); } diff --git a/tests/Composer/ComposerFileAssertions.php b/tests/Composer/ComposerFileAssertions.php new file mode 100644 index 000000000..967630afe --- /dev/null +++ b/tests/Composer/ComposerFileAssertions.php @@ -0,0 +1,13 @@ +getComposerJson()); self::assertEquals($expectedComposerLock, $actual->getComposerLock()); self::assertEquals($expectedInstalledJson, $actual->getInstalledJson()); + self::assertEquals($expectedInstalledPhp, $actual->getInstalledPhp()); self::assertSame($expectedPaths, $actual->getPaths()); } @@ -51,17 +53,20 @@ public static function validInstantiatorsProvider(): iterable yield (static function (): array { $json = new ComposerFile('path/to/composer.json', ['name' => 'composer.json']); $lock = new ComposerFile('path/to/composer.lock', ['name' => 'composer.lock']); - $installed = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); + $installedJson = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); + $installedPhp = new ComposerFile('path/to/installed.php', ['name' => 'installed.php']); return [ - static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installed), + static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installedJson, $installedPhp), $json, $lock, - $installed, + $installedJson, + $installedPhp, [ 'path/to/composer.json', 'path/to/composer.lock', 'path/to/installed.json', + 'path/to/installed.php', ], ]; })(); @@ -69,16 +74,19 @@ public static function validInstantiatorsProvider(): iterable yield (static function (): array { $json = new ComposerFile('path/to/composer.json', ['name' => 'composer.json']); $lock = ComposerFile::createEmpty(); - $installed = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); + $installedJson = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); + $installedPhp = new ComposerFile('path/to/installed.php', ['name' => 'installed.php']); return [ - static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installed), + static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installedJson, $installedPhp), $json, $lock, - $installed, + $installedJson, + $installedPhp, [ 'path/to/composer.json', 'path/to/installed.json', + 'path/to/installed.php', ], ]; })(); @@ -88,6 +96,7 @@ public static function validInstantiatorsProvider(): iterable ComposerFile::createEmpty(), ComposerFile::createEmpty(), ComposerFile::createEmpty(), + ComposerFile::createEmpty(), [], ])(); } diff --git a/tests/Composer/InstalledJsonFileTest.php b/tests/Composer/InstalledJsonFileTest.php new file mode 100644 index 000000000..50bb461e7 --- /dev/null +++ b/tests/Composer/InstalledJsonFileTest.php @@ -0,0 +1,15 @@ + Date: Tue, 14 Feb 2023 01:42:30 +0100 Subject: [PATCH 02/11] fix --- Box54346/composer.json | 3 +- Box54346/composer.lock | 55 +- Box54346/vendor/composer/autoload_files.php | 12 + Box54346/vendor/composer/autoload_real.php | 12 + Box54346/vendor/composer/autoload_static.php | 6 + Box54346/vendor/composer/installed.json | 117 +--- Box54346/vendor/composer/installed.php | 27 +- .../nikic/iter/.github/workflows/ci.yml | 55 ++ Box54346/vendor/nikic/iter/.gitignore | 3 + Box54346/vendor/nikic/iter/LICENSE | 31 + Box54346/vendor/nikic/iter/README.md | 116 ++++ Box54346/vendor/nikic/iter/composer.json | 29 + Box54346/vendor/nikic/iter/phpunit.xml.dist | 26 + Box54346/vendor/nikic/iter/src/iter.func.php | 106 +++ .../vendor/nikic/iter/src/iter.rewindable.php | 143 ++++ .../vendor/nikic/iter/test/IterFnTest.php | 129 ++++ .../nikic/iter/test/IterRewindableTest.php | 180 +++++ Box54346/vendor/nikic/iter/test/iterTest.php | 628 ++++++++++++++++++ .../phpstan/extension-installer/LICENSE | 21 - .../phpstan/extension-installer/README.md | 77 --- .../build-cs/composer.json | 12 - .../build-cs/composer.lock | 322 --------- .../phpstan/extension-installer/composer.json | 32 - .../src/GeneratedConfig.php | 22 - .../extension-installer/src/Plugin.php | 159 ----- Box54346/vendor/phpstan/phpstan/LICENSE | 21 - Box54346/vendor/phpstan/phpstan/README.md | 103 --- Box54346/vendor/phpstan/phpstan/bootstrap.php | 60 -- Box54346/vendor/phpstan/phpstan/composer.json | 19 - .../phpstan/phpstan/conf/bleedingEdge.neon | 2 - Box54346/vendor/phpstan/phpstan/phpstan | 8 - Box54346/vendor/phpstan/phpstan/phpstan.phar | Bin 21461092 -> 0 bytes .../vendor/phpstan/phpstan/phpstan.phar.asc | 16 - Makefile.e2e | 17 + box.json.dist | 1 + .../build/dir017/.box_dump/.box_configuration | 221 ------ fixtures/build/dir017/composer.json | 3 +- fixtures/build/dir017/composer.lock | 55 +- fixtures/build/dir017/expected-output | 3 +- fixtures/build/dir017/index.php | 18 +- src/Composer/ComposerFiles.php | 1 + src/Composer/ComposerOrchestrator.php | 62 +- tests/Composer/ComposerFileAssertions.php | 14 + tests/Composer/ComposerFileTest.php | 25 +- tests/Composer/InstalledJsonFileTest.php | 5 + 45 files changed, 1764 insertions(+), 1213 deletions(-) create mode 100644 Box54346/vendor/composer/autoload_files.php create mode 100644 Box54346/vendor/nikic/iter/.github/workflows/ci.yml create mode 100644 Box54346/vendor/nikic/iter/.gitignore create mode 100644 Box54346/vendor/nikic/iter/LICENSE create mode 100644 Box54346/vendor/nikic/iter/README.md create mode 100644 Box54346/vendor/nikic/iter/composer.json create mode 100644 Box54346/vendor/nikic/iter/phpunit.xml.dist create mode 100644 Box54346/vendor/nikic/iter/src/iter.func.php create mode 100644 Box54346/vendor/nikic/iter/src/iter.rewindable.php create mode 100644 Box54346/vendor/nikic/iter/test/IterFnTest.php create mode 100644 Box54346/vendor/nikic/iter/test/IterRewindableTest.php create mode 100644 Box54346/vendor/nikic/iter/test/iterTest.php delete mode 100644 Box54346/vendor/phpstan/extension-installer/LICENSE delete mode 100644 Box54346/vendor/phpstan/extension-installer/README.md delete mode 100644 Box54346/vendor/phpstan/extension-installer/build-cs/composer.json delete mode 100644 Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock delete mode 100644 Box54346/vendor/phpstan/extension-installer/composer.json delete mode 100644 Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php delete mode 100644 Box54346/vendor/phpstan/extension-installer/src/Plugin.php delete mode 100644 Box54346/vendor/phpstan/phpstan/LICENSE delete mode 100644 Box54346/vendor/phpstan/phpstan/README.md delete mode 100644 Box54346/vendor/phpstan/phpstan/bootstrap.php delete mode 100644 Box54346/vendor/phpstan/phpstan/composer.json delete mode 100644 Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon delete mode 100755 Box54346/vendor/phpstan/phpstan/phpstan delete mode 100755 Box54346/vendor/phpstan/phpstan/phpstan.phar delete mode 100644 Box54346/vendor/phpstan/phpstan/phpstan.phar.asc delete mode 100644 fixtures/build/dir017/.box_dump/.box_configuration diff --git a/Box54346/composer.json b/Box54346/composer.json index 0bb88ac7c..d62d6cb25 100644 --- a/Box54346/composer.json +++ b/Box54346/composer.json @@ -1,7 +1,8 @@ { "bin": "index.php", "require": { - "php": "^8.1" + "php": "^8.1", + "nikic/iter": "^2.2" }, "require-dev": { "phpstan/phpstan": "^1.9", diff --git a/Box54346/composer.lock b/Box54346/composer.lock index 677608add..0548fcf3e 100644 --- a/Box54346/composer.lock +++ b/Box54346/composer.lock @@ -4,8 +4,59 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d81279cb2a39d4658ba9a88f221c4c0b", - "packages": [], + "content-hash": "9e21f6cdff196792db041ce08ffaf807", + "packages": [ + { + "name": "nikic/iter", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/iter.git", + "reference": "d1323929952ddcb0b06439991f93bde3816a39e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/iter/zipball/d1323929952ddcb0b06439991f93bde3816a39e9", + "reference": "d1323929952ddcb0b06439991f93bde3816a39e9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/iter.func.php", + "src/iter.php", + "src/iter.rewindable.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Iteration primitives using generators", + "keywords": [ + "functional", + "generator", + "iterator" + ], + "support": { + "issues": "https://github.com/nikic/iter/issues", + "source": "https://github.com/nikic/iter/tree/v2.2.0" + }, + "time": "2021-08-02T15:04:32+00:00" + } + ], "packages-dev": [ { "name": "phpstan/extension-installer", diff --git a/Box54346/vendor/composer/autoload_files.php b/Box54346/vendor/composer/autoload_files.php new file mode 100644 index 000000000..b7a53f8ee --- /dev/null +++ b/Box54346/vendor/composer/autoload_files.php @@ -0,0 +1,12 @@ + $vendorDir . '/nikic/iter/src/iter.func.php', + '35c02f945f51da2672a14da5064b8327' => $vendorDir . '/nikic/iter/src/iter.php', + '6f0d4b1a6e0d44877f891efd10b573f1' => $vendorDir . '/nikic/iter/src/iter.rewindable.php', +); diff --git a/Box54346/vendor/composer/autoload_real.php b/Box54346/vendor/composer/autoload_real.php index aaadac548..0100fdb1d 100644 --- a/Box54346/vendor/composer/autoload_real.php +++ b/Box54346/vendor/composer/autoload_real.php @@ -33,6 +33,18 @@ public static function getLoader() $loader->register(true); + $filesToLoad = \Composer\Autoload\ComposerStaticInitd675878ac2c7da13231e6f107702b12a::$files; + $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; + } + }, null, null); + foreach ($filesToLoad as $fileIdentifier => $file) { + $requireFile($fileIdentifier, $file); + } + return $loader; } } diff --git a/Box54346/vendor/composer/autoload_static.php b/Box54346/vendor/composer/autoload_static.php index 403483d44..0c4b28c99 100644 --- a/Box54346/vendor/composer/autoload_static.php +++ b/Box54346/vendor/composer/autoload_static.php @@ -6,6 +6,12 @@ class ComposerStaticInitd675878ac2c7da13231e6f107702b12a { + public static $files = array ( + '10d1e61aa091e707ef2023f98f57ef11' => __DIR__ . '/..' . '/nikic/iter/src/iter.func.php', + '35c02f945f51da2672a14da5064b8327' => __DIR__ . '/..' . '/nikic/iter/src/iter.php', + '6f0d4b1a6e0d44877f891efd10b573f1' => __DIR__ . '/..' . '/nikic/iter/src/iter.rewindable.php', + ); + public static $classMap = array ( 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', ); diff --git a/Box54346/vendor/composer/installed.json b/Box54346/vendor/composer/installed.json index ce833874b..7d3ebc667 100644 --- a/Box54346/vendor/composer/installed.json +++ b/Box54346/vendor/composer/installed.json @@ -1,118 +1,59 @@ { "packages": [ { - "name": "phpstan/extension-installer", - "version": "1.2.0", - "version_normalized": "1.2.0.0", + "name": "nikic/iter", + "version": "v2.2.0", + "version_normalized": "2.2.0.0", "source": { "type": "git", - "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + "url": "https://github.com/nikic/iter.git", + "reference": "d1323929952ddcb0b06439991f93bde3816a39e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", - "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "url": "https://api.github.com/repos/nikic/iter/zipball/d1323929952ddcb0b06439991f93bde3816a39e9", + "reference": "d1323929952ddcb0b06439991f93bde3816a39e9", "shasum": "" }, "require": { - "composer-plugin-api": "^2.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "php": ">=7.1" }, "require-dev": { - "composer/composer": "^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, - "time": "2022-10-17T12:59:16+00:00", - "type": "composer-plugin", - "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "PHPStan\\ExtensionInstaller\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Composer plugin for automatic installation of PHPStan extensions", - "support": { - "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.2.0" - }, - "install-path": "../phpstan/extension-installer" - }, - { - "name": "phpstan/phpstan", - "version": "1.9.17", - "version_normalized": "1.9.17.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/204e459e7822f2c586463029f5ecec31bb45a1f2", - "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "time": "2023-02-08T12:25:00+00:00", - "bin": [ - "phpstan", - "phpstan.phar" - ], + "time": "2021-08-02T15:04:32+00:00", "type": "library", "installation-source": "dist", "autoload": { "files": [ - "bootstrap.php" + "src/iter.func.php", + "src/iter.php", + "src/iter.rewindable.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "PHPStan - PHP Static Analysis Tool", + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Iteration primitives using generators", "keywords": [ - "dev", - "static analysis" + "functional", + "generator", + "iterator" ], "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.17" + "issues": "https://github.com/nikic/iter/issues", + "source": "https://github.com/nikic/iter/tree/v2.2.0" }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "install-path": "../phpstan/phpstan" + "install-path": "../nikic/iter" } ], - "dev": true, - "dev-package-names": [ - "phpstan/extension-installer", - "phpstan/phpstan" - ] + "dev": false, + "dev-package-names": [] } diff --git a/Box54346/vendor/composer/installed.php b/Box54346/vendor/composer/installed.php index d188fbb22..d2b30fa29 100644 --- a/Box54346/vendor/composer/installed.php +++ b/Box54346/vendor/composer/installed.php @@ -3,39 +3,30 @@ 'name' => '__root__', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', + 'reference' => 'd47945b57f9ebdcd93bdb0de9597d53f305247cf', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'dev' => true, + 'dev' => false, ), 'versions' => array( '__root__' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', + 'reference' => 'd47945b57f9ebdcd93bdb0de9597d53f305247cf', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => false, ), - 'phpstan/extension-installer' => array( - 'pretty_version' => '1.2.0', - 'version' => '1.2.0.0', - 'reference' => 'f06dbb052ddc394e7896fcd1cfcd533f9f6ace40', - 'type' => 'composer-plugin', - 'install_path' => __DIR__ . '/../phpstan/extension-installer', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'phpstan/phpstan' => array( - 'pretty_version' => '1.9.17', - 'version' => '1.9.17.0', - 'reference' => '204e459e7822f2c586463029f5ecec31bb45a1f2', + 'nikic/iter' => array( + 'pretty_version' => 'v2.2.0', + 'version' => '2.2.0.0', + 'reference' => 'd1323929952ddcb0b06439991f93bde3816a39e9', 'type' => 'library', - 'install_path' => __DIR__ . '/../phpstan/phpstan', + 'install_path' => __DIR__ . '/../nikic/iter', 'aliases' => array(), - 'dev_requirement' => true, + 'dev_requirement' => false, ), ), ); diff --git a/Box54346/vendor/nikic/iter/.github/workflows/ci.yml b/Box54346/vendor/nikic/iter/.github/workflows/ci.yml new file mode 100644 index 000000000..e1775a779 --- /dev/null +++ b/Box54346/vendor/nikic/iter/.github/workflows/ci.yml @@ -0,0 +1,55 @@ +name: CI + +on: + # Run on all pushes and on all pull requests. + push: + pull_request: + # Allow manually triggering the workflow. + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + # Keys: + # - experimental: Whether the build is "allowed to fail". + matrix: + php: ['7.1', '7.2', '7.3', '7.4', '8.0'] + experimental: [false] + + include: + - php: '8.1' + experimental: true + + name: "PHP: ${{ matrix.php }}" + + continue-on-error: ${{ matrix.experimental }} + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + ini-values: error_reporting=-1, display_errors=On, log_errors_max_len=0 + coverage: none + tools: none + + # Install dependencies and handle caching in one go. + # @link https://github.com/marketplace/actions/install-composer-dependencies + - name: "Install Composer dependencies (PHP < 8.1)" + if: ${{ matrix.php < '8.1' }} + uses: "ramsey/composer-install@v1" + + - name: "Install Composer dependencies (PHP 8.1)" + if: ${{ matrix.php >= '8.1' }} + uses: "ramsey/composer-install@v1" + with: + composer-options: --ignore-platform-reqs + + - name: Run unit tests + run: vendor/bin/phpunit diff --git a/Box54346/vendor/nikic/iter/.gitignore b/Box54346/vendor/nikic/iter/.gitignore new file mode 100644 index 000000000..3d7e132f3 --- /dev/null +++ b/Box54346/vendor/nikic/iter/.gitignore @@ -0,0 +1,3 @@ +vendor/ +composer.lock +.phpunit.result.cache diff --git a/Box54346/vendor/nikic/iter/LICENSE b/Box54346/vendor/nikic/iter/LICENSE new file mode 100644 index 000000000..b62b5e2bc --- /dev/null +++ b/Box54346/vendor/nikic/iter/LICENSE @@ -0,0 +1,31 @@ +Copyright (c) 2013 by Nikita Popov. + +Some rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * The names of the contributors may not be used to endorse or + promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/Box54346/vendor/nikic/iter/README.md b/Box54346/vendor/nikic/iter/README.md new file mode 100644 index 000000000..c96e5e6aa --- /dev/null +++ b/Box54346/vendor/nikic/iter/README.md @@ -0,0 +1,116 @@ +Iteration primitives using generators +===================================== + +This library implements iteration primitives like `map()` and `filter()` +using generators. To a large part this serves as a repository for small +examples of generator usage, but of course the functions are also practically +quite useful. + +All functions in this library accept arbitrary iterables, i.e. arrays, +traversables, iterators and aggregates, which makes it quite different from +functions like `array_map()` (which only accept arrays) and the SPL iterators +(which usually only accept iterators, not even aggregates). The operations are +of course lazy. + +Install +------- + +To install with composer: + +```sh +composer require nikic/iter +``` + +Functionality +------------- + +A small usage example for the ``map()`` and ``range()`` functions: + +```php + iter(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) +``` + +You can find documentation and usage examples for the individual functions in +[iter.php](https://github.com/nikic/iter/blob/master/src/iter.php), here I only +list the function signatures as an overview: + + Iterator map(callable $function, iterable $iterable) + Iterator mapWithKeys(callable $function, iterable $iterable) + Iterator mapKeys(callable $function, iterable $iterable) + Iterator flatMap(callable $function, iterable $iterable) + Iterator reindex(callable $function, iterable $iterable) + Iterator filter(callable $predicate, iterable $iterable) + Iterator enumerate(iterable $iterable) + Iterator toPairs(iterable $iterable) + Iterator fromPairs(iterable $iterable) + Iterator reductions(callable $function, iterable $iterable, mixed $startValue = null) + Iterator zip(iterable... $iterables) + Iterator zipKeyValue(iterable $keys, iterable $values) + Iterator chain(iterable... $iterables) + Iterator product(iterable... $iterables) + Iterator slice(iterable $iterable, int $start, int $length = INF) + Iterator take(int $num, iterable $iterable) + Iterator drop(int $num, iterable $iterable) + Iterator takeWhile(callable $predicate, iterable $iterable) + Iterator dropWhile(callable $predicate, iterable $iterable) + Iterator keys(iterable $iterable) + Iterator values(iterable $iterable) + Iterator flatten(iterable $iterable, int $levels = INF) + Iterator flip(iterable $iterable) + Iterator chunk(iterable $iterable, int $size, bool $preserveKeys = false) + Iterator chunkWithKeys(iterable $iterable, int $size) + Iterator toIter(iterable $iterable) + + Iterator range(number $start, number $end, number $step = null) + Iterator repeat(mixed $value, int $num = INF) + Iterator split(string $separator, string $data) + + mixed reduce(callable $function, iterable $iterable, mixed $startValue = null) + bool any(callable $predicate, iterable $iterable) + bool all(callable $predicate, iterable $iterable) + mixed search(callable $predicate, iterable $iterable) + void apply(callable $function, iterable $iterable) + string join(string $separator, iterable $iterable) + int count(iterable $iterable) + bool isEmpty(iterable $iterable) + mixed recurse(callable $function, $iterable) + array toArray(iterable $iterable) + array toArrayWithKeys(iterable $iterable) + bool isIterable($value) + +As the functionality is implemented using generators the resulting iterators +are by default not rewindable. This library implements additional functionality +to allow creating rewindable generators. + +You can find documentation for this in [iter.rewindable.php](https://github.com/nikic/iter/blob/master/src/iter.rewindable.php), +here is just a small usage example of the two main functions: + +```php +=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "autoload": { + "files": [ + "src/iter.func.php", + "src/iter.php", + "src/iter.rewindable.php" + ] + } +} diff --git a/Box54346/vendor/nikic/iter/phpunit.xml.dist b/Box54346/vendor/nikic/iter/phpunit.xml.dist new file mode 100644 index 000000000..01214bfc7 --- /dev/null +++ b/Box54346/vendor/nikic/iter/phpunit.xml.dist @@ -0,0 +1,26 @@ + + + + + + ./test/ + + + + + + ./lib/ + + + diff --git a/Box54346/vendor/nikic/iter/src/iter.func.php b/Box54346/vendor/nikic/iter/src/iter.func.php new file mode 100644 index 000000000..aabe13594 --- /dev/null +++ b/Box54346/vendor/nikic/iter/src/iter.func.php @@ -0,0 +1,106 @@ + [ + * 'bar' => [ + * 'baz' => 42 + * ] + * ] + * ]; + * + * $getIndexFooBar = func\nested_index('foo', 'bar'); + * $getIndexFooBarBaz = func\nested_index('foo', 'bar', 'baz'); + * + * $getIndexFooBar($array) + * => ['baz' => 42] + * + * $getIndexFooBarBaz($array) + * => 42 + * + * @param mixed[] ...$indices Path of indices + * + * @return callable + */ +function nested_index(...$indices) { + return function($array) use ($indices) { + foreach ($indices as $index) { + $array = $array[$index]; + } + + return $array; + }; +} + +function property($propertyName) { + return function($object) use ($propertyName) { + return $object->$propertyName; + }; +} + +function method($methodName, $args = []) { + return function($object) use ($methodName, $args) { + return $object->$methodName(...$args); + }; +} + +function operator($operator, $arg = null) { + $functions = [ + 'instanceof' => function($a, $b) { return $a instanceof $b; }, + '*' => function($a, $b) { return $a * $b; }, + '/' => function($a, $b) { return $a / $b; }, + '%' => function($a, $b) { return $a % $b; }, + '+' => function($a, $b) { return $a + $b; }, + '-' => function($a, $b) { return $a - $b; }, + '.' => function($a, $b) { return $a . $b; }, + '<<' => function($a, $b) { return $a << $b; }, + '>>' => function($a, $b) { return $a >> $b; }, + '<' => function($a, $b) { return $a < $b; }, + '<=' => function($a, $b) { return $a <= $b; }, + '>' => function($a, $b) { return $a > $b; }, + '>=' => function($a, $b) { return $a >= $b; }, + '==' => function($a, $b) { return $a == $b; }, + '!=' => function($a, $b) { return $a != $b; }, + '===' => function($a, $b) { return $a === $b; }, + '!==' => function($a, $b) { return $a !== $b; }, + '&' => function($a, $b) { return $a & $b; }, + '^' => function($a, $b) { return $a ^ $b; }, + '|' => function($a, $b) { return $a | $b; }, + '&&' => function($a, $b) { return $a && $b; }, + '||' => function($a, $b) { return $a || $b; }, + '**' => function($a, $b) { return $a ** $b; }, + '<=>' => function($a, $b) { return $a <=> $b; }, + ]; + + if (!isset($functions[$operator])) { + throw new \InvalidArgumentException("Unknown operator \"$operator\""); + } + + $fn = $functions[$operator]; + if (func_num_args() === 1) { + return $fn; + } else { + return function($a) use ($fn, $arg) { + return $fn($a, $arg); + }; + } +} + +function not($function) { + return function(...$args) use ($function) { + return !$function(...$args); + }; +} \ No newline at end of file diff --git a/Box54346/vendor/nikic/iter/src/iter.rewindable.php b/Box54346/vendor/nikic/iter/src/iter.rewindable.php new file mode 100644 index 000000000..9daf1a4f7 --- /dev/null +++ b/Box54346/vendor/nikic/iter/src/iter.rewindable.php @@ -0,0 +1,143 @@ +function = $function; + $this->args = $args; + $this->generator = null; + } + + public function rewind(): void { + $function = $this->function; + $this->generator = $function(...$this->args); + } + + public function next(): void { + if (!$this->generator) { $this->rewind(); } + $this->generator->next(); + } + + public function valid(): bool { + if (!$this->generator) { $this->rewind(); } + return $this->generator->valid(); + } + + #[ReturnTypeWillChange] + public function key() { + if (!$this->generator) { $this->rewind(); } + return $this->generator->key(); + } + + #[ReturnTypeWillChange] + public function current() { + if (!$this->generator) { $this->rewind(); } + return $this->generator->current(); + } + + public function send($value = null) { + if (!$this->generator) { $this->rewind(); } + return $this->generator->send($value); + } + + public function throw($exception) { + if (!$this->generator) { $this->rewind(); } + return $this->generator->throw($exception); + } + } +} diff --git a/Box54346/vendor/nikic/iter/test/IterFnTest.php b/Box54346/vendor/nikic/iter/test/IterFnTest.php new file mode 100644 index 000000000..cdcf25c2a --- /dev/null +++ b/Box54346/vendor/nikic/iter/test/IterFnTest.php @@ -0,0 +1,129 @@ + 'bar', 'test' => 'tset', 'bar' => 'foo']; + + $this->assertSame($arr1[3], $getIndex3($arr1)); + $this->assertSame($arr2['test'], $getIndexTest($arr2)); + } + + public function testNestedIndex() { + $getIndexFooBar = func\nested_index('foo', 'bar'); + $getIndexFooBarBaz = func\nested_index('foo', 'bar', 'baz'); + $getEmptyIndex = func\nested_index(); + + $array = [ + 'foo' => [ + 'bar' => [ + 'baz' => 42 + ] + ] + ]; + + $this->assertSame($array['foo']['bar'], $getIndexFooBar($array)); + $this->assertSame($array['foo']['bar']['baz'], $getIndexFooBarBaz($array)); + $this->assertSame($array, $getEmptyIndex($array)); + } + + public function testProperty() { + $getPropertyFoo = func\property('foo'); + $getPropertyBar = func\property('bar'); + + $obj = (object) ['foo' => 'bar', 'bar' => 'foo']; + + $this->assertSame($obj->foo, $getPropertyFoo($obj)); + $this->assertSame($obj->bar, $getPropertyBar($obj)); + } + + public function testMethod() { + $callMethod1 = func\method('test'); + $callMethod2 = func\method('test', []); + $callMethod3 = func\method('test', ['a', 'b']); + + $obj = new _MethodTestDummy; + + $this->assertSame([], $callMethod1($obj)); + $this->assertSame([], $callMethod2($obj)); + $this->assertSame(['a', 'b'], $callMethod3($obj)); + } + + public function testNot() { + $constFalse = func\not(function() { return true; }); + $constTrue = func\not(function() { return false; }); + $invert = func\not(function($bool) { return $bool; }); + $nand = func\not(func\operator('&&')); + + $this->assertFalse($constFalse()); + $this->assertTrue($constTrue()); + $this->assertFalse($invert(true)); + $this->assertTrue($invert(false)); + $this->assertFalse($nand(true, true)); + $this->assertTrue($nand(true, false)); + } + + /** @dataProvider provideTestOperator */ + public function testOperator($op, $a, $b, $result) { + $fn1 = func\operator($op); + $fn2 = func\operator($op, $b); + + $this->assertSame($result, $fn1($a, $b)); + $this->assertSame($result, $fn2($a)); + } + + public function provideTestOperator() { + return [ + 'instanceof' => ['instanceof', new \stdClass, 'stdClass', true], + '*' => ['*', 3, 2, 6], + '/' => ['/', 3, 2, 1.5], + '%' => ['%', 3, 2, 1], + '+' => ['+', 3, 2, 5], + '-' => ['-', 3, 2, 1], + '.' => ['.', 'foo', 'bar', 'foobar'], + '<<' => ['<<', 1, 8, 256], + '>>' => ['>>', 256, 8, 1], + '<' => ['<', 3, 5, true], + '<=' => ['<=', 5, 5, true], + '>' => ['>', 3, 5, false], + '>=' => ['>=', 3, 5, false], + '== with number and string' => ['==', 0, 'foo', (PHP_VERSION_ID > 80000 ? false : true)], + '== with numbers' => ['==', 0, '0', true], + '!=' => ['!=', 1, 'foo', true], + '===' => ['===', 0, 'foo', false], + '!==' => ['!==', 0, 'foo', true], + '&' => ['&', 3, 1, 1], + '|' => ['|', 3, 1, 3], + '^' => ['^', 3, 1, 2], + '&&' => ['&&', true, false, false], + '||' => ['||', true, false, true], + '**' => ['**', 2, 4, 16], + '<=> with arrays' => ['<=>', [0=>1,1=>0], [1=>0,0=>1], 0], + '<=> with scientific floats' => ['<=>', '2e1', '1e10', -1], + '<=> with stdClass/SplStack' => ['<=>', new \stdClass(), new \SplStack(), 1], + '<=> with SplStack/stdClass' => ['<=>', new \SplStack(), new \stdClass(), 1], + ]; + } + + + public function testInvalidOperator() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Unknown operator "***"'); + + func\operator('***'); + } +} + +class _MethodTestDummy { + public function test(...$args) { + return $args; + } +} diff --git a/Box54346/vendor/nikic/iter/test/IterRewindableTest.php b/Box54346/vendor/nikic/iter/test/IterRewindableTest.php new file mode 100644 index 000000000..da38e95a9 --- /dev/null +++ b/Box54346/vendor/nikic/iter/test/IterRewindableTest.php @@ -0,0 +1,180 @@ +assertSame($array, $fn($iter)); + $this->assertSame($array, $fn($iter)); + } + + public function testRewindableVariants() { + $this->assertRewindableEquals( + [1, 2, 3, 4, 5], + rewindable\range(1, 5) + ); + $this->assertRewindableEquals( + [3, 6, 9, 12, 15], + rewindable\map(func\operator('*', 3), rewindable\range(1, 5)) + ); + $this->assertRewindableEquals( + ['a' => 1, 'b' => 2, 'c' => 3], + rewindable\mapKeys('strtolower', ['A' => 1, 'B' => 2, 'C' => 3]), + true + ); + $this->assertRewindableEquals( + [0, 1, 4, 9, 16, 25], + rewindable\mapWithKeys(func\operator('*'), rewindable\range(0, 5)) + ); + $this->assertRewindableEquals( + [-1, 1, -2, 2, -3, 3, -4, 4, -5, 5], + rewindable\flatMap(function($v) { + return [-$v, $v]; + }, [1, 2, 3, 4, 5]) + ); + $this->assertRewindableEquals( + [2 => 1, 4 => 2, 6 => 3, 8 => 4], + rewindable\reindex(func\operator('*', 2), [1, 2, 3, 4]), + true + ); + $this->assertRewindableEquals( + [-5, -4, -3, -2, -1], + rewindable\filter(func\operator('<', 0), rewindable\range(-5, 5)) + ); + $this->assertRewindableEquals( + [[0,0], [1,1], [2,2], [3,3], [4,4], [5,5]], + rewindable\enumerate(rewindable\range(0, 5)) + ); + $this->assertRewindableEquals( + [[0,0], [1,1], [2,2], [3,3], [4,4], [5,5]], + rewindable\toPairs(rewindable\range(0, 5)) + ); + $this->assertRewindableEquals( + [0, 1, 2, 3, 4, 5], + rewindable\fromPairs([[0,0], [1,1], [2,2], [3,3], [4,4], [5,5]]) + ); + $this->assertRewindableEquals( + [[0,5], [1,4], [2,3], [3,2], [4,1], [5,0]], + rewindable\zip(rewindable\range(0, 5), rewindable\range(5, 0, -1)) + ); + $this->assertRewindableEquals( + [1, 3, 6, 10, 15], + rewindable\reductions(func\operator('+'), rewindable\range(1, 5), 0) + ); + $this->assertRewindableEquals( + [5=>0, 4=>1, 3=>2, 2=>3, 1=>4, 0=>5], + rewindable\zipKeyValue(rewindable\range(5, 0, -1), rewindable\range(0, 5)), + true + ); + $this->assertRewindableEquals( + [1, 2, 3, 4, 5, 6, 7, 8, 9], + rewindable\chain(rewindable\range(1, 3), rewindable\range(4, 6), rewindable\range(7, 9)) + ); + $this->assertRewindableEquals( + [5, 6, 7, 8, 9], + rewindable\slice(rewindable\range(0, 9), 5) + ); + $this->assertRewindableEquals( + [1, 2, 3], + rewindable\take(3, [1, 2, 3, 4, 5]) + ); + $this->assertRewindableEquals( + [4, 5], + rewindable\drop(3, [1, 2, 3, 4, 5]) + ); + $this->assertRewindableEquals( + [1, 1, 1, 1, 1], + rewindable\repeat(1, 5) + ); + $this->assertRewindableEquals( + ['b', 'd', 'f'], + rewindable\values(['a' => 'b', 'c' => 'd', 'e' => 'f']), + true + ); + $this->assertRewindableEquals( + ['a', 'c', 'e'], + rewindable\keys(['a' => 'b', 'c' => 'd', 'e' => 'f']), + true + ); + $this->assertRewindableEquals( + [3, 1, 4], + rewindable\takeWhile(func\operator('>', 0), [3, 1, 4, -1, 5]) + ); + $this->assertRewindableEquals( + [-1, 5], + rewindable\dropWhile(func\operator('>', 0), [3, 1, 4, -1, 5]) + ); + $this->assertRewindableEquals( + [1, 2, 3, 4, 5], + rewindable\flatten([[1, [[2, [[]], 3], 4]], 5]) + ); + $this->assertRewindableEquals( + [1 => 'a', 2 => 'b', 3 => 'c'], + rewindable\flip(['a' => 1, 'b' => 2, 'c' => 3]), + true + ); + $this->assertRewindableEquals( + [[1, 2], [3, 4], [5]], + rewindable\chunk([1, 2, 3, 4, 5], 2) + ); + $this->assertRewindableEquals( + [['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4], ['e' => 5]], + rewindable\chunkWithKeys(['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5], 2), + true + ); + $this->assertRewindableEquals( + [[1,3,5],[1,3,6],[1,4,5],[1,4,6],[2,3,5],[2,3,6],[2,4,5],[2,4,6]], + rewindable\product([1,2], [3,4], [5,6]) + ); + } + + public function testMakeRewindable() { + $range = makeRewindable('iter\\range'); + $map = makeRewindable('iter\\map'); + $this->assertRewindableEquals( + [3, 6, 9, 12, 15], + $map(func\operator('*', 3), $range(1, 5)) + ); + } + + public function testCallRewindable() { + $this->assertRewindableEquals( + [3, 6, 9, 12, 15], + callRewindable( + 'iter\\map', + func\operator('*', 3), callRewindable('iter\\range', 1, 5) + ) + ); + } + + public function testRewindableGenerator() { + // Make sure that send() and throw() work with rewindable generator + $genFn = makeRewindable(function() { + $startValue = yield; + try { + for (;;) yield $startValue++; + } catch (\Exception $e) { + yield 'end'; + } + }); + + /** @var rewindable\_RewindableGenerator $gen */ + $gen = $genFn(); + + for ($i = 0; $i < 2; ++$i) { + $gen->rewind(); + $gen->send(10); + $this->assertEquals(10, $gen->current()); + $gen->next(); + $this->assertEquals(11, $gen->current()); + $gen->next(); + $this->assertEquals(12, $gen->current()); + $gen->throw(new \Exception); + $this->assertEquals('end', $gen->current()); + } + } +} diff --git a/Box54346/vendor/nikic/iter/test/iterTest.php b/Box54346/vendor/nikic/iter/test/iterTest.php new file mode 100644 index 000000000..cb5c1f230 --- /dev/null +++ b/Box54346/vendor/nikic/iter/test/iterTest.php @@ -0,0 +1,628 @@ +assertSame($resultArray, toArray(range($start, $end, $step))); + } + + public function provideTestRange() { + return [ + [0, 10, null, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]], + [0, 10, 2, [0, 2, 4, 6, 8, 10]], + [0, 3, 0.5, [0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]], + [10, 0, null, [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]], + [10, 0, -2, [10, 8, 6, 4, 2, 0]], + [3, 0, -0.5, [3, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0]], + [5, 5, 0, [5]] + ]; + } + + + public function testRangeStepMustBePositive() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('If start < end the step must be positive'); + + toArray(range(0, 10, -1)); + } + + + public function testRangeStepMustBeNegative() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('If start > end the step must be negative'); + + toArray(range(10, 0, 1)); + } + + public function testMap() { + $range = range(0, 5); + $mapped = map(function($n) { return $n * 3; }, $range); + $this->assertSame([0, 3, 6, 9, 12, 15], toArray($mapped)); + } + + public function testMapKeys() { + $range = range(0, 5); + $mapped = mapKeys(function($n) { return $n * 3; }, $range); + $this->assertSame( + [0 => 0, 3 => 1, 6 => 2, 9 => 3, 12 => 4, 15 => 5], + toArrayWithKeys($mapped) + ); + + $mapped = mapKeys('strtolower', ['A' => 1, 'B' => 2, 'C' => 3]); + $this->assertSame( + ['a' => 1, 'b' => 2, 'c' => 3], + toArrayWithKeys($mapped) + ); + } + + public function testMapWithKeys() + { + $mapped = mapWithKeys(func\operator('*'), range(0, 5)); + $this->assertSame([0, 1, 4, 9, 16, 25], toArray($mapped)); + + $mapped = mapWithKeys( + function ($v, $k) { return sprintf('%s%s', $k, $v); }, + ['foo' => 'bar', 'bing' => 'baz'] + ); + $this->assertSame( + ['foo' => 'foobar', 'bing' => 'bingbaz'], + toArrayWithKeys($mapped) + ); + } + + public function testFlatMap() { + $this->assertSame( + [-1, 1, -2, 2, -3, 3, -4, 4, -5, 5], + toArray(flatMap(function($v) { + return [-$v, $v]; + }, [1, 2, 3, 4, 5])) + ); + $this->assertSame( + [], + toArray(flatMap(function() { return []; }, [1, 2, 3, 4, 5])) + ); + } + + public function testReindex() { + $iter = reindex('strtoupper', ['a', 'b', 'c', 'd', 'e']); + $this->assertSame( + ['A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e'], + toArrayWithKeys($iter) + ); + + $iter = reindex(func\operator('*', 2), [1, 2, 3, 4]); + $this->assertSame( + [2 => 1, 4 => 2, 6 => 3, 8 => 4], + toArrayWithKeys($iter) + ); + } + + public function testApply() { + $range = range(0, 5); + $result = []; + apply(function($n) use (&$result) { $result[] = $n; }, $range); + + $this->assertSame([0, 1, 2, 3, 4, 5], $result); + } + + public function testFilter() { + $range = range(-5, 5); + $filtered = filter(function($n) { return $n < 0; }, $range); + $this->assertSame([-5, -4, -3, -2, -1], toArray($filtered)); + } + + public function testEnumerateIsAliasOfToPairs() { + $this->assertSame(toArray(toPairs(['a', 'b'])), toArray(enumerate(['a', 'b']))); + } + + public function testToPairs() { + $this->assertSame([[0, 'a'], [1, 'b']], toArray(toPairs(['a', 'b']))); + } + + public function testToPairsWithStringKeys() { + $enumerated = toPairs([ + 'a' => 1, + 'b' => 2, + ]); + $this->assertSame([['a', 1], ['b', 2]], toArray($enumerated)); + } + + public function testFromPairs() { + $this->assertSame(['a', 'b'], toArrayWithKeys(fromPairs([[0, 'a'], [1, 'b']]))); + } + + public function testFromPairsInverseToPairs() { + $map = ['a' => 1, 'b' => 2]; + $this->assertSame($map, toArrayWithKeys(fromPairs(toPairs($map)))); + } + + public function testZip() { + $zipped = zip(range(0, 5), range(5, 0, -1)); + $this->assertSame([[0,5], [1,4], [2,3], [3,2], [4,1], [5,0]], toArray($zipped)); + } + + public function testZipEmpty() { + $res = toArray(zip()); + $this->assertSame([], $res); + } + + public function testZipKeyValue() { + $zipped = zipKeyValue(range(5, 0, -1), range(0, 5)); + $this->assertSame([5=>0, 4=>1, 3=>2, 2=>3, 1=>4, 0=>5], toArrayWithKeys($zipped)); + } + + public function testChain() { + $chained = chain(range(1, 3), range(4, 6), range(7, 9)); + $this->assertSame([1, 2, 3, 4, 5, 6, 7, 8, 9], toArray($chained)); + + // empty chain + $this->assertSame([], toArray(chain())); + } + + public function testSlice() { + $this->assertSame( + [5, 6, 7, 8, 9], + toArray(slice(range(0, INF), 5, 5)) + ); + $this->assertSame( + [5, 6, 7, 8, 9], + toArray(slice(range(0, 9), 5)) + ); + + // empty slice + $this->assertSame([], toArray(slice(range(0, INF), 0, 0))); + } + + public function testSliceDoNotTakeElementsAboveEndIndex() { + $takenElements = 0; + $iterator = function () use (&$takenElements) { + foreach (range(0, INF) as $item) { + $takenElements++; + yield $item; + } + }; + + $this->assertSame( + [0, 1, 2], + toArray(slice($iterator(), 0, 3)) + ); + + $this->assertSame(3, $takenElements); + } + + public function testSliceNegativeLengthError() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Length must be non-negative'); + + toArray(slice(range(0, INF), 0, -1)); + } + + + public function testSliceNegativeStartOffsetError() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Start offset must be non-negative'); + + toArray(slice(range(0, INF), -1, 5)); + } + + public function testSliceNegativeStartOffsetErrorWithZeroLength() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Start offset must be non-negative'); + + toArray(slice(range(0, INF), -1, 0)); + } + + public function testTakeDrop() { + $this->assertSame([1, 2, 3], toArray(take(3, [1, 2, 3, 4, 5]))); + $this->assertSame([4, 5], toArray(drop(3, [1, 2, 3, 4, 5]))); + $this->assertSame([], toArray(take(3, []))); + $this->assertSame([], toArray(drop(3, []))); + } + + public function testRepeat() { + $this->assertSame([1, 1, 1, 1, 1], toArray(repeat(1, 5))); + $this->assertSame([], toArray(repeat(1, 0))); + } + + + public function testRepeatNegativeNumError() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Number of repetitions must be non-negative'); + + toArray(repeat(1, -1)); + } + + public function testKeyValue() { + $array = ['a' => 'b', 'c' => 'd', 'e' => 'f']; + $this->assertSame(['b', 'd', 'f'], toArrayWithKeys(values($array))); + $this->assertSame(['a', 'c', 'e'], toArrayWithKeys(keys($array))); + } + + public function testReduce() { + $this->assertSame(15, reduce(func\operator('+'), range(1, 5), 0)); + $this->assertSame(120, reduce(func\operator('*'), range(1, 5), 1)); + } + + public function testComplexReduce() { + $this->assertSame('abcdef', reduce(function ($acc, $value, $key) { + return $acc . $key . $value; + }, ['a' => 'b', 'c' => 'd', 'e' => 'f'], '')); + } + + public function testReductions() { + $this->assertSame( + [1, 3, 6, 10, 15], + toArrayWithKeys(reductions(func\operator('+'), range(1, 5), 0)) + ); + $this->assertSame( + [1, 2, 6, 24, 120], + toArrayWithKeys(reductions(func\operator('*'), range(1, 5), 1)) + ); + } + + public function testComplexReductions() { + $this->assertSame( + ['ab', 'abcd', 'abcdef'], + toArrayWithKeys(reductions(function ($acc, $value, $key) { + return $acc . $key . $value; + }, ['a' => 'b', 'c' => 'd', 'e' => 'f'], '')) + ); + } + + public function testAnyAll() { + $this->assertTrue(all(func\operator('>', 0), range(1, 10))); + $this->assertFalse(all(func\operator('>', 0), range(-5, 5))); + $this->assertTrue(any(func\operator('>', 0), range(-5, 5))); + $this->assertFalse(any(func\operator('>', 0), range(-10, 0))); + } + + public function testSearch() { + $iter = new \ArrayIterator(['foo', 'bar', 'baz']); + $this->assertSame('baz', search(func\operator('===', 'baz'), $iter)); + + $iter = new \ArrayIterator(['foo', 'bar', 'baz']); + $this->assertSame(null, search(func\operator('===', 'qux'), $iter)); + + $iter = new \ArrayIterator([]); + $this->assertSame(null, search(func\operator('===', 'qux'), $iter)); + } + + public function testTakeOrDropWhile() { + $this->assertSame( + [3, 1, 4], + toArray(takeWhile(func\operator('>', 0), [3, 1, 4, -1, 5])) + ); + $this->assertSame( + [-1, 5], + toArray(dropWhile(func\operator('>', 0), [3, 1, 4, -1, 5])) + ); + $this->assertSame( + [1, 2, 3], + toArray(takeWhile(func\operator('>', 0), [1, 2, 3])) + ); + $this->assertSame( + [], + toArray(dropWhile(func\operator('>', 0), [1, 2, 3])) + ); + } + + public function testFlatten() { + $this->assertSame( + [1, 2, 3, 4, 5], + toArray(flatten([1, 2, 3, 4, 5])) + ); + $this->assertSame( + [1, 2, 3, 4, 5], + toArray(flatten([1, [2, 3], 4, [], 5])) + ); + $this->assertSame( + [1, 2, 3, 4, 5], + toArray(flatten([1, [[2, 3], 4], 5])) + ); + $this->assertSame( + [1, 2, 3, 4, 5], + toArray(flatten([[1, [[2, [[]], 3], 4]], 5])) + ); + $this->assertSame( + [1, 2, 3, 4, 5], + toArray(flatten(new \ArrayIterator([ + new \ArrayIterator([1, 2]), + 3, + new \ArrayIterator([4, 5]), + ]))) + ); + + // Test key preservation + $this->assertSame( + ['a' => 1, 'c' => 2, 'd' => 3], + toArrayWithKeys(flatten(['a' => 1, 'b' => ['c' => 2, 'd' => 3]])) + ); + } + + public function testFlattenLevels() { + $this->assertSame( + [[1, [[2, [[]], 3], 4]], 5], + toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 0)) + ); + $this->assertSame( + [1, [[2, [[]], 3], 4], 5], + toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 1)) + ); + $this->assertSame( + [1, [2, [[]], 3], 4, 5], + toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 2)) + ); + $this->assertSame( + [1, 2, [[]], 3, 4, 5], + toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 3)) + ); + } + + + public function testFlattenNegativeLevelError() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Number of levels must be non-negative'); + + toArray(flatten([1, 2, 3], -1)); + } + + public function testToIter() { + $iter = new \ArrayIterator([1, 2, 3]); + $this->assertSame($iter, toIter($iter)); + + $iter = toIter(new \ArrayObject([1, 2, 3])); + $this->assertInstanceOf('Iterator', $iter); + $this->assertSame([1, 2, 3], toArray($iter)); + + $iter = toIter([1, 2, 3]); + $this->assertInstanceOf('ArrayIterator', $iter); + $this->assertSame([1, 2, 3], toArray($iter)); + + // DatePeriod is Traversable, but not Iterator or IteratorAggregate + $iter = toIter(new \DatePeriod('R2/2012-07-01T00:00:00Z/P7D')); + $this->assertInstanceOf('Iterator', $iter); + $this->assertSame( + ['2012-07-01', '2012-07-08', '2012-07-15'], + toArray(map(func\method('format', ['Y-m-d']), $iter)) + ); + } + + public function testCount() { + $this->assertCount(5, [1, 2, 3, 4, 5]); + $this->assertCount(5, toIter([1, 2, 3, 4, 5])); + $this->assertCount(42, new _CountableTestDummy); + } + + public function testIsEmpty() { + $this->assertTrue(isEmpty([])); + $this->assertFalse(isEmpty([null])); + $this->assertTrue(isEmpty(toArray([]))); + $this->assertFalse(isEmpty(toArray([null]))); + $this->assertTrue(isEmpty(repeat(42, 0))); + $this->assertFalse(isEmpty(repeat(42))); + } + + public function testToArray() { + $this->assertSame([1, 2, 3], toArray(['a' => 1, 'b' => 2, 'c' => 3])); + $this->assertSame( + [1, 2, 3], + toArray(new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 3])) + ); + $this->assertSame( + [1, 2, 3], + toArray(chain(['a' => 1, 'b' => 2], ['a' => 3])) + ); + } + + public function testToArrayWithKeys() { + $this->assertSame( + ['a' => 1, 'b' => 2, 'c' => 3], + toArrayWithKeys(['a' => 1, 'b' => 2, 'c' => 3]) + ); + $this->assertSame( + ['a' => 1, 'b' => 2, 'c' => 3], + toArrayWithKeys(new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 3])) + ); + $this->assertSame( + ['a' => 3, 'b' => 2], + toArrayWithKeys(chain(['a' => 1, 'b' => 2], ['a' => 3])) + ); + } + + + public function testFlip() { + $this->assertSame( + [1 => 'a', 2 => 'b', 3 => 'c'], + toArrayWithKeys(flip(['a' => 1, 'b' => 2, 'c' => 3])) + ); + } + + public function testJoin() { + $this->assertSame('', join(', ', [])); + $this->assertSame( + 'a, b, c', + join(', ', new \ArrayIterator(['a', 'b', 'c'])) + ); + } + + public function testSplit() { + $this->assertSame(['a', 'b', 'c'], toArray(split(', ', 'a, b, c'))); + $this->assertSame(['b', 'b', 'b', 'b', 'b', 'b', 'b'], toArray(split('a', 'babababababab'))); + + $this->assertSame(['a', 'b', '', '', 'c'], toArray(split(',', 'a,b,,,c'))); + $this->assertSame(['', '', 'c'], toArray(split(',', ',,c'))); + $this->assertSame(['c', '', ''], toArray(split(',', 'c,,'))); + + $this->expectException(\InvalidArgumentException::class); + split('', 'a'); + } + + public function testChunk() { + $iterable = new \ArrayIterator( + ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5] + ); + + $this->assertSame( + [[1, 2], [3, 4], [5]], + toArray(chunk($iterable, 2)) + ); + $this->assertSame( + [[0, 1], [2, 3]], + toArray(chunk([0, 1, 2, 3], 2)) + ); + + $this->assertSame([[0, 1, 2]], toArray(chunk([0, 1, 2], 100000))); + $this->assertSame([], toArray(chunk([], 100000))); + + $this->assertSame( + [['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4], ['e' => 5]], + toArray(chunk($iterable, 2, true)) + ); + $this->assertSame( + [[0=>0, 1=>1], [2=>2, 3=>3]], + toArray(chunk([0, 1, 2, 3], 2, true)) + ); + + $this->assertSame( + [['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4], ['e' => 5]], + toArray(chunkWithKeys($iterable, 2)) + ); + $this->assertSame( + [[0=>0, 1=>1], [2=>2, 3=>3]], + toArray(chunkWithKeys([0, 1, 2, 3], 2)) + ); + } + + + public function testZeroChunkSizeError() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Chunk size must be positive'); + + toArray(chunk([1, 2, 3], 0)); + } + + + public function testNegativeChunkSizeError() { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('Chunk size must be positive'); + + toArray(chunk([1, 2, 3], -1)); + } + + public function testProduct() { + $this->assertKeysValues([[]], [[]], function() { return product(); }); + + $this->assertKeysValues( + [[0],[1]], [[1],[2]], function() { return product([1,2]); }); + + $this->assertKeysValues( + [[0,0],[0,1],[1,0],[1,1]], + [[1,3],[1,4],[2,3],[2,4]], + function() { return product([1,2],[3,4]); }); + + $this->assertKeysValues( + [[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]], + [[1,1,1],[1,1,2],[1,2,1],[1,2,2],[2,1,1],[2,1,2],[2,2,1],[2,2,2]], + function() { + return product(range(1,2), [1,2], new \ArrayIterator([1,2])); + } + ); + } + + function testRecurse() { + $iter = new \ArrayIterator(['a' => 1, 'b' => 2, + 'c' => new \ArrayIterator(['d' => 3, 'e' => 4])]); + + $this->assertSame( + [1, 2, [3, 4]], + recurse('iter\toArray', $iter) + ); + + $this->assertSame( + ['a' => 1, 'b' => 2, 'c' => ['d' => 3, 'e' => 4]], + recurse('iter\toArrayWithKeys', $iter) + ); + } + + private function assertKeysValues(array $keys, array $values, callable $fn) { + $this->assertSame($keys, toArray(keys($fn()))); + $this->assertSame($values, toArray(values($fn()))); + } + + public function testIsIterable() { + $this->assertTrue(isIterable([])); + $this->assertTrue(isIterable([1, 2, 3])); + $this->assertTrue(isIterable(new \ArrayIterator([1, 2, 3]))); + $gen = function() { yield; }; + $this->assertTrue(isIterable($gen())); + + $this->assertFalse(isIterable(new \stdClass())); + $this->assertFalse(isIterable("foobar")); + $this->assertFalse(isIterable(123)); + } + + /** + * @dataProvider provideTestAssertIterableFails + */ + public function testAssertIterableFails(callable $fn, $expectedMessage, $expectedException) { + if(null !== $expectedMessage){ + $this->expectExceptionMessage($expectedMessage); + } + $this->expectException($expectedException); + $ret = $fn(); + + // For generators the body will not be run until the first operation + if ($ret instanceof \Generator) { + $ret->rewind(); + } + } + + public function provideTestAssertIterableFails() { + yield [ + function() { return count(new \stdClass()); }, + 'Argument must be iterable or implement Countable', + \InvalidArgumentException::class + ]; + yield [ + function() { return isEmpty(new \stdClass()); }, + 'Argument must be iterable or implement Countable', + \InvalidArgumentException::class + ]; + yield [ + function() { return toIter(new \stdClass()); }, + null, + \TypeError::class + ]; + yield [ + function() { + return map(function($v) { return $v; }, new \stdClass()); + }, + null, + \TypeError::class + ]; + yield [ + function() { + return chain([1], [2], new \stdClass()); + }, + null, + \TypeError::class + ]; + yield [ + function() { + return zip([1], [2], new \stdClass()); + }, + null, + \TypeError::class + ]; + } +} + +class _CountableTestDummy implements \Countable { + public function count(): int { + return 42; + } +} diff --git a/Box54346/vendor/phpstan/extension-installer/LICENSE b/Box54346/vendor/phpstan/extension-installer/LICENSE deleted file mode 100644 index afe8bee4f..000000000 --- a/Box54346/vendor/phpstan/extension-installer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 Ondřej Mirtes - -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/Box54346/vendor/phpstan/extension-installer/README.md b/Box54346/vendor/phpstan/extension-installer/README.md deleted file mode 100644 index 70afa415e..000000000 --- a/Box54346/vendor/phpstan/extension-installer/README.md +++ /dev/null @@ -1,77 +0,0 @@ -# PHPStan Extension Installer - -[![Build](https://github.com/phpstan/extension-installer/workflows/Build/badge.svg)](https://github.com/phpstan/extension-installer/actions) -[![Latest Stable Version](https://poser.pugx.org/phpstan/extension-installer/v/stable)](https://packagist.org/packages/phpstan/extension-installer) -[![License](https://poser.pugx.org/phpstan/extension-installer/license)](https://packagist.org/packages/phpstan/extension-installer) - -Composer plugin for automatic installation of [PHPStan](https://phpstan.org/) extensions. - -# Motivation - -```diff -diff --git a/phpstan.neon b/phpstan.neon -index db4e3df32e..2ca30fa20a 100644 ---- a/phpstan.neon -+++ b/phpstan.neon -@@ -1,12 +1,3 @@ --includes: -- - vendor/phpstan/phpstan-doctrine/extension.neon -- - vendor/phpstan/phpstan-doctrine/rules.neon -- - vendor/phpstan/phpstan-nette/extension.neon -- - vendor/phpstan/phpstan-nette/rules.neon -- - vendor/phpstan/phpstan-phpunit/extension.neon -- - vendor/phpstan/phpstan-phpunit/rules.neon -- - vendor/phpstan/phpstan-strict-rules/rules.neon -- - parameters: - autoload_directories: - - %rootDir%/../../../build/SlevomatSniffs -diff --git a/composer.json b/composer.json -index 1b578dd624..f6ebf6e477 100644 ---- a/composer.json -+++ b/composer.json -@@ -142,6 +142,7 @@ - "jakub-onderka/php-parallel-lint": "1.0.0", - "justinrainbow/json-schema": "5.2.8", - "ondrejmirtes/mocktainer": "0.8", -+ "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.11.7", - "phpstan/phpstan-doctrine": "^0.11.3", - "phpstan/phpstan-nette": "^0.11.1", -``` - -## Usage - -```bash -composer require --dev phpstan/extension-installer -``` - -Starting from Composer 2.2.0 you'll get the following question: -``` -phpstan/extension-installer contains a Composer plugin which is currently not in your allow-plugins config. See https://getcomposer.org/allow-plugins -Do you trust "phpstan/extension-installer" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?] -``` - -Answer with `y` to allow the plugin. - -## Instructions for extension developers - -It's best (but optional) to set the extension's composer package [type](https://getcomposer.org/doc/04-schema.md#type) to `phpstan-extension` for this plugin to be able to recognize it and to be [discoverable on Packagist](https://packagist.org/explore/?type=phpstan-extension). - -Add `phpstan` key in the extension `composer.json`'s `extra` section: - -```json -{ - "extra": { - "phpstan": { - "includes": [ - "extension.neon" - ] - } - } -} -``` - -## Limitations - -The extension installer depends on Composer script events, therefore you cannot use `--no-scripts` flag. diff --git a/Box54346/vendor/phpstan/extension-installer/build-cs/composer.json b/Box54346/vendor/phpstan/extension-installer/build-cs/composer.json deleted file mode 100644 index e30797108..000000000 --- a/Box54346/vendor/phpstan/extension-installer/build-cs/composer.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "require-dev": { - "consistence-community/coding-standard": "^3.10", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "slevomat/coding-standard": "^7.0" - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } - } -} diff --git a/Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock b/Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock deleted file mode 100644 index 4bcc8de43..000000000 --- a/Box54346/vendor/phpstan/extension-installer/build-cs/composer.lock +++ /dev/null @@ -1,322 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "4485bbedba7bcc71ace5f69dbb9b6c47", - "packages": [], - "packages-dev": [ - { - "name": "consistence-community/coding-standard", - "version": "3.11.1", - "source": { - "type": "git", - "url": "https://github.com/consistence-community/coding-standard.git", - "reference": "4632fead8c9ee8f50044fcbce9f66c797b34c0df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consistence-community/coding-standard/zipball/4632fead8c9ee8f50044fcbce9f66c797b34c0df", - "reference": "4632fead8c9ee8f50044fcbce9f66c797b34c0df", - "shasum": "" - }, - "require": { - "php": ">=7.4", - "slevomat/coding-standard": "~7.0", - "squizlabs/php_codesniffer": "~3.6.0" - }, - "replace": { - "consistence/coding-standard": "3.10.*" - }, - "require-dev": { - "phing/phing": "2.16.4", - "php-parallel-lint/php-parallel-lint": "1.3.0", - "phpunit/phpunit": "9.5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Consistence\\": [ - "Consistence" - ] - }, - "classmap": [ - "Consistence" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Vašek Purchart", - "email": "me@vasekpurchart.cz", - "homepage": "http://vasekpurchart.cz" - } - ], - "description": "Consistence - Coding Standard - PHP Code Sniffer rules", - "keywords": [ - "Coding Standard", - "PHPCodeSniffer", - "codesniffer", - "coding", - "cs", - "phpcs", - "ruleset", - "sniffer", - "standard" - ], - "support": { - "issues": "https://github.com/consistence-community/coding-standard/issues", - "source": "https://github.com/consistence-community/coding-standard/tree/3.11.1" - }, - "time": "2021-05-03T18:13:22+00:00" - }, - { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], - "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" - }, - "time": "2022-02-04T12:51:07+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.5.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "981cc368a216c988e862a75e526b6076987d1b50" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", - "reference": "981cc368a216c988e862a75e526b6076987d1b50", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1" - }, - "time": "2022-05-05T11:32:40+00:00" - }, - { - "name": "slevomat/coding-standard", - "version": "7.2.1", - "source": { - "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", - "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.5.1", - "squizlabs/php_codesniffer": "^3.6.2" - }, - "require-dev": { - "phing/phing": "2.17.3", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.7.1", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.1", - "phpstan/phpstan-strict-rules": "1.2.3", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", - "support": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.2.1" - }, - "funding": [ - { - "url": "https://github.com/kukulich", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", - "type": "tidelift" - } - ], - "time": "2022-05-25T10:58:12+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/Box54346/vendor/phpstan/extension-installer/composer.json b/Box54346/vendor/phpstan/extension-installer/composer.json deleted file mode 100644 index c57fcfe52..000000000 --- a/Box54346/vendor/phpstan/extension-installer/composer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "phpstan/extension-installer", - "type": "composer-plugin", - "description": "Composer plugin for automatic installation of PHPStan extensions", - "license": [ - "MIT" - ], - "require": { - "php": "^7.2 || ^8.0", - "composer-plugin-api": "^2.0", - "phpstan/phpstan": "^1.8.0" - }, - "require-dev": { - "composer/composer": "^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "ocramius/package-versions": true - } - }, - "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" - }, - "autoload": { - "psr-4": { - "PHPStan\\ExtensionInstaller\\": "src/" - } - } -} diff --git a/Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php b/Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php deleted file mode 100644 index 0a1fd5b1b..000000000 --- a/Box54346/vendor/phpstan/extension-installer/src/GeneratedConfig.php +++ /dev/null @@ -1,22 +0,0 @@ - - */ - public static function getSubscribedEvents(): array - { - return [ - ScriptEvents::POST_INSTALL_CMD => 'process', - ScriptEvents::POST_UPDATE_CMD => 'process', - ]; - } - - public function process(Event $event): void - { - $io = $event->getIO(); - - if (!file_exists(__DIR__)) { - $io->write('phpstan/extension-installer: Package not found (probably scheduled for removal); extensions installation skipped.'); - return; - } - - $composer = $event->getComposer(); - $installationManager = $composer->getInstallationManager(); - - $generatedConfigFilePath = __DIR__ . '/GeneratedConfig.php'; - $oldGeneratedConfigFileHash = null; - if (is_file($generatedConfigFilePath)) { - $oldGeneratedConfigFileHash = md5_file($generatedConfigFilePath); - } - $notInstalledPackages = []; - $installedPackages = []; - - $data = []; - $fs = new Filesystem(); - foreach ($composer->getRepositoryManager()->getLocalRepository()->getPackages() as $package) { - if ( - $package->getType() !== 'phpstan-extension' - && !isset($package->getExtra()['phpstan']) - ) { - if ( - strpos($package->getName(), 'phpstan') !== false - && !in_array($package->getName(), [ - 'phpstan/phpstan', - 'phpstan/phpstan-shim', - 'phpstan/phpdoc-parser', - 'phpstan/extension-installer', - ], true) - ) { - $notInstalledPackages[$package->getName()] = $package->getFullPrettyVersion(); - } - continue; - } - - $installPath = $installationManager->getInstallPath($package); - - $absoluteInstallPath = $fs->isAbsolutePath($installPath) - ? $installPath - : getcwd() . DIRECTORY_SEPARATOR . $installPath; - - $data[$package->getName()] = [ - 'install_path' => $absoluteInstallPath, - 'relative_install_path' => $fs->findShortestPath(dirname($generatedConfigFilePath), $absoluteInstallPath, true), - 'extra' => $package->getExtra()['phpstan'] ?? null, - 'version' => $package->getFullPrettyVersion(), - ]; - - $installedPackages[$package->getName()] = true; - } - - ksort($data); - ksort($installedPackages); - ksort($notInstalledPackages); - - $generatedConfigFileContents = sprintf(self::$generatedFileTemplate, var_export($data, true), var_export($notInstalledPackages, true)); - file_put_contents($generatedConfigFilePath, $generatedConfigFileContents); - $io->write('phpstan/extension-installer: Extensions installed'); - - if ($oldGeneratedConfigFileHash === md5($generatedConfigFileContents)) { - return; - } - - foreach (array_keys($installedPackages) as $name) { - $io->write(sprintf('> %s: installed', $name)); - } - - foreach (array_keys($notInstalledPackages) as $name) { - $io->write(sprintf('> %s: not supported', $name)); - } - } - -} diff --git a/Box54346/vendor/phpstan/phpstan/LICENSE b/Box54346/vendor/phpstan/phpstan/LICENSE deleted file mode 100644 index 7c0f2b7b6..000000000 --- a/Box54346/vendor/phpstan/phpstan/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Ondřej Mirtes - -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/Box54346/vendor/phpstan/phpstan/README.md b/Box54346/vendor/phpstan/phpstan/README.md deleted file mode 100644 index 70f12d894..000000000 --- a/Box54346/vendor/phpstan/phpstan/README.md +++ /dev/null @@ -1,103 +0,0 @@ -

    PHPStan - PHP Static Analysis Tool

    - -

    - PHPStan -

    - -

    - Build Status - Latest Stable Version - Total Downloads - License - PHPStan Enabled -

    - ------- - -PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs -even before you write tests for the code. It moves PHP closer to compiled languages in the sense that the correctness of each line of the code -can be checked before you run the actual line. - -**[Read more about PHPStan »](https://phpstan.org/)** - -**[Try out PHPStan on the on-line playground! »](https://phpstan.org/try)** - -## Sponsors - -TheCodingMachine -    -Private Packagist -
    -Musement -    -Blackfire.io -
    -iO -    -TicketSwap -
    -ShipMonk -    -Togetter -
    -RightCapital -    -ContentKing -
    -ZOL -    -Psyonix -
    -Shopware -    -Craft CMS -
    -Worksome -    -campoint AG -
    -Crisp.nl -    -Inviqa -
    -CDN77 - - -[**You can now sponsor my open-source work on PHPStan through GitHub Sponsors.**](https://github.com/sponsors/ondrejmirtes) - -Does GitHub already have your 💳? Do you use PHPStan to find 🐛 before they reach production? [Send a couple of 💸 a month my way too.](https://github.com/sponsors/ondrejmirtes) Thank you! - -One-time donations [through PayPal](https://paypal.me/phpstan) are also accepted. To request an invoice, [contact me](mailto:ondrej@mirtes.cz) through e-mail. - -## Documentation - -All the documentation lives on the [phpstan.org website](https://phpstan.org/): - -* [Getting Started & User Guide](https://phpstan.org/user-guide/getting-started) -* [Config Reference](https://phpstan.org/config-reference) -* [PHPDocs Basics](https://phpstan.org/writing-php-code/phpdocs-basics) & [PHPDoc Types](https://phpstan.org/writing-php-code/phpdoc-types) -* [Extension Library](https://phpstan.org/user-guide/extension-library) -* [Developing Extensions](https://phpstan.org/developing-extensions/extension-types) -* [API Reference](https://apiref.phpstan.org/) - -## PHPStan Pro - -PHPStan Pro is a paid add-on on top of open-source PHPStan Static Analysis Tool with these premium features: - -* Web UI for browsing found errors, you can click and open your editor of choice on the offending line. -* Continuous analysis (watch mode): scans changed files in the background, refreshes the UI automatically. -* Interactive fixer: lets you choose the right fix for found errors :blush: - -Try it on PHPStan 0.12.45 or later by running it with the `--pro` option. You can create an account either by following the on-screen instructions, or by visiting [account.phpstan.com](https://account.phpstan.com/). - -After 30-day free trial period it costs 7 EUR for individuals monthly, 70 EUR for teams (up to 25 members). By paying for PHPStan Pro, you're supporting the development of open-source PHPStan. - -You can read more about it on [PHPStan's website](https://phpstan.org/blog/introducing-phpstan-pro). - -## Code of Conduct - -This project adheres to a [Contributor Code of Conduct](https://github.com/phpstan/phpstan/blob/master/CODE_OF_CONDUCT.md). By participating in this project and its community, you are expected to uphold this code. - -## Contributing - -Any contributions are welcome. PHPStan's source code open to pull requests lives at [`phpstan/phpstan-src`](https://github.com/phpstan/phpstan-src). diff --git a/Box54346/vendor/phpstan/phpstan/bootstrap.php b/Box54346/vendor/phpstan/phpstan/bootstrap.php deleted file mode 100644 index 204221a3a..000000000 --- a/Box54346/vendor/phpstan/phpstan/bootstrap.php +++ /dev/null @@ -1,60 +0,0 @@ -loadClass($class); - - return; - } - if (strpos($class, 'PHPStan\\') !== 0 || strpos($class, 'PHPStan\\PhpDocParser\\') === 0) { - return; - } - - if (!in_array('phar', stream_get_wrappers(), true)) { - throw new \Exception('Phar wrapper is not registered. Please review your php.ini settings.'); - } - - $filename = str_replace('\\', DIRECTORY_SEPARATOR, $class); - if (strpos($class, 'PHPStan\\BetterReflection\\') === 0) { - $filename = substr($filename, strlen('PHPStan\\BetterReflection\\')); - $filepath = 'phar://' . __DIR__ . '/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/' . $filename . '.php'; - } else { - $filename = substr($filename, strlen('PHPStan\\')); - $filepath = 'phar://' . __DIR__ . '/phpstan.phar/src/' . $filename . '.php'; - } - - if (!file_exists($filepath)) { - return; - } - - require $filepath; - } -} - -spl_autoload_register([PharAutoloader::class, 'loadClass']); diff --git a/Box54346/vendor/phpstan/phpstan/composer.json b/Box54346/vendor/phpstan/phpstan/composer.json deleted file mode 100644 index 55182f6cf..000000000 --- a/Box54346/vendor/phpstan/phpstan/composer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "phpstan/phpstan", - "description": "PHPStan - PHP Static Analysis Tool", - "license": ["MIT"], - "keywords": ["dev", "static analysis"], - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "autoload": { - "files": ["bootstrap.php"] - } -} diff --git a/Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon b/Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon deleted file mode 100644 index 01fee972d..000000000 --- a/Box54346/vendor/phpstan/phpstan/conf/bleedingEdge.neon +++ /dev/null @@ -1,2 +0,0 @@ -includes: - - phar://phpstan.phar/conf/bleedingEdge.neon diff --git a/Box54346/vendor/phpstan/phpstan/phpstan b/Box54346/vendor/phpstan/phpstan/phpstan deleted file mode 100755 index 7a08ef485..000000000 --- a/Box54346/vendor/phpstan/phpstan/phpstan +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env php -bX66|_yDA)^D>|#Sv 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

    JfS z3wqWeqafPUer`9{<4)x28C8Wi83@l+8$~I5ZbZ3ZcT}I z_1g>c{6NsHhuGH7^!EoJTpU!hh{q)mw;o`yRBG2NEEfzDmbrbH`ijvyXfJjx)@;i-%YTY3`)M zA5JSBFL#W^Ye^?_~@T%dWkV1!u4K`tpK#NqU#ALlV)rFtaHr?w(7l| zownpprlRqD$?c5%S6T9BXIS!w7{!*G88$if@%XoM(N&mk%9?kR`NaOEV#TMvxqS`xL3A7_7N;p@OkCzmZU`y{sw zux!A`ehZ7QN4wK#<(4+9B{8pXZ=PW(01D&pt z7{5C>`B=-J3>iONh_e2*P0{>n>BcBC|9aJn6lx^>DolM?VlCI!JV=#hicmT&i@#M# zOym7)YIc_LoCfF}s$p>qUSzanEtym&35qhIE#bV>;H(;+p%f=#&*fN{rmh&;`W`p6 ziig(U>7^v+6#)A32A<^d4Ou$=fi>;Salj9dCGo7_*V>v48D6<^ni51z`sT|z%UBlO zP}s1bkE~V>jv`s-qa0G$P>{!+OjN}y+fv%ai7bHLq+=ymm`@}nJyHgwXn5xSBvy(-i{*-}C?We20 z9$~{;+DHVC-P+cd%|{z(>~L?n29|0^+eSzKLWy=SAd+QgS!r4KH?gPnsV}4?jPOko z>#Q<$k##Hq18r|s#f;DxQsf?Im)ZBqfP-2|yzz3< ze!Xq+>4>q(sZRk{3nVX;qj`9$2!#2a%rq!J9*fN|8FDLp`fD$eZ|<^G7u$E;NrpgM zESw`GOIZD%SQL(7k}jxs$fR^jlvH3@1yPHAUwQR$Gb@Q@ z7I$Q<%T7L7dcwax#sOmX^}mw~B-!@={ug2#Yg<42MH|J^eS)q1w4f8Bva)yD_sroj zWpdDte*WD$K{7JW=J1$;O%#6v$nM5ixPO=`RNs?TPj|I@jr#Vz>)6>8M(+#^uHszY z(n!QQ6x!_RhSOs}j>1!NuF6>)jt?CbO2*QuL4iKX+}qh1CQ*-!ka1Z@?<)!k zQ1ZjVb6)k{3|<|*ia>i7wUV2QbF{@_+sEbE?M2;9ijxO$|#7eZTy_Vr-h4 z#E4XHmujK1<|~>@Ps;|eJMF$xmNHhYnl5n&YO~D1f}AD%f&{2dB%JZ|Vs$ zf>*krz%Ut_c(|(iHAUV9@|3d|j|Xzd@-o)Rb)A3-HL1dnWmRbd$|fxfyT}A!Mm}vL zKdm4Hk}OS-f_{>6R8a;{PNxq2I=aw1l?8?gg?(5$85ZKIW`VP!{(%{D4P9X<^<5CQ zPf5ffE9dy0;kKE%?;1PnAK0x7Wh2C^M(eui03j!AowL*-!!To}Tv-y>Z=iYH+#pyo zG!!%NPl$Nb<2%z}j9kYDV}z-Z>8Bo;K5HBUD^kJG%uq8iGy|%{1;*Ec#k+{wBd##n zns_N&PR1ux8PLbA!m|-w7~`6sH-u@^Pjt|MuoEggXdN8+a9r*WP70^KE|1(&AJ2G{ ze;hep{IQyNR*VBqfi-qZh4m7xd?2g_`c+qN(XIFDbttP|XHI^{VOQ@EMR@XCesym3 zR_>`S_0%{?4?e_gO5cki#*vTxgj_>gnn4Kpdq-t2weYyFs3g9@}U>e&y-`y$gND`~L0( zonl0axkSsZ-~RTmL$Ajz<>_z{i^A2<)uK$L<~F)p6c&%VemnV?XX!L3654!VVq3a& zx*A)y(sgxIe|O5AH@-&Rv6=qLF`vHpRtp^qf3cETO{JFG%L^i49-UklK)9`8F#1D@ zRJ>$nD;8IAI~32zm&{fS|Nf#x}q0W`C3HF)JgC z#ZCdhmd{04p9S6N5);TAyqFDx1=5LT-V?>X5f%rJ`SL8@jDCN3Le#)p@qsBDYk?^s_F z-knV(OhlDW15ICCug8@NmrU4GEjCku@46W&%(KpZFj4sh$mtTA%G}yAwldb89(C1} zxr9BF(qMK?f#qISv*d!IKmQ9>UJRjSp0r0=hZacZ;j$YdXW4-)9^v3Q_p`Epoz^mX zcV{@rmN<6<+V}<|Qg^Me`I$_fcX^4C?bXa9LuHCqSDO}p{ugg@Cg8B9KG(3YM`FFq zZRz~|UqFgKJQGY~u4CYWcQKLA91oZMWX|3uGEoeB8G~Lx~}370GbvCfte~|5ePfy7!eLzhA&tm}zq$ z>`({Serx?&Mp_+pYG7dnyvRMYRBgeLOEB$@7t$SaYrS3u2I0J$FCE5{D&$2#XeB^c zX9-}H?dBPF+}Fgh_M15igKFNpeY@E_;=(m6wkt?ELcs>dz+U#>Ql{1(ePXo6Eo7?9 zTYV$@qdn3vJU)~-FASm@qGG-p1#x3}%#C20hr`|BYsw9ej+DhS$9Ol)pEBoId1Akw zal9`sDwE7!y+~uh90_6eM`~uKXm&XJ`_Ry)k$}3To&-6B6c5Of5m=gYbDMc*V6~l> zq}wGiVpuX-dF zPhzicuml@+?2W*?V*up(3e>NpN#9UBzZHzL024>p;Se7o2Zaw%E%oC-o&?lq;8k?u zvsZ&EcFe=la{sf!f;XYjF$IBV?0ii$0HwgxD^xB}XJ$#(bmhzYnXU4QJ?a!#LQ7}_ zGYbiVsSf$u#m;Y+I=}T!Vj%T#P>ts%wOex8+8H0v39l?%M_9n;w6IiF&z-SJob={L zN}WcJSOg8(RypG{@0`QU&Tl{L{PtGow+q)hzt#-W1NJ~UDJ#^ZMOygK2c6eoA<&J$ zpH9K*t)el`EZpeqdf}tauNPy*JHZxX!^~ng5iE3LWg%Kmo94oTEoYwIVjyhl3m=ao zBu3t*)rF78=Gmp9K29oIR3R>@=ysNlNwu!sxy~pl+HO)o>|$g3XhWLefUHhZ1GNyc zWeB9TaGV6vEVKfUv&)6jg&XN$k0PKMlKH1`dZskM4#3vpbmMb!OI-!1g%3lhsA|2{ z0=&uY7T9N!tS&dOkg*bhFxW#-Lrb)w)bcTNG^x!cXA@e`W?e%?dXb4Bi~9)M7Q#>@ z5aP|OB(9}dCe_VkW_qC#!t4-P;z*{OSf;<5bOBHt4%H`9ofn)TTCe^4a_vQI;cefu_2ciyH(c0k!`E7 zs0UQpF$)YtX<36N5~r{tc22H4qE)JZl<=EEkKJ)NA|1kPlmeR!Too9jkPP99CgIAd zjZQm-ZDx%kE3|qUD$K9?l3J;ejC2ndt`?Cf4NuLsa+s<;VMeDQOk7{5D6<3L zswzp|T_$heFVNb)2a(*F(83;*8%SZR;FA#<<{?YH-51moKipA`dCRmNqgh*t5(=hq zN2qM2Gu0}5nwBqNkG#y@p^`6kT*#=UJo^c?xAji{%}(!#(ox@$RX99ggP+j;c~91d z#KRz9${ZaWQVgj}>3vA>Fg7OGvB$?9Kwg$nTF~&z&%e{$cAT-rT!4{WzwoYVKA+Vhl(btY|i?~x&du>(~ z*@qm(F`oAsh3sJYHmFnr0A4I&letNTG7+FoCqnf0Dgyb!`6cvNGc;gBWQPpb&90fW zphLwmTaIkZA{CAD?NI2VqJ`nE%zF?ddDex*HF{W=8G>wYXh#IlBpwuSjqj0JFH2qX zN&}6~2iB%hkxehdCSdW^V6PzEt%P(Q+mRJzQ|C!nRO2&YV|`7Iuz@jR7%Px&sFbPi zJ6k)u_OYtmZLgH|V*G9$^KBdl5cqS>?%RgSTJ@IjCFIqp%(gZfLbv;a%?)lMO{e3= zaC-wpa-vU$Yo~=b;DABuu-7FaYWk^|e_hB;8zsh&_*X2SmLpyvO{0I5ZVHwyxY`FE zeD0Uh(WkP=$L_swp(QWP)t2QaV%H&6ktf?)CPd3b53)(qD2B%bLDX#4;wm^%?8iC$ zcfGwo{~x|bs_6b|6CgFCl$MQKcvwZC5`NP@4z6Y%3@c{Umc!<%ZjAI{E!G1m=P;V= zfC{<7rFY0mSS!X&Ii_Kw&aWhl&L;{ES;4Ccu#Z`j1$pb5m({uO}v<2aXtC>Q} z$bE}BRmRVDAAf>9Yjn8{Jz_2vIT$MoIX^TA&5 z48m5SJrG|(`>qY#SGFu@`D+Srj(&y-e6>@QXPzyj%6~4pM>yYb9R=4 zRP`W%XnA?YbYRvdFHb;-;Uc!dGH@(P^vp*}9{$9s_qB_U8)ykz!&lYOcdTMq@j`|N zy9<6@A9o~Fn5=KCGmCOU0rdcp$diyz<058JSZyA;_Y)0De`#GTub>tg)sL&DaR!h^ zh6_#Cg_?$&Q{uW&rr||zB-AN^O*H14fzt19Dw+TRQqUQq1ebU#jZxVec@~_PI(j8V zszPHk=iXFP@2f)@NO2Hf@`9XZO~{^XNz1QrDi^qnwsPl`DFG>rCd6AjKH9`zlh`+e zRLd69c72{YMC8gz0x3rXP-0fnb>|uT=24X%$8ju=CdPS8Irt$svG6_#X_xF$g6jR6 za`W)99*I~oWZQv)=|iYqPu75z4_E}~BND~uk-Bn_`(RGMDVWh)cH~!IWmIYPCsy5P zjO-R46q&6Ck$V=r^O|DfT4>vaI;o`$KzwC1l3J>HQPrqr9qHl{)j+j(;<_j#0!V4( zTbqU2zjI%yipkrTslCC39%^Q_e{FT1j&dvaoANeP+p{gn zWGRz5c=nFwX?%B@9{n`2p*a35PQr>4L5rD*9K0ZU-|{ra^mVK%PO{h)h)sY7GL@km zXbwu-+ z`NI8F@#5t4O&!XBzv>FO4|ZJuo}giqjnY7t@p0r4K)BKfLJ=4cwLX z2s3~W)#e9=_2W(;>wP{gr{+0y?^fx^r`j6ENB%UBkb1mT#`$r(!A)j)>tlP|L0!Nmgd3P41 zU?#HFq!i^l_FCaER`#w|i&RqCDj2)r%j`nbj+Si!)}U&SegZpx`XCq(#sdH5a{30t zh)ZWuG<(@XB>R3s$cW8m;T%Own2@$U<;LBu{uYkrFvp!*;wrDuWwPOoNn1L!odZ@T zgHy>{-N2`bR>oXa{yby?mpsbZCOcF)tQhZH@|l6VKmR|-L+Iy@fbC1-&iN=Sr|v=q zj$(`|`{$oCc;FQj*Py*dz6R#_@tS+R(LP=gwz0|#;GAdaRrf$iyP_iLv}5QJdCB&d z*2vOrO`Jp^aZeR*#@ylh7)SHqe);)50N$$wtB?hF+i49!PcS`(OJazC`}n+EyiAjE zivIcsOd`V7m|y?Dj-w_ndrqgUipu$2&nnx7v!mrb8e=R^BoOJ_nlEZWbI9PL=GAC4c4c=S8kq|+&SUP#Al z8<36tS#Fb#*mj$x#d3Ttq;od481JL|ptZ)O6T@IS<;!V24l13qt&S$di5i^+)U8E7 zQ4Qk@ZS1xuyx7LBJsig_u`4xpQ=75jQs*rr@n#zOt&gsAx?f+odGlj_x3GBA2EKIT z1}}A;`(m;yFhaXE09Ti6D`M6)ZA zgs4oR&xCaYrgkNG$VVDWyovzHn+O6)^axbF0&%D13joH5ieaxT0mh$-cmP-lOy&L=x>4RiOLqG8Wuv=kU;kSXi9*l*I|)A$ zF)j^%_x$@JgCI*azghbBl6_M&@r5OwLo)<^&Y%`&Q6$L&fW@{ZzhDk6nk{L-}M$P-9=C(VD}5D9$Hx%Y09J zHTIW=IY-phB7RZZukbXhMc-CAOippr-9)6 z6i;Mb{-A?4IdJr+`)|VE2%L#N$_r_1F|6|7m!CgqVkojr`CJP4Uw)p?&&xo|^Lo-@ z@U2z}i1;bt|KjuwVLn`R#vjRX(-1S2d0ooX?C+>tJJ84dCP;6?Jr-eLRTlwFC-P0{2M5>-Xv&H$fqEIv;WmdJ zgqJAG!)5FSMK?ld!}vp=H|tT8I_4It(;vj>Ixh zylnGiB)WqLTU5rE&>2f|hWWOn?vRI&#{Rll$3QfwL>qR025OXInT)jD`fePzCbEhM zPb4KXOL4RLmc?WyTdDUq4FxPE`wDdbc4x5}Y~7x@cW(ieNX7H0SQURvs6t{AQC^QZ zc{@*J1QrGN7Pu2;XEB(>J#IrEZko%-Nz%9h&YkK-f6FfUmj4oISMvMuUZ;FIR6cyE zGuRDLW(nL>Fnd;5B$+e15^bjC@Iz(X8Iw)LrqRUhJb%{Ho zoKbvavgUk5j5fCx9MCi@ahOzB_l-6HhUmk$1d5vzvOxG1)wls#6)EwQeKuz zUH-?RX2C+jriE?Np`lcFRwnp z6!z1;Xp1pcNE8)UA4l3q5`tcuod-{+Q#}JFaY6?BQY(S=NvY^W(virwc~}hJY$+qOW86x^&zzDqDjy94eFKVCMJ+XC%gb~7m8A#Q` zs1NQaChFv-=VmmcoG7sND94>b7X&$-C+ngP1>f58V2YTzV_zxdExszu#JJ*cJ02MF z*in1)lu(~(uC-38HB~*>qEK}gr>Y+o@Xv|Wd1*!M8g54J`%;crOEO+x4_*%T`!I65 zHB+Ci-5*dUt~c8FbjWGgJDUHD`=Jhgb9d=CD<7j6%-s2QrzaK!Y8mimAJK5DdCgwc zH;5u~PVvnq?;h;FCG$r&G*KWHO=E}bWD2F|#a9xr`@PX%_bs$qMwqHVtYkvaraNNc z3ZtN#Uh|sVPgW`Q$7#VQ;Xjd>&I%)s@>;oDSJoZR!cVOQNsiEX8~SGXNAs6+;k+Wssc{|&1W|G3o_ri{sS3m@Uli=f<`oHpbvtHuKfHuDB!vOn^D0z`Z^|h z8mDNByR5Jk!=fcyLgCOJGjjw(KxvUg?zS70!tcv!+hqR`68Vy3cBtVBEi^C4=>>+$ z7oxxYq4*j4Dt&OLBQ=%vTik`NM4!eXRceJqeB8mt%^*PFOl4=4khA1sZrV&6jB+E* zdqUi~mm1m5O^skCIg#$fy-7%fc1GaWwtU7srzPc^jSnz%BZg==>Z8%YQF7ZFieDa3 z7Kw0X>4FJ+J+b0|)7wS0MCZ?N*uUxW0d}Yu6h|@i54nvXS=9U@EMm@9;b@?tQWpps z30pp4<_hj_8#;-7T$1KXPT>VsoOfY_m{6+m028@1kA@mOyQ3ixkq8>et8nr?7MbN{ zW2g=Re*bl22!RpyvKHC_VeXGfX!g!gMN7|*2D_>LL!iRa`g6}$o6ir1ujobZ08axa zbvWuoh%9{;RGSvf1r)dsTt0(ge##DgKJUd0nl*3(G;8JC!I>mJz#XP2JgY-tjIDs8 z#>s5c4frOWX7K3r1U~`Lk=*@Cy1hETWbD`QO0-1pWkW?S95jX-AVo){VXAcai|RGF z6g$~`?kwxJP!K)Z$hU{uc)SA`n=f{NRI4aTG~fBAzB#cA-80FT)LUS7!?-s(27JuN!m=&C z3$;T;YFhi<{x-Iuq5bVb0CWei+~9DyAJ3l;57|@H^UyN%_KfFh9;WWpoib3IXOp9l zBv4vAYU@!pa|}rk(?OtInjTX&;5x33@PFXx)mj&rQLrSblk z7;oK0S?Ju^k~gS6pSt_%onQeqCs~=~@LF|eA=)g)`ZsmtrU{{1~@P7Gu$>c-oM6C~-7c2#v2g?{`#1PF)P_;B!Vt04m3HA9~U~LIsQjXcWpCTp33gmfc!{cB?h{Oz-SzO^A zR>;XD@(HcP$A#GrRw3rW9p(RDnq%~xf(A33WA$Q%G zrzJA_^R=?%ZWZ%GDg{v7(M7U@iMksm15YS<@z_P=qTbP?Wx0C@lDqm@a&%lB?kRQS?OeXUdXDq=2d~WLH$d%EGvh$)!mcj4`UT#( zojJj{I5+!#>US0-eRTc$m1f~1U1_J*{_=~1!IpivjcpV-SM|jl4f%h(aHY9PLAcgy zb~Nd|+feIZ>+1f|XlKp=NSjUo7H$|6!VJme&?_2-V7Fj}Qg#Md@rvLrj>Gd>CTAKO zjFkE*f_9^ZcGA>tG8av)_k5GBpC-4ECwI*2OCRxSy#C}#uldXW{{QJ(-e*^uC(k$Q zPh0he{&xQKEY1B?-PuA!cP1=cOA23_v!EoZ@KvPd=*z3g&p)T7qvCHeCotip)x*$w zyKleeUe!G3jm8xF@=)8stVZfs)cTFB(*SgaXh9+a7OiD0G3>TwR zs_}JgxJ(^X=XH@-+%!=R6IY|+=*)x64P^Fc&3q*NEs07a3WL;sk8Bh`f+(CWa8a?E z3cOhva}%?Fz^6E8Fl`(#Nml4cwqRG5{3fmz8YQk|^#Q#CX$D~so1oa8R#6Ns4cP5H z1up>+AT9flX<+z21hODq)lIM4f*FlljJwRGOA>F8Jq6g#Q0;nZWu(~ zd)+&zWU&k@+L`8NR+qdmTC6nVS+rKGI9bH%$8V{PU9SRCG3TAxPLfDDV9oIH4pG4m z`$~N7kCySTU1{z;;=h%9k8nb6p5RE4$dSA$_wIEpJqIJ0lqk&{!OcCa1o%7V-9n&G zuZGy=%Jh;}URw=hxYP7vnYa3sP8c0(-GpHmK23Tz1J+hCIZW6ju+2ia=nbkDU~~db z%xo@0SHXkMZYe8=ueo;WXn$WmXCrXedpe{qVUEB6jY!kHH+LEH-WR*W=O{CH0Z_JU zi`AGHGjHn5d2r2}DbnZ-fLlXcu_mm93oYsL81{r3GzVlS6US^?ZjTE-CasEbV3rPH zE$y}!L!4ZjI8)PSp;+b?cdxQ^{e5d7>ik5L7`MGKGyxC`eMy9`qNN$7wu5$7TAL&= z1}*o9SbTAWuP%2>Z4X(CRq_IWbkm+3gsyFtw>J$;*9f0Wc6lfY7|v^C;d?P-AdTU* zO6CbeV1)m_-gzs1)x3L}d!7s74LEaEg2T*XjH*Hl7hGDc^dwn3oA6l;4r{Xr0%)Ei z`lD7fO#*;vL}`RZUA;s^lk~v0Fk5t`hy^;2_Krm;eY$-{^EE!rJQIEuwr1N$dr7Ni zu2j<_#NiyBu5G)`G&x6%ygPQgjq;VQWjA<KjE!nfpX3IX^uut9NyVpO2(~tTbTRJ`QyQ>}zTt4p*G^YT5|`mYyi8QSK?Z-01hY`g1E?G zX2MB2esmfH8&)|ag|o|C!sOx2hrO5ZB(>3j0TNBB(D~wgH3bv|(<>tddj62dM?oDE zDAQ4jm}{n~+%V}LheH`RzLEsh8YEpJyhQ7aGUNXYm}$m1JjPFvA-Z`sq<|2%btHO( zLq53jacE4WLlD9#k0}J-0b0;^*pTdWRF4xc*nOWAh6wwWiKU zjwwY%Kv`~F={R>0*d`}5VLy5Ju!J&*Pu`x%5jl4rKFnH2v7ET8t$LIMTn$ltR_x*7 zmk(9l4aPF$%<8W=S%m-l;zJGbxo>Rr2=qPMPH{R*1K zB4o?AGwfl1>u!_zOizX*4K$gnSo?j<{7LeW7@}oFyxtPk1|^O=k+iWYG>JFWm|2H~ zZS^6U6#D|CEa=FN&TNYW;iAeLs}E%J_>DQ>ZLts`h+4`;qT#swr2?eVw#eq9AhnDu|nCipEpO^dERYo!?dRzGj$3{8P6m{a3;rn zpfxp3AaT0q(5<*ZLP!pxNYQ^C238R_Dm9K(7##-!6NH?lk(i<_X{`Th|4@ck>k>}6 z2OyKsE6kVE1&bh0-`+5)iR$6OYo4{CWQDUCrwr#|At^uRSI5twSRj$b` zFMA;>jlz^%Cx3KU8J;)Ez=3K!I$nlOZVl|C0h)m~n%D&+qTg+)1>ax_i3yK^hMSa}FQ4 zADf_Ze{&RayN(VBP@d=qEg5fJg)&GqZCt87vZEO!WD(89d!2uqBm zt#>m>CUBS_eAx^Hu-diJ-pNTj2(sh^&I^tJ6Dm(DTF^VoJAqeBRS7zl1f!r84Ua`3 zo;ZVU=e`rG*3aN6MnTI>vmM^Vx>q5nzUluHelH(+EJ29 zCk0M|$12E3$9xWX@tp`-duX=XlF?#~EI^yfzv|->qm`W>&VWRCV+`U?1mhGYKIVs3f+0VH>2O!9I>ibq{Z9^z=#VZJxy2PoL@aN7xPvV(qT%Xg~~BylX4~r8R!8hfGG`>xSSi~>KKuDX0ynrc@IW%~2e(`a7*PS6<@o+*` zSX5&;8n#K^lWe$L1=$t{H10}0va_)zjOQaVa#mF>-ubOWKXqr~^c-1shRIr@P~dGr zx?7#bqcZHJ*meSG!oI=8vF#wsdO%vOCYjW1n^nS$%O|xw6H>-pMR8j$6w5S6aZxD( zmpaE6afGHcR=R6PpdyjP$rRfS$`YdR(%K9&(xi+^YbP(Na{!vPBl>rN6ec@T!i6?e zSrBg&ZOp7u2q{G6ye22~6~d?1^u)g0LT>AzU=f971pzO}K=O)Q$lS5nUPdQ$A7%3X z+U~EvTldFT5~v4dlb*H)$#W1m$rZniw6(5YtRR*QS|0=F6%69Jxj8x!_r8Gb4Y%4P zz|s+bgP;X{#d>(7#9gZ1{CnSXE|tN}6xCq%3nH{S`)%*YC;B)r>VB5TT$BtY#TVO^ z^&RXhFk{{&v!yAAE5fdv|6rT=oI0nH{yDNO;R??^wm$^07kvcfK6eMa*s1)^pR16q zoO)twA$_{2+~R!j++?|7bEYVOHgkNB(f*MnX)UOk?KyMKEW6$fOAV&9Yy5{Ls9S#R zXqeC`Nt>a_W;0?Ly|(mjuiZ$mbw&iOv$r>GFM4)NL;*!?jC1qaVm@vFx3krQGoTzo04STH%U~;nBCWU%mVp#XRf)|e z_tl10$RT*Xh4hs3H*vt=y>LIGX*i?_{;G^R9cmJ3c-P6Kw|Smex#uEr&zr+KW% zo;S@phi3tYeLrgn1fjC5DPh`|H^(Xk(iuN@)e6sBT#9o@7`LVqrZk;LeuvstGZ%&@ z&xoWA4T;}Wa_}xfzyXZatxHK;A_YKm*xDkj;&mn#KVQL4Z9NS8u;PgUC+>n(xR|K@ zEQ~W2grs~)D=1-+RdV!TQLfg@o#a(s_sRPXb0H2EqG+BE4n^=x&~_n1;?E-F?DThu zMa_$;X?kumxK~DS478d-sD%gyKyw><-9_>n=8y|y4yz;*I9300{Olu;u>Sp?lC3N; zJJr5p47C_y3R|D53d994a1*>HSWft+>?y-?u0_m_rh)uVmg@-GdLS#BaFGNIBXP4q zN()oBynAdH%lMRVgH=LX+MbNf?1rAi?^_ID&WhBdWxtjVxe+?=3X|hrTL$fPpMt{H zvYZwa91N&q%-;-1L>L}C{p{#fHb~nJK+P~CvR#;L8;h-(RoEP4GHH3=K?=j##7*D# zD0?5I!6n^+P7czEl{saZe4=6j&0XNOk|5LYc;R9XN3i|0?hv;%n4A4!W_viC@fyAq zo_pRq;KLJHp*V;apZ%n0S%F=;+6W6qR?L+VZ|S3cI<5q$5vSX>y+*#?n7?BPoYSZb z^ySMc`}(c&XK|T9(O85o8(acJk}azGMqkRl)c%TZO`V@(H*n%5GbHtFhr>%#TFMf~ z$-%#4EzSTQY>mCF;h9})qSrh`$F2UIe79=!>bY{oZ!D@&SM9%V72hKowps();a$#m=;&mJ`AP9k_mvWIk#M!Ys zbLV1X`(ySADuw+=n!pm#^*8zNqi3_2fI)g@xL~wN4jys~=jQ_h+Fch4{qffXH7#6H zgYh=gn{~9DXbge!UH-psLpLTfi|S$f$<27u{`#Y^RMmb+JA3WSg;yh0MFEf?T+2+V zMc=d&?BKAVUO1q{ucVg4%G@5uju;%uWWnK<)}J6!&U4ASq7gq6CTSU1iJJAQ&LLTy zkcd?tVpL@lt^*{UZpeia+l$H{!&i7+-gahKHA@3~TcpX9MT}{WMjWl%L(`WGwN4cp z^%1M&vv#2&%|$?tJNU;=W#U|ShFhng;e8!x`S_Z@bJ}wS?amzyoG{toP<+qpCT{pn zZq+DoGq^wX35k^^2$jUQ0t&F6B%6${cdB&l3I}Y#@N80+B4|ChI;0JZ=GgWvJRJ$t zxM^Ar8x;AM&{PY>P^e=~ikW2wWSpCuCynvcIQ0>{)1mEU-cvnyj#*-pH^d+2E*j7i z4&LXKQJIUAaqR5Tlv0t+)q?{f%_ht~{xz1KTrg9c!1s{rzg;f*qtiHFs&bnY(^T<+xKczDq03jF3D-K#8P~hBI0RNwaW4XB_^rqgQ*)N6Q!L zDP8#GXOoSZzx?z6cmYL-gP|+*N=82)!d3QXf!wjt9xJCGT|7@4K^wM{<8YeZctQ=_ zMQUVTo7!Wu+Gihbd5#t%_7WrpZvN;Rg*&>Ozk8+_m2GF+z#D40sN2{$W9 zA7hUixY9mZHard*3T&yqnqpEcEg8y90xe^QflGD^i$&_S3BX z7z|WO3~Lhgdz`jJ)DjO*HVDKb25KQxDS#>r)gTUwbqBh$N#Y$59wd4?bVuui zY+0&PMoLPbO*sW32y+?6$r?v-%*U#-f~Qoqgi}P0olKMh+i`pq^yk0Q5>yuJ8w?h9SXmt)HV$|kvff2b+&?hBng&KGH41c&NpsKbkJTp z815=KuYx0sK!yNntH`|(TcLU+y!we{l_AqOc80rKmH$-fgApu_MPyQ*L z%iLyCLJqgmVmVq{VF2QT{k+wy)Hh~}^k|d= zC5(*PakI8)ItqZtVGtxP&q?xMWin*8ijjkNMJvmqY{{quLMCAhcqu*2A}7;fgXFjA z_0D9~PPFIT^h%@arLC-6TEX<(6z#x*dXvz=DVj`i4zE2dBJU7Rd?gV8HLnN_C|!wK|wNK&Fo4YDY) zZLz~sPra_ZGI@;VnBWP)|9*Z{AE<75Pi}(Rrf%f+ysxYU=E$H$ez38Ye-yPGB3C*$ z!&HM9Y6-5%6R(uNXm!uemE6R14q46N&jo@`*ogWS|FC`Gcn-Fjh8J)*k1$2=Ra$!n zW<8*@=fw9kBZePNC|{PuiOMjFh?AL=Z9AHaktwMm7*6TU*4hVYDr&7A8@dbxJI;Qm zs-Q!nnazACn~1-x&gG23&7jlE#JH${k|&Lop{~U$_z4lfDPxjEt7ll?at2bug5yB4 zKP_sTg>&@zh{OV(7ckXO6+UZ|Gfoqj*jAdA51s^de;;#i%oG(0ApSLG+W0yN1^#^- z&t(R2@;>i8e zVZ0zEhr;SR24?^M?m$hf!D4Pe<7IH`4Zcqe(qdGN771p3LnHnzp~PTs*?a%|!2=#9 z;ISmN+3?$xBi34MIxfT@lia~zQ-SX|xd$ABQaY-niqhEEYGQ@b?ok?Kax2Fo$A~KF zuIgC@7NTX4Ly%oUPtcQ`)tUI(BwOAvT*Vt+r2&(Z0N~(3X&=g%j{-Eo{4(o9SU4o3pZ9Yfx2Z3AP%JG!&%gg(lud>IH>`5mhNqAm z+#HFC{B|=NVe+DqE{dJigXU^8^OU;(@(t>z^;Q=dAOF^Iv^_huFReu(cJIN5qkpH3 zaN1s&b(bAZMzaCoWxhITp)#i;YWArA@ZsFW{eAAOHYo;Hd-0(6`jIm0%uZ-7#YbFS zre$mKaf<2S2h`f9l1_0Mcea_y6n0O~m&72NTM=#t9wfwxZ*ty$i|clZ*F#;mT6L{bM7!V`en(PzlAiG390}{x<}Ufj*Dc| zSQEuJO$@qxF>vFYFySlkq?*dJ$%h7hw&Q`%uj4_QFPEC~!}1<~eQoo8En(=Df=qpi zAOF@mjj#CaeT7SQ{@3^kV7TCfQcy3LpR0K3~tU7MSFSfAWu?lKEr$ z1NJ!nReb(1!&)34m-Dh{7{86r#)tOrk25T49l&d)i7%5iCLuM=V!{1~*A@Oj58-QTL=;u7N;^OhiiQinjIu*xJj z|D+taiNAerq0j8WL`fR(T~Lz~aS~YVmIxhD>i{u>UoHz;qRkLvLf|u_cAf0*7HoWq zrXl7yIpt=+W3ZtUWjBNQR*3hC+=%~_;FB+!Cau>zrMXg2A5)Q~M|?*t2xbvE zbL<)v8+P}?g!^}51+wN;=}q@bG(0Ov98(<}Y9-Qz80o6aEzi><7-`)nQX?0`1^0Gc z1vMOGp|IMPm6j-#FMBRbT*Z2X4*go9Y_~qxzUe$ch zk{W_eU-sX6NkibFp+~{;$xS#(0y_SWMpVd+`mnjL0M59^6(90%mVM{c2oA&+IyoIo ztzBq3xp$jsY{c5N)^1^GCM{e5O2Y%F?GYQGV{xMGFF(7ooVI_*_^kwuGiWQ7lsQix zMPMl{K{E17&oh>iTv%|8Z1`ei+8~5E5j*SD3sq&RSK;7H^H+#8p{A>ICvsVg3~ahU z`Hr0B=PHT&*7EwotkWv9U@ugi%T}gWI0hJ@#bJYd4aw3Jq3$CBdQlE3%2p=t_BjJA zb`YfsoJuP-EzR~cDi{{+TJ@6dg-~N@vmK@aJw~>Wrax{d&{t&Is6JEwLbeP@Mv@xO zx6jAFlwh>Ue-3G>{rIrA#ULygl5yl^Zb4p5kl)s?>Pta3vCF2=g1orwkk?bk-H?}( zhIiXXS2cQH@k*WuJD2lzg|s>`SXjD4Io)uCfq*;JhwsY=&f@YxBP*Z4WtiA%ONj+o zr3HqHlE+vK>4Ji5Y?giKOhMHCYfcvDw z-+T`M%g$?9ttZI1d*O5^d9rFIp9J6xdi(g-N=E;A-EG}tYd!wb)ItgFY zhcxGY>LhjHbEC1=IK40iwBn|WY?2@0g0hn(Kn0d0NNjQVa;lK-FnkTzZ5e2z_G6yr zB!1=7%HI|%Qw+UADnO#&Xjd4Eb7;v_;w#ZE@M4Ezde{ZV;_qtfStk5ghQwaQS1SMu zwyB~`F{;YwA)?Mt;J0S5x5HW|gpN}H<<<4XJw!XNV5VY>UU!SAXN!rgT8evDatppl z!3J7OMs}7jaocu6TNbT&t1Z{A*XPp(QYJ~qK1-*FgSa0@$YW#AC1_UJcS12kV1gAb z&yTLnQ!|wtgD99EcPE9F-|Fck7VaGoCcwpRC#mL{>kJ$Jp<3a|KMNPQ z4CqwG0y_;)0=RgAdxZeUKl!Iyo7d@e;t!gzsrfas{D>TX)ehtFFULP)JV4VAz1W|+ zR50GMDhe|GsC>S8fs2#Iz;&zj-QN~S_Sc6O!kMfs;RoTrt1ST`j{lf2H~!`L=hzbU z``t#Wx8tvNeU2^B2G?aN>-ug2;@@aX)T8U(5++4X3}@_%fAB4l4(D3N{8m0A9bjnk zQZz8?v_1VYXtiuvl27DH>L0$Ab%eNu)~SwIQp#H=EeRtVBCCpaO6~N6JlhEDa4Z5{ z4UAILIHoY=S4Gw;TM^cc)`O6dT&xLE6@YmTadTrXiBMSmDpnt&NmPnc zz)mtN z*cr1w&SZ6s@yI~aJbg_CCIy8>g&}K9d7)6CyrBvsr6(OkyAGk+Q;{YXOz!ysOu8Om=u3N(+3}xk&^1{r-3nDv0B7mxa zxO``6e5s|0lhYtf_IjV0k?S{@MQfqo!DODm`%?q%r;)cksp!38yjHJ0pB(LuHR zRY;yvfUyVji%26bzqI?CVhjpFA)grqtc)b(b43#~i&syJ^Vt$$4|I*4m)m8HJSjSn zaHh6UXHP6B5(alS#UoEUR!ZfOKsd#V} z&$y{m)K$L-DATl*d#7t6##UxLC@R59)M~UE)+K^fl!$){r9+V?6TA4y^=H#JvOP=- z(>j2x>}a}5#@4F6drqKp+dY+T_jO@-R;2|r$7SP&A7|NkdUAR?*c9v6f)U)bXJ%wm z>^66Y7Q#cqeKsz(vJXk|c)esL5!WAG<4X301unVz4`1DDRamS}jwOqDkJR>B8UfDlHp0I{rSDTGaDDK(&^uy~D$UxgUmYA{N^+N_3Y+Hflf3r$2$D-hD)n9%sP*jBZwLl$PB?ez% z@cUj=^zg&0V*EPfNRP7c1Q?DB%2pkb*;ODYKqg(m9nBPRTpGZc+}W$H ztnN(iuf%lu890&gChl_Ipt%vsYGrWDQ871al3U$;tXN9n^-M{R>*N?LnWl9%nRi8c z?HX0v9V}wK(rv}MNjc!Gr$%j#9@cC+ONa5wH>%dXE_+!AsNl;2>&N1;U<_6Vm@Frp z0B1024FrR(UNGxedxei5%Ux~~+_E}<7rhW#1ei-mNLaG%Tf~;sFpYhlU_34g#LsFg z@6rF$W^TO^^*lCj)G`~r!Qt^quiv*DuPY!Hlw}}1Yg}VF2^ev07JfZJ6De=(I70Xg zhep-C@Pz!-w;NvNjzez@NttYk&gn?8+($&s-Rs16^(tlKa~Mw)l>5f3iLi4K%e3IO zA6!=$Pifyg7>=rxDFkLqms*iv#**fgA~!C34G4ksm40Y3at{@eR&o-fPJox!G12s( zZ*Kyys=VS_i?Ww=yDJj;ciLtM=ET$K*wal(mZ$ohs1_8S7j_{S^+#8{I*_GIzf#7I zX+gT=-ez0)Mnc3>`yE)cu@Vby*6vDjuI%qAyP6fskVBNW$pxsSc8Q5ahW1EWpb*sG zC6t5_Ntuzx7NsgnOC0%Jah>Tw4f$eoxc`m8Q+GnX_klE(RR$t)@v`OtUNTd8X`g!Tl!}3Af+El|Zo;)pp5X zcx7v^x0AlNuOmuOy`W`~C8i)k`?=j*k4kgZGjiU*C{dScqu^6-+%(jUQ8lTQLM7v(_A$EH9qWs z1G}HQp3M-vGOeLr@UdQ*I##tIbW*>@f9zG{fQTNw$T7=85mP%L-g3OPKKr=m?>K*( zyC`9R=1w~N;k456a>od)cj31c!J5Y~KhG!#d;O`Vml%_Ama!FpmR6L$Ms*@v^JkrF zZYgTB)0X_nR5YG1xgBZ$Dog(C3`_n{rNo;VHaTUf__uS>RS#;)ns<}=#Qvo^!--U1 zcxI5Pe$Os9v)xZxY|OX>H$k4*%NW(Giz&O|tKOb$u?VzOy;r;VarS3VI};48;AWfC+0BIMJWNI3oY@Cv3^Ps z6Wuv@+%Q#lW6B_X9#*%77A^c%o!sXvJ+1?twa31$DqqI~P>U&J)Ibc8Q*qcqO)>g} zzW5lwJ2?4R%byGxKVA4KiCZljnlU#otRGZ6v$>F|R38??j@J8vWVrVRBQkd8E~?>^Sr*?ykCpp$q(bJi z&$8fZ;on9%xlGC2?0w1|pm)W47Mo))UWF^F8Z}!{v}aHuyy^XP)z4b96ke?Cy0Hix zDtJgSOo3KO;<1b!UKdGFEPD3oNhu$_ef4~}i$FO3K!sOv#j484W6b)=nDELn*};%e z1@IIkE}@?)NXoHJm*^&ywVU)J$PImr{7guSGY?3%G_1N=xNw@`_b|r<>4$!~AUvly zfAv9zw@;l=JO6Y(d?Br3s3{Q z9EIOe?6?r6G)e`Y%Q>WFk=JJIvPK_??0IRuCXD;*RQ>I!XX9TVW572P@!!dWpUl&L z_mbl@_6@Z;-cpIt;!I{rf``Z}yNP(JSbfE0rfV-Nu0e5fu3O7YBbn{(+o%wtb2Kpu z!jRt(SbfV7x!gnBR#w&mVv7mui}NP{sFs_=@7*A=8; zzFH-ot#QL zvUA=V==)x?&FGwmgDrX+nDaDQ202_|=!(2B%P}RF$WF?l=A=7ef`vcA;r(=#I$Y#O zxkWeEjGLUBLVTD7Zg*U`c7O{6*VmM7lWTPlQnnXCs zCGL9YvSSm;rKlGf&P5BpPF1K&G4x6nB7XV6t~9V*bV?%f-ntI2K(@V4azcDTB1HfGpokL&)^=$PTtB;-1K#M$nhd_)x@)c z8E^`$u}bRJOSJNVxFx5nx9HY;wJ5obs@Iv5-*MR0JA{>;{FYy1SiO~dsut(OKl`?1 z$Is4ZX7%@~?of>`+uQ?D@w;Q?0!Q_4hbq%k1ymmc?ulcs8u&C?)KWd|{?p%?w)8%W z1tqf|Gs}gRiJ_jJ{tm=Zq_CPJTeBPF>FBYI=Hpkc9?-kcXT0z4PS7dFn3zkn?E39* z|2p(~+)|zn7qKW@!&xoLRBCRcyG3E~sOz_rkLlZ|L6Okr0~6cQ1)$Z~vbC$Lqx!p3 z?!56e@{Y}fR*ngMjFERE{jdMFW7pQx>H6EJxJZ)2^gT5GUV5k0xEM#kl+QsaXV|{u zUF-8Zu1X9lR>v>G$j5jwZvOS_a25z1Yj&2`-?6RtTFR8XBbXCkOZ{Z>iba_A+ZV^~ z{AJTtdp28}Pwet64SaYlu5y;wyW9SHE9#Ky6Scd??r;6=a-w#(s=iGx@mZcJm3=x%J*eXX9%%v9HFwm8_36z^NT*GFLHJ)rWtIh&VHMno2g-nj#^3TmM zW3fD#jKbFavft;TEaVaSW74Prh-q>HL4(mBsu;R7L|=uf+tlYvN1^K7Gy z{SDdKp!>OqH@oC+kkMg(-);NmZt!B=kab<0TZMPLm$x4HTG4a3#T0Ubfi&hb4(jXti7c_$SRl@%0}pe0EQFkLeve2 zAuL2PU3{?^l@Ib4*JI(##q_NgcM>)$Bc_E9Li}#U%+*iid4!*wWZ%>r{W@Tbo*oMe z9mujrLPnK~gH06UDwk1IbBqGTw!U_uUzDyryA|^8&XAhyFvNYr^H8S~Kqlvh(_(b4JgXjvK7Sx~6&6Bhgsj zv)4CRf(<{Iz`J7rGq9v;;EO-+dU7LRSlDL1*WR8{Akv86ld&5t~XwOIrW z*$z14Gw+?ELmt=eG;jJHOTp(u3BKR-wl6*DQSKgU)NP5a=#vSM^rW#%307 zbauV)QRml-vErRziy}X>*i8fr-B?+O*3+iBuwcuXr?(ggoBG1X;|Ph7w`q0Zm zsefzfR+Lob)FqRa#AzGa9C>!to{6paOiYVt4UygH0$2!)A^n9o*deoKq0$7^Bxv49 zM>hbS$&CZ_&O^!bw<_QrV`F4M(^=-NowiaxF}{TlLuQcF>>j?hf*2u+z~@I2;TXRuYN*sU zC^8H5uk}vbf^-!ga8`ffGQsb3Msv9Cye;-i_ zPH!1bYu+-)y-7imbRO!dTL+Ag1f{pD(z=LY>AEpb#H#yt?FtCL-SM>OFYwzRm|Q%O z3|$_T2&(-%D|tndE@*)l40r^T(Kcoa@`zpxv3O8Wtmwk5`G7z*r1?N|k5O3Y+MF92 z6dlVRAZw$_TNR6%|C0 z$Zzm{(ivjZ>_#Png>M=O_-N1LFFb9riUnajC1N7r=BSX2h${+*;hq2m376`aX7(v< zfMwM0vOF4xvjyqVW*@Rpm5NlMp8T??xT=2{Be7Vz(#Uv_t_Qo?d`hJ}lxwXoF|BrC zqIS90FEkPq{W7FBk~E|?Zdf?1HoHTXRRCOysYXN8gi#-q3p87pDjyGJ)s~Hok#4;) z@M+sPC7YeVxypp{@|a97!Uux?|jUQ|JArqtd=h@%wg1R~RXz zN;KrtD`Wp%^C@>8rO-+UhRBhl5#^7ytz?U&Y_O~*grI_s{F<+R+R}j}GitO73UgQ~ z?^;WLG-ABiHCKt2O3=1tV$0Puu<>wDpfM{`3`H6QFNri>QM&>5S*__8i7(lvFv`ex zK9$?AQygqDNx*xUgl*uf4Q38gfGJ4>mVSqmAMAM#9v@`H|aK zK z4+#}3LI&aA9~Q1GMbeI7gZPfSkCMb%Ui;IKKkc$+{7(GovG1x=AQKW z&p!C^$(#A_pS^d@x#+)cSOV2CPHGhJz_$p01giP-g67_z z4v--VrWM{T^Xd1xyY~rA8HBAudmz4o_FWseuWVV+^4ApL_+uC*Y7_qwddt6gw%<>{ ze@mS)!*88#wk~#1ShH=Io}>*`J~m$ATS)o#!vo?<4;29oh4FR%iVx7YjwU;BYH&#{ zvI1?oQLS}%fZnJYn`#&*UsU8p^Qm}$;&c+y+j3RP>j#Cz|uYqlW6yRTHB>ac`7nYK0ew+mC-G7E{_z{aB;&+C=I~}4bc^@jAAt0`ASdC{Q-~@4{M_` zw1kRF9IMjclfNMYC`*#xbvwcsWB_Wtic+66&B11V&&Fn(&qss=QqziC_Ht_gYSpIV z!~p4V%~(?Vu~kiEB%}aur@zaM9!M{#|2)afqgUiJm{%w*7GW9N8|K(@jG_JO#DgE;EEz3Xix_cUa%H?Qo z{ql1X;Y1|supMq0)9u?KY)JkxG#g)=rp!G}+#!w^b2n&?;$ynDfeA>mJ?IgxB{?W* ztx@^JY0^jHl7H+-lbXN-0)#R};)P~Tci|*4K%;upf6;%FYmH(%8CiU^YXZ)(FPK{{0ZKIFMPW07nneu-EFr!>}|~j(9dxnF%iC*{U=Oc zSNHcRZYIImd=KVqQGG@Y#bL&aQzoAQe}$6rG)C#{nH2gA`CfnT#o>;Fymdi79ymS0 z`vWF?{SyVY=P;WEK3fESia&SH#Xvp_9AR=yr2)?0NqnzF;~($KxGn%sFclH4-@qW{ zOG>|TxYmNVnQ3;LnTdys{_u&pS(;}&m%pXSFE7ROC(Vr;OE+o3|H2e~qdfe0>BA4( z4{!QI14k-wJ;Ds&L$&#VVg0xh$aU8Ejwm2rODZg7)X z-ul=ccUipQ53&}KE8|y;Ya<(r3qvKeb-a}(XnJ{>GvD{>M#{%|`_?mZ48Sg>^kCfPG>7w3AW9~*@S9IEdNZ)4M5|M< zcJZ=cg2u;<$;CIuyz8iTh?4I*LJGa5690X zoT43V(%}&JSxBc_8<34X4+JN92cV_Ja(XPJV=h4%@1y&i8=H|~FdeexFdPS!j=5Gx z6Q_BN&I0Pzq916cnlH4m+n(@Z8@u*!9J{#xYow$$W5cCpQ%3a7H1t~^UFUGUzHsyA z$NX+#@um%Y>BbFS>N3gxQC9^3goOj*dB`S4?`=n2PbP zI+9HuXdlUFV+h#6`;R|elc2lNc8?r)!lpNvWc!_CPFZrM72*{Kf*mi#R1m5~8(cn4 zTIctKbpQd03&Gp^BwEt*0ilU<$(XlnR6C(`x>lLUAy0Lzcrx?I^o+L8sI%=KGpMS0 z*o_f!(sycnevX>$R~7n`r9tWJco>S_Xescn@G?C2>P2G`m-aTfM=B%44{S!2bQB6> z>J1HW)EjL1vY^dlF5!Fyo*B6Hi5}!X%7$s96GOW~k98PFUUnBS_W=O!xvtCLkhZw- zUY<8=gLjf_SozJfkV1)Xa;|F=ipznLa*!MRI`=FNk?G;FQ2Ug4VyIzLKVrpzLznHr zBgzbSziaswT#4Q-CL7UAEsvlC$c<5i5@w!7l3!c!xSQOL|5oIU&>{a$l7-IiOT*ti z|GpgXWP~@rS^D;peN(i|g(Wfh83NO0Q2DYHkPchHp?saaV<*{9Wc*6J ztL9j-;WGyA;9#CEr%+=?CeN$?jjw{@E#&ICi*!Y;fg` zq^HL4%7b5i{-B8w$?{ShU+z};<>&eQ+!lAdL4us-pU$wnJU~>1atygJJi;Tmz9zBA zOclF>S1Rg}jt>g6n*!H1C%Ou+H)XGjTq)DzZv67IIsDB%o6P09C58Xs)%`tP;Dh2- z(T;K3(jfuFRL8;=qU8;NaiWQrY4xEf09VDf+}?Q3_# zm$DaXq;^Gg?37KiW2!@u4P}vkUWud>B+DQHFDI^UN|$+Ap3f>iVk<%!whr&OnJv5^ zm0ZK&z+(V0=`C(Ljp8qS+#Q(Nb{^IC)$N%NX70#2ZhrO=b#r#@Avf|4K(sAIJ{D~m zwg+$Q3=?E2`Bn781nl{lJ7O(kR(LnDBLX1s5O~6RA+l(NHOoGR1u+@@ke>ZQSw@OM zSJ1lKZ;LG>>*JaL6qYkWt}$EYzZLU8ypyEZ+E`KG{FS(}v1cntvOM&+xdUpzlQuTtcJT@uV&^Z~M4a*8x2th6AufvUP&y zI&ACFu409Q80e6kiS+RTTO784id)H$gj1}fF`XT*T*s59cr$kos@9(zUS33~QFTI* zSD=eN0A@R#qg0MpU8E$&4ywHRRCd*fY*^RiGru zSL7+xnObN#gaH^?(D|T~^L#uaJCxKiH#>zUBLD%IV~w_f3tIwS&og~QaEjoAC6{sGD#=68eph$Py|hbt14 zd<@1%$Sv$aeIv^Nb^+~6MNaAlJs7io4|QGLWtF(gWl3QLFb%db;+LYx(>_Ul60y51 zc#9$Xm2+->!N-zopImO*Lo=Un8k0CnW7k=bT$+M62{#9=Kuj3Xu>8k`JaJV>YM0qM z=P5lKSE`2vN^t3NWt|+44rX#Vps2!23@54Q#@7EPBhu2?xe(K9pC~NXHP*%iHC=>G zTqe4ES%hr5sh7Q)<^6Q&rq)T>^um??7Dep=IKH>#5G!U0Jp=&thYsJun*(QdJvQqu zwQY;XcASHtSHnZeVzOfZz(Pl%laz6(Z9m*TBxX_G{!C%MlzC^7fhGz}r=1ZSVIVk> z>08~ef4TO!dHmq>^>0@mtv3Aq@X>>B);?SPtoihhJX~$=K6v=YM{8evx!!#F;NEAe zj~+KG_dny?`|FR^KK*+A0bk6lJmyU^$Lrb3{XaIV|KZ`I)yI#U2alSyuO8l810Eeb zTDiZzw)*%=vv&XPy{|u8yZ^qCf{rxeBOMu`snVL z09yHU?cUn@A8k0FudUx#cc0VWO7n2#(fZomukWoqY94<5=;4FM22Jz(Z0+&gdn;>S zt$s%Q<9+&VR=-)jzur9la^>E=(@ytO19xw2<GLMQ7h>Rw9? z;&{y8pML##O(-uV40Ut-z61xb&ZyDPk{)%~n_aNic0WqR=FkAf>? z*lJv9zWs8Q?^*WyX?p9AR)m=x%>2)aoIy9M+pK-wtbFzjU>LYH7Br~h@miuF zzJ2`l-7gdNwKJ|=(3aMXLAIgENKdsOa|vvMAyNY7T@~$Yp0>o!+zdbY0bbx2d+1$T zkrrzkZ}ko0XUYKRPkY^k*4V4R&pf+nx(~GWd8T>B=_s}^c{Ei1%HO`osXZ+P1wUSgOUdDME#B1`O11@Hk< zzyazAXA%_-bk6D?*7U*%Ckf$^;K=$(znb4;E$F@CE1lUWrOidwQ&NUneJ;7#&fN56 zyj@;nq-v>g(Xs#B)t_@>>}#K0nta95PxT7HNa>B{QExEnuX6b=s+12TB9-E92bL&? zn)|eQI*5Brd9thAG9f{2+h|Yt9lM8V1N|%&`j`uZ5Sybp@{6JIuR6Eyv>xm{etvMQ z@)tuz(O6zS5fITrdQ(4k6VLn|n-n?V`aSV5uYRI~(!fjQ`)ACe{8W^o?0$bWaOAy$ zRDVw*@fgXCp@b}W$K2fbToZ&eeD5a4@zc3PdM=TkRYpFSNTutYOQh!#>A6Ju_mfD? zy7L&jYX8gL=>G8VQylID7ZU}LZ5{tmvgsp*ADl%TJwKbztwm?HU!9-L=V$Y|wdmYh z^!K$E-Rr+`Q@Tty|4^r}jqLmw-aB{N5D|Osw2>Xkqg2nGHs?;8bEnOJZB844yv#3g zc9+eh$LC+qiPIYOiHG%s(+5}1x$bF z^71xMSMA~4tT0%DPs^O1mOp2Sv^&p^C^-s5!=GnID8oCl$hz}2&i&oz{_b;s_qo6O z@9Xbgqip+&-tO70?EhMadOg51Y31?{R)OjsVm=Y1ex4Iy$r3%byCgAXZ9Nn-u%A=E}XtEEK8SXaF<*`Vn)9cJ+*F?8Q)$pTbK ziG8KoRq5a>zy6zxTqd+dS_nU1`d@R@p`sQQ#c(<@bGxB1lC8boj)4s*9IjOUn1mGB zqy{PFn0BYw+C=8YryaAt(&VvoX#lnC$+S(w@XzB(s2_YV>hEqZFS8mYC-x%MM97qW zN=osD*PEN0z0;`7er|lJxtdXJS2eF~>6YfeAq6}AT4r5GJ$KPARRdxS)86=|M-epc z1Bg=3@vilL^>#BmH%ljTvlNl<9qk^@+SS$$>d9=*pPzl!{I2Qx_G&Y`JWC10*;yN_ z4dKb`p{|bR9iHm)049+h*e`!@DP4oC0eMQW{<5;v<8%0ovRvcyey{&(|BxHDRitM6 z|>aiu0UzVP;1S9$Yh!bT^pq!RkZuw)4^!N67Hw0W6V<%DX$jfl$B8n zTL?So_*FytTDW58P5Iq=YITiKmNHN|J;v% z?#KVT7C9=VjXo>a18rMt#RytsAi>C-PBAn~b+Pii)`6#}5zesU7Pjg8X)q!j?w_Sh(cd%Fvo zh3st)y>O*;o!)cA87k{fR3Obo4pln7l=ftH;A-=ws{9zNzlC;~2jxYa7b&uPjUn-r}k4lwR>WDJNDzy~1MS5u<)jUeKhkFqwyC*ROLn%$@$IrRP zURCXy>(Nm(IH~s2MuL5hL3UPvG6#{}u{U}-*l*^ns5dePj2psdOnnm+jvt^#^@3`~K6>2M}TT;W9W%aZ=>ZN{y*RD?k3W{+fON z+O?~f>o<5|uxFK&RJ9WAyW^Fom*=kj_;l~m<)@dQUYl)rVGD4(dGgGq>dMFENRG9q4xgc}8BzPv(A`4L<#Z(zm0Ax8*ys_iU{?)u z;{)ZoQ0+GifUP?gQ_{|4&oQwxu_E5)UdWnhp0

    )qKO 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

    Xo5E6B2!Z+^TvjKA#CfFYyX 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

    3G3n5S%nh{^mY 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%0A0$*D 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%0DiK1ImBC{1kk& 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 %oHvs<$L3QSPz@ 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

    G^o4!mU6J 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¬He= z+FZ$sAMj?1hC17we}A#Qt;NTENt!>sWNh7vYwI<>MvQ6C)^tpk^^)X+|3$xHhTpm7 zQ;zY<(D~GWQ`13hai^yJ)zcKtxSiG!6_n=|4?Br1+NgG9t!O01m1w<$nte@5|MkLxS~OwZaaYYC?IIcdXuC5;9J*b+$eI*vxs5 zWk4qQ=Ip_Bf%Gu+)Mkk9*v(e&Su1z4aEZ1mWywyz#%1KQJmuUHE z=|w+jPEAhifedVQaJts#alSa${%Y!Y-K3aqkqSjrP}3Wn)}RJ&#U{~=98MQA*bBj{ zlk;Q%@%LQNyKEQhW-i$-iPd5+inikATwT{AuC)Ig&6fw%4gUl=*{f>+3H#=9>y5cE z>#KweO2u#Or%y0|`PUG0jX+lbHSpJbxCZnojc77VGw-LY_~wKExPNledGAj19sfBM z*7kp<#*3cF6$8lRAd_k^1L=P%U;n4M`eyO<$%x04oxSA8R4|-T=FAf9{A89b_Rj4o z3gvdlSIq%>g*p*EPZm(1p&JZ1w)dqjV+>13M*`~(V6^a*X}NlHP|M3oCu)&W1*vM< zg;gspGmCT8tc`^d>D$VTCuR)~-jNA^ko^tg!xKDXsW=yfJ(H8;qH5%EhHWed&085d zd>-Hy>WL77F_I1|M^}x%<`l$OCJUc;3sI!pn@YPNzAXSt*$Z%lWNL zBde;2@{kz()u{JjzWpcY`q4Z0vISiqUril@!~7|EYxr51YB~p8h5^Jr3q&3;-e-uw zT%^9D66^)oS?E3fo{DRyggQCn^WbHuhv$L?p)aOL`|lc9E?H%Xeo2>E+ST!b1D){2SOvAf4=(SE$A70BzI z1W}-6LTBa(=9&di0363o48wlIO!&|bSv(uOk9d9}++~K7vH8~QM?Lw$kI-$s!tFW; zdpSHtXeJV!JY*u0bH-^(5)(<6g3u_*t@TQ-w`h&dcvB3osz#QR$H-IiP_t-x-V^wq zySVMzu3^D!pdVT*OpG#mgB&MmE-so1cya!&kK6Me%Pzpf*07H}OZacUC->zc!OJnO zHTO$sBB?lYWO*}e$YDFev@Mkf&rC|%{L1nKtUyJalAU9IaHOlZ#7clr0rBagoq4V1 zu3Ds=v~zRLk4S3*&*B|t%OFOLmfCIV5?9trZO zUrG_^ut}6dWh1-rDkbEv>~`_`1h+Bas?XNp#h4c}BMT4xdGK>d;-Yup5hQi$^?8X( zxRr_A25xa?z!g}yXA=RLlL@#zY)hxYZ&8CVQmso51sxWmG#>}c#3!`gRpD&rr35!N z@1^in5sV=teg<24kSWuSOjFAoY=$(^qIAN~X_KU@ALIdquHEUM4h~0rzZgh2N9Gvv=0&M$M02SW*?(dVgSaiT=g zX}EUqm3*)YEs0JqRHpiamX}FX&8F{#-ew8e0D?@k&{kwXL%rOKA`&&wls*Fq!WHlr*cR5v^9~C2X;!d z`4pYP+Z883|2Ct|L$iZMu+~BDI7Jwr zJ`t|^XsQlPW?oGWdHosb8`Nx255MrW-Px6USa>f_U(&UypC$gD1I4j$bdvlU zSYF|BN6{>g^Wj;Fri&!nx(PE2_s?QunPt5=fsgxhT$wO8Pn`2Uh7zJuMSVuXMf{s_ zJBgRS<`S+mc^#pBruyQ3A%^8r*X?IUKE~1JzJ)-(?Ku^N%u7%e{%h)Z+7}MyRJkIv zBuaQO^Hp|x-7^LRK+*~;eJj#7cf)0ZCaX{}L}o6SA|+y&%b{~dzS|Kb)y?jM($;)_dr%Ql}dA7&26)o zR7?l?8}v>rG==FVv>cX}N)U5cy1 zRt!gqo9*=4vH8rqSv2`+D6W2_pO4~#$Z9pCNGH~s1mGaJ-?%mAh* zKD2(m8(Kd}R#XY{X048Pc5Y8G+oTM&OExtU6g)Q%+t}UO_bY51GNKYlKu0N-? zma9N@K&I0Vha)EXd^|d7;T+IA@jyWBRc@gcA+vs@K&>Cmz(4)Lb^U`#YB!?UdN6Mq zQ5iJ?_YMX}a;a!$Qx+GxTCrI+lH9OCH%=YMvQ422jTCQsM8@Z@Ot1gl9usPR2_FsDz4_bN;8CUkOpe?`V!b*Y?d7M6>m^ir)HYL5nu;A_r z<1~NPy?+}5T@^FIN1?cK{EWh1v1Gzuf6N%RA@&NiFxMnJL2S$$g-0G|KqD8nil%j! z6}CHOViz9j1iNzzrxh5$xRb=BzW6S_s=iJL&csx&j3&T6arl7=Lnwl zl)zm!sgie#XkNFVMy9CDVUWrU;ATXoaQQOl)ai}L(y=^Fm2^%>^oOF0hjVV0kIqfa zevhXaBYTY^x{S#EQ~7YP=$d{GjRQL9AV^44=j*)3-_u7~Xd9i;`BBTPGja4DCM9s+=jiLPUC4fj8LQkiVCLRvn1sf>ogz z_fK)(JO(!x7@MOrMJgVqcbW|gBJgSd1QD;zNrTdzd7+_nSD!J=M+g>?ce|rE{o#yT z*rqvxLrkiKnlM8y*(34hRrlcHmc=2%4g`G#K)`5)%{)+rjt76PSHl+F;+nW{U!*Y> zY%BhrL-54H(N@YEAO<6U0tE+_x>=GI=u}zgYt&6S zV8M)iOOexfv3J=3J9SWSUz$yJe%HITZx?`v0Y&_+XTsk$W@sqvnMQ=qp0{IFq7!DP)XfijZ4KMz}z6!|Gv6+rmOquUplQ5W6hONd+fS z$G-*r*n`TdAJUEe^Zld!xBCnG`!|x9_u2`aqp{)s*c+7l-i7*s&l^SaVSX{J4r0;} zj>eS}_Ztq65$1dd8Ll~uc;oAf-L<7}k`LKYi0%IC{`(d$lt#YMVe9z({A}{@-aS}; zhi^tW_rU#&yHIKOy7wMD`1<~z{_x4{irJNtl$W1q*gu0>-)>8C|E^*2k}Y;eapM z+?q7E_J;~+AAf(@<`y4+C-_%7`Ff3L^hvy#4Z9i4XM5Rw1N zI+9Oei21K61+!1YYxW|gDxa<@#Da=2S$PX}WUwQ*Z2!LX3jBZzoRtb1nhhhG-mFoC zw)}_7wVaK3dN-uH+CEx~U#Whf47qvleWK(|&*&}CcIos1f^tt@L0&DYAi9G)$2FP( z!Ao+0mp1m% zOgh7!x^3)wYqW6Eebqm~zuj|@2~=W8V<*|t&r#fem#Q2M@Dv<0saJ$8y!iOxe~=Bv z`}@O}*wBXs?Z1-Qf#tf&$wpxfgsED%J4p_vow4P-=!L4+p|*FhGQyB2h)_Q;Lbvq&n-!Bg^OnfTOxk@&vf@P&qQZEtlrH!qZ>sAB0)?u=EHixk4Wm(*4XFSj2y(L&WJ(APN!%hbrLVdrcU-R4;lK zv5=H0ht?raW^Ga#UNP0u$4;MrSB^X(JFDvq_sbXJdHv!G*i1Mzg@6u@?C|_RHhTX|3yZEnJpudt_zZ#>Hrcmd zd=U?=z#eB?$}b2b|Jx^(Cd?>;903{jrkmT_8W;>(&WQl+*J7Dw)U< zZrqxTuunDO`DSDeU}+p8F?mvo22Cospl$Esyt6)?A0r!qW&^;s)T@5$Sm5gkbgf$^ zC@x-|AYWxLM74~xxVRt2x}SCdbX*x@JWdl^-Gs2%=K+Opzi9Y?cwY$Af5!!MJS5Sp zEl2P0w_k`Ow#CM17Qwq3r=j&1>=}qt_h)`@t?2RbR-9BvMhJae2;Y=QFqzs48`ygZ zL5yp9xY7o>!Xj_&0l@A=qQ_xM=`ZOEzec#wms{}s{qki%eC$i=B7y?>LM`iNwYwbx zPA8!k<~exo5cbD!m149Lq=g2GtK%UM%Y?DMADLgH-NB12XhGmD^=CLb?>$w#X+~82%f>m7Nf2LWLSfYKTdT#X5?T zq*zXPR@aFb6tDY(2(z+N&6``>&z3j1AlZ9)2TmfygyJlle+_4z8@`A0&GOy2Np)T_ zLCd`!g|TA$9=A_GR8tVnL36kq7XP-4qh)rT@NI%rDH@*&LR&3myk1>#s1UZOC${;7 zzb))NLbQ})FU7uUX`@JL?@5dQ9Y8XG$-yj?sgY+~`%EPW_`?O*gcR!xIu`3f4QnWKidY-G>!hXlAiw-h4^JaZ7hP z_}WoGr;SeDLT9t^G|8%Rm0hc-l4>TReCaDPQYOAhG=6mI{@JNlp=w2$X=8|3+fG5e z11l|H4pNFa++_?Gw7WII5bUkdWHNwmHu&ld4`9-p=CCqJ8pLLaVTecF`IO{EH#4d=`s)u~PIC2!I>d zU;QnjCdlAGu5Fjaq24ftUV3ysQjrHR!aE>1>N$KUc-v;4VB*h7mqUxp8p{Cj>az(W zPSlf2ADa|gIiXdV0moLpM5!Wd4iFHkoshp8CdsBDyA!r%1S~fXl({&SlqeeVXK$C~ z=)229sz_j{-Vc~HREL~MXzaMuC^dvOm2ko+WcOQvCJsfGlpu2MFgK%%^T`0NC746H zqEI<^f#np}GQHMCBvq2rgeZYJDdse=4x8nlO9SYsV)`6&I=dyUMJ%zENJjic6Gs(W zU}6y@j91S9@XjH?V|%eJv;$NPM`oYGHGs?2xYj%4R)OU{i~1onZO!K6K|ViR7STQT zd;$UC#!ih~rI0C9iRt`3RFu!+rt;9@$8zr2y zA#=$nC;pN)K9<-r<|&1?Q9(V)o4~2XjjMh4sZaF?X0NDzs5C$K{$=}$N&E>8*Ytl9K7IBSy-&%>I@!h_Q)OOIk+ z7fudY4{|Xx&sjTB6j8EK7&T0DAvM95lm5w(c((=C~5Xo*Su@#3l17g0`T&Fy;ksksyhGi}2+FstRe)6RPco*flx< z5xwoRm8kE)veN7s@{y$_v_Z%GG$Zt6oMgrtCVi zMoH0_I=Wam4t}N?xWQGn+k*LUh)T^K6ZYc6)LTQ?UuQ&L*-r!VA`>YoAWm>{@d_f> zNsIkRForfi#RQ#&V3OvN*!o9Uad1I=NhAw#&x2EuJ(u>F5JMs%)O7=U9c;q?A0l`h z8wcFPSgN{bSdD+!A|u-j{%^nM6KZy!zZa(v`FJr*wa;=QuC+C{yS=Wp2|;RFJoJ{d zN`9@Kc!4hyP{KLIn*L@)SjLWah<){J$-*Ny)0 zHPk*VtM$#b_&w@?jGIKxr*BG{U4RI+_FSH(#VPeyutC@$4unsvh3~N8%jiPPhr(EP zC9L5^Y>*jB<7ilve?^N#x%QS9jXV;coLkZkwU(BF8}u#r$ik*;ruYTCY#L>rKE~NP z8jL6B*o2nYH%_DkT&(f!Vj`~uL;86z30tUD{{(2m0C2~H7yupr8-Yhlg(r)tMz8pie+$4T4+iB5$xG_7*}HRd2a~ps)q)AV2$)h8-vP z;A4CF9J8?*i)(2+tfeQ=jQzz2%`U6F{YW{gOtOia>QcefVR;Xefy)uw-4*RjEfdso z5@+g#rmCTc2oW^1c3GJ5BTOp9*Y##w4VrW^YPEMlw8?7Ak&uyMGJSQ+4>d@fII7); zS)JDx6sHqFZo-XoCYBO7qynB%Rg||40-|xPlWP(G<>qhHDuoCkg^5EkS$$Aa)Vksv z$b4xTNjQ#I2=~%9Ca|=N6_yh+)>{b6yeA=9_XJ22JT9cLu;Pl$_BSRUPG5~qAfB*y zNMEwJ3%eNspo1_ttYM`({VlvwgEn_hmb3Jgn9PG&3$K6Hh73*dDt6cn0$E+63)I!u z9LBVDd$iFAXdxIQe&dtq2brzsl3txk8M7aDBhAY8DP@2$7eH~+IG(0OQ$UusUE#ly zAevT3m3ET;<50Y{U~}lFiju4`?w#HRX$6U61&pXW!;3~}vlvfzRS==^e`;S#wbFht z7zOJQhj9#`Fj;ay4o?tf^;UPTQ#(IWp!khM{ssZ9X4w+q3q%L_1^8^?d7r|F<4Q28 zhRP=DR?8a_ZfBEx-SssD*(eT6R z=mKjnS}t-g4z>r`jk|ZsGK_pc{16>PZwDhdq2LTc)eGFJ&6Liq?kfrnf`L;O4Ag^< zlZTPex9{7W|7(5q{jWpuFdt3R;L5(=uj3z4RDBI0VfR zm+^WM92hqGa`KbUGg!41T!C0w*)=evuhLMs4)?Z_5EIFXIE1bw_>p)#sa zs&-T~lF{Z)aM6`WnV^8xJS*0vX{ek<^F$Pe03Ti&c1Oa{C1exf6?z8)qz(}j%0)QC zE9pD@3e#5!IakN`!-pwAGMgIHlnOnw+QLi&ipsppBESj)cqxK^bxM+taUedXN|87y zwi16;3d&GfCc(EUG{rjoduhP!(Rg$Uz93;_7tiUdGEQJYX$|eeWMG}8NAf1Z;RnX7 zB$sMk9Jd6$3hnJMpiUU@AVDYe*N=URK%i`dEE4~>HnQ|+NbLgYAm$idQ0Z_o>bc8V#MWL@9=4u?ev^fc$(nY@JYu?iv)E)j0Oi0_PmV;l8rfo!6~ z>K9d6^SDK)a{H}H+$`f76eqa zi4Oj2h~Q&H0e{Kh+aZ?nYO&v`Enw>X`FQjed;1W99^a0~q3ISNs*hV>v2=y1r11cK zpKJDM8b?xs>_`)(T2TQf1txGfSbqmV;sNN{?1`H}dYY?dK{Q?|c`;LvxeUi67jyp% zd%ZFQ$nhTb@MIlPX-mJMnsRNjyKceLs$LZZT+#>!8@b1bCP+)13o?PN@U?7Q<*+~# zYA7i)=Bg?XYASZKW-C%ig{t)lVWdw{2$?@V43q*<>);^R;kw`k<9BbB@=bz=ACIwb zM&k|E&};1cK`c0KA%zAwz0@1P8iRR)-8(+JskM0hb6i&Wt7dZww{kB zRF@ES-nJnp-3{mIOcrdlaF(zv7|I)GRZn3RoXV8}{B}Imm%(A%+S(VzL}=-w_7P>A zp^+`gT(3u5Jn7RD%QO}`IF}_cI@H$8$4ATucl(tW=Bu>7d$96id*km1ThBY2Sc_k7K7VPPPu=dtm85~w zoDZn!djs4D!y6VMba^j~uvfQr2-5)WUlY;2jO1z)PTeIF|s8xv4R#EuDRaQN;k}!NLl~vxBLGX@|Xp~M?u|9rj3K@u$ zz{p{Vc+&yQ203A}I7(bWMr!n;y``lntEpfYzm=WC)+3(pmdB-~(g&gq3xa~g-{Z8r zL@t8Z94ANpfLsY{aqiI8z#oO1&#d89j{oOPsyOm;MF$KN0h|2zbbYt8^L%-wqf8P2 zu*y)}=V1Gg(&BfDMl=MO?(uN6|P5 z(peIfEM)zZtzvP$Bl>dKK8FVzN_j{(A(r4kh^ez@FLrjhWkQ1?I;uGhn$nl+@BPmE z!@jsj7u%hoBm+TV#%a3((8k;>VeJS!2bJn3AFJ9+)A6aT)Xnks;Pvrmon-0Ye`onJ zvz&^;>MTz|s7`aTR@|24*e%(ChQoZgl-QdhPQ$XTHDL%R{q*A&a;)HV4Q#wK`n%%N zZi*#J;xyY3PhxtO1|b#4<}?td8iF%2RkQ8=tK3lBMsea9O(Q zEj)DN?(ns2bxLwFY#GjW8YJue;J#Al9AhK{*TPUcJh_;_Ay{{E#eH?~)aAAM@0)7{ zH-HGxbooz$hkn3KO%fDeih9W;lwv`3jd&a2qJ)bi_$~z@Qzd_N0Svc^y(#`ExB>#G zSJMij$FL%IKcTJtAp+C^*(3vMElUj`^2Ky%RZ@2tB~4w^SLjY7GL%g9W68QinL6** zXX32HlXF7phO>qOX6SYi|1TV)O|H8sb#l*Lt>bS>ZDdQf9lB-&>~>$zG5X6nl&64% z0nrJ0u)F+yy&rRW-Ia~4osLvaCpIzVzQ^H0-80aQ6Lah-XSo!(l7&`sFO{ioLugMu ztXXjJ8Q4}Fm9{e-c5VtkJ~oSz%I4<{`WfiPv-J2;`;A;sZj7kCH3c1%B9h1Va5P2` z#u;vxqHyCzsxG7~)}$pu2FKWC?Ip1v-QG_)mIm9FDk(whGz7{%R?Dnh5fF1rUx38F zUCII^BaS9D&NxmHz|0BO<8ittA6m!QPCmUbC$5aze7IP2YAK9n@epUm@nYD2jk!ap z6`ZW^`bgMsb6iff`FR;i4ontERMIlsH6hGetoPo67G%h5U&S_Y=m!-?_Mp%=?f}nr zEMV@dS=H3m0AtYSz;2@`KOZ%TaqUaI6tad$Nl<1G|DmYgA50Ep7Z7_KELaHxWMK)H z4Q*8%!BPYP0=UjVg4Ly=y$6N6n5E(hgBpdBb8B;FcX@O7ptHHM{CuagdVn0X>zm)J z7!_+&3x@B@o2!WnxK0%bIEG2)jWfuU{rJ)U8V~ib09++Z{MgbgQnKXK-Hn9D0^fU! z{8z?k)c#%TeiMW&Y8mQUfRb@~2RKJ_f^D=#xn6|l(exb_F^e}^NSCl=T!fHw7GdOq zVm%4+V7va81ezN_kFE}o_KCp33Rn@Ux!|cWS{>j7A>LGV+E_T65?(cb(>S$h4??GT z`>~byjNaOc2VZIgd=1H|jX+33>$q2O@8xT!!FHn>_8F zV}Y`KPoheDUGdT9N<6&JjZmj zGa*lA`$Gk`xnvB(cX+YSa}k&%R*eg`%1XvH3?tG|c68K{8k=ci;fO2tf^$O%Niu#! zO5_xdN`hn#CsJ7cE53&ek|bt`cj85KeFemk3AK`|en#rw4zZ0}h zONdbU6am0u=GDiCt`3flI=K79LUn*C3}N^0&pQWy?R1`lOf2Vg@?pF4Z0m;(KH2&- z`Lw*ciuYeBO(pNQJI^<`HTdV&@AVrX(y&lkZkFwU=9ct)OXAviu%;4-c@E`Mv~W6j z56fiT0_3Qckw`6#Ysw>T7DgvXWy!e>FjQN>MNGKYVoD<*Lv5s78l`bOVwDnNs08$i z|DsyC9x|(x#eg2s>Dn?uw2!FFZvpb;6I$e_0M92Rm-P^gC!+J&2gVupKraYBe2r7G z=f|foXC?AjzTIhcE|^`l^&>7LSsu2wT8o>jH>C!)A$aXXs3&pw157WHgCdxS0o`|R zFob#8TgLI`)`PnbT8j_<^v%EBeAxQxj}Ml<`nP}c4*vq&N;G;B>P%7&8DJ52F6aCf z29plm&0)%wA8&cCOpb@XNSqcun=|FAM#nk2&C6uvNVS{zzx=c!p`-~yPA4T3q$MA*l1Tuw z!u87nj>FSy1ELW8j9yD*oglvtY-|Q1VK#8 zYYhZ)qUbpRE}BKtW%U_T!Q~5_XFaYtZklV9#Z6;zdChzm+X8z^xl zYZESSeMK%n3z_VclM@ruVYfiah|-J+Fs8y{I8(3n9ojqX zzUOmYPz5fuQ?p?SA43EjnH5VI1fD9 zqHy+>jF$>^<23_KEIeop`4{KR=HSWTOseM@XIJS!?{Fa#**0>oCNz+&si@jp=oMH3 zwL39=$S3C0amoUsRNwxU{k(zHC}_NqL(*E6by%E0PPG*M8#@4%NoVCK`SR~9z=yw) zb);B6;>bF@Z$}C;81X~Pe*V3V9?dZ!0*XdUl2~`$EYN)_dm1Wfs`JW6%dpKw75I^S zDRRhoQ=St!>=eH6K8?r;Z$Ff8bA-vXiA5<1jI}FERyANUTsMut8OR7*4cwYRsEurZF~4mZQau zLOJoMR^e?LdJtRO%cz(}rDbX6n-e;?VS%QL8BpOSocKLAtx9=XYZ960WV=;6rvHv@ zgTqsyxp0UVE-$5CWOy|maBG$rAp?oAfDJLIu|QZ;_MRa>_`J6;c!~Ts!O`Gcr(ETQ zB^DFcgNWB9Snmg*E2f7 z$wY#+{?~Fa9)=WJ={;>}xI;AoJYfWQYdn@y9VxvL#aMGaQbYnA0cXex$)Vm6?5HPB zo1kA!#w$&H3}i*_|1#NLmFku4RYM^3jXouG8_93stx^YQlzf~|`l6vNVKy4+qQu8m zBQYk4nO*EMDvC`5bsB9y%Men<|d1x9p$aCT!0_^tkwo;g()&6Py3TYqV1wCHz9zZ;e71w6bbkL8twjO!((&ehf9Rm4sm4c@Wyd(}aiFuN9w&Xi3Bsk$_Y zGASqZ&nlR%me~SEn{+J!79wh!&L#|v7&)KSEp8Dji z%CXa{4*trM-1SKl7ME-~bIc>|PX9lX(Qv1aJ!a&=mOQCy3C1gWlN3ifMTya)89^X$ zq{9Yt#{3pBu@cf-@lrNQCeM{M|80rY*68ynDZsXmV*6Ys#a}6{CBs34@1(^T9NFk5 z!Rnm?vW?e*4TM`=2sWZBcbLXv14XNMU>Nnmbz~Vlq(usrhKt}TW1#EjVj?!Ls{8tg7alTrFO7NOV;}6*Q7;U1ZOnrV9F)&Q z?}GPFMebL{c{0p7Fiyu-NcvRdm7?d2YrRH&6DmqtTV9tP3_Dar>Nib$+q&TeZ$!kG zy5=utH?C*~s=b%ymaC88gVM5sP+JY2Tx+mm3-96LT+MQ&Lfy9vE6%U){pRo9=+Kem zI=W5;`w(O$Z{Y2(qAve$eYQrge&TgrFo#)e)*w;S8mip;ilBAN)dkyLm*g2%)aK=K zGVXQyW~f*7_>qCfj|^(!M;vl=PJkf@bHE6Szxaml(!ABKsiYed8M*CAsO59MMZBQ)9^y4{KJIBS_7y z3XSXLNrDLM$%Prt$VB#Dbj8!;UWUb(kVieD)AlQi!~pE)C7_fvkoIQqGWA5)gIz}- zI8|XGlC^VTxF(6%Uq-E507q2k#KrQ)LBQ#Cl|Ib|ETgQ;wM>U zv$RC?NqL2@zOUo%BqBBGD+_IpT^V0nTnl`Y(0&8(HBXM{QgK8Q+(=lCM{Y`5*rHYArE)z@_II5`D zx!g>yCS^rBRRR8#IOo(06zf#zWv@-0%s`#C++7${B3~`ue2D;uePHfD74QKLmP|Ar zHqcM-J~E@Wo*E6oFK{HQYjK4KpgKqf-67q}(Ug!?E2PYiiMHS)4$b!ZXaakpa%<}0 z`2j*(buT}1tE^0)rqq^5|X*m*&osK9t2;e#-0N z!wCG>cUtMsKk}!8`892*`16lONuD5Byc<80vl(+k7o5DIqQ-vd-PWpdza&QQpE7Ko z$JMnY@~#fWPidDw_B}_aH?GbUk^c+O>6o7_yLG~lqbL25Cw-@nt2LyA`=j#=`Zr-I z=w$~6e;9@d1Z$A)9qlO~ek$u6N)9DG^G@`_)g5SgUol~5DQ*bRPJB4xT!wv}R91kb z^T>mgmV#?ZIU-mrMPlqO50e#O_B%cWzS~FSM(H@g{TPTtfeOG_%9eRwi{zG1Y31vO ziXWLI{f}Xk%C|C}{b%sV4zS^~DA)8>zXN+;FX|YeJ2EWcTz7q&sPo6BIxh=DqIM8} z{Pcrp1Zc`28V5dQ5P?lEIfQ9=R-xoGnqbU3yDYw@O;FyMspaZmk`n|Qqt}DOpbQq< zf2CNH+o!QBzyJcQhcXhqgmm*02pqh!#V3nnQ-|9b+D87={I4@s$N0)r%<&k>BD(@MCzjA{6CXh+zX?L=z2gEDIr2B9jIsu?J z9%;JJDjd*Gh?+eb^v6DIA~u`}4JMCxzqk+Z0(l6%XFE6=3Uzd=U|NyP6FsdU+7gK1 z9h_Dy^~y~vhvv+WG_8~^NRu9G6~E9#!C6}|EVLF{IfEF(WE zEkr0~Aa^pr9^Lfjla^q$J#3}R!DRmr>8G%yBaP^N9N4Jw8EnrO04v6_yvzfYZNAtT zKKn1t_i8vYVI(62E~gJe17skk`mlP|U^AWavX;T{h|!(6!2vh5We*0`AUx~*s|dhOy2X04Fp!q}6NquIK}C8K~KRxxDnk`=Mq@fb2N3_?AFq4sKU zf)msNa)?MIdDwd7obpI>WY`5;z$-o?<<7km&&vKwxVFPl2IOpVMRY_)dab_fg(V$iCF|^^5I#!;Mm9}sQV^eUy z2KEfm)q`(^qr%rAkAlQ&#@NkW+h~tSioy|NwS_JO@yP)esFTILEXy&B$CzA9epnt+ zc}{YN%I_!3s|PDjm$#Q!c01cRT*w6uXNP~j=#Gq!-V=u`h+de$*~vL8Su!u=f};+4 z7ejlckP(M?6$XIK8zU1qBh^BO53rbFLRw}O?86lZ6@yE0&IgE~2KG<8ZzNy>HmF=l zfD_c%@9U2%Bpl?42ya&^fZs0G&Bv8RF(i-~S%$_sQTa4C70@`PA%RL*#B@({b23F< zw4EA(HPCsv7o_&a!2&`rIJH56GEr&GEeen>K4-uE@Z_LYCM2=K{n|LWSVOpf&xX-ktU!;PH}I^sA=Wz z9zepXS*=dDxQCw*) zU-hOvhXJLEF|NH`5pud@56G7Q#2N(Un?9~`B?ZWYcICz=!T!O)arfl>0Hl5f3x5o{ zkSPk7Lv?E#O9eFTaawHGKAb@5<4baA*ghQTngQP|{}3wynDrx=Hd5>9?z0W0X71_m z5>8wuCHLh}8533{ub`Kth3y*zwt*AyaNNZ)8<1dE{8?Dmv#lt~(SxuP(tG3LQEdK; zD&XcGhR{{Je&6fAx_Et8ztD`lpDrG)gL5@h{@nV@zC8LJYs`g(GX;spRx=30 zJI7#gS=2=2G<>HS^~DNw1=*dwJOgPEmgLzCu2+aH`g)gB>`SyD&y?%ehp>JIy%mqn z&_unOD;Dk=h;ICsQ!pp{mAe5k2c+*76PUQMsy+G1H*{Bj_6?V}^K6gJ0WsaQlge_y z-i`hD_wUzUP7O-rb*qOLh}o2xfY6;x5Zm0+i(f=ay!vpC5o2F|*oVmWJ7wuO2^Ja0 z!9ShOXOq`}ul*uk2oc(`YYw$EoDi-42}u0o)Q0van6Kga(PG+S4CJ`++sTdA;_}YQ z`g-fPy_=v_A_!9icQOd^cziPAb@~o@H%eM3kiH?LoT?=%MnZmF zkr@@xfK2lWVRONi)+v%LVKH5r1-=avuCojK%;jriI%cUn|CcV?b9oxw3Le6O4yVd5|;F>~9C_>TGzI89Zn=|;a zg7m10wYju&DISy=u~Jh`bTuaeLVyqA^(Lof+=Uhxw_ee{0&_xQzU#N%A)OsUB$1aL z!NY;8(6YA41^f6^_M2E*7#fxiHO~cdS3-5cikkFK-qOKg;t&fGk5-dL;3-M&hC$Ql zP91xQ&g2<0YO5QsyJuiai(XbzGB-|22JAUr73U45aHCCG5V27V5h;GKRg;DH5{Y) z^%`(qhZDWFXa`B;uoRKrC_ultd*6q`=>mrR&`q$EHOm&NIQ(!t#Y^*WZFzd#ZS28Y z-#yq|e%3j_Mc|@y)A2blTJ%9{_h9+i^Un4Tv*m7X?H;UcZES4)i1fNo{(kVo^7g^j zHvd`P{+{{qQd|Q?Y2D^}3Ih#fag6l_NbmJ(@ERML^a(*)Oh6EFO)57hBdk2VX1O^N zgG+=f6h>;FVKR1QpfpP4-U?4Uq~4;l{TUZ)h4S-6tjRcqgW6T zvtQr+1I8u>LgWbH1qS%QjN|zlyF;j_hA3iPKT_gEy`-_dn;}$^(Z{ zadIg93+SlzX>?Lm{UfAk@TMvy8JZ6J_b zXeUP*DLu)NASHynoz-G)=&Vy%eHnw4Zg-?~Gn)`baUBCJFckd9?qsKr9r!LHVgfrR zJd}1>rND)AYbKG=00t<_J&md#D8-tOTW}1JiY%VEh{ZGEepM%;3VZO8-rh7mQLO@ zRI$C9JZ0Vu|Gng>xCKxpm*$3)ka$%=WjJ+2RfXnKzab^CJ?s2?^6eYs$UaC(ff zWI4AwP8NQuld$~iJP{QpctnKVQo4KN4K)nqCuYhMIoULEI{C)pnqDdwOHCCONSLHx zT&(m(=&iljKqTA0zgXT_Ut902HcZ`o^jLxfgI(?_o(4}HOxvA}<=yokI`zP?##DvI z0{ruvJA9}!2FWVbIca{YQWmI$yai5ajLCf0`AXOd|7K`Mw4q6`;3CoHXKTOK5_rcF zZDkppw8wHx`3NH^sXO3zxV`;jrpVX|l4+^17qYC*iseAdM6QcgR;@MK5&8s3tQ*&P5;M8!DjR50w6n3X{(NVB zCt0caj1-~{vHTQ&de|S6W#huOd2xz3!?fVk6)-$$zvD83zP4f+kQ0i6_XC64 z0VAyz-GDMv249+y-&h$9s-r3a zv5tr#`gca$Qlm`=iGK=Gz~h||TP6uliuG+hE3Ac8JjVg=my?Y_C~(Q30Hm!Xi{S~8 z!gWPo`!0u(Ty#3;5|y-Rkk}03A6YIx)jhnrE`445XWj&c%=1Fw)=HJJXNoJVS{JfW z)b$w*^%fFJyE9{EEy$YrN*9FcBSh^$AosoOt7sie;!!f-)^v@*yZ3ujgYmcO z+*`$-kcfuN7^Z%JcP?#Rv_azPXLLDl6nplpv$+eV3`nXK?M>z!Mq6=u!^Ic8%6@Kh zFoe6jI{u8O0ki43`Q%xc4;{K}pw2JXQhbrD#n*mt+8^Vl(M;XW5Ll7XISsmd6s1S} zDje-{BUww{g!Nv@1`V|87894mb-bFPQWlG%6Cw&lqfGW(c&4M3)2D^*79pjD8n&Id zo|Zl;vP#JBb8DO_;*W!apDQ?5MrjTa&GZ(FHt?^6e(qNorUoF{t5PC zykW$@hodyUvm}R(#uq%+q`|Gxby@Tr;(=`+C%_AkV^FS)fmmAh^hz<#W<~d^cw(sX zQch_5iRHejJZmlp_w;IA?6fJ3DkRNy zQ82G5lq?+hoGC0&b4%0Lh})2T8uUI7d}UF{vQn_E#q2=t^?ZAVI^VfIZ;0U1d{t(vA#qPC#` zn#DkXuy54y{O*?(t9@dIwZ(;%G$ruZd?)ne~pnV@F@=A(iH)YdeTh6FLx zDC;5pXx@egrI}2nSGT;secKEGEY#|Kyt+=PXxpS(GyzB#jov3(i(6~PNDP;2t*^H3 zhfxbnarDaC9+*@#o)u3tdDrP_#}l(*2flKQkA0NbO^t2!HHgK+MgNuhcKLG2{=FI! zh6LLXb8;mROh8-`0v9U@0A>u#0;1~iD9KL{5BGsMNOXqtMp+=GQA%+bJhcWG%Yv8? zfhdZeMLqZ>BM+A2pOLB!hAU?~t*oEpe-{P}AD7Uu_Kh^6(Tg3{C8N2;8rm=MlW*O`6BgOFR-KnJM}Ecs6ydUA2p8fIO44xsjB#b<7rV=vO~(Xh zUmX!hKWco_XsMpP;{?RJR-+5a2*MV&bTQ5w zNF4@qQA3^jv1Ndqb8Mo28HM>ENbXa*hUd5l7qt$!q%fzPtP8_rVF{m12Ywl|jc`Fh zLRI01OGWICgm=(847#lE`Lp&~e^s?@7@V|UY9<@|UEf5N#j0;;xX!xfrf$wV z@qAR>l;`%^UWnsO^lX){a_Aa*-K9{(3aL@iXO^P$>{T)`b$K%bLpFxLMBi2;?K+{p zeBSc$d!X{b4oH(AVu|E@{5Bj&gVTO;LVla~lViCHRM0_(lRpTHJsFM8T)%5Oi6djX zk4ti~7VjtGS^tXEK{39T^k~SED+8`cl^o z8JuJZ5yaTAz@b??Q)LTyHKQjm>hA_XxFnB3qdj*ht8c|3OnW!g6QY2E(Iw#3K?qi~ z*6F_P(rW=AF_vU#<;XqGThHnS=ZMr$B&0SPhbFkNUK`h0yR0>D_95*|iKsHAy5}=# zRgVi{3Y56$ZIKzL>q^fz49=SdYU}vz{wWY7HBoEoaMaEF6o-`{!2PV!Lvsj7&5v3i zlnvWf0*Dlf-Gisg8{)lwzP{1f=H(u|0yo~vn;xl>UH0W8xY4LsYPT;`9~k2$ni9S0 zkt3i%Pb^{5eYcfCUui!Ckwh`!DPbl#P<8<|X}%(f5|cFCCns`{4UQ%W8Z_y@iC{RRbsS#<&DnHO6Q=%_?hCn^@Q;MvL^{H3K2I&HFQ-M zeAH0N!-1-wpDpjMJgvUoL`>7p@>=I$>&gG=tjM8z3D>NaT;AQ?UVrjpw^Muy<9bkz ztF!sySy33HiE$ZI!!4#&Yz*kAR@&|?uQFLr@+H{-QrMR)6U6D@_3=66j~`ZmbB|mo z41{AI^5bOiYTO-DQ&W301Fh!rg2ha*B=Hnqj8+*9K7ZZNf(=Cga3jOu-=n23OpECZ9xSDT-vb}h8nPNDI>hoM8d0FkEaF|jNcO5yz>qd3a=y{ zW$s$P#j2^@y4z}h7+oL@!w01m*_lD^eiC%lo)%Xcf)tsP6C!*;q3F|&EQNrVR7k!D0Autn?c!MATwTQ0s%Jf zWCDbG(!<$TA=WSFq1HSc576j_5ZHwQZ4OPd<1r~z7wQ^O?~`ai8ApH+VlRpH<)xFa zW%IG=_>{47qElm_v6fAiH<~I(?KLHGB#f~s3EQ5#VT%nPnNdc|Q*mOyB1x^&it+Vf z_Yq_R$(epp`Krqu%T;(cJ8g%mykCA=_fzN=VT-1W?zWU?8F_4akz>fCd^x~9> z@+BvfNeM)Lz3SsAGK3AY>3o1ejWx)tJ`Cp20UE+dFSLXBJ3YiKF1+v^Yyx@CD@xIy z9dLVa|31#TVPj`dibIj;^ftXflqTX~Hnuj^6ILlnazx)nS-{c%uM6ZRLr52QMDhLk z^76Cgzpp<#*zElE#p>2Bp96G(s2xp`n)%PV(Kf+#{TKD)>7j#b-SX}sc6Z}_o9hj^_J&FH5M?R~? zK}WS9`t_S|NU2g z`l|Q!KK#>LusrZ&zJnFj=JyRFUshX7_=Bz&EJP&z zAWj{c0jGw$C8rA`h4tkItFkb2?1ANI*}WNZ(vSP6iP0q;ke@KKYnwTMYnu_cWOC_$ zN>{phrTkk%1NoXaZy^6Rt%2f1PE9jKiD`}b+PS6`|I|=j*4BA7dDT$7Y0aIt&{V3S z(Xc$vTM4h5s?B%&zi4#6N;A7`T*o(c*I1#UD|#UEw)m!@u)7NK3jQ`$GQU~i2mPW_ ztKt`H&gR%)L_(53LAo4lPYiLK_H=N-bOB=~K*L5s57CRrl@PhteRyJy9>9&8q*GMs zg5)+lb&Eq{EAqJf1n-e4QGTqgZ!T}h)AQ~1AC`AJ_Pn(VUr=XNf5AMox{eEZzrMM$ z@nThL*fTW4ioWRlVC`2J?wX0)Yd$GB)yS}xlkZhp~ zdD`ymzS!26AP7dsgLwYF-r3Lz*jTr6J6MLr@h87lmJRCF&f4;e4Q=2Fu=Q7IYI%Em z*+;*z!P8;#y7RYP;7ZZ6{_OcihmraEle$0-MoK|YuFvo$a(%8X8@U1JJ6c|z4wTfT zv^{gc_V}!``*aH#L#0KAe8|I^PyXt?G4Q%m_yC)$#!DR-Cz3?9M$gEuqMXOvI25;aB6|n#TMaUHlqq)en=tI|P+5oT7 zz}6ME^e1}dMt*0>)8_|YAN(Fmj`r7gf8XoBwIf8bFyP(~zWzbK{-N&cHwX9m727uT zUmxh#2lZdS(yw2|ukgLK{_?hqtk{G1{T^afo@*`|-*kZEL6F15LBrRu+u>mo#SaU> z0th6e`<8pFEIB;3xR}xg{kfMv^pxQaJ(gAbHV?IxZF9SYsD_Ejfx8m zECp6ZCnvnUF(O(w9&x+^$5s1pnZnO~Aaut&^}g%3S>$5Kc$DD#K!fy^lgX-umFVbn zW`o*cw${LF+cAvLz|#WwSy|ZUD z+(dTKJ~DQCTd{|VPl|0>J6?LC5rY0RBAjI#17I_NwpB=96`)3-$U|A%h&lbkekV(`sLDl>**jqK<8yI2} z`}!n$C?D;rf2Z}Kn;!&sahPHbdu>eUJS~gBl$aC^yQ=DJ&f=x{OzeS-vk+xuxsz7_ zr6L%xX1yl3id2MAiNJvbz>I?!QX+*+FYEQ#XXf7#lU`%l1irGGCYxebM@czQ? z(#gK|CF48gNN8FFiNKlN%|QbA(kVb{Rb)fjmo=dCIZ41RrbPP}xyQ#+=&^K06Zye^ z{ZzCb(I1~KO$0i(=dzbU^hCZfvM#7VOD2$L-}>K*8>>+Sn|TSO|CsNMD~=ybIP%SWY9p1M3lN;r9kdM@V=JGsIEt zXLrE}sQrwWl`wTZtqw$g;DP;VWkjvQq+n_pBoxE)C0rgK9i00YEbiLG1ZJj7&UjMc z3^_p}jgbjmf1EvFqM`3_Xc&d?sHk8G*A@+E$s|yL7Rr`90Mj7TRMC~J2F;oPDB2j| z3IIK>EUiTCDnHkI@4?SW4&0N$1PGCDi1z2;#r2?hwe%UwVL(y{{5>s*_7WtZ{~smb z4GXB#?vN`lhQqhGMJR@%%87Wz0Jfh_N0@cJAV_1p;i{%hd6eW&SwMJ04mKp31t%~Q z&LKYL7<7STd3g`7mycIwsFHfABodMVO9pJ}Ha1|dE6LKp*A{OSv-Kay?Chj_*k>TK z*v%#(bTE;OS=Imc5k-aDe5_Mm7Aw8NV3($xTfMmd>q1T>ylsBl)ML6MS$lc@3uq+~ zgG`U4VG#NV6qc3^)KQl+-(ikr}0 z-2W}v$KUf`<=*rSpFb&&c;nTsgvup5k|#Fe>?BInt5RytI!uJSKAF@k#9j*x@ziTR zx9oGZe{$Z<*^50{G+U%*Op<`eJivl*2#nTu`tCNbsYO1pTx_zLNL3p-MAF1Ag-Z?+ zD@E!^DVh=IwR!ULDg;XcNH8`@S{!;32pC$@04v+!A1DjwFVLF?WHcvq(&BTZ7lc~b zD{=3Y`R~G@49UyB9yWb#Twr?jI24Jo6f#JUhIqO3-->Vm-3Tp7K5FbCifFN@LpdVY zW;AM`iKRdjPF?<$(~U`}nQ`ww5+u_rrZZQi64t4*Q4G$p>Om&LH`qu%z!NTwf+VGj zR9%NNadmk-#Q`}+NUU}Ey5E4Kh#%%zn~tBU#8J;;rZj5!*e6H`N{Rtf6NG3+#s2B( zDh_ZKzGBH{`kIOlj?a~;9{+Bbff|ads6ZfTE>)>eLj%^S$v8t-Qjvh+vg)x(HCBiG zSyUn*erESryGDl@2|NFc*F_pvN*ukg=3NNs6Pmj;7ya}kG(StqDTumhS=anH^hOBt zNaHwTRw=6y84!CFF3$x~jvG;sU|9GC$5GW&W#102&GxCEs5hLxXv@@3t2PDy=?g+pBUfSV8ldlGIte&+LZU| zOqNR!x6n|WXoADP$hws8G@N9xmJeplk}Nf5u~61M8DYzA99;7O#oC4bw;_jkBseb| zA&M5&G<_KHom!+p-!#ZZNqVSLA=T7iu)~F+a%295sRFug1bPawQK@tAaUd`#f;k*u zX&8vqjC3VcFF6=CQJshUP5!H%NSLG}3?e5ruYld^KvQ!RSI;w;2FK+^RyqGPw!SgD zut<@mN7xZem{up4{TzFt@3`xeHVL1{_5at+03l z7gynI)>;1$mzBzeIALQPAs^sANKstpM)w6Wk?GCeVedh2W@O_M{Oyg(KD74r6)tJy zS!QZ6tlEySb#ksp0KG5+@%%d8aN*+WCURN9Y?T|Y*}gPF@74&%y{u`PU%cd0uYu%t zG|zHOaO}V%>wJH1h){T5E{g4c>^19Hp-?e2Xihc{g#go+r}ud@z`UG#Ef98gCfE?i z=(P>)CPkPhOhi>4(qhEAp2lIzhH_|XMffh4v>odKiV2Yb8hzmfYBw@NL`G$MI%{wL zul*12Fk9Zfg>IY`TUOX9w1PVl%Y&o=4X5SJ?FW~FLZ9Eq*4V57C9PHyuvwFc`|?>* zrc=hK0W~_CXTquDMg&W-S6|<@g@$OQezAFHI$rE7N!TJU3SAF1wTgp?INvA7S%ZSI zF{%Y+X~uqCmd62bvNMiFPMV_#=B28P#daCb>?71qr z>vpyXxVS6I9f#ZSxx*xnKH7R7piNL>`IGP=HlAHQg}XA**Zfe#;m9U$IvF?uBDqk1 zrxr83vQ6@mCR&EoblOS?QFM@ zk4@g#Ih>W{=LjtBR5oDMYUYiJz0u)498SSMaHC%&cMTH%juZA84IZTyen&HZl{=xw z-NQFLaDR+rE~gjRP)e@o>h^xRVBnS~T|I)`Gimj3WZsskvaNxu9Q7KEM4TeT)HeIGJ(q~DYVy4-Xfh9w3;wUBn&quP z3qhzPRl>WvuENK%qwoQ>%5KE$PsX6z8*+JS0)gD$SGx`XzPHA>8kBh!a@q*`ig@7P zJbv{GI8%EzFLDBYrPFi*;JN}X!y+ZAmYC2AD`t)aEX51Atg@51WRn&Y=kU`*a>@z~ z9G85q_nJA!ONJ`jpgLCFFv zhzU1OE}T4E!jWS_#VY=%qmh{cF{V(zX54kI+5&OYs>8aJjSXEDPsJD(YenAAh@<#a z6>y)}_!39dE!gx7oxrL>bt>ar^{6VJEaB2%IK3F&N|Rlv;TrdP7r|NTiZeBfc}_hSYvvmbwKE%YC2)1?#)muKFV- z<`;%TywHAcw1wW6zJ7TdzQ6;0x_Rqf$R`Juv!)vENYGLI6-zf-uWD){ufXW!ZGRm? z344}X<27u|YdX%z$gx$OBFYT^D=$10lyWV3r-eO~JQG^hOjblJ#^EFpA>5JropZNpk>VB*$#b z#ZJfdjbg0P{a9NI@FFD-oNEZ&WIV)4|22L0bZ&rdT8Fm_Gxmkbt;=9LZ z$7f%B0Ysd1(XQ-n9G)L=Q*H8RVwgL2lQRU{Cg}j_U>Y8&(1hKcpdo- z-xU0fPu7uD4I1$A!~3uH?muuA#>359H?yY(2E(@RN%O-{WjdO0h0Ka!mkCIS9qKrJH`ronm*Ee*kf z69_|`=%gcF&meHCn~4q1;R%G!!prV!JVL}Eqd)Sj9d@~7MdbJi#13}3Uq`1rnqzR8 zssY;uvGWPY z)xn0uzbXTz2_YBk*4QS=H`5yBGC_di6dOJmU?R;{{JShUkIQ`l#syH2rfFA}Rqiy3 z!auUW<_40S2?-z+1N8_yHVdCCVkDsnku8(gt=f~o8_o}vcl~HToD}O2NGT>oKID_4 zg$q~&>9H_F(;ZiJcm+9b;XWMM+*TNUE9rQ2f`k=vZU#v}Y#dQd64m@m3H1|9jKDCz zAt(baFc6Z`a*A_1Pci0JofvclnlW9wVg;gZ;TUHCCa1{Jnb-8Q4FUBy(1i+hI0u05 z)shX(nT1RXO1m$nUoai2G3Fgr6Q&HGgfYV}W6tn92RU!Fpsi4+;XFkIwK32*paM%6 z;to4Sp;h!&hZ=$elH5U39i(g>cL&&Qc})?Dol^*0$u@#C&kQd*XLyy&MU^Poj5B2| zmcXUY(oUbmz>I$`G?&YfxxH2FRus#py1+aOWaSg+kr!1=?NeGZOqGHH6 zS;u1-fzWw{utjqQBvh&d!7IUqPFE4k2;#53%$j2rMTtxw#6X-7vLI{Ue+35v7vq(q zn8XZu`xW;wD{HQJ5~b4O`&lg>_upTxMQ>0R{D)lV9Q2?nu+ZZ|uw-8cyneA*8;5IE zZnM29lSvN#*H~e0YA%ZGZQ+6(NUZ+(N!RN7! zTD)AwTx+QTG?4SiFy|v=6=w1eSuj9KsjI09eq-#{C-#2zp1T+u#M)|NALjRn@i8;!Bu(a0xS zSUz$iTK$sd*@!VrqNOEDnTh3LbjgcSIOR(b3SRi75_e`w8`1zQCl$~IbUdl5;7!@< zKu+?S<8BHWEj@MBdP9-=Wa`slQsGA37N2~Mb@1uDBqw_8P>$zuv+i}z1V?tP4O!Lw zjPb+J`k9nr1sYE6G?HW8uF-_iUuC#L^m;?=<2ww12jb|)nHJmxu(VWv6F`YQox->+ zQ-|?+mV!AdIXRJ)DhMZjQf!x8aD6wXlbeu2CIyTaDl~F^R>=CS!()m2$UG5Omm}4G zmOHgb?>4U%ER^Tx*Z`a1Y>Ps|g(18y%C*9Ps2rbNRj8ZN4OJDZ4_-|4I#ApQCD@Q49bd}V8y?-Hyc zTlhK?ZdZ4gaeXGBjR#!xgiGa!OY-{G&3x~fTi-ya_zfB|z`%7Y83-g%4&8?HPZ2hg zgE1L<(Jplkb1liqa-RTPLW>R;kYURXOoV(;^G*!LhK+N!m4dGBBY@K|J2(m9o~o>I zzPC;dON0hFQI!g-1Bj*(LEzsMnr8;A1i#5*MXS<_OwW!xg3_{L9tP#+<>w)G!Ev!~ zAw*nnor~Nd5c%!(1)6HEd5@@wPq|e&O)*^GWCT-_n|bP#o87qY3TXhi!2NHx*+*_K z!`!Hh|5p)5yh9Q1Zmn*Gd6?e_fFm}|hpdLUZmrLMR93>8vse+^lh*iZyF-y8ltxY- z6RUGisa-LSFsf~}ja$Fj(@Yb;-3wzR4amAw;+>h(t^HfmYW&2%;@}!O0kN5h$GF4a zv=f(`R-l@|C7~+S`KoGJ(ZJE~|2&UGWA6Wd8R3nKZ&v7w$1g`a3vmo6PkS=vHaux_2J>kMX!HQUi~H|cFs@F_g9#YXUg~Q$D@n0 z7gR?18PeDSK2E8RuTonHoV8XjPLW*8cM$C8#zGHoS4OAw9$I!HzoI}sJ-2L%<+q5v zgjQD=mp{f$n!GeBc4_Sd6=tTw#dJJ7Z#UiNaq- zq7bLdWCYXD^)u-Vid!nkv)5wKJHhtZGbHO0MFIxY{>N2NXyI@)Mhx`XXxL-ird7q9 zE${4FE;!!kS2wGJBk!R~8uo@nK~Mq$jPh|D6Pp-aT&CFb{B%-|ARuXkB0)&dMSWuz zYzj0oK*FC2x=iHR;*2OpfAF?mSa82zL03=`A;!@tVCRk}_mKq?rdO^kYTCy&k`OLH zOiUCN1m4B3hN7^G?LP9=PH=WZ`!XMUqbIPgicG*qod)zFCZ`~eX#u;#!#3uYRO834}pl22}hqqCUFUY%Lmv{9G(}m(N$KdL<%~;i%Msz z_V|W>xnZega1=K$6oV)@V1a$-;uS}@$x~ghPvBi=oJ2Wb_MmNIXMjI$;D`gktvMQLXK`B1HMP4mC ze}gPNy*=#LOb)v^VYg@yHjSC+X&;?*Ur*ZFKXLx^&#gA1h|Rtm$1hE-MC>KBw#HVy z|LVlBPQ+=Oaj~%@S%sBM<95uYps-59LWYYgz@q%ZtzPF~8axvHS3;?_PVFZ*qiWfX z_~4(hU*uUdI4|@K3)G}pVSok%1d%0h;6Js|#{N;^qz5bt&cRsT#z7=J2;;xpRdvc>|uAz>yRO5lKBgNkQ3P zk~0ts_n+7r)8(rRQ;FAXlx&w1tN$x5X^B+k#OKqPvw@5LMffF>ni`^s)Jp6QSv80yW#TY}=HOXt>I11F}mFwdza#`;Q$GM>B8%SPKp$wW!VVa(`aduz9|vfEjm zs~0bPrH-0Q*c-iJ|NRnks#y|Um)3XyO9%k!l(Fv_(VQ9k?q}i?HkKcaep3<+D*PSD! zMzkuF)~E7iW|q;El}f-<>S4eYuE%H3OaonARz@EjnoL1T3wH1<^;>+4XxHm(K zG_VMVR>vWB7A9Q>?C^998%r&h1#}R72iQdEXoqPT4xtt}8G&Exp;69iE#(7E?*5QM zG9C2FBrd6Pcm_ZGFYSjSi**HcKEj>M7pDkv)!+1DL2w5fO~z;tVZ9SEL#ZKSy=;rX zM_qf-iZNMqWACHF{0kyXKeDS|US@U~HkwyPXWS){YwqNxB0WnfMCbnfu&ok@YJ&tx z*AbV5X*`PYwk%x{sEIAQjg%sT(|%%unspj@CiTMC8=w-rB)EPa!avfSXuAFt$Z#AR z{3+qb3R#>J(v`)Mh);?e0p4hZ9@38>*rgV9deQ%xNdT~U`<0jJ!=@T3{TUg?}R%n$|e&pu7WTEkosH`1OVv&6WKM5;@<1KiJpO&cK?Tpj1tTL#Y5 zISHi=1^EnAyOPFc%|f-BweI48I`97pHq<~CBua{ zL>)t{6N>eLYcH3=l~$P(PeUjR1aKTNP2Cld6&jdq44-n6}~<4PC(?q31xG9hJ)^3a`5x8m5LC@SWOMDdce)48M$ABY4cv`Byr zfR-7_=eOVYT|-T~_69%=ar%gH1YqwPSFO2Lt&+?%$n(`nw5`a-v^KsOZgUT+v7^BO z%j9sAYTjoj%%tQZ@X}tEf|XWT5Kg!*lG#jd2q)IHdA5Ox2S#!zr5$zxi3Jydk#w;X zh@{4X5Hd`nM$ru=5tcjP8zu*OckkX^k%h+fY(y62-gDq3C1Lj_T&y{QPOxF5(#Tru zzlD=|UrWKxE2YiPW&JamKVjHE?O*B*R!f3Y0~sL1rKtp>1`NO9RF)wsd%hSe7l^GH zpY|T>2l@MgE3pwr97S=mCe0ajE{}{K3mlt;<;6KcL9sE$u!D;DIbhkWezAOFTY5_{ z38|Vibbo(u@YDsQNOn6xYhXwf3C#eXN)e z*A!VI^^x`3xr|zL5%#406pK{Xa2t!)`b> zREnnYPp8K08gWPvXlkg!J1gzqrn47TaKFvEcWwh#odY@W5$Q{FWr1~Im_1%&Akj0@8c&3p!`JF&kT6-(( z)D{+mDV%~+roIP-v?#*FyLW-8zKyg1K;@R&0M>3cpo05NRBBaCtNp7CLfnH!x|v=~ zH|iTko{Kj92B!NPN!#eID|H!aEL-o#Byct~W{QjR4)JUVfHS>-XtMYk3A;*G37W8l z9JM=Or1(;67KiFACX3l?cLJJ?eA1uGubT_iT#q(L(k9(x7pb)4MDL;;qer$xr>sklUdPxcND#!~@zf)1x1))j3l}sIGHAHlA0DQ7P@KOdeX8)80C@qyrCU0iE{<058}08iLlePb-K zl(MmRqvDS50O%%*?Q;Mbr?V0VeKQ7IPZljEh>HZAVS7a4$H32U^(Bt{WEd?cUj`Wc z06X#!G-d1gi5KoY^d4al+)$6rL&FGL7A?z-(H%bRTxPcIH-qszWu5SIsTEflTf4S9 z!sxj&NDXrz^bshaJ0w{cC>kwSTrh@vDJg28)v_E#l@xQCf)db=6_$>RPph)>g~TU0t0Bi>=A*Iak1# zMAxy@MdR&@9Sc(MqUGht_#G@g458WZ#20KH1~e$qz%M$lMgiAWt#h$^3WQp{1{J5P z?e!K~ZiJ0snsb+1p&`q?B6FI*)Ca>_F)Gv;RU$FWs?+La-c{ zo`V&Q)m17+6cj96o=2v}y$GM)8N5=1x9xB(q%_XH&`9kd+R#e-60*pR7w;wk8_?2# zlJHcV4Q5bd7L$=C9tDi7OJ-%cMg{j2#00Gd_a$-Rm8x5w+?TE=BC{b9^R3laC6;T^-FxPS< zp86&>cl23fD%filC$k5*NvaFlrlRXWy4Og?Dtr6V5h*3978imS!*FPls?2T&(i(rz z4xo6*PIM^uP4DZ{ChKq*pl!{J3CNuf`heE#)fh>;f}vga7OVirW(M#O4IK>LeF@^^ zu-6ohOraacOS^xKcU0JQ2e=f=N6+gIKL5NNf8HBpron10c@gZ3j#1!BgVexn+KF*i zI@*SfnCE=p3=x}+e*+s%#8-|0<<+*W!*r%8)gvOvBD1U11;7E6z;c_HWh2bvTuURK z>Qyy_8}|Lmaas)lGw%kIa)$1~-?H#ks?we9O(L+B1m?t-fHU z9S=ShmUvvtZ|6??2XaBKq=X4sa{OF|Fk=NKWT<7Q1&C(|zbCE7(-FyQp86U{W*w9` zw8Kfsdp-3P5+5dS;NVU@P|2GUQ{-A+qaI_b9{>%fWd# zYdkkdoOB3jmLf${PFU_e#Lc1acHzgh<&j8avQy&7Xp)-;EaUdmxqjxx#5g&2*S#o_t$IyWuW}dS! zv9%goUtpOY_g{iB1j6chuDAw{r)|9}9KAs28+NtZS_wgehjYXd5dG8BP4W@XkK(7Y zr2L&;l2I)=I_{^NmqXzkprfa&BO;|so>F<40hP7r+?Eu?3F5Xso z(YS?7hxW%_Ng_c(r5v}aadlU4Bok*YMOw4%BafH8cTdF?&iww?h>*%hN>i{Krn5@9 zpo&=GUGrB|ibl00ZCL%amExwQB*(c;#A162vpAL^H|9u9*-s|hbPu&&^W1m44tzAl z0m;$qY;E-i+$?L>7X4+Slkmj%t=~*<;pDU|M3OA5ZmKxoeI&a7#f6QF(?)tp2(Y4a zdM@rc6GXOPb*{=uio8Oz!?vTJu=_w59W+a9p?cRXQXsrn4O2kYitg2RmxAryV0JYb zsa$*pUCb{Y<)SwLY-=SnBqB*;1j~8`)OxT5P*{kRreowid?eLgYh`!}tTS5BNrx`{ zsLSFCpO8z8S4c{BI+Kd4rtu-iS9oQQkPbPj9_jn|6h(-oOj3q3zv5y)z8HXsc=yUC ztjmNK*prmx?U9i+{7S1_VqM*|_hR9B^^qM;bd2%)LVu-}C|Ai1PT{cc*x+op3nRGe zw&n*n{NBTPy*f3$dkgTR?f|tTvQTklkrxCD6;_$>BbWFs)=k98n$$~jW>p(kg)be{sRw!M8(K0uLXU? zF|!l^>W*VMf0DV46J0<0PPuAwwqQ*v+@9k`r3NX^@Zgw~26otrIaC|xV(zGq^-c() z!vk|MH%`j<{wUDb2r02{Hfnoqyyn*$*evLjru0sd|56&TBLPCXOg_D#aNIj zcA3MNy=_cJk!EV8B=F*XSjhg>@NDkWXx8PTR~E>n=_VS6LAs$2>xu`AdK>aDyq3ht zHSSgc4i`u=j%6UI&Ts}*qAGgNu93a_tbcWG_I@v9%YQHa;{G%o08`8=3=dbkW&8k; z6pG+mKoIRUjHVexVqn(P;4Z7jteWag*i z6Y@j4XXR9kY)qK&X#qyWR7<9N^k94v#2p&6$2~j_ZG!=0!d<|6S9=`j1|8cN)>h(p zS|A)89^#l?HDIWMcGwE`mM)$q{?Y|F^hcMX?z=XRH@pv*A`hVS}0eCNCwHGT9pF(Z|T5MSpssv;4o zADwunp_$U(C0n;FjN?7WBPecs2-%`Ny{||F!}0FD77`930i7}uA7PAFTUhdZ+?zG) zx!u1iF3?SCL@j>Gz%SaJm2+BuTy?M_h3u{&z<~=gW;}djSR8`0;w!jdlYEN;*7)E<0Qc2!_5zVRVGt!2Ca=0YM#Pk? zndmi=@U66&>HMi5|g&c-r+4SsNm0_;hO!&DSR z7h$VVp!ukal^EBy|B@-Gxw|@g*)^n2IG*x8Y~(PF%>g!&G$U*C+=L)o%Sn-E*SPZw zJ?kX}jiKRq#;|{i)Af0Yd~`vF6U7V$L30R&;|9&S527mcWJ~K^X3(tT>bno%QSY+u zr>So}_?N?+T3GYN@MrAsX)>kWgRBYN$NLb>mTqM2+S4c%^lNk(QMT1r{FW|yL0WEn z(lYkl;2p=YsGmtHy7Q_eEO^H5J`jM}KiD1qZHO|BIpix)NGoKM1|s7Z zYdfuvYh`{K4^MIP&TE~R*}Wa2N;p~o2b{(u-W-IyP})%JEXt+@xrD$SckdgIJ+MaeqhF@8;dp`-taBVI{XI;c+UT_>S zD;>+?^K~)xAt;zL`_aT=+vI#a6q`%W@8kB^huj_uqNQ_tOmr<_kAXmDQ7SFBIo7Qe z$DY=xB+F0k!G|1yt|?QMjF;$`Kn{vC`EB?iv=)9jaw38sktSb;=Y@{;E7G^&21o+y z1SGV}Jl>u8#xy&%?Il#Q3>|r)N5hwc1%ph)DVD3M@Abg)nayKPuw8oCIJvu|^ zcdzp<7_`o1`zJf_rs|ZSLHG6)v9WO~YynaBk=1`lR`2xD$?3V2fmx(Stg_mjB$hhw ziS<(WwN`-=Zg>$~AP=2=rJS9|tAuT*rv|)GgpCEmQX{aL@ zeQi>7pY~;P!aVUOCbc_t>?Q5Xq%#*8^c{94@c3wYPNvO^>2oE&7RXNmBnv&b538yuPA&Fn8#0}7mUD(s& z{tZmw-Gv-D0H3K#szJZvTmhd)j;809mYFl~gU0{^^I!TMl=bbu_h}vb0E~w=#-CbC zf$6-1UA}(?`#8eJ?bQzl9`Ese+c~>$Yau5<5}Wk{g6N;YMh@WlXeHAK!B%5=I}E=UP|@mML1#0W7kCNCP0QaST68q8GSp29FWRJ|YsqxNH` zqCXzk_VeMlmprg7OCWK0t|U<}lgP&1?{|B@zx%JBx1g~H=0QCH4Z5CdTJJiF#&cIeIzz2z$8Rs~gyALVfy2q}cC$=Xj_O@1+?vlcdqQ0|cwQ(P-JYTJMJ3 zCS8)GG0_SOp*^I4@FTp}b9BG%IG-59TQ#j|fmL77&EmE(6AZlLbeL0IGuNLSkPD{X zX<(Ws+Dh#380?<_2!bjElSEV|WIMRqmQp9qh?Mvy*(w!^Js?#2> zMv0e3F2<(_P>hT>EfSw*!HskC$0uZOj6I=kdt&taYfK;S*=G%rYP#?rJ_&o#YD1;L zja@;IohhbNvyfO+=q4@4M>QZdQB;F2>W%@JR+>0gl+&GLH>fRSQaf&_-bu^?{gQI_ zDTM5r8uSl21+^!~tp!kRTL1+tZ+K!To=0iXW(CB%{Yn4gjr`kNQC}l1W%;H@{}8_L z!ET$8ajfY$8al9!u0!$VguHUpdG$EIR!&ax$Jv((U3;ihypjb+aP<1i2&fTyztek; z6Ow)}i@aOlVivh8LkinTe)%3}VCX8`r_1+rfvmkl9BGZK*LK~RUR14c*1O-rJP`Es z!B>2`mJO&}d3bmSs*@{_L?4&0<zK7k6MVFP6=uQpibDB>KsE;n(0Q?Uq1QfyUQ1spL}vEH(TNW zDWP;SJ7(SKAHRani2{Fm*~j71s5Dr|@9DD6)FnitOnP71FC<%)={1hHw22YEdMi`m zcX3q76RYdAyB#LNtvE{0y(_V5l6EjV^A*5oUCoa>kTzP-fUQAVOJ8(eYJcCgyB;{g zc$Yfsb@8kDx1w>{9}kJaag(SsO2QhON~F;wEDafNJWJxsxGaX=(G5;{)rlpk_nQkL zgDWoG#2ZVQ!s1U7xp?xn_m!d572#3?&Y4;HmeZ^~%dTPY95qQMpJ;73 zZP=MoF&=scf7{(U{$c0A79wu99)O}Olqz|<@o0NvA8)==f=S-&?rm*uJ=ogW+`{Xx z^>xsj;g#wMn??pi;UJ7giivGWW94X4LsxgbBusfL{<;oSEeC!5{{ z<=0xg(XP$7L*b5E&6-a~TWKVv5GT7L29{o1Zm=v->GX(uY&k4|*4~htAh_ormoZy` zu$;yK1xW8ogTi$cdId$fY|V5l^~GyZSewf&{2(q#)LYA*D3=p7k$Pn>?H0|d#jHa$ zOfDB;nimCkPJ0Ls>g&ej);8zuOxXA2paOO^8M#eu4Ca)&L z*=&H6#$?@XX1mBH@@!{{F&Ss?Kq`uP>g~CD_g-0I5a^N+T!;UzxFdO8BGtrCqQa`= za1@6fTy7UBng*xLcI0AXI3D$q{EGx$%G%gotG=GWxDiu63FJ5ds-$yQb5gPcf|QQlhy=L*8QJl&H<#-$Mfp08SRJH#kQIp4ZA& zNE`U;K-b6amSh?-%tw?R?*iL?6JA9^h2wnuYJdcFNl(&6Lz&$BM`kRY;%w~6i=NxK zoJ>i&a=S{Ylika}MUWZV2Lt+mOb9vTHbP?8Bhhw4S9~ABwp2rkKaCE;13{7mmh7<{ zSmZu88eQb73k@-Fi(*t3veq0z2TmQ34KwS1fK_ie6*NL?!%-cLKCBzE*kwz0&z4LQ z8v^uFZ=#)y44niH3EwxB(=7c^;yn_DBWx7Jv(XJbQ;jk6%Zu|yjHp=S!|oGsPGOrs zhEsC$u8w%fxZ|F5mUhb7|XY0Ij6aFbV~99LgOPe%1M@!A7Z#h#R= zmgEraCp7E4!%e;3iuf7(BU~+-x#QkzUOSCC@SZ*SkQpiV;odmgO^ZMziPrygb3z<+ zMI&N1$;E}w#^ZAdBzObm@y*%!xIgm^72|YzDo2tPTPq80p+N9T-I6UCyYcA?pegcY zosV_1wcl9E5m_uli#`0Dak3*WFlQuTdc&q98&cLt%GdC#gq`c=8k-W`B$;9#qO=VK-xp4M$uU7Zg#C`>Ja|FL>2 zHK3@v_WtV)ahFFb$fBq(Ti;s=e0A&;hK^;Qfipzspl6#27VU64otP2U08$ z)ctpImah!FIub=X30T78{aifji^L1sryN$05JIgxKGseSmEt7-rUaZ~W}P(3^y3 z5(~Tbi2VL81Z<(C;IVvxMKJQ742$g}T!h9YwhA_+QyGwz%Zwq-e9;T8r_eSVfyRx0 zZ};w{+1L3(T8eZa``IiSu9pD7n-?6HUL0qytSKS3Y5!W2gJb^Gs%@)i*yEeIy_A3Lw_~tUtTH}_w`J1EFnu+Ht?qy zZ}AogL#A0GOmGq|k2-8Fq7Hu*_@XH7F%LDAi|bWgdA7Oia#tH7cv~6@Ts%XNDB0%iP%GMg~U?j&#rm+uC&hhEL z4F2Wo|M>d!_eV#-Cp~wdgXjSnxUC|$@_=uWl^rF~Yd6M>JJ^n!;v4|?U@?J{9IfEl`+R8=kR%hrdL&#QKz%0YwZE>?5i-ELY$X>n?>i z971G2{Iv+mu-tpW3G$^+1r%lT^fh)c7>+2p)lITU`y#R`|Du%QufS0czr@}SA`e%O zjv6=0v0!4|uov8*aejXN|6W1IMda}5+R^li`EV78cY0slP82s*Z}$47ba#YGmtzEB zj?gF$cJf04+c}Kd?8|ZN4bGv}|1>B^z=qEUqqU;N&S4d88%DeXCNJwE!AZDlkB1~A z$0TS??zk_xJxlwl%~2{*av{>Y(|h$|h;wAi$^deKHyqE~5ond;bE(O12Ixc8-lb`F zX)b?LHvVZtP3Zmhw>_oNAg?K|F{cu1JLt8h5U>diWLp$h>P$PQIzw%ZVF^5yePvkQ zjcyE$Nzm=`ygwYR&u}M~MgVa^r+@~yHUhn1h4(i055PFMywEYLd*|CDo^8aX1XoD6 zb4M(z*$_dK=n01M;A9M7M70Zkk&~E)XUl=}MwQe{`f%nqVB;226~d51_|a!V}xodi2rB!D7)idE`p381Y$J~zv8F_ zFLHYLoh=boE?*Sny>F2R3>-mz1yTB4Ly~5#=EuOt_O4I5H>4pHY5MHtg zy(&B2tB|5_pUI`s{LUS6eu6IfAzS49q8Ki3W`hZ@nC5r62o|5}o8l9~fuCoP9a2Ox zSIV0K{8{|MiL54`@)gGYdGag*YBrW9hM#dV0?6U$SO&fpt6}Rsom@i^a5$AlS?D(f zSS`5G8>sR_0zGX&>5$8V4f&LVDAXNf1zZw%aGG)DfhI>`&T?*c^!&CiJ?33@(U^NX z<;276zp6aZ=APfn=G|c82n&tlVmQBZ)VRR`%r0 zqOl@m#WLnacsg4y?GLGJ!&uC}ngxXbwro`zc&*JC)3M9L6T39=tBT#$rQpc0BJss# zS2FaoW>Tzyc8PAxK8|EV<>3I4vwDpwH3{Vvb=2}cxCkNor3g7*qz?nZcgA%9E8|Sv z-2%lH=vDU}jvnn?T|67Wm{Cx4flM&f3zmW|nUA&nVDXj}_ZM$^UyKUGAI%@MvD^AW zuMB5{i!^$Sf{A}C=l$vIFN15yr*%8jsxNwsW4C+`(x#?YLo-tPTcldU_aFP`R}I~m z4dAvP23c}*Y;bZ#a=rsS?qYy^0=<`mYrp#E`CtSwg>(3P7O28UK=dMC>B*^fA1PSv z=by)M^T0cYf?<_Q#tXy57*aBsx7s4NU zvX4&-Vl=>6uG1Er6j>fBX@;5bQ=3=`ofsn7NA!$x>!7Ga)h0aBu~@am&@j|Z!#E&= zlO@cDE@Q1BV;Fr4E>@ap!^zN84NHiUpGH_M)LYq62c`vpL_8aXJ{W0`;Fe4&t_Tsa z{jC7bF)-(-2@mdu``Tfg_)}x_4fZPMNBZ$h8r>+`1CHN7`S){Oy=TMOMSuFT1!JLL z#iM0YD6qpRY}4nVdhp1YTAr2f^*r>H1cM`iEhx=OJIR>5(N5$|16#9R)$)j=CO1Wa z0$aJetT9B0eucq1JiGS6B1eKn%%Z9AJ&~x+HAAr;wwC;dV(U9wk3jb~1(L)og{cXo z2DXa+w1n8f7(s^%gDvl1rP6qSjW!(V*#X(8lLAyKIaF_UsssU2Ur6MSL>9p_iA%zG z4(%Dzb)WWd!Who`mxJ@c3}5|#H)u);%~>H!r_QvM6;_2 zm_pLZtMTMzkM;V~J`n!?a5e^6K^178P7%|!8VRLl7<6*TDqLaQ5^4pztXg}Q>C~!k z%v9MLo%Am;>#j0pD0LMvv!q@mlGdE}Vr|YT^H{R;wil9gr0uV_;e?o+AzxYj)Q_+M zaWpfhSw|V9U66ai+Iu>fTyOSaIJcMhVLHHn)%QR4C%m&fx?daFKe4jF+6}*+G6cU( zQz@;5vYbZye|voY$)n?)Cp*kb(I=;SmHa_oN^e=1qj?yxZ z`miK7u5X{C3P(SY>tTFF8U>a$dyG{MI9GO{{l=67 zD}Vdj*9Z3>@w(`(%9wU^VF0|*c(e}B`a=VJOMcz$W7(;&N@08dgDOp@$>Q36j&0QPl31jVsP?u4zS_AbHLZ23Sfhg z13lk6cxABFX&YHbyv2BcPjh*q4%wEyXxaDcuzdT23mo-?56Gs-SI_zI7Qk{CBgt%5R{Qemr0pVy2u8lyv?Jn|QnU22Oh=bLXH2BR3 z!}~kL9$*zBq>bcN4eo(J*qF*Ma=Hc&;_JYHk~W|Aaz0dJ31P_9iMQb!sn%&k5ds60 zQR;Fi6@^8q@V#WrT|KL~LgVZaQwwNM^G$m>ADqqBU(nGp9WuqY@a0BvG(mF=Vx4IP< z%!2BnR<{7O#b$UUI+gw_lfhg?Y`&s^aHFHC1Bou?qcZzLFXB8vtmJq?#Ri)A6@nzt?^->ywwgHS2z=qfxDldaZ7S zm)+~=usF>bqv$@Hto2Q4Gb7-G1C>~e?kml(T<~>vwYUYUn%~}FbUMGaUe=ZXL7@K` z94%nsr*N#a*)>V?rS@rH&nKQV&KqvqTRtC;U-n<1h(IpPq3mRf_Sg5|Fz1jo@&ojy zznZ`mE6fTP>jW8Y)v+=&uqwfFaHc+^PRz{19`qQu?X)zEfzG1B@1(dr8qS7tK&`hT z$Q#uNn%(Z?HOFeO?3&q$KqJUOpXnifXe&7m7xSZ&H~|w6VepQ8Tu&}(tWU9*as?HC zgtK_$;mre{Xr_PBQx32qWZm0PQ_EZWlNQnCUKwkCvf!Nda&NKIM*n3NJ{3d?( zv`-wWU^~6gJaev;@ppE(QwIqVE?;z=X(@1nVmO7*d(B%pT$K%nCnG_e)u)ZUvyT0U zTWQr>lmVl0?|eK$cujA5bqO8^!Vxs;-AeHeMb+Y{Z#mc;Iu^U($KK^aPkX#S_5?do zYR~CeNaVyEG?o-r7T-c%znIt&6>(xX-584(i%VEMW+cuh^2*@|Je#N`_Mqr@@FU0s z9UsOgCqyZxRS^!w;CNapa+nWYqc$mmF{_RjUe!=ZO>d^yu@jZk@zn$gDCIX=V*kMy zv^uhcM%#Mf%}NUPf;U8!Lvi^FX%ZpQgan-Lra)CyZsJnQADT_aadco1Zp_o%?6Ofs zhv(r_9rK1@Ii#O(Ayp#Q-~f<_i}`CtkUK0}hRBFeT|q7@+&xz#@v~v*=EdrXF5;_t z+s9s~U4fg$*6D)XNxh#bGJBLR`JhV^d& z+{p~=1vtDWNXA$_Ns*fNlWZ@6bBkJnk!ZQo@h)*N?E=v?n{Z}LdgCkTEexkN4-Z5O zHnXsZCRuPe>=jgWIS&0|3|9om3L5YzxO{X4F={jk@9!A8(zC(r)c_h7q*C-8aRjC^ z$0^F(g1FolH6tddN?_5@4B(6QwDL(Y*K1neipGVvMA67>eIH2yr_YshML%H>00EjZ z^VjM8|0)W<=&Wbz^AD0yl)OxIBGrU!X-8mCMjyId4_%GdT2`12JvNoEjh;Q$-q?IF0i+*#0mH;F zX4X%a4DP1;$XX?F_Xy#74t{$jOqm5$SYD0jj^`!`_P!>)wa=ZFi7n+=ip9^ms;_-n zWF>o$0sJq6!KJCZ%G;<5W6G$JEJT>D5m`ROWl=dFP7)*xV4^KUDIS3Uz$kAilh7ps z-#E0F9I{-q0zDmr#@ULWhVZ&+5fcmsNK^?IQwZruGhx8y>dYYWF0GLU+{_dymJRbZ zT@Oa*6!Qgg*z_@8F*;*Q@?>|+@IspWgYgAQ717_uH-!oSA7|t{-XlNJ ztC@oc07cT_(thF~VA=^})ffruk7ZGI1C;;{V#o!tGZo7sQ}KrQ z8HHMyz_&ntJp{wCVn*LMzDq~Gp#=}2?Du|GeS7H5Jw-H*kxOO!GaU-QmsC-!*+v+w zpO{p8eOOCdKc5W5WW+%qTmUwjovp1ByA^P%Mu;r|x`5{fG^D^>8=n60H!!fooAbxt zOmEA93xx;Oxv+}0z*`PPwGn0OpCcVq7;M;lS8$L&jyWLuGMSfslj1hxF_Z$Ip8{par1=E2s3d#QgQ8xp6ac4hfk*o*-c z!)^lJwd89S%iv8!a2;~*m_+TGk9yurhSIci$iJfsThyKm|NQZ1=(3> zSFM#^Lhzin8FEa7()w4DF=a)wuo(?7Nh z`zy9gQIWFcyt(FzdSf|y`cr;77rPkF#5uZ#X}7lntrs^VAw6T}0w#)R!U<@&!Vg;) z%TO`*0jA@rj}$odXU0#gn*@i4TQ~b*2DeCaImx$G$`NDp$zuRF6Ug<+3pVKJMmR_kJPl$m(G`g8XciMi-AD+ z0-LRC^X#Lh%kz0dlTT*YMPyMkit|uaxen(}HZP#XLWnae0ZicZ$)F0?kFQW2Ip=DB zI*k&_Tpk%teJ(b_HeFBbB)n{4FLn=Jv4tJI>&!xi z7egEyn0OlI5cVp9z1w9QCzF$Q@?DHlEAF(T>vL_cb0=njI|dWShO`N>{tz1l>CsaOA7XFw4!OxL&ztTp z+S8ea-sVeTXTXd5aLB#vT|h)~cbNNL*f1W8pQ}}J2t2-OhljlXy8S)7c3~H^d;srX zy1|0c?v5|9>oyyn>ng8nC_G0lV7V z_ZyvFmUK0N4?A!o&&D(H%1*Da5!ipmtz3?!6??r2;i3SxY6IW2Y)*LT^b;L#inp9T z>`eXY*0|C(=4xMQ;U*JI-|~AD&w@VtqDjFp_W89)(X^S|767G*!akQ-b&oA?)SNg? zROu%Cxl-MyF-N+SKPx(R_lNbx9ya1|5D7}xze*JIXJ8NG*?=5}F*4W4AR(av*fYmo zh7_*vkNObPPxND(3*gu_?=-_Hp$e_11L(wS*HkjoM3Et)LKIU$#G^=R%XEXsS$Bu# z9=k|oQ85sh5MRx~%Su<=-mE-czU^m}eC;z8A@(obLQGkR2n8`eJAIzM@>q5F{$&Zh2kRZ=8K0?fr9mmC3$--=888Uq^oSyV2UAq%L7k>I)KxMbJ9lES23()(zUZ^?V z<`d`O>Gs2-4!f4sZ*~HWvf{vB!XYO{CXse32G4?ixHypbE!~Hs7Icy9#H~6`k(Ds^ zK_ZP1-8jDVs6}n463a6Pie{-~LYJi8vp~ex`nMX3xW)4DTu3!tTJ1LpczwuQ8D_>- zvDZu$8LH>W`IQ{N%Fj2pWkzQ7ucO`%@l2$0X=RcKVh0!y3ae!W{EQ<3zL2v6euPv) zXyG{TpNy_7s!<1w;Lv=`)=L=&9Ac!fg)ZQ5D2WQy$6svU4c73qTo@fv}$mDcYt-z>AnfeEel?jjZ6#pOBTrPfxN zkAu6l-d|$DMEo?Mt?pmre8A5ND}>X=#bKK+qJ(SeiA$J?^6M#Idk;G277Y3`gzfnd zXp1EQ#q-cGS28;o%XE0X=g62fQsdyREth>%a6?d|ER|sbP6ce`oybY0*?5fTff2L; zhG2@Nt>Ij7#%cYS%%&4t@`a0NOB9h7Wpot`!TM)`fX{GVGvb6QJ*i<6(FhK5OHZb1 znJ$GcjN~day$3f$RkLpUwzTxvvIQ-u+U~E?;Voe}*^vHOcc0_>Q4I1=0Hp9&V5ohR zZbC;g60+W7%#zPLqQnezL~bovHAFp21El+w!B=>@O)%YuZv%W)X+J?UOEq=@j zQE{TF!QmihGBhTLn@!=|w^#!zhMn~&?OQVyLEIf|mu$QYPF{?AtG_W}CTvxhyfQDF z?Ok&0M}8(p7`i*6uyoCBStK-FU0;X2F<4(;jR8iAFa@W+4OV^YXml$Dk96KPE2t+? zp{&e=?_KQ75fMxEo5u}QI+g+goOju+?*f(`-ug{XUqK)&2R`oiB2jKiZjJ@IZ^xWD z5Y!N%Bm9Hx%89has@Q?vDNfK*&MpPS#2HXd2uQf6nKZC^6!zwTGlyJ6&1L&6jgU&m zRwSKh6!7Su)_MiGVeSpAaVa*IG&`8rZT{t=s4F@mC<%v6_FSHspz_ZSTiR$>T>SEaEFfS?E`D} z`I1^H#+~Sul!P)@8Qt6geBVExA^YSduIZRii&?PR4z>%ZBh}z1twgMCotQZ*gNa<- zi&@>_?c+H4c7X$rl822)ig4b&^cNkXaVplQsgsi?c=^tbw1XN6JH< ztk;lS9T6CxMTti^oepquC62)8c?U)tD38p>YA3w*$u|I+Qe9kuPZNyBUIPpCT$B8c z}(_(LXP~45}sKLOA=h(m-E+T z?s3_)sQ!yn7C+H#8C;94-OiEUrVYsaUk4~)6|v!^>s9dP=JH`}nHL88VACr^>-nA+ z2qjZtq*&Smb2`hp3}jHj(H;1yfgQ>Imo*S1l`FeIZLW#9)l^F~cGU1_DmY6Bk~VaL zqM`)>WS6KE2O4ol@&t*eF&un(dza~oICuP?2HLz?}N!fLYeX)?Df!HG6~&6D}v*useFQDcN{vorN!i9B-l!reJ?5L@z z?e5VD6^)cB9X(P06C9fZQr`;Q-n!GfCEecQ09cgA@)AYKhvT+cLG(4VDKpMwG?A<^ zel@$;RRkn8%AN5{&P)xEt3?HMX-!1LA$CDY1Hue@^aAsD6)p^V7sd z+-hsFBiyEhA2F)HfhR&waTZF>B&xk0TaQKjeDKL+c*$F>WWB`P(1_?ZLnG3bk2_Ns zxE|s(PFJXH#tY6C0nDN(41X4Kdb%%zKy^H(F%Pgl7mCQRKAdmr3MdWj=~ zfjKDE0RJOpLYV3O@M4k#&hLQYr!jy8F`Ky41abYmNL~(JbVUY)v)`$xTRa~;8edLD zKzWYLX9E&2v&K|0s_?!GLN7$V4+Jd-#}=x#0KsRryKdPmPz$De4Y?MC*8!!t7~_CP zpH%bW8BVTZrNNWcDWk*#vXQI;BIuE(xpAaMAOpS!%SX@eE(E3R5qtXn;PE5+AC8cS z;Q2AOym24Y>K8{x8~@LzcRxEintXS3G&(x^`xg;s#-7ak@oH;^9 zPfJ>GU@&e!g9wq#NWUwE?6y7cZQQ%J^6c>B>EY>9@tP*TVSb1cPFUmV@aznTpb2va z6D$M!8;>-3Cjf&i9I#egh(p)aLf}H+vuo1qZSBV|i6z@T@6S-sa|ljBU@VT(uYFX% ztl@k;RBGA&A#QmWR+U^F4fzN(lLbzelay)5BfMnxVvO7a!=K?%W>MZ28gy|<@q03p z`nbFnOZzJH5K=))wOebqZ?b?y=p0fTJhEmFBKXy97=}7Geq{0-6yEqG0 zTa$r?BxD>_{4qm71(Fa9kQPwylQR&6{$6XZ7_l$_&bdpoNrs$3v1DPgElDk&4X%Gn zN=%z=nw3lvdYdgYf>^QXhRmC? zB?(O_j3a#4zlD}EWs(K-iGLN$$r>jPr$n9L0MdzxikMo8zM$arj3%5fQXp}^$nTm1hN?6o zc5#}aY!iaKcvdnhkslmi=|st!sw#b$EKJ_aJCfJJDrwWX3ned98hjDe=PZcs1m90? zQeLC=ZgF5DAzueMnO#aOu$Ie}=`oN^E5IB23wBrIZ@q3geWGEISs}#u=>^PbIk{Fi zePCBIr;lj&XD#U^&1n(6l{kGel53mOCvtytc#wGIxUhQ3{rb1V=?|m-zCx;-v*F+r zdwB(6xN=N+9|=CLgI?||um#&^DYA`6yeQh`eXJ(^+L7k;BIv`|N;50!yb&aFzM#0H zc$)T^EkTRA|96^Ym@!V;lyD zs&3k!ePltKmq>NC&x0Q~!db`Z2R79#BujIE#_3U~7xc z!n-w?)_zZ=fUyAM^82mBK}6SuXO=N zdyd#8dYTsRVQ*{WQLO`8fowDnp8RnC(bgQ8irp4&ItCOd4uh)2A51v4t=X-foZtW& zp(zZe6hqC72{tNg{@y)ua3gcblKEXFi`11eK_c)AM%3`jWr6zCr1%F7^9T42POmO5 zEakhBhQ4)A7i|Iu5$<|P;FAteYBt!xE>9$;jjVpKZpe&G^l} zGnFg9%_kSqpXGg1rk6$y|#mHzkIclW-0v;N)TSL^@r^zcjk^V#hc zb1Y5Tzwg;v&$I>JcoQ`KWJ;q|e#=N?CcO4q7q`1ZoYUrj& zR$-7B>+q8I{NPjqMM?^7Ae0@&;B_RU8BWyWNS`9wiay$WLCcoP45mMLMaSNT<^gFu z-5MbRO|dFLs*)oRT-G+aQ`ce(A0?bI#0cuhJn@RIOX>^RpcusqWLW#|n?J(6c>4|9 zjkjfw#GfQbNVt)gwSWnP`hPrxixN#dWgCC@HsaH?9r!l~OmeaMg$I0MXb3`GJM0}D z&47yp7~ zSIN>NeBs%ETA#Bcu#Q+e)N1bi*u+IP``TggZ!m(C4tPuKV<;tBK9F5lXi^t(5@40J7H~*x zvHIY+Ndt+H-q#67Wb9UY zp(}SGM4~edv#yAge2O`ME9;ZASqD@#z|*<0 z2fX>fki7uM+8O` znS@z%5q(lD(7Kq03E$%jHQxA5#)L0gGjkONuc(e8{#%S@4l!n9T9h8WGg%59WNoFq zSTUkym{c;nf*`%|9O3*aN49E*uF^It?B1&o1$n7eeT|#lG@qo{u7Tq0I&Uwpm9R2r z7I1Y$n!(aXH7Wsswxa(g{&2nXE%kka!r&15`(QFgu&LZ(34i$o&JBXI%=F#{1bMYM zzTn$tSSrIWSc_JK@)!8JY~;~H?YqtuSIG(E;Re(;`GzTBFGy8hCd4QE zgEBbTOKxdEbW&HCmpx8%=_WO7&9y4n3>fZSTK2Kt%%F@(HX?%572i@i{5-K zJ}((>In?g@ahmf6>?<{Y#9mSjln7RTj)aMYuqemuCEHr4joOGVX-Z4!ylRxkgTI@M zrFlF?*xGOar&J$Ixto?X{kOu17>%H`_*fgDKA_oSgG zs_vW#J?xKV<4!sy8*i9ajg1I}R5!eq0u{8k|8<2kN>JArsBrcCg;XYgsZ{j&SPv^BCrxccax~X&0B@gk}hcii={Vkeq9T&%k)ZX@-O_* z@H3V8DS8KANGR42+VTmViBw;dL+U$AQ_`U3#T=s&-^P|9#IZNc*i7?+N+@U_;nQb* zUQsN19}UE;*QTPJE|AF4ZZtfYTyIKnuYYNWg`Hy3{;_GTj%HjGbqWIq8sFY1VoKMMk^%VdO;!ks$%%f0h6d`F7k6gmU%eP)9k_XmKb& z^yG)e+ceLgkf#W)mEqZ8WYyy)RaR8@Sciu4V+qmSKEg4v!6`w?F?1poyXBvPR==me za*!9NfF!qo@O2I;#B`4Eqaq*(lmy-=MEbMfjUha8gA-h$7n^JNVj7&f3Z8foRDya( ztG}5ZtdmKLCC~daIoTps30N6g|iK9g2d;Ry2s|jXdB7Pj+Hj^SkF*d1O@9PRik>92opU(I#pbjTJ~fy=)V)l&qeBVT!g$b zvM|uOJU77+fm9u#ty!k(6KwY!D!OKEs^+#M^IG`!o>nbg>&_V%U`+US4}S|m0Bii` zA3f+L!7k+SSPpk6spxmb4WLMes-Iy0*?Ipta37Z!gRMf>fBfXZ_QUP1Jw(!M9Bglv z{3#^8R|F(|HR21)I>bFheGPi6$yM*G^>nyPQxh(+M_Arm1uno zt0xVM-p8@_5hv?}iX-sWVkZ3>-hze&w&-ea+($Iw#^%AzRy&&qc7&Ob5i#r3U_baw z-VSfGnFJ(#w=?M$(YrWBf(VN1HUILi5cTbrc-4k8L?A*m-t2%iqS1ZP-#4N@+}_!E zbTcfSGX*j3$&VIs%QXnCdr=V=jQ`g3BP=MTbc^k2+9{4kfQZEM6s=f(zjs~zH4x zUnjHU+4bdM`bWkTvAXz7dN{@kXBzC{KYa2Doj2k4k!a~~2^~GandU8M`hRFEu*(~n zd2#s8;ME4Qxr&mw1E{yw5C=DQ9|!$LtE_j#ql{(c@Zx9#K`GBiPjHSfA8{;kAHJ-~ zbytZ^Z0J_&@5}yt{S~|{fB3}d)fRCVj`!KMfM77$Fk1fPwK(yFh4&tA|K|_8$Gdx5 zo5zo~9v)y%=S#IP;U9kV{eF*3i^s70I68j9d=y9kij90Ed}L5Wy`jDBKY!1bY$E|J z?JeKZ=EkE(#~i^Q{Z0fQ(HR((or6y2@BjgL53Pn>ofK=F!apr%-z876Oe!3wNgKHj zVY&6-cxU7B7CQdd0E!*pWPpVvvSez*31UNrbd*Cb!jay9#*Z6&$9aptTd>8I*T1y3 zy0x>pvAe(Z00aED(46nWrXd$Ho@nthmetk`_o}1zp%kDh0YDwbw+N=3PRDSB&4xb> zXV*{DV&dtSOp3955Bq!IAip^uoFUBPOZg5;lSU*KS6@$t&tJrZi%tbcyW>~)?y2(t zhv5zpZj7ko(50LkzCWD38cqku(vz0_s#bJ>0uSEK&@qJLVU|ap6jH>x~hD-Onlw zHVghh+TT6Dn$GQ8N%;Dg~$ixtG)*x{Ko%v{Kr1GBZac{QMr-$m?y>6j6^a%9Z;=Hw4s_PLjI(iVoGwR>#r}cbp-wxlNAQvL7x6^ZFm=1Y>`~_ z`T6)6PN#=rv{k@ePj6S?33u2J)4{$cLZk^OZi#6z6g`Xv!vm%^Y-6k&4`^S~z6@#P z5-ZH!6pbWKhu#w~ZpORl5%8(-d^!`52oAgPI2yH1#TL;5TvU7w{Z=M1MqAQ$IcnGp zltJo2!GP&V!3X1RNAPkWH{cX$PAwx-GJL*#gm+rLm<3k_QMWWNPc8K<#|WcQ53u)6 z-~#Pq9w#^v3STlh!~*n@LXM}$;=^XQQiA78(01rlb#u!w1-KtRwa%GCzz)!hxdZV@ zCkBqU%G_l6nITHOAD;zx_B5tCCRTX+G?ByKsYV~yRsutie567Vz5c0QQ-Xzr90wVE zA=z%_w9*KcI4=5|Tzdp_c{F}Sk~b|r*;}v8Ifspe1Gv)GZvV3W?duiHn2x7kZgIAU ztF+KHQWwWpRz*M1pA$E9J`3}dFKX_uoD29?Kxy<5o?S~ay_qB^px+KZLH%h)YjT{+ zOVBwQ7(q2bnrR?H6`pj+2oaob6Y+3blX%_+nB3_3Ak3+8N`m|{W%}fy=D~m{BfBL^=uM9%YaEP@ zVswp+C-ml80SjaR@qcEi9WZEQ3!{(6uCM%KPYzYx>$%VcL!nRt1lc|IeYt`n3lYMA z-3^YyBTeP8_nyM0<@;2w%tR^*%c4(#bUFqX=UIN|L4A{kn|~5^RC(BTJp72^2(gMm@CbSE#DKXH{CKj0taBx)jVw6Jbe{3jtt7 zit0>~xdtc@KfqvlI2NaokU50Aa@u^$^x?6FGe8u^(rlPF6@}U&EBATW9?1uN7dXx* zcBZ<4Tkw+Kba05-=6o8X^W(4;{K8$;|C;RSR!Xe5%tKMI3Vhv2PSDtTXv}pt(aouW zS~48)AEBlC)d>={FWHE}S|xZI$&|^6JwvpHHJ0d%uC6A$+gD7zv}dsS*jODnd&YzQMrE^7bql)Vk18~$IvhQ^o%B3eB6f(ujY%t zxZKA^r?-N1B${Q+x0>fK!2r9rOdNo;*ChxQ@-)|Vr(4nmYgtiH%krHdr=hVZu-WBW z?3Y>UbRDIE*V+td%FwqCZX1o2X@?&|71RaOv2Y!_YC@8~`<1H%3luX&m?j^NCsD0~TWdY|tKh8~VT(bgXGs*AJ}nKcQPn3&scrby>eeF0IG+>%pWoK}gsLM$p)I!7veKMEUG<6kAbIbySZ zYv9fIP`v@v-Wq*G;%s0#wb6K8MZEYvpv&XRTFTaS95GhkQZTd&Y%v)OVxELIhPw${ zZ~E4P4&7wlNt3P80sBRJnlFwX*yd>U&KOuwavui#e8B;$qXhIgWTF8+LNXRZo2D^? zTa*6)Zinnd`oYQx6IrG$v>`1OO*p}$;TBbQH=*HN!%~bzbQvrWQM6!`V&Qa2g?=s) z&&nJDrHw^3On!&8RlPwx(g2|$O=2e76LKW8|CJwE1EHM^N08|#VNdNUT!rC~^1{h3 z8LFpdw2>I0w_=jevz9H%)38BbruJ&2vY72FO{}yiF9|sWfQQkgxoK$}(jH0fGE&b$ zP>z)ad@wLeZ0InoqU;UrhHeuKW_|v3u($fPJgkJMvX-nI5mGFd|C%#g)7>K5i?!#k zSume!)t%I!TjFSNC$(Ys0gi5(Gs6+{MuuoQyX#=qM;0d8n6PLwl!LRVe{wRu8qHcL z4J6J=D;k|dz{uYYg^E6dNYS3gk*h{q38i5apUtF#)}OY-D0q*N5x zRjvqdSjFs$J~5qrrAnAuE8n13R#Il#!oyL~Pa_GDK+&lXppCJJhq~;E56jU}6@g3e z!V{!hxAjG{v3l7DH*0T`!t?ngG_Q??+01Fpvm7d=B~CIl1NG5~f!gG+f*9TdPLpz! zqykME9xjH%C1~a%F+f|z;`-bwsLBz4KrEeuY8=hG!ZO5}end0F1Es*AQ(cy@nU7~$ zV*z%lOIXLh4~S?PJ6r&*s;sb8xXbo6lkx=@ndqtEieF1E+`ph4r#yrdg?L2rY3|JU zjy89iLGg@F(5vk)5OW9F-Xi#S$XrCxOIS?cGuBwJ(*wg%0Zu(clFVTkzy{YhP(Ar& zf?EgMCco2`5UduX-+TG5FzZG`Sg>{ijss@>3*S;%d47HcHHa}t8o2}tW4Z&>7Y=E)Lgk!5nCbx~nYg$?B_1`< zq19_`_f^XjqUJ6GV;bXjbidSTanOq{M}vE_@j zlG*2%8FH`?{~{{IZwBEbTZJ`QAu3ujSu^C{HFl{qq|2fI&M>V7XXu>3vCIL{kii-^ zLLF&j-`mJAs1;obYBk)|bwNIUZW$~HUEXqa(O-{qkmw!=EJ0y726`88Hw+~#Rqo0q z7w6^@odK*1!QKEfg^l_ttS|@|F@%sS8nPB-B-g3rO(IYE zLc|^USXqMW8vK6?xgA+U<+Pz_tx0Lt@bqomkCEZAMgBSbT3W3$P`v^Bwc>%c)7n^s zHjCr~ka=eaAeso5K$5)LD%K#9jC=LY0$PJ1P{ncS97@5f!>w?7v1s5-kf>?0&>7-8 z-II6O$DJ0Ztz5>!$cW-#Lev~iY_WTcD`YGFpqpTEil)(jQL~#W$pf7Xy<$7jh0Zp8 zxNTD3+hVkyPp(|Hl}2+S;Ikbf+q+TCaD>QWZ%k6ECDT6u^t1He5wjYyJZY^lgjV5$ z9CiRT7^+rjjg!aP!Oq1c;-yha(V}%JZE3@*ynuD~45^HIgEPFH-R(WZ_StldGvSC? zN3^CWkT8VhUUGhF8xmjmYKY{X*mW}`QCXqp@hP?({mLFjHuB;|X1Od!wT-CZ368MS zsH4CjY&`i8Ht|BZ8ip)K(qSfINEcTaFq24O3RB+1nMQeXqSza=>vmvDioC?urbOGw z?{I?-r3oi>KKL19@MZ@iW>q-#u`+a&jWRP51l^BA3<5y%(vvI9L7U;-?a;LG64TMB zR~#x$0&=`5hWn-GAiOPX^8Yl1E`2ABcSYDc?*Ef-JH(|M8d5~ zVOrS}9aTFgQWB047lbxhrydVD9Y@@Vxff+GJFV2>g+Lx3jYYAQ@ zd!1Gj9Hcu~k9V{}MY1FzBpDa#acf7S6?ugswxJ;m669fR_`YC2F!YLcgcQOT(aYjQ zg2^c=g-ZE`Xwt{Ms0Bre5y>O7-UQNNPm29|1XC=ABsS@NDOEESVHFR-m3jT1l9TcY z=FB*F^598tKAQf!PFs_j>as&=+ zO5|xKm%&5Tlq_3H7`%Cx$$cns#8!(#iRV+SikNKXF3Y$hbVWDZ)R`tdV~A7N6;MK% zItOaJ*FM6<6ZO3d0>etS>w@*QqQgV{@a16P+|=OMws2Bl@XlDI3E)E63CY>VzoK41 z!{8c0I^g&k*54!LM3gamcD4?XOy$f$CZys|8$79`;~O9sNifnzIM5?YEc`~krLk|M zd3gvnMPTRIe%Dt0y*oD8LtsMU_wo|m!;gfe#%PU}7jZs^n05_*;0RJzbr?*_!bP8> z>V`Rb0h#B1s_13H1PWiRf*-oYyR>*1ROkuu^$B$k023KlB)r2 z2uiy%OfE<;>uS;O>xY7CDv${3zDfF>ODOElwE63`{+jeE92ps&s-oP}bP zk({SJ$KDWJW^|212uVQp?)SS4$Hq~^ZPgo%YgGspFay2Q1Tm_nat&2;)O!UO^1i)b zdBC=@HHG=B9QC6A62=7KOYM|h;-G`EGe8B6n`7OWG@eygUKTZ(Dz+^?t@E~W&2tu# z(4dc%t5pTAh3jpc{uitz8u}z2S6q48Df5A2vba8h#0Z zkY*0k7f+o|5(4x=@sltURFPGTqikD5)>)Rnu#W#lM($7e>7+~JC5|DdA1{9sjDYxR z;)6U~5F0jm0~3K2wLw3jY`9Th_LoRSggFVv!{+e%w_++J3s;{bSH*_1hjn6>05K#Z7PpM7KCyJ6bz+xp-}4lkQEW?H&_nE&3nwF)u7Ar>?U5?Y zw3SQ*^0Ec%m%$7 z{sPIvgaVtTaA11>EWaeGZz!J7jDN<2 z6hIiHm7oGFw~TPCz)itQeFcOKT|h+8OJv<4 zbs#kfwt#rQJT{fa*uFrz6=Ykg(n~q3CS=*H4DGL>SrJ{%lxlEnbd@uql%+N9C(c2b zgU`4|4M+e`Nz8hhuSUz3ROrJ|vUT_&>6ic!!?p)ZmC#Yy$Fh?+!nl$oRptZK?AE?_ zNQ811DM`Topw-BhN^Y^1Q*06k*V1AtlNKy7Rl9Dt7>e@1PllH;+rI+ys`b>o=ae(c z5sy#W1}s#!+CAbZayv*$25cp9_i8y@?}t-qf-@g){;R2Yrp%IQ!szo&wntJRV;CAP z6&)i5kq4?2?$tq+={N%KYfeS98g-|r%Y{Y+wgYf0Ld>mFsitL$6fBE7Yobnb8z?bv z(!>a3!?RU7%DKCaC;)27_=U~{B zE76B|-NeF$|Bjs@$`PRlygdf0kE$k|yIj?ZxGcM?b$rF^Ea5oPBI1d|CVS$J;~e;h zK4`>ih=YXc!#}~@iIW*d7Q*?PigQ8|Ef%;qAc#(MyNQY#Zq80U?HVtXXtOn@&Y`NM zPi3m5!zNxxHEf271}129`H*0tT7wVZw+#>9#Jj9dT%zeOCCdWw*>bm*karu5JZwPn zczvz81_BrYPy1(s4KQG&hB7k3z|ef94X=^sA}Xn>RuS#-HduNhq7srrwBRhjX2KN^ zjEpN*h=o(qZ?eD|3&Koy(YP|g4i4nHu8v*%)_&6yddr0aiGka)kEq5kmmb(iYM<(N z{TJH-!U8;y+tWs5wTS1Whfwng9!PkLw5KS5T$Zq#5p)i1HS{13-SCTFJTI(>?7&=l zYgd=25-E&JIuP}SU?6O%R1cI`YYl#9`hqyZ#jc6|?P7qok0}kAlb*AqV;j%p!@^Z) zk7193YAI*x5cZj74H;3=!KXu%Z``(#3`lrgYl3FP8-tkf3Y#E5gzg)9o;CTO zMl|)H1#`wNur7#Xh<8(Vo{dj1t2fuIRL@T&@78`{eyzwiJ zP*94dm<69C<<&NPIGjvpe;EuepG-WVhGk4hii%A{C3tYkM$x|RwkJhSaTe=(aLNFY zJOooBoq21~;`)w30-Q!-<(s`xDyQJW{1}&6iqy17(`TjNPCCi+!9>oky+!D9!@**< z1D}IG0E767X0E>@Dj~HBRYn}rew~TEuwTWc3XR}+)O;V;iiwR{MMx-7bRkyKt!y%e z=-IL@yIyc>S%Vdy7H8g!X;}Z34x;-w8KfD`bPEs!rVUlMU7&y+P=TY$h+`h$kMLPy z_fYedgg6UL8mx)_2Ov9yU?xUeD4*|Rb9!iByjJ4XLKV8S7<5Ucwd^c-zrRt~w#8aE~P3H!`WH4^2esjemcgx1@PhoHX`^r#`4e%$)v4N6&A)*YJ<%MupEM#0hhAaZ*jYxwPu<~t6 zmm~^>!wt`~CP#x;^IIfQY_znRzROz1USr;}kZzn9Nb!M9|K7cWzwK@v|7B}yS3>%` z3hiy}KHAvaDj_B_?Bb#lk(3XJb!1T49560{BQ|s+$n0UQSGEGY`m3hTqC3oj#{}W! zdfQi^9bDE$Uozqor1=I?w+_Y!(bhLBwtJrWHling`Cltuvp}6C^4TfbgWi;!=%6!tL){z)CugsuQG1t}Vu9WgxX_hI1#F9}r_3 z5RgM0JI&*_n%L+8$`>LQik9yV($gUvJA#1EtVUajpr*I@?<*RPHvmB|uFyf9Ri{ zJT@hUsIYC1_IQZLx6;$G-4;RE^j)y>LH~JI&8p5POQ@^(*TJf18M4E>QKAzfk>_ms5cfPU0(;*Y$062C9y>+MC;vlGHVuUuH9T`nR}m_V6M4{ z3UYytt=zHIQ(YgG2vWHvU=2yp-B4>?v`oWe8g;KB#$Tc1Ij|CiGnALZc6s$SL}oLJ z%wq1ES=LpWHIlIfMge}8cR82evL*kMF~s`b>b!xlx+~)GjK-x`Pr>fbBypFbf!{gg zgD5|nc;+SA-#GTyysFwO{KIjgTv~V9c96skmMC$#s>w|cN61RpHT6znatNeQ5A8SE ztQW5Xto}3s52SFKO`^Ru0nmw`MwR^{GMu>RuiMpduhxZZ>2z%wz3nv@KJYrsg>Q4l zozQM}n~Im5b=fpr1d?ebTI@}E7<7Sci%yXUZ8hEz1bz)LjGjyErnmqQSp`*m3{U5) zrfewXD%Q1hWpQm47Rn2PS=_W9Hy%8wtrhEuJtr{`0V!)m*_oOiNkEv^sD<8e#U)~; zN4va=Nu5Hgx$4^aa~w|fBnV`~)SS4$;$*B;R4T4L(|ocq3N0?JHm!l?-tH1p2P8Wi{QTX5`NoT zeydOw8xj^KXW88bsWZrSo4z@{jHqd(K*?^lT9}_GQ{UXbsX3@Du-p+}%r;BVZH~H; za=(b5b9rpw#{^FuJDU(ALdnSfNu)u5M{_DU(k#eR_qHBC`LXJ2BUJRf!-hEq(RYhW zsEfY9+UPNx>cvplJe24jap{P&r%FgmvegE4kek}De|?UdioyqmzKMtlq#l?!=SE}) zT>Z4#C>{u^CJPrjc7=p!U(Va#)m#^X_N?HA+E%d&U9Z&Q(3ppwf$rcYhot|qt#1Hk zn|jD9ysCma-0Rgl7`fTN-IY5%GG>92Y+5rSk>*i=n;cy`#R+OW88a!;ncNOJYsyuQ z3Oy3h?bb07&G=`6y_9Q+S>&gz1bnkz%C(eF61ItdOunW;QOoOT(of;5piY(VrLh$M zI#oz z=aYe4;kI^bU#>>vS&0{Y2KC%3cuYP#uDxi?Vlc@@J+;0}XwC_%GUi$%TM`0!krF`} z8)br7(=t?yl>n`B23<*}lJ3@g7H(eW5YGY8Wwm1##Spx-ySgQqQ1#+=57#_2hyxOe zEQq^=FPM|M=Ioxu$P;bfwJ9g6$ej23>3nAu2bUios9u8^A||SKKy@fhdTO2#2*I5| zm>5WwoC@e3OpXF2_S-Ig32LEXRkwC^H>b(fJI+egqkwN9B*a075iDlO2Xyml`P}2W z%k<6|j#3vO=|}_k^Tyu72Px=;5FvD5gS!l_=E=$jz+(Ip%F(5oV_L9uIx}6;Hm_I? zE!J&5X|~qt=xYvMA;1NwY+mPmrTs(_5ao%%INWFQ$#63%7Ky#a28|G{O)a5s(-=p& zi-QbBeF`Ecd?V&Fm4KgV2%LrrYhWOwE~qu70URa#fYE;+psb0PsPw5zdcPObNa zCBFrtGu+wR=XScqiijgB1au(v%yY@1JGemP^6&&ZQt*R#1hj0Jqubuv;O_Ig9Mc5? z1tp;YTCi;1-UkK|f}Clq_*LRDTe${1BRhfIFprMBh`0x)jkIdDP)n7w#3BzIj9#S> zoVi1A+n>h~%g=qgU|eEaFcTlU^`x8O79XO3mK+vHnua|*S`qqC42hyHx7_@XeYz_# z<{1+`o57%L$RZ`@G-4`GlB{fi1QOLILQ960wz0n#Vj=;#!Ra~z&n4MIa}4cyZ5~Qs zHYcd@h)@c4UtI3?C)n3I5?DKs!Cn)vX*gsGjQB)n)|#7a3I`l+=C)|?lDkQ?$aHXi zcJH3v5Wl;(wR!w#>*0Z=(6fc8m)qO^^Y=wTmRD}t6i;-}Vy;YGmrsSiY#QYN9T8Lr zM_K`VfJiZUeIk5gAvuARfHBDk?d|f@*^iFcu3*8CxFB4IK%ix(_^nh#o3RQ-@ImCl zzlRvW$oIVK$p8FFTJ7akh^KN%SJ_ck`S9vts% zJl@KYqJcX_CbFA$pm6#Y6As{b$H>6xBQPVg?0r>*qeMAQ;^1-5Q*{ z7~c|S-K~|MZ$V1P;UOqn@&=DIQaLTxEY|z^miN%(Q3B?Zi)WogGqr|ajjxa_2U|bV zAY0ei!jJ(Aa!A8pa9gUXnBH>GSRm_?YaF1sw7e0g%&EO>RafFT{gSocB6NKcPgrO( z<)I3ZLnx=lKr=31UO{}zX|G%?>gva55pkqZt+5BPoI{G3SY^|vT|Nk*O`~T)sq~VjXJV4I{U-~dN6>e_+mJM zLkkhUVyDowfi^%T6vhU`e#k@oYQk1|4`{S>h7Ehk^mWxeN7VMS)(k}g8X0*?=Eyun zq~48`nn&}{tFELp6k-mF+AaH(CSPmAV8J$;Pc=JTDzJ)Hj^rc^1FU6=$bJzRmgWt4>?7n9eJ6+)yBsw2!UA&?W0uCh`Dj)2GY3N# z#J^q1%R9TCgQkvP3l>)#Td?r2nFOk2Y1-PpXlcjQBC?v?5S`5dtavwK!8VeUoST*q zelU^4j(!u2UpJBDHEEIZ;zjTTUDKYY+Ja+g`cjV?MYl{zMvzq`W*G-WL}U&QP zwl)v89!Luz|MRkqZ2!1%u%%55aTCG-fk$p1ub z1+lwshkNU)2ldh7tmikquS=!S$e?tmN43`WN7j>#*tm_M5a8iGekOR?D=YnvXJ~9G~RBe3MQWp=Nz~<1w(Kp+-LH|9uFi5%0i2sA@2^ zA(Splsy~3`l9%Y6Htm~a2gP?}vP#FH%+X~bJ^66dgrpk?LxDr~S=pgr zd%weQrpI#SSx14gMPiO|iy>9BP^tkuk$_k)=Ssj$I20{_Na8bfeV|%^4Kd3- zxM_yXdA}kXb@<$#;m_FJFKw!Mg^lSJPYVYNFYBo0Zkou(;9VCiRfmn{#}b7}*qVtd z$7#8E>m^QoQLDNoeIfQ6SFgyiRyaCkGr8E^h7(ZtwZR;?l`Ot_rpR6)o0PKo_%sii z^hO>G-ntQ7n7;5(xL;Zw2^v{=C~b{whcIVYO$lHIxILl{8McIz6H>Nbq7`-rWFM33 ztRrYAr}bv6qrv%fP%qHhk9!HSjz&0A-)P78J8STb&abSU`ozPYVXdXizmhdp!@tg^ zHi^5N!CCNjjUj$0U-jkY1|F*MdAhm3v-Q_w?5S;U+<&yyB);fwTzt$xv+AlPyNoq( zy94S2c3E*^Wz(Dk*tUrlTa>lQW{$J0&raNG>v2KQez0DP-Og-+5Jj_TgQR^+H33!< znX&Q=4vfk5lS@YJ9^SVfN4w)!*7TiTc!=X*&4&+$KQ$l1J=T1hWUMAiP9xN>t$>2^dj@^cqHaqDyValK`UR87{jGkG0g3%cG2-!qc3f z;^TyP!^4z#!^48~!t<1z2erY@xewYzY988yRPEW{3eW(ge1puy{rYwOb3j5NBCEV`*z=p%F5J9L`wWFR{Yi zjc&=6=0A8D82SHfB+IRG;hPwq%OxHKIeoZ)^p_vD_BZ!lB32K~7vyu{O+*ch5E-7+ zt|&_U=JFzmq(a*sl%2pUIL1Yg3-zAvU~_KsXnl8g=PxDLHYT_Ly9nIsqt#L|F)qZG zTODCEqLfy@EtFG#YrwZON^UtStjm~?^-St3a)@T&G8Ei`pZ)%0Tpbb>ipCd}oxI}; zlvi=zf2=->eYhy2YBD%i0XKc~(!VxEH{TEE_aA%SD+6jPY$SU>jk=46BEqD_FsvM| zd%lPvx26zpH~=!}d5!uJ`oOU4tp)f+1$4Ghg6U+Bp1{`p`Tk@0ZKERAffU#nARgxa zW2b8Z(Yh97HLT0L1?bcExOgW1u#a-0D~HJ10qt-8b$@gF>E2JS{Y}7j|M3jw+F)8U zh0-v~K`USmlezH&7BUivo!*AI3_LJZa3$^q`l(0SGrgQpruav5Zz<-A#43Qdq*E!o zbqY|OGp0NjlCqGdIe>GnmU1b#aIB>r>B^OIf5Dsi=>XX|B0}+~l^VM_T()4h1phHL z=^7m0+V#|vDgdJs&@r7FDMUFtnIcP?pL+@UhW(WBQ)>B;Msc>Sqx zz9jh6KA ze_eoF5Yz{&2T02tsH~;u{pG%C_pH z{&KCP^8R4;y8;aOv6@v6CQ$?j5PyH$+I;>r3_-EefRB=nsAvS;S7RYnAvKdx0=`1I zBvk=%U8f=|61_v9pCCr%&tc@XKui5ZEtPt&8L-x+3aZgqt*1V;lqioPJ+Ee_=^C+7 zspCpxLby`(Gzu&g`mfYN?VPk$jgB7MjH;|DIn5h8+xuJFuV5oPq0v0kRl1bztnY;u z98}mvD$%MSr&h-{MxHj)G@;Y{}3L9YGy?!;kGar$2DQ5Dq7aD+G_= z!?oi67S(ZSWVLi7jg|C10ovW%f3>?Erl@(6YwUv7fINJt=4?Bo;XtWJjzEiWc5KC5 zEZj~hsy`WIwOLUDuuKE(?G1(vw6!@Hh!>Y_Z+Ez;j--K-)(0x=08arMz_bX9y|?*j zwD~?izW?~#?*Xi0_=Z9TvLN-1yKo(g{<*ld8H)-t=NMbqr_lVDY2&)taO93wC9M}q z>y(=&AUEi8V)f%{anE@5)fmPZ*A8m&))kZ3iW$5|Ri%HMHY!x%1j6vt8ik0ifH4ry zF_%*g(6lg6cZ@80gZr}_IF;LPIM2oF5F%>~OH9U{sdWHCPP&$Pl68L&e{6R_4Q~}K zQ-hn z8ZzQF;7WijIMFZ72-?IML0!@|mxGxCw2YA-le;#MgDE!(lu`=QqTv>erEu5jd2?Id zztv*iz8_6q55Roz<1~-sdt@9t$FlqW<0h7t!HB#(6>mfA&Z!&K3-u%oruFhinhiF| zIS#utLmSx*3rFT`11JHy7MdG&g(L67OP?ix6D5I7lcdCzIIW!f7-Z{BAJG+#4@A>5X{s^ZUkgfr{Dlj67 zcz)K{TKk3d=GpoDlBRQRRQ`v=u4ZTYl;tTjlXODSsEs&|RymDT-1504P+`C= zE7a<>I;g7Ec|~bq`)17))e>iN%Kr6Zh>O>8SJ46zhxq1SAYzP0+KYGu3Jy<)`4p%5 zaB6PBhOIlY?hCgU?dCl#wID(_aHvty>1bfSE_lST@v+BK8=;gVoIkwA6g)gN1;sE5pb~}m9GuO+@pm8qLSoEB8vZ|qhRMR)KVsP}ix|%zJU3!b?n93&cyskmKDmE7- z77~Kwp*r5rOD8h|zvWPx3#!w}@M%FAn}(yzddQo^As@@ZpUKhhwV?z$vY2ZS_e~AY z;FF&67Mq{*?BP8PvJhkLNg9`nS5#0j-9pBtQM!X0?m$&V9f%7z_v@PWk=Zwb~N;Fkvh_)`6NEv zK+@+Pvgn1;2jq@#BalY&v`{}i4{Z|7pXP^_R$`QS(!jkiTR8dae^eI>gV2)pySi`$ znU;1BO2xx?nam)tMg(PH{47=1HD0-XfGL)AKegLZpzQZK_$DSyVynbC8tY>@>f|7| zqvPfIrJAyM5f^$!zJ^EEjqt?>FG&rAXigW6Xta>^>c&Z8jv03iM^TXq74fyy5rba_ zLmZJG6Z7j(I)Vy4x&08$W1^^;adlPyNn z1wmp&%a9|Wx-K!c7+5Eih>l7(orvYWu*CpcRXWG#gW@how zV+L3>_Nd{OgLgF+k$G&Y)Jaxb6d#I2c;9=D*Mdy;92Ifda69-^%`albg7 z!zy~K3Omw-#gd$=qPznT)tJH*i~Cvr_Y1BB6-ayUiv7u~$ur)D@G+W_%%#jp7CsPk z5hB%6mBs>l>Vi^k5E~*@kS;Gcl~Kl^6-%InMKjFvs%&67?=<~+nkz~j7FA7sI`lyR zeK6}dSVs;s1l02uD~VG(y_f=>QzQ+WaFS43QNfPz@y4~MJU$Kg9v(vKzd1T%n8VuY z+SO*BAk8 zxe~PiwWFH-q5*H9|$vw$>!0IG*q z?qmce#7RCq)ki{3m`G_+Q#OGcl^gD{${@4Lro@?3Xx`>TQEvwZf&Bk62|P?>jVf@8IxodU!bgDa;bHCKaa}@7GxNE-F0?^NDE{g23Hg z6$E+RnSEG2vDu=DwE~S3o7@9mrmS>Yam{AKtioXT;t-S*8RO|3`NLu@si&rmo(j?f zlpvEYhpmLR^6?v-zcST*2N;rUTw@ZplTSriX@|F;V`M%TCJlar13TgXhdyY8kKtfF z%B>wz@y?NOkGR4dN9qn~IPXT9keI=pS>UYPI?%E3$9>U^Bj&7kMEJ!|N! z+!*9Ep3T0$O`>oe7M-J0Y;}n59JoQK_pzPQg9qG3Eh{`78SnLSNiS(5A~P^>cmab9 z_%fXr70_95#@AHS7<;$#0;*H{O(3NEu)K0wQC5J(mA^k9A&udh#QJHCAjwwTTzG<} zk+!w{EEJ(|AIOzd#$Cv9z;CGrENW2d?0X{nST>SLKgg0tVyS;F#O=PH>h6>NH1He+CFc8oN84ZOR2Z-?0pmj~0rqim%9sgs zz~AEQm7OG8d*n!Sh^?O?bo6BMGho4w37Bm#zQm2jzL^!;u1;jiD%ox#iqht9=spz^ zf*dn%wf#K8PdV9XzoUzQ3`GaN7vgf&;Yva!q~9c-i@39w-bO4If!NbDYr8o&6=`f> zI@?k_2WAAk5+$_N*8-Zm-ynq=5NB zRx49<#`U@1J3f?`UspZ!HDt^6UM3}N)x#}K=&0ifvVqC|D@@LunP!+%8YBddg76tM z3$zN;+)_jF=Eqrv3n!0xPD-1i6#~;lE3^1RznLv<^L>a6QXmX6+sX!b*`E+8ukVnA z9a%646%026$;k%OE-UsJXTog?Er-8XJG!*nxHN6kK?wuhd%@y2pB^6-1? z;Tp<3a3$Sq{4U)d{G>eP29O9hXh$i=Wap0}`5FY9li2E$P&jLV+n`>Dz2I-?fmy-e z2*|iFJCp#yOt9Ad9XHPSEu(W5!Rd>az;stA$IzPfSJExJ5LWYtbY9`w(`3ROPOCl4 zQpdp~_zi%V^F|Sc>2w5g)zA!OFV9I;Y<5-NQyLYna&!*2g4}UNo`Ez!D{vnekgEYp zc)_h!IP>3J$~6PxkN^uGPtMMv*T!?^k@lRp&)d=$^I>_`=^qh9H!_i4%T{C@FX^ho zT`0mlvx=ZOI?JbT5Uf%ZZriXZaKrmK7_#Dp9?SgtGbi6@3j-%KR}t#KOyn>cnKlb& zCj}v1lI2i{0%pw%LaJkB%>kGqn_S}>+ct=Zg82zy$t7rN3RE9 z^uiE^<6oeEPhhQMje}faSZ~&k!iP;s#&#<%BVq^4`M$uM2QkQyeH<;cRU%N z4&Pj8Qf_GNjLGCd?dMeJj}Ui+YsE*GpJ%6|2{P5tZF~aeLH2+4Fi2W>zHzku>c!^n)&@*( zSm${xm{L^Xo&Xi)=T6f*;xb%1%^U}j$q8<-3P4Jk-l1_)nYQ1tRTTvT>BdvksAFDo zP-0n|KAa+VGYAIU%PoZPUZyd9Col>jmL;|gYfyDH4ae%C0A_)YqEeQKW4Tn1>|>W% zm+(MN=VFHr$f6{v0ISgmi6g_X46|ZRHyYGV7Un7q&8PGW{Hw+q_ z$WTUt3#w>FV}5J+YV8hRsH7Je%5~faXu^Yr#~>R@uXP zbqr?m6HRYT6}_qLEHbpxF(aCItcEVHVi`>7#gl~jkOV{SGrSvOQUM^E2hq_8wnkHC z0quCX;)qBBym;%4+{QGUTukALG{<4?g%F6_M?wj%FW$UmK)}ms{>yN30c+H?XM{tA zC6@w#Hcdx?=mW+pNUl~loI|`~P>?~Q4utjJ=#TnA-x;mtI? z$0}LIIN%+d#GEbg1@1nC4mpyhkJKobu6a8U_i0|7!NmsMgn#LNz#n=m8pMNGr=AVu zrd0SzQBRwS8&TdSy}4^R_??^R0X#lQmRyQ(?5YrJv8;eF!KNy9dWES~YL-9+y{`Rc z1)e9F_2V35S@0#*PgXi;f`*1lm#;KU_}ZQIbRu!kO&r0;6?ACx2*HA_D@Uy zF!CEeLUAY*Ar`y-a@;mS=^;cjSUXQEFq>H(|!`GiE;EVELLsKt6dt7%pAQpNYEDIN!iHR z&|bc}P8u4gxDr7Z3oKiVJ>S-|5WHlVvaq7a)5S&hWFP7%m2PfSY?#R@kX$wrD~daa zoJ#mMQRff`#s-(Q&6-2XWVw_r3v}NL9P5%8-0nPrQ`Enz2f$|-uNm6!oNKC}P&A86 zNf1)JF6c_Kme=%kzq`IdLiL)y-1X(2y3FcM)nyA5hNSK_ef>{|h@Oz_H@Jq(<^+kX+d-k-OO}|s2MI3RJ2n;_)C;yj zJto9f5r<7XFhcnTe34=G?Fh49InVHjKY3b&8j<8l9SYxwwtrE&MT`oYC7lDE+_p2URB^#ko z558Ny2S=`Y)ZveK>p-+nk_zjjG$+$ibaMxs8zlr6C#Olo44CWHep1fp2 z(xa`t>@?@XZI+*5i(q&hlsl=hc?Jn$vsBa)A{#S!yGk6QLzU|eDyLe86g-O97^F`Q zjt2Nx5lYHSnCKD8B$fr2ERK(H8G(!179Wkdd-T3WZs?+_XBIRs!5{aJhtuPWA>Fy+ z!!Yg5pIFpnyFcu)lflU^41kb3B7s_Xrt&wqI)lDu**yk|eakB&**z8ejYtUQ+X`=U zHI|WqhgUPn5o0!|ch@n-NgIUyYJ8Zy5yIk9J>b8V?GF`4| zxKvxV{C?S{QK40ue%p5cZMk;;t!=yamTUK3+jf7mB+>n*H9cd|wH(Z{N^3{Y zzgw>5-?hcYy=Bqd8qeQ+vmD6ZAR@LME*>u{>RQXXWkGHW@i$8n#y72L?wfCyLg$&s*|6KPx~Fju3}SdYI7f`as@b#)))LXWUX1+kyLvsbBJr(2gj&!1g+o)5 z=aYB&R2_d@kU>?G?fGekKO;0`YS5=W=C=K=aI#dft zHg;1-VO!Gj8!e!eTSEA3JhG+t19UL%skP__*)X(6wtHi{hg|eYFd3BJ zD1V<%A4-!`i>UkD?Hv1)s{-cYf6#0Uhwkw)_9Y#s&5;DEF`d-GPYScFTe)M4m=yS7 z7?PJUrG>bB#<&1ZIEw2n8JrKx#cCGgIpLzrx~d13D>WPLJGhxH#xC9pn`StjGtEwM zH>BUo^_%+DTM*KaPYuKg!aW&Dn6aAzjrDWCEHLEjD~31w@M&hcLPlZq91);K1|Q-G zFGGT{H7V)y5UNXz%N9RL0B2?Fwe8pAnn)ka>SBpPA!%a+r$LPE(#S{f4_f!g;2DIH z2T=TKSlAx&?UB`3;Sam+B$7yU9%(rQm)ZVzd2JiX*j|z-#IVrG8L)1-Z&_hqEK`!?|`- zLCiu!UaDXP4#JU$pGwPq@&GF+jB(M73jucuV>RREl#HXcjGWX+fpI)mbRy_zEqvdN zBOumQ3If|bscMGwTHQvmepOu&CgsYZqN^lBR|p$tP#cu_G4FC+0Q!m|;Y4bH++9F5 zhZ-E-+7eyeyd{oig%VTZ?kzNSz_O9ow}!R?zRSanVQVpJnF1TM!S^VZaeSYU^2!*` z7(GT8R*A3zY$VR#9D?Rm;~|vA>Xk^jk;@5z3N;@>YoVIXvLfCCB5)4V2|kf&gi;OX z^@F2)QgYK*gs4GXAph zeh|z1AAzh&OzI#FjfIAsR3e=EUf-1>6SP$)Xd5`xilj^`k+$1B16ReRiHi6xW_fGS zF3`q4No4ZaJD&8j_hFDiokjH}2lmQz+(?hsg%aai#1zVr$(R&N*yI{)#ShpMoc4|_ zITKQH%I_y`K`<4gd&+n?9?~nl@W=N`Z|qcFxe8v`5xmNG?zo+M*}O7L#7aS2xkZE{ zcdDw?AWSGCo}Nm1D8}D`P&q|ndD;Ss1Mz#T7r^t4L^hYOP^*s7x~!^qi-LSD^dB`_ zB8F;VpAN2(_o@d~g>!wDU^>8wk*tRG!Xf3?;h|WlsL0F$ZvK$`&Uc?#UGaO@wv-Lt`*8`xut(Nj43mWqa0hOvdH=o2S5t&Fw36qZ0{fK@2>y2xx2S{wDH5%^QXI;+n*zYzz_#wI6}YjwtYz~H;^Gi z^ZaV8H{D0rUBr1d0sBM_$?(+TFWPe{s`?q$(a<|CPn0W`#Q;ha`E2fj>9L23MK#W` zaLsHWxN#Cn*#yN|#9wk7pwyQGQr!5|<5dD!)PRi7c?5J-4c&@7AJtd^gM6uU8aY;) zkc?px8b1Lsd^Q1Y414=KFWo$>KS%JrB9oi7*Z_Xb{39n0Qdfumn87LL)DaBk^$e#+ zCp@`^z#)%47m05bUaOb)s?YK^2yu<_gHv9cTq{O6K!&|R* z!CAN@bo=SAj?avP8L2?m6%MiB9!`fA_~jC|N;t~%uLKpmMfDgPMv)CPm~dMKo z@Kc~3rHHZMOfnXmxg`${mALHc9=fph^=l=bgwForPF#DIv*UmmCZgWq7C)(ImT!#j z2Ig!|y-@MNtknI4I1VfzvL_otkgD?{sj_~8c$k3`pl&7{@!F}B2n8?@Rn|I8(5W^! zaW2Sek0IV0-qsTBVvl{RDfDKxIMnLFd;6vHR2tE)Bpkw^7?pyvuvZvcL42jiR))Uf zc*0svZ9X?J4gSN)&G+IHkuwkuXQ@d;lLSX!a7x0Jkadfjn6x-8%!{$O&x(B>tPI&< znstfgU*o9c&x&9Ej0PO(QvwTl-*jzO4gNPXq!rKGeYqQiWP z@iWV0(M&J7G-wm#$<(Yo(kZGqNFZPeU^Gta+>DAfTU1IvwZ1OJWPvpyI?{ce#@V*1 zPp6Bs>!Ur_;6;%HR9vkp-`#(#>F3-a)mlc{wX`8lnjufTF>I%KN{cmghz>1+f7e%N zrk@cOZ4DhnR|7PJYNNFx#9ZAt$mtMZdsqz;Qn78@4LG!D1XZdL5o>f_&x*qiTRX!M zB&Y;`I+LWxvvyqmA!mci$g-yJ$2VNhWQSDXDv+`;4off=6z2G#ECNCZ6U*Ku;BHS{ zP4u2H4GDd?^dzNp=Uh_Rw}>Ir%H|vjWJ5|Lq0JUzBY#8&mR;^5!l>IbVF3XkIE zF8kqUMIbVD!#su15VAK|9&4DhqM(fW0 z^Qypz!fHp7JnGf}JtuS;i8Br7^!dZt5b;j01Ihg@inscw<#HkfQ)yPm>M=JJ%?k=j z&zv-{+qk(S9V<|uBU805+uft8l;JsPcf>{Mw%F|2gCO7;1`zw>Ezhbr~ zz9VbKq-hgr62A@H9w-C8HW-8xCM>cEb$%`3^Hp?BHx|NjAR)L3jO-Xtfa1@q*|KEc z?sHwS6a%X8-MCodP=w$sv%+4AvKLc6K-iWP*9DEOli`zbGT93II*x>-Qb-qK#jBPd+CJ7F$mNUM zDd`++=9)C-PO&FZBX#OdCL(!5>G6hfygTxhyN6b#;KgEOY<1i|HbPU@6wJKUgTkFVH5ui z6tQIvDb@{((ML=-I3Hj-v5SEzwXL~XIf`8qa=zw7Q>i`&W#wk)Bc#`~tuC~L))*IQw{s;Hc7QT`i?_3xh=Ph8q4QAL_8_clhYhk81;s(?dP?%z-JkV=I{)N+f1(Dkj+4pM; z57EU*!GXf-rG72Z9wqRcTKks_in!`IK8g4(T~9)iT<6VVgJYzGk$BxqBK6%xDRF@i zgQ`JVs0OJ4i}PiCc`3K2{XV&-qFsT{Y;IE7$zw9$@EB()kPv-17;WH)+)Q@4>55wA zW}aLSBOA1cMpj2_;gPlw9+^QI(WyV`0!qjPE-J`UY=C<7bToEnDb9%!1l??>yu(NE z0#BG0{G7gDr195a7leXx*iPtYYsZuG%Zv$=UElz&WQrVz+M@q=C7cP#!2L-4gRRq1 z7M_|Xu{zQ#jzp8_03=&h_he{59DJ!#vsGoGR0K+JN?1XTn65(IYK4BlgPa40;$~2S zRxrJrWFf}JSQ5+7c%{k#XMB#M5OJH))PA1>5_;hEB3l-w&z4UJ3W84`Mi2Kt{4u?vU!P1emIag7!BVmy3qLa#Q=q_G8q zea5cajyR4%RPh&ys)k8~xr%kqkSVmM`3MS;N6aMkzB>gW(oDpZ8@y-Yt6{GyQ%T1k%WIq!pi;q|3w9~beDJd@dK^begay-D7~I+5 zSZ}>t%faHGBSMwQ36Dn?asVHfb;5xmVjqb!XApjGB_KN?0Yz?ki?1m5_w;VgBJhpq zYke>MA+KJ8NwUV%R#1AsA^*+-^WzXmnNI{s zh^VM1$~vm7ka4&Y3kR8@hxHb(kognb2!|AOa<-;C4}H%d3T$?(Nngv51!cXs{YLx@ zXM4%YW09zb!P!eio?-v8~KSFp>*0}sj23z zm{THHX$d+`_iCiI`MW$v9~}k$Ttt8kL|4PwvIGEb=sBb=u_fLbZjm02aBU&a$Z#2S zBqd5jwa?VFc6><%zN``>*PT;PGt#OkAP7{hFno|WQxS@%jZaz3VK*$PQZc!uixh<# z5aeg)bL484Z7%#&NaU_Ksy-MYnMN79lXS-u9MF_YH#El*J(8|h9B;&}C%A5w>qmD0 zL?4zf4ca+9#rYIFSt*xh>j`%o2~abTJItv>ETTyEPdW=^U{{d^)@ik1n2f(WEetxg`w;lTqBOW#P$ox z0eyQ&60J{_9oU4pUZZAMnJIRnM~FFhEi^b*cP{2Tr%!N;_{l89z8=ots~OKv*H#V6 ze*>-IGOP<(X}^}zG+Gp@IMTJ~92O#$grJJK6b=E`CKrfs;9~t34I~V@GITC!!=}iP zX}@A*7TShrvPliS6wqtH#ptz15qgX8rh{aAk&k}?!mafhgzI=>gtPU4^zh9Sh&9Mr z_#y=jhZQ#|gp4&s2$`MEEhFe^NFik?_JfZx6`u!;gmD9Offi4sb_in_}E~=u)w~53wgA-aI?*HlncM zW7j-_0mg7V43VN--KDhIogTqAJ7vo}V~C<~awva4fKinT42Q*~C6bp2_%J_2#tYO? zW&}4WS_?gt3hzrd*ay=$7n;%z@NklNRcX8@E ziwaU8csH5;Ok%~7TJFe9C)jk98vjKvuc;a0;Y-4p$vu6+OX%Ql*Th$$i5U{Y@v2rd zoV20-SuI)oH}bz`>meT!jTvmxy+Miux!}t5d{K}2PAatCM&OYGL>4hCG|H4I z;C?Je@>N^!GKG&&h{%4$uDkWbKl&<_MoxGXWsBb^Pa3SN9Yjx!ulg&>mtdutWZ_hV zXu4uwwU93C>&pdwC1Df}1EF0LpK=GYteGA?DmmZTN$ptc0T7Z=(H%J%UaD)K2C=1C zbd!!n+BS$lP6Xdo(E%|hNj_mEa*{P-nadD0u4lac8iWK_yxwz5B;TWBf;4TGo>qsf=Bh z<-6k3E$A)gGJ^KxI+hrzg$EhhU{<|nnRIu0ZOc2LK5`E3GD!i-g)AbrIX&k?rGQ8T zLSJG|ajFMGkoRi`fW%I$5m;57u1E*u3K$mb%L^&co78t|^)BAHU6yWux-^VtPKA<;<%C-b$2eq^0V(y+4g=DBN{>uj<0S^WedQ zJHS_V=X5ez!;ianoL4{=zV{W!^kxVeXP4NueXpa_S3eG>L+r60zhuUTw+OX_E5Vr! z)uPOC`v&}zxaS!Ou&fFA>D6PANqnm{w$=bh$(wJ&%Cub&5#4CdsJ$!e%UXus2O%vs z`6|%u`Hup&LMtw%X?>{8H7M~=t;fnJLopqz6r-=CWVMMcjB{SG;AlzPOszW@-c#r{ z#-5XI)%-T2J5g?tgE7h#Iv3?rcqU!!Ysfz8ZXde>}lwRAZ1K_X)0+P zIxh~}tfk(ih^#88uYz#fafA}aks}z-4LuOBTsG2zc=u!#cvMHb*|Xp(xdXLvawmj% zI&%)55|H$tw~$A2Z)^Me=bK0W`D$l>^C{-T(vwCdp67S(Hg`9l?rfm; z@73st-fi#vMPH@a7mW#YG`9bkFqLddYKtKoqq$J986$FBeb5Z&Wu{@A9@i+B)fN4* zLc3%v-|rlb@8HMOeoXmeZa?Pyp~1j+4o~^x7kl#yf8_S#{g7byQ<*&v= z#wKlIez4;Ac{}YIBDvh?KeEG%ESCaq6%O1?%`b)XboA-+R=es@;y$j&SueHk9X9nP$hzS!z(y(}Pp z^kfy65@#yxaKwmirlUuXDg?x%>Out>5iLA|O>?k19lR3)_i#t$01KVDKI)rOB|yW0 zUY@tekskZ8fitNiKC%d1bvt^05{C<7;El-~uf1gNTn89bk{G{6QCkt>H`~)eNO8Gg z0Rcy@&8{fXw`T*l{<*U#csenltz0AFN`)fLwxUfLrgRWd=WDn7n|%@HRUFbFH}OaV zR8lHp2UedH9;Lq1mC%-HBZ@~A82l!!9y&)in{_pQN}F$ySn<* z=c+p(=JnU%40*+wtRDY>{2Va9<6*)3U&cG)l~Dq2VnB`9K_Mxru-VK1evu=O;B0L{ z2LR*_Lms4VL0(04uh`IkV}aL9(kj*9ur^S*Hp3{vFu0ivt1wUTx}F6Db3OITlY7`% z{`&=TBA?W)i?k)q5Tq4;;Lo12gbTQp`cA027#!|^*x96rw0gT`@(H|j6CZaMAa;gfXWIEl379%GaU`r)X#b_jc*)x>eLZ!8o=mqys zCg|7`y;w)M?%2Bbe^I7HRWg5A8BGTe$g5`Z@*(@KBFkiN5mz)?-H#WChac7szPSH? z2KP_b??3zLcXtmD{}HtqnA&kFcEsK|sE_Cwc#YudwblP2&#oQt-<9!ne)>!P)5nAN zfBh+H`@@%?fAx=#c<>)T;p^}J!Gq`q3QnZo{U7j@_uH+loDFaRd_JqeoqG*E8l;&+ zK_Lt?HbW1H`SLv?tmnv0q(Z@V)k?))!uIg$`+}$x>G{{fqjUsOZ->Wkr)!6A^Y^%1 zCy_dkW6`{`PSoc`+YWRum0ulNX1T~7EwHZc+ z##XRpi|!sj&i?&w_B-@>jA$@iQb=OdSHH!>-=hh>{NoobIy}WErE@1RLbK@c zO9W7`)jaKz&}2!!*97WILe&ziKPp(K6<~e&RWn?jKpuAe#mlg^>XJDqRg$QbArcFL z*&W=g`2^`c;6%+k+F#by#?hW=xjr2$bQIS(0JZa%v~!wWfsimYdb1YXp!%6#EZi=)4p{!(sn7S`}T>M_A~-Zn1ma zJ>Q#k9CYO*)M+45-7r-@-M%<`9qo`PhoxTa)6oQx@m5qZT<>?QqhxIaa-RLcSF*s_ zrNv`f6<2`sb!j`5B-q%)%0D!qXe?9%#+*nef6lKYJ7=FRw^#wwF=hNfa`PfzclZubW$285TWhfSf*$66g_0v#Brv;Ts^tba?`_Zq|f@?h0S%Bx;T88VV*Q`?L<) zZYDn8ZZsK|+)RA3wGH7?-XPrB*vIofDh{K~!Ka(tH2l&$#?gx(Hvh^O|E@Kl=QP%g zi(LcwiiV3uS&F1;YrC*h=rHY&1eD#p?INpuf#6@xa)}p6{m#t4WWDy zB|Gp}3wkB0>l_nK6#6n%;h#MfTg6tgHL(5gY=F~C5GnivtwBiz`8}9k`cpz?URms5 zWKp>GqxivKZX~dY^P1Ms2xs7J0lvdt<9$eZ33ZCe9wH&TyjGauqNmOA|2d$1>n5!n z>S#a+D{<8cca}Ym1J}5H7@`8Kp+*B^ISbMGx631i>0wDlYi&q_SD^Z!umQ^v&YNvW z&U{M)$5|%gN=H4nJrx-%sn@9hhTny)u|#bowvh^9r{c`fjLlnvDQgX^@qnbRV5T5PnILtEM`yT;I<&#pYQ*aB=fwBJ-n25jEbrim>%HOB&H zaQbWgdk`J@6e;jbYSPFL@+mTm0{y@gqNqI2Cg+wRj%Rw9K**#Koa3iMMrqnd2yPPD z_hu~b6dsir$?<8t+4@x-L=1HY4?rm5k0cJJ>p-nQI`MI+g|W3rAWA!xN5Dc{t>jLC zh=+Z7261S@)Po=4BZ{kN#nCWp0(rFO=0hEcnb&`;JU7>kp=t7?PeZfdTunlfUkq^1 zmFV|c@2XD2Jth$bL71ELjP+E94PbmV1X2AnhT<+2%;+O#$!w9o2YE^KASBqJh^~@5 z!Uz-SC0od;gizqPa7A0{3AzY1i&$mee-;aEtQO#NbW|A(EY{ozqT|5ae| z8Lw>ULoYwu!a;=I^fJNzRp5_iie#+mho`sKUu^EZT;J#sm3{opmDg)iMu;d(K5t2#_qWJI*Vv)EB8s8bYFSF=GT)hdRbR9|jQ z>7tlZdeJN)t*FNOFD$-1YMV}&3pRCQ!g*X3SI*1op4yJRE(% z-hPX&jLk$Q2h>F^RD4}AnA1eq)FS|s{pF_s7jqx)B9CB zaI}nmy~$9|2}v)u#aV>8;#VZz8zV`bekA?2`5yhtn(#V- zc|9finvMi!CG<+Zux1x4V$yC|S*kjA6sVdK`z;iEP-i4zr;nWu)4fpl)X&>uJxy#H zrV!O%hzYRqT{(pWac64UAdmCT@ez-TR&81aMnd{kDTkc5{Gy^PYS@jxMu$g;Af_b) zNU06HP$R*_Y}9<10w)hjwUx?XWJE$VY9UBO_7Q$*I~`dQp;=lG0tmklV+Gs7p@0wZ zoqueE9oZWqetWYx+N{c6@HE!?^sK!h!nK>E`+$y1^df>EPJ$*=z37XlgEhaRa+bBP7FUToI|VMZOIKiC&V# zd=HVx?v#!NE}>X}(h*5Ig1A+xTzA+Lnc9jreHBoP|6XZu1q!XxW+XUH;H;>uQtek> z%SFLRW5!Xj5v79Gq#HGglvmL&Pfgd)=%-@?>B^T*Nm5$uh!ocy_Jj(0BuFUre0qvR zSDEvPKWCu1bEHy=1TU2%8gJq8=GOVebX-_6St(cePp*i&JuH!i-s_;{W>4r#lI>nv zw$ZcDXm@?!L}>N-A6}j7NipC3x?cz+))tM0KuzgaqA;tS=1kk0u_}gs9Mw2ZTlCg zckvvsyqb{lJX~X!y3%`_dLcF#{t>+0Bz0FLki2U0Fozn;kSPD)QmS&fCWRvplP|rE zb-gBQ=QnY~YeMI24UtY4a)&YB?B=t{2>GTfoxWO)#Yz(>Lv@iZP@PD`Btn`FWesz( z)PwqtSpoGMlMUpO?x-}^!hm*WAX?8Bl4%kcBRaPxlLZT{1^-c>oBsTf*@%)Fst9~> ze2I*T#&uvd)5qRTOO=_rAazwGGu4+O8Ur;jq2hH8AGKNMXgREN_(kWM*s%qaKuzN; zBD9Vc5A07D1em3cG@X!UM+#1)&w{Zv*l_Bc2auLN2DzdU6t8 zqV>YndM6X)hMa!RJeoWrgL+J(IdH*#vNVG8?Sb5;;4YTaO0Mt>m##up;MxYTiJY;e z3Lz}uBgxRYsTXI=9*IPetB5q15dMb9pNS#hU<$(sVP0s9uK$@{04h~2DTr%yG_2Xbl?H@@yX9uJV5{lGE?x@~ca6Q&)sn0HG!E!QIWGl8e zI^O+!%7}Y!?U3zL(J!I^M5=ceC$@_$kG!;1T_H+eYVjYtX`X@>p@t=g?J(UntEwo$ z>uJyVXtqGk!?2UlF+!D>05`=nO1C0nWk~WZV}PU%JCVp?h$~P}?o%<`q+Zku!MBP@ zJsE9Mv8)2DZg-kMV3WbaeKy2}o%(=q_N4-#Vo%%}yClYeSjcck9~`d9cflN91p??u zx)U5q_u(o3W%C`0cw+L%cVV!jY#2MTRM6xZ~~Y7=tm5$1}2bxkY@|M>4y)rPuHxuQv(@0s_%075a8%b zN5~i{?LF!`lJ;z{OZgrsq+hbE^6Z;YSH7D9*UV|4D$QCKeXuc_%r0OQ$Am0*%<4k7 z;0Q|<2I(`};AF;rZ48S9v%wRZ*QcK9ReKbhsq~_y_MU8CCC$)facF+75FJqR{K`r_ zxPBD`!@{ds4wo-5w|2Kw4^PutqDZ9Mumbofzqhfr(Qk2hhI+6ht71AJb)#{SP&F#` zTH#cf^FO53XY^H7)l8jFMMw5EqY*}fv)3ns;CE|~QKrU_=YaU(?(#Y>?RDvAPO-?G zyyNK@f94HE+1~7tlVL$*CEr$+s#fJO@=xmu0ZT3KndN!hlr$GND@3NPGOcyF*-BDf z+^$lf2Uk$DcK1<4vy0mxH5zDy&9|YnySRR!H=GfCEL-D1-y?Vn#Dh(D?&3y->H>m1 z5P?n?w?UIdy`2JxZ=>L0of)CJ<_hX8wvD2FmtYH7t;PN?=^VKx9Fb~7o;?li!8W`8 z){D|CS2eD?14qX{W#4^ghqRTYN!YgD@%#3nmXc{xB_+6GUq*yd?I23AY5kDCiWP+7 z%EbdA6^n=G$Tp4fP*#>k6AGbn?EDKaoC{FIY7nz)$lyszrNm^Wo#!GD7gVuKJneBAKMf*st*z;C7=>`_5v=-V#ft?sSU`S$h6ozc}(VawBvJQJK}o z)Vo#CHnh`haGJlA3ax|OjTc6jR9EY&2n2q0&3G6VJlTY)FZLtiV9nu=&J~Ab#+0CYbt5g@2RRY75W?x8mZJm9R!oPAUEN879ZQKY=R@l~If$S`7=TZ14^V4{T zv!v@-Nc=^KOT&^*2K)T@$vboZF`efAJXEBTRJ#&WW{dwX_0AOdR-|F&WbGIUK^YV;jk$gb z+uT|>qVa1U_E4}5kUn?1b*NYdN675R@RAn0T>c7KbjBx#Pb7!^&UxhtEZH}UiYVtG zsBrV|7s#^g0ap$6)!%&U2S}Q#XmE)g zMhD%IgWI=#jRR{bX6jBZl#r)}0+efi*uzE2euy2S&qMATzYY978P4AgXZboJ@p~h` z-}(`Dh`s>0Z~YeW_g5@&dc)s;`4M)HKLGAqzYYAo97QfbCt5lae82N!>kxAU*|&Qe zIQxE@BPz5J(_-@@vC%L1Yp7 zTSer?WH8ESNN3iYx%}OCet;cn5C^w!`!>|bi;EsN&w5e3fcRE1W_wS)`c?b@J0v#` zw{QG5=*{Ftf4thy%1mYTtzym=H+|AwudA{S{dx8A6_p8c^sG)rpdn)FiYXsmyx|@) zuMCe1(Nvyd3sK_tu6j;K>y-e|P;J+7<$0g6oIIjns5u|)a`Bwo;nu~6L&F&!Hk*E0 zo$IkwhPbnCP?Tf3Q0-2MmN41pVNn5< z2aHHuT?SZHFj8kiv`Gpm?qA{p?kLH173cCH1S10-*aysNn{wZ)@d3WIUPF8{|mj#~D}iqmL9{hASLt#q`a@b7LesUzCZX6>(e4c4ubKCuM-!T70Uc zaW{8Q6RC?$5twtDI>tGvSj`_cwPl1E(K1c6$y4dN*!2I!b<;qAaWAo9&K?~}7o?@i z)$U|wuU0p41a&BVs3z)246@-a#h;^ye&t`~f>=pbZDb~i-QaD~jxf{P4p{h*CAd^h zDRvuj?vR9|3s;wMcJabhEea8E-$*04f>$%B3SLgI`W_(+f{B*$>0@LMeRClQP}paI<6f{cGjma|`6;;f?S<=c7pc8HX0Xu~&n zk~Wcx<|SThJYhJjCjd}#G;zL+pz^eB!h}|k9kW|}_~Zr`^1zzAHGn|$wa`E})S-Tk zI8viP89UzbucJi1t|0B@5{jTRt}@temwf1H*fV0Ed^30r>uP|MfT~=z^PLdMw~5iE zI+V{s^1XI!!a7&X8iHG&&dw(nIP(=ThhCF2obd921vvz(4yAu$6UD%7vB?dR^u_>( zwVkb4OU~D#Pxi2w40E!LenM{vA%0pw+bQ6KM6UKpFe>_NyBWtJ`lXiFdWIDQ^NDE4 z5}oQ~HrS;y4n)zfHf~t;R%`>iHC%j83Niys-nkbA3SR2Alth~&3nTWGb&9;*EBB!! z1tkZ3Qcl*VF9*}X8PZoIui6?Cym& z1zGWDHOy>$B?ubXUFJ>@kr38AE*250z|Tj~!YGUGXRZLm9<2r!=!ny6MK1h8<;DjE__nQRbDi#mV_1Y45HA+X$rKou^=&l zaU+CkVPTWm{Aqq%uCbMa;stsX9gXv_W9Aaa9zWNt=R51cf?Yo zFYl&&$Q`Lvx`{g!mM@hS`lY@~35i{w%IBPz$`?Wy#f?!XVYl;lAUAVrnD z$Y**p87||AS@N6O(duTUaWzWm26iP|JKitzCRT1eLc#^D0;HGwveN6zu!)J;E0K96Kio4Kg#C2j^ zED&=(<+GyeYWeQnKRWh!7)cw-Q`SU>=M<<5ievg5-W1%zY+&M&DY>ThrgS(*nED^0 z8SGHS`$ckxx;}7#=i~nOL9iMdTs|G1EnfeKMdmqgA*Y3#9i$7yRiEVVvxnKquymy& z9(gu(lpC{{OKPl5EL=SaphE0bT;@73_6lIG5HkCeKu&4}hU!iM3fOA#>Q}gt(l${+K7aiIZN(nua9u|+49)V5aOWMT^H{Mpf79*p^ zlVDfNzR2fqCnr}A3@2z|^>E$$auu3NH$=fF+_x8k#*AFNdnV|~7KM}x7AX3wKUL;a zR>W0e7ung3Xe+EbwdvS%7q=c7%9Nj;eXJl(O%Uc{1N8E}CPWVMi7smkK z&BsvO6058FK-I0iM`#R`d6GkyUL4OakWb@HlcTo+p7?&Pdf2LkC>56bbS_Y3_6jIXu>fSs}H%~HC}cI@)`qaiXHP;cWmc2 zIg_M=4+wl0&8`eX+qvHApd$tr&}jP05}-qe$3~Gu zdgkdH^n85sc#wt>-B56hpCUcLoaX{RxjFO3HG^0CI++NldA)Js3NX| z(6*4>gH<5R%efw+K7v^AqK-81Pv+uSmvit713$cjBMs94k`pWD`b$z>GkiLmzohkn zsi@mi&gpcAUBbUQT^(5y#$#-^%SC}wrRS?&TrHI*|BJ!=`0e@>TkmSi$?v5$o0A=8 zSl=fJgSb8_j=N1OE}6D)iKrI*@MrEE*F%whsn9t(604u9=Cx>7n!rTL1J_*lnYM+! zk>~;nC?B0ojUn(QhterUvN!c?pLOc|6a4o}k%gUPiLBUy8>LY;haj3i=a;E${yD!) zNKa(*kAu-gMZg{&CZ*GmJ(bH#MD6LaHf`o&jC-tpwp-3M_%(%Gi+FI{YICEIFH&98 zbVxKgg=EMiJo?W$aQO%hT(jkXBw$XXuS!m*2J%3@lwND>C0<7{g;8w}=SoaC9jQ2g zOL-!I@r!`KFWOh9YL6j-g0cL3;YQL7Loqn~z4D?-v{bRQNA zm6C;UJ}CKszRaVh`H@{?N1>x%!+7IcNgas2jJMM}L>;6{%x^(oy87LYlwI8FoW7Wx zc!RW`A)<%d9pP{cbHp9D>uHSa<5owBbwGSodOyR|PHuIa{(k13XVmv|tD}u?G45wd zJH2(-fw+u}jcy%w)jJlkU0xFGKwM&k6}R2GR=OQ%=;&5y)?KODGlRNrZgs5j&7J*B zYNt1CIuMtjUNb$T8xLJ0-4d_wr?dI2ALQ4cNf_k4Ohdousod;>xkx+7gG6baGAZ%;rGC82}tQY&juN?&kQAI853zakL2#ZCYyrMID?C-kqM- zzR_Cx%JE~}EN46P0}A>(qj=m9GMm?vy}j18>pK14VYihvJ7H)xbR>=6%CMdwF+*RY zV%xVesHc+)<^geB8qL+ihuJe^$zi-L`2Nn%NFHz}Cw}jS5Kbv zo;tha4z=%`NZWU^+2wdXc%RmI_Izi39~Hh*=OrtgjwXY7UHRS3_2(%5`%rwE4@QO3 z*K>&oc_}__Wh(ZNes27xFACGvZ)ISw#)b1&5sh^)Vbb`m3~MXCd$ij@q3K&0($4Gu z&X1$xBHfNkTkmXO)!Jz3h~giak1steo!s-mbJENn?&V~)HKSQYv+3X+HW4fz*yowv zbYpfL?hd&ajCkMG?DGubwW9Z#WG6cvPG|G`qEOX?drv}i2Rxlv%8+EPT``Yp5B^#+ zg-|0uP9FyhH*zV83VtQ>B&&`M@d)?t!}pdWB}mZ;)J(sK(H*tl%V-=AYiWj z#=^gh=B z2lD8W5(@-j->E$`IeT{2F0scp6EKAXfF$MkbJf#ym}}ome5fu$k{8-=y$sGY7@=0B zi(Yfd1VCX|NkQ6O%uCJTyuMGjsM7(mN4^BzV@l_G$MrZ}KGs<-$fU{8ajY{f9EKvw zSw8$_4_!*VAP~IZbIJ5e41l6Ok1^4w9`{zNPW2Npb=uszw-49kC_kNNZ)q^i zhHzI#25J)G!-9!8qHxaG$aMJTZM#;aq;JM?b0L)SwVG;rCm+@T4GvEMAX||!aLO`) zrgliKI|~)E+6ug{T|btjx>$gnhc**<7uhVJ^c8d@Sb|vK-;z{NB;c)l(bwI$a97zM zxmj8+vT{Ieg(h0RBIN6MlFO zhaUC_WDUfevj@(In@?Q*m?1O4wF-D zFJM8joU@q?HZItrsqh$07iP}RZ=f<)rP{s^CJHV`)mCKIN+wR^;EIizh>*C*98KQk zQ!W!vvMYf9yt#Ix7MV|^_MXHwEHu~-G1U1)pmn==oDbVfDs7lmEMB7FVOciFj78nO zPo$bPGU(@AxzZkn??suBaclhe4Nf-iuz*5h z^P8v%Enxq4w{Kv6MuDL(ouLDS(vUB)xU8VH<+O&hSX3JoZSG@=7Rta?PiP&HZ#i40 zGm5_c%zNOJ#(68CC-203y2gTbfq|F+As%ZNjMym>E!ViTYEPhoS!o&95)iul`D_SDoOcS4T6s;AkwRGCI{Dofl<0U9+v+5 zWL_A2aXx-B-Q7&{@u%|_a05d^${{~LzjV&_9dUh3m0d9YA$hry@mz?&(@BUkC7Vf& zRB`zi&`;b#l*?{QN@|9_f|Ak|medqphO#=*!wSjD3bDf>qn4xAf@(XNFmw)FGOpTS zP;LkvftcB(v4HQ^wQM_L@sL&oa;*@CmsC*Qq=mZUmH@T@?fFI_y0vUxu6xByr`#e< zb61R$)Dhe4f%1-?PHu){Kv8p?#LZjqjb!r*Q@nj~_8LMR(S@VQOg`tma2~N zMe{{|q2jonCz9@0(5P`m)&NQa-J^Cdq))(HUaRt6^OaBHaIkJ^EIkkdof0$J>ym^W zY26GV<6^TBmcK3N*h<s| zoBOVl8x`tNYq&nCI8=jlb3jfthf?v)aNXu;)`sO``y|*TshSW}cqVfM9CHcIQli5q z9*KKen#8+P2S(kFh7Nw}i>Q z_s97;y<2MRu&I=Uxg1MZ4O}qz+ptymN|ZBK$~fQ=noS$?LFe$2l~m64v<(uU0Qd%L zD@Fi?qJCt#X@R->94gJf3bZ)hHRV%*0kp@Ude?9@LXu`;-gXtyjIw|{2(l%q8n1Vv zs*zqo^mG(6McQfDSzr83w;qU%rj2u3%I=A2)5F6Y#4e}**;q1X$Jd`p#c4v+WteSAn z=Ecs_t!G=CyGJi^;&^KVlVeAY)7QH@`@~&KQ?UZ2h>t&qK?9P-U9D-`ii` zmk$0|`Fj1y-u~|T2G1~m`R|n_o^5UGndR#KaiaO@&i3=ap@DxdK=9+%-qw??=Ue-K zJMyD_vA*|b6#NfU`wz1(vya(V`2P>WdtUMlv9GlciId96)6u|%t^2ZJrAP@bQHv_4 z<~c5#M`R}_DQ(ESvj#^&;F=!b9}#%NGlZh@0s!tka?|4!v1g?QeW{=ioKV_`4S$8E zK@^*7RHR?<0h$#*b|Z9co5+m?-pcIaHEUCFuQQ1OvB3bk)5!=MlXTHeM6W^ip(sI_ zJ#y_)Ff@EtWdc^M#J7*LFZAo9>=|dKZ7YU-Z3nH$dMd+4vCN<-nRxQrHXG&uEu&e% z%GzCRwqY*YwlAVG8oY16tcV(L$XBaWI^Rzx7w5AC)R#ZJ3>qnWBSjp1Rg)dGS9U#} zR=kYL(@>voJRv5C15dFBMqfW=-+dQ9r6O6ChhHei5{J$^LY64H)yXB!t)B4FqPuS0 zu1x_bN3H?^X|)7IpuFO6!gB@x!0hV?{-A%2Z4cZckw~bh5J;!kS9o6RtD~@zsCj5~ zl>_)fTvN9@9N}v;X#7&9DXc4^ZQwYBTty>-9`X~_{l`@$9=>rYW90^Y~t4`*(# za6z2H8k@T7&t5BS{x)N%#iK`FfjMLr^8C_!p&se_`@I{vwU{5!BhqK*$ zaKhu*opk7|gF>H+<{vwVPyy%USN%BRwm7mx6WvB-$TS zVe+`JPMB##ou@nG!Wy1lit&g1o)Y+mbNaY6>vei_fu7*cYDq2o?Qc=5{(XA1fBtrg zl!3hBTkO}hRb)uh<1~($GNil`h%`V^PUzD#$WK;no+zJm{QOo2p<0GD;3=sk*$V1m z6CUXbFh_NDsB`bzqYjA~gek5J;UE6!f%(H97xud`7;{$W-Vn=;0>F2jAyx*bp!{r# z+$_&r7xcRv>DF5OMG~niwh$|UkdJw^O9Kx&qGc!8{Vdf9{?-)j=cgkGZ6R00rB_V) zwmk|>UUdZ9CrQv=i1sZBkR5B>>h_uJXv#+T`JnD3{Rrl1LV5{ zqw(EzIEU{en-hu>6*I{bEs<02xN-zna570{u^zw=4!VIK&q5j}JT&~mXGNRT2ZA9v z^5S|o&qTHFDqFD=+ETkdONgM&P!W2@#qn;?cvwbJ0)p~JR9(Nudwth*lz1?)WZ)#h zrq}U#R`dY-Cy|$?i--`N46a!SK*<|n=q@@%^kJ=A#Jxt4p?)p3>PJPX;D5wxr3%%u zWDqikLvMnDz;C{zE(L}VaDl~-0vq3&Bv~H~ahkz-pq3FL;sU47d>gAiXVN7ekrk{6 zU)Z|OOAp;=l&3T8bi%(2^j5-!VdD0pSi4 zCJd#GI*Euj{O~ww#B@@>Mw00;B7t&EaaIyy@%VVjw?g_aCCcI%gfNSKmZY8yA2Kfv z+_tB+($v3)IJNJ63rck3*qd_GdhJ`qWgJn$-y^g^wwk3gjaQYGuit^uy^dpvT`7$5+sw9P8IK{}As$F3p-Ccy44Z)y zqy)BeGf@NEJG(C=uEgcqNBw6PV>wS+U+dYc?T!7doo#Tkg`-Hnglho%x3;&9oo#qX zw;AU0du3+U`xE1$e5?s(b|5Bra>$3+PU?V0@E?}!q5#X$Aegg7&L-_@4JGepqai|q z8q|^RZiNl29&lYd$}_8zqmhr&u72Mq8N1;n6}*|*opjeG1=i06y$Z{>wwWsQqtoA; zRmlN!ee9=>h_Ed_!69Dqug+^njxF{^@ydp~G`wEjN+9jJyXjY?r1#3=*a#BpS2(+Z z2#%sxqXp$APs&K9KT*XAlLam78B}Q>ae|Vv7ryBQT0%0pC^`Jx)lODinT@ zv6or7+22J{lQAmy1;F_*VZUUMT0{O7&#V0oO@y&04V8xIn~DZfIqsw(FA#hK?n`$P z!h((b;O(;OBy5(8T%7>$a{Jg>&5QBqQ5>-wfgWvfM|=M0p|HTiOkL45W_xLKw8^J#So*^~zLMC?Aq z{dF+fAQ8xy`l}=tL|t?!f=J)erwimf@DX|v#aIznIK%2FsUnYx(S)RdXmDOUd)LQ7 z>}V+T)sdA|C*5Soy{vA%?710H=XNK`TLG0OmdP}!RoXC|%Qm8yVrmk(4#Ey6S2BKk zu+&J{IV@X31$ijF$r`djCW_KGpuI#r$%%J$Qvbv%xpe(R9$OuD=~5T zDYBw7xFA_Cy}sPdLli)?)QMJHqSljoR5Xb=5U4TO!5J4u{F^hiSK1@Y>cLqM0NQ2P ztqc8r^c=3=qO4-sZa%-5s#7j)Uq?+>MHPI+D!>aK@3gw;s;ZjnPV0)U;t(s2Sfs55 zB~#TT5vz+*ev2}GW^0I*4M{$C^VwvCppLs~^PB~(#s+*BPHYu~swa!_Kh1uH5T_lK zft@J{W_i5FN5@Z``#2_XH+ruWN?(|W6f~$U#|CVm+7^ujLX-5RBw_UQD5lL8t*C9J zAjY5s3T@FyATt3)^b`*)RgtJ`&h(+_v{;K>Pl?^a0U)6hDz0FqD(Q&b7^nRwo=q>3 zcTlIJ)w)tt5eB2Og7GQ<1j;E^2+!46CP^t%M{tKi3H0Gbt;ZoQf-R}=v($@_Wf3~1 z)beQbz(XLxVy*DJxB%$LScsa3!JxB_FPvOj5He)ZW_fP@Z`VSH>v{1^;py` z6kf5{qMKC`K?!RlXPimq@oT$LWSGz={JVh0mWxbegIz9VbaHwo+F+7bB{3+_^z*^% zJY2L`MbV)#J*8cg22qp*#D^oN0s$jgD7si|#6}&(yC^i2UAq-zDzw@mu@!MFi?41xmNx!N7ABd3+HmLCy9lG`laYnx?c%6DBNl76;>*d&m?#2U6Ms`wYNfPPqa>g8?FzP&O-m^X3yheH=-wWFo=m&?odMQgAT>r5J)( z8W4DFaV|H7zyN+F3OzViL7}g_0EI6t`f4!(t>iFoz@Wu)p$sNH-UR831|9g72n^6% z1%sh>4GM8p!pujnAz%$5a0~)_gNp;l5~77Pl(0w<{B<(KIU!!UCYK^2eoS^YANp;; zhjS8qDTRTobL@5x3wfZLb_r(;z)MrxUV9rCIn<~qcE7|zkQg%hWx(tN*|n6pOCGT| zf|x05v2YMSUYEEw*K{9NK};80w=wgfPs*M9k2yXZ#)rh?w<=np91_XL0t+Rd8@T%` zr<$qoGf8#8Hts*>@B5F#Ef;m&vTG;!%3_jl`3d4uf2U8v`|!kh!MaU$C!zrKysvwa=+7k_KcWE{sL*=!wRz>GYz|?zB+`uO@BEl8H`5 zS^8dc`^;&7F>_rS>|@Ez$MG=0exXZ?Xl?UZ(d>W*X0&4Z7mSGi8Exe~;JF43DibF3sX*wa^ z>&FSN^#S6{A!!lzIY;m71YfmS?x_{GY|w;K2qa&`jYNXABM@?3C|{H>qSppsya&Zc zZvQ4sRps3+QA34MMJU%ERfJZ!WtQ{wgig4HA_L|ZLd?H1#G-REvcUYFZES`YleFQ$ z2jd;=-ev{2v{o=B&?0r$%Zt}&Yr)oyyIoJ`@wZu}13;ACQIx(-v#s9EegmENMfUMy zDcxIRGxdp!XjR)en34%whd`ixjzt&lTQ?5%jJgD>TpNq9Rh`_fakM_Q&`XztwoMW@ z5|hYskcizjdad!veWm@5PV(n2J2u^pxyI0R2cXZ9SxTr_l(gV$m+9;pL%UuE!FELH zQ@F*$tB{oY5ORWK)uO^G;v}5@J~aM+|*tS5pKRsFTi5Ikj8)oji^horFV9y zGxg(xMeuXIyF=El`NH4TfH}?6OU$#xBZqD(Q8(^F)x|&JM5%E+zU4t~n2W1+D2qvp z%Zd&Fa5Vma=~df~jErP34c4QxbDQkvwl?!(OSHJB=VFe;oGh4`i+B3CP)5Dj{^KKO z|0S$hxr;~oFk>?i87)o+7xDmmwrvP23Vc|s9G(~BcjA7b6ymPhDA130^)kA+~My|5~#c}XqM!C61$fW z5lBix5qsHK!C(4q0gWxUrqd>itG4TzKQbRTL%Dm{i)w!{&n6F40=gDgaO!qFPbD6a z)Ok)>2sCk^(RaLvx>oEs)9OmqO85fHI+D2N6WR^sU7`d`an`4I}cpX7E)4 zucvtd$NwtO_VwdjK%^(s6#QFe4^D!-4YSda8eo4E{4%&Mc|-~KW|-uu-t1<7S{?=q zc6RpX{4%xKf6gy;8j1@5A>$thql?lhlVAAIS8-$tUc_oDxycZ1fBRUp_dx^2N`QQzsRn}HfB91HoUJDpTq zk3}5Go%HKE_!lhE0#+(lXB}~ZtUx-9u_UGSOZQ)YCO*P@I1R-lD_FYC;_Oq*eg%(5 zc8A#{zP|Grsn+~icwk9c7H*FQX-U=7B9)6H%2@LtUw5cXcdR7HD!DDy7ZrLeq*d_^ zxDHC|j_#;E0iiDqL8Q>Ck_nPwbwtZ-uuEya>5<hHi_$mKFnMRSo%bwcj2fMdrnaCK@kExnHQfaF1jUAA(@+@ z&cD1Jj-s4~LJU=wM4%FoTk93EZw{;C;Ob4OdPZMZv(532V78-Tu64Qo(~pNXA>$Y_ zy@FKB2Pl&Yu|eO9a3;`RI15T3PTOanS~d_ta8$QOcHJvxIyKVSuQ*4$c7O^c-we}i z!$y{4^i5)2a%nPHOk$g1y8JvGpWKNqSv12N2tgLcKW}Y6J=)uRv9+=DT+&Py?q!v? zPjFvqd?Bk}Ooweb0=D>=)YT7{IG)&uSK>4_HR7`D$ytub2IGv z1hEA_H?gW^WDPVYX4v)x?=zCM>V#qPSoOYUOR4(8#!IvE(ps&ULpokTi^dsQ9S{k- z#M+6p5iM%3=VlT;8K81hul>c{bh38FxJl;@pTR|Y&@+k{Kkq$Qr#-2?8Uks zU`O_`0vhvxN&|NV{IoF)11I?%aWK?+rvV=!b>USrxB#S8LuxUD3(*^cm$49_sJD;_ zCh}mHR5dfjc#4kf1KNP7{v4(-xWnv>Qtco@{p!@KUspTWCZ*~lv|iP@tpS5`CS}HG z@l)p+#R<2J?KhbUX4bk;IB0?H6hE$%!zFWZjN+rxWH=6{{;B+|itH{nl1$0sHi(4; z5NRWtn8l3<#*4N`m>yTXU@>$jh|+25(>UO)6*aTWW1S-B{1l7JjMWtvg5=`eTM9Bc zb;Skg#pZP$3KcpMkupw3vzWOckm0xWxIi2)5daS%*0;1QAKE;mKyzZ0lsi2B5n=2L z_Yhg_5G6IWmj9CMqT_63BF7Tv!qfb8Z~;R@!y%H|NRPmmz6Hll8?oDsmdWrK4Hzg5 zhD8x(NmJ#e3w<%J{gUsE6|)rshgAw-C)JcIeZ$?cdl7sl*(wCSIPm)QO`umYo}XBb z)0PMU0Eemtys=!!CAy@wZoPDAuXwWWoBebr^!w4|^C8;Xy z^i8LO*I45WjtAo5F(Vhj1g!q zwRkmS#Mhtol+i#DunD)sm3@%Ocxgsd4R=rXcY^Vlj#TUoU$ctS5t5^BuLd3Hd7E;Z zu$ZEP#8989YuJ>alsDLx-h1j!1_ZDLXfFo@DNsnCHi%oFvs7a4TZAa%>`Ic|7OE~W z3u)?9`|WcvS4p&W3tS6FY2bmRvn4~)gkgH2Y>o}IOz=E`ckEKKE`I&tX-YYLQz^YO z+mrK$`Pn)0pKvK5QH!Ac{B| z8^}X=n1Sn5#TA%4+8hhg|3|mXLnDLPZ1`rJA>6$pej86w)~icxtZ?5)Xh9dB@m&Zh zU{Q+lvO_Oqm`fRxOH_cURO0{?nO^sgrNB z(12^B;6fy%y=kC=Q^C=z*GJAn*Q?D{)>1NJP06McOechc`=9s#J?H!vOm4t z7~p_vtnKQdr1hiojLS7)9okD*_)S|@`diD8H(8Q~C*0`|33 z#Nir6?5h^($PXoOQ8ZZp{A&Gl>7H_|dozN92e_ACTY67NwnloV$;7m_+-WFX6h;S$ zXI+&6otbJp9o@w5!i)NCa-ij3SLCx7zYWEJbhCAJ7j@i)U; zujt-y!Cam|5!T?$?65zOYQtX^ZB~pk*;i=di@3*6yA#;@j8m>J<$Hk5*zN9w5KZ6o zS+R#5whG)%_N!Tr{}x-2%#OM<_9^rCpuYcq_TII-Z7WL?{+?gKu9aDGs-r{%Nq}^9 zRSzxEv8HruNlwZu&ZuRZj`cTgvzR=+8&T-yKPp zyubPz&d2`ocJlE9zr{PVxQ82f%XA7SOY9W550|gUU)tQuml<}UrhI4UqF-KL;lTPJ zyl{g$g1R%<*i6i@teh%K3wjj-HG_E|J80s@HTVca`l6COH5REVe+l=wXy3!vyP99} zqw($L=ihCy-G61HfI89$RIvsV6q|EO@yr>$+)Ir^RWTk+o4BwaZGixP!ni-%ylkS= zj}X7>vw0=t1VsT3hw|E}y&0=heYF)F$58|y%MFRx5oc;TuQ{abdLj542@xW0O#lg! z?sG<%xkNvt{5fuV=TFqgu>Q!#&n>8SXDzMCI_3~)5wn;4RVRveac;H&A4M=`_^P$f z757?4=#SsEuX`|3(ZYWc7)aa}(oSx$o!@_)17!C`^Pw|4=H2{7Hg-qf4FZMCC|b_|NWb5d_U;f`Qbro>5w+& zEb~9p7bQZvRNT;bd=6b=W0BfvsiB+sn_Ep+yI3j31VdA|*jEr}Xy;$9j~ojPZ%WSz zP-!UGAhsq_RMqPw#f&gEOpQk}IB7$b7$M#m*JlhMyB88EEt+$lZ3DY3HJ(FarJ_!0 z)x~3IVVvCJOIm-E`HjBJn8jF3faIW{DHF(1+{~0G155Io`oe8@mO zR7{}N#dgh=rI%^1obA&THNj_$rLd4*68HVXs^@Kk~~2z>@`uBNl^6sZjIO|Qpe zY%0PI;;f55U;Z@y7{0uln9&mCWzdzK90%`TU&DJ0-d)}Nb@EgA^3C|w#~-h5-cEwd z(=ql(Twnd)Fh2(|lj3HM=h%a8Rj{qRT@(tk5r$tNa7UgHxux1Eok)iO9WZ4!L}@Kj~T!CZQU)9>iyS+)6(;Gx5H3Uer|AZ=yik(DR=N za1A`p36bi$GPV~nXtvAulzZEA5~I2@bC;|*1};kiL5H+sndGRhE8~83Y^JU<3F2!l zEQDE~8RNoiW*}uGxJlpEzMTZSB3s9zSGFc4_f}?tmXo-T91-ZwHfgl5<%VWy@f=&e z@?p0?>6D((nd^d)teo_8`<^4?!WtMA$!M}zAbTI~_RqDHWeR$qCCnW|J_~|~*`uk% zTq{22@KVHZfweXl`rPgGk=yf!XskyWn@bg;qdIwU+81Zbv_%Hf$yL5qjCB1>4R@G!DmN% zb-o^Wd!IfTmyOJCX-=Nu0g!pJrN=oR~H=S|h@ih0wsJrCDc1nyGMV_Lhpe}2C{U-`jkP9mtq zyrW#f!tL6fF(JwJn>bj)aOOxh6(+9Z7tMga%00@u?!lb5*h)BUxiwtge0R;PGkEOT z$^ZU3%q;049;s$yhJw>CjE9p&W#M3vlq%Qaf48`6nUAq8ihKqFAhgjJ%YfJHOyxJ& ziv#fd$Az`aeAq3WJn|Ljx6XIl%SAw4*7xhDGz$7Wg-_e77K;j(29cdKDqjeb3lTrE zPCB5tc_<%k*_kIi3h!Mn82$-8MW;oH+*;qE^9|4W)VaeP!a#Os!h!h6HI#NI2coq~ zk&IO7@~1%p>rzpsCF7ILHfd@O_pX{UL#nJuqc$fKcJwW%X#O$!J z7($meZ6jg(cN4h~MlJ$ipX$z3^sGrhd&G{x&sKyWl80HQKYaEXrnhqoMMk%`6TB_H zq-rR8=ME~H&HVBREtZxz(+7OZli(BZTT88Tw^H*G3!FdRP2SUI)MmbKMn|L5;W@rE z@D?Yae%ZpOH?Ti%`fl>^8VfhE=<^lgYL_=3m3fS_Q^s%L*8Lu58BXuUmv35pg|)-! z((<>H>+8wSSPb=;x$vKBLw`hs^F4M^vx%vH`ufAW552E`X<;q0OXr*9D}0hKEjaxN zYnJaOH!7KB6P&-oAqF3=F^8DTj}-=xEw6c|299~1zP`QsaF-Ul#hl^Q^&7*|^eZ%m zlK#U|z+#dbV!2fumfOcf+#G!>zo5J@H+geDIs4`PtI74@<%cuOJ;HqN3}RDUxvV&8 z2pcKSFJE1cU9NT%b!M{hgKPOraWq>M=0q{e`NmpBbM3f4Q_q-Wm*tpAcb4=}y+R$^ zohXTCoBDWz-MHh|!23CedioJxX2JN7H<_vO#f#|t$pPa9Bjo8ugP9yS?EPqRb1=Sq ztBEvDdnYC1n+lxg6Vg1g$k2K8yV3E}-+hUXf^lHHIlnl6c6$7s-R>Xl9z5S06&@~* zk9OUg(YM0`OFJF?$MgMD_u4(A8MnUNvRntp-|X)W4=#>Ri_d=vUks1-EXT>|{?WPJ zzStifxVL-9n0Oss3{TUJD)Hj!>G2^mZ~f6VcyjRk>;hf$-8|es3SK-v$fxh^f17{Y z#ZZUm`8SyQ%|D`_`N!ka{1Zl%e>^L+bXG_^IsPu6b@zC9Fgn{EW$(8BT_f6h>;~p@ z7-*gxA0Lc{M=4zWvjgMSe_7%G?FtVMPe!L_?EBI2`Nh-YgM;JmMtc`eUR-=TJVhn^ z8J>P)b!V9?GVT{3jVD%~gFW8t?~RVmNdZ>1%M-jkJHaA5) zvr(43^*>!lKs$oe_wM;<szt$lGj5OZ)g%HP{qMn{l0X%q{A zG?Xel56`U7*?0TrzJkMHdW-D&6cB-f#@^`Z@cDtm#S^sl=X9LskWDVvH^=90JWrn= z?Vj%+A6c%a?pIK;SEr-%=cn%V`RNN+ThCte{Nc#NZn}g#go+&Lb zZT0vW1=l(Q@pcQb{4IFRKOCQfa7SKbYf+3PVSszbN4|LwhP@Ug+wJ}th}v#PhbQN* zqtAv1p!DOz6JXPo0W!`U&@s!AlJgNb{wV~8s{+*K?*4L4B)CQnPYy2L1Ili~1i_+tO? z;%M~e=X=NJytfo`ZI0cJ&V0xA_8r{u>TGlZg^&Vjba1eLa<=cu9w{GCWa|p&K&yAY4{vau~^@IKV-G2UIKacF^3;X#``+500_xt(Q z@7z2@&O9twlBv;yI1Y@vdwuD}?4B;_X!2#N*DLn8!^bY(9KUG4gPQLLtdb0Exa(xF3E=Xn5DVya)D=?O=J^aS-K$kRtXedOySUmyAU$k#`{KJxXEuaA6vo$SiCbZj>$Zg4L0=`Yi zw+Z^Tq>tnxvCt+O+QdVfh-ecNZK9%0T(l+QiIFy?e4BV_6ESUKrcHg)rZ#C)owTW9 z+EOY~LQ+n|Uc1+y)wvduNtJE8*vlRWf=>IVM!zLp4Tk{QL&F^s zdWRrjFNn*!?e$r_ORB3|!sm;~d?KR`0h5qg5>iV-YDq{f5&6pJ?~-`^L*3tm^p+6S z39+1z-V)MVLV8O`ZwcuwA-yHks|jUBLWb{20+8(!@_j*41RBLk zLXp<93mUaN;`w>tU(Ah=ZtUzFhU`cX_`|y>ApUi9J^AbNOE|9R`Uj z#)d1#g)6#+D{93REg4I03p@!0Oo1`OmMM!ZFCiYL`sV@Zdmx*aEHj|k<=6(2jgbju zfgqw#GA1M{29&D47HEVe#vW1Z`J&-(4gTwrio2v@krlxnsk?!$qW1W2$7#}WOK}=> zFhH5NAB?5S`HTWEp}~?+2PdSJgcwMugA>!i6dVCRC1$sfx=7U>2^bU;SL5wQ&6J3> zM--375Zi59KpoPow2QqRSVwK#gw=MBBu=|U+)jrlA~{DK>q6IuK#N$l94>l7{OeL} z^a#;y*)|3wbpd_@>ckbG>9Gd`SuxaG#wfDw^%9xzmOZ0x>k%m(VT}ms(?#i#ojNi^ z%#~sDY?{VLk3LN-D-bt*zLJ;6Us+wUzbIys|6o^1*PIgFXe$P|M*Bj}{^SN;fPh3f~U0dCRXKFwgM zgjpVz*SoThEuRAI$*(5MDuBVEZc`*?KKMW!%u&W1zC3Te(^&M*Kx!_v*ad8nA z?HB`NbZ9~G)iwoy*&1zf|2CoCHYdI`YpduhIRg8$Qu`;&b$hHYF9%HfhA? z7GZ6ZIk(B2=m&b^6K8%Ula2hz?_qj|ZV~7BCWmb+gu=UsZARk$9Pa_#Y~5cuS|K3oa6*xmaC`&m5#J30Mllg} zIO9FT*LFlou&Rur4cxk7{YF-guh0KRa@|rSsdw2E`{$k_+Mf}*z`xm6?Lv8nmV6Q4 zzLMZKVWcXe>`trkIaHmEXF$bJh+_zAMidcU&Y9A_n=&GOmBFtt2Sr(fF!`OP1K;#XQg0C*3HPoY! zh$y1f{Y;j{G8$1;m-c>-a;!_17x{PPuFLf&v(J-aE~JPYJt=>-6&o*7GIVIq`Q8}r z{gY@irmpIk!lKlQXs?Mb$@#EJ*fh06u9g5lxg_IDmtG=PFiPJ#N`Wv?waVn`@EOA2 zj?6uJ%VCOD#f~ydt}2lqo^!9lvI&cXFa7g?qxTQSC_Tkb+z1m1rLK%!z=*u&bI<+F zv3QtA;!$2>k5a9}i_fE>3^;lbl7Bt(Yt;uB^0^egOCKnF5*jW3O(M0WplY8wxJWKO zm;W6oTtQQ7kY^B|Y@8aA!ngBR*ENktY$!GwkXDU5NV|R2o!5Ra#?T`~$H`<8*Ecm@h^@o~VW z1{9>OFvn?)36Qdq2S)DIdV0W#ivd|}K#f135rEME#R!@MM0qP2^Bc$v)FHR0M3`F4 zYeKF~*A^<5NR^3bstfl77a6!qpADHZZS5-xf2ltGJDIPJw&gjx`-n6U<--Of8AV1( z3ux5W5dK_&gms?WA{(j5Ycc)40M6y*8Oa9eOYF#yUi;=74@`OOezi#3W{8bBo2jZFUn*Ch|l1vY{Q~5DpRU34}0A{d zh0&lfv;s7$G)arKaTv%TN0^OhSZJ6~&E+9Gk}ydx94-ege-(8oIKn!_N0b$9$wguy zmedN07Z%IJvj(<@c4JA9N zh4O~zB#b?kx8<{=VN!Hy2bqRushEf^k`JkeIHjN_$5Rm#vm_%@5!p`jZ40LC2z*%< z7E@x0m7PKh?4v^NjjS~=P zk7LTc%}sXGFk-K8C2zMycNAQ01i)(Rfk*{T?6gj{uBH@zuNVx^DkiPhy%@iq`gIz?M zzGJGFa!gd8L5Cds&rO(unP_qe!t|oYR;^?rt4NzA6j`ETy}&e0LwFO%_;3EXdL=aR zLS4r+8drRl8Nl`>wu(g4E^Uk?nj=$%83U!9YE(r0csWM3#b%q>m8dyL<0oBS&QBEjc z?1#m$7_+bn8PY_aTL#P|42H=re#AR~QKpb$P5`epM8nEZ!t@j{QqN|4rUm8H+G;ha zXeOv>HHFsLAfX~apx%@NGxL?*B1lZ6;!b%55#N#dwiJ6vY0Y-fOzMcB8pS42gF-0C zM|+H-R#My7EOUnsdVw6)I9{-3a)oXT+3t;zv(V3ebI8n$KiRlO^Qzdr7OCQ%b$dqR zJx5&N115?O*dFG+NyMORfC&kh|0F0c_WQDmI40Y^tTDb%FGo()*Ux}8>> zlCUwsLK^mk!r#m!%~4TGPo5O=rR4LGe)*FB8C6k-2}43b)MWHRlnF3+od+Y|6`*K_ zCEohn1fyH3NZMqz#(@PuvNP%&0GCM<-9(h|N{rN5q0V!fr{6XOuUFg?p61BiT^gl2VEBpo*E6CXmnv z?-gzXv_dw1*r-@2MJUx0!OL9sUw1{|isW4>j z&=U$l_C$ou2cth*e!z~WTFkmbY>F^bWE*gs*C&+-Iz?*1pO7tB zp^TGr9(-lIU|Cqe?$TbVBEv5MtnsAX%BYYf(>8OJi43!9Wk%>RB}8S;ib|#_hsk7- zDKGPA(FAdtO*%a6uY`=UkP5^$tUV{_IX1mg)|6Jn8|p~bU+b4IU_w|O7NuJ%E11_| z1And-QL~!lg;m*@)C7@cDk{rClxC0=#H>1IRzmIqdYO6W+i?kMi0^C!x)TKxWMwu@ zuKKiB**k?W6tGO+iRRO%wizz!EiU3g*+tyz!ODm`tUL6hK%Tvlbk0u*s8PV6*lP*2d;(!LZUC8IU z>ruTW6ik}b%`R?Ihp8-P7n=XtpwOq_whQHWpY_F}%N?0qzg>TWz&|$xz>eAr(4plS zYYJwEQ9A64qCU|k0^C#S?8sN%k&3aEoo)_@JgtTE1I{LD$A{M5Yt`^Tww9|59N5=% z=Z@wbcbFDYJ$%wjNAo-EhN3f&0dy1A_9xkg`Y4>}66?~D5hA;uQfolbx6~!3mtbLV zqKh~~r}O_ij9G4L#YXX>IqnY2Y7)3hecxkDMQg{kyiil=S~lr+-H;e)&FX^Fdytuz zZNAebd#5|MuZaC&L%MW{bX&neaj*5WwhWzWpc`BWFSkhD-)RdGsL?-X$uX%?>nn5_ z(4^>U0xiAR<|zfO6tQ9sKGAofDaCk;wkOdw!-O=F2{ygbGD>YOYRg08K>EaGkCub( zz#e$+u&@?(cj?Y)4?!&NNS>!T7*u%LMKq8iVzQPOY3`FfkL4Zi$jx8rN~-G05>oH9 zgbeV*+x%5Imb&z)BUM|MUaw}4^{D0X)*={RDbl((Ub?c+ zIqjak%kJ{k3nN;uudN(CqEobJ2ip3ZymFqxjJB|Cn>&Z4##K z$dj$53;Po@)Rz^@?zDl!ZJ1Hdcv07^Ea4z_;bTnk8%y($A5;v`A5b<82$`5z8ZeGM zP}D~tTPKCo0d0G2PmEbj%o=P@he9aic(>UQ_33Uv z*aYw9KC05bVmAz&*!C7ik_IHGnC`1qRA>iGpIz%y{0umYIZ%{$hx0}QN>pvXi6v@w z$PohxD#ET$SYT2eIdMhz5J5%(xJtSwh4neGL}RA|H6Z`=rEYfk+~?qJcmgf~7ZWt4 z;3A`I`F%ohmoSW*ut6N2nHcy51nR5HD|nI z%gIPZeS*t&wUE{OT5n_vODrJ6wObfA;b74Wc25hyw515uvICmN*-?K9ih-7UXy=n# zz`vsv0$QxnC%6X+y-7?H=2}9gZK$Y_qZZGzn>~gY5{3q~TSwbN(I33jQnY~_8{%fb z;SAUXG^tK&&SFR0uJ9eZFi@ypVT&EnjKxDtV6)d+mft5?#L}WpFQ7u(IV*}5F;l0+ z!l(FzZEDx!fPAI>z1kq#m!34^i;^*>_y+M{1Orl#R`Y5ZTC6Z86EFe{M(fA4V??`P z2c$jQ#zahLyDcC={FzV14p4#h+3`M!Tzf1~nQqZ6Mzx{;TE#o}lDU)FopnUdX`kj+ z@LK}3kj&5DE)NY5pUTlnxoRyppK27jb~VANOW?m|2{rEkkzBn&ZN*2Kk%3>M$7o(# z+RdelvX~v3X3nabTfyQ4!=_Ass!wHh=Pyu6F)t=K||h7hs?H#!XVYO<=w2t|ipVUIp%M~)ah{0@CC?G4o?^$wk{h#qK{E`4NS zU&s?3qNPKGBB?v7#EzmOYM1Z2bfCKoAav=9cR5on_12-|*8v;26%KjRF@vC z?Hr-+-lg>FDhfycyG!@Gt8f_=rzQ@%bcwt4^b|AeGGJ5$VVBBOF;Sf~QcSG>R3JUN z?p^xWUHax-S~c1x-=$}(J)PP>uMO_537xi}BMrLrgk}Hu)~WpceUbV(pKE(>Du7gulB;$vvEt(k+e%9S!dxdvRcBgvXl$Y|+{hk|;` z(xr_G$XRb|-$_i^$aS1lq~*h8&K_fz`Jwk1&?;?w>6bmS`_iSBE+DXXweE{iBUfJM zpNSB<3~OmZrc0Tr8HbEaj8+J7oiwzl^&WHSVt8;dRH{KHRE^e_*Shd43qkzkFGK`| z=AtfWkFg5*VcNXVOfhBDX(N$nk=Y_m)Hyz(GUze1>#FqW%48R+l!zD2)M#E$9dw;W z347F(9wWQTlJ8hnFuT)ifaOffWU2YmHj_wt%)pdyq6jGAwfL&WQzV&GCKMJGwkb~s zNli^M9^GZMRog2y(V_!pbWB!PsZzui_M(7fz}6kyMn056bTyJP7B%0Ymg-6Ax)Qnj zg$0)#XlZ3SOUtF?MQv$je5wTDT)LR27$0oOKXLxNYuUXffEW+-M~@Z=8E1q)Ey;=i_)kR@^{S{0Bc zWUDF4GH1nf7jZ0YdJH)I_P zE!;(#{?md`GQ185uQT7$ zB=%|E%jlL3tW^#@uKVtBHK2>dQ03A@u|v0Pt9QCF!p{Y~w zoe0Uv6QWRIPB~6goU-kE?2rXvnIMho%nw#d%B~GIT4ON`J>4GR9+M|yLOUk3 zHAx<8x|HDPlker6#tZ|*nu(|1DYlKZtbx!Oa4?#R)iQ_yDLN);>Y`PtDq-9nNy0R{ z?uc1-IFhW!K5?%{&C}v=4-Bu*KK03OeU=%Je{H2K3-<|zKK-0NSyz+1J*{M*IIx8c z3c*sUn77Exa#VV{BN<@TJ(AsZN6fLqkOda~6YcrbrSDZw#A{!UJyF(S53zf2g)12b z2D7>y-uERXd^!N+GP>+qrow54!fQ)h^4j4XdvL+t2Gs2=QuMD!g0vN#O0o3(wL=R| z1@dp*y`9B5bB)PaF(s8-%ZN5(1_xp;XwWJpt>V#|AuXj6R0foCJ!%{~^+h^H%PvGU za{hJEA|x#g8IaergxYs9O(|o0ywe&I-3@Hv0jO1X7Ple`njubtwhnUVLyuCVBQa01 z>}d%Pn zyAq4>J0d%~wvA5||Kk8M>%iTC(sl3>YQ})HNNPZ(;VwX z0cIz~WVc$_f`dCyxKF9ur-q5O&Wox+6xJta>0qHAeY8GxrUs-lW|g2Ln3RgT*lnE- z)M2%9?s^<+OhXpO*`T%od!VqWmUZFK5IoObyQGyKDXvRx(3LhIKrk*mYZX)$Lj{zX zq_8d)VWP2ETWw?qXdRXXkJ*i`z)G^y!mC*8Rt+JvXu70Dt&77qFnNa}9j$le9mYVy zA%*nW3>w2TL@Np@UfE}F@r;oIf$08#5(BCDKd>~_qeV;h8rRtBvV}p??>jVEgw*9P zs1W@^7gcmXr16zJ3wKqrqUE46w8TD`z69R1tPXE_5=%1kc4!pfmHh`43>JWw&Pr00 z7URXJwG^F&iRZp-UEZZ-W8!qck-EBe$kqTAA-2O#9-93vrp9tECrFJXgu+ixf#(us@=Mi;DT@-&Ot6F4b~PLJQ^nv;Xz&{Ps(B{p~Lg z1M0H;pV*T6gz|xZw%oAz%y;~gl12rx1z8d01K8fDhrjN4D&%q*nK^q|`;OL#J88l- zh>ohR{4ejT{?NX}GxF&d&x*leaQWZdx3Kax%KBaILWxE_0yZV9^Uo{~nIAPT6d2*3 zW|heNByji3d*K5OhWQsg%S8n!{IAsmnAo?Fq&ATpR?%jdL0R%CXgmEc69b~Q>X(C2 z9e}o0X;b=JFVKR50JBhng8kwOO*YohJ1pZNN8ac zR3}>$-Q}+|KC!BP%i|9&Oynzt6WBimp>$C>42<#x7D(>K&U292%1opz{^F0Ar-5$& z^;Qd+cwr6xJ^6+ny!&O&+s8HBh`*e!D7~LX!~x2~~NOdeYHV0yGUOyWtpJ zCS^pY`Ahp;4Ji@eV~|mQOrYH;510MT|M3A;+rfF{SGon+=3rM;<^5aj7FH$2OJ00e z-K!2lL^wgS>5B|l9GE58UD<>06UU}M4jLK#7@02V!E~hg{QPA;{`q(QIseY5`QNl1 z)aT#*8o$O`n{G)AgiE>67;Xb62;_<42LC$>T1tMA1ns*G-d3h}hr{@VXvTlH6-=c5 z+-BUv%tf*eV@<4>FRA%-+`9I8wIz4SYZgYN)CvA?lVkBtCw%D_x$(=jD}}SSF^h)2;}mirxAXOr`fD3eRl?c++C(&9*g;=WTl7_I_K-0(CmfHrWkd z{Xl=|qioxk4VYc4i7daOmUau@16e8K?3wV!Vf)rI!o^6Eal-etOBV^kFj1g6P ztpjA-t+ws5FAA;`j+!5{)clos@N6^fluCGTKlyC4_xjX;y(VIDr>Hl6+q4bR0)T_v zGtz4R6^lrp@;8WV0SJH#Nrje^TSbgKvf}Vd??dY&yCNB&{XW-YjhZ>r1qg6m6XsA3MZX$HLfn)Xu%GBpEf8)^BN}n6~2f8J5s;uD(nY zJ*wXt0qp~HSX;Jwq!yjS&|!mpn&4W{7AyL|R(oXUJ|jwfTYH8Q+1fLlT!wO*365$0 z4ivvvxRB@{kaM)QO`F-Yq023sMXEOPbrnP)xpp}|Em8v|sAas26=4#Av!|j>W_#;DgMczMx*2pG9sB@ zf9QX#ViFWyrJ>JNRVn9cwBr~{++`okEg88zW6 z0b&<)$7~HsC5a|_r20dzDH9=Iaf4LNrEnU9Gqd_*AMrr$$6%)7l;E&^BbC}%`E%r2~% z{H}{8Nu=F62c~sW2E^n20}`A^AV| z$#fE)M20R3W9dR+;SN(J8Bu1q3#o-7E*E*N6KGW*dC}CPjP2keVO4$MkTq<|Q+HZx zddCr(TTD%nJ7ti@oLiJMd&flnh0{4%?vv| zYm`dMJ`h4RW-(hu!fIToWOPz$?n3d`rZ&q0pjCH-jciJHne_(EW;__*{CM{+H5b_s zM6JA2yZ`Mv4+7-49H59E*kuqa^I?cokQy>rHWVSA^dD#k@uzQQZ>;k4iVSHUR1(}< z->hc4A`dAG3Fratz`?k|+u%QPqpma$`hg9_>F0VvM-rF)fm&rZ?8Q)tuhj4f3Qn`AV!&YY{c$e|~6I zmA%J3ZtRWKkltI8RfWOgKM4hId8hxlw>AujxZ3};3d?3!tH|2OzfbSc58S6^ag%lt z@6+OVZ~xJjm9+t+?-$%yg=w`5a?VRyss;cGokUdz7AuSUd?ls#1_vbJ2G_KRF^OHJ zZN)T13*Mm}w5J0^bQrAOr~GtO6O{rj^BTKdHs&PmBKW zhqT>)py#VL@b2>F&Gq=`^8I-F;qvu(`e<&$t?kyMHZJWiesJJo&(VjdW*@HJwjRB_ znqFMq-d_H)xSa^?L}(|3Q#q_&s>X}=;hO$s>SEnQAmv-5kfGKjql`6QoJgwV8Z5i8?+u9rF=k~@Ky1j9ZZf~5W z+Z*TUXyZH`ZJej0jq`N0ah{Gg&ePGxc{1g9T9c`SaI~(We&c=DVvvHp8 zY@DY%8|UfH#(BE4ah~pMoTob*=jqPIdAhrCp6+g(r@I^H>F&mPy1Q|n?rxl?yBp`} z?#6k#yK$cGZk(rk8|UfX#(BE8ah~pNoTqym=jqE6b9I^H-> z#~bJAc;h@BZ=9#&jq`N8ah{Gh&eQS6c{<)WPsbbQ>15+Poot+^la2FqvT>eHHqO(@ z#(6r~I8P@V=jmkQJe_Qur~4b{>Hfxfy1#Lr?r)r@`y1!!{>FK_-<+qp2H|M(X8dyh z4Hhh1y}cUW`lSf7Gnu)0{cOcbVU0vEF_|mS`d7a$Wqk7{Th&lpyU}khI_}v(noFpA zHjw6m@O}+s&|KbXAXt$02^nM1T$bO5-Z$41_o4UAbt=#wM>jvV ze*bm4rV-1c26Z*r+!}CFLCqCz3#wRBkdNPA-HmQ^2AiY6L%6W0VnwwP?$1#CObC2rPeV2TE7fXtx5iTc z(k%tplDc%80Ra*&9b9THzGucxxM)73?MjBqHCE7Z*tfs*IDBKXr1H(}`MRA zWZSq388&3>;-HX~M4Iiu@%zm#7VC1#Wr;KHiK#EtoZPP#Y9;%tw*Q1ZMwzLx_0!eO z8yI&%w;wZv6VEbZ=d5sFLxyGTcV6!s_yrLejP> z;M((WT}a5x)m=uJus|(kl7o?#b4$Vf$?0%+w3h>5uEOPj-dv-V0li43rM4OsE=-O3 z#9UiL=V0(@fx5yTgA}OGr{fA5PGy5wlldP%K7VmCx;Q#MJscj?2XJj^K`vckcf%56 zn<0|9q_jC>Zxg#LK>Ko53L8`f*5+153fA4p&GfD=(RjgE#_kcgi?KiWOt zKRzlNV=L_G2piZvJ~}%e9-Rjbtieo?n*x5!>AMmmISJ)pDTy;zoR^k!b1lUPthSb- z5^b)*;Hd|b7~Lw2qja>))gw$ols-TD^U?8lNA)EiYpM^1=B}(~w$kA^*DRpJ<@It2 zjXCD6-h9uD8}a{F*qYPWW8TDO9l)nta5vbub3YN)TmdylRC9H)JV!OyI&?n~)m%e0 zN7NcL02E@SPIO_4FLeaO8sxjHZz(@m?$bS{7iacd1+Y-0cBe4)Lr!Ylq#<}6*{Pa(zPUk2qsC=zJM3uuPB*YIR0WGaLT}h)kOo?>4uTQ<(0* zt(e+PCltTm5>0P$nNrR3rdbwKYG1VeJvZbMT5|bXj~yH`_{`6Yby!sSiO z);)!k(h>8Ej<(=?eW;h;*fJB_l?@D*VoP?ZK36uMl}#!2?B}by*Y7H*^MZ5@JmC!DYO6`YrMXv?jsl_DyQ`azRkC!$16jjF^Xd5R3>D}ec>+$4mOB;;O z8RNMqbM(Icx&?!v#cvz^e0lq3x(%=W1E}^Dw!Gf`(t>oKVrA`@*!z0(*YWKgf&M>k9~wC0cUP0c>TfUd`vm4+DY?`r?ZITwg>ecAec>!qYhctq5x`h*Fi1QEE$_Ld2Y%=s&x%6!8en;PisrBa28@p3kR34#@CAp z!C6-I*|)YSMog@5++yh*2F{RqKfb(~KE}~5Im@4dcY#FnAW;U!iF(vOPG}dcc?Oq-O*(=PSq-Za;>#H5b&Soohb%QP#QUlCZRM&Be%U=c3vt z8)n?*@sPclL$C#%3}%mZnlpQF@>H~m!w4bFOHZDPRydZBZp!^RW;o_s!SYLqCDm}En4)^3a3`4L5|()%jvX&;TX>s`+UE}&5PC0VgZaB z&>H{k4u|vC05FRf=C9s=xYm?g%~GPUWu_U7TvlN?H@<2tg&{aWI~P)t#shUsb9>GW z+99f&8xBjMnxaH#sEcYAFwt5Y)huF2TL#rEWfHk2%d&t8;{es37fa21mRgQwU5U*Q z11s<37nT2m)=qP~FC~Wk8*FKKd-=L5u%Ghf_sj9}dbn~SsvH+CAzd5uZ3?X#ygQ4o z=5}?8u5+BuT{Tyo&Ppsb{bW3~42!Uxq|^=)i?2e6JD=>B7`fLp;UIQa7Hi}AryT5Xj7*I z&%}L2m&?anQo5Y&dGnx0M)oD%ae2?1heUP)fHx0^RCXI8C1|X<&9ktvnfV}LcS)V9 z8C98chm$uoK62&4hM6Z&YJE8L1s0*b%~^ywv(ld{lA8~kTQeZs`mfX#nVW4Uy3%g0 zz~nBPkMa2N;ql)7)BVxu#qi15IgYn29?Tf6aHeW`Gf(%Ah6hEOTH$Qd@-|LK!@c99 zgBL+F&EvtdQZ8yPcoyP)Zn1V5)JpsCoG~B4xg;KY0FRGR_)bv`RZ-j@|6||p~2yn-l|#1pPZ|kQ6!z_ zlI$KruDPUa0J-KS+&zR`b1^-u9XlJ6(d7jEYs%=(Cy>z%P8qzHGJ1t0{?Z_VTlwmK za?bAj5m%V^ZcR*b^s-tdmF&_-ocIo&|mJVgJ5@>~^`{wpK2ny9cF)ypIQWS(uG?$}9 zh<2JBauY#C1Uj8s$+}v?i_Epu{(#z(91MHaKYlJ;P}~X^&TQ&LGbfCS@?nJ&%^Lf! zz2#+f2|k@lua>QjRkLw7kgcwhUEv>kDOeQryMp%Vgd3ag6 zMX)9zy3K->2bQ^f^@3o&(o7^(*>WsV+m?%)$Arp>Z27Ry{UoyGRj0SwmLsxs4a7nL z!CXt(R7)*jh*!|BGZV$}YU)dqR%FkMM>W~bxpb9m=knEKJ6~yiwsV59o(mN>*NU?N z#kHIzBZx1g!OdDdE1V@$-#*46blQNCo0+D4S^xBx8K0s?+m4jbHg{`;O*dC&HJWxa zDD#HBs_b7#E){JruP3~GUD&GQ!lEU$!U+zgN^XTy3hE;*B$VaFYKdZX?$sys<&x%- zFId{M?2dUYfcfWN`?A6w{PG1OC(oZ8?C%yiYK1NLa~e54J|FF#kM@Fgnv2JI?d*R$ zJRb$EG#7;Bt(32^={J{oX&B>#+kqC(?4-704d1`M^;rlfmquz?SK;)KDo16pjhb0r zb6e9g{)OtmHIb90xtNp$LI_Z4nOuI_2mRHY0YzlOc1naZm!B4l{L+Clmv#az9C*4| zxH4BYVp-Qxh-HEK9%uz(S-2Xpu8AC?8X4H|21^OSzgoJONv=>r?Y&A`$RD-?Co7%KdrF$H)Xeb;zV}ZYw%F+gA>_lFRv{dhY>pM z<|>VGph8Td(_UT+tqO003D;DQ@UX%Gu0c-VlMYvxZ?0aST;uSUca!TklrOvVgpswSSxQ@T&@bxH2K&eFrI1=->v#gjpn5@{Yblc#Tra_Y9zxmo`?5Fl8!Xn7eQ5*J zah(QR^1W^<^^)pujh`0KJk5@n!dH)fx_mdje1j3?Kgv=Z#wwp!xtV-Gb2O7g&HAp2 ztrmWb&)waPcPH=pRYtrY;^5?~S0C><*BNy9dwkAW*``}RF~p5}jV#Wh{1m;AJ$x)-oFMsLkG#P*tfmTj6+s6b~o2lMnbl<}Zt7B)7~| zuQ_6_!fL4kEtQOF@lKoy5yrwg*mfb{ToX9~m4m)5aGQmIP=e+`eLANSEj?mIQJ&_+ z$*Z~V+2Tli$a#8Kje`PoO9i`i^M?#}8^-~p>jLQNq_}W&_2JvxUP~$5j`SPfy_>vQ z3}6KB-8#OyMZ43c0l$n`H#0HfA|?d86D5=#-*#bno+N#VR#gOw}@TvxZo=x#^ycmgmCq;El!1 zQ(qd_lVOl5>ylwP=_HxGf@?8jLg1rmKVMy6w_c4~)1R(Bd>FrJ6+gb$={7h0%ZN{b zhSyh@73(3L`Bx1opRp2B4Fz2lJYD-W;kgF0s2MyxLGgRyl>|kfz zTcgs?v1<+bYXq+%BudTv6lxv`RrIwSyw+eg{EGDT>EYGfq^J=gb)mNkhI58wVC?jo zTOXdXO6jjO9ZfsTXW7f?$5+$4y0gn|Y*zLts4~`_@~-C$u5e&T8jJ9=K>l}etj~2X+=I^hNV)&*U@N}t7_D)+IqNL;cOC5Tcy1&l_)EmQPQBX<;DKJ6ea!Us-=dj zSMJ@ca4t$|6n2HdOCi)n2cReFjHow%7eKIlXg`qZ>d=0uX%7pXRy2$Y94JFG*=ZV zB6qJRH&q|>rE)J!G*{urSp)SR6$g$q>hnFYUA1fwo?t^3;Och%+sMAs=4d zJcuzjSJNe9{&>Au@Z1Y5ugz8fmiMmy`T$0}Hj4ox#+t6zmlaFa?g5&+4UP)&BEN*N ztJaX+ixIEQfB>4GT;2VAH60IcDi+V(i-E7UDx;{X+`x}3;yd?Z+|8|;SrT{S{>$Vc z415h1R;sAa-d(-DI~c!x2r{jC;CU9|8u#hdkMADBz}IP+olJhd_d2_~vrfBgcXD|> zo>r|cyB8vD4aV8YWO}!M^LjCkoiCKR!0U9Lx;tyIxUeX&)+jdS0(P;I`j3BVz5RHj zQ;b^Lm7{$TU$p*S*g}&9>}E_TA_L#u{FKO8;V_$2Y62OxMzKL;tii~6a&>cg`wOkR z$>e%`dGipAoE1;hk#QG}`$1T>E1bZSl5INhgUOFqI1uweAbbr*PB`v|f$%jLIpM$` zggM_{gRPSe`~mrI?KK!X;kX|LrLVy}dXNKO;hd~lnf{PG_7x8FnjQE<2|=!Ku-NRN zAH)<&H(EnTD&_2lF@@4y;dr!JG#@^IDU@!5!`WsW!xYO8VG5(s zhe%AcPNVDr#aLH73$BRihZJLt)@hVIh#2b%XT_z0`#B>j)w+43Yc;wJ&Y_!;#~Mft zjl1EItRu>0!L6f7#l*&jN3s@6NRzOidL(O@ZA-Pit)oXM>i%oM&N>58z~Mt0`Z_~V zqyO{qL7;n`1`p8vP=>wEAk^6h97R2SclF@`aQ8aRowN7&*i`QL?b7wM_ra=P;RwRi z;HaFI?S^POWurRq@*k9T0uE9b&AK%i2S`1ltN=~*~qg24wKcZ);ul6o;L{E3c zlh?#;wLp^Y;iz$V#zuE?bi3;`oF2|nr4zg}K{TAEyo>9I0Ro{s+G`Tps~FxA}LSSRDTL2i^L z*I?`5IMutC_|9JiU8d~kEwc5Bk=n7HOB~2P&CZI46`VUFzQjgkzj5~8oc)EF>8Rs9 zRQdN?KV99t+4>=Cx%8xMhr`6 z_F`)p#ITfoN~j)UnBTr3L_7AI+sVfdQ=xMy#ITn7h-q#ir7VL}lcpbU$DfW_K2FC5 zr%JLnHdzLTBy+>zwBC1}J_UEJ!SXCe;;+Y7^>CPR)G|0^DHC`#arh}1aScZIA_?if ze*I4?A{Vm06NyV`H&>#b$=l%I=9wv?MYvmz3-u+o1|Pj!UN)*FW2|}#P6h7UH}7y{ zb$7)ht2JR)Er?=+i9v^k^<7B8{mp%Wb!F#f0cJOm!TMt6~>3LD$lO zG1pS-hL#G=);>i3`idVoetms8odOfD?m}X(8e;LzMtENJ8DGb48NbYBN(6MWTFQ4M`sK5LN zHtt@%y&AuHbU(g%)*Y;FBD_2uUqdwgb-e7Db~f}Ox84dT)z`6(3!K^8X|A^$G}c^g zE^N#>z`@AYptZDKEH%EWtlQe=VJ@OD)`~PJ$1yzMC>X(p+`uvs-P`#U^+9i^xf{p@ zLIIeXOXmhu)m)aAx%#~oPKM5f0MgLK4#c;bI}R}t8^!?ecRJPYZi`Wb%=?l+ke8oqK{-=eI2wOynQJF z^~=^v#^`epVa@#ak3zqTPuckWgkAP#K17O)v%*2xrL^4Mka#bZSL-+j8V5&C@1BnD zUcakFPno;1Hcfy4TyMpLogK*?UgAV&4d~^;)lC-pSZ`OGD+x_mm^8|D_32e^bVI;h@d)49{?gB!^1z@?b-1~DO2b%Ut-5N%O&Mfrqckqd zTpOF0>#gGe-e!YNVYZwT<-k!sds|}Jxcp0)rVcITEldMD%vn{7+_d`V{Vux+Y;jLB zV~)n+=c+unfmTa@hT4PawsD<3J3c)RN~LDBHzQNDS z1VgL_%)#-|H$kD*;F86s)p(AkXz;CYc<}N@{tD;zIuV^Zk8iOT#2yw?Md~v8-mX_q z*0w;FrK*+KEd-V}PVOB)e{wLo_>bqu=cBzMh1K(9*(ESo>j8MOzuQ`uCz~@Ay(_+$ z;2e~oXiM3xxfSRLSW%OMqmS=jRc)xgqnD#tZkZUoLZGiOB{ z75WM%1Lq}7P57tFJ+>fm7ZS_NDxNB+EMD@FwN|Gds;z(Z{lh}kA$E>kz4~}JE`e^^ z(J&M$=r)h!G=T1J)SVAS3;rv_r)DN=I<>9084G+Nsh3Oql{G)k3@Rbl(#BReN_XMN zNRZ&A%z7kFRyewLVPoYZ`!yA3_t#XMn>rn}9E{C_=M8YSvd}Ci{c>t-E+HC>?AMea z>o^Wmft08Vud zv967+rtI~ai~STTN3b@gmv6`agwSd3;LWa=>HV5|sJ9_KRH|WDIEHa~J=ANihf<0? zxt)9%-`@RFLp9X*OV;R5hpM5uJ)I8OGwA~x`U=M{E>BuByFw7p>^pJTNX=$C-@})Vf;7DUXQLVu#^F!}%J50S|NF&Ha6E;*~}zO8vs5wuv%h zhc0ZaG#Hxvn(lS-YiiyVP7`YY#^yS2VPoY4vIcFloH<`%UuK47&h%Ymg|Bd=P-+z& z;Aoa??QJQ0ZPs7xH}`v&!?}QpIcc~fFJDhS-sHawt%Z$}$F>$|JTO>6SD_4((2oN2!O!&j}d@woMQ zuh;&n_4}{WO-&l-@{&0i6%h5v#l}9}*(|+&bD=K+S-if@35y^q(QhvMQXC#Z5BANXMM;S-MM(PS9hfx z=o-uFpwu5MZx)o8H}_y1%}tF<9ay>$bmivFpt&7TqfH0XOxw>zD%ReGq`sOicT4g8 z)&^U0t3-TCJ`XPtwt5Gt9Zvm~u>QNk7_kjwAjx56_8LI6S9l)IFHhVe!ry zl;OjQ(Z)L~Xg2@l#fKS}k9U^W!#)g=5_mnSK!dNaU8G7XEMu?7D;#cgzsAvA52xdh zDOyk9#352jl_Ya5wJ?wcYOO$k2^H@&Hv_zaDebi*xPrYF@2o|$n?|pQq;6OZHuuXN z)U+cEy9Mj)2;1yfY99`j;oA$L^091fZ?(SiJCn+nxjT=bzOm)($y(uqc!h(PvN4u8 z3JwoBnszbYe|+|j&;IS-KfL?!*=Jl>qf<6oC+|MM>YR>mU)s+fKKl%z-fu=nqthX_ zE4SX_Y@XJuOB^WHLUi}X+spUwFK@rToBTAsnSS*PBe`#{ZZ5A|I%K_duJ@n)UE$r= zJXopq;>GCn^!)hGJlU=nTdyqT{NnuC>G5|;NQw#jN4p2l_eM(UmnP|}?n)mN(?{P9 z5BNUbDZY1KgIAIZ>icfwKNPQYcLbkLKREtoe|LCraeS)OPO)O2`WKhnEl(aE?WuIH zn0#`&e{`;d05&i7M+a6SfQ{QuK0I}>ivs|u;KkF^<3m*&fam1k`Ps$jKb{+qk^o4D z`$vW308od|4{~J#DDCZkn@bFUw0nHCJ3P;&2T(dZ#s`MeUIj1$=yHhxoQ_X(X#uE! zl3Zc{r?dQ60w|s3%Jl;nog9CcRoV|Aw0k@}7@h5oaybGp`5Z(}KY-GcHb zKY)=>b(GW(p>%jMIz1z-j*ibSo*o|@9Dg_3yLj^A;@jaVs^rh`^c%Gsz;KurU0f^x z?|zPw`T=y2#%`oI?FSG>`u^VN=$wqjE)4=GyYj_60kF?bhP$J)XZt6rAb>L}I6E93 z9E>#fv>$^2{7eF25I}SP=CnF-h(+&o{mrDvpeI{h6P%v;yA#)xL53MT!43M-x#0erQ z9e@EXUSxGgAux^(_K!vv&(04?zMUw93S{!h8Ds>7#&^&5&qv}YWevat`Awn*L;Eth zRzuM3K08(&0p#}VZ2&a1YeS0ykO2c(S^%`C(zTr^fE0@OlmJe6JsR#lW4Ag1kgQOe z8o&sAc`!T`>^lKWP%xhwKw)^M#sV0eeYbz^x)H$PaOe|e;gBm800PW!eG4G5H+njJ zeju^Y2|)1#kf1fz=>~uRj?bb0RbMv%!#Bt0!d^Fk!PDnQyXX7IN2)J?z*Bo0KtPnF z>;V8yN9WH^tw;cY^V1h9Ff(=sv2HNWhTJR2TB4;&w! zfWxh=01{xWGqFh=KmxGax3&T}z*rugK84y>M*=vEAPx0CfWqi6=ipUqC;-C#;mN`1 z5O#=CLvz?^!DAR!!*dfkNdT3j=LZL8!>6N*vb+JH4)#rvCjp$KirMibgb&ErOa3GP zkzjWr;!6S`33@Im0MX&-{25GbD;9u>yzEi}C{c^Bf1xS-)QRrU3I<=Co?kp0osRa7 z)l@%#1kh1P4gj(T``}_xb6;i;E{X70vIaC>F59w>RTai5D?e!95%_5=O%9kfLp!j z06y=S3mRy>;~zdNzU1DUvUe{zK~$Q+Q$I@+Y?`b*2_L-v1A`Uk@2+r)_q26+)4Ke4 zH+jz$;Mf%XOAy8Qvi0-3E1ViWeK+}d{f0}~TCc{f_m?;Lo&_?G-(1~|-+c91>-VjF z#4W~`Z}bXLk1-du-Mt&P-cGKsCqHBT+hgX!f4+1f5d})7{^@H(S$YVMOm6dUlCOTr z6`cMwz8>EpsG<;ykE|%-cKa0;V|~CEDaN_{SaA2@c7mhYr(A(IeSLfN;V!NHcKqt& z)%6>T;Y`0`kcY7ui^?Fz(`&g8LAG9o5uf2JY@fpFJr}h>8+YT^00m-WjOLtA&VG6S zYI1#e`Qhy9|BlH#-r>n*wbg&;+-vA^wRZ+iisZ8WIJukTGsWHp$>q7a`71s!^2S<4 zb8R2s$mOv`u<93cSV$$8?iM8uZB61ITicx|i5<)5vVFW6|LubYtH9OiN5r}?KIC;0 zAeZ;Wi|G8x0X06ksq1b3T#lQM?~f)o2jk1Ph|1lKr^pt2m6*#mRkzP4q zTm0RZt>0;2ym7%XyLI8P!h-@}_J$!ZyK|AO!b6&I>&q=m@DZ!y)8aG2CB+x;3+#oW zRCcTIlHKMbQMp9Lp7^}=N7rB$bh2!@Fq3=X155UphLY?tA3SpTeYnUT>A%Rsw?`lK zv8OZ$WRE`VvKs|Md^Ra(!+3yHFD-C z^h_kS^{)nsZTtDketvI1U)#_Bu%Ca?54x8|Rn*}BOJDC=18~Lc1}36H6YjMgzR4ho zy>R|^_96>}ScY8a!(ODp4tvbP8+_jSpROaI9X)^Vo)OTn{0d>%ErS+zw=ZsoJFUQk zOU1prWAMRlUAVy>T!6tIY#{l2A4ITsK5Sr5S)jn4_p{J|y+|GVVlcoG=ehr`C>(yf z+jGBi+~#@iG8@bqz+ueSam zakTY!`}v3cJhGoJ?C0g@_WPgq^MiZ)JN+`^_x#Y+KF8O!)YPB&om(lFvv~@ZWNP%_ z`{Xe0?)9Y?vwPjNk8P~y?4?iadvCx;45in>AAa$&$7~V)vVuztvxCxYHr!Ql{NlcY zn(qg!k_>GaaYq2s=rG`WfX-fmP7y^tB4P=!--Ev24+Q@Phz$_(mo2ad_ysHt;sn!x zOes0YOyqYm50cwtc~UQu+azA(iI68ko(Op& z=?T&kjt1!o>PwKPk9zvZ*GIlS^7WCgk9>XP>my$u`TEE=K)wO;4Ulhud;{bgAm0G_ z2FN!+z5(*JcaX8YgPiRhWNq&tZ+i!s+dIhJ-a+>E4)V8mPyk^ETnwx%A;1c<0-+XQx-&~8&Aw+WxN1U8}HCivTgSDQ#^ zOAbjw5+7|Mq)m*piIO&P(k4>c#7bMzp15gK-nWUNHc`|jj@r~LZR(Xa6-%4SrY-ei z>L{7jxo$(Ik1!;JVoc#36Nxdg7!!>#@fZ;~F|ipFow4vquq6arB(f9TiSR^uB0bR_ z!4VN05g`!~5_&-Kh;WDqhlp^92#1JphzN&>aEJ(ph;WDqhlp^nc+HxA(WL4t`Hcwg zi14oHKuqFZSFb=~8oX~C)F!mxWlZLY$vrXICno>IWT03aM0OYukqOCT+5W^rGFdPt z55{D|m|Pf>4P)|QOh$~!i7{C*CNC!BmxTCA$TSI=CLz-#WSWFrmyqica$Q2?CKPE2 zSuZ9d$K>RgeNV{63As2S7bir0LewWjeL~bHL`g!F^d(%#=m{A;A)_Z`^n_HDkn|E# zVnRwxNTP{2c87%%a(Y6BPRP&+A)XM-3CS}dp(f8DfV{`)Lut)ZjP zYXDkDcJ~ekIFPI*{=0-kmzf4s3j?Z!0mn3;su)md45U8DEL~RFm1dR-HO*P|XU|k7WvSgQRB{cRWBZ*%Fa@aFrGR0yfv(U^n z60cZW_5mJ*%MP`VP}wmP7EqNb)}=530NZT}jjj{}sRU~qaAAK2q|sRvI<%9RQzQ;# zhl$Uyz>6&?bryNyaQyRt!KM3l)=Astna zWrU|LAt*e_M()zmgsc(elcc4dDYG4>NXaHva@Sd8b}( zDH_G=zQypj42u!@bStSWcd3Mnyyyx|2^?Knm(78%YKKN`A6j;SPH%4io`I)Ew$(3QR{vfNvz9 zQ?@3BxcX|^SF`D~l*!quS2{TJrV6AKi8`r*BLYnFKy6BHcWJW_0Y*jaUq5woV#P2d zG?;;yNv$@@`jmnK8>6Ffr5ZPgAOyZ=Y}y13Z_5$uTI3Lo$$`hJEDV*7P>)8C5Sl1f z!coT5;V~8bfV2|J_+m$6*@GOIq5=YZpA;ehdm9B9pT+>M6ih zVx6ERt^`?vQ-E#LZo_6aJd!`9k+7GOqa=Cz9uycfg|0f8LRVZeAUL;an~MlCw(L>z zivVIZ#Mn{LNe)}Rq)Vr6nhB|n_Bn`{PNq7#-K8S*-J`h~6AE+sNl2yr>=Nb?J>{NM z8)%cMs9uIwkLGnp%8Xd+nWF+&Zfs?(2z2~zcS-c9jl<!ib$2Ig*+V!^8ls50aDbh9?>bqROptOsA6iuQaJ5XX$qxcTRyOFF%b~6w+a2j zK4o{%K@t$nkbc1wi}(}?KtyMsn9HykQ6l$c_A4SmH?7ak2H5PASNm*!K#@Bj4-N>N zzElCNtUlSIPYa+=e(95J2JB*@!BhFcA3`;_Dhd6HY0R-(9g&}mKFtLwNE!2GOnAf; z3j%LU7LUo}F)7}Vo?2T4=*HCQLVKJtc5K3vb&$tn4o2`zD4U>S?1~;Gq@)6bbC4`B zOhNYmhz$$B{yv zWWL=ctb{=1HxW%B;!hQ#K*XR~#I_>I5K;-Yq~OASV!H`0M0Q6}BvLG1BS?f&7AoQ^ zb%X_3MVE@AOYnCkFF9&_{{(o|=yoVw1XBdLHBi~7)j%D{9BHe)9Vze~j;v=ioIw>- zN+|9q;;=&-9z6y=(Uxum=^YNoAi5*k-XR;I6E1t300#6qxV9Msj47g4)}g2|L@-8% z3v%LIj(K6~-FM^HKcy4HfHOgaZle&;fC})Snpqd?#vihHA}6=yr zYLHq*Hfc?agw#tI3E0R+_!HU$N3ONHtx!Hu9+gx>aMB7FVyIZ=)k)Rt>tXPha3f?X zq{9i9Y<_{I=GKU&@As68qzaW|of#KpCIl4{l3_~hw`EQf|8u8V&_I!-NXsMvO|H-i z_hhB{e5oRoVG~vKMOq5zE6?$iNm4dIrhE-lOUXkPBzICyP*X}s&k8pcAYLZ&aw;BmyDBQ%kxD__)ePr(a9RRWE)BLOW9iI#I6X;Y4o206Z2 zP{=?)c0UX%vV3WYHV%dyf-aWvhpl$Vls&~0@mc9Ng!sEav&xY zl`&ERjEs>4&V>}@Ch79)#Pmv4rG8ln??ng-_tkmjYYXis&STb{>jsp#so?7Db48LcAdmOW>@r ziJA$QJQPI`^8xKd1Un-ek7kER4KGMVgcN@HCopFS%)kurGu`952xp5U=O~)J6r5R= zC>rGnW?x=F=BVZEEL?NJo|>vq|Pwbp{Oi)#Jnjz$~)P~GqpScYC4*4uW>}#T(iQq0lCAFvo ztYXv?We5)&7W2}B|h@7vEU@)1I5kEuVYY+*T-P2Xe^-lq{VT7`h> zNsb;$Bv=ux{{{5)%xeAn^YUNMgcsjCc*&3=kkMBWa2d3OzZ6=^itG$08v021 z#EuqupgZzvWpU-vM@hu)XyFv421h3$N#l|Ju-KO*r`lM*fK}Edo6z;F%O`t-q1jTT z6o*b0pnImoP0bPiDbU2j|37>0-`CcWq>uieSD~FD3(ndZ0}^0olUWRM!W|3@;AC>` zTvi5Q>uZo$NhI-&=f3v)Jk`JZ^!X_%hS~UIq@#2CR9973S65e8S3kln{z;gU{lT7U ze)!)+%>S*UsG_@MoL`F9;@A|vk$yG!@Jd-mM3WNWwD1AHQ|f z6&Wa8OffEO%jk`;Ipv{3i@>Rqe6)mX#EZNL?F+?OEn=F_LYe)DP_r+n!dBKyr}JRg zhPCh50oyAj+J+M6-?O#bSJ@ScOUP3*rO-t=ic1Cju*!`deRo^6qJU?6*y8!kEM>?~ zbwT0aThc@9>(WIO!GeYT2pQ`5#sZd|ViPIiabLh#c4~Xc0!&pR45fAzzH!veovzAc z!|^QyYp1Qs_!P#4C0y;|`jJ7!-3zZo^c7XYYH9_}OO(l{Ugf>HTuEhO%FOa1Ba{Fr zXQHxvQ?)rZdQY{25DqA0DM_3lCN4vYZ3CX$)4~C&BQ;MfSMot-XKNdaNm^3JNf}SD&h~XiQn9PsD(Ms1l#tbBQ}M*C!we#wp~OVMg#$tl;l z$P5HgVnd(MXxO5P*%Fm6i#=3AThuAC^rhBrsI0a)5!#}_J|WO82EKGC#0@`WajqlY zdm300)Fx5N9R79eE5tYVYE@<(i}=71KcI>xuJ=JhP8O|X%}m0H{zX4J6az$y=#Ms= zNTP$=^wF(T3}pGQqx3Y&iMJHuur9`a;zQBK0 zLVd`B8j)S2`Ou~;*81S;&IYAlf8c#tKkRTG+EGgmsLWk$FsAbn`-Xh1GZ;lyx7|mF zM!!U4ZxO&cMJe~A!>OM8c!b_){v_^OP1R*66?=wP67w$M(rtEdxmxGMN_Gc4V!4h? z`}xu4DxE}UZ%JWsUdSX|tzNJxWsOT>BZ#oVUy;Qtk}uMhfP}N$TSE(QEjc$RnwtzS!21jC@@YWHp%TL z6aiU0T&L2Icyhf#0zc&n`Je!RlnQ`H0D>gbnGdmfQx7CC2FWIf4_<3a6f_%Nub7hz zV!K5a%Idd#sHZZNQG;3~_=iF)=DApBBI-KLnHu&v)=7 zv_Ar+!~H>rdQBqz>9$>?^`Ht9Keh2huqRmpRJH|p5A0KRj}5kv#H?+x)nr$|7N=30 z^0^^B z*L{eKj>>6+SMgILUp{!-Y?rmwx~YWs4BN80czU_ z-%z_bD0vdMC}9{#odjQ4AElEum84+{m>}D$XtOUl28keUm*{YPX7LKxuCA9B?AK zB}NfJZHkwVI&YJryhS(trYH-di`xtO?<{+F<gyrdKV-E z4d(^3yjG=W34CYXx~tp=u83UCf?)BxDe!VnEJ$~iYf#?r2f`fHgsv@8S1CTFI4k9H zKTwmiz1>x+d@*0wI3p-7lKa%F7lRV5|Jz#+t0fMA zb8_vRBhnlIWJjp%qtF|bfvVbh$$Hf;T`q&HbJ%RlmFkLZxj{tQ>I2VnNVy;S^!Gp> zTyJv{+UERN_PVq=5l2FO+~bhFPNC5;?QB%#o<+N_b2_?C&ww5w**dZ-jE+?q+TG@K zx2JubJ|uCnA-_7W2$W8NHa#3|>f1J_&~5SR2THcXI2`#1IkP5S(x7Nqp#CrVA@p`O zpsRMbsS0$W6LtZ*P1OgnmaFtb8_D;{FRC>(JM#(@^oP)4G;jzItDx7GvI}%TRKOtkY$cWnqJ!m0b_4I&c4W$Q(^f&yzYAgEibLXw8X6$kxdNBWz-&sH-4xy{U62T-fu zlx>?u#Z~-e4iB%eg5lAZ0HQHX`eOYi1Z&m-bDr=hxvsLbsH5egQ_=B?=D{irJe2^FIz&e|qEGpW>L91d z=qB|BU!#4|;Dc6@j)Jpu6i3}TZjf+5Q1h7Ub*JS;e z*2kL6pkytT3RJvNYt-Db-Cj>_@S2+Ia1}``XB}lgVmK8Mn^lJ?kk7PV)HX}5EUikE zD9K-ys7AiADsj6qkaDq2(z!?$kT_=`kyN1&L{fs{*Qj7b39Qnt*3p^7o?KG_jf{5R z;5wi<5M{B=xf1{NuCQSh4ZOkjQI~&wZc_M_0mms_hl`LB$kJigK-MKNOxAtni3D10 zvJa^zYIT)U_ziM)i+y>6o5wa7N4P=jeS={=8-%?f3!!|fg1{)1{uO$IM3JpZsDoN@ zWxrMOsy^BKR=N7W%HG$ePLR-wHvJ0{-?&Ocag81c31U-VPw%%YL2vvBfp(+^4w@#BlDgg*p<>Lk?|_8|ne|Vux{59flN$>qq=mD$Gx9 zOlM)@+>!A@_WgI1rv)67tAEiCnIhmka!|>cocf?X?XZ=fuvt5tcFTu^nuvqD!`Ook zjZ+n(L`mvUU^NMg6kgEq0s z{ebmJp(-qsdWtRo0Q*ENQ5mFHDY`gN60$0fBqAmH*r3R}dx*0G4D(5G+f?ykC?(NR z64s%>m3@lEFa6DZkdX?y#G9zVQg&*&k}!}q2kQ=1k;HgNER7(sPB8B335RmIw(aKT+X z!6#$^pG1w819E)uQWM7cY*3Y=JZshYA;f$VwG5Epip=$~H&;M< zpN~ltHjxWkgi3MMv91mSVB|gdkVqDB6N(RzgGYxNy+dugA=d6=D!_HZ+N5KzL!~XD zFfxCT7${)PGTQX~4%c%Qo2VKA`Ni1TVs=o<*^fxaYqwQIP(P*{_vn_VH?VWs=j3Fqwz!h$R32 z_`8=ppbAwJ2KCMB`|>9n7O8KzzVxs9K_$%Ll!F2rM)~zgFFHCNntL+7@SZ79_N_uW z)2&VQOPj#|XTC0djH1%J9E4FuY5l|N`lu+MR9u;ef>xKPJ`k__{W!nd#FTSG~ZMKyg?I*0!JIq z{FxeL2O-Llck&pOlVFJleIBcU#93KTNge!@#vnTGYKq&VE;k&8aPwW18cUI9E7Dvr+Mw!? zU7xa^3mXAVvnl%?)fJjvHv6s9Zy+Hq>*B?vWznW{Q8uS-Qdw@wK3ib{Rask^UmZggyufzf!wg*>5)JDU%SCHg$4GTn5CiBZ>STi+7S( zZc+LqfJnB%$u=Fe%Zs>4=#MP)%621JX?-Fz;P`30M`EAQ;i|Xu;ocf$=n2=d+tTT& z?K>Qr+{PyUpeEmt{bw8sNFED5At@37{)A?=>{G>{ic92CBfZ31qNF6SMB>aktiQtn zq^-Oj9BkTBS~T`!k}Ww%+ibNqn?*u!Bqjr{64WnYPZ$G<2j#sj5mjtd?A#ydccuT~aL@Y}Y9^C<)H2%bJoXySBLXByl@BEUQrwx&YhRNSrP;##z}o z!+JD4?T@bq!`_u$TO=ZQUH+4`@*h?Hi~R@tvj4$1{1<5;kM$q8K-pnqv*`-|llAgP zAo!#56gMj>qqs^`C4f;V6y#|05&_66WAY7^gLzyW^_4fN5;A8_ZmM^C4ig%oIt7vR`GJY&CNkC8t<$Dgr? zRrdp2z?47GFYai5Q*7}k3Jl+zk(obZIMR12f2dP=P{Bj;8FlhcJg#Ujy4oes0Ch{= zFyOk<)7Hxz=z+G{+8Fk zMgD*r)c}V+Y9{}Wqmldp2F(UpYQVd}H{ghZ#rxDG{G$frpD0=2Pc1BefX`7d^9Pz_ zjhmy7&NPKvW*fhmM*ZPD1W(W;^ZqllIx{yCqfvjLRh5k?hNgU|@e0i>69knONmeqY zE2<9&h0ghm=9UpD_rtgmRnvp5sIn*_^IyWrY&G=Q6()UxR1AR6K_%0&3|=Yy@kRkpkB1E ztDCAku6-O(26rrE{8X%06)Bh~5B%||{wuHwn!Q#Ka1+qfqv+F?#D%)Huc$i;xPqYW zlzyTv`@ghsvVeUZ7s&$lCJ@85;sY)ew*KqI*OnW27bO*$N=cfUaoaLjU8qk8qk0Jp z!ySc)g`wVpIN(BE+o}pK0MHVl8X1LcgV>7#2zX>k!3BN-H+6x}2LBcQ>ND?kD~7fr zg`q012vNvK1uP+8l)@9Aid~kaD1$qyq`HY~z)`Q@j{1+AxUeiz6{(x{8b47$;p1b1 z7kx5O%+_cjpgjJgQU@(Fq+Q+)&!>aYur(MCrpNt@+w=ZT@9OGJ@BIB_<-uny{QFHl zd9^fsH<W*ip7K=|r$>+5e?7S_trWC{RBqsasBZ4bhvfBk*$>Xx|_HB8(&;XAMF zt3Q2Z>-{H~Ico*)dc%vW{z31$Ke_3h_a`g46}KL>R#x$``rs$cE@BQG)+*vKxNNPw z9!$=9<8kjpaXo9OXASkld`k1`wLm<(?vLO0%i#k5hxzO!m8N#bX`!^$ze1Wz*X+E> ze}x<)EY$ewr=m9XDh=xl!I#R0frAP|IRErzX1!v2Il4^6s^!AgZ&!r|*&k20r_=G^ z&F!>5as0R%jo$a(^?MhPbiYJM0;Oj#ne?a9i~Mr0md{7m*ZtvivYaC^!_f_@8}@%` zolLK%uMb8yMoiAf{ob^{qu$4ThhIrGA#(rBl?`3>?bTKEhHVkHF^OAZ(SQ3Ic%pEz z;72Nf&8~Zvg+vMx`5Gk?oQMxJmtzExVb*9T0>F1$alF1$mpF1$ytF1$;xF1$~# zExb>!Exb>!Exb>!Exb>!Exb>!Exb>!Exb>!Exb>!Exb>!Exb>!FT78$FT78$FT78$ zFT78$FT78$FT78$FT78$FT78$FT78$FT78;7v87a3-8nIh4<<9!uxc4;eEQj@IKvM zc%N=Byid0m-ly9O@6(-y_vy~U`*dgFeY&&oKHXV(pYANYPj?pHr#lPp)18I)>CVFY z^v1&b^v1&b^v1&b^v1&b^v1&b^v1&b^v1&b^v1&b^v1&b^v1&b^yb3*^yb3*^yb3* z^yb3*^yb3*^yb3*^yb3*^yb3*^yb3*^yb3*^wz@r^wz@r^wz@r^wz@r^j7me&Gq|( z(MA9D-USx>2bY8X*ev5`R{^~>aTo0o#1}-1dfp4I|1dEf{o#d+2ngdIwwkMsJ4Q%z z4Ryx|X|4$G7$ME|tq_7>u20!9n(OjAfc=vNj1!(}34&;zG#@c6r(REP-%O@e72)cG z#VErk%||9u(*5;j{QCRec+h)u)nBd?g4o)s(Sb+jB}Umr>wVD;|G*AVwv zZo4F6N*{fLxJqm2tSrAD3@?@+>R?HW_S2_-+dJ4jJL$gI+d14nJn-xx59ay1{`q?w zPwbH@VO8Ec2%UN|+dx-~tsTSGLMdjcwjUr|W-{`H--YeZj<+qB>+$)}9>u=*&OpbrT)R&WfRn1__KYe=o<5BnQ;PCjx_P%R| zGNG-kD;VDRcs47=;_9h_#MCPzB)Os_y3usvGD<6pl2F>*iZS>kvDSM40^1L}gl89- zozZYIttvDI#WI%F6OQJVixmtl#Lr(I?40f$9z<+vZmz@?>>M7PoNgbSMitD#M)`I; zy1haFEf(?3SPv$Jg{3xpZJArDR!1P%N;*|K!W_(auvaU&Ck#8& zYpb_A$-C9&qhE90)gOoMChwXLam{(xd_eLou~KEOrQXcaW>!oZUajeyOtpY%h^)-B zpb;l}uPN1ng6>Tos1|0}^ihjdS|>Rroz(GK`^`be>-rYNN`+_4$~hPjnTAaC>3;>O zn}cmpg;oC>q^`bwQo6UzX^Ub*#PX9&0`|7Yz-NMQm##qI#pYt1MwLSwzkJ zC#ijsQ?v$qr4oHs3*slV|7O^c)p#79VUHFE7g^`6I=zKKUv+RXLNM1!aD&}qcT-N9 z+fL2pr1|{*{>e#IE8&k!8FnLcqN60WenRuR3=`?_kc`eJj3846Ql{0O#hMXT^@zw$ ztiIcD5@@K2qvelm8TT(+26B`)mLoG_CCwH+A8-Z`=XHzN4w^IzrLyM!kp`4ib&O2k zjYq#o!k6xNJQ}YopPhZTy?=VPbNJ$DZ@+uI@}PCz8@5Kns}HR={nqWIf6=-ekFHzO zcm37~>1oE-qsg>2IUn8hu@Gu74fDcBNY|Db zr&)~uqK359OW$p7DO;ZIU6!oe*@%T#%Ocau978H5P~*E;OL)-wtH+r{H`V1@Pg@l% zcmwodYq^h9XoJg%pyXJeQ-K6j$Sc*#W2xt->PnYbRbJAWVFP{jhTBs5_+iU$xI!-R z4acQQjO8n`CRUNLERS`?8jR%|)froLZsYin(K0{0Ly%WVr_dvm6OY_+tX9a0)~V$> zO?rRxS%DRz-BAgl6l)QQ8a-Z&fC@bx<*N610(I;z8=UI(#^w%8%gE=W@!86&W#;KD z*Dg=MRFMm$3`B?<6{?fRg!W>2)yXjJx~W!vliny#W0zL&q*kvaO4WO1^LdA5@X0TO z>G``7X}t^Ga)y){me^;=2l@U?%!=wVuN?{1l*bHdH)1RcB`eb+Wj(i+3Y;Oehou7U z-RWR>3ymKJ5tboZkKI*gS&o^RamgX-3MG`qf;m11lk>Pgy&Vr1%kSCzxw4vM(EOC# zo`X5_?bYZ_@2aliER+6v-Ea=P!`Mbn-9nR z%kpUfD7C1+nAy<@biQWGBRc~D8JIVCjWJ|D=@YHa=Oz!IS@HrS(r{fPhJ~#y3N9E-N&rTqG+|_lq@& zW=H^LsrYs@{j_%73^~Ru5&OM2{i|YeUaTQBLmD$n#N9CIW=NNoTnhTj7p?1lZ#a3{ z8je~M%!T?qYNYkWUxEdpMWj%J{xZjUxW!R+{_5G(fUkd2ii;u%A7F~-A2F1yn2KtK z1xBY{Gwzk!0#4Ru;sXffHG8h^xAdNmu4z2pw}U9mH-pTdA7^OH?9u&FV?(tE#>w zc?IJw)|_v8hXUxlP8hB6NzaJmp?2d9Bv!w!Bf#bt11+Uf-S}tD|k2ovYqt zQqnGTtqG4`EpyvbIj^)Yj*(KoPLV~hLaXo<6`L@)zPXZFM#Z;Out!mg)6K`iKfv@>-lpKF%NTq3;b#I6$-b);5TGF)i)aa(I+*H=J zR5i>)dzsKlP1}^&I*lDjmhKY9E4m{CW`+!-mhq?K-k{1Vf@XR}v89s{a$bXjwcL_3 zBtCr{j(amCIF-e3rH-CHeQ~(E_k6E=e761UJ5q#sRJ^L+1Mdp{zjx%H8q zS8OfF_{dB*MS(OoK9W=Dt>$aDro$&KrzG+-q@YY9KSP?y2FN$J^&3ySp46Wa+{tOz zlNqKW)y~y6)7G-Ea1#ztDJCtB-v}KHrF24SJih>ZLZBDlb&8c*I%CLoKLZ{<Z zcFws{Wfs5o#FbC8VBoAhZa!2L3MY|>wd>mB1*-DEe<_qTSLKD2rL^DL;{~Z&&ONe} zHCMGMyKe1qeQlSJX1&x>?rqN4s@`;emUW#qxO}h=<5GLbunafR{(*QCpKD*^Gqsb> zonC47R4o9mLngZ|O9ksWW!;u9RP|S_&5%tlB2@*TIgTV+cCi|0wf^W~S}hmr(5hQo zt#8-YuA;dfy>sTz+6)QZa+?IwEeV`6gTiWaJ)P8MtMyfJLgw#)HfyfsZ5Qui39WQ{ zupX+ho4wlHPpgB{Ey226wGDy>sMD%t`jT%{*O&E&IHLiQLN=d_UY}mbX2|GOPsr}V zpgBt_u{gY8twF9XBT)h8&Q>aRJ8d?Vb~|0JTDLPmt9Lssv(;u7Yt2W+>^yp{`RpO$ zc;O(WHBohr)KWxivyOI!xNGMURJlY?go`q3Gbf=ctXqo`>Sm}#Ty^uoth!qwkL>2U zzmQ_Uf&{5SWvoKl+OoshjV;vFdx*FIT-W+tT#9N zsW2pR2{Y#JMbbYeC7<*4FFK4t=vNjwV|^M|>&|n_C#Z%?Hk`1-1Trj)b#h(a2caGbFnx z6liU~h}*>#_k!kJ@$9~eYLMXJPIjLe(mOO(J)QcqFk`70{af9Jn=xNPcs5z}jOyyU+$VulPuv#pKMoSOe+LPy z&5&n+1Ena*qcO7DkC|27?vhUkb#xSUgG6CyBGP^)*VUB8_TxHR;D>p;;q;li+6JmixqF#wG|#D znbUiN?*0iZjg47t)0lhB?aopKnsM`OH1~d_?ST5eheWe#=RiY?$#KEV0of>%`KV= z{-^3w8}y^dTG(uEeHh6~%AfWvMWbSK(?qeMg5c|lV=|lDDXcRhqrQ=12KPdqu^lrO z)(j~@3M)%C&{4H(c|u{EfyrdANY!Hdzw;BwF}@d#@RxMU30 z4nvgkT@LE5*MYq0UCoVAt&hbO=^fJ5WHW)RJ!x(q zR~V1eL(soSR)@72vN~{XA)#wn(b^xp?|b2PuP3)}CesqFrWuQjN?sbvGQ(ECRBhrk zLzV|SaWejB^IbdvwKRpc&3vh9u2CCORm&uGqf{By8f?Y3tgqq|?j2oaxi5(YVP8AN z++f($l{pxk%s**9gfv%H%?A`!r)NHZhV?}ypU}N0VA%Q$$tP+XaqA7TPMFC6`<8@y zY~$dVw{!(b{|_5Vb3gR4E<;wClw+TC!Xq1@aFZ= z)oqDm{!Zw-=A&Sio#k+%_ig6wl3sL05h@nEo=D^tXrif$*A+RnM!LZE8*UVTo_z zPW0>MR!uJ5{}|l|!slRNsYw_l{p8)?a=PEYybn5Uo;I1#eLQ&k?miGcPs{9R^vm5> z<_%K)WF`?-#CJx$tNx@cis&w=v>7u4iE)Nd+Uef#yts|^T*ytr=Q??sCFhUv5+V4j z5*0x}<9w-@g9*jPKw8pI+8A@Ni_jRAs90cQ%)!WchJ&rfA86f;Mprl$@IDwhGo&uE zMovuky|8L$$eWZUe1G(IfTR)kqQU224i_gIZvxMIl7v%apO}6{7gt9&dmy~Vi zd$NQwV{)&sQ{Rgvl=XRzGYkbKKWQ@ z$Um1Q{9gE2XULFeDSk83J!)luy2~-R?Tv5dy;k&RF(VnN3gEqWRq|eh8)%~B_`_SACvIgcmCD7dWh3wh( z;)k=BlN+2^J$W~{x%<6)hD3*U%(PnVhp9$eLL>= za76n(5cGMNRA%8&Q+#eZ((_#);H!5P}IG?nSS`RRLsGQ zKxEg|?M3AsKC1onJ5QgU{&>_q+dJ6Vf4SRrYN|}N=#aNcyJ^=q=3q6`*ZKAL?##OZQ5u)?AwuG4$XDk{rk(k&Xk_M-W!%_ z{Kd*;^~8w1>2y4C>78M6kEh$XH+XY9?I$+s7i%-OLtM7y3-DLV?+3$+<)2(7Z~N2d zSEJsPtoj?C72AcnMsKToddt7Od6qufyJLzz~*4L2qiCv<<|0o z1+21R^1JHJ*T~y59bJunDRX`qecAdNMzz{$uYH z#|Ddu>)+qq^Rix*Xj*x1CLKEm`>8t~kH#mrH#g({q-5v!f(56!o#cEci6J+cePy$` zsZzhP-!nVn`V83-tqE}Qu77pa{k3cZjCOccpUdgBglcoS8Im(vLXKcMeA+Q;YYyY> zkAwcz#o3DTVuik}GJCU5Ua|G9IgF=*>+|ub_ zAtiUYrPi)fy_Qpv*2=zzx^s|XG)nw8GFebA06mM?KRoz0dMSSasEYHzt%Rg}GSxH6 z*5ymFWfzesz&*cKmMUpCCT6H-4@Cbx)sO!U|MBYI38@s4ebHB358WmMB2J4I{x@SnwQba?XI9;pS-<37U{&k{+#kuW>zM zh6Kgd{yFIXQsO3d!;F>ngiDI0YH9Z3;WehTs?~Zmm|(NP`BiT+K}(!ZM`N7vK6&6) znvilVfxWg?D-X|#YjHKM?aS1C9W%E*Lk?%vGec&!7nP=28)}Y;kkR%GX_^)Cg^E*8 z>S6-xn?4Dd&;t7D5|Fna&%t@6od=~SGTQlCA-}cUE=tg6Gc*o**CorlT3o85U&m?C zemn=G;rZ?Gd2k<$78D23HI#L(QY ziE(?izG>z6_)k4VuQs=+TxU%T$l6W_P2bh~ZO*LDX3l)_rk>3{A^NYM;|R(Rf5)a- zp8R*QayQP(YOl^_iwI@M{VNzFKlkg>^w@JnmJOPc{NKwDb(q`yte42; zyk2#5x*Q>0!TCFQ1?*^_Kc8szCO9HGb{o)rFu0^&p*65O;??=Cx%^DQAe^Piqi=rh zUETJvLLw)`R^z*Q3oCjab6r;&w^e4t2#+{(~;G)HDSJ6^E&|=PX#RN4UI^up* zHF9Lm1X;xwir$PlB{gv`ddOvu9KhJ#xIY-WwU^msD{6xo(?DiXeLnDZ0nQiI=94dP zF!Z>(J8)@j=8I|bnOhoDiCS=h1oK6<>ey;@oAalqkv$#vu85m;pQWvKg92j&Z|TnR(B%=amvXh zvN<~&oNJ>@fOW;`>1@KZvWULE>|IS_lce2z1aHs)b_s47GY+SX5?Hfj&$yRk*3l1!MYMcDvY?+m0i_-DE7HW?#<14m`r!!z_j+}T>Msd;J~!@<~;42`*Uhodxlhy z*)jiK9hlahAu(l^^!ss~QhOfxG3~&AZw^dr&m)_rCHuY{9M+yk_RW~;`*Mm@dmiaL zE%Eo|;IQ^Qa(~8D-=8L*gI!hWXr+5|+EjaM4hC8!me?IDVG_rrcaCL)o%dzlxmwHa zGvvs$!@2|y+?#}4?XBjnDl@@JHWX*V2wcR=xo#@RH+LB2Ru)&WfMGqXqSGK@V1hx~v;XPx z-*sk4RH#HLw@o0xD|&1T-MF0@@)d@L=H9ela$tn*MulkVW-uGM+!}eAeXUxR&rC+Z|R%Pp9cDtzac;=BOot!jfgmq>}HdrWb>B<(QgVU8Y z*TJDER-5WEwObHqowPYvs@Cz*buz|v=8;G5e$8$>GbG8gt$e@IjdbRb98c{AEKde# zJvW7&ouz`U5=q%#sAs1$k0g5cCS_n}#{7A1`$#qA)=&(}ObZRR+88`T&OO`H@0)V_ zJuQJ5^7Iud2ilLZpRlv~ds+fBCc2Z(@_lbS=+!v)SKEPQJ)ll#Nay#=ZP)odbK7;+ z=HP6_)DvluYmDX9mDXjwb@BoL$QZq}wAoQ>O!TY`njzN}8B&@&X6Y4?Z(2! z$=IM}U89y&IghMs)w%}J3WDP1OGo`d)pQMOM&1cJn$K!29W{C#m)L?vN$Lld3JmA6 zrqk(PKiu>uU$4R{8k$7@EgYMC#IvHt zuhrLApM7>a>3g@u3;tE==6Ai}#Z@1{2H^_^4(gsvT1ay?9o$^?TZ3zSUiXL7NlTUZ z>^C{>=r3P<(fY5S5s0Dg!sw^hx;46N-3VTj)^yaGjz2ua=}oQC_@Y0SXXE~5f6Qa8 zT3`G{;M|M{Khu%Eq+e4bKA@{JmA+{0;3O$L?`gQLU)~LHu+%Sut1E(UT^mGAwWzL_ ztno_?(EwJ6PZX#(pmg~2=zaf!_)g#THO{#Du#C328IOJ*T;M6G!qan}2Q$7spN_^~ zw)QStqaoh7jrlRlh(LDy&Vtx7hkpx z0b~5j0FB9d`oEs{Z{&dO>AN1^x9~3qWAIzm(t6t;_Qzloum|H=$uK7OzfiPy?V8Il zT;r=-3R^w&HHGAeZ71(c9zDUcGd0%(WN8d;zt?14Xh>s^X|7@N2raW&? zWKm0*-;Rzmnvt(mO-3ST9EC9asBuHp-~V;mA6`saua6;ZgX@0RXfZu_K$}kc=Tuiq z2Tz-IhHKRpKih*Q^kqSedLZLM} zKffK1`xgcxtIGYif_^)pK?{|m#ucHX_2^OSqJJ~)qpkZFN)6g!G}5fT;?{&3D$(SQ zvk=KwKgAkV>oM0fC}rMOO+nPzaTzlyTv_p8KJW#PB{jUDR+qi~k8_Q_jL8`hZY~yK6YV)qZOI^{=f*t2N0Htx|;;6qL?WMoM>h(TEVh7vZZ& zhU0;@5`8`4TFYpOR&ScuUeepjsM@wFNd(NjlP6yeznlg+F@3_7Y)px#O#O~qNYtc1 z^@tLJ{C9ISn1?JhnER!O^i)$d#bB8rolKegt)uUbT9-I%(bE{V855GKh>uiqa@0w8 zKQO{m9}%1!HaP8(ROGdkW5@$1y7`JmQ7ogT@U51%0l7}wSQt5Ux&{t44ceYHH*ED| znVMk^_YP+iVjAmceusmLmDa?Rx}LHG@^kcfXz=mH@)ir%K5ZR3@3S-;tkTQ7WOHiza#kW0bNlP_LYpD7);O-W37Jocizgh-kYyoYv=8s>BpPEA}tB>CFaANiY4l-)uEh3~WE7uV65+=`@T>WLt zHq%Ks*J_=NZpZLG$hGdlm*BO1#SM#vyu&Dd!ckB$Fqp!o$3$97|E8G}F+Mhz)ZB%W z(~SMRvaEW~#i&2Q5HfAO>-|h(VyRp9=LU)pXuHs+n2t2^W^R#fIbRf)e=2P|uLo3Z zIlS_Fw_A63@vq%#Rr(v$5cJc;7`NzO=U2BEoDWF{quR+zRo(stN8;#wAZ{r-z?|lM z$V^d~vR<9vUWt}8wuGv4qPt$)DRoCyxO4Uxn&#;N6FpTM{67E()$*e7e6>(!hQFS` zPdS`kt}K5(Y4MQj*5?;bKNoMHT)2ZUBlF%WM58eFd4%+X%xx`^${*xEg|ud0aU!f< z$m^NNRrhm$jArgB6J>OH2{o>iX-_wB-9{BZ66tL6ajAzFvIlr~(lg1n# z_~h$qLH!$SGMtXD`a|V^$xLhuHTB-`=ib%e!Y3P2udIT!eikc5hLt1mjXNBt<1w%_ z-k(3c9{vfkfje0JiZFA=jm*m>_(*v~$t43c9%|wm&4i4mamHn&D-PaK)nJA?IKRja?yjW))BOP z({pLkN}fH!CK`H>RjIJQX85KG8Q5Qb-CD*HKa)^JR#gD+d2)3 z>LR&{nXic9`P!{#@!nTW7sL4S_XDVz5!Sb4fy)Yu%o)#aMmK8V%ib4{c)S>}+hiiHDRj|aOpg~=)8uK|+tyN> zGGH67G_%sMbH%;3eup`~8V$u^kM%oJu4cSYg70}(&-q5xB{?F|IUUvezfwsf&OUn~u@FTdnd5{eUm1M9!wsNmTdP zQOH&A6>(d|5=cVG#aIfZ(b4$i1_adQOuK_EUrSZ8ap7$F zr4KQ|Hx=n*fTe1*p2&m|fZt1%Y7IT^|2!DoV!HB$((yTJx==@J7* zCTMH8xZxxQpFP4`UhIH5fFt2E#xugC>kcrHE9t z5n11wU?M(I%j}cUHN21G0qiWey0JKoi)&0^E?RFsh#I5Y0r%+Yxq1UD&>vl&Gl1zi zDu5QRKEy(UsJJtN6rVYK%YGHk6<}iw6cS7)NF0_j6#T?|KRlu=LyFvBVUF%!Qe2N}cQplehW2W$&PF$1W-HKTbJwnkc4 z*B>KPeB`9`Udg8+=2M5>pa2FB?212&x*^E$Td!i4~;{bXtY+^y$gz;nCUY@%H!KmnZ&7Y^QY98_GMpTiraz;5J89e zI5#c!sTCO85#hH^drfQyvo5nGE7>}hDi+*Nt-pc>si1pEH0FwkuToNpAqQS%7#5Et z))?aq|5<%!R8^K&q48OuktP*GDPm5~T{qD)Y+NZ`cfMz;X`;4?4g>ANrs%7?$-VzmIN1uv52P7r;YdXO>d zl;?u=9rq`rE4b7UL$0DRDg04+=gm__72nfDw{Xq*^||6fLZ=K}VKrP>n~HG+tshLh z1bi>b*}|ZD>Hr*rs_yet9b+|JCDxRnSd!`|Rdrt|EX#R{n zsf<2yz;s=_&CI3l&PqrVLN5#UK6sOBH~FQrv>)_J8kZWcSIbFJUY6)cm4d_>lp1Cr zYCb6cfrdZ`#hJS<+NJMEu$v5%LbG8X&_CXbbK8^~pbqg!+9FAmAlbX+R<{?GM zYL7OHc=D!JO7p9HIq7FAGy#&s_MPfam8-{s)f#t83l$6to6Yy?q<^c?Dnv?UQ! zCS0Y6Jo?7i8hAyiC9U_R4vMO2B?HRog^H2F4 zkIFh`cX)eU%8)-~jB<&8W!!}8XfVyNGwf(3J!Nh!`}}r@_=VB11f3IX5bI%|tyV%& zzx_0*i(*vg-LyV_REpLgX(b;d7NRFWJHNm-b}Id1xDac@kgz#1p-enX(vcXMly>Bx z8<(R9>QRS}GdlbfH_ccg?-vauAqNVivWzO3_+_LlR;uTm9x59|E|avWAtj;t)hl`A zC=8>aB;Q~X@e-^HkkDgv0biU#h-&78{MxB;cM!mzs+(_CZWk8jzk>FWj&dT?MJ~AH z_Z3yf$mjDu_stgcJlICUzmkFn{a?=V!R%SnIU_uZFprCmzB!i^44%2ofiI7Td|!7I z^ z;ilRM`-yqC78xQrRGyTZJT_YfJo;vc+IFJM0 z-LvN}4|Y!X4iDx=sgveBTD3SeM0n@$;N*1s;5317LHCszrPvgSsgr5ej5N^(G2+DQ zJcY1Y_YS6`Wkd;KnKz1v%oI+v z6QS~7wi~JYT3b0#es>63a@#WG^%4Dc7tH-q#0ys7xaw+n^bPf4zjp!egPyGDpJmVp z5mQC;a@+$wg<=a8u!PX^*^+*ey&K+fzuZ+~v6WSubU8MB*}5@=?dUuBFRl;0$$?7p zp|}FEaX|b85Dp4k>_+^{Us~Jnkn1vNg4SC)GT=Pz>-{*We#z(rUF@#{`RP;GEJ#YQ zqHBOR1#c-u$sHE%m+M=o?i8poO4AD)>0^ryRxI9pfIwXgkZ}i&TZ})FfQWAVU*3(d zOA^5G5{5CPyg^s9J~%aEd_)UN^(5U@sBH}r01e1xok!nT<_TR7RmP>^+Xor|qp8J3 zB>Q!QkqR;&nAlUS3uy^2=(}P8hckUZGsnFe%eEc7eLZymNr)K|dU4afD~}D1uyhS@4!u4=Ut^pSv5TwI z?3m(F4*L}&Siq~6iojsX0x3@CBlL2JK0|Dh=IQ})7XQ(NdjeF+81Golh@TmTiE6^C zOIve9BWcJv&Q>8d%M9BWm2&vPEMCdl6_!=b&k-lULutu`o7_DurJrl8DU(}>gSPczo0Zx`R&9b1X zS2kJpjAGIta(7Q@6bV_@-js6ph7GE2J{3T}DR5{FN|xEl?61|tt-hoyP%Cn_pOZsY z0Yi}<>s4F9L+fE-Q6%uJ))`4Y?6_h|i~x!wNd1=>H1Ge8YD-SDa{-ek=ez~za7EvZ zk808%vw)=QB^)k9;Ftai<8C?9#Aw=9A#S!C079-#P$*#h&aUXijKmmy!u{op#|b1Y zs8#kJaC-*Hpc*3qu6oNfJo5H8m=_WS<7P8e6TaE&U|#q5;Z#P@uuicOuey>~UFr<; zeW7y1Ipo09+u{G1U=QiIj8&K*yPysx5K-WkFTDnCAY$1Zist$T=?We(tCnpAfP^KZ zHVlA9C5bKWrh@)9TdPSuEobZ`i&O+!DA`^3#_ulGhK;OTu}`ti%3W;X=e`cGi7xc>H2}UrSdm2H-k@I3^YBH1j6at~`X30BR`+oooU|sxl5p zKpCQ1ggg%)$9V-I=2bknQ(Dw=mzvU=pRu-Z@7XtCVWYI33gaq%MRWs;Xs3!DBs9LR zX(f4&o>917#rIv$Qdis(`}qyLv5J!8H@LN5RJTWe{_=@%6vVg&-LgUHzm{IC->TftfXR~-rjb0MxB z55v0&RDNsS+)myda5vl4;QxgwgX%DBtVxwD{}IvRE!o)!kR|J@&t_WQ%PQ{Z|-kNpj>RQ>R3Gd#%{j}LUs(Qr)S$Qju_Z{uzU9WaDV^shwkp#vmejC z-#$J&Jm%N-@wbBd$Ch9A;PAAdJQ@~)%D|Y5vmsWWu16P);2Td|wR;CU`!9F9XpGY{ zeSLO#u%m8tzu(@MC&%5tzuY@kH}$nEwSV~S-p=+u@RYLV=Rcy~Ak7l6Cmy(+?%{KJ z<)Hh6eDCZZ9_X6?v3DxB_Ed@P{z=!nltTCAtjz` ztZ>s@;=8-O^PPd||J?2F>~Cwj@rM6%`$S$iJ^oR?ceYP=zOz+6-#gge-&apgzdJru z6LZyladfJyIy^YtJ9w#JeS3I%=&IGO zScMVYoN{&CJ$-q6AeTqSdk5;~k9*zyUAecvr^}uEum>XK9*FgR?QCnzce~HGU+$mU z3ZH>zx$$laH@VDY`^H99Bpe+LtwvY@q^Ru z@pE$@{69Id^~tZZ9RVkA=xh3*_2rB1>34^_`p5pBmZ#?s2zhIFPqFymL>KvPd;j!o z=kUc5N~lNA4{Uue*sAhg_u%CVDoPyxGB`7x%5)?1JM3f@3cSsydkX38XD7gWM>T;+ zi9koQe7}9FFg!XwJninBc2(mXy?nN>-vzIC4-fW#BpNWrkhqk6`Ruy);Y~k-(&-s0 z+B^6*Pl=}Q>+wR(v27KvmR5hF;^I3WTLA~sU=nwWA%_&fto&W*$yJYMj=jZAoFFu~ zRZ2B&BeAy5Jb&RC@0yBdYe)c^XX|Caou089pZ)#i_Ws`UJ;-dOe}*j{IJAZ1#RBP{ zC&E|#x4rWZ(pstweY`_zDzOEHG-sB?P~b}(mxaa8Ut&P1&S;;-lUt?(5%UYjooW*V z(a?k884~2np~_C$Fb3_3`mTzy!&=Sk=eY^224eoiZCiZcfnpS{G`ZXfD;!bWW^ z|75#Ek}WdBeU;#gHRf#vRk;Jpn6>^A*PjCFnOpBS__0c!Vo!}Q(QHowsti~;6;k&`mM_hCfhlHHE z51^~mzzVrnLGNDjbk?%86#HV4mgfR$RB(6iKYjYQJD13&=MR#{L@@Aod3m|ZxtbZyhIK{@= zy5GyNa~C3}Bs=-(i~CEwE5a79dntdbr*uxwOkJ{ERSUK1ULO4I;P8h7D+KvO8vfDOD30B;B92(oK-t5g42vCJ z0ZP3pY1`$a6sTxAuYL25Lin-Z@*dIZuP>--E ze9ctp8+gj*a zw=+D;7iLR`HKJ&41(?a&kQwMi0byFFMsRc2C}*bwd|L_c;6Dtdhpj)Wr6gkdQLPzs z%cq)dVit7LaxOJ^Nu7VM93g7O`smm>StOi>ElGu1j?6r`ldPJnI-ib7X=yaP$`>*# zn28Io=g~|TE9vV@ODem{jrnXYWl-e~GX-_6eI-)@U6)meCi*F30vQUO#>_1WXN_{d zxavI$Wf8RklsXkszogI!q%=KDrCxJ*=UrvAOA3slAg4FCmcL#`I**%ieifp0WPxEv zo0nV_#)Lt+y43VmDi$L(!7%Y-xe|$nv9%YpPz0qyJ<=ZTHCqWT@rq5&e@ zj3`#|>qMN!&p_n)_`dm`+?fT+hrWCkI;xQ8f?3o?L!?|m0u~Gy7wW_di2}rFjN|JO z;$tS~qnnIFT`L)aZc+9Pz~{ANW)!ammGkRcUtgMkQB!5f@(vXAf)tX05= zCWjP@SIL4%MsZRMB@_i_mA1BkrWb#5!hGeg{=Di=GeSMv#!)+oygxQVP!11RlGqdm z1xe->6-8sD$OI@Uu|Yt{^Vaf;R_MzQmL=JZ+Ume#5C@lvGrT@y%4>5U3GN}Qc?X*pmK8kpgi~O-p-xWR^w$}(I4wWTX)vt4ocU;) z-x^gIT!>5{gDVe)J_k-z*%WhCT#I#32=OUznGf9u{R|mj-doQZOK}|+E+`eaQv>V(K=JaeEhGxWAqi?mCK=_y5_+s)1UbP!= z_zl*aad-d(asqq%A!igkatXoM$jE@9&eI||x5u1+WDZQygfh^c8I?}?(izUbkzH`e z*fv!6i5Cw3Ks5J?kK&h}65wJDMja2#t0l?Db2Ii93z7q(d(qW{m;KkIA`=S$m#GBM zQ8SnThl!G18O74e0e-W+93r(h$E={6naDt^ab(U8L1TI+8%oh)9p+{Qbto@uB_v0% zzgm9Z|A4>=(Sge0u>9u3asN`Q$X6WreZ3fskZCjxBcO+N4-r(>JwwPI0uv3U_IY#k zH?!z-c=3_n%pe~r^$hYVu%j_j5`n>9ql`(k$N76_Dy{sv{Q%~NZgrkg!`DCN3 z#Y;W15G8ZNHnZw4z9{X=K2YjxjC4!k7|!6)B7+l#E=Du#T(g>84#&Ad?sEIjuj_RD zL9!j_x=`N+1laf3nG*5hCc{YcTy%MhPkzncj;68l%ykjKV9WpK1Ksbv>0d>9vtgKz zs1R%MBJ$w6-y2Sz!gt{5KM5y-ciy(9nG_`E3;7h-Cz=#LmMgY37hvj>Qhk&Hc3=dC zehJxH*bLE4!!ulPJ~{Ex%CLa9%qhF@Jt{VsgdS`xDPfo~Nb*h@sOFVvs@EUYC^!Ba#tVhU<P^89egSG2~;d94Ky^a{v z7IZ?u&VyoVF|Y$5r9YAaWfwsWOk;z#9#()>};`dA6dJ4%GABybG=kYUc9^$=? zoPR^L>=m}O)%W3i-R$gFO8=E_U?YZu$13)&wRej4x7u8Kiol(uTV)GH7(yv=DC#xD z_IfiPFTV0_5s%R>AfCP?pLjYFW8z7z?^DVWkKHb21T6@*G(xS4U^mYAgKEJ%Dc6}y z&*XGwm&H@d1KiFEl9f08AUASwM;3)7Snbs^S3FhYVl{19SEX){DXuzo4~+AfKt81; zz!N`A-&JtC1W8KWYTe)8&*=%uCua-D_SwRI5wL|Uh}pu<;>iX*yAfMNHmb12kB_k( z-Qy2;Tbg}tc@krD|HAt!CnPkM6_;;UriQPwtnkQANJBB%7P^v%a?;gizdW)ztkvub zl9$bBLyr_TXsQM6$d_&!Zuax_c`#b_nWcAvl>hLDN}z$0qQ>nbnSXWDD9}z@FG5gR zpWj#*{9>|TR%h{4K#YMm2iT zaMig@q5?(HS79s)#48tysm1}1I9m9#*!$vO>fxDTb<&-);+OQkV1>jjYa2|hnO=xl z{7`e-F1Y(av$=r`5~v_+@n2;<=W+X)prG6B5GasgGhxTtol_a}as=PrscdAfmtZAmm$hWJO;q;emV0J;Lany*ZR%RkL zlmt6?Qf$fGGi~8H*a(On!NsLi0cHTLI}?CP!T}LsGhr~1todjeKt4tQ6k=2bm;odh z(cCi3F&t|;q-7V4OaKq7@M$T!_T|bh8WDg&kIOOGA;_tNV&kMwf6)|y6RF;ec{i)m zR4WUL6pPb^TQ%)G5{v38HBJq%DZpyE-$|x0*dl4jfE0)i0(l1zyoPqT<~p%?dU~eP z*4Quwu2fS3rPNt(e60t%AHHru@o&Fi z3vQ3EeMQHz3_~-LYJDGS-K-FN61Emr)ej(rQDmc`rq1x~=+QMcFqL#DWJVuqh;|;~ z1&10`n@V%6zC6(8bP7jV?v*bbR(&Z@20X8jbxfPxn{MgFpoJBJELaBF2H$Kek7OB*`!_= zib1UKJI4C#m2FHN#mo7Y=B^HTUL5kJOb%(uBJV~#Gl4NHnO z9oy|7i~PXI`8oZNO~RS4TXoBMe%}Ic*l-fn;H^^ulIK&c>`u*qG`v1N(}@XVCWOXv z>@`&{xqbpLHrrtcNt2%TTH2RFNGgY72q!YKGYF}~i#{CV60HTtyhK2Lr!xGq?dB~3 z+Itx;djX$ZFF9l0{LwA?yhOh1X0@;DU>nypO+*Wi7x!|!h2p@-K#UJ9F&B>*F|fkD zEoK6OI5I3eF?`oyyuxEfpzN4F%L5iJ4Qo(-?i`1y-J|4?{hf%n8zVi$wTvaWu!JZ9 ziPyd7JdnViQi^5HC-Kp*5LsST0+ghSd~zycB)$FuA3K_EiXc|@uQRL`ic}vURMDJl z67Cj}7*e%*8+Y@9-x^7QZ4W64xXN;3BBc5sEQPp9CE&00=aq)KHT zt^(PW@u}K#d2W}*;83I)@W^bf(iywAORw_4BWOSb(lXD(cO>taIaN?Vjw0hCkHALe}ku? zz(8q9a6weqa-at1Vi3iQj7l4j;I)kPYXO{LcuKn81cSkxD-n zw=fgE3H!(+C0!Rgw~h5JhaZe{ab65))l4OZmdpcX><7J=2bOyWP8qGA0vokPhHcUF znp8$_2Slg)WR|>0)MSCF931%8T=g)76N!~wQ z6RlAX1GxeM$O$2|7DkCQboaP+44S{7w9zF6;h z3WTAY{^G`)Gh`C*J+r3+!6S#C-3^h$1yi|UO_qkDJBB_#ZX~B7S%c57B{}4q;s(jg z5>pXw_L*)?;n4Q@tt>%_+f{pCy=BvxysxeT?SRd~_nNo{Eg1p;UlTw-uZO=EmtgjM zsN;58?EI`U7@w8*-#A^sn-w}4eBNZ-Evlu_d7~^0rionZM+F)NW<^lSt6^3w_mUL? zxyT9`Z-2}!AHE&`3WYyli9vHBvDj`aehec0+o&HCJfmi~HZz3*?pPfaXvpdaN_jP8 zwRk0mZru}cBtVCXhTuT&^{fbdSzb9^Up{!Z zz@%dTNRT^C4Qn-quAIm5j)aInFbv0kF0BPefH^~0#v>an($pYwtIQDo6rLqC1iI)` zB|D4oHYi&|(z%=MCRw*+;%tb7z3CP}R4AF8y{)El%>NQlZ#A(<;*nlCK?B0?3!kq; zLVVs((#1Y+`#v+FD&vC!^3mbzAR_euy!jU%QHV;CJlBdfUS`7*w0F3gfuuka9BfWU zHIR4J2;xPKdjIW)Xxr@Hw)L>-*WWl34~j7A?DCmv8JKgrVLTXaJEZ2-o6$vH&I=(! zomVc&tl~{yUgi|=DA*pz{ax|)z$dsju}R97Rv+i=Ao8RsT>tR!$!?HS$-K{P^s(Xr z4~ChZ^)7lh)QD)$jB*ii6;YL)PDr||LeTvDG?sr(2H;wdc(;5rMRxs2keS#=p}_gt zlskrY5c{Tr!YFP2nPBy2CnQnBS5rJF#a{+jS4`hOt~TIMLzYOVcSO9#Xt*W&ZWixPRV4ZmPsNZ zd`XH!U&zx~(S>#by?XtI=i%wSLPdJ04r1F^gWe>A6UPb9T&aUsEw<#<9+^u;^?SWP z*vL3D9>f8BsMaLK3#OUu^%l_u}lJ`?r_7 zho`(Q5T-z#cncz5>8=&mZfZ+6S*C+Ie#n(kH=g^^Yu{+RjouA@254)(*~zBHnZvF@ zm%0|}tH-0{dN{3E6)8KpSJy)L&Wji3I0&#R_z_T!wiVaT8>G@S9o}Z}a1*siCBy@3 zP+I_>Pq?_q6Itv2(|{yu2Y6~;X0U8J7Kkn2g#^ukT40$E#Rx#e%Zgk{a5cZGj0*QE z0iY%kOcB(W*Sk?%g$b5&eTflN>9{8kXy&q{ z76ItjF+=1)npp~G$FzEf?lH=~MG%N7YinuU1-%bFFa>Da{mQ-!+2bn%9;~ zNMbB0v1HnJ{k<_oRoHoPDm|Rk7FUr#w5S5QWo7mpqi%ou6E8nnruZ%UdUO$X9gN-F zpiEE($(byR%(U1s9QC-A$`MlW&zPq^e#UZ(-zokbKxEO6Ef;2AL5?kS4X6u_z1~LB z;jDk;P{fLwWHEsOJU|57o;pWw%DX|C1R$n7IXuvtIfKGQKYVg`u0}X2FN_SeOoU;z|MKLl%cIRpy0`UYdChZp z^ZMxOR!=yx^5s?YV(*}8JwEbEa#76-q=Z-X6j$?dzalXSVPiG7=9J~aYIgU&pQ)PN z!Oyz+3af#`9Envc)s$o!yynQ#%9;wRfpK4{4!}uPgN+tdsM*HZwABPHUCpz>^p^p= zX~T;`Y7UR9)>2r_;kcM-|EOM1l4+Wne~i?^V4#=1esfY;p3~Hvyc=9j_xqRAVroui zWSUfSJb3$VTG%#6hd)$poFvnZkj!8GE39VcaC^UdveT_lSF)O&QSYihImeFt!fN&o zb~HAnUw$=5IJjqTcn;8>Yn2}69lI7-3QrdZz>fQX3XJ`8c0EZ#x{gL*fi3b$#Mly= z1zr(uge{;(*wTE0JL=it;eL1f;0y<|$ej}KKG_>WCAr$=DKK|CHw^=pI|IZwmR?s$I z&ZC+l%S4I5f6SwrBI8t5^JpH`6d9+gnlI*3O@VQ$s`<-2swpx~RW+Z_qnaYCQL4dK zuJSpFRROq2_M0LD$W&8FmD!r|tI08dbTu%3{9bP1AHp6I4oR!p~0&dD+Nda z!Nx0fp`-2N7vtYPo~QjWmAc09A&Lg4bJ+?^B!3Jm`8%%y9bn;mRHXujeySOHwf>jx zfM!;n`hWf;dNgeo#N~=#B(Y>RoOt~L+xJQAQcLN z3FC?W{>$BZE?plgX8BjQ7dk&*m;QZo=jqeaACI~m_gO)z(ldAzE7#nlQmG)Qx%)lF z$9g;r+Q0iVj^&Jbc#KhF@3=B0BE_}H(G>)g=zELfpe`L;iys19Ly+n+wa8ug~E z{BL;1W#Z^flb%JSSdiQu-6Gmag{TW$WI%Ums!vXj_YS_T#|ppMrHYg37{@rDW%wW| z7V5zc1XX}zO=$Qw02bV~#&Xa0Lx z4$wt@llK#qzik<}O8)sxdh!m*m%6{wD;&xSqO=ZbDJfLy13p5}KU&t9f6(d-sGRK3&?;2cP zfOTBLnYr0$Z3Eq;>Bxs->hYla4Owy>##ghjzcs;w>2@S|H+|sQxbLv>44$^<(*BP! zU-3|9eEsEvCX;kOSDVm>`HyGlZc#lLiYk_A*pXrTgoXfl&q8iHge zrBOGEO~tU~sZS6mCp&Es)nVIOS2=$ViR zR!+8DRmX4ycprE7w@>%J@0O5n9{Uv?_ph+a=;wY=#bbNahZ7CAuxHx9Ju`r-eCx`6 zml}uOy3vr<^W_8LSVS|rI00OYrNPL{rZ-cr3K^Wm70ED*$ev^$4#bP$H6nz z-RI6)m5Kp5@${-J6<17u_P61P8Aa&?p5N{v`uW_l1l!DxZIv6(U}!k`rg#3{d1MV6 z=WXwFv7zAT1o4Lq#>Wvtr(Fq+$m(2e@M5UwjbC@Mjo@a|zfdbDN4@d%)roqd*HWH7 zmA!yn_^5CCC;k7qWrhppu!c?i-^&kv@)mLM1h6WPmbz(SV{o&fLBv3|N0P`mVfAci z-Y$lhRfo+`HchJ=xs)_Wy`ei7ah7pLx~*hNdfvyuSTHIAm+}4{_7Tp4vV{d=RkW0Y}N!}G!KqpN-@C6NEyz*yZ9S0|MYbdCLR@{U^ zTe=dM@oKn=J6&cF%d=T?bC6{9r|OF~b(!gq!BiT`{fE9vQH=GzX{$GE4JIR4Gsp_{ z{P6JU(^hZ7o43PDB*mM&!)-yeWe8|pvY&t1+MD9m?bSuAcQqLyx0FFAd{-@h*nQ>d z<<@BI!=IevbRATK8N!#ydLn?#3Fowd^(ddmAh8il?dT+0z;c-ZyGgIVVyR}l0u0aJ zZ(BF<%AeOC(2grIKxCW>wy+v?zx-+$^Cli8b<-QD4co2dpQ2n%bRuP<8?q4%Lcq2F z(~HL^-yI&G7A+I2((yVmWH2;k&M;(Rh&4zf#nbWewu(8*Aa9e%QT>3mjgiNW(r>Ha z&N-G;;*H-5tA?j@`KB&|!jM#J8=)=MDk+~5g(}OMA9V4lA7UC1X|>d_^1#D=`A@K} zJ^KT{Lt(ARQ9Yp8+9jM|_wePjea^rRPrJJzcO%;c4mH#q+Aiz~8mu#N=y`MehwQ|{ zvVZXM#j|d`fl+f%cPc?`|KOHM#fn&mHQ45LX~K3@HBX;bYprBQk&(CP!;t5tjw-%Fl7->p)3fio$KBn-9jH^=1wzAIp6r@(p|EnD+i%6)(Ye(RCqihKDKsk}1Xi z5VXTKo-Q(?3Yyq|@ zoy0*N_(ZaUl`u+8EqCmqhx6l?HwB#Ba7dqQKkv=~kpnpKCcVpkK0**Z+wkFfl@Y)> z4g+BYRT__Ff(8V>aSxfBN>G!>Gqq|{6}u2UzE#{4O5`g?qD(Td23@bJK;_hIL?{;n zv`D0*jO5IrxfMT`mvFKTayq9qNM1|%n&o?*?*gxSxW|HUBi!?VdH2(B{e?}!t-m;t zge&?)FH@Ab2?Fswqt*&m3nN0q=0=~QrM>#-8!EZ4RQ$s0!2}1@awEaY5(+#(fO$@q zJU;#japwHyq5)+>&V zzzc@b2&&)Q+jP6+kE~$@RXak{3Q9DTBg3yCm-#G?wPkjnIaZ(__p=v5zPPo z&j___UGy(|w^vxfIA^}s*60$0 zK6>%BmXBziNi7;2F{;M}yt=9x*ybA-CUB97%NTPQSCanii{|%s!f69|9fu5sbDJPX zfauP1wVjPFFOm7dy7VmaKE5S0kf?&}6v4ASeRC`rT3w)P$!sB0Tdqs2UbPkH5LDv( z`^;Q-)IB)cd3lWZ&}YZYu2bZJ@VV()-**cXz|9Dp^OMd5H!I>YK^1*V7cZ*GX`)CV zxJ>KkJi*Gg@P#aLNirSQR>*=2O^ZtZ;uI))pB7TnGYmh1w@ZI$@Vf7-J`Zy=3=zW; zZ|$&TgSXnCBJ0Um=T#LHttd087-zfnYAmdcAivBkIeP1gQRgXTnkr!Gl!*~q=JU@# z`_I4Lyu0~q38&ulT7UlR&p1&ISxQ!x9+*i5ZhYUny6wA14?mygKmB}&XP5<_zejS| zM=PISJ;ELP?&m}Ga;AXndyo*P*3r8gXmA|M`&xYgO>D;UZp*aitLP?OR;hchyI7P= zJ~*HYECJ=U60Gzi?3w-Qvp)}1-Wp&A8{_odV1j5ThBx(Yrz7M`=ic9|53O&z2V7e~ z1p6go03Wt~c{ezJ*FwAr`@B9@fZETRO*+V+*w4Dep5}iy1 z$U_My55bjmQ^2LTU|VUsR+UI)S5Knb?s=@PuI{d`Zc|;fs+(DBy%YlFdWjhG`@J9e zE8cHM{C1o;)4dl7XVqJ;w7krXbK>mSv8UJ(v113O6jP>&l9tYarEi?QBN0)2FHgRI z7I!kb4@DXg*-x%^=RWF1R+d~Fnuz26@y8bjE_KQwk{qkMauOk28`)i)=*$n_FbfG1 zQ6}{6w%_-sfG?S@4irV7P}?j9G#ebm=Da8~3RwOC`O?ObR&T6iUZuc^aJveiJ9luQ z*+j{TCt64W#mRd%GI#FSDp|PLx2?DGBe$z!G9opq1G$7tIIF_AjtbR5v~f+MT7M`= zS%5^=t70J)s(oCW7B{OBL*UmW#m#E85D4{9;${s}OhIiRt;Go>lrs`pl`dnqG6mKG z>da5voW4~ZMt(v``yy7g&P*p%6c%iB#@GN8!YTU%o(hF;&)B(G$p+;?@?XU2Sm8z- zo^GLIfv+&#mj~#)Y*Wj@j8gNdz#3Z7P6k~~MXR7Q*BV~54-Mi{RsOv+5xo0e;Gj3V zf!>E{tD^Gt$hTjeZg_E`2*rv#Jr+b_s~!o^44=SSjoiNG5c(t% zHM}@ITo@ZMKEz9t$hjdiZ@3^0FIkHlya`{)7^sqQnq=Q=ibox$u>*&qcRRUKp!#3+ z#jLk^Yj|RGEH5_HctLXFMCZ=Q25|mIUFg)8LF8!)8g}iVyEujPoQ0p6tv{>~ak?(` zzm&Tp;RHSw8=hkY*=~cnBR6iHO;JT8a~GmS`X!z*GwZo& zR1PnObtNTic72S~=@+bq%`*ETm|-#?OD05{u}>bDWQ6iV69{_0!&;h49|11%UW=0R z-Y=tTt^;yEFjI+26*+k?f9>Tx^2=l!lOG-J=1s1%Kj;0l&$`?6QR|f+^Qg`K!BMTw zoNEjLkmiA@(N3)JP=DfYuBG*g!t{%{w*j;FoWAmlxLjE98|eGk{Kd^Ptyf%=?H%37 zG;8136j4(5YQKdP-i|C!FL(A_Le59|i8Uhg_iDG~=aeTlQ>Xm0*)`=C0>KAxKahoW zxo4m!Y*w>iuo|{tVZ67$y^vNHRv|F z1}}kfKQRD3I`h(;__5W*lWoTu zi7A<*My@?QcqHxU86o-2(>C(co$Qfns2zmYz=L_&NwSmcKbXa>vB?B=L^+rWSGZy?Pzq z);JVSFn;zE@{#lE?znn%g({>r3~7h4L5flxe~GoM?&43AB>7RM*C(t|s? z=s)E@&rh9s&-$Hyg=R}kfntoY8wz3qmwg?5x6?C|az{2&WBzz!e34W}9;N zbYRd8zty_DTkOdpdF#G>wc1glop0y8lgIiL1M=|(q^+H@OtnB*AR0`zU`YQi?sYdb~o72fK zM@q~Z-rduO%LKfgZtLDjThn(Y^Yu2GY)dw|{jHvxQ^lFdp;#Ykbs=4i%?Uzx9M-1^ zr80#sK7y@9tQreB)DmiM)d*Tg%w%q?Lf`l+zX^}Rn&vJ{9bsHw__W9SmjPanQ!>0K zmCRwkRE`X9Q-@6JQ}*Y2aY2>D`is`gOkhR(M&a}PXqL^I(X5pdI_F3RaNNs zLWwc252swUaS$CnJ_c5P;Y-E@Nhy)4-nEgjqwVq0@d=XJ^lzOm=`yF}$rh#R66x~Z zh!a7)4*7SLyZaK3UisR6h@e=!GoCiNivyrgI0PMvPf*NfPsG4NsMVYN}uo~ zD}5JOWv_CgCG#MYJ|VR94^y8e=@Wv9lLf2k$DmA2ve?L9H!CzG@D}VdUNaWkeHQDL zrOtQ1V4sGa%6-~9bSz@}{<;?JW4I~GS>%jSH&#>w;jNMUe{1GHeGAtG$Z4Fw#L6@` z4Mmqyu?IMUaFyZ&0#6Wx0y8=qnAE}&QBp)+^Qm#%m5d+{oX9}t13$`EU9vEltD~_J zUA*fUKWGQ&R)66{#_Y~qjPD-Wp#TR=B<2L$c8Eq8#U2$_FibXNGr@Ntz6$bV*kKQ0 z3Nu9v&5jXV3VIqq)7vKMH`|3TUiielM>}pgq7<8y3z{;1n_~z#cA!%@8|z?5q9SBd zPlO35unU59Dx561g#~KfQQ|0OP%qrD)RArsNpQ`W%X$Q$lttq=bjS^DaQx-|hw*8f z-haAiLin1IW?8Z}14iKn6aPzEYk6R=czENJ$b>izFS$7_m2q;e%YwG3YMJQ51HncD zAZ9NKrJ>%a2s(^0q46+&Gm5d@CrS_#QB}zQ8j@5QVgCBm`_NRhD>u<=%&;>Rem@|| z1hFBJXehce;X`gK+S`WEAIFZ1(N#3r&yo{2H{_6t$%-lS`A8`&;QWmg98ONwqvFtx zI=CA`_V_J};qEqJI36X#QNkwaq%Fm6eE30>w%kuj^ttp|0cp90Mi8Q6Iqy-|r$E20 zmquK>4HYGx2PO5V5Bd_4A>X!F-b4i0!VPJe3Mlq41#WEq?)LAFfv^u1j?#2tVg?IS zcGc6}65wqO9s}oe&@r63g?J2%qjJ=jHy6|-F(%++;F}IOhA%f&Z;lnO+dEP?I;5;{ zIsW;CxNJYvwJxb63)S4x6Rm-NE5XJRdRBck&Ij9XKa7LT$^NyFpbl_~t`9aha;xap zjUjDD@XEqbo1$sxgY9S3`4s<oP;EeaQAow&H8LSwr?$8kc?(gzN$q)fEsF)u{46$u(K@DjaI z&6R`;i?In;@VLw-$So z`D~^|^>&-ep`CvIXg;A4@~2Yg%-=f5W~=yXJMKuJ0b%izz$A%o5;GzT&G9=m%s5bM zRw+&SQr9Y|4qdYZGt(oPaKQX>S1E2bo|jaHJu(1<>ysFS7;IM6kj3ceccR^zG%=8h zx0-%CMk?0&GzP0iF}h49mA_1k!C1Vj1Gvv(w}S3SjGZ<`^jRg*kk=gh4e9GbHEVP; z`kM5W)6j8IK-w?4Tj9IF)sGC#j0%k+ic%F^adBy3vQ%)JVJAsgOz8E{b^@jB2T5eZ z0cmJ__|Em@%{F0$Y_Q2UY{)mp&v!)*0>1}45>abe;-TwZFV!{?U!y=~ZVfkO4gF7jisYwC{O zm+{zpf>)TCZnl~QeY4`=U0r7GX^7liCW|5koMy|LwL`lYA`4GmA7!D*ky511cM45A zc5l)@vo8_Z8Vl?75|{qwr*255cI~g7gktcr#BuHjr<0kH2Dsy#kl4pWue=_};$CJC z9Hg{f*w|jL2O@9BM3qVW<4cn`Nvva*1sDp33JeB*9JuRGYIxNrl=k!CKmg-<2^qIr zS_j}**A3Fw8pCF6Q+M@XA+sab=K%VRn9=+=Eub4!8!-Sm2&urxLcG%Fxompe7s)Z+ z+cLxWSyjm_FNwW7%AGFXCxWi?Y{SL#B*s>2s-d00*y+Cc_PavW3!o3_TLarTs<96h z)$nn(e#hUXxppBWS|7JDTTL2LT|2BfB<;U5ZgFI)mPrP;bnZtyWNt~AEeErzp0aEh zCv0MYL`nPCfUr5v5?@A$Bb-<|QG}ms@|sTJ6#7+Vmw8Eqqb8<0v)o!ytii0l%fPAK zR(i-Y>_nNdydETFZ$wYhN&PR~qLdw$A^&xOPE~=lFBM^bK&?OMf}}A1O`BaB;~y-^ zVD9SXfbo49ZPpClZnLIVo(`p8gaejL0!V~3-1(^om;y5Qi4qXjp+X==Yq{AJ*8#;w z{wg3Z$)E^V6r*~8DImS!)S;pjd)5)wNS53Am4y-AB9mW!U#k7~<;q(aDS3xe%=s>} z24|Wm<*`XOjC*KPcWU8vdgQZyvLI$$$XI3!E9onT%3^ge!@@bL6WMIEj7| z`Owy=Tc^vDN^vbGp;ddrmbhMw;nplRdL}+xZ9Gl`QLtEniCqw5T^b1qInKW*)CjU* zrVJ5C=!D#^z7rMtj?wqk+ht4sTHCW~cyt59ZDCsgNmBTx6nZY*i%!=}f4Gv1(=ZFtPe>lBXcI_RSetc;Q2(F4|G>JeOkhEv2O{L3+~gtkH*vNB7rth9`!%qO4jQX7LH{YO_nQP!&4Nmz(|8%m%S%l<{9zr z^y_!}@;B_pxooDJhIzyU2jH7*V*~KwZJoEGo9hxl;E7kt=DKY5nxFp2;#RNYA1SK#Ii(RXR(TwXLYRcTjr8}B z1i5gdfMaM9SJ6L^Yia9gPq1Frjzb*M7~SH;Vz75AKa$5BZbb4knNVl^G3ULk90(xo zcpNKWfurWUdr6ar`SCoWgU3OpWvnnyq|16okHojoJi}jfwfxu{(jc;cAV=N z^|B#78JL$f?D<&{!3ZO0Iwj(=s*-IMEs!LxrKPLouRXmS4WGQ!z;@_l}BgT$&v%@9mMm>_TM$r|M3M)0t zB;Op4Y9$qAD*``^zo`}pmx`--s6E#ufTTO2sD^XlnC8cam`Gy^-=nNe78$8kM}dG$ zR8vSxwLT{k=IMn@oj`AaWi}M0YK)e35JIY?P&K=$gr)Wx0U(?2%p?ixDk58QAulQ8 z>?-PuGHw|svGD?i12^i%u-48%%T4k}uYo##vNOgFHO`hFXJ!G0QtoG)tOGWyRBuAl zS4Lau_&_qkALn0Ka$EfhOM!`CA1Ff-s&zj-Utd?Qo z-&wew_g3IB=P2dz*iZGChHfg!40g2%7G+s4xuSnlS0a4Q*;eXUjqn9Sq3d5eIdu~i zS=lr*2JM%7VAg)>UHD8g(27I7-$!W|6)cPa5(+4w6v=0ul*G3OLnQ62DT+q*5{c}R z`uO;%2T&bC{A~oHy!k*UT7sQ?;44jt`!znYO~G^)!RUJe)PGtEE(;VI2<#7p0}Dy}>bpy4nDo)MntQ z*3%oglAu08OK;{?NTD3Plef73dwV9r&>O{k>1ogI)N;LN7qoUn6;KIJp zF+A0X<&^%qXnobg8GOGuP5R zgfv98h9qg(2YU%ekf-jzkY6em$8gX-Rf}WIz%JF(PPJxIZ4#T&YfPS}H=V_sa!+5i z-e@z=(;GHZPjBQ>mO7Y|N;Ec;YWfV!rZ4OFP>t-RHbV&Z%t%SC@K}uWiUuc~i|fwavV8BF$8B zPHi*iPNJD=&Z%wYrITo;n%8KW5$ESv%t_@^Cc^;_J?3rRDammwi<;GZHWLoaJ7Bp4DH78f6CZOttp7pR&QTL%@ zF=A|Hl*f5w)`xOng${*n=49>skna2Io!D(TV)TgJFT-P z38__z!L>OZq|uP~sYZIjXWtzS{RSc}Bg+uZ8X^Al82$BW*g9OAhLlW8hU(bTkV`G< z;76nDB<;Joj@sR=+Z@Y_-e{^I18M1e!6|EI6N(l{}}H~3I-3jT$P5~ zn_(y|2Mm&J#Ti&xL`q|=)4=tPUg{l<$0J384*kpo2Lpc0AY-Q)}>Vkz2b# z=BUp+Fw}GD@8nvK$;1TaJ=cGl9|05Nz-3+Un20AamxVo>!QA)unV0vN&=Z*3-ZvXnkGB-8!&rF*1%TYF$Fq;`xCoc-2N{PTj-{;G~1RGi} zr^<)%S1EujMz|p-)3J*Kk#Y*4rvIxckZb92+~qcJN03J~{`qw4zlHO(xzA-eJu1ES zI^|=S%@9K~EcC)wgg5F5Msn`cUd>zszu0RZ-H%O%Zj)<0ak7QbhuZsky6U(03Fz%e zAQmTvUf36&LI&ru&Jm13aUgP%BiqZa>>VngwpI(sj4HIKks&H}&Py{>d0bmy&kdO) z13a}>EmNUn?1S%J<=8=u3l8jk&soPSG7ePywh1BU_R!HP2QDN*cSr~6bB*H{7tXsR zd~r`q<8_Yb<*IC}GJA6t0rbo#R$b_22tg54t$TJ|rq+pXAv2YThh;U|z;+&yO}3uh zUP9;Krb0w%fe;fFTH3G^_C&f6$-bQ&F6gBKr(y>iQU^eei=Mk>RLc4t9N7@qa=F?N zW-H^im=q_g=~@bApPUqC{a1SW2I@gA>i>b3$-zcx8d5nB$NA%%P<-?r?=JD}@y3&VA^gkqUjW7*W(@%U_>g-B|L1qYx7`Tn7)h zF|tR7bBTLwZZzz`x6)Y4)Xfr{ZWBLmrglc)Ec|#qV|>9_e{j`4oowi+y^dE5uGbbt zA$viG6l&Czaq({zSMRw`;2OW9(X&z+aipQYMeGob?LABfnT+a<5>@f^PKDlxrJP9z zY@YgZLZ{6gq_jacXw96;#1izV+$5*%Jzpknob$vgpUQ|!zYV)NrVW_$R+aaMKEFFL$FzJt}&gc5bbX=^me@W$}XKUKNdGwr>6qme9>1hgvXsSO@oV&rJ5-nta1{Ov2-( zbMDwqWS|Ti(-q($Tt{{b_ZSWp&9X_UR;$KZWeY__3hNmZ6B<<2%?Qi^xn~(0L$<1J zxNESog*D|3<+s~YKB;AIU{0xD;}OBR;CoRjA3@_k)qoLworxd@tCp_Zki=R`+U~aK zXIZ6M;M%Wtc79wxP!HT-JEj+Ren*cpUn|YX!AB#v7os-;8oc{*oh<_$AJlsa%WtSJ zKW03sNE7E>a>h_J_`2q=3Uwx(S13}3_`R4qop zOU*9>$FyT18vz77)5)gDMrq+zs(X5KeJukBM&#FOyEDcfG0yp^={p%ysB{!C^l@GM zx6)dTITOiN&nzjUJCSiS$?Lir0Keb}+VyZ{(Q`S(vE$S5gX`Xrc3mLmQBd)fBv-rY zkGOC~*L_c<$9B#Z**J3Zb~!77e7^%Z6SEMRN$P@88>sPbii3IJKRze-ZV%Qx*1pLhfB=;38? zg2XUIro-P2O(Sk$RgU{Fg=8w zzs_^szO$G}zltTlXK#@r(PkT~zMKlaKi?6MQ=^c8-E?>o}fZ2qu}}+X_=r=w?A_sE+tf zuY;M;TkZ8k5$c$`c225+0h0$Q+Jmm#z!e-kJ60DmdtlQtMH`T9q~n3F!T_0Y*^8qNrUGi*R}p(8z3O#q8Z&XCMd(_lnG~bywcuAnh*o0&?Dj*?&6S4#%~ykZ05wF z`;g62KrAv$+|w***&7*YQ2n(mLKN@ZWJ-%;m0l)PH+hdk(V?2pt&l)Zyc1^8SCM9X zoLzWdwS#3*SYb1ACM){RZ>L%_si%sfpx}n|T$UhoIWHG|<+q|^ixEoKn`#HkqOihd zo}o9@4whv#BPYzF@BHqh60O?7vM4AyVHSPj0}p?vHdF0jSrn*$kEX=BXCMEHe3!J{ zQLa@x2^|3hQLpFhS>&6OYg|sGML>sijr^)ca&A>8e9+8g% zmE$$hCk}GtM`|vEKhm42au6*Fv3fZGT=1(7IItGd3 zVsa4eIU#2pM2kX|(*@oUvFJ;$2N9h0$d-3B3{{gy7oyNiQ_&M?(F$xXwW(SM(V~z{ zQ}&2h^o7?W`I*|3cQg!D>h4vI=2DwNue{c3H6_Qys&Q*(#fqvXh@x-W<5WY;$FhnrWX)3;Vti@ z9POv9z$A{+B;z^z?dF4BM$*FyZ9PaiDqGw=1G%aYW#`D ztflcs@r~NASU7d`rPpS{NOs@?4xGru>Lmhl1G_-#Ey862@?a)^X0(D9thKinBXJ*1 zBLuW#k!{~3?2IQ7DUmuS5`SO;MT3$u5J)^u!ARpu5k)Hp*vy%p#CM4Y5kL@$G$=|u z8QJu`*@CXI9d8>;@GBfT#eVr`nH6}X3pE?5(m*s0{MiGvB4VTDP}!1UQ!$76{Z8T` zo~^CA;^plAkc8#YH3w7tn8QflqYx9)6h82ok{yv3gC z8wE9@I~?|PH2`Hv<4RmQ9MHOcuw{RrC82f40+dLX9}B5ebWb2oN$|qR=v~m2h~Laa z-KY2m!&8M}93j@TZy3P&k+>6veV`_gV;- z2Pl>Z4&5fvZ3Ws|$GKS0RPlC4t`O7iAO1F+p^f)Z9bJ4EUro5kc;#f@g ztsvG>IvSit6f1bHAvHE zid0JZcZ>#Ncip7`OMAoyB7*^pL>;Kbp!t|W5oujrdiqg!-cBk0TvM}XjA1@IVR#Hn zzZmH{goBPk+_)Cp<-Y#MwSGr{OJ$5&nc`awm;&<7&caL?^434}NdpSVTZ_m~O%-bf zMkkOXAfwGD6M=-wFuKJ+?3Y^+VU*P`aJlc5_1MhrK$;SB+6w2xOqPM6JkloNL|-X0 z@YHX&Q$Eu~Jm8&c!hzAYl5fmJIPo~z&8%5*jnAS$Tq!XrPJmHtm9_5Ex_A0<&h=PN+;bMgeh*eTO7kC3ReQ77wT>6?$lq4XJ-piYxd^4hgz@p;ppI{zLwS;Z*!NEw8?*d10luz@Xac4Wv@mKQ934v zZ9Es;q*$2=ld-n4zlmltCYmuO$O5guqJSe0hAu)Pm#0y{B?;p_VPD+dWoDi{!Y!2}FcG=sCiiv8S?P+Uf4gk~s z(n}3Le1G!RWJ4pa;~WlNYiOYdF# z$+f}3PZTY@c-g)wR<8T6}`IJJz!PeKOA%y(f{0-;1&{-`D;LK;&C4n(PA{4o zHpU=Up=)?#s#vuKv<7Ee%mM8PAe*4fHuz4%R}Busl%|OsKN&>>{EAU0x5 zj*K=p{r=$Kbr4?Mp7*Y`ocY~Pt_`308U7B57JTxmFsp=E+_S-8Qkw@U2xkKX5#sC( z&maZOjpM^e0hLD@8%rP|64V-L|7T#V+_0zBt~FUfF=AM0dCp*q=Uiq^5mpK%7PTA5$G@qGb=9%>^RW$=D`rdj`^-5ItcgXo*j; zS&SD3l7$;IMaD}4{tBI=xF%&PBCW>~s_(u1_LpbgI|ch>X3&F!&G=1GgOq(D@+N;F zWwrS6obn|m#FsAZljEqZ;0u=t_5vGR6-(8Sv5oT0UxV-^P%YdDnmx86Q`Wn{ThNV5 z*f8>QPffP~?`EXiG9ADlQ#0(BFI!x-#HIs2)1!9AI9+@3!Y9G2>IA_NaIZ_L(rSos7WzXgA}5JWpi!1*dl96LXny}S)Zh*5X0guJGk+FVAnQIIaba_ z8N-FSAi6#-)`v86_r%dV9bBj;@qV_3`mm9;)S9B-*YXm90VL-;dkbblomI791kvkM5jDB-%u!)n65~f?H%(&l_qJMxb zevQc(If#BF0Kt5RjfW($?Pn;p07XhE(fz7)``!Fhu`@q$bNUu3SW|QBvbargV*GXq z$gG&=mYY^Pl|=W#VLL(MIIn8i%zDTxGbuO=oyc>Dae`<_Ch8M2k1pYTb>9V}TWNY6 zyQ#hqThsWCkt{Rtd@nC|k2LdchM4S9-z^-Bq-WlP#5;O6`?an9Hu-~88cY~3gOmY= ziyyLpU4!O`0Z0{Nog=E_s>61=lkd3=jT1BDG4n}x-xx!@4ZinoFgQ}2nSf%8m6hSw zxhtaujJzLC6*0}myBS%kz|sxs$`r^dtMRE}BAZX0ZKALJRmv>ZIAM|5Z)~C+nanmf zVL_yEaB%e1bK*@Y+w)i?gtvLE@%$&^VR3pRewEI~<4|5~79giAl*S9Ouav9;C^q#T zFMgVr6e42~=?`xekaAeEWW?48@G>vbHi#8q`<)O8i@qP`1FW;i6<_27^+)vcrh$7d?n_1lCkeoK2Nuq~=Zhe5a!Z?u7+V6)j23AXyWT2SO==1y#vB zfV2Qg=BDrAr{5iuDZe$>)9z}(prTpa!VV$9?dI|uER^f4WOvh?Yh#HUnk<RgI)u$d)^n9dj>q3=)F4O z7wz5QZ$s^{*q0l)+ULC<==(T)39IRM1RH?3hSYn{kw(dT)$c_IG%wfECW@!;FL(A_ zYJp_vK!wAdxKm-}^+J?97$)^zSj!~J3yUxsxxRMTyYNvCD&dtr8W2v0 z4?4PfJ9AyQN!WW9J6{!6?nbuf{+9M!`~+55BRXg*i6!1OtYb`8SVZ!u&ZrVIyWqAn!Yc5V)N~VWl{OCB-s|j5;z>Dv?L=9=?vrA%JQ3CyKb9 z4Hr|1D=dz@L^=x$zd1PG@@a?*h=9{91*~p^CKr=9pe>IGiUWE#Is+P2K|?SwPWds> z5Do~~(c*}i=o{(^FiaZGf%upSV2*$lh&&?k$4Vig4R_3!9$(R^*Ukprd2kM2$y>8f z0IJCEkao9nS8OrQa+WawX*Hlzdzt*8`{A7Fg=j+>ugnu9ebJk5(>fGp#P{*b>Q z4_1Hx6SwG$29o~O5u{YSG5wh^o^lkFCi5dANcgTG;x#2AG+~7a!3D($^kU#jM}N@Y z(?0Ma2HpU_d;5Amfb-cFT>3Z|xRMK6dwM_a>$rSnAh^=g*_P|;4Hav#ebn2R>+cVcZcZ$*Jk?TJl*l7~t*G>me#sIEu(Am+2 z%*+^edQMBD4av`fp7x+C*VlRlP+Bf^bavo=UTLqrW1w5wf`1XT1h6O==B~nt2zsyf z_4f4V0`Vu>I{IOLJGydhXVE%Z400b}bO`z}9>MWV>80Qv>EopwkTe$Ew1i&5o?)z% z?u5TujoaSRc{=Ft&9!#OkK9KX1A)-TrwOwklOVa|9>a56OIOQf1PV6SAPIN^gKS1L zp+o;w4B{OFFl52yo}M-#bVGlx?}H9Z3El}hdxZ4u0bGRBL0ii}i)k1jKq|aO$1Yv% z$3TKwW@PQV+B?wE(|rp3{Saj7YiMo3r^3m$pr_j~6cp;|`&fVq4Gi&52OnNRx>=-Z z20;y_;8dX7kP0{#VYLRd2OB@&^)cwqUGD5aoL6g3u;~#fA9nQTPJve)!0fVs6gm2^ z1#Ln?(5~=Ed>-@DlUUFfoD4eJgO;`r00Su7%HVx}2jv8h`meTL0WpN!XEo~U+$*vK zU?%@2)C?1SY;qXWCc4^xXZ!~4p2D+{+ru~WXHi+|%V5wxe7zux4$#SokplGlhd0cV zAC>GkXR%@M9_zPL^>1Jq-!lxdRDrw0WvGE=l7WEc9)~1xM?vsu0ecC82Ar@Q<~h=| z!P40M&#+|Uh8fra+9>pZgNztoDK@GT%X$Dywkzef%Y?R1?UTajVPTuXz#2E?CQt{#;FW}slm1|-%R+#ZL_mD>(MLhIy+FiyyeL9x zp&@YFF@b=tU%s4cbL|jQER16W5spdB;+cS$%4`z*P3E08>P}J0(wifs14zW<0ExJ( zFCSNh?f{Bl2`fiL3-sTapf^7yN`gf^JcgTLxGeq^@pRvh=BMSVWP_JVg6W|=4m%)W z=0;T9huFLr5>3=L&EGS@Wn3pH7tOYm=~9mT292u(>?ReCXUN!2!hLj*%$hBiaDU_ZyKo&g;6 zmC=E2S3tZ|k)u)w!=WawAc=T=<_2!ZanMU6Q#04&$V#tG3?deZ$HvZx7^0uo@4z7| z>CF$;0-KP5!ZdDh3|kH904*NFs1f~V1&j)g*Vw@gv6-HlEGq5wvok?Eu2c{3!npcE zryGSS@yJK)5<1*xJPVCZLPPK>2{#2SQrO3#DlDO({`S!wGP@Rvs{9R2sn!=$fR%V7 zKK{47zuWuxOwfgp0M}4p?)Mf05d93I=On>48U4(>kA5cCG8sN$MAC64)DOo-nZUUU zVWZ|!Cl62CsOYEq50?7j7qH(6PFjk?=cvI+M>iSdh3=S-VbXEhnnFZ-z=wb+d>WyO zOjV*7YIAAA@=Q%kB?fbCLNq#6cpNQ#`7x>!_RA+4hNzgsa3W1qCtZ?N+NjT|)c#TF zj>D(~pP(_K;H6Zp&R~>Jv(E~nSWWQ%snrId<&`rI;a5hWhwRR`ekqD8JK@4ijPAHi z#e8Y1%D5Vu8?kT#tGkGiGS%zjkbZl3LKCR@hT#Qy{sMOVFtB4js{$T0zwopC#F^W} zw`Z{F`~ob#{VfyrU>qUJq5p;Z&2A38qL}lqbo=HEZu2oW8cH-hwAnby<1=H^1#7?U zu;nOWf}AA9hz|?SheUPZWXixfOe+S?wf6MBm5z7x8ki{8T@nP7!5f(0@;Hmiv zO-t)P8lJ%wlT%m_94W#S1W15-8-IQ{`6HYn_^dc}`>Zzw{E<3b`0`wXe`rZ3V2lBn zoVkuUp|~y>dAlyj)>ck3+_%XtJmy_y|E#O!Bh1&NqgdAYRMIlo`hMkW=DpOp*7Se> zl|(3PJjDNB82r4oZSeEA-he_iJ-y2(?Sr5H;Jm09-pcO_-fyX?&)*DxU-If-^6Fn= z{oIAY&o8wA)+PImDd+Gk_rfQqJ>0fe1-Fv?Z+i*<=f9?>v*yu)_h@_3D?I&$U-$#B zu)XXRp8la%*cLkQAG%~v`oZAmErPzZPQ(zb5Fsw20kQlUG^$_QDXX6n>(J8Q+R*`! zO=kMr#2^RdiGDUVJaKad%Ln)b#~x;;r-sKE0u`^RLXxA?EnisBijkELLRMuo(`p)6 z#Sw9F2>O^VDkv1hvT6~KC8*FIxeBA9B%DJsEE&(NIr7D+;L9(AX88#5REP?WKzsRR zo1)RYg6d$HjD8Iooo+(-mlql$e27AM7iM(q#@laWl^`~Sv%T?~^bS3I#c*gRRN0Vk z=BJecQT%*xmiY!qNIwwFA{PM>z6Su;zEH905)}8%*BK)i!8}d_3HXsTWpBQYZp&mJ zz4h=(>y5`)8(1TizN&_ShiR;RM&l3zBR??=;(%oqe@50XWigjM4B?BMG)a}jn>hCk zozj5$N@p%yeB+`QdT1#o|JQ#89jk6h5l?MOIA@l@qQayG z;oP~7%iY-YhJ{FQ)T61iPbOp>cRP0t7W@2}!Oz>a|!G;p06Iz!Zv34NsJ?Vx$8JcwqCom{`{vdAN!0 z2}}*J%Lvx6Abr|(RfaSs-G}dHDf5)si8}voOA$tz0zIL)y z#c5=7{JO(RwX8gtjx~?mI4cgX75kxxu%5!s6aRTMF#}h#Wj4}SltNyaagc6G6Wo%*hc~$s1Lq<+zfC2+La|RmM>;XC-iu;M|P$Fyhi; zV9BWcBRi6E$kh=#ZSa&&9!Fpb!4Gj9Vq)6-eDz(a{)J<_V2@M#n3In|?d6(yyE7-AOGH?L z!cD|vAlzQH?HT~T8oc&N1eEs@Cxb&-~z%S5JNUIe!nIxzTb49^olDtp4(;cixvnAfcOKtPYNX)7KD+!GJq5M@iN= z0t5;;X^lfNSR_)6Hs6a-^b@gu zc>2T0Q$xu(iv@=KqeTq8pj*fmJc9Kk?Wi(}gP{G&{y!9QDSO6?jHB*XSj(E&KbtHAZuE4wHW{9I{}>n7GU0dTW*d ze!IhaYJdKAco$#nIfnPTsd~c0yK$Q01AJ2xVr%U1p61M@5ARW#r2NJyVjtJx?$k|> z*XizDFBajJPkeV?>C8_`$1aNZkOQuxe0FA?jCE3owS~8Zu+$W#i zlH6+IRKc0TNAUr+QF@1u8cP^KKS3pQ>MfxDKBiA_0<`bf`2J;ikFLc$gT@)zzJ-fy zHVy6YQ@}7IpL;m6PvR}fn-F>PLR=F!z$28T*+BJ2VX0=Fke{Ni_=rCZeZ-%N7nbl5 z<&!iggo>E;q>bF%{6Ud?5>mazt!uulq?Hh?PV{*(0dkIa*+! z3`=pR=Wh-0-!ua((l)4@qu7S%%$Yr$mBAA+I&4i zu&cejh}o7syflIdib^yaR%Nv!N-n7tC7G$4Ml7k?sE}f$GLMB+aU#h_Q9>CoSUm&1 zEwm^?shfcEjbLe8Re`a)>DBsg+L9SL##499-vV)4?3fnnl5_a%LVVLjAjv<^RN4n2 zkxfWjs!U4FD3MLwOd>0!7?I86;}h9@79(=#J_v43OfY1hj2|RWYRW%#sF2}L>qdEG ztD)jVjAk-+$9*QPEI9B3BAV5{!GWL~3+YWuozY@O2ee7}jc3l7HYJUl>6SbY9%Z;j z^5s{K(ykS4Ht`ZdBUuEI^&@E@-BVRC^4ECY!d*iXewIxZfUd7{ z()dN6geA|kM2&@+%3^sS&dR@z#VFmBbNkfIwY;ul^~GAe#MWQP2aiaNSoJk2|MH`` zFwVx=Onnw2=qrt2#btD6e@X&F{Da-2l|?eTPAQE-wvw1&83CDN;vCE9p6E>ygg3_% z0VTJi`_vveq(>QhQE@Z~Dtq^7`qotOGm`>s@B>LDXYLVdcC(ijO|bOh1(=&qJk9A- z?8glwc5|X1WcmpaP zMi`9q>(z~mofQad7`~M%5q2jrDG#m_Gt)QT(wIbHx~KF>O|IEVWX2x3?U`?c#89DX z&!D3!=7vHPs;g?dQ{7rY5Fk_ z{-+6(C(MdBX+x;s-C`nbbI57xIYf}g2%vheOb?x+8jwT%OMvwH7tVIDw#anoet%5f zRXm7OQMFvU7Jny*S;e-&!%6*>8lno{i|p}x5rDGGD;!THr+h8{D93_A*dzPO{y$19 zeS=P9#DF6|DR{UO#xYA)D&wjavumPK=Br ze=Eobm#m||=geDgz43!Hp!^R`lI$V!&u5%zEU-47$M!dnHs@MB8xbFfqPEumATF>G zgBSrF%9V$_kz6l?JOVlnI|2^Y>sfU_Bx4nbRdwFY%1>6)Yl_?R3R=oIsLBx%MW4uD zgvLxD_)XN@^;zFnw@XgT)0Eu3OqhTW4Npo^#uczX!aUCiQ3S&&OigD6WX0^=F7m4c zqJh-aeeb;T z3<0!#5AB!XD4A*B#W^N5>YODDBcoxILqp8#HFUP=?I0(~nQ_Q&tblw@`6&!3$#C6- zYEl$Z)ZOc#MAZp7r)~Hg zAH)Sp>&b4lubxOxgzGo&zHRU`_S z`^QZNBtwJcAwuiT?6#D@Y4YFedhAVe>w=`ML$Z#a;d+S^9;?!qi<`n_;)}4S7RPWs zFoM*1f8W^CS|@Ok6^}Soe6ht+PjZhU+ssGy06gih=0PT!pOQG+rgP1)fF15-zWK%* zue~8rOx0vS7~2Rq2p4KP`-S<$zh6OK%fASW;LN*$sTmGDQYSQj<_iZDu|+-xXPdq{ zb#6wk%W{@S>eKp|NxrF$1pA+hv7m~cfteUYPQc5^TaCmOVi-fp2+_UPx z>+TscNn_K=uklC-y7M*)DJLK(IEhBBtIWn7qkVgs60~k*O^+2sx}9X6iK;Uj`H)BWCVulfmhu zxX5QU;p{+7doJ64F0&Hu^VGykp>=;j=p+dv1ULC>Q9^2%DYrc+N90ZJKQ;cfrBbyM z0)+YRl$?X%*k|Ry6RZr$@Kvjtkq>RE$ij&%6S#S+GcsW}j8|oZmHm0&b9E(7*FH`+ zIf9|32Zou%{O1opqfIa6*wO&^~u8Vzspc zV^)oo04PO0b9SAfpnAp_qct>i&X37UqApYk*KaaF+9_FWfX+;jqz)WRb&c*PF{_KH z0Nm^*s(_)G%GI`Rv(AH^WqM@V=1~-2Gx_Cn$#-@leZ~T3|IBqk0$2JJWtf)V_!Dx+ znY&{Q{E`jsMEdJ_F~2QS%V|DHn;{Fn1x?%cOc7Hx*UEPA#-A&D5RIH$E+1#XAT&Il zvHY!YT9Wde2&=iC;!8J8TWzW-&opO{FfUUve1T541mBfbWTSMfm3P%m-x5Uqcdb#| z6pFmbzZ9X3f>b70HOw~F=@hjyu?&TRxyf2AtjD;Xux-s60z4&^f!(;*c5esjTCam_ ziA~o)Ol`)8YA`}ZiaD2ts%knFCj83#q$VjL^(N&pa^N8U1%#^!X>^<7+r@~iL{?JSc8!oLlQ1#8^WHc z`!4p0BsVlu85{t!m2G5JS~Z*a+eJ~?>dX|DR{wf&^iEy1k(D@qbC`If_Dl!WA(Ovm z%+SiV-*e+eoKPBUXDV3bHzAag#x91ZA9~k+ zg9M&wNMj+$Nv7zj5n`*SA}tyEW~ACzEniU?k}raP&FDrlCZ9vC0mC{zG=~xEd2{oc zY8fUH4;3?^mCp*-CcX~iM4;GJR*S-gdu1s$6|A;Kce&*#qETW?gqnSX2{-vP&B~J- zpEHp0-&c1E9odZ_FyD&Vyixq);$V&g7{@E536^Zkr&&o-*gKJ!#1Sr}WI?#r7Z)y^ zKmQeyw&BMc?O);V#n&$WfPY)e-`rca!fWSW%gKY+&cALSw7lMGzG!JBh_>&yye2i; zf4~RrE$ya8d+vh$1V0S$_S|dw;7wbjT|a4m^Spu4o@0&n+?xguNkwEZz1ZH~-exh; zN3WSjpO}EHCTsx6ISEK5qN@KHm5&ZCnxFj9R1J0ktl-MwuE9V^2Y72=O z-E3mwbdOWHnjttu%Z{y?aOy?Js*dKK$4VLw)nbWC=1_7PY9=dbnX6c*ZW#Ys7PO6(hSls}Djng7t6#6e6g9eP?Q}&|%$jH6s6(1MtESSLGx~Kb z|NmAxNrU4lk}r=@ieE4znirQ9CnqT}XnU9r$f|^-0uXVUnULFquoCD}2|g4?jL` z8A3*_GjnT;VMqFBmssmq3k9Z`FI;0n#_xC%>6Swh^Fq!hYifcHnc0wJhI!gJjY(i? z9Wtnwo~^doB`b>&%$x?k5Hb#olPh|+e$SI{=2wsNO@R;^wn(m0Vq zl8AwbHW%w!C>p|q2v?bRC7N+1Wz2v^7V4IwV}TwmVa zTUR=VBam{h#yJF@NUgI?XD4q>CJ)8ZN=@PZr2=leG<8GfCHast{mw8^=t+)8D8dP0 zT93lrS9Pm0`~^$(#FAJlx83LrrXoS_?bh`^qF?wy3{d%1r|w; zpGLaH(3bT*!Wb0v~zFO3Cd32Q$dmc4o_R@tA?-se|EW}q=U}9)=`eA zO@hfncXNG+muVQeH%)MfvN5Jmp=u(<-87_Uc=E0DMit)yjSa-_sZXS8ElI57GmTJl zwRXmR6&gAfW7rKc)>29zz_eR7UhdrzV?5TG!*nXAWB_<;b zvy-RyDN#*Z2Zb~6&HkhYN=7^V+al9ZN>o#nK-tX9=5cbP?nM5xu>x*qdKYQlrUoYv znFC`sijfUZ;B04gua4#cNi(XucEbi;J9V-slI=8|Bx#u?J*wd3DH?Ugua>|a3tFvC zkX&_iBCTevPM}+UYS&s!i(run+XAiCF;z=(QPR2M*YF!lUjoa-y*@Ct&`s`Zxk-R; z!xGg(Z=t54s`70u?A+!|DpLB^W|`o(S!trfB+8<8sC)W9j493dT}XdSr~1Q}8&C&#fksc<|1wRjgxERc?D ztdggZN+em^60t(dGQ@h>2QnF52T%vC&R&=k&sDn+I}=?~F^OdCvs&n2SHF~(7|C>8 z-0P5#FZ*%qB9kd~SOtyKH*1z`!??qM2{fyFEx-l~An6F%cOf?Q4|thh)*=x;#Hvvy zI(V19zf(0zCR5gIYtplyl(-Oj3P0+gDra?7P}6|?XG1OP z>zb&^0%UxfKXuGX3kU!$QogTE%#@GPLDhwRhCaJ>e5Gh2syvKB_T;QS>=9W9k>FXo zNVK{KswVb;P)*&QF)FQ^zSRPGOzc5}Op%6bkr97*Juev?hFn~sS@rQ+uFV1vu0H4< z)H=8!(XpBR$qt=8iT>0H{h0lc7|`qvWk-mfNRR3Sf7~ur)0ir;rO!M>)r5J>4phbe zY;DL$SxCdnQ2<1^=p|LKdv%$u=Og0 zlcJhtG4-ojxPY)G!YiE)`qmrnj^i_F?3fOf`fW|5%)Y3N1j<0ntC8+OYFjnQW*vph zu%lzhR5bD^9r0)#kFJbO$`r9$AJ&-uhS7@Yc!lqs%vWELh<`wyX0Oodx(^cU6^5^m zAwD=&_7l~BPxflFfB9!7>5dE1T_YH3U6An$_6%u!5F zkZbBh=9jf_DUD3cTu-Noc~zY%@hNU>m+O7ml}N72$pstkOE(Ws+2%-T+#^cOu4$f) zjPB`cuNBPgvlDP+iYtt6BB6(cl*HD^CgSV!6D7o54@uB`epD_h1rSV6LR9VQM7S-4 zv}f2XKvg|4Vs@d!`u2VNHDaO=8^LXu1PHSwoejdi#tEw`Ak0k>*&ys| za1*!0PUlB)AKz3yFPB%!ZVQ6v<<_X-i95k$eyW5Iir1%y3lktFPB)LB#Rk-zz6CI) z;*IIghOw_bJTZz*yi#$bFbsIet3HAY-6kX?37^aUcqwR}MlO#R`uW8Rr%WTG`QfpK z!UUjUdr*NPJMk^pdMqai3r7UTY1|t-GBz_RIOuDWn##5ypBpli8h|aqXjgBbeX7Es({}q-!wK zqlglHw5xzvGl93P)_I-k1 z(Av}cabL&fD+9rmp3XL0a~oXB0kf7%xU;MLBxt31A0(-h6>^rN`23(=Facs>9C~Io5Csl^c z;hLsPwshT=T5V~>mfCCyS2xRdIa|uxQoAkLBRWl&ZRw_ccg2=&*;0os6>RD6*wRmJ z>BqKo+ma!)}vy+U$FdNSpK^#|5uj(h~+iUSRnfmj4&a z|CHqiEdMi>|BB^*&hr0e`CqcU$nw8pd5PtJ&GItK|Ayrimj5lwt1SOJme*MR_bjj5 z@+0#1(I2u*emG|jzmPx-y|BPkQ>(Repne=+}uUIC19{n4ZNsmYWj%D`$(SKn1k1ahOQJx?D3Con< zM}NvP<@M2jVVUyz=+9WDJU;q!mMMRa{s+sHw@33VQ@$SkPg^ehKT6OAR-gbqdcZOT z=F$IV`Twv3ODt0$9<8uU0eG~=vNHUkEpPmR{eFWAy>XXiD)7e7S*F5n{DNgF=*Azh zOonfe;TvT51{uCVhHsGJ8)Wzf8NNY=Z;;^|WcUUdzCng>kl`C-_y!riL56RT;TvT5 z1{uCVhHsGJ8)Wzf8NNY=Z;;^|WcUUdzCng>kl`C-_y!riL56RT;TvT51{uCVhHsGJ z8)Wzf4af%hy+M9&kl!2R_XhdBL4I#6TK@g=A?Z*4Z;<~R=796~|L}XIFXij;65*|~ zJ_nFZ%Eu<{!6xm4D^or;IUsCufN*8X$0p@rlk(xp9H2Mv+x9mpADjP}Wy-@Q@!h06 zY*IcqIlyjG9yiJV&40=7IiPO-YnC~HZvI=AX)iWuFE+{VP4at_{N5zLH_7i!@_Uo~ z-lVtAlHZ%;_a^zhNqO8Pe>Z6#HpyRCroGstd~VWSJf{8JB!3^% zUTl)To8<52vgPk49f(cxdsF$n&iDL&>kn*s>kloxwrD@LD8E~jk1g7dE!vMQj&EC( zhb_v-7Uf}!^18+GV~gX*7VX6r$B!-Ahb@jDTO2>OXwSB254PC;_Jkb%6*>5X7T{OZ=qKd(6LS0sIsQcJljBdw@h9Z?6LS0sIsSwk|22F3 zYxelp?D4PJ<6l$af6Wo{*Yt3n^8GgP+2#~roA_*#!rL6dwmAjZCVtzb_%`u-%KmK= zzo*1^n-=ORE!H+I)HduJ+q7WY)aY$W@HQ>>HZ9sV`@2nv z-sY5Hn-*@H8oo^l-=>GKO^dfpjo+rkZ&N_FIRb9e0&G(Qw&_7^b41*xMcAfBJf(bW z|3_;fp3*{W|0kAdA-1U@Pw8Q9|7X6Z#n`6CJmmB>l&@`S z)KiX#+y9;LDQ{1eU$h8MNx!GG2v13`r?d!9NuQ^*2v13mr?d!9wf`I;p3)*brA2tE z{iQ-a)&9{UJk|ctB0N?6X%U{%B0QzMKBYx?O8I=s5kUF>lotOf<>4tk#HW>~h53 zq5asU#onR5?s5d*p+~Vxe(g|ycR8Z(P=9yHza8rDE)CocJ&axQbBFr8%MpKv9>*^E zyF>lnrG?+2yzG+SI~;*_=z;A}-*>3*JJk0b(tC&czC(TAp}y}>-*>3*JJk0b>iZ7$ zeTVwKLw(<&yzY>{JJk0b>iZ7mcZd4ELw(;Ne|IR)JLK;U^?gVAOZncRzVA@qcc||> zl=ofg`wsPem-@a#`QPREu|xgerT*_wA9kt#JJkPO>i-V)W0(5BL;c^S{_jvwM%=x^A~*2@n~23PkrCj{!-s} zwSUz2UF{F`eOK|PzV9l&)c0M*kNUo=_)y<>IUep(-gY@2?oz&XX%BWOPrDo+cPT%+ zi|h~OWta9~m-4Z@%J-CqUD|_P@_&!|zej%WQQ!7R-#zNr9_hJ9ecB`a_NYI5v=@8S zmp$5tJ?h6E?ZF=PVUPO1NBQ5QzVA`q_o&}{l@ z?U8?b@?U8?bwW6yKJD{9^>Lr}c%S;W zPy4%1ecPwK-KT!-)4uLgpZ3ZBee!>w{NE@4_sRc#@_(QF-zWd~$^U)wf1mu{C;#`! z|9$d*pZwn^|M$uNee!>w{NE@4_sRc#@_(QF-zWd~$^U)wf1mu{C;#`!|9$d*pZwn^ z|M$uNee!>w{NE@4_sRc#@_(QF-zWd~$^U)wf1mu{C;#`!|9$d*pZwn^{}0Ij1M2U= zU90a0w9f}WXPNf+;1?{@{vP}h%e1!#)c*tO{{i*?fck$x{Xd|*9gzPAi<){|Ds%0r`JG{vVM42ju?&`F}wEACUhCi<){|Ds%0r`JG{vVM42ju?&`F}wEA8VRd#>Od zDt?rYL(bn0=>HumzLb~4KjZiG2M-m0%Fp4S^F1ewhuR;?(;??i2lN*YwSSbaL(ZQL z=r10!zlW5!L;6dHv^R&8|3k{(A^oL8+Mh$}!y)DIkp9vk?a?9i&_UVxN za!7eSq`!1Xdv!?tIi&m^(qB5H{W_#R9a5eT=`S79o*h!Z4k_P<^p_6lFCJ3g4k_=y zp}%xUfAKfezeCFZZ)krH=`a3<`gllv_zmsxA^pYQP(Kf;AHSh}F5jhqS01p%@?E-U zl?QCIe3wFBdB9f7cj=~89wDN#< zuY8w^T6w^kP5CZWweoweo=Wu{=wKtvvW+YZ1z`RN2Y{+N|;{ zmA3MLR;xTqwXHm$-73#gaVrmKxyrLt-O2;nuJSCEweo=0sys{esyv{5Dc`3&AAL&; zQoc`lKKhn6qS$i|eU8J_(Y)&W90#hSdDZth4pm3vm; z{g?8b+Mju~KXYn-=GFepsr{K(`!lEZXI|~koZ6pxwLf!ef9BQx%&GmESNk)k_Ge!0 z&z#zyd9^=tYJcX{{>-WUnOFNWr}k%F?a!RrpLw-Eb83I))&9(>{h3$$GpF`vUhU5u z?N52m;Y0gVo^$xn{*>n&KD0mOIfoDJPkGMaL;F*nQ+yUEtL0hMg65psbc>RhJhitL0hMg65psbc>RhJi3R%cb07gSbf zRhJi3R%cb07gSbfRhJi3R%cb07gSbfRhJhyR+eW~mlrrzmS$_a2zbps-7-z94ybOo-T46EHA28u*gxbyr@3FBFDJ$qK^2B z9MQ^)I=(M*{309s;n-mWG<>?E~*?ZsvIt=)GeyiEvk$y zs*EkFL@laBEvoHZq_0(8REb(tiCR?oSyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~ zQu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@ z`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r= zSyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~Qu$d@`B_r=SyK5~ zQu$d@`B_r=SyuU3R{2?0`B_%^SyuU3R{2?0`B_%^SyuU3R{2?0`B_%^SyuU3R{2?0 z`B_%^SyuU3R{2?0`B_%^SyuU3R{2>b-+!rWUskp+E8CZq?aRvcWo7%avVB?EzN~Ct zR<&Q_GM-Jva)?y*}kl7Us1NNDBD+*?JLUm6=nO1vVBF_zM^bjQMRur+gFtBE6Vm2 zW&4V=iptN5%Fl|*&x*>=iptN5%Fl|*&x*>=iptN5%Fl|*&x*>= ziptN5%Fl|*&x*>=iptN5%Fl|*&x*>=iptN5%Fl|*&x*>=iptN5%Fl|*&x*>=iptNb z@_kj8H&!`aF0ZOYt*Ruf>hi`ar_1G4m9bToja6OVSmkuNysA>Ss?xHm%NwhlE|*tT z4p)`$t2zZ)RhNHNC2CbAVO6IftLpNvs*J6wY^>@OWK~`MRh7C`<>{)r^Q-DUud1}H zDwkK)onKY=c~#|SRr$WE?)<8{&#Nj?t11br>dvpK`@E_$wyHc`Rrh&S-PKiJmuR5sRB zHr7-&)>JmuR5sRBHr7-&)>Jmul*?<%{L8bWM4> zraWC!o~|iR*OaGg%F{LF>6-F%O?kSeJY7?st|?E~l&5RT({-icy3%l6X}GR5Tvr;d zD-G9`hU-ehb*16D(r{gAxUMu@SN&R7{aRQ3T37vASN&R7{aRPbuPf!(Rln9%zt)u( z>&lCD)vtBcuXW|lx^ib-t?{}}@z<4K>&mZn<=49MYhC%ZuKZe8eyuCN)|FrD%CB|h z*Shj+UHP@H{90Fjtt-FQm0##Bomu8!*9nyaHaxUO3HP$gka zHTR)P!kVk2lCY+l`%ooeO*QwSO2R{xjfcw9hsx83%F~C+(}&8_HP!cr%F{K~_lL@h zhsukG%8Q4}i-*dKHJvU$R9>v zYE|x$50!hQR^=YMS-D3(RPM2(m3!nvyz&jLNabttyzQPdF2~gk;>QPdF2~gk;>N`%_`r}id4SlXjb`#3x$=hIhs|zq5oLA+TFokgHXlfk#DkVBB@##rWr}2zkkuYh zjRJuri57@tBLPt?$q^HD&qU8m4`CEz*aHTUiYDQhsTm862Ww`+Az2Xvm#XA&QzTF| z-xDA63;h#j?X%Z9_vRCzBv)03MLUFhcAk44`?1bGkGl^S3U}|S?|12A?%t(0y?d7n zg}ZmTQL%fMUgz#z`q#U6X-T_xxlyrumzK19mw2#ym#DUTmw2#ym#DUTmw2#ym#DUT zmw2#ySNeRHc(8kysJ45TBg5`pqT23VjtskZxlp)!mm|aOUHY@TYvRwEtYA(2S(6p4 zi9c(yf;I7HO;)fb{;bIg*2JGRS;3n4vnDH86MxoZ1#9BZnyg?={8^I~tcgEsvVt}7 zXH8bHCjP9+3f9D*HCe%$__HP}SQCHNWCd%S+3c=!B;Q@*;`r`5NAle@&UJRzIg;pbz#DqP;_0GuqG5;7bdI;Mc0K1YeLa=VZxeFbX}ORCKO#4 zCaeiX*M$jdLeX_$!kSQYU6`;Y6kQi4tO-Teg$Zjy(RE?MdgO-eeVu*(g44y_b#}e_ z*HXiEcKwS;h`o~CuE#!bIe&LOwwR0eyX$P<7h?N5oA-t6c%2ykg+#T^Y3Ub|%eqF% zb=mbgm*98TWwYx<-M^EGtP^y;6xk>CtVoeHVuy+p*&g|#%b6nO*Kfgwd>KlWQl(MZ1`T;9;Qj{O$q(I}4H z6{l=Ue>SB*o6?_6>CdM0XH)vKDgD`${%lHrHl;tC(w|M~&!+TeQ~I+h{n?cMY-$YH zl>TfA@i(PEo6?_6>CdM0XH)vKDgD`${%lHrHl;tC(w|M~&!+TeQ~I+h{n?cMY)XGN zr9Yd(hfU$brtoW%TY0;ilJX{{Tw5aNYfI#OZHb((Es^uJC33#DM9$Zi$obk5IbT~M z=W9#kd~J!GuPu@DwIy=CwnWa?mdN?q5;%zP3cp*Otin z+7dZmTO#LcOXPfQiJY%3k@K}Ba=x}i&exX6`PvdWUt1#QYfI#OZHb((Es^uJC0cH6 ziI!ViqUF|>Xt}i|T5fHLmRnn*<<^#HxwR!)Zf%K{Te~mm+?RCjOFH)@o%@o`eM#rO zq;p@=xi9J5mvrt+I`<`=`;yLmN$0+#b6?WAFX`NubnZ(!_a&YClFofe=f0$KU(&fR z>D-re?n^rNC7lQ2^8@kuf%yDDe10H4KMSjh%N`A%&87uHByJ*wzT% z<#X-!Jjb>MDO8f@*w!G0TJjv*8l+H7o?}~s6za)yY-^B0MS1=yIrdz;J9Gg6(5OJSllZO<}m!D&khZLId zbL~Do|CICP=h}UGj?EeNi%R$WQ_h!v|MQ;{n()LqDxSD-geRIGo~U_vqV?d3i${1O zs^W?Ih$osIo~V&{BG%%GN{J_Wv3R0d;)w{1Ck}OZ;<^@|sH}Ke_nzU210bHbwuL9c zC7w28J`RhZaeWI<1W`QEgz?0|5>M2BJaJJ8Pc&>i5pVItbuK({VF^z(cRUe=@x-wN zPh4EW6F~q^9B%Q%5e83OV8Roj0Z+tmJaNqnPh4ce69EHHME2kRe37$y(74b98pk8h zi1(n;mO02*x?G%h-UMym#mBL--+YtRTZpwY5H zBh-LK+Xjtb0~)OxG{OyNv~SP|IH1wOK_ldVMjHo>paUAM{P#cqOPcxbf3CG@&}itO z(Xv3Jse=}6>n~~Spm7jIKAJmd9JoNE!Gp$O1~i&HXdIkCqtS!L0T(omETD0%8Z^2s zpm8h&jiwLUL)pS#(wPB`gER7R6atNF)}YbF0gXd8XdIhB zE#iw-uR)9WayR0O7Vq(E#1}2!gBI~c3;3W#e9;ms81X@g7T8$`|oot60bv@g56W$`|ooYg@<{@gB=u$`|ooD_+PK z@g9p`$`|oo>tM(i@g7TJ$`|oot7FI)@qRPn6;@iM&k?USBHnLCyu$jc@o$|_&_ z#H)=s9&JXv+KA&376+Ywix0*7#YeLJ#fRek;v@M2ix0*7#YeLJ#fRek;v@M2ix0*7 z#YeLJ#fRek;v@M2ix0*7#YeLJ#fRek;v@M2ix0*7#YeLJ#fRek;v@M2ix0*7#YeLJ z#fRek;v@M2ix0*7#YeLJ#fRek;v@M2ix0*7#YeLJ#fRek;v@M2ix0*7#YeLJ#fRek z;v;(fzh8VP-Y-6q?Jqu*FR=KCotKd+y;px$J$$fvRA9!{AnpT?ehI&hAB8hh^H?78x3 z?7637=*XwB=N?X^E1$-mdpewsd>VW1;hehiY3#YDBkRbgvF9F6uPdL%o_jjTj(i$> z?%_J>$fvRA9!|w8pT?eh zIv|gH8hh^Hti1AR?7637^T?;M=N?YbE1$-mdpb;yd>VW1;at7)Y3#YDBlf?qtjHIw ztVpjaE7HHpihSV8iuA9tBE71tNdGD;8dEAO(!a`z^s2HV{j02KOsT9$|0*letICS> zud<>srLrRZtE@<`Dl5{z%8JI6%8K-_vLd~ztVsVVD;iTOE7HHpiu9_oBK@nZXiTZB zNdGD;(yPjf^slm_F{QF1{j01zBf0Y&KRb@r`S6R^Y%-+>tWpDt_5hgPxl3RNhmQo*MF0(Nn{oy5gyVr>=VHhn~9Tsnzh?Wr@Ky6&krJT>E~vz{t>>YS%;cPrcW8^w&=y^xEjmJ5bc43&1Z~j;+M)xrMfYcm&d(NIpDj8* zTXcK2==5yS<=LXcvqg7ji_Xp#U7amDI$PxL7M+|ex;R^OaJJ~mY|)X~q8qbCCuWN- z%oZJ(ExIpTbY8aTx@<{)bX&IQv~1C3*`mXOh~YsVh#(&1jgbE#jVk~=P5A!}<%^L2 z{yXJ~kpG^h{1Ecr)07uN{(GA8LCAkkQyvKU?`iTMA^$y1ek0_+r^#Q0{P#5ZiID%E zCjSuf-_ztDLjHT2{6ffoPm@0g`R{4+10nxCO-JoF)Ms1);QXNe;tBvyQ(tiffTyXS zxB|e_)JI$a;A!d~t^n{f^$k}5c$)e}@c9kZ={FpAena)a1puD?|7LSJj{Jt|@f(f} zzo9zd0szlX@#6x3kVe3N?=CSN0sli97XbM09O?gt=8S;<{yWVV0slQsb49>^PgC3o z`0r_o8v*}4O>raOzo#i~1pN0j#f^afo~F1F@ZZxEHv;~9n&L*le@|1~2>9=5iW>p{ zJxy^V;J>FSZUp@IG{ud8|DL9}5%AyB6gL9?dz#`#z<*Cu+z9yZX^I;G|2<7{BjCTM z*T`?m8y5gL|0!==0N`oL8y5h0n)3b|${PXxy*$br0scKLdDGlEo*;U2_!-fhLve`r zAJT~b?`c{);{SV^;zqoGPt(ytJbzEq0YZF!Pg8t|KkjLY3-R_nec$Ut_-Rkmp+G!s zPg6XIukUG!2l4eiP4RqA@gRP_xBq|R?_~eyWdG+x^Uvu5eok~oJbW*YXpDIHo+kQ! zPIUa7X!`jl{GIGXJoS)2#=R%M5dS{32l4U!ck=IV$v?!u_urMK`TQ--2l4OycctmD z{w+r@#J~67Ia(q9y{E~4#J~46MCjxM;LA*4U2 z`63>^|4ws4JbX`6UWkY9Y03-n@I6g=As)V`X-dKX82gMe_tmjn)Y zUvR)fe0$G82_as+rzs)CtM@b|^aUk^`1GMb#H;t;DIvtG_cSeZ7e|+!K#|#LXD85R zcX5{42^1nOW$`qP7?-YinnsLERy<9iey%17WC;qmG$k|)(uuC<}rS1R6UoYwUMFDZ{NiDkHt!G9-| z;XVdW6UuNOgQq!S;XVdW6S#06gQtm8xR1fp)PLN^;A!eR?ql#YJx=M@m(qX9pZfnL z9eCVN68eYxO8or>egBgBjQbq?ciAsJ7TiA&-hWE4$NdAIroG|*0Z-H3aQ}d(X>YiH zz|*uh+&|!H+8gd4@HFiW_YZiQ_J;chJWYAw{sB)DpK$+xrzt<&Kj3NF8}1+QH06o= z2Ru!C!~FxErhIY#fTwA1&uDK?Deq^rx2NRyGuqoz%KsVd?J4c=8SU*U_2C)q?J4c; z8SU*U_2U`s?J4c;8SU*U_2n7u?J4c;8SU*U_2(Jw?J4c;8SU*U_30Vy?I}mWXSBDc z)URjsH=feHct-ns`ro>KJfr>LK8~O-&p5(7z0LGp@{cpXXLL56as+!ud&PYm{yy#X zDe?aq?G^WN`0t!i;64sd(|&Ouho?Eiz9!C`!mU(_Wn%rroBItd};5`Bv0Bq?ql%!Y45m?!PB&N+{fT)+WRxfgZB1} z<1g-C2>OZp7(74i>DgnZX+OA+!GEW{;64UV(>`z?gQsZ^xR1fp)cZLpzeD-&Q2slV{|@E9L;3Ge{F?gEt$9)W*ru=aqgQqEf+{fT)${+VJc$)IZeGHza z{Ba+HrzwBj#}LxEf5G|985{0j@HFL*`xiXD$^0u!Qy*~ug8$AHMBKmNY3c{=U+^^j zH{8GAY3d8^U+^^jLEOLKY3dK|U+^?nIB@@hr>Rf4f5Fq7&*AP1y9po#{CPPrhQn5;y|e4KxJrwg(xP4by|pG zQdp~nC?pSKXjq!3XoL@_D!=`BPtDMT3yQA`T``YJ*clS1UN z5XGd>x3>_*q!5iPL@_D!@2dz=ObSP+Dnb;KLd>cnL@_ButtvtklS168B1ADMM6N1A z6q7>ivJl0j5WOr!F)73^3sFo85zImqlR^x$5XGbr#VkZIDa0uYQA`Sv%0d*ALaee- z;!Z(uakm|W5+_A{M<{Vp)OUmuCq;cnC~;EMcZ3orMSa(K@uxCD9TtBod(%nrr&8t( zVuR+IRh<#nWV4D;5uuudKzPt}u!_(TA&2HGRh*~ZWRHaNn!J<2>472n^Q%=XHw{3R1xr*6uKBy1biliPDT|0 zpGl#cQANOKQiOU4_)Lm04gsG@5uzdBGbzF^1bik%XoY~!qzIc3@R<}L5duDwBHTg1 zXHtYR2>48jFa-ghNfCk|;4>-03j};7Md*Nl&!h+o{vV+O!aGwI!UBYMCPkKy@Xn-2 z*Ad>C6lpfXJChU~c`6K-;9M;!(jT0lB}Mv!v$CW}e{d?66zLDnzmg*T!AVzAq(3;*N{aLcr&mdl z{@|P{DbgRDNF_!3gR`fkNPiIC*(nJ4>>NXQXHuj;2=7da^atUcNs;~_yfZ1%AB1-% zMf!vA&ZJ0x5Z;*-=?}s?lOp{=cxO_iKM3zkiuC7KQ8$DVi0{liks`Sx;xl_Hxg+8; zDUv%PK9eH3BjPhDk~<2sNbZREOp4@=h|i=*?uhtIisX)n&!kB1i1E5=?@}4lOp{=#Ai~ZKZy8Diu4B&pGlGaAmTGA(jP>8CPn&#h|i=*e-QDR z6zLBlK9eH-LBwZLq(6xGOp5de5uZts{vhHrDbgQAd?rQugNVE5PSUD~_)Lm)3=yA6;Y6*9h|i=*>k#po6nbM-M0_SidWeY6q-g$zh|i=* zqY&|#6wTid@tG9q7$QECqWK#lK9eG?L&RrNG#5e)08*qahyg%~=0cxH$_hnL{X}yQ zg(9eaBDpIRLG=^OJrs(diipoFSvrOo0HkQ{fp6|fk+$HQdr~y_K*VQKq(6xGOp4|n zi1Q!(fk(iok@{Q5#N~<$rSOONs&wu-5;U|BU&?4Ua9|=v``N{v8&?4siGNDOlKlwPJY2E0P)r2NZ{^UO=v_zK^ zTB6MfEz#$MmS}WBOLRJ+C0d=(61`4niDoCXsN2#d#KNYwOP3JmI#8Z0Ca-ZRA`%d> z+VlL!ge1`*h_x#dLRNdx2x3i&*n5wcm%g(_eD;1Jlmzo|-PK}1lR~f4VnCC^bytf4O$z-`ivdjvmDOTElR{;+ z7|^89jx7c>DYRmX0Zj^R*kVAFLKU|d(4^3QckliOQE0su1Dbib?rJfhNuh^pF`%8Y zCM#GIf7WCLhyl$!vVt}72N9p0hll~qJhFl{@n=m|fEdusBP&=Ff7WCLhyl$!vI4|_ zCPh|&7|^813J?RD6j=dcK$9XXKn!S7WCd&D&zh`YP5eQ`XZB0{S?Bn+yT-YWMSNx+ z?loA%XHq!(v53#4aIe84K9j=vkVSkZg?kMa@tG9PkapKOqFD@R@5MSdt1SjJDV)_= z3}{lgfo(CMN#Q)tVnCC^O>K(-O$ujz76Y0TVdffVS{Ct{Eu=5DyDm&v6N;`26V`;H zi1^I6grbP}Oo~tx5uZsBimnS2)`X&n_{=;)(RE?MnotxGpP5G}iippo2t^U`nG~TY zB0iHM6h*{mQiP(2_)LmWbX}ORCKO$ly{|`Z&~pDyP`6IQ{X1dSx~z0P_JMmLyNLKq zNpR=GB0iHM3q-VLQe<6-*6b85x9?&ho)qaN7T!sb7Gj~D6zLqou8<-P!$LYK(kFyc zAw}AQpedwCR}dbB6lsR`?JV-L^AsUZm`74aa1&A_V}vmwMG{585>g~TgeD>{WKDO@+$ zMfeUjb>2n{zhzHSKnHl&$| z=;PAal>Q)g4=K{0P3h03^k-B0vnl=Al>Tf=e>SB*o6?_6>CdM0XH)vKDg8l&9M&!@ zMl2jsq(6vyLyGigQ~I+h{n?cMY)XGNr9Yd}pH1n{ru1i1`m-th*_8flN`DYrhP6w7 z5V?gESuSFUvD+RBsDaA9K{H-j?=0 zro5`Rg{qG^>Qrw_pC40#)!Ra(#~gL4x255aDbwn0Vbo)eI@R0K`Nx!U^|t!{n4?bh zwyfYWEvtM?J*?iA*ZY{GPW86z^f5KFdRt!aV@;cWCd++HU9J91UfpBO zD1RnfeoXDH{!CuoV|t?1pUJu(6A!CDlUMhccv$_Je7MKNy6Vs9X;~!kpz{`6Jm8o` z5+{YVTO@H(SeHc-Cxu92k;F+Ml2{~hQivoLNt_fSiA548g-BwN#7QBNSR`>$h$I$C zoD?F7MG_~4NMe!1NgdhBymzC9Yhi*MbbeeaZ)55 zL=q=O(m^C~QY0Nj5+_B{K_qcfBppN&Cq>dhBymzC9Yhi*MbbeeaZ)55L=q=O(s>|0 zBeuBr{ek%WKzv3daeoW3#hFKZejq+S5T6lSoO#6O2jcUC|EzL|Y!*qJB@?48k~k?u zB#R_Y3h~DxiIYOKu}I>i5L+ygI4MLDizH48aifMv;!Z(qac}do~clKZmczAU*Twm9=h?uac;isX*i;-pCKh%HWv@Z6-x zDiNNW6j>$0bCV)@Aw0KJ5U|@@h)CO{aD=r;+oW(!#3F5zLchg=j60=5Z>RP#*LtdV z#GjAXJx}!xy~^6hT#5$6HGNFZSMSiPtgXuHzOzQouhMp^cj#5tR^@fy5n``WUe!C|^Qye=JJOa_+E?|C zq_Zlo`;PQyl@?dML$9*7DzE#FG-{PdTfHL$Se4g(M>@7j?5*ArCalWqz9X$$B^p=n z(5tMi%Im%(JzOO|SMSiPtgXuHUJ#P35&^0U^eSts^12tKy{pv2>H@vW+N!+n1!2M} zQN6lAud=o(uX{oGvr62kF31X2<#jJ;+*u`(R2O6ytMa-RG!m^6TdE7fu~m893mThN zi8j>*d9bVUx)(HBtrCB#3tTI#t;*|O5FV})k*W(^E3B=`>s}B-t`eiF3tTI#t;*|O z&=|K$)T%E0FVajdBUKlKqN~KQ>H^maYpYyYsxAmuSBY%Z1+Ep=R=L(xT@cc)a%`$D zaILVm$~kOxLD;*>(W<(@wZhseXSLM@q46rmuj&HV3Tvyvp9SI1s_w)C@Ml5zvnu>q5dN$Re-?y4tHPfJ;m@k@XF>S0D*Rax{;Udr7KA^m z!k-1<&#LfeLHM&O{8NPbM3s_Z3(0hZS1xLQiwKoTLLLW z8@nxm6rzpYmOu*8<~eRlAcbgSws#; zffS;R-IhQK(Z+5|AcbgSw(kU-3kP#S;-0Pc&IP5n~bVpH2g4L|M>i$e8Z&6b zTF_|Dpb>3Bqd|j4yakOW4H^*_G#WK%#9Yv5)}Rq}L8D=VMx+6arVSdg1~eKsXha*( zXx^X^Z$P7ggGR&wjV2BnF$XjnIcP*3gr=ui;R*oSIcPL2&}iwP(X>FLt%Js)95h-x zXdKKzqrHR1;T$wtJZK!yL8Hxs#vvUvT0LkS)Ip=&gT`SUG+I7r9N0mlCk7gacF^dH zfyTidGkFU$ol|TErLacY_x3MLXW0MSRhoH)s)GwCfF8#24**gBI~cJKvy1 ze9_)FXc1qu`wd#e7wvz87V!ng8v=@h7V+h7#Fx7fU+zYHxf}82Zp0Vtm4tx|;pHRV zYa<1;i1(Wj540DD@a+)~@Er`>f_)X07x7-3E+{YJJ$74^FXFwnVvsN5J@#OfFXFv6 zXpk@BJ$7c4FXFwnZICbGJ@#vqFXFv6bC56MJ$7-FFXFwnc#tpR{U(Qf(4suF@dH|v z$0mn<(4suF9Ryk;4-WsJMZDK05oi(bu{)&pMZDM65%NX6$DWb$MZDLB67og7$4-*+ zMZDKG6Y@p8$NrM?MZDMM6Y@p8$F7s|MZDLR6!Jy9$6l23MZDKW74k*A-;8*ry-w&~ z#H)>n_nQ%~v;&HK5wA8P-s5Tn)f@4CGvd`o#Cu$gpnUW*QC`HW4SJfOMZD4;Drga} zHt21F7V%0utDr@^+Mve?TEr{uw}KY&YJ*-UXc4cp3kzDrtBp7wVXsd8(0F85BRI{j zOK|(Os}V#K@9k;?(KOcD)d-@A_jWacXc}wnY6Q{5d%GGzH1U2BS0jif-rLm(qKWr* zHG*j3y z`2uz|f@tyu>}mwjC#jo>u9F2VU{S0jj~ zvB$1P5KVIpyBa|>jXicXf@m6h>}mwjH1^ol2%>51v8xe8)7WEIBZ#K4$F4>YO=FK; zjUbxF9=jSrG>tuWHG*gwd+cfi(KPnh)d-?#?6Ip6MAO(~S0jj~vB$1P5KUu`U5y}` z#vZ#GK{Sm$b~S=%8hh+&1kp71*wqN4Y3#A95k%A2V^<@Hrm@GaMi5P7k6n!*n#LZx z8bLITJ$5yMXc~L$Y6Q_V_Sn@3qG{~0s}V%g*ke~CIL)q0aQ(BZ5k!;z+0_W5N&oC> z1kt2_b~S=%(m%TzK{V-~U5y}`^v|wF5Ka1LS0jif{j;kPM3es6)d-?V|Lkf6(WHNN zHG*i;Kf4-1H0hsRjUbxz&#p!gP5Nh7BZwybv#SwAlm6M&2%<^<>}mwjq>7QMVAe!{gu0{||`e#=oh$j8Bs}V$#{@K+CqDlYkY6Q`we|9y3XwpBs8bLJa zpIwb0n)J`EMi4FPAFf6aP2;a!jUXDw-z_5N#fz?^&wt6{3k4Bac40&W7F;+Z0!u9< zSvXb~k~|!#FOKRZ4$~t1e;lI!{;&UmVtoEfj$;4t?-cFh`7b$${lmZedk$F7f5|Zn zB#tG|f5{>2AMPYCas)#zjwFA>vHrK8ob@I>;eh*O>39GBcQnr@RMscINN9gc+MoT7 zdS3k%>wEoo9F?oTVs)dxqit1x#o_X;-_eSyzv5u|lZ3*dGWT1KY}HTIreFMyid_Aa z<2{;m_jg2=>ZjyOAhPY%PuVOZ{ug3P_183mCySBv8Ab8rKPDtqV!Ti#pHUuZ230>( zB}>W6?7Zbmh=jwy$yg%sFc8)3&j^T5{!{GpXT-iIzevg>^x3NkQJwp%NcuJ1ylVQJ z9E!gBN$Q&%x_S8KFMgEqYr1*W^fx(l^YGnYl8`(Ym_V1V2&@l=(FR6miXZDv6l@qEQh{=sM$B$>O%$BZa^5f;=*vQqH((L%<>0)MTCUb3W z?ne3a@#FI|Qxm1h;<3`~)#K;qFHcWR9Dnod$WU%HcYLTgJM~_1GGCf4o}VqE3Qn=lc0~h<^+Ickm?t zvYbKB*E87t)1y{!Pd*zm^yGU)I7LD)2}8^=q#Q$DcF(ZN81_nfhEMU8;XyBBIM2V{ zs-9tQbpTTk1fHA%FN`;*@~rGs-YYwm_sUKcymh^5c5k<5=*_Yp zy;*N>Z`L``d(!39dveh0=so3?_V)3IA+o!7h;Iye>w3ZM(5hZ?xmR579qtXy>>ch? z4i|3ka83j-qp#a5>&v<*`%bW#eJ8z{eL2?N2feVa_d$Z8*1p0CC!otDcvt%he6`?p z^k-Q_f7bcjPZsoNSyX?I7uDb6-0Sb5y7W`Y`+L0o{XGL-SAP%7hUh}&{ij^9`iCg( z{$cM?|FDa!f0#cEbUR^y1~YKN**b8NLLNBjl?|NqItEVZhf^-(fnMtSK(DuZpwH_X z=;z--7Ad_MfW8>>2J$QtjS9^kK&!$J1=s&vH|xr=l{vO9r`F|8dh>H9Dcc;Io09_N z*zO$KZDr@6NTISEo0+5O8NA=D@y*+2%d6Q#Da_UHq9mzrXo|6VV zh#pxh2HBCp6RvTC>d@dx=glCSJ$TBMcTij&B$o%-%E7#A;vn0Qhpkx+`ED;Le`461 zkf&+oPf`K%WK|x@9U7Tuo%vH#xI8P*tMWW6&r`H{vM5hz$mhMa`Fx&5s#W4lo}3vH zBn*)wLno;ILuAd6STaPG46%7bYRwQ^Gn97|8xryk4SC;(02aoJ;S4U7wcH^YN&t;2(C<}kZH%q|Z@7d$7sT*#78prIE|I3g5IxZxB| zc##DtVtBLA=am=wsiFm-xHYfPPmvV}+J*ihzB0hF259*OHml&x%60=9tnh3%u+0Cu zv4Id?#b19F4}p#N8(#_S$#$Rep5P(07=K--vfVzcX1m!1JcJf!yIni+*HsA*fz$XK zY(CpPz`un64%ri@Sm_A|{A^#A?d;2Xk$opbfE2AKeWye?6<{OV*C#?B36x&8Z!oYP zf8BEN;MMn$O?`PXp$~`|3LkRr^!f0T?eBKEoFc{fP83{t_fgN`HF!5k$wm~%l5!cPm$93&S9b1Ea}{2%mDJv%t8oWsuV!C_@^ zhafvx2)3Nf_c$nJ^C!Fmc{MywQ^@zRtbCuBksqS$@_-iOXCBBB+Leb>7YGElY#!}! z0$+9CCz~&*%!0RXNX;1Pb$c5^t@h^70J}KkXqp`Yw1>)u^lCvld^pJ#D5C=22ssPx zre+HOArf4?1?aI8+$+r%z$Pca$+YSVa8R7!qi;_)RUQu^M^CqFA^wJ*^mMy}g1%^9NW-ZSJ3?-}k1?Svm5^z?+f zjE5lh6WthUtPVUdhuiXrZXz@ug4prbg^7pIGyL_Q;UTc^L^rU}%W{dp9SUXUPEx1v z5Nd_hhaz&l-u|3<%l0N7g5Kh<>n$GmhW9Yni^@Hx12PDX?RW@X&GmwNp2L|02a1F~ zxUyDBA7Kg){z@MqFW1)-WRvT2?>*PoA5*;e>gUX-wZaF8OL%a$4GadP$PEnY zRd)kGaE1@$y~hL4wNQeiQZ7f=91lU3xg7NZ4_L)d#a&4)aaV;8>ZH)bK>NNVAb_ca9?<9^~HSTu<#c=afB#YVmM_LjaysmiztqjUZ)Df#uom zA;78$!=8Lh?k>=0&vqA1`M8tqcE33bca5cIyWN`w3C0~tfV&mA4-zz)Bt0t(tG{+-~&10 zQX_iyq)+hh8<(E!$sL&NDOy<;Pr+F1f%=Ch3ey&DyfLR#)+vmpB+ zB$m*Ne(^W4rWX!bU}-NMvTUzBM?A4Hy?~~WsV^%9;TQq^fIIAE_F;j;b4AVSlV=c1%@(iK}b@ZY$sk%do9Ipw&TVkGu8hvCZG zoEuQC0hwP8BYY?;&t)U1vSYhFC|6!Q%}ZDE17bv;K6o~tQ$2Y{eUuPIo%cb>NJJkz zu{A>+X0q8KRXrpo*~Ho#KcqGcMY#^0qzs0{ks-QbC<-fqp<_b>%H-3|Y<8FfhdueM ztT#u0A&V!H2E~wGn=4pRy@SxB&=@?qGWQnxsbswca3tg^3{WRQa-;6W_`w%3f`nXy zc{)y6JUIpo=5x%2Cog^|+snxmp6H1iMukQUWeM_lkc*w=6m}@9nH`>74~8&X(u>r7 zfHtLwC-3%9PS`obF+Ph26|V`|5Z9mZo6q*~5GMjT_IfCnbGH&d=A022PuWF0IaBdK zEgPn*p2Y(z9PV~s3?!^ChF;^zTZ#t)GM?OihWj=3!4r!gK*#*W0bdWz7EWkJf~U|f zYgP~o9yqY$$(>C!hHb_ZT<>=dcU`)1Cj95S-#dJK{?PXiy!`5oYc~!YIR4!OneS#s zuT7ORSEg*opq#leK0B8wUCGQ{D`qaTs)=lFpG^C*pdxpclXeG8>bUwY%Ry*zU@gMw~+ z|Gf4^@E-`l6jRiADk=2QjcU>ykNUJF-PW=j1_bEbbZb%C>&6#YSXaeKm9F(2-1+H|21qzAXpqYCin^%uf&ev^|F=i^lA+>r>Z@ z*NWql#o5*@YRc9X8NpVZ&X6~Gx3!Te zM=}T5NIW&QDy;=<4@hVRw8Go5PX(BnzmCmBSoGY~+^vo}P?xirwZRlJ2d|IcNU=)x zm)OA`e4(<`*VTeGp_+p#ey_fg+jXV3?rW=@U#+j;!sSv42y(6XKDr-Fe&2dg*V3*% z`w!7uU64I0+lv{(#t8s+YbK;~Gj=88j^++hmA#gI%NhD#oShk;j>g-% ze@)qvPD-O1752j*%XSdgT;RT&JUu>hbshtC>z3-*q=BNmSOfJ|*Fin)r6toCOCuZ0 zZCY2Cr%R(;+kvgV%&xtfAX$u!PftNt+ccsvSHdd&vS+)LQ5B^OPCxC{)`@GyiFYHv zTC=M@Pb+8Rz47UJ8&}L{=xAIWwXva|gP~LmBKz&jWO1%IkqEzaXBsjkTz7zP=^Cj4 z<)n)ak@n7njhyu;`C(^2sj&&oC=$C|P7u=T+Do1+yENOuGYVV^Ia` z2@62ORI6j}JWD5$vDOp>tJr;;LulLl4IGPWt7mhi@cTF3b}uy%!;80l9#h<@IZTho z%=;gofJ4)!7cFwK;tx%UIDKuAD^WIYUdY}NmdY(k={neox~EB5Nu7E$+d?M6eqdd* zb227i$W^Qz>|><#F1FXW(4H3BM#EvP2fe}|p4b>xcu`p<+dp(+1}eCY%rv;Tw$;&tzn5kPMk%~$b2 zI(lFB zXncD5kX8V+v~T`V=ecDpFX@~WxR-ll-)@YR=I3tA&$Vu6DnruL=2-yP3Rk-GqEou4 z7x9g6PEF2TYu!3j8-7ii<_+mM(wcd-TNsN4CTvuR`)_h^(Xgd6KhuV(!4aMH97)rY zp}g6r@}B8f}fu{Wuf>{ILa-Ah-Rv1{02n{Maw*XK!kDwevd2$ywkz6_OTC)>%U zp|oZRB`&a)x5vajXyepOXT=Y{C+((*zW5GVQd!r*lv%dl?b2%Vd*icH_MKImNqtkc zR9jzU+wVx``qcZ_;QUjpz0JnNv17+9orq=+3~FvoBBQ!p$oic>Z4-Lku~L^`dlq3K zt2HR#hlCAL)jC?x9v!n1ldh=9eVa;KZ!tKEVYIis%^M{=c0?|(d5^|gp|pflsrznh zd17|{a%;whpI(TyWcmjw;Cl7dS8OXAU9I2wu+?=g(6!o9?!f*Ro6(GwZ%j|M!{xbI z|G7mcgP7tpKHE`FzO~p6$G{ZU(%dNuuHEcCSVQrBoQEje0fOlgHo_9UeCax-KRCjp4B>nY4$`o7 zc1Ffd1Enf#Qv;64nC^!f^vt6~^<~e@&6XzTtrz<%7+O`vzGf&`&n&oot9;nZ*q}8& zd$pYTv2BQYBE&iCzGu1*P?nAXJ<7H*1JUhmT|~0m?28Ul0#;bd>@ZP2 zo&&SvWcZY&`zZd?({!-xz=89{+3Qo~pjc4KYsJ~(?*?4#(lj2T&*usvQaKgott0?8+_tErxF0u#fi3*N&vlyg@I*m;82s4qK!% zlgFWy<>K`80i3bJH~g}1wJzkbrh_-ApDYRnaq}9Y2Ut^-*G>Xn!ErKFS)8<%O_p%3 zF4XvMu%BzCSoSNWY3%D**Wh1HP8rY2rw<$$#ZTjxOYhksJe~G)hzjfur}RQ2T&n!3 zd=1m<%w;nJ%lIC5rW^e0CS6h=nRTA77&7c#lb`P_xkk^Gxyau+h^-@I`C+{Iy3KZIh> zj+`xAKrO>>44)l6hFU?(4F4F3%*EGpXU3QPt^7=da!9?@pgny#()S?8lHc#56WCl=;Cc znSLAy?$*K7wk~F23f`1H;4W2u92H^gue+oRK7uqVzaPDm4m&hM&l@TXO zFSVkhfZ!*#nKE9PoO&;*AdZ$s?z#d`8e85t#RkVdN%UY*!c!?F^%kus`ro zI~-tz>veSu136Bq*f=?Mz1-@EZ;M=ZNGZ;uI6u1K!a9ArW&Tdhu&D=7)W)k;D+=kK zlPOT!btyEhaTk`%sVnH93WyVZZi|KE!5!IV<%Av0@|c~yZXv#g9ACTDsoJ`}X2Xj! zlO3BKfB)KzPD=V3O|})}$>Qbtt7Eo8)q>Ua8M^$KRwwmr{X!@Gv^U__gv0e?Q?1r_ z8gg{md7zLT4Y4VDv!S+s!&}nqB!253e(N88>mPpWAIh2hWAhLH#oM_#OfBu3r>^*P z`t)e-!ViZ>$KdH-ym#9*nb)w@5{58*O=b%iWYEDY z)8kjm%tu;uUdPOvg9|i2F=s2s8PAN8F-5-;C59FqZdkWDX!GNvKL}+byDHJb$sgCJ zd$yR`INN!-ezF7R7H6;6qVq*q#>`dQlWSmUTuL=2LY#EgAsyrodF==LRxtd|*ZB~^DJ0p|jOh~1~^DP@~0^gF2VZr)a z?!mBavy|WRb^ruh#%SJvn=8FroSFKI^f?IEQp|@(?YF3!O`iyd8M963L%u(1rA>DB zT5~Dv?uDB_DIASDml`H8qJTd|Y`lLb)`H z8Esg6O6i1+92{3(>pG|xGsiRG+1}B(5nkc|(^z@ydAZh^8mcQ};br0)_9tfNi(2~A z0A^oghHt+zue<^$B7C=XS`9p8$7B!&K$-1tc;V7idCb<0k`)AY>5x&|z2W0%^E*y& z_g2`6Z+LZHps$>GEuG{M{D3a-PC1gbcBPhMlEL zW46gVHiAF_*Ac`3-(BR*1y9)C`uB#0V10EQpHZEzla5Kqpf7xh5hTh3Pp{Rjp%_su zZ`24Y!v0C3^E2Ub$(eyU{$9mQYCTrv)XgnCYo+!|u-_S2chG$^E<^z~PdWDdQS zETvgy`^QFjmX;MWN0(KL9d>LMs`k)`!I$i`DboboQB<{v9)S#C3^e1= z;bVth8=papjq9cPGP%S)b^r)52+MF`k>${y$!e!J`!LbdT9i@($pR37bKxk>CDxgREtlr^fY^q2 zx|&$z@QHoHAC8Tj#Z2^U?#$Tmg$w5{G}|#7eQ1Q|tTILOkQ;0yRo-B3Xzb0=LjPXn zy)iy*hZewpe~=I|WO3O8A2tD4Uh3Ky}yut$e% z-gW=|(rS0%MFn2JQ|B-D; z{%9=hzwXtfL3~DufEN?*BGim+dKcfnHV!@P)M=bmc++>*_Ep1$;>5fkd)aple>O5Y zhGmWXkM>moas#+ts0(M$?Zua~rIuRPcI=VPatLU8`KJMWI@=x4H|}u7Q!m z4iqrWT#g1%Q!{XDjd?ZPtipK~$N2B0Fg_`m+4kjsSsTIZ**V`H`g+am4y{CyGZWWu zBwJQE6zL7eW+{Hed9E%sao=rBwv|wV9l(gYOZ#JF7|)xyD24{+ih+%O1Z7}OXUp+1 zUGyGh1gW(wge^IvZ!;Sil^WvNp87XlhF>7wCXK+@N15pK{dF6`TZ-mrU4c8GsR8fQn!u%67gQAcqsBBW7bIDrMX`)Ib!qB4eBz@~9Ut{qpKtz7%b zJKyjlYYH_sy@_h=Mb+-V*AE17O&p$GSV}pI=OSKvZmy=Kf*5>tb)N$KHA!2k|bR&*gC_4axkuH|+FWcpf^J zuS;X=>Fn5O?uY7Uo$#71FRk+&%_k16=u?%C^%vO!oJL$-Oy|zh69+GFNfNECn_}& zi<+nxO$VWi7NqP4&?+mfQIT95%W$&HZGjDjOpUohBLi5`QbVq!rS`l13wVY0dNK9C z|1?t!krAUt`YRczz9DLO6@Lue-f34v-Mj21UbimVJ2oSBQFS$yiK2yxDVBvsi=O#j z8l?=Mk{+}G8<&n}`J>x5N&Ju&A5v&dI(*77gT$v0Bc#i^@U-2O(28nwgVGdTOs(gIL@Hv|5KlZbWzJ5w}{gm9}j zY(ozV3^;+0h5g(Oe6Qu7ttd9Emh=lapFdG7V_pAD@jcu}hZUihuTIUqc4ZpL`PpML z#X0i=kJlYlpwL1~%3P#R0jDi57`EF<>Chx=T)3sqFZ*nNwK`Q_DRWpwTgTayIy-SVb>dJr*0=5 zN%b78cN=fr`LL?Tj+Z8EH7j%T8umqD;RuI3K5xOAi|ytiQ3k7vyAu!JWA197%C7w6U3c zL5cv15K^+SWq>OTJ^T^dYcsa^Z8nI-@_;%Quo4QWnmr@HI*-+Jl~Q-m$W0lC_H!5U z0SDsi<=vFiqtofrK7oekuZT$TN7$zAUl*OiV0M z>YpDR!zY3Gbmi?sDEz%c@BF#XS?q%|cxsdO*=5M+<%VtRSbKmL8WO%Po1LAS#OAyW z;KldN6PdD24cmgUj#zE!LXhD2#8Y{t*?n}RvAO1#}0GJZsJQl%XwqAWTz+s zk22VCcCkpMqR03GHwwH~#z&tPxC2)k-@JMA*wvZ&aJ6xn-)J76p1M479FF_^`1J8> zbJwTGW-x<24*d)pl}9h$f_MA=G5f{Z-&h=OL7urfi?EKN(9(=e5wSK z!Trndzd48H4kkXZbs`p#P?Jykn%5_ysC_LcW1r!^XA{#9^f%NpWFL0S>$F-*C-IbT#O5%ylVf`dIne)D;}8usTvRU9CQ8 z?IHZ0)Zkm}r%$KP)22GYf_w=Inr4A?4Mup81I9vMax9BOK8tSZIM;1rBkCvH*4>n& z{K0EeGx!jBY7U$Q*H9`xB5$zv&}CZ{lWNzO^3n(;pU?#)>7ayJOgKwPrAZU3q*wP3OD7<;Cp_= z<#^6YsM!h)2vg2ZOfYcu`XB$nG}DljJC_JZFK8mk?d$JCvv@Ii5;4GBn*G4 z;?n4}mrmJ$A-(bzz&{9+&~m2Hv(5xhj7$!vm*D*s%jW-u`-AvCr*eC#r!hhrYP@Yy zP-vY2d!7Czx@nFxR-uuj`}#8vcIfd*3@a)k;IZ(?ac? z4_?|n3^~#B^eCX$ffHw;DqV<4Vxl)(H!V4eUCy|d*l1wpzDb+*0#j>)_*}nkwu2=3@`98N|SQ@m|e9Rz%KL>{ZQ`>;N`@q`h zl5|#%36oZc5DFh495RU2rMid#7AoQk47T9;zRjv_-2umWF)f~rZA93eNrbZD!4b%& zy?YQFcyOXgsccq+hOtEr;FEqaQQ@>Ah+%JAIY)mGaU<+}2GUeHXE)a2pe|;3?j0I% z`cr+O-gg{e#Hp!A?MK_#Ktrl z*M7Me%Bk;kqb@XY^6hrJ$Y9s}j4KFcrs7xwBN|<4+jrYb++}@>Xp**n2g`o@BG-j& zXh0zb!S#JHuESTb^%^nHDnp%bAH>mhJQIPC7z;~Rn6(4P-?8a`K=d$`;PwY+8Fj^_ zRIE`3?Hk&}Vr*H34VFW(;`)AAQ2dz7>rkt<1(j@OWUH*9D~cay zt{LN^9U5&$Dj32`=Ebl}M+g}yjVOl<=Fqf|BfK0t5r<{0u0t|aYH_n)9H`)hi~rhc_nMdeT0_yTNi*>0R@mT3u&xtv_j_NzFRZj`os=FGTW z)7tWJ|82pC4e6@gGij)$jxQbDW7V3Hc$+adH;Ls&gpEv1o9)c~d~>wOKgcAfVH&BC zH#7$m;plsWj(-rlZ_2Re1Vx23S#bx(rA&11dBwq`hD1&Ypa`xeCsU4R>jC;)Sg)v? z%*V1*P#M|b)p=E^87qaEa*O|wWtr-zL`i?vUC8~5(K+INbdvx(i2rQyYKYC)=1s$s z7Z88vd1Y{J_cbl#NZUgAGi>i@$?~w(i8fh#t+zI)`nsGmvcVnrCc5QoM*hhS%-@C? zlieQua}U_(o8`AT3%0J9x6`=#Y0dOSy`+aJd+}1t(`a5Diz{ADENa0X^FF@Aw(K#7 z{<_Mr53VIWw5Fy`sRmKvh^k$*Yy!riQ(p?P_P1`n{UQe?J?m>S5%|M=X}6Xo3VN#iV;guc6#wn~)GPviH_6m0`ilBG>xJ4-9~!bx^S1US zh7_kw_4dVfJ7SMdw{CZoL&HW^C+4L%!^vZ#gb5T8ehjeQ@rhRGW+LyFvTpgh;ZNhs z!7f~~so}Q6HeZOmo9r?Iy$ZI&uh~@dcHdOl`PTw9v2yDN`q|vz8A6hFn7Z>pYIjvl zT4qr}4Yk+P$VrofNjvO9VcR&I?u?rpwvJ^+_#GOnLytEE=bde(s`Was6>FtU&7^lP zjcWfATk&+joDnRW80w5?QhtnuJx1Vs+>it&mfP6SXg10@t;h-HinHzr> z$0FRYd^5#^+?R{kVlsejv5R7jgRC3mlEp+e*+B{XwGjHYK&{nj67dO7qTK3UFxNT} z)muhbB-zt%wx+ej9;*iIn<DyAr>02uIj)!iwL=Hz{%~D2-e7C6)Fl0=q-wAr!qW zRy7_+2p!;Y1i%zW^kcTkVGF_G=R|hK0{a(a5~Ss38M4_}f-R76&_Gq1XWLXK(N67Z z3rmvWerz`pYVxG_Q^z&FhJ9eTZ)+cRHp$LAMtlEeO~!|Ov#L61Oyt5NLEYE@juVM+ zs;P;$^d913uQr=JcT!@M@>jJyv82ApL^xK#i`iaFrE6vTR!qD~X}Rm0Wt49X z-MA18{SRW(4W5sIL^xnW;AmW+u(s3-DM=+y6neet`Om2#@j`J9w_KPn>dRSESEjIN z9FIr)Eg(FRi`C_FD!`3-iCoKX+Qnq$UZ&%?&IdM39LC0yPfSC`4>){ z7jnD}ul1PV2H$jz-zbjysX+g^XYV~1LJcP>$@#OeAdqy~s%f@Zz6x>KlmmA4P-)kHiqNJc%DZR|_#^V;BnHf_?RfW!kXO>Cu&o@!NzKJ;r_< zmj}VS4t3PGq4~qd3q&b{9RH9&J6*}=8nfd!0Z#PUac7YQUqTvZ#}9Xgrw?t$&=I4W z7dPB=THvU;XEsn+OFOhEEE(XU3r(sUTQ~|k#mz^!W(y}L!VN|Ej3Im;f?ZVbZMIal z;})SBmqyZcb_IU4xfGV=7CyklT|}3QIF1lh%WirK-+3w|Stxn}XGyMr7q`@!%#co+ z%@px1YZ>=_Vs(IE;qV_KX@OKWhY$7D?X$&?Bg5Bp*O6rkvEUFm5<#P}R~d$n%Xal2 zx)iz+zQyplfZCwmycRmhQR>6s$T zy9LEOdh{?Zv9s@&*|*q5ayB0RZup)x4t-y3cG_NN#X4)|cu-q!Y)2#dRz>%tqEe#t zU!O=esBKsIa5yUT^%U0~u5i`$hk%I>L!3{ymH=~z#mdPU8e}G;q)%D_F4RFl7*0sj zu7N;TaACA!wzRa8bO-hPk8U~P#zUG@-S?x>biT2PYm+q%A}EG`KZXy8Ehwgc;{<3! zfDF4|FszXnYWhKGjbK1R0|;M8X;P`M8`6C6x?>*!sgqq{NF7Q(cQV2A(Wcm}OS!>!ShGgr@Tj2v%Jf$*(Z6T@kVX`PN; zp<1-_6kRB><~>j5H;5$FyZQt9O-hd=`=-B*orIs5+MB@VqJfpd4ZoL^t7`^Av7rHl zm^;4ohwUqNJtWDxzBZghX(e2`dgy*IHWhkF}PpOoD#Y`0wLE-Zc0Z`kdwMEuGh0dE>f^yV5e zPGT_>pW9m`o+fXkZjB)L9IgKoj{WJUItRpB799^?3xKWp)JZQi{yk`I7qPB1`vGAS z!*y4YnYKm}DB@p3eeRg5ycU1q$wwC8CgpU>LVUI?Zl5#47E{8mu&7hlV2e(K0UApo zS~rPxzL>8T$^jbN>>*48SWassOvgVUllbu!M1-UK)+hyj(C=yH;4F%*YHO0vI{t%g zAB3Z*;VhAr*|@2uit2^vx@gi$&WU)=A7uJ$GuRU^+jl%4csD89z_JiXv7I-c`W95) zpNk-z>reA99C{0l=Fk@!6szO%zbQF56_}T_n?I6`p}9>z*0VFMh)r2BZVmZT1MY(H z2ezs09+Zub0=L%l2M)(B-HytFDa=`Pv*{QbOGt6TTi(7=sRiBGIPje34V#0xrCf#( zN!C__<1(Sk4X@XO0&dqq#68#)SP;%_b?nj_Gn&eT|uTvM8v_ zS7Aat7#0_HgR|at-W^;Qt&ayai+s>n@uGa-p~+56P|@LR2AL3P`(i@$-Gm&Wn@z5& zj~1?)`+!?Yn1A9I_VwO?&*S5b6%DI(U|)+bKO5%qE$ome*?3&ZppSNu)-XGS77#IP zTFR8$f>?bAx(?;XXAIua3@m%paS-2sSqz7;Okd}VoIb6gF__D-LoLCquDMi%Mr^G| z^EPcaj1)wHHR<3!0X{<%T`MVECKFbV5=d*T(cVZ9y^$F2)`W~9bIvG&^u*o#cSIKgp~zllZSFux7^z&O`8KaFi>%#(F% zl}!TA)TvhT=TAU92gp_HydrUa10y_9ryM5r04!E^0$-u@&CF{S=0l55_r-z z6A-BAbMb^#IC_P_5nHc-UqpQ8k*fN+e&Z%lnD{rxq6B)X0!(iZn?2}SQf=4UW-a;` zGiX-Pb;za$m?Sj}$C|qyKGO1auDl((QYzuyLswLQ(@&rNaqi5U!?;}9R}+##!l|jR zzl4!=Pm35@XOO?%7*bHadmfvbh&5{bhzk)Gt08z3VoHnOy<_9kZL*YnfxF>FeFxdt z7#;p6J+;xmY7^G)W|6Q2Ct4^UD*-hw6lkW4t|A{YF+pS zX|8y^(a#Is=M;X3ES4;s^NsmU$5gL>zGW}Fir8=VujLn9_JalO@Nh3}Uv&XnA@L~@ zlJwNVB&ej6Pn~4+wj&!=cuzUjYoBj?HBSJ2YE+jO9ZA}Pi<0OAi-~G6w+VERsI6Wo ze++UN`x%7Xq#Aw>vOZHH3^Jq+CQwe@MIqrJrGbU>ECB;#Og=#g((}rifTdkVL<~r} zlQ5~BEc}!By%;FVA`oaR_75hLx=y@GTdn7Jqfp{xElf0H-bPDG%rs^RUkWPKm_H?g zRHG70NEw1UN_ z&E--9m}#fj_>plkt@d_@Zz(miuK%%JFXFlBCKFCExP4bs;%L9Fl5n9BPyW!1aHzNM z<*~OE#_kb&n^+CBjEqc>x?ZVb1`B|dtdTZWfq;fWSOyBhnxSJU{aSlY%wn@eeeo(uX|qw&N^>Wm2<+a5EiTcQk`Cc&Ub;eOSl zP9UcatZ>wbg9n#Z>RxKhLzry0sqqaSQSvArq5coN6_8?Bup{SjUN%R+r%lw91YO#- zH?;|4{Bkf+?6>BKoZhC?*pg^!)Y9bzm^1Pk9_Cq@{ zXA>UxiP|~5P5xRdlWTo-Uiz%7)E+?n@z@-n!tKao4%HOnWuU3T3=X4-N%xK=Z+IsmD*w1 zC7mS!f9gqGP6E%;s~h||u0pl`8NRdHqyDu6vRsI(*EsL=xBu}OnQFKLtC}DB*$95g z98$crbsm3i^cFSTiZfaqX&T#`&5Rx?Uet7X(hXFe&!^7sWcCKLg|@Ot!zKX zs_SOd@s=I^=h0w_EOhRog{HJi5t_b4j(U2@?svjrq^?6B+8L%4XVNd563hM@yJ-;F zq!7xCDTyBUsR<74dMW*W^GbtNZU0_KHNw|2D!;9YC_`E^yt4F4j#1n?>z`=a9n{+f z9{)K3TH|6n34Gwz%O-ro;%h|sl+coPrpzU2a(%ZGR@8N6s(jW$HI84N#<8hJ^+9ks z{8pSi>u1Lf&6E&z2H(V|G|_%a56D(&lg33}r^;)sF)ySooq;4(SEHgNys+jr4w9HZ zCEX6utvmGBi}L@b)(bB*Oxn){w?UtUG`SjdUQ%8O2L%3!CxzNgRDELY?d15<;ZBZ* z(?amYy?yl`GPD?26l4n%FuuVlZ`+eW?HZgK8N$r^=nKXqO++Zi&%w!A0BADhc+okq z_o?*^xKU=KsgJdBC=QpOq(0X6kA-0eHs`}<*0b0!nwXvs*WrTVjSN@DNx*(DuWs|3Dv_sk18hBK+c}7BX1aBpZ99uf>Hprd zTraYDe$rAO92MJ|Y2#u@U30nIZN{sSr%@R+2ip((FKXa_Q30rODR(;&Tu|JEhELVn zb&6Yt2JyH`umn;a*7FNsY(p@~xTDjq+66;XK8i zb|)hNqPUedl+tA*2&b|D5|3Ni2*C$=mvG}To-n5g>X-_j8W9>!Letbn1%<;khu$Xc zy~EqigVrZ!z}+eu%ZM|*#t{Mag=J4KwDC17o8Q6P*GbN0BkEu1jK8}_n0LJqi%Yig zGk;RH|D_iWnj%_b?flT&7Uj~uk+J}EbGZHYMsc=ort332yDv*kYFW-ZUQTL(OpQy> zLzDZvd8Y*sYko5mqot+msGIH9)$!rcqnO>+^9%aJ&IcB?sH0Aa zk_Ny1CuN(@*#F)!0SG5kJd9<776w%Ol?^uVFyUYFWGbS44mBbjIT*!jgJd7dfAnab z-ur+DVI4%cY`c%?|7Y)Ax7#|Bbix0Aifs=l2FBxImqJP2c?+4T-NK`J)Yp!i_pe1ELgP1 zufE_p_duP0sOl_{+Pv%@Os==N|J%AG3=bK)%eZwUXdF()r(){ZeD*X%SE1+`SoR%u z@XwJLQT^MFq!J1ESr>?v3q#}7;WbJ9HF5UNf6H7_2JqFhR}X|;+mI?X^@M@fER{9(~M#R_ScZ2 zkZgI40nyfv6uC;EOI{Q4tTsUGr&8D|wM(lQ)&C}T+Qsj>m|I_~IL{fxP0N*lT3_nq zVTQG2)^W43LEx#L1}l7RjxQ!-)^P-%x>+%+C=t|mJI_v>asx|**ph6VYhf`iO^L32 zvbvD*w`9r^SPN-nSE0gJqm2WmleVX@V8W)Fwzg2K!{G@I^IiL~!n;q-tU z<%64wpk$Dk!#ve;S9~(^%TrX+s~##Z6W}gDt+dl4~y!3BM*x zlB$g*Zg{EtmnFdQP+D$CiCJO0sSaG%`d=3}-U`EPqvnEyAY6>&Eh7ttNE8(3K&J=G=yl%li_0%T-b?B~W1<%fZ0L>NU%jW9Q8w(!H_ z5E+CuEO^go?FQ&efX!{p1>CB-mvUnDK|MCGou(HxnbBhA;zjPdk2XRH9~T!&!e%;s zO7fh{ybm{i^IloQU<Wub80#r#(UL^}bKtt9Me{I_n`Blu z=A)Ffpt{jnr|!>!H1kDIS2pcIU%fF<;FsrWvu_KbT!6K;hX%$r{p42IS_jDpu8GhZ z7$WsMH9MR$eKcM_Z+!(EHAyzNy13g$nYm^#Ou0EBC;rU8$nyN=`+Q1xd8-*LWq4|y zXxxymBD{1NuO+$~R25<LKSknyK_KUM$h+R(^Az2Z@_w5Tf!(z&(v&7rAsIHuF zeK%?(F2G9y?1Uo&Ai$hvS^wL4z*xo;c?FF~- zg(H`2959Z!Cs^lazc%|9br8LY#L=O*gEa3##kDA}dcF6nufJH1H=@wiZWomxc0Qj2 zC4ZL*G%OR_wU@s$;em+)w%d)iK87^*8+q4!u$@Lw>XGtE>Frt@!!o6*3|q zh+R6DvN>Yn3&zReJA`#s%aY;1+YY@v#S9yv;30j*3Wh*wT-$oGSQ!GXbk6jxoi zBvtxqxf6=pNBx%BMs2gyC}JZMb+JOh%{Jo~e*cN@s)B;w_>#;5|8Eud<=I};YN8tk zm+tc0MlF8%9jWeZB(_{L=Qmlt`GA6 zJ=vSZ>d{EW`7|M{Wd~~%V{FPl-McI%L1(xIX5!tpu%_|EAP_g-kBFWblam-kwNw3X zBq{&3(c|Y2XG4Oy%z>qU(h5xuNh=g71my4p+Za4LHR#iDTO01Id?m^bG`{4-)_JY` zh-C_9k>s&1;ljL_4{cyxLp2H>zu@D-iqoN3oG9n83Y=)pC>ON?+9cH|ZPB#kC9b#1 zn6~+|g-|?HDX3HZ$@z4T31isj2baJzBz+_Ko6?Ca%4g%zk?Abq;(2-ZD~7kJB3Fza zg=*WV^9Gfmw#HHK%^tN-DLMT(m0-Wu$u|S9h6KE)lwOn8n$4Tt-lrE9%?ZFQPF5{} z)Xa$y?`Ce#usVH#*03%qid0X|V&-&V3SuNBcsf#QS%k4Dgb{|oyBb~8%&5hb67Qy_ zC*34yI<8tmfc9ewdN7JUNsFqRACovl3iD(sCmKLOv@^^(0s$P zcwABh4>WayW~1>rmv8pgSUpId)4?ujzfBJk6hHhcWpsqe;Aw^>(6)IrBN#+`3?(;<$Y=a6 z#ZW4(>P62Vk0s)zzb|(;sLdOv0g3t5;j8Xo?P#r9UA=_&Yh?{G02@61NA7o9(VGEo zq#oimRFTrRf+H;Rb;0I|i>S1K^!D@ZEy%}vO4~`y;fCoEes98AA0dvo7W5d`U2{+a z3n0Lga1g*l0p3ZUaeULSf6t<3tHa-iWa?HRyoxmd`Kks8^+Ox%6c;+6PyWN}FXaAh z+d~2X#E%RtnELu;d=ay`TLB1HV}xt95={n>E+7)y7Uy6%`T8!L5m+br z2zSH$*@uf$zOMe~yxGf?2RM`=sc+gsmm z>~4JXOsL|2C_JH#H)VYBljq(PKl3V@;-}2A6}qh5{E%QiyL#*wu?sZb8WwbT*%}=p z7|eN_4$1~l{kan&-^m`K4VdR-cnYe;1qqkcFGLpJQD;oruGo~Ze>XxR+q7)eau*Lj zCFH~3)~n|z35u?}+H;oJhSC zb0A>pIJ>c?abU+@O^b>QqF7YUrp5&vw>DkHfyxaNE?e%_HS$)VTi{1%5f2W9hu;fNss$et9I}T5!D`D?F z3sH}c+TI}v@amLUD$2*27Ox~k;7w|4!I{;LPj#&}AqMYiCPA>`=vB2lnpWj#M|&d0)zP|UFtY()8)yr zSU%z8I3If$@QMchxz@;J&-JhF6SS%EAS71OH|EAQ)hT}D0i%A1U4&4coXv;L_q$6R%yFU;H*VZ+%88QRkFgSH22TUQRR zHB)L`1V%E#Z20DZwv8TYE{hy24l)m<d2_s#;%Ty6cc{3x*9fWb8N;)(?IEskScZ@gzI09 zX>@Yle~TPDXy^JJu1TSSHmaUMFDc-D^t%>@p34qJ>*IV3`9O6Hg(nN$oEZdAos)Rn zA(qPX=|U)SW=fIcTgFw9v!T}z%twk3P)AC5(vFle)$+BsaR678Del zb|8|iAwRCpKeQQZHy@G^(fe3qfWp0)P-Ljdm9)k!Ih&A}bmHx_QKKtZkb8F2`0emm zD)LbS$qi>SFCi5x(FIdO)3Q>2X_?rZNNzJuG`7(Njj05Sla6X_3+&X1eLn~CJlmT; z^DnBkzwsrcCcykW?goZz`T~$r1VIa*3=w{`500p8$IAAgR4YU9hQEp6bGZ+B-kwz2 z5!!@@c`{nbd?s~6)p=~xU6OOIQW*3L0Ua(It^UqemvSu=xv+UW*nc~v=@d$%8g6Z3ri(XCl?=OH&qjF`+i(>d1-5TLiGt8Wu;DJyGhDrcpaBnkNq+ zQ-UioUFG79u=?2;xdfLJtDl@ws!qoU5+WTS{+KtFQ&yt7Wh0ai8(w`L_WOJ^c{M(C zYWIoJBoy3K5wo3;oc5d1P2qj*tWRNmepC*bz)^#SmNaT7gh1WRt^-6Lk|0rtFDCoQT`*X7F;EKJOaWBSLQ+mhWMR-=i+;)w4B@?efdVX}{ULVZ`-k$&qv_@8;dpep2LHtah=seKsLM7PAaFD$s%4ry*GE%& z)TR1z>)Wk=-P_rH`E>hR=$oDHt3UU8)7M`-Tmi@5n_E+mKK3rb{OiS|W=K@o&w-$a_`5bWd1nN%Nq-VdN zO|Ro)CVZWpeOO+Dsa_klo^jzRz$m*!+DK+pR@`c)bZK%M$vCBwgU)NoO}K7XWf65V zx1tTsCC@Wl$sx&@!@r{DjP~1R1C+PWjuA|dlbBRZe9iNu{X{?d#fWaP;d$v_JZffHzIVaOU)|L9L#w#hWYLmw%@>=ckeQ^qLf}i^7#AFsMHpk zm_+sc&?qHGgZ`viLIF|~;;rz{l2pK&8a|ybl^H<dQMAanO5mg5l-k_1@nZoc7P)OdMDrb_V~ZKOOE@?7KP~^v^F)zLfDpmUGXj z!c4LLb}&9XoFF~vn~A8^NA`W~4ZoM?XVd{j-45c7+RrY(#glRM=pFc)4+Ca2(8}+* zG}ULBz$vpNS}5P6Qf7d_J<0ID9QG#}{z%Ack|uurZiDs8ZV@ z<}Mo(0cS8Jj?Ob1a}+v-^n&Ga^#NZj)sc1xH;p^?AWW_a4|^G*dX2WYlNWnY_HJa7?7gslb{r7IeGRt)hI8oUIqzg1B~2xdRv&~ua)l>pQ$vH! z=i?Unn{Sbu5F#f726Ok~$EQ5mUtzP^L}=^yWRUcbeB8M>I-*??ZLZO!fPxY?0Lbl6 zH|r&AIXCM@9Rb(qa43C)Fb}oHam+}D_(aVw z*yZfITjfH^HTK7Is50&arC$pIh1G)$Y&V~^z3~|N<2aB?X=1!cD0I8!v}B)E7P0Aj zcSWTi8*k7BoHnq~ZLlE3-xHpI6+SWum5+Dh;ekl{T=`Hl#Oed;1opZ!gm|W=NO?hR|^;qVALWNo8Z zhI8TsGnbWwL1%Ag>*bGIFJEvgcslaglVMSv4SRU-l$|&>?bvI653Z_{;!WBNU(A zzx%+|&gvkrhv2+UB`}C;vhF9a{n7fa?fMtzV|3~a)ioA^BZsweD$Mve?F*aq)YT^> zc6@T50D?qNjb|~pMpRCsZ0P-iFM1mGFr!lf$9i700o>4b~r3Z+;IsoKgsmXZ- z9TW)#B!=}*gd_{35T$#98HM{7zdgfcBlcwc7tlK2 zm)C_V?9F6m%_HDAh0J{PgH_ae@#oShs);c>M9{nRf81Roo+kTC0>*mdPtlu)J-)mEf1Lm+un;XJ=QgArP?vzFNF5>op) zBfx-yFqVb0w7m1(*0X0znCCk@nZU&g(eBrcLYtLE!a6bdTp~9*3X^X1-Oj<_&BYN6 zlC*#uT>2=Dcp_Z9?uWz2mBJQ?ccFbBc|8}ErVVmbuP`0xCFMaa2s=oz%OeUyvj(?uH&AMZG1QYDp%NSEX3I4Vwlkw!aP)>>^z7P@5Z!*4M zU`FSw58h9ZTX!-_%(?dm9OA)ac>hFCkUr!RgF6V38txzS@JUV!$YEyQj=E@#t>c;@ z^wGCKeKz$A5gyAhV|RCFFd?J>)P;=XPlZnJR*bhXY+dXzaF*er3OP1^)y zYd2t~cA1019+Qq1hFRF0%fr8nkDhKL4)p2cNJMct^9hwMmk%GR&F9~Lzp?#zZ+qkW zt?E}MU3Ks)G_{?l&$syl{1$N9Wt^>XTcG2OGvsXT%SO?K*u*bCq97)YeBBkiru>2* zp$i~R1}TstA`*_w7ABigCK_C9YUxc=`-2Xe@;(G2eN3aHLMFQ91p9<3mO&QE{?IW8 zqsha3z%WuK?Q|UY1XI)~cO?Q`*{?;v$H@hv(?nBmdO6)Avd)naxQ7&DT!ct5H9g!D ziIj}P-`BXU#1(H4P@(ghZ0g~z!hPt}eK56Nqx z6RfyylIefHOm>)M>kyWqi%~aVHJE9+q2KYaf@LaBE7ZqOz9j5+JS3IoKz(ZBsH^WK z^U0Ppv6MY>dJ}pn@60ak$yk`3T&Q4qnqBZtYnq7&8+b&_vYUM#@+Ci7)&ARC)i#4Z)Kf{-`v!`0{8fLv zhIK1;;T^|cw9_CHuhDy`2Sf9s*a^nxPsSIcgYe)+orYd+0%KyZyrph#YHF8=Plu|&?FX{C1zVpH#=w^Hx>mkl+`uq!vs|!F6?VbG z$|tKMrbneE3DMHJ<#i1-vC)NLtN?gKiXz(UfV&fOIDIU~KX)+dmXvNl8kQ^D#C_E! zP}KslG1FE3cHdA1eX3Z?2M&U(33xIZu7ewqE+K`?`&cAOhfi$4ox62F{cdSLmY``%fSAIvp9&*j4l$~ zhZ8hhpOXvv-BH;?ZP6f7T&{e6X{UP}BcK@^;B>^+nF*5Gv7NMPOT!VDNLW2+5edlx%`pLy|)vW*ZHE1Yv=u z5=b@)N(q7a;|ameLJ%O@lgA>5A>!O!3-gFa?g>C`1O%`OcEcVs*G5#Fgp9~i=_J=V z?!h?L?Lp0jp{(24`P27Lo^StYkBjkaYZv#mtOTfo0Ve;1)l9OWqT!ioc5l zB>O1)7z7^*7%P#0sD56%ByBzTy6(~e0Qg(R)xp#L5lvcClv^5|A0lTn?9%S8^TBFH zm#&oD5OXIiCJ(;GcuO!TsNX{Fn{;53V+Y5z(bWKe6DWc)6_Dn3y5mGkk+)v!Kt^Dj zw(u6WpVZi*>K`H5g*GBhIOQ@e#a2r+wo)I=!crofcDB0rmDRf96aHZq@tDgWnyigs zL1|Sims5`0`c`?MV}CKUrdPZBQzZ4$>Z*|2l2__TcEs9ba#&^P)R3avf3z<~{Fq|! zN&yuUhXp%b73f}|vK_I@#xd#^J?fN+2T9Cci7C%*cp&gr1KwiWRO+WB)^j{18@))( z1VIw&vl-Y$9@it{*=6cLMF+Hl#P`e{3%L%TX|y=Vdyzw4NmO(2*2uPefKa1u=TEDr zs|VG0>%;YFNA_Gb4R+MeB2dvQ6n$6SrC*jHxDIG?^AI21wzOW{c(h_&R29cD%gRcs z^hmdmEjkD$L;m3~6gb6eQGJj*XM@R1-3QnTte5Xq227=!)Tbb*0IhJ0h<|wg4{YF+ zjtw%m_T&g9)zhw|xtZ2w6BXP3M%jevY>!<;Aa(%^Sa3nUdHsRRgc_V6v## zBa`;Dds?3m;okdrO_#l>)CX)3rlZ3D3n9+FK1yN5DYukP#s-d zZZp&ea>+^qx}2ef7e(%fUtB$C&-#D8M1S%#$|nFwesm(|XR+$~0~g9JLmH)mK%8)S zpb%9c)aMa~Nii(rdaH6XW4Em|AY-OmOcl1JOs@S+a6^j)6Eq-hleNl*CPH)C!#a86 z@kq&mr%rBnT-d9;Z8A^a)*Il6pW-iUAe49_ zwt>mmX|BnHVFJAxI^~bT2n#++Gi=E zQXHyolBidrSQNP8f?72Sajs`92=Y?KN;+v4IO(_*(u{Mn34g$@CbojT!j&^_Qa^|X zJ9aFO6TzQrGqMuc3RIxs`m$nfiE1EJ)HuN(8Rv4v`4zLH4z2?dJ#sgH=kCv3WOvn01?pNzZ-DRw&PTBIh!r4vm0$vhnoU z4==Zp83n{-?Pj>cgCA8h7$Wb={@iRWqU*9~Sel8<$o5oBXN{H)H^U`MOH6&rbUQ`| z>#Mjp4*4^5?ZT&hgaWVG!9n0X%&W$e+>*0xAQkx>buZdxRp`*!KW zoVQdFw3g*b?QzqVkQ3!lh2BJ2i4C1%L_$OWDVED->#=BLp~eA$OJW?*b%I^64|}EN z9)rlYo<9TA$<_?EGdm>a4Yx;lOk4HV-o}d;TicIqEk1@p{I?H-aF6hK(#wv|Asgfx z;RN3yk6-YxE>?_`hK4Q?Va}gd-x#WMXwNL>2h{rTTnfX+D$FAd(h_@8GjB z@lysNT($O3I-uY2Z2*KEqv+(Pz*AwE`0hVE8jeu!Z+Lz%-Z%N^Zt|Iq-(tfv&2)G) zf(sn_{1Ap=9IZq-&1}ln5dLyG?RJP7dPVU=q7%HLeOkyThDsaGBwYh)ZuYbmSZ|HR zEQZE54C4B{Up-W@B+~>H6wpLt{iIiY=3()LYg+eyt|s2Ay5~Qi->H5+MMV8yrsL5a zy68?1RyZV{P?@TYIO)HiH5}`X;_cmWWh0@z(@Uk;dhPfMY~JlWR(g{bMrwuw!!Bus z=|P>X=TAB_5`-i_Bn%kHm?Jlluw+f>F*l?dC0R9$WS0u~rgY5}*R6ZI)t%3y~-9 z5F9G!FvBClO`sOSKFoj(HQ33#k|{dc){qkNSJVP<=X4A^fi6i1^egfsVZd#Z>f~kXS09?D(93IQIH<^6Ah0<1!_`PSGk#` zHk)N_x%%Khk|^JVFkPI}vzZ`#+{J}laXYM~n3yo3KM7om_-BZKmZp>fE9v<>AB%8j z3cRW7U#bAtd6qNiR2^m8Z{Ub+=a=@K1;VUDRKwzn%QQ|Ig7Fm)lk^5b)o>sP3O! zPKH1K{7C*;(>;(@X4-MIHtddc#7)L1GK?K-&4{E$jo6n1RJcJsJZ_l2M=2l@RGxWa#~LiY9xV4gry%dXBa`D zAPo+Rsy0Q)R!JB4jOUiAC3VvIiC0>PVbQ!FWz3?e;=#9E-D=2rPPM?jBhWi1~ zYjpLUs7yWmXJ>Go0xGh2w|V4`hr(-2D1qiC>y~t*+x;~_QJaC~lqA5|rh{N@BwW)0 zt%oc`bnKgwa#JILv8V4SsC|g)2FK^;XVdk&ch64_&eq10qr1-@zqs3fGrfC!etL3u z@bmC|A6H*Y*Z5U-pseVxIdP!EnLe65HCGUx+J&vzQ%mv0)A}u{kC@l4DFa$hjr-4m zUcun_kR!cqieB=`BXo;=30fFxTiQZnxV{Jz#$rP~js;kBM0YtXC;MaZWE8*)jp1ly zqT=rG{KOy+k6=?_Y!dM1H-v;oz>tN@6eAoD4-Ta2ZCZ&dyheo--FY$E@Ov`(rpG+p zr(8*OHN4ww075s75Rk?Skf)cU@!1rLM8iBU7%1HMM0INsSp+9J3_r4iQ$khwimGN} zloK38>Z0o723;{z)sE!Ks)$*ZA|{qrp;I9MJS>Rq-qMfvo<6P~;O5*f@y9^5?sDHZ zP)t;cx%FNS4o{G54wBoX9DsX~|FEJPfC>BUv>P_uP_VB&YS@(H7^si1`T&L~2~|b_ z5kvhV^%3CY;Or-}1fUm|vtlsecxy~a?Yc5rSwCk@}(n-U@rEI4u zVF}mi^_FtcFi9^-AQ4j*ii_iVNW^@R8gS;oJ{%`C7MT!(EeDW{e3Y;rJ zl~ge2F~xRMjgy3Uk;`hEBtZ}XXN!7_K~*vwwc5*#D)dt29V-w@s)s12^y9e7jVZ8w}B74 z1G%j$!;QU@uwsdg*lWTbh{AyfWPg1b~-h^24&7noz0^_%d&h6`7~8lndnfB2it)`RBVy(4AP>76BES?4b%7Hij!p0C+$lc4n9D!JZ;F9deT&8(;ZYV zeD`HW0ThNu!qvi?oDgHDvFsK*#tmB&xN9=W74uN4+5>P)f*ww{bh2$It%;L_P&Zv+ zP{U~iOI&V_obntQbbv$#%Y;A3e`|tx>*oP-HDV%@loTx_sv~TdbZ0hId}0kLoV!tO ze4iQQ`+XYnSig^sQgt+vPN_kA4@mrE@$eDCB+t!gum-EOuIN4viFcqXP0x8b7ZQ_I zA%S9rHS`|b>9=Bl+>sH%#J12R57hS7Sf#Pe&+K0Yvc1C0!x)>-P^a4f$nAk8#Z0e#1mQ3G_`$ zM@XB1fdGL^BUHiZ@N0UnXngmMDstglO$u<9c`!ZkH<$}-^} zHi>$0QiSq07Zq90*=m-OZ5Q-RS(OS*EXn{phD8_Q3w)sn8caJNV&^?aOAtQ3B|rp1 z-kJpPQZ}Uw@V6lfaJSdRn^om~``MqSLRZ05dYmU;g9{<7l*(9LZLS&NIz)KPbgla4 zl6wP*Mk03T9puvwkMPgis`&`eUHP>{qpW>EMwkI9B23K#0bP*A_}A`04m+2;$nI>*dHFE3~u17yT(&t)VA>QTHt+@ z(s_h{XPY!EbslEVVby!7EO6Fge4eA45rj*UP8k5 zJy++v;%R69WVi=n+p{NmK_d!Poc;tWDaTQn|w4rl~mK~!oz0F8eny#fWKk_F5CC$L=9E)9p))qAnXr&tvFU2p&Bhp0lFADL}4HaxYd5y4;0_P=&c` z6lWHo76U#-=^eQtj@z6d$P^K{XUNL$;g=j9j5c7PqLe4^>3YgAknkeD3>tyc) z@s0jr>c;)W!}AVcuxd5j_qh_u=3~1gKuS@J%0C;{eV2Dc(0;BJ6htz{3?cO#)ti>& zY&1DY05s;SFjyiWIG{ zI~XfVA*m0KxZ=zygp!Rwa;avd#uuEWAcx(GED9d-hOh{GQm1y0FXeD9z^P`};WS4$ zDNTm^Sr^qq&;5(@ho2`4I!%l#8wWU1B#Et*E@?=n+1a2Vn_UXTYVkgpE{{T5o=nvn zIsF^4;-UzyNznF-@GmIGZ?;w1CiaVux3;ERlb?2sK;R9|C52iu^po?2P{c%a56 zjM^{_%7d;?g2C~S9MYj4zeyeL-5X7$aDFHw`&6EDo3202d56BMtS!HyHBz<2ofYcV)~tE>6^ zm47;MNK2orouy?OCb1g@m%a||L9oV}5&4|`dE9-&FSOBtq{?!2{v0>g$Q5+O>o|Qbzwf56FK2duH z$BB8xOw}7Np333SFO@|Lzn8-g{$;0+lxb=FX2vJL#m+nBIU7L3STx3n_|fhAoJrzb zNT7|UM833Xwm^|2QaCj}FPRY=&R~KSwcneM)e2hl#U%&I5_a?JHSuWVBHh~)6{q9{ zUER3aHKM3H#5|=dfi0mrqow>c$v4wjzED0i;!HT*pQh?gOJAYRY3M7Npmdgk*4n!; zb)bb3F)d>!I@{u-yOu{87Ew)3ZW#qLjPF>R0$=fY+GpcQuw{^@sVp{#kZ?^3>~Q;L zx|!5R#m>-orJUJTrgZqmQ8!pBhsw*ph-E1*qTJLb_6mrSjYUTg1t(=)AG_qtRKm^V zPGBqo#Vi+(18ic#bLsJ?o#mTb@W!>POZ*!MnkCYq{n6s91gfy*uC>A6@P2@xOVTKzU#_Voy$ zzIH+~ACzz)aw+!94KgxJ$&c~mS-1~lVN+KEAVmN$cyL#7!A292_6{m2Aezm5p*b{27FZKZ+kthw$ zW4r)TumoTYsfw4^Byn$${Hy>Q@G&#`DlT?@F+?_EAWei z`KdygYj-8jG)map1}pAa>3YnebX7uH=-h&5RRa+TfilBZ7L*k4Uyzv2U=fH% zup05^D9ZED271TI5GGO;uD^&bk|-{rU7#vee*&+O6XY*2o$!NcQOa}AM zc-IMz7TxudhRGqYhX^2|ON&V!WeLXXZ~BuEPaGnDZ(_ak$ST7^WQUm~j_C_bCWC~Y z%HxO$WcL+Fdu^!lQf8@=oe1QSga5{dDZ{mh*sz53fCbN%>bSGl@^Anj0-}<@0v9KY ze4^)+F)xhYz!kfyK2yNQ@K-!RdHZl1RM21AnnqzP4r3IE8*{Dl5cJk6K-gmhwWAr$}{Ohjx((7Ev-IiTP%3Gq-l0i z?O30g&Md>t?PieEw9k>x9Ok%+)|N#OrG;nFTg$L3k^0KNUG$jiex45xjhN1xaCPSY zSo_lEZ~s(HD;=JRQPtdmetX34*Y4T#R)Vmc3$?-N#7cx3li9361N!MoMBt#yIG}wX z*5Z53&=|3+wotGLetHjgtgOV$X$+?}ixTpj6jHEj#1ObV)l;bxBqY#Av4WtP5Q6j4 zqzxBo$yg=mhV-O`+Dn2?dnNRzJeYR5-~<)knKKj%MF4INQzjtjG}@Pg@%hpH*Sv8$ zaV@kCObiH;kG;2GUIr$yqsg^#EuGvdlD{MPCCCMx2Z(EEP3gcSJ2s>yC?Q4}Sj)|c z91u!!ar^v?I*3t2e8QuXRO|Vyf_6)nKoTL0swXGv#-3IOdOJH^Ky4hg7{S?QHaKWR zitO~VWl6w5zV9y&r#qNisFxDkB^GzNOG34WZUR`cLk=~Nw zjCOiJ`JRp3&1Qj-Q;6_YQ38%vyjKq~WcclIOkfXAff^kKX=|B*b2(fOkxCY?ULy(1 zlGrzrqo@B?@S72;(`%Ek2+tNXs9;PEPg{ze>#T#;U3SCL4smRrsBhhXEjbx?^&*Nh zrmRzazgccK=J60Q^ zo5F|nl{BpqRm;2x6Lg}mKE%z7oK6RFro%%^dE+)xDF%ppQrhvUykaM>Yk>rftuPi6 zv4*Ef7}RIe>NDQ=XzeM=!~9{<H{G#3G&Tq;^LKNU$1uiWH( zx<@Fw%hEO=jDXZvLMH^&hilE6k*?!L9*;P+#gPV66)o~PwoPZ-g5{TXSnTuippkg1 zaA=ll9kY!mF4h;43O`7XbJQpuwgt{_#U(776Jw#x3rdsAtaTRqq^)z{T-$SUFAU|c z{b5l@L#D*#n zqssX@7T_(nD1lW98ssxh*d6{s9=<^?lOgi^9Bzqe^vp&cAaPt~7)^p3o6}nLcz7VG zh!E451D#OdAiaan84|w{DT!uB(MsuT>5JJD&y{obcf}ZuH)2#vhyi{mzA#$xq(-fG z8CTKcc|hGsSK)c+hz>GQ*;3C%WV)24Rv!eUOK3<|mOx)gLYscXrpHV>%>mVEHPJ2t zn1h{sJX)1<7h;3N4u`M^PEmI#3F(3ebR(oVUzgUGYC>-wwPK@GY!jSTCCe_A_LPi} zIk=6N=2GjYJqYR}TwjB$Qo5bHe}47nUT^*N7hiPokAGhIeEDufei3OGskkjVQ`L(;dC!CU-u|LhU?{QY?Hb`8S+!6%FcS97UGHl%mp zd48)A)y(Smu~?Z`7Eo=WEIiOw00Of%+hX|7?!ZmcacZ=N&WX`W*sJRu`8m1yf9RA+}?o~vDRQb@`5tLOmta4{7H{? zuxdWgfO}tk@>o=o_*=2|X}@xsO1Qb`D_!k|Ve4_5Hyym* zV+uk_aOo^&^2Kix(RYQlP62R-$IL*!`6O^%L|DjBYVp7sT&$kFNc%PdtFDF^1IW?h zkN~K^2ZkU3XGD=)VP<7V8e4Kjk-9L2V>Idk!8CA;FBAh;ko)q!s2vLc*&qqzeHl~2 zDz7GS^yQS%8%8KRqMY6}hAMiQGiI>3H#!rp2}0=9%=jq`*X3)m`iAuv^X^p$Aei9Q zo_;+NaLY5$5-rsqR5Ta6S;Ma5Z_mL-YG!U$gRp~7=uX$Q}nW3ROI4s&E{aArF0;c(D<%= zWfgEp!f?!wlW<3Ae&W~XZhHX4@_Opyj{~H?rr@DU#ZSERMQx_Q3eE10eX-y(C8Q~# zB=AL?SEKGlY&#`nH1N@c`kR|jH~)hhL7gf;-fa52um1U~gMaE-aHw3AGakXhgioXC z_++5wS^cl7oVRbGeTD!LP>hK8gY;%okD+C%Sig2-Vu%SzOl$BfAvzt^{>GwpRkzTcGBDAu;O4#^}mztI(_#2mb>AaL8G zrn9da4Ht_ttunZhjcd|P)UNueLcza40<#CG;QgI{sVeWAXuP zlP0|J)Z)v&eqgAPqlei*>|u7{scC*$ajEhM0`mBctk~k$80rnK43w~o;(T%lv$z=O zg`N=+b;Vyr(;3`&wy?>e!q-^J3q^%Jar&g%Hg(~&b`~Vs#Sx0woGT<wJ-$1boU$52;S1M_a@F$t;lcT_9=Y8i?vIWKoM`j2>G}DkK1t;1 zw_Yd>ei9iIag^x27D8k!@1C!=@@|lCKk@xqq@Mx}R%0DJTyoIuY(9VX!}r@eA@LDh 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 z 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

    #n<|i zaQmIxVzmI|0(|^xx-pO^tQ}k4LkpV(xkCM`Bv5`+QXV-UPI1uhbi&&dJmN!rTF;A+ zOSe}&5DwEL{n`(rF`kW!OKGdVxh@ z23~^qW6JEl%bjx#14bKIBu$nli1M{0a()-JM++(LQvtV(O|4Io>*{M{x$K4s=(^e$ z+|TzXsucWx39I@#AT_)5FJYzEi`FizScqkHVWo6!4OLrGx#dF^RX8h!*Had0W@!3( z?32Uio?kydfap>@vOHmeqFM4*cX(40SLJ#CiJ4w7pLv7n{BB|Hvb7DLGHWplM#EOT@A7A;QNJSr-WCBEJL`>j13tb(1xV=MWUsS0-6 z9ky@Yj{o}_ufSBt<%;6->N6WaZJHnc_}6g=ETgs+GUnlvjG0d?uDtnYFl$iA^@l&U zf7m-d**|2(#yfX1wHKcr?0nyTarj~nFFdS!{`By8cdxy3e7y5BUVBvc+R^dh(a!ff zr+aO9745yBcK41>G4%<)LD@%v?*84D)|e>(j*jW~QRy7@p!@$Lw_MTMYl33sW2^$z z0591!oL08d4LZc3n;VhgOs)lFX;-q2Aik00EgS}UgyUp@jwV+_`lP7pT$JcVY7XB1 zZ2QygFJ*$O{w2a*;j@y7t-hT&6FHMNnb z3mMZ!Em-O9(JqQUmR@(Oacrw+w&1N3KbU{4BLja?ubgSOnI0(MwC)Y7E0S!c{_eQR2taX9gXhF)=Ul z+zh)@pxf@iTfZ6JNtft-QkFez>M2}%j)L%Jn9ZEc^Bx=B)0szOvKvq%C)GJxEdC%g zV$P+>u)lU*BZxWb-@^B#z*lI!b#Iu|=pEL%K8oj+RgIE*@{RFP#M-3 zFR>{ukyT-6mmPxFglGke_)3RbVa(Dxh$8fpzn&u8Q6O61hX^J1W0Y$zALjr}r(ok& z5ds`i(m*6Ze==gyqko0~V0dtvAp-vTGo2 z!l4Dd{W(hLU@};gwCO!tgm$>NYYl&gL{m#E42d~L+)nh>v*7d= z+lUEElNn=eP6uF1jf)u=EZ%h9!A&q+oarIfg!%m23UdU=M)pcxss+M&;oLfkn4}ma z%P70Un_Gn57^P&SNLp>1=FleK^S6;8xN6xcP~PvET^y}2b#e@|C_j|8Q$CAnY#|C403r%sH$9(N3tw`BOD>4X zn2$fPVlU9PqLclsNAr8%3`egZU?KBx3EQ*>TXVM~{*n|OO9xik7G#Ljn2809bLx_> zaeL8Ctiyz`7FfzJz<6+Rh$4x*2uv(uj4tZ#)QsT^wdQ~pxafyJLQ{RzK|e(tQo$~u z!9HToC#9p0BqT2#e5ilf9|CKHkv!EdKI}^P79Y{3#|ye~um|8AL2_Pd->Mdhd7KeI zc5mrPQz_h6fej~vP1u@QqWBO0^r-dxy8v2@Hd|ubTo5jC-nQ;2Rt_a(c7hMkSVDh_ zN68AMW4qPk9#!iW`CW|m2hWObh6Ej8#=)3@ZwR!YrAXz)Vl^gFN#G~Kb3vI(M%}EeQ-0jLM8#Lu;m485 zn16!0+#X_6DZ<3xtd)D@3E8b_^CdiGyIZ!MVP6OBdV>uZUri@ndh#^Q zfCJp0u~ST~DI+iiJCa0-kJu_r0|>=M#HZNaGuTiBADn&DA+=Us2NA=Y5K6{-JRoAv zCrpgqq(a(syl{*w#0?14?+_an5Hf-gA`u#2IG5^o-Tz}7R6eB+i_b+8T$j_CEPZb- zx?}wuM_8pdG>*`jPKIsNpk*2&Who9xGFhpK4WOCYg+J_7)b^MX$%w_~MhZ2|B0?Af z1Tj!}7J&ehN^Tj=l8N zTBPXVHDec$f!aU|(w<@(0^N5zU=yU;8#4>QU{Z2ch7T~5tb2j6otTS(d=#mAT4$kCm9*{PI9*0m^dR1@KKT=RsTr3nvIf?MOs z+v_5Y^4gU`b@ zuh0P&V?ts`NQ{D8qb5EcV>w1$_6=9IM!G!Rf4+D4lJu}u5JaN|!33w}Z5$<8b7yQ+ zD@ASBi~6VN|Nh;}r%(6Td~6Hd$DB?qjKLT-j72u}?I0$K%pC1qGxx0L@ zf1$+8-`z??RSh;kMI0DEA~TH5*2UE2)LL0txw|tuzmn*$GXyD*&a553T)_30%675@ zv^*7>I>jhj6&eZN`oXxhiM}Aik$A!y#0S?g#h;O71gRl5IQbBczu0EZlKF`q;*?OQ zeDn`lz7QQdhu(vXB46m!KmDU62NV*^38y{R{WGNlTJSN?6rnYvvmKyRDNZ@=9#GhO z-5*ZJblyNijyQeaD2JWB-2XEFi6zxh!1VSTj2O;QY!Z34-P(h&clwqJ?ARM@skTwZ z-G8>20y&J4yvV>Gj9N#Uwh)($Li%5iJv+@3*}j^2d&Cd1p0L;`;`>3*}% z#=@tp!1QpK%N}G~CY*2UNr77d*hdLya4^^jI{D2xj@^BcbSkpw zu~;N#0aAJ2^B=?z6GH{gAN#6(-3q|3I!0J3YN|$v;RN4Cn*x2<3H5s!|vJSw)OGlQTklzazHm*>Xi32~Dr2!;g54eXuuEYP&g;}0nqL)b%ZQF@pbPx|?E~qoQoZi4HfZ+qXoGDi_hYNXxRiWYfFpInQ zB<;cqxQam|uX3d5oYl-JuT5_%I~mhOvgPxL^~|1v90_Rz+52TVDVt~PJvWFQ3=Y=?+XK0tm5;%9dSNz@4%-VJg~FcRS5oyRDB z(d{V+#r3W+xk-M>gZlU0y9qg3P!Oih7m=E zUz~yJiQJ1-y7ZBCsz=j;sA{XQ7qaV(rq zsuQzpRnF%?6@piDYH`lzAc5KDaz5Wyz6eX2!}^&oG(Ab&uN?0u5G~05S`ZEig~kyP zk5n*}hy+fygjDd=e;8t6_j-stC0qK*I!p!*STYz~78E<`e=ryy}mlUTMB2pb9;M@YTKwa4XZ{m z$?!w8Mp?Ejlt+ZLi|}QK!6kAfzNGEBiE~$^eljrCzv+x5SGFL0vsm9fyO|-Liu2sg z!mx!^T4H4hxOw>74ABk(5V5TZbi>|;WvjvbcpSAA^*bj~W$y{HV;HSKx>i=#?QeI_Hs#h9DO`947T>#If2_=yUs^OS z!TIuC4cBYiM`L8f>gamv`<%!{@&`$ow4|z}S!uD0m#Wk$9BKs0h;g9uEOjCT4A&<^ znmSC@&6!J@YUnbcvvJ0bf^A7ft7=r*xkY7ORQQ4*(Igq^Lum5sYc60Qnp8NoM4LitGkZNx>Q10o9JGEM7UaZ!Gj1P zA@es;pB6v)3|G4r53d|s;EaUB;yf*xhJk;>>Jq$l!O}5XGEj-b0%CECM=3*<(b{Jal^-CorHwJxU>@5@}%MUm^?{rZwS5662C}wMI&iof2!8u&9s? zWaUhESXSDWK{jnknk=#Ajge4Nv?;9)C>y%pLdZQ8PfKhSDS68WtKF=!2zSxwY*Ugr zv+dgXiWXQG4dt6u<#dOb5pOgCwRJHwIA~$~$Kp%~1L9%K%wZ7`^E5-_tTf4tgc|Ofx!la4@eelRPB8Tr`7oeSbw9>a)%&4nh)DPVTJf72DhZ6x z=1SK=-+g|E{z4$P%?Ck z1VwcRh2H3mK!IXCk&6aL4iD9XV`T3nZQX)}aTb(JW3D6k$Y-p3=D#1K}?%!bHS4 zRRA%W-CuaeRgQ5lp@~#~F1?TX`J9b>Z@XAA6C_~+xwSZjlM;`my`(V8XruLRr2^%9 zxynY;pdh%Y410;f9CCCe7Rxf*N$Yq^NBZElGg31%jaoJR^cAML7e*vQo`DI})@&Bt!sw8*behay+6@amho9&2ee=6q=YD#-v!alYPxu-(#(z zdZMUJ6!}(0xS%%?mavN9af0#1bIXyX>ZqlK!UEeHW8d%_l#RQU>phT+h(I;7DdLC> z)R4&89tk-aqpx+(6{L96OQEY(_FAG=dJat5T4G;yi{`NGd)-sAZnTvJC#U?XRA9|X zb-(SaU3iL!Vvrr=ca|EJp0}1QMB^I2sR^KcbNoG~$+Kt(>Ihg6)L-0`M`BsY%lr#f z_+ZI$9#q-EwSOIw#YcD>0Ee@s!BYb+TPy2gBuOFQ3#7y z^|^ck8I1xisGeE$P>7~T5MhfxkyNU;noj27E@KP?*$Zq4Saw}NZWu6^3?({|BroTj)yVI#ZYKn@Y@G0U~A^YEXW?*s1mVjJ_1o5wQ~nVTz^~ zx^f&4<31s%8Z}fJf0|_&Z6iG2F$ExP84gBC0)I}-kl=)2qs}> z@6B++E4JywB@oP_S|vL4r0nr+l8${+noRW8J!C`P zf7Qm22Nq>0=RZ{w64#L8@A}23_46$t)!>LO8GM8Y)TGBta;Tuq_!5KXyl9X5)c8^I z;Aln@^O_5X%E-7EjsMesTKNZ0F;6djEOr9MEdqz?Za`<1u~ZvMT8jL3x;WCq)ymN4 z3ISDIFf4EWn#qt@E0JN?j*ao;X5#Yj#P=g?7Y-ZGnB0%Ok=U@}UFe#-Qt|?wxMh6_ zeV@W2D^^X*MUx(|cB}qd3})sNdtrI=FTa&a!|vPS(tt6DX37$t(=EAS`xX}xe%)@t z4HJt2H-E1?R#MwWBB>Q*6_*hyElI7}k6D}EvBb5|Xz_CO>{oRMcSD6Z389>&Ma!KG z<&G_as9NR%34feBbfbn5jC5Sf2WX)T%n>TVkjjtuPJh@ruv0vwOIlQbb4bMvky#47 zXAPFX7qurr62t1D-G&FAPWOH~71qJuKkOXuKHE9I$24*Ig8<_1{THVX)j{P9PB5r4nP2_>;#*jmY|h*U+&KOv$kY|a0KT7$sjHWFTr zyZQM8cv^fe6dK+3DJW9-K<+H-f#$ybGTpvsVL0{2xV0T&rK(7atMbUxpDx8;V-PvEJ) z>>W1o)9ptKo1&6s9V{TLG`z$XNuqTa=N;?$cM_gs_HbS6J!a@Urzg7l;aZvCS?#eglsO;y*oJ=azfge z;fnoiG#zseGr)M}El3pX(AU#JvoRl{1;XASEu^M=`t6*64_A&Y~ zvgGESC_M_j3?8B;j90XaK$fg5(TyIkLu)JV6@k|L-Y2I zS{85+WQ)zqj4zT?*CU`zjn4J0m#$#O2o!+x^Ljwd_J04cIv@b|Pxau^J$V1H3KaKR zpM4ntdfY=zyRpWy;pR}utVMsJlkr?G4bc0M=fkj||LZzBw8WuN!@LGGs}RMxPwZ9gA@@M7$g| zgX{0S5q~0<@&drQ**Q;w2%T?}zrdo`2wK4wM;T>v{!s87w# z>CZ=d?eG6%pB29!evxTVDlh!U!9MGzqdp=lAR7Zl103)Ch{vDi8k`>N{jhh?ezM1M z-MR1e`SX1?TFv!QwdXrO;rX93^Pij^qjBo@KhKyVyz+GaKx(dko?B>m>ltcWW3ta5 z=9UxQIzC|MSE%nY3~Ua_TUj3xmIxZ^x);mGjAfBLyo?1^7D&b8RWA+e*R?+ zbbXDrI`P`02Y>qV;pc!|=99~^ocL~QQ_55#E8)5=qFGB-qK7W(PkXIOeUm~mp&aWl zAv->ro#Xfb4Y z)nU^3kGz*O*l<`{Nkdm}^~JcI#vSE(=nOLkz5eoS(9QIs2%souCnS zLG9D!klz^Z5+>FzCJ-*t?!gwM=!YLTgOC-}WzqU@8>MU(6RsC1goe`N&Z{d3RvRgU z-gSvpzr^73M+^=<@y&CLCaXy~-RYT{Cve6qdd3%@6I69CC-R4JWZWtZlHO3U85)$5 zEfA}W0FGD%ZE~!*#60ZF_oCC-jCqy?wy)1mYAvu2!3cl_kR#Is_BGi63BLaK+5oo9 zRn%3AsikcI8)g=3DH~g|j=ldO+5l@u>bh)zrZ^TGAVu_tZUd|z_iL~L7RGzV21wBV z9&CX9STUGzUBw2l^?;Y*bZq^uY=8t6vji1wfZWUP*#@x0RW-QKz(Nfi0&4-cR{!Sq zT2dXytzC8*W==M8sF3eW3tRuSkNhrnpQ#Pgyf}Qpm_sg5AW@p*y}!TQJ7I()7f7*J zPL2*=oNySAZj6xaDrNX2uf?Ji#gAvh?%T?bqc{Rt_Y|?R%p(>y8KX^lXEGhvKHf!l z)XKvv;PVIV+gW`kA=v7GF!*sGWV^6AVw}TjUTtH?cGWOfcp8! zUV#6v>HU%k&YH@^@A-7X!}VvUr$=7GEi^cdjO&DNg3+9WM;w62OcoAZAV5;ZB5zCi zfFvyE^?ByDgC-WYqwlge;TVaVQ_XdVr(d4t zjn&#Fwk+u<%yd;85TOZoBNBWjh}qoG2^%09-32SMEapNTFvy10P;P|~RW>1sNGhPt zs1*ZI#q4s1FiD_BkT|)Z*fPkLKvPW@>RM*4Ac)Mm4#a>vd=-))W{6Q@RJ_=Z#k-q-x~Lu%jAG1z&p@jyD>3jaCvU zktxVwkhv#ma1lL9R+)VyVh|Z6;eMeHirciFD35ELqc^zahtv21W)gHfhJTkJ$i&H9 zm4wAU%h4nN+c3ng-Ime(F=OvJ*@$(v497@xmMxeuTW)ORPCR~0W4@7OFfzbicc$8l(~8Rb`ztduX=mg_*W5Wb9-L2^p>`a-M_lU6yK@NxM&=;MgUC2P6R?eoPhCxSVgjmE(eicB})rgPapZ(sCr zELPeBd9r;9R%ogK1HUtDr| zh_c1_iqu8({974tSFx{Qjsh(RghlIFTQCgh;#Qa9%FFF`Z=$2wV99P94oR}l^*)OT zA)7w_*~+imPN+LNNBkVc2ga)lAl52U7@ZuJ!Ut|OS_z-j?hvLm@)?=q?@ zqhwUvfyedrDLNo^*x#3Ih=VEEw{LkTI3nv1S4bp9!q!5Kw(E6Duq=Wn!xOtsUs}-; z-1!LoEz*?ZUBvuxFF{n075yLeE;}P$>2ms9T|`gV$C8ceD4&h>;$yFfZ_VKUCz^8TDN zX=lcBlvGr32dH62q12u$eb=JQ~1PWql5&>pUOi8YhO7s@w!|l)O zlxCSodV|;f(Qv>ba?UzS*>sdh7%OAisK=qYRO{VDe#~i+C?hIc>l{Xmsz+?FV8COj z>+G(dRmC!6Ol>Hq$LKap-h%oa2oPX%Z}55(!9%e@1aC`=j&L=$VoE*fO*%-miSWG= z5p-p^ga#rr$;GU`1yePe)@ASc@b<0mao(EHuk+fuEHmpDegw0gNhyZk&G9EIEgUWa zhf7wjL>aHqcQbb6>A31JOoq2LS~>UzVK7hR;Wsz%L@2pNQg=g= zXABeBDQy$yCaW0OoAIK2(V$+=yo?7>IUqe|-8>wu8_cYs$_l6^4VKAR8R>}024+Z? zrxt=cbED#gnvY;$k~d&j@r z!NJ(^&u!hSJDN|9oBtVMWL+|tn3tcrNHM%`r4G;%0+j4o1tQaWxG|CoNGL1Wm1iYI z&pJzMAK2=Hp-p&}kvA1J$+L(AUYv0~J5fuDvuK`os5~xjV(cEf zwx7>B#4ve-x(A2^)eMe@9d>Tk+YCrs;+nccbioOC7G?mi;tD?=@lg0z3J5Y`-0>Vu#=G`RmDsxTgISQd&^xvjvq!Z>e zx-=4Ty7=yqShluM>7KVqN;a5U=C-1|VGd|#BGg0P@s%q7ts;g3?o?cERK!RE${gOHOPcE$K_e$_jF#a<9I(b81RB-B}=X(LS~ zOTSor-a&s}xu(pidZ1u&>IYl?PkQ$HWv?4R4Lh_L8Sk-h!+0ho9|nGJpf#$Sf{!!g zTe~BqTq6f;2`;erF9)KDjdzD(#Tgx9qw1?AT>JNIDVra|cVpNO-g`r=o)p3X>O*GC z3W)->b(-G9Ng=Bkc|caC;Wcc0;g}*T+hQ=tR5Wh{*5o>&i-VCmoNO4TEyZ2>jao> z139P13UMulkN1uakL5t~%UT>i+uQvc`ZW@)S}gDKB`y74i{+OuIczFD` zlOx^wN43a)dGrMJ;sMp8S{gps`EE}tsn_EB`QGvOGDa=JzuP(4L;K9V2%V2=QUCmJ zJG-a*KkT293?9{DeP>so%Awph?_v7^5uVwU;*E!#WX2ma%FOv7J1+=nZZA$w4%+_K z>A}fsPL=~Feh+`YepCZg`Mpo^UT$0B_v)eBKSH5_!-F68+CO|&16cIR7d0>yuhh@9 z^AfTYM6fTF`!m><7oO~YuLb*Z`yp?t8w%rAZWE4< z4}ZdOHH60r(UBV>dgXJxk|SY#MUu-4niyI3!0?u>R>y__|MeExG*8)PEdSuTSN`3v zpR;C0X)J$a$x<~>Sr?+_(TQBgE4|AzR!1v6k@&(B zbVx1zjyAJTacQagYvx_FWn-~$dsmg@#;A8b9Ce@hBQa1S$DuBoRlPXJ$c@q4W-5mHT)YEWb96{QebO1h0fr3^1R@y=FK10K^<5-~(q2V6Ht)yJ7~03Q7hyur zz7xhk!9T^WM7TpKyk>OxA=PqH(sIk^wC^)($;TU#>Wsu#I4LYG*MI*@3D6}@600Nv zo4r+nd|o`mQ&6OcqrtibW7mes*yF3A*~_AdLxHLuqX1d|*pQEtAI zy+<%-Eqf1c&h5SVP)fB~{-M;hx`FB5`Ea(gik>;gg^sGM%elDBJONV1V^El4-f3%D zrod3XnD`Er3b)nx!f&_n9tbbE!E|cb6}fW`^@$pb!?sx& zfoPw6#vI9n;=5gRjvAt~O_uPTZ{MAC#xf)PCyQ#f8I}5c+zc(FxLih$>tsM^!(?=_ z0c_^QUeeiHcYY)&7=m5o>WKrkWF-? zqp2BUD$;^Favg|)f#a)~tsL#GCboH<+|Z#aR61Kx#zlBdW;;l36DFbTcSq|$*)yYc zSC|gTTKoaZp7Y`GRlgS)cPW~O?6F}Inol%>8e$VJ0hY)`1x?kFR33ys@{| zA#Zf33bi(tHxANoFK>2j6J6doB#q@wrn=DHfcYP5A^V;TWx(Yqe?8o<(>P8V5O!wu z$BZMaW%1&%<<_nOSC)>11e_-i2kqeiI;=?0i{-DU_RA~wz602@$|@))F4MI(2fZFz zaidTYER*ZjH($42f4Tke^X<>9-f8K!zER z>#Ly{fxHyDKqh5$*=h}6^<;wY>MBOfiDGj7YakUn&sx41l*bUj$~G4B24~QYy;Z4m zAxP5GHLYl2;dSSz&D&A`rZakbAI+|YgD(D>uO#LcNRO9aTzwn&dc4Bt0+}yKaWGiA z0s^9_s2hgE0|SJCr;sdF8=~JWjt)0b16|G$1q&-~qq+ktmR}CUL-^-;K9JDPXai9!kTRNS*(&js{p#(C~1XG+MRSyP5L6;+z zzKCb1JKZWrWuvJs6Ge}S46@xhqPn(%?xMIIk&Qd&@0 zUSTc9&Q01-DR&577ic5?6l$g3-!eY)_du1I6|J}%6hO>-Y3Z_7B2P#l4y7YyM36zx zcd8O7w;3h+jo_>V98`G78zS6(`@q6c$R6@QT3G0cdqfEmt$n3Ef(YSInLRQYqMIak z&UC~YqZT2K0HE5eXo*I`ainyUPi9lNkHxMT^xJl#*-&u@)X9<%G(C;pcfR!B; zC@=G2b_@LavDsX0w$jv97qJ$@cC9g~O*ktf6!Xn-ALRSu?I>%k7P^@r0S$9OiY6(i zSs*fk4yq{K$k@+UXQTVyIJr@ZqWYgwBIS=iSk{umU?h-=qE|w650?c83u-L(B{uD{ zV7)s^gAO?EydkkY5i=?Uu^h8n3fUBg*;OrtYzRaQmPPhrR#hpq5>r7VnHZxjOY@79 zBZcDnFa)lt!_X{pEQelV#L#+zazDrA(*gd^x#iuFCDst*SIXfA&RGcCUV|{7bjYz_ zLLo)i*Rm8b1`7%U%`u>4vY64CZ&L1qNj0u70^x*lmffT;zAwWGD^Bbtfo8>>As>XD zS!rWHKOBfaW%kA8u{1a>(LJsp-k^P8kCj>F+|1!fh&^Q_P7`k}xAC?!xgy*6mM$<1 z&1cN2L9D!X5Iav_OX69CAUlJ}M2W073tTZ?rA3>R`88VQlhg&RYz+z=urw!vg?&20 zK0O8ap)3g3!m0`}HX10Rdd83J@>Ll>nB`^0PptABi>K-*PIu8dGGrh2tf&aVD0y1=%UAFoB2Y(q-C}b?*0w$}UB{k~NHcq~ zn3)uBMu}z(wno;HyoEbj1rZc6m>90NrfjiflT&Tp6Pc$s&~>S?cCTbnX1y zA^prj)ge*wQhNO`AJu{IOx$}6GQR2I3H}>qU=S)D-bXYOJOC8N<0t8+%n3Rj+x|Xb z{9;8aP4-IBvuug_=JM7%tz_{s5&aZg$M?5IpX|vVhGMjI(HbpM_C`oUnl)9?^Z*DD15yLad zQdXD3t~NFzjcWVqgfukQZH=T+pFAgdR@xV^hB6@dcv?2@wRM!1yzTpt?6|tE@x?D- zeE6o%Nrh6{&=C+)q#Bi{Y3=1myBRp(GXAmx9`*6E+MV8`&&mXu0I& zt@vh=cMf~8Qr|QX&8kSz(Q;@pB~*9*9x$ULwAdehDFkV4fMzI~Lp4;B&f=>gNK|f| zk{&p7B)2eQKuN&pX$h|Vyc>{j z>(Y4YyzwDtpvpuxiS~SWb1Oyd-}KH9Cmf+SQ2^>57?3?(UCF84I>xU^v6K)$ObnO% z&9K>db8H^RQV4yBn;7X~v|0m5R>F~#t$bx%YTo+{JjOJZC%KBDz;dfVumIW&W%|uh z=$b`;>qQyKPez=9H8&Vi9$gbr$>d8R3AbJ{G-cI&R;48yW;wZ4A)>&vhV1*!^DUpp z;9bZ9wJJr;L|PSFyQuUzasXDs*EvV>m1In+sIIFnupDuc0cI}CQ)!sxU)Uc3YPC|( z{jF52sQiLg-KZa;C~IDwCjp-3akdRBK*T|wg2Ix{TGWJRdvy5PG@-Iyd9=jFV1JAb zWH7xd%bE!>T&PXfjf#QPfj$iQsJ_+&U=o2eVwp<|OCgnKn-Y{W%yQ<{5&YZ2|5Q@n z9reGv75GV!lJ;QtTZq}dFKVz@B;cFz~7G=*GFlH zt}2>B?=`sfyP1%eGVM)fk{UfkHFGU`g+oFeND^SRO6q zKp2584pWiFt=-`ir!=^)?nRfa45n${a^p>_=BOcI&7d$_W1|}?Y1&IDn3TSONY9{m zj_flbhq8^*Zg=6Uu$p6Jc$Hr|C%Dn`>YmXBIaZUqNxjZF;98Duw!9F6wj;c^)4e7)1>7@T$n`-?U#$rISYAuBNGr9$D+xK9Z_?HliZe_AA)in_|3nGc~L@a*eGSP^G z?KV5tJS~1}RHBV7Si~qAQT9ha@fAc=)cV#!lHvpQPSZ=C5}zYPa%>T$DVBWuvs!2_3;iAJoUp?P!svSH1hO@lIu5TapZ+mFThU3i54gF=NTer*su0DJKcMJByV|Vol<;;$EOx$DLuip%JZxIBlO2E zwes+AkA@QSUopCrf5H&3KXEnbBc4OwhR@0mFaM{1TlZn_v~yYa3MkoFMsa@{m3J^@L zdrx}T9rQ;L4qe0~&K3{VH7Nkk|}Nx?`N;@w@(F)A$#POp<3E;TC7Jh?P1YMFG>3XL&=WF0gH z)w>vt<+sARKlC*Jze;!^9nQBr+Y1F7S*cZ`^h2{q;j=a@QVJAR@&?T^;FMb^EuvaW z8Jcb-IdCDd{i1U{Mw`q*>jF7>(-DrOScGd4s8gH5EZQ>ZU=yCLn7m$%$DM#e_8_Gl z^9|jULI%OKy__L|_&Amp)4_jFA*RvYL6Ht8P9#mPI9Uu|BAeFX@|Up;`Na8P?EvDe zDOKx5R2)LGUkvd-HtC9^go^AC+rl69}f|m$1Gl*$G0L;i4jn zNN7~~Ef_9+oOT6~yBt!mO&rY!%TS(NkC^n4vo-15+{U!`a?t;^RXnL=B1K@r07HmF zUiSV=R81&@H|bA8n)Po%ln0Tyw7C(WUvXDRq0w?z-4&2(?XDQfa$DxoYq~>=l4*jX zW{9bVhZDkJb@&sCRTEEbs{R1ZWSvO`wG6(aww8Dk%aRfR^s$flqf%FcBlW%T^x6@m^G3e@WQ0l1k z{brC|!#h$1yA{tt@AGq4aF%M=TE^LnDxlAZjg@(3A3778Od*-4mqqdv#PiZ}>lCH#S? z>uR{b1_>_6Y#1y-Nh(zAjhNENtzJw_Msb*Egib(v4qHNJI;@G3U)wNCYvc%rzv=wC z#W!HWsP;n!=6HH}37=8Ig)ls?hjtrUL4c7vdfP&{QjS3x>=CVd-KX_C?iUxfGe9Xv z-Aqw*7A>rJj0$(X20CXm8J*wLxMGlQ>+Ed|2&H2Wx8C0RDR~xE6{0M}U}{+S z=5&V$;n7H!_!kzBXx9a*E}dQX&+l=sUUNa1dobJ*bS*@?&czg-AQCkk@P|lE-N6tY zEhBF&vh;ge-o&vJm}6@>nd$-{NA!tS(j9YaI|jfhoc6ZgMTELTnS-S*ZVvAlUW1U} zsn2R?!nSjej7(5I;lo%QI7fW{ANZY@#gNj%wows7=;3CFEF~;BgVmNB-i5q zuZUC;p02Hi3MvU3PDV>` zqFUktmDwgOG~)uRqG4EU&Du|}S;yDC-fgRM!9Kr|cyxX>9lR1obO3(~LOYGm9XB23 z6>(0Yb0n<;=O8~Hu8MP`Lq$67S_|?k!B_uY!HG2ULb?P1q=;G(K_p5&6NYmCpA{`b zP^6BB31L|*wVY45vmD!#cPldp(XlHJ;{iY>3fsu3K~ zic>iLr$TL(Ocg^DFuW+iMc7#pFQhi+VffxIXMcdqI7o)T>=d6*V+xahQ_>-&)~Eh0 zMA{R;vAMz7SHv6XiNiSX%i#@##6c3g8439zr3XK0+C@jirN&eoh0zY;b5SCCf^VX% z$3-$qDh@2khhdr3&;at`APE{$U#%Sap@fQy!pigaKu=Erwua}|Ku=u6YKR0qagYR& zDLo0|(r(6ecq}6Ci&B(eV?{)eqCorcwOAYvy^>;UOcuyl1G;pDjvjw)z#9eZos3nEDo% z3RdJj5xsGh4W%`UX`&Pdx(%Pr3%v|sg93j;+>%0qQ7q&qC|}P+iz&-!+d1b5uDTwG zB2m~Z65qbxK${{b9#=bUVQUGC>~?OELWPjS`KW(8vBmm|mQ%6kI%JL<>u#`=dCi7c zRaYMOx_uM^4oQZ~t!HGTBnwhflS`bS9>x(_<{~1tfWzob&H3MuU*ck$xp$R{y$g1c za+iBodFH6B7*G!@ z6o+(8C1YgvGeTs*vtf_>VZY5h_*VGfyUQFa3QOt;y9VL8j{&ZwbTrHr8_!ZH6C~JD zg-jP&D@LAmT9$QsB&SWLnd@%LH*I8cjIUsxkv8cqQ zn8iiGTFGeze`}wAj21LExJm#Mpz_X4u+OIb>+VZyC64nAfdl`QGwpk=V%(Vv0&$EA z`u8P`dKXA*tiTgWNOVS*?J**ml{e-?jLo$+x`bIK!XGx^Oi;(u+uI>+rP2<3j6C=8 z^m@_|nnCY!IO${W4?2U(DNgPnOnnBTPX~Q35bdHW3tZ<92p~;e(_EaUSYj4u+mmZc zd$)np#WwEPCMT*huT2Vjq<#y`{9X5!asT(%e2e-J?9 zo>!+tQK|75jA`G`oJxTlH=XL4T!O%T#Ps`_Q)#iIrZZ^)cpgX(U-cJSlD)aGnIsCK zG>v>bb2TFJ)5Qd$)AXoj^dviYByF|91N^TIPA<6aT#jc#W1YxTcxEaUIYH}npWu)U z_2F@CmH+M905j(j1}*c_GE46E@D*(c8L`Pa7m;)*G^wN8(q^vdq6fDHes;4xGl`CP zr+zL|6xVWVFR2uXgm+OmOsp7nqmG~M%CY)&zk`z!8d!h8t-VHm@fN>QyAodtA<3~z zVW>rm)HvVWR+{VoXTRUBcP?;LJ-q27u?z;p-Ij(?Fmz(0OAt^zK~A3pN^!~9ufBU= zQX55->_>BDb(x#0_Tb?Wd~x61bCvF z!NZIG2={tm4o+E*E;E+ILd1bCv#Jl*X`S^aH=Xe-uHdXc=pc1zIJyG^n;Y8(a+#Y0 z#~ByVaijEZ__=+&cXY6`yT_C)2?qBrIk?b&?rrGcazuVNL*m$& zczPU7L80+pVUEldME7bk;%PFxZCxXmP6EL2u#$aLR`D^+A;NShJeL{DIRpg85BU;K z$#~sm6X|=ZXB)zeEqALFLmpY8q+2zg+wo4^|w zErGm_0*U&G;VJJybuKBH zxK#>wwKqcG68GHHXCxk)skPvCZuuB_!VF%P3lk;S(rIz=mXC&$14$@F3VE_gN?uV@ zCiieN#N`wb3oG6|E|-v@ko5I1drn>Ebl!wGgdqKk2#w5|izIG9Z)>x^-P;aIVbpoc z%+=A`PuQ7kz?@NWUvRWk5nW-HwqwSrCg3bYn*%D|1*x3FnMVaFWPBOlEK4sO2t%xg zTx_u46}1@5Wn%H4*Fh^b)|yG>PqCr=Vun~DcQg50@8B#iT5O!H;`R;3QVC#sFEGJ^ z;w6Uc_eC@jN-LBTKU)j==zwyCZ_P9mlhFQnJni{`m7hH}r4~PbE6Ec#K=S?qg*1&y z*c$#l{+_L9GzyS2{HrcSu(yO*>kKW?Vs$5%PSBp?4NyC`$oW9Zhb4Klb%V7Mtb;r{ zq08vUb6mSX+6dI0q!-v>A-oD+*@(O!(|tSB?WaBJO85Sw_dape#7o}j#?lF?EYx@YN@2(d`0 z&g_7vSu-K_f>aUTyEh9TkkBx?j_B3O4_*x{Xx84E2T$U|8GcKV!rg(FQWJ-NmXuGxf@WF$v&;RtNPjXZ){J7X{yo#|#un@B2k$ZZi zJ;z;4>~%pC>o#opxd6dzW^D<6c$l!|2NpRrg|os8Wp+wIsCx`H;QADEd?jO!_TMQ_dL zSsIyF$j>QV)6L$Puk!iI$c^FC>uA_Ug|>-2h;kV2wi5J4mFQN)a;1<+Fd7}%%t0-R zh};!gBLs^^a^?Z{z%Mi^6q3?yxY`2+L321U zuL@+IF!}j*BN-k05K0tUQLL$!R5~aMiB;qTAGsaQ^-Ik#pk6*C-G$Sa4|RV9VgVP# zVbLk0CrWhW4Um|yG}sEgQ6Gm5n;I*DD45FK>ZC2p z_Hv&Y;mSp=qBe-L_v}Osc4h+C0Z;r*XzAvN40n5HFJ^ln)%;_vJMij zSrcb8?9uCPS(3?;d}PTuTV2VMC37b_=q(E>9Uwa5)@efB*G2d( zf3j#WpyM222w6mnVKcf;aJO~DGa3!eTK1Y8hcy#NFp9>#E&IL(i}uu|k|Eb@6Y75C zZs0%g&BV<0*I~+xSY#ryJ|4lmK#^E$5Wy`&n?B|p zSt5fhpzD3c$9g`ON4>n-Ht^VoQBwXE!+hctN0_%{zUDGe5pSQ@Al|G%quwgs1(gv5 zWh#~f7$f3vsJcAqD*kLf&tqH&eUIwUr-_HlVo$%WL7qOWCt4~N$#K=}qm$lbOEVga zV7o4r&;`r_2b~+u4y#KF5;UPs1QHNio7|%I?&0Cz_V?OHJI5z`?c<#vQ}L`rM#tqF z@F9n9kXeY9G9w(ZSIw--@i^{;4KD|XB%|IEKWd>_jb2oK z&Y&UYGORK3l4Z{Eq`M2tb?j6HhSVRNL02U&1;CS6J;O1?xBaZ4grbEF<%ipe4E;{> z;B3*#V9kk9^L})Y5;58ls7+vu+;J>lquXptlCRW0#umsW;VU!}Z7a9wmk9})Ep6g} zWUMbSw=U$q%#wqe++rUk5H7&X(CD$JaU@DeNLXs1b4krHC~Mu4QN|?<+A{TI&$$`1 z*5^je%-F-1P@2M=d88UO3oKzpir0kDXCW9LBT-R?z#)VDw?xPbAo{^}diWLJBr_RI zuw?(5V;onjw(Q>AmW>t=Zv>{4LA^0XGcR0UVaC7y2;JL<4Ru51Z=?8azFBy|q$nYW zR4RDBu0~eGgxoa?RKFS?I93@6N`C*Obe3?ysPiVQIGwwcZT8~j!2y4=rV5Lqg=5+! z;WbIY#+|;%K#C(ha&m$=S^}>{I-3P8 zQ>o#$Cxoit0RN3v)xZ{rT1Dch3x~ojv~wJ@2Rt&Pv=00-K2;cF%f>+8WVC<`loB*} zVoO!01~EbEqNwM&&wWCO{2pC^Sn3N&Le(OMBASbMS>M0t*96<;T5^M6N|Z=<93W3XH@s_B-_6%hMN$CFmc!e z)d}y6EyFzX_L|VyNeWN_TSV4bVy`u_UFv_ERIF~iK!IZdNEVBCHy4+(_2_za-K}%W z=Wc$yKQ#oflk+cSL1Nvdaj5F9^YA7YB-@cYBv8ou0#L!_BucP4n6qb&H81-&y0dz2V@M^0fcgWgriLeQ2Vsp)FMMCfUbL^+B;r33q6?)mfs zkQx!9BnyI+wcMWa%NeSBzG>xq%7HRg(kVPrc|<;*exPiOEhUV`!y5wcJ7d!{xKYcd z!0S>`ARxIM_)*E{8?~6|_b5@QlUbFl+**Y)9BVUPQs!cbjeoGLtPAj+x8=N}y)Vb$ zO+tseA`)S3&c9~k|HSD_8eXKED9J=z?x-E(6q`K)dEO-A<;+WMhefAGl zvKt@FfW|nPVAb zn+YIB!pUUfSsDQXG!YU<0z00Q^WA^XvoF=v-PMx7IG1(1R8BIxaaC2bK zC@4?nsVHV}EaaX@=LFc|x?EgWNA+qth5f#TJVcmVN12&^vU1#}-9Mv4aT2JI@0#1u zLBB`zM#nAD!Z(k;<*21RwWZpwwLE&J5$QN7oMZ1tuA!Z6Pr4`#wMfjj=!kT*E0hQd zDGa`47V{1j458N}AEdNUuIqykeH}(Fq1t+l6fw=itb`sZV}Mg_XFG-CJlFe!(U?Q} z0f^jUS~~hv^X~LA)9RJ5Oa08z0P}9HhjXiBr3Tj5If@_=q-r=_}#ooB4%j3tq!5 z$Nd1zN)COoul0?vIzD>91Yr$|l>4{1NDT(B>cNU)E5vQr0se=>YBO45@3Mfag(xw(@B* zll9a4+4{Xdee#J}M6NYzVH#7uCw=Sd#U-913*v-L|5RGBJL#urbrq8NvPH88Zvbki zx%Il;B%Duc0p)P5(eVA^pneQUiQv}$?stIo(FR~GAbz{~Vz+VF?Cv(dY3_FM7v6d} z`=z~|eIw6|k@gyY$4g(6pshu~x`s(!yV(rO#Epo%F?Ok%r=TE<=TTFQK#m?WG+jw{V z;l^XU>>ELM;py;tdcKHQTZEsR`&+H;o&A?x%-wA4bzkhh?!4;mxAqAtS;6O?z8@W< zM~Y^H3kXn^@YhhKia{)A+9 zoUmJ=?rz-aJ~+0G-n)h%LVf4r)vAjisPX#nRrh(Lvm*#e0&z0nUCkdKitU}3&5rDk zBpCaLyL%rW2+jhca4%KK@v_r-u-|;yI^4m&|M;+AI?M)W;?2sdv6&TGWCvUzblzXg zIA5468vB&)4|rr2WaKx^c4w!xpW4k*}q^G9%i=iy9Pn&5DQHTh{N5^+x0t@m7UIR*AXqFmr%`F z@y^?gk2b4}UP8Ce`skz1`UtZ=iuQa=WI#pb`=ih}#(A2~I|pwc%hIX(s~>!bR{7VL zccv!q9JHIA*6ugW?l+GUBnJRbe>MP~Ca6zow{w6<0Gd#a22-Zzqie~>$3~SNv;@Ej zKT3y%Ue;-CecgF1O)2%~yW05&?bhGF>+0}8NJ0E3KzQU^NLn4L&Hee5(Pc^^;T+6=#a6OI3Exw^PW*U#L_vIBGWTOs|-?rLccMg=G8)*#dz7JjVobogFsknR$Y?m@Fn)gQA(=m^3t24^FCLFbTwz$-o0zkK`zO8H5~ zKQ-a=ppUhU(3IfKJ0tD}7nehr1L()3ssBrvPOcY1x zhSKK|8VBNnfZ^Z>UhUw}&*;}?;0l?(lC+2Uj;liOV6tjK;bUkG#7K^#fCCitB(ceMyKQEBXTx{cl4*0<2u z_VyYeN~~TmC_WgWX+7dfY)h2&PMLj&VpZIy0otFXm$Je{3*O+a`dU@F*Cj@5mJGp?dSbhHY7y-*kADJ2Ke{tEnI=?e&anirGcJ|R3=unK! z=x~y0<;1j>0(UX@@@hv?@7gdru0xmc(uB+$TNRl@k-eZ|@6`r-(x{oT{X zv?n<$+^kgqsQV1jC`We2N0?Z5#?x3=(23){arg83-Y6b@IrUE`y)#;aFfjh;#rAh- zUgW#tMZ58G59ct*uR-o2`r*liCXG|>==#bcR$~91n<;x2CtMB;PFKm#skNG0b7~ZQ7k3AT>9Sq=R$KJy#zwFtVC9&X zu2ne02Xw=kNwn}4Sc~WpO@PtqG+s8l%y$7W@jj3QS!~ud$<5-fz2hC>h6?5_s#;>o zdM~OwM?I#C4Fo6jwk6Ub9N6};@+m~If%qD8tPxcD|OtL1|4@dDFa6uC5cr- zckz9UMRt%2)*%B)h{0FrdkOOP?iPo^I8Q9UTOeJ187f-L==d$9ikj^=H$ z2ni2~KmYgT`K2>l^G9_3qK{k-PIJAiW{opkz(9{SN&i{4gF8XTC)dYtwUa~1Uy?yE zy@V|*j&C$(hM|wW!?t(GHp7U{$0#x!^rb~HMrw|ZdzaH|X8faR>*%ff_CwDf8x0o{ z;H8P(4C_82K3x0c6PC@$)B*`4A#*zj)Su*Ef9+pAhx1`HeRFVr*}=`d7jL%vs1ZQi zp?{Lg%|on2R&D-!@t1RyH(L^8d9wwNCoFKQ#hw0hg%8*C;Tj+Qv85f6Ht%V`fUYj$ zNAe0zCa|2bfNR`mJGz3G$dKEY%M{i=Ic7uIOh?P(EYs{w=W^J&KKeI84EM7)TWq1m z@YyH-D|gvT%5jGO_gS{xKe|3cTe{)!sCWDW0M!;O^aOG7+4(hGRSaC5NcimvEpmZB z`F2hIdwG2XD@xtb*>>~!>zB~(UbK*3{Sa83PupmsUmT16>b z#OziLSB`%H|5_w$HaC}N!NPLcA_%&7mvzurx(q-eP3o!(-+~wb{(HDh`dvZj*`W5H z3{uUcmB_FqNUz}%#aa+v(tQ`AMx-0c#1S5a^gZECI5+}%DY_#wJFt$B3_9zz4hUzk zi6K%R^^0W~ht_z~`sHUc?_dz z*;0NfmZO1dzd~dhtdL`BB9TL$m@G^NMsgr{8|FJ48Nx_SHvr!3s3)K?IlHE}COim8 ztNHHr$V1!T^oG~{g}-a7r=$FS;gkslWnDDiM70esG+1%;8GXDBg#YYl!F_&;F>*&- zrbr1Lol%Vw;#aPY)jr=rikHv!%}q3~+(P;zG?SHkj?jP~Wh(2|U_*gr;*lBjK@iA4 z&7RfZbS^C{@T)X5bzs^bp8CjXEMjU0zXawS{DhQaihL_R^{J9r>P&~G=B(h(t%Aq` z4#Ok$zm>G7H_OxMusll|%XqPC;AEtu?12=FKR==)3>dCsU}xZa$FpaqS+3MUxt1dp z2$STDaIgj{RFB*s67h)&PmvQytT=;c6+036DG(f!-e`K-pZHKERO=zF$9R4gXASrc z9a44G!S0mvTwnFkZqMU2dt}CJP4zaM2qs!H@ulw)U zG)L;PH$eUpNK*?ISH+~C(^aHw@JRa}qBg&%%{QWDq9A30XOYU@gmL3Y5ti5tLh`r5 z1-|sYcee2#WIahXi1ur+yH>MyA08oafnZc)O{7A91b5Lj^cZuQgtNw}nq&^Pr7V4i zRy(X>#~F&jxUW$ejX{|Z7bvMMuFKQ>-)Sqj+Ijfs0%jy}!9B?_KwKq(HrUKfXq=0x*l3oKIn+;T>oU zy!Z=vr@>1HU17Krg$tnvDx`p}q+A=)YmfT)^sOvL)JX${5FYnN$NizB{?7Nq^WMpx zv|ic5O3OM`?QAtVSoZ98GSm?oVYz~rd3z{6^S04w1P4?w09jlVRa)Mmw!Afy=&6@BLHeGOt~*rxcM*l5@IJ!1h;?O`6=L#t`tNoluru4ler;s?lLa zIY%Ksg{w7VSlw@iHB-&}0Wec5vVJkb+mx97ccP2Fc?+T+DA|C+g$Ym7$_aHPd*(q4}P(<>Mo0EKFdA0~{I5_vJkw#QizQ9U3!@il5P2B!dSF z+NC_zCOGtpI(0#N0I<_b-mU1jufYa_--(PY7l{!@pBu`!C0NtZ$MggKKip0aZEF&; zH_;CT;ER?A^q{N)w>s0^!u*Z6voG_@KZKH5uw@NHByJ2W)bS zaXb`jK=2w^01CgJj4?EnIE*~%WA7>4x-=hB(>VJ-$~}@;Am4Gc-xv@Lh{e;x1kWq!LD} zDfWX&aMWrpuVdWV`=cAcKGCz=QrI+dHTQk_xVo}z=Le_vEisa|?jRZ(j_R!#({{NS zg+%02-6eT)Nc8xxDtpN_)y2Qrs^PJmys~bX$>J^WDM@>I%#r=tg8x!r^n#)AI0o8bRf4X41`vO-63QzV)|) zG%D<`(onSo48zS7$>gOFmx$^V#OdrhLIofVxZTJLhc)DGSwvMCx2~PpC;Y`+JbJym zwji~u-owR)bZ&}U#Th+?zp#Qo{DHn->GlfGsbiF~1*SysF8k}X)I6}*(GH4RB(ce} zp4#fc4I?MzDE4cF{4tPEeOh*@tJdac>J6EJgf=VgxHefTtyak_NQ0ugTN8)y4>Ro& zYs2y4%W_Um2wWIpF;a*qF-N@;-p8L}t_x`f5R67Q3VqXN2v8%n>VbI2LPBVWgg6lH zmyG0iMJq1*kWc$pjMriPYM15dyc&drr;xP;iU=l}y z475rtCO~&5{=dj+XMUJ12$Witq*Ff4^-{kmmw#W_>P1o;L#2YYO2}{v0V;u$@9rZG$MhM^5O@7C8 z*N8<*N$T9d*A*peCZZzH0)x-0EYobGhRiTYScNb*?x|#?O4g*j?IYb@Pr4nyf!lmF zC8%c{Wr9qJfLYm8UCiH=l&G@_$28gTwv1UjX|pEjja~Mu%(G=CUT!Ad|Z2 z6SiWR7-D_;R27*eq`GBpH@A8OfD(kt67Q}41@Rgg#U{5FO!EE~inKa6nJvJmzxL_j z#UIEZFoj(7VQBSlQ2hV8O2UKBZpFs&VmsL|eeH}|K5RGe3hhwO@%ML{c zgEe%3#W)%)r7F{(Yo!?fluhkj{V6c36Z_&={OMLb<9 z9ntxSx`+l<^1$7(7GY@NODIl&sX7^;xrf$`hGI#1H&F>W7A4*8e$f#{zh_RAW2>+P zk)s)USfF7PZs&k|CsB;ZeQ)4>n&}-`Y%VF3(pz3=QY)OXR7lLE_pxxAM6uwkd3fT8 z#9MSGmOb%470i{Y7%UWm8KxM5b}W^6%5EogA`wzM(7@Xsy7s5wG*~9mPAf)-+xv1T zDjE;uHTm~yBzlCro103O z;Q)vNj#QB`d|!<_@^T_I$3%kBTtyUh&=uSX8#XjfUyQ2nIBM&boX?d~swF$k_MDGY z<&U6Z!mP;+5nD{GYx@u-rnc1>&b#Cf(Z`U2LEPl4^zWU6OCM@k2KR*itLEDpUYTp* z6!mXe9=6pyH&a-DD6Ui1l4a)VsQoB_Cl$AqcK;p_9bqF#(is$4xR{QVcAgi!xe7oE zh+FIXB@$*S`|2;*l7PAN&zv5=5KgDAb{XhN%n1`C!J1Mj5OOE+omze!2lBqk-mhGWB-MQ5MEhT+6Z$yYlkR4L+uOT#WAQRl2|ULGE2 z?Zfj9?=ke_6J&YA!Cp8H=L@`T`6|I7RUM=})m-}c*eRXEiD4-uW+S5zegJbNm)|}| z^6+cw+g0Eb{)+|_Cu#MqLKj$iu#UI{3U_fnSd;%;*~hWS_yZWg0SL;B4MVkB*gUju z;IUnSUsNKS7su5Rt}@V?pR951t%TC>a3 z8$^vaXU2-iH-opLo(J=^;>q-(oQi3_R+9*Qn=g9PALdf<#jtmFqg7q>etf_hxqJiO zP>SvKer%i}oavzXs(vv+U@LNXYB|6GpSi`!;p_#i0!NQ@Sb~BhNGdy`We?Eln#<{4 z5MN1IaDXwZICD;j&hmUjf-!edI&Nx7Zr=3fTANS-w@i7dTAQ;D<^;(Pfj>i%7e$@) z*+&?6luX7Kf>yyEv)}Z^u8J^Vmziw7VrQ$8HgBJ#gr+|7?|(}cZNPC5#nCcz10Y6M zQcgR`$;A5d45=Kbp3=Aqs=o~dzAhNcAJ?%h47q?eAmA=2_zvzY*O9Fx-)y(j=xTO# z(SlX>=Ekr|a`Mp0bkxV43MhNKgS;<0Of7zX0}Pt>=!$?sya4{7J@_RNK_8=c9ud5Y z+jb7I-Bj~^4 zZLu@O_6>B+dKFEZ;i{G*_Jq?sy?Hc2z9COUs)r#|479VqAtqpC*@mMO#6_Xdf@R z;s(OVR%0O$gL($qd_k%>!+T;eHmDrS!ZLxsDuU<(ba<8V(T*mEviD$8fByx9j#>s0 zfF8FLks8%MI{u(X4=%1RcrRY0{o)3>_j2Q$-)?8Q4pW4A17bbG3tdw)A&!S=n}JLh zU*1PS}xG zph(Rj;3T055Yd9_Ldp`EqM;HTdT{3D3e6mQ#QjB%kJ35o(o6s#XQP*R$}X~*uXxL# z&TXamKJG8T_@a~*7BEA21k+yylp1!WT#bO6inBshO+6$LAQX}1D^J^@SK|iLK+@@o zZFe+LL$noy7-Z;M$A{6xK3~=B40HJ_<%QT3r2!WWbru7isA1-zmp83`gGSisi#<9+ zuh!xd{2=1zvy7Z2f!ZeeWNQ+IWsor1%0?QN&n%}CnmrFLrLne{sVFMrEtRrAw2dDc z+Ig9rr9a^p>5_^*+=Iz@#9pC520Co(WSF*^Yf+$rk0+z#gR-}A1*=81pRaUf8g=$J z*u#SDzS$HTry*N>YL}$u(#hiHIi-NQqKxVke|%SgGV)RBhwejH=cpU)f#)H z8UKv^I*_A1z2YK+phXCozW3 z3=G5wp~_zVR^05GDi_+s%p=w-L2w{fJmd^gxl}beSYaD)vL!y5a_qQtbhsysrz82Q z`lWv{17e+L3)7_KE5VAGr#Oc$O#}@NQl@eFi~+{t29I$;K_-@tF(Lvh+P_C%T7-*) zjET^maYe!SNeoYg^G=i0Q+J*X$*(t+ZtDXSUzcKAOuky6ocIEDRMSp_w_i$=2p$uMh>oi zM#crWdd6zLRcT(}&c`mv#l${Vtl>=8#tSR7EvU6#Twc8w9%C`AJ)~nu>`_5IIag$# zXP7UJTHmj7bB|VmQmP2}>j7yq^n-odXXa=Sp8*&S>C4)J#y| z34IwxzjK|-u3PMw!g#PP`jfXzeW-4r!i#gZQ5iiUKR4%oXT-v=Ikjy+{(87A@Inm< z=5Wv!$OeLW4q?E~684o+0qTw$1!vqG0o5>#f-UE?HvxV#e+)-J{Z-g@?s&jQ{B7`nL+j|C!vnjflYI~mxPv@xu_PS~s<8$;KzxtI&&@iC&81+{ zNJogyA|+!u|Jr8#FJO6aA*|ypxC@|^qMt34AJ|&M-Z3@Jo|S)MbTj5f0fZfEeneV^ z3_qD3FS;~tDKiRVmi3HNVR@s;{wt6&Op9j0T&f;aipM<2+kwR6-BiWNA+joD!yiNmcDX*i7G&r>>Qh( zKAh*PRiud%&?h(5%*w;;1;I_}4dEyUMZhe*pdHH%_u-jY2e;y@SG7JAG**d0wWdy1 zY*hdKhM%Yx;!MYdwV}2VFhy5CR0CPm5iX$=ftvqd*Sjm@pi1A0>K# z;V$#&b@5J*c$*qrk;63(48qGboSbNY9&0Eey_O;dyYE+>=1|PkZBF8&NiMv}@BzIS zzZCtx)KBj^ALJLeqe4%&sYFRf~H;oDX#J*dnAzz5gQ;SkSnV zY$opTu-rH4HpK=S!s`dSz)t!lu5;~^Fja&Uw16##M3l(osE9cch}=9Ja$k?0`?+~2 z3x$<~UK^+eRL71o2G5ib|FAg%MtC=;eZ(fy)!4|sxKFi$>~zfPL<%QSgsGClfJ9#W z70fCrMi1v#;Yg78vc1OP)~oJrtJP_O=@Qp*dh;LD_lY}piq0V*u*`)?U0Bo(z15JB z6IHK!!j;me6jJdWuPj9OrqM|cUjAve62u01bc-r0JnNU|y$85%hF+qyIUTR++g5uU zi%M0(>fB^2ZyjX*yt(Unf#gUGnk;!Opa@$+3Bp-UaRsG&3|Hi;0~o!Edm`v3{U^ts zzbszdyTv<4A3dtxzj%nrVh^|+t;%w~v>^LL4?56?|mt`3B9;D~dBg&k&^Cl7r zo}5RAshh~_h^;e|ZxxS((aprB^mKN~{t28Z7Z;g>143vu!#PG$6rfhj@IXWBC$)$m zGR+@K)*wUT48uN0b{zN}!U#WK;1BhK;hCbaf?ZW~+?ONBByl1<38DNucX`=Kr%>{P z1ib!@Q}U0{qIf^!W(vQ_GT;JO?l{sk9WWLzOiemyJL;L5RqLw+Vp|83dWj^Ff=f<_ z65d9Bva}jgTE)m(5pUztK6IE(MaoiouS5$j#>NFZQO1q4R^(HZ!~?cgsB*Q=Sw?+P zKe?QWKAZa}gSQkpBmQZL(hvkBbIOXm_pD1U{ngWMFwyc>@oZ|v_T_Z?~ z+b(ec52Awj1GxDvsJY3u%3B!(y<2lx?KKZW&*V0QEA;i1Wnd++7*-qpjb-@1BS2@c zUoN#H#t0sAX<-Hzt)(t_+F7oDau+K$oD{x+jEcT1^36vPfb(dI14@4M51ob)+%pku zVyhm(qW&S)d_{Z1HliFKI12Gw!Je44qJjtyJ3&SYeq~vSDWl39GjLw?5v#ncpga!; z24AD%3k^qL@Pr=&`h3(7j=18#D27kaXeKrqNVEt6l%p1SK&S-|oP;LHkNVVvBL6AI zY@ox)CA3bw4I!URk@|7Yxo~bsLxDKH;lqVpWy-3`Bby|Q`M|AcF@m%zaflFFh=L5J zKA=p-odcu6(csT+;Yo+UtZ|($7JDjt|3n6<^ozqr!YUGs4=8oueGBMFA>2?Gqah7_ z4AL4_5JEaZH4TzR_n-#gJ&hy&?pGA2DdX@a9#qIiXf2T#%Q3-(%ieHm%_3EDypi`q zh}RjXB)5z`4}t2ETFdiHpXT!CK$)VB6X`dlz&$V(aY2^Sa%{}>s=~+!b0=;v*&2^ z(e+@+R$15ul18CPBQ#>@o$)L_O;<2qqzwQD6X#5xjxFKZ&<&8^h>K*)f7kCJlyLof zALb|it3H&`+v-=yp1_a#38(VZ%sop3iG35{%G&!yKL!5Wf%}HZ0V$V-Z{}l7Bmm>* zOJjacF-=De`NQuHn%(`@evNa2CGL{Uxad&r=HFg7J2ajX4hfD{LHbO{+RYAnV2Oic zBW)u)`5CE<6mCQ7=B6w#(Sa(+5gO^xGK(@`f_v)_mWPTf5zwzP)z6Eg5^Xbqf*QxX z&x+{cl!XB$A+`&J39<}(F$s^V1$8jkmwO`M0L;?T zY*2U|^+$x`HHM!BgfW=~Ixf%AR162<47`MWDco4#jd_UCPc^}95unt2e>+%a@Tu=C z#$o_Q!qEtoL%Yn1T!s;MH9j5>Gc?kn5BU~ML1FieevKLF)2K2<15(#H(KMChOrqh` zai4uSa}pd%%!IPJl5-TcT-{tcj&1bndV))XF(^S~-HdulnzzYO(A0RBM8d|`6X*;) znd~fOU)!j&BG0hY3~m=_K;vwJ3n$;l_wn+U7A->WWy?M>*hA;T<>Z55)@;3S6y16L zy~G40@i7Dwipah`8X^ZV*v^ISc@D4g(|yQKu;{Waa>g~d?YN}G2MHR4`xnK#78YLY zp|__8@#bc(B>9^`9u##>63ASZ(M&0lr8UcLH=in{S~eu;DY}fd`$U{j4g<5;ZJDK0 z23oVla>9xbs(j93gs91$J(GiHb5p~s2}hzbabe@gCkDtNFkn!~NhfaHlVE-ao3k(g z9B>P?z7v2&or*!#d6SBGL+-;ha|lXV9x;Y%*{&{<=oqb;k|;{x47J9pxHDBb=zcLu z^>HoI+}9Nx(>mv3K52Wmy51uu9tw>hW2sO zvP(uyTf`BN1G83qtOO$fsM$WeG=QPG=|2?a3v{X}U%Od1(LFOC1rkSddPye& zb$UhZ#PNB9bHykA;I-A@h(lmdL^~^Igo`L*Di3-`{vQO#f?Nq zTiwFWaS8Ped&XW8W~-pMAYLrC70H?+Z2q+!DfSg3c*4Px%Lgz~sH+&{zEt5hi4vE3ku97Qg4s@TIO* z6_j-x7Q0^)8`-!F3WKp2{w25yaHX>0Rg@*U40;ax3*<~zbREy&vchWSGnu{)*C5Nh zZ^&pxq|8R0qSyJQER*aoP*fDQXAwU2vHK{qxb8y{=*Qt)&XbVGO&Cs(_%yck=<)TH zvE)o;azLUjHwi}7a*ctM;FhiPJ~~f%LX%{8`|Q9lZtg?!#{lO?aEWI}J*EpV3+M{^ zD8heII!rA2vOI%x&Oj75^kDn_oN!7?R`Git^m0|R)-8mejc=S570A3=!YiXqyaJA=Ss`Xa>>KPD`hphiAjE*#nd>O!{;=Yt3Drnqkklu!zo zX)ags#spbH&H!=$fYhC%AP=TtX>JWg;Lk9AA}@@`j050RB%1FBIz!dfInNJ6=I=o$ zjvh>@6d=BUng;yXKSQP+oPs`Wn#u7(T2r~%0v2~8rNJ1Xm?90w0fI8HTK$Y?Z?X_o z5l1|TZ5u`kh@i9w_JSnk+RRL%zXW2;%7x1m$(u3++dJ z6yx=xG8rH~%(azlMMk_wr#-?>vPh&b6m`zrP_}W^SIGr_Ysr++=YkJe{sUQlaV%$q zJC8Ws%009|7{aikcg5}*DIJv_n<6S^2ByTuh}A@;zU(wpPslSgsIXx$oZ`;N?nra; zCYZz_GX`PO7iv8q%;Yf2L5sQrG=urKIuOYFbgvTO-B|J;i&KyU}8@UK=#nbJ`6Ssq#qD3a%C`5nBx$W{N;Xa8xp$WAi1W>D1Swe;#Oa|}-;rzfA zzfV@5uDzAJecfwXs<0K;_B(28keFv8=J2Hh?mJpNuKKA3_Mr5lRI`s7N_+$vD3wOO zLjTSVI#XILV|Kn9zEW4D^Mi$D^3|-}zd)!><(R<+A9}%Q{wyg>=EuwF%T3kFdW_dH zXKHC4i+BYs$n9BlPdms1;S<5z-vs3??c5L{l+Wc+89ix|F&WDFDlL-($;#p2MQD|D z#Fvg4pT35GvDe*St=j>3w@W30Wd(^o;hy2N(HogKmP10>QZG znbdO3-_#kN`?+U0!@){3-M>XD83^2JMW_M?+*(_$(Q!MuJ^>#rBw>pSkm^${KU3H?9}Mr9bS+Jd0$qxAxHma-GyGQG_W;T;2+&Lsw8 zyau1qv^_epN=;al>V}2*Q%}55R|pY`?%a_#1RW{inhjR~1|T^GU8G0-t9N}=O0GYA zC`Z7PFTaEcJ|13AqYGhvOUxC~y^2TolNg?6xJo)^`~`$r?4uN0n8|$3SP6q9Vn1ck zGV_%be+Q#$V2~fu5dDUvabf$pEGVsXrd)7chH(Q|V2Vb&s1uIcw60=djih* z^!`4FfvdVclYCE{%SXNAa9w5T5TRR>wW_%B&t4SOA^c%}Kze#Z`9sOMOpj__Gt0F9 zNb|m>ci?JFeS&bWR3S`rZ50V%b9A)V-_aGENFtozI;jrkorlZg(^Cjp0UwX~`!a5( z8L}w=LLrEUIG>mB2Kl4KDK@YvT=pa8eK$c4FT6wkeGS{p*GQ${0bk*GySCBRi|^TA=ne>Gedf*qim(z@8XUH6VjAuv18qW2*ID4EOAM1 zg-~^p1aras^O?@#qB$eQD{^{zMQ;$-69y!u+8>8szzujX2n^4Q>?pWf4fAM*(fJl@V6d6?KmsgtTD1 zN9GBI#TbAsX9jsW{hJ1_9krutOx3850UhIM6f+aN5OHnvUIal96m@YUSmziI6H@Lwf{ zZ?c8I;wKsy5&>ueVeC%MBwH(*wpy*PcbY{^CFa>iH+ry8PJZrxnd2mm;B!c%YF~Q3JT%*wX)aW)(fxbBv(wrK{l2K1kj{}P=`RbN??gBOC`f?K&GHg{N<0nI1$CpA zr%>SE{ti&BCo1w458t<6Y(4q%i_iZl%FX85+7+rer>leh)#>VZa)w@*7sIv5=`r6S z?cYOXk`Bv272>{mM|>fX_uUn{!jg`0mBvy3gpK16;g(}jg`rY zM@V||(xGwlrDK5FneB8*&s^*tNA?LqANRBbw}&HAxAl!%TNopFUos7f6vs4SUWIZ; z+t=ad7!XO?Fw5SnY9gRqow9FnQsJ^`cA!Za%+ruxM2(4y;u#Z0BV|0qJHCb71LtG? zrn>^VfKE{I&Ygg5mj7S$%f97;tWOu_8@;?P|L%GY!r-Q*IIHF5fgNPQa0!PLg6g<; zb;N{MwUY*?1F(_@EAuT>(qn=YGacQGthwLSAu5M#j)fAb;Lgke7D2JCBh&7%l!j_m za~}+Gd1ux;g{JS{218g(lO~%#vlEp+PJ^oh%FELgnI~xmM|RZ*K@AkAuNBnY3w4#r zupl9`>ghmO1p1e_edXhW4v9QC4GF9zsiOx4DWv}bfffY5cY8AUMjH&*Gm)I-iC?}Hkn6+BXdD1T5?2Xz>I<_GW`vr#wr%D2#cX~j&tC2xwZ z27p^oqA`nuk^T~3J@^CSX=A5A?8rfbv1qGD?Zz5sXu)!ZW54P**kabGg{died&6tG z>ZEgvQ@tRE)IOEIT+drA_WDlg;B~{oBAz$u&OYtXgq2n|=IL;pUn5-y>xZvjhT(%qEe~FP3mPp;m-b{Pm*o}6(L0c_hlg}7>eDrU0Kbtpp>-k@s(k4A& zo|4(mhT|it1b~;AXHu@gMyx2MvoGaMRW6TH<(PTHwCGb4B}T8w;4QUMl%(r)SaiLK zV|!yE!^sE!A8uRO9koMyb10P9ps6_%>gm~)4^6>v=p45}9O~Kc`mE?X;suwFBjL!M zCGFTPz1at<)fAE05#j7Z6~E*`g|k>J6d7s!61w9TOViiub$Ot zdAv0ylJtU5m8C$Fud1Yhgg~hL179Cg786e{h3ht5U01}?1aJvrBwa9Qp2ijN>{6l8rGWLm8Gj}k|@0Ik@CEeMYMgXI#T-LL2g{5&U|&}+s@ z<2C9;6_9lZ8QUgTR>-GCAORVU=($kQg>38SY3P_rZ(}4Ic`=+~I#{K$(D0XG*8eW> z-mEZJECy6T)%9w9iJK`(WruXZ{VgWkbtu}p^?oy>@I$uTMDo!^T#yNZH~e;6Pw=EW zOx=PqFapl7Na3&)1Ujy47ghLwfko9agq+L;u7Gj%;S3;ZY#+ygazLmW0v11e03dgd6RpUD`-51u&)$e>i zi|>IT<9ed%=jHjG(VcO8}biDsPKv0dyTr=OPxIuiH0D;_{dh5dfvF&~fM zvG6CaQ1Ij9RM=U*dV zj66ns4DJNkH_Tx|A|IpV?ufAbv#_RTE_Fp|2wp#4>KdsP;r9TEuD~v*h~Csrw?2GY zRwG!3tLW5qsU~;QTNoWWVzX&Jq7NM)sd1B;i3qw@ENO#X3=mJ!BunQWj=>aE^_kL( z(DCm!HfnaRfqn>(=C48>R`g(J`Z-skHt2B7q_R9*S~Nw?w)QrR`Qp*Bd5G(S;g~}@ zh1`v^2qq-Xs^ESEY7#n-5>yc-O4nEK?+l5=@(+9{*L>GuVitiRE;M{hCjpb}QyTF{ z;?!Ai&5OWBAjNSzr(}&R%OjHhV%TQ3XS9I+m>s5KMntW}`V;3d0g3uxRgXZ=mH$I4wtPPOigccAKd5S3<88 z6f~jVAC3)Pt(Gx;tUO^Urp3@r7w}8m$k#zRPhi2p;$ZeM+yibBXc;}sXMGyi0M+O? za}3QoYEn0n1Q+RZaRb$8zRdWMv<;fBqbD!((lrZfRMSO})ovZ!6KNtBa7{~w2soYP zB9dD%xkf#5DM2=FOAu#vnTL%!TI)PtYRCsaV(p0z}qs z9_%)@YVMWuYH7BS1ajC*?6QYWwo`=NFdsCOe~;1Q+q&pG7<^^MjDKzI?4z*a@D&2| ziQDIV&eCQ=P^>iRyeT{ZK9T=Uqvld{83gHhuN-6C8V3&nO(1i|42*vrbYFLxZLA`Z z!;;T%iPWKY=%ALzYZe*#pwa1Ij=eS$>-pxq7okc(2&KLHUUS+@iD|284)_e&h~yI zTM?k-p9_O>*uwin&cnxFJo!8UO!G&SgdY#CL|ez61&4EnjfW2(!sr3tC(v?IBv3T4NXYLm%WN@T0q#d?hFyxecKo84x+ z-D>lU+<5xM<3~>(Cq?GmX(F zq{p*;$VxJ~+dl8v3QVI00DexeE))#CfJHogd)hXEmrW-dPGRXy(deh5U=b~%cX3O~ zu?3}6rKCT)pObnG^^`2Hw5nuuQB-H^$@l`@jOD^1Y+j6XMSBKUVxy2a<{At+gV3GB z?H9X^mqh%dM^7F;d6ZD$4sjHMUC>ie&n6!(7<^0=or+^QWt=VBiKgDkY94Rn8fPu| z2>vxLpQ_MJXAt#ik?|pMUBkNR9Q+PgN~gEJGBLWQRJrNca?sa}eGsW(i=tf4`nm!A z5WXpt!n3mmO{idt0xX}_qL&Z{F{aAcO@R-e*DWAUBerB_gbBX>f6rM+Ta)xvUTmI#>6wgb&g*3u zk=<(;vO8s^Z#DBPanU4%Q4REuv>=BA0%_-1@XbxdfPy}FBHW8$u69_aGF=Ng#$+I> zgt8jc%sZZu2>^yiN~dZKr<^S`$thBZb>JaN%LVGxYR9!`;qa*SQG9@J0~3{<8U+nD zN|FvBuLQy=ufkjIsP!MB^`p^1(!E9d0&ADF)N`B%=yB}6Bq;snEepg3C@&4OJ5W+UAsrYF7-pUy=}V*kZm>(r}@ zqfv*T#c`{!AVAqiSL&RTeSX_(5h?b@C%iNU$1m_bAe#AApexSpUkM9_6hckMmfb*d zIEvF0^-$v#Otfg#UTQAf6ud!pn_>Q=*xd22o!D$kvT)lA1IP%00AxTBS`KX>NX3yK zzVTPn3%iN;9ttRRP$(>Fq)3=qpz}G(;OJ%%W+prfZlB`jsX8dPhE(<5Y+XZ=i2--n z!@cH6i$5U;Qb)AFrLZ5xoTs55hpokLPf%$CpP4N~#DWfu<-l+GNi;S^Ml>xnxwX$e z!&}+&!PP}?`U3~a4K~Zp&`KmYQJr(gcbXWm8WEvLm~lOFs9Sc-N5!EZQj(N^~dcV`+r_Z1AiJ<)z!`+W5Y zj_a(2;-OAwcMX>+u5O%X|G{JYdt>zrjt{#Ne>~dAMrXv*2L4#z!0n5(*7c2p6R;Ss z>zihqtwy-6Pjg6~J}y9lS&ni@*4GV`jWx`@`hGYhi zet}VQ$R9n$pLjUAy12whkI)OpX!+V29pRIQm6p>n^z1>KX5n?KE8DLeycL=z={e1Ni6fttb#Tad1c!35K z2O3M%xfoi(eHN%Xam;uSrgohhvd%|!5E}bs8)6_5L!JB1lNl%(e#S{$5A);C?-u66 zUD-MTXp)#WHcA(Xa#!)%r8o9j(g+_#L}HHomW%@b#N@q5o%nm~rNAM0^{sLV+%MH3 z))yXvEP`s#>JS?X53zwE;F^ktAUbq0iw=SzitLWX;u?hoKF5oAFXnR+L_UAC;OCF< zdCr7R&-p~CqhY6gko6)noQlc}2HjX+eZ0V?IvZVIq2vg=4=T}UIvwg>1D+pnLh~uc z41-4uQFQsZjNhGuw~w)d;WWlBi$B^qz}e8+{ifOd=5gw)r}MsgS|JA6VfIuhOg`^T z2ghYR$|UK#i)9q|(f;A?-n>=FI}!_vHsH%n=fQseY>eOp zv#g4|SjGch-fyyYyC_OTp6&Oq(xYT6odbN;x}Txr)8i*kzPvY+#~<;)EFK&cMCgDO zILJM7R-o+jU>z0W5fVDBt*<-aa>(Q#(e7?Cz8W8o>33iN8D7q-?4aHH`*&S=kGx)7 zzkS|Y@cRY^C<;;;;K})7-#_WTYIP3x8+&Af)HsD<>eun4@;T{9?W!<93J*f?@|k2` zi}Dgj~=c=a%cbxPLCNv6gzEw27__Tc5{2D z-Q|$6yr@pOaraXe52)&tkM4d-9%?y5m#0*btcblEylSwNJsN^`u5J;vOmg#v9;V1J zdSiY4%lRR26$(Ro17oJ7A(HEc;uZ3KpoB`t*kD7#J7G;cLhofLyGX>Kfyuj))CEFQ zj|_?bl?|xP&Hf0^(`#+u5Hd|1M&uWvA;Q#hi!D%5%|VgGI2uxFIwC3z(I>tc1MfaA zJsljMXShp=zCHS7B-CK<12~EA1lzZ!PaQ-WBD+AsvQIS69V`9LY_c?}Z2fQ_L9chb zMf9q`ran?L%W<(F^na2#A01`rm8NI@I!)U6ZJ6{vfxAOBk4*om>{>4Q^~}ZMyfi;$4z(PLCe47AW!6%`+6x?u=~9vdWhvz{Q;^-64qIX? z;;ORyDak5tg;#Ql*?Q>ndb3P>qBLuXV#aiMv1>18BZbmoIgkx4zH9Ljnk0w#uhBY0Zxk|bfhQ%n@U<{^7SRJIW)YKi9SnY zw46&F3}1s|L5WowvKH1bTnf&DuNw}mh?J3VsRLvoawNtn)vbUU(MyZcKt)DUPJ~s( zBuMSOS~7sfIo^WoE^e}lRH;Lg(kn54EzP2xnOtDUifH!GIGT~3!0+x+&$SA@eBpZBIkk4yrB2MwNSXs4PvxR zj*1Gi17-~oqW9Sn2=`!1o-bid_JQ5+%d~vW>n20DFrt$(S3p6^>IFiaf}W^n5hA% z8$#FN2~}a1PulTI=44#rDZ3q|dQezvS3rQskm5T?Mf=O1uI z00NwZFHC&vU0kEv%(-{9=Bq_DBF&^LHu{)eoovZ2b|%nJ7${j>GP@yacR2>ASvG!# z^o&u!gc?tIZF;c53y2f%oebk2*0NfGey)WHog%jSzZw^*WS``I(jDeUqlL0GB8HTK z#)>RyfPcld0hi@Odb$`RH{IqYl)ux#8FEEd?jhHB8J~CMYx!7}7OY2{paos(GdScR z`LSDUdg2ZTy|6iAva3jTxG%D1HPajJIn3H8`3J87Y1JvZ4^e~!LIguitQ4>aXc>@c z?e2E>Tl+N?cL!romJyeMZjA5=bI&peex`AvM2Yoxxy&wV`-66=M4dL-f^L17oa9S>8}&tXY# z$`bf3;$7JYZ^%WsR>C>rUbab|bOHb{y^f?}U1KAR z1}KIi&p^MOB72LCjqzq_VLrNT2>fT$e>%jFT(8WOS6g!7Ql`<9s$vno$8b1EpuUI1 zm@5>Z!I3`ZjY;sn_Ypmqu?-x7SnA*^y6F(p+^f>7jmf!G+0sBik`7_rVDDa`2+TUz z9-(xqa@S*F!|UNDo1UKMF^)5wS6C|GM$9B4%;qMqaHpFQiPP~UTo;w0^B#&|A*--L z^hYg=C`jYPV4Q8l!abYQNm39G0WS)`Y*hFNPP$vK7U7SRJ6o*|cC*#$H;L8u&v;7) zF0_L%IO(IUz5EH2z&TABFGvGNg>77BV_c&aDqA+jBzN0Cb5TNy$~cZt-}l&u$SbBW zj_6t0wfS8z{(YLHIxlXsls#f{fupB5-WQ&4x7jNdP+9Mfo!LcY;I?14+xu~Fag94t z^%3?P()=M{r?`9#5x&_F^P`FClljmIXus_ZuGYAcH3SO~smoSmH-i)u;*I7Ds5 z--}gZ&>;>c<1^IH=$T5Lb7oG!oMay46S4LgNfuVpI}c8Y^Vb79vP33T9RoTvZK-v* z(>SC$!;<-V6A>Yj(2}RU&R%FW-4**YK)|6S`B4jn=gkfdX2By7jFJ&)C+z$ z^5l(L20{|w)55n0-!S_wPll`gl9*sqjIa9>C`n_vzNL~L^>wrTyxDGbm>abqcH_k0 zF!tLg%stZKXXWrbX4W_kv}llcbq)?woHm|rtUq1=Lql}GN9O_DMpHoYE^g0jzCbA} zhI+!<)p@i#`_JHV4W(z=;0CrlwkT8MWB7J=p8o^mp$Ede(TIJtGT4QtwAUN;&Tx>| zXSi8{Uz8eHOI3N5w-Df#8*XcQe_$Gqj&PL+VwOXc(#+)d4P?R3AOMH&e)}A2e6;cT z(*@Ugpm+6ku1`+~KdSqO7K~mpiwX-^eNs2Z-CXER%Po5+e_xk8)1pDD4o-ZUTN;ism)4|8P#)N3!1_frM131prswFSkCYR%= z-ewC5fX;iDP`~d6djZUjNa79PWj>Fa+&`MSIy)uV|7;#Ir(gR91ZYH`fL+3Uo@)wR z3;vfC6f^ovK9WB1jTOD*`h@-BeKXbk2VUU=?Sibl{LjCnmN$#kW&+B?jDn% zT$I)nbYZ}I*oQ_|OnWrB(L2IZ*w_}!=*X*8kDIjiQAggz0L4GB+D?bpYzhM=7OTHt zkg3P)#qR6Qs~JAH7aW1D)DSmCGrx&smipi6MA#33NDwsdKA713MgeVBFc&fzk`=|izm;a!+G zL%KrWL)*>EVFMN|##3o_n;54OK1nZu(;zAFf8k;$LSv2+51^0(GQncqrHP!k80gU+ z$cV6+qcDr}5X&n7FLBE$({*GZujX%+ zrb$ynaFw@|jHqEpaKjJ5fK}lU;Wx}6rKZQ{*HV-mP9W#TA_C>LTjI~B@OfiCTNHu1 z)*N}d2PkF#3l}^IVY;|qEo&ioE6;d~tgeul)vMPS)|F1r*cQDj1oeb*?DH@-io!!L z$bbFoU)U!2dPO@#<8Q`9841PlH)0R&JRn`%SbpoAZnK|G(JTcnVij}*$)+vry6Vkx z*P|5Hs_zA8W{s;bFs3VfaNHYNC-4#q7G^i~H5V!1$6ZJyX#ga(`>}eeWahu4#J4B+ zrKDUA7di^ULFi_l?P49}hMV|hJm4y;?bg41vSEBzSgGo7ax3D?f9y!fXQE@=Kd5wv zO=9CcoHO1(pm;-HOSDwmHr$j)T%R*yyYVdsO!m3#pZ3t0t!Nk^J`_3zB^JHg{HD3v z-EO`}1G(GhosurXXwD568gQ>Ja{LmEaK(a>Ta4NGJAg#b1wl}xp#YPWb%WzD&sn-% zw$dAQZE%3T{H}iWFHo0{5E1(o=BCz7MuwwI0^X@6a6*$d+M+tYc^EA)3Bn=q(x&oDiT>b`MzrYy`%NlOgLwwsm zJ!O;+kOYMDLr0wG#Ev~Mo7xN~5JpHyjB$qte`0(c9|!QEEA%H9pbfSeCw<3QRfY0& zX2w)=Mvl=)nqXw``ryo#gc8Z#ka(0N4hl=CrSUlT(cVL|r);PixlS@Ucmstb$5+fbBG_Dke*o4%gc;_J z1aqlmDgF2<&CSSLl8cuJ!fr z&(c+HG@fXh>G6EM@!ms2x{!X7SoB_NyNQcJ_nU3$xRM@sD^f8zo+upJB^-wY6a!{U zU%>=QZZ^fPOmx`%J9W+lXAw;bDLmh{pj4{&MD(z_WxQx1{8~4<$dXth`kpe?(Lw*^ z#bDU(ziv5*>~o2mtE9WF{fwM=8Rdrd^R_y{YECt9V=Vd?C28*Ia%M=KFZo-gX$ou^ zP8ii|7V}QN%{`JlaU~6pO>Dj9P8^4yBKG6DcBpp|tp%yIZ~GH?kgPOT3t;lnH#v&J z>1!>9$&}uXma^pU;vx>K2*q1$_nT&*MW8;!gP2sD@I-PC5~fM{2ND zc)xedrd_b)r#Nvb(cditVW`;?al!Ktgh1=#&(1GxdzUiYrj(_9}8TV3jgU>Wz({y}yq zeZw@hX_Xp~4(qc!4lmBB;Yo|RILw#~)gk(3mw1n)O|242T^%M8$_opkDx$U^1~>_4 zW8s;&N%IWlU^E6)sfXUI1uY`tX0_WM5reW)F#I;}%EwTCF8`omL<^hzuV3Omu-w#H z2uio4tcwZ`H;g1M2>esLh(0m|EMu88NI7ACm1Zaq=>G^WiX+qqmY6Ie6D(QFJRu2? z+bs*;{dvFZfctE{*{lHWC3 zLj@{U0}Sub%ePS6%wd$Q@P$Ae{0C`}7H0|Y{y~~+6p_3rBI9p~t{6W`9OZ&>wk&Kx zaO58>x3WSs2o7>@k#It<87r+$Q~_Cskg;uYt&Yp5WhTo1z{^k-qMMttb>M5<*?;Mn zO7C=OD8ka!pwmR9aA?CW%hf}JSC}dj``-l){3?^!&uno)G?fId6pn^-)S)f2qZXO+ za~dFajnavYWujZ&@d0X=>vA}efY5e{0dFhy4CMj9mONE{7ihl=wBH4q7V`b71lkMi z-JeICK^bI0i>yAE7Bq-l47nWpU0D1sEPfXjzd~X0H))bsupwN%xux%6RwB#S zJB2XQ}2f=Vl0V*TC+M%Z#C1J9nDDYPt>SDkg z%DHgu?a0l$sF*4b*KpJZFH5P%tp-@58&Mg8R%11HJQf^2&vH*+EM}A$mLBYFea1T#l!>&o$3$zxnLj`5?7G1Pwv)s7Tn{ ztn8>+4iORqNeFXr;XADslvfC^iK(R>maLNkW1w`2z!rz+PTL+Ko`b@6Tp%ea6t>QEb z-o<5dK{N0S34i6|)K7@8I(>atNK}UKf!C&2$!QY)o-vVq-{0oPwKItnVGb_ST-dIF z`48|5Ef+s8mDLxxd;u7?WQIEbGGTD8VN63BL26V*c2w+Orj(?%-Gpnh7S^O zNqY5C@N9|Zksl`hWkE>^h#pM0D4|cDzi&c_2ID#g>Z@#N=k&oovIQUPF}ZLl=?VND z>CNuVkzmc)mR!?rd*I)cFN&(~C82ET`nIId@;J0Ipp@!SQ>NUV&=>*O*^-bw0l%}Wl5s>E~r?no`dYtwg!jpfAYyB>=u(R+E#q#!~D{y zqFJ2_3*!L-n8XtAqHqPC3QNqMb{hD?N<3!qT}xsiV(g!#&u)*88ts2h`b0RNG+Z9@ z`hrqd451aYfoBjli8Z@iT&qcvdT0&O6eiCMTgIndS6qofyV!{Oxc__sjT_|wKHlxI zSx6$dIacsRTb+Q~r82dKB(As*p^(?R2?{Mi#FK@T40tqLI!cx*)q0+ML=8QUsE2rf zop~Z&AXDKTMA@L_-n{b0vG zpu(ts++#>Uynxn;RQe@SLqNXKk7!|c#cg9H|7%zw`v7YXMZV$(A$%8f18K)?7~xVU z4c$GMu%(TqS_XYgik9bsmWudS>*EyZnebC6w$Lt#*b?X05SJGQR6qMbDRrpcyM7x= zlj#ZpzWZ>6L@>a+FMJSULkt^h=YZ=e@kP`~kG)91v+mE_?|@n2J_QngrlL!SNj51! zvo`;-F?`oUJ9l(WG_CpdWVpHcqTSl-Hut|FatOk*I&gq62r})x;)z?UqS8qorD)yw zo@09h1pHa5-RCb%vY{Jgs&}>XKK0P(Bu|fSWJll;ObWN8baGme%gWKxiyd^pjrpT{ z5>%m<36^5TYzzasoNt9e!aO-x+vAJgV3a=yO<(-B!2A&a7gy0|=-y7?gf`|MV)j=( z1h2sF{YgGjh_`*{>~=WML4X~VcQ?Q7axU6Z`jFy_#0PEq?zbfJF=PdPhexhA9H7*0 zf?ePL5m#w26CLv7ih4!hmvl$^oK`i@Z$L81%CPfzHpwIg+>sphyTe=H8gBL3^JAyn z)x0ef>jLxE+C?ehI~ZCHb_`5$@y=q$_aOc4=Ep#nx;92RWoqA8kT!Co5GqMgQp`gf z12g`s@wEU3%F7E~k@D#)PZpaN&G~a~6sOB9qSUGVIT*EX%m$|{4OLp?qVNzx7-txg z?kzM6-Sm0{fiis0V?rdaej}Qx{B2v_CH;-gh>cbBPmT8_oGF;R+NkD*HfOpRQcT@uv_28| z&u8pO5;sQm-de;NL6HY@7xs1YJIpY1O+8CDOU%J@To`=rJl`~SUlV<)RDr9k*}{d9 zrxfXm8&eXw4DTq$JlP=|7U>)4Apr4%pHLG%ACoeBx5-u;iTe~9KBgQzrYFuyeo&rx z)og4x+ud!wpCVC9t$YlSog_q8iTJL17Iu;vi+e1LSeF1OzW=_yxD3u`h$w8U@}W6<8`xTLA$fT_g?whN(aXpLXm?BL zUUo*wop!H8iFqUY5jQ+2Zu7WBAg*KTS&jRo?yLyknF>zrK9X&<6Fa1Z?HQs}NM`R) z&p@0lk=-qe!46cFz()#@02OQ;BwB!VFQPDB!S8-q&pqc!&=)^XgNQ0bM^%Nks(G~a z)jq%AneXKryNXHs2CONf*A7Ic{!#z4DkE%0Apv{{*wl~wUlyLsIvOE8#YG+HX~zM4 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�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

      {5pV+tQJY?6%XL; z$w^%#q%GkNIm*ozdrb!e2n}6y#Wo8MLAzHe<6hM8Y|5i)OJmP$X~ZV7N0=-#z0 zf>aF@qJywJhy>74@9ad}AUSr@#A0)%W)&kz>^MzvfPI_wSOc%rZWGRqzIxFR*mlE2 z(o&g8iv~n4-)cRgDd~`eQo$rYLYn|C|CDTJ49VV)l9vHf9X!ZZ&`!CiJwlXT8V5

      5mIM;WYGf>3=^g`BH%T__T8kN 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ɄyD4(~<;>LQHmMs~4; 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%0DVorr41ZSxay36TTnB`9Ppv&N_OSVJwmwm6k=S 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¸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

      ByEW22CNiY>FuO9is7F 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%0DtiKmlMKY+>S7K-sdEn4LpN8S!d(~h+ELL+;O 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�*MehN*xs2|?$xf8cc0L(&_NOltgEq^SS#W;j5#6jx#%Z|H3#OtBtH>I>zI z8}$pIxPzpC-mZmB0TPB3E2gl@azG|I@LKDFe3v*Ge~oJVcd_9@MR$g_YBT8pETDOzp>gnksM+u=!K;7= z{A)an307}(i;&K^$9vm83?^8y4#vIPVHfIaj3P5SDT+;mlZS}-M5G4kK;8_v58YNv z_Az%f41kKHWZcV{i{qXVmoz0Q$M|n{Z^e0kjgP(l&D1NN^KthB?dth}Cu<>P4>1$N zK*(AD5(gJ2Q1*y!AksD*ypu>s2Q*&)X0hq|PeEpvR5%lg8~3gkBDB+f;%6f(quaZb zcx1AGTa0$A4#ZhF)Z88{U3=q!TqzTXy}j+;PA^B{e6SZ+gR8zKk@z`buiPq6daGzs z2w8o3F6sHpSk%43>Z+bFJwK)=ZCtIeasfR|?tnL(>cR{BVzkGvq;*PVChi_RY76P1 z#*_Gbbm-o9#|);Mk5^JUjk)IAM`UFcp7L4$?ch37vIzp0^0}9~QfO;)J9ec|RvXCp zK>;Xboe=>Hh`HP+SXDEMQ)?qKT-$*TMsWVTk6Z2r)Vz16xEZB@3GNZHe*JuOk7yxn z(z{38;K)1*!!@qeMbOIFALsEMH%OGpq*C1UDHHhK6m!4;Nh|;(SaFR9v?bAH9%JMt z>wqO@;|;PH8&7l6B^s7D#Z{vdANQ2!M# zZ_M8jI7}(0BgFbRFCa~2cJJJUdsAdmoZWIOZ~}L6I6y2JYb!`1<`QqXE93u}{7$>b z_VluEPvcU3w>7?!G=Ixag_`e8r~%tNxs_wUBCJs8lm36)%FgHQ^yU_8c3oR75FM74 zrF3aTtWuh!lWAEgvl-8!0x@%sEeElr_*J4*Nx9@k z_xP-48@-A`-8q)wxvpZ; z(&k2*A*o5?T@964NeU0_TD5G*xC|e$f6ZKm%;Qg)$D(C!y7=MN3n4f06o1N-luuVK zdtOMD&YjN_ahEQiBjJJyl&`>!pB~(NVncDG^c(JSUD&ZJDfC9x)f*{8WuBt2b_**D zky3=2XDF7+RtZEYFVbI{Fo>t6Hf-n6KjP8mgwaAy+|i&Zka34X-xcyxtn#HQ*4e#*T{hxQ z2-5B7#a$wMg+-N^#BzbUU|0@d3y`li#(nD3b6hQ~Ww%iVp^R(q?2BXtRgQjG)H06( zK@CgE)FLtwev$-(YkKOSm3Lzo)qsMnCM~W4*%=LopgWjM6wUD#GTbp~BG7QN0~BdE z-`eInpo-9%6gDv`OW~@?=}0NvTCfr+?Um9oNKFj8o=d?To%2vG5!Z#490>R<$`S&H zu@VzOnW%SDiKTjD~3Z6S(uRHsw>L6#83>UO>s3q@AaYf^n zDOGl)aUIFdKqTTC-X#;c!boi%?I1^T(3jr=yJ`_ce$H)QE{M;?Q<_MHGeeh6kUdXKms-5>Mu=Fuc)CvFvSO-By}ypSF)OWrbSJSZ*^ne=TMfQ zg3}b01l5h=eg;WFI?o7u9H;DES2!wa!On5?u!wS?lQc7t%gY(1bQFsr0DpJY4flEH zN}OtzEV<%zsbmH^812AECePXt#Tpq&sCJ4`zZi|L;P&)~;igy~_N$b%9G$k%)UHMV zg&KuZTUr>6^Tf_&xzCrrgax&?Ij_kNhHmTPL3W9wwN)r z+h?&sM!!idLJ0+E)QF>9$?OZO4rgPmZthvNVGRWopos=@zG^U@-gc22i5!XrkhHzu z;1k22w{%4w$H`KSG~B$uC=>&{H~t&o&_@KcSS?X;LEBieZh+OiDdBv+d(_MZYat=5 zkx_$x=a4|6l4t$@9Pl*f?f88e>2R8v)o8r2cF#UVo_*Yow2M6Zh$68w{qdPRu4YS0 zP_$c`XXY01pQ6&W&Z?wn%tsb}{ltGhvij?%otQ$AUDaTRB0y%I7%ik(@1|m82c?fQ zouB&d2G=YVv;|H@qJ@#7K%MU4P%!joWqKxL_FYjWWE;6!<6I!`M6^bVy+6bw7dGbs zBhCbL&r*8Tl;ldZp~9_)8scieVJ1)+3+*&R%vO{_(J9Gl=cD1`Ixj}YHS!p_zsqnd zl&U)#BL%q#QUS0GR3<|vF3HX2UJr_RO@(z7<0z49+K^yk2;oh;Ub3GJPaPv2!^E*np@^#s(j;M1oi0$LJ%vGSd2o-Z_iiyM) zA(57vu!6kvl`gLB};HYi}zD@a*>DA}^9p`1Ji}0}mBJt|o8e zoF{ntei`uY=3i%Pd9j7r5#1V{jRL6|?I;2zB6d9-g z^*>g-)#|2J0L|dKG&DieG&IF~C8lcRZcQJ~c4`WR^9RUvU}8+=vqZp3ZbQv_lccb3 zA`FN20g(9Dpi0qv87#%O)QFWi-SQ~oWXUt^7xp0-S+BYhji&CCJF1y4{OUuwW@(ZD z2@r;G+jI1v@8voot;z#0fTjfXf6Ezb)?e8mhQRB(u5} z!obW#uy+HRKs&Qj3HHbl?_C0z`1}_NSQDH34s@UoXcKZQFz*G`>?+DAvqEHL$O25G zOCAT$!syK|ZSDiZ!exlC)7BlvPWwBg>%5XLRv0!xJI0&WO+K zIi!#YTTM`wwQ4LKF;7mD7Q#W1%Q+Al?VSn9Sq4^!2T7ZkTcz(z`Xn&52o5GchRo30+_f_{@pB>Aksd3y=O$c?mug@xVX! zykcn(Sbe$8BI-!XR9Q=pC)jSR!><7z_{%`AnvhyJA|RBJF>^9R=m)RuZR#MnJY8Vs z_C{AXqwCC3P3h$9Cak(>KnS;dRg3B-uaJD697`h;Q@l@0n?x;ET6F z5&tSmi?GqOxJ%IiuPPSatNzt!{3+R+UdOc>QaNxmMs<-$EL(J&eihlWUIaH|w8?!$ z5Le+EiY{Z25aGUC79Wn=IKh)KRBL9^VBmtEOSr@$@aQr?Rvs}Ji?Ga@M9;HoZKY)3 z$a6@*CWd|zBvo*iBf~kcr2@LyL<^z9#w20hCM8L?wRK*N-ca0X_ z^hT2n#>JIgaWvVe!#xyjWY`+7rLZq z@QUiLj0h1XSBffXS7wbDS3U5}?n4FO~RQEN^#QJp&{- zntsZGeVGWXHb~91mUkv67=S0y2IQ#yMh^n%j;HXN;=NV*KF}hXbpfFagTv-H9AbDuFSZ8o~lAP!-@7 z!PWHGWcn#}oZZpDEQ^q#8to7uD}z#$OJFN)4PE(z=&}_2BIt_ipp{grXJJth7fNcn zf{XsO2=K-$Y+eUqX-_3RNhxW&lztSLXz?h6kX`51U>$-#eZ1wr^kvvy(fzZh@(lQ zbSjU$2=OYjp5`J%5luM-K;y$ASQy(^rE>`!!bUu)o-5cv8SvE#jo+S$TUo{)S=*FNsw8&x<&dG2UGs!U+qT~pDJcB~w%ur8 zGvIE>i`AK2cF(c78|XgJS8gtdd-(Xs6d82$yV~V+dNcX%(W7$L#ktXnFN|}I5NWW2 zRZ?QeJ%(esgtKo*O)fLbSf|!LJ`O10o_&fuD_h<6&MRMwp&Q^UhE;o}3g7`xl%s#!vTj zItpv7yNBjNW!m~ZT6=B-;>2a>XxQV6es_91&aVINI&nuIu;ucxe_p7fE=M1**@9L^ zPSOOzKqBA=u*ScFCVnbj_=R}jhl9I1(%(aD5eRR5%!>51b#0hhEcyk$ZsrynOzDg|K2jSo(9KEh@^fm`2pqwBo&x>9~76;T?~05%RCS08v{_7fQx5p4?6^ zww~!9CiO17oqo8)RFJMWrlSq~@*<9jH0ex79X2s+7 zwD;}h;d03CY&&GPp5FgAQ-iAneKV;g zPf*Y&-I(`sB(F<+a6I_fA2ty==>m<#zg*~xAF*fCAI|&4Dh*!srgGyGQ#+t8-)**kWuq6ljq3ZyZ=|1ZbDO+6 z{mWm_$@b$&izXmx?*7o;`iK6C>B@Nu%?Z#^GM)fCI;%+dVosK00Z(8=bwztNQ7F8||JHH#|K=)8?Tt zskr6g5qgV@lZ{&6Bd_BE<=eE6j?pMavjqH?`@oaHN5~blIz2c(sI#{ixsrCf`;9tT z5EmT-OeW6D(-!49EoW16&SB+NVaF>F)UCf)k z=E*UviL@+c3|gKX?f)b#i#gNyWq1Gdqx5iuoe+ z-YI5_j3?5tQ_PtC(}U)rPVcD7PUHsdPEUwJF|iMh_D=WfZIW=OnAitU@6F?Vn!BB1 zVyo!v6qDJ>%^YjNR{M31`J|Z2$6zm871O!ZFv)sSOy`q&`?RHGc~U$DPIjG3@}zhM zoE*Jsn^-+5=E+HG*G>5+#VkQX;#|xPG!hYfQp^uDQ@%YdmU*_*DgU&XBPXXX+pYR8 zr_s}5uC(8@8Ygd#_Gy5h7W3toBihxc#Vpxd(EGk zdz>jxi&+h|)IMqn;>DxGrV2X6Tt05Rh5;}bpB8ibC&K947PI`gd1x)46*FDQWFE+~ zV#aG@=h!?eX8l3E{RW(BH+MOEpA|D-bk*re8K=)REiZ$jF4ct2(U>X)+H|fUP+)YH zJ}Z_j8Q-;>BVFP+G!NU2LwMd)jn9guOnBTlOnniPxPv3Ccrb5{_8Og6t@;5aJ;v#< z-RYsVjPW^axqEa7t=2enwkG0dpR|A7Z*&fiS_k$0oT0Tzvt8eBQuD>e)FwwS_nZH& z);V{i`k~mB$op5#{dS|(nYUDN&5n;i+8lsglb1)o!&9tfF6CtRFi9kHRm1- zs<17lm0Yvk)0fg@E2fXEO}*VZ;)*mHYjBM~r`p=(5K3^>2<;bEx^ME=!tdD982G zI(pgMJ35uwRUpZZ%_s2fxq6STeq4{P={B1cu+p0OE(<1`0qNToaCR5rlta$&?E=nX zedHPy@WMgZs_!**ArPBV&4btNUymDeRh_ka+1zjZq*EcHrmPj@?$?vux~Q|*`DVP&+0&GwrO?82hZTba>Lh1ckDbs41%7piQw0}x)=gL9Q^tky8G}UpVg~=@XD#E*1 z^Ihtjg9Z#Nr9AQx*Rc4ItM$3?{QvB|3wImIktO_B>d5qGwk=VQ?)HrJx%)IlQWD3c zNQ3Ox^!o6CM3ICA0vtR*WUH)c;&j}+zFT<&$L zh1(E{I@#T2wghi|`g5Av*N#M1n&p9NCPBhQ)(Zh_b=qq$zCKxRbrZ{cvmwY2nzt zpN_Y&Tzaii$g`oruoUi!Vc1eIHibhQE3gX2rtoNE)yhqt53r)&%s*mv)WP0sGGR(~ z=m1aaDZJ^BmU-0^+_wu=OjRb3OT~+VF*MELwo^@c_H^Px){!YH2`1%yFfG4-LvLARS=gBK^*J}rh1(J!vzZ`*=)Or2 zqz$nU3q}ZL6>4%dcKM|F?g8F^dL@RDtI@I_Xicy|&)G5Yr=V=OPr&@Ag2naFdK}5dHL=HerfC&Q>HK*3_f}*$*(EI2BQwP zxw;f$gF!$2Og~#nECz#q-g&jd6ETIwgyX*d z0h1+#VlZmw@MlSWo`ZrDht4^`e|sWGp9B22ClZmI1O2x@%3O26-`d;x^RwqjE)!LI z4iYf<-=6)&2G4=>fe89!{4s_fpqvcB2BQuH7s=pVFzPKb=`q(F=p9JRq9SV%3GLt% zaO%OKh>kp-yZGGRVWjW zyh1_)gEpc*rle}(8Mp-D<`kisV(-Kgdzz@7qQJ!H!+mF%q&PV-{uCitU?9b$snLM4_jpaKbgvebXARJrNnJwUC3&LGrM@K zCjR30Iov1p)j999M^n-!@hH+;cK*gC>n2n5fH3M0`+GmmgbPKljcsRU~H4P99)f}r!BR{9!{#9>@*5$P$nQ;^YBhQ=Z_%Hlr{}KcXLX zbg&J6ppz`D1ZcC1DQf0A0Ehci|jY*Bg2A%A^IaFmksj~QCKkm0GH5MBLtMUMO znSA9e4E(sQmmy{`!O{MK1XelMECkR;wR5z6fV90IHB~TaPT2}wB0^GUfz1K;8zzw) z)YG~0s60NB1SuvdKLEGo&fYN<2JSLpJ(V9YS0sj~7^Xa2-GTz^6yI>0xVBKk)GJ0- zM!kw5GvZyvAcS)yDwf(tFbau!`z}Fg_72|cQyQj-u9(f?K1FrKpkr|~rYMfN0=r0@Hjo0``%zA@;5~j#+<2FCq^FO z9*!_>f((n{N3Z?^qV5${Q}BuA3#U*>8ra!Bp1Wil_v(Ae#!Ri%hL}E_f{~3;A9@9M zaL|7s3A)yzWFWJcs~q5dwt4H4nO?bc#1yQUefB*BL9GnOXfV7aVhJZu7LCJA58C}H z$VKBoktBh+i`2`dDTa)uJ4BLxi_y;%TSg<9X@_wsu8YSZlzocSU5rgBKIO4`-lq7S zm-mh&?hT{v=ne0x@n}w+xW&-fH-c>(xS8uqk+Kbm?7I|JY@nQ4N17L#K(a`!V`vOD z;uhgp9KS7Gp{Q78I1*{@F4aA?%y=X@LgGa!`U!`E%#^QE6ci5RXN?S{C@36xh?`m1 zP72lGFfI`3SMT8lM#BhY>*2QAITq_F}I0u*-% z{LVeo!m+%jSDhzS8fn>3DcTE%zJg#rI<(O#(wiRbR*@0|;b0EayX7ge3rEW9b!dw0 zriSXG0pFAu2uE`XesGFJ!5X|wStl7h7`pwMH71DP1m{hSJ8m6O`%+Is3LoJUa_2V1 z9Kj%D-J8r#fh!mZONDklbGoqF6vEPjqa~-X7d$3@2=(mLyeBj z!3>Ye%4kZklHEN&at>l}lL$r@5jY1Xa7RIo?^g11@b(i1`}C$$(xDIx)z|O8!+EZ5 zlsOrBJ)HVG;AazpM*xkpK`MSz+G`P~m6pe!J1O7e{M|t`z4Bn3Qa7SgqRfa{YYe&e1CGZPl=maY(%rwTDkfyEWW|=l zK`s#{wdY_Ms?_K^Q_?&br%vsZcq#_L@MpRx)|O;zzfnB#4rP^gQH<<|ebL_WNQ&p+ zJvm0bk)t=r^F4a^gDWAFf?_mMvq32(Q-BPH!sjTy`jp@ghVAY z152D8;`RntF$ZaQO~eva_StXZ8#sm10~swNKeBKa*l&_l(u~sa^`4DWayP*tGm& ztS^OkH|*r-mDo)wT)QE!TYLLRK^OF;Gz>QkWebpAAcT{0z_?NHr2e?CF@_W;x>0l% zZ7UJZK*-(uA(8e7ITz-&IGoTHe06yCX zGAWQ|sI?aM`P$;i8ZfycwuKX%)zS)h3g;3f$dC#7F#e^y!_Q9-W!bGPUnww2b0# z=d?@_wZE8i<`&~(K`FU3HI^4psEhpj^S`84GBw_={qPx<#!b=b)I*YSAj7;%fE7bJsjL6 zN_n%I_i#8E+Q_H!gew+(Iq6?W!Eam1KKFFczR!mvRKRA@Z!TpqkfGxX0K{t8H|>wz zo5@Xfj#AZZ?F2YpvAj4sU)<$+-$BrCp(fNW1~+JpmsbHz+vZ7E3|H9uueaaYJC6Ff zmFgCFXKsj8&2FQ>wt*@8>(k@UkW8v!z zoveo4^T{|zn^{L@HQ{~>3<}WCdxLYWRPH8FkZW1~Y(vIm0noQI_Y?X1_mx(40zzu=61pUn#! zVgN0qT;Gfc1H*hYm<%s+G+4oa>vq4>%OgbeA*#T4!LN{Bb5Ic@myf<{-{jdZ6d8kl zyZ4Xq4M*-vc}1V&E(b%rp*#AGVf!`qu^E7gO=)av-(>wsuh)zSc7{AC&>bNAkmIPh zX!o+4F6FQ8e^HD}8x-_{S7{e9-TDp(zX;)zhUY>7nCro?`zs~E3P1xO{{~C|rRfMN_L@dh0t{>Lr&8=|j+UOgYWSLiG=UJ3qet~oe7@3k-9AERUUxD0mr1=bRNs)4$@>+U#D z&Lh9*JVt{NpD6{1vi~t$!%vVKm+0nf%6{JKb#F)BK&zVLKAhv{1?E^E`50;(2^A;+ z4Ha<2A3=9VO2kEMxZUpPqCEsnQ9i>~fWawd6Qz1^1Qs=QoXs11HL)&7w=M%aE+GA*x z-4UH^P$0PtdRoqN*pGR}u368v(0t81a`0vWf8vGc7(3~~RW}@TCQuILjkH9uQ>eID zkb24TLwyB&vRGd}ilz@=1%7%r80Rm=^+uiI9H#Y$E;!9;6@>zMo{z?tU9^M)=U>G; z`I7zPwz5~cA+d;QHqae*1x)loN9gdzzeniS_3R`5#};$S0(epIGpf;keE#*b>`wN1 zP9^7ZoI!~mKrKdFWRIN!j`DUPTDIJzMeb2%ps8U8{y>nK^pBM#Y4>F{I#=TIpH9 z7Rk;)Q^4UfxdE7o%l^cy4Eq+;CnTfb(1{G9-vzUXyEUFdzN+!O3LS$_;7R%M8m$Ob z_a+%}9ZCS`00~0|CyRHbqPKNKv10Yi_zze5TPNIX|6hV)l}HrHPCN!U-tKh30;4Vs zSCwnouCu;Bw0k&qPiZI zs!BpQAIY%Y=}tzWIY0(--#WSfrac*ra5##~L-biBdcQf6*A*nV!UAH@x-VT)lS7_NA zB6SS^Uguv1hf z^*Ss{K`@&5v_2eZEe=d{a1eLFJD`<~1{aV9I83}|&23U`9-RLZX!SV#uIhjQE)&7w zIriNNmU<-Km1XTa*$yqK*jW?rVo_ki2&w>PpuCx~7f>?gyXvIS;8dD>047AK_?$%H zE6w4w+4_^X&6lR>@^E#4Nv~s#ER>G}q)#9Cx`Spc1a$~!j8opTb9gEO2ebfTQ39~Z zIG0Qiaa1HKALf+z=sF$_KB(I6#QkMPqpl;o?B0FXrH_ryB1HKRCZ3E3!o+aB6|t2B z{jEh`5F&SOtcr-Q-yhO}d3se@$ESUAsA+Y@}{3S4%?-8K(<8B5W24MzSTlJ4Y zc0+3)Pa#kZkAa)-F($k@#{p(v_!rQgq@H!&9p81~i$Qc-+RKl&OsB?SI-p0)$&{Bb z?Y@#Lcuk{z3wb^aN=d{6tL?!JK?SS49iK4~p<{h)XoUR=gw6dx_nuOPY|Y=83uS7@ z&DeCW52PUDNJy7?9K*H(sSRW>9N36eZ6f4{P?Mj-t>WuGlb}MVf>3Zbh&QAs3IYzE zjU#l2hlnHhz_<&9_$nB~MBjq^F}}YAufUT;CUiVvQzcj>#U7{}pI{A}q>@9@Fk2ss z7(tyVK{+l72nRZ!pjfewzh*EDV9< z3~pdSThl{!N^l79Y~ojPXqoh^W*4r!{J4BK@A)+;YPN%iJ&z)7%wGAM zJ#v&j;A&O+aAXgp<8UGFnw>E&(y;Nd<-%kJ2m9f^>IdjjgZKH5-40wpg=SKI98t?# zWN(CdoaG_3qIU*E=O9YWwU}F>9Icc9AYOn(*pY*p-z|XVH;B){p758goj*itY<5}; zAYFbcv?f`P!D74DW%O&1{qOHad0yz$Q)~af_C#H;q0HdkR&AhuJd<&>aRRCGF|%*& zt<@ssJ~;#8z9qV0Gssp zUp)FEopljDy17vh4cW-!-}8|}CGMUgBpvV*uGV}lUz8#GP4?u^ThE$t7m_(t`Nb~U zV;G9aX6^>51X*2%VJ3&0ql?Uhj|rxcQ&4^kG0!vDUMjKe@`}cTHB&=b5;AYYZEc@h z!!-o{(+uEmeD)0Iut3qp1e6btjO4U5G)0)0REYt{J46A~77)F-f=h*3Sa{=1l%jq^UK|Mg?M%M0_qzKuaGfzg=fAZKX=GMU&fQfj7pl~C z;~e8W2IlyVlR7qR1%A?S6_$?Tf7H=c>!8hxxD)dHMfiqGNiV_C(7rf8ANrb=M+RTV zFg73qVQ716Mo^G;E_}yH;g4)zFocK5+2VPC6nLD)O_Gpz&d9d61gH|bgD(~Shl)A^ zdO_y*FSF-c&*+l9#1$9B7H``~$rPV7&I13v5w_m^;FCo#DN+<3?!-*VNJ8UCLAtr& zc3lfkFScHMft0SNK7H&sACeCl-A2kJt_UEC)y;&-y#(>P!t8lhtd$`ZIT#`1>b z*-iU4Jf^B{$;mA$$2Ix1`;n3h8godNl7BvG|bI( zLuQbzlWtSVDyq-94au*`N!BNtY+H)l3RnQkOQfl^f9I2;#vn24&C@* z5(R<^bhK&PXkC6a)xiKW2fcp!SO=7#wf}8>{Djq$iAwMU1IdDxfGZVJ1uX58A^8^9 zG$hxXs*{Cywr$s2ykk3sz2mJ!jj z3MQu!6xZC!e58{FG5q9Y>thZD(aCf$T0jAbR&1pif+IGOBg0*Ig;}e~x ziaFH7Q}*tdk4dpWoBttC+XK1pTakkJZov8ra=WJ6r=_P<-~NERaJ;Sc7*!cqhhxx( z5sd6Bfa~OkcT-2PJ1w{sqole5C;y22T~)FoCJ(DHpWn^(qfaPE@?bxO6h16* zS@uoI?Sqr-I#3EdM}wg~`Wqjbw_I zBDYvE;i51yg{uli0eb~Q!gJzC?=q9b!x6tVeJTX{MzGLY=LCFwF#>jwswTzCuxrhQ z@ENJarEbaAgrvkJLSRcOfh>xiTR8j2IHm_3RFUY(K@gF!qUQ!>L^@J%2i2X5GFxO$ z5YVv{8PODW-e<0|3;71!jIA;uqMXW5E_p&ptA$7CAmy)H+3UiDeVl>LvCYAx zC2{C6>3KVWnZi0M&I9OS>yOsNrX76G#rvd7ZVqOhWiFs8l{QLe3JjFtxHu8YTQC47 zb|ABrPL?HSGap+zf(_eUQ?);*F|WGfS{VCIhp$Cyyf&%f&S@+16py@+AbC@3Gg-S8IC+b_T06=IlcL z!JLq45Dnc+l#6q_aA7nxOBsss+A2#-IN>M-CeB$rk!1o=u?#Zg3PKmj*aEjhy#Qp& z@1M86-1;+xD73lU*MO`YbHC_KDpgop(1wEHOu=k78R)*FR_RV;-doF@(p*=Yu* zMBmYbY^FckWOl4?Ww=}27eC-=BGryMkA2lEH!~m(5$#Y_T%(V~(?ck%*>`pC-x43n z9!coW<_LG=p_T$M<(F&)4(P5Jn$EX~Q_o<%sGeKQkkApFFL>jYg+zw^id-RL-A3@p zG>2zK4{Sv-Pt`&6VkYgsGZ|a)g5XBJL%o=crT4Jh0o-+Rb6dP~&@OS8r#I5-ilS>7 zb@9ev-Z7Y^h^sy1by2AJ`k}-)W$2T;OUtpzAI`@OtZ#bMe3L!;<0H^s0L*Ws8b~ct zgSimvs!3AAX|NQb$@8luGfr5S%5c}ehe~H>jt~Y8}ctOD=#imtHDk`M&{b03Z{Q zzZbseg$16?K)IQqK~Z+yu^;H^lx^-?XwJGan+X@TvlAqw7Ju`6oe>aFp{D|61E$@C z*@sgB+TsVbKcIvJZ_vev7Ce9;3|ld(5J zqtVOh$rm{xEYcei_W?^{yN&M?X%@?P>_l<_L5MxK-?Xq>g(LFEA=2&w@&pvyyd>)? z{2H9<9=~^-PRNOKB4Jsgs}9Q)*08m$jaEfjdgon%#E14^ySJzx&Yok&abLUBa`U?2lk zRmFFbrYR}Vk4JN-j{R z6IpGe_XdEvcrmPS0zRLRYupbV)EgXw%&QSnObhQL@na*L^Rc9PPpz#X-=u3RVFLp2 z9W3q;YumKN6w7@$3`h{8D@-x9%eok_@C7HB!hnOZubGz z==6rUCV=+Rw=R6!I+Z@0Aa4^qAJ0bl5DuV_xPO8}TfS>|I^b>p?uHbcEvW04lX=}% zNCGq@ZN(3Vh8BEstn{j&UsSf>&Jdp#$R_~rv})ja*o{2kqQUF8Wl9BKy=xcV;p}DswGDFN*eG7wRBId3Xxyjvf{4;M(2*WrIpo zSiE*28apOf1VU-B%#&S*IT~V^a;h!5Jh9Zw5xwCQa&{zId?~?+2S|QBoAv_*2@7FL zXxOKHfs{~6bt=Iv=g^<4iOKR^zPW+E^89zONo%+=lbk9C+F@)X+;SQ}t03Ex!n|nr zZm$u((>T$hh=kM-G|D7yj!3Qs$Yg1&@L;MyV$@`M0W7Y;|ApNOuC@s>7g>WJ4EuUG zOz}1ANK=7?(F_%dJPT42i2T<`Q;~cVCiphbPsxhJ6fXgyLr)3c!OQg!3XV+D(E^D* zZUT)E!?!3%GGj*TK_US|@4l8T(#2~HHY69zUtN); zEb*>}u$hGmfr*n*6`{@J&nYjA#iFG8gEtuzc>^D3@0j^Egu-;aU-?h~ya@@KKr~t@@yZ2NYHK z24;vSRc9rUDU<-5X4w?P^~v_na_n;jQg#nzxqwiJd9g(A>9*{1jEi*7(u-IhPblTIlyaP!J$2X1p#`jA0C_mB*h8P1Tjak&HPS-Cm*3(Pixm6i z;NNjG{0qR}wz5X}i|cg^B1Gqv4-h>@fpw`LPDuA;!apZc+x=X&tn6#cjE-vjvk8t= zueascXv7>ehjP9kqjfDkd=U6j77CJVmkf_%*KZVFn;ULv562=B)L8;Wi0ZgCMksP( zg*XZ(_nGPq@lh+TXs}DetQ7HiQBDUIc$m)xHbdbes7thfh)4@JiOdnfCWsT*ivk7z zvtLd^QyK>RW!{Db5lEpsqqsy&#dYS|4=I9I0$qVx2?|#|lH4GFpzs)y) zd899VlzsDU_DIw_TzGh-uMWTbhbz!pr^v^SMxk0HF_a(FztS|j3Rj-zbD>RKPFW%n zW)v=yxRpl~9&kTz%c)d#nUBzBDG{t%M6?h^VXMWLe-I#>KFU=1Pt!RSE^P z=b`=pT(zTb+w~W0Mn%%Ar!3fMN)Gs782%KY5Uk6D3^3)4w*qGh?I+fPa@|UIYi(3(HEVtH&>k*ku$8A0Acu2nfj^; zk}gPHh5R&c0co$JPN2Wdn8BPsrBcF&s0s{4SU`vSnka8f`3~Qnl~QruJo+BtLZrvf zYInBYyz&yC;7}Xa4P<(Pw&K%^dw5P}=gV5?9)P+ikFz)Ua5Y4Qg2&k_d_)&URNLCd zCso@vrOI^Ry#C^`ZSV+#Tvg{xhiSa&i^tgxe!944tL2~Z=|1mCf0aXgrbIzufyde3 z@Q0Ly$!D>HhzMh9!TA$HJ zrZv?BQMr6;CHwNL^+!XkR|}(QLUI1EHzbuy_lbdHiLoJ*ABQwM>`pmdwa&2vn!iS= zyL>oV)XHxLAK)}c`{+BZ-QlIQ5nbJb8;TMp5xz_aBj@q=b)7@R?aGs|c@WWH2Pu1V z71r$c1*LyE>0B2q*xB6hFMl{#pX671rx-#-z~uK)Gf#G;6I6j%ynQ=I2S=@w5IxGqCqU{NkPzdXNn}Z($UQTUBlB0-9yDKUaAJg_Xq5U zdN~~2fbjAReImvK$iN#fs3Pi9p{F?>h(w*E;#5V_SWu;4Fd5%YaBVxsCRv9jDztcx zUvVB>46gcENGFpfH&qom0+Hp32ACM!jqH}#-p7mlR<7V9M3!h-T_%1P?vLnKUN)@aYsqG2aMA?**iPjJAHe!8&Y`s z)MC#F5Q3g?-iwnyb(DhK;Z>9o2rT{Wih3p&1LzP+wVpVsdFWj5u7i2NGDv~cuQs1Q ze*QRn@%XE+)1}3AC9+>L7Ym1ghipJ{tlZ)gF_*8XI7NyA#T_EYkz<4ge-?V6kw%>v z{weHSoSE%gyYV12NRDmhLd$SvG3hc2cQ8&c(S^6j%U_s*{`A=88ocK1); z?zQF=PY@0|6V4S>?DA~@s?ZCb~UT3A}u z3k1}(@%J{@y2Odu4BClpR@i|@X8M&E=b#^!yv!cK^n2tb@DI|l9dc-hj$zDSppnQ8 zg0l(qtOZLC79LEy$Jr4KG+1VjvqP9+G`|>^IreiU7Ocn7=}~L@O{B@C4NnU5FVXbu2iNv*a#|cqM7*}c z*rvTI3}hm@X)g`GZV=xzn)4w}cwb19&;ee)+){TQ){LsS9vC&%!0UFe!%C)A%)`d3TCH|XR!`q#I!l|bj({f=#im12Y`bROx ziwPRY8N)kk`}{s*h`?gu=HBy3MsW4HEF)as;L*Vzn%RF%+Wj$p(ljq4IWIEwfD627 ze#H8OXnQgq9IzWG8HfTy7nPJ2u_}0XcgNFhtDldb-n9FZcJFE4e@gBGgKjalGrI0x zR&uiQSzf}1fca3UfhidH@0RoYaZM*&liRDlJGs@(6{S@=ZGIy)#i1$H_IyH} zF#FDigkp+nzE-?Zo6*MDG9uyUXwJF49i3s%cF7H#kE|XLIML@A;2e9v_dE};v#He_D-!7@<6>#LuM662PIRn zX`_z#0IoiK!E(jJ5yVu6hz%D2B9J0;;-$8d)X7mpmZXdSV7UQM=h-YZ)Tiat1jHk6 zZk>uSQyo%ZYG@R9LoSNKqyd-*mzUU|!OhHLP7gK7f4$s_M>mtvwX7Hw6J;e3t@`3L ziAKzuXv)R2#4S;|WH_Ok=9gQObH!!BM-wzyRM0_4Iv_y48f_b{DH|xakuM;P9fez$d^(tYQmJ?yB98rRTWS^meI$R#d)-#RFqWf56d;pB9w z@blT3hl&=T9>M9=hqaKzl+lZx`fguoE;>6K4^E^@a!@$09C5rDOzIZatL*d9&JKlm z#hJa22td05X+X0TXFKYR%kvS1IJxd9FnSO1pZtCq?X+C8EPCU-{DL`3Z8TSanWumJ zqmk+6Ja)t(TDflqUp${6(og@TODn09C?$Q{**A$pq$f*Yc5OjOG-k?1>|Z>)P#IfX!Ovl9e{dpLT(9#7}FO? zeGc|Gb_lwpD2u6_s$x=MY~^jp>n^oz%~7J*4hyx`C2B-}J2FiqT9o$8h?<()p{|B1 zQwDV*CYC!NxNHhI_+o5zNpPAPWP^OBLnX1SXkAb-{5z8?ixHjBE~Ze-@&f(#5I#0J zzZMl=9@FQ&!TAhq3pM!3)08mB6V*5&Xhpz(g&l5g$VR|xhKE@i#9VB^)KEt#0|>~Z zf`FTLgnFpe)cm0G$|7~n88~q-4P>qAFt{LrZVE_})OeiwuVhM>@g)rsxL)>b!>s~a zVJE-M`;Z_mgtt#tQhfymB6Q?Kio6z}gQeu(BtM<7)`_Bs zwMqm*E{~Rq@ffG(721gQaWe~9wrp%II~@MwKB9`T9hV0C<>>TW4eL>D?-9tt02?!Y`Xj(&~gI*zu15JnLqJhxKZnYe( zCsN@8M?IAsP`E}}1Soe-;gG4Myox=*Ana8Px-S8-XIt4TO(d3>F001?CsQPnef8|w zNBpl)9`T}rg0dI*`T5t+vO57RJSn~Wa-6|>7);OvxU-e*7Z{V*Vj{%YkYTLJKmw%V zX#rd(V^7S1REU=Mf64cgw3*APB>sroW7DTcKCft+x^0A+AGDB1|?QMEoU z$?0t{k;iyQ;o!MH!h|F101?}r4kpwVj7pE$ZhqMYNjX=mwDt37U4{6VcTo73)olzZ zkQd@dngxi{>1g=JK>Qdah;;w301?8!YLFpuNG@|vYxj}y&uAvqZ5NlYcYxf>woFR**qA@EB; ztV`gL^9FCz9&>skyyQW6+5PBmLg8x+g@+1{Jo@MD)k~!G!@ttMDiZWQ(UDek)+#i_ z`kF~?O2YnCwv2KV9K@CM<`k5=@?It(KfB6umD%miKT$m1|FjCeuctN?Fb>pkFs?2r zsXokA03qZ?yo)y^Pm1^+D1`m~YO*Hhs5%>6xOWJf41E&=b?+5ltY6#vBKlRZ+YOiQ z73z5ePoIn-;=xG>qkQO!@-btQiqxfWKC=Ce#{6ry3Z`P?5~5V|Asi5L@Dd=}&-!SE z%W!gE;R`w$5rFvD61Zl#9tj33xL#N96deFb>2kAV4F0|^APe@A5{+R~XMuVZ&0P)ugG*ZLNZ_frP>mv2L(0g8T2T$x5 z#=$dfa|l!xGC_9W@RPoI*~M^hdyBKhzczzQVT?0;NZn8z3p~2~Nu2Oq_{yn>9S(48 zU(iYv(;Iq;xG3&mp*n9A?cZ+Cdn(i?{B7vQk$2| z9mPES!?sXIa3a>6bGytQd5~XEa|TsO)f5iPVVE1IP1zSWJ37V4gp8F z0zuHL!UrD~HjR^xZ+4YXKL>Ro%gvkix6&VmiX06s9K`d4Q0yI%rR)??XXjYikHS-D z51G-cB z@1;!3@1J~&bqWt0$aXisc(g!W+Y|O9ZN@v(@HXv;5hP>~ATr(*lJFWW126=qk5IM+{uZ2)j2(+_gd_!NSY*-QRCi-M zR%;KfuX~P`0I^p*-P&RIX)dEh}_Oxf7c&C(AMeB{go5)XhUELPigetcd6%{GkkqgMuniv-98P zlBrfo9X2zmx~Z_{uA${K;E;KRw%KdV@LB30`Op`wv*TttG*(Gr7cEXD}gf{^mh`iTsfTIElJc6 z<|2(uV#Oo+OmgBBgR#!5F%F7uK48v=RrvC1iLKXgp zyt{ln@NgiP?Q^F{%H%&aPts@cN&3c8FcmH?i^SA=+#5!EUo(+nMukiqVPndwkh^nb z4VQb09Dy`%cxuTlBh!6N-zr0F&eezjdd=V_nG0+pal`VWq?>!#oy{QSCK1|=02TZC z>|H?sj=ppI8cS$*(zU%Dz}MiYaElS}GUrR6(+t9UA5mN6f(evNSz;ccBTj*nv1DD@ zKu3EOfJH87+@b{AD44-1?6r|32&9XPX_TgM-x_n(m}lyu%TK^_x!fEV#1NE%=MU6+ zZZ%gDp`U*4@61&#cIpPq&#QXL8VL?CaMU&xH<7Z>&4|yjcdvb(_sHCK&B^dzm+WMM zD!MZ#zP_bIGsUYvIaAA09FXO6Gno3LM!70Tkfj2Ppp$dh@x+mPmWu-0PMoWJz}_55 z4<⪖C(c6K<@7fxXlf>u{8Fg{PP!E_`eEeI$|9h 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

      Kb1TC_W^xhH+Fhfr9zKZN1|pCOmf)}4HIA+ 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 z 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 z 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 z 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 z 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

      ;bD2tX1`5W@;3;3iX7gsf5c)4q`+yKf^9i{ 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äIV85ZVl+o1EDcs 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℘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%0D5Mjo76-LglYV$-wlel{4}@gHcNI6-Ek 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

      PR{-$6J<*&u&_f8DvM@h>OUp=ot&6z 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

    1. Ky;PLv}=AQ!Vu8*nBOvPi;<1 z*g7ELfUyV6FgF7t3esU9DEz6obD>|L2gh#|t;sU&4M=kmoR%fx(JIZR_;Ko`xndk# zENcUs2yB^zFYO&0W3~oEW5(yMBzt*H!Ay_1l%YfMK*8nW*-YwD3h)!$qDR`$)8*pr zw4T}eOS>ncd6`J2$GyNMwjh)2^hR<`h3%v^RH{rn(sihM(Z8+etVq#OM@&>%*p6_F zzQ86J6UwJ6K7n$CtZ*C0Gt8^CQH9B1OT+ z#1Z(}G2I*=p8X*NaW;3}Y&I$rQ+LiSD-(!i*X#q6a!|}@z46K=53*o#-OIZGZ4gRQ zuvBw0yFDsksNMt8a2=KnLZp^YZGDGrjmnTvv+`J~3R}p>dsRwu0J0p%ox5+wcAEyI zF}MTmMstdk`6z=m?!5T<6$A9Z#6#s*W@U1LYc zZ9}(1Y=5^g+G-U@)t=kLU6pAf&!UsGOBHcCX9bMt)~vjXF8kU$qF%_`%BzmYrol=* zUHs{WA*1d7Vs?Hye;B

      JN@X?NEj)h%s#_=mVk@#h9Fw?&~^3zKxfQPOmCZdtsBr zZ~rw!zBLSvXurCI(3Qz)os(x#v2o%;b_-dRJfwSUX@+jOl2N5qY47j6!q4~go63DvY6IVdOHO%wm{1s|qeK6->3JHwhob;!qYUw;z~#p2pPN9=)RE zmIU-{w)mcPR~${LGE!;i(drxG7PO!^))e2-B`Fa_)MwtYLp0B%Z?7Ri6*Cx*DP}fB zPW@mwTnFngxBgQIS??VJV62$rf};CWsYy!Y3)Ey?+6NNc_$RgAVgYQ}fY4e2l#FRqo|D?^m1jO5811a;A2syLpdy&3K4 z6CsKOfcKz<8lq5#oHLEY=VjY<(qxR*@k8u~ZEK=L;ttOy<6})HnIqpivu}(_5I@%P z6TVDEXnaaJDVxb^F@;h%nLv3Ibs@dG#28UFmx4z(DactLo9>)drS<`8%!j_onvVrj z)PeR*M`g&hZ;WPvIdFvPI@VDUWky5Y&!ROLN}{pS>XXFtx;L>3SeMF$NU0b|XjL>J z&4y9BDU!lgBZ`1v)~t}`na4{eqaUG7$IkbX6^TnR`bt$z?xT{N8X<;HO$-*Sju**m z_rPlrUe(FFZ9&T875ANO<@a@cx!Yj`6zS6^z_uw2X8WKPz{Of7wC} z+sn_-&(0RhHKhzUY-w1Rg{at$Xm>V)7}H`ESYwcg8^47b-BgFP#Bc0QDn;U4@B{#y zX2rq4z_R*xQ4w2(EnK^42#}B#rkhb2ekqa2l(q|@9tI6f1#?4`P;*#`xpiaOI*%Mm zI(^BRGoA(cQ*6o7E6splOdHA%O9y^?K0g~DeU~@N3Q}lzCH7MI#Utw6M?zhE>N>DV zP?S;N(>@GVD@}&^Owi(EY@!(OXfZ-=BOaBW9&>F<)kt>RuD$SiTD0ROJa4ynEq!cYGkQ~ip>1;;YC!TW8gLm> z0=ksQj4-t^a_)6?@c46PtA(@64KtoeX2H{%?=i7!BDF-R+Z zafgxvT%lJkej#1L!U!uZqS?k{TVhf`xuXVEC8zU_3CD+WGe=fh187x|Q2gItPN+^8 zkq|O~xm+Ap9y)bZ(M&q10a3vYGdOPIejZMh1nmflEF)P$`C!O701W*op}}AcJ@HO- z3T)%FL%;@-HM1VDc>od%FWr)=xZoVru_s~fE$v~RxFd{}u@#vM^qnK5xK#g{t`Fk@ zg?8p9f0ualSAj867y=q1Caq5*a|*AFyP6UaN5s2XB%L{^NwARfY`Wl=oI2BEl64LS z3p$co3@;0c4XUV=TWcb4&MBElfxwOKLajnh!eiW<(EL>9eHljCrev3vwqtKD2%FHsA7oK#C@#% z2NMhi3N0kZ8JZgjflsT?)@O>4OuELA^e()}zS1r*A?d+q6TcPU+?nO80?u{O1)M{H zAFQf!+c05jqUq}irSU&T#)Xt+4?OZJ)lCGYjbOY7S-KfKtCR}TLEBT`NaVAXD!e1m zXby5C#H3Yfnu<|*Y1ps4Y;=dmreHMcxm`fwC#Fl~yq;=_enY(6OW0NYuaB z^e}6viSWjaIAlKDhf+qnF8h>I9XBRs{7-c*>?vS~iSk*uNv10S!#te|miakPnNW?= zdc2%@@j{EnKyW}<7Z{Y%4qHh8;!K26Gj_s(4kE4y z6j2f!(^oCQn0cxc=;(B0>A1>KsDY5o9n%)Y4Zqyw4OB2Y){WmCP0o;^06&)Jr2n2y zCh=KRUuzTmBabxeKEbD9$gqR?4gMT3gK%)E=@p^5i!$4jnl-4hgBmk&dj0k~UE8GB zxo*XpH)V?N&!pRbLGmFlt)}LPh44-MOb5C))2|cu7t1YupwlP zx3e;kp(mGtEJs;WZE=`-+dC6V*l}<98X8{-c|A8r1O@T=q|ITAHTQFbW=T0ASBB?W zL!1RekRlS7z^lkM2NyTyb{2kM8_G zNs+Qy*=)NvoBfeD(v~mi1nraMga4*m>R&AOe*eG!kLx7M#$u!{2+ZfQqD**Z+V9u# z_y#LYH8>-z9X|Yk5`;(mF`nB}9f0GQ6;Oy4q$4}!SkpRp%XpWwk{CsJ#Qx}epdvkv z7^84aU1GXd`gBJyp=2D0{5ULdhiFXE5(qA=uqZ0_UY4_XLa``#x}?Jhdmm9i9q}Hd zAEJ8v*j)s9F|;0)|l#41q5H6`z!Pw7h4 z$$x(R_`z&~M01%^mIN~9W$&%1o?zL`>FB)lN?G67F6(#8A-kdOw=ocQ^PF$aq7^3z z)(m?|NV`Dno&;Xw=OqO73Y2dLS3$;#;c&KD(mZuZ1Jbk<~2rX1~60gW=L*-&ZGyNE7^*5%(6L0jn6VYJ?>^=RL8q{Ogx{Knov{|xpE~Sz0rVotn~DC zlXkl(ql^uRuBF*ae#w#h=z&I<(A&lIm^t7Nkq_3K)lfLs5!KYNt`scVeEaF*Mvk{2 zu-lTMmgWpwV9__;6RD-sZ&nKnU2hW|GcE8An>yTegAJTGgdk)aKcdoiVL)8cH)sP6 zgX8lT7<|oo$c9)oKp;?fAJST?Xmz%1S^e`Jd!0vY(&AntWya;!-%E;bp~N(Tc931c z!E1yYcUho-d=t-2@alg^0a0%xY0F`(S0RqB;q(YNPvqtCi_`roT%D(d&N9d1&cdh^zmVGsa8=sEW82=7 z0?I&A`N2m*pCciG3WjG}$}zA#MtXV9$R~Lv@4}6B8G#{P!Kpvm>pY);9%_tIX(Dsq zcQDM@9Mt}B0=f~CsN65AqA8yX_GAF9=YHLfDT&wTC68*sZ@h}Mg4E3tx&=1Gpk)9m ztlzCxbZvz_=cML8GA14wEF*@!7Y<(>O6}5+(>{q+b+fNRMjBz)Mef_#;j5{Kp$=CQ zZ-6>;2^FZr{7KKio`KMhyjV8FT{<<~J{@tQQ-N`sK=Ksf&?fjT|S@tpqp0XQN>d#0%1S6Jh~i^-dAXM#1rHoaRQjb!lM?8P!m#%xZ0U0H7dR4cDK z?>5d1-Jj8Qp-UCT6~p-XnmpD=R}@-cHo<0RTLaXXy^0bM6cT~FxoKai7^9af?;3rj z1f;uI0X`g01m+MqzR{Le59p0;E%50L&hZS}Abn@HB zjOfTtByc_6fvSU!@~|lun0z&yfb@~VDHxV>dslpae>K77k)R%qN)QW&xLdW4_}ms# zVA~reBsvO|3X+EW$nC0X?@f)10=b0n(HwLxU=<4iPS%c0e6SGXI;=B9I=RD43oYl{ z5>DnM{bOx}2PNh;$&;LRqO(`X9l z0V_24mNv)l0>{^mha7p0sUR!O#k5S7cMS;e*k(@Zd zthCA@8zi;_^6L~>?|`tOl1jh>M;aufthg5fH$X;d)W&IcdiP=yh=MLavX>J+JMT_s zA;Oay;<&pk@N;kX)04$w^t-#&W3ifHj)$PGFmb2qp-{D5qyFk}Z?8QNA%vy=CRl5{lSKPDr}TfVy%sa;?gQQx3U^>cJ$GBG$--3 zqQrlb;}OFW_ZrX!K7&=0ElfN5Gf{(Iig-d?%DDFTHK%SM5E7Kx6qrB4+GOo4HtKBs z$VqctUg!7?&d@6;HHwomQ*fs`M!JEf4*rSysZB5sw*=iCT@{%a#8QWMxKimG^7(ZL z(@Kq$RHcA=_bMLiXOrXe{|PSZC69BcIMhjEfv7)>Bu16MO20{|_(t`Og`%&_JfCf@ zTQA9TdujflZQD>TCK!)sV6P}+YfCz6KR`e_26Y)4gJiMd8{EJ+YwN~pw5nuKh_*Fy zGlob!^n+2_&I(Y5B8U=)ToL;80G4XmO*9nAh9z^$fbw=95ZvSWCD(RNTXbtD<4F+VUT>NIfG)79$Aa7q>ZCQKl}Wvpt+G#vE@|X|TIHOl74~I>VI$?qH!$&BaUh z`T6O?5bzd8V-(SKU{EVnN;e!R7Z32-T3o{U=}%e1yNq*w+j`De?}&kH%suZLiCU5? zr>aE6R$0cXB>9U*R(LtW+}V|H2%cWwy?RXC%A=De#$An{5_eqlO5z1fUiCOgO{fPEformP4s6(vYc}*$$~i1p1uMJ-*aBQB zV^h%uwAW`15-g0QI)j&J)=&LUTQmZxQM|=3F0i5^KrSTbqT8y{Ab@B*&Nl#*nN*z< zZ*jz+Lljl~{vD-ntl(Nsc%U~zc-3y?#FE!cJvv{R;o7maoCYTuBjMQbOUoA@ViV*{ zkF|TL7&u~1k?_5|N(Ljq2_iX?@2vRb?WfvPoVB~7 zU;mCbz4Ug>o#Sx12FFba{cu}n2+HVfEv+6KKYvBhiK96B!$V%|%k!f((u?B2c~CI^2Z9xW7r3WhK17`gB$)aQahhA&3BEY|ZCEz_@nz ztFVkJuS+kf0^p;7LMQI{E@d5P zt1)LbItkQuU61yoE#q(>cg1tj=%H_PE&GScuu#a3$!(y2(eldwW^^Vd#F z+4^VxqCsSiFUGLS28#iVl||OdrKu~e!u9GWW9ecwI$X+8xg-aYggi+b5GR$SJYhtR z(NTlUGC>lZEuKJV4{P#haY|Y*1IYo-1~Z-B4eu7TlW09VfEe>yih!aPC}Pcxy94u) z32Y7DO=u$0I>6~8RtmPGe5;H3@rdSya@fw-uy1C^h`b{Y@?=SdFXeW{E->aZ>H`4k zLx+)GPx|)pqG~{ONnS!ie)7QwY&DI~rZ9pS3$T($Pv|O$F-1^=PAmB#njBf{S^VxQ z7)})8%`HBsoZJ-abCBeG=jA||eNNWTr$}2+d%K*ze#5VI6HM4gZZNsr0nupNZr>$v zpL}rP6J0a|NVONS;Q}8->?#`_ktKM@88|-qV7(kq*Q0+sU#$`LhKLs+@CBZlT`lxW z=5-(*nTVI)hUdYa&P-m8jX9Yt={C5@G27ONx}al=yurj(e~1esG^{=<5exZzj5!v6 zwO3+IJZHB@uPC)38AwDYN4y(MIp6619fydlTV@h#Fi8r_7F1fuoUwu!ya(2Gd*9h^& z_9*qG*>lP$wVuq6C&#*DrYGN<70Mv@cF`p)pf&B;^|nf4{w)QwZ_qfV_<(on+-)ZR zKBrA&KCvw0dAeMz7i%gx1cdGesVN@J#!X%tCTn0Y46WOe(y8*gRrUtB5Mo;_-`h8i zVR$@UwZdmBRT9>ZNgLLa#%3EUA6yT*+53&_<+lqB>#lb|Iu6EMqx2sqbKHM-;7{3C zx~~)aHaT6qom9$44+7iphwS9RQa$`` z@?KiZN}TFgvgf>Y6)s1NuXx)uYX--5X&)eeIzMCxvd7=87R&rfmlf^v&(|ke$<-Ry z)aMVwEd*XBvYVv1Vaabgq!Pp1^FceIUr!5a+EmCPo5G-k z^?LC_{D_;mjd~447})}K``oCSm2)N_#-U+Syg}r+q0C@byy0gmLBu==nE2-3V;x1O zDq-m$I_3W~nUVfL#~!J_7a&;i98oSW{BRDW(42z{jbdxSC_7RB51~L_?hKvI$+zmI z%j(HIBNu=~Bbit}7?7Z^L!u_bqEHS&mlab#4I8rRI0U9Fw!^M?Tk-KX3?WBXydTCNB0$S*Wx$PPgS97oyI zAmB(CWbQ)p+Z=67k}QfQE4kjAf1s!l5DFPa?3>~y)bGL0JwEW+TxH?RCJ~7G>d~zm zqfu{@2wZ8!NbD78;MHA40lx_t;P1mnFI9U6ue-YUdXPX{f5i6ZYbm#FWE4>NC@Jo; zikuXvKqem0;mAsx8i+Je&)d==T)6$bXotvmq^+wqU2Q|Bl$5LHKB4BPR1Sk zREzZ+V%tRan{QS%vTVB5G+^y%BSIcv(R7kGz`NssyUflKZ`jBI;WBi)&X)T(n<8v1 z!+N&#Vqw3pmkROR&44(xAg04kjiIABsINMc149L5_iohy!1@CCyoKM}X&<0>?#{-4 zdw&nd!$p>vjz{Y65Y2WvCqowmeG7&RrDIhB&zGKxp;)0fU1wEoIsPMv`!?C=rd>L{ zfQa%Q8!)~5zz%dzHLw9VeSU1qzfC)hiXq=L{h@X5t9Zq#g`?P4furWmWLVhH+!Ct9 z{C+)t_w{sseN)^9KTf{a;@o$q#7|dGuxUB{+vJ#KUh|j@>U4qRDb5<{Rrap31%e^AU)OUtSJT{huUosxXR*plw4y&?;MQg{t zh2nuQ47+kEa=0!)isz>FAg2{B-6P+X`NA^)gEA2=b?5FI%3MR~f}<~p>{8Y;vPLpa z#Lfj6$GNQmgc$8ajVE<4!Fs^jt6>w!=9hk9-Xr~aMZO)rWvEsQ-EKrX=$_&CYWizz zDZr7Ry9J}?c=B{PIhwBMEW!T%j6e$aOHqzsIx!QcC(J+>O@&zq&iB3De)*_$oMuGdp@`MSY-NjqrEoi@C<2RCp?0>lRz(^`Ipq zthcssx)%*?jVNS6A!2nK4OJIevH93tJPGpwdU}c*A_6qE1>HL$MP^4EU!QNA zGwR^e+kb}9+8EGIP8J*W?@0>Av!kI_e-t-Qk@0U4FOTGq^JDU%jdrQx9rFFI--koH z|AYrvn)+b35aIydQ6*N3TNvQrv?Iy70O-hGwE#nVK3FJwyRk*-DduH zi%&Vn@|?B@MNz;w+!$YCfHi%g-dNdu&P||x(9-9}sc1lpDRW_|v@6^z9Kls+@wYzO z6oe`TD`MH+>tCx}Od}U+Q*ik)j^PO2<`7evflw~pW)}w(%`$9$+D1NI%=I@EmXOGQ3cL$dQ{hLpQ49_Hx1zvqRP5P=w8R&Koqpg9Tqs<_Q+e6?9}S0 zni7pxs!gknHsfkM=D%*hw<8;=v+Mz@%_e?s>SgMf7zg+5(MRwHBWPxCmzmdg!-QCUj8_{Mx81GLl3P0T08mNc-QP5^7J!@9xry zOHrD=tB8OqUS<@_SK;YNSvR#2m7juOn~f!2DeY2&ARaa=bvd}1_fizoI&0Awk2%HKBy*RQG(0&PX*;$=8S?j+Y z?QSyNM3`l-bsVO!V9=2%j*z18<@t)1}NI(~olIJRmICwQGPid-yo-LHR`qFy-TNOEu~jp#qYRJW_T_#vCv;i13Ov zRQB8_1mI+llQj~$b?v+OrtS6c^~or1Vo3%&Y{slkzqx~f6DpTuAl9<`|TXK z4Io_lxhcbM4u2T4Zyh7+B#ML&3jj}*3GTUZG}(Osx^rqfJ5g3|SRXcATW=ZIZ8k4m z#PMyF$p<_*lyxN?AH?8uaGUHsLqKERz}m4ghp=|(I_K*-K#uz|&rNG>ouwDeH~D!E z=w-P1*UW_?(HM1QXwLiWToF-8z8?a9Z!9kto5O**0YBGTk)spYa~$^d^YpHs`?z`> zM$E^#DQAx@D6`AK(E>(Y8P|5Et_1~kDxhq=v;L`#TlP(czeE32y$EVygx?HV`25$Pq z)}h{D*pJ6Q!BJO%-eAx=&400rhi>{rS3urizzLcBght(hdxN2STKNf$yaD#mfye7W zh^}v%6D7hnd@!ozvBO=Nl7 z@Cqo04{(FTh1c!U5YUDXlhh&Q|;T>qT~h$6mmb+gLJJvN{L*&vVoA&F8R^ zD3s2fMl4dGYmzbwv*PaB(qm!gbK30ZRfE055M_Ohe$8y|X;b#Cx@YLSgRbsv?WBqd z(h>wUyBfN(I382xrJDH4W}^;$wxpCC0!?Z(#*eU`{JdcdI>>?jhY-YGA$LH4S_0xA`6ZNh;5t0tf*uY@= zKAF)W9vsYKO{&DqO__NI=g>)y+l(~xGQ@ItA-@5?Ua2}&7P}%Wh{!-*ojw3MiJ%;) z=&4#nBo;wM232IkO#ttR8;(VI3I%qJ5{j_~79KwsaTlkW$%<60Vwm^afC*$Tel z9AM=D9X`186UwbF(_Uwzth?G9a*%+hAzQf|<)}umc7Q}@bGn=>r@P^y zPbmQfns|vIbJ~}z-^s9dE5xTa$zVogca!PB;A;^=erAM{PM#uub@_tQ4Ao7@f%yX) zw&Mj3Mwxo0a@}twcS_ZCI4+&lh4ArY`2cyber9OVQC$c-8(eXgd*v=b326{P&&&&G z!zcR1@XOS$dnf|h@S$M0>!u2)0Ne1vY<5H3bx%!%Zuo#UxsL9-hZA5MKA1=36dZo@ z-E|KqLN|Osf8<*)e)94!rYYofxlX2Y%=%!z(sbqUp^_q1<{^}m{E{h`&eXdfSuJRx zMTfQ-c1Q(Qb%~I0!wv5o*r7|p>IEcW!hbSjO<>+&$V&DlD1m?x0GBo|&NdZ{B5uFFnc)`4A)6oxHq<}#I7%BEds zxfLCFGK}G79ZfY*wWAqB0$SZxUN0zsjxKhr;Qcxgj=p*@t#H;69i9W0g)!ua{%o%`(|L3Y$ZtougN!n%R;LITm-0$N~R)a*Pjm93In}T<-oaaAMY!=?I@TM|IzUCw9LOS;J$m;F}# z{AmBhLJDAZD?yLhO7Z<-y@w2On3IjH2i^wByDw2w*Kf;m9)(L8FV7eSIVPRBIqPK4 zlXqvd8%CFb&~3R@%xQr^YhtTN>+ZRZFh&AhgyKiFqrW_TB}no6s&X6f>Ga*?nD(e$ zCNJUQzYez)%dTpEuh`)s#fl!{=|ncGeFK|d5JsKcBN5VIQ9iJjyO`nCuBOqIbx^{t zoNN!YDr9jhb?%LJ$U7t(Iq9hKYa$}q>#mQs?OMRF{LWr|9r+S;rAKj<7Y~hyI0Du) zK?+DVNFFh@fuRo^8j7wQ`wz7T&DIWb@X^IC5Cbf3`5t8q0KYMfb!3W2aBRXR;p@he4QefAIjLFYFrh;?a8*?^3nv8q|_a`5GKs+gVbintn zWOuyFmB62TKm<1Wg6_*65$RJ;tJNr!#t>Npp^yrqkHw4xX}BmnFz0-E1iV!E%zq#Q z6B?K@)rfeSB|kFjfVDGq((4?Q$6|=_@nJ8J{E^Cjhw@d*`)zk$Hg9 z-gDyU`T30Q0s27*4nmYZVUF?2@#0uy2U^;SBw^Mc99BnZ7aY=aFBDG@wO63V5g9|< z?1fTLT?lGI*xQL$@JKla%#Ds1_NR;0ijE7te>6v+&TO)t+^aR?QO$gu+pU%4RzZHE z7bO&6$Tt1RT|Jgc)CbGuB3${H&R%kb^MD~{81X{^F(l1lSZlf^WJXc~gP`Vz4G1mC zpj_=H0itx2$JC7>25(Hk!mpiIl%^6&s~?Bn3BHuI{erx(R0ubNyY3yqp&)b8_^_T&s?Z;(@ z=uH@^`=FmkbXZ!ow5Mza}yVAo(+=vku>KlRKS0J)+jtbO1%I=j-8MN|RHu+YRKXn8P zH>HKuUI@w^OmmBvQ9514<{N(JP%MrhpJRu051e5F z<^T%m$B>UFjy`MS@|CS3VU)psG6zDNNcs43NTJpnIDuagY9(xs!0|U^Jcgbs+woI- z%X0>xjAtZ+pqPA5P90Om%dRy)hVVWjaI=^)ST|1V#oBGw%Z?y3i>&Z(*L;n8SJ5cF zp9OzIZYMf!K;lpmqlRn+>B!QT0FYGKL5fJf1CY_JkhB?a7~V6ueXH#Ebc!3TQacb7 zMAz!RtG-A&W)%fjp361IEtb0@z3||<3ZE*aN@Tn{9z^ynw`F7iNQ@NltJ3}WU2pe1 zmLc7vt-kI*R7I8&2~X#81-*MTepj3*0N{a+QwqtaXMg`>xj4nsB^@f^_DN-u=3Or|&kD1?#eoGxA#iQI(}FB1Yncrk0$v~3%(!>Vt>7JS)& zRaUkV9U$8?qQ07(P3Fgw`4PDkaPJ?f46u&Y<0(0cJ_%l`$K+$gDDTatV{+Jte~OY- zznvaWmLpsUJUJ!D_bLmXX;umLk@vU09WSkRCr~1M)p;D)9+D<2%s_R%rEz#j1<0#+ zeze|;!z1^Q*1E;5{tyLw@HWQx#9geg%&|;Q-cj(&C77ZWUpqyYl*#%JGoFLN{OC(b z0-G+*0@wTdY@LR+xIKdL-sd4EHg9tSx*>&~eKDkXTs=byyVW|RxS2wg(sUEebiF#D zTgu|__)%xk`(axY$mlN}@9);DKnGTt9t~?>^Oz1R{e&+C9auI?Z8V_PzY_~OB4%>z z2%u-Yu?iXaw9zzO$ptB)R_SSXEq8OQz?|UNPnX!gov+rgZ?g#jyFuX!F}PQi$#-un zli}VL$k%rf2X1fy0Y#B2nzR(b?sg)wCg`OkRIzMTZc6hea2I_ALw-U~CFh%-L3?K0 z%E!z zT9pg+W_AB-5%`#@eyuJ9FAdRC?;<64%yH>J^U8~{$i3a&VE3idf;RScKaMvAwt$Ue z+5jP&LhJbd-bWd<{vBD_T>^f+V5xJZh>db>@1x)5pxV2S>0J+~ES)w2)z5E~ZQ^Rw zsrAVE=oVcB{E}%CUp~e^@oM01G;-^MBMemqF7_)je`p;@F{W$pK925)I&Dr@VEK$f zuldv$kS{^{7oVg0h7N6aA!54P;MirYgRjT$U&Tnt)*v=H4|(BEf)u(0vi=LnAG)!n zsTPS-ctD3wNN*q84u4`>cMYX4L``{nS838o@Z7|8q+cl=jy-7G-eVCk32`fQfp6NH zvnBC3m&fX@X>L+!fx2x|pN^DeKPdLi@?9W=e2_~acI7F<8;>_E&?r*yWp+BJ@T;64 z;^g`HtMzhxv{tQ(Jp602*=yEzy73q{GwJ?jZXr`|Ae|*Zq&|s)?wm4$g^TEk#rax+ zlWpjRsHrz3A&*%D6=x#d0UF@9nC6s{Fpzp51Z>s;hFa<5lkILx2W|Sm2LW(w1;w7U zjl{Gr=_7 zJ+Lqk)__v^_H{WjXJ(Zz!?3}af@#$nCW?4gkob`R$pQXhc7&)a6jxU{2gV55T(kwr zCRryvZ_$+Gs)1RxH`1!Nf&jJ}05lwUqt^6SI(9FmCSH5U>Pi7E4T`-AapoL41>sAp zgNdciz#SdQovpMNM{uyvsWcX&_5_+%vB)nmk_x-Ami=l4Og;`I$|TywCHg;P?DuXMqMWkz|UAW)o6URp|?c0#^Qt2*$h zz1?4}UjAzJ?QTT4&|mCoXEu2|nUQ&y0iPG>1biBt+~C5zB-#l6uw1|)@9>fMmRElA z{i2b*m19dGA+~<-wD4%F)fT?K!TIPc<)#JU-wewQKI1HNK(fnzxe!`SWzVq*!ax*R9EB z#S4{P!S#AZA-4U6lrcej(y7g#R}2oA4~yeLW(aR!j{MF^d*{Xj zdV3TXSzI{I+^7-{_&)I7B9`QRK^*DZHZf?q*39VpVKbqnTXf;x_n1$kFJL$EWPVEK zphKW>w7XGY>z+Fcd9b~3n$QcQP3$ny#Ia`T)>zcO3J9ijdHCt+Vy-l@X?=onIzFBr zkwU=tER^->v`)}gMqluFd$F`*XzA2*ynXmNqn@Or3KEX}B^TZ8ny&)k)9dr)92g_W z5y+%>N8|%)7?G|RrCJvpn2r*3rvw-e+UK7q>32i%1SSt5700eZs_EJ>1FxQm(w5IE z)HM%GIB>&ejPEr(mw}Y}krWMkcm1hd&Fbtkj^&gQ$7}00BbJ^8$;+_Z5D*|Af9C#P z*IZz)V54*?HqJ6l;1G>fSwjaIAU$l|pm*pkbk9cf0TL8st`_hOdN z40SyEf#}#A!zbsASbWXbISvTjaZahbbS|}R(3u|1o36^9 zVhc))v~oj#^evx%8&1SyC>)2~I4X+r+Hfp8@NxS`7knnL!*%tggbW^%RS$) zTV80urp&%EMWoF%N#l~~$lW5jbC(W-?`2p?mvQDe!i+2HNatIaT+Dpgvr>7yv2a^B zFr!#W%q;hS6*{0^j9AENR^>))qc{c8%Mg>QO6E`w7@6^{9~66pKTiau#xC$yc_u{l z9UDq?wp1uns3q3{646(i5)tYYN(KBWU-hyv>pYX-iZD@F{QU1EEq4OBegAqFN}?Y+ zMaP9A&BWJz=Pu>Rp(|e~X#x49j?DkdZeJji4*vfjrU;feeFENgk3vLhh*ra^f80(Q zAd`46xYTJXx*CfPdTn&?S1WS){%S?8`e5_#(O3F^&^pIwCB%^ho7ow(-CMBE`#^DH zi{Sifh5uo{fVE~UslNn^hYEhFkR911$l8o7$zE1ZWVO51TMvQMKwGOaP=zBEhRS{+A$W3vQs zj?emfPXx{WD0(qX76(ohT4fcRoRPh#R^Q)7^dCBrEsG(sxqFVw zk7WYtlT&I6loqq_5vW~~Vl%EcB7feFwAUIG7I&~}gi-0cd{mn=wm3VPuwsBFcjz4K zjF+#O7|P+Z$JRho_Ko3s&wS!n*Xax1USl%CC{WjCy{ftLyiZ4;-HkfCu{!RW0R`^? z3G)x`jAgK+N0h}vo07Ym4&`E)FL$QjR*&W4t+uEIn~jR!g!zzx;*u+Q%;(g~1F+6~ zQFS3L^XyKslWcHp|BZD}>Lk?^G62h5H4Nlhs2eyAU*och0M*tOV;Z<5vxkD0C!1%7%t5`dPSaJRm_3 zn&m~+0KKF8A}SDQq>xy$TRog?eNq^(a{v2_;9G;~XULWHp@n(DWQmD~Ha}leL={Y4 zI^phn7_yp~VDhD475TMWZh?2yrzahecyA-l^FEl8r`aLIkrD);#!Bv!@`M znJkc05=oxD}9E&PufAFAxp?|+7z!7(w+HfGM*20xA=4E!@q=B z<}@H~I+|`7E8|8E=c(5}!a%Cb!~8nlG6+k)&g=+Bh=rW~ZF0=ks@PNH(Hk${KVH0^ z9@Wj1ng^%<9NJAk=+-}i%bs%U?;!+JUFkfSBgN0-HfP#U>Kxz`isareN-BP)LJrW#2llh*EN-^HeHKSPit=Vqpv9QY#Vf2@3$}FuSBA?9!QlqXQ zCg1br^t9nLo^(yZtu{X8>i2(BcOv+V+nUe!|Am^beDk{1jow|j@qOb18Vr{NR!@(` zXn+zQ7e0ugk^gySe5bNj4gtjNl*&6uiX#cL!ZcP&$YWagF}J=yzpAEp)=oS`oj-3L zZ>=5a4N>LXH=@V2Gl0b5@}FkS#~^ByPKmVEeh9gTxs{Wr4yQe*db!Q^0T?M zjtOi!i~RaMxsaUOQlAcKA$l&77WApzJAj)NZjUlFg)Hig=;aWd7KS6M04NGu94mz# z4zLRJMFr-1InX90{78L+93gd6_Qc||lTbC5QC5v5v8Lxr8xDv#7m#@sa5fH}h zBHlP&jcBmPxD=N!2c`;(9CM`V^~K|CozKviV{-TS1;iyGMm6pssoaL0xaeatX~Z+* zRK-~3)s|UJ*~7)T4cOB#l>Gd8Q;F9Gdm6Nvil68w%g@R) z$16UO7*88b9$|ZR>5_xAO$~p^+a=OfwlolMhU;Sl)>EQr2p4LfVylVbVLFDi{L6x` zpFLGco+mjv;{>!qiD<@aHth)^hZ&21`KQRTiML!t*I_mDDH9bYB zt0=&$^C@Ru!sfT`d2k8Qm2g?p=!jB1kepvpGkUR?w*>AjU(=PioT^gV+(_^fE8$v! z59D@$fRUezsxcDeuRNi%oucY3r?2185AfskI8wI{mG`^2u8-dFc+Pk7LMXO`t)Npx z%s9<6K-D@DRXgh7o5Yw{yz(YBhq{N8Vmo1oNy`!m@0}6451R(GL#+|59pA!^kM=7% ze@m&?>F#l@xdW%t()GEnuxnLct?;w)o>sIRwxy!Sz?ztGN{)B?g~C><$vXy-Rwf@# zrUgk#{NLdl3(vD`PTU+e8D(}nHp##XvFjc66+mkuEVX?9Rq{F_|JlRyIcH4g`vP&j zo^J!T+W7z+@a5^M%<%*BHjjX=XuQ$CSa}!Y3oGw5 ziKb?rsT6@)*?3IqVYsZkQGipXRo=xo@XEXN$ea|=*&0P9gVg|1A=D8(dck@ku0;dD ztg(}VJzYorACF()Nv9$b2szV1=1uiupo_lVEIWvViREg|fOge>fIKKNsE|-(>*AuV zs|{TToD?q#J4DJ;^vz-rx>%S4J&~dLWSql1w{mC$JjyGPI{<~)HtFop%~0fZqb~wb*>FqYA50fmUQClTp4P}5j_N~;@+(~*eU}&D_N3|2 zSCiGza>~aVNuP*0cS;oWh zmSkj5PR4T~w(*n=MTeq_U6iKe9DJU#XtR5QV~@Gv3Q)!WlcHtU9hXI!W;AyNAq6g4 zokWEJoJ!8Gy3utW2W6NNgy+IsPsB=#SS%#G8EtN)UM-OIi-vWbahlC|^thlNw3iW7 z;2h|aA;AyCJ(u4)>XU$a!~K-|{m zr=F}IJ(KsiNYDSvWUY8+L}#T*2$NOCVvfJ9%^6l-GBqqVKEJV(10P? zhiRmfNhbRyGN4OF?3hW0Q3pO5>@x7M@MHjsO#t!u3r$1?J$aYb;xg$YHxd1e6d0yc zj6R6T_ZGbge5$-zEO(<6=T4RJCoRy%lI}ZU%4re9PSs3=HL@1blr-X@?H_I~w1&Xt zx5@^>Xwo%k1$JRT0=!sgP$o%TbHq;TRrsJRh_a5n9XJ{j@)^cA99aWd7ioUzo?@Lp zDcKl<+I&}52P4eJEDLR$rx0?5R(W;S>!76(g$7`cIxY4+7|Ld=mopq@)r!Sfw+wk? zP}oV}0ZvWW7uYFSnJH#f_@ei-L5JRaP=(oLMM`@}=fl%fic$tUWM`{&knTyhCrQUV zc#5{i_d!yAo;%q+7Zyp7RqN+=!rb%jQl6f_EvTn4xsH73XvT{n1XQMi?H|I%y?dV4 zLCUOy5S11D8Tc5;mSfRwZXAoTxypz6Ezzc~x?Zs3`cU`=w{|&Ro8@D|L}xZ-ge)3$ zja66VjR{T%pI!!hvY#p_6G;XHGbrDXUts+Wrn0w%THk&$Vcj`whPjE5c}fznQTAHa zg()eB@A2CzIq#f~&uaEOarP45Nqeq2dd@f0Cmxk>DNlG+-Z(ZSfJ*&Tn&-nE6`-87 zB72S3lbof|_=F2#S{-mAu^h|sC?dJ=o-=M_B2UDZ*d3kWwmG|jjM{lUnd7V{j+BG^ zfoc9 zzPB}MCh$Y*B22mgW8Ereq4!fMxXT{zO2PNyH;I08TEGK;*sAyX+GOP zq){PB#AHu1uOiU}tLUY8GkYHSHgcBb=+-eAV`*Z*iJu~4N`68F*mTi__x-}_Vm@hx z2?ma;LP|Goe$NEQTdS7 z$PpXSBK-u7!d--5?DQ*z-9^Cpvjx~wG!1f_(rU?MUDr7c}rN>`P zGU@A}cJV5%478~5HmGxX1szvWK`hLT&SPK6y3muN@#HZl?E>B^@ry66;^1-YFfKQR z$=+;v*%cjJeEI!y>KKPeWU&@#z1X7t^MtR+q;*T$F{?zpmia7lSkTFfZzy8#-uZg* zXns6-hvlBU)r@`AYVvBjdOTfGc1hJ}ixv7)WD(FaNL$UXRld1LoV#Pl{TaO)J7O-y z%I2`MkTFC~4ou2c(~#qkPc?m|O1jO?Lu;*|5ac3Tx4imQ(I4qNq^ga4IuQoqJ>EB# z>*3^tX7ARqwz1*iM_HD2{d92nVtSw#i^N+fS8HGnIM)#k`zw*~*ifQ7HLgRXyRM=z z_s_O0#$D6D2=HxW5pW3IKy*77oT|@=sQ8I#*FQPYNy6_SW)y5nN9d=CAq+l1dOW*d z>2CJYJtSL3X1fNL%;?$VY&JfkD`VC2V8LVY=rx_oqfjFpG!oZuei*pA zAqCim`(?hSjW-fI+%W|&Nm_vKCX=&>6&&Cf-rw*o2ceYUWPhKwJIK*Yu)rG4E-3RL zn)6!y+2PQM0kxCDqhMs7XmP}1@S8=S#IOXG$uZErx`{^aOokmcZ@^hJk!7^}^BXd| z+uLKYk;c(cEFyeV*ehP71IH+&SiZ%Dr;H2j$Dt!mDz=J0Eb#h+5S_Lg{?_5(fqof+ z^iA*Ax}t38FZ|VJ0$6F4w73>+j=XyFSx#oUIu;BiT@w%&hEh=7vxahUabJ#*W zv88qDqb@}>Nxo7(bIOr^6O!t-Gl~R0v_me>^?PA+e&vvtbHH9sXAd#bX5rj`vIuOo5S(WgK z45eBy>opx-wqNeIwz#p-Pq>+s+ya#$J+twy1C4OUJ-6*%Id!4ijBLPrpWXh zZcHZNUQo-n?DzNMYr5w(or2IRHuwQesxx3jtmwr0w9Vm_zsQmDVW1{Hgy{8ju2B~9 zO#V$-E1oq#1Fn7lDTvJ@!X2$)q**IM)&zus6(m0?Q?kGQlCp#6jYgLU;15KWD@l^n z=z(1J*dQ-vWHeBa-u}MlYiO9KK#J&{D>=SZO>rC%HElG~CUudF=cNx8^qm9gSzDDZ z>Wgc-dJqTObsC7*4+|37uElZlkGhvENgUqSC1T*|`XNqQ08QFT_{VP={34k+R&YWa zH6Ezh6f$lXwz$b%--rO?CFQQX0^Pauj9cLq46l>ZdtsA9`YsOGfGFx~(ntkmq4AwaaoCp)N~IR#@mTj>F@uiBO=y--Jaa9MvE;Yy@mYRwvjQ#=fJ9 zd(QV|qDPlst1^jD73q#IL#bN|SW33c`C5QGclkZv=r~jpkRBAfIc|8pCPfGqkf7H9 zWHbTR&{AFKw_u)>qrK!u2Hk<0uU1s$HM8a0GxjMsG&Y+o?N0pn@hB3Bw^o*r7EBj)~YafviesP zU;lP7qkOO&kF)nvUc2E`#d`5&HmFS&cEHxqxeTje_~g~+i0gL?mtR&kEsh!=$5hqz zGrX~7gJ1a6XTVM5&tqlBQT(LWw3o*=qA-QO$mBVnR*K4IZF%&Odna?Oi>kVOzR6;b z%~f&j>DFGbs%~TaxAyTbPO7N8J~xT5ai}%*L`zMvT~j+SU)9YBhGU#N9tc5qFoJu1 zTcUdC9WP9)z`Z3lasr#-Bv$OGJ?i!A-kPF}EXhbsOgB!$XM z*Pj|37v~Q-hxZ${{aV9wj+eZ-S6v#0F1FC`>n#XBm&LwyS>3JRkbQfGa5YhMsv(_e z$VgomiYw2z*Eo|vyF1@-C?HgP4#TLcGE|PKm-p%hQhKwc5R(^l@Om*HR73^)yR0`; zRly*F@|Bz?)Me|SBTsL=J3^Bl1ssSeE#7QTHQRyhY4IyiG<%2_i=TRL-)HK{u_A|5 z--tSFXJgPdHDIH$USj(6N@p?fqVmqzVDn{22Fwhv(fe}_DQ>>(z*D0R9-9ZO0vZYc zu*ilhW#U2G%DXfzzZ8hOdH&jpc#n^StZ^=$=@EBpb7ov9C5%B4Z5T=#DdhvfWUa8M zr)aH~m&VIxv?qJ;9nn&y-=2*0;@Z?`{noe$t^b&I;g}J^o}JDFH!j|S!(uB9$biKs zk~1#qGE4vl$y_30?}t3X!}ZnG<^^wR2<{V?3;)w!t?trQLW;-OF5Rs6b~3YU+-m~e zrNR%dJ5jBt>1=BCY`}_`kY+c9jB$J`i+d3d7HGpopnEoz`%uFO+0Bz5kb_M_jyT`D z;24Br{;WoyVnf^V$$LgMN$iJyv$bZ&TQi3ix(+aVG-#H{Zx(ybS(UV)%DfYRn^sT61fi7sA#}nCs6~@u3Bb3os3$I4pK@*ZVC*^K2Q-O zFBuA}CSTh6BrO9PrHfsrI~1jj%cFX`p-vbn$Tl7GWP-yuT1V>PuhyW^hOkD>r==k0g+#tq65Et@x>w*oCRB)RGN3apvn9nT&dHQR zFqOS~gE5xz186sTx|%CZ@Y&$Y%hlkg2`Pxl30|E}&&W6%%r7O+5VOP&jWC)G=#Ib1 zVl|?z%hg~`Cyl2wI(kK2(y2146tkQjpG{QX`%4*kfMQdm5SE{XB@JCF7GF<6Ie7j$ zAI#<}Tp^S=3~1Cu3IrCF_c$y!02Kz2`=B**Vu+zE*|lQ;`4|3Y1h(PjJMFy9pY zWKXZd3cD$LyGN(*_-0Bd#JqMM-82jzF;!IU#+LUidX(LtOV4x&L{Y@TR%6Bix+co{ zUTgyiD67?5BJ6qObab}VyTU{_ed_%T`u3XIQ2<>m2C@?w$U&ucRJuQ5sr7sHGstV^ zzP+Rn$a1#wIH2NMsB54?z*Ut}ASrh~ZC;L+HPiQeznoUzU0t#~a=-+Sy#B_Y5&9KeNvdifhB+l|WPat@E zsb5|852*U$cP}sgIwzcsUPQc&UKo1p-eNK0nw-YF>=;c&kA69)<3l5^{VRPOU zvIQT5^cRA@Bo)uu;P~Sw){2JSob;vXCFC()O~zmczk?*HuP-N_7Wgadsi@pqhqCZnnwnD6p}q}u#q zWAPXXLwx#QV0;sHL|B)Vecv7|@a52_rv+$9M@9rXS^)a^$r1K6dQ%w&5c*-Rn0UmM zjRG5Zw-CnBP5kuy_MIWGn8l88C}_%+r-?GV={v)a4bG0x6qaKXGvVz!Lq>pLNAveK zL>R}!L(%G;;iG_LM|g=Qg^7^(`ki4Sg0LeLcvQ!MOjMN3-Wf_tPis*zfr4R2SO_}? z69?h#JHtSLU`O*0+w44g5H0_>w+W4}fsW8eKHyq=!_doyXu)7{mxI6Je0A){a4}sA zZlk}g%plIio(GlyeKaATMDI;`-qD88cflL{Ri;>mx7Xmq>us?E1lOK_Z_KZ$2^#JY zLB5NREF)fv8iC6iOHo?sE6Q zIq%hz=s(|W9Pe$!>I%n1h}rdYsjPQ#kn^6d7jtXG{|fLoj{|<(k-fgubY8p6x$DE( zI@&2MW4u2I4tpi}IkaJ{x{3Ah;|mBT zGARqz&S;`kykvJue2-(TA=*bku~R-gP!4WsKXX-ed~ndIyWMKG;CC{@I%{dYu2h6D zP*7{}$(B5a!~=mSsBce{<3PxP>*x(`GUY$^2-{g`H&f85@0T1tmOo3zgAVkSpum zmPN}L;zqh8A3nb`+(6ZhfUz~q<{xcNM(14Q@aZ$!U_gn~Dkc0xMI%JZjF185TEm$D z6MB~hHXJ7g9bMUcpHi~@s#q}#`-nZR-%ietCktG6yIkIzEq|IUCUj{c3{Rhan12!f zuD1K?^=d*1#V6lRRxjr#JwEtuLHB7cR#!cm#wPU9D@s{j$Z21h!n_VV=uCOezK*8A zMt!X2V3F8ubyisi9_G$29>1Jlo}E0Lul_c=xR}hodOe<8AWJ?SNLMMy-T-i&jcvRR zmj@c}^2OL_60>QHmza0uadI-iXcHXh#=B0EBIX^!-*iqzw5V`i7z3xl$>EwdaS8%9arrRuL!Zz zaqf%c3e$i)?bh*bjB`4;4o>Lh#h{EgB;}EhgOyB#m`=JPTTMN1DTbM@b$c*Krd)%A zUt)^1dtLUGcOO47T~={YnHz@uBU$Ic0Rp#GZoP-{E-6#vHgi;a!Fs~pplp`j0ewNG z1y-lS{a-IT%f>inA5v`@`d<)}vH&n>CA4;Twq~GYCtn;Wyj+&`Xd)Va37#XS&8@gn zS$O&IkHh&ZXu_E|x`+nHlKgYRvb&e1mPuJZZkJcY7H&r|?CIdobj#Zd$@vE*^GMnr z-w5Mef=p_6%E5^N7UH0MiK%_gR~fT2*Ay>Im{rbv_#M|4T4$ns3OQX0U46P>JS0;Mm@297 z_<~ZgR+HB&Fq<}kvz3yv?|+<}sA4T7DPFXb0fi*Wo6DIB`PT<`XH)Ut*70>le@^N*qUxd0+)p>^(J-PPf7QNOr`ApE5rFzdy|UQ*Id?4hnvH#4 zL982-&Lg)nnc@jWqp4h+fXOV>uCp+`sLTBJ4c*%eNU{NB-c*a?$s8?)<$J6hbou8Q z#TX&*)HFT*DQ6EGH-peeJa{yMC_)qZ%Y}-C(A{~P5eEiPA>hFM*t}OZ@&VfDenq|@ z=ybo#HT&GtlhJx3Y~S-4t_5+m`>^Q*QI4F|7>`8KLu=gC%fOZ( z?3e|{==0z%T~5j=4z{OG^*-_pP0!5sQ~ZLS0WH;g3S_`-&h z6aSqjpCC84S38FCPN9pnr`(u86$_Y{%#nE1TYVi6+Q^7J6fH?e9m$yiaLGh&2K=ps+)d zeN1H?=!GF~V>c?J1!DqMtpFG(yO(^=IR9-I`r|>ohaTM+mXx5RV_73c zbFNp7-yM|!92XIy%*heiUZaWGI{(&J5X1z7Zm`dZ9L64=jz<;Dg% zx+c0<&1d$4+v?R6-R>EZ0d(*d7pGwYxXhl)$8V_g}$rpd~wq+Qg=^v+z>{mE7Ra~qJ zm6EOgS(Fl_4gNnWBTrq8SCU6gs>t&`=n?A+lcvmDf+XpVi>bf7PsP7qP+@aYms#~m zc~37iCo4*1Tng^Wk?e~PV-5@*+N8LZQ3U;@9f6Ou0gJqQ!z&kmk&gs2_3`=?la8^g zl+rwGnzql#ZqVZApG77-PIDMN%Lp~eLUE^&0(E(v7Vj=1u!IV}awDO+LSM;@=t*mN zoi#vvsyt(g883v0%9>vRL~r}E=9QfeN16hV)ng8QQmj<3?Mcgo^KI;yIXL6@DnN$7 zIl5qN)`u#*ffWf7IiARq@13HAUz|$$3A*RcmsFz)PbWi% zaJL($4j|EeW)r`7x*t$o+=k2CRy<87DOcojY{7Hc)-zsJoXp543MUthcaJH=JYKb0 z09)NTvZ05NF%+L{IUhE3e3J!hXTb&pt&#hx1GUiUPGhq}4hs?g64x02+8vrg3+=`x zuHwT~#RuB-(jR!Mrubk+hpx~&{w-ee`8mAhU*xr|?vh9-<7cR_1TkjCpyVjCFVbZw z=`IPZ)`mwC<^@?GUtT$vheZD9{t(F5`f-1Kg#}}u)ocb=GKN|Md6`yi+d*H|FjAmc zMy=SMy6DEn%W9tKA5N`k8`9YqHl466t<{Zpfp2yw5W{6~h5hyRGnK(HM-otntBCH@ zVH-#kwN6mxhEF!V%a@nEf#25J;{|PBdA*71U+-)mC-UGE4=5(hb9T4;<|w*ZHSATR zLc#vWoRxy{%L89-{9&yg+qTVW5#r1iQ!7vQ2EuNfhcH@&70q}TinSZ>L~*bnxw|t{ z(Z_qgK>MPuF1LwxkCYJc;NcJVzJGA<;S*YkK9@Cu5_eyb2_Scc4emdR4gO#^c=+V| zd$G~KSdAV(x%cG3eH!Dx%Ugz+EDGL$&_3a}E@#^f?e+!auXsWJo5fZ5$ZaA9f5ErM zRGv89Rb-z}or7hJOHaJJ=&RX?E+xwy0D239zA1Ov?3&yybd60q#gHYYQ_QIYR9dCR zl{-rL9oB!;?sBnIh~-XFpZG zm3E1ZknidQZsqN=!A{2U^#*tSM0U%y!pW!-+6j;{;aok|UD|g7!vaA~J&~ZzSr{E@{X466u2m>oI6X4MfKXH?RztVw%oaFGJsi6h#r=Yb4GQL)NCw>{h zOR!aiES6IR)q;ojrsN@iScC*Oo@2!dG%l}tQ=^OJ*^6GWRauw zhj(8{kWtW=tU5uj>umEelWmtesv&q?4LoWNMP=Mq`MEc zA3{{0?j`Tq8)3|BH!vAiYd#PrLeL`ZQKhg`QTJQ6PeQS44}_&i%g~olr#Gm_1*oI9 z3~EN{WEyXg(y}&q8AkNc7EX&yUsH{{FXdX0A&BpfTOHdGdFFP%7F9Kw7j27~qN2>0 z!1tP{)yhovEZSQ=_fHSDb&o?wwn#V30k`@_14>&|EiFf1Oi#X>FQ+(lJ>1fOoMPob zQvAV>1>fGtX@M3Fjm_Nd}8> zSKFGQ4Z7>Zv;4N*OjyN_Ldj~&$+M{&*eWv>1`7V)_+%58FMD!qCvNC?bHD9+4&^*j zuKh9H>+557c}lpf&y7SBHQ-2@9Y5>S!w>#$*dzkypXL>E0y@`-4Z2M}G~oyA*ai5= zX{U=g$#EA9{r9^9oU@W3-Mf})HB^vl{cOu}t-8LEZ2Rb$m*G@5_@}vKD}>(2wp_OR z?q&OrpM1h=n~STEeKc8|j>eP0H>CCDL=6H7kZ&JZ$xh1A$-Vj6D>_p~)Q`Awn3MK zCp6LPLgFiMVc;XARxFqE#Z~<69%_~$Ygcdt;JZF~IG^z`354+_DZ@~>#!#Ij{B5*+ zbb3mbX8)EyAmY>6+(XQh?QH!BskGDonw+$nlarK8iOg~$qpsOLU4@Nr_;r9WxhQx>XJ#P=aa`5q-%i)xrek;{)Vbo6e&;WA1{luApWbum&pU$o>#Z!mffy8 zUqeZ~zB{!~h#m&-mP6Nm^Q+dZ94(8<`J7g}a-|#W@y!_2OTH=M`7_R*%;h5cUbqvl zBK7CL((d$h{2(y7XHX^ftB&MgF+D(~ARK#QbOB61RNfB|66O~|><$;<1);j^DfLuE zyrWBxdyl!;HnuAg2^E+HfB23Rr5TONdw+2Eic1q`jyUD9NpTzEBAQDhcxCsk`ZOLs zYocq=JGj_$Iwf3|CeI@Y13d0Y%uJ9r(K7^j3W(C?;h0Jeg(9tpBb${=+Sm>?uV`q} zo)!7fSHyPwEoU7%aJZl%q%54tJa6HIUKqBwghMx(QVytl%dboyQD>^bxa2+=xLPnm z+IzXeP`8_UQz5EE4LVE!iKxWT_Sb9 zMSXB!9Fws6P+ZE%Jt>=H4+?M|?Fuo6MwK9f6?_qp8=tu1Ve} zHNr9;LHzyi2jrTZEoq56AKV-KJQ#jS|G9r_u$uFq{8wO9YDIw$R+#?qg!~b0{Oe&m4jK0pIRfSLaM1m zrDb9d582YE;4&A0G(aw4h$_M(PPQOR-cHD24V)01-X45T|FF0+29&b*U&>pN(ccly zBLIq62R`T3e}#Xc^`|qRD3Vb_ z>sBG)AR$FWcGL|~-F}`kyIxS1Pwyz{jUDYV;7og(X`)q^bu@O;!bHVRtdB=-}%;smw9B0iEKY>rP2w9Xt1XaOVvv zJI&mXgYEjrjZ%41Zvaxt1s_vUZHQ^)^=OPJO~Nh`mKAUT*Y}QZaSs_8-ft3XDA7Yw zYZISB)MRB5{~+#$_4-Qsi6BRqWL3#Om44W58B7M*JyHyruLJ>hG3t_1*uw9j>O0V@ z*Q@GQU`r^025}WjYz?K*RP2rctfODV7|}QoY5TV=GOEGg`@wU$r}Gd z&IS?3%$cPFRB7Yf_Y%KllfW`&cY=|eC7nT1n|Nec0K9>b5I_3|u{bto|G?%fLoh>u zcjYz>9pGmVX9q?L1T8Pmu(kER7kebzRpH^y7v!@nJ@w`g4rk?n=pK4 zD>1ymPn2`{TmJhLncREFys1b=O!4hMVaP^Jf1GbBGS90x?H5LNe`qWU#&1e8ED>=3 zI5?mUiec=8k+N@?h6e}r5j~=;?Fu@zQN?pV?l<=gBG8%`W$(BSQ;LNZ)G5t<+BtV_ z*?-3F%%Mk}|F@iR`Xv2Jv2vmtF~w}=al)|+AaV@1kdu#FgS&&z|7Wh#eDR-r69JIp zQo+;bbrZkkeV}dV=P7gK+7>wz4xPuTpxZbd9z@{CS6x!XPe93xd3!B~ae%@Bb&p+7 z!4N3klhcblBXCcJHXA5R`2@<6+*rROS#cVZr`n+>H`S5ccSSR9pcTEKr=%;%hbL=j z!k${Nmj<-uzNzyR`_#0YpSY#rB4c6N`01(H{Ct|a%$`qEkF7HwLw}|7iGRi4qPmFM zX~{|>{%xAq)`#3M``FYw!pp2a;xHvAs@dnZSDZoojcFA{kS)orIn1rjH*yaNM`hl3 z6q|ecEXNfm>pp>&gr?z{rAUfIpdHYKv}~8q^gR8k+XrOM$~6~);CMB63mEH|DzW{T z0*%L!X!r|1erxFGVR&)UkAxt;ITO3YAbQRauHzZ1Fr)WzeiIeHz=85-x8er09)(#^0(@qAf7Lafqyv4N!*#@(><##hLZcKB`sHVN zg5Txz<1h7V`0{KHXInG(`rSe5Zo?}+S7|-wQ9d}Pn7=t!b>Fnc#;&1CxO~P}Vqr%HZ64-2k6LK|w@EMpT2xXg`DP)=)mW!F6 zaKwdkj>S7u$vW_#LSvMp^2teZ!s{U@C!A|tTuS|8Vs2^><}$p6O>h3}7Cl{uH4~}3 z?_vx0ya%krSJ5O#R|l2I&R^o}!SwXX-4#jRo}Y;+R`f4f`|e7CpXtFZe^nldRwu7f zCbmz#E`d(95g9+BZ3TKJQvEAFTX}ex(8c%q?-TYTD(Vz(h(rcqeKU)|#yf-1Em=q> z;}eKH%5pTYLUpCKd|Rovd(Wv^;zTHWvrX=uW8$r9t?$(}Lde|eB57!tPXub&%84`K zzL#alaj)e%VwSzW)VQoamjKJ=!Jca?wmv9$}5b7~(J7`>35*f^BPLm}EMdr)O$$uN}r+`KWoVcGN`%a3rg`EU|GW($Q zGyO7K!Fd5oThu2P&S>O_!;+khL+g8F4!p-tL?!;x=%$)+)=dOirwaJkl`(~4K?Z(0 z*5q>W3Decvk~ppdU#yt)EP)NSd|DHcmeJkjv9{kV{T3o-Nru17+x_hzsI2Umm_KJV^(Pkcp22m1?o%q$;*LGkx!ohfLt%A>4##GS zFWy9y;4l1?Q08UgpXr6We$X(>vORR^DQlp?OicknT3AADb0X&&|Sk2_+*a2`+ zPHl=5&`H3^DQ^$6h0jEmeM3{RRh2kk$InJ&akCSmUlhW5_ZgZQQ0srJ2H{xa6RquCg2oyH2 zCex^O46G`+E*7nnLpePQfWjK90rD|nOh2CnzVttpAU9q|X7P>jFNUm`840oAuc@?4nfdA&tYnw!6ys0&I#!gRN-Gt%(OJDqiV-&+*FK_LWln071MRfqHw@W6T z9Pzo9q0_jcVdDB{6BOlB)4=z1A9+}x^#C=cQ~H;%R*)~O8~1hm?fSX?gdp0%&sO&! z;hdSGMk6;`GF-Ux+oL#&Y}OC*R+2{+FR`p9tuR3p@d@*S%mg7~7=4YO!$WBbadvkz zloe?`oO@@~saxah?sDrSe3`1vr`*%pJRA4`aFpDd5*4mVY3uVE=@L0%|9aC+f60S%qbcr9EBhz-qZ0;np z=(k*%?7=e-3pMVNk_ly2dtadIqovfVoHg|psD*XGtKjG@TAM6R{f$hanl~0{IWaRK z-8{AZ8Ht}_3M-OOs$m01$aBP=S>5W4cEh*B0r4 zxscT>xv%Kw)3f=AE*+XpUWe7*eg0r}GI{MUS>pbyjlwlhXr@$Xz`UqW|7Wgom~qTW z(rv+XU4Z{?JqyTygY8eIh2K)F8vB779YqJ?OYYC1%UT>6YaDsC$ei^<%lkQ+RXZ{< zWS%z0xKXI^7k>I^-oQhGCE^^7{vDfykz$$cL*sg$b|toCXZoWETFy^0T@ncQewhiP zAl|(!*DQQq7f$)O1TbV}5o^Kluk`Ci<<`Ki`l3bO+eyv0X4Nz!BDOF;J0)p)cyvzp)`2Z_#0ML zSrZ3)>j{@fjz?V$uo8LcllWKst*Q-kHuo!OzHXJiJQilwExF<2*e{omECG>LKKXEd zv6`M!Rnhy&#&KAe7CIok#==Q!)#X@~ER6<$ym6{KswBPSJ9LPQP+>|+6dkRm<5)xQiMP1#@~vj;IB*H#LHL# zh|%K?tW=$gUh6PR{@kQJ5%fx_F1~MxrKi8&1;%?AKe!gHQ`!+Q7`PLfyD0$pGecn zPW$GqRfJGOu5A@QDZ@){Kvmbo)`x??$jOnQCIJbjc&nsBUuG;2FY=#sV)?rlSl;PTn{2WAH`xNxi|-bb@pMV)aim=4i^<~)`tx);CiiE1(%vqk zv+T~+QIPa@)?M)EsNuw>UD;Cy5Io(W{7D2^HAM13eKrkfk90i=-CwshPC?jEFLNhe z&pXp$BVFz1gMUrEolc0CSRkp7l%Y?jfzw{l!TnIUnw;rA>(Z}PFd<7%VJDAaz_t`9 zkiyy~gLbg*FCFjI0+29x;EgS?c<8InRFKH?H8P>d zw)c*t1_*Tmt}97lG)k`}aWbMQ@?s4+vw;gnma`SB@|4R^+MVylnaGjHV>91m1uZQN zC#Nv*&NX?I z^R{d)k|yi9*2yk*(=oiEQE>oD{Ln~75IT|>ZJ2`#kk;IKrszu9dNZ&L`Y_?2yHbJt zMxI zKWpYxngUi3SM;RB6#vIRp7DNe%`fOG2(`3=0{+LudK_;0EFIh0T1OJ1)A(2XEt1WG zTX8SnPMnjDwII(wiKt8i9RnMik%K-;Edt08FhoR9%BiGFZx&~xiwnAYjO0TMl^j4! zy8`4tdIE_qY(ViQViJGhhqaIe8wc~9DIh!(u!CS%Cg``2x#f6EwfhIPn=Ub5zWkl) zJoCw1=10|xYCc=20DM-Tq|L0y2X|RTE6YEMH9$6O7mVPF7a4P`eBjY*g@Cq&U?47u zfmRRDRS->?O?qaQX~tC zeDAIX&K>vBTT*TkI7x)JN4D*rZ(6u1aj?MW_xjR7T-zi>lC3LwBbHr$=o(rFg&aDt zAx(h~IrKXHAfnOgyp~8K&{oo%_Hdcn6YL*p);VS~rze_`Y}*%raj_^OMHT~Lg-Iov zs)q&sj#@d~Gbfic&aZ`*masTPX3Jkh7<36EEdiw~4c+y6kg>YaZ31`CZo7L;fK3^s zXEn7AXKVJI8M8H=#eoduhA=*h8Si)- z{qx*jYX>xT7!-FnI;^0PJLbC|KM&fD{|wl_Ltjo6;^P;8sC*#>TeD9h<|9mkew+l= zbGHy_BZ>DKMa-Z3*BwgiUnZ%3|3e00MwUzHBj`d^$qSi=Cb_b%SiwjKRecu}yER`Y z9dgfLi+gyaHi!095Hc1`I2Czt*WXvuv*qF8YMym9ly9=hr+730^m>u0gb}#RNj?qV zDjOB;Eu4i3`0vor-Ns5+I8c?$73Gm&5H{K#kLSqgBkm559*)lC36oC0@t1w4?Wvjt z_4$G>cW9!ZLd=LKS(rP_2utBXx5-6dr0<~Vw4(F-U%$b{G-X3$?`;_hqQ5{>rpoov zh7Y`B->u~qo%$$6F}r+Kc7_~ki0hGSx;(+03iS8Fr$T>vItqPyS|~FD4jvwkP^4Xf zQL!ktQAB_K^I~XQd3jg&p4B;HA$Nq5<4(!Nh)y{=fIy8#tFgY;3o=eg-6T5 z@dQjVSiPLnJO8w~NK+Z2n?84k8U2GesK4 zpg+p%4=T!jU-Vs4yM@wqYo1JuvlVO61V*Yw_*ecAdLLk#=46SO``Wt;Mh7lF-AnBA zqD?Ne*T6;5w~U_2o)4emiQU*;arv9U|KX}S)L5R_tzo*i?i!#yCaIaE+Jr2aDgp^Q>m! zq9aY^zY$sGGNNH5)+`V%vu(a9LC^RJ(3)S}t8cbK?E}_p4hnLFRp%Q%s7(~$=rW^z zvOrLnstqPwdh9R7{2!h2P;S@M@MCu7xNQfT9)JWv0S^2RlSa)e!AGU2qW>2E%KD7? z(~7RPPC%jW%PIZX)LC>C`*04`tYvOq>j7;`v3Y|02MqX0NKKBz6sU9q zCSS;ZKP-y1w2RMB!Qxz7{Pj{B7JIh}sWq_I+TPS1y$1?BVa7o#{Hs8{*P#Y%`Zia~ z9@6Mn$&#-s5QjCYzB;T+zo3G7m0e%|_oiQSpg=!UwO6pA=tpY&d~|h;JpL?x=B2c* zvHYIxp3kPOFT}y?)RGR2==F#Mn*-SZ<&R|Zo>Hp7_jH@alrr$t)YU?j^4K*rq+A(k1iR=#0jp!<3vr`>Ah%ZeA7<>u}~W z)MKtAxUcmQaYnRb?6t^di`2F^Emr0-2yD-3E8CX$Q=}X>1uj}oq}{&MW$#LM-M#)gO` zZyTJU<|;gAgFV!+HM+A&x@~jE)*9W$PD;>JPy>5|qNJmqk3s05Y$?jZ2k0svQPwb; z*SW#2Z-MrS2}=WeF%Q;s7NJle@dlu1A8g%9T!3Z0w-ztDw{$GuwHyF$@CU0}Klb+g zi>^nTFEC%5Hy9H^s`_ia@QEit_Zl-c56}Yu{Mg{tzbV@@V$<+YGs?8U|bcz5Xg6dc_+e7P6U$5 zNkzG>?rT(fyE4z#ffsunRCLhEs*+xUmnyZ#T;&k!N;ne1mFD8%gw%hlp?yfPK5 zvnlMO%YG<1FDfL*AbYEq)8)ZkZ{g4pslqgIO?(ezb%Y(90G_M|0bIRp?sJ>254|P; zbqqkA6daMe7ggla}a*GQwUX2?fUe30&CTHXG; zl<4Q(x9+q(EYay$>vA3v7mY{rBWB) zQC}9^4hAT@80!h@&j0}?(gWi-ta+{mr`d#8tO7KvQyVl4_hPf(t!j^fOS=0DO}%5Z z2Q}m{$%Z89iJ$56;bck727IR&$>m0&59+l)!uk&pkYo)IUS=3vOkdIY>v)ksZ8!^$ zt?DIO=@}ZAZoa8Ad)T1BN1q)xOyLMEYg&QsuFZJ$*pvre1rm^o-4X{3lB17BlkGqO zkiU9;K@0zMB}`movNE`I479T$7MF&4%a);ZDeCx^jd-se(=YptSeIe1zfxjD$S4Jo z&h{?wYagW=8rPXEcR?_jdwdt_F4Tw~`p8+Z^wWgChEL0vVH@mM;~!;pg_N_F@dhR( z7nEP;)3Zj1o2jANB|6V7S9hRsp53C#TGr~xyci~{5e<(@jvcyY@_dR*543`)Sw({h zd3Q2rZL@<0Po`jkCJkdROb6}!+IT&SuK}80Y#23e{WT$AgG#-zSKOT6N;Zi?lvsmd zji~hC7|*joO@5UHW(lxZqjXvyLcG4c?vdqqp9~SNE%uV09k1FzQocPo4x9EG_7Ud7 zg|)kj%N>w%ySODZ=`0*#5AHg+oPFT&E&Go|*7K%82gqRdtb5(@JJ>rzB_(KAnC`O| z84~Cm4lhcMS+GkNQaETeYEtrt#o7gTctXZkepv;7MBMptNg8=W8VB}sUvp&ZGka)O z9qF`lwWgbR2=g{-J>93lc{{ZqCzvjws&Tl1+JE$?UoY?C?&(zht4jbJ2~BnFIM3?z z_8{rlk*4go|Ijuc8o4tmr-1VMutA@tUXY28Zme>#|7x+Avu)(fvf5~mS+d{OXs|)3T*liP?rU88`L+gg zo}x9}f+g8HEj;1sG?rQ;Eq6w||8@`%ts@>!v%k%>x`ko(*|UnHBsN&vv3EU*B$P8I zALG6v=%2n)nYMGR9}Ybq9-c1d=WLX}8l4TPFd)jfG;I}2rL6%^x;nSa0~+Y->0(*t zS?p@GZ|J6XS}aq);;shs11U$$`a>mxxDGDg+Nc_*Z)Z^Q7!eC!L;T~CT9f`Ki%Stg ztv&kdm+k>LjbNu!a3S5Dju98WUExWu$8eQ3PM)3sDit>Rn70sJu{Yibt9z3G#j_vmiTUE=+7-yjX zK)(NW1|eN=8-b?1VKLK3vqsTr%6!j=<%>j zLTe_&3{dMkaw zXM?>9suc)mlY(3$IsQVMff z3WlDZJy~mvCNfw4BC}BJac|7G5v1E1h*yR!(i@o^TbP$UmIJ!wN)QFwo=TC%!u zoFRAdrjAAm4#v(<(J6C?RpcN0Z$u_KPHRLF^h}D;TQ>h{arONKm29hi7s5KsBMN14=EsykR0bWsiwfT#OT3GL%_wtnuF*1qS(Yvg|)A#Ap! zYdWs7Oz_84K=$n9;e7Qsx>IX1`|36Fn`rsU5~5XxTlR(|`bcL`nXf6~la?TAC%?Fj z9(bTn^Jt+rT8sHx=`wJL(Lrw58BK!1Gu}~5`|aeEKXAS*Opyoe04A!Tj@FIb;^fQ# zDD7tJKaoRo-TlkLrbd-BJuUS91YOI@FcII6Hp*c%w={b8~=hIx0z*TG1Gkc=AA z*(HU&ECHeu*|o&vsm?)EqtF7@t!B6z%!K_w$dE6X$G@!+$Go7 zs7Nt&jH`R{-h?b`wAggK9sH*AcVh-2Z(+GBfi0$#306bKT_4nj#+t8#$x_cQ&5hg| z`-lFE-8opZwHMS`e^lTmJ0ll(UkzX+>XbZ7dtN>*yFr42WQC43MzKj7 ze33AE!k(EB_;)TBr$exy5!@LP;eZi8crS7mQ$aVf6vK*>=~l)V?k>(%Se{F$^pVOu z40OqxhZjwxhTOx{Lhs5pbdw3$YAHt!e@(}Ge!aXEli?!ljkL7@aoMIh2TN!&KC`Wg z4kc>q_jIZt`_QSQP=vRaJ_@b1_ylu+LsHx?SVN;PtPZ?Z#5dbqDJ;bFNS8D8i-{V- zSw;|E{o-79jFQ|wj+S$=X2NF{oEYu&J)HHmjKw$AKMgYj%3%aPOdH7=SM=Z&<5~z@`RP~wF6k+M%x(+_N=0p{> zY{f>>ORnuDyS^pfUP7;smTnZI>xG;P95;`%|87tM)BM#Lsw_$Gi!m#)nDYnq6rJ!{j@s!RG1uWL4r-jH1O6g!9vg?>Vi zNO7{IDpU_W)$G*Y_(GEw)Hx-K18DqUDQd#p_sc?)Hto5iY{%A=cvbaG&lxT!qs928 zp4)6PIg#onY+96Z$gn>E=~9yEwXJ4ZRpwg5t7&IejEY_PjatmvG%2Nl z@t^cC9B*<}SCfd@8p&^RRi%1)H>PC8x<=AqPoCXQx@y0{ww1BkceL#!t@aviTY0O! z2HRfhYOmqm|LoNs(@4(2!Me&88fC>5n-N=^t>$h6*kh6I-K9#j-wupgk8G#MzJ^Ip zQ&HRhoqLv^cqG$pOWDe+TGpb$LdnHP*z3e(#jvSx8%bCm&fwKoP8oJ+%l7QpjmUl` zH=bx)L%TmVeR-21o!BhyQ?xjT3#|u9)|P>T-eRhA=nXAsAio3QVxhha&r`c87 zkTmj1zMRnYR@ny<6$Di%(ls!wC(!0OXHZlaCWK{AbZtkfz%g-Vu_ z?Sl7m+mXnPq~MC_a|pud4;n-A36f;j4( zL1zE9L8_uj-+U^UHVxc3?nYOXKhwKpr>?wdFBr7&-Xxfm4t}>PhU^7!?Piq(Ll+6Z zd(Wv&l+-cLvccW-iSeyil6a9BPv)m|Emtf7Ts2MT8wtUO`Z+K{l<6aIg8kSC5)&mv z1?lse%T2GT-Z`T@P3ST9onw7XlzHFkrw@-5f-RjC+P%zgktQ6V}Z9Xl)>_ zmz%Lalhf1(%N0VWuA)&*$w?4X3<62Hd!I8XoN^i>5~r+N3N{qkOK~UT5~3Qc*%hc1 zB!%7I1|eS~c|?Wa3Bnl_wyi7;m~7Z6_(dy~Bej8yHoI?Xlm0DbErjJHWFy$%Y!Fdb zlP=I>53+_kE37+1euaf2>h)=N29I5>nuo&+#Anza-4G(Zs!Tq`VVTdc>wu zxCva{1g>mfxV6l@g}{}vcx2-(16DeT2A^@udbZ8%|=) zl$>}T;0$x66ZCG^uiJ5=l5wP(7a2tRclIl0FMx`E&%?v1_gBl&e5;N^@N33%py~D% zeUhCm_JVCfuX8|O@aE$^-5g*F4 zIX|X!I`RT6m-lANpXhFz%;&7W`0M5Q`PC8s_uI+p<@_YROa0XG`O#OeR};Ed>!kMw zw4lD4j?TVAJ%R~B769&|aD}TOK$as!8jeTfAOAjEOqTOADvBf{ez%yf<|}FuKd8dW z9j)DgwgA$u1u*3dG+u|TjPVX!v7L}j&}BVOn3EWlp72`8gc_U2kZbJ=cYm#6aPT+1 z_vP0_Z3CNOi)Xyc<0j~{Jhz@cT`gAgvpGqO53~Gjv=p8L-F0N8mO>r$7e2V1xQ*3W z_5xi{WB|n^l7HC`cfNIvgz9~bh0sKwFUCpo=9KP`9PB7e>7jmUbegBAt=<99W0QEK1>-7ndj<{(Iq(#yV zgF3-jBs6l;xX^A*VrXx(5F|uAKG5)pibK)$9kk$LH3`|pZ2W~O!a-X!shNI80nAJysDs^XMW z2rQSiHZ6s4y-(g@wON519V6Ck%<&G@D5Uu7L8W<}I zgHgS5EMMkEddhYu3~xPatrP^>JIIdKTB`+}_d$J#ImdB5y2&iYy*v;o!zJOpt494b zqjk%T6ugbbcVSom?lX&7;dylpq;#hjhd^?7)3w}LM$&2NWsw5j?*mmL1i-g*~(sD`&~bxEZ_O;U~+!3 zy1L2prBqf(=|4f9FO(-IKl{yq&J(!Pl?8n@p*ph_mmfCid3afJ6Z9^>f6|3gET9c- zuA5mGrZ>S}IByb{37?sZ&ndh$JS{gV$;z9k(B}m!Y#-ibN^)na^-UV`O&YST3aoHU zcM_=R`fJqBQRcXHrfasuPvPT0K4fYy4zLs7!(3!c!Cf*mMW*ZNXgnDtIgx`2 zXAdvsW{)?YY(F1b>wY6VqCIWq>#VX&E7amm%@EL0n>nNJRz$~r8LqWAKF>FIMw3u` z%6P{CmF3X}F_{oi+EJ=;;mxl_TgVnzD=oQpaZ|1Te({0wYvOtX;p=24kC7&W^k3d} zhpmfFIo6E3lXy!(1|JBiq0ztZ7bxi)b1^BL4^_Ya>V2>3!nD2SZ9zz~aMucMxjWfD zTob$xJZCus92mFZ7MB%CIehLuzIbo-&1AG(J(`WG369y@|!~(P^F)rE-h1 zrCzKfE_0FQM=J{oa?x+kgO&mwehZeDju2=KQ*kl|+^Dh})gm_zu<*?`@%c{>+)2@u z#C>cY{AlXf1jhN8YrKT$&j|T$A7hahZHfCNnt~y>Wv-Cola~LNJjc&)H`Sk zckXgHJUpe7dF*ANO2Na=DO5~H>6^*;G@73uNdsuyG3FYonfm^Ex>)XXfN#iv-{k~+ z-?8vmnpIZa{N6P*GrSlKXnn4dX&|rH7!OGaTmx&}Axm;EIkmA72XqgB;zGL}!5?R4>E6{W&gP@edxILp z?#7c_5OzxJYsaU%r?IUnSv^MDR&2W0P}`}I)jia<;?mtC@o6xfowl)E)IHYwACc~w z!y2_OL!_y_`&}o6%&($ONwBT=dDA%TU*6L99b#?6&p*4<(YID4&Aml$T&NYh*v`i(3jhH$pz({DB-i3~X@|Ip#>aza!)(ay(rbL0A{{UN>?aBEjYHt}^^9 z#|FbE%|K`QHR&1)ZhA}|ZRgGqeHu+7%^@d)l^(VcQ0VVRxVc|Axg-qYT0n07f)e-h4Gh|VmP%Q_kn;@>nJW=fV^D%aZQpWtvix5YypKCjEzW_kUV>Y5HoMjl#*aQS-4lWT+@WZP zq?_2YE`8(jHF!Uu@5_Rna&{}=<#yw~9> zMc(lqq7um5(OEd@-5oeJYk8NQgS4qbX^s2X!quD|6t7?5`eTR%;RdJO99~qrRIF1m zQOQXN0wX;)@*CVkqB5ZCqYd0@x|!Zh;E(sjMlHw<lVaY-8XQX3P zPWNhrT20W)$#)-NoOW~D=<-;Y#}8XloSfQ^2sAkBmu)s;zN^}dzokw?yN5;TCg z94q8%^48oH|!wIa1vSyr~aRx^r*p0}O&8(k~*vhVl2F$L7Ptw;h;;57@;G@*w$E z^5wb=HUR1F>c6qG2Vr^Sf3k(!)DRw zs0|+8E>KvJl7=cX5bL1wa`OWB0ms~h0eGw;z_^%>0YZ0UpVZy2^-Z+;ldL#FYSaLW zZ#8V4vjsGli%J)?Qtu3^`?p>3?tXa!zPDy{oL*Mr-MStGI?Kbj??G_eZ^>`M$SRDS z%0rjqL?3r$*$F3+^%f(`ag(EvENSsLvR<<)X=2=W-*B!vZ@Kl#_Q63;a{xT+;>-u5 z1!Ey#%Grl1-`7H0XsnCshh!Zbo{ceP-6UW5YA6o<3!dYZ0`Gt%_vyT5(+ zcr}_ymRP67TLG{<}Mh0Y^kwdWKKk&MR!rvctD1?r?i>@HriU=xFI< ze*Q9OJGrXg`3%4q_ML6!>3PDUGx*-$i{lN@unD-iM);;obB_Q9GxQEmcTrXX`AJ?( zc6ow~awAt{>%O?gG?W2otB9Lxgkc!dk6TJRtmqmNw{-}!SLk|s^_qJP_x^`uI=Otc zgMz&;KHf`&uN7-B{O_`6D;qA%6IB$r+25@21LI-&{Y3KQq(Ys0xwvA@PeE@B{lrZ zen|4IsVkFK>OBu-@Cusb1$CEfiAa*&Z-3AK60%-VGD$cbeD#n7M9!A3|9@2A9WY+QmbOfZH$N>vu3>%U!cnEfG{eu9rF3!ysdJtH=rP4j=4_*kAirwIEddm%(){ z`gL;h4h!RV*${C4xtLJy|!T3_^dI3k>(JZ)zR<<~O#o{xhj-D20^wTe5e( z;<|1rAMR^P{d#$8pR@^-N(x7lT)GF*wdu;!p$t@%O|Ms6%{5uUa^7z!HMQX}+18Sl zgxT$VEUhm0M`vfKj9;3&%VE`aCIvmF`XE5W2=zj;sGOU~Q#cw4GTWM_9YBj42(+(e zm*@9K%gHsD&|T~WueD(cw!i6n-9>ViXFDqA@^oJ_<^C>rVVWro%UqiX=IbmYOYI)} zG=IE;D-G(k(OQZ^RT>3486EW4qlMD4#^-MT#v&R#-Tbhlu@_f>+^4;f6jSc1WM|00 z6g!n#Yrk_bwi8{S^iAV3w==cQYbidp_Wd?j<<~YpZE*)GXJ|oRz5mq0a(mEgH>&oZ zCZAy;!Tk88!B@$9gO8H;1>g9$HM;oso{tiy@Gtuj$+zC}4mjP%fgnHoM@ki?`%Aw= zjz!#Mjnf;{(Z$q#H2BK}oJ{035LFjdmNgP(v7Gu)cRFgetJP^_%tz|O%0@f(jBR%O zORvy+4sM0-2Y3@$TIU~yY4tfedT`eUFW=fy$M5;x{sZ59hyA>?QQmjV}{9AUxOD$+B-u8pi9$~ z445$kuV!y#O(V;rpYpJ`-v%QW>vel{aju2+Q}cLOo4M{S_X}T*Mopj``$yuNTknNu zLMRaz4HGqFmDvPY<3!kppCPAKx=6($TRFa>Ovx*_RVs7_?!xBRJ1Jmgm+n%y*0hnB zTVbcuv$I&WMo9Q-bapwxuk1)`Qn0qsAyc1|q{H6XLum^d1^FbRx>4;H5wiRa8bf$X zv!;z_ZZFs~vAYfr_rIwHy>1JyOTRC?xB6x>TCN_=#uB5_z8_mabql}1DmQ0^knZB2 z9$HbHzLDoy9M~rW`?SUW7G&`tvq>rI6K5^7qyx!VXJ^+)_ljWE@J0LY>rkY7033hc z?Fc@a*Wq_>ti(NLaW)^(m9K5Sy4DEJXRy;T#DQ>)A$s!c`GkVQZ)vdPILywcwykmw zy%2emM0kzD5!b%Yp$Cb`hZK#Mw`Q%-sBHE6^0iP(Z^KG@x2GlwgVSEo`X6!V-Jw=w zO+5GRkj)C1ysX%c-nh6{uJ53?lls{SfP0o7|&bnl#1xbuxf;5Yk@d|A~Wl zLA6wzbC#5$yc2@OI%?({7^3=9-t`+CI#w;IS z`p6nj(giLoRI;NyxXo$EnhVvUlJah)efvn*iaLawYE6`R;8|J4a9W2mBYHJO$wdYU z%JZF+&hW@k0lxwxH?ci^iox-tkRLn*$|IxLcD%A=>PQiyp)D_Eh@hosX(-j218Owb za)n$wd$|3xDVbBFvjb`LF=b4fHKr?fOa;(*`Ukuen| zvVs?J-$KyO=39skA<_`7;kNGo@Plwpahbt0+sb*j4wr;sTk_xEd1aF|_?EHzE82yA^?Eg#!SCl}WQ^+;T6wIzLcpd4v^9nq&adGE{>i|&M(fWfCL`?Fj`DUlq_a6cOjB*sO9&Q z<^1dwj;G?A?&w5_{urNlddi8_=ajeN>G(qRA=m5UeDW{f8Kz|O1DLVIZjMM)1|?Ix+|A@8vn+_d2T%vKkR)Nxm%*`t~t(4yk+!eZNOx02_kf7b{ROo4g>FJF&%8pQ-XT z1|Qx+g&^Q8r!4S8C(jud_Pgn+{T#6SDjW_b9WVh}U7~3M0M|z;si>L@FleVqq#BTe zh+cZ!s~22nfnG(ls+SH%e43!pw&sa7g3PQ{(WIPOb$};~b$Fs007kP|$;hJlX?Diayq&^TT%Czo2Y7=>oe@*rnC)-m3l8&N?Wirwd5fL z@ls@L6w(W|cIedIK>qgy{yn7s=z=>ML4iA*x~Aio`_tuMHec=2cl2v4)Z_6KKz4z~ z&;<}weJR+V@*z$-~3T8A-I)O4(AFOir83%!z}sEAhis-fl@UG3`>1#Rl>_fvkwYs#Za@1T#}B z&bov>I6n3eJ1!Rvg_0*TGi^aUuHJ%*>3hZD_+AAwrEe#JZ2Bo-!7!*rMgPW9Rnj{i zbFa!#jjr|j6G1B0CzvlOGP31gZx1~l65RlXb{hnOkNyHQfy*tsrX=q9^!4QA>9bIw zic0)gbX~iuP&zYkV@76&C1u1(=}f6Hq(y)K8O_O69pbk#>EiM9w0H!B6b~I@wvk<% zIWoRn%zq?@m;95uCZcP|y}tL;XfX-SrfTE(9n}PUH9hf#XM@v0Ex*1F>0hsAqx0$b zd%jl_s1L(@KY1}FOZ&=s35XqJZ|=SjC%Ez5(`Qeg{fyfNie2xCj8*+|`Q;V6@>aaux;-eFe6UwC^ldTv!!)Z>N(EP0 z35Av&s4LpHCRuS^mEdBvFQ3Ns*X<}fxdHujHmY^oHFMQ@SJT=MEo7nY*3L?N)5Id$H!{_}n{|C7rnKsjI;W^x-G)Q*UW&5*}Up(VlAZ5RwD| zx5zL7*9YE-yp4}D0*jNjKLWzwvDet6Be$DrBwH}HKqf4J-gfUhF3C)!r;OaiY#qv^ zH_LVOvlYhc8e{wH*EM2W`|OknyFd%b*a<849K9DqCdO0MR$z9>y2(NqbxH+Keq zaf0V|uBQEb>dl~*SURI6s1CAAd=w(eU&Z$+OOoi5((2%P-=d(DDCc_A%|q+Zs9mB) z3ql8d`}CR8xY9S&UmcL3DHR}5n+1KX*Z-%nDR$nB3-&yJM?2P;DBj5us|}R^N*X+* z-P|jRy8GKxP$`7~-~*9Jxp3cP%RM7X7Oyu#O^6)*Fp{TBT8oDY9cm#6Up_0&(ct^_ z7X5(dY(-g`14bN1nmK}MTz>Z1X9{$`ZdV;{t_LR|4U?(2MsM`dSr~E7Zx@0)|c(M&BV1a5~ z(Z7XOm6xef6$^FAzMANz21IDRl+A0p`rmQCf6-ejb{Oq5*0ymQE*ah&{q9s$SGU-+U4?)Ugw z{T}2U7wU2^0X!T^uEATv)cJ{;CIY=wdW&wVqJ=^DoC13z6l!9q@tiI98i5rF~yC{Xe*{DPInjzO30}5o5V>kIL^UDi zK>Ryf=?yfJ$uV7eFzz7>E7a%|aO>|aP(=ptjjxN6lqa=MH$&v`!yglyZuBuau%#4l z@RQD7o`r96>hcF+orCaf1eMLsHZ-nnmCPZrCgt8;nuaOLwgljcb^woNXT)ghnXl?Q z#n->6-yMK@2P8A__h;sNp3DHJJtQ4tq4gxXv;0nnSCF`lxOF>jI!OaV_!KbA&D90k zgPJVN5#9dv$k_s-p?~>gTV8_bXxiYKUau}x5UmyK_w&0U0ehB)0H3z4x-+>>xvx~-Gv#(y`l48mc zOCi-&CbBmGJU^NfiVyW@ij$?m0HC z9eing;uiz-4byDk4{Z$tw_?rof>=D zYTf{$$9el$!z{(B@NX!l)d2(3D>T+v-zrC#BcyN#>S6=%X{>6dVR{caVf!ZzywL@I z&6R2|W4v#ju5+wN&GKC1(F{sy>94n@WM0m2-;Aka(L!4vQ&9(R423+I3ul=5RGHn3 zOe;%s65>nEy0D0(H%nYnLb@Fr(q= zN27nm^fYnS5AsH@JDUvg7EacSiN0gDl0gE3&bLr2q>Gt}R@G7a5v8_?*(Fm6$R$ff zjP-*(GE~;%F4;*0)0>DpW+^{RV5+eTY42Q9b&l*C>{9H%DEhU+vx}{ zO0&~3WRtzqAs$|C=VqZU;pVz)e1Y8CnAEoJ6zZPUw(7fekHiMBATQ{~-5BE^LW#9* zd`Zb(F-hc()A^(-JFj72Y>ZzD<@yun zJ7q0D3Z*quE;H_IfqY%iarx!2&jy|Id~H&+J;gM^v-xa-B4ayT4p(z+o1{#nQqSxO zl*Ch?w8bN-N}Uc{w|C3&dJ5xeu5FjMFkCdo-ojwYym$+vxy*^TA>-MVWILbSbVjiw z@9za0E=^5GcRo$%1Oo@wSof#`ITWk3Wkq*OjeLlP?ZdXH(E3KZY8TYf-E65ePg@Pq z=)1nctuI|Wx4V*8jxTABhS1DG*=F6%M6n1cJqXQSnE z;15Z(vJ>RYPR#dKISTEp0|Rl0Zn<;?WA5s0F<1YtMr;3`Kq^U~UYdx(dyO3Yod@A` zr3PK?K%!b&^|+nXa)ku1?h{~fX<=*jUFS;}Gr{R{OKpZ@Pqak2+;My9MF(v!=?r%V zP5&!jG(zf0yyp?R++F#&&LYyebd7jZVcQ!kwfh5E`{jjjlpUYyVD?r6?0M(uvZN~# zSCS_<;|1xavZdlI6vhEjv>gQVD_X(wQ29lOd83B56GgR!eJH@AY% zx0{YY)H|o0KN;#&Al9T_Nc`wS!q8ZYNzTdnB2?jLZ54R~|Lev4+}Q?0D5Ali$mg?q zDS15lD2z#!da6tg;`s%g6m?sYH=-^fF!bYtMQYUP^53YW3pq0whZ`|Pzl5bosYi>i z{`ckR>_a3N9nDj?i>u8$qnO9#t_Zi)j2|$4GvQ}rSCHRjD4TwG#}UQO_DSvpOC{(D zsr-uhK)WbERNM~?_xC%7+Qj9=6s2;la|%*X+E3iLL6CEsP+ytWcQVBQ7|eOAS~ik% z#jq!`?^xJ=dc=ht&+sXgi+K9119#kWLfagDG%I<*%=C1mKT0MDL^?KF|Jn^+9%h8AsB8<*?# zHV8`4v_`mgI!UJhPM1$8Vz$GG3SIq!>diYH!5fqv2JW@?NHK(=&02ej)GfT>+ZDE@ zTr0X{=>-uR#0d*^8YHag$Htw-}qT!A(91vFK=V_09anblhKh#3i~z&Zdoy z-)WO=%mbARv8@lvn8`!B#arqeHW#)yrrYDdEblk;?|(nIN84*Ioqsie2WL5$@Oj0- z{+<1>BX&BmgfJ9FlB@F4sXnAljDT`Gu>+LXe<)S^>7cJR6w{Cu+UEW68P3)?#K;^{w0_Vy?_y+!^tBne z%ApaX&7pmebH`E8jCOvb*J616?(nH;OrZDnKwo5uv5kG@A2%;M5Mtfgbq}>;S1Gx*>6E=8 zB=Cv%l(Z5-^->p>gnKhrfWRp1XWy^LH#W%f=x=H9rT(#q3URb_q8nj_#;50e+{ykp zt^vyMu^|{!frQa?wz_gW;vfs5KOGkR0_-9M25%3(5C}a3(7mNdJ%r4_N zLV(1sP1FCRAf{SGj$rk0vWYv#?vO(sjxesZY}qLI`|QWr{3ld+GN+@KNFEYCX0k8% zznakAns&hoYy7}U)1@91dMU%98#Lh%DoBP=4bp~wogU+WTs{1R64$S%*(I8{yH@!Z~!n}HsUh7 z+p;$gW=LIFE^*#KSf>g{nL=G{8lk6ip?skc6@H-_u1FMEQccEXne0clSG#go`L{zhp->Y&hC-@(~HUV7!W%WX4P3 z>B@jjig703GANx$nQDrl&5Ia2UI1u-n3i0V20`(TPEN*4%H(@Faat+7nJ%B7p3O&j zwM+n8_Tgv(s|gLF`3r5} zn}=TJ>5ryWI3YnbJ8zJFLa4)Cd@K!gZM#hlhmf2b}peCh#N4 z8X)LoFJn}F{Zr}xyW+!y$E#DccElE~$*->O)#K9#SF%R61 zYe)Ta5n;%(B1)t;Is$usYKeBvpJ+^1XJ!E6DSpC8PSOq!$-_Pafrs*ns&R6;{B(s; z%qRU2chiNtE8NMJ?Ids)j;qmVftCP4x6u>E!pL_jgAYC%{ObSvfBxTJr5Hg^QN+r> z98F|8a7i!deimW(*wHV&=wo)JNTtx@OQbsX%-ux}4&f6=4R$fab?Qyfqo8@9(>bsm zP_;jNdUSN>&Yc7L@4x)(vs?SOxHdUl0Xfz^Z~khZ@Td%?(ATeyUf;R%*=I+uKR-P> zI{MYGZc)4aUuh-|5V^j7wg0P1U;ESp<)wjQ`;K0=pr$F%kZxk_vX7t9%_TwS2-U92C*~j|ttHIU$WQnl0%XrgO5U zaA6U!uo{eE3LQ9RUd;!w-_HhLQmpQ$356nQ>7ZAq(=*EU9n3FRftfIG8eudWkOuPZ zlfis3eSzD+G0=22xR}e%UiH1dlz|7NK0w6fXGxcP(Zq}zl~&RSTs~<6;;(bu(avj} zKHx}0C5$@Yl>wlgOle(Qom~x%X?cWEJzWh}qaP{c8^=k&qCxaDX%{jdkmCZk>!k3v zh_7KY$*-WrAVvxm1>Rr3{97A8dzBrqX zr@*VM!2?QEPw+-OI3PP~@S6dwBHR?!@dDRjKDy4&elv&sV-GPabr0T%^o>9}nLvR>LZ zYCM}l$}?3N#;qjayJL_AEDz&AiBcS-7w1UxeEUciF+~yklw**YuuDIZ1Vv-EcU=eQU^FCPKzkKa(O&lWN1HZGsxm1ih3BwdO z?KLJ_-M0a}Z{-%*!^3lOa>4`bhmXMSv28|5>Ceuqv!vEyt|=q&_F(_N{olia&{yvnT^~_i{!c@+hHLnGL#C-Nfmp~b^={K6}cVbW<^Z5i`q zd%oG1JKVRJlC2*6CMo;gXtigFQ+(sEpy$pc-m@)r=ek=* z>$wyOK;YF^=!LXcsXK8ldQ7*5WNH`F5-rGY5AG&)j!9p0GLEVE@TpTOjMXxn8$Qpl ziZ9a@MD^u{tcpPSajL~N8a7qt8*@pVRsReI`6jm+<2gQ9+hm;bek7WKm~;$(rG`|# zOmTPvxmV{Xq3&IYE@cb}TA)?JyQ$?xR1s5Q}ngNTE7-d~qPf_9E)Ac$!gs)%RB zEa$@ghmIn$*X!0rb$KIJbR0WXaE1uAcRjv5KScB^6=ZAeh z7nif}wH{nBWOEB`epiUJ3cGY>KUq6-WoFmL*w#TO9VIKZA1!>0Z8FrG60*hex*8zI z4G{`v=8nVO42#Odxdt8jz{1xR%HB4I^N!zm)`*y7C|v{2PJS^?I)kabq~iBJ(S~?d zR(tOHi(tNZIia^iAVGZ`*BLPqbN>@kpD70=TdOVg!&6 z82D8HG_{a*Ts@}^C7(0n^VIOGPdHJ>y=lb>rF_vOGZe+biAw{v452%eaPay+G9pun z+o;b}04<=XA|W75XyZ+$6pa}pY{p%z%o=cZh_TRabt=~hGxl&cz`BDiWYI-slIlZ((x2ye!B86j$Iy7eWEh_T zw`#l;C^dx0H+P_Ru2Fb1aWrH~QAU?cXo@D^Sa~wU;6z!JTzbs-?Rlo4Gz30Ny3yol z!og8MDKGbLh=KF3-}x$XSwT5N_L<>?g_EqDoUYt1RHs9b@!R=g^7w+v)tyeqO}{5( zoqfB4ApoHzzGPKJT>FzqTm^n^tn9PwuK{wSFEV`EiwrhnI>%Rz`D*Cpglfp@rlf3T z(g{woCW$d6EqX6eo4}JLi4WbO;Q(?6JQ-2eK)j;&+Hm&HzB? zl@IH;mIO>K=BFPXE+*&mR}&6Bh6Er;LEerntKny#eU^jS-cv?)@)TrEXglxnuEACP z*rOL$yfq^54HA)iqLOg(nB#W$H1LwNCh~hYBNLGp?rX}lS1xPI^xKl4_m+6u7a&E8 zUIO&CNbtTXv2cN^cg6R;mC#wdiIJ(-7JCUMzlI;^8ut=LYda?JAyZEGzUMO^5e4or zxx=m9RhT@`l&RpNP1&B?slOUzv{v{oh7HK_6lD5L&ybdu_-7MNNEQb6@Yu}Nkz9$yc^-^KAS-MR3K8_nDBHzVaWYw1DdL< zwc}^CwPU;P)b3Hw^Px1oc!)Fp#$l6hrb{khAxGGJ$G}Kzc;pX$@)vm5Z2gF8C@rZ> z`AM@m$`w|+YCMismH`636KW84u z&l7T@Zr0Ou_ME@SAKOO{&quGbhLltNfdSLYZX*yep0e#nX|9k#7z(%n&(BIW<%;(gv4<>4(m)U%FK)2|u zt`5#fYyeUPm>C`5ymyKFoK7aMJ7KDHGQU_&=adUZkXe!;A=o8-MUm#%80>lM z1=7_TMigaD4crX&GCX9T1TgNB%SuhwHA@K`fw0$9swGp!5euHDgM75=WcP4|vPIT9k`nx1~io>G!EmVfNlv!0_Twb|lfD*CmK9w~k| z+X%T}TwdWkqjEpM_rWX8(1I||;MU--JEvEu|J(`b(Q|OuRPjSi&eRd(%})6CqN2 zmt{_vJo}!UoSW#%v75v6=Sp%lIw$G>Nv#|Vn`0Hq>u{rH8iFw4Z%0EH{$~%dT>q^{ zTT~Ff86B3HjBrNNb?$ZAV6-HqG59knXZI+dm+wIk;u>uhUaNJDA;^TGgI=)1{DAu3 zNEiK-LGq^8&`%(WFpHe*PBLVA-L-9qiiP3n-W2Xp@LaTN4-dsBXtp+DN_x)tT}Yt` z|C`?oJ`GDmYf^4VFKER6@Idnl>#W_O{2_+4XBXX`j^<`-3G&H^i(m%b!oj)W-V_=d zhD+wD&1d2j3xCUEyf?Ku0AK#16{POUW)HTeVVx3qKXbxaDtO-V)ji?&L^>gxj_EaH z4SqNH+y)fHp-dtkZC)zSw{#tjWOFIEFsb5P8^rF1_zc9 zmN)?@l^%KE z#soC@NsY3&GtkmwbBui7Fw}elrIE9_+~TZ*JAL5neYoBwOei*Hq37ju%;kzo&D zKebi_fKs-0fcbS$*7&I8OK?gJ!1;0w`QOUoQzPOg#v(A00j2p-_71QH8#@k%hTtvJ z9&Plme@d+5Z3}|CVga@Q2&?9rI}!|C7=)4F2_j4b6dm9P@Ncj=!KcOegzS>j&=Nm3 z`tSxI^jlTXx+;TD6L?e>6TZ?vztrlM=tlN1eT-+{i#_4;X%n2j3|e+8jOqM9H5PQ; z>&^T>t##c8)pWphbT;CvV&El#t;Uf@F2@&)TyC?}M;kKh47BmC+}L4bp(9sH%HF7c#qSww zTb^b8$;Oljti)iGV^FbA z@Ii#XMjqGXQFLa|knyuxG)4~(e0^H>)8C(=$P5HutFP$TsLdFlZ@xcCS;eElIWoTW zgym#En@fYC=~pQ=`*qzj7(Nm|b;0!yAE6i4UvAfu*sScP5q^j~qFc1kjGo&L8?>-d ziZ@CU+R>UQ9cb4hPQ$&6nI4E{JJiwAhLCZl`eYWD zn20``XZ!7cBRKIlg(KK#Rr^AD0tq17^+tL65&)xgv9jzhtx_S-^`?kaI>*VnYmNlY zQlwBdT8G5kKcegdb1%_l*haLumfdcIf}FB33IvUy3nePs5ZBE{+m8b39u9cBXXM;yMzAR&G13I(hJs8B?ngVWvop+=E^0kX)K?TD%fv%i!RJ% z9)Aeff`&@hwum7BzRB!E=Ruf*$WY3f8!nUY@LY>Ycqpzbtpb7)O6~@a6sT&sY_`pV zOL+)F$NNCXgvB)Aw+4R-p&wz$oT>rr98glVaz=6}P2{*^k))g?O+_uiib%i?QgzLt zA9?YO$kli-$9D9}e3D_#;jkok>9e#C55wI5W4fYB-^}nP(H&PxiBhwka z8$p<~^}TH`pFO=MiVFPttCPwXM~sl?k|pi))gR7JCP(;;uOL+4|LwcSRD}9tO_Vnd zYNvRC%$6Oztr$YYXb$k~(FmUCpN#?$gWT(fCLAjmsR)?w8;c#i6hdE+DvA z+@|XZq}QS+tnNTlCJru()>z1+{-&4OX%bX@{yb6d^wQnVgC%8ex|*Ex?i*mzA$j~6 zR~_1OQ3l17zoE9INu8SIcDMdW&wls2LZ{&+eIk8hpAtL7n5-A2O(Q?i-bh3Z=X?5; zhdH==IlCabP`_`{>iZO4I|H>Jb^97Y$ zNZ+((#()$EqekB&*aZNAk#gkx73B**-}`HzFNVO6(Amw$h2FX51hS16%XSS0=}b_N zKL`<|>FrHP{ZjvJZa?%({Od=dI2_i4K@kOXh$tCU`6K4z}{W~o*zW}W>;olO5?s7Xo5yOlDsiZE!yh2^?3?tD=JRe&`yGP z<`M0uBaGKRE*2ND4Y=^*EKn~j!^fI=xd{p%Gm|6n!v0)-ItHp33n&BYv}SIeL3ib+ z9{XSawN?rxox6j1n4rCOjQ=~xuiy#R^d5l_<2-3zAT$l zq9r>W&l^+WmdE;NHGefbD1E%cLn*dGWpzI0G?3T15|Dx!rU99=LK+YiR!jkD9nyRS=O?B4x+fNXL1?OCcloHgp()759V=XlC=VHMu_r5*ao+r~M(h1b)+Kwtf6K zw$@@Kwn6|Uas6GrJe6lAYnS^vDv1u^tAtTM$i6ZSy31x2UECCgwzSiXD9an(wAsb? z-3`BdQEn{If%sV{^~(p>w`om#OJAe0v5O+|U-{MAhWs~XO2*>}E(~MQ{U)7n`4LZh zt~C`>#R8_Q`FhDEhSEcy^=@)Coo}q~)11xF?a+p>R7kRfyy;xiZQsS_Wau`uv!MAE zRsY%i?EG|gM$f^l8&9C7tJ7GVh7YTSz$Br;mZRg;ukk*rAAJbLn8o)Y zS$c)VIT$+fflR_*^BsNQ~D&IQ|OB5fm4d7v*Wb^`?hoh~atki8gjyQgD zODH)=MS?=bJ9TW@C}3ZYwisKmz+yf$lDW>U-N^Rxpl-oQu`xmm0(xsFL0^7Ef{v73 zp`FtHNr*SzI(_+)?wY^Er!%>;>IdjVb{&9R(!fobEB<6?uiuFz?t0qrkU0bbn!`b-GF<0YTZ%dnB%OkVq zr4KX$Y8qeX>fw#=#%;W~)%@s1`Zts)?hQ*Fo>4KOQ&Lj7Na%>RSj9J5uc|oEQ!sQ? zwEUiSZg`5gF>v%R`%OBC!vMZiabtj?g*~EEMNXh^^t1YK-7j(eO%DY#vO55p>1>SB z>4T4n>0aS=;iv}i9iOJUB4Y&wzFSbirp~~F8(WUhyreJ?9r9s+n3cJF(W_5(Hd~=K zSfj`JvR%>a{9^s4*_g005s|hR?7~r!)QdX}6Xdd7829 znj8R9ldr?)w66)DoG*V2pRDN_`1p~A9tvdB4D|Li$0I&K!86)+)4#v{Kn}Roc(d*W zTjYp@ebR_WprzXOw7;jb()DKY<^8Ako;>)|{anKB{}Ic}JAQ-*;J7^h%inP>r`b%o zJ{lc#^Q`F@IrnMR?Mlye<-SGeduutfTayD_xpVaZ1_>4If`+$nvg0nxm^8O zITnho1>x99$0WAmViaPT_#CB1Q+%EhZL#$<-}|RP_baMmQo5r$faJ+gSAUPtcV|X{ z$DZ>W+@c!TYh-4-)U~`W@tWOGSU)v1T!f|#>i?Y(Q(Zj{-57Ue<*^bGA@yR{nr-D- zij+b}X)#_|IWNdKXRuMSR4A*$2%GfmOr6Ecv28ZMqWYxluD? z6y?~^KvbjV%PEL*DJf-l7!VrHMn}XT^ck=qs8tlEh1d9*OB=92M?y*%AD9UrIrQin z?p<@XsnU#Q$L1yb5ml8kU?%~d@gAyh$YCLeaRRs$3#;BFaWkiJwG$P-vz0ebAYETT zom~ZuDd&%`BY^^UoRbw5^s`?h=lKt=Iw`&v4>MF7WZ>JMw$x>jx>z;qK<) zY`We&Cf`-FQaETkn;vJ=7L?3~@&Pop#Y{M>2Fs9_AZ_QpMKBl$(%@}MwLy4Zpe@KeSKEoSjmT@5+ZtVu z)BS+2Nq3IKl~=z#L?!x(d$bK#chynq0w7Uej*Dlns+&)e=1yqM?FCfGmMK|`Tj1HR zjq;^QBUP#Qg}G5#r(KA@Zlq_?U6 z^J2c5A&&sCsZRwA{*^6%0FM^Pty$aac7g3LnK+f z@yr+mE)D;|qy20W%F301OiGqo+T!Rfa0HhjX*A-&?^vqHukuY2P?h!y$=EtnClC7- zO_4Gg=y>bX{RzF;CXjtH*?)!8uDP3(*_Hxb)XD2id`w(VGgAUFrH)VNU%F7knC;d6XU*rx(6TMe_{O*Zf8l43z)Om8QRf|(?MZWOE>;U^PW_Ak)=s%g z{*@LrE2UOU=$)>7B_8WKOJ7@pcAJkBzS4&ba8CYc?iu^GYPJzzJ|xGx>Nf&P^xGB4=3D{Bs1zK@p^`%ksrD+r*Od9OKBaB6 z10-9Cnx`61R^R0kgmv9V0PE51dX6Nn?=cS4&U_xyxVN0=qSeGpseUjtdVfo2b)JVk zz@b^EeDJq+xkMUMLKOLkZyAw0M5}g3Z^6EZOGO;X=)|$h@??^aK%}(9CVZ`jHMvRGI*BW`NQ3FYkgPw&J>CUfB-lr=&tn?7yAh0TyFCsOJ%2|HDrjRcEFfx2b>RqAA3 zu~g2rXTM2@Yyn6{VSRB56W1Erz2S{@nXgyEyuILrMLlSy)fT4^{@K*%-Z2FF} z#5wURA#4yz&UA5nU;_ti%hS18K^eiw5RN3+UeW(d7ybArg%&fM@DZ*|LT=Ze4 zTkl5MfHnytU$Td-M$snfLl7q4)<)&&#km|e-$=qJR;+4|MfnF!>6gf2OOSn^pehF{ zuvNW^aL!QeHehi8=T({`+Ut+uTtC6T1EZBGncAryW?+axCcub^!(zwm_Lg^1@#u0`JN_BkXs!JXpVk@nYTSU+rNd7Hs_%i8$!-YuA=Gk|>GC?Z!^ zt>*mc#Vf!-7LfsKl5cxfz{M&vnV~Ugw0(J!Aat z;`o~xtvj&uUcIEB zZ%7-uX$+aFHu3$rAFt$g0LhGS8ds_i z$J+cM6C@ELY3jEiThRA(gXD2Ya)*Fh`sW=^)?{kQv$iuB1Nn<}UJK0RC7hhjj_{zg z-diH|we2z!zh>}&uh<|B&)|iY5WLpo-o8USeYTMYCBc$Lpz>9u4kA)9Vv`y1g`o$3 zv85sCAp>?%1UWHri9F+0P`DLTa;c>(a?vG6`@&CLn!?+_MjAlug`wB7Qn^T#EHYkr zA!wskC}*Ir-|^GI!A!Q{iL-}Ji8eRG^oW$HHD&hshE0>2sDg0}PGLam+76*OMOsGH z=vWISbwy*8Uy*7G>t=>a;PF&bI)!NYrYS%cgrwx$t0M8VOD@1KlCAi z>7XzOD)Ex9I1e{{M-$Mk*@Zo)os}1PQ+g{Tc*{-G+COOrSuSBNy(?-ej!T)L zGqc5rzU@8AY5B;v_$Z1mGf2_mTFfbHh1%ZGny+M1F)Sd)*;#GNNUral(lwEQd@ub? z^@UN}ECMCF?u?7wuIp(Y;7MdvttHD%l2&i z4pV~o*J*??Ieyv}LKlwch9>x?_mhU}Dx4_@`yfG+#g0|qD{+2;^a>r#B z`F|TR_^w0_KDnG9gP!x7YOj_>Mr31p?d>e*U8)WF5w%M zU>ShP8wzYD5-Y9ZQ3v59o&>^lQfh2|*eHfjLm0uegez?QdQTuRajlsbuza~JN@ZGD z>A#*%|3(#kH!CWO_TZSRdQru1|70C2P%MUgI$yy@*2ndF@oSt4xXpOva7F`1Qtp?# z2Yu*#1EWidb;GrAS$MjyE+gcotV96RKir-s#)wVLJyy497#D9rUY(<$AH*aE!Vg9X_W1UrywkJ9@(%nQ*9o>+{N)mfj z1tjl7QIPEWoI^>H>9-_%6tAX_!kydek<1~+YzG9u2MSTAbn+-7^7~fBve^Mi0R;;| zmI-ZY3dah#=19djD>ye-(cF|1#Ohw<{`a0-p1T^0a z)qMnbO>ZVHSN;}qW1vzH8C4tV?^S4CXhfh}9uSgKs{Mk{#unvzFtj$iwMnwqMe%Qc zJGodK&nOH+mzYJ$Sh8e<=qNPqoqZ7n^cIV!%RkjrbSk&9Tri!mLuRpJuc9H$SH5S5 zgl_VwEF4tjh}iwM#-g10qwqr(3THD^r*&`1wGnu+$g`zn{p;6k%yu@cXTB|#**gLJ zZdZ2yb{M2@-Y>5@!RfrLY}ZNjnU&}ij2~IF^%fC@#-0>owKXNaG0DMS_|ZxQ65}n7 zwoKrpDb>~meRFE11~Y z+IfI!k?d4B4OdUEIuAH9Iv9v_e^WHB6tn|#fys7#THM*{FkstIdt%X)4H6o#Sd?*R z7+wOh#Tr^H8kUJE%Yk}(UQCW3Ebzn7X9orAwKPBYTh6}2NPSf;fbOO!4X?ZIS#`Ey z6<;oMjGD)|)T>b>L1#4P)lcv*;4rm-Yk8i>#wY}xb@IEC_jH!_yu~!4L*{k=vTylU zr5#FAWQAbLF@IF+h_L9WAZ+FW?rkDyPrxKel>!d7&dc+W2$pvRLUM94N4>LUP)8|e z@ZeKhEB-3h+oY2%GN!KDNX00GHAzZh%B-dE?@OsrNbxLZi+wWE4U#*pAQ=RKI&KF} z=BKA*d(yot*$8CLx-s9rs-Y1XCWDY(f8saFl=Q(P1k3QziPNgB+yw1DusL6EkaI)$ zU__8rNPS=qMAOEt9C(R!UfIqPyDUVuX@+(ag9Gf8l3%|5FS{Dk7satBW%A z03on))@B*8?Gq=QU2aO=xnd4muHt9MecH+C{G1P6B(eG?wy0a#IH6($6B~I<`DTjo zCZwdzFzs{C(vKmM7;(g`4DrB~Nif#}yrSLra9+Sn|rOLiK_Ng;kY+a4j7b zE#J;i+u?qCOy@vfz!XTLnOo1MtD`qEgBZERY<7G)8)82W4p#eX#Np+Xie4CEOcI%+ zhp^3@QMm3WHfdQ<<1U44_ala|xEh$7SHWku9HR>KC>y70u&ePDk7+ad?aIAk@5QLb zSyTpmL|Yr!ZxHwzvyD@H#apPhJ_DwkNhxhQ+I1b^4nM}(_)Cr)X6Y_t>6ueN2eUP+ z&jDj8w4T_ixe;c>Rty$-1AruX0D=cX+cTdSg>L0)1_z-q#I_7?S33V71s_rd{&aKn zrkLC&PLp14c;W4ijK7(mNaA46;=7D~pR zzrdvuH#$o!ftPNbI$v`L^yX1+3#cdw+4nf8T6bUXb1)eO7`kE|vfGVPSxrNjx=R;R z)>HwpeEs6^Faw92>Kec%97?d)`8CR8Cc=B!d;AS2-hzzaw72H!xR;uKwaL~n$Igh}^w{x{0` z@12IbfWa;p*xM{OQ{K}zdzpZim!dj|YaaZj)sIl&eoGzz8)EX*Ek8YXcz8mmf%tSq zl1K-Es z!ObS+iLnzZRk$^`Z~({JqVTwe-XpXT{im+69;5Mg-dgL&53tMEM}1&H3TO2Rho*2h z-(^+cO#h*f#|{;e%S_ITP|hGQBbd=3sJuP-Y@6}3fUZGqpOICjGWCvLY5~Qf8k|x6 zTf1Bxwbi7Dj#gp>+L}%BwBS>GVj>HX_2$Z8vC5Pf(R`>eI;0FAKjU*CI+j&OTmRE= zr~KE(yu+W??IRogt^MNsZg<(76FkJ9`sIzDQltDzjmKc2riN3!4T`Rm1UHM@OE`HcBA zNZXBxc(V#Jmgl>+p4KX%^qfUArFG04g~+#$j~i3ozHKsYT;O(7k`6?y$o`wgPxOz1 zis>z?mrQuNlIN#G4u-+>UuomEUlO6X;o}q`*j3TvRrTa7kU?o_%OFCnCahOH z)1~#bG`;cqu5$dLUnXB_aZwS)Xs1}I?^@jfP(WHF@?wg1CHUra7~W0$w)dB$Cxr#E zge2bnBxJnOZIL36NTFGJdC_!C1Ncjv1{$L|(_%PD&xa6C<*_xsZL3PAj}iXBTOWsUa1$S}bWjv+2>B$?5E5God#@*7M^T zua()gSes5zxc4Ru43xsq0O2>qVD$Lrv(5#IS? zvRusM`zbvXBOAbU?PGGWrt~Fo9%)H^BMoFdLR`{Z?OB2fN3J)C?> z0(Ut1jGhrZoY1Q`$A^=DyET~|PX67{%G&xjvg(B0+y6cxh=o-rzndH=lozMRw4@0$ z)iHRMY523v@QXak$wT6Q6-fvu8>I@}sG-trhD#bStS$VRrUUr86j_!4faMM@>vzpn zQIcM3Q8w}~+>JPBkzggjr?08*VO*>{I-`qMZvM?5NEA&|;A=8j{2=r3!=zy7-Qoig zT#`;9f|JXl%VQBjQc6m!FkCrR)E7K&dQ3B`2L(sQCJ^)khA%3N+jr8})tj7#eJ`sG z7a~H1jZW!mrq$)ddxe!4IwNYU8dIwY3sb!1tzonm`pez150dTCqq^!FY7j}|H$Esq zi3Zv%+c%?(1tIXbQ+G%@SreNA*Jh30K%t`9x*MPp2+8`AK!Ft#?{9u)8a=QJcN*C`s)+HdE^ z$v40puPO5I8p@b7vwj~8f{gT-hFbkNU(aq$$gBBr32n{*(qH7Ei3gHEKVb)DzP!L1 z+`MeGrYpAKt64ow$$a5%FjizL0)MH1l5{s-@+h}$@cv2o<->AQKp$^&q-9;iB_kZ^ zgaf{;!_WNOgd^>h*MuBPnUn%M{0np}?`qV|7raGhTNN>$Pb%HItaP>opPwXCL><_g zztk~9WLU3tm=ep%D0kI(iAtT0?QB`@q~DP~!VW;@276glPMi4d%Hc(~W>sX~bhzdp zlLto`H4!!p1RSCH&xHW0k!tmL?)SFt6zP}Dp>Ad$Ud*PI){Ha$7?o<$z_{I_Pa3e| zu-^=2!2FEaZW_6CIg#-ay^je88MqGnjg2LRB63G>E*3w?mQX??m)Zs1KnO`Gs|Nh2 zc`R-yEX{V?AW!}krijlYqLJ8RL=fSVXtAWr%eIOa38LAITa{#EM+a>pGZ97k7mFQh zj+_%I)5y}8k9$UFNgjE9)A0tGMG%s7V14+OH074?0U_RJL+ni{XwT9^UpUuoFl?AO zCQ=r@#D}U{JW95>oe!*xZyb^-uM8?t@bp*79cVWys$Pt>YkE<}m17)+Fn{5_Kx3(- zbXuCOvgEfW&y6N#>VsN?)0lv0+r-T>rOt8$-KEj8a{oE2c-4pEP-s|9(#CMLBac!r zUr=q}pv~;{Y$YeNzyLr92*RA-(A-CC+`jnjOs% z-(aUge&u9?dVyg5w%%+%j^)uVaDk7EW7sVx8zqw>Iagm%yt{gRfq)p@KkHa(AtePE zWS2`PUYq$5Ip7PfjXZJhKPG1&&l5)kOc_#IG&Ja9wqoQQAbyr`Vk_WPIO(tzNz61I zK0*@mW>czeuy+1h&ZVTVd~2rcSP-XLrf&}}2Z*XA%_1djK`$Tc)T$MH2QP6=)94%c zjuOnIlw3Yl3;MPu>^F22`ShGnc``pD_IB}mJHGc*2`rya{;evzKB%+jL%D$<8$%|% zW7`NK2u|}`jDbFFm5XnT@c0WqTtlBzl^HLr%)tkLuItJvu`;#I^~3&W1i3Mxf#8a8 zDy0RBcS?VeKa6Yb!To5t;Nv*sW5)zGcY)T2^EC->uV^)Uy-7kw=5^;T-MNp1&r7Ck zUJXf-4gmax584t?l$Q#t(<=xXACfy5VNBBkwtCebxu;jcoMW^O^!>f@cE#x8SepHKuYy%rTAG^tk7oh_BVzBC5_5<6I8x zy`mW1KAx?QR&#oy{QKGJ6;9*dJ)~guDZ*>?4+plnrbyJ5+V6Y#Nu=X!11NEF3Lz|x zsKjjA1cuSV-g0kF*D9kE#SFrX)BI-k)A@3h#P2aq^_wYD(GycPcQTPaiV|VdC!e{B zrPQfX=)?9hjmf)C#t?ZkTqCfX+q>6VPp8PLX+lhhA9plEc*vg6V@o!xO#u2OXG7by zaKOV~4LHKam&|4i4ghT6r_>Az+cH@!f*Yl~X~dGK3uTtXF1IH8|FSQ1&|IjW zWru*-!Vf@n(-F|?bGoCkIXT#WvH#Kf#r{6ol(LO;pZs99J?w%-qg?}B|MJoLU&cdK zt-QfiS#6h?Fz4a+onzG>NnzAv6yavOl2Q24`lI#XRtV8^42Xi^ zm?TP#V%7JjpmhcRV@mLX|KnLHtGPiqA#-t7u4hf_B?xt93^g$ zMbj(N)Q)lhbo{jUY51m81o(uGvV~JvDAY~T5AioUKwU^o%rP2%9M1LE+jqEVcPi5% zgVvbRR-Ne0TRdh@DH*Lvl#L%OWDFeo7#;|r3Et>_ z4{|v0870YeP@d=^BQNJ;_Rup7aY$yC{B1J!`EOeV+8IUdHwO}z(`K^-DoUxlf09)w z6X%7e0Hv%mD*SwAM}@!m#dgYEc*P2y)?Kp|**QT-8Qb1lZz!AhF{Mq<7t;}sQv}TB zKO;r=T+VW#PmW$W*>?;I(k7=YrJ&D_tt0QYx|5-Ay^zLs%Q%L+ zfw;JQC1o$loW6g*vHQqD^YzyhM&*iboJ)8ByGfxnBt726DG9g<`~S#IX}`C_@hFC* z$(RHA;EeQJ^0;lf+jn$e#}|xi{am_IrYUzS2JBEEmck1}tj8HXf-eE#YBVhd**lre zPaiM7oS(4LmAD2L54B#7A#V-T_(4)`+46H=`Z<4x5hY5btqmYki!CIxN|p-xscXa` zWd+klnKwds)%5GxJ5K(|8G*8AW}-TZLA01^)SK?wBi$+vj3!A0B7yLg5ea{7e*r-=M3ABO%_^}{>>o!<7|u4{W{<;oe0JyyCBPKOvY zq#zqe&RSgeST<`EX6M~-!+Wm>9*#WjsE zpks;!RYy?34SvQj6*H<=5`kR}pk^p@J0QkF04Zn~(85oi6%3VPwwYa0HILz2&GFPR zG^Eegh+8o(>`Y3Xhx}ek5jp%Dki~*%XpwoIacrsiTn2*a$n~N6qsTWbHJXQ2r!sgH zg>OIhn;|NJNC_&jg|YUI-dPw32((B&(#%!CA)|+LwmhKiBnuH<%5{;_I`>i$qm=## zLjGMpd&(y|Z2g3CBtiHq4Ix+TDBAs&fsW+L40eXC>cf*C2}crO&rCbVd?vntL4dUybkhASL(#uwIpkt z)cp1xvb@t%)YWjFVpG#3I_=GkouLd&a_u)|^L$BPzN$>s^oN-QeV!!yuXWQoCIwc* zvKuxl-AH8Cga*s)%R2A|X(2c_XMlj(oO|wYo8fC>c8r-YLVFcZdfF|=jfpM(GI+Dq z1XOI63i@lWP>|A>l1o4w)tkzKSyatVc(Vq{+` zBSU!#hsbxe4mq3uG&?5iPD#eg^Vw=MpQQo-WpY{+>z6NS*GuP-q!#6I6h8nsIxEqi zMNJUw6-sT&=lhD-ePrVMFATxeR{_!cf0>|Ug6~|ksQP<0lg`hT9e(-Xmk&Pwg31_u z@WJuy=oD8Fag;hg+PvJ5%&z}{8ug3m*=&72r5I)Nw(svh_<*i}*>|q4-S5k9Xhgai zOyNm-{1J$2e(fLg>NMi~`_6ZbOv%PH&sNjSz~J0wdtZ5W zY_LOnsb%_wOq7qgrmu*hf!6#9or{x^p(C{Lxg0UehopYUdmt*k{OaN3yU$+U|MuyF zhmRlq{sR(-$secZb0nG&nW;2}n!$|A$?T^MorA6?_6ZL6q*z97Zma!3I36(SSoUSY z9Yh%owqzEietI_~bk@;_h=hr}&{KGOa)SFEP2(+_9Z?t_GZ-aWwwEs%sjCahSLPAZ zR!OQ9nAH0%6RZ-;vrNImrjtlNT;cY_dCB+s9^N%4#oAJALa+O7-*MB43XJ3F`Q(mS zKRQc!8XMIl0|~uBTTFux>rVamc?IsAna*7^XZL&Wk*%c12R2k1;t!&j7Oy{6U)e1g zGvNm&GRukDGH%EBAVgFSY*ae5{)F-{5Q6IGhgkE;CzK@c$)|1^nAFS>{!)Zx$c+bn z86tYn;B&KAfOh^67N$J<2jbAkHbXr{9zQn3D$tlzP=Ue;m3>5q z#B3i^;e<-lw8nB+dFIxkXHiA*akSN+60i6);kGqOS(P1)%kBeRUD4LEUlX;GQV`cU zFnqN>1FSiLH;|oa5*ffTubvS_9w)yo@mINu0niL-0#no(_JY_}PiLEkXWal;57@tm zVmv4r?nd8L;c%P216-XhmB|(;?&7@TYYIGWcl@@X;|gHdt%=KBEKKZxQ>Cw9Aekn` z!o3}p4fwCcd1g(%|Bv%s-K|&gx0?R2c|navyBGVEPW@iN+K{EDuhxC|_N$j-#61t)0o*?IDX+7pux`}B;?B7|Ri zYE!JBUd7w=!Ul!AppKo3)!Kz;iP4tZpnbf$k5HPZ#ee<+&zkD`bs@miS`xCKF>DwAY8?2I5LknhR(WrVX^KEoi5iG zEA>_1oPRr|wC~jm`KRI2qv+1)flUt7$^&qp$Y?)WJ+_sjd%Zt^~?BSAb=TWb_>&=U= z=8IzkYyDvHY&BCN{rOumsf!m8ychK-Pd6*_JYK(h@rbT~JX_j;TUJnx#Bj}yU!;HK z%biA$E>AZXugI)AS{I*}BO0tP9#Bwy&LwD8_kTKHQMh?Sq42TI!3s}i>*Xo!%DR0r zX>Hnpw(Irm_)qVssU(k=EuX$Yg~>8=e& zAC5}CgE(8=S+_89!6ZHAX~VS2x~dptS9lUyyg(1m2YH86Tdz3i*Y+sqtb%2TXny^M zH^_y@I9=uHljGLJ=v?3hw?|aD7hmKa^pc*oS*~tPNNmVh&`~G<+c|L=fCT3-178aY zfXTFz?tq73I$!mMpoLf`rI(vYR)jX58a?MA8PS7}4<{Uoqbz=ry^_G8vJGmUr=E{r z{T20g(qFkd;+R=DLEjgt1%BtTf0h}5qBW`4FQ=O+fR>Oz2Pay%W;0VA1kDV;@JS~B z0d_a`r#3v$h51Y@-fG+Iom9RNFEH%u`VDZY)Qj_IItMah3L%(YYqp(Ow1U7loUkPI z>B@FaYaZ{w)irUG&bYj}`4(I9@r5~Q!@r?W@o z+mv^DkeHN)Y#M#0M6}=K5Ga$Ji7xzl`wst0)zv-df*D3wF#=PNM|r=*W1Cf2pvo2) z4?5Ma?1+33DiTD830Tzaqv<)4R#55Bzr=-Gp>9^8NO z@~iJ2-Fx=n@gpS76zFv<1B|A-5e^W!QC_7e-;`*)3J$xX4b0-8dj6?PI)%Oy{~LM6 z*&A{9dn1Xy)efvHrEe!h2)SY3glY+DFG8Yds{upsF<)a&nGSirCs|u%B?!u!O2l9I z$#z)&l>bw{1vsy}nqo}uk~|(ih-PFubefXVhC|b5?QV#45_ zrApM%`!K&|gxuo; zjrF71kGw*9U8oJ2wzo6}T|EBXjsTBA5~OS5TBFJ(x%SK1$@JpXWq*B9v)@Rfz)jGa zZC=>tYd^`|w{#P6%4m*;)gx5H;5ilCf7!-3KHWQ(^&qwaRakQ}Nva124XLsv$%A*W z{bcM<7Q=S@O5f>{;FlV6K#!a7`W07JD}|Rt8JL2|UPss&+2%2l1 zbVz!d_(r&g?4&pziBm33c`~8ht+8G)7;sd z>C8DyV;j3Pr7>dI2-O>szv}fx>+ZZp-rpIAa8G)vumKu#*NNh=11ciKcI7i z@k2}0WyHwe(evDJA&%XF(U!&LF3p^E-uM>j-bNe0*QrI-Wp$Td{_l(R23|{8KJ*SU zynA%j?;CVbv=q z;`Xq+x&KIjlQFbWe2V0q)gy! zbXwd(zK|gBd%aqFPy*6gQQacom>ni@yc#HTm+m^n2ohcpUn%FhzgjI*=8<{3=7V(m znL1J*uT9{_`(+Jp*i*RWf4JN2`bH98Yi1lH4wWC-E>{O!w=ikc?pCkpu6zr|BsWCjbksM9No+HLws9m)p2*co7{%r08kXa!q;u=;~hJSE!TOzH9C^Ub;m%7)lTWnfL7;}Hi* z_^CFpvRYh^uAVBbOC||)KU71RgKG`@qMX9uCCPWW69LOZIUjU_E&&$W4ETk%)YJ$F zAbu#taSxa05GcbP{SS+gLsZelY;^-b!fYD^{jl5>93GMdc#wowxeoZk58(W;F)pfP zt{E~~G6Bl_xeO_GL;*GoHbAO6pkmZQSDu8&hkCNWf-cGC@4#b3*aAtJO-4)OS$VyW z_~GwwW}7$5|>E+aMfJT?K7mEA#;XDLR)Bk z3$c{{jYO|#E3V#3UQLIFvZs08aS5k*aX6&5yjHgNO1_p`Q# zR0n{b&3iwSvCWmKVDD}klX4^N3bSlwMDmuB->}{wcskjmj9_vj;MZ-@r{XH|Wu>{e zTplr>>z75zYkC& zYKY+aRd7VLIXi^B+a|K&A^=`LFf;E~TboDn{a;btS;|~KJe+IUaCPlrt#fR=6nJ4( zcamY49bC@9a2=Sv%V0=2pf!rm(j+U+b%$IURMKBi@%lMR&(v6vQu}BC3fA8T0wxYD z+tEQ=osIgN*J?wIG5u*&}rHk9>u})5?MTXo9 zLfGmBvYc>$QJ#q0rOL?faI@j*5!Dwezq36bcizy+rhQaqRx^X2pw!Nn?-tXu`H|*S zJ$tiS{)naDN0k;Fj;2U`3?S15nw0rXMSJmH&g}R=Ke1UUVJ)??&%j7H0~fB0<073x zVZg3T#{?=yPH=02PUs-h#uIjBTj{=RW7fX=28UbI3V&UJPd>?jytL26g zwW-`qUM&Zzft>XLacU~!4q>E^MyY;^&#Wn(gomJTjUL}%=~jtO&IZ!3I0B;kNsOy# z^3rIC`=r(q;&G-9BeR8-iM^{(GDwcD#z`>35naQXFD^)x;xGL%8;(!>(uj9B7KOE1 zA8QYYa>i^%hmJSBXpUX;^me?=bNXKKbMmzfz5F z$+YJ+%bd@Te&}!v2YOj(f`cG}aSi-2U(hq#%52IbC?o`aHNpUI#(u677%%@B>4IJY zsgOH2EC)7%*l&q6(p#D*1P1vhw!VQAxXa)-uP&m&PK3boxfy%e5q5vLS7M1}G@mWq zq?m&C@pUeP#c1SYl)L=XNT)zsnw45ES(@ptAZe(e%;iIrXoo*XSy3y{(NLN?^on~(4?#g~c zaXLvzFL+J)C@6zFbXue8q3A+K`RORlgsgv@RFXevmBv#-Ed=Y6MnE^SgL^56oV36Z zS*ZkHPT8V*t;#g+c!STp4L!rZ+`jWFSTO#)^){D1(8Q~8%HJej(avKJvS#b)uNDS3 z4rBi`7<4eVF$w&r-G>pp1O_*&DP2*f(hBBA%3DA+7JF>weaF2cdYSJv7iNslb6keY zD24(q0iWUZA6~DS2rQY+6+V||Ra1v(8qv~&hJq92IEFfIixHD;N<&(6Ys!P{2_#Ml!evX`F%`9({d}4=~^fk%QIR{A4S{aeYj|?h}Q^ z((`?JfYDQWi+t4w|F(ixPFB4MIOv$9Qm|bzq@ZA+Mg|GwaJgm>bcy~uRQhVOLcu|Z za+suq=~5}M`PEw9=iFYNeE!k;4lZGf|0AT%6Q;P#AawJ!=?G>h1p3<8`LJBTGs0Ce z2?%aX32mNm>bC=?5`uask==QQpq{1;PqAnkLbI+}{Qx@6HxiNZa!;|e>Dfd*2Y%au ziV>g>>@`o9n@Q7)9xq&{By*Y1c6wDsy%4m=x;$2oWT zumvOwT}Is|%6C`b*EJuV$o?a#>X%25FM&3H-t;TE;Y1h?i0V6(__j!Cjb0^H7boR? zv{851`IPE17E6UjhCeyHG;O6rG`wdt@z$s9bv91d)b(5^$mK z+8$UA085*wfW4ZoC55%!HQOGOanY>ycY9o>x;3gtw*$BI)>p97-X#y38RdeA`E2xC zt&9;m!7Y$Zb{nUk@lY=LAYnu{^5rD51aJZy`7pS1IWx{!E#&gGahKi(&t|c`egZMf zNPCX*6YH8fWZE`X!}|$eU!l8eVdP6oa=jfd{VbFxgkZsd7OX ztwLg*%WSY#OX;#sja*{QQtk}%fn3f-UkCNsy*%amgoWVZU9$Lets&q9NM!GyBIU*$ z)d*k`P0rY?;+3(tj+T7 z>NVxbF6jBm4Vh?1JMFCx$>`tsw^Rx>s=26G<{LXZsht=tbNT7~y%u}h#y1owayKSpc& zt%$_q`4r79ookea^o^`7Nk(5iH``2hSPy* zQK-eK7e3DVn)iVnZCD<@G#e!m6riGw&W9r`Z|Qg6SkpsAOcL~!yIa0n)xmOn{EoNF4mM#ayC2GIn~5<*Eckk zc;fl>WX9LHB@c|+#R54QNLv#-VO!EBtD7C%ThMFjdAaE3hhek~05gQmM}A<%BWoB9 zQWQXTq9+A-49=JQb~L%r%sVOeBKt>Y-y41mybxPB+mQ@OFZ9tEW^|0j6fe&ee4lPW zqBZ4qEZD+q+N5saKGg?3%Hi~HJnA_pnSz8Qz)pb)e%r>st6QpU*if8K;Bl-fituwwiOb?N-iBA`6$s*xAaB*v6X0 zi#t7*++dSUfWsHYk?4k>y%cq!E^)Ic4fGrot}$XX4;J^}r?;atJYtxWwU+cIP0XDg zV>>rZ=i@;PtmtsKKvBIMb9i*LVh_91iIt83@_eXxYM~zuvt1^p7z37X&k9s1Y{5A1 zC1ZkeWx2a1*Yh$RGWDpY?SSNcr3Q|#%?FZgup3s8(FTM3AZ?j2fc230q*_XqV*vDBl3dLRwg9C7 zx%BAk1gSCn7Jv%W-Vjv1Iktf2@q0s%b*2~s?9#=khsD1&><}1a`r@tZS^@YP#@A$T z&d;wKQ*O*5B<0F)ged``#sjI)%^SLZvRX~wt>G+OAG+%4tGR}tKVM!u z-fYOBiPy8~>gY`$VT;-9SYArGK3w@Z_uK@7aK4$Jh^u~$dSLAa9iIH+gf8`5H)pTk z_+f_tph}Xdw9_?hlx(=6X-WItUtFBsqqJd(J4_)tm(eEWNJDc{Rv9L_rgf&Vh9}hc zz;#X>#vBIVF+!TO13kV@2;!i_AaIKAb-0!DwG1^p-6J~Iy(SXNP{Y$bqaqL2G@T4J zJl!r;tB0K?imp=4V1j*k!rh8kZ<{iYHazJrRjs#8nZ_EP@BtNfeLY)U6Cv|x!;?Ox zEYQX4YnoFB8=mqqMX#l}uTF<*)L|gLU(S!OiTh=!;puj&?Y#}#I+&lbarvUYsY)dgUK9?;U zVK2}~zAPI_rM2eCW4L;mVx4w?DV^$L%yNR{_m=1CK5jZhN*$`36f!ELAxR$%4CPxg zG1Wjb8EVF*OAh&|0x8{_#6>}sdIUJlMRZCQ*I&G5NjxpD%=pf27NhMrm^fWb3Ef9w z#nYez2DoQ%-y&z@VfMylZ%S`27B~t(CR^FBPq4s-COCvBw&s>Ppz0Y^!4J<9`g5Mh z-P6~*$D2ip-x#yc1uKMbjxX7>^aGLGfY z*kJW+!g$(ar}-_nhVP%*ERugy@WK|fV%|#i1Zt7AZJELeqAsXjUYcfD=yRA@?j#pe zhgoa}`>k5aPFhsPiS8h=co0FzS3?X3eW+5>hP3j{JUug%S=6}Dr|-_tjedSxG>T-Y z-gI%2ZkYQT)7KQr*B07H*9TLs_3@Tr*Q=QFSN~!Q)w9(d_xYAC^Sl&!{XW z4#56jCSQCZWj%(Nth!>`@awPq!i}$+s!{D+bB!H!7_C2D%uk6%jdEF4ALm7nY0mo{ zOfjZ$3hIq*Zo!qt;5hntq30iFlceQ$i#eZ-$X_}Cm>-Y`pXrw`XFpLLj98jK4H}c=7Y_)Pa}@cSt?+&lMw1GfvlW}1N%?+MI_*wh6~(I7 zp$0tR7Ng-cB0g+CkYnu8{v)B4@Ta{76oK-%V?XWXJ$m-?;e&4;Jc}@4$O0~0pnkoY9@A5NT>NKx%HSRNcWcoJKPCTI z6?X=VUj+JL@`pPlpd)5&H%JnP7De_Ge_y zk_n=>73p#E7w(f(k)v{UbQym{g+;Y_Ndw1O(bmamZ8_5<yA_@(_gOi)*Q@sQ5sZT*LN@SZ!CZ~MTZ=S zLEhG-I9D3qtvr+4sh>MY+o7L--gj#^g)ZyM1};*;GOg%ubRTHzi>m$p0}&tJS+`sqWDZc)<*4Ov$ z-upAY{CD{>SN(wAqo=I2B3J?_IXbjSdQEJyA}0~j;E%Q-uc9-5Q+i5TXq084?njko zsg8H**>tty?Lc1`l)R%x9zd)=rtw+9aOHw1iku+*`zZQkVX zf0r{izgXWsxI4q`D{pMLd6ApNxNJeAKxc1gc+kR${0AYtq<#vHJi)7ASmn(Fm07)e z`P#%Idt6X-r6{>gM-;IWWM|qS<$|%uSg&Bp&q&bb4`0$w$Z@?YoTT@&47w%}WrfX3 z_SB#;d1hIbsZ|XQmyH%9u^|}6#Iy#*C1`%6=D~uz&G~e(@s2fQ_^Q~s7QH(Nt4h{9r9)8(eFTNe|Z0C>ROEtRH>GH~M2tub=3@ zH59y{@0oXT1)U77a&o_FhK_a>NVZE({VJi(i+{6TBU+eb`W7`7%1_F_@_1c68FbQz z!z+kXEY#GnQhBdxIA_~972D9liXPXBGN(jEmYW!Qz&of+L3F*jJ<9ia^bH454^X!X zf^1jw=|`&zPd~anzg&WIN8SkS+Ku-zp;K}Eq9Ml#JvKm>#$5iIVnusT85rro7@$f*$*mCigb{e~cl48A-C>^zE?Ex_$c3P&6JFr9>SsOQ( zcC|3D-wUV1)cNY@;&jT#pLb8^({(<}pUi&R&|Y{QF81c{DOh=3hy3nTmR*!q5_=g~ zbv^1-_-<25D1S>wzT0{{rLx(l$B&kqKTprkXN&tk;R&|+G96y$m^fX~nXcYFT)v(k zl`}pgWo%(}`>og;4R-mnR%XCZ<63^N_wfgtSG&1J>wBrNQJrnEQ{(@FsTmseSJyEg z(lihg+jc0~YDP}-$N|-fY&54G;C!=w!Ij)$|Mamm{=DCw7=%G;yna@lA*Cs(i=BUL z89qP3=FaBFc0sB3;RoraI9+{tHe0<;LX%yCfhXxKurWV7Kb_%$o2c_ZJNL+352vt8 zKvD}K`rQBmswT|^YpVf5p^10>a41uU2$GwZTq!-D`9Z2diF<$9LFTmQ5`Ishw2lKZ zZTv}24d!Gofz*ECNT=!?{OH%%mg?`ebzvKxhIbX+OCZW4y2C>@%h;&>fnpi^IQ03u zBzk;I=i5IER)4QC(?qM;JHaA)}MFD~WX|0JVc(uMb z-H^Qb#c8UPyL|{Y#}Csg2_2+VxTO#!X-G|#{jFWWRkjNBaPcrkg2}eV!RDOxl%|Rp z#1L}6jAinSI!tyIX`ttO^TZkGpg((wA!uC+Yg!^b#KNRlAE-Ve32Boe4#v}BI7NdS zi-9B0-P$HE)4dWoDfEon?4)hbA)&-IPmT?LGQf8BpjSAMP$x9_SXE!1eLPu|^ zk&MiZ633KGKt)9K?vO_>zv!lvV6JaBmU>B7}w_kv(U)O6wnOO-kuem`Nz7-{GMkm8* zlgMn381`aG4gnp;w#{Yr+7HoZg)K?eMewMsdm_Z`J7q_u&yZ=%5A&3KS-NqP^lA^z z<2R_Z5tx(8IkSKEwRlsi1hc!~aZ}Ed-MZFlM!|M?n8HNa$vm6?G&|lm#iY#fH@p7T@8=w6y%4d!&8rf%N?RqxBtos7m2- zR7_m%)LA`xf~6Yy)}$CcOJwHZG&m7WRO_hue=#mrT|>#qvr}A&;^@8jEQxh!Y|lyl z4VfEcq-cPEGtY0z6Rmb=``?(liPPF{!|U0Cls<0UkXn^p5bR1&y$O4k_81JejS{vi zIc_!kmQR`}VtaUaN{_BRJ*R`Gllc+p(~4O~0?cOWk|0-eV)v++xWpQ^fPBf)rPyJu z*UObuvD7s1!$XR1P?b2kBaU192bn5$JR{}Vz^6GdJj(`$O?|SZM1^fD5Ns#cf=qO2 zVKGCSXKrW>s@R6%wgU4U85!_=6Nmd2jSXg7hHRFi*!-}oJuqSM(r0^0ja%$otiB{$ z%)>f7JfRD6_;f`&{@~MF{^DsD64JdTGmT*n-Kv_Ol&qN8oiwg2t7mZ;bokt8&OQUU>+LwrbzcZ`2utpW0xa^8KqOY;)u6!0) zes8mS1izn2cdHkBNmU;<*_T%G+v7R0YU`z^8evbgRO|2@P*SCW9BDuhE`EA(KI4=I zjjnLOK8s!oS9DZbi&%!iQk7oKvQl+Q$}GBqyI^3o1(L37j4weuyzbrv$WWK7Ccb~$ zKl3fr(ijMdIEYU4@wb8=a!KG;p&sg~F}F>S90;w{sYsrMrt3 zH@d3gj>e77#FnN-n2UGuie&N>EXzaj_tPrNE)I<@YB~8)4EBZDK$YD?q4?qVO2f+~dQ8vw^kqD)bqlJag&@k@0)yza^zq!cj zT!W?-Fdgo|EE`gi2!10NMO1efK_iw03TO!MYR)aTjk24k=ph}*J7QX7LQw?QFl5+C z2ptCVMlj8qVdkqWx z2=!pPgb(WJVx2!~tyF?zT}cjzIz_{FP|-Q3o<#KpTR zTm6tu?%le}X$Fsg6E8zvDm``Z{4cjA&wXeWlbRghFV`POTs~P!mZ6L{BuTvDAq!eQ zmR2qgSoCZ>ipvx#@R-0k;8(D2D<^d(gp@?Z6FPjym*hOM#p~pa0tW2>W2l?k2Cdf{ zq;P1zF2%c^j-yx!LpfKM#3d3;PnLrfs?|oeQ61BCM^ub725T!K_m15d7H}{K<9arT z89SwqLLgO*^Ufmic^k%T6sWnF;Bx)K%a?gXj}lC1%p4A6-C4fH$C1GY@l>f|-K{GF z53%AYXKd@fgyl-Lv|S(uv2sm}Z<^CKU9dE7d?OI6RTLD*ipi7PYEv@-H9HrIvt=@2 zT7k+f>@Tbr2;Qbti|fp@QBS4KclK7{4x-`UZ;$HV8Eo;fdwOt(Y3q@^jVzoR(b?rO zskm~=aPIcafs{)aMwEZCa0i&TqpEm{aEFoq!6*HCq3Q|&ymU}fWc8|YXYIo_ExX#n zYK^-R^<~EG_a+qly6@#*5n?4ITC%Jgw4lV$==*Kntd>9WZlrhDve-EDKHV8zF8v{ldLUIiMXTD&Lhy}VD;{zx^8|L(J4rE-}!g?0ti zDhq%5Nd(ot`;5LDbWrm9K|83Zt;)|wW_K8OG;@%$nEWx+!PXc@%H@HpJewYeLVY<~ zR|)`+3ZSZIk^Ln0S7aJ7_F02fK)G#d=}~gfvW73#=Q)~E%~E;cN&U^5Pj=pN>xyh6 zTLR}-6?gyh1zk+jR3Lb-?WJNKhGHK4C@z1HAO+2M`%ZG<)CZu?9DpJ`uB&G*YT68% zwrvEd0K4bthgl!^zw~N3)k9gXsZ#!Op`U&-h*yqr@?|6)%kxfYD0BNb9k?|S-+O{=Eo4M3WW{*8jG1flf7 zA(1E^->SK5V()R?&;~?y?zxs6Uu2}Z^6m|))S{^979ISTFX^QBB|e=UuZ=pkMo5|M+(Qd*FW+0ajvel{UwY9gK1zzq3scyWB+U92 zx>a(uJbH+|u4LCyN%3lgMX0Y3Sst^n>q>YXG1qlvypBTR^(DPlEAz2;(v|dF$*;zm zWi@?W=7~0Mr*!3$HvKQ^GlEb&&M6gr)ke=3pp}ak`jRq__Il-@Xo#Q)62HfCn7S33_yS}@4w?z+<)7pjwC7y*lYgDwDW zs6(z{gUYhzuDg;y0SuJAmU2HOfYHf>oB!c_P3{sU|9GfS=chV`0r0XhD5ir6ddw9s z>0V~D6FMRS)2@kaUNzd`XFv^GcD^+APB}g)mXUC4$gay5746wA5PIZ3Oc#9NNr;&k z6CP>`uNj7nReZ6-lnyvt#)=ci8H?3122@r$F9$F<+NJ=^B}d^>DRJ=F~_Ag%k*fn{&n~D zYkJm=CX_y!k$HD9J$<*HtzJC7pdgC4S4YcOl=x4pJ)Obj z8tU@q`~@BCy`@vS>8VuQy|*HQt;5n8>^1pr-G$LB=5#-H^UmPuHnk?yiQhwi%CAys z0#3IhZMoX%8T}q)hhD&SoE<-A9s1pZWN&#&2c$v)f?%`UP%8uKGK1;rcOLG_@Yn#O zVd&+@lneL!+wct|^-2}JU9#Aiu`MXoXpPrdyN{czn7|>?mo@cYt1#UdH5H=f9im3v zG02w6(zN5w2N>I%=JG;2R??myjQ}N=g{FZ2d9%p%Go(zJX&`u65oBADlQuX&`jTRr z?T6px>oYAe9=f$^XG@Q_xMdYzk#D^_k1E>B<77ti@bg9UUHM#>8@4ewrr6zPdAj^@ zMmCDGSkm)-M~I6}j1?w>6}wTeh*cxrIgZz7C_=SaO^?`)fp z%q9iR^~+%zYb#>P9;cy6`Sk1k|MTq0-ItHQ`s(TZXD{zPy!-U&{io!4KHq=JnE5~7 zJiIRz&8bS<{+Exxc|?RkX(#+i3`MCmR97%%%lY^QovSx4W$-&LWxQU?hOZMkC6`5< zC8iukVg~vg0oldtTj4LSx$fM_iAZVO6e!qRYdr^C=zBg2VB?Yju=$;jV=~(m`3^wi znBe(e55cqC;u*A@UH(}DP9P{ODeYBdVM?oN# zQFvsWwydxggHFmESAdWs_~zxj2p--Ld{B|rGfy%4SV$nJYz7P@nzMN;x0HAi%k)T6 z05uI{5T%y!^eLU<=2@wkfgq~@o_(`oOlfQ%Sr^`H257e@OvG3YsUR^J`j8>7*JiQJ zZ33}sA4ZU_(ybE~CGVHs?88&OQhD(0a(>LL^0P1u;R9TMc-YpDz*qXd))el`rUbk1 zTSA!NF4c6l-||@VS5)532y##{#wrJy5tId_VR4|`hqV9JSTv$-$-LHK$+TUsvt!K= zASuwsqO1V0cPAgf4VR|eIu4y4`|&sARZwQ$vn32}HT7MJuD_l66fb(J$Mu)*7Spr& zQNlJ^%`PWjVxjatVyXTiF<;Re4UI7Vz`_R5Inc`j`CaB6>MS>)WQ$lw=b2s7!lkh6&q1 z#Xe*W%ac>CWZ=%T7y5k94fU7j1%>I)3hw$;Eb;i&M{X{3G5uk79MEGcW+c@O;@bDx zqjWT<-L~R+t0=7Iw;rj>*Nle?OSL9uefnq$gQi?mN>+7-*nxkX)dhj63$!!z%bdw<|>$!|=*ed^sbUVO!0FEu_rRklYdpqjD>gN}8@b ze`aHufzd}YIk{Co9kQLh3mpCF^UB*w!%(C`pF3ENbhOxLS`f%Uzq~bg1gXsgb-2ZB z#*p?Kqq4j3j-U<@DzB(XcSDpxaBXS~Y=Sx%&B(msg#L}OdE-^~jGHW&4kf99yD}te zh>3qhJe>?8vAoz&3{*@s34okRG@aLRR#wM0@d%DZ^sNeEW&Q}_RVi(fRlhgCVI?K{ zI?OpFzEO|{7d)_5V?h>z0KpBfI&po3eY`>z=zTm#1&Q}s+b>rW1MT)GojmtOSDMuP z4qjjWhvdJCbRkY2nMCoOHk)r|M?XBhc*RSBUwKXe_W9|2gJ;{Qx2gGotv7QGTKk&- zIVuJq=n(h)KOGk!kYoGpD1q}$VQh*$Qg%c-?5BMzXzk2MkeT7tOC%yG!Fw2K0E|m* zBZue5Y=u|SVT#t&wo5E6=e6)r+i;W#DkT}Q6tX?^|1BX7(Wb+A@m!g*#V~v~*jV9l zOs6XozefSKz%Hn$)#J(vqgx{0#xP%vbrl{K9wYQvZUssP2YK51V5J=t- zMeT(8K-yw6X{Sx1njKPT2kF4rws#yqP|Jb49zB@0vExB8+(K}+zfm^=%yB%M2VyHh zQ}Y3>#M>zyUbiEWx1dL=d_?9i@)+YN2!=e>!$e6}D{iV|F#Iqqu4!j$BaL&G=Vfrc zT}kRBW+U)P`Iq`A@i<@`0~4`Z01QL`GnKr|2c=3E{#dc{dwxs`SV3~v=bJhNl?VJE zvQwoTQv_qkF1X|SmBj4q3fTUIWCl-EV~gLCnVV*rnn~Hh1Rz=4bQe%!Bd<1$0io_N z7l63tg_icSwMy{0k-_vSk%+;x?;^d2R+!@WnubpIY0K>-Z|!*e@9@Inri6lpD>>co zfg83V>6&RWps#=ki4r`~mz`5qNk08L@G4Lfej}0+#0b&kbYLdF@o1(VRVFU1SJ!q` zc8evU>|C2H(x^dC@XX`P)iq;&8=-5+&Zh5P!4+#=E4U_FfiCzdX(oC7p4Q>~Fd!8p z{9@GQKRG5;{w7o>n)D5#dLf!Q$PrcSC3Z7;6}R+8s9A>iDy*(1%)8cMB-Z*KS;o8? zGZxTVW+sj_N@A3urc*l@FZ3`H-u3l^T-tY&Ndj* z*CA7V2ExXS>eS%g5b29_#W4Zx>B5YL6JGle$Bo<4ORj52JfJUzc&V|r2F-rGYrBGk z4(k`uE%AtL_MaE@np+5^@lHO6NO7q;9E^bgbTKw~K&>!fT8>m4Ha!~^T^I>>M($15 zGfTkhsMKxavUAP4gWa@5WIYd9LeI`^(;Mq3N*IV6lqvjjW2XJxllec>OdH^%&FnZJmM+E}MDj!=yOT517 z`ZgtSeeAdFNxRpZ58`EtldLum2|OPa!HD?T>&|KJ5ZWoJns_9o@d<#Y|4ZCBC2!$viA9K~@=_wy?e_g)6`AhJ8mK(bJPePS-)zC0miv>qKtwYJw@v3y>bn4z4 z%n2YLo*#c{ciy^`R!k^hk_*oXs#;om*jS$=uUYwY;(s>NKvW(x|b)wJFs&a51wjdy5tTDjZXYQjp#; zAhFw9EsizdQIl4Yth@R)JVmaWryU9M`VwJ&P~m{zo+)|49ui59p_E@E2=$ttgCHKK zr)ipu(w+Ba-hH`2L=}te>3b~(p&oGIloAe~@87#vo&K3!CTIx!^$nf6&eKO!s8`CB zMa9;|<5sY`Jx5c3xq!DACHX=3V5n~p|Be@1*uVNRpKex^Za;3FF$>$2piT`m-_VNeziYKQ`cpmo~Bw(hlk|IkZ1RlPzLW` z{32R>V|00;EtJ`!b8>cn<@JUQZj18YPjaC-kGDz%*NSX3JKx0%AO8$wW>w;>1Iy70=< z!6S2FJF^Deb}86O4jQcin*JU_RX~Y(rph(U9{l|Q-GcPjKlz(+mlFXQekcYaMd>hC zIXjOgB9gF0*GU=^a!gC(j54bHAJ4h)kq-^s?PrA5t{psoE9Vq_M7!y9ukkN0e){y& zkJj@4e<7i1t`OBI=(_~1Q%MSuB*u5)N>PN}A^VL1HZXY+9tTJwOpr3(JVL_teH3vM zSS=5%$4jH^Ka~rZ=1-_VmF7%&JBPW=)-fbO;+irHY2#8)!m|#)zf697Ge4b84x->& zq{G+)=>L#%u{a?UN9OWOo*_f>ZaoaAR*9&~!K< z5jPZ}qQRNK@pR&vYVxTY%OVH0D*V2`-W>Bs`yIw_onZA27!y8QUEJYY8x08H7u(oY!E{tCTfwwDZt$S{fI}pHOv*c(t zGSz(B@_kway9A93JhZ7y%DhYEaW}qu<$Z%%DHRw^YxP(J0P;!X>idDC0cq5BF_{GP zppG4!q-N@I%k6?~{1jF$hHhLD8Pg_YdPf$JDf;{ai^quMtjnu?&mA$PZj6Du?cU$+ z1DYxkZfBpSRapd%P1Z=Gst&YA>FB2GsgELz)0(&rusAeVJ4bTX>smMk1_pGpA(B;D zd#D>lLs}XDZq3dvZc+yh3t4j*PgvCxPyM^8o@H?rTXoP5J22YWHEVMa++)haL}N2B zTwVu5H$XeEKT}O>x3C}1j31|CNfChqqO}9h&{cVgCAb6`-`wR9I4%*zZ4fYvF_itr zKz8xh;jSSJ$x52kGk&o7lW~&c(!@l&C^FEvTiZp@kjbhjlS2rkI z-O&LD%DFRwq^e;Lv4#*Uz6WdB!uzAtZ?&+ z%cXAfL2@^BIU=I8fpJFgAjBuWMs!_|eNvY$VTjxW4db&ZRO!$`f z(E$xSJ(}S_wwqpvuuwZf2`OM0~r#zKGBHNtBBelc3!QG}Gd+V-^6hbnG z8=lVphWiOI7_h_HT7FtZ@pAjlg6>;KbCMQU2dk@tlhP!ler2p8ojN|5E?&<7>fzxD zWo+Wp6_wLJ_>|5ha5;MmmnmCN$c5u+qtHO{DaQ*WfiXFrbyI_bcs44zo!^5od^L~E z5#0k=n4);V;mM5ZZsQq}|G1d0jt>u47Ym6Tlo@O-l7_fCFrDywg`+lNC0!exDTBb5 zIBR3WToJ@9Gc!f-8){PEsjadPsPSP&Ww&BXKCt3@X9@F&{onuT{B(Xamxu0Zu67vI zNy_;}`WSlFUHFY22c}$4c{y3mw&wKOgeh~(+GxP`5C>SyE;db%;T)R=R+H;UO(>$+ zj=}LBUZ}6wG$m<)h53+`miR>c;T4~TvBgp0E&M>#yRP^Oq?PlGQ;ZX?+om%wUxQV5;|SOSa>J$YcHQ+F6C%ih#Mke1 zUr3&b8)sH z@GxHMDo&SEDk(TBUgcpJkEayExzRZ!e0ZZ%Ji4Hl9p^{yW2WWe{@MBF-TRpeZ2Uf^ zdN@aH_Vhh0io+)|Pu8cNb+1!=zNZJpZj|kw9!)8W^g5@AH6n(CP{WF$&e+-YSjP@N zE_1+BWVw_+TTUgGlfC9UpSa!U;tI?-anH{lA0KlVsOg*&$)-{*VcQ@8E!j-ZiK;~1 znHyT-#~cm()dm9P3awf|1w&j32D&T|22KwYj>$_Aq&V@wqyq%(O|<)KTxQFG0$a*h zxOyHy4D61S(iDj)PM!FOMnc54g;=gMQE*sB2aiAKxK`ja*Q`8c;PA!X^5le`O2qG5 zd;um)Z^X^ADTR z=e~j&@dJ#e1Zacve6&71{0Qf(#1E6x8C^)A z!as}2?67wPWAb+`1TG(xkv8R?2H8j63{4|1`bLq0RAc62#b()vTCs z+kv6I4-?~W=E<6?5E&>+l{+SHpIu_G0j*Ff5;QKCKhSkR(dp_{sO}G*3DK3#W~sn5 z!Jsanjhe{ZF1n!B7Qul6_NjUqZv}@HRU7GP{X0k1uda#G%;gHNSM{VRvNWur7vW2txL4~x zpzAUT1t^L0zw&q)o_5wmBh$dCdjjFgtp7je7E&uerMA_Gy}H(*xa&pIaX5hNe7F9I@#lu#v(D_z@H3rW|p?z?EEUp&E87*x{90 z(OHrCf;Oc*=3`^Y)6mJX#8q?UF*P})iW$Wn>!CKSBd{WMn<%u|s6LL-_QPm1{GC7oa;4ch?h%Xk|qJ;88VkeB4 zZN1cRQnHT{LA-8jFm{dPk7;Sve(K}RskHj`SbJ7F zj+BmX<4mZvVOsaj4ReSm5w`5c>d2#)qdln-ZcA<)XwUa%sbMh+c0^Qwh5%W zFZ+!iOJ2|7EqMdGLTO-#A&7ylDJo37r2Lzgv!CW`s%=q%E#M+MKi3?rvNb_zO4!}Z z7crsER)IFMl6*;7@oE)?tBb#kxeP*q&-`gXz>s4q01Rmis!L55GI85^TOh_6NVtS> z$N7T3>|v-}#IcT4J1-=tMtA1f^Bi1ogLN)0B-v;M0n5#$VIOl;;ekAp1Ry_y0cov@ z?7ufZH1FH_^t4`8l!pO0x9?F1mZ-ovK>K+O&d^0-F8m z`bTJ)VCGPpkP;aQo`et!Sz+W2gBP%G^r0`A0u*$c5upWo+C%Zk{rVu z#A&rHz`c-;B=g^q#w|X=Z+^@Fp2u^Ftzt>k{Gvt9_i8{dLwwdEK^4~5{HTu7eDQYq z!>n6HDRB!K5efRC^it|FGF;hWO+dFx&7I-+JQsi4RXP%{*4<}z#-?60L zEr;RFfteD_gdbj2YepSDy2$7hK_u|}mKII$V>`aq1lZ-3pSPyMIH4I`Q!e|tLhPl4 z#G1RQPB-n{xnyxUipd7%#E&T_`I{hFuI8^v-cIk9$OV1M(Nd5{JK|rrA643R5a(KY z7AO~oZ@$~iPw9m7gWzlLc$m^GFR?ODpek{hVHu*K;upB_o3)|X{J^c}-=U6{G*AFTs)?}2Qc1AlU7 zS50~HhdYsndt(9}stqx>J=Igr(Tut%F7dD9m8VJDm9J&FC>9zj2d2Uhz(V!bqsvO$nOG(?ne`6rNZcU@5MUEOqnUOA);xPoBFbzd9sWeze zdw2QNk+9Ug-Q&nMJ8XroD*303=^$t_Q3IznxwcOK*%qc5$HR(tVxm!CZCjgc-b=(& zP1z;eId5ll;%F%h6ZRY9qGe|CaU91KjqMNXSApqk^znPxni2RKHk%xvXrpYW)nkH65KQo&EeEm_3ksDaH@24fuoPdNO{@5F} z%CN+>dOmL)LBNG*963nXHoqW6bGIwRHKU;o^HbE7+afplkV%#zG1d}`D)O)(vOwV0 za4|wrvQ1}l+kDO)_YB4w8|U3a%C!fExWN8oI!}ra9OsIrd!~xw_25MG$lt|kMQ<_Y z=FbgL?IX2fPp6a0hp*^$LwZ@uN1TAX8frJjt@NZ;E|9n8*PiP>Zl&O}!$a#4_F)~& z4)@x+?pn`~+hLSd`?k}Q3-y>%77dm)o%}P$UU^04Aq~-+T9uxV2>~(JY`(JPV!#&k z#NPKJ^v2E1qU9jMwA#(Si%e8?9Zm%pPwXqBCh3O)J=IwTmT8M~U%x-nG6sznMq7*F zWMbq~5hPF{Y{iLbxQ7(s%~A+F=2pBw)hUI(_H1pyK;tqVr>S;mH}s8`Nn_stjq_?s z&{c{|5NGIU<@46KYjC4~|mUCzXDa$(_oId&>FM8Q_9QB8YP{1v+nt42c)WXVAwtY`Bm4E71Lr7T;t zybHvz_|`*Q4wgRd2q=+zDJX!#q6QzG+_MDQCka4VCAqAVKc=CL%#?A^OO7E%DKz2s z#3rV)_1TFztlK}9LD*0z#~M(Cd4CFLjME}k(M_DW<~}E|wlg7)h9sn*c{nvm(++XN z9O=}sT5d3h+vGFbm(1S=IyvdmTGkrlWt-KzC$qEV+gbO#{@GF*AjTBb47Oi=1*85D zyg#zQe;_IP61&Fv*(`&nH(CQ)#2um0b#kAn*i&`9f!VlDj0q-A3xuT&OzxcXkXII z@Mpg{9uD_|ysOhADk?qVQ8gtZisq}vpm;B{}Uq1N!3zGj2K9I-f=(#h50*^K?!8z+cd`5&{ zkRe>3lO><{9JSwn@B!VbEIxXX;jFm zcX&kgqh|}$-kJZc(IrPaQ^kPaf56V?^nCvRv-kerZ63GY;P3e>m~+%hZtXU?yL-+a zHFfGFcANK2Vz2FF-@BHN4^2@vZzxhFsl=+=_itZ(fWZvr>+?J$B`dwry^SSu2EYIq z3PvccW7RV8Unt0Bfup;V^&cIi%xPtxaaL)N|?0R>OJR#45r#NH=w?*~z@0V2isxD!o2^Y|7Btg>V7Ad>^xP&8-DM%?~1Ib_b zZ_`cJ*mOcuoV+(WAeUo02g~FbqD-K#|3NYMd&{%WezU$G%6kYs9-V{Oqzyqqym12y z!fIRR&BwWEb~$dyEE*Hjtl0F7GUpCG3PwxU^fVkc(X=5d=o#~ECys2JP>76%L00WK zi9{DXnW@&C&=!4sKGHM)BQ(B4kKfThIR9t9`we+=bhJap02l!qGVy5u_{6vr#($Bv zwC7@TmWJ!>?3S4TgV|%{^Y&icnn*En2Hnov5Ma%r=HKjZo-g zb@k2i&1~`~x2`_pTNMxHKaa0mT@cztNW2Gb+4H3|cn*!A@?O)$X}au&25w1B7qc*a+t+D}IGLfTJm==4dA~7(26JpI@KINlWda9X)6B$zZE`}y=YX_BvT7#_4lnY{H z8ZXFB9RbYE9LojT6DEa0(GWjjLg6o-iM;M&60fqfl7L?(SNL1v7iOXZT!WJ6sUoO5 zV=Z1B(??_J>R8}fpxYslkmT{P>I@GB*_lQ+bVc386ZXL_wxti|v$0!TrYoIE6>WBY zQ`Duh7DR3Sw6o{_09UQ$7HK@MgVLTb|4a8x>pk34NdZW;=~tKM=T|5E-!Hf7C3gac zVIpzhX?2PoYIanWKB`(p_DNrU>(Sv!c5S)}djJ_UWy?35tH5DhPjHR+^?34Q^}V|u z1F8U0;^|*`gvS*#uEdV2GF2im#7qM|8BGqG<9(Y z^)p3o2lTTQe>=N9MusT8v31G}sWjJ_d!oM#YV7JkS74{%1YcaHAe6Li1*8i(GjmeB`2Z9LW)oi_7*l>dB-6vS#$35CASfPo<8Y(fNisGQKNP`Rg z2BEDLR3RvXCf3O=2Q>=WYwp5)l5#8yb_&q%-uwned!vG%c?pZ082j!S!5RI<#fCs= z>TcTD32@-?k21WwrE?~G5eAAw*l`G4iMHgRQ*6Q6VXsxAweFUw*}ljAtB+@9erp1u znTCY)-mHC5I{DVqd1Uas7H_(%V9=5xhYWoqK6*YXm{Tc|o5hByUX;ku*9j)FbNd4) z+nycashbeZ?p}nzK2X$ic$&inO%m zFh61mRjJ2fs%u$efZemf;zQ`WtWyOYuHGQSv}=%*O`Uj};;-wNLV(+I8lh=p00~dg zIw)I5-)!)qr^D!u9byxe+Y1s1PGF~RaJU?WbyEfQ#TR`s%A-PFkX9dsN~foOqUOG0 zr3Mjuu3G#fw~$T-*6bQqqHe`lFi_G_N%=UEEbDLf>b>3=yKaeU07MwBT< zIQl4u?)Tq??~uRtMvE=C@8EJ(tJsh1>@7YlOXp6IOnEsW&htD}9+DdxV*{A~R=oG# zu$~{LhCn0TWrm*3=JTM-IWI>C-f&@&&KrCvX17$>Sp-s+!o#T)#}7kl&GNJP?BX^~ z@z%)m?>hCPG@&~?HJ40pYe=z#fw|hyf=Tz2R{ZrEllGURUAKbA7t3FD(@pct;I$_8 zdOBWB-qy8pF`b@DHree`$b1G_Pe=;A<%&6I?TuX~6JtM;z-N0QS-+i~NwDmec|%yj@!NLA=RM5wsPtfAwn<@9DX3srE>Bn7LwUeP;1< zYf07c=^K0JP>vD}@e?)x;kO2WXaimL2+3>GqUHnR%Jyu<(U6~QcgOIRQ+eO@Q8lxG z4ooI=M33n+MutM-mO65J7Tql~X1hE|s0=*{MIKI9sL0W1Pnlu~SGBJiOOhUhI}MIj zdjO*nlD|$Lbj-Fp!vnyw=#~f`f?iQqLAnOTJ%5^K8c*uB%Ze8yF*P5b6@!%Qtm1np zn9U7H^o$wq8>bR?+5T{R0n2`^nV{bIrGZ2@aEn_rv66^d5K>)Xsu!D0l$@jQg`jI{ z>%^01<^&~xA~1Rbuo8ARs#F@?P1rn&$#8n$^z@6XqWtBEjE*2NOpW06KM%_yvMv(j zPdZ5L++#!zNAvUoH%BV^VKD`11eNHgMr8vy885^ka9K1|Y@2;OE45@k?1GLSXw-Ba zzFmT{+ZQem3n_vfQ*js6v<5a&-yQW?h!jM~b1HKugew|}O1{MT6~>NaL|*SWYmyQ} z7Hg^raXvj&ob8}Cjjx3Yik))1-;f(nt6cCxMUn$uKH}6q9Y^S;BQoX!t@DI6?MnZq zd1ir$#J~%uOU%NrrW1NznnulnJ-S1&XI_J-*bSAbryBM?RZy_ldXa6YB_-KW<--KuE&>0K@9vj2n=0=&)~9fXlrCz~U> zDZFT^rATrv_Zx1QW(mYFU6PTz;n*oAT|*B$WV8G@jV;f$DtZM*ygO$V`X$UVS>5!| z=(=Z`;_-{y#HBM||7`0-tqp>9B>H5uqLPYDWrOT^#MqS`i)(tXBt7=@_q<{&z16ic zxhjS`1`CQ8ma74}+5Mhbhh+;tj&XA)0r zBjb>f1(JtvBhV{?{0FK5Lq&ZSo3o?C|NWbFxPce%(M;iVN4GIV02&-w{H2Sj8AHU- z|4zIxLP`VTi3%eVxgr2ZDa5m|F3-7H;9 zx)5MC(dxud8NS52=93e!D~~OLR0PCU?-7*`r!0SZPysQHD-{29VW46JqP8pJ#nV|s zL+X({;%pe;d1dTtOq=cA!LIKv@#0&7TNqiwrYgQrUz^@G;BD(>>5diPCHv1F&6i`k zjv6i+LVHpRY`T&`iU&4?sOVfn*jHXzHcLm>PUsj0=+iw&4cRl^IPJ)B0n!KEfFpwg zUT>WHheWknx18rls^(dQ1Lj7pAT7O9V-;gSOz~L)uPGS3?y#F8+Snl6E0kd`f+Bs?d zUhVpUJjO0@gc+6Az-!966>ctJc7-aL@UZ&kfCpIr66jE2^N6v?IJ5|yE|+lZ@MG*? z>{+LaSk9GOy!6nigXl@n(AWrL-r98Uj$;VJrIH3VR}HJ1de|2qhlTyHTm4F1`W^ZY zA9c=``le#rMI+hE@(TUBQH{tQtVI{GTI-=|?!c&iGEfmR6vJGl#E|90cawahhrLjx z)HSSn-TwZH`ZJh=LH1P@vgBDVp2a^?A+<6u@T1H9S# zhvn>a|1-0?fholh;_V0saGdC2P_ivh27-G+{!gcGUuN;KHE@cxRsavgc5=zkC<9le1+T7@U zK~H4;w4Bq+R!uD&qGXylB15)S0;tF}JuJh?qx7b$-pHeSr5r}_C7I<-ne-ywt5;N; z?-f3s%7gV50J1V-a|BbAL}v^WE_}dFAfv}#gPQF{7YDM|zvy-n+@j%|$Y`Su_&Ev0ek*NFy>6+H{j;o@F3qSIT zL-;#x_w4QRa(?>Va`U(G#l>{tA8m|Vf#<%&yZ^;lFlp}ZY0z2!E4qidrs{j(fd729 zcr`{qet0ZA5PVCXy1Tu0N4^PgxiQOTGG0?fdkoce31So0`0rds10$mU zFi{DQeB2b7HL4bL$q7mjBceKwhnUrL*XU482d1z)(kNVLVQd9B%x8s=9xW@WRi1~d zBy=Ax5qHcifC`I(0?zoILg9OrV606GVpu`2)lrfCB?EE@UZ!v(MyFpgQkrYjnT1E* zQ>~%|Na;6-2wr_yGV>gNs(d%8j4^hjV{*5ttop`4rZRUpq@r>A@v3Jp9y zjx52w`(h7LrfONEM0jXy)5_RL`L#JEjt7gZQ>{qv7&W5u08@JEd?Zs&XjqTN>(RmG zf?gm5{rF!B58VYOEztUqyB|)}mDb0$hR537i;axn=nsGRgV4}ZcrfU2b2*8_4K5wn z7L1xDAglbEE$Eq1e4BHu1f!F25CYWn4>21N(zE z+lvm8Y4^^qY=79OrJ>GmC*ACJ_J_Tv^stUGbFh?d7xbq~Z=S#?6|&llXIP2|n6Dca zm{s#93i|XXD};zTM!e+LyZZwcBj|F5*+t=zcTtauXDuYfOb>MG0(^!vmBEm?R~Kl+ z4O)=n)gdHAb#R22S0SfOCpRT#Tcfm{?Nn1ltK5lxoTJgX^xe9cmy@x zXVYzi)roleFfQ>P_`za4zrrs5845PV--W&3Nm`91etw)6#WOsn{?!$&Iyk~cRU+-Q zxm>Xa$7OKVjZ}YKD@%wPq!+a*{$&tQnX-%Jie4Z-QiS>nqE>ea1HmR1%Sain zOXkOmofZMO)&ut4QDCxSMpybAyw#dmL_s0ZeYdAC*|X(mI;q$e(ut=l$76m83~!T7 z+`7W=Ba4f0H~!E+nylIK`a$|8`{cE-&jc&J9bb&b^5*htI=Q5LW_tWu%3O|q=b{m# zN6Xa+GwVtks*iYgL?s8A6g=%nzbw=T9J5md+jw_Gl}!G)Tq!7diEgx6j+9v1gpgZ1 z!X#dg2oZfXd$XWz1)!h*!FAOB&k5t%a!y-MloFf18zYJ`nk*MY-e!$o)|>HS2F7Ng;d0r z!)8SHon!&{W?e{wF3?Uq*_r~g4rG>}`1CJbPyM99Gk!XRzfeRZed>JJRIWUTPRbrt zk%LagD>EixiVBaP_lgQ0AkIJ=6YyL@+0@bLhEX1Tb?-jmX1%0^DbgZQAGT-vV1p0e zyB8Jx+_P^Zs?p?;vJ~8uBdT3(k;!Z9xYQ&XBH0GeAUvYv?Rh)S8n1hC*QpdSi?0_F zYlUwVV&sn~!l-jW8Eal#$LwXMcF~){s4B=1qTN@=uYRVt ze)8{7qQzAI9Xlj#6w~r1%VaKzV=B|lu zL@KGbqgAGxfX!+wA?!aoq!AoCKL8WX{g}ldwg3=uAu57y0*^x>0{|M`vq6ObP_}?g zh`KskSnlnGV9NtU-mMM?nCw>rJdxHAE{a5;1C=pz)Tc>eES6&2Cr~KSm;vzi9*+sM z_#n&xa;_r`6DZQPbch78eJTaR0#uIZ3>af6rW2rvk3WP$u{EtwPJk{!ivh$24>1ia z1fVcpb%KL!^G9GKN(3N3EY@u62}kBIZ(4lmEzm>084m68Q68+Ox-Zw2mOQ7htm%jG z@_T$tM*VBvjiJU;Y-oU$Hxi!YFiIR6<`_{Db1gxJz?#fv11^5j6C-$fC748F1~aD= z5Sd!ut%rdRJgx*7{8SeYE6Yw)<|MPgT;PchNy?v8X`u(yr|;-qD5-=wK&_i(S<(MJ zw5Q4x(Qsx$Z*?jNCl^c=W5=B3AZW8*_!2m9%%agWv8>7wb(8Ex4@7M9FR-k_$$3p1!7OTRBl2c(Cr z@%X`1n_$7QKpYYKeNtA&AAL|VZ4AfHfaeD@h))fjg7GWf3&;%j(mQ1?+EefceV^SX!r<`ykIhIa} z1OpCP1vDSK7+-+dTMj@5_WYY9Sfs2f1d{AjqOG&5cM=k9knHL$XjPp)PPEtNDFyNR za7ilT9%&iAYWVl$=3G!nW_rqT=;IMr5%+~v!C8J{h9nNSeg zB8SjQ6rhMTUI0@aki(Ocr8~P$M_;4m&~*ry1O405ARD914X=_Q?e|H69If}}0XN?# zes==jn*eFQPYT!v>@NatzE}Km=H8nF;$@a7&=p$jOg$!8R4=kD=*QbRV^|8S)4lr? zoLK(6{*D$?S`CvmS&3-737Ut=tqnSpq!jF&-`i%mOq;IiQSvH1)7)i32QTPi2;5

      K3X7PhKB{N*yl^M9LR^0 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 diff --git a/Box54346/vendor/phpstan/phpstan/phpstan.phar.asc b/Box54346/vendor/phpstan/phpstan/phpstan.phar.asc deleted file mode 100644 index 6da5bd6a4..000000000 --- a/Box54346/vendor/phpstan/phpstan/phpstan.phar.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmPjlIQACgkQzxoQjQ56 -5yB1xQ/+Kz+VRo1rx8OsL3lOZhbmGalg8QC1+r9SfoBI2jxi/IqG4olCH1b9yXiE -xaJU9xC5H+258a1JtfeUszm0zXgt/CHIHSVq3VAMlEajMbOHDSy7i9GrRA9OmG0H -5AbwB9tql4qZ0cj1SriS2j8VolUjb1C1aSJNAwMbBWbd1QlZqGLJLgo0rvVnN71h -kK5aYSZzV6XcbrJpNwWNjI9KNhbSlwHfWvsl2oW7Pl/ydyaWY+ZmL+i9MOT+TAuu -jJFzKY98HQk3ESOpRn2wg0tKU9qzzl5d5/3P03iY/o0VCHnj8aNSdXy+6aBS81n4 -KPvBRclcwsncmBB4HNZxOpExVR2flaUM21ebSnmVv7Zofjcl/W+h49lrEAWFBjgy -PkdAjlKSPOUYgqSSftKitDHFXtNOYi+qNot0gPEcDezWVOwWY/UorqL0V/PQp4bI -SCKnkgw4SWDFGFY3R/m7qet0oomOvp6sTJZb/B37GZ6l9KKu4lXLsS8XRXmCGzTW -Wu/taFkP35LYDQ9Y+HNzYXzNKFalCbJNj1Qdx31OvthBfK3/Jk0gG1YRrE3+0sAa -J3qJX4nC/Zm7oK9wj5CvKMTS9tewbOBLgYNF1JuI2dlrhnc0VZXCdvg3M8SjI1zH -5752T9NuxK5ot1i7TPcPHj8ln4t35aUT8c0f9S7ruFS0icobdyE= -=SwMZ ------END PGP SIGNATURE----- diff --git a/Makefile.e2e b/Makefile.e2e index 38cb9329a..34f0cfcfc 100644 --- a/Makefile.e2e +++ b/Makefile.e2e @@ -54,6 +54,11 @@ E2E_DOCKERFILE_NOT_EXT_IMAGE_TAG := local_box_e2e_dockerfile_no_ext:latest # TODO: see https://github.com/box-project/box/issues/839 E2E_DOCKERFILE_NO_EXT_DOCKERFILE := Dockerfile +E2E_COMPOSER_INSTALLED_DIR = fixtures/build/dir017 +E2E_COMPOSER_INSTALLED_OUTPUT_DIR = dist/dir017 +E2E_COMPOSER_INSTALLED_EXPECTED_OUTPUT := $(E2E_COMPOSER_INSTALLED_DIR)/expected-output +E2E_COMPOSER_INSTALLED_ACTUAL_OUTPUT := $(E2E_COMPOSER_INSTALLED_OUTPUT_DIR)/actual-output + ifeq ($(OS),Darwin) SED = sed -i '' else @@ -214,6 +219,18 @@ _e2e_dockerfile_no_extension: $(DIFF) $(E2E_DOCKERFILE_NO_EXT_EXPECTED_OUTPUT) $(E2E_DOCKERFILE_NO_EXT_ACTUAL_OUTPUT) +.PHONY: e2e_installed_dev +e2e_installed_dev: $(SCOPED_BOX_BIN) $(E2E_COMPOSER_INSTALLED_DIR)/vendor + @# Packages an app with dev composer plugins + $(SCOPED_BOX) compile --working-dir=$(E2E_COMPOSER_INSTALLED_DIR) --no-parallel --ansi + + @mkdir -p $(E2E_COMPOSER_INSTALLED_OUTPUT_DIR) + php $(E2E_COMPOSER_INSTALLED_DIR)/index.phar > $(E2E_COMPOSER_INSTALLED_ACTUAL_OUTPUT) + mv -vf $(E2E_COMPOSER_INSTALLED_DIR)/index.phar $(E2E_COMPOSER_INSTALLED_OUTPUT_DIR)/index.phar + + $(DIFF) $(E2E_COMPOSER_INSTALLED_EXPECTED_OUTPUT) $(E2E_COMPOSER_INSTALLED_ACTUAL_OUTPUT) + + # # Rules from files #--------------------------------------------------------------------------- diff --git a/box.json.dist b/box.json.dist index 7520e7b47..cda4ef6a9 100644 --- a/box.json.dist +++ b/box.json.dist @@ -16,6 +16,7 @@ ], "directories-bin": ["res/requirement-checker"], + "exclude-composer-files": false, "compression": "GZ", "compactors": [ "KevinGH\\Box\\Compactor\\Php", diff --git a/fixtures/build/dir017/.box_dump/.box_configuration b/fixtures/build/dir017/.box_dump/.box_configuration deleted file mode 100644 index 9bf229ecd..000000000 --- a/fixtures/build/dir017/.box_dump/.box_configuration +++ /dev/null @@ -1,221 +0,0 @@ -// -// Processed content of the configuration file "/Users/tfidry/Project/Humbug/box/fixtures/build/dir017/box.json.dist" dumped for debugging purposes -// -// PHP Version: 8.1.14 -// PHP extensions: Core,date,libxml,openssl,pcre,zlib,bcmath,bz2,calendar,ctype,curl,dom,fileinfo,filter,hash,iconv,intl,json,mbstring,SPL,session,pcntl,standard,mysqlnd,PDO,pdo_mysql,pdo_pgsql,pgsql,Phar,posix,readline,Reflection,mysqli,shmop,SimpleXML,sockets,sodium,sysvmsg,sysvsem,sysvshm,tokenizer,xml,xmlreader,xmlwriter,xsl,zip,gd,pdo_sqlite,redis,soap,xdebug -// OS: Darwin / 20.6.0 -// Command: /Users/tfidry/Project/Humbug/box/bin/box compile --debug --no-restart -// Box: dev-main@4a0e146 -// Time: 2023-02-13T09:39:31+00:00 -// - -KevinGH\Box\Configuration\ExportableConfiguration {#240 - -file: "box.json.dist" - -alias: "box-auto-generated-alias-6c7d79a985e2.phar" - -basePath: "/Users/tfidry/Project/Humbug/box/fixtures/build/dir017" - -composerJson: KevinGH\Box\Composer\ComposerFile {#244 - -path: "composer.json" - -contents: array:4 [ - "bin" => "index.php" - "require" => array:1 [ - "php" => "^8.1" - ] - "require-dev" => array:2 [ - "phpstan/phpstan" => "^1.9" - "phpstan/extension-installer" => "^1.2" - ] - "config" => array:1 [ - "allow-plugins" => array:1 [ - "phpstan/extension-installer" => true - ] - ] - ] - } - -composerLock: KevinGH\Box\Composer\ComposerFile {#227 - -path: "composer.lock" - -contents: array:12 [ - "_readme" => array:3 [ - 0 => "This file locks the dependencies of your project to a known state" - 1 => "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies" - 2 => "This file is @generated automatically" - ] - "content-hash" => "d81279cb2a39d4658ba9a88f221c4c0b" - "packages" => [] - "packages-dev" => array:2 [ - 0 => array:14 [ - "name" => "phpstan/extension-installer" - "version" => "1.2.0" - "source" => array:3 [ - "type" => "git" - "url" => "https://github.com/phpstan/extension-installer.git" - "reference" => "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" - ] - "dist" => array:4 [ - "type" => "zip" - "url" => "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" - "reference" => "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" - "shasum" => "" - ] - "require" => array:3 [ - "composer-plugin-api" => "^2.0" - "php" => "^7.2 || ^8.0" - "phpstan/phpstan" => "^1.8.0" - ] - "require-dev" => array:3 [ - "composer/composer" => "^2.0" - "php-parallel-lint/php-parallel-lint" => "^1.2.0" - "phpstan/phpstan-strict-rules" => "^0.11 || ^0.12 || ^1.0" - ] - "type" => "composer-plugin" - "extra" => array:1 [ - "class" => "PHPStan\ExtensionInstaller\Plugin" - ] - "autoload" => array:1 [ - "psr-4" => array:1 [ - "PHPStan\ExtensionInstaller\" => "src/" - ] - ] - "notification-url" => "https://packagist.org/downloads/" - "license" => array:1 [ - 0 => "MIT" - ] - "description" => "Composer plugin for automatic installation of PHPStan extensions" - "support" => array:2 [ - "issues" => "https://github.com/phpstan/extension-installer/issues" - "source" => "https://github.com/phpstan/extension-installer/tree/1.2.0" - ] - "time" => "2022-10-17T12:59:16+00:00" - ] - 1 => array:16 [ - "name" => "phpstan/phpstan" - "version" => "1.9.17" - "source" => array:3 [ - "type" => "git" - "url" => "https://github.com/phpstan/phpstan.git" - "reference" => "204e459e7822f2c586463029f5ecec31bb45a1f2" - ] - "dist" => array:4 [ - "type" => "zip" - "url" => "https://api.github.com/repos/phpstan/phpstan/zipball/204e459e7822f2c586463029f5ecec31bb45a1f2" - "reference" => "204e459e7822f2c586463029f5ecec31bb45a1f2" - "shasum" => "" - ] - "require" => array:1 [ - "php" => "^7.2|^8.0" - ] - "conflict" => array:1 [ - "phpstan/phpstan-shim" => "*" - ] - "bin" => array:2 [ - 0 => "phpstan" - 1 => "phpstan.phar" - ] - "type" => "library" - "autoload" => array:1 [ - "files" => array:1 [ - 0 => "bootstrap.php" - ] - ] - "notification-url" => "https://packagist.org/downloads/" - "license" => array:1 [ - 0 => "MIT" - ] - "description" => "PHPStan - PHP Static Analysis Tool" - "keywords" => array:2 [ - 0 => "dev" - 1 => "static analysis" - ] - "support" => array:2 [ - "issues" => "https://github.com/phpstan/phpstan/issues" - "source" => "https://github.com/phpstan/phpstan/tree/1.9.17" - ] - "funding" => array:3 [ - 0 => array:2 [ - "url" => "https://github.com/ondrejmirtes" - "type" => "github" - ] - 1 => array:2 [ - "url" => "https://github.com/phpstan" - "type" => "github" - ] - 2 => array:2 [ - "url" => "https://tidelift.com/funding/github/packagist/phpstan/phpstan" - "type" => "tidelift" - ] - ] - "time" => "2023-02-08T12:25:00+00:00" - ] - ] - "aliases" => [] - "minimum-stability" => "stable" - "stability-flags" => [] - "prefer-stable" => false - "prefer-lowest" => false - "platform" => array:1 [ - "php" => "^8.1" - ] - "platform-dev" => [] - "plugin-api-version" => "2.3.0" - ] - } - -files: array:7 [ - 0 => "box.json.dist" - 1 => "composer.json" - 2 => "composer.lock" - 3 => "expected-output" - 4 => "vendor/composer/InstalledVersions.php" - 5 => "vendor/composer/installed.json" - 6 => "vendor/composer/installed.php" - ] - -binaryFiles: [] - -autodiscoveredFiles: true - -dumpAutoload: true - -excludeComposerFiles: true - -excludeDevFiles: true - -compactors: [] - -compressionAlgorithm: "NONE" - -fileMode: "0755" - -mainScriptPath: "index.php" - -mainScriptContents: """ - \n - * Théo Fidry \n - *\n - * This source file is subject to the MIT license that is bundled\n - * with this source code in the file LICENSE.\n - */\n - \n - echo 'Everything is fine!'.PHP_EOL;\n - """ - -fileMapper: KevinGH\Box\MapFile {#247 - -basePath: "/Users/tfidry/Project/Humbug/box/fixtures/build/dir017" - -map: [] - } - -metadata: null - -tmpOutputPath: "index.phar" - -outputPath: "index.phar" - -privateKeyPassphrase: null - -privateKeyPath: null - -promptForPrivateKey: false - -processedReplacements: [] - -shebang: "#!/usr/bin/env php" - -signingAlgorithm: "SHA1" - -stubBannerContents: """ - Generated by Humbug Box dev-main@4a0e146.\n - \n - @link https://github.com/humbug/box - """ - -stubBannerPath: null - -stubPath: null - -isInterceptFileFuncs: false - -isStubGenerated: true - -checkRequirements: true - -warnings: [] - -recommendations: [] -} diff --git a/fixtures/build/dir017/composer.json b/fixtures/build/dir017/composer.json index 0bb88ac7c..d62d6cb25 100644 --- a/fixtures/build/dir017/composer.json +++ b/fixtures/build/dir017/composer.json @@ -1,7 +1,8 @@ { "bin": "index.php", "require": { - "php": "^8.1" + "php": "^8.1", + "nikic/iter": "^2.2" }, "require-dev": { "phpstan/phpstan": "^1.9", diff --git a/fixtures/build/dir017/composer.lock b/fixtures/build/dir017/composer.lock index 677608add..0548fcf3e 100644 --- a/fixtures/build/dir017/composer.lock +++ b/fixtures/build/dir017/composer.lock @@ -4,8 +4,59 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d81279cb2a39d4658ba9a88f221c4c0b", - "packages": [], + "content-hash": "9e21f6cdff196792db041ce08ffaf807", + "packages": [ + { + "name": "nikic/iter", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/iter.git", + "reference": "d1323929952ddcb0b06439991f93bde3816a39e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/iter/zipball/d1323929952ddcb0b06439991f93bde3816a39e9", + "reference": "d1323929952ddcb0b06439991f93bde3816a39e9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/iter.func.php", + "src/iter.php", + "src/iter.rewindable.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Iteration primitives using generators", + "keywords": [ + "functional", + "generator", + "iterator" + ], + "support": { + "issues": "https://github.com/nikic/iter/issues", + "source": "https://github.com/nikic/iter/tree/v2.2.0" + }, + "time": "2021-08-02T15:04:32+00:00" + } + ], "packages-dev": [ { "name": "phpstan/extension-installer", diff --git a/fixtures/build/dir017/expected-output b/fixtures/build/dir017/expected-output index c168b4865..aad043373 100644 --- a/fixtures/build/dir017/expected-output +++ b/fixtures/build/dir017/expected-output @@ -1 +1,2 @@ -Everything is fine! +The package "nikic/iter" is installed. +The package "phpstan/extension-installer" is NOT installed. diff --git a/fixtures/build/dir017/index.php b/fixtures/build/dir017/index.php index f4230e5a5..49b0891be 100644 --- a/fixtures/build/dir017/index.php +++ b/fixtures/build/dir017/index.php @@ -12,4 +12,20 @@ * with this source code in the file LICENSE. */ -echo 'Everything is fine!'.PHP_EOL; +use Composer\InstalledVersions; +use function iter\toIter; + +require __DIR__.'/vendor/autoload.php'; + +$packages = toIter([ + 'nikic/iter', + 'phpstan/extension-installer', +]); + +foreach ($packages as $package) { + echo sprintf( + 'The package "%s" is %sinstalled.'.PHP_EOL, + $package, + InstalledVersions::isInstalled($package) ? '' : 'NOT ', + ); +} diff --git a/src/Composer/ComposerFiles.php b/src/Composer/ComposerFiles.php index f63bb4366..f6126e4a6 100644 --- a/src/Composer/ComposerFiles.php +++ b/src/Composer/ComposerFiles.php @@ -80,5 +80,6 @@ public function getPaths(): array public function excludeDevPackagesFromInstalledFiles(): self { + return $this; } } diff --git a/src/Composer/ComposerOrchestrator.php b/src/Composer/ComposerOrchestrator.php index 39d0efec3..f8b659581 100644 --- a/src/Composer/ComposerOrchestrator.php +++ b/src/Composer/ComposerOrchestrator.php @@ -24,6 +24,9 @@ use Symfony\Component\Process\Exception\ProcessFailedException; use Symfony\Component\Process\ExecutableFinder; use Symfony\Component\Process\Process; +use function file_exists; +use function file_get_contents; +use function file_put_contents; use function KevinGH\Box\FileSystem\dump_file; use function KevinGH\Box\FileSystem\file_contents; use function preg_replace; @@ -77,7 +80,8 @@ public static function dumpAutoload( $composerExecutable = self::retrieveComposerExecutable(); - self::dumpAutoloader($composerExecutable, true === $excludeDevFiles, $logger); + self::removeDevInstallPackages($composerExecutable, $excludeDevFiles, $logger); + self::dumpAutoloader($composerExecutable, $excludeDevFiles, $logger); if ('' !== $prefix) { $autoloadFile = self::retrieveAutoloadFile($composerExecutable, $logger); @@ -140,6 +144,62 @@ private static function retrieveComposerExecutable(): string return $composer; } + private static function removeDevInstallPackages(string $composerExecutable, bool $noDev, CompilerLogger $logger): void + { + if (false === $noDev) { + return; + } + + $composerCommand = [$composerExecutable, 'install', '--no-dev', '--no-scripts', '--no-plugins']; + + if (null !== $verbosity = self::retrieveSubProcessVerbosity($logger->getIO())) { + $composerCommand[] = $verbosity; + } + + if ($logger->getIO()->isDecorated()) { + $composerCommand[] = '--ansi'; + } + + $removeDevInstallPackages = new Process($composerCommand); + + $logger->log( + CompilerLogger::CHEVRON_PREFIX, + $removeDevInstallPackages->getCommandLine(), + OutputInterface::VERBOSITY_VERBOSE, + ); + + $composerInstalledVersionsPath = 'vendor/composer/InstalledVersions.php'; + + if (file_exists($composerInstalledVersionsPath)) { + $composerInstalledVersionsContents = file_get_contents($composerInstalledVersionsPath); + } + + $removeDevInstallPackages->run(null, self::getDefaultEnvVars()); + + if (false === $removeDevInstallPackages->isSuccessful()) { + throw new RuntimeException( + 'Could not remove the dev packages.', + 0, + new ProcessFailedException($removeDevInstallPackages), + ); + } + + if ('' !== $output = $removeDevInstallPackages->getOutput()) { + $logger->getIO()->writeln($output, OutputInterface::VERBOSITY_VERBOSE); + } + + if ('' !== $output = $removeDevInstallPackages->getErrorOutput()) { + $logger->getIO()->writeln($output, OutputInterface::VERBOSITY_VERBOSE); + } + + if (isset($composerInstalledVersionsContents)) { + file_put_contents( + $composerInstalledVersionsPath, + $composerInstalledVersionsContents, + ); + } + } + private static function dumpAutoloader(string $composerExecutable, bool $noDev, CompilerLogger $logger): void { $composerCommand = [$composerExecutable, 'dump-autoload', '--classmap-authoritative']; diff --git a/tests/Composer/ComposerFileAssertions.php b/tests/Composer/ComposerFileAssertions.php index 967630afe..e9f659fc2 100644 --- a/tests/Composer/ComposerFileAssertions.php +++ b/tests/Composer/ComposerFileAssertions.php @@ -5,9 +5,23 @@ namespace KevinGH\Box\Composer; +use PHPUnit\Framework\Assert; + final class ComposerFileAssertions { private function __construct() { } + + public static function assertStateIs( + ComposerFile $actual, + ?string $expectedPath, + string $expectedContents, + array $expectedDecodedContents + ): void + { + Assert::assertSame($expectedPath, $actual->getPath()); + Assert::assertSame($expectedContents, $actual->getContents()); + Assert::assertSame($expectedDecodedContents, $actual->getDecodedContents()); + } } diff --git a/tests/Composer/ComposerFileTest.php b/tests/Composer/ComposerFileTest.php index 8248922b6..50909e2ee 100644 --- a/tests/Composer/ComposerFileTest.php +++ b/tests/Composer/ComposerFileTest.php @@ -28,15 +28,24 @@ class ComposerFileTest extends TestCase /** * @dataProvider validInstantiatorsProvider */ - public function test_it_can_be_created(Closure $create, ?string $expectedPath, array $expectedContents): void + public function test_it_can_be_created( + Closure $create, + ?string $expectedPath, + string $expectedContents, + array $expectedDecodedContents, + ): void { /** @var ComposerFile $actual */ $actual = $create(); self::assertInstanceOf(ComposerFile::class, $actual); - self::assertSame($expectedPath, $actual->getPath()); - self::assertSame($expectedContents, $actual->getDecodedContents()); + ComposerFileAssertions::assertStateIs( + $actual, + $expectedPath, + $expectedContents, + $expectedDecodedContents, + ); } /** @@ -58,20 +67,30 @@ public static function validInstantiatorsProvider(): iterable yield [ static fn (): ComposerFile => new ComposerFile(null, []), null, + '', [], ]; yield [ static fn (): ComposerFile => ComposerFile::createEmpty(), null, + '', [], ]; yield [ static fn (): ComposerFile => new ComposerFile('path/to/foo', ['foo' => 'bar']), 'path/to/foo', + '', ['foo' => 'bar'], ]; + + yield [ + static fn (): ComposerFile => new ComposerFile('path/to/foo', 'foo'), + 'path/to/foo', + 'foo', + [], + ]; } public static function invalidInstantiatorsProvider(): iterable diff --git a/tests/Composer/InstalledJsonFileTest.php b/tests/Composer/InstalledJsonFileTest.php index 50bb461e7..c765c2d62 100644 --- a/tests/Composer/InstalledJsonFileTest.php +++ b/tests/Composer/InstalledJsonFileTest.php @@ -11,5 +11,10 @@ */ final class InstalledJsonFileTest extends TestCase { + public function test_it_can_exclude_dev_packages( + InstalledJsonFile $expected + ): void + { + } } From 9affcd2fd0db8bd3fcf87b82a0b28cdeaffb1d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Thu, 16 Feb 2023 23:32:08 +0100 Subject: [PATCH 03/11] cleanup --- Box54346/.box/.requirements.php | 11 - Box54346/.box/bin/check-requirements.php | 24 - Box54346/.box/src/Checker.php | 102 - Box54346/.box/src/IO.php | 127 - .../.box/src/IsExtensionConflictFulfilled.php | 18 - Box54346/.box/src/IsExtensionFulfilled.php | 18 - Box54346/.box/src/IsFulfilled.php | 9 - Box54346/.box/src/IsPhpVersionFulfilled.php | 22 - Box54346/.box/src/Printer.php | 104 - Box54346/.box/src/Requirement.php | 37 - Box54346/.box/src/RequirementCollection.php | 45 - Box54346/.box/src/Terminal.php | 117 - Box54346/.box/vendor/autoload.php | 25 - Box54346/.box/vendor/composer/ClassLoader.php | 585 --- .../vendor/composer/InstalledVersions.php | 203 - Box54346/.box/vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 32 - .../vendor/composer/autoload_namespaces.php | 9 - .../.box/vendor/composer/autoload_psr4.php | 11 - .../.box/vendor/composer/autoload_real.php | 37 - .../.box/vendor/composer/autoload_static.php | 63 - Box54346/.box/vendor/composer/installed.php | 5 - Box54346/.box/vendor/composer/semver/LICENSE | 19 - .../vendor/composer/semver/src/Comparator.php | 40 - .../composer/semver/src/CompilingMatcher.php | 51 - .../composer/semver/src/Constraint/Bound.php | 56 - .../semver/src/Constraint/Constraint.php | 260 -- .../src/Constraint/ConstraintInterface.php | 17 - .../src/Constraint/MatchAllConstraint.php | 39 - .../src/Constraint/MatchNoneConstraint.php | 39 - .../semver/src/Constraint/MultiConstraint.php | 178 - .../vendor/composer/semver/src/Interval.php | 51 - .../vendor/composer/semver/src/Intervals.php | 307 -- .../vendor/composer/semver/src/Semver.php | 63 - .../composer/semver/src/VersionParser.php | 336 -- Box54346/box.json.dist | 1 - Box54346/composer.json | 16 - Box54346/composer.lock | 175 - Box54346/expected-output | 1 - Box54346/index.php | 15 - Box54346/installed_after.json | 5 - Box54346/installed_after.php | 23 - Box54346/vendor/autoload.php | 25 - Box54346/vendor/bin/phpstan | 120 - Box54346/vendor/bin/phpstan.phar | 120 - Box54346/vendor/composer/ClassLoader.php | 585 --- .../vendor/composer/InstalledVersions.php | 352 -- Box54346/vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 10 - Box54346/vendor/composer/autoload_files.php | 12 - .../vendor/composer/autoload_namespaces.php | 9 - Box54346/vendor/composer/autoload_psr4.php | 9 - Box54346/vendor/composer/autoload_real.php | 50 - Box54346/vendor/composer/autoload_static.php | 26 - Box54346/vendor/composer/installed.json | 59 - Box54346/vendor/composer/installed.php | 32 - Box54346/vendor/composer/platform_check.php | 26 - .../nikic/iter/.github/workflows/ci.yml | 55 - Box54346/vendor/nikic/iter/.gitignore | 3 - Box54346/vendor/nikic/iter/LICENSE | 31 - Box54346/vendor/nikic/iter/README.md | 116 - Box54346/vendor/nikic/iter/composer.json | 29 - Box54346/vendor/nikic/iter/phpunit.xml.dist | 26 - Box54346/vendor/nikic/iter/src/iter.func.php | 106 - .../vendor/nikic/iter/src/iter.rewindable.php | 143 - .../vendor/nikic/iter/test/IterFnTest.php | 129 - .../nikic/iter/test/IterRewindableTest.php | 180 - Box54346/vendor/nikic/iter/test/iterTest.php | 628 --- box.json.dist | 1 - composer/LICENSE | 21 - composer/bin/composer | 88 - composer/res/composer-repository-schema.json | 110 - composer/res/composer-schema.json | 1062 ----- composer/src/Composer/Advisory/Auditor.php | 191 - .../Advisory/PartialSecurityAdvisory.php | 71 - .../Composer/Advisory/SecurityAdvisory.php | 76 - .../Composer/Autoload/AutoloadGenerator.php | 1339 ------ .../src/Composer/Autoload/ClassLoader.php | 585 --- .../Composer/Autoload/ClassMapGenerator.php | 98 - .../src/Composer/Autoload/PhpFileCleaner.php | 247 -- composer/src/Composer/Cache.php | 389 -- .../src/Composer/Command/AboutCommand.php | 51 - .../src/Composer/Command/ArchiveCommand.php | 212 - .../src/Composer/Command/AuditCommand.php | 92 - composer/src/Composer/Command/BaseCommand.php | 436 -- .../Command/BaseDependencyCommand.php | 251 -- composer/src/Composer/Command/BumpCommand.php | 246 -- .../Command/CheckPlatformReqsCommand.php | 216 - .../Composer/Command/ClearCacheCommand.php | 101 - .../src/Composer/Command/CompletionTrait.php | 214 - .../src/Composer/Command/ConfigCommand.php | 1064 ----- .../Composer/Command/CreateProjectCommand.php | 481 --- .../src/Composer/Command/DependsCommand.php | 58 - .../src/Composer/Command/DiagnoseCommand.php | 741 ---- .../Composer/Command/DumpAutoloadCommand.php | 116 - composer/src/Composer/Command/ExecCommand.php | 153 - composer/src/Composer/Command/FundCommand.php | 151 - .../src/Composer/Command/GlobalCommand.php | 165 - composer/src/Composer/Command/HomeCommand.php | 167 - composer/src/Composer/Command/InitCommand.php | 636 --- .../src/Composer/Command/InstallCommand.php | 148 - .../src/Composer/Command/LicensesCommand.php | 153 - .../src/Composer/Command/OutdatedCommand.php | 119 - .../Command/PackageDiscoveryTrait.php | 451 -- .../src/Composer/Command/ProhibitsCommand.php | 59 - .../src/Composer/Command/ReinstallCommand.php | 173 - .../src/Composer/Command/RemoveCommand.php | 314 -- .../src/Composer/Command/RequireCommand.php | 635 --- .../src/Composer/Command/RunScriptCommand.php | 187 - .../Composer/Command/ScriptAliasCommand.php | 76 - .../src/Composer/Command/SearchCommand.php | 127 - .../Composer/Command/SelfUpdateCommand.php | 640 --- composer/src/Composer/Command/ShowCommand.php | 1416 ------- .../src/Composer/Command/StatusCommand.php | 218 - .../src/Composer/Command/SuggestsCommand.php | 103 - .../src/Composer/Command/UpdateCommand.php | 316 -- .../src/Composer/Command/ValidateCommand.php | 220 - composer/src/Composer/Composer.php | 159 - composer/src/Composer/Config.php | 626 --- .../Composer/Config/ConfigSourceInterface.php | 84 - .../src/Composer/Config/JsonConfigSource.php | 299 -- composer/src/Composer/Console/Application.php | 663 --- .../Composer/Console/GithubActionError.php | 68 - .../Composer/Console/HtmlOutputFormatter.php | 104 - .../Composer/Console/Input/InputArgument.php | 69 - .../Composer/Console/Input/InputOption.php | 72 - .../Composer/DependencyResolver/Decisions.php | 233 -- .../DependencyResolver/DefaultPolicy.php | 258 -- .../DependencyResolver/GenericRule.php | 90 - .../LocalRepoTransaction.php | 31 - .../DependencyResolver/LockTransaction.php | 154 - .../DependencyResolver/MultiConflictRule.php | 110 - .../Operation/InstallOperation.php | 56 - .../Operation/MarkAliasInstalledOperation.php | 51 - .../MarkAliasUninstalledOperation.php | 51 - .../Operation/OperationInterface.php | 43 - .../Operation/SolverOperation.php | 42 - .../Operation/UninstallOperation.php | 56 - .../Operation/UpdateOperation.php | 88 - .../DependencyResolver/PolicyInterface.php | 33 - .../src/Composer/DependencyResolver/Pool.php | 265 -- .../DependencyResolver/PoolBuilder.php | 706 ---- .../DependencyResolver/PoolOptimizer.php | 475 --- .../Composer/DependencyResolver/Problem.php | 561 --- .../Composer/DependencyResolver/Request.php | 236 -- .../src/Composer/DependencyResolver/Rule.php | 463 --- .../DependencyResolver/Rule2Literals.php | 117 - .../Composer/DependencyResolver/RuleSet.php | 194 - .../DependencyResolver/RuleSetGenerator.php | 327 -- .../DependencyResolver/RuleSetIterator.php | 105 - .../DependencyResolver/RuleWatchChain.php | 51 - .../DependencyResolver/RuleWatchGraph.php | 167 - .../DependencyResolver/RuleWatchNode.php | 114 - .../Composer/DependencyResolver/Solver.php | 791 ---- .../DependencyResolver/SolverBugException.php | 27 - .../SolverProblemsException.php | 148 - .../DependencyResolver/Transaction.php | 357 -- .../Composer/Downloader/ArchiveDownloader.php | 223 - .../Downloader/ChangeReportInterface.php | 32 - .../Composer/Downloader/DownloadManager.php | 441 -- .../Downloader/DownloaderInterface.php | 93 - .../Downloader/DvcsDownloaderInterface.php | 32 - .../Composer/Downloader/FileDownloader.php | 511 --- .../Downloader/FilesystemException.php | 26 - .../Composer/Downloader/FossilDownloader.php | 131 - .../src/Composer/Downloader/GitDownloader.php | 620 --- .../Composer/Downloader/GzipDownloader.php | 67 - .../src/Composer/Downloader/HgDownloader.php | 119 - .../MaxFileSizeExceededException.php | 17 - .../Composer/Downloader/PathDownloader.php | 313 -- .../Downloader/PerforceDownloader.php | 128 - .../Composer/Downloader/PharDownloader.php | 41 - .../src/Composer/Downloader/RarDownloader.php | 82 - .../src/Composer/Downloader/SvnDownloader.php | 249 -- .../src/Composer/Downloader/TarDownloader.php | 36 - .../Downloader/TransportException.php | 89 - .../VcsCapableDownloaderInterface.php | 32 - .../src/Composer/Downloader/VcsDownloader.php | 359 -- .../src/Composer/Downloader/XzDownloader.php | 39 - .../src/Composer/Downloader/ZipDownloader.php | 272 -- .../src/Composer/EventDispatcher/Event.php | 103 - .../EventDispatcher/EventDispatcher.php | 623 --- .../EventSubscriberInterface.php | 48 - .../ScriptExecutionException.php | 22 - .../IrrecoverableDownloadException.php | 20 - .../src/Composer/Exception/NoSslException.php | 22 - composer/src/Composer/Factory.php | 731 ---- .../IgnoreAllPlatformRequirementFilter.php | 23 - .../IgnoreListPlatformRequirementFilter.php | 88 - ...IgnoreNothingPlatformRequirementFilter.php | 24 - .../PlatformRequirementFilterFactory.php | 47 - .../PlatformRequirementFilterInterface.php | 18 - composer/src/Composer/IO/BaseIO.php | 234 -- composer/src/Composer/IO/BufferIO.php | 102 - composer/src/Composer/IO/ConsoleIO.php | 345 -- composer/src/Composer/IO/IOInterface.php | 242 -- composer/src/Composer/IO/NullIO.php | 129 - composer/src/Composer/InstalledVersions.php | 352 -- composer/src/Composer/Installer.php | 1461 ------- .../Composer/Installer/BinaryInstaller.php | 409 -- .../Installer/BinaryPresenceInterface.php | 32 - .../Installer/InstallationManager.php | 667 --- .../src/Composer/Installer/InstallerEvent.php | 85 - .../Composer/Installer/InstallerEvents.php | 26 - .../Composer/Installer/InstallerInterface.php | 118 - .../Composer/Installer/LibraryInstaller.php | 340 -- .../Installer/MetapackageInstaller.php | 132 - .../src/Composer/Installer/NoopInstaller.php | 118 - .../src/Composer/Installer/PackageEvent.php | 110 - .../src/Composer/Installer/PackageEvents.php | 75 - .../Composer/Installer/PluginInstaller.php | 134 - .../Composer/Installer/ProjectInstaller.php | 124 - .../Installer/SuggestedPackagesReporter.php | 228 - composer/src/Composer/Json/JsonFile.php | 349 -- composer/src/Composer/Json/JsonFormatter.php | 134 - .../src/Composer/Json/JsonManipulator.php | 570 --- .../Composer/Json/JsonValidationException.php | 43 - .../PHPStan/ConfigReturnTypeExtension.php | 194 - .../RuleReasonDataReturnTypeExtension.php | 69 - .../src/Composer/Package/AliasPackage.php | 393 -- .../Archiver/ArchivableFilesFilter.php | 50 - .../Archiver/ArchivableFilesFinder.php | 109 - .../Package/Archiver/ArchiveManager.php | 287 -- .../Package/Archiver/ArchiverInterface.php | 44 - .../Package/Archiver/BaseExcludeFilter.php | 152 - .../Archiver/ComposerExcludeFilter.php | 31 - .../Package/Archiver/GitExcludeFilter.php | 65 - .../Package/Archiver/PharArchiver.php | 104 - .../Composer/Package/Archiver/ZipArchiver.php | 90 - composer/src/Composer/Package/BasePackage.php | 277 -- .../Composer/Package/Comparer/Comparer.php | 152 - .../Composer/Package/CompleteAliasPackage.php | 167 - .../src/Composer/Package/CompletePackage.php | 246 -- .../Package/CompletePackageInterface.php | 188 - .../Composer/Package/Dumper/ArrayDumper.php | 168 - composer/src/Composer/Package/Link.php | 140 - .../Composer/Package/Loader/ArrayLoader.php | 465 --- .../Loader/InvalidPackageException.php | 63 - .../Composer/Package/Loader/JsonLoader.php | 56 - .../Package/Loader/LoaderInterface.php | 39 - .../Package/Loader/RootPackageLoader.php | 296 -- .../Package/Loader/ValidatingArrayLoader.php | 623 --- composer/src/Composer/Package/Locker.php | 545 --- composer/src/Composer/Package/Package.php | 711 ---- .../src/Composer/Package/PackageInterface.php | 393 -- .../src/Composer/Package/RootAliasPackage.php | 223 - composer/src/Composer/Package/RootPackage.php | 132 - .../Composer/Package/RootPackageInterface.php | 169 - .../Package/Version/StabilityFilter.php | 49 - .../Package/Version/VersionBumper.php | 119 - .../Package/Version/VersionGuesser.php | 423 -- .../Package/Version/VersionParser.php | 94 - .../Package/Version/VersionSelector.php | 259 -- composer/src/Composer/PartialComposer.php | 115 - .../src/Composer/Platform/HhvmDetector.php | 65 - composer/src/Composer/Platform/Runtime.php | 103 - composer/src/Composer/Platform/Version.php | 90 - .../Composer/Plugin/Capability/Capability.php | 23 - .../Plugin/Capability/CommandProvider.php | 33 - composer/src/Composer/Plugin/Capable.php | 43 - composer/src/Composer/Plugin/CommandEvent.php | 80 - .../Plugin/PluginBlockedException.php | 19 - composer/src/Composer/Plugin/PluginEvents.php | 82 - .../src/Composer/Plugin/PluginInterface.php | 63 - .../src/Composer/Plugin/PluginManager.php | 602 --- .../Composer/Plugin/PostFileDownloadEvent.php | 139 - .../Composer/Plugin/PreCommandRunEvent.php | 63 - .../Composer/Plugin/PreFileDownloadEvent.php | 158 - .../Composer/Plugin/PrePoolCreateEvent.php | 173 - .../Question/StrictConfirmationQuestion.php | 93 - .../Repository/AdvisoryProviderInterface.php | 34 - .../Composer/Repository/ArrayRepository.php | 341 -- .../Repository/ArtifactRepository.php | 142 - .../Repository/CanonicalPackagesTrait.php | 55 - .../Repository/ComposerRepository.php | 1755 -------- .../Repository/CompositeRepository.php | 203 - .../ConfigurableRepositoryInterface.php | 26 - .../Repository/FilesystemRepository.php | 309 -- .../Composer/Repository/FilterRepository.php | 234 -- .../Repository/InstalledArrayRepository.php | 38 - .../InstalledFilesystemRepository.php | 19 - .../Repository/InstalledRepository.php | 276 -- .../InstalledRepositoryInterface.php | 33 - .../Repository/InvalidRepositoryException.php | 22 - .../Repository/LockArrayRepository.php | 30 - .../Composer/Repository/PackageRepository.php | 68 - .../Composer/Repository/PathRepository.php | 253 -- .../Composer/Repository/PearRepository.php | 32 - .../Repository/PlatformRepository.php | 715 ---- .../Composer/Repository/RepositoryFactory.php | 192 - .../Repository/RepositoryInterface.php | 118 - .../Composer/Repository/RepositoryManager.php | 188 - .../RepositorySecurityException.php | 22 - .../src/Composer/Repository/RepositorySet.php | 402 -- .../Composer/Repository/RepositoryUtils.php | 78 - .../Repository/RootPackageRepository.php | 35 - .../Composer/Repository/Vcs/FossilDriver.php | 247 -- .../Repository/Vcs/GitBitbucketDriver.php | 519 --- .../src/Composer/Repository/Vcs/GitDriver.php | 258 -- .../Composer/Repository/Vcs/GitHubDriver.php | 621 --- .../Composer/Repository/Vcs/GitLabDriver.php | 628 --- .../src/Composer/Repository/Vcs/HgDriver.php | 244 -- .../Repository/Vcs/PerforceDriver.php | 188 - .../src/Composer/Repository/Vcs/SvnDriver.php | 408 -- .../src/Composer/Repository/Vcs/VcsDriver.php | 179 - .../Repository/Vcs/VcsDriverInterface.php | 110 - .../src/Composer/Repository/VcsRepository.php | 527 --- .../Repository/VersionCacheInterface.php | 21 - .../Repository/WritableArrayRepository.php | 73 - .../WritableRepositoryInterface.php | 73 - composer/src/Composer/Script/Event.php | 122 - composer/src/Composer/Script/ScriptEvents.php | 131 - composer/src/Composer/SelfUpdate/Keys.php | 38 - composer/src/Composer/SelfUpdate/Versions.php | 117 - composer/src/Composer/Util/AuthHelper.php | 300 -- composer/src/Composer/Util/Bitbucket.php | 256 -- composer/src/Composer/Util/ComposerMirror.php | 77 - .../src/Composer/Util/ConfigValidator.php | 224 - composer/src/Composer/Util/ErrorHandler.php | 82 - composer/src/Composer/Util/Filesystem.php | 917 ---- composer/src/Composer/Util/Git.php | 512 --- composer/src/Composer/Util/GitHub.php | 234 -- composer/src/Composer/Util/GitLab.php | 311 -- composer/src/Composer/Util/Hg.php | 109 - .../src/Composer/Util/Http/CurlDownloader.php | 653 --- .../src/Composer/Util/Http/CurlResponse.php | 43 - .../src/Composer/Util/Http/ProxyHelper.php | 181 - .../src/Composer/Util/Http/ProxyManager.php | 180 - .../src/Composer/Util/Http/RequestProxy.php | 89 - composer/src/Composer/Util/Http/Response.php | 123 - composer/src/Composer/Util/HttpDownloader.php | 545 --- composer/src/Composer/Util/IniHelper.php | 62 - composer/src/Composer/Util/Loop.php | 125 - .../src/Composer/Util/MetadataMinifier.php | 22 - composer/src/Composer/Util/NoProxyPattern.php | 412 -- composer/src/Composer/Util/PackageInfo.php | 33 - composer/src/Composer/Util/PackageSorter.php | 140 - composer/src/Composer/Util/Perforce.php | 623 --- composer/src/Composer/Util/Platform.php | 285 -- .../src/Composer/Util/ProcessExecutor.php | 480 --- .../src/Composer/Util/RemoteFilesystem.php | 726 ---- composer/src/Composer/Util/Silencer.php | 77 - .../Composer/Util/StreamContextFactory.php | 254 -- composer/src/Composer/Util/Svn.php | 361 -- composer/src/Composer/Util/SyncHelper.php | 65 - composer/src/Composer/Util/Tar.php | 59 - composer/src/Composer/Util/TlsHelper.php | 204 - composer/src/Composer/Util/Url.php | 124 - composer/src/Composer/Util/Zip.php | 101 - composer/src/bootstrap.php | 26 - composer/vendor/autoload.php | 25 - composer/vendor/composer/ClassLoader.php | 585 --- .../vendor/composer/InstalledVersions.php | 352 -- .../vendor/composer/autoload_classmap.php | 18 - composer/vendor/composer/autoload_files.php | 19 - .../vendor/composer/autoload_namespaces.php | 9 - composer/vendor/composer/autoload_psr4.php | 37 - composer/vendor/composer/autoload_real.php | 48 - composer/vendor/composer/autoload_static.php | 204 - composer/vendor/composer/ca-bundle/LICENSE | 21 - .../vendor/composer/ca-bundle/res/cacert.pem | 3372 --------------- .../composer/ca-bundle/src/CaBundle.php | 431 -- .../composer/class-map-generator/LICENSE | 21 - .../class-map-generator/src/ClassMap.php | 131 - .../src/ClassMapGenerator.php | 334 -- .../class-map-generator/src/FileList.php | 42 - .../src/PhpFileCleaner.php | 247 -- .../class-map-generator/src/PhpFileParser.php | 150 - composer/vendor/composer/installed.php | 281 -- .../vendor/composer/metadata-minifier/LICENSE | 21 - .../src/MetadataMinifier.php | 89 - composer/vendor/composer/pcre/LICENSE | 21 - .../composer/pcre/src/MatchAllResult.php | 46 - .../pcre/src/MatchAllStrictGroupsResult.php | 46 - .../pcre/src/MatchAllWithOffsetsResult.php | 48 - .../vendor/composer/pcre/src/MatchResult.php | 39 - .../pcre/src/MatchStrictGroupsResult.php | 39 - .../pcre/src/MatchWithOffsetsResult.php | 41 - .../composer/pcre/src/PcreException.php | 60 - composer/vendor/composer/pcre/src/Preg.php | 454 -- composer/vendor/composer/pcre/src/Regex.php | 159 - .../composer/pcre/src/ReplaceResult.php | 43 - .../pcre/src/UnexpectedNullMatchException.php | 20 - composer/vendor/composer/semver/LICENSE | 21 - .../vendor/composer/semver/src/Comparator.php | 113 - .../composer/semver/src/CompilingMatcher.php | 94 - .../composer/semver/src/Constraint/Bound.php | 122 - .../semver/src/Constraint/Constraint.php | 435 -- .../src/Constraint/ConstraintInterface.php | 75 - .../src/Constraint/MatchAllConstraint.php | 85 - .../src/Constraint/MatchNoneConstraint.php | 83 - .../semver/src/Constraint/MultiConstraint.php | 325 -- .../vendor/composer/semver/src/Interval.php | 98 - .../vendor/composer/semver/src/Intervals.php | 478 --- .../vendor/composer/semver/src/Semver.php | 129 - .../composer/semver/src/VersionParser.php | 586 --- .../vendor/composer/spdx-licenses/LICENSE | 21 - .../spdx-licenses/res/spdx-exceptions.json | 125 - .../spdx-licenses/res/spdx-licenses.json | 2447 ----------- .../spdx-licenses/src/SpdxLicenses.php | 357 -- .../vendor/composer/xdebug-handler/LICENSE | 23 - .../composer/xdebug-handler/src/PhpConfig.php | 91 - .../composer/xdebug-handler/src/Process.php | 118 - .../composer/xdebug-handler/src/Status.php | 203 - .../xdebug-handler/src/XdebugHandler.php | 668 --- .../vendor/justinrainbow/json-schema/LICENSE | 23 - .../JsonSchema/Constraints/BaseConstraint.php | 148 - .../Constraints/CollectionConstraint.php | 121 - .../src/JsonSchema/Constraints/Constraint.php | 218 - .../Constraints/ConstraintInterface.php | 65 - .../JsonSchema/Constraints/EnumConstraint.php | 54 - .../src/JsonSchema/Constraints/Factory.php | 220 - .../Constraints/FormatConstraint.php | 214 - .../Constraints/NumberConstraint.php | 81 - .../Constraints/ObjectConstraint.php | 192 - .../Constraints/SchemaConstraint.php | 94 - .../Constraints/StringConstraint.php | 60 - .../Constraints/TypeCheck/LooseTypeCheck.php | 68 - .../Constraints/TypeCheck/StrictTypeCheck.php | 40 - .../TypeCheck/TypeCheckInterface.php | 18 - .../JsonSchema/Constraints/TypeConstraint.php | 261 -- .../Constraints/UndefinedConstraint.php | 419 -- .../src/JsonSchema/Entity/JsonPointer.php | 161 - .../Exception/ExceptionInterface.php | 7 - .../Exception/InvalidArgumentException.php | 17 - .../Exception/InvalidConfigException.php | 17 - .../Exception/InvalidSchemaException.php | 17 - .../InvalidSchemaMediaTypeException.php | 17 - .../Exception/InvalidSourceUriException.php | 17 - .../Exception/JsonDecodingException.php | 40 - .../Exception/ResourceNotFoundException.php | 17 - .../JsonSchema/Exception/RuntimeException.php | 17 - .../UnresolvableJsonPointerException.php | 19 - .../Exception/UriResolverException.php | 17 - .../Exception/ValidationException.php | 14 - .../JsonSchema/Iterator/ObjectIterator.php | 149 - .../json-schema/src/JsonSchema/Rfc3339.php | 30 - .../src/JsonSchema/SchemaStorage.php | 169 - .../src/JsonSchema/SchemaStorageInterface.php | 41 - .../Uri/Retrievers/AbstractRetriever.php | 34 - .../src/JsonSchema/Uri/Retrievers/Curl.php | 83 - .../Uri/Retrievers/FileGetContents.php | 93 - .../Uri/Retrievers/PredefinedArray.php | 56 - .../Uri/Retrievers/UriRetrieverInterface.php | 36 - .../src/JsonSchema/Uri/UriResolver.php | 175 - .../src/JsonSchema/Uri/UriRetriever.php | 349 -- .../src/JsonSchema/UriResolverInterface.php | 26 - .../src/JsonSchema/UriRetrieverInterface.php | 26 - .../json-schema/src/JsonSchema/Validator.php | 88 - composer/vendor/psr/container/LICENSE | 23 - .../src/ContainerExceptionInterface.php | 10 - .../psr/container/src/ContainerInterface.php | 36 - .../src/NotFoundExceptionInterface.php | 10 - composer/vendor/psr/log/LICENSE | 21 - .../vendor/psr/log/Psr/Log/AbstractLogger.php | 128 - .../log/Psr/Log/InvalidArgumentException.php | 7 - composer/vendor/psr/log/Psr/Log/LogLevel.php | 18 - .../psr/log/Psr/Log/LoggerAwareInterface.php | 18 - .../psr/log/Psr/Log/LoggerAwareTrait.php | 26 - .../psr/log/Psr/Log/LoggerInterface.php | 125 - .../vendor/psr/log/Psr/Log/LoggerTrait.php | 142 - .../vendor/psr/log/Psr/Log/NullLogger.php | 30 - .../vendor/psr/log/Psr/Log/Test/DummyTest.php | 18 - .../log/Psr/Log/Test/LoggerInterfaceTest.php | 138 - .../psr/log/Psr/Log/Test/TestLogger.php | 147 - composer/vendor/react/promise/LICENSE | 26 - .../src/CancellablePromiseInterface.php | 17 - .../react/promise/src/CancellationQueue.php | 55 - .../vendor/react/promise/src/Deferred.php | 65 - .../promise/src/Exception/LengthException.php | 7 - .../promise/src/ExtendedPromiseInterface.php | 98 - .../react/promise/src/FulfilledPromise.php | 71 - .../vendor/react/promise/src/LazyPromise.php | 66 - composer/vendor/react/promise/src/Promise.php | 256 -- .../react/promise/src/PromiseInterface.php | 41 - .../react/promise/src/PromisorInterface.php | 13 - .../react/promise/src/RejectedPromise.php | 79 - .../src/UnhandledRejectionException.php | 31 - .../vendor/react/promise/src/functions.php | 407 -- .../react/promise/src/functions_include.php | 5 - composer/vendor/seld/jsonlint/LICENSE | 21 - .../Seld/JsonLint/DuplicateKeyException.php | 48 - .../jsonlint/src/Seld/JsonLint/JsonParser.php | 584 --- .../seld/jsonlint/src/Seld/JsonLint/Lexer.php | 257 -- .../src/Seld/JsonLint/ParsingException.php | 38 - .../jsonlint/src/Seld/JsonLint/Undefined.php | 16 - composer/vendor/seld/phar-utils/LICENSE | 21 - .../vendor/seld/phar-utils/src/Linter.php | 115 - .../vendor/seld/phar-utils/src/Timestamps.php | 196 - composer/vendor/seld/signal-handler/LICENSE | 21 - .../seld/signal-handler/src/SignalHandler.php | 567 --- .../vendor/symfony/console/Application.php | 1301 ------ .../symfony/console/Attribute/AsCommand.php | 39 - .../console/CI/GithubActionReporter.php | 99 - composer/vendor/symfony/console/Color.php | 180 - .../symfony/console/Command/Command.php | 710 ---- .../console/Command/CompleteCommand.php | 205 - .../console/Command/DumpCompletionCommand.php | 139 - .../symfony/console/Command/HelpCommand.php | 101 - .../symfony/console/Command/LazyCommand.php | 218 - .../symfony/console/Command/ListCommand.php | 95 - .../symfony/console/Command/LockableTrait.php | 69 - .../Command/SignalableCommandInterface.php | 30 - .../CommandLoader/CommandLoaderInterface.php | 42 - .../CommandLoader/ContainerCommandLoader.php | 63 - .../CommandLoader/FactoryCommandLoader.php | 62 - .../console/Completion/CompletionInput.php | 249 -- .../Completion/CompletionSuggestions.php | 99 - .../Output/BashCompletionOutput.php | 33 - .../Output/CompletionOutputInterface.php | 25 - .../symfony/console/Completion/Suggestion.php | 37 - .../vendor/symfony/console/ConsoleEvents.php | 72 - composer/vendor/symfony/console/Cursor.php | 207 - .../AddConsoleCommandPass.php | 148 - .../Descriptor/ApplicationDescription.php | 143 - .../symfony/console/Descriptor/Descriptor.php | 94 - .../Descriptor/DescriptorInterface.php | 24 - .../console/Descriptor/JsonDescriptor.php | 181 - .../console/Descriptor/MarkdownDescriptor.php | 206 - .../console/Descriptor/TextDescriptor.php | 341 -- .../console/Descriptor/XmlDescriptor.php | 247 -- .../console/Event/ConsoleCommandEvent.php | 51 - .../console/Event/ConsoleErrorEvent.php | 58 - .../symfony/console/Event/ConsoleEvent.php | 67 - .../console/Event/ConsoleSignalEvent.php | 35 - .../console/Event/ConsoleTerminateEvent.php | 43 - .../console/EventListener/ErrorListener.php | 95 - .../Exception/CommandNotFoundException.php | 43 - .../console/Exception/ExceptionInterface.php | 21 - .../Exception/InvalidArgumentException.php | 19 - .../Exception/InvalidOptionException.php | 21 - .../console/Exception/LogicException.php | 19 - .../Exception/MissingInputException.php | 21 - .../Exception/NamespaceNotFoundException.php | 21 - .../console/Exception/RuntimeException.php | 19 - .../console/Formatter/NullOutputFormatter.php | 69 - .../Formatter/NullOutputFormatterStyle.php | 66 - .../console/Formatter/OutputFormatter.php | 285 -- .../Formatter/OutputFormatterInterface.php | 60 - .../Formatter/OutputFormatterStyle.php | 108 - .../OutputFormatterStyleInterface.php | 52 - .../Formatter/OutputFormatterStyleStack.php | 110 - .../WrappableOutputFormatterInterface.php | 25 - .../console/Helper/DebugFormatterHelper.php | 107 - .../console/Helper/DescriptorHelper.php | 92 - .../vendor/symfony/console/Helper/Dumper.php | 64 - .../console/Helper/FormatterHelper.php | 92 - .../vendor/symfony/console/Helper/Helper.php | 180 - .../console/Helper/HelperInterface.php | 39 - .../symfony/console/Helper/HelperSet.php | 108 - .../console/Helper/InputAwareHelper.php | 33 - .../symfony/console/Helper/ProcessHelper.php | 144 - .../symfony/console/Helper/ProgressBar.php | 609 --- .../console/Helper/ProgressIndicator.php | 249 -- .../symfony/console/Helper/QuestionHelper.php | 616 --- .../console/Helper/SymfonyQuestionHelper.php | 109 - .../vendor/symfony/console/Helper/Table.php | 915 ---- .../symfony/console/Helper/TableCell.php | 78 - .../symfony/console/Helper/TableCellStyle.php | 89 - .../symfony/console/Helper/TableRows.php | 30 - .../symfony/console/Helper/TableSeparator.php | 25 - .../symfony/console/Helper/TableStyle.php | 376 -- .../symfony/console/Input/ArgvInput.php | 378 -- .../symfony/console/Input/ArrayInput.php | 210 - .../vendor/symfony/console/Input/Input.php | 213 - .../symfony/console/Input/InputArgument.php | 129 - .../console/Input/InputAwareInterface.php | 26 - .../symfony/console/Input/InputDefinition.php | 424 -- .../symfony/console/Input/InputInterface.php | 151 - .../symfony/console/Input/InputOption.php | 231 -- .../Input/StreamableInputInterface.php | 37 - .../symfony/console/Input/StringInput.php | 84 - composer/vendor/symfony/console/LICENSE | 21 - .../symfony/console/Logger/ConsoleLogger.php | 126 - .../symfony/console/Output/BufferedOutput.php | 45 - .../symfony/console/Output/ConsoleOutput.php | 172 - .../console/Output/ConsoleOutputInterface.php | 32 - .../console/Output/ConsoleSectionOutput.php | 143 - .../symfony/console/Output/NullOutput.php | 128 - .../vendor/symfony/console/Output/Output.php | 174 - .../console/Output/OutputInterface.php | 110 - .../symfony/console/Output/StreamOutput.php | 115 - .../console/Output/TrimmedBufferOutput.php | 63 - .../console/Question/ChoiceQuestion.php | 183 - .../console/Question/ConfirmationQuestion.php | 57 - .../symfony/console/Question/Question.php | 299 -- .../console/Resources/bin/hiddeninput.exe | Bin 9216 -> 0 bytes .../symfony/console/Resources/completion.bash | 84 - .../console/SignalRegistry/SignalRegistry.php | 65 - .../console/SingleCommandApplication.php | 72 - .../symfony/console/Style/OutputStyle.php | 153 - .../symfony/console/Style/StyleInterface.php | 132 - .../symfony/console/Style/SymfonyStyle.php | 518 --- composer/vendor/symfony/console/Terminal.php | 172 - .../console/Tester/ApplicationTester.php | 85 - .../Tester/CommandCompletionTester.php | 56 - .../symfony/console/Tester/CommandTester.php | 76 - .../Tester/Constraint/CommandIsSuccessful.php | 55 - .../symfony/console/Tester/TesterTrait.php | 197 - .../symfony/deprecation-contracts/LICENSE | 21 - .../deprecation-contracts/function.php | 27 - .../Exception/ExceptionInterface.php | 21 - .../Exception/FileNotFoundException.php | 34 - .../filesystem/Exception/IOException.php | 39 - .../Exception/IOExceptionInterface.php | 27 - .../Exception/InvalidArgumentException.php | 19 - .../filesystem/Exception/RuntimeException.php | 19 - .../vendor/symfony/filesystem/Filesystem.php | 769 ---- composer/vendor/symfony/filesystem/LICENSE | 21 - composer/vendor/symfony/filesystem/Path.php | 819 ---- .../symfony/finder/Comparator/Comparator.php | 117 - .../finder/Comparator/DateComparator.php | 50 - .../finder/Comparator/NumberComparator.php | 78 - .../Exception/AccessDeniedException.php | 19 - .../Exception/DirectoryNotFoundException.php | 19 - composer/vendor/symfony/finder/Finder.php | 806 ---- composer/vendor/symfony/finder/Gitignore.php | 93 - composer/vendor/symfony/finder/Glob.php | 111 - .../finder/Iterator/CustomFilterIterator.php | 64 - .../Iterator/DateRangeFilterIterator.php | 61 - .../Iterator/DepthRangeFilterIterator.php | 51 - .../ExcludeDirectoryFilterIterator.php | 96 - .../Iterator/FileTypeFilterIterator.php | 56 - .../Iterator/FilecontentFilterIterator.php | 61 - .../Iterator/FilenameFilterIterator.php | 50 - .../symfony/finder/Iterator/LazyIterator.php | 32 - .../Iterator/MultiplePcreFilterIterator.php | 117 - .../finder/Iterator/PathFilterIterator.php | 59 - .../Iterator/RecursiveDirectoryIterator.php | 168 - .../Iterator/SizeRangeFilterIterator.php | 60 - .../finder/Iterator/SortableIterator.php | 104 - .../Iterator/VcsIgnoredFilterIterator.php | 151 - composer/vendor/symfony/finder/LICENSE | 21 - .../vendor/symfony/finder/SplFileInfo.php | 88 - .../vendor/symfony/polyfill-ctype/Ctype.php | 232 -- .../vendor/symfony/polyfill-ctype/LICENSE | 21 - .../symfony/polyfill-ctype/bootstrap.php | 50 - .../symfony/polyfill-ctype/bootstrap80.php | 46 - .../polyfill-intl-grapheme/Grapheme.php | 247 -- .../symfony/polyfill-intl-grapheme/LICENSE | 21 - .../polyfill-intl-grapheme/bootstrap.php | 58 - .../polyfill-intl-grapheme/bootstrap80.php | 50 - .../symfony/polyfill-intl-normalizer/LICENSE | 21 - .../polyfill-intl-normalizer/Normalizer.php | 310 -- .../Resources/stubs/Normalizer.php | 17 - .../unidata/canonicalComposition.php | 945 ----- .../unidata/canonicalDecomposition.php | 2065 --------- .../Resources/unidata/combiningClass.php | 876 ---- .../unidata/compatibilityDecomposition.php | 3695 ----------------- .../polyfill-intl-normalizer/bootstrap.php | 23 - .../polyfill-intl-normalizer/bootstrap80.php | 19 - .../vendor/symfony/polyfill-mbstring/LICENSE | 21 - .../symfony/polyfill-mbstring/Mbstring.php | 874 ---- .../Resources/unidata/lowerCase.php | 1397 ------- .../Resources/unidata/titleCaseRegexp.php | 5 - .../Resources/unidata/upperCase.php | 1489 ------- .../symfony/polyfill-mbstring/bootstrap.php | 147 - .../symfony/polyfill-mbstring/bootstrap80.php | 143 - .../vendor/symfony/polyfill-php73/LICENSE | 21 - .../vendor/symfony/polyfill-php73/Php73.php | 43 - .../Resources/stubs/JsonException.php | 16 - .../symfony/polyfill-php73/bootstrap.php | 31 - .../vendor/symfony/polyfill-php80/LICENSE | 21 - .../vendor/symfony/polyfill-php80/Php80.php | 115 - .../symfony/polyfill-php80/PhpToken.php | 103 - .../Resources/stubs/Attribute.php | 31 - .../Resources/stubs/PhpToken.php | 16 - .../Resources/stubs/Stringable.php | 20 - .../Resources/stubs/UnhandledMatchError.php | 16 - .../Resources/stubs/ValueError.php | 16 - .../symfony/polyfill-php80/bootstrap.php | 42 - .../vendor/symfony/polyfill-php81/LICENSE | 21 - .../vendor/symfony/polyfill-php81/Php81.php | 37 - .../Resources/stubs/ReturnTypeWillChange.php | 20 - .../symfony/polyfill-php81/bootstrap.php | 28 - .../process/Exception/ExceptionInterface.php | 21 - .../Exception/InvalidArgumentException.php | 21 - .../process/Exception/LogicException.php | 21 - .../Exception/ProcessFailedException.php | 54 - .../Exception/ProcessSignaledException.php | 41 - .../Exception/ProcessTimedOutException.php | 69 - .../process/Exception/RuntimeException.php | 21 - .../symfony/process/ExecutableFinder.php | 86 - .../vendor/symfony/process/InputStream.php | 96 - composer/vendor/symfony/process/LICENSE | 21 - .../symfony/process/PhpExecutableFinder.php | 103 - .../vendor/symfony/process/PhpProcess.php | 72 - .../symfony/process/Pipes/AbstractPipes.php | 180 - .../symfony/process/Pipes/PipesInterface.php | 61 - .../symfony/process/Pipes/UnixPipes.php | 163 - .../symfony/process/Pipes/WindowsPipes.php | 204 - composer/vendor/symfony/process/Process.php | 1652 -------- .../vendor/symfony/process/ProcessUtils.php | 69 - .../service-contracts/Attribute/Required.php | 25 - .../Attribute/SubscribedService.php | 33 - .../vendor/symfony/service-contracts/LICENSE | 21 - .../service-contracts/ResetInterface.php | 30 - .../service-contracts/ServiceLocatorTrait.php | 128 - .../ServiceProviderInterface.php | 36 - .../ServiceSubscriberInterface.php | 53 - .../ServiceSubscriberTrait.php | 109 - .../Test/ServiceLocatorTest.php | 95 - .../vendor/symfony/string/AbstractString.php | 795 ---- .../symfony/string/AbstractUnicodeString.php | 623 --- composer/vendor/symfony/string/ByteString.php | 509 --- .../vendor/symfony/string/CodePointString.php | 270 -- .../string/Exception/ExceptionInterface.php | 16 - .../Exception/InvalidArgumentException.php | 16 - .../string/Exception/RuntimeException.php | 16 - .../string/Inflector/EnglishInflector.php | 511 --- .../string/Inflector/FrenchInflector.php | 157 - .../string/Inflector/InflectorInterface.php | 33 - composer/vendor/symfony/string/LICENSE | 21 - composer/vendor/symfony/string/LazyString.php | 164 - .../Resources/data/wcswidth_table_wide.php | 1143 ----- .../Resources/data/wcswidth_table_zero.php | 1415 ------- .../symfony/string/Resources/functions.php | 38 - .../symfony/string/Slugger/AsciiSlugger.php | 183 - .../string/Slugger/SluggerInterface.php | 27 - .../vendor/symfony/string/UnicodeString.php | 377 -- 720 files changed, 136545 deletions(-) delete mode 100644 Box54346/.box/.requirements.php delete mode 100644 Box54346/.box/bin/check-requirements.php delete mode 100644 Box54346/.box/src/Checker.php delete mode 100644 Box54346/.box/src/IO.php delete mode 100644 Box54346/.box/src/IsExtensionConflictFulfilled.php delete mode 100644 Box54346/.box/src/IsExtensionFulfilled.php delete mode 100644 Box54346/.box/src/IsFulfilled.php delete mode 100644 Box54346/.box/src/IsPhpVersionFulfilled.php delete mode 100644 Box54346/.box/src/Printer.php delete mode 100644 Box54346/.box/src/Requirement.php delete mode 100644 Box54346/.box/src/RequirementCollection.php delete mode 100644 Box54346/.box/src/Terminal.php delete mode 100644 Box54346/.box/vendor/autoload.php delete mode 100644 Box54346/.box/vendor/composer/ClassLoader.php delete mode 100644 Box54346/.box/vendor/composer/InstalledVersions.php delete mode 100644 Box54346/.box/vendor/composer/LICENSE delete mode 100644 Box54346/.box/vendor/composer/autoload_classmap.php delete mode 100644 Box54346/.box/vendor/composer/autoload_namespaces.php delete mode 100644 Box54346/.box/vendor/composer/autoload_psr4.php delete mode 100644 Box54346/.box/vendor/composer/autoload_real.php delete mode 100644 Box54346/.box/vendor/composer/autoload_static.php delete mode 100644 Box54346/.box/vendor/composer/installed.php delete mode 100644 Box54346/.box/vendor/composer/semver/LICENSE delete mode 100644 Box54346/.box/vendor/composer/semver/src/Comparator.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/MatchAllConstraint.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Interval.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Intervals.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/Semver.php delete mode 100644 Box54346/.box/vendor/composer/semver/src/VersionParser.php delete mode 100644 Box54346/box.json.dist delete mode 100644 Box54346/composer.json delete mode 100644 Box54346/composer.lock delete mode 100644 Box54346/expected-output delete mode 100644 Box54346/index.php delete mode 100644 Box54346/installed_after.json delete mode 100644 Box54346/installed_after.php delete mode 100644 Box54346/vendor/autoload.php delete mode 100755 Box54346/vendor/bin/phpstan delete mode 100755 Box54346/vendor/bin/phpstan.phar delete mode 100644 Box54346/vendor/composer/ClassLoader.php delete mode 100644 Box54346/vendor/composer/InstalledVersions.php delete mode 100644 Box54346/vendor/composer/LICENSE delete mode 100644 Box54346/vendor/composer/autoload_classmap.php delete mode 100644 Box54346/vendor/composer/autoload_files.php delete mode 100644 Box54346/vendor/composer/autoload_namespaces.php delete mode 100644 Box54346/vendor/composer/autoload_psr4.php delete mode 100644 Box54346/vendor/composer/autoload_real.php delete mode 100644 Box54346/vendor/composer/autoload_static.php delete mode 100644 Box54346/vendor/composer/installed.json delete mode 100644 Box54346/vendor/composer/installed.php delete mode 100644 Box54346/vendor/composer/platform_check.php delete mode 100644 Box54346/vendor/nikic/iter/.github/workflows/ci.yml delete mode 100644 Box54346/vendor/nikic/iter/.gitignore delete mode 100644 Box54346/vendor/nikic/iter/LICENSE delete mode 100644 Box54346/vendor/nikic/iter/README.md delete mode 100644 Box54346/vendor/nikic/iter/composer.json delete mode 100644 Box54346/vendor/nikic/iter/phpunit.xml.dist delete mode 100644 Box54346/vendor/nikic/iter/src/iter.func.php delete mode 100644 Box54346/vendor/nikic/iter/src/iter.rewindable.php delete mode 100644 Box54346/vendor/nikic/iter/test/IterFnTest.php delete mode 100644 Box54346/vendor/nikic/iter/test/IterRewindableTest.php delete mode 100644 Box54346/vendor/nikic/iter/test/iterTest.php delete mode 100644 composer/LICENSE delete mode 100644 composer/bin/composer delete mode 100644 composer/res/composer-repository-schema.json delete mode 100644 composer/res/composer-schema.json delete mode 100644 composer/src/Composer/Advisory/Auditor.php delete mode 100644 composer/src/Composer/Advisory/PartialSecurityAdvisory.php delete mode 100644 composer/src/Composer/Advisory/SecurityAdvisory.php delete mode 100644 composer/src/Composer/Autoload/AutoloadGenerator.php delete mode 100644 composer/src/Composer/Autoload/ClassLoader.php delete mode 100644 composer/src/Composer/Autoload/ClassMapGenerator.php delete mode 100644 composer/src/Composer/Autoload/PhpFileCleaner.php delete mode 100644 composer/src/Composer/Cache.php delete mode 100644 composer/src/Composer/Command/AboutCommand.php delete mode 100644 composer/src/Composer/Command/ArchiveCommand.php delete mode 100644 composer/src/Composer/Command/AuditCommand.php delete mode 100644 composer/src/Composer/Command/BaseCommand.php delete mode 100644 composer/src/Composer/Command/BaseDependencyCommand.php delete mode 100644 composer/src/Composer/Command/BumpCommand.php delete mode 100644 composer/src/Composer/Command/CheckPlatformReqsCommand.php delete mode 100644 composer/src/Composer/Command/ClearCacheCommand.php delete mode 100644 composer/src/Composer/Command/CompletionTrait.php delete mode 100644 composer/src/Composer/Command/ConfigCommand.php delete mode 100644 composer/src/Composer/Command/CreateProjectCommand.php delete mode 100644 composer/src/Composer/Command/DependsCommand.php delete mode 100644 composer/src/Composer/Command/DiagnoseCommand.php delete mode 100644 composer/src/Composer/Command/DumpAutoloadCommand.php delete mode 100644 composer/src/Composer/Command/ExecCommand.php delete mode 100644 composer/src/Composer/Command/FundCommand.php delete mode 100644 composer/src/Composer/Command/GlobalCommand.php delete mode 100644 composer/src/Composer/Command/HomeCommand.php delete mode 100644 composer/src/Composer/Command/InitCommand.php delete mode 100644 composer/src/Composer/Command/InstallCommand.php delete mode 100644 composer/src/Composer/Command/LicensesCommand.php delete mode 100644 composer/src/Composer/Command/OutdatedCommand.php delete mode 100644 composer/src/Composer/Command/PackageDiscoveryTrait.php delete mode 100644 composer/src/Composer/Command/ProhibitsCommand.php delete mode 100644 composer/src/Composer/Command/ReinstallCommand.php delete mode 100644 composer/src/Composer/Command/RemoveCommand.php delete mode 100644 composer/src/Composer/Command/RequireCommand.php delete mode 100644 composer/src/Composer/Command/RunScriptCommand.php delete mode 100644 composer/src/Composer/Command/ScriptAliasCommand.php delete mode 100644 composer/src/Composer/Command/SearchCommand.php delete mode 100644 composer/src/Composer/Command/SelfUpdateCommand.php delete mode 100644 composer/src/Composer/Command/ShowCommand.php delete mode 100644 composer/src/Composer/Command/StatusCommand.php delete mode 100644 composer/src/Composer/Command/SuggestsCommand.php delete mode 100644 composer/src/Composer/Command/UpdateCommand.php delete mode 100644 composer/src/Composer/Command/ValidateCommand.php delete mode 100644 composer/src/Composer/Composer.php delete mode 100644 composer/src/Composer/Config.php delete mode 100644 composer/src/Composer/Config/ConfigSourceInterface.php delete mode 100644 composer/src/Composer/Config/JsonConfigSource.php delete mode 100644 composer/src/Composer/Console/Application.php delete mode 100644 composer/src/Composer/Console/GithubActionError.php delete mode 100644 composer/src/Composer/Console/HtmlOutputFormatter.php delete mode 100644 composer/src/Composer/Console/Input/InputArgument.php delete mode 100644 composer/src/Composer/Console/Input/InputOption.php delete mode 100644 composer/src/Composer/DependencyResolver/Decisions.php delete mode 100644 composer/src/Composer/DependencyResolver/DefaultPolicy.php delete mode 100644 composer/src/Composer/DependencyResolver/GenericRule.php delete mode 100644 composer/src/Composer/DependencyResolver/LocalRepoTransaction.php delete mode 100644 composer/src/Composer/DependencyResolver/LockTransaction.php delete mode 100644 composer/src/Composer/DependencyResolver/MultiConflictRule.php delete mode 100644 composer/src/Composer/DependencyResolver/Operation/InstallOperation.php delete mode 100644 composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php delete mode 100644 composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php delete mode 100644 composer/src/Composer/DependencyResolver/Operation/OperationInterface.php delete mode 100644 composer/src/Composer/DependencyResolver/Operation/SolverOperation.php delete mode 100644 composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php delete mode 100644 composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php delete mode 100644 composer/src/Composer/DependencyResolver/PolicyInterface.php delete mode 100644 composer/src/Composer/DependencyResolver/Pool.php delete mode 100644 composer/src/Composer/DependencyResolver/PoolBuilder.php delete mode 100644 composer/src/Composer/DependencyResolver/PoolOptimizer.php delete mode 100644 composer/src/Composer/DependencyResolver/Problem.php delete mode 100644 composer/src/Composer/DependencyResolver/Request.php delete mode 100644 composer/src/Composer/DependencyResolver/Rule.php delete mode 100644 composer/src/Composer/DependencyResolver/Rule2Literals.php delete mode 100644 composer/src/Composer/DependencyResolver/RuleSet.php delete mode 100644 composer/src/Composer/DependencyResolver/RuleSetGenerator.php delete mode 100644 composer/src/Composer/DependencyResolver/RuleSetIterator.php delete mode 100644 composer/src/Composer/DependencyResolver/RuleWatchChain.php delete mode 100644 composer/src/Composer/DependencyResolver/RuleWatchGraph.php delete mode 100644 composer/src/Composer/DependencyResolver/RuleWatchNode.php delete mode 100644 composer/src/Composer/DependencyResolver/Solver.php delete mode 100644 composer/src/Composer/DependencyResolver/SolverBugException.php delete mode 100644 composer/src/Composer/DependencyResolver/SolverProblemsException.php delete mode 100644 composer/src/Composer/DependencyResolver/Transaction.php delete mode 100644 composer/src/Composer/Downloader/ArchiveDownloader.php delete mode 100644 composer/src/Composer/Downloader/ChangeReportInterface.php delete mode 100644 composer/src/Composer/Downloader/DownloadManager.php delete mode 100644 composer/src/Composer/Downloader/DownloaderInterface.php delete mode 100644 composer/src/Composer/Downloader/DvcsDownloaderInterface.php delete mode 100644 composer/src/Composer/Downloader/FileDownloader.php delete mode 100644 composer/src/Composer/Downloader/FilesystemException.php delete mode 100644 composer/src/Composer/Downloader/FossilDownloader.php delete mode 100644 composer/src/Composer/Downloader/GitDownloader.php delete mode 100644 composer/src/Composer/Downloader/GzipDownloader.php delete mode 100644 composer/src/Composer/Downloader/HgDownloader.php delete mode 100644 composer/src/Composer/Downloader/MaxFileSizeExceededException.php delete mode 100644 composer/src/Composer/Downloader/PathDownloader.php delete mode 100644 composer/src/Composer/Downloader/PerforceDownloader.php delete mode 100644 composer/src/Composer/Downloader/PharDownloader.php delete mode 100644 composer/src/Composer/Downloader/RarDownloader.php delete mode 100644 composer/src/Composer/Downloader/SvnDownloader.php delete mode 100644 composer/src/Composer/Downloader/TarDownloader.php delete mode 100644 composer/src/Composer/Downloader/TransportException.php delete mode 100644 composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php delete mode 100644 composer/src/Composer/Downloader/VcsDownloader.php delete mode 100644 composer/src/Composer/Downloader/XzDownloader.php delete mode 100644 composer/src/Composer/Downloader/ZipDownloader.php delete mode 100644 composer/src/Composer/EventDispatcher/Event.php delete mode 100644 composer/src/Composer/EventDispatcher/EventDispatcher.php delete mode 100644 composer/src/Composer/EventDispatcher/EventSubscriberInterface.php delete mode 100644 composer/src/Composer/EventDispatcher/ScriptExecutionException.php delete mode 100644 composer/src/Composer/Exception/IrrecoverableDownloadException.php delete mode 100644 composer/src/Composer/Exception/NoSslException.php delete mode 100644 composer/src/Composer/Factory.php delete mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php delete mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreListPlatformRequirementFilter.php delete mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php delete mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterFactory.php delete mode 100644 composer/src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterInterface.php delete mode 100644 composer/src/Composer/IO/BaseIO.php delete mode 100644 composer/src/Composer/IO/BufferIO.php delete mode 100644 composer/src/Composer/IO/ConsoleIO.php delete mode 100644 composer/src/Composer/IO/IOInterface.php delete mode 100644 composer/src/Composer/IO/NullIO.php delete mode 100644 composer/src/Composer/InstalledVersions.php delete mode 100644 composer/src/Composer/Installer.php delete mode 100644 composer/src/Composer/Installer/BinaryInstaller.php delete mode 100644 composer/src/Composer/Installer/BinaryPresenceInterface.php delete mode 100644 composer/src/Composer/Installer/InstallationManager.php delete mode 100644 composer/src/Composer/Installer/InstallerEvent.php delete mode 100644 composer/src/Composer/Installer/InstallerEvents.php delete mode 100644 composer/src/Composer/Installer/InstallerInterface.php delete mode 100644 composer/src/Composer/Installer/LibraryInstaller.php delete mode 100644 composer/src/Composer/Installer/MetapackageInstaller.php delete mode 100644 composer/src/Composer/Installer/NoopInstaller.php delete mode 100644 composer/src/Composer/Installer/PackageEvent.php delete mode 100644 composer/src/Composer/Installer/PackageEvents.php delete mode 100644 composer/src/Composer/Installer/PluginInstaller.php delete mode 100644 composer/src/Composer/Installer/ProjectInstaller.php delete mode 100644 composer/src/Composer/Installer/SuggestedPackagesReporter.php delete mode 100644 composer/src/Composer/Json/JsonFile.php delete mode 100644 composer/src/Composer/Json/JsonFormatter.php delete mode 100644 composer/src/Composer/Json/JsonManipulator.php delete mode 100644 composer/src/Composer/Json/JsonValidationException.php delete mode 100644 composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php delete mode 100644 composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php delete mode 100644 composer/src/Composer/Package/AliasPackage.php delete mode 100644 composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php delete mode 100644 composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php delete mode 100644 composer/src/Composer/Package/Archiver/ArchiveManager.php delete mode 100644 composer/src/Composer/Package/Archiver/ArchiverInterface.php delete mode 100644 composer/src/Composer/Package/Archiver/BaseExcludeFilter.php delete mode 100644 composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php delete mode 100644 composer/src/Composer/Package/Archiver/GitExcludeFilter.php delete mode 100644 composer/src/Composer/Package/Archiver/PharArchiver.php delete mode 100644 composer/src/Composer/Package/Archiver/ZipArchiver.php delete mode 100644 composer/src/Composer/Package/BasePackage.php delete mode 100644 composer/src/Composer/Package/Comparer/Comparer.php delete mode 100644 composer/src/Composer/Package/CompleteAliasPackage.php delete mode 100644 composer/src/Composer/Package/CompletePackage.php delete mode 100644 composer/src/Composer/Package/CompletePackageInterface.php delete mode 100644 composer/src/Composer/Package/Dumper/ArrayDumper.php delete mode 100644 composer/src/Composer/Package/Link.php delete mode 100644 composer/src/Composer/Package/Loader/ArrayLoader.php delete mode 100644 composer/src/Composer/Package/Loader/InvalidPackageException.php delete mode 100644 composer/src/Composer/Package/Loader/JsonLoader.php delete mode 100644 composer/src/Composer/Package/Loader/LoaderInterface.php delete mode 100644 composer/src/Composer/Package/Loader/RootPackageLoader.php delete mode 100644 composer/src/Composer/Package/Loader/ValidatingArrayLoader.php delete mode 100644 composer/src/Composer/Package/Locker.php delete mode 100644 composer/src/Composer/Package/Package.php delete mode 100644 composer/src/Composer/Package/PackageInterface.php delete mode 100644 composer/src/Composer/Package/RootAliasPackage.php delete mode 100644 composer/src/Composer/Package/RootPackage.php delete mode 100644 composer/src/Composer/Package/RootPackageInterface.php delete mode 100644 composer/src/Composer/Package/Version/StabilityFilter.php delete mode 100644 composer/src/Composer/Package/Version/VersionBumper.php delete mode 100644 composer/src/Composer/Package/Version/VersionGuesser.php delete mode 100644 composer/src/Composer/Package/Version/VersionParser.php delete mode 100644 composer/src/Composer/Package/Version/VersionSelector.php delete mode 100644 composer/src/Composer/PartialComposer.php delete mode 100644 composer/src/Composer/Platform/HhvmDetector.php delete mode 100644 composer/src/Composer/Platform/Runtime.php delete mode 100644 composer/src/Composer/Platform/Version.php delete mode 100644 composer/src/Composer/Plugin/Capability/Capability.php delete mode 100644 composer/src/Composer/Plugin/Capability/CommandProvider.php delete mode 100644 composer/src/Composer/Plugin/Capable.php delete mode 100644 composer/src/Composer/Plugin/CommandEvent.php delete mode 100644 composer/src/Composer/Plugin/PluginBlockedException.php delete mode 100644 composer/src/Composer/Plugin/PluginEvents.php delete mode 100644 composer/src/Composer/Plugin/PluginInterface.php delete mode 100644 composer/src/Composer/Plugin/PluginManager.php delete mode 100644 composer/src/Composer/Plugin/PostFileDownloadEvent.php delete mode 100644 composer/src/Composer/Plugin/PreCommandRunEvent.php delete mode 100644 composer/src/Composer/Plugin/PreFileDownloadEvent.php delete mode 100644 composer/src/Composer/Plugin/PrePoolCreateEvent.php delete mode 100644 composer/src/Composer/Question/StrictConfirmationQuestion.php delete mode 100644 composer/src/Composer/Repository/AdvisoryProviderInterface.php delete mode 100644 composer/src/Composer/Repository/ArrayRepository.php delete mode 100644 composer/src/Composer/Repository/ArtifactRepository.php delete mode 100644 composer/src/Composer/Repository/CanonicalPackagesTrait.php delete mode 100644 composer/src/Composer/Repository/ComposerRepository.php delete mode 100644 composer/src/Composer/Repository/CompositeRepository.php delete mode 100644 composer/src/Composer/Repository/ConfigurableRepositoryInterface.php delete mode 100644 composer/src/Composer/Repository/FilesystemRepository.php delete mode 100644 composer/src/Composer/Repository/FilterRepository.php delete mode 100644 composer/src/Composer/Repository/InstalledArrayRepository.php delete mode 100644 composer/src/Composer/Repository/InstalledFilesystemRepository.php delete mode 100644 composer/src/Composer/Repository/InstalledRepository.php delete mode 100644 composer/src/Composer/Repository/InstalledRepositoryInterface.php delete mode 100644 composer/src/Composer/Repository/InvalidRepositoryException.php delete mode 100644 composer/src/Composer/Repository/LockArrayRepository.php delete mode 100644 composer/src/Composer/Repository/PackageRepository.php delete mode 100644 composer/src/Composer/Repository/PathRepository.php delete mode 100644 composer/src/Composer/Repository/PearRepository.php delete mode 100644 composer/src/Composer/Repository/PlatformRepository.php delete mode 100644 composer/src/Composer/Repository/RepositoryFactory.php delete mode 100644 composer/src/Composer/Repository/RepositoryInterface.php delete mode 100644 composer/src/Composer/Repository/RepositoryManager.php delete mode 100644 composer/src/Composer/Repository/RepositorySecurityException.php delete mode 100644 composer/src/Composer/Repository/RepositorySet.php delete mode 100644 composer/src/Composer/Repository/RepositoryUtils.php delete mode 100644 composer/src/Composer/Repository/RootPackageRepository.php delete mode 100644 composer/src/Composer/Repository/Vcs/FossilDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/GitDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/GitHubDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/GitLabDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/HgDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/PerforceDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/SvnDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/VcsDriver.php delete mode 100644 composer/src/Composer/Repository/Vcs/VcsDriverInterface.php delete mode 100644 composer/src/Composer/Repository/VcsRepository.php delete mode 100644 composer/src/Composer/Repository/VersionCacheInterface.php delete mode 100644 composer/src/Composer/Repository/WritableArrayRepository.php delete mode 100644 composer/src/Composer/Repository/WritableRepositoryInterface.php delete mode 100644 composer/src/Composer/Script/Event.php delete mode 100644 composer/src/Composer/Script/ScriptEvents.php delete mode 100644 composer/src/Composer/SelfUpdate/Keys.php delete mode 100644 composer/src/Composer/SelfUpdate/Versions.php delete mode 100644 composer/src/Composer/Util/AuthHelper.php delete mode 100644 composer/src/Composer/Util/Bitbucket.php delete mode 100644 composer/src/Composer/Util/ComposerMirror.php delete mode 100644 composer/src/Composer/Util/ConfigValidator.php delete mode 100644 composer/src/Composer/Util/ErrorHandler.php delete mode 100644 composer/src/Composer/Util/Filesystem.php delete mode 100644 composer/src/Composer/Util/Git.php delete mode 100644 composer/src/Composer/Util/GitHub.php delete mode 100644 composer/src/Composer/Util/GitLab.php delete mode 100644 composer/src/Composer/Util/Hg.php delete mode 100644 composer/src/Composer/Util/Http/CurlDownloader.php delete mode 100644 composer/src/Composer/Util/Http/CurlResponse.php delete mode 100644 composer/src/Composer/Util/Http/ProxyHelper.php delete mode 100644 composer/src/Composer/Util/Http/ProxyManager.php delete mode 100644 composer/src/Composer/Util/Http/RequestProxy.php delete mode 100644 composer/src/Composer/Util/Http/Response.php delete mode 100644 composer/src/Composer/Util/HttpDownloader.php delete mode 100644 composer/src/Composer/Util/IniHelper.php delete mode 100644 composer/src/Composer/Util/Loop.php delete mode 100644 composer/src/Composer/Util/MetadataMinifier.php delete mode 100644 composer/src/Composer/Util/NoProxyPattern.php delete mode 100644 composer/src/Composer/Util/PackageInfo.php delete mode 100644 composer/src/Composer/Util/PackageSorter.php delete mode 100644 composer/src/Composer/Util/Perforce.php delete mode 100644 composer/src/Composer/Util/Platform.php delete mode 100644 composer/src/Composer/Util/ProcessExecutor.php delete mode 100644 composer/src/Composer/Util/RemoteFilesystem.php delete mode 100644 composer/src/Composer/Util/Silencer.php delete mode 100644 composer/src/Composer/Util/StreamContextFactory.php delete mode 100644 composer/src/Composer/Util/Svn.php delete mode 100644 composer/src/Composer/Util/SyncHelper.php delete mode 100644 composer/src/Composer/Util/Tar.php delete mode 100644 composer/src/Composer/Util/TlsHelper.php delete mode 100644 composer/src/Composer/Util/Url.php delete mode 100644 composer/src/Composer/Util/Zip.php delete mode 100644 composer/src/bootstrap.php delete mode 100644 composer/vendor/autoload.php delete mode 100644 composer/vendor/composer/ClassLoader.php delete mode 100644 composer/vendor/composer/InstalledVersions.php delete mode 100644 composer/vendor/composer/autoload_classmap.php delete mode 100644 composer/vendor/composer/autoload_files.php delete mode 100644 composer/vendor/composer/autoload_namespaces.php delete mode 100644 composer/vendor/composer/autoload_psr4.php delete mode 100644 composer/vendor/composer/autoload_real.php delete mode 100644 composer/vendor/composer/autoload_static.php delete mode 100644 composer/vendor/composer/ca-bundle/LICENSE delete mode 100644 composer/vendor/composer/ca-bundle/res/cacert.pem delete mode 100644 composer/vendor/composer/ca-bundle/src/CaBundle.php delete mode 100644 composer/vendor/composer/class-map-generator/LICENSE delete mode 100644 composer/vendor/composer/class-map-generator/src/ClassMap.php delete mode 100644 composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php delete mode 100644 composer/vendor/composer/class-map-generator/src/FileList.php delete mode 100644 composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php delete mode 100644 composer/vendor/composer/class-map-generator/src/PhpFileParser.php delete mode 100644 composer/vendor/composer/installed.php delete mode 100644 composer/vendor/composer/metadata-minifier/LICENSE delete mode 100644 composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php delete mode 100644 composer/vendor/composer/pcre/LICENSE delete mode 100644 composer/vendor/composer/pcre/src/MatchAllResult.php delete mode 100644 composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php delete mode 100644 composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php delete mode 100644 composer/vendor/composer/pcre/src/MatchResult.php delete mode 100644 composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php delete mode 100644 composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php delete mode 100644 composer/vendor/composer/pcre/src/PcreException.php delete mode 100644 composer/vendor/composer/pcre/src/Preg.php delete mode 100644 composer/vendor/composer/pcre/src/Regex.php delete mode 100644 composer/vendor/composer/pcre/src/ReplaceResult.php delete mode 100644 composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php delete mode 100644 composer/vendor/composer/semver/LICENSE delete mode 100644 composer/vendor/composer/semver/src/Comparator.php delete mode 100644 composer/vendor/composer/semver/src/CompilingMatcher.php delete mode 100644 composer/vendor/composer/semver/src/Constraint/Bound.php delete mode 100644 composer/vendor/composer/semver/src/Constraint/Constraint.php delete mode 100644 composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php delete mode 100644 composer/vendor/composer/semver/src/Constraint/MatchAllConstraint.php delete mode 100644 composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php delete mode 100644 composer/vendor/composer/semver/src/Constraint/MultiConstraint.php delete mode 100644 composer/vendor/composer/semver/src/Interval.php delete mode 100644 composer/vendor/composer/semver/src/Intervals.php delete mode 100644 composer/vendor/composer/semver/src/Semver.php delete mode 100644 composer/vendor/composer/semver/src/VersionParser.php delete mode 100644 composer/vendor/composer/spdx-licenses/LICENSE delete mode 100644 composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json delete mode 100644 composer/vendor/composer/spdx-licenses/res/spdx-licenses.json delete mode 100644 composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php delete mode 100644 composer/vendor/composer/xdebug-handler/LICENSE delete mode 100644 composer/vendor/composer/xdebug-handler/src/PhpConfig.php delete mode 100644 composer/vendor/composer/xdebug-handler/src/Process.php delete mode 100644 composer/vendor/composer/xdebug-handler/src/Status.php delete mode 100644 composer/vendor/composer/xdebug-handler/src/XdebugHandler.php delete mode 100644 composer/vendor/justinrainbow/json-schema/LICENSE delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php delete mode 100644 composer/vendor/justinrainbow/json-schema/src/JsonSchema/Validator.php delete mode 100644 composer/vendor/psr/container/LICENSE delete mode 100644 composer/vendor/psr/container/src/ContainerExceptionInterface.php delete mode 100644 composer/vendor/psr/container/src/ContainerInterface.php delete mode 100644 composer/vendor/psr/container/src/NotFoundExceptionInterface.php delete mode 100644 composer/vendor/psr/log/LICENSE delete mode 100644 composer/vendor/psr/log/Psr/Log/AbstractLogger.php delete mode 100644 composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php delete mode 100644 composer/vendor/psr/log/Psr/Log/LogLevel.php delete mode 100644 composer/vendor/psr/log/Psr/Log/LoggerAwareInterface.php delete mode 100644 composer/vendor/psr/log/Psr/Log/LoggerAwareTrait.php delete mode 100644 composer/vendor/psr/log/Psr/Log/LoggerInterface.php delete mode 100644 composer/vendor/psr/log/Psr/Log/LoggerTrait.php delete mode 100644 composer/vendor/psr/log/Psr/Log/NullLogger.php delete mode 100644 composer/vendor/psr/log/Psr/Log/Test/DummyTest.php delete mode 100644 composer/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php delete mode 100644 composer/vendor/psr/log/Psr/Log/Test/TestLogger.php delete mode 100644 composer/vendor/react/promise/LICENSE delete mode 100644 composer/vendor/react/promise/src/CancellablePromiseInterface.php delete mode 100644 composer/vendor/react/promise/src/CancellationQueue.php delete mode 100644 composer/vendor/react/promise/src/Deferred.php delete mode 100644 composer/vendor/react/promise/src/Exception/LengthException.php delete mode 100644 composer/vendor/react/promise/src/ExtendedPromiseInterface.php delete mode 100644 composer/vendor/react/promise/src/FulfilledPromise.php delete mode 100644 composer/vendor/react/promise/src/LazyPromise.php delete mode 100644 composer/vendor/react/promise/src/Promise.php delete mode 100644 composer/vendor/react/promise/src/PromiseInterface.php delete mode 100644 composer/vendor/react/promise/src/PromisorInterface.php delete mode 100644 composer/vendor/react/promise/src/RejectedPromise.php delete mode 100644 composer/vendor/react/promise/src/UnhandledRejectionException.php delete mode 100644 composer/vendor/react/promise/src/functions.php delete mode 100644 composer/vendor/react/promise/src/functions_include.php delete mode 100644 composer/vendor/seld/jsonlint/LICENSE delete mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php delete mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php delete mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php delete mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php delete mode 100644 composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php delete mode 100644 composer/vendor/seld/phar-utils/LICENSE delete mode 100644 composer/vendor/seld/phar-utils/src/Linter.php delete mode 100644 composer/vendor/seld/phar-utils/src/Timestamps.php delete mode 100644 composer/vendor/seld/signal-handler/LICENSE delete mode 100644 composer/vendor/seld/signal-handler/src/SignalHandler.php delete mode 100644 composer/vendor/symfony/console/Application.php delete mode 100644 composer/vendor/symfony/console/Attribute/AsCommand.php delete mode 100644 composer/vendor/symfony/console/CI/GithubActionReporter.php delete mode 100644 composer/vendor/symfony/console/Color.php delete mode 100644 composer/vendor/symfony/console/Command/Command.php delete mode 100644 composer/vendor/symfony/console/Command/CompleteCommand.php delete mode 100644 composer/vendor/symfony/console/Command/DumpCompletionCommand.php delete mode 100644 composer/vendor/symfony/console/Command/HelpCommand.php delete mode 100644 composer/vendor/symfony/console/Command/LazyCommand.php delete mode 100644 composer/vendor/symfony/console/Command/ListCommand.php delete mode 100644 composer/vendor/symfony/console/Command/LockableTrait.php delete mode 100644 composer/vendor/symfony/console/Command/SignalableCommandInterface.php delete mode 100644 composer/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php delete mode 100644 composer/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php delete mode 100644 composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php delete mode 100644 composer/vendor/symfony/console/Completion/CompletionInput.php delete mode 100644 composer/vendor/symfony/console/Completion/CompletionSuggestions.php delete mode 100644 composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php delete mode 100644 composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php delete mode 100644 composer/vendor/symfony/console/Completion/Suggestion.php delete mode 100644 composer/vendor/symfony/console/ConsoleEvents.php delete mode 100644 composer/vendor/symfony/console/Cursor.php delete mode 100644 composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php delete mode 100644 composer/vendor/symfony/console/Descriptor/ApplicationDescription.php delete mode 100644 composer/vendor/symfony/console/Descriptor/Descriptor.php delete mode 100644 composer/vendor/symfony/console/Descriptor/DescriptorInterface.php delete mode 100644 composer/vendor/symfony/console/Descriptor/JsonDescriptor.php delete mode 100644 composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php delete mode 100644 composer/vendor/symfony/console/Descriptor/TextDescriptor.php delete mode 100644 composer/vendor/symfony/console/Descriptor/XmlDescriptor.php delete mode 100644 composer/vendor/symfony/console/Event/ConsoleCommandEvent.php delete mode 100644 composer/vendor/symfony/console/Event/ConsoleErrorEvent.php delete mode 100644 composer/vendor/symfony/console/Event/ConsoleEvent.php delete mode 100644 composer/vendor/symfony/console/Event/ConsoleSignalEvent.php delete mode 100644 composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php delete mode 100644 composer/vendor/symfony/console/EventListener/ErrorListener.php delete mode 100644 composer/vendor/symfony/console/Exception/CommandNotFoundException.php delete mode 100644 composer/vendor/symfony/console/Exception/ExceptionInterface.php delete mode 100644 composer/vendor/symfony/console/Exception/InvalidArgumentException.php delete mode 100644 composer/vendor/symfony/console/Exception/InvalidOptionException.php delete mode 100644 composer/vendor/symfony/console/Exception/LogicException.php delete mode 100644 composer/vendor/symfony/console/Exception/MissingInputException.php delete mode 100644 composer/vendor/symfony/console/Exception/NamespaceNotFoundException.php delete mode 100644 composer/vendor/symfony/console/Exception/RuntimeException.php delete mode 100644 composer/vendor/symfony/console/Formatter/NullOutputFormatter.php delete mode 100644 composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php delete mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatter.php delete mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php delete mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterStyle.php delete mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php delete mode 100644 composer/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php delete mode 100644 composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php delete mode 100644 composer/vendor/symfony/console/Helper/DebugFormatterHelper.php delete mode 100644 composer/vendor/symfony/console/Helper/DescriptorHelper.php delete mode 100644 composer/vendor/symfony/console/Helper/Dumper.php delete mode 100644 composer/vendor/symfony/console/Helper/FormatterHelper.php delete mode 100644 composer/vendor/symfony/console/Helper/Helper.php delete mode 100644 composer/vendor/symfony/console/Helper/HelperInterface.php delete mode 100644 composer/vendor/symfony/console/Helper/HelperSet.php delete mode 100644 composer/vendor/symfony/console/Helper/InputAwareHelper.php delete mode 100644 composer/vendor/symfony/console/Helper/ProcessHelper.php delete mode 100644 composer/vendor/symfony/console/Helper/ProgressBar.php delete mode 100644 composer/vendor/symfony/console/Helper/ProgressIndicator.php delete mode 100644 composer/vendor/symfony/console/Helper/QuestionHelper.php delete mode 100644 composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php delete mode 100644 composer/vendor/symfony/console/Helper/Table.php delete mode 100644 composer/vendor/symfony/console/Helper/TableCell.php delete mode 100644 composer/vendor/symfony/console/Helper/TableCellStyle.php delete mode 100644 composer/vendor/symfony/console/Helper/TableRows.php delete mode 100644 composer/vendor/symfony/console/Helper/TableSeparator.php delete mode 100644 composer/vendor/symfony/console/Helper/TableStyle.php delete mode 100644 composer/vendor/symfony/console/Input/ArgvInput.php delete mode 100644 composer/vendor/symfony/console/Input/ArrayInput.php delete mode 100644 composer/vendor/symfony/console/Input/Input.php delete mode 100644 composer/vendor/symfony/console/Input/InputArgument.php delete mode 100644 composer/vendor/symfony/console/Input/InputAwareInterface.php delete mode 100644 composer/vendor/symfony/console/Input/InputDefinition.php delete mode 100644 composer/vendor/symfony/console/Input/InputInterface.php delete mode 100644 composer/vendor/symfony/console/Input/InputOption.php delete mode 100644 composer/vendor/symfony/console/Input/StreamableInputInterface.php delete mode 100644 composer/vendor/symfony/console/Input/StringInput.php delete mode 100644 composer/vendor/symfony/console/LICENSE delete mode 100644 composer/vendor/symfony/console/Logger/ConsoleLogger.php delete mode 100644 composer/vendor/symfony/console/Output/BufferedOutput.php delete mode 100644 composer/vendor/symfony/console/Output/ConsoleOutput.php delete mode 100644 composer/vendor/symfony/console/Output/ConsoleOutputInterface.php delete mode 100644 composer/vendor/symfony/console/Output/ConsoleSectionOutput.php delete mode 100644 composer/vendor/symfony/console/Output/NullOutput.php delete mode 100644 composer/vendor/symfony/console/Output/Output.php delete mode 100644 composer/vendor/symfony/console/Output/OutputInterface.php delete mode 100644 composer/vendor/symfony/console/Output/StreamOutput.php delete mode 100644 composer/vendor/symfony/console/Output/TrimmedBufferOutput.php delete mode 100644 composer/vendor/symfony/console/Question/ChoiceQuestion.php delete mode 100644 composer/vendor/symfony/console/Question/ConfirmationQuestion.php delete mode 100644 composer/vendor/symfony/console/Question/Question.php delete mode 100644 composer/vendor/symfony/console/Resources/bin/hiddeninput.exe delete mode 100644 composer/vendor/symfony/console/Resources/completion.bash delete mode 100644 composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php delete mode 100644 composer/vendor/symfony/console/SingleCommandApplication.php delete mode 100644 composer/vendor/symfony/console/Style/OutputStyle.php delete mode 100644 composer/vendor/symfony/console/Style/StyleInterface.php delete mode 100644 composer/vendor/symfony/console/Style/SymfonyStyle.php delete mode 100644 composer/vendor/symfony/console/Terminal.php delete mode 100644 composer/vendor/symfony/console/Tester/ApplicationTester.php delete mode 100644 composer/vendor/symfony/console/Tester/CommandCompletionTester.php delete mode 100644 composer/vendor/symfony/console/Tester/CommandTester.php delete mode 100644 composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php delete mode 100644 composer/vendor/symfony/console/Tester/TesterTrait.php delete mode 100644 composer/vendor/symfony/deprecation-contracts/LICENSE delete mode 100644 composer/vendor/symfony/deprecation-contracts/function.php delete mode 100644 composer/vendor/symfony/filesystem/Exception/ExceptionInterface.php delete mode 100644 composer/vendor/symfony/filesystem/Exception/FileNotFoundException.php delete mode 100644 composer/vendor/symfony/filesystem/Exception/IOException.php delete mode 100644 composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php delete mode 100644 composer/vendor/symfony/filesystem/Exception/InvalidArgumentException.php delete mode 100644 composer/vendor/symfony/filesystem/Exception/RuntimeException.php delete mode 100644 composer/vendor/symfony/filesystem/Filesystem.php delete mode 100644 composer/vendor/symfony/filesystem/LICENSE delete mode 100644 composer/vendor/symfony/filesystem/Path.php delete mode 100644 composer/vendor/symfony/finder/Comparator/Comparator.php delete mode 100644 composer/vendor/symfony/finder/Comparator/DateComparator.php delete mode 100644 composer/vendor/symfony/finder/Comparator/NumberComparator.php delete mode 100644 composer/vendor/symfony/finder/Exception/AccessDeniedException.php delete mode 100644 composer/vendor/symfony/finder/Exception/DirectoryNotFoundException.php delete mode 100644 composer/vendor/symfony/finder/Finder.php delete mode 100644 composer/vendor/symfony/finder/Gitignore.php delete mode 100644 composer/vendor/symfony/finder/Glob.php delete mode 100644 composer/vendor/symfony/finder/Iterator/CustomFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/LazyIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/PathFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/SortableIterator.php delete mode 100644 composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php delete mode 100644 composer/vendor/symfony/finder/LICENSE delete mode 100644 composer/vendor/symfony/finder/SplFileInfo.php delete mode 100644 composer/vendor/symfony/polyfill-ctype/Ctype.php delete mode 100644 composer/vendor/symfony/polyfill-ctype/LICENSE delete mode 100644 composer/vendor/symfony/polyfill-ctype/bootstrap.php delete mode 100644 composer/vendor/symfony/polyfill-ctype/bootstrap80.php delete mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/Grapheme.php delete mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/LICENSE delete mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php delete mode 100644 composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/LICENSE delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Normalizer.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php delete mode 100644 composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php delete mode 100644 composer/vendor/symfony/polyfill-mbstring/LICENSE delete mode 100644 composer/vendor/symfony/polyfill-mbstring/Mbstring.php delete mode 100644 composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php delete mode 100644 composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php delete mode 100644 composer/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php delete mode 100644 composer/vendor/symfony/polyfill-mbstring/bootstrap.php delete mode 100644 composer/vendor/symfony/polyfill-mbstring/bootstrap80.php delete mode 100644 composer/vendor/symfony/polyfill-php73/LICENSE delete mode 100644 composer/vendor/symfony/polyfill-php73/Php73.php delete mode 100644 composer/vendor/symfony/polyfill-php73/Resources/stubs/JsonException.php delete mode 100644 composer/vendor/symfony/polyfill-php73/bootstrap.php delete mode 100644 composer/vendor/symfony/polyfill-php80/LICENSE delete mode 100644 composer/vendor/symfony/polyfill-php80/Php80.php delete mode 100644 composer/vendor/symfony/polyfill-php80/PhpToken.php delete mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php delete mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php delete mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php delete mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php delete mode 100644 composer/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php delete mode 100644 composer/vendor/symfony/polyfill-php80/bootstrap.php delete mode 100644 composer/vendor/symfony/polyfill-php81/LICENSE delete mode 100644 composer/vendor/symfony/polyfill-php81/Php81.php delete mode 100644 composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php delete mode 100644 composer/vendor/symfony/polyfill-php81/bootstrap.php delete mode 100644 composer/vendor/symfony/process/Exception/ExceptionInterface.php delete mode 100644 composer/vendor/symfony/process/Exception/InvalidArgumentException.php delete mode 100644 composer/vendor/symfony/process/Exception/LogicException.php delete mode 100644 composer/vendor/symfony/process/Exception/ProcessFailedException.php delete mode 100644 composer/vendor/symfony/process/Exception/ProcessSignaledException.php delete mode 100644 composer/vendor/symfony/process/Exception/ProcessTimedOutException.php delete mode 100644 composer/vendor/symfony/process/Exception/RuntimeException.php delete mode 100644 composer/vendor/symfony/process/ExecutableFinder.php delete mode 100644 composer/vendor/symfony/process/InputStream.php delete mode 100644 composer/vendor/symfony/process/LICENSE delete mode 100644 composer/vendor/symfony/process/PhpExecutableFinder.php delete mode 100644 composer/vendor/symfony/process/PhpProcess.php delete mode 100644 composer/vendor/symfony/process/Pipes/AbstractPipes.php delete mode 100644 composer/vendor/symfony/process/Pipes/PipesInterface.php delete mode 100644 composer/vendor/symfony/process/Pipes/UnixPipes.php delete mode 100644 composer/vendor/symfony/process/Pipes/WindowsPipes.php delete mode 100644 composer/vendor/symfony/process/Process.php delete mode 100644 composer/vendor/symfony/process/ProcessUtils.php delete mode 100644 composer/vendor/symfony/service-contracts/Attribute/Required.php delete mode 100644 composer/vendor/symfony/service-contracts/Attribute/SubscribedService.php delete mode 100644 composer/vendor/symfony/service-contracts/LICENSE delete mode 100644 composer/vendor/symfony/service-contracts/ResetInterface.php delete mode 100644 composer/vendor/symfony/service-contracts/ServiceLocatorTrait.php delete mode 100644 composer/vendor/symfony/service-contracts/ServiceProviderInterface.php delete mode 100644 composer/vendor/symfony/service-contracts/ServiceSubscriberInterface.php delete mode 100644 composer/vendor/symfony/service-contracts/ServiceSubscriberTrait.php delete mode 100644 composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php delete mode 100644 composer/vendor/symfony/string/AbstractString.php delete mode 100644 composer/vendor/symfony/string/AbstractUnicodeString.php delete mode 100644 composer/vendor/symfony/string/ByteString.php delete mode 100644 composer/vendor/symfony/string/CodePointString.php delete mode 100644 composer/vendor/symfony/string/Exception/ExceptionInterface.php delete mode 100644 composer/vendor/symfony/string/Exception/InvalidArgumentException.php delete mode 100644 composer/vendor/symfony/string/Exception/RuntimeException.php delete mode 100644 composer/vendor/symfony/string/Inflector/EnglishInflector.php delete mode 100644 composer/vendor/symfony/string/Inflector/FrenchInflector.php delete mode 100644 composer/vendor/symfony/string/Inflector/InflectorInterface.php delete mode 100644 composer/vendor/symfony/string/LICENSE delete mode 100644 composer/vendor/symfony/string/LazyString.php delete mode 100644 composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php delete mode 100644 composer/vendor/symfony/string/Resources/data/wcswidth_table_zero.php delete mode 100644 composer/vendor/symfony/string/Resources/functions.php delete mode 100644 composer/vendor/symfony/string/Slugger/AsciiSlugger.php delete mode 100644 composer/vendor/symfony/string/Slugger/SluggerInterface.php delete mode 100644 composer/vendor/symfony/string/UnicodeString.php diff --git a/Box54346/.box/.requirements.php b/Box54346/.box/.requirements.php deleted file mode 100644 index 3e361d94e..000000000 --- a/Box54346/.box/.requirements.php +++ /dev/null @@ -1,11 +0,0 @@ - - array ( - 'type' => 'php', - 'condition' => '^8.1', - 'message' => 'The application requires a version matching "^8.1".', - 'helpMessage' => 'The application requires a version matching "^8.1".', - ), -); \ No newline at end of file diff --git a/Box54346/.box/bin/check-requirements.php b/Box54346/.box/bin/check-requirements.php deleted file mode 100644 index d10122705..000000000 --- a/Box54346/.box/bin/check-requirements.php +++ /dev/null @@ -1,24 +0,0 @@ -evaluateRequirements(); - $io = new IO(); - self::printCheck($checkPassed, new Printer($io->getVerbosity(), $io->hasColorSupport()), $requirements); - return $checkPassed; - } - public static function printCheck($checkPassed, Printer $printer, RequirementCollection $requirements) : void - { - if (\false === $checkPassed && IO::VERBOSITY_VERY_VERBOSE > $printer->getVerbosity()) { - $printer->setVerbosity(IO::VERBOSITY_VERY_VERBOSE); - } - $verbosity = IO::VERBOSITY_VERY_VERBOSE; - $iniPath = $requirements->getPhpIniPath(); - $printer->title('Box Requirements Checker', $verbosity); - $printer->printv('> Using PHP ', $verbosity); - $printer->printvln(\PHP_VERSION, $verbosity, 'green'); - $printer->printvln('> PHP is using the following php.ini file:', $verbosity); - if ($iniPath) { - $printer->printvln(' ' . $iniPath, $verbosity, 'green'); - } else { - $printer->printvln(' WARNING: No configuration file (php.ini) used by PHP!', $verbosity, 'yellow'); - } - $printer->printvln('', $verbosity); - if (count($requirements) > 0) { - $printer->printvln('> Checking Box requirements:', $verbosity); - $printer->printv(' ', $verbosity); - } else { - $printer->printvln('> No requirements found.', $verbosity); - } - $errorMessages = []; - foreach ($requirements->getRequirements() as $requirement) { - if ($errorMessage = $printer->getRequirementErrorMessage($requirement)) { - if (IO::VERBOSITY_DEBUG === $printer->getVerbosity()) { - $printer->printvln('✘ ' . $requirement->getTestMessage(), IO::VERBOSITY_DEBUG, 'red'); - $printer->printv(' ', IO::VERBOSITY_DEBUG); - $errorMessages[] = $errorMessage; - } else { - $printer->printv('E', $verbosity, 'red'); - $errorMessages[] = $errorMessage; - } - continue; - } - if (IO::VERBOSITY_DEBUG === $printer->getVerbosity()) { - $printer->printvln('✔ ' . $requirement->getTestMessage(), IO::VERBOSITY_DEBUG, 'green'); - $printer->printv(' ', IO::VERBOSITY_DEBUG); - } else { - $printer->printv('.', $verbosity, 'green'); - } - } - if (IO::VERBOSITY_DEBUG !== $printer->getVerbosity() && count($requirements) > 0) { - $printer->printvln('', $verbosity); - } - if ($requirements->evaluateRequirements()) { - $printer->block('OK', 'Your system is ready to run the application.', $verbosity, 'success'); - } else { - $printer->block('ERROR', 'Your system is not ready to run the application.', $verbosity, 'error'); - $printer->title('Fix the following mandatory requirements:', $verbosity, 'red'); - foreach ($errorMessages as $errorMessage) { - $printer->printv(' * ' . $errorMessage, $verbosity); - } - } - $printer->printvln('', $verbosity); - } - private static function retrieveRequirements() : RequirementCollection - { - if (null === self::$requirementsConfig) { - self::$requirementsConfig = __DIR__ . '/../.requirements.php'; - } - $config = (require self::$requirementsConfig); - $requirements = new RequirementCollection(); - foreach ($config as $constraint) { - $requirements->addRequirement(self::createCondition($constraint['type'], $constraint['condition']), $constraint['message'], $constraint['helpMessage']); - } - return $requirements; - } - private static function createCondition($type, $condition) : IsFulfilled - { - switch ($type) { - case 'php': - return new IsPhpVersionFulfilled($condition); - case 'extension': - return new IsExtensionFulfilled($condition); - case 'extension-conflict': - return new IsExtensionConflictFulfilled($condition); - default: - throw new InvalidArgumentException(sprintf('Unknown requirement type "%s".', $type)); - } - } -} diff --git a/Box54346/.box/src/IO.php b/Box54346/.box/src/IO.php deleted file mode 100644 index c11b4fd7c..000000000 --- a/Box54346/.box/src/IO.php +++ /dev/null @@ -1,127 +0,0 @@ -options = implode(' ', $_SERVER['argv']); - $shellVerbosity = $this->configureVerbosity(); - $this->interactive = $this->checkInteractivity($shellVerbosity); - $this->colorSupport = $this->checkColorSupport(); - } - public function isInteractive() : bool - { - return $this->interactive; - } - public function getVerbosity() : int - { - return $this->verbosity; - } - public function hasColorSupport() : bool - { - return $this->colorSupport; - } - public function hasParameter($values) : bool - { - $values = (array) $values; - foreach ($values as $value) { - $regexp = sprintf('/\\s%s\\b/', str_replace(' ', '\\s+', preg_quote($value, '/'))); - if (1 === preg_match($regexp, $this->options)) { - return \true; - } - } - return \false; - } - private function checkInteractivity(int $shellVerbosity) : bool - { - if (-1 === $shellVerbosity) { - return \false; - } - if (\true === $this->hasParameter(['--no-interaction', '-n'])) { - return \false; - } - if (function_exists('posix_isatty') && !@posix_isatty(STDOUT) && \false === getenv('SHELL_INTERACTIVE')) { - return \false; - } - return \true; - } - private function configureVerbosity() : int - { - switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { - case -1: - $this->verbosity = self::VERBOSITY_QUIET; - break; - case 1: - $this->verbosity = self::VERBOSITY_VERBOSE; - break; - case 2: - $this->verbosity = self::VERBOSITY_VERY_VERBOSE; - break; - case 3: - $this->verbosity = self::VERBOSITY_DEBUG; - break; - default: - $shellVerbosity = 0; - break; - } - if ($this->hasParameter(['--quiet', '-q'])) { - $this->verbosity = self::VERBOSITY_QUIET; - $shellVerbosity = -1; - } elseif ($this->hasParameter(['-vvv', '--verbose=3', '--verbose 3'])) { - $this->verbosity = self::VERBOSITY_DEBUG; - $shellVerbosity = 3; - } elseif ($this->hasParameter(['-vv', '--verbose=2', '--verbose 2'])) { - $this->verbosity = self::VERBOSITY_VERY_VERBOSE; - $shellVerbosity = 2; - } elseif ($this->hasParameter(['-v', '--verbose=1', '--verbose 1', '--verbose'])) { - $this->verbosity = self::VERBOSITY_VERBOSE; - $shellVerbosity = 1; - } - return $shellVerbosity; - } - private function checkColorSupport() : bool - { - if ($this->hasParameter(['--ansi'])) { - return \true; - } - if ($this->hasParameter(['--no-ansi'])) { - return \false; - } - if (DIRECTORY_SEPARATOR === '\\') { - return function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(STDOUT) || \false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI') || 'xterm' === getenv('TERM'); - } - if (function_exists('stream_isatty')) { - return stream_isatty(STDOUT); - } - if (function_exists('posix_isatty')) { - return posix_isatty(STDOUT); - } - $stat = fstat(STDOUT); - return $stat ? 020000 === ($stat['mode'] & 0170000) : \false; - } -} diff --git a/Box54346/.box/src/IsExtensionConflictFulfilled.php b/Box54346/.box/src/IsExtensionConflictFulfilled.php deleted file mode 100644 index fda9e22d1..000000000 --- a/Box54346/.box/src/IsExtensionConflictFulfilled.php +++ /dev/null @@ -1,18 +0,0 @@ -conflictingExtension = $requiredExtension; - } - public function __invoke() : bool - { - return !extension_loaded($this->conflictingExtension); - } -} diff --git a/Box54346/.box/src/IsExtensionFulfilled.php b/Box54346/.box/src/IsExtensionFulfilled.php deleted file mode 100644 index 25542acdc..000000000 --- a/Box54346/.box/src/IsExtensionFulfilled.php +++ /dev/null @@ -1,18 +0,0 @@ -requiredExtension = $requiredExtension; - } - public function __invoke() : bool - { - return extension_loaded($this->requiredExtension); - } -} diff --git a/Box54346/.box/src/IsFulfilled.php b/Box54346/.box/src/IsFulfilled.php deleted file mode 100644 index 90c2444f8..000000000 --- a/Box54346/.box/src/IsFulfilled.php +++ /dev/null @@ -1,9 +0,0 @@ -requiredPhpVersion = $requiredPhpVersion; - } - public function __invoke() : bool - { - return Semver::satisfies(sprintf('%d.%d.%d', PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION), $this->requiredPhpVersion); - } -} diff --git a/Box54346/.box/src/Printer.php b/Box54346/.box/src/Printer.php deleted file mode 100644 index 601e6d953..000000000 --- a/Box54346/.box/src/Printer.php +++ /dev/null @@ -1,104 +0,0 @@ - "\x1b[0m", 'red' => "\x1b[31m", 'green' => "\x1b[32m", 'yellow' => "\x1b[33m", 'title' => "\x1b[33m", 'error' => "\x1b[37;41m", 'success' => "\x1b[30;42m"]; - private $verbosity; - private $supportColors; - private $width; - public function __construct(int $verbosity, bool $supportColors, ?int $width = null) - { - if (null === $width) { - $terminal = new Terminal(); - $width = $terminal->getWidth(); - } - $this->verbosity = $verbosity; - $this->supportColors = $supportColors; - $this->width = $width ?: 80; - } - public function getVerbosity() : int - { - return $this->verbosity; - } - public function setVerbosity($verbosity) : void - { - $this->verbosity = $verbosity; - } - public function title(string $title, int $verbosity, ?string $style = null) : void - { - if (null === $style) { - $style = 'title'; - } - $this->printvln('', $verbosity, $style); - $this->printvln($title, $verbosity, $style); - $this->printvln(str_repeat('=', min(strlen($title), $this->width)), $verbosity, $style); - $this->printvln('', $verbosity, $style); - } - public function getRequirementErrorMessage(Requirement $requirement) : ?string - { - if ($requirement->isFulfilled()) { - return null; - } - return wordwrap($requirement->getHelpText(), $this->width - 3, PHP_EOL . ' ') . PHP_EOL; - } - public function block(string $title, string $message, int $verbosity, ?string $style = null) : void - { - $prefix = ' [' . $title . '] '; - $lineLength = $this->width - strlen($prefix) - 1; - if ($lineLength < 0) { - $lineLength = 0; - } - $message = $prefix . trim($message); - $lines = []; - $remainingMessage = $message; - $wrapped = wordwrap($remainingMessage, $lineLength, '¬'); - $wrapped = explode('¬', $wrapped); - do { - $line = array_shift($wrapped); - if ($lines && $lineLength > 0) { - $line = str_repeat(' ', strlen($prefix)) . ltrim($line); - } - $lines[] = str_pad($line, $this->width, ' ', \STR_PAD_RIGHT); - } while (count($wrapped)); - $this->printvln('', $verbosity); - $this->printvln(str_repeat(' ', $this->width), $verbosity, $style); - foreach ($lines as $line) { - $this->printvln($line, $verbosity, $style); - } - $this->printv(str_repeat(' ', $this->width), $verbosity, $style); - $this->printvln('', $verbosity); - } - public function printvln(string $message, int $verbosity, ?string $style = null) : void - { - $this->printv($message, $verbosity, $style); - $this->printv(PHP_EOL, $verbosity, null); - } - public function printv(string $message, int $verbosity, ?string $style = null) : void - { - if ($verbosity > $this->verbosity) { - return; - } - $message = wordwrap($message, $this->width); - $message = sprintf('%s%s%s', $this->supportColors && isset($this->styles[$style]) ? $this->styles[$style] : '', $message, $this->supportColors ? $this->styles['reset'] : ''); - if ('1' === \getenv('BOX_REQUIREMENTS_CHECKER_LOG_TO_STDOUT')) { - echo $message; - } else { - \fwrite(\STDERR, $message); - } - } -} diff --git a/Box54346/.box/src/Requirement.php b/Box54346/.box/src/Requirement.php deleted file mode 100644 index 1869ae04a..000000000 --- a/Box54346/.box/src/Requirement.php +++ /dev/null @@ -1,37 +0,0 @@ -checkIsFulfilled = $checkIsFulfilled; - $this->testMessage = $testMessage; - $this->helpText = $helpText; - } - public function isFulfilled() : bool - { - if (!isset($this->fulfilled)) { - $this->fulfilled = $this->checkIsFulfilled->__invoke(); - } - return $this->fulfilled; - } - public function getIsFullfilledChecker() : IsFulfilled - { - return $this->checkIsFulfilled; - } - public function getTestMessage() : string - { - return $this->testMessage; - } - public function getHelpText() : string - { - return $this->helpText; - } -} diff --git a/Box54346/.box/src/RequirementCollection.php b/Box54346/.box/src/RequirementCollection.php deleted file mode 100644 index 7918b39f9..000000000 --- a/Box54346/.box/src/RequirementCollection.php +++ /dev/null @@ -1,45 +0,0 @@ -requirements); - } - public function count() : int - { - return count($this->requirements); - } - public function add(Requirement $requirement) : void - { - $this->requirements[] = $requirement; - } - public function addRequirement(IsFulfilled $checkIsFulfilled, string $testMessage, string $helpText) : void - { - $this->add(new Requirement($checkIsFulfilled, $testMessage, $helpText)); - } - public function getRequirements() : array - { - return $this->requirements; - } - public function getPhpIniPath() - { - return get_cfg_var('cfg_file_path'); - } - public function evaluateRequirements() - { - return \array_reduce($this->requirements, function (bool $checkPassed, Requirement $requirement) : bool { - return $checkPassed && $requirement->isFulfilled(); - }, \true); - } -} diff --git a/Box54346/.box/src/Terminal.php b/Box54346/.box/src/Terminal.php deleted file mode 100644 index e5b408671..000000000 --- a/Box54346/.box/src/Terminal.php +++ /dev/null @@ -1,117 +0,0 @@ -&1', $output, $exitcode); - return self::$stty = 0 === $exitcode; - } - private static function initDimensions() : void - { - if ('\\' === DIRECTORY_SEPARATOR) { - if (preg_match('/^(\\d+)x(\\d+)(?: \\((\\d+)x(\\d+)\\))?$/', trim(getenv('ANSICON')), $matches)) { - self::$width = (int) $matches[1]; - self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; - } elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { - self::initDimensionsUsingStty(); - } elseif (null !== ($dimensions = self::getConsoleMode())) { - self::$width = (int) $dimensions[0]; - self::$height = (int) $dimensions[1]; - } - } else { - self::initDimensionsUsingStty(); - } - } - private static function hasVt100Support() : bool - { - return function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(fopen('php://stdout', 'wb')); - } - private static function initDimensionsUsingStty() : void - { - if ($sttyString = self::getSttyColumns()) { - if (preg_match('/rows.(\\d+);.columns.(\\d+);/i', $sttyString, $matches)) { - self::$width = (int) $matches[2]; - self::$height = (int) $matches[1]; - } elseif (preg_match('/;.(\\d+).rows;.(\\d+).columns/i', $sttyString, $matches)) { - self::$width = (int) $matches[2]; - self::$height = (int) $matches[1]; - } - } - } - private static function getConsoleMode() : ?array - { - $info = self::readFromProcess('mode CON'); - if (null === $info || !preg_match('/--------+\\r?\\n.+?(\\d+)\\r?\\n.+?(\\d+)\\r?\\n/', $info, $matches)) { - return null; - } - return [(int) $matches[2], (int) $matches[1]]; - } - private static function getSttyColumns() : ?string - { - return self::readFromProcess('stty -a | grep columns'); - } - private static function readFromProcess(string $command) : ?string - { - if (!function_exists('proc_open')) { - return null; - } - $descriptorspec = [1 => ['pipe', 'w'], 2 => ['pipe', 'w']]; - $process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => \true]); - if (!is_resource($process)) { - return null; - } - $info = stream_get_contents($pipes[1]); - fclose($pipes[1]); - fclose($pipes[2]); - proc_close($process); - return $info; - } -} diff --git a/Box54346/.box/vendor/autoload.php b/Box54346/.box/vendor/autoload.php deleted file mode 100644 index 46e58bc25..000000000 --- a/Box54346/.box/vendor/autoload.php +++ /dev/null @@ -1,25 +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 https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array $classMap - * - * @return void - */ - 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 string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 string[]|string $paths The PSR-0 base directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * 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; - } - - /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. - * - * @return self[] - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - 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; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/Box54346/.box/vendor/composer/InstalledVersions.php b/Box54346/.box/vendor/composer/InstalledVersions.php deleted file mode 100644 index 6378fbae1..000000000 --- a/Box54346/.box/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,203 +0,0 @@ - $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - return $packagesByType; - } - public static function isInstalled($packageName, $includeDevRequirements = \true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); - } - } - return \false; - } - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints($constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - return $provided->matches($constraint); - } - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (\array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = \array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (\array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = \array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (\array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = \array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - return \implode(' || ', $ranges); - } - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - return $installed['versions'][$packageName]['version']; - } - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - return $installed['versions'][$packageName]['pretty_version']; - } - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - return $installed['versions'][$packageName]['reference']; - } - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - /** - @psalm-return - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - return $installed[0]['root']; - } - /** - @psalm-return - */ - public static function getRawData() - { - @\trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', \E_USER_DEPRECATED); - if (null === self::$installed) { - if (\substr(__DIR__, -8, 1) !== 'C') { - self::$installed = (include __DIR__ . '/installed.php'); - } else { - self::$installed = array(); - } - } - return self::$installed; - } - /** - @psalm-return - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - /** - @psalm-param - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - /** - @psalm-return - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = \method_exists('HumbugBox420\\Composer\\Autoload\\ClassLoader', 'getRegisteredLoaders'); - } - $installed = array(); - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (\is_file($vendorDir . '/composer/installed.php')) { - $installed[] = self::$installedByVendor[$vendorDir] = (require $vendorDir . '/composer/installed.php'); - if (null === self::$installed && \strtr($vendorDir . '/composer', '\\', '/') === \strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[\count($installed) - 1]; - } - } - } - } - if (null === self::$installed) { - if (\substr(__DIR__, -8, 1) !== 'C') { - self::$installed = (require __DIR__ . '/installed.php'); - } else { - self::$installed = array(); - } - } - $installed[] = self::$installed; - return $installed; - } -} diff --git a/Box54346/.box/vendor/composer/LICENSE b/Box54346/.box/vendor/composer/LICENSE deleted file mode 100644 index f27399a04..000000000 --- a/Box54346/.box/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/Box54346/.box/vendor/composer/autoload_classmap.php b/Box54346/.box/vendor/composer/autoload_classmap.php deleted file mode 100644 index 3a598f91c..000000000 --- a/Box54346/.box/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,32 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', - 'HumbugBox420\\Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', - 'HumbugBox420\\Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', - 'HumbugBox420\\Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php', - 'HumbugBox420\\Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php', - 'HumbugBox420\\Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', - 'HumbugBox420\\Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Checker' => $baseDir . '/src/Checker.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IO' => $baseDir . '/src/IO.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionConflictFulfilled' => $baseDir . '/src/IsExtensionConflictFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionFulfilled' => $baseDir . '/src/IsExtensionFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsFulfilled' => $baseDir . '/src/IsFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsPhpVersionFulfilled' => $baseDir . '/src/IsPhpVersionFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Printer' => $baseDir . '/src/Printer.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Requirement' => $baseDir . '/src/Requirement.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\RequirementCollection' => $baseDir . '/src/RequirementCollection.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Terminal' => $baseDir . '/src/Terminal.php', -); diff --git a/Box54346/.box/vendor/composer/autoload_namespaces.php b/Box54346/.box/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3ad..000000000 --- a/Box54346/.box/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($baseDir . '/src'), - 'HumbugBox420\\Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), -); diff --git a/Box54346/.box/vendor/composer/autoload_real.php b/Box54346/.box/vendor/composer/autoload_real.php deleted file mode 100644 index 212cc3d59..000000000 --- a/Box54346/.box/vendor/composer/autoload_real.php +++ /dev/null @@ -1,37 +0,0 @@ -setClassMapAuthoritative(true); - $loader->register(true); - - return $loader; - } -} diff --git a/Box54346/.box/vendor/composer/autoload_static.php b/Box54346/.box/vendor/composer/autoload_static.php deleted file mode 100644 index e3856d509..000000000 --- a/Box54346/.box/vendor/composer/autoload_static.php +++ /dev/null @@ -1,63 +0,0 @@ - - array ( - 'HumbugBox420\\KevinGH\\RequirementChecker\\' => 40, - 'HumbugBox420\\Composer\\Semver\\' => 29, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'HumbugBox420\\KevinGH\\RequirementChecker\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), - 'HumbugBox420\\Composer\\Semver\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/semver/src', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'HumbugBox420\\Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', - 'HumbugBox420\\Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php', - 'HumbugBox420\\Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', - 'HumbugBox420\\Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php', - 'HumbugBox420\\Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php', - 'HumbugBox420\\Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', - 'HumbugBox420\\Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Checker' => __DIR__ . '/../..' . '/src/Checker.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IO' => __DIR__ . '/../..' . '/src/IO.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionConflictFulfilled' => __DIR__ . '/../..' . '/src/IsExtensionConflictFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsExtensionFulfilled' => __DIR__ . '/../..' . '/src/IsExtensionFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsFulfilled' => __DIR__ . '/../..' . '/src/IsFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\IsPhpVersionFulfilled' => __DIR__ . '/../..' . '/src/IsPhpVersionFulfilled.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Printer' => __DIR__ . '/../..' . '/src/Printer.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Requirement' => __DIR__ . '/../..' . '/src/Requirement.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\RequirementCollection' => __DIR__ . '/../..' . '/src/RequirementCollection.php', - 'HumbugBox420\\KevinGH\\RequirementChecker\\Terminal' => __DIR__ . '/../..' . '/src/Terminal.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitHumbugBox420::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitHumbugBox420::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitHumbugBox420::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/Box54346/.box/vendor/composer/installed.php b/Box54346/.box/vendor/composer/installed.php deleted file mode 100644 index 1f4d0ffe7..000000000 --- a/Box54346/.box/vendor/composer/installed.php +++ /dev/null @@ -1,5 +0,0 @@ - array('name' => 'humbug/requirement-checker', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ce244bb2d6c3e030748d4b5e5f23c618a5d0d85e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \true), 'versions' => array('composer/semver' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/instantiator' => array('pretty_version' => '1.4.1', 'version' => '1.4.1.0', 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/instantiator', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/composer-normalize' => array('pretty_version' => '2.29.0', 'version' => '2.29.0.0', 'reference' => 'fad0e99b16c625817a5bfd910e4d7e31999c53b2', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../ergebnis/composer-normalize', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-normalizer' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '2039eb11131a243b9204bf51219baa08935e6b1d', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-normalizer', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-printer' => array('pretty_version' => '3.3.0', 'version' => '3.3.0.0', 'reference' => '18920367473b099633f644f0ca6dc8794345148f', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-printer', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-schema-validator' => array('pretty_version' => '2.0.0', 'version' => '2.0.0.0', 'reference' => 'dacd8a47c1cc2c426ec71e952da3609ebe901fac', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-schema-validator', 'aliases' => array(), 'dev_requirement' => \true), 'fidry/makefile' => array('pretty_version' => '0.2.1', 'version' => '0.2.1.0', 'reference' => '50abe0df37018458b1ab355e56063618d5ba8d10', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/makefile', 'aliases' => array(), 'dev_requirement' => \true), 'humbug/requirement-checker' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ce244bb2d6c3e030748d4b5e5f23c618a5d0d85e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'justinrainbow/json-schema' => array('pretty_version' => '5.2.12', 'version' => '5.2.12.0', 'reference' => 'ad87d5a5ca981228e0e205c2bc7dfb8e24559b60', 'type' => 'library', 'install_path' => __DIR__ . '/../justinrainbow/json-schema', 'aliases' => array(), 'dev_requirement' => \true), 'localheinz/diff' => array('pretty_version' => '1.1.1', 'version' => '1.1.1.0', 'reference' => '851bb20ea8358c86f677f5f111c4ab031b1c764c', 'type' => 'library', 'install_path' => __DIR__ . '/../localheinz/diff', 'aliases' => array(), 'dev_requirement' => \true), 'myclabs/deep-copy' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614', 'type' => 'library', 'install_path' => __DIR__ . '/../myclabs/deep-copy', 'aliases' => array(), 'dev_requirement' => \true), 'nikic/php-parser' => array('pretty_version' => 'v4.14.0', 'version' => '4.14.0.0', 'reference' => '34bea19b6e03d8153165d8f30bba4c3be86184c1', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \true), 'phar-io/manifest' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/manifest', 'aliases' => array(), 'dev_requirement' => \true), 'phar-io/version' => array('pretty_version' => '3.2.1', 'version' => '3.2.1.0', 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/version', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/reflection-common' => array('pretty_version' => '2.2.0', 'version' => '2.2.0.0', 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/reflection-docblock' => array('pretty_version' => '5.3.0', 'version' => '5.3.0.0', 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/type-resolver' => array('pretty_version' => '1.6.1', 'version' => '1.6.1.0', 'reference' => '77a32518733312af16a44300404e945338981de3', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver', 'aliases' => array(), 'dev_requirement' => \true), 'phpspec/prophecy' => array('pretty_version' => 'v1.15.0', 'version' => '1.15.0.0', 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13', 'type' => 'library', 'install_path' => __DIR__ . '/../phpspec/prophecy', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-code-coverage' => array('pretty_version' => '9.2.15', 'version' => '9.2.15.0', 'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-file-iterator' => array('pretty_version' => '3.0.6', 'version' => '3.0.6.0', 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-invoker' => array('pretty_version' => '3.1.1', 'version' => '3.1.1.0', 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-invoker', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-text-template' => array('pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-text-template', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-timer' => array('pretty_version' => '5.0.3', 'version' => '5.0.3.0', 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-timer', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/phpunit' => array('pretty_version' => '9.5.21', 'version' => '9.5.21.0', 'reference' => '0e32b76be457de00e83213528f6bb37e2a38fcb1', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/phpunit', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/cli-parser' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/cli-parser', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/code-unit' => array('pretty_version' => '1.0.8', 'version' => '1.0.8.0', 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/code-unit-reverse-lookup' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/comparator' => array('pretty_version' => '4.0.6', 'version' => '4.0.6.0', 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/comparator', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/complexity' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/complexity', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/diff' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/environment' => array('pretty_version' => '5.1.4', 'version' => '5.1.4.0', 'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/environment', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/exporter' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/exporter', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/global-state' => array('pretty_version' => '5.0.5', 'version' => '5.0.5.0', 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/global-state', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/lines-of-code' => array('pretty_version' => '1.0.3', 'version' => '1.0.3.0', 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/lines-of-code', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/object-enumerator' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-enumerator', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/object-reflector' => array('pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-reflector', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/recursion-context' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/recursion-context', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/resource-operations' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/resource-operations', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/type' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'b233b84bc4465aff7b57cf1c4bc75c86d00d6dad', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/type', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/version' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'c6c1022351a901512170118436c764e473f6de8c', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/version', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-php80' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-php81' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php81', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/yaml' => array('pretty_version' => 'v6.2.5', 'version' => '6.2.5.0', 'reference' => '2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \true), 'thecodingmachine/safe' => array('pretty_version' => 'v2.4.0', 'version' => '2.4.0.0', 'reference' => 'e788f3d09dcd36f806350aedb77eac348fafadd3', 'type' => 'library', 'install_path' => __DIR__ . '/../thecodingmachine/safe', 'aliases' => array(), 'dev_requirement' => \true), 'theseer/tokenizer' => array('pretty_version' => '1.2.1', 'version' => '1.2.1.0', 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e', 'type' => 'library', 'install_path' => __DIR__ . '/../theseer/tokenizer', 'aliases' => array(), 'dev_requirement' => \true), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \true))); diff --git a/Box54346/.box/vendor/composer/semver/LICENSE b/Box54346/.box/vendor/composer/semver/LICENSE deleted file mode 100644 index 466975862..000000000 --- a/Box54346/.box/vendor/composer/semver/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (C) 2015 Composer - -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/Box54346/.box/vendor/composer/semver/src/Comparator.php b/Box54346/.box/vendor/composer/semver/src/Comparator.php deleted file mode 100644 index 0376b22ed..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Comparator.php +++ /dev/null @@ -1,40 +0,0 @@ -', $version2); - } - public static function greaterThanOrEqualTo($version1, $version2) - { - return self::compare($version1, '>=', $version2); - } - public static function lessThan($version1, $version2) - { - return self::compare($version1, '<', $version2); - } - public static function lessThanOrEqualTo($version1, $version2) - { - return self::compare($version1, '<=', $version2); - } - public static function equalTo($version1, $version2) - { - return self::compare($version1, '==', $version2); - } - public static function notEqualTo($version1, $version2) - { - return self::compare($version1, '!=', $version2); - } - /** - @phpstan-param - */ - public static function compare($version1, $operator, $version2) - { - $constraint = new Constraint($operator, $version2); - return $constraint->matchSpecific(new Constraint('==', $version1), \true); - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php b/Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php deleted file mode 100644 index 4bfc553b4..000000000 --- a/Box54346/.box/vendor/composer/semver/src/CompilingMatcher.php +++ /dev/null @@ -1,51 +0,0 @@ - Constraint::STR_OP_EQ, Constraint::OP_LT => Constraint::STR_OP_LT, Constraint::OP_LE => Constraint::STR_OP_LE, Constraint::OP_GT => Constraint::STR_OP_GT, Constraint::OP_GE => Constraint::STR_OP_GE, Constraint::OP_NE => Constraint::STR_OP_NE); - public static function clear() - { - self::$resultCache = array(); - self::$compiledCheckerCache = array(); - } - /** - @phpstan-param - */ - public static function match(ConstraintInterface $constraint, $operator, $version) - { - $resultCacheKey = $operator . $constraint . ';' . $version; - if (isset(self::$resultCache[$resultCacheKey])) { - return self::$resultCache[$resultCacheKey]; - } - if (self::$enabled === null) { - self::$enabled = !\in_array('eval', \explode(',', (string) \ini_get('disable_functions')), \true); - } - if (!self::$enabled) { - return self::$resultCache[$resultCacheKey] = $constraint->matches(new Constraint(self::$transOpInt[$operator], $version)); - } - $cacheKey = $operator . $constraint; - if (!isset(self::$compiledCheckerCache[$cacheKey])) { - $code = $constraint->compile($operator); - self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return ' . $code . ';};'); - } else { - $function = self::$compiledCheckerCache[$cacheKey]; - } - return self::$resultCache[$resultCacheKey] = $function($version, \strpos($version, 'dev-') === 0); - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php b/Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php deleted file mode 100644 index 54618456a..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Constraint/Bound.php +++ /dev/null @@ -1,56 +0,0 @@ -version = $version; - $this->isInclusive = $isInclusive; - } - public function getVersion() - { - return $this->version; - } - public function isInclusive() - { - return $this->isInclusive; - } - public function isZero() - { - return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive(); - } - public function isPositiveInfinity() - { - return $this->getVersion() === \PHP_INT_MAX . '.0.0.0' && !$this->isInclusive(); - } - public function compareTo(Bound $other, $operator) - { - if (!\in_array($operator, array('<', '>'), \true)) { - throw new \InvalidArgumentException('Does not support any other operator other than > or <.'); - } - if ($this == $other) { - return \false; - } - $compareResult = \version_compare($this->getVersion(), $other->getVersion()); - if (0 !== $compareResult) { - return ('>' === $operator ? 1 : -1) === $compareResult; - } - return '>' === $operator ? $other->isInclusive() : !$other->isInclusive(); - } - public function __toString() - { - return \sprintf('%s [%s]', $this->getVersion(), $this->isInclusive() ? 'inclusive' : 'exclusive'); - } - public static function zero() - { - return new Bound('0.0.0.0-dev', \true); - } - public static function positiveInfinity() - { - return new Bound(\PHP_INT_MAX . '.0.0.0', \false); - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php b/Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php deleted file mode 100644 index ec4050067..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Constraint/Constraint.php +++ /dev/null @@ -1,260 +0,0 @@ -'; - const STR_OP_GE = '>='; - const STR_OP_NE = '!='; - const STR_OP_NE_ALT = '<>'; - /** - @phpstan-var - */ - private static $transOpStr = array('=' => self::OP_EQ, '==' => self::OP_EQ, '<' => self::OP_LT, '<=' => self::OP_LE, '>' => self::OP_GT, '>=' => self::OP_GE, '<>' => self::OP_NE, '!=' => self::OP_NE); - /** - @phpstan-var - */ - private static $transOpInt = array(self::OP_EQ => '==', self::OP_LT => '<', self::OP_LE => '<=', self::OP_GT => '>', self::OP_GE => '>=', self::OP_NE => '!='); - /** - @phpstan-var - */ - protected $operator; - protected $version; - protected $prettyString; - protected $lowerBound; - protected $upperBound; - /** - @phpstan-param - */ - public function __construct($operator, $version) - { - if (!isset(self::$transOpStr[$operator])) { - throw new \InvalidArgumentException(\sprintf('Invalid operator "%s" given, expected one of: %s', $operator, \implode(', ', self::getSupportedOperators()))); - } - $this->operator = self::$transOpStr[$operator]; - $this->version = $version; - } - public function getVersion() - { - return $this->version; - } - /** - @phpstan-return - */ - public function getOperator() - { - return self::$transOpInt[$this->operator]; - } - public function matches(ConstraintInterface $provider) - { - if ($provider instanceof self) { - return $this->matchSpecific($provider); - } - return $provider->matches($this); - } - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - return $this->__toString(); - } - /** - @phpstan-return - */ - public static function getSupportedOperators() - { - return \array_keys(self::$transOpStr); - } - /** - @phpstan-param - @phpstan-return - */ - public static function getOperatorConstant($operator) - { - return self::$transOpStr[$operator]; - } - /** - @phpstan-param - */ - public function versionCompare($a, $b, $operator, $compareBranches = \false) - { - if (!isset(self::$transOpStr[$operator])) { - throw new \InvalidArgumentException(\sprintf('Invalid operator "%s" given, expected one of: %s', $operator, \implode(', ', self::getSupportedOperators()))); - } - $aIsBranch = \strpos($a, 'dev-') === 0; - $bIsBranch = \strpos($b, 'dev-') === 0; - if ($operator === '!=' && ($aIsBranch || $bIsBranch)) { - return $a !== $b; - } - if ($aIsBranch && $bIsBranch) { - return $operator === '==' && $a === $b; - } - if (!$compareBranches && ($aIsBranch || $bIsBranch)) { - return \false; - } - return \version_compare($a, $b, $operator); - } - public function compile($otherOperator) - { - if (\strpos($this->version, 'dev-') === 0) { - if (self::OP_EQ === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return \sprintf('$b && $v === %s', \var_export($this->version, \true)); - } - if (self::OP_NE === $otherOperator) { - return \sprintf('!$b || $v !== %s', \var_export($this->version, \true)); - } - return 'false'; - } - if (self::OP_NE === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return \sprintf('!$b || $v !== %s', \var_export($this->version, \true)); - } - if (self::OP_NE === $otherOperator) { - return 'true'; - } - return '!$b'; - } - return 'false'; - } - if (self::OP_EQ === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return \sprintf('\\version_compare($v, %s, \'==\')', \var_export($this->version, \true)); - } - if (self::OP_NE === $otherOperator) { - return \sprintf('$b || \\version_compare($v, %s, \'!=\')', \var_export($this->version, \true)); - } - return \sprintf('!$b && \\version_compare(%s, $v, \'%s\')', \var_export($this->version, \true), self::$transOpInt[$otherOperator]); - } - if (self::OP_NE === $this->operator) { - if (self::OP_EQ === $otherOperator) { - return \sprintf('$b || (!$b && \\version_compare($v, %s, \'!=\'))', \var_export($this->version, \true)); - } - if (self::OP_NE === $otherOperator) { - return 'true'; - } - return '!$b'; - } - if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) { - if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) { - return '!$b'; - } - } else { - if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) { - return '!$b'; - } - } - if (self::OP_NE === $otherOperator) { - return 'true'; - } - $codeComparison = \sprintf('\\version_compare($v, %s, \'%s\')', \var_export($this->version, \true), self::$transOpInt[$this->operator]); - if ($this->operator === self::OP_LE) { - if ($otherOperator === self::OP_GT) { - return \sprintf('!$b && \\version_compare($v, %s, \'!=\') && ', \var_export($this->version, \true)) . $codeComparison; - } - } elseif ($this->operator === self::OP_GE) { - if ($otherOperator === self::OP_LT) { - return \sprintf('!$b && \\version_compare($v, %s, \'!=\') && ', \var_export($this->version, \true)) . $codeComparison; - } - } - return \sprintf('!$b && %s', $codeComparison); - } - public function matchSpecific(Constraint $provider, $compareBranches = \false) - { - $noEqualOp = \str_replace('=', '', self::$transOpInt[$this->operator]); - $providerNoEqualOp = \str_replace('=', '', self::$transOpInt[$provider->operator]); - $isEqualOp = self::OP_EQ === $this->operator; - $isNonEqualOp = self::OP_NE === $this->operator; - $isProviderEqualOp = self::OP_EQ === $provider->operator; - $isProviderNonEqualOp = self::OP_NE === $provider->operator; - if ($isNonEqualOp || $isProviderNonEqualOp) { - if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && \strpos($provider->version, 'dev-') === 0) { - return \false; - } - if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && \strpos($this->version, 'dev-') === 0) { - return \false; - } - if (!$isEqualOp && !$isProviderEqualOp) { - return \true; - } - return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); - } - if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { - return !(\strpos($this->version, 'dev-') === 0 || \strpos($provider->version, 'dev-') === 0); - } - $version1 = $isEqualOp ? $this->version : $provider->version; - $version2 = $isEqualOp ? $provider->version : $this->version; - $operator = $isEqualOp ? $provider->operator : $this->operator; - if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) { - return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp && self::$transOpInt[$this->operator] !== $noEqualOp && \version_compare($provider->version, $this->version, '==')); - } - return \false; - } - public function __toString() - { - return self::$transOpInt[$this->operator] . ' ' . $this->version; - } - public function getLowerBound() - { - $this->extractBounds(); - return $this->lowerBound; - } - public function getUpperBound() - { - $this->extractBounds(); - return $this->upperBound; - } - private function extractBounds() - { - if (null !== $this->lowerBound) { - return; - } - if (\strpos($this->version, 'dev-') === 0) { - $this->lowerBound = Bound::zero(); - $this->upperBound = Bound::positiveInfinity(); - return; - } - switch ($this->operator) { - case self::OP_EQ: - $this->lowerBound = new Bound($this->version, \true); - $this->upperBound = new Bound($this->version, \true); - break; - case self::OP_LT: - $this->lowerBound = Bound::zero(); - $this->upperBound = new Bound($this->version, \false); - break; - case self::OP_LE: - $this->lowerBound = Bound::zero(); - $this->upperBound = new Bound($this->version, \true); - break; - case self::OP_GT: - $this->lowerBound = new Bound($this->version, \false); - $this->upperBound = Bound::positiveInfinity(); - break; - case self::OP_GE: - $this->lowerBound = new Bound($this->version, \true); - $this->upperBound = Bound::positiveInfinity(); - break; - case self::OP_NE: - $this->lowerBound = Bound::zero(); - $this->upperBound = Bound::positiveInfinity(); - break; - } - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php deleted file mode 100644 index 680c69d55..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Constraint/ConstraintInterface.php +++ /dev/null @@ -1,17 +0,0 @@ -prettyString = $prettyString; - } - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - return (string) $this; - } - public function __toString() - { - return '*'; - } - public function getUpperBound() - { - return Bound::positiveInfinity(); - } - public function getLowerBound() - { - return Bound::zero(); - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php b/Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php deleted file mode 100644 index c2d37a79b..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php +++ /dev/null @@ -1,39 +0,0 @@ -prettyString = $prettyString; - } - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - return (string) $this; - } - public function __toString() - { - return '[]'; - } - public function getUpperBound() - { - return new Bound('0.0.0.0-dev', \false); - } - public function getLowerBound() - { - return new Bound('0.0.0.0-dev', \false); - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php b/Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php deleted file mode 100644 index 77ad4135d..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Constraint/MultiConstraint.php +++ /dev/null @@ -1,178 +0,0 @@ -constraints = $constraints; - $this->conjunctive = $conjunctive; - } - public function getConstraints() - { - return $this->constraints; - } - public function isConjunctive() - { - return $this->conjunctive; - } - public function isDisjunctive() - { - return !$this->conjunctive; - } - public function compile($otherOperator) - { - $parts = array(); - foreach ($this->constraints as $constraint) { - $code = $constraint->compile($otherOperator); - if ($code === 'true') { - if (!$this->conjunctive) { - return 'true'; - } - } elseif ($code === 'false') { - if ($this->conjunctive) { - return 'false'; - } - } else { - $parts[] = '(' . $code . ')'; - } - } - if (!$parts) { - return $this->conjunctive ? 'true' : 'false'; - } - return $this->conjunctive ? \implode('&&', $parts) : \implode('||', $parts); - } - public function matches(ConstraintInterface $provider) - { - if (\false === $this->conjunctive) { - foreach ($this->constraints as $constraint) { - if ($provider->matches($constraint)) { - return \true; - } - } - return \false; - } - if ($provider instanceof MultiConstraint && $provider->isDisjunctive()) { - return $provider->matches($this); - } - foreach ($this->constraints as $constraint) { - if (!$provider->matches($constraint)) { - return \false; - } - } - return \true; - } - public function setPrettyString($prettyString) - { - $this->prettyString = $prettyString; - } - public function getPrettyString() - { - if ($this->prettyString) { - return $this->prettyString; - } - return (string) $this; - } - public function __toString() - { - if ($this->string !== null) { - return $this->string; - } - $constraints = array(); - foreach ($this->constraints as $constraint) { - $constraints[] = (string) $constraint; - } - return $this->string = '[' . \implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; - } - public function getLowerBound() - { - $this->extractBounds(); - if (null === $this->lowerBound) { - throw new \LogicException('extractBounds should have populated the lowerBound property'); - } - return $this->lowerBound; - } - public function getUpperBound() - { - $this->extractBounds(); - if (null === $this->upperBound) { - throw new \LogicException('extractBounds should have populated the upperBound property'); - } - return $this->upperBound; - } - public static function create(array $constraints, $conjunctive = \true) - { - if (0 === \count($constraints)) { - return new MatchAllConstraint(); - } - if (1 === \count($constraints)) { - return $constraints[0]; - } - $optimized = self::optimizeConstraints($constraints, $conjunctive); - if ($optimized !== null) { - list($constraints, $conjunctive) = $optimized; - if (\count($constraints) === 1) { - return $constraints[0]; - } - } - return new self($constraints, $conjunctive); - } - /** - @phpstan-return - */ - private static function optimizeConstraints(array $constraints, $conjunctive) - { - if (!$conjunctive) { - $left = $constraints[0]; - $mergedConstraints = array(); - $optimized = \false; - for ($i = 1, $l = \count($constraints); $i < $l; $i++) { - $right = $constraints[$i]; - if ($left instanceof self && $left->conjunctive && $right instanceof self && $right->conjunctive && \count($left->constraints) === 2 && \count($right->constraints) === 2 && ($left0 = (string) $left->constraints[0]) && $left0[0] === '>' && $left0[1] === '=' && ($left1 = (string) $left->constraints[1]) && $left1[0] === '<' && ($right0 = (string) $right->constraints[0]) && $right0[0] === '>' && $right0[1] === '=' && ($right1 = (string) $right->constraints[1]) && $right1[0] === '<' && \substr($left1, 2) === \substr($right0, 3)) { - $optimized = \true; - $left = new MultiConstraint(array($left->constraints[0], $right->constraints[1]), \true); - } else { - $mergedConstraints[] = $left; - $left = $right; - } - } - if ($optimized) { - $mergedConstraints[] = $left; - return array($mergedConstraints, \false); - } - } - return null; - } - private function extractBounds() - { - if (null !== $this->lowerBound) { - return; - } - foreach ($this->constraints as $constraint) { - if (null === $this->lowerBound || null === $this->upperBound) { - $this->lowerBound = $constraint->getLowerBound(); - $this->upperBound = $constraint->getUpperBound(); - continue; - } - if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) { - $this->lowerBound = $constraint->getLowerBound(); - } - if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) { - $this->upperBound = $constraint->getUpperBound(); - } - } - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Interval.php b/Box54346/.box/vendor/composer/semver/src/Interval.php deleted file mode 100644 index 4d93d37ea..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Interval.php +++ /dev/null @@ -1,51 +0,0 @@ -start = $start; - $this->end = $end; - } - public function getStart() - { - return $this->start; - } - public function getEnd() - { - return $this->end; - } - public static function fromZero() - { - static $zero; - if (null === $zero) { - $zero = new Constraint('>=', '0.0.0.0-dev'); - } - return $zero; - } - public static function untilPositiveInfinity() - { - static $positiveInfinity; - if (null === $positiveInfinity) { - $positiveInfinity = new Constraint('<', \PHP_INT_MAX . '.0.0.0'); - } - return $positiveInfinity; - } - public static function any() - { - return new self(self::fromZero(), self::untilPositiveInfinity()); - } - public static function anyDev() - { - return array('names' => array(), 'exclude' => \true); - } - public static function noDev() - { - return array('names' => array(), 'exclude' => \false); - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Intervals.php b/Box54346/.box/vendor/composer/semver/src/Intervals.php deleted file mode 100644 index 33533a831..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Intervals.php +++ /dev/null @@ -1,307 +0,0 @@ -=' => -3, '<' => -2, '>' => 2, '<=' => 3); - public static function clear() - { - self::$intervalsCache = array(); - } - public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint) - { - if ($constraint instanceof MatchAllConstraint) { - return \true; - } - if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) { - return \false; - } - $intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), \true)); - $candidateIntervals = self::get($candidate); - if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) { - return \false; - } - foreach ($intersectionIntervals['numeric'] as $index => $interval) { - if (!isset($candidateIntervals['numeric'][$index])) { - return \false; - } - if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) { - return \false; - } - if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) { - return \false; - } - } - if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) { - return \false; - } - if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) { - return \false; - } - foreach ($intersectionIntervals['branches']['names'] as $index => $name) { - if ($name !== $candidateIntervals['branches']['names'][$index]) { - return \false; - } - } - return \true; - } - public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b) - { - if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) { - return \true; - } - if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) { - return \false; - } - $intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), \true), \true); - return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0; - } - public static function compactConstraint(ConstraintInterface $constraint) - { - if (!$constraint instanceof MultiConstraint) { - return $constraint; - } - $intervals = self::generateIntervals($constraint); - $constraints = array(); - $hasNumericMatchAll = \false; - if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) { - $constraints[] = $intervals['numeric'][0]->getStart(); - $hasNumericMatchAll = \true; - } else { - $unEqualConstraints = array(); - for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) { - $interval = $intervals['numeric'][$i]; - if ($interval->getEnd()->getOperator() === '<' && $i + 1 < $count) { - $nextInterval = $intervals['numeric'][$i + 1]; - if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') { - if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) { - $unEqualConstraints[] = $interval->getStart(); - } - $unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion()); - continue; - } - } - if (\count($unEqualConstraints) > 0) { - if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) { - $unEqualConstraints[] = $interval->getEnd(); - } - if (\count($unEqualConstraints) > 1) { - $constraints[] = new MultiConstraint($unEqualConstraints, \true); - } else { - $constraints[] = $unEqualConstraints[0]; - } - $unEqualConstraints = array(); - continue; - } - if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') { - $constraints[] = new Constraint('==', $interval->getStart()->getVersion()); - continue; - } - if ((string) $interval->getStart() === (string) Interval::fromZero()) { - $constraints[] = $interval->getEnd(); - } elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) { - $constraints[] = $interval->getStart(); - } else { - $constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), \true); - } - } - } - $devConstraints = array(); - if (0 === \count($intervals['branches']['names'])) { - if ($intervals['branches']['exclude']) { - if ($hasNumericMatchAll) { - return new MatchAllConstraint(); - } - } - } else { - foreach ($intervals['branches']['names'] as $branchName) { - if ($intervals['branches']['exclude']) { - $devConstraints[] = new Constraint('!=', $branchName); - } else { - $devConstraints[] = new Constraint('==', $branchName); - } - } - if ($intervals['branches']['exclude']) { - if (\count($constraints) > 1) { - return new MultiConstraint(\array_merge(array(new MultiConstraint($constraints, \false)), $devConstraints), \true); - } - if (\count($constraints) === 1 && (string) $constraints[0] === (string) Interval::fromZero()) { - if (\count($devConstraints) > 1) { - return new MultiConstraint($devConstraints, \true); - } - return $devConstraints[0]; - } - return new MultiConstraint(\array_merge($constraints, $devConstraints), \true); - } - $constraints = \array_merge($constraints, $devConstraints); - } - if (\count($constraints) > 1) { - return new MultiConstraint($constraints, \false); - } - if (\count($constraints) === 1) { - return $constraints[0]; - } - return new MatchNoneConstraint(); - } - /** - @phpstan-return - */ - public static function get(ConstraintInterface $constraint) - { - $key = (string) $constraint; - if (!isset(self::$intervalsCache[$key])) { - self::$intervalsCache[$key] = self::generateIntervals($constraint); - } - return self::$intervalsCache[$key]; - } - /** - @phpstan-return - */ - private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = \false) - { - if ($constraint instanceof MatchAllConstraint) { - return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); - } - if ($constraint instanceof MatchNoneConstraint) { - return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => \false)); - } - if ($constraint instanceof Constraint) { - return self::generateSingleConstraintIntervals($constraint); - } - if (!$constraint instanceof MultiConstraint) { - throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got ' . \get_class($constraint) . '.'); - } - $constraints = $constraint->getConstraints(); - $numericGroups = array(); - $constraintBranches = array(); - foreach ($constraints as $c) { - $res = self::get($c); - $numericGroups[] = $res['numeric']; - $constraintBranches[] = $res['branches']; - } - if ($constraint->isDisjunctive()) { - $branches = Interval::noDev(); - foreach ($constraintBranches as $b) { - if ($b['exclude']) { - if ($branches['exclude']) { - $branches['names'] = \array_intersect($branches['names'], $b['names']); - } else { - $branches['exclude'] = \true; - $branches['names'] = \array_diff($b['names'], $branches['names']); - } - } else { - if ($branches['exclude']) { - $branches['names'] = \array_diff($branches['names'], $b['names']); - } else { - $branches['names'] = \array_merge($branches['names'], $b['names']); - } - } - } - } else { - $branches = Interval::anyDev(); - foreach ($constraintBranches as $b) { - if ($b['exclude']) { - if ($branches['exclude']) { - $branches['names'] = \array_merge($branches['names'], $b['names']); - } else { - $branches['names'] = \array_diff($branches['names'], $b['names']); - } - } else { - if ($branches['exclude']) { - $branches['names'] = \array_diff($b['names'], $branches['names']); - $branches['exclude'] = \false; - } else { - $branches['names'] = \array_intersect($branches['names'], $b['names']); - } - } - } - } - $branches['names'] = \array_unique($branches['names']); - if (\count($numericGroups) === 1) { - return array('numeric' => $numericGroups[0], 'branches' => $branches); - } - $borders = array(); - foreach ($numericGroups as $group) { - foreach ($group as $interval) { - $borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start'); - $borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end'); - } - } - $opSortOrder = self::$opSortOrder; - \usort($borders, function ($a, $b) use($opSortOrder) { - $order = \version_compare($a['version'], $b['version']); - if ($order === 0) { - return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']]; - } - return $order; - }); - $activeIntervals = 0; - $intervals = array(); - $index = 0; - $activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1; - $start = null; - foreach ($borders as $border) { - if ($border['side'] === 'start') { - $activeIntervals++; - } else { - $activeIntervals--; - } - if (!$start && $activeIntervals >= $activationThreshold) { - $start = new Constraint($border['operator'], $border['version']); - } elseif ($start && $activeIntervals < $activationThreshold) { - if (\version_compare($start->getVersion(), $border['version'], '=') && ($start->getOperator() === '>' && $border['operator'] === '<=' || $start->getOperator() === '>=' && $border['operator'] === '<')) { - unset($intervals[$index]); - } else { - $intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version'])); - $index++; - if ($stopOnFirstValidInterval) { - break; - } - } - $start = null; - } - } - return array('numeric' => $intervals, 'branches' => $branches); - } - /** - @phpstan-return - */ - private static function generateSingleConstraintIntervals(Constraint $constraint) - { - $op = $constraint->getOperator(); - if (\strpos($constraint->getVersion(), 'dev-') === 0) { - $intervals = array(); - $branches = array('names' => array(), 'exclude' => \false); - if ($op === '!=') { - $intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity()); - $branches = array('names' => array($constraint->getVersion()), 'exclude' => \true); - } elseif ($op === '==') { - $branches['names'][] = $constraint->getVersion(); - } - return array('numeric' => $intervals, 'branches' => $branches); - } - if ($op[0] === '>') { - return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev()); - } - if ($op[0] === '<') { - return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev()); - } - if ($op === '!=') { - return array('numeric' => array(new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())), new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); - } - return array('numeric' => array(new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion()))), 'branches' => Interval::noDev()); - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/Semver.php b/Box54346/.box/vendor/composer/semver/src/Semver.php deleted file mode 100644 index ac2188d44..000000000 --- a/Box54346/.box/vendor/composer/semver/src/Semver.php +++ /dev/null @@ -1,63 +0,0 @@ -normalize($version)); - $parsedConstraints = $versionParser->parseConstraints($constraints); - return $parsedConstraints->matches($provider); - } - public static function satisfiedBy(array $versions, $constraints) - { - $versions = \array_filter($versions, function ($version) use($constraints) { - return Semver::satisfies($version, $constraints); - }); - return \array_values($versions); - } - public static function sort(array $versions) - { - return self::usort($versions, self::SORT_ASC); - } - public static function rsort(array $versions) - { - return self::usort($versions, self::SORT_DESC); - } - private static function usort(array $versions, $direction) - { - if (null === self::$versionParser) { - self::$versionParser = new VersionParser(); - } - $versionParser = self::$versionParser; - $normalized = array(); - foreach ($versions as $key => $version) { - $normalizedVersion = $versionParser->normalize($version); - $normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); - $normalized[] = array($normalizedVersion, $key); - } - \usort($normalized, function (array $left, array $right) use($direction) { - if ($left[0] === $right[0]) { - return 0; - } - if (Comparator::lessThan($left[0], $right[0])) { - return -$direction; - } - return $direction; - }); - $sorted = array(); - foreach ($normalized as $item) { - $sorted[] = $versions[$item[1]]; - } - return $sorted; - } -} diff --git a/Box54346/.box/vendor/composer/semver/src/VersionParser.php b/Box54346/.box/vendor/composer/semver/src/VersionParser.php deleted file mode 100644 index 63ecc9db7..000000000 --- a/Box54346/.box/vendor/composer/semver/src/VersionParser.php +++ /dev/null @@ -1,336 +0,0 @@ -expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? \ltrim($matches[$index + 1], '.-') : ''); - } - if (!empty($matches[$index + 2])) { - $version .= '-dev'; - } - return $version; - } - if (\preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { - try { - $normalized = $this->normalizeBranch($match[1]); - if (\strpos($normalized, 'dev-') === \false) { - return $normalized; - } - } catch (\Exception $e) { - } - } - $extraMessage = ''; - if (\preg_match('{ +as +' . \preg_quote($version) . '(?:@(?:' . self::$stabilitiesRegex . '))?$}', $fullVersion)) { - $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; - } elseif (\preg_match('{^' . \preg_quote($version) . '(?:@(?:' . self::$stabilitiesRegex . '))? +as +}', $fullVersion)) { - $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; - } - throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage); - } - public function parseNumericAliasPrefix($branch) - { - if (\preg_match('{^(?P(\\d++\\.)*\\d++)(?:\\.x)?-dev$}i', (string) $branch, $matches)) { - return $matches['version'] . '.'; - } - return \false; - } - public function normalizeBranch($name) - { - $name = \trim((string) $name); - if (\preg_match('{^v?(\\d++)(\\.(?:\\d++|[xX*]))?(\\.(?:\\d++|[xX*]))?(\\.(?:\\d++|[xX*]))?$}i', $name, $matches)) { - $version = ''; - for ($i = 1; $i < 5; ++$i) { - $version .= isset($matches[$i]) ? \str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; - } - return \str_replace('x', '9999999', $version) . '-dev'; - } - return 'dev-' . $name; - } - public function normalizeDefaultBranch($name) - { - if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') { - return '9999999-dev'; - } - return (string) $name; - } - public function parseConstraints($constraints) - { - $prettyConstraint = (string) $constraints; - $orConstraints = \preg_split('{\\s*\\|\\|?\\s*}', \trim((string) $constraints)); - if (\false === $orConstraints) { - throw new \RuntimeException('Failed to preg_split string: ' . $constraints); - } - $orGroups = array(); - foreach ($orConstraints as $constraints) { - $andConstraints = \preg_split('{(?< ,]) *(? 1) { - $constraintObjects = array(); - foreach ($andConstraints as $constraint) { - foreach ($this->parseConstraint($constraint) as $parsedConstraint) { - $constraintObjects[] = $parsedConstraint; - } - } - } else { - $constraintObjects = $this->parseConstraint($andConstraints[0]); - } - if (1 === \count($constraintObjects)) { - $constraint = $constraintObjects[0]; - } else { - $constraint = new MultiConstraint($constraintObjects); - } - $orGroups[] = $constraint; - } - $constraint = MultiConstraint::create($orGroups, \false); - $constraint->setPrettyString($prettyConstraint); - return $constraint; - } - /** - @phpstan-return - */ - private function parseConstraint($constraint) - { - if (\preg_match('{^([^,\\s]++) ++as ++([^,\\s]++)$}', $constraint, $match)) { - $constraint = $match[1]; - } - if (\preg_match('{^([^,\\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) { - $constraint = '' !== $match[1] ? $match[1] : '*'; - if ($match[2] !== 'stable') { - $stabilityModifier = $match[2]; - } - } - if (\preg_match('{^(dev-[^,\\s@]+?|[^,\\s@]+?\\.x-dev)#.+$}i', $constraint, $match)) { - $constraint = $match[1]; - } - if (\preg_match('{^(v)?[xX*](\\.[xX*])*$}i', $constraint, $match)) { - if (!empty($match[1]) || !empty($match[2])) { - return array(new Constraint('>=', '0.0.0.0-dev')); - } - return array(new MatchAllConstraint()); - } - $versionRegex = 'v?(\\d++)(?:\\.(\\d++))?(?:\\.(\\d++))?(?:\\.(\\d++))?(?:' . self::$modifierRegex . '|\\.([xX*][.-]?dev))(?:\\+[^\\s]+)?'; - if (\preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { - if (\strpos($constraint, '~>') === 0) { - throw new \UnexpectedValueException('Could not parse version constraint ' . $constraint . ': ' . 'Invalid operator "~>", you probably meant to use the "~" operator'); - } - if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { - $position = 4; - } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { - $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { - $position = 2; - } else { - $position = 1; - } - if (!empty($matches[8])) { - $position++; - } - $stabilitySuffix = ''; - if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { - $stabilitySuffix .= '-dev'; - } - $lowVersion = $this->normalize(\substr($constraint . $stabilitySuffix, 1)); - $lowerBound = new Constraint('>=', $lowVersion); - $highPosition = \max(1, $position - 1); - $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - return array($lowerBound, $upperBound); - } - if (\preg_match('{^\\^' . $versionRegex . '($)}i', $constraint, $matches)) { - if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { - $position = 1; - } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { - $position = 2; - } else { - $position = 3; - } - $stabilitySuffix = ''; - if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { - $stabilitySuffix .= '-dev'; - } - $lowVersion = $this->normalize(\substr($constraint . $stabilitySuffix, 1)); - $lowerBound = new Constraint('>=', $lowVersion); - $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - return array($lowerBound, $upperBound); - } - if (\preg_match('{^v?(\\d++)(?:\\.(\\d++))?(?:\\.(\\d++))?(?:\\.[xX*])++$}', $constraint, $matches)) { - if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { - $position = 3; - } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { - $position = 2; - } else { - $position = 1; - } - $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; - $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; - if ($lowVersion === '0.0.0.0-dev') { - return array(new Constraint('<', $highVersion)); - } - return array(new Constraint('>=', $lowVersion), new Constraint('<', $highVersion)); - } - if (\preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { - $lowStabilitySuffix = ''; - if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) { - $lowStabilitySuffix = '-dev'; - } - $lowVersion = $this->normalize($matches['from']); - $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); - $empty = function ($x) { - return $x === 0 || $x === '0' ? \false : empty($x); - }; - if (!$empty($matches[12]) && !$empty($matches[13]) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) { - $highVersion = $this->normalize($matches['to']); - $upperBound = new Constraint('<=', $highVersion); - } else { - $highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]); - $this->normalize($matches['to']); - $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev'; - $upperBound = new Constraint('<', $highVersion); - } - return array($lowerBound, $upperBound); - } - if (\preg_match('{^(<>|!=|>=?|<=?|==?)?\\s*(.*)}', $constraint, $matches)) { - try { - try { - $version = $this->normalize($matches[2]); - } catch (\UnexpectedValueException $e) { - if (\substr($matches[2], -4) === '-dev' && \preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) { - $version = $this->normalize('dev-' . \substr($matches[2], 0, -4)); - } else { - throw $e; - } - } - $op = $matches[1] ?: '='; - if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') { - $version .= '-' . $stabilityModifier; - } elseif ('<' === $op || '>=' === $op) { - if (!\preg_match('/-' . self::$modifierRegex . '$/', \strtolower($matches[2]))) { - if (\strpos($matches[2], 'dev-') !== 0) { - $version .= '-dev'; - } - } - } - return array(new Constraint($matches[1] ?: '=', $version)); - } catch (\Exception $e) { - } - } - $message = 'Could not parse version constraint ' . $constraint; - if (isset($e)) { - $message .= ': ' . $e->getMessage(); - } - throw new \UnexpectedValueException($message); - } - /** - @phpstan-param - */ - private function manipulateVersionString(array $matches, $position, $increment = 0, $pad = '0') - { - for ($i = 4; $i > 0; --$i) { - if ($i > $position) { - $matches[$i] = $pad; - } elseif ($i === $position && $increment) { - $matches[$i] += $increment; - if ($matches[$i] < 0) { - $matches[$i] = $pad; - --$position; - if ($i === 1) { - return null; - } - } - } - } - return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; - } - private function expandStability($stability) - { - $stability = \strtolower($stability); - switch ($stability) { - case 'a': - return 'alpha'; - case 'b': - return 'beta'; - case 'p': - case 'pl': - return 'patch'; - case 'rc': - return 'RC'; - default: - return $stability; - } - } -} diff --git a/Box54346/box.json.dist b/Box54346/box.json.dist deleted file mode 100644 index 0967ef424..000000000 --- a/Box54346/box.json.dist +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/Box54346/composer.json b/Box54346/composer.json deleted file mode 100644 index d62d6cb25..000000000 --- a/Box54346/composer.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "bin": "index.php", - "require": { - "php": "^8.1", - "nikic/iter": "^2.2" - }, - "require-dev": { - "phpstan/phpstan": "^1.9", - "phpstan/extension-installer": "^1.2" - }, - "config": { - "allow-plugins": { - "phpstan/extension-installer": true - } - } -} diff --git a/Box54346/composer.lock b/Box54346/composer.lock deleted file mode 100644 index 0548fcf3e..000000000 --- a/Box54346/composer.lock +++ /dev/null @@ -1,175 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "9e21f6cdff196792db041ce08ffaf807", - "packages": [ - { - "name": "nikic/iter", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/iter.git", - "reference": "d1323929952ddcb0b06439991f93bde3816a39e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/iter/zipball/d1323929952ddcb0b06439991f93bde3816a39e9", - "reference": "d1323929952ddcb0b06439991f93bde3816a39e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/iter.func.php", - "src/iter.php", - "src/iter.rewindable.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov", - "email": "nikic@php.net" - } - ], - "description": "Iteration primitives using generators", - "keywords": [ - "functional", - "generator", - "iterator" - ], - "support": { - "issues": "https://github.com/nikic/iter/issues", - "source": "https://github.com/nikic/iter/tree/v2.2.0" - }, - "time": "2021-08-02T15:04:32+00:00" - } - ], - "packages-dev": [ - { - "name": "phpstan/extension-installer", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", - "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" - }, - "require-dev": { - "composer/composer": "^2.0", - "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" - }, - "type": "composer-plugin", - "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" - }, - "autoload": { - "psr-4": { - "PHPStan\\ExtensionInstaller\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Composer plugin for automatic installation of PHPStan extensions", - "support": { - "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.2.0" - }, - "time": "2022-10-17T12:59:16+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.9.17", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/204e459e7822f2c586463029f5ecec31bb45a1f2", - "reference": "204e459e7822f2c586463029f5ecec31bb45a1f2", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.17" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2023-02-08T12:25:00+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.1" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/Box54346/expected-output b/Box54346/expected-output deleted file mode 100644 index c168b4865..000000000 --- a/Box54346/expected-output +++ /dev/null @@ -1 +0,0 @@ -Everything is fine! diff --git a/Box54346/index.php b/Box54346/index.php deleted file mode 100644 index f4230e5a5..000000000 --- a/Box54346/index.php +++ /dev/null @@ -1,15 +0,0 @@ - - * Théo Fidry - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -echo 'Everything is fine!'.PHP_EOL; diff --git a/Box54346/installed_after.json b/Box54346/installed_after.json deleted file mode 100644 index f20a6c47c..000000000 --- a/Box54346/installed_after.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "packages": [], - "dev": false, - "dev-package-names": [] -} diff --git a/Box54346/installed_after.php b/Box54346/installed_after.php deleted file mode 100644 index 9f9a1d7f4..000000000 --- a/Box54346/installed_after.php +++ /dev/null @@ -1,23 +0,0 @@ - array( - 'name' => '__root__', - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev' => false, - ), - 'versions' => array( - '__root__' => array( - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'b6738a703790722c1ea50c90e2c2fa9fda0b4660', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/Box54346/vendor/autoload.php b/Box54346/vendor/autoload.php deleted file mode 100644 index 5d81697be..000000000 --- a/Box54346/vendor/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/phpstan/phpstan/phpstan'); - exit(0); - } -} - -include __DIR__ . '/..'.'/phpstan/phpstan/phpstan'; diff --git a/Box54346/vendor/bin/phpstan.phar b/Box54346/vendor/bin/phpstan.phar deleted file mode 100755 index caa3e24f8..000000000 --- a/Box54346/vendor/bin/phpstan.phar +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/phpstan/phpstan/phpstan.phar'); - exit(0); - } -} - -include __DIR__ . '/..'.'/phpstan/phpstan/phpstan.phar'; diff --git a/Box54346/vendor/composer/ClassLoader.php b/Box54346/vendor/composer/ClassLoader.php deleted file mode 100644 index a72151c77..000000000 --- a/Box54346/vendor/composer/ClassLoader.php +++ /dev/null @@ -1,585 +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 https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array $classMap - * - * @return void - */ - 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 string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 string[]|string $paths The PSR-0 base directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * 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; - } - - /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. - * - * @return self[] - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - 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; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/Box54346/vendor/composer/InstalledVersions.php b/Box54346/vendor/composer/InstalledVersions.php deleted file mode 100644 index c6b54af7b..000000000 --- a/Box54346/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,352 +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; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints($constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = require __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - $installed[] = self::$installed; - - return $installed; - } -} diff --git a/Box54346/vendor/composer/LICENSE b/Box54346/vendor/composer/LICENSE deleted file mode 100644 index f27399a04..000000000 --- a/Box54346/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/Box54346/vendor/composer/autoload_classmap.php b/Box54346/vendor/composer/autoload_classmap.php deleted file mode 100644 index 0fb0a2c19..000000000 --- a/Box54346/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,10 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', -); diff --git a/Box54346/vendor/composer/autoload_files.php b/Box54346/vendor/composer/autoload_files.php deleted file mode 100644 index b7a53f8ee..000000000 --- a/Box54346/vendor/composer/autoload_files.php +++ /dev/null @@ -1,12 +0,0 @@ - $vendorDir . '/nikic/iter/src/iter.func.php', - '35c02f945f51da2672a14da5064b8327' => $vendorDir . '/nikic/iter/src/iter.php', - '6f0d4b1a6e0d44877f891efd10b573f1' => $vendorDir . '/nikic/iter/src/iter.rewindable.php', -); diff --git a/Box54346/vendor/composer/autoload_namespaces.php b/Box54346/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3ad..000000000 --- a/Box54346/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ -register(true); - - $filesToLoad = \Composer\Autoload\ComposerStaticInitd675878ac2c7da13231e6f107702b12a::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - - return $loader; - } -} diff --git a/Box54346/vendor/composer/autoload_static.php b/Box54346/vendor/composer/autoload_static.php deleted file mode 100644 index 0c4b28c99..000000000 --- a/Box54346/vendor/composer/autoload_static.php +++ /dev/null @@ -1,26 +0,0 @@ - __DIR__ . '/..' . '/nikic/iter/src/iter.func.php', - '35c02f945f51da2672a14da5064b8327' => __DIR__ . '/..' . '/nikic/iter/src/iter.php', - '6f0d4b1a6e0d44877f891efd10b573f1' => __DIR__ . '/..' . '/nikic/iter/src/iter.rewindable.php', - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->classMap = ComposerStaticInitd675878ac2c7da13231e6f107702b12a::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/Box54346/vendor/composer/installed.json b/Box54346/vendor/composer/installed.json deleted file mode 100644 index 7d3ebc667..000000000 --- a/Box54346/vendor/composer/installed.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "packages": [ - { - "name": "nikic/iter", - "version": "v2.2.0", - "version_normalized": "2.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/iter.git", - "reference": "d1323929952ddcb0b06439991f93bde3816a39e9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/iter/zipball/d1323929952ddcb0b06439991f93bde3816a39e9", - "reference": "d1323929952ddcb0b06439991f93bde3816a39e9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "time": "2021-08-02T15:04:32+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/iter.func.php", - "src/iter.php", - "src/iter.rewindable.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov", - "email": "nikic@php.net" - } - ], - "description": "Iteration primitives using generators", - "keywords": [ - "functional", - "generator", - "iterator" - ], - "support": { - "issues": "https://github.com/nikic/iter/issues", - "source": "https://github.com/nikic/iter/tree/v2.2.0" - }, - "install-path": "../nikic/iter" - } - ], - "dev": false, - "dev-package-names": [] -} diff --git a/Box54346/vendor/composer/installed.php b/Box54346/vendor/composer/installed.php deleted file mode 100644 index d2b30fa29..000000000 --- a/Box54346/vendor/composer/installed.php +++ /dev/null @@ -1,32 +0,0 @@ - array( - 'name' => '__root__', - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'd47945b57f9ebdcd93bdb0de9597d53f305247cf', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev' => false, - ), - 'versions' => array( - '__root__' => array( - 'pretty_version' => 'dev-main', - 'version' => 'dev-main', - 'reference' => 'd47945b57f9ebdcd93bdb0de9597d53f305247cf', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nikic/iter' => array( - 'pretty_version' => 'v2.2.0', - 'version' => '2.2.0.0', - 'reference' => 'd1323929952ddcb0b06439991f93bde3816a39e9', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nikic/iter', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/Box54346/vendor/composer/platform_check.php b/Box54346/vendor/composer/platform_check.php deleted file mode 100644 index 4c3a5d68f..000000000 --- a/Box54346/vendor/composer/platform_check.php +++ /dev/null @@ -1,26 +0,0 @@ -= 80100)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR - ); -} diff --git a/Box54346/vendor/nikic/iter/.github/workflows/ci.yml b/Box54346/vendor/nikic/iter/.github/workflows/ci.yml deleted file mode 100644 index e1775a779..000000000 --- a/Box54346/vendor/nikic/iter/.github/workflows/ci.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: CI - -on: - # Run on all pushes and on all pull requests. - push: - pull_request: - # Allow manually triggering the workflow. - workflow_dispatch: - -jobs: - test: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - # Keys: - # - experimental: Whether the build is "allowed to fail". - matrix: - php: ['7.1', '7.2', '7.3', '7.4', '8.0'] - experimental: [false] - - include: - - php: '8.1' - experimental: true - - name: "PHP: ${{ matrix.php }}" - - continue-on-error: ${{ matrix.experimental }} - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Install PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - ini-values: error_reporting=-1, display_errors=On, log_errors_max_len=0 - coverage: none - tools: none - - # Install dependencies and handle caching in one go. - # @link https://github.com/marketplace/actions/install-composer-dependencies - - name: "Install Composer dependencies (PHP < 8.1)" - if: ${{ matrix.php < '8.1' }} - uses: "ramsey/composer-install@v1" - - - name: "Install Composer dependencies (PHP 8.1)" - if: ${{ matrix.php >= '8.1' }} - uses: "ramsey/composer-install@v1" - with: - composer-options: --ignore-platform-reqs - - - name: Run unit tests - run: vendor/bin/phpunit diff --git a/Box54346/vendor/nikic/iter/.gitignore b/Box54346/vendor/nikic/iter/.gitignore deleted file mode 100644 index 3d7e132f3..000000000 --- a/Box54346/vendor/nikic/iter/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -vendor/ -composer.lock -.phpunit.result.cache diff --git a/Box54346/vendor/nikic/iter/LICENSE b/Box54346/vendor/nikic/iter/LICENSE deleted file mode 100644 index b62b5e2bc..000000000 --- a/Box54346/vendor/nikic/iter/LICENSE +++ /dev/null @@ -1,31 +0,0 @@ -Copyright (c) 2013 by Nikita Popov. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/Box54346/vendor/nikic/iter/README.md b/Box54346/vendor/nikic/iter/README.md deleted file mode 100644 index c96e5e6aa..000000000 --- a/Box54346/vendor/nikic/iter/README.md +++ /dev/null @@ -1,116 +0,0 @@ -Iteration primitives using generators -===================================== - -This library implements iteration primitives like `map()` and `filter()` -using generators. To a large part this serves as a repository for small -examples of generator usage, but of course the functions are also practically -quite useful. - -All functions in this library accept arbitrary iterables, i.e. arrays, -traversables, iterators and aggregates, which makes it quite different from -functions like `array_map()` (which only accept arrays) and the SPL iterators -(which usually only accept iterators, not even aggregates). The operations are -of course lazy. - -Install -------- - -To install with composer: - -```sh -composer require nikic/iter -``` - -Functionality -------------- - -A small usage example for the ``map()`` and ``range()`` functions: - -```php - iter(10, 20, 30, 40, 50, 60, 70, 80, 90, 100) -``` - -You can find documentation and usage examples for the individual functions in -[iter.php](https://github.com/nikic/iter/blob/master/src/iter.php), here I only -list the function signatures as an overview: - - Iterator map(callable $function, iterable $iterable) - Iterator mapWithKeys(callable $function, iterable $iterable) - Iterator mapKeys(callable $function, iterable $iterable) - Iterator flatMap(callable $function, iterable $iterable) - Iterator reindex(callable $function, iterable $iterable) - Iterator filter(callable $predicate, iterable $iterable) - Iterator enumerate(iterable $iterable) - Iterator toPairs(iterable $iterable) - Iterator fromPairs(iterable $iterable) - Iterator reductions(callable $function, iterable $iterable, mixed $startValue = null) - Iterator zip(iterable... $iterables) - Iterator zipKeyValue(iterable $keys, iterable $values) - Iterator chain(iterable... $iterables) - Iterator product(iterable... $iterables) - Iterator slice(iterable $iterable, int $start, int $length = INF) - Iterator take(int $num, iterable $iterable) - Iterator drop(int $num, iterable $iterable) - Iterator takeWhile(callable $predicate, iterable $iterable) - Iterator dropWhile(callable $predicate, iterable $iterable) - Iterator keys(iterable $iterable) - Iterator values(iterable $iterable) - Iterator flatten(iterable $iterable, int $levels = INF) - Iterator flip(iterable $iterable) - Iterator chunk(iterable $iterable, int $size, bool $preserveKeys = false) - Iterator chunkWithKeys(iterable $iterable, int $size) - Iterator toIter(iterable $iterable) - - Iterator range(number $start, number $end, number $step = null) - Iterator repeat(mixed $value, int $num = INF) - Iterator split(string $separator, string $data) - - mixed reduce(callable $function, iterable $iterable, mixed $startValue = null) - bool any(callable $predicate, iterable $iterable) - bool all(callable $predicate, iterable $iterable) - mixed search(callable $predicate, iterable $iterable) - void apply(callable $function, iterable $iterable) - string join(string $separator, iterable $iterable) - int count(iterable $iterable) - bool isEmpty(iterable $iterable) - mixed recurse(callable $function, $iterable) - array toArray(iterable $iterable) - array toArrayWithKeys(iterable $iterable) - bool isIterable($value) - -As the functionality is implemented using generators the resulting iterators -are by default not rewindable. This library implements additional functionality -to allow creating rewindable generators. - -You can find documentation for this in [iter.rewindable.php](https://github.com/nikic/iter/blob/master/src/iter.rewindable.php), -here is just a small usage example of the two main functions: - -```php -=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "autoload": { - "files": [ - "src/iter.func.php", - "src/iter.php", - "src/iter.rewindable.php" - ] - } -} diff --git a/Box54346/vendor/nikic/iter/phpunit.xml.dist b/Box54346/vendor/nikic/iter/phpunit.xml.dist deleted file mode 100644 index 01214bfc7..000000000 --- a/Box54346/vendor/nikic/iter/phpunit.xml.dist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - ./test/ - - - - - - ./lib/ - - - diff --git a/Box54346/vendor/nikic/iter/src/iter.func.php b/Box54346/vendor/nikic/iter/src/iter.func.php deleted file mode 100644 index aabe13594..000000000 --- a/Box54346/vendor/nikic/iter/src/iter.func.php +++ /dev/null @@ -1,106 +0,0 @@ - [ - * 'bar' => [ - * 'baz' => 42 - * ] - * ] - * ]; - * - * $getIndexFooBar = func\nested_index('foo', 'bar'); - * $getIndexFooBarBaz = func\nested_index('foo', 'bar', 'baz'); - * - * $getIndexFooBar($array) - * => ['baz' => 42] - * - * $getIndexFooBarBaz($array) - * => 42 - * - * @param mixed[] ...$indices Path of indices - * - * @return callable - */ -function nested_index(...$indices) { - return function($array) use ($indices) { - foreach ($indices as $index) { - $array = $array[$index]; - } - - return $array; - }; -} - -function property($propertyName) { - return function($object) use ($propertyName) { - return $object->$propertyName; - }; -} - -function method($methodName, $args = []) { - return function($object) use ($methodName, $args) { - return $object->$methodName(...$args); - }; -} - -function operator($operator, $arg = null) { - $functions = [ - 'instanceof' => function($a, $b) { return $a instanceof $b; }, - '*' => function($a, $b) { return $a * $b; }, - '/' => function($a, $b) { return $a / $b; }, - '%' => function($a, $b) { return $a % $b; }, - '+' => function($a, $b) { return $a + $b; }, - '-' => function($a, $b) { return $a - $b; }, - '.' => function($a, $b) { return $a . $b; }, - '<<' => function($a, $b) { return $a << $b; }, - '>>' => function($a, $b) { return $a >> $b; }, - '<' => function($a, $b) { return $a < $b; }, - '<=' => function($a, $b) { return $a <= $b; }, - '>' => function($a, $b) { return $a > $b; }, - '>=' => function($a, $b) { return $a >= $b; }, - '==' => function($a, $b) { return $a == $b; }, - '!=' => function($a, $b) { return $a != $b; }, - '===' => function($a, $b) { return $a === $b; }, - '!==' => function($a, $b) { return $a !== $b; }, - '&' => function($a, $b) { return $a & $b; }, - '^' => function($a, $b) { return $a ^ $b; }, - '|' => function($a, $b) { return $a | $b; }, - '&&' => function($a, $b) { return $a && $b; }, - '||' => function($a, $b) { return $a || $b; }, - '**' => function($a, $b) { return $a ** $b; }, - '<=>' => function($a, $b) { return $a <=> $b; }, - ]; - - if (!isset($functions[$operator])) { - throw new \InvalidArgumentException("Unknown operator \"$operator\""); - } - - $fn = $functions[$operator]; - if (func_num_args() === 1) { - return $fn; - } else { - return function($a) use ($fn, $arg) { - return $fn($a, $arg); - }; - } -} - -function not($function) { - return function(...$args) use ($function) { - return !$function(...$args); - }; -} \ No newline at end of file diff --git a/Box54346/vendor/nikic/iter/src/iter.rewindable.php b/Box54346/vendor/nikic/iter/src/iter.rewindable.php deleted file mode 100644 index 9daf1a4f7..000000000 --- a/Box54346/vendor/nikic/iter/src/iter.rewindable.php +++ /dev/null @@ -1,143 +0,0 @@ -function = $function; - $this->args = $args; - $this->generator = null; - } - - public function rewind(): void { - $function = $this->function; - $this->generator = $function(...$this->args); - } - - public function next(): void { - if (!$this->generator) { $this->rewind(); } - $this->generator->next(); - } - - public function valid(): bool { - if (!$this->generator) { $this->rewind(); } - return $this->generator->valid(); - } - - #[ReturnTypeWillChange] - public function key() { - if (!$this->generator) { $this->rewind(); } - return $this->generator->key(); - } - - #[ReturnTypeWillChange] - public function current() { - if (!$this->generator) { $this->rewind(); } - return $this->generator->current(); - } - - public function send($value = null) { - if (!$this->generator) { $this->rewind(); } - return $this->generator->send($value); - } - - public function throw($exception) { - if (!$this->generator) { $this->rewind(); } - return $this->generator->throw($exception); - } - } -} diff --git a/Box54346/vendor/nikic/iter/test/IterFnTest.php b/Box54346/vendor/nikic/iter/test/IterFnTest.php deleted file mode 100644 index cdcf25c2a..000000000 --- a/Box54346/vendor/nikic/iter/test/IterFnTest.php +++ /dev/null @@ -1,129 +0,0 @@ - 'bar', 'test' => 'tset', 'bar' => 'foo']; - - $this->assertSame($arr1[3], $getIndex3($arr1)); - $this->assertSame($arr2['test'], $getIndexTest($arr2)); - } - - public function testNestedIndex() { - $getIndexFooBar = func\nested_index('foo', 'bar'); - $getIndexFooBarBaz = func\nested_index('foo', 'bar', 'baz'); - $getEmptyIndex = func\nested_index(); - - $array = [ - 'foo' => [ - 'bar' => [ - 'baz' => 42 - ] - ] - ]; - - $this->assertSame($array['foo']['bar'], $getIndexFooBar($array)); - $this->assertSame($array['foo']['bar']['baz'], $getIndexFooBarBaz($array)); - $this->assertSame($array, $getEmptyIndex($array)); - } - - public function testProperty() { - $getPropertyFoo = func\property('foo'); - $getPropertyBar = func\property('bar'); - - $obj = (object) ['foo' => 'bar', 'bar' => 'foo']; - - $this->assertSame($obj->foo, $getPropertyFoo($obj)); - $this->assertSame($obj->bar, $getPropertyBar($obj)); - } - - public function testMethod() { - $callMethod1 = func\method('test'); - $callMethod2 = func\method('test', []); - $callMethod3 = func\method('test', ['a', 'b']); - - $obj = new _MethodTestDummy; - - $this->assertSame([], $callMethod1($obj)); - $this->assertSame([], $callMethod2($obj)); - $this->assertSame(['a', 'b'], $callMethod3($obj)); - } - - public function testNot() { - $constFalse = func\not(function() { return true; }); - $constTrue = func\not(function() { return false; }); - $invert = func\not(function($bool) { return $bool; }); - $nand = func\not(func\operator('&&')); - - $this->assertFalse($constFalse()); - $this->assertTrue($constTrue()); - $this->assertFalse($invert(true)); - $this->assertTrue($invert(false)); - $this->assertFalse($nand(true, true)); - $this->assertTrue($nand(true, false)); - } - - /** @dataProvider provideTestOperator */ - public function testOperator($op, $a, $b, $result) { - $fn1 = func\operator($op); - $fn2 = func\operator($op, $b); - - $this->assertSame($result, $fn1($a, $b)); - $this->assertSame($result, $fn2($a)); - } - - public function provideTestOperator() { - return [ - 'instanceof' => ['instanceof', new \stdClass, 'stdClass', true], - '*' => ['*', 3, 2, 6], - '/' => ['/', 3, 2, 1.5], - '%' => ['%', 3, 2, 1], - '+' => ['+', 3, 2, 5], - '-' => ['-', 3, 2, 1], - '.' => ['.', 'foo', 'bar', 'foobar'], - '<<' => ['<<', 1, 8, 256], - '>>' => ['>>', 256, 8, 1], - '<' => ['<', 3, 5, true], - '<=' => ['<=', 5, 5, true], - '>' => ['>', 3, 5, false], - '>=' => ['>=', 3, 5, false], - '== with number and string' => ['==', 0, 'foo', (PHP_VERSION_ID > 80000 ? false : true)], - '== with numbers' => ['==', 0, '0', true], - '!=' => ['!=', 1, 'foo', true], - '===' => ['===', 0, 'foo', false], - '!==' => ['!==', 0, 'foo', true], - '&' => ['&', 3, 1, 1], - '|' => ['|', 3, 1, 3], - '^' => ['^', 3, 1, 2], - '&&' => ['&&', true, false, false], - '||' => ['||', true, false, true], - '**' => ['**', 2, 4, 16], - '<=> with arrays' => ['<=>', [0=>1,1=>0], [1=>0,0=>1], 0], - '<=> with scientific floats' => ['<=>', '2e1', '1e10', -1], - '<=> with stdClass/SplStack' => ['<=>', new \stdClass(), new \SplStack(), 1], - '<=> with SplStack/stdClass' => ['<=>', new \SplStack(), new \stdClass(), 1], - ]; - } - - - public function testInvalidOperator() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Unknown operator "***"'); - - func\operator('***'); - } -} - -class _MethodTestDummy { - public function test(...$args) { - return $args; - } -} diff --git a/Box54346/vendor/nikic/iter/test/IterRewindableTest.php b/Box54346/vendor/nikic/iter/test/IterRewindableTest.php deleted file mode 100644 index da38e95a9..000000000 --- a/Box54346/vendor/nikic/iter/test/IterRewindableTest.php +++ /dev/null @@ -1,180 +0,0 @@ -assertSame($array, $fn($iter)); - $this->assertSame($array, $fn($iter)); - } - - public function testRewindableVariants() { - $this->assertRewindableEquals( - [1, 2, 3, 4, 5], - rewindable\range(1, 5) - ); - $this->assertRewindableEquals( - [3, 6, 9, 12, 15], - rewindable\map(func\operator('*', 3), rewindable\range(1, 5)) - ); - $this->assertRewindableEquals( - ['a' => 1, 'b' => 2, 'c' => 3], - rewindable\mapKeys('strtolower', ['A' => 1, 'B' => 2, 'C' => 3]), - true - ); - $this->assertRewindableEquals( - [0, 1, 4, 9, 16, 25], - rewindable\mapWithKeys(func\operator('*'), rewindable\range(0, 5)) - ); - $this->assertRewindableEquals( - [-1, 1, -2, 2, -3, 3, -4, 4, -5, 5], - rewindable\flatMap(function($v) { - return [-$v, $v]; - }, [1, 2, 3, 4, 5]) - ); - $this->assertRewindableEquals( - [2 => 1, 4 => 2, 6 => 3, 8 => 4], - rewindable\reindex(func\operator('*', 2), [1, 2, 3, 4]), - true - ); - $this->assertRewindableEquals( - [-5, -4, -3, -2, -1], - rewindable\filter(func\operator('<', 0), rewindable\range(-5, 5)) - ); - $this->assertRewindableEquals( - [[0,0], [1,1], [2,2], [3,3], [4,4], [5,5]], - rewindable\enumerate(rewindable\range(0, 5)) - ); - $this->assertRewindableEquals( - [[0,0], [1,1], [2,2], [3,3], [4,4], [5,5]], - rewindable\toPairs(rewindable\range(0, 5)) - ); - $this->assertRewindableEquals( - [0, 1, 2, 3, 4, 5], - rewindable\fromPairs([[0,0], [1,1], [2,2], [3,3], [4,4], [5,5]]) - ); - $this->assertRewindableEquals( - [[0,5], [1,4], [2,3], [3,2], [4,1], [5,0]], - rewindable\zip(rewindable\range(0, 5), rewindable\range(5, 0, -1)) - ); - $this->assertRewindableEquals( - [1, 3, 6, 10, 15], - rewindable\reductions(func\operator('+'), rewindable\range(1, 5), 0) - ); - $this->assertRewindableEquals( - [5=>0, 4=>1, 3=>2, 2=>3, 1=>4, 0=>5], - rewindable\zipKeyValue(rewindable\range(5, 0, -1), rewindable\range(0, 5)), - true - ); - $this->assertRewindableEquals( - [1, 2, 3, 4, 5, 6, 7, 8, 9], - rewindable\chain(rewindable\range(1, 3), rewindable\range(4, 6), rewindable\range(7, 9)) - ); - $this->assertRewindableEquals( - [5, 6, 7, 8, 9], - rewindable\slice(rewindable\range(0, 9), 5) - ); - $this->assertRewindableEquals( - [1, 2, 3], - rewindable\take(3, [1, 2, 3, 4, 5]) - ); - $this->assertRewindableEquals( - [4, 5], - rewindable\drop(3, [1, 2, 3, 4, 5]) - ); - $this->assertRewindableEquals( - [1, 1, 1, 1, 1], - rewindable\repeat(1, 5) - ); - $this->assertRewindableEquals( - ['b', 'd', 'f'], - rewindable\values(['a' => 'b', 'c' => 'd', 'e' => 'f']), - true - ); - $this->assertRewindableEquals( - ['a', 'c', 'e'], - rewindable\keys(['a' => 'b', 'c' => 'd', 'e' => 'f']), - true - ); - $this->assertRewindableEquals( - [3, 1, 4], - rewindable\takeWhile(func\operator('>', 0), [3, 1, 4, -1, 5]) - ); - $this->assertRewindableEquals( - [-1, 5], - rewindable\dropWhile(func\operator('>', 0), [3, 1, 4, -1, 5]) - ); - $this->assertRewindableEquals( - [1, 2, 3, 4, 5], - rewindable\flatten([[1, [[2, [[]], 3], 4]], 5]) - ); - $this->assertRewindableEquals( - [1 => 'a', 2 => 'b', 3 => 'c'], - rewindable\flip(['a' => 1, 'b' => 2, 'c' => 3]), - true - ); - $this->assertRewindableEquals( - [[1, 2], [3, 4], [5]], - rewindable\chunk([1, 2, 3, 4, 5], 2) - ); - $this->assertRewindableEquals( - [['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4], ['e' => 5]], - rewindable\chunkWithKeys(['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5], 2), - true - ); - $this->assertRewindableEquals( - [[1,3,5],[1,3,6],[1,4,5],[1,4,6],[2,3,5],[2,3,6],[2,4,5],[2,4,6]], - rewindable\product([1,2], [3,4], [5,6]) - ); - } - - public function testMakeRewindable() { - $range = makeRewindable('iter\\range'); - $map = makeRewindable('iter\\map'); - $this->assertRewindableEquals( - [3, 6, 9, 12, 15], - $map(func\operator('*', 3), $range(1, 5)) - ); - } - - public function testCallRewindable() { - $this->assertRewindableEquals( - [3, 6, 9, 12, 15], - callRewindable( - 'iter\\map', - func\operator('*', 3), callRewindable('iter\\range', 1, 5) - ) - ); - } - - public function testRewindableGenerator() { - // Make sure that send() and throw() work with rewindable generator - $genFn = makeRewindable(function() { - $startValue = yield; - try { - for (;;) yield $startValue++; - } catch (\Exception $e) { - yield 'end'; - } - }); - - /** @var rewindable\_RewindableGenerator $gen */ - $gen = $genFn(); - - for ($i = 0; $i < 2; ++$i) { - $gen->rewind(); - $gen->send(10); - $this->assertEquals(10, $gen->current()); - $gen->next(); - $this->assertEquals(11, $gen->current()); - $gen->next(); - $this->assertEquals(12, $gen->current()); - $gen->throw(new \Exception); - $this->assertEquals('end', $gen->current()); - } - } -} diff --git a/Box54346/vendor/nikic/iter/test/iterTest.php b/Box54346/vendor/nikic/iter/test/iterTest.php deleted file mode 100644 index cb5c1f230..000000000 --- a/Box54346/vendor/nikic/iter/test/iterTest.php +++ /dev/null @@ -1,628 +0,0 @@ -assertSame($resultArray, toArray(range($start, $end, $step))); - } - - public function provideTestRange() { - return [ - [0, 10, null, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]], - [0, 10, 2, [0, 2, 4, 6, 8, 10]], - [0, 3, 0.5, [0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0]], - [10, 0, null, [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]], - [10, 0, -2, [10, 8, 6, 4, 2, 0]], - [3, 0, -0.5, [3, 2.5, 2.0, 1.5, 1.0, 0.5, 0.0]], - [5, 5, 0, [5]] - ]; - } - - - public function testRangeStepMustBePositive() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('If start < end the step must be positive'); - - toArray(range(0, 10, -1)); - } - - - public function testRangeStepMustBeNegative() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('If start > end the step must be negative'); - - toArray(range(10, 0, 1)); - } - - public function testMap() { - $range = range(0, 5); - $mapped = map(function($n) { return $n * 3; }, $range); - $this->assertSame([0, 3, 6, 9, 12, 15], toArray($mapped)); - } - - public function testMapKeys() { - $range = range(0, 5); - $mapped = mapKeys(function($n) { return $n * 3; }, $range); - $this->assertSame( - [0 => 0, 3 => 1, 6 => 2, 9 => 3, 12 => 4, 15 => 5], - toArrayWithKeys($mapped) - ); - - $mapped = mapKeys('strtolower', ['A' => 1, 'B' => 2, 'C' => 3]); - $this->assertSame( - ['a' => 1, 'b' => 2, 'c' => 3], - toArrayWithKeys($mapped) - ); - } - - public function testMapWithKeys() - { - $mapped = mapWithKeys(func\operator('*'), range(0, 5)); - $this->assertSame([0, 1, 4, 9, 16, 25], toArray($mapped)); - - $mapped = mapWithKeys( - function ($v, $k) { return sprintf('%s%s', $k, $v); }, - ['foo' => 'bar', 'bing' => 'baz'] - ); - $this->assertSame( - ['foo' => 'foobar', 'bing' => 'bingbaz'], - toArrayWithKeys($mapped) - ); - } - - public function testFlatMap() { - $this->assertSame( - [-1, 1, -2, 2, -3, 3, -4, 4, -5, 5], - toArray(flatMap(function($v) { - return [-$v, $v]; - }, [1, 2, 3, 4, 5])) - ); - $this->assertSame( - [], - toArray(flatMap(function() { return []; }, [1, 2, 3, 4, 5])) - ); - } - - public function testReindex() { - $iter = reindex('strtoupper', ['a', 'b', 'c', 'd', 'e']); - $this->assertSame( - ['A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e'], - toArrayWithKeys($iter) - ); - - $iter = reindex(func\operator('*', 2), [1, 2, 3, 4]); - $this->assertSame( - [2 => 1, 4 => 2, 6 => 3, 8 => 4], - toArrayWithKeys($iter) - ); - } - - public function testApply() { - $range = range(0, 5); - $result = []; - apply(function($n) use (&$result) { $result[] = $n; }, $range); - - $this->assertSame([0, 1, 2, 3, 4, 5], $result); - } - - public function testFilter() { - $range = range(-5, 5); - $filtered = filter(function($n) { return $n < 0; }, $range); - $this->assertSame([-5, -4, -3, -2, -1], toArray($filtered)); - } - - public function testEnumerateIsAliasOfToPairs() { - $this->assertSame(toArray(toPairs(['a', 'b'])), toArray(enumerate(['a', 'b']))); - } - - public function testToPairs() { - $this->assertSame([[0, 'a'], [1, 'b']], toArray(toPairs(['a', 'b']))); - } - - public function testToPairsWithStringKeys() { - $enumerated = toPairs([ - 'a' => 1, - 'b' => 2, - ]); - $this->assertSame([['a', 1], ['b', 2]], toArray($enumerated)); - } - - public function testFromPairs() { - $this->assertSame(['a', 'b'], toArrayWithKeys(fromPairs([[0, 'a'], [1, 'b']]))); - } - - public function testFromPairsInverseToPairs() { - $map = ['a' => 1, 'b' => 2]; - $this->assertSame($map, toArrayWithKeys(fromPairs(toPairs($map)))); - } - - public function testZip() { - $zipped = zip(range(0, 5), range(5, 0, -1)); - $this->assertSame([[0,5], [1,4], [2,3], [3,2], [4,1], [5,0]], toArray($zipped)); - } - - public function testZipEmpty() { - $res = toArray(zip()); - $this->assertSame([], $res); - } - - public function testZipKeyValue() { - $zipped = zipKeyValue(range(5, 0, -1), range(0, 5)); - $this->assertSame([5=>0, 4=>1, 3=>2, 2=>3, 1=>4, 0=>5], toArrayWithKeys($zipped)); - } - - public function testChain() { - $chained = chain(range(1, 3), range(4, 6), range(7, 9)); - $this->assertSame([1, 2, 3, 4, 5, 6, 7, 8, 9], toArray($chained)); - - // empty chain - $this->assertSame([], toArray(chain())); - } - - public function testSlice() { - $this->assertSame( - [5, 6, 7, 8, 9], - toArray(slice(range(0, INF), 5, 5)) - ); - $this->assertSame( - [5, 6, 7, 8, 9], - toArray(slice(range(0, 9), 5)) - ); - - // empty slice - $this->assertSame([], toArray(slice(range(0, INF), 0, 0))); - } - - public function testSliceDoNotTakeElementsAboveEndIndex() { - $takenElements = 0; - $iterator = function () use (&$takenElements) { - foreach (range(0, INF) as $item) { - $takenElements++; - yield $item; - } - }; - - $this->assertSame( - [0, 1, 2], - toArray(slice($iterator(), 0, 3)) - ); - - $this->assertSame(3, $takenElements); - } - - public function testSliceNegativeLengthError() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Length must be non-negative'); - - toArray(slice(range(0, INF), 0, -1)); - } - - - public function testSliceNegativeStartOffsetError() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Start offset must be non-negative'); - - toArray(slice(range(0, INF), -1, 5)); - } - - public function testSliceNegativeStartOffsetErrorWithZeroLength() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Start offset must be non-negative'); - - toArray(slice(range(0, INF), -1, 0)); - } - - public function testTakeDrop() { - $this->assertSame([1, 2, 3], toArray(take(3, [1, 2, 3, 4, 5]))); - $this->assertSame([4, 5], toArray(drop(3, [1, 2, 3, 4, 5]))); - $this->assertSame([], toArray(take(3, []))); - $this->assertSame([], toArray(drop(3, []))); - } - - public function testRepeat() { - $this->assertSame([1, 1, 1, 1, 1], toArray(repeat(1, 5))); - $this->assertSame([], toArray(repeat(1, 0))); - } - - - public function testRepeatNegativeNumError() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Number of repetitions must be non-negative'); - - toArray(repeat(1, -1)); - } - - public function testKeyValue() { - $array = ['a' => 'b', 'c' => 'd', 'e' => 'f']; - $this->assertSame(['b', 'd', 'f'], toArrayWithKeys(values($array))); - $this->assertSame(['a', 'c', 'e'], toArrayWithKeys(keys($array))); - } - - public function testReduce() { - $this->assertSame(15, reduce(func\operator('+'), range(1, 5), 0)); - $this->assertSame(120, reduce(func\operator('*'), range(1, 5), 1)); - } - - public function testComplexReduce() { - $this->assertSame('abcdef', reduce(function ($acc, $value, $key) { - return $acc . $key . $value; - }, ['a' => 'b', 'c' => 'd', 'e' => 'f'], '')); - } - - public function testReductions() { - $this->assertSame( - [1, 3, 6, 10, 15], - toArrayWithKeys(reductions(func\operator('+'), range(1, 5), 0)) - ); - $this->assertSame( - [1, 2, 6, 24, 120], - toArrayWithKeys(reductions(func\operator('*'), range(1, 5), 1)) - ); - } - - public function testComplexReductions() { - $this->assertSame( - ['ab', 'abcd', 'abcdef'], - toArrayWithKeys(reductions(function ($acc, $value, $key) { - return $acc . $key . $value; - }, ['a' => 'b', 'c' => 'd', 'e' => 'f'], '')) - ); - } - - public function testAnyAll() { - $this->assertTrue(all(func\operator('>', 0), range(1, 10))); - $this->assertFalse(all(func\operator('>', 0), range(-5, 5))); - $this->assertTrue(any(func\operator('>', 0), range(-5, 5))); - $this->assertFalse(any(func\operator('>', 0), range(-10, 0))); - } - - public function testSearch() { - $iter = new \ArrayIterator(['foo', 'bar', 'baz']); - $this->assertSame('baz', search(func\operator('===', 'baz'), $iter)); - - $iter = new \ArrayIterator(['foo', 'bar', 'baz']); - $this->assertSame(null, search(func\operator('===', 'qux'), $iter)); - - $iter = new \ArrayIterator([]); - $this->assertSame(null, search(func\operator('===', 'qux'), $iter)); - } - - public function testTakeOrDropWhile() { - $this->assertSame( - [3, 1, 4], - toArray(takeWhile(func\operator('>', 0), [3, 1, 4, -1, 5])) - ); - $this->assertSame( - [-1, 5], - toArray(dropWhile(func\operator('>', 0), [3, 1, 4, -1, 5])) - ); - $this->assertSame( - [1, 2, 3], - toArray(takeWhile(func\operator('>', 0), [1, 2, 3])) - ); - $this->assertSame( - [], - toArray(dropWhile(func\operator('>', 0), [1, 2, 3])) - ); - } - - public function testFlatten() { - $this->assertSame( - [1, 2, 3, 4, 5], - toArray(flatten([1, 2, 3, 4, 5])) - ); - $this->assertSame( - [1, 2, 3, 4, 5], - toArray(flatten([1, [2, 3], 4, [], 5])) - ); - $this->assertSame( - [1, 2, 3, 4, 5], - toArray(flatten([1, [[2, 3], 4], 5])) - ); - $this->assertSame( - [1, 2, 3, 4, 5], - toArray(flatten([[1, [[2, [[]], 3], 4]], 5])) - ); - $this->assertSame( - [1, 2, 3, 4, 5], - toArray(flatten(new \ArrayIterator([ - new \ArrayIterator([1, 2]), - 3, - new \ArrayIterator([4, 5]), - ]))) - ); - - // Test key preservation - $this->assertSame( - ['a' => 1, 'c' => 2, 'd' => 3], - toArrayWithKeys(flatten(['a' => 1, 'b' => ['c' => 2, 'd' => 3]])) - ); - } - - public function testFlattenLevels() { - $this->assertSame( - [[1, [[2, [[]], 3], 4]], 5], - toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 0)) - ); - $this->assertSame( - [1, [[2, [[]], 3], 4], 5], - toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 1)) - ); - $this->assertSame( - [1, [2, [[]], 3], 4, 5], - toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 2)) - ); - $this->assertSame( - [1, 2, [[]], 3, 4, 5], - toArray(flatten([[1, [[2, [[]], 3], 4]], 5], 3)) - ); - } - - - public function testFlattenNegativeLevelError() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Number of levels must be non-negative'); - - toArray(flatten([1, 2, 3], -1)); - } - - public function testToIter() { - $iter = new \ArrayIterator([1, 2, 3]); - $this->assertSame($iter, toIter($iter)); - - $iter = toIter(new \ArrayObject([1, 2, 3])); - $this->assertInstanceOf('Iterator', $iter); - $this->assertSame([1, 2, 3], toArray($iter)); - - $iter = toIter([1, 2, 3]); - $this->assertInstanceOf('ArrayIterator', $iter); - $this->assertSame([1, 2, 3], toArray($iter)); - - // DatePeriod is Traversable, but not Iterator or IteratorAggregate - $iter = toIter(new \DatePeriod('R2/2012-07-01T00:00:00Z/P7D')); - $this->assertInstanceOf('Iterator', $iter); - $this->assertSame( - ['2012-07-01', '2012-07-08', '2012-07-15'], - toArray(map(func\method('format', ['Y-m-d']), $iter)) - ); - } - - public function testCount() { - $this->assertCount(5, [1, 2, 3, 4, 5]); - $this->assertCount(5, toIter([1, 2, 3, 4, 5])); - $this->assertCount(42, new _CountableTestDummy); - } - - public function testIsEmpty() { - $this->assertTrue(isEmpty([])); - $this->assertFalse(isEmpty([null])); - $this->assertTrue(isEmpty(toArray([]))); - $this->assertFalse(isEmpty(toArray([null]))); - $this->assertTrue(isEmpty(repeat(42, 0))); - $this->assertFalse(isEmpty(repeat(42))); - } - - public function testToArray() { - $this->assertSame([1, 2, 3], toArray(['a' => 1, 'b' => 2, 'c' => 3])); - $this->assertSame( - [1, 2, 3], - toArray(new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 3])) - ); - $this->assertSame( - [1, 2, 3], - toArray(chain(['a' => 1, 'b' => 2], ['a' => 3])) - ); - } - - public function testToArrayWithKeys() { - $this->assertSame( - ['a' => 1, 'b' => 2, 'c' => 3], - toArrayWithKeys(['a' => 1, 'b' => 2, 'c' => 3]) - ); - $this->assertSame( - ['a' => 1, 'b' => 2, 'c' => 3], - toArrayWithKeys(new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 3])) - ); - $this->assertSame( - ['a' => 3, 'b' => 2], - toArrayWithKeys(chain(['a' => 1, 'b' => 2], ['a' => 3])) - ); - } - - - public function testFlip() { - $this->assertSame( - [1 => 'a', 2 => 'b', 3 => 'c'], - toArrayWithKeys(flip(['a' => 1, 'b' => 2, 'c' => 3])) - ); - } - - public function testJoin() { - $this->assertSame('', join(', ', [])); - $this->assertSame( - 'a, b, c', - join(', ', new \ArrayIterator(['a', 'b', 'c'])) - ); - } - - public function testSplit() { - $this->assertSame(['a', 'b', 'c'], toArray(split(', ', 'a, b, c'))); - $this->assertSame(['b', 'b', 'b', 'b', 'b', 'b', 'b'], toArray(split('a', 'babababababab'))); - - $this->assertSame(['a', 'b', '', '', 'c'], toArray(split(',', 'a,b,,,c'))); - $this->assertSame(['', '', 'c'], toArray(split(',', ',,c'))); - $this->assertSame(['c', '', ''], toArray(split(',', 'c,,'))); - - $this->expectException(\InvalidArgumentException::class); - split('', 'a'); - } - - public function testChunk() { - $iterable = new \ArrayIterator( - ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5] - ); - - $this->assertSame( - [[1, 2], [3, 4], [5]], - toArray(chunk($iterable, 2)) - ); - $this->assertSame( - [[0, 1], [2, 3]], - toArray(chunk([0, 1, 2, 3], 2)) - ); - - $this->assertSame([[0, 1, 2]], toArray(chunk([0, 1, 2], 100000))); - $this->assertSame([], toArray(chunk([], 100000))); - - $this->assertSame( - [['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4], ['e' => 5]], - toArray(chunk($iterable, 2, true)) - ); - $this->assertSame( - [[0=>0, 1=>1], [2=>2, 3=>3]], - toArray(chunk([0, 1, 2, 3], 2, true)) - ); - - $this->assertSame( - [['a' => 1, 'b' => 2], ['c' => 3, 'd' => 4], ['e' => 5]], - toArray(chunkWithKeys($iterable, 2)) - ); - $this->assertSame( - [[0=>0, 1=>1], [2=>2, 3=>3]], - toArray(chunkWithKeys([0, 1, 2, 3], 2)) - ); - } - - - public function testZeroChunkSizeError() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Chunk size must be positive'); - - toArray(chunk([1, 2, 3], 0)); - } - - - public function testNegativeChunkSizeError() { - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage('Chunk size must be positive'); - - toArray(chunk([1, 2, 3], -1)); - } - - public function testProduct() { - $this->assertKeysValues([[]], [[]], function() { return product(); }); - - $this->assertKeysValues( - [[0],[1]], [[1],[2]], function() { return product([1,2]); }); - - $this->assertKeysValues( - [[0,0],[0,1],[1,0],[1,1]], - [[1,3],[1,4],[2,3],[2,4]], - function() { return product([1,2],[3,4]); }); - - $this->assertKeysValues( - [[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]], - [[1,1,1],[1,1,2],[1,2,1],[1,2,2],[2,1,1],[2,1,2],[2,2,1],[2,2,2]], - function() { - return product(range(1,2), [1,2], new \ArrayIterator([1,2])); - } - ); - } - - function testRecurse() { - $iter = new \ArrayIterator(['a' => 1, 'b' => 2, - 'c' => new \ArrayIterator(['d' => 3, 'e' => 4])]); - - $this->assertSame( - [1, 2, [3, 4]], - recurse('iter\toArray', $iter) - ); - - $this->assertSame( - ['a' => 1, 'b' => 2, 'c' => ['d' => 3, 'e' => 4]], - recurse('iter\toArrayWithKeys', $iter) - ); - } - - private function assertKeysValues(array $keys, array $values, callable $fn) { - $this->assertSame($keys, toArray(keys($fn()))); - $this->assertSame($values, toArray(values($fn()))); - } - - public function testIsIterable() { - $this->assertTrue(isIterable([])); - $this->assertTrue(isIterable([1, 2, 3])); - $this->assertTrue(isIterable(new \ArrayIterator([1, 2, 3]))); - $gen = function() { yield; }; - $this->assertTrue(isIterable($gen())); - - $this->assertFalse(isIterable(new \stdClass())); - $this->assertFalse(isIterable("foobar")); - $this->assertFalse(isIterable(123)); - } - - /** - * @dataProvider provideTestAssertIterableFails - */ - public function testAssertIterableFails(callable $fn, $expectedMessage, $expectedException) { - if(null !== $expectedMessage){ - $this->expectExceptionMessage($expectedMessage); - } - $this->expectException($expectedException); - $ret = $fn(); - - // For generators the body will not be run until the first operation - if ($ret instanceof \Generator) { - $ret->rewind(); - } - } - - public function provideTestAssertIterableFails() { - yield [ - function() { return count(new \stdClass()); }, - 'Argument must be iterable or implement Countable', - \InvalidArgumentException::class - ]; - yield [ - function() { return isEmpty(new \stdClass()); }, - 'Argument must be iterable or implement Countable', - \InvalidArgumentException::class - ]; - yield [ - function() { return toIter(new \stdClass()); }, - null, - \TypeError::class - ]; - yield [ - function() { - return map(function($v) { return $v; }, new \stdClass()); - }, - null, - \TypeError::class - ]; - yield [ - function() { - return chain([1], [2], new \stdClass()); - }, - null, - \TypeError::class - ]; - yield [ - function() { - return zip([1], [2], new \stdClass()); - }, - null, - \TypeError::class - ]; - } -} - -class _CountableTestDummy implements \Countable { - public function count(): int { - return 42; - } -} diff --git a/box.json.dist b/box.json.dist index cda4ef6a9..7520e7b47 100644 --- a/box.json.dist +++ b/box.json.dist @@ -16,7 +16,6 @@ ], "directories-bin": ["res/requirement-checker"], - "exclude-composer-files": false, "compression": "GZ", "compactors": [ "KevinGH\\Box\\Compactor\\Php", diff --git a/composer/LICENSE b/composer/LICENSE deleted file mode 100644 index f27399a04..000000000 --- a/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/composer/bin/composer b/composer/bin/composer deleted file mode 100644 index 029bdef88..000000000 --- a/composer/bin/composer +++ /dev/null @@ -1,88 +0,0 @@ -check(); -unset($xdebug); - -if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '4.0', '>=')) { - echo 'HHVM 4.0 has dropped support for Composer, please use PHP instead. Aborting.'.PHP_EOL; - exit(1); -} -if (!extension_loaded('iconv') && !extension_loaded('mbstring')) { - echo 'The iconv OR mbstring extension is required and both are missing.' - .PHP_EOL.'Install either of them or recompile php without --disable-iconv.' - .PHP_EOL.'Aborting.'.PHP_EOL; - exit(1); -} - -if (function_exists('ini_set')) { - @ini_set('display_errors', '1'); - - // Set user defined memory limit - if ($memoryLimit = getenv('COMPOSER_MEMORY_LIMIT')) { - @ini_set('memory_limit', $memoryLimit); - } else { - $memoryInBytes = function ($value) { - $unit = strtolower(substr($value, -1, 1)); - $value = (int) $value; - switch($unit) { - case 'g': - $value *= 1024; - // no break (cumulative multiplier) - case 'm': - $value *= 1024; - // no break (cumulative multiplier) - case 'k': - $value *= 1024; - } - - return $value; - }; - - $memoryLimit = trim(ini_get('memory_limit')); - // Increase memory_limit if it is lower than 1.5GB - if ($memoryLimit != -1 && $memoryInBytes($memoryLimit) < 1024 * 1024 * 1536) { - @ini_set('memory_limit', '1536M'); - } - unset($memoryInBytes); - } - unset($memoryLimit); -} - -// Workaround PHP bug on Windows where env vars containing Unicode chars are mangled in $_SERVER -// see https://github.com/php/php-src/issues/7896 -if (PHP_VERSION_ID >= 70113 && (PHP_VERSION_ID < 80016 || (PHP_VERSION_ID >= 80100 && PHP_VERSION_ID < 80103)) && Platform::isWindows()) { - foreach ($_SERVER as $serverVar => $serverVal) { - if (($serverVal = getenv($serverVar)) !== false) { - $_SERVER[$serverVar] = $serverVal; - } - } -} - -Platform::putEnv('COMPOSER_BINARY', realpath($_SERVER['argv'][0])); - -ErrorHandler::register(); - -// run the command application -$application = new Application(); -$application->run(); diff --git a/composer/res/composer-repository-schema.json b/composer/res/composer-repository-schema.json deleted file mode 100644 index adcc299d6..000000000 --- a/composer/res/composer-repository-schema.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft-04/schema#", - "description": "A representation of packages metadata.", - "type": "object", - "oneOf": [ - { "required": [ "packages" ] }, - { "required": [ "providers" ] }, - { "required": [ "provider-includes", "providers-url" ] } - ], - "properties": { - "packages": { - "type": ["object", "array"], - "description": "A hashmap of package names in the form of /.", - "additionalProperties": { "$ref": "#/definitions/versions" } - }, - "providers-url": { - "type": "string", - "description": "Endpoint to retrieve provider data from, e.g. '/p/%package%$%hash%.json'." - }, - "provider-includes": { - "type": "object", - "description": "A hashmap of provider listings.", - "additionalProperties": { "$ref": "#/definitions/provider" } - }, - "providers": { - "type": "object", - "description": "A hashmap of package names in the form of /.", - "additionalProperties": { "$ref": "#/definitions/provider" } - }, - "notify-batch": { - "type": "string", - "description": "Endpoint to call after multiple packages have been installed, e.g. '/downloads/'." - }, - "search": { - "type": "string", - "description": "Endpoint that provides search capabilities, e.g. '/search.json?q=%query%&type=%type%'." - }, - "warning": { - "type": "string", - "description": "A message that will be output by Composer as a warning when this source is consulted." - } - }, - "definitions": { - "versions": { - "type": "object", - "description": "A hashmap of versions and their metadata.", - "additionalProperties": { "$ref": "#/definitions/version" } - }, - "version": { - "type": "object", - "oneOf": [ - { "$ref": "#/definitions/package" }, - { "$ref": "#/definitions/metapackage" } - ] - }, - "package-base": { - "properties": { - "name": { "type": "string" }, - "type": { "type": "string" }, - "version": { "type": "string" }, - "version_normalized": { - "type": "string", - "description": "Normalized version, optional but can save computational time on client side." - }, - "autoload": { "type": "object" }, - "require": { "type": "object" }, - "replace": { "type": "object" }, - "conflict": { "type": "object" }, - "provide": { "type": "object" }, - "time": { "type": "string" } - }, - "additionalProperties": true - }, - "package": { - "allOf": [ - { "$ref": "#/definitions/package-base" }, - { - "properties": { - "dist": { "type": "object" }, - "source": { "type": "object" } - } - }, - { "oneOf": [ - { "required": [ "name", "version", "source" ] }, - { "required": [ "name", "version", "dist" ] } - ] } - ] - }, - "metapackage": { - "allOf": [ - { "$ref": "#/definitions/package-base" }, - { - "properties": { - "type": { "type": "string", "enum": [ "metapackage" ] } - }, - "required": [ "name", "version", "type" ] - } - ] - }, - "provider": { - "type": "object", - "properties": { - "sha256": { - "type": "string", - "description": "Hash value that can be used to validate the resource." - } - } - } - } -} diff --git a/composer/res/composer-schema.json b/composer/res/composer-schema.json deleted file mode 100644 index c384e5b1f..000000000 --- a/composer/res/composer-schema.json +++ /dev/null @@ -1,1062 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft-04/schema#", - "title": "Package", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Package name, including 'vendor-name/' prefix.", - "pattern": "^[a-z0-9]([_.-]?[a-z0-9]+)*\/[a-z0-9](([_.]|-{1,2})?[a-z0-9]+)*$" - }, - "description": { - "type": "string", - "description": "Short package description." - }, - "license": { - "type": ["string", "array"], - "description": "License name. Or an array of license names." - }, - "type": { - "description": "Package type, either 'library' for common packages, 'composer-plugin' for plugins, 'metapackage' for empty packages, or a custom type ([a-z0-9-]+) defined by whatever project this package applies to.", - "type": "string", - "pattern": "^[a-z0-9-]+$" - }, - "abandoned": { - "type": ["boolean", "string"], - "description": "Indicates whether this package has been abandoned, it can be boolean or a package name/URL pointing to a recommended alternative. Defaults to false." - }, - "version": { - "type": "string", - "description": "Package version, see https://getcomposer.org/doc/04-schema.md#version for more info on valid schemes.", - "pattern": "^v?\\d+(\\.\\d+){0,3}|^dev-" - }, - "default-branch": { - "type": ["boolean"], - "description": "Internal use only, do not specify this in composer.json. Indicates whether this version is the default branch of the linked VCS repository. Defaults to false." - }, - "non-feature-branches": { - "type": ["array"], - "description": "A set of string or regex patterns for non-numeric branch names that will not be handled as feature branches.", - "items": { - "type": "string" - } - }, - "keywords": { - "type": "array", - "items": { - "type": "string", - "description": "A tag/keyword that this package relates to." - } - }, - "readme": { - "type": "string", - "description": "Relative path to the readme document." - }, - "time": { - "type": "string", - "description": "Package release date, in 'YYYY-MM-DD', 'YYYY-MM-DD HH:MM:SS' or 'YYYY-MM-DDTHH:MM:SSZ' format." - }, - "authors": { - "$ref": "#/definitions/authors" - }, - "homepage": { - "type": "string", - "description": "Homepage URL for the project.", - "format": "uri" - }, - "support": { - "type": "object", - "properties": { - "email": { - "type": "string", - "description": "Email address for support.", - "format": "email" - }, - "issues": { - "type": "string", - "description": "URL to the issue tracker.", - "format": "uri" - }, - "forum": { - "type": "string", - "description": "URL to the forum.", - "format": "uri" - }, - "wiki": { - "type": "string", - "description": "URL to the wiki.", - "format": "uri" - }, - "irc": { - "type": "string", - "description": "IRC channel for support, as irc://server/channel.", - "format": "uri" - }, - "chat": { - "type": "string", - "description": "URL to the support chat.", - "format": "uri" - }, - "source": { - "type": "string", - "description": "URL to browse or download the sources.", - "format": "uri" - }, - "docs": { - "type": "string", - "description": "URL to the documentation.", - "format": "uri" - }, - "rss": { - "type": "string", - "description": "URL to the RSS feed.", - "format": "uri" - } - } - }, - "funding": { - "type": "array", - "description": "A list of options to fund the development and maintenance of the package.", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Type of funding or platform through which funding is possible." - }, - "url": { - "type": "string", - "description": "URL to a website with details on funding and a way to fund the package.", - "format": "uri" - } - } - } - }, - "source": { - "$ref": "#/definitions/source" - }, - "dist": { - "$ref": "#/definitions/dist" - }, - "_comment": { - "type": ["array", "string"], - "description": "A key to store comments in" - }, - "require": { - "type": "object", - "description": "This is an object of package name (keys) and version constraints (values) that are required to run this package.", - "additionalProperties": { - "type": "string" - } - }, - "require-dev": { - "type": "object", - "description": "This is an object of package name (keys) and version constraints (values) that this package requires for developing it (testing tools and such).", - "additionalProperties": { - "type": "string" - } - }, - "replace": { - "type": "object", - "description": "This is an object of package name (keys) and version constraints (values) that can be replaced by this package.", - "additionalProperties": { - "type": "string" - } - }, - "conflict": { - "type": "object", - "description": "This is an object of package name (keys) and version constraints (values) that conflict with this package.", - "additionalProperties": { - "type": "string" - } - }, - "provide": { - "type": "object", - "description": "This is an object of package name (keys) and version constraints (values) that this package provides in addition to this package's name.", - "additionalProperties": { - "type": "string" - } - }, - "suggest": { - "type": "object", - "description": "This is an object of package name (keys) and descriptions (values) that this package suggests work well with it (this will be suggested to the user during installation).", - "additionalProperties": { - "type": "string" - } - }, - "repositories": { - "type": ["object", "array"], - "description": "A set of additional repositories where packages can be found.", - "additionalProperties": { - "anyOf": [ - { "$ref": "#/definitions/repository" }, - { "type": "boolean", "enum": [false] } - ] - }, - "items": { - "anyOf": [ - { "$ref": "#/definitions/repository" }, - { - "type": "object", - "additionalProperties": { "type": "boolean", "enum": [false] }, - "minProperties": 1, - "maxProperties": 1 - } - ] - } - }, - "minimum-stability": { - "type": ["string"], - "description": "The minimum stability the packages must have to be install-able. Possible values are: dev, alpha, beta, RC, stable.", - "enum": ["dev", "alpha", "beta", "rc", "RC", "stable"] - }, - "prefer-stable": { - "type": ["boolean"], - "description": "If set to true, stable packages will be preferred to dev packages when possible, even if the minimum-stability allows unstable packages." - }, - "autoload": { - "$ref": "#/definitions/autoload" - }, - "autoload-dev": { - "type": "object", - "description": "Description of additional autoload rules for development purpose (eg. a test suite).", - "properties": { - "psr-0": { - "type": "object", - "description": "This is an object of namespaces (keys) and the directories they can be found into (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "psr-4": { - "type": "object", - "description": "This is an object of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "classmap": { - "type": "array", - "description": "This is an array of paths that contain classes to be included in the class-map generation process." - }, - "files": { - "type": "array", - "description": "This is an array of files that are always required on every request." - } - } - }, - "target-dir": { - "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", - "type": "string" - }, - "include-path": { - "type": ["array"], - "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", - "items": { - "type": "string" - } - }, - "bin": { - "type": ["string", "array"], - "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", - "items": { - "type": "string" - } - }, - "archive": { - "type": ["object"], - "description": "Options for creating package archives for distribution.", - "properties": { - "name": { - "type": "string", - "description": "A base name for archive." - }, - "exclude": { - "type": "array", - "description": "A list of patterns for paths to exclude or include if prefixed with an exclamation mark." - } - } - }, - "config": { - "type": "object", - "description": "Composer options.", - "properties": { - "platform": { - "type": "object", - "description": "This is an object of package name (keys) and version (values) that will be used to mock the platform packages on this machine, the version can be set to false to make it appear like the package is not present.", - "additionalProperties": { - "type": ["string", "boolean"] - } - }, - "allow-plugins": { - "type": ["object", "boolean"], - "description": "This is an object of {\"pattern\": true|false} with packages which are allowed to be loaded as plugins, or true to allow all, false to allow none. Defaults to {} which prompts when an unknown plugin is added.", - "additionalProperties": { - "type": ["boolean"] - } - }, - "process-timeout": { - "type": "integer", - "description": "The timeout in seconds for process executions, defaults to 300 (5mins)." - }, - "use-include-path": { - "type": "boolean", - "description": "If true, the Composer autoloader will also look for classes in the PHP include path." - }, - "use-parent-dir": { - "type": ["string", "boolean"], - "description": "When running Composer in a directory where there is no composer.json, if there is one present in a directory above Composer will by default ask you whether you want to use that directory's composer.json instead. One of: true (always use parent if needed), false (never ask or use it) or \"prompt\" (ask every time), defaults to prompt." - }, - "preferred-install": { - "type": ["string", "object"], - "description": "The install method Composer will prefer to use, defaults to auto and can be any of source, dist, auto, or an object of {\"pattern\": \"preference\"}.", - "additionalProperties": { - "type": ["string"] - } - }, - "notify-on-install": { - "type": "boolean", - "description": "Composer allows repositories to define a notification URL, so that they get notified whenever a package from that repository is installed. This option allows you to disable that behaviour, defaults to true." - }, - "github-protocols": { - "type": "array", - "description": "A list of protocols to use for github.com clones, in priority order, defaults to [\"https\", \"ssh\", \"git\"].", - "items": { - "type": "string" - } - }, - "github-oauth": { - "type": "object", - "description": "An object of domain name => github API oauth tokens, typically {\"github.com\":\"\"}.", - "additionalProperties": { - "type": "string" - } - }, - "gitlab-oauth": { - "type": "object", - "description": "An object of domain name => gitlab API oauth tokens, typically {\"gitlab.com\":{\"expires-at\":\"\", \"refresh-token\":\"\", \"token\":\"\"}}.", - "additionalProperties": { - "type": ["string", "object"], - "required": [ "token"], - "properties": { - "expires-at": { - "type": "integer", - "description": "The expiration date for this GitLab token" - }, - "refresh-token": { - "type": "string", - "description": "The refresh token used for GitLab authentication" - }, - "token": { - "type": "string", - "description": "The token used for GitLab authentication" - } - } - } - }, - "gitlab-token": { - "type": "object", - "description": "An object of domain name => gitlab private tokens, typically {\"gitlab.com\":\"\"}, or an object with username and token keys.", - "additionalProperties": { - "type": ["string", "object"], - "required": ["username", "token"], - "properties": { - "username": { - "type": "string", - "description": "The username used for GitLab authentication" - }, - "token": { - "type": "string", - "description": "The token used for GitLab authentication" - } - } - } - }, - "gitlab-protocol": { - "enum": ["git", "http", "https"], - "description": "A protocol to force use of when creating a repository URL for the `source` value of the package metadata. One of `git` or `http`. By default, Composer will generate a git URL for private repositories and http one for public repos." - }, - "bearer": { - "type": "object", - "description": "An object of domain name => bearer authentication token, for example {\"example.com\":\"\"}.", - "additionalProperties": { - "type": "string" - } - }, - "disable-tls": { - "type": "boolean", - "description": "Defaults to `false`. If set to true all HTTPS URLs will be tried with HTTP instead and no network level encryption is performed. Enabling this is a security risk and is NOT recommended. The better way is to enable the php_openssl extension in php.ini." - }, - "secure-http": { - "type": "boolean", - "description": "Defaults to `true`. If set to true only HTTPS URLs are allowed to be downloaded via Composer. If you really absolutely need HTTP access to something then you can disable it, but using \"Let's Encrypt\" to get a free SSL certificate is generally a better alternative." - }, - "secure-svn-domains": { - "type": "array", - "description": "A list of domains which should be trusted/marked as using a secure Subversion/SVN transport. By default svn:// protocol is seen as insecure and will throw. This is a better/safer alternative to disabling `secure-http` altogether.", - "items": { - "type": "string" - } - }, - "cafile": { - "type": "string", - "description": "A way to set the path to the openssl CA file. In PHP 5.6+ you should rather set this via openssl.cafile in php.ini, although PHP 5.6+ should be able to detect your system CA file automatically." - }, - "capath": { - "type": "string", - "description": "If cafile is not specified or if the certificate is not found there, the directory pointed to by capath is searched for a suitable certificate. capath must be a correctly hashed certificate directory." - }, - "http-basic": { - "type": "object", - "description": "An object of domain name => {\"username\": \"...\", \"password\": \"...\"}.", - "additionalProperties": { - "type": "object", - "required": ["username", "password"], - "properties": { - "username": { - "type": "string", - "description": "The username used for HTTP Basic authentication" - }, - "password": { - "type": "string", - "description": "The password used for HTTP Basic authentication" - } - } - } - }, - "store-auths": { - "type": ["string", "boolean"], - "description": "What to do after prompting for authentication, one of: true (store), false (do not store) or \"prompt\" (ask every time), defaults to prompt." - }, - "vendor-dir": { - "type": "string", - "description": "The location where all packages are installed, defaults to \"vendor\"." - }, - "bin-dir": { - "type": "string", - "description": "The location where all binaries are linked, defaults to \"vendor/bin\"." - }, - "data-dir": { - "type": "string", - "description": "The location where old phar files are stored, defaults to \"$home\" except on XDG Base Directory compliant unixes." - }, - "cache-dir": { - "type": "string", - "description": "The location where all caches are located, defaults to \"~/.composer/cache\" on *nix and \"%LOCALAPPDATA%\\Composer\" on windows." - }, - "cache-files-dir": { - "type": "string", - "description": "The location where files (zip downloads) are cached, defaults to \"{$cache-dir}/files\"." - }, - "cache-repo-dir": { - "type": "string", - "description": "The location where repo (git/hg repo clones) are cached, defaults to \"{$cache-dir}/repo\"." - }, - "cache-vcs-dir": { - "type": "string", - "description": "The location where vcs infos (git clones, github api calls, etc. when reading vcs repos) are cached, defaults to \"{$cache-dir}/vcs\"." - }, - "cache-ttl": { - "type": "integer", - "description": "The default cache time-to-live, defaults to 15552000 (6 months)." - }, - "cache-files-ttl": { - "type": "integer", - "description": "The cache time-to-live for files, defaults to the value of cache-ttl." - }, - "cache-files-maxsize": { - "type": ["string", "integer"], - "description": "The cache max size for the files cache, defaults to \"300MiB\"." - }, - "cache-read-only": { - "type": ["boolean"], - "description": "Whether to use the Composer cache in read-only mode." - }, - "bin-compat": { - "enum": ["auto", "full", "proxy", "symlink"], - "description": "The compatibility of the binaries, defaults to \"auto\" (automatically guessed), can be \"full\" (compatible with both Windows and Unix-based systems) and \"proxy\" (only bash-style proxy)." - }, - "discard-changes": { - "type": ["string", "boolean"], - "description": "The default style of handling dirty updates, defaults to false and can be any of true, false or \"stash\"." - }, - "autoloader-suffix": { - "type": "string", - "description": "Optional string to be used as a suffix for the generated Composer autoloader. When null a random one will be generated." - }, - "optimize-autoloader": { - "type": "boolean", - "description": "Always optimize when dumping the autoloader." - }, - "prepend-autoloader": { - "type": "boolean", - "description": "If false, the composer autoloader will not be prepended to existing autoloaders, defaults to true." - }, - "classmap-authoritative": { - "type": "boolean", - "description": "If true, the composer autoloader will not scan the filesystem for classes that are not found in the class map, defaults to false." - }, - "apcu-autoloader": { - "type": "boolean", - "description": "If true, the Composer autoloader will check for APCu and use it to cache found/not-found classes when the extension is enabled, defaults to false." - }, - "github-domains": { - "type": "array", - "description": "A list of domains to use in github mode. This is used for GitHub Enterprise setups, defaults to [\"github.com\"].", - "items": { - "type": "string" - } - }, - "github-expose-hostname": { - "type": "boolean", - "description": "Defaults to true. If set to false, the OAuth tokens created to access the github API will have a date instead of the machine hostname." - }, - "gitlab-domains": { - "type": "array", - "description": "A list of domains to use in gitlab mode. This is used for custom GitLab setups, defaults to [\"gitlab.com\"].", - "items": { - "type": "string" - } - }, - "bitbucket-oauth": { - "type": "object", - "description": "An object of domain name => {\"consumer-key\": \"...\", \"consumer-secret\": \"...\"}.", - "additionalProperties": { - "type": "object", - "required": ["consumer-key", "consumer-secret"], - "properties": { - "consumer-key": { - "type": "string", - "description": "The consumer-key used for OAuth authentication" - }, - "consumer-secret": { - "type": "string", - "description": "The consumer-secret used for OAuth authentication" - }, - "access-token": { - "type": "string", - "description": "The OAuth token retrieved from Bitbucket's API, this is written by Composer and you should not set it nor modify it." - }, - "access-token-expiration": { - "type": "integer", - "description": "The generated token's expiration timestamp, this is written by Composer and you should not set it nor modify it." - } - } - } - }, - "use-github-api": { - "type": "boolean", - "description": "Defaults to true. If set to false, globally disables the use of the GitHub API for all GitHub repositories and clones the repository as it would for any other repository." - }, - "archive-format": { - "type": "string", - "description": "The default archiving format when not provided on cli, defaults to \"tar\"." - }, - "archive-dir": { - "type": "string", - "description": "The default archive path when not provided on cli, defaults to \".\"." - }, - "htaccess-protect": { - "type": "boolean", - "description": "Defaults to true. If set to false, Composer will not create .htaccess files in the composer home, cache, and data directories." - }, - "sort-packages": { - "type": "boolean", - "description": "Defaults to false. If set to true, Composer will sort packages when adding/updating a new dependency." - }, - "lock": { - "type": "boolean", - "description": "Defaults to true. If set to false, Composer will not create a composer.lock file." - }, - "platform-check": { - "type": ["boolean", "string"], - "description": "Defaults to \"php-only\" which checks only the PHP version. Setting to true will also check the presence of required PHP extensions. If set to false, Composer will not create and require a platform_check.php file as part of the autoloader bootstrap." - } - } - }, - "extra": { - "type": ["object", "array"], - "description": "Arbitrary extra data that can be used by plugins, for example, package of type composer-plugin may have a 'class' key defining an installer class name.", - "additionalProperties": true - }, - "scripts": { - "type": ["object"], - "description": "Script listeners that will be executed before/after some events.", - "properties": { - "pre-install-cmd": { - "type": ["array", "string"], - "description": "Occurs before the install command is executed, contains one or more Class::method callables or shell commands." - }, - "post-install-cmd": { - "type": ["array", "string"], - "description": "Occurs after the install command is executed, contains one or more Class::method callables or shell commands." - }, - "pre-update-cmd": { - "type": ["array", "string"], - "description": "Occurs before the update command is executed, contains one or more Class::method callables or shell commands." - }, - "post-update-cmd": { - "type": ["array", "string"], - "description": "Occurs after the update command is executed, contains one or more Class::method callables or shell commands." - }, - "pre-status-cmd": { - "type": ["array", "string"], - "description": "Occurs before the status command is executed, contains one or more Class::method callables or shell commands." - }, - "post-status-cmd": { - "type": ["array", "string"], - "description": "Occurs after the status command is executed, contains one or more Class::method callables or shell commands." - }, - "pre-package-install": { - "type": ["array", "string"], - "description": "Occurs before a package is installed, contains one or more Class::method callables or shell commands." - }, - "post-package-install": { - "type": ["array", "string"], - "description": "Occurs after a package is installed, contains one or more Class::method callables or shell commands." - }, - "pre-package-update": { - "type": ["array", "string"], - "description": "Occurs before a package is updated, contains one or more Class::method callables or shell commands." - }, - "post-package-update": { - "type": ["array", "string"], - "description": "Occurs after a package is updated, contains one or more Class::method callables or shell commands." - }, - "pre-package-uninstall": { - "type": ["array", "string"], - "description": "Occurs before a package has been uninstalled, contains one or more Class::method callables or shell commands." - }, - "post-package-uninstall": { - "type": ["array", "string"], - "description": "Occurs after a package has been uninstalled, contains one or more Class::method callables or shell commands." - }, - "pre-autoload-dump": { - "type": ["array", "string"], - "description": "Occurs before the autoloader is dumped, contains one or more Class::method callables or shell commands." - }, - "post-autoload-dump": { - "type": ["array", "string"], - "description": "Occurs after the autoloader is dumped, contains one or more Class::method callables or shell commands." - }, - "post-root-package-install": { - "type": ["array", "string"], - "description": "Occurs after the root-package is installed, contains one or more Class::method callables or shell commands." - }, - "post-create-project-cmd": { - "type": ["array", "string"], - "description": "Occurs after the create-project command is executed, contains one or more Class::method callables or shell commands." - } - } - }, - "scripts-descriptions": { - "type": ["object"], - "description": "Descriptions for custom commands, shown in console help.", - "additionalProperties": { - "type": "string" - } - } - }, - "definitions": { - "authors": { - "type": "array", - "description": "List of authors that contributed to the package. This is typically the main maintainers, not the full list.", - "items": { - "type": "object", - "additionalProperties": false, - "required": [ "name"], - "properties": { - "name": { - "type": "string", - "description": "Full name of the author." - }, - "email": { - "type": "string", - "description": "Email address of the author.", - "format": "email" - }, - "homepage": { - "type": "string", - "description": "Homepage URL for the author.", - "format": "uri" - }, - "role": { - "type": "string", - "description": "Author's role in the project." - } - } - } - }, - "autoload": { - "type": "object", - "description": "Description of how the package can be autoloaded.", - "properties": { - "psr-0": { - "type": "object", - "description": "This is an object of namespaces (keys) and the directories they can be found in (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "psr-4": { - "type": "object", - "description": "This is an object of namespaces (keys) and the PSR-4 directories they can map to (values, can be arrays of paths) by the autoloader.", - "additionalProperties": { - "type": ["string", "array"], - "items": { - "type": "string" - } - } - }, - "classmap": { - "type": "array", - "description": "This is an array of paths that contain classes to be included in the class-map generation process." - }, - "files": { - "type": "array", - "description": "This is an array of files that are always required on every request." - }, - "exclude-from-classmap": { - "type": "array", - "description": "This is an array of patterns to exclude from autoload classmap generation. (e.g. \"exclude-from-classmap\": [\"/test/\", \"/tests/\", \"/Tests/\"]" - } - } - }, - "repository": { - "type": "object", - "anyOf": [ - { "$ref": "#/definitions/composer-repository" }, - { "$ref": "#/definitions/vcs-repository" }, - { "$ref": "#/definitions/path-repository" }, - { "$ref": "#/definitions/artifact-repository" }, - { "$ref": "#/definitions/pear-repository" }, - { "$ref": "#/definitions/package-repository" } - ] - }, - "composer-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["composer"] }, - "url": { "type": "string" }, - "canonical": { "type": "boolean" }, - "only": { - "type": "array", - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "items": { - "type": "string" - } - }, - "options": { - "type": "object", - "additionalProperties": true - }, - "allow_ssl_downgrade": { "type": "boolean" }, - "force-lazy-providers": { "type": "boolean" } - } - }, - "vcs-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["vcs", "github", "git", "gitlab", "bitbucket", "git-bitbucket", "hg", "fossil", "perforce", "svn"] }, - "url": { "type": "string" }, - "canonical": { "type": "boolean" }, - "only": { - "type": "array", - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "items": { - "type": "string" - } - }, - "no-api": { "type": "boolean" }, - "secure-http": { "type": "boolean" }, - "svn-cache-credentials": { "type": "boolean" }, - "trunk-path": { "type": ["string", "boolean"] }, - "branches-path": { "type": ["string", "boolean"] }, - "tags-path": { "type": ["string", "boolean"] }, - "package-path": { "type": "string" }, - "depot": { "type": "string" }, - "branch": { "type": "string" }, - "unique_perforce_client_name": { "type": "string" }, - "p4user": { "type": "string" }, - "p4password": { "type": "string" } - } - }, - "path-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["path"] }, - "url": { "type": "string" }, - "canonical": { "type": "boolean" }, - "only": { - "type": "array", - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "items": { - "type": "string" - } - }, - "options": { - "type": "object", - "properties": { - "symlink": { "type": ["boolean", "null"] } - }, - "additionalProperties": true - } - } - }, - "artifact-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["artifact"] }, - "url": { "type": "string" }, - "canonical": { "type": "boolean" }, - "only": { - "type": "array", - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "pear-repository": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { "type": "string", "enum": ["pear"] }, - "url": { "type": "string" }, - "canonical": { "type": "boolean" }, - "only": { - "type": "array", - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "items": { - "type": "string" - } - }, - "vendor-alias": { "type": "string" } - } - }, - "package-repository": { - "type": "object", - "required": ["type", "package"], - "properties": { - "type": { "type": "string", "enum": ["package"] }, - "canonical": { "type": "boolean" }, - "only": { - "type": "array", - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "items": { - "type": "string" - } - }, - "package": { - "oneOf": [ - { "$ref": "#/definitions/inline-package" }, - { - "type": "array", - "items": { "$ref": "#/definitions/inline-package" } - } - ] - } - } - }, - "inline-package": { - "type": "object", - "required": ["name", "version"], - "properties": { - "name": { - "type": "string", - "description": "Package name, including 'vendor-name/' prefix." - }, - "type": { - "type": "string" - }, - "target-dir": { - "description": "DEPRECATED: Forces the package to be installed into the given subdirectory path. This is used for autoloading PSR-0 packages that do not contain their full path. Use forward slashes for cross-platform compatibility.", - "type": "string" - }, - "description": { - "type": "string" - }, - "keywords": { - "type": "array", - "items": { - "type": "string" - } - }, - "homepage": { - "type": "string", - "format": "uri" - }, - "version": { - "type": "string" - }, - "time": { - "type": "string" - }, - "license": { - "type": [ - "string", - "array" - ] - }, - "authors": { - "$ref": "#/definitions/authors" - }, - "require": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "replace": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "conflict": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "provide": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "require-dev": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "suggest": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "extra": { - "type": ["object", "array"], - "additionalProperties": true - }, - "autoload": { - "$ref": "#/definitions/autoload" - }, - "archive": { - "type": ["object"], - "properties": { - "exclude": { - "type": "array" - } - } - }, - "bin": { - "type": ["string", "array"], - "description": "A set of files, or a single file, that should be treated as binaries and symlinked into bin-dir (from config).", - "items": { - "type": "string" - } - }, - "include-path": { - "type": ["array"], - "description": "DEPRECATED: A list of directories which should get added to PHP's include path. This is only present to support legacy projects, and all new code should preferably use autoloading.", - "items": { - "type": "string" - } - }, - "source": { - "$ref": "#/definitions/source" - }, - "dist": { - "$ref": "#/definitions/dist" - } - }, - "additionalProperties": true - }, - "source": { - "type": "object", - "required": ["type", "url", "reference"], - "properties": { - "type": { - "type": "string" - }, - "url": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "mirrors": { - "type": "array" - } - } - }, - "dist": { - "type": "object", - "required": ["type", "url"], - "properties": { - "type": { - "type": "string" - }, - "url": { - "type": "string" - }, - "reference": { - "type": "string" - }, - "shasum": { - "type": "string" - }, - "mirrors": { - "type": "array" - } - } - } - } -} diff --git a/composer/src/Composer/Advisory/Auditor.php b/composer/src/Composer/Advisory/Auditor.php deleted file mode 100644 index e77ca4d2a..000000000 --- a/composer/src/Composer/Advisory/Auditor.php +++ /dev/null @@ -1,191 +0,0 @@ -getMatchingSecurityAdvisories($packages, $format === self::FORMAT_SUMMARY); -if (self::FORMAT_JSON === $format) { -$io->write(JsonFile::encode(['advisories' => $advisories])); - -return count($advisories); -} - -$errorOrWarn = $warningOnly ? 'warning' : 'error'; -if (count($advisories) > 0) { -[$affectedPackages, $totalAdvisories] = $this->countAdvisories($advisories); -$plurality = $totalAdvisories === 1 ? 'y' : 'ies'; -$pkgPlurality = $affectedPackages === 1 ? '' : 's'; -$punctuation = $format === 'summary' ? '.' : ':'; -$io->writeError("<$errorOrWarn>Found $totalAdvisories security vulnerability advisor{$plurality} affecting $affectedPackages package{$pkgPlurality}{$punctuation}"); -$this->outputAdvisories($io, $advisories, $format); - -return $affectedPackages; -} - -$io->writeError('No security vulnerability advisories found'); - -return 0; -} - - - - - -private function countAdvisories(array $advisories): array -{ -$count = 0; -foreach ($advisories as $packageAdvisories) { -$count += count($packageAdvisories); -} - -return [count($advisories), $count]; -} - - - - - -private function outputAdvisories(IOInterface $io, array $advisories, string $format): void -{ -switch ($format) { -case self::FORMAT_TABLE: -if (!($io instanceof ConsoleIO)) { -throw new InvalidArgumentException('Cannot use table format with ' . get_class($io)); -} -$this->outputAdvisoriesTable($io, $advisories); - -return; -case self::FORMAT_PLAIN: -$this->outputAdvisoriesPlain($io, $advisories); - -return; -case self::FORMAT_SUMMARY: - -$io->writeError('Run composer audit for a full list of advisories.'); - -return; -default: -throw new InvalidArgumentException('Invalid format "'.$format.'".'); -} -} - - - - -private function outputAdvisoriesTable(ConsoleIO $io, array $advisories): void -{ -foreach ($advisories as $packageAdvisories) { -foreach ($packageAdvisories as $advisory) { -$io->getTable() -->setHorizontal() -->setHeaders([ -'Package', -'CVE', -'Title', -'URL', -'Affected versions', -'Reported at', -]) -->addRow([ -$advisory->packageName, -$this->getCVE($advisory), -$advisory->title, -$this->getURL($advisory), -$advisory->affectedVersions->getPrettyString(), -$advisory->reportedAt->format(DATE_ATOM), -]) -->setColumnWidth(1, 80) -->setColumnMaxWidth(1, 80) -->render(); -} -} -} - - - - -private function outputAdvisoriesPlain(IOInterface $io, array $advisories): void -{ -$error = []; -$firstAdvisory = true; -foreach ($advisories as $packageAdvisories) { -foreach ($packageAdvisories as $advisory) { -if (!$firstAdvisory) { -$error[] = '--------'; -} -$error[] = "Package: ".$advisory->packageName; -$error[] = "CVE: ".$this->getCVE($advisory); -$error[] = "Title: ".OutputFormatter::escape($advisory->title); -$error[] = "URL: ".$this->getURL($advisory); -$error[] = "Affected versions: ".OutputFormatter::escape($advisory->affectedVersions->getPrettyString()); -$error[] = "Reported at: ".$advisory->reportedAt->format(DATE_ATOM); -$firstAdvisory = false; -} -} -$io->writeError($error); -} - -private function getCVE(SecurityAdvisory $advisory): string -{ -if ($advisory->cve === null) { -return 'NO CVE'; -} - -return ''.$advisory->cve.''; -} - -private function getURL(SecurityAdvisory $advisory): string -{ -if ($advisory->link === null) { -return ''; -} - -return 'link).'>'.OutputFormatter::escape($advisory->link).''; -} -} diff --git a/composer/src/Composer/Advisory/PartialSecurityAdvisory.php b/composer/src/Composer/Advisory/PartialSecurityAdvisory.php deleted file mode 100644 index 0875744ba..000000000 --- a/composer/src/Composer/Advisory/PartialSecurityAdvisory.php +++ /dev/null @@ -1,71 +0,0 @@ -parseConstraints($data['affectedVersions']); -if (isset($data['title'], $data['sources'], $data['reportedAt'])) { -return new SecurityAdvisory($packageName, $data['advisoryId'], $constraint, $data['title'], $data['sources'], new \DateTimeImmutable($data['reportedAt'], new \DateTimeZone('UTC')), $data['cve'] ?? null, $data['link'] ?? null); -} - -return new self($packageName, $data['advisoryId'], $constraint); -} - -public function __construct(string $packageName, string $advisoryId, ConstraintInterface $affectedVersions) -{ -$this->advisoryId = $advisoryId; -$this->packageName = $packageName; -$this->affectedVersions = $affectedVersions; -} - - - - -#[\ReturnTypeWillChange] -public function jsonSerialize() -{ -$data = (array) $this; -$data['affectedVersions'] = $data['affectedVersions']->getPrettyString(); - -return $data; -} -} diff --git a/composer/src/Composer/Advisory/SecurityAdvisory.php b/composer/src/Composer/Advisory/SecurityAdvisory.php deleted file mode 100644 index 2c8eeda57..000000000 --- a/composer/src/Composer/Advisory/SecurityAdvisory.php +++ /dev/null @@ -1,76 +0,0 @@ -title = $title; -$this->sources = $sources; -$this->reportedAt = $reportedAt; -$this->cve = $cve; -$this->link = $link; -} - - - - -#[\ReturnTypeWillChange] -public function jsonSerialize() -{ -$data = parent::jsonSerialize(); -$data['reportedAt'] = $data['reportedAt']->format(DATE_RFC3339); - -return $data; -} -} diff --git a/composer/src/Composer/Autoload/AutoloadGenerator.php b/composer/src/Composer/Autoload/AutoloadGenerator.php deleted file mode 100644 index 6714fec0f..000000000 --- a/composer/src/Composer/Autoload/AutoloadGenerator.php +++ /dev/null @@ -1,1339 +0,0 @@ -eventDispatcher = $eventDispatcher; -$this->io = $io ?? new NullIO(); - -$this->platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); -} - - - - -public function setDevMode(bool $devMode = true) -{ -$this->devMode = $devMode; -} - - - - - - -public function setClassMapAuthoritative(bool $classMapAuthoritative) -{ -$this->classMapAuthoritative = $classMapAuthoritative; -} - - - - - - -public function setApcu(bool $apcu, ?string $apcuPrefix = null) -{ -$this->apcu = $apcu; -$this->apcuPrefix = $apcuPrefix !== null ? $apcuPrefix : $apcuPrefix; -} - - - - - - -public function setRunScripts(bool $runScripts = true) -{ -$this->runScripts = $runScripts; -} - - - - - - - - - - - - - -public function setIgnorePlatformRequirements($ignorePlatformReqs) -{ -trigger_error('AutoloadGenerator::setIgnorePlatformRequirements is deprecated since Composer 2.2, use setPlatformRequirementFilter instead.', E_USER_DEPRECATED); - -$this->setPlatformRequirementFilter(PlatformRequirementFilterFactory::fromBoolOrList($ignorePlatformReqs)); -} - - - - -public function setPlatformRequirementFilter(PlatformRequirementFilterInterface $platformRequirementFilter) -{ -$this->platformRequirementFilter = $platformRequirementFilter; -} - - - - - - -public function dump(Config $config, InstalledRepositoryInterface $localRepo, RootPackageInterface $rootPackage, InstallationManager $installationManager, string $targetDir, bool $scanPsrPackages = false, ?string $suffix = null) -{ -if ($this->classMapAuthoritative) { - -$scanPsrPackages = true; -} - - -if (null === $this->devMode) { - -$this->devMode = false; - -$installedJson = new JsonFile($config->get('vendor-dir').'/composer/installed.json'); -if ($installedJson->exists()) { -$installedJson = $installedJson->read(); -if (isset($installedJson['dev'])) { -$this->devMode = $installedJson['dev']; -} -} -} - -if ($this->runScripts) { - -if (!isset($_SERVER['COMPOSER_DEV_MODE'])) { -Platform::putEnv('COMPOSER_DEV_MODE', $this->devMode ? '1' : '0'); -} - -$this->eventDispatcher->dispatchScript(ScriptEvents::PRE_AUTOLOAD_DUMP, $this->devMode, [], [ -'optimize' => $scanPsrPackages, -]); -} - -$classMapGenerator = new ClassMapGenerator(['php', 'inc', 'hh']); -$classMapGenerator->avoidDuplicateScans(); - -$filesystem = new Filesystem(); -$filesystem->ensureDirectoryExists($config->get('vendor-dir')); - - - -$basePath = $filesystem->normalizePath(realpath(realpath(Platform::getCwd()))); -$vendorPath = $filesystem->normalizePath(realpath(realpath($config->get('vendor-dir')))); -$useGlobalIncludePath = $config->get('use-include-path'); -$prependAutoloader = $config->get('prepend-autoloader') === false ? 'false' : 'true'; -$targetDir = $vendorPath.'/'.$targetDir; -$filesystem->ensureDirectoryExists($targetDir); - -$vendorPathCode = $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true); -$vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true); - -$appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true); -$appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode); - -$namespacesFile = <<getDevPackageNames(); -$packageMap = $this->buildPackageMap($installationManager, $rootPackage, $localRepo->getCanonicalPackages()); -if ($this->devMode) { - -$filteredDevPackages = false; -} else { - -$filteredDevPackages = $devPackageNames ?: true; -} -$autoloads = $this->parseAutoloads($packageMap, $rootPackage, $filteredDevPackages); - - -foreach ($autoloads['psr-0'] as $namespace => $paths) { -$exportedPaths = []; -foreach ($paths as $path) { -$exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); -} -$exportedPrefix = var_export($namespace, true); -$namespacesFile .= " $exportedPrefix => "; -$namespacesFile .= "array(".implode(', ', $exportedPaths)."),\n"; -} -$namespacesFile .= ");\n"; - - -foreach ($autoloads['psr-4'] as $namespace => $paths) { -$exportedPaths = []; -foreach ($paths as $path) { -$exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); -} -$exportedPrefix = var_export($namespace, true); -$psr4File .= " $exportedPrefix => "; -$psr4File .= "array(".implode(', ', $exportedPaths)."),\n"; -} -$psr4File .= ");\n"; - - -$targetDirLoader = null; -$mainAutoload = $rootPackage->getAutoload(); -if ($rootPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) { -$levels = substr_count($filesystem->normalizePath($rootPackage->getTargetDir()), '/') + 1; -$prefixes = implode(', ', array_map(static function ($prefix): string { -return var_export($prefix, true); -}, array_keys($mainAutoload['psr-0']))); -$baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true); - -$targetDirLoader = <<scanPaths($dir, $this->buildExclusionRegex($dir, $excluded)); -} - -if ($scanPsrPackages) { -$namespacesToScan = []; - - -foreach (['psr-4', 'psr-0'] as $psrType) { -foreach ($autoloads[$psrType] as $namespace => $paths) { -$namespacesToScan[$namespace][] = ['paths' => $paths, 'type' => $psrType]; -} -} - -krsort($namespacesToScan); - -foreach ($namespacesToScan as $namespace => $groups) { -foreach ($groups as $group) { -foreach ($group['paths'] as $dir) { -$dir = $filesystem->normalizePath($filesystem->isAbsolutePath($dir) ? $dir : $basePath.'/'.$dir); -if (!is_dir($dir)) { -continue; -} - -$classMapGenerator->scanPaths($dir, $this->buildExclusionRegex($dir, $excluded), $group['type'], $namespace); -} -} -} -} - -$classMap = $classMapGenerator->getClassMap(); -foreach ($classMap->getAmbiguousClasses() as $className => $ambiguousPaths) { -if (count($ambiguousPaths) > 1) { -$this->io->writeError( -'Warning: Ambiguous class resolution, "'.$className.'"'. -' was found '. (count($ambiguousPaths) + 1) .'x: in "'.$classMap->getClassPath($className).'" and "'. implode('", "', $ambiguousPaths) .'", the first will be used.' -); -} else { -$this->io->writeError( -'Warning: Ambiguous class resolution, "'.$className.'"'. -' was found in both "'.$classMap->getClassPath($className).'" and "'. implode('", "', $ambiguousPaths) .'", the first will be used.' -); -} -} -foreach ($classMap->getPsrViolations() as $msg) { -$this->io->writeError("$msg"); -} - -$classMap->addClass('Composer\InstalledVersions', $vendorPath . '/composer/InstalledVersions.php'); -$classMap->sort(); - -$classmapFile = <<getMap() as $className => $path) { -$pathCode = $this->getPathCode($filesystem, $basePath, $vendorPath, $path).",\n"; -$classmapFile .= ' '.var_export($className, true).' => '.$pathCode; -} -$classmapFile .= ");\n"; - -if ('' === $suffix) { -$suffix = null; -} -if (null === $suffix) { -$suffix = $config->get('autoloader-suffix'); - - -if (null === $suffix && Filesystem::isReadable($vendorPath.'/autoload.php')) { -$content = file_get_contents($vendorPath.'/autoload.php'); -if (Preg::isMatch('{ComposerAutoloaderInit([^:\s]+)::}', $content, $match)) { -$suffix = $match[1]; -} -} - - -if (null === $suffix) { -$suffix = md5(uniqid('', true)); -} -} - -$filesystem->filePutContentsIfModified($targetDir.'/autoload_namespaces.php', $namespacesFile); -$filesystem->filePutContentsIfModified($targetDir.'/autoload_psr4.php', $psr4File); -$filesystem->filePutContentsIfModified($targetDir.'/autoload_classmap.php', $classmapFile); -$includePathFilePath = $targetDir.'/include_paths.php'; -if ($includePathFileContents = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode)) { -$filesystem->filePutContentsIfModified($includePathFilePath, $includePathFileContents); -} elseif (file_exists($includePathFilePath)) { -unlink($includePathFilePath); -} -$includeFilesFilePath = $targetDir.'/autoload_files.php'; -if ($includeFilesFileContents = $this->getIncludeFilesFile($autoloads['files'], $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode)) { -$filesystem->filePutContentsIfModified($includeFilesFilePath, $includeFilesFileContents); -} elseif (file_exists($includeFilesFilePath)) { -unlink($includeFilesFilePath); -} -$filesystem->filePutContentsIfModified($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath)); -$checkPlatform = $config->get('platform-check') !== false && !($this->platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter); -$platformCheckContent = null; -if ($checkPlatform) { -$platformCheckContent = $this->getPlatformCheck($packageMap, $config->get('platform-check'), $devPackageNames); -if (null === $platformCheckContent) { -$checkPlatform = false; -} -} -if ($checkPlatform) { -$filesystem->filePutContentsIfModified($targetDir.'/platform_check.php', $platformCheckContent); -} elseif (file_exists($targetDir.'/platform_check.php')) { -unlink($targetDir.'/platform_check.php'); -} -$filesystem->filePutContentsIfModified($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix)); -$filesystem->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $checkPlatform)); - -$filesystem->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php'); -$filesystem->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE'); - -if ($this->runScripts) { -$this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP, $this->devMode, [], [ -'optimize' => $scanPsrPackages, -]); -} - -return $classMap; -} - - - - - -private function buildExclusionRegex(string $dir, ?array $excluded): ?string -{ -if (null === $excluded) { -return null; -} - - - - -if (file_exists($dir)) { - -$dirMatch = preg_quote(strtr(realpath($dir), '\\', '/')); -foreach ($excluded as $index => $pattern) { - -$pattern = Preg::replace('{^(([^.+*?\[^\]$(){}=!<>|:\\\\#-]+|\\\\[.+*?\[^\]$(){}=!<>|:#-])*).*}', '$1', $pattern); - -if (0 !== strpos($pattern, $dirMatch) && 0 !== strpos($dirMatch, $pattern)) { -unset($excluded[$index]); -} -} -} - -return \count($excluded) > 0 ? '{(' . implode('|', $excluded) . ')}' : null; -} - - - - - -public function buildPackageMap(InstallationManager $installationManager, PackageInterface $rootPackage, array $packages) -{ - -$packageMap = [[$rootPackage, '']]; - -foreach ($packages as $package) { -if ($package instanceof AliasPackage) { -continue; -} -$this->validatePackage($package); - -$packageMap[] = [ -$package, -$installationManager->getInstallPath($package), -]; -} - -return $packageMap; -} - - - - - -protected function validatePackage(PackageInterface $package) -{ -$autoload = $package->getAutoload(); -if (!empty($autoload['psr-4']) && null !== $package->getTargetDir()) { -$name = $package->getName(); -$package->getTargetDir(); -throw new \InvalidArgumentException("PSR-4 autoloading is incompatible with the target-dir property, remove the target-dir in package '$name'."); -} -if (!empty($autoload['psr-4'])) { -foreach ($autoload['psr-4'] as $namespace => $dirs) { -if ($namespace !== '' && '\\' !== substr($namespace, -1)) { -throw new \InvalidArgumentException("psr-4 namespaces must end with a namespace separator, '$namespace' does not, use '$namespace\\'."); -} -} -} -} - - - - - - - - - - - - - - - - -public function parseAutoloads(array $packageMap, PackageInterface $rootPackage, $filteredDevPackages = false) -{ -$rootPackageMap = array_shift($packageMap); -if (is_array($filteredDevPackages)) { -$packageMap = array_filter($packageMap, static function ($item) use ($filteredDevPackages): bool { -return !in_array($item[0]->getName(), $filteredDevPackages, true); -}); -} elseif ($filteredDevPackages) { -$packageMap = $this->filterPackageMap($packageMap, $rootPackage); -} -$sortedPackageMap = $this->sortPackageMap($packageMap); -$sortedPackageMap[] = $rootPackageMap; -array_unshift($packageMap, $rootPackageMap); - -$psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $rootPackage); -$psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $rootPackage); -$classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $rootPackage); -$files = $this->parseAutoloadsType($sortedPackageMap, 'files', $rootPackage); -$exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $rootPackage); - -krsort($psr0); -krsort($psr4); - -return [ -'psr-0' => $psr0, -'psr-4' => $psr4, -'classmap' => $classmap, -'files' => $files, -'exclude-from-classmap' => $exclude, -]; -} - - - - - - - -public function createLoader(array $autoloads, ?string $vendorDir = null) -{ -$loader = new ClassLoader($vendorDir); - -if (isset($autoloads['psr-0'])) { -foreach ($autoloads['psr-0'] as $namespace => $path) { -$loader->add($namespace, $path); -} -} - -if (isset($autoloads['psr-4'])) { -foreach ($autoloads['psr-4'] as $namespace => $path) { -$loader->addPsr4($namespace, $path); -} -} - -if (isset($autoloads['classmap'])) { -$excluded = null; -if (!empty($autoloads['exclude-from-classmap'])) { -$excluded = $autoloads['exclude-from-classmap']; -} - -$classMapGenerator = new ClassMapGenerator(['php', 'inc', 'hh']); -$classMapGenerator->avoidDuplicateScans(); - -foreach ($autoloads['classmap'] as $dir) { -try { -$classMapGenerator->scanPaths($dir, $this->buildExclusionRegex($dir, $excluded)); -} catch (\RuntimeException $e) { -$this->io->writeError(''.$e->getMessage().''); -} -} - -$loader->addClassMap($classMapGenerator->getClassMap()->getMap()); -} - -return $loader; -} - - - - - -protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, string $basePath, string $vendorPath, string $vendorPathCode, string $appBaseDirCode) -{ -$includePaths = []; - -foreach ($packageMap as $item) { -[$package, $installPath] = $item; - -if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) { -$installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); -} - -foreach ($package->getIncludePaths() as $includePath) { -$includePath = trim($includePath, '/'); -$includePaths[] = empty($installPath) ? $includePath : $installPath.'/'.$includePath; -} -} - -if (!$includePaths) { -return null; -} - -$includePathsCode = ''; -foreach ($includePaths as $path) { -$includePathsCode .= " " . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n"; -} - -return << $functionFile) { -$filesCode .= ' ' . var_export($fileIdentifier, true) . ' => ' -. $this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile) . ",\n"; -} - -if (!$filesCode) { -return null; -} - -return <<isAbsolutePath($path)) { -$path = $basePath . '/' . $path; -} -$path = $filesystem->normalizePath($path); - -$baseDir = ''; -if (strpos($path.'/', $vendorPath.'/') === 0) { -$path = (string) substr($path, strlen($vendorPath)); -$baseDir = '$vendorDir . '; -} else { -$path = $filesystem->normalizePath($filesystem->findShortestPath($basePath, $path, true)); -if (!$filesystem->isAbsolutePath($path)) { -$baseDir = '$baseDir . '; -$path = '/' . $path; -} -} - -if (strpos($path, '.phar') !== false) { -$baseDir = "'phar://' . " . $baseDir; -} - -return $baseDir . var_export($path, true); -} - - - - - - - -protected function getPlatformCheck(array $packageMap, $checkPlatform, array $devPackageNames) -{ -$lowestPhpVersion = Bound::zero(); -$requiredExtensions = []; -$extensionProviders = []; - -foreach ($packageMap as $item) { -$package = $item[0]; -foreach (array_merge($package->getReplaces(), $package->getProvides()) as $link) { -if (Preg::isMatch('{^ext-(.+)$}iD', $link->getTarget(), $match)) { -$extensionProviders[$match[1]][] = $link->getConstraint(); -} -} -} - -foreach ($packageMap as $item) { -$package = $item[0]; - -if (in_array($package->getName(), $devPackageNames, true)) { -continue; -} - -foreach ($package->getRequires() as $link) { -if ($this->platformRequirementFilter->isIgnored($link->getTarget())) { -continue; -} - -if ('php' === $link->getTarget()) { -$constraint = $link->getConstraint(); -if ($constraint->getLowerBound()->compareTo($lowestPhpVersion, '>')) { -$lowestPhpVersion = $constraint->getLowerBound(); -} -} - -if ($checkPlatform === true && Preg::isMatch('{^ext-(.+)$}iD', $link->getTarget(), $match)) { - -if (isset($extensionProviders[$match[1]])) { -foreach ($extensionProviders[$match[1]] as $provided) { -if ($provided->matches($link->getConstraint())) { -continue 2; -} -} -} - -if ($match[1] === 'zend-opcache') { -$match[1] = 'zend opcache'; -} - -$extension = var_export($match[1], true); -if ($match[1] === 'pcntl' || $match[1] === 'readline') { -$requiredExtensions[$extension] = "PHP_SAPI !== 'cli' || extension_loaded($extension) || \$missingExtensions[] = $extension;\n"; -} else { -$requiredExtensions[$extension] = "extension_loaded($extension) || \$missingExtensions[] = $extension;\n"; -} -} -} -} - -ksort($requiredExtensions); - -$formatToPhpVersionId = static function (Bound $bound): int { -if ($bound->isZero()) { -return 0; -} - -if ($bound->isPositiveInfinity()) { -return 99999; -} - -$version = str_replace('-', '.', $bound->getVersion()); -$chunks = array_map('intval', explode('.', $version)); - -return $chunks[0] * 10000 + $chunks[1] * 100 + $chunks[2]; -}; - -$formatToHumanReadable = static function (Bound $bound) { -if ($bound->isZero()) { -return 0; -} - -if ($bound->isPositiveInfinity()) { -return 99999; -} - -$version = str_replace('-', '.', $bound->getVersion()); -$chunks = explode('.', $version); -$chunks = array_slice($chunks, 0, 3); - -return implode('.', $chunks); -}; - -$requiredPhp = ''; -$requiredPhpError = ''; -if (!$lowestPhpVersion->isZero()) { -$operator = $lowestPhpVersion->isInclusive() ? '>=' : '>'; -$requiredPhp = 'PHP_VERSION_ID '.$operator.' '.$formatToPhpVersionId($lowestPhpVersion); -$requiredPhpError = '"'.$operator.' '.$formatToHumanReadable($lowestPhpVersion).'"'; -} - -if ($requiredPhp) { -$requiredPhp = <<classMapAuthoritative) { -$file .= <<<'CLASSMAPAUTHORITATIVE' - $loader->setClassMapAuthoritative(true); - -CLASSMAPAUTHORITATIVE; -} - -if ($this->apcu) { -$apcuPrefix = var_export(($this->apcuPrefix !== null ? $this->apcuPrefix : substr(base64_encode(md5(uniqid('', true), true)), 0, -3)), true); -$file .= <<setApcuPrefix($apcuPrefix); - -APCU; -} - -if ($useGlobalIncludePath) { -$file .= <<<'INCLUDEPATH' - $loader->setUseIncludePath(true); - -INCLUDEPATH; -} - -if ($targetDirLoader) { -$file .= <<register($prependAutoloader); - - -REGISTER_LOADER; - -if ($useIncludeFiles) { -$file .= << \$file) { - \$requireFile(\$fileIdentifier, \$file); - } - - -INCLUDE_FILES; -} - -$file .= << $path) { -$loader->set($namespace, $path); -} - -$map = require $targetDir . '/autoload_psr4.php'; -foreach ($map as $namespace => $path) { -$loader->setPsr4($namespace, $path); -} - -$classMap = require $targetDir . '/autoload_classmap.php'; -if ($classMap) { -$loader->addClassMap($classMap); -} - -$filesystem = new Filesystem(); - -$vendorPathCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; -$vendorPharPathCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; -$appBaseDirCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; -$appBaseDirPharCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; - -$absoluteVendorPathCode = ' => ' . substr(var_export(rtrim($vendorDir, '\\/') . '/', true), 0, -1); -$absoluteVendorPharPathCode = ' => ' . substr(var_export(rtrim('phar://' . $vendorDir, '\\/') . '/', true), 0, -1); -$absoluteAppBaseDirCode = ' => ' . substr(var_export(rtrim($baseDir, '\\/') . '/', true), 0, -1); -$absoluteAppBaseDirPharCode = ' => ' . substr(var_export(rtrim('phar://' . $baseDir, '\\/') . '/', true), 0, -1); - -$initializer = ''; -$prefix = "\0Composer\Autoload\ClassLoader\0"; -$prefixLen = strlen($prefix); -if (file_exists($targetDir . '/autoload_files.php')) { -$maps = ['files' => require $targetDir . '/autoload_files.php']; -} else { -$maps = []; -} - -foreach ((array) $loader as $prop => $value) { -if (!is_array($value) || \count($value) === 0 || !str_starts_with($prop, $prefix)) { -continue; -} -$maps[substr($prop, $prefixLen)] = $value; -} - -foreach ($maps as $prop => $value) { -$value = strtr( -var_export($value, true), -[ -$absoluteVendorPathCode => $vendorPathCode, -$absoluteVendorPharPathCode => $vendorPharPathCode, -$absoluteAppBaseDirCode => $appBaseDirCode, -$absoluteAppBaseDirPharCode => $appBaseDirPharCode, -] -); -$value = ltrim(Preg::replace('/^ */m', ' $0$0', $value)); - -$file .= sprintf(" public static $%s = %s;\n\n", $prop, $value); -if ('files' !== $prop) { -$initializer .= " \$loader->$prop = ComposerStaticInit$suffix::\$$prop;\n"; -} -} - -return $file . <<getAutoload(); -if ($this->devMode && $package === $rootPackage) { -$autoload = array_merge_recursive($autoload, $package->getDevAutoload()); -} - - -if (!isset($autoload[$type]) || !is_array($autoload[$type])) { -continue; -} -if (null !== $package->getTargetDir() && $package !== $rootPackage) { -$installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); -} - -foreach ($autoload[$type] as $namespace => $paths) { -foreach ((array) $paths as $path) { -if (($type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !Filesystem::isReadable($installPath.'/'.$path)) { - -if ($package === $rootPackage) { -$targetDir = str_replace('\\', '[\\\\/]', preg_quote(str_replace(['/', '\\'], '', $package->getTargetDir()))); -$path = ltrim(Preg::replace('{^'.$targetDir.'}', '', ltrim($path, '\\/')), '\\/'); -} else { - -$path = $package->getTargetDir() . '/' . $path; -} -} - -if ($type === 'exclude-from-classmap') { - -$path = Preg::replace('{/+}', '/', preg_quote(trim(strtr($path, '\\', '/'), '/'))); - - -$path = strtr($path, ['\\*\\*' => '.+?', '\\*' => '[^/]+?']); - - -$updir = null; -$path = Preg::replaceCallback( -'{^((?:(?:\\\\\\.){1,2}+/)+)}', -static function ($matches) use (&$updir): string { -if (isset($matches[1])) { - -$updir = str_replace('\\.', '.', $matches[1]); -} - -return ''; -}, -$path -); -if (empty($installPath)) { -$installPath = strtr(Platform::getCwd(), '\\', '/'); -} - -$resolvedPath = realpath($installPath . '/' . $updir); -if (false === $resolvedPath) { -continue; -} -$autoloads[] = preg_quote(strtr($resolvedPath, '\\', '/')) . '/' . $path . '($|/)'; -continue; -} - -$relativePath = empty($installPath) ? (empty($path) ? '.' : $path) : $installPath.'/'.$path; - -if ($type === 'files') { -$autoloads[$this->getFileIdentifier($package, $path)] = $relativePath; -continue; -} -if ($type === 'classmap') { -$autoloads[] = $relativePath; -continue; -} - -$autoloads[$namespace][] = $relativePath; -} -} -} - -return $autoloads; -} - - - - -protected function getFileIdentifier(PackageInterface $package, string $path) -{ -return md5($package->getName() . ':' . $path); -} - - - - - - - - - -protected function filterPackageMap(array $packageMap, RootPackageInterface $rootPackage) -{ -$packages = []; -$include = []; -$replacedBy = []; - -foreach ($packageMap as $item) { -$package = $item[0]; -$name = $package->getName(); -$packages[$name] = $package; -foreach ($package->getReplaces() as $replace) { -$replacedBy[$replace->getTarget()] = $name; -} -} - -$add = static function (PackageInterface $package) use (&$add, $packages, &$include, $replacedBy): void { -foreach ($package->getRequires() as $link) { -$target = $link->getTarget(); -if (isset($replacedBy[$target])) { -$target = $replacedBy[$target]; -} -if (!isset($include[$target])) { -$include[$target] = true; -if (isset($packages[$target])) { -$add($packages[$target]); -} -} -} -}; -$add($rootPackage); - -return array_filter( -$packageMap, -static function ($item) use ($include): bool { -$package = $item[0]; -foreach ($package->getNames() as $name) { -if (isset($include[$name])) { -return true; -} -} - -return false; -} -); -} - - - - - - - - - -protected function sortPackageMap(array $packageMap) -{ -$packages = []; -$paths = []; - -foreach ($packageMap as $item) { -[$package, $path] = $item; -$name = $package->getName(); -$packages[$name] = $package; -$paths[$name] = $path; -} - -$sortedPackages = PackageSorter::sortPackages($packages); - -$sortedPackageMap = []; - -foreach ($sortedPackages as $package) { -$name = $package->getName(); -$sortedPackageMap[] = [$packages[$name], $paths[$name]]; -} - -return $sortedPackageMap; -} -} - -function composerRequire(string $fileIdentifier, string $file): void -{ -if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - -require $file; -} -} diff --git a/composer/src/Composer/Autoload/ClassLoader.php b/composer/src/Composer/Autoload/ClassLoader.php deleted file mode 100644 index a72151c77..000000000 --- a/composer/src/Composer/Autoload/ClassLoader.php +++ /dev/null @@ -1,585 +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 https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array $classMap - * - * @return void - */ - 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 string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 string[]|string $paths The PSR-0 base directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * 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; - } - - /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. - * - * @return self[] - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - 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; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/composer/src/Composer/Autoload/ClassMapGenerator.php b/composer/src/Composer/Autoload/ClassMapGenerator.php deleted file mode 100644 index e331ad2b7..000000000 --- a/composer/src/Composer/Autoload/ClassMapGenerator.php +++ /dev/null @@ -1,98 +0,0 @@ -files = $scannedFiles; -$generator->avoidDuplicateScans($fileList); - -$generator->scanPaths($path, $excluded, $autoloadType ?? 'classmap', $namespace); - -$classMap = $generator->getClassMap(); - -$scannedFiles = $fileList->files; - -if ($io !== null) { -foreach ($classMap->getPsrViolations() as $msg) { -$io->writeError("$msg"); -} - -foreach ($classMap->getAmbiguousClasses() as $class => $paths) { -if (count($paths) > 1) { -$io->writeError( -'Warning: Ambiguous class resolution, "'.$class.'"'. -' was found '. (count($paths) + 1) .'x: in "'.$classMap->getClassPath($class).'" and "'. implode('", "', $paths) .'", the first will be used.' -); -} else { -$io->writeError( -'Warning: Ambiguous class resolution, "'.$class.'"'. -' was found in both "'.$classMap->getClassPath($class).'" and "'. implode('", "', $paths) .'", the first will be used.' -); -} -} -} - -return $classMap->getMap(); -} -} diff --git a/composer/src/Composer/Autoload/PhpFileCleaner.php b/composer/src/Composer/Autoload/PhpFileCleaner.php deleted file mode 100644 index 5e9a8719e..000000000 --- a/composer/src/Composer/Autoload/PhpFileCleaner.php +++ /dev/null @@ -1,247 +0,0 @@ - $type, -'length' => \strlen($type), -'pattern' => '{.\b(?])'.$type.'\s++[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+}Ais', -]; -} - -self::$restPattern = '{[^?"\'contents = $contents; -$this->len = \strlen($this->contents); -$this->maxMatches = $maxMatches; -} - -public function clean(): string -{ -$clean = ''; - -while ($this->index < $this->len) { -$this->skipToPhp(); -$clean .= 'index < $this->len) { -$char = $this->contents[$this->index]; -if ($char === '?' && $this->peek('>')) { -$clean .= '?>'; -$this->index += 2; -continue 2; -} - -if ($char === '"') { -$this->skipString('"'); -$clean .= 'null'; -continue; -} - -if ($char === "'") { -$this->skipString("'"); -$clean .= 'null'; -continue; -} - -if ($char === "<" && $this->peek('<') && $this->match('{<<<[ \t]*+([\'"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*+)\\1(?:\r\n|\n|\r)}A', $match)) { -$this->index += \strlen($match[0]); -$this->skipHeredoc($match[2]); -$clean .= 'null'; -continue; -} - -if ($char === '/') { -if ($this->peek('/')) { -$this->skipToNewline(); -continue; -} -if ($this->peek('*')) { -$this->skipComment(); -continue; -} -} - -if ($this->maxMatches === 1 && isset(self::$typeConfig[$char])) { -$type = self::$typeConfig[$char]; -if ( -\substr($this->contents, $this->index, $type['length']) === $type['name'] -&& Preg::isMatch($type['pattern'], $this->contents, $match, 0, $this->index - 1) -) { -$clean .= $match[0]; - -return $clean; -} -} - -$this->index += 1; -if ($this->match(self::$restPattern, $match)) { -$clean .= $char . $match[0]; -$this->index += \strlen($match[0]); -} else { -$clean .= $char; -} -} -} - -return $clean; -} - -private function skipToPhp(): void -{ -while ($this->index < $this->len) { -if ($this->contents[$this->index] === '<' && $this->peek('?')) { -$this->index += 2; -break; -} - -$this->index += 1; -} -} - -private function skipString(string $delimiter): void -{ -$this->index += 1; -while ($this->index < $this->len) { -if ($this->contents[$this->index] === '\\' && ($this->peek('\\') || $this->peek($delimiter))) { -$this->index += 2; -continue; -} -if ($this->contents[$this->index] === $delimiter) { -$this->index += 1; -break; -} -$this->index += 1; -} -} - -private function skipComment(): void -{ -$this->index += 2; -while ($this->index < $this->len) { -if ($this->contents[$this->index] === '*' && $this->peek('/')) { -$this->index += 2; -break; -} - -$this->index += 1; -} -} - -private function skipToNewline(): void -{ -while ($this->index < $this->len) { -if ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n") { -return; -} -$this->index += 1; -} -} - -private function skipHeredoc(string $delimiter): void -{ -$firstDelimiterChar = $delimiter[0]; -$delimiterLength = \strlen($delimiter); -$delimiterPattern = '{'.preg_quote($delimiter).'(?![a-zA-Z0-9_\x80-\xff])}A'; - -while ($this->index < $this->len) { - -switch ($this->contents[$this->index]) { -case "\t": -case " ": -$this->index += 1; -continue 2; -case $firstDelimiterChar: -if ( -\substr($this->contents, $this->index, $delimiterLength) === $delimiter -&& $this->match($delimiterPattern) -) { -$this->index += $delimiterLength; - -return; -} -break; -} - - -while ($this->index < $this->len) { -$this->skipToNewline(); - - -while ($this->index < $this->len && ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n")) { -$this->index += 1; -} - -break; -} -} -} - -private function peek(string $char): bool -{ -return $this->index + 1 < $this->len && $this->contents[$this->index + 1] === $char; -} - - - - - -private function match($regex, ?array &$match = null): bool -{ -return Preg::isMatch($regex, $this->contents, $match, 0, $this->index); -} -} diff --git a/composer/src/Composer/Cache.php b/composer/src/Composer/Cache.php deleted file mode 100644 index 5babb806a..000000000 --- a/composer/src/Composer/Cache.php +++ /dev/null @@ -1,389 +0,0 @@ -io = $io; -$this->root = rtrim($cacheDir, '/\\') . '/'; -$this->allowlist = $allowlist; -$this->filesystem = $filesystem ?: new Filesystem(); -$this->readOnly = (bool) $readOnly; - -if (!self::isUsable($cacheDir)) { -$this->enabled = false; -} -} - - - - -public function setReadOnly(bool $readOnly) -{ -$this->readOnly = (bool) $readOnly; -} - - - - -public function isReadOnly() -{ -return $this->readOnly; -} - - - - -public static function isUsable(string $path) -{ -return !Preg::isMatch('{(^|[\\\\/])(\$null|nul|NUL|/dev/null)([\\\\/]|$)}', $path); -} - - - - -public function isEnabled() -{ -if ($this->enabled === null) { -$this->enabled = true; - -if ( -!$this->readOnly -&& ( -(!is_dir($this->root) && !Silencer::call('mkdir', $this->root, 0777, true)) -|| !is_writable($this->root) -) -) { -$this->io->writeError('Cannot create cache directory ' . $this->root . ', or directory is not writable. Proceeding without cache. See also cache-read-only config if your filesystem is read-only.'); -$this->enabled = false; -} -} - -return $this->enabled; -} - - - - -public function getRoot() -{ -return $this->root; -} - - - - -public function read(string $file) -{ -if ($this->isEnabled()) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); -if (file_exists($this->root . $file)) { -$this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); - -return file_get_contents($this->root . $file); -} -} - -return false; -} - - - - -public function write(string $file, string $contents) -{ -$wasEnabled = $this->enabled === true; - -if ($this->isEnabled() && !$this->readOnly) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); - -$this->io->writeError('Writing '.$this->root . $file.' into cache', true, IOInterface::DEBUG); - -$tempFileName = $this->root . $file . uniqid('.', true) . '.tmp'; -try { -return file_put_contents($tempFileName, $contents) !== false && rename($tempFileName, $this->root . $file); -} catch (\ErrorException $e) { - - -if ($wasEnabled) { -clearstatcache(); -$this->enabled = null; -return $this->write($file, $contents); -} - -$this->io->writeError('Failed to write into cache: '.$e->getMessage().'', true, IOInterface::DEBUG); -if (Preg::isMatch('{^file_put_contents\(\): Only ([0-9]+) of ([0-9]+) bytes written}', $e->getMessage(), $m)) { - -unlink($tempFileName); - -$message = sprintf( -'Writing %1$s into cache failed after %2$u of %3$u bytes written, only %4$s bytes of free space available', -$tempFileName, -$m[1], -$m[2], -function_exists('disk_free_space') ? @disk_free_space(dirname($tempFileName)) : 'unknown' -); - -$this->io->writeError($message); - -return false; -} - -throw $e; -} -} - -return false; -} - - - - - - -public function copyFrom(string $file, string $source) -{ -if ($this->isEnabled() && !$this->readOnly) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); -$this->filesystem->ensureDirectoryExists(dirname($this->root . $file)); - -if (!file_exists($source)) { -$this->io->writeError(''.$source.' does not exist, can not write into cache'); -} elseif ($this->io->isDebug()) { -$this->io->writeError('Writing '.$this->root . $file.' into cache from '.$source); -} - -return copy($source, $this->root . $file); -} - -return false; -} - - - - - - -public function copyTo(string $file, string $target) -{ -if ($this->isEnabled()) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); -if (file_exists($this->root . $file)) { -try { -touch($this->root . $file, (int) filemtime($this->root . $file), time()); -} catch (\ErrorException $e) { - - -Silencer::call('touch', $this->root . $file); -} - -$this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); - -return copy($this->root . $file, $target); -} -} - -return false; -} - - - - -public function gcIsNecessary() -{ -if (self::$cacheCollected) { -return false; -} - -self::$cacheCollected = true; -if (Platform::getEnv('COMPOSER_TEST_SUITE')) { -return false; -} - -if (Platform::isInputCompletionProcess()) { -return false; -} - -return !random_int(0, 50); -} - - - - -public function remove(string $file) -{ -if ($this->isEnabled() && !$this->readOnly) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); -if (file_exists($this->root . $file)) { -return $this->filesystem->unlink($this->root . $file); -} -} - -return false; -} - - - - -public function clear() -{ -if ($this->isEnabled() && !$this->readOnly) { -$this->filesystem->emptyDirectory($this->root); - -return true; -} - -return false; -} - - - - - -public function getAge(string $file) -{ -if ($this->isEnabled()) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); -if (file_exists($this->root . $file) && ($mtime = filemtime($this->root . $file)) !== false) { -return abs(time() - $mtime); -} -} - -return false; -} - - - - -public function gc(int $ttl, int $maxSize) -{ -if ($this->isEnabled() && !$this->readOnly) { -$expire = new \DateTime(); -$expire->modify('-'.$ttl.' seconds'); - -$finder = $this->getFinder()->date('until '.$expire->format('Y-m-d H:i:s')); -foreach ($finder as $file) { -$this->filesystem->unlink($file->getPathname()); -} - -$totalSize = $this->filesystem->size($this->root); -if ($totalSize > $maxSize) { -$iterator = $this->getFinder()->sortByAccessedTime()->getIterator(); -while ($totalSize > $maxSize && $iterator->valid()) { -$filepath = $iterator->current()->getPathname(); -$totalSize -= $this->filesystem->size($filepath); -$this->filesystem->unlink($filepath); -$iterator->next(); -} -} - -self::$cacheCollected = true; - -return true; -} - -return false; -} - -public function gcVcsCache(int $ttl): bool -{ -if ($this->isEnabled()) { -$expire = new \DateTime(); -$expire->modify('-'.$ttl.' seconds'); - -$finder = Finder::create()->in($this->root)->directories()->depth(0)->date('until '.$expire->format('Y-m-d H:i:s')); -foreach ($finder as $file) { -$this->filesystem->removeDirectory($file->getPathname()); -} - -self::$cacheCollected = true; - -return true; -} - -return false; -} - - - - -public function sha1(string $file) -{ -if ($this->isEnabled()) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); -if (file_exists($this->root . $file)) { -return sha1_file($this->root . $file); -} -} - -return false; -} - - - - -public function sha256(string $file) -{ -if ($this->isEnabled()) { -$file = Preg::replace('{[^'.$this->allowlist.']}i', '-', $file); -if (file_exists($this->root . $file)) { -return hash_file('sha256', $this->root . $file); -} -} - -return false; -} - - - - -protected function getFinder() -{ -return Finder::create()->in($this->root)->files(); -} -} diff --git a/composer/src/Composer/Command/AboutCommand.php b/composer/src/Composer/Command/AboutCommand.php deleted file mode 100644 index c526184ba..000000000 --- a/composer/src/Composer/Command/AboutCommand.php +++ /dev/null @@ -1,51 +0,0 @@ -setName('about') -->setDescription('Shows a short information about Composer') -->setHelp( -<<php composer.phar about -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$composerVersion = Composer::getVersion(); - -$this->getIO()->write( -<<Composer - Dependency Manager for PHP - version $composerVersion -Composer is a dependency manager tracking local dependencies of your projects and libraries. -See https://getcomposer.org/ for more information. -EOT -); - -return 0; -} -} diff --git a/composer/src/Composer/Command/ArchiveCommand.php b/composer/src/Composer/Command/ArchiveCommand.php deleted file mode 100644 index f5b460e43..000000000 --- a/composer/src/Composer/Command/ArchiveCommand.php +++ /dev/null @@ -1,212 +0,0 @@ -setName('archive') -->setDescription('Creates an archive of this composer package') -->setDefinition([ -new InputArgument('package', InputArgument::OPTIONAL, 'The package to archive instead of the current project', null, $this->suggestAvailablePackage()), -new InputArgument('version', InputArgument::OPTIONAL, 'A version constraint to find the package to archive'), -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the resulting archive: tar, tar.gz, tar.bz2 or zip (default tar)', null, self::FORMATS), -new InputOption('dir', null, InputOption::VALUE_REQUIRED, 'Write the archive to this directory'), -new InputOption('file', null, InputOption::VALUE_REQUIRED, 'Write the archive with the given file name.' -.' Note that the format will be appended.'), -new InputOption('ignore-filters', null, InputOption::VALUE_NONE, 'Ignore filters when saving package'), -]) -->setHelp( -<<archive command creates an archive of the specified format -containing the files and directories of the Composer project or the specified -package in the specified version and writes it to the specified directory. - -php composer.phar archive [--format=zip] [--dir=/foo] [--file=filename] [package [version]] - -Read more at https://getcomposer.org/doc/03-cli.md#archive -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$composer = $this->tryComposer(); -$config = null; - -if ($composer) { -$config = $composer->getConfig(); -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'archive', $input, $output); -$eventDispatcher = $composer->getEventDispatcher(); -$eventDispatcher->dispatch($commandEvent->getName(), $commandEvent); -$eventDispatcher->dispatchScript(ScriptEvents::PRE_ARCHIVE_CMD); -} - -if (!$config) { -$config = Factory::createConfig(); -} - -$format = $input->getOption('format') ?? $config->get('archive-format'); -$dir = $input->getOption('dir') ?? $config->get('archive-dir'); - -$returnCode = $this->archive( -$this->getIO(), -$config, -$input->getArgument('package'), -$input->getArgument('version'), -$format, -$dir, -$input->getOption('file'), -$input->getOption('ignore-filters'), -$composer -); - -if (0 === $returnCode && $composer) { -$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ARCHIVE_CMD); -} - -return $returnCode; -} - - - - -protected function archive(IOInterface $io, Config $config, ?string $packageName, ?string $version, string $format, string $dest, ?string $fileName, bool $ignoreFilters, ?Composer $composer): int -{ -if ($composer) { -$archiveManager = $composer->getArchiveManager(); -} else { -$factory = new Factory; -$process = new ProcessExecutor(); -$httpDownloader = Factory::createHttpDownloader($io, $config); -$downloadManager = $factory->createDownloadManager($io, $config, $httpDownloader, $process); -$archiveManager = $factory->createArchiveManager($config, $downloadManager, new Loop($httpDownloader, $process)); -} - -if ($packageName) { -$package = $this->selectPackage($io, $packageName, $version); - -if (!$package) { -return 1; -} -} else { -$package = $this->requireComposer()->getPackage(); -} - -$io->writeError('Creating the archive into "'.$dest.'".'); -$packagePath = $archiveManager->archive($package, $format, $dest, $fileName, $ignoreFilters); -$fs = new Filesystem; -$shortPath = $fs->findShortestPath(Platform::getCwd(), $packagePath, true); - -$io->writeError('Created: ', false); -$io->write(strlen($shortPath) < strlen($packagePath) ? $shortPath : $packagePath); - -return 0; -} - - - - -protected function selectPackage(IOInterface $io, string $packageName, ?string $version = null) -{ -$io->writeError('Searching for the specified package.'); - -if ($composer = $this->tryComposer()) { -$localRepo = $composer->getRepositoryManager()->getLocalRepository(); -$repo = new CompositeRepository(array_merge([$localRepo], $composer->getRepositoryManager()->getRepositories())); -$minStability = $composer->getPackage()->getMinimumStability(); -} else { -$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io); -$io->writeError('No composer.json found in the current directory, searching packages from ' . implode(', ', array_keys($defaultRepos))); -$repo = new CompositeRepository($defaultRepos); -$minStability = 'stable'; -} - -if ($version !== null && Preg::isMatchStrictGroups('{@(stable|RC|beta|alpha|dev)$}i', $version, $match)) { -$minStability = $match[1]; -$version = (string) substr($version, 0, -strlen($match[0])); -} - -$repoSet = new RepositorySet($minStability); -$repoSet->addRepository($repo); -$parser = new VersionParser(); -$constraint = $version !== null ? $parser->parseConstraints($version) : null; -$packages = $repoSet->findPackages(strtolower($packageName), $constraint); - -if (count($packages) > 1) { -$versionSelector = new VersionSelector($repoSet); -$package = $versionSelector->findBestCandidate(strtolower($packageName), $version, $minStability); -if ($package === false) { -$package = reset($packages); -} - -$io->writeError('Found multiple matches, selected '.$package->getPrettyString().'.'); -$io->writeError('Alternatives were '.implode(', ', array_map(static function ($p): string { -return $p->getPrettyString(); -}, $packages)).'.'); -$io->writeError('Please use a more specific constraint to pick a different package.'); -} elseif (count($packages) === 1) { -$package = reset($packages); -$io->writeError('Found an exact match '.$package->getPrettyString().'.'); -} else { -$io->writeError('Could not find a package matching '.$packageName.'.'); - -return false; -} - -if (!$package instanceof CompletePackageInterface) { -throw new \LogicException('Expected a CompletePackageInterface instance but found '.get_class($package)); -} -if (!$package instanceof BasePackage) { -throw new \LogicException('Expected a BasePackage instance but found '.get_class($package)); -} - -return $package; -} -} diff --git a/composer/src/Composer/Command/AuditCommand.php b/composer/src/Composer/Command/AuditCommand.php deleted file mode 100644 index 6ed8d96c0..000000000 --- a/composer/src/Composer/Command/AuditCommand.php +++ /dev/null @@ -1,92 +0,0 @@ -setName('audit') -->setDescription('Checks for security vulnerability advisories for installed packages') -->setDefinition([ -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables auditing of require-dev packages.'), -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_TABLE, Auditor::FORMATS), -new InputOption('locked', null, InputOption::VALUE_NONE, 'Audit based on the lock file instead of the installed packages.'), -]) -->setHelp( -<<audit command checks for security vulnerability advisories for installed packages. - -If you do not want to include dev dependencies in the audit you can omit them with --no-dev - -Read more at https://getcomposer.org/doc/03-cli.md#audit -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$composer = $this->requireComposer(); -$packages = $this->getPackages($composer, $input); - -if (count($packages) === 0) { -$this->getIO()->writeError('No packages - skipping audit.'); - -return 0; -} - -$auditor = new Auditor(); -$repoSet = new RepositorySet(); -foreach ($composer->getRepositoryManager()->getRepositories() as $repo) { -$repoSet->addRepository($repo); -} - -return min(255, $auditor->audit($this->getIO(), $repoSet, $packages, $this->getAuditFormat($input, 'format'), false)); -} - - - - -private function getPackages(Composer $composer, InputInterface $input): array -{ -if ($input->getOption('locked')) { -if (!$composer->getLocker()->isLocked()) { -throw new \UnexpectedValueException('Valid composer.json and composer.lock files are required to run this command with --locked'); -} -$locker = $composer->getLocker(); - -return $locker->getLockedRepository(!$input->getOption('no-dev'))->getPackages(); -} - -$rootPkg = $composer->getPackage(); -$installedRepo = new InstalledRepository([$composer->getRepositoryManager()->getLocalRepository()]); - -if ($input->getOption('no-dev')) { -return RepositoryUtils::filterRequiredPackages($installedRepo->getPackages(), $rootPkg); -} - -return $installedRepo->getPackages(); -} -} diff --git a/composer/src/Composer/Command/BaseCommand.php b/composer/src/Composer/Command/BaseCommand.php deleted file mode 100644 index 76d7844b7..000000000 --- a/composer/src/Composer/Command/BaseCommand.php +++ /dev/null @@ -1,436 +0,0 @@ -requireComposer($disablePlugins, $disableScripts); -} - -return $this->tryComposer($disablePlugins, $disableScripts); -} - - - - - - - - - - -public function requireComposer(?bool $disablePlugins = null, ?bool $disableScripts = null): Composer -{ -if (null === $this->composer) { -$application = parent::getApplication(); -if ($application instanceof Application) { -$this->composer = $application->getComposer(true, $disablePlugins, $disableScripts); -assert($this->composer instanceof Composer); -} else { -throw new \RuntimeException( -'Could not create a Composer\Composer instance, you must inject '. -'one if this command is not used with a Composer\Console\Application instance' -); -} -} - -return $this->composer; -} - - - - - - - - - -public function tryComposer(?bool $disablePlugins = null, ?bool $disableScripts = null): ?Composer -{ -if (null === $this->composer) { -$application = parent::getApplication(); -if ($application instanceof Application) { -$this->composer = $application->getComposer(false, $disablePlugins, $disableScripts); -} -} - -return $this->composer; -} - - - - -public function setComposer(Composer $composer) -{ -$this->composer = $composer; -} - - - - - - -public function resetComposer() -{ -$this->composer = null; -$this->getApplication()->resetComposer(); -} - - - - - - - - -public function isProxyCommand() -{ -return false; -} - - - - -public function getIO() -{ -if (null === $this->io) { -$application = parent::getApplication(); -if ($application instanceof Application) { -$this->io = $application->getIO(); -} else { -$this->io = new NullIO(); -} -} - -return $this->io; -} - - - - -public function setIO(IOInterface $io) -{ -$this->io = $io; -} - - - - - - - - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -$definition = $this->getDefinition(); -$name = (string) $input->getCompletionName(); -if (CompletionInput::TYPE_OPTION_VALUE === $input->getCompletionType() -&& $definition->hasOption($name) -&& ($option = $definition->getOption($name)) instanceof InputOption -) { -$option->complete($input, $suggestions); -} elseif (CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() -&& $definition->hasArgument($name) -&& ($argument = $definition->getArgument($name)) instanceof InputArgument -) { -$argument->complete($input, $suggestions); -} else { -parent::complete($input, $suggestions); -} -} - - - - - - -protected function initialize(InputInterface $input, OutputInterface $output) -{ - -$disablePlugins = $input->hasParameterOption('--no-plugins'); -$disableScripts = $input->hasParameterOption('--no-scripts'); -if ($this instanceof SelfUpdateCommand) { -$disablePlugins = true; -$disableScripts = true; -} - -$composer = $this->tryComposer($disablePlugins, $disableScripts); -$io = $this->getIO(); - -if (null === $composer) { -$composer = Factory::createGlobal($this->getIO(), $disablePlugins, $disableScripts); -} -if ($composer) { -$preCommandRunEvent = new PreCommandRunEvent(PluginEvents::PRE_COMMAND_RUN, $input, $this->getName()); -$composer->getEventDispatcher()->dispatch($preCommandRunEvent->getName(), $preCommandRunEvent); -} - -if (true === $input->hasParameterOption(['--no-ansi']) && $input->hasOption('no-progress')) { -$input->setOption('no-progress', true); -} - -$envOptions = [ -'COMPOSER_NO_AUDIT' => ['no-audit'], -'COMPOSER_NO_DEV' => ['no-dev', 'update-no-dev'], -'COMPOSER_PREFER_STABLE' => ['prefer-stable'], -'COMPOSER_PREFER_LOWEST' => ['prefer-lowest'], -]; -foreach ($envOptions as $envName => $optionNames) { -foreach ($optionNames as $optionName) { -if (true === $input->hasOption($optionName)) { -if (false === $input->getOption($optionName) && (bool) Platform::getEnv($envName)) { -$input->setOption($optionName, true); -} -} -} -} - -if (true === $input->hasOption('ignore-platform-reqs')) { -if (!$input->getOption('ignore-platform-reqs') && (bool) Platform::getEnv('COMPOSER_IGNORE_PLATFORM_REQS')) { -$input->setOption('ignore-platform-reqs', true); - -$io->writeError('COMPOSER_IGNORE_PLATFORM_REQS is set. You may experience unexpected errors.'); -} -} - -if (true === $input->hasOption('ignore-platform-req') && (!$input->hasOption('ignore-platform-reqs') || !$input->getOption('ignore-platform-reqs'))) { -$ignorePlatformReqEnv = Platform::getEnv('COMPOSER_IGNORE_PLATFORM_REQ'); -if (0 === count($input->getOption('ignore-platform-req')) && is_string($ignorePlatformReqEnv) && '' !== $ignorePlatformReqEnv) { -$input->setOption('ignore-platform-req', explode(',', $ignorePlatformReqEnv)); - -$io->writeError('COMPOSER_IGNORE_PLATFORM_REQ is set to ignore '.$ignorePlatformReqEnv.'. You may experience unexpected errors.'); -} -} - -parent::initialize($input, $output); -} - - - - - - -protected function getPreferredInstallOptions(Config $config, InputInterface $input, bool $keepVcsRequiresPreferSource = false) -{ -$preferSource = false; -$preferDist = false; - -switch ($config->get('preferred-install')) { -case 'source': -$preferSource = true; -break; -case 'dist': -$preferDist = true; -break; -case 'auto': -default: - -break; -} - -if (!$input->hasOption('prefer-dist') || !$input->hasOption('prefer-source')) { -return [$preferSource, $preferDist]; -} - -if ($input->hasOption('prefer-install') && is_string($input->getOption('prefer-install'))) { -if ($input->getOption('prefer-source')) { -throw new \InvalidArgumentException('--prefer-source can not be used together with --prefer-install'); -} -if ($input->getOption('prefer-dist')) { -throw new \InvalidArgumentException('--prefer-dist can not be used together with --prefer-install'); -} -switch ($input->getOption('prefer-install')) { -case 'dist': -$input->setOption('prefer-dist', true); -break; -case 'source': -$input->setOption('prefer-source', true); -break; -case 'auto': -$preferDist = false; -$preferSource = false; -break; -default: -throw new \UnexpectedValueException('--prefer-install accepts one of "dist", "source" or "auto", got '.$input->getOption('prefer-install')); -} -} - -if ($input->getOption('prefer-source') || $input->getOption('prefer-dist') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs'))) { -$preferSource = $input->getOption('prefer-source') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs')); -$preferDist = $input->getOption('prefer-dist'); -} - -return [$preferSource, $preferDist]; -} - -protected function getPlatformRequirementFilter(InputInterface $input): PlatformRequirementFilterInterface -{ -if (!$input->hasOption('ignore-platform-reqs') || !$input->hasOption('ignore-platform-req')) { -throw new \LogicException('Calling getPlatformRequirementFilter from a command which does not define the --ignore-platform-req[s] flags is not permitted.'); -} - -if (true === $input->getOption('ignore-platform-reqs')) { -return PlatformRequirementFilterFactory::ignoreAll(); -} - -$ignores = $input->getOption('ignore-platform-req'); -if (count($ignores) > 0) { -return PlatformRequirementFilterFactory::fromBoolOrList($ignores); -} - -return PlatformRequirementFilterFactory::ignoreNothing(); -} - - - - - - -protected function formatRequirements(array $requirements) -{ -$requires = []; -$requirements = $this->normalizeRequirements($requirements); -foreach ($requirements as $requirement) { -if (!isset($requirement['version'])) { -throw new \UnexpectedValueException('Option '.$requirement['name'] .' is missing a version constraint, use e.g. '.$requirement['name'].':^1.0'); -} -$requires[$requirement['name']] = $requirement['version']; -} - -return $requires; -} - - - - - - -protected function normalizeRequirements(array $requirements) -{ -$parser = new VersionParser(); - -return $parser->parseNameVersionPairs($requirements); -} - - - - - - -protected function renderTable(array $table, OutputInterface $output) -{ -$renderer = new Table($output); -$renderer->setStyle('compact'); -$renderer->setRows($table)->render(); -} - - - - -protected function getTerminalWidth() -{ -$terminal = new Terminal(); -$width = $terminal->getWidth(); - -if (Platform::isWindows()) { -$width--; -} else { -$width = max(80, $width); -} - -return $width; -} - - - - - - -protected function getAuditFormat(InputInterface $input, string $optName = 'audit-format'): string -{ -if (!$input->hasOption($optName)) { -throw new \LogicException('This should not be called on a Command which has no '.$optName.' option defined.'); -} - -$val = $input->getOption($optName); -if (!in_array($val, Auditor::FORMATS, true)) { -throw new \InvalidArgumentException('--'.$optName.' must be one of '.implode(', ', Auditor::FORMATS).'.'); -} - -return $val; -} -} diff --git a/composer/src/Composer/Command/BaseDependencyCommand.php b/composer/src/Composer/Command/BaseDependencyCommand.php deleted file mode 100644 index 984ecac34..000000000 --- a/composer/src/Composer/Command/BaseDependencyCommand.php +++ /dev/null @@ -1,251 +0,0 @@ -requireComposer(); -$commandEvent = new CommandEvent(PluginEvents::COMMAND, $this->getName(), $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$repos = []; - -$repos[] = new RootPackageRepository(clone $composer->getPackage()); - -if ($input->getOption('locked')) { -$locker = $composer->getLocker(); - -if (!$locker->isLocked()) { -throw new \UnexpectedValueException('A valid composer.lock file is required to run this command with --locked'); -} - -$repos[] = $locker->getLockedRepository(true); -$repos[] = new PlatformRepository([], $locker->getPlatformOverrides()); -} else { -$localRepo = $composer->getRepositoryManager()->getLocalRepository(); -$rootPkg = $composer->getPackage(); - -if (count($localRepo->getPackages()) === 0 && (count($rootPkg->getRequires()) > 0 || count($rootPkg->getDevRequires()) > 0)) { -$output->writeln('No dependencies installed. Try running composer install or update, or use --locked.'); - -return 1; -} - -$repos[] = $localRepo; - -$platformOverrides = $composer->getConfig()->get('platform') ?: []; -$repos[] = new PlatformRepository([], $platformOverrides); -} - -$installedRepo = new InstalledRepository($repos); - - -$needle = $input->getArgument(self::ARGUMENT_PACKAGE); -$textConstraint = $input->hasArgument(self::ARGUMENT_CONSTRAINT) ? $input->getArgument(self::ARGUMENT_CONSTRAINT) : '*'; - - -$packages = $installedRepo->findPackagesWithReplacersAndProviders($needle); -if (empty($packages)) { -throw new \InvalidArgumentException(sprintf('Could not find package "%s" in your project', $needle)); -} - - - -if (!$installedRepo->findPackage($needle, $textConstraint)) { -$defaultRepos = new CompositeRepository(RepositoryFactory::defaultRepos($this->getIO(), $composer->getConfig(), $composer->getRepositoryManager())); -if ($match = $defaultRepos->findPackage($needle, $textConstraint)) { -$installedRepo->addRepository(new InstalledArrayRepository([clone $match])); -} else { -$this->getIO()->writeError('Package "'.$needle.'" could not be found with constraint "'.$textConstraint.'", results below will most likely be incomplete.'); -} -} - - -$needles = [$needle]; -if ($inverted) { -foreach ($packages as $package) { -$needles = array_merge($needles, array_map(static function (Link $link): string { -return $link->getTarget(); -}, $package->getReplaces())); -} -} - - -if ('*' !== $textConstraint) { -$versionParser = new VersionParser(); -$constraint = $versionParser->parseConstraints($textConstraint); -} else { -$constraint = null; -} - - -$renderTree = $input->getOption(self::OPTION_TREE); -$recursive = $renderTree || $input->getOption(self::OPTION_RECURSIVE); - - -$results = $installedRepo->getDependents($needles, $constraint, $inverted, $recursive); -if (empty($results)) { -$extra = (null !== $constraint) ? sprintf(' in versions %smatching %s', $inverted ? 'not ' : '', $textConstraint) : ''; -$this->getIO()->writeError(sprintf( -'There is no installed package depending on "%s"%s', -$needle, -$extra -)); -} elseif ($renderTree) { -$this->initStyles($output); -$root = $packages[0]; -$this->getIO()->write(sprintf('%s %s %s', $root->getPrettyName(), $root->getPrettyVersion(), $root instanceof CompletePackageInterface ? $root->getDescription() : '')); -$this->printTree($results); -} else { -$this->printTable($output, $results); -} - -if ($inverted && $input->hasArgument(self::ARGUMENT_CONSTRAINT)) { -$this->getIO()->writeError('Not finding what you were looking for? Try calling `composer update "'.$input->getArgument(self::ARGUMENT_PACKAGE).':'.$input->getArgument(self::ARGUMENT_CONSTRAINT).'" --dry-run` to get another view on the problem.'); -} - -return 0; -} - - - - - - -protected function printTable(OutputInterface $output, $results): void -{ -$table = []; -$doubles = []; -do { -$queue = []; -$rows = []; -foreach ($results as $result) { - - - - -[$package, $link, $children] = $result; -$unique = (string) $link; -if (isset($doubles[$unique])) { -continue; -} -$doubles[$unique] = true; -$version = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '-' : $package->getPrettyVersion(); -$rows[] = [$package->getPrettyName(), $version, $link->getDescription(), sprintf('%s (%s)', $link->getTarget(), $link->getPrettyConstraint())]; -if ($children) { -$queue = array_merge($queue, $children); -} -} -$results = $queue; -$table = array_merge($rows, $table); -} while (!empty($results)); - -$this->renderTable($table, $output); -} - - - - -protected function initStyles(OutputInterface $output): void -{ -$this->colors = [ -'green', -'yellow', -'cyan', -'magenta', -'blue', -]; - -foreach ($this->colors as $color) { -$style = new OutputFormatterStyle($color); -$output->getFormatter()->setStyle($color, $style); -} -} - - - - - - - - -protected function printTree(array $results, string $prefix = '', int $level = 1): void -{ -$count = count($results); -$idx = 0; -foreach ($results as $result) { -[$package, $link, $children] = $result; - -$color = $this->colors[$level % count($this->colors)]; -$prevColor = $this->colors[($level - 1) % count($this->colors)]; -$isLast = (++$idx === $count); -$versionText = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '' : $package->getPrettyVersion(); -$packageText = rtrim(sprintf('<%s>%s %s', $color, $package->getPrettyName(), $versionText)); -$linkText = sprintf('%s <%s>%s %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint()); -$circularWarn = $children === false ? '(circular dependency aborted here)' : ''; -$this->writeTreeLine(rtrim(sprintf("%s%s%s (%s) %s", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText, $circularWarn))); -if ($children) { -$this->printTree($children, $prefix . ($isLast ? ' ' : '│ '), $level + 1); -} -} -} - -private function writeTreeLine(string $line): void -{ -$io = $this->getIO(); -if (!$io->isDecorated()) { -$line = str_replace(['└', '├', '──', '│'], ['`-', '|-', '-', '|'], $line); -} - -$io->write($line); -} -} diff --git a/composer/src/Composer/Command/BumpCommand.php b/composer/src/Composer/Command/BumpCommand.php deleted file mode 100644 index e805a9625..000000000 --- a/composer/src/Composer/Command/BumpCommand.php +++ /dev/null @@ -1,246 +0,0 @@ -setName('bump') -->setDescription('Increases the lower limit of your composer.json requirements to the currently installed versions') -->setDefinition([ -new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Optional package name(s) to restrict which packages are bumped.', null, $this->suggestRootRequirement()), -new InputOption('dev-only', 'D', InputOption::VALUE_NONE, 'Only bump requirements in "require-dev".'), -new InputOption('no-dev-only', 'R', InputOption::VALUE_NONE, 'Only bump requirements in "require".'), -new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the packages to bump, but will not execute anything.'), -]) -->setHelp( -<<bump command increases the lower limit of your composer.json requirements -to the currently installed versions. This helps to ensure your dependencies do not -accidentally get downgraded due to some other conflict, and can slightly improve -dependency resolution performance as it limits the amount of package versions -Composer has to look at. - -Running this blindly on libraries is **NOT** recommended as it will narrow down -your allowed dependencies, which may cause dependency hell for your users. -Running it with --dev-only on libraries may be fine however as dev requirements -are local to the library and do not affect consumers of the package. - -EOT -) -; -} - - - - -protected function execute(InputInterface $input, OutputInterface $output) -{ - -$composerJsonPath = Factory::getComposerFile(); -$io = $this->getIO(); - -if (!Filesystem::isReadable($composerJsonPath)) { -$io->writeError(''.$composerJsonPath.' is not readable.'); - -return self::ERROR_GENERIC; -} - -$composerJson = new JsonFile($composerJsonPath); -$contents = file_get_contents($composerJson->getPath()); -if (false === $contents) { -$io->writeError(''.$composerJsonPath.' is not readable.'); - -return self::ERROR_GENERIC; -} - - - -if (!is_writable($composerJsonPath) && false === Silencer::call('file_put_contents', $composerJsonPath, $contents)) { -$io->writeError(''.$composerJsonPath.' is not writable.'); - -return self::ERROR_GENERIC; -} -unset($contents); - -$composer = $this->requireComposer(); -if ($composer->getLocker()->isLocked()) { -if (!$composer->getLocker()->isFresh()) { -$io->writeError('The lock file is not up to date with the latest changes in composer.json. Run the appropriate `update` to fix that before you use the `bump` command.'); - -return self::ERROR_LOCK_OUTDATED; -} - -$repo = $composer->getLocker()->getLockedRepository(true); -} else { -$repo = $composer->getRepositoryManager()->getLocalRepository(); -} - -if ($composer->getPackage()->getType() !== 'project' && !$input->getOption('dev-only')) { -$io->writeError('Warning: Bumping dependency constraints is not recommended for libraries as it will narrow down your dependencies and may cause problems for your users.'); - -$contents = $composerJson->read(); -if (!isset($contents['type'])) { -$io->writeError('If your package is not a library, you can explicitly specify the "type" by using "composer config type project".'); -$io->writeError('Alternatively you can use --dev-only to only bump dependencies within "require-dev".'); -} -unset($contents); -} - -$bumper = new VersionBumper(); -$tasks = []; -if (!$input->getOption('dev-only')) { -$tasks['require'] = $composer->getPackage()->getRequires(); -} -if (!$input->getOption('no-dev-only')) { -$tasks['require-dev'] = $composer->getPackage()->getDevRequires(); -} - -$packagesFilter = $input->getArgument('packages'); -if (count($packagesFilter) > 0) { -$pattern = BasePackage::packageNamesToRegexp(array_unique(array_map('strtolower', $packagesFilter))); -foreach ($tasks as $key => $reqs) { -foreach ($reqs as $pkgName => $link) { -if (!Preg::isMatch($pattern, $pkgName)) { -unset($tasks[$key][$pkgName]); -} -} -} -} - -$updates = []; -foreach ($tasks as $key => $reqs) { -foreach ($reqs as $pkgName => $link) { -if (PlatformRepository::isPlatformPackage($pkgName)) { -continue; -} -$currentConstraint = $link->getPrettyConstraint(); - -$package = $repo->findPackage($pkgName, '*'); - -if (null === $package) { -continue; -} -while ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} - -$bumped = $bumper->bumpRequirement($link->getConstraint(), $package); - -if ($bumped === $currentConstraint) { -continue; -} - -$updates[$key][$pkgName] = $bumped; -} -} - -$dryRun = $input->getOption('dry-run'); - -if (!$dryRun && !$this->updateFileCleanly($composerJson, $updates)) { -$composerDefinition = $composerJson->read(); -foreach ($updates as $key => $packages) { -foreach ($packages as $package => $version) { -$composerDefinition[$key][$package] = $version; -} -} -$composerJson->write($composerDefinition); -} - -$changeCount = array_sum(array_map('count', $updates)); -if ($changeCount > 0) { -if ($dryRun) { -$io->write('' . $composerJsonPath . ' would be updated with:'); -foreach ($updates as $requireType => $packages) { -foreach ($packages as $package => $version) { -$io->write(sprintf(' - %s.%s: %s', $requireType, $package, $version)); -} -} -} else { -$io->write('' . $composerJsonPath . ' has been updated (' . $changeCount . ' changes).'); -} -} else { -$io->write('No requirements to update in '.$composerJsonPath.'.'); -} - -if (!$dryRun && $composer->getLocker()->isLocked() && $changeCount > 0) { -$contents = file_get_contents($composerJson->getPath()); -if (false === $contents) { -throw new \RuntimeException('Unable to read '.$composerJson->getPath().' contents to update the lock file hash.'); -} -$lock = new JsonFile(Factory::getLockFile($composerJsonPath)); -$lockData = $lock->read(); -$lockData['content-hash'] = Locker::getContentHash($contents); -$lock->write($lockData); -} - -if ($dryRun && $changeCount > 0) { -return self::ERROR_GENERIC; -} - -return 0; -} - - - - -private function updateFileCleanly(JsonFile $json, array $updates): bool -{ -$contents = file_get_contents($json->getPath()); -if (false === $contents) { -throw new \RuntimeException('Unable to read '.$json->getPath().' contents.'); -} - -$manipulator = new JsonManipulator($contents); - -foreach ($updates as $key => $packages) { -foreach ($packages as $package => $version) { -if (!$manipulator->addLink($key, $package, $version)) { -return false; -} -} -} - -if (false === file_put_contents($json->getPath(), $manipulator->getContents())) { -throw new \RuntimeException('Unable to write new '.$json->getPath().' contents.'); -} - -return true; -} -} diff --git a/composer/src/Composer/Command/CheckPlatformReqsCommand.php b/composer/src/Composer/Command/CheckPlatformReqsCommand.php deleted file mode 100644 index 703094e55..000000000 --- a/composer/src/Composer/Command/CheckPlatformReqsCommand.php +++ /dev/null @@ -1,216 +0,0 @@ -setName('check-platform-reqs') -->setDescription('Check that platform requirements are satisfied') -->setDefinition([ -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables checking of require-dev packages requirements.'), -new InputOption('lock', null, InputOption::VALUE_NONE, 'Checks requirements only from the lock file, not from installed packages.'), -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), -]) -->setHelp( -<<php composer.phar check-platform-reqs - -EOT -); -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$composer = $this->requireComposer(); - -$requires = []; -$removePackages = []; -if ($input->getOption('lock')) { -$this->getIO()->writeError('Checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements using the lock file'); -$installedRepo = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev')); -} else { -$installedRepo = $composer->getRepositoryManager()->getLocalRepository(); - -if (!$installedRepo->getPackages()) { -$this->getIO()->writeError('No vendor dir present, checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements from the lock file'); -$installedRepo = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev')); -} else { -if ($input->getOption('no-dev')) { -$removePackages = $installedRepo->getDevPackageNames(); -} - -$this->getIO()->writeError('Checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements for packages in the vendor dir'); -} -} -if (!$input->getOption('no-dev')) { -$requires += $composer->getPackage()->getDevRequires(); -} - -foreach ($requires as $require => $link) { -$requires[$require] = [$link]; -} - -$installedRepo = new InstalledRepository([$installedRepo, new RootPackageRepository(clone $composer->getPackage())]); -foreach ($installedRepo->getPackages() as $package) { -if (in_array($package->getName(), $removePackages, true)) { -continue; -} -foreach ($package->getRequires() as $require => $link) { -$requires[$require][] = $link; -} -} - -ksort($requires); - -$installedRepo->addRepository(new PlatformRepository([], [])); - -$results = []; -$exitCode = 0; - - - - -foreach ($requires as $require => $links) { -if (PlatformRepository::isPlatformPackage($require)) { -$candidates = $installedRepo->findPackagesWithReplacersAndProviders($require); -if ($candidates) { -$reqResults = []; -foreach ($candidates as $candidate) { -$candidateConstraint = null; -if ($candidate->getName() === $require) { -$candidateConstraint = new Constraint('=', $candidate->getVersion()); -$candidateConstraint->setPrettyString($candidate->getPrettyVersion()); -} else { -foreach (array_merge($candidate->getProvides(), $candidate->getReplaces()) as $link) { -if ($link->getTarget() === $require) { -$candidateConstraint = $link->getConstraint(); -break; -} -} -} - - -if (!$candidateConstraint) { -continue; -} - -foreach ($links as $link) { -if (!$link->getConstraint()->matches($candidateConstraint)) { -$reqResults[] = [ -$candidate->getName() === $require ? $candidate->getPrettyName() : $require, -$candidateConstraint->getPrettyString(), -$link, -'failed', -$candidate->getName() === $require ? '' : 'provided by '.$candidate->getPrettyName().'', -]; - - -continue 2; -} -} - -$results[] = [ -$candidate->getName() === $require ? $candidate->getPrettyName() : $require, -$candidateConstraint->getPrettyString(), -null, -'success', -$candidate->getName() === $require ? '' : 'provided by '.$candidate->getPrettyName().'', -]; - - -continue 2; -} - - -$results = array_merge($results, $reqResults); -$exitCode = max($exitCode, 1); - -continue; -} - -$results[] = [ -$require, -'n/a', -$links[0], -'missing', -'', -]; - -$exitCode = max($exitCode, 2); -} -} - -$this->printTable($output, $results, $input->getOption('format')); - -return $exitCode; -} - - - - -protected function printTable(OutputInterface $output, array $results, string $format): void -{ -$rows = []; -foreach ($results as $result) { - - - -[$platformPackage, $version, $link, $status, $provider] = $result; - -if ('json' === $format) { -$rows[] = [ -"name" => $platformPackage, -"version" => $version, -"status" => strip_tags($status), -"failed_requirement" => $link instanceof Link ? [ -'source' => $link->getSource(), -'type' => $link->getDescription(), -'target' => $link->getTarget(), -'constraint' => $link->getPrettyConstraint(), -] : null, -"provider" => $provider === '' ? null : strip_tags($provider), -]; -} else { -$rows[] = [ -$platformPackage, -$version, -$link, -$link ? sprintf('%s %s %s (%s)', $link->getSource(), $link->getDescription(), $link->getTarget(), $link->getPrettyConstraint()) : '', -rtrim($status.' '.$provider), -]; -} -} - -if ('json' === $format) { -$this->getIO()->write(JsonFile::encode($rows)); -} else { -$this->renderTable($rows, $output); -} -} -} diff --git a/composer/src/Composer/Command/ClearCacheCommand.php b/composer/src/Composer/Command/ClearCacheCommand.php deleted file mode 100644 index 1160e1926..000000000 --- a/composer/src/Composer/Command/ClearCacheCommand.php +++ /dev/null @@ -1,101 +0,0 @@ -setName('clear-cache') -->setAliases(['clearcache', 'cc']) -->setDescription('Clears composer\'s internal package cache') -->setDefinition([ -new InputOption('gc', null, InputOption::VALUE_NONE, 'Only run garbage collection, not a full cache clear'), -]) -->setHelp( -<<clear-cache deletes all cached packages from composer's -cache directory. - -Read more at https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache-cc -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$config = Factory::createConfig(); -$io = $this->getIO(); - -$cachePaths = [ -'cache-vcs-dir' => $config->get('cache-vcs-dir'), -'cache-repo-dir' => $config->get('cache-repo-dir'), -'cache-files-dir' => $config->get('cache-files-dir'), -'cache-dir' => $config->get('cache-dir'), -]; - -foreach ($cachePaths as $key => $cachePath) { - -if ($key === 'cache-dir' && $input->getOption('gc')) { -continue; -} - -$cachePath = realpath($cachePath); -if (!$cachePath) { -$io->writeError("Cache directory does not exist ($key): $cachePath"); - -continue; -} -$cache = new Cache($io, $cachePath); -$cache->setReadOnly($config->get('cache-read-only')); -if (!$cache->isEnabled()) { -$io->writeError("Cache is not enabled ($key): $cachePath"); - -continue; -} - -if ($input->getOption('gc')) { -$io->writeError("Garbage-collecting cache ($key): $cachePath"); -if ($key === 'cache-files-dir') { -$cache->gc($config->get('cache-files-ttl'), $config->get('cache-files-maxsize')); -} elseif ($key === 'cache-repo-dir') { -$cache->gc($config->get('cache-ttl'), 1024 * 1024 * 1024 ); -} elseif ($key === 'cache-vcs-dir') { -$cache->gcVcsCache($config->get('cache-ttl')); -} -} else { -$io->writeError("Clearing cache ($key): $cachePath"); -$cache->clear(); -} -} - -if ($input->getOption('gc')) { -$io->writeError('All caches garbage-collected.'); -} else { -$io->writeError('All caches cleared.'); -} - -return 0; -} -} diff --git a/composer/src/Composer/Command/CompletionTrait.php b/composer/src/Composer/Command/CompletionTrait.php deleted file mode 100644 index 222757002..000000000 --- a/composer/src/Composer/Command/CompletionTrait.php +++ /dev/null @@ -1,214 +0,0 @@ -requireComposer(); - -return array_merge(array_keys($composer->getPackage()->getRequires()), array_keys($composer->getPackage()->getDevRequires())); -}; -} - - - - -private function suggestInstalledPackage(bool $includeRootPackage = true, bool $includePlatformPackages = false): \Closure -{ -return function (CompletionInput $input) use ($includeRootPackage, $includePlatformPackages): array { -$composer = $this->requireComposer(); -$installedRepos = []; - -if ($includeRootPackage) { -$installedRepos[] = new RootPackageRepository(clone $composer->getPackage()); -} - -$locker = $composer->getLocker(); -if ($locker->isLocked()) { -$installedRepos[] = $locker->getLockedRepository(true); -} else { -$installedRepos[] = $composer->getRepositoryManager()->getLocalRepository(); -} - -$platformHint = []; -if ($includePlatformPackages) { -if ($locker->isLocked()) { -$platformRepo = new PlatformRepository([], $locker->getPlatformOverrides()); -} else { -$platformRepo = new PlatformRepository([], $composer->getConfig()->get('platform')); -} -if ($input->getCompletionValue() === '') { - -$hintsToFind = ['ext-' => 0, 'lib-' => 0, 'php' => 99, 'composer' => 99]; -foreach ($platformRepo->getPackages() as $pkg) { -foreach ($hintsToFind as $hintPrefix => $hintCount) { -if (str_starts_with($pkg->getName(), $hintPrefix)) { -if ($hintCount === 0 || $hintCount >= 99) { -$platformHint[] = $pkg->getName(); -$hintsToFind[$hintPrefix]++; -} elseif ($hintCount === 1) { -unset($hintsToFind[$hintPrefix]); -$platformHint[] = substr($pkg->getName(), 0, max(strlen($pkg->getName()) - 3, strlen($hintPrefix) + 1)).'...'; -} -continue 2; -} -} -} -} else { -$installedRepos[] = $platformRepo; -} -} - -$installedRepo = new InstalledRepository($installedRepos); - -return array_merge( -array_map(static function (PackageInterface $package) { -return $package->getName(); -}, $installedRepo->getPackages()), -$platformHint -); -}; -} - - - - -private function suggestAvailablePackage(int $max = 99): \Closure -{ -return function (CompletionInput $input) use ($max): array { -if ($max < 1) { -return []; -} - -$composer = $this->requireComposer(); -$repos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); - -$results = []; -$showVendors = false; -if (!str_contains($input->getCompletionValue(), '/')) { -$results = $repos->search('^' . preg_quote($input->getCompletionValue()), RepositoryInterface::SEARCH_VENDOR); -$showVendors = true; -} - - -if (\count($results) <= 1) { -$results = $repos->search('^'.preg_quote($input->getCompletionValue()), RepositoryInterface::SEARCH_NAME); -$showVendors = false; -} - -$results = array_column($results, 'name'); - -if ($showVendors) { -$results = array_map(static function (string $name): string { -return $name.'/'; -}, $results); - - -usort($results, static function (string $a, string $b) { -$lenA = \strlen($a); -$lenB = \strlen($b); -if ($lenA === $lenB) { -return $a <=> $b; -} - -return $lenA - $lenB; -}); - -$pinned = []; - - -$completionInput = $input->getCompletionValue().'/'; -if (false !== ($exactIndex = array_search($completionInput, $results, true))) { -$pinned[] = $completionInput; -array_splice($results, $exactIndex, 1); -} - -return array_merge($pinned, array_slice($results, 0, $max - \count($pinned))); -} - -return array_slice($results, 0, $max); -}; -} - - - - - -private function suggestAvailablePackageInclPlatform(): \Closure -{ -return function (CompletionInput $input): array { -if (Preg::isMatch('{^(ext|lib|php)(-|$)|^com}', $input->getCompletionValue())) { -$matches = $this->suggestPlatformPackage()($input); -} else { -$matches = []; -} - -return array_merge($matches, $this->suggestAvailablePackage(99 - \count($matches))($input)); -}; -} - - - - -private function suggestPlatformPackage(): \Closure -{ -return function (CompletionInput $input): array { -$repos = new PlatformRepository([], $this->requireComposer()->getConfig()->get('platform')); - -$pattern = BasePackage::packageNameToRegexp($input->getCompletionValue().'*'); - -return array_filter(array_map(static function (PackageInterface $package) { -return $package->getName(); -}, $repos->getPackages()), static function (string $name) use ($pattern): bool { -return Preg::isMatch($pattern, $name); -}); -}; -} -} diff --git a/composer/src/Composer/Command/ConfigCommand.php b/composer/src/Composer/Command/ConfigCommand.php deleted file mode 100644 index 203dc8f7d..000000000 --- a/composer/src/Composer/Command/ConfigCommand.php +++ /dev/null @@ -1,1064 +0,0 @@ -setName('config') -->setDescription('Sets config options') -->setDefinition([ -new InputOption('global', 'g', InputOption::VALUE_NONE, 'Apply command to the global config file'), -new InputOption('editor', 'e', InputOption::VALUE_NONE, 'Open editor'), -new InputOption('auth', 'a', InputOption::VALUE_NONE, 'Affect auth config file (only used for --editor)'), -new InputOption('unset', null, InputOption::VALUE_NONE, 'Unset the given setting-key'), -new InputOption('list', 'l', InputOption::VALUE_NONE, 'List configuration settings'), -new InputOption('file', 'f', InputOption::VALUE_REQUIRED, 'If you want to choose a different composer.json or config.json'), -new InputOption('absolute', null, InputOption::VALUE_NONE, 'Returns absolute paths when fetching *-dir config values instead of relative'), -new InputOption('json', 'j', InputOption::VALUE_NONE, 'JSON decode the setting value, to be used with extra.* keys'), -new InputOption('merge', 'm', InputOption::VALUE_NONE, 'Merge the setting value with the current value, to be used with extra.* keys in combination with --json'), -new InputOption('append', null, InputOption::VALUE_NONE, 'When adding a repository, append it (lowest priority) to the existing ones instead of prepending it (highest priority)'), -new InputOption('source', null, InputOption::VALUE_NONE, 'Display where the config value is loaded from'), -new InputArgument('setting-key', null, 'Setting key', null, $this->suggestSettingKeys()), -new InputArgument('setting-value', InputArgument::IS_ARRAY, 'Setting value'), -]) -->setHelp( -<<%command.full_name% bin-dir bin/ - -To read a config setting: - - %command.full_name% bin-dir - Outputs: bin - -To edit the global config.json file: - - %command.full_name% --global - -To add a repository: - - %command.full_name% repositories.foo vcs https://bar.com - -To remove a repository (repo is a short alias for repositories): - - %command.full_name% --unset repo.foo - -To disable packagist: - - %command.full_name% repo.packagist false - -You can alter repositories in the global config.json file by passing in the ---global option. - -To add or edit suggested packages you can use: - - %command.full_name% suggest.package reason for the suggestion - -To add or edit extra properties you can use: - - %command.full_name% extra.property value - -Or to add a complex value you can use json with: - - %command.full_name% extra.property --json '{"foo":true, "bar": []}' - -To edit the file in an external editor: - - %command.full_name% --editor - -To choose your editor you can set the "EDITOR" env variable. - -To get a list of configuration values in the file: - - %command.full_name% --list - -You can always pass more than one option. As an example, if you want to edit the -global config.json file. - - %command.full_name% --editor --global - -Read more at https://getcomposer.org/doc/03-cli.md#config -EOT -) -; -} - - - - -protected function initialize(InputInterface $input, OutputInterface $output): void -{ -parent::initialize($input, $output); - -if ($input->getOption('global') && null !== $input->getOption('file')) { -throw new \RuntimeException('--file and --global can not be combined'); -} - -$io = $this->getIO(); -$this->config = Factory::createConfig($io); - -$configFile = $this->getComposerConfigFile($input, $this->config); - - -if ( -($configFile === 'composer.json' || $configFile === './composer.json') -&& !file_exists($configFile) -&& realpath(Platform::getCwd()) === realpath($this->config->get('home')) -) { -file_put_contents($configFile, "{\n}\n"); -} - -$this->configFile = new JsonFile($configFile, null, $io); -$this->configSource = new JsonConfigSource($this->configFile); - -$authConfigFile = $this->getAuthConfigFile($input, $this->config); - -$this->authConfigFile = new JsonFile($authConfigFile, null, $io); -$this->authConfigSource = new JsonConfigSource($this->authConfigFile, true); - - -if ($input->getOption('global') && !$this->configFile->exists()) { -touch($this->configFile->getPath()); -$this->configFile->write(['config' => new \ArrayObject]); -Silencer::call('chmod', $this->configFile->getPath(), 0600); -} -if ($input->getOption('global') && !$this->authConfigFile->exists()) { -touch($this->authConfigFile->getPath()); -$this->authConfigFile->write(['bitbucket-oauth' => new \ArrayObject, 'github-oauth' => new \ArrayObject, 'gitlab-oauth' => new \ArrayObject, 'gitlab-token' => new \ArrayObject, 'http-basic' => new \ArrayObject, 'bearer' => new \ArrayObject]); -Silencer::call('chmod', $this->authConfigFile->getPath(), 0600); -} - -if (!$this->configFile->exists()) { -throw new \RuntimeException(sprintf('File "%s" cannot be found in the current directory', $configFile)); -} -} - - - - -protected function execute(InputInterface $input, OutputInterface $output): int -{ - -if (true === $input->getOption('editor')) { -$editor = Platform::getEnv('EDITOR'); -if (false === $editor || '' === $editor) { -if (Platform::isWindows()) { -$editor = 'notepad'; -} else { -foreach (['editor', 'vim', 'vi', 'nano', 'pico', 'ed'] as $candidate) { -if (exec('which '.$candidate)) { -$editor = $candidate; -break; -} -} -} -} else { -$editor = escapeshellcmd($editor); -} - -$file = $input->getOption('auth') ? $this->authConfigFile->getPath() : $this->configFile->getPath(); -system($editor . ' ' . $file . (Platform::isWindows() ? '' : ' > `tty`')); - -return 0; -} - -if (false === $input->getOption('global')) { -$this->config->merge($this->configFile->read(), $this->configFile->getPath()); -$this->config->merge(['config' => $this->authConfigFile->exists() ? $this->authConfigFile->read() : []], $this->authConfigFile->getPath()); -} - -$this->getIO()->loadConfiguration($this->config); - - -if (true === $input->getOption('list')) { -$this->listConfiguration($this->config->all(), $this->config->raw(), $output, null, $input->getOption('source')); - -return 0; -} - -$settingKey = $input->getArgument('setting-key'); -if (!is_string($settingKey)) { -return 0; -} - - -if ([] !== $input->getArgument('setting-value') && $input->getOption('unset')) { -throw new \RuntimeException('You can not combine a setting value with --unset'); -} - - -if ([] === $input->getArgument('setting-value') && !$input->getOption('unset')) { -$properties = self::CONFIGURABLE_PACKAGE_PROPERTIES; -$rawData = $this->configFile->read(); -$data = $this->config->all(); -if (Preg::isMatch('/^repos?(?:itories)?(?:\.(.+))?/', $settingKey, $matches)) { -if (!isset($matches[1]) || $matches[1] === '') { -$value = $data['repositories'] ?? []; -} else { -if (!isset($data['repositories'][$matches[1]])) { -throw new \InvalidArgumentException('There is no '.$matches[1].' repository defined'); -} - -$value = $data['repositories'][$matches[1]]; -} -} elseif (strpos($settingKey, '.')) { -$bits = explode('.', $settingKey); -if ($bits[0] === 'extra' || $bits[0] === 'suggest') { -$data = $rawData; -} else { -$data = $data['config']; -} -$match = false; -foreach ($bits as $bit) { -$key = isset($key) ? $key.'.'.$bit : $bit; -$match = false; -if (isset($data[$key])) { -$match = true; -$data = $data[$key]; -unset($key); -} -} - -if (!$match) { -throw new \RuntimeException($settingKey.' is not defined.'); -} - -$value = $data; -} elseif (isset($data['config'][$settingKey])) { -$value = $this->config->get($settingKey, $input->getOption('absolute') ? 0 : Config::RELATIVE_PATHS); -} elseif (isset($rawData[$settingKey]) && in_array($settingKey, $properties, true)) { -$value = $rawData[$settingKey]; -} else { -throw new \RuntimeException($settingKey.' is not defined'); -} - -if (is_array($value)) { -$value = JsonFile::encode($value, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} - -$sourceOfConfigValue = ''; -if ($input->getOption('source')) { -$sourceOfConfigValue = ' (' . $this->config->getSourceOfValue($settingKey) . ')'; -} - -$this->getIO()->write($value . $sourceOfConfigValue, true, IOInterface::QUIET); - -return 0; -} - -$values = $input->getArgument('setting-value'); - -$booleanValidator = static function ($val): bool { -return in_array($val, ['true', 'false', '1', '0'], true); -}; -$booleanNormalizer = static function ($val): bool { -return $val !== 'false' && (bool) $val; -}; - - -$uniqueConfigValues = [ -'process-timeout' => ['is_numeric', 'intval'], -'use-include-path' => [$booleanValidator, $booleanNormalizer], -'use-github-api' => [$booleanValidator, $booleanNormalizer], -'preferred-install' => [ -static function ($val): bool { -return in_array($val, ['auto', 'source', 'dist'], true); -}, -static function ($val) { -return $val; -}, -], -'gitlab-protocol' => [ -static function ($val): bool { -return in_array($val, ['git', 'http', 'https'], true); -}, -static function ($val) { -return $val; -}, -], -'store-auths' => [ -static function ($val): bool { -return in_array($val, ['true', 'false', 'prompt'], true); -}, -static function ($val) { -if ('prompt' === $val) { -return 'prompt'; -} - -return $val !== 'false' && (bool) $val; -}, -], -'notify-on-install' => [$booleanValidator, $booleanNormalizer], -'vendor-dir' => ['is_string', static function ($val) { -return $val; -}], -'bin-dir' => ['is_string', static function ($val) { -return $val; -}], -'archive-dir' => ['is_string', static function ($val) { -return $val; -}], -'archive-format' => ['is_string', static function ($val) { -return $val; -}], -'data-dir' => ['is_string', static function ($val) { -return $val; -}], -'cache-dir' => ['is_string', static function ($val) { -return $val; -}], -'cache-files-dir' => ['is_string', static function ($val) { -return $val; -}], -'cache-repo-dir' => ['is_string', static function ($val) { -return $val; -}], -'cache-vcs-dir' => ['is_string', static function ($val) { -return $val; -}], -'cache-ttl' => ['is_numeric', 'intval'], -'cache-files-ttl' => ['is_numeric', 'intval'], -'cache-files-maxsize' => [ -static function ($val): bool { -return Preg::isMatch('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $val); -}, -static function ($val) { -return $val; -}, -], -'bin-compat' => [ -static function ($val): bool { -return in_array($val, ['auto', 'full', 'symlink']); -}, -static function ($val) { -return $val; -}, -], -'discard-changes' => [ -static function ($val): bool { -return in_array($val, ['stash', 'true', 'false', '1', '0'], true); -}, -static function ($val) { -if ('stash' === $val) { -return 'stash'; -} - -return $val !== 'false' && (bool) $val; -}, -], -'autoloader-suffix' => ['is_string', static function ($val) { -return $val === 'null' ? null : $val; -}], -'sort-packages' => [$booleanValidator, $booleanNormalizer], -'optimize-autoloader' => [$booleanValidator, $booleanNormalizer], -'classmap-authoritative' => [$booleanValidator, $booleanNormalizer], -'apcu-autoloader' => [$booleanValidator, $booleanNormalizer], -'prepend-autoloader' => [$booleanValidator, $booleanNormalizer], -'disable-tls' => [$booleanValidator, $booleanNormalizer], -'secure-http' => [$booleanValidator, $booleanNormalizer], -'cafile' => [ -static function ($val): bool { -return file_exists($val) && Filesystem::isReadable($val); -}, -static function ($val) { -return $val === 'null' ? null : $val; -}, -], -'capath' => [ -static function ($val): bool { -return is_dir($val) && Filesystem::isReadable($val); -}, -static function ($val) { -return $val === 'null' ? null : $val; -}, -], -'github-expose-hostname' => [$booleanValidator, $booleanNormalizer], -'htaccess-protect' => [$booleanValidator, $booleanNormalizer], -'lock' => [$booleanValidator, $booleanNormalizer], -'allow-plugins' => [$booleanValidator, $booleanNormalizer], -'platform-check' => [ -static function ($val): bool { -return in_array($val, ['php-only', 'true', 'false', '1', '0'], true); -}, -static function ($val) { -if ('php-only' === $val) { -return 'php-only'; -} - -return $val !== 'false' && (bool) $val; -}, -], -'use-parent-dir' => [ -static function ($val): bool { -return in_array($val, ['true', 'false', 'prompt'], true); -}, -static function ($val) { -if ('prompt' === $val) { -return 'prompt'; -} - -return $val !== 'false' && (bool) $val; -}, -], -]; -$multiConfigValues = [ -'github-protocols' => [ -static function ($vals) { -if (!is_array($vals)) { -return 'array expected'; -} - -foreach ($vals as $val) { -if (!in_array($val, ['git', 'https', 'ssh'])) { -return 'valid protocols include: git, https, ssh'; -} -} - -return true; -}, -static function ($vals) { -return $vals; -}, -], -'github-domains' => [ -static function ($vals) { -if (!is_array($vals)) { -return 'array expected'; -} - -return true; -}, -static function ($vals) { -return $vals; -}, -], -'gitlab-domains' => [ -static function ($vals) { -if (!is_array($vals)) { -return 'array expected'; -} - -return true; -}, -static function ($vals) { -return $vals; -}, -], -]; - -if ($input->getOption('unset') && (isset($uniqueConfigValues[$settingKey]) || isset($multiConfigValues[$settingKey]))) { -if ($settingKey === 'disable-tls' && $this->config->get('disable-tls')) { -$this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); -} - -$this->configSource->removeConfigSetting($settingKey); - -return 0; -} -if (isset($uniqueConfigValues[$settingKey])) { -$this->handleSingleValue($settingKey, $uniqueConfigValues[$settingKey], $values, 'addConfigSetting'); - -return 0; -} -if (isset($multiConfigValues[$settingKey])) { -$this->handleMultiValue($settingKey, $multiConfigValues[$settingKey], $values, 'addConfigSetting'); - -return 0; -} - -if (Preg::isMatch('/^preferred-install\.(.+)/', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->configSource->removeConfigSetting($settingKey); - -return 0; -} - -[$validator] = $uniqueConfigValues['preferred-install']; -if (!$validator($values[0])) { -throw new \RuntimeException('Invalid value for '.$settingKey.'. Should be one of: auto, source, or dist'); -} - -$this->configSource->addConfigSetting($settingKey, $values[0]); - -return 0; -} - - -if (Preg::isMatch('{^allow-plugins\.([a-zA-Z0-9/*-]+)}', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->configSource->removeConfigSetting($settingKey); - -return 0; -} - -if (true !== $booleanValidator($values[0])) { -throw new \RuntimeException(sprintf( -'"%s" is an invalid value', -$values[0] -)); -} - -$normalizedValue = $booleanNormalizer($values[0]); - -$this->configSource->addConfigSetting($settingKey, $normalizedValue); - -return 0; -} - - -$uniqueProps = [ -'name' => ['is_string', static function ($val) { -return $val; -}], -'type' => ['is_string', static function ($val) { -return $val; -}], -'description' => ['is_string', static function ($val) { -return $val; -}], -'homepage' => ['is_string', static function ($val) { -return $val; -}], -'version' => ['is_string', static function ($val) { -return $val; -}], -'minimum-stability' => [ -static function ($val): bool { -return isset(BasePackage::$stabilities[VersionParser::normalizeStability($val)]); -}, -static function ($val): string { -return VersionParser::normalizeStability($val); -}, -], -'prefer-stable' => [$booleanValidator, $booleanNormalizer], -]; -$multiProps = [ -'keywords' => [ -static function ($vals) { -if (!is_array($vals)) { -return 'array expected'; -} - -return true; -}, -static function ($vals) { -return $vals; -}, -], -'license' => [ -static function ($vals) { -if (!is_array($vals)) { -return 'array expected'; -} - -return true; -}, -static function ($vals) { -return $vals; -}, -], -]; - -if ($input->getOption('global') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]) || strpos($settingKey, 'extra.') === 0)) { -throw new \InvalidArgumentException('The ' . $settingKey . ' property can not be set in the global config.json file. Use `composer global config` to apply changes to the global composer.json'); -} -if ($input->getOption('unset') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]))) { -$this->configSource->removeProperty($settingKey); - -return 0; -} -if (isset($uniqueProps[$settingKey])) { -$this->handleSingleValue($settingKey, $uniqueProps[$settingKey], $values, 'addProperty'); - -return 0; -} -if (isset($multiProps[$settingKey])) { -$this->handleMultiValue($settingKey, $multiProps[$settingKey], $values, 'addProperty'); - -return 0; -} - - -if (Preg::isMatchStrictGroups('/^repos?(?:itories)?\.(.+)/', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->configSource->removeRepository($matches[1]); - -return 0; -} - -if (2 === count($values)) { -$this->configSource->addRepository($matches[1], [ -'type' => $values[0], -'url' => $values[1], -], $input->getOption('append')); - -return 0; -} - -if (1 === count($values)) { -$value = strtolower($values[0]); -if (true === $booleanValidator($value)) { -if (false === $booleanNormalizer($value)) { -$this->configSource->addRepository($matches[1], false, $input->getOption('append')); - -return 0; -} -} else { -$value = JsonFile::parseJson($values[0]); -$this->configSource->addRepository($matches[1], $value, $input->getOption('append')); - -return 0; -} -} - -throw new \RuntimeException('You must pass the type and a url. Example: php composer.phar config repositories.foo vcs https://bar.com'); -} - - -if (Preg::isMatch('/^extra\.(.+)/', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->configSource->removeProperty($settingKey); - -return 0; -} - -$value = $values[0]; -if ($input->getOption('json')) { -$value = JsonFile::parseJson($value); -if ($input->getOption('merge')) { -$currentValue = $this->configFile->read(); -$bits = explode('.', $settingKey); -foreach ($bits as $bit) { -$currentValue = $currentValue[$bit] ?? null; -} -if (is_array($currentValue)) { -$value = array_merge($currentValue, $value); -} -} -} -$this->configSource->addProperty($settingKey, $value); - -return 0; -} - - -if (Preg::isMatch('/^suggest\.(.+)/', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->configSource->removeProperty($settingKey); - -return 0; -} - -$this->configSource->addProperty($settingKey, implode(' ', $values)); - -return 0; -} - - -if (in_array($settingKey, ['suggest', 'extra'], true) && $input->getOption('unset')) { -$this->configSource->removeProperty($settingKey); - -return 0; -} - - -if (Preg::isMatch('/^platform\.(.+)/', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->configSource->removeConfigSetting($settingKey); - -return 0; -} - -$this->configSource->addConfigSetting($settingKey, $values[0] === 'false' ? false : $values[0]); - -return 0; -} - - -if ($settingKey === 'platform' && $input->getOption('unset')) { -$this->configSource->removeConfigSetting($settingKey); - -return 0; -} - - -if (Preg::isMatch('/^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic|bearer)\.(.+)/', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->authConfigSource->removeConfigSetting($matches[1].'.'.$matches[2]); -$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); - -return 0; -} - -if ($matches[1] === 'bitbucket-oauth') { -if (2 !== count($values)) { -throw new \RuntimeException('Expected two arguments (consumer-key, consumer-secret), got '.count($values)); -} -$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); -$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], ['consumer-key' => $values[0], 'consumer-secret' => $values[1]]); -} elseif ($matches[1] === 'gitlab-token' && 2 === count($values)) { -$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); -$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], ['username' => $values[0], 'token' => $values[1]]); -} elseif (in_array($matches[1], ['github-oauth', 'gitlab-oauth', 'gitlab-token', 'bearer'], true)) { -if (1 !== count($values)) { -throw new \RuntimeException('Too many arguments, expected only one token'); -} -$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); -$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], $values[0]); -} elseif ($matches[1] === 'http-basic') { -if (2 !== count($values)) { -throw new \RuntimeException('Expected two arguments (username, password), got '.count($values)); -} -$this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); -$this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], ['username' => $values[0], 'password' => $values[1]]); -} - -return 0; -} - - -if (Preg::isMatch('/^scripts\.(.+)/', $settingKey, $matches)) { -if ($input->getOption('unset')) { -$this->configSource->removeProperty($settingKey); - -return 0; -} - -$this->configSource->addProperty($settingKey, count($values) > 1 ? $values : $values[0]); - -return 0; -} - - -if ($input->getOption('unset')) { -$this->configSource->removeProperty($settingKey); - -return 0; -} - -throw new \InvalidArgumentException('Setting '.$settingKey.' does not exist or is not supported by this command'); -} - - - - - -protected function handleSingleValue(string $key, array $callbacks, array $values, string $method): void -{ -[$validator, $normalizer] = $callbacks; -if (1 !== count($values)) { -throw new \RuntimeException('You can only pass one value. Example: php composer.phar config process-timeout 300'); -} - -if (true !== $validation = $validator($values[0])) { -throw new \RuntimeException(sprintf( -'"%s" is an invalid value'.($validation ? ' ('.$validation.')' : ''), -$values[0] -)); -} - -$normalizedValue = $normalizer($values[0]); - -if ($key === 'disable-tls') { -if (!$normalizedValue && $this->config->get('disable-tls')) { -$this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); -} elseif ($normalizedValue && !$this->config->get('disable-tls')) { -$this->getIO()->writeError('You are now running Composer with SSL/TLS protection disabled.'); -} -} - -call_user_func([$this->configSource, $method], $key, $normalizedValue); -} - - - - - -protected function handleMultiValue(string $key, array $callbacks, array $values, string $method): void -{ -[$validator, $normalizer] = $callbacks; -if (true !== $validation = $validator($values)) { -throw new \RuntimeException(sprintf( -'%s is an invalid value'.($validation ? ' ('.$validation.')' : ''), -json_encode($values) -)); -} - -call_user_func([$this->configSource, $method], $key, $normalizer($values)); -} - - - - - - - -protected function listConfiguration(array $contents, array $rawContents, OutputInterface $output, ?string $k = null, bool $showSource = false): void -{ -$origK = $k; -$io = $this->getIO(); -foreach ($contents as $key => $value) { -if ($k === null && !in_array($key, ['config', 'repositories'])) { -continue; -} - -$rawVal = $rawContents[$key] ?? null; - -if (is_array($value) && (!is_numeric(key($value)) || ($key === 'repositories' && null === $k))) { -$k .= Preg::replace('{^config\.}', '', $key . '.'); -$this->listConfiguration($value, $rawVal, $output, $k, $showSource); -$k = $origK; - -continue; -} - -if (is_array($value)) { -$value = array_map(static function ($val) { -return is_array($val) ? json_encode($val) : $val; -}, $value); - -$value = '['.implode(', ', $value).']'; -} - -if (is_bool($value)) { -$value = var_export($value, true); -} - -$source = ''; -if ($showSource) { -$source = ' (' . $this->config->getSourceOfValue($k . $key) . ')'; -} - -if (null !== $k && 0 === strpos($k, 'repositories')) { -$link = 'https://getcomposer.org/doc/05-repositories.md'; -} else { -$id = Preg::replace('{\..*$}', '', $k === '' || $k === null ? (string) $key : $k); -$id = Preg::replace('{[^a-z0-9]}i', '-', strtolower(trim($id))); -$id = Preg::replace('{-+}', '-', $id); -$link = 'https://getcomposer.org/doc/06-config.md#' . $id; -} -if (is_string($rawVal) && $rawVal !== $value) { -$io->write('[' . $k . $key . '] ' . $rawVal . ' (' . $value . ')' . $source, true, IOInterface::QUIET); -} else { -$io->write('[' . $k . $key . '] ' . $value . '' . $source, true, IOInterface::QUIET); -} -} -} - - - - -private function getComposerConfigFile(InputInterface $input, Config $config): string -{ -return $input->getOption('global') -? ($config->get('home') . '/config.json') -: ($input->getOption('file') ?: Factory::getComposerFile()) -; -} - - - - - -private function getAuthConfigFile(InputInterface $input, Config $config): string -{ -return $input->getOption('global') -? ($config->get('home') . '/auth.json') -: dirname($this->getComposerConfigFile($input, $config)) . '/auth.json' -; -} - - - - -private function suggestSettingKeys(): \Closure -{ -return function (CompletionInput $input): array { -if ($input->getOption('list') || $input->getOption('editor') || $input->getOption('auth')) { -return []; -} - - -$config = Factory::createConfig(); - - -$configFile = new JsonFile($this->getComposerConfigFile($input, $config)); -if ($configFile->exists()) { -$config->merge($configFile->read(), $configFile->getPath()); -} - - -$authConfigFile = new JsonFile($this->getAuthConfigFile($input, $config)); -if ($authConfigFile->exists()) { -$config->merge(['config' => $authConfigFile->read()], $authConfigFile->getPath()); -} - - -$rawConfig = $config->raw(); -$keys = array_merge( -$this->flattenSettingKeys($rawConfig['config']), -$this->flattenSettingKeys($rawConfig['repositories'], 'repositories.') -); - - -if ($input->getOption('unset')) { - -$sources = [$configFile->getPath(), $authConfigFile->getPath()]; -$keys = array_filter( -$keys, -static function (string $key) use ($config, $sources): bool { -return in_array($config->getSourceOfValue($key), $sources, true); -} -); - - -} else { - -$keys = array_merge($keys, self::CONFIGURABLE_PACKAGE_PROPERTIES); - - - - - -} - - -if ($configFile->exists()) { -$properties = array_filter( -$configFile->read(), -static function (string $key): bool { -return in_array($key, self::CONFIGURABLE_PACKAGE_PROPERTIES, true); -}, -ARRAY_FILTER_USE_KEY -); - -$keys = array_merge( -$keys, -$this->flattenSettingKeys($properties) -); -} - - -$completionValue = $input->getCompletionValue(); - -if ($completionValue !== '') { -$keys = array_filter( -$keys, -static function (string $key) use ($completionValue): bool { -return str_starts_with($key, $completionValue); -} -); -} - -sort($keys); - -return array_unique($keys); -}; -} - - - - - - - -private function flattenSettingKeys(array $config, string $prefix = ''): array -{ -$keys = []; -foreach ($config as $key => $value) { -$keys[] = [$prefix . $key]; - - -if (is_array($value) && !array_is_list($value) && $prefix !== 'repositories.') { -$keys[] = $this->flattenSettingKeys($value, $prefix . $key . '.'); -} -} - -return array_merge(...$keys); -} -} diff --git a/composer/src/Composer/Command/CreateProjectCommand.php b/composer/src/Composer/Command/CreateProjectCommand.php deleted file mode 100644 index a49b510b1..000000000 --- a/composer/src/Composer/Command/CreateProjectCommand.php +++ /dev/null @@ -1,481 +0,0 @@ -setName('create-project') -->setDescription('Creates new project from a package into given directory') -->setDefinition([ -new InputArgument('package', InputArgument::OPTIONAL, 'Package name to be installed', null, $this->suggestAvailablePackage()), -new InputArgument('directory', InputArgument::OPTIONAL, 'Directory where the files should be created'), -new InputArgument('version', InputArgument::OPTIONAL, 'Version, will default to latest'), -new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum-stability allowed (unless a version is specified).'), -new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), -new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), -new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), -new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories to look the package up, either by URL or using JSON arrays'), -new InputOption('repository-url', null, InputOption::VALUE_REQUIRED, 'DEPRECATED: Use --repository instead.'), -new InputOption('add-repository', null, InputOption::VALUE_NONE, 'Add the custom repository in the composer.json. If a lock file is present it will be deleted and an update will be run instead of install.'), -new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), -new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), -new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Whether to prevent execution of all defined scripts in the root package.'), -new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), -new InputOption('no-secure-http', null, InputOption::VALUE_NONE, 'Disable the secure-http config option temporarily while installing the root package. Use at your own risk. Using this flag is a bad idea.'), -new InputOption('keep-vcs', null, InputOption::VALUE_NONE, 'Whether to prevent deleting the vcs folder.'), -new InputOption('remove-vcs', null, InputOption::VALUE_NONE, 'Whether to force deletion of the vcs folder without prompting.'), -new InputOption('no-install', null, InputOption::VALUE_NONE, 'Whether to skip installation of the package dependencies.'), -new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Whether to skip auditing of the installed package dependencies (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), -new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json" or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), -new InputOption('ask', null, InputOption::VALUE_NONE, 'Whether to ask for project directory.'), -]) -->setHelp( -<<create-project command creates a new project from a given -package into a new directory. If executed without params and in a directory -with a composer.json file it installs the packages for the current project. - -You can use this command to bootstrap new projects or setup a clean -version-controlled installation for developers of your project. - -php composer.phar create-project vendor/project target-directory [version] - -You can also specify the version with the package name using = or : as separator. - -php composer.phar create-project vendor/project:version target-directory - -To install unstable packages, either specify the version you want, or use the ---stability=dev (where dev can be one of RC, beta, alpha or dev). - -To setup a developer workable version you should create the project using the source -controlled code by appending the '--prefer-source' flag. - -To install a package from another repository than the default one you -can pass the '--repository=https://myrepository.org' flag. - -Read more at https://getcomposer.org/doc/03-cli.md#create-project -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$config = Factory::createConfig(); -$io = $this->getIO(); - -[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input, true); - -if ($input->getOption('dev')) { -$io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); -} -if ($input->getOption('no-custom-installers')) { -$io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); -$input->setOption('no-plugins', true); -} - -if ($input->isInteractive() && $input->getOption('ask')) { -$package = $input->getArgument('package'); -if (null === $package) { -throw new \RuntimeException('Not enough arguments (missing: "package").'); -} -$parts = explode("/", strtolower($package), 2); -$input->setArgument('directory', $io->ask('New project directory ['.array_pop($parts).']: ')); -} - -return $this->installProject( -$io, -$config, -$input, -$input->getArgument('package'), -$input->getArgument('directory'), -$input->getArgument('version'), -$input->getOption('stability'), -$preferSource, -$preferDist, -!$input->getOption('no-dev'), -\count($input->getOption('repository')) > 0 ? $input->getOption('repository') : $input->getOption('repository-url'), -$input->getOption('no-plugins'), -$input->getOption('no-scripts'), -$input->getOption('no-progress'), -$input->getOption('no-install'), -$this->getPlatformRequirementFilter($input), -!$input->getOption('no-secure-http'), -$input->getOption('add-repository') -); -} - - - - - - -public function installProject(IOInterface $io, Config $config, InputInterface $input, ?string $packageName = null, ?string $directory = null, ?string $packageVersion = null, ?string $stability = 'stable', bool $preferSource = false, bool $preferDist = false, bool $installDevPackages = false, $repositories = null, bool $disablePlugins = false, bool $disableScripts = false, bool $noProgress = false, bool $noInstall = false, ?PlatformRequirementFilterInterface $platformRequirementFilter = null, bool $secureHttp = true, bool $addRepository = false): int -{ -$oldCwd = Platform::getCwd(); - -if ($repositories !== null && !is_array($repositories)) { -$repositories = (array) $repositories; -} - -$platformRequirementFilter = $platformRequirementFilter ?? PlatformRequirementFilterFactory::ignoreNothing(); - - -$io->loadConfiguration($config); - -$this->suggestedPackagesReporter = new SuggestedPackagesReporter($io); - -if ($packageName !== null) { -$installedFromVcs = $this->installRootPackage($io, $config, $packageName, $platformRequirementFilter, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repositories, $disablePlugins, $disableScripts, $noProgress, $secureHttp); -} else { -$installedFromVcs = false; -} - -if ($repositories !== null && $addRepository && is_file('composer.lock')) { -unlink('composer.lock'); -} - -$composer = Factory::create($io, null, $disablePlugins, $disableScripts); - - -if ($repositories !== null && $addRepository) { -foreach ($repositories as $index => $repo) { -$repoConfig = RepositoryFactory::configFromString($io, $composer->getConfig(), $repo, true); -$composerJsonRepositoriesConfig = $composer->getConfig()->getRepositories(); -$name = RepositoryFactory::generateRepositoryName($index, $repoConfig, $composerJsonRepositoriesConfig); -$configSource = new JsonConfigSource(new JsonFile('composer.json')); - -if ( -(isset($repoConfig['packagist']) && $repoConfig === ['packagist' => false]) -|| (isset($repoConfig['packagist.org']) && $repoConfig === ['packagist.org' => false]) -) { -$configSource->addRepository('packagist.org', false); -} else { -$configSource->addRepository($name, $repoConfig, false); -} - -$composer = Factory::create($io, null, $disablePlugins); -} -} - -$process = $composer->getLoop()->getProcessExecutor(); -$fs = new Filesystem($process); - - -$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages); - - -$config = $composer->getConfig(); -[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); - - -if ($noInstall === false) { -$composer->getInstallationManager()->setOutputProgress(!$noProgress); - -$installer = Installer::create($io, $composer); -$installer->setPreferSource($preferSource) -->setPreferDist($preferDist) -->setDevMode($installDevPackages) -->setPlatformRequirementFilter($platformRequirementFilter) -->setSuggestedPackagesReporter($this->suggestedPackagesReporter) -->setOptimizeAutoloader($config->get('optimize-autoloader')) -->setClassMapAuthoritative($config->get('classmap-authoritative')) -->setApcuAutoloader($config->get('apcu-autoloader')) -->setAudit(!$input->getOption('no-audit')) -->setAuditFormat($this->getAuditFormat($input)); - -if (!$composer->getLocker()->isLocked()) { -$installer->setUpdate(true); -} - -if ($disablePlugins) { -$installer->disablePlugins(); -} - -try { -$status = $installer->run(); -if (0 !== $status) { -return $status; -} -} catch (PluginBlockedException $e) { -$io->writeError('Hint: To allow running the config command recommended below before dependencies are installed, run create-project with --no-install.'); -$io->writeError('You can then cd into '.getcwd().', configure allow-plugins, and finally run a composer install to complete the process.'); -throw $e; -} -} - -$hasVcs = $installedFromVcs; -if ( -!$input->getOption('keep-vcs') -&& $installedFromVcs -&& ( -$input->getOption('remove-vcs') -|| !$io->isInteractive() -|| $io->askConfirmation('Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? ') -) -) { -$finder = new Finder(); -$finder->depth(0)->directories()->in(Platform::getCwd())->ignoreVCS(false)->ignoreDotFiles(false); -foreach (['.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.fslckout', '_FOSSIL_'] as $vcsName) { -$finder->name($vcsName); -} - -try { -$dirs = iterator_to_array($finder); -unset($finder); -foreach ($dirs as $dir) { -if (!$fs->removeDirectory((string) $dir)) { -throw new \RuntimeException('Could not remove '.$dir); -} -} -} catch (\Exception $e) { -$io->writeError('An error occurred while removing the VCS metadata: '.$e->getMessage().''); -} - -$hasVcs = false; -} - - -if (!$hasVcs) { -$package = $composer->getPackage(); -$configSource = new JsonConfigSource(new JsonFile('composer.json')); -foreach (BasePackage::$supportedLinkTypes as $type => $meta) { -foreach ($package->{'get'.$meta['method']}() as $link) { -if ($link->getPrettyConstraint() === 'self.version') { -$configSource->addLink($type, $link->getTarget(), $package->getPrettyVersion()); -} -} -} -} - - -$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_CREATE_PROJECT_CMD, $installDevPackages); - -chdir($oldCwd); -$vendorComposerDir = $config->get('vendor-dir').'/composer'; -if (is_dir($vendorComposerDir) && $fs->isDirEmpty($vendorComposerDir)) { -Silencer::call('rmdir', $vendorComposerDir); -$vendorDir = $config->get('vendor-dir'); -if (is_dir($vendorDir) && $fs->isDirEmpty($vendorDir)) { -Silencer::call('rmdir', $vendorDir); -} -} - -return 0; -} - - - - - - -protected function installRootPackage(IOInterface $io, Config $config, string $packageName, PlatformRequirementFilterInterface $platformRequirementFilter, ?string $directory = null, ?string $packageVersion = null, ?string $stability = 'stable', bool $preferSource = false, bool $preferDist = false, bool $installDevPackages = false, ?array $repositories = null, bool $disablePlugins = false, bool $disableScripts = false, bool $noProgress = false, bool $secureHttp = true): bool -{ -if (!$secureHttp) { -$config->merge(['config' => ['secure-http' => false]], Config::SOURCE_COMMAND); -} - -$parser = new VersionParser(); -$requirements = $parser->parseNameVersionPairs([$packageName]); -$name = strtolower($requirements[0]['name']); -if (!$packageVersion && isset($requirements[0]['version'])) { -$packageVersion = $requirements[0]['version']; -} - - -if (null === $directory) { -$parts = explode("/", $name, 2); -$directory = Platform::getCwd() . DIRECTORY_SEPARATOR . array_pop($parts); -} - -$process = new ProcessExecutor($io); -$fs = new Filesystem($process); -if (!$fs->isAbsolutePath($directory)) { -$directory = Platform::getCwd() . DIRECTORY_SEPARATOR . $directory; -} - -$io->writeError('Creating a "' . $packageName . '" project at "' . $fs->findShortestPath(Platform::getCwd(), $directory, true) . '"'); - -if (file_exists($directory)) { -if (!is_dir($directory)) { -throw new \InvalidArgumentException('Cannot create project directory at "'.$directory.'", it exists as a file.'); -} -if (!$fs->isDirEmpty($directory)) { -throw new \InvalidArgumentException('Project directory "'.$directory.'" is not empty.'); -} -} - -if (null === $stability) { -if (null === $packageVersion) { -$stability = 'stable'; -} elseif (Preg::isMatchStrictGroups('{^[^,\s]*?@('.implode('|', array_keys(BasePackage::$stabilities)).')$}i', $packageVersion, $match)) { -$stability = $match[1]; -} else { -$stability = VersionParser::parseStability($packageVersion); -} -} - -$stability = VersionParser::normalizeStability($stability); - -if (!isset(BasePackage::$stabilities[$stability])) { -throw new \InvalidArgumentException('Invalid stability provided ('.$stability.'), must be one of: '.implode(', ', array_keys(BasePackage::$stabilities))); -} - -$composer = Factory::create($io, $config->all(), $disablePlugins, $disableScripts); -$config = $composer->getConfig(); -$rm = $composer->getRepositoryManager(); - -$repositorySet = new RepositorySet($stability); -if (null === $repositories) { -$repositorySet->addRepository(new CompositeRepository(RepositoryFactory::defaultRepos($io, $config, $rm))); -} else { -foreach ($repositories as $repo) { -$repoConfig = RepositoryFactory::configFromString($io, $config, $repo, true); -if ( -(isset($repoConfig['packagist']) && $repoConfig === ['packagist' => false]) -|| (isset($repoConfig['packagist.org']) && $repoConfig === ['packagist.org' => false]) -) { -continue; -} -$repositorySet->addRepository(RepositoryFactory::createRepo($io, $config, $repoConfig, $rm)); -} -} - -$platformOverrides = $config->get('platform'); -$platformRepo = new PlatformRepository([], $platformOverrides); - - -$versionSelector = new VersionSelector($repositorySet, $platformRepo); -$package = $versionSelector->findBestCandidate($name, $packageVersion, $stability, $platformRequirementFilter, 0, $io); - -if (!$package) { -$errorMessage = "Could not find package $name with " . ($packageVersion ? "version $packageVersion" : "stability $stability"); -if (!($platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter) && $versionSelector->findBestCandidate($name, $packageVersion, $stability, PlatformRequirementFilterFactory::ignoreAll())) { -throw new \InvalidArgumentException($errorMessage .' in a version installable using your PHP version, PHP extensions and Composer version.'); -} - -throw new \InvalidArgumentException($errorMessage .'.'); -} - - -@mkdir($directory, 0777, true); -if (false !== ($realDir = realpath($directory))) { -$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) use ($realDir) { -$this->getIO()->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); -$fs = new Filesystem(); -$fs->removeDirectory($realDir); -$handler->exitWithLastSignal(); -}); -} - - -if ($package instanceof AliasPackage && $package->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -$package = $package->getAliasOf(); -} - -$io->writeError('Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')'); - -if ($disablePlugins) { -$io->writeError('Plugins have been disabled.'); -} - -if ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} - -$dm = $composer->getDownloadManager(); -$dm->setPreferSource($preferSource) -->setPreferDist($preferDist); - -$projectInstaller = new ProjectInstaller($directory, $dm, $fs); -$im = $composer->getInstallationManager(); -$im->setOutputProgress(!$noProgress); -$im->addInstaller($projectInstaller); -$im->execute(new InstalledArrayRepository(), [new InstallOperation($package)]); -$im->notifyInstalls($io); - - -$this->suggestedPackagesReporter->addSuggestionsFromPackage($package); - -$installedFromVcs = 'source' === $package->getInstallationSource(); - -$io->writeError('Created project in ' . $directory . ''); -chdir($directory); - -Platform::putEnv('COMPOSER_ROOT_VERSION', $package->getPrettyVersion()); - - -if (isset($signalHandler)) { -$signalHandler->unregister(); -} - -return $installedFromVcs; -} -} diff --git a/composer/src/Composer/Command/DependsCommand.php b/composer/src/Composer/Command/DependsCommand.php deleted file mode 100644 index cf13031d6..000000000 --- a/composer/src/Composer/Command/DependsCommand.php +++ /dev/null @@ -1,58 +0,0 @@ -setName('depends') -->setAliases(['why']) -->setDescription('Shows which packages cause the given package to be installed') -->setDefinition([ -new InputArgument(self::ARGUMENT_PACKAGE, InputArgument::REQUIRED, 'Package to inspect', null, $this->suggestInstalledPackage(true, true)), -new InputOption(self::OPTION_RECURSIVE, 'r', InputOption::VALUE_NONE, 'Recursively resolves up to the root package'), -new InputOption(self::OPTION_TREE, 't', InputOption::VALUE_NONE, 'Prints the results as a nested tree'), -new InputOption('locked', null, InputOption::VALUE_NONE, 'Read dependency information from composer.lock'), -]) -->setHelp( -<<php composer.phar depends composer/composer - -Read more at https://getcomposer.org/doc/03-cli.md#depends-why -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -return parent::doExecute($input, $output); -} -} diff --git a/composer/src/Composer/Command/DiagnoseCommand.php b/composer/src/Composer/Command/DiagnoseCommand.php deleted file mode 100644 index 22b133e46..000000000 --- a/composer/src/Composer/Command/DiagnoseCommand.php +++ /dev/null @@ -1,741 +0,0 @@ -setName('diagnose') -->setDescription('Diagnoses the system to identify common errors') -->setHelp( -<<diagnose command checks common errors to help debugging problems. - -The process exit code will be 1 in case of warnings and 2 for errors. - -Read more at https://getcomposer.org/doc/03-cli.md#diagnose -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$composer = $this->tryComposer(); -$io = $this->getIO(); - -if ($composer) { -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'diagnose', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$io->write('Checking composer.json: ', false); -$this->outputResult($this->checkComposerSchema()); -$this->process = $composer->getLoop()->getProcessExecutor() ?? new ProcessExecutor($io); -} else { -$this->process = new ProcessExecutor($io); -} - -if ($composer) { -$config = $composer->getConfig(); -} else { -$config = Factory::createConfig(); -} - -$config->merge(['config' => ['secure-http' => false]], Config::SOURCE_COMMAND); -$config->prohibitUrlByConfig('http://repo.packagist.org', new NullIO); - -$this->httpDownloader = Factory::createHttpDownloader($io, $config); - -$io->write('Checking platform settings: ', false); -$this->outputResult($this->checkPlatform()); - -$io->write('Checking git settings: ', false); -$this->outputResult($this->checkGit()); - -$io->write('Checking http connectivity to packagist: ', false); -$this->outputResult($this->checkHttp('http', $config)); - -$io->write('Checking https connectivity to packagist: ', false); -$this->outputResult($this->checkHttp('https', $config)); - -$opts = stream_context_get_options(StreamContextFactory::getContext('http://example.org')); -if (!empty($opts['http']['proxy'])) { -$io->write('Checking HTTP proxy: ', false); -$this->outputResult($this->checkHttpProxy()); -} - -if (count($oauth = $config->get('github-oauth')) > 0) { -foreach ($oauth as $domain => $token) { -$io->write('Checking '.$domain.' oauth access: ', false); -$this->outputResult($this->checkGithubOauth($domain, $token)); -} -} else { -$io->write('Checking github.com rate limit: ', false); -try { -$rate = $this->getGithubRateLimit('github.com'); -if (!is_array($rate)) { -$this->outputResult($rate); -} elseif (10 > $rate['remaining']) { -$io->write('WARNING'); -$io->write(sprintf( -'Github has a rate limit on their API. ' -. 'You currently have %u ' -. 'out of %u requests left.' . PHP_EOL -. 'See https://developer.github.com/v3/#rate-limiting and also' . PHP_EOL -. ' https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens', -$rate['remaining'], -$rate['limit'] -)); -} else { -$this->outputResult(true); -} -} catch (\Exception $e) { -if ($e instanceof TransportException && $e->getCode() === 401) { -$this->outputResult('The oauth token for github.com seems invalid, run "composer config --global --unset github-oauth.github.com" to remove it'); -} else { -$this->outputResult($e); -} -} -} - -$io->write('Checking disk free space: ', false); -$this->outputResult($this->checkDiskSpace($config)); - -if (strpos(__FILE__, 'phar:') === 0) { -$io->write('Checking pubkeys: ', false); -$this->outputResult($this->checkPubKeys($config)); - -$io->write('Checking composer version: ', false); -$this->outputResult($this->checkVersion($config)); -} - -$io->write(sprintf('Composer version: %s', Composer::getVersion())); - -$platformOverrides = $config->get('platform') ?: []; -$platformRepo = new PlatformRepository([], $platformOverrides); -$phpPkg = $platformRepo->findPackage('php', '*'); -$phpVersion = $phpPkg->getPrettyVersion(); -if ($phpPkg instanceof CompletePackageInterface && str_contains((string) $phpPkg->getDescription(), 'overridden')) { -$phpVersion .= ' - ' . $phpPkg->getDescription(); -} - -$io->write(sprintf('PHP version: %s', $phpVersion)); - -if (defined('PHP_BINARY')) { -$io->write(sprintf('PHP binary path: %s', PHP_BINARY)); -} - -$io->write('OpenSSL version: ' . (defined('OPENSSL_VERSION_TEXT') ? ''.OPENSSL_VERSION_TEXT.'' : 'missing')); -$io->write('cURL version: ' . $this->getCurlVersion()); - -$finder = new ExecutableFinder; -$hasSystemUnzip = (bool) $finder->find('unzip'); -$bin7zip = ''; -if ($hasSystem7zip = (bool) $finder->find('7z', null, ['C:\Program Files\7-Zip'])) { -$bin7zip = '7z'; -} -if (!Platform::isWindows() && !$hasSystem7zip && $hasSystem7zip = (bool) $finder->find('7zz')) { -$bin7zip = '7zz'; -} - -$io->write( -'zip: ' . (extension_loaded('zip') ? 'extension present' : 'extension not loaded') -. ', ' . ($hasSystemUnzip ? 'unzip present' : 'unzip not available') -. ', ' . ($hasSystem7zip ? '7-Zip present ('.$bin7zip.')' : '7-Zip not available') -. (($hasSystem7zip || $hasSystemUnzip) && !function_exists('proc_open') ? ', proc_open is disabled or not present, unzip/7-z will not be usable' : '') -); - -return $this->exitCode; -} - - - - -private function checkComposerSchema() -{ -$validator = new ConfigValidator($this->getIO()); -[$errors, , $warnings] = $validator->validate(Factory::getComposerFile()); - -if ($errors || $warnings) { -$messages = [ -'error' => $errors, -'warning' => $warnings, -]; - -$output = ''; -foreach ($messages as $style => $msgs) { -foreach ($msgs as $msg) { -$output .= '<' . $style . '>' . $msg . '' . PHP_EOL; -} -} - -return rtrim($output); -} - -return true; -} - -private function checkGit(): string -{ -if (!function_exists('proc_open')) { -return 'proc_open is not available, git cannot be used'; -} - -$this->process->execute('git config color.ui', $output); -if (strtolower(trim($output)) === 'always') { -return 'Your git color.ui setting is set to always, this is known to create issues. Use "git config --global color.ui true" to set it correctly.'; -} - -$gitVersion = Git::getVersion($this->process); -if (null === $gitVersion) { -return 'No git process found'; -} - -if (version_compare('2.24.0', $gitVersion, '>')) { -return 'Your git version ('.$gitVersion.') is too old and possibly will cause issues. Please upgrade to git 2.24 or above'; -} - -return 'OK git version '.$gitVersion.''; -} - - - - -private function checkHttp(string $proto, Config $config) -{ -$result = $this->checkConnectivity(); -if ($result !== true) { -return $result; -} - -$result = []; -if ($proto === 'https' && $config->get('disable-tls') === true) { -$tlsWarning = 'Composer is configured to disable SSL/TLS protection. This will leave remote HTTPS requests vulnerable to Man-In-The-Middle attacks.'; -} - -try { -$this->httpDownloader->get($proto . '://repo.packagist.org/packages.json'); -} catch (TransportException $e) { -$hints = HttpDownloader::getExceptionHints($e); -if (null !== $hints && count($hints) > 0) { -foreach ($hints as $hint) { -$result[] = $hint; -} -} - -$result[] = '[' . get_class($e) . '] ' . $e->getMessage() . ''; -} - -if (isset($tlsWarning)) { -$result[] = $tlsWarning; -} - -if (count($result) > 0) { -return $result; -} - -return true; -} - - - - -private function checkHttpProxy() -{ -$result = $this->checkConnectivity(); -if ($result !== true) { -return $result; -} - -$protocol = extension_loaded('openssl') ? 'https' : 'http'; -try { -$json = $this->httpDownloader->get($protocol . '://repo.packagist.org/packages.json')->decodeJson(); -$hash = reset($json['provider-includes']); -$hash = $hash['sha256']; -$path = str_replace('%hash%', $hash, key($json['provider-includes'])); -$provider = $this->httpDownloader->get($protocol . '://repo.packagist.org/'.$path)->getBody(); - -if (hash('sha256', $provider) !== $hash) { -return 'It seems that your proxy is modifying http traffic on the fly'; -} -} catch (\Exception $e) { -return $e; -} - -return true; -} - - - - -private function checkGithubOauth(string $domain, string $token) -{ -$result = $this->checkConnectivity(); -if ($result !== true) { -return $result; -} - -$this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); -try { -$url = $domain === 'github.com' ? 'https://api.'.$domain.'/' : 'https://'.$domain.'/api/v3/'; - -$this->httpDownloader->get($url, [ -'retry-auth-failure' => false, -]); - -return true; -} catch (\Exception $e) { -if ($e instanceof TransportException && $e->getCode() === 401) { -return 'The oauth token for '.$domain.' seems invalid, run "composer config --global --unset github-oauth.'.$domain.'" to remove it'; -} - -return $e; -} -} - - - - - - -private function getGithubRateLimit(string $domain, ?string $token = null) -{ -$result = $this->checkConnectivity(); -if ($result !== true) { -return $result; -} - -if ($token) { -$this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); -} - -$url = $domain === 'github.com' ? 'https://api.'.$domain.'/rate_limit' : 'https://'.$domain.'/api/rate_limit'; -$data = $this->httpDownloader->get($url, ['retry-auth-failure' => false])->decodeJson(); - -return $data['resources']['core']; -} - - - - -private function checkDiskSpace(Config $config) -{ -if (!function_exists('disk_free_space')) { -return true; -} - -$minSpaceFree = 1024 * 1024; -if ((($df = @disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) -|| (($df = @disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) -) { -return 'The disk hosting '.$dir.' is full'; -} - -return true; -} - - - - -private function checkPubKeys(Config $config) -{ -$home = $config->get('home'); -$errors = []; -$io = $this->getIO(); - -if (file_exists($home.'/keys.tags.pub') && file_exists($home.'/keys.dev.pub')) { -$io->write(''); -} - -if (file_exists($home.'/keys.tags.pub')) { -$io->write('Tags Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.tags.pub')); -} else { -$errors[] = 'Missing pubkey for tags verification'; -} - -if (file_exists($home.'/keys.dev.pub')) { -$io->write('Dev Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.dev.pub')); -} else { -$errors[] = 'Missing pubkey for dev verification'; -} - -if ($errors) { -$errors[] = 'Run composer self-update --update-keys to set them up'; -} - -return $errors ?: true; -} - - - - -private function checkVersion(Config $config) -{ -$result = $this->checkConnectivity(); -if ($result !== true) { -return $result; -} - -$versionsUtil = new Versions($config, $this->httpDownloader); -try { -$latest = $versionsUtil->getLatest(); -} catch (\Exception $e) { -return $e; -} - -if (Composer::VERSION !== $latest['version'] && Composer::VERSION !== '@package_version@') { -return 'You are not running the latest '.$versionsUtil->getChannel().' version, run `composer self-update` to update ('.Composer::VERSION.' => '.$latest['version'].')'; -} - -return true; -} - -private function getCurlVersion(): string -{ -if (extension_loaded('curl')) { -if (!HttpDownloader::isCurlEnabled()) { -return 'disabled via disable_functions, using php streams fallback, which reduces performance'; -} - -$version = curl_version(); - -return ''.$version['version'].' '. -'libz '.(!empty($version['libz_version']) ? $version['libz_version'] : 'missing').' '. -'ssl '.($version['ssl_version'] ?? 'missing').''; -} - -return 'missing, using php streams fallback, which reduces performance'; -} - - - - -private function outputResult($result): void -{ -$io = $this->getIO(); -if (true === $result) { -$io->write('OK'); - -return; -} - -$hadError = false; -$hadWarning = false; -if ($result instanceof \Exception) { -$result = '['.get_class($result).'] '.$result->getMessage().''; -} - -if (!$result) { - -$hadError = true; -} else { -if (!is_array($result)) { -$result = [$result]; -} -foreach ($result as $message) { -if (false !== strpos($message, '')) { -$hadError = true; -} elseif (false !== strpos($message, '')) { -$hadWarning = true; -} -} -} - -if ($hadError) { -$io->write('FAIL'); -$this->exitCode = max($this->exitCode, 2); -} elseif ($hadWarning) { -$io->write('WARNING'); -$this->exitCode = max($this->exitCode, 1); -} - -if ($result) { -foreach ($result as $message) { -$io->write($message); -} -} -} - - - - -private function checkPlatform() -{ -$output = ''; -$out = static function ($msg, $style) use (&$output): void { -$output .= '<'.$style.'>'.$msg.''.PHP_EOL; -}; - - -$errors = []; -$warnings = []; -$displayIniMessage = false; - -$iniMessage = PHP_EOL.PHP_EOL.IniHelper::getMessage(); -$iniMessage .= PHP_EOL.'If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.'; - -if (!function_exists('json_decode')) { -$errors['json'] = true; -} - -if (!extension_loaded('Phar')) { -$errors['phar'] = true; -} - -if (!extension_loaded('filter')) { -$errors['filter'] = true; -} - -if (!extension_loaded('hash')) { -$errors['hash'] = true; -} - -if (!extension_loaded('iconv') && !extension_loaded('mbstring')) { -$errors['iconv_mbstring'] = true; -} - -if (!filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { -$errors['allow_url_fopen'] = true; -} - -if (extension_loaded('ionCube Loader') && ioncube_loader_iversion() < 40009) { -$errors['ioncube'] = ioncube_loader_version(); -} - -if (PHP_VERSION_ID < 70205) { -$errors['php'] = PHP_VERSION; -} - -if (!extension_loaded('openssl')) { -$errors['openssl'] = true; -} - -if (extension_loaded('openssl') && OPENSSL_VERSION_NUMBER < 0x1000100f) { -$warnings['openssl_version'] = true; -} - -if (!defined('HHVM_VERSION') && !extension_loaded('apcu') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) { -$warnings['apc_cli'] = true; -} - -if (!extension_loaded('zlib')) { -$warnings['zlib'] = true; -} - -ob_start(); -phpinfo(INFO_GENERAL); -$phpinfo = ob_get_clean(); -if (is_string($phpinfo) && Preg::isMatchStrictGroups('{Configure Command(?: *| *=> *)(.*?)(?:|$)}m', $phpinfo, $match)) { -$configure = $match[1]; - -if (str_contains($configure, '--enable-sigchild')) { -$warnings['sigchild'] = true; -} - -if (str_contains($configure, '--with-curlwrappers')) { -$warnings['curlwrappers'] = true; -} -} - -if (filter_var(ini_get('xdebug.profiler_enabled'), FILTER_VALIDATE_BOOLEAN)) { -$warnings['xdebug_profile'] = true; -} elseif (XdebugHandler::isXdebugActive()) { -$warnings['xdebug_loaded'] = true; -} - -if (defined('PHP_WINDOWS_VERSION_BUILD') -&& (version_compare(PHP_VERSION, '7.2.23', '<') -|| (version_compare(PHP_VERSION, '7.3.0', '>=') -&& version_compare(PHP_VERSION, '7.3.10', '<')))) { -$warnings['onedrive'] = PHP_VERSION; -} - -if (!empty($errors)) { -foreach ($errors as $error => $current) { -switch ($error) { -case 'json': -$text = PHP_EOL."The json extension is missing.".PHP_EOL; -$text .= "Install it or recompile php without --disable-json"; -break; - -case 'phar': -$text = PHP_EOL."The phar extension is missing.".PHP_EOL; -$text .= "Install it or recompile php without --disable-phar"; -break; - -case 'filter': -$text = PHP_EOL."The filter extension is missing.".PHP_EOL; -$text .= "Install it or recompile php without --disable-filter"; -break; - -case 'hash': -$text = PHP_EOL."The hash extension is missing.".PHP_EOL; -$text .= "Install it or recompile php without --disable-hash"; -break; - -case 'iconv_mbstring': -$text = PHP_EOL."The iconv OR mbstring extension is required and both are missing.".PHP_EOL; -$text .= "Install either of them or recompile php without --disable-iconv"; -break; - -case 'php': -$text = PHP_EOL."Your PHP ({$current}) is too old, you must upgrade to PHP 7.2.5 or higher."; -break; - -case 'allow_url_fopen': -$text = PHP_EOL."The allow_url_fopen setting is incorrect.".PHP_EOL; -$text .= "Add the following to the end of your `php.ini`:".PHP_EOL; -$text .= " allow_url_fopen = On"; -$displayIniMessage = true; -break; - -case 'ioncube': -$text = PHP_EOL."Your ionCube Loader extension ($current) is incompatible with Phar files.".PHP_EOL; -$text .= "Upgrade to ionCube 4.0.9 or higher or remove this line (path may be different) from your `php.ini` to disable it:".PHP_EOL; -$text .= " zend_extension = /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so"; -$displayIniMessage = true; -break; - -case 'openssl': -$text = PHP_EOL."The openssl extension is missing, which means that secure HTTPS transfers are impossible.".PHP_EOL; -$text .= "If possible you should enable it or recompile php with --with-openssl"; -break; - -default: -throw new \InvalidArgumentException(sprintf("DiagnoseCommand: Unknown error type \"%s\". Please report at https://github.com/composer/composer/issues/new.", $error)); -} -$out($text, 'error'); -} - -$output .= PHP_EOL; -} - -if (!empty($warnings)) { -foreach ($warnings as $warning => $current) { -switch ($warning) { -case 'apc_cli': -$text = "The apc.enable_cli setting is incorrect.".PHP_EOL; -$text .= "Add the following to the end of your `php.ini`:".PHP_EOL; -$text .= " apc.enable_cli = Off"; -$displayIniMessage = true; -break; - -case 'zlib': -$text = 'The zlib extension is not loaded, this can slow down Composer a lot.'.PHP_EOL; -$text .= 'If possible, enable it or recompile php with --with-zlib'.PHP_EOL; -$displayIniMessage = true; -break; - -case 'sigchild': -$text = "PHP was compiled with --enable-sigchild which can cause issues on some platforms.".PHP_EOL; -$text .= "Recompile it without this flag if possible, see also:".PHP_EOL; -$text .= " https://bugs.php.net/bug.php?id=22999"; -break; - -case 'curlwrappers': -$text = "PHP was compiled with --with-curlwrappers which will cause issues with HTTP authentication and GitHub.".PHP_EOL; -$text .= " Recompile it without this flag if possible"; -break; - -case 'openssl_version': - -$opensslVersion = strstr(trim(strstr(OPENSSL_VERSION_TEXT, ' ')), ' ', true); -$opensslVersion = $opensslVersion ?: OPENSSL_VERSION_TEXT; - -$text = "The OpenSSL library ({$opensslVersion}) used by PHP does not support TLSv1.2 or TLSv1.1.".PHP_EOL; -$text .= "If possible you should upgrade OpenSSL to version 1.0.1 or above."; -break; - -case 'xdebug_loaded': -$text = "The xdebug extension is loaded, this can slow down Composer a little.".PHP_EOL; -$text .= " Disabling it when using Composer is recommended."; -break; - -case 'xdebug_profile': -$text = "The xdebug.profiler_enabled setting is enabled, this can slow down Composer a lot.".PHP_EOL; -$text .= "Add the following to the end of your `php.ini` to disable it:".PHP_EOL; -$text .= " xdebug.profiler_enabled = 0"; -$displayIniMessage = true; -break; - -case 'onedrive': -$text = "The Windows OneDrive folder is not supported on PHP versions below 7.2.23 and 7.3.10.".PHP_EOL; -$text .= "Upgrade your PHP ({$current}) to use this location with Composer.".PHP_EOL; -break; - -default: -throw new \InvalidArgumentException(sprintf("DiagnoseCommand: Unknown warning type \"%s\". Please report at https://github.com/composer/composer/issues/new.", $warning)); -} -$out($text, 'comment'); -} -} - -if ($displayIniMessage) { -$out($iniMessage, 'comment'); -} - -return count($warnings) === 0 && count($errors) === 0 ? true : $output; -} - - - - - - -private function checkConnectivity() -{ -if (!ini_get('allow_url_fopen')) { -return 'Skipped because allow_url_fopen is missing.'; -} - -return true; -} -} diff --git a/composer/src/Composer/Command/DumpAutoloadCommand.php b/composer/src/Composer/Command/DumpAutoloadCommand.php deleted file mode 100644 index 0a9d70475..000000000 --- a/composer/src/Composer/Command/DumpAutoloadCommand.php +++ /dev/null @@ -1,116 +0,0 @@ -setName('dump-autoload') -->setAliases(['dumpautoload']) -->setDescription('Dumps the autoloader') -->setDefinition([ -new InputOption('optimize', 'o', InputOption::VALUE_NONE, 'Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.'), -new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize`.'), -new InputOption('apcu', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), -new InputOption('apcu-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu'), -new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables autoload-dev rules. Composer will by default infer this automatically according to the last install or update --no-dev state.'), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables autoload-dev rules. Composer will by default infer this automatically according to the last install or update --no-dev state.'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), -new InputOption('strict-psr', null, InputOption::VALUE_NONE, 'Return a failed status code (1) if PSR-4 or PSR-0 mapping errors are present. Requires --optimize to work.'), -]) -->setHelp( -<<php composer.phar dump-autoload - -Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$composer = $this->requireComposer(); - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'dump-autoload', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$installationManager = $composer->getInstallationManager(); -$localRepo = $composer->getRepositoryManager()->getLocalRepository(); -$package = $composer->getPackage(); -$config = $composer->getConfig(); - -$optimize = $input->getOption('optimize') || $config->get('optimize-autoloader'); -$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); -$apcuPrefix = $input->getOption('apcu-prefix'); -$apcu = $apcuPrefix !== null || $input->getOption('apcu') || $config->get('apcu-autoloader'); - -if ($input->getOption('strict-psr') && !$optimize) { -throw new \InvalidArgumentException('--strict-psr mode only works with optimized autoloader, use --optimize if you want a strict return value.'); -} - -if ($authoritative) { -$this->getIO()->write('Generating optimized autoload files (authoritative)'); -} elseif ($optimize) { -$this->getIO()->write('Generating optimized autoload files'); -} else { -$this->getIO()->write('Generating autoload files'); -} - -$generator = $composer->getAutoloadGenerator(); -if ($input->getOption('no-dev')) { -$generator->setDevMode(false); -} -if ($input->getOption('dev')) { -if ($input->getOption('no-dev')) { -throw new \InvalidArgumentException('You can not use both --no-dev and --dev as they conflict with each other.'); -} -$generator->setDevMode(true); -} -$generator->setClassMapAuthoritative($authoritative); -$generator->setRunScripts(true); -$generator->setApcu($apcu, $apcuPrefix); -$generator->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)); -$classMap = $generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize); -$numberOfClasses = count($classMap); - -if ($authoritative) { -$this->getIO()->write('Generated optimized autoload files (authoritative) containing '. $numberOfClasses .' classes'); -} elseif ($optimize) { -$this->getIO()->write('Generated optimized autoload files containing '. $numberOfClasses .' classes'); -} else { -$this->getIO()->write('Generated autoload files'); -} - -if ($input->getOption('strict-psr') && count($classMap->getPsrViolations()) > 0) { -return 1; -} - -return 0; -} -} diff --git a/composer/src/Composer/Command/ExecCommand.php b/composer/src/Composer/Command/ExecCommand.php deleted file mode 100644 index 48494aa9d..000000000 --- a/composer/src/Composer/Command/ExecCommand.php +++ /dev/null @@ -1,153 +0,0 @@ -setName('exec') -->setDescription('Executes a vendored binary/script') -->setDefinition([ -new InputOption('list', 'l', InputOption::VALUE_NONE), -new InputArgument('binary', InputArgument::OPTIONAL, 'The binary to run, e.g. phpunit', null, function () { -return $this->getBinaries(false); -}), -new InputArgument( -'args', -InputArgument::IS_ARRAY | InputArgument::OPTIONAL, -'Arguments to pass to the binary. Use -- to separate from composer arguments' -), -]) -->setHelp( -<<getBinaries(false); -if (count($binaries) === 0) { -return; -} - -if ($input->getArgument('binary') !== null || $input->getOption('list')) { -return; -} - -$io = $this->getIO(); - -$binary = $io->select( -'Binary to run: ', -$binaries, -'', -1, -'Invalid binary name "%s"' -); - -$input->setArgument('binary', $binaries[$binary]); -} - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$composer = $this->requireComposer(); -if ($input->getOption('list') || null === $input->getArgument('binary')) { -$bins = $this->getBinaries(true); -if ([] === $bins) { -$binDir = $composer->getConfig()->get('bin-dir'); - -throw new \RuntimeException("No binaries found in composer.json or in bin-dir ($binDir)"); -} - -$this->getIO()->write( -<<Available binaries: -EOT -); - -foreach ($bins as $bin) { -$this->getIO()->write( -<<- $bin -EOT -); -} - -return 0; -} - -$binary = $input->getArgument('binary'); - -$dispatcher = $composer->getEventDispatcher(); -$dispatcher->addListener('__exec_command', $binary); - - - - -if (getcwd() !== $this->getApplication()->getInitialWorkingDirectory() && $this->getApplication()->getInitialWorkingDirectory() !== false) { -try { -chdir($this->getApplication()->getInitialWorkingDirectory()); -} catch (\Exception $e) { -throw new \RuntimeException('Could not switch back to working directory "'.$this->getApplication()->getInitialWorkingDirectory().'"', 0, $e); -} -} - -return $dispatcher->dispatchScript('__exec_command', true, $input->getArgument('args')); -} - - - - -private function getBinaries(bool $forDisplay): array -{ -$composer = $this->requireComposer(); -$binDir = $composer->getConfig()->get('bin-dir'); -$bins = glob($binDir . '/*'); -$localBins = $composer->getPackage()->getBinaries(); -if ($forDisplay) { -$localBins = array_map(static function ($e) { -return "$e (local)"; -}, $localBins); -} - -$binaries = []; -foreach (array_merge($bins, $localBins) as $bin) { - -if (isset($previousBin) && $bin === $previousBin.'.bat') { -continue; -} - -$previousBin = $bin; -$binaries[] = basename($bin); -} - -return $binaries; -} -} diff --git a/composer/src/Composer/Command/FundCommand.php b/composer/src/Composer/Command/FundCommand.php deleted file mode 100644 index 4f526135a..000000000 --- a/composer/src/Composer/Command/FundCommand.php +++ /dev/null @@ -1,151 +0,0 @@ -setName('fund') -->setDescription('Discover how to help fund the maintenance of your dependencies') -->setDefinition([ -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['text', 'json']), -]) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$composer = $this->requireComposer(); - -$repo = $composer->getRepositoryManager()->getLocalRepository(); -$remoteRepos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); -$fundings = []; - -$packagesToLoad = []; -foreach ($repo->getPackages() as $package) { -if ($package instanceof AliasPackage) { -continue; -} -$packagesToLoad[$package->getName()] = new MatchAllConstraint(); -} - - -$result = $remoteRepos->loadPackages($packagesToLoad, ['dev' => BasePackage::STABILITY_DEV], []); - - -foreach ($result['packages'] as $package) { -if ( -!$package instanceof AliasPackage -&& $package instanceof CompletePackageInterface -&& $package->isDefaultBranch() -&& $package->getFunding() -&& isset($packagesToLoad[$package->getName()]) -) { -$fundings = $this->insertFundingData($fundings, $package); -unset($packagesToLoad[$package->getName()]); -} -} - - -foreach ($repo->getPackages() as $package) { -if ($package instanceof AliasPackage || !isset($packagesToLoad[$package->getName()])) { -continue; -} - -if ($package instanceof CompletePackageInterface && $package->getFunding()) { -$fundings = $this->insertFundingData($fundings, $package); -} -} - -ksort($fundings); - -$io = $this->getIO(); - -$format = $input->getOption('format'); -if (!in_array($format, ['text', 'json'])) { -$io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); - -return 1; -} - -if ($fundings && $format === 'text') { -$prev = null; - -$io->write('The following packages were found in your dependencies which publish funding information:'); - -foreach ($fundings as $vendor => $links) { -$io->write(''); -$io->write(sprintf("%s", $vendor)); -foreach ($links as $url => $packages) { -$line = sprintf(' %s', implode(', ', $packages)); - -if ($prev !== $line) { -$io->write($line); -$prev = $line; -} - -$io->write(sprintf(' %s', OutputFormatter::escape($url), $url)); -} -} - -$io->write(""); -$io->write("Please consider following these links and sponsoring the work of package authors!"); -$io->write("Thank you!"); -} elseif ($format === 'json') { -$io->write(JsonFile::encode($fundings)); -} else { -$io->write("No funding links were found in your package dependencies. This doesn't mean they don't need your support!"); -} - -return 0; -} - - - - - -private function insertFundingData(array $fundings, CompletePackageInterface $package): array -{ -foreach ($package->getFunding() as $fundingOption) { -[$vendor, $packageName] = explode('/', $package->getPrettyName()); - -if (empty($fundingOption['url'])) { -continue; -} -$url = $fundingOption['url']; -if (!empty($fundingOption['type']) && $fundingOption['type'] === 'github' && Preg::isMatch('{^https://github.com/([^/]+)$}', $url, $match)) { -$url = 'https://github.com/sponsors/'.$match[1]; -} -$fundings[$vendor][$url][] = $packageName; -} - -return $fundings; -} -} diff --git a/composer/src/Composer/Command/GlobalCommand.php b/composer/src/Composer/Command/GlobalCommand.php deleted file mode 100644 index bbb4d2d8f..000000000 --- a/composer/src/Composer/Command/GlobalCommand.php +++ /dev/null @@ -1,165 +0,0 @@ -getApplication(); -if ($input->mustSuggestArgumentValuesFor('command-name')) { -$suggestions->suggestValues(array_values(array_filter(array_map(static function (Command $command) { -return $command->isHidden() ? null : $command->getName(); -}, $application->all())))); - -return; -} - -if ($application->has($commandName = $input->getArgument('command-name'))) { -$input = $this->prepareSubcommandInput($input, true); -$input = CompletionInput::fromString($input->__toString(), 2); -$command = $application->find($commandName); -$command->mergeApplicationDefinition(); - -$input->bind($command->getDefinition()); -$command->complete($input, $suggestions); -} -} - -protected function configure(): void -{ -$this -->setName('global') -->setDescription('Allows running commands in the global composer dir ($COMPOSER_HOME)') -->setDefinition([ -new InputArgument('command-name', InputArgument::REQUIRED, ''), -new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), -]) -->setHelp( -<<\AppData\Roaming\Composer on Windows -and /home//.composer on unix systems. - -If your system uses freedesktop.org standards, then it will first check -XDG_CONFIG_HOME or default to /home//.config/composer - -Note: This path may vary depending on customizations to bin-dir in -composer.json or the environmental variable COMPOSER_BIN_DIR. - -Read more at https://getcomposer.org/doc/03-cli.md#global -EOT -) -; -} - - - - -public function run(InputInterface $input, OutputInterface $output): int -{ - -if (!method_exists($input, '__toString')) { -throw new \LogicException('Expected an Input instance that is stringable, got '.get_class($input)); -} - - -$tokens = Preg::split('{\s+}', $input->__toString()); -$args = []; -foreach ($tokens as $token) { -if ($token && $token[0] !== '-') { -$args[] = $token; -if (count($args) >= 2) { -break; -} -} -} - - -if (count($args) < 2) { -return parent::run($input, $output); -} - -$input = $this->prepareSubcommandInput($input); - -return $this->getApplication()->run($input, $output); -} - -private function prepareSubcommandInput(InputInterface $input, bool $quiet = false): StringInput -{ - -if (!method_exists($input, '__toString')) { -throw new \LogicException('Expected an Input instance that is stringable, got '.get_class($input)); -} - - -if (Platform::getEnv('COMPOSER')) { -Platform::clearEnv('COMPOSER'); -} - - -$config = Factory::createConfig(); -$home = $config->get('home'); - -if (!is_dir($home)) { -$fs = new Filesystem(); -$fs->ensureDirectoryExists($home); -if (!is_dir($home)) { -throw new \RuntimeException('Could not create home directory'); -} -} - -try { -chdir($home); -} catch (\Exception $e) { -throw new \RuntimeException('Could not switch to home directory "'.$home.'"', 0, $e); -} -if (!$quiet) { -$this->getIO()->writeError('Changed current directory to '.$home.''); -} - - -$input = new StringInput(Preg::replace('{\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\b}', '', $input->__toString(), 1)); -$this->getApplication()->resetComposer(); - -return $input; -} - - - - -public function isProxyCommand(): bool -{ -return true; -} -} diff --git a/composer/src/Composer/Command/HomeCommand.php b/composer/src/Composer/Command/HomeCommand.php deleted file mode 100644 index 78e16178d..000000000 --- a/composer/src/Composer/Command/HomeCommand.php +++ /dev/null @@ -1,167 +0,0 @@ -setName('browse') -->setAliases(['home']) -->setDescription('Opens the package\'s repository URL or homepage in your browser') -->setDefinition([ -new InputArgument('packages', InputArgument::IS_ARRAY, 'Package(s) to browse to.', null, $this->suggestInstalledPackage()), -new InputOption('homepage', 'H', InputOption::VALUE_NONE, 'Open the homepage instead of the repository URL.'), -new InputOption('show', 's', InputOption::VALUE_NONE, 'Only show the homepage or repository URL.'), -]) -->setHelp( -<<initializeRepos(); -$io = $this->getIO(); -$return = 0; - -$packages = $input->getArgument('packages'); -if (count($packages) === 0) { -$io->writeError('No package specified, opening homepage for the root package'); -$packages = [$this->requireComposer()->getPackage()->getName()]; -} - -foreach ($packages as $packageName) { -$handled = false; -$packageExists = false; -foreach ($repos as $repo) { -foreach ($repo->findPackages($packageName) as $package) { -$packageExists = true; -if ($package instanceof CompletePackageInterface && $this->handlePackage($package, $input->getOption('homepage'), $input->getOption('show'))) { -$handled = true; -break 2; -} -} -} - -if (!$packageExists) { -$return = 1; -$io->writeError('Package '.$packageName.' not found'); -} - -if (!$handled) { -$return = 1; -$io->writeError(''.($input->getOption('homepage') ? 'Invalid or missing homepage' : 'Invalid or missing repository URL').' for '.$packageName.''); -} -} - -return $return; -} - -private function handlePackage(CompletePackageInterface $package, bool $showHomepage, bool $showOnly): bool -{ -$support = $package->getSupport(); -$url = $support['source'] ?? $package->getSourceUrl(); -if (!$url || $showHomepage) { -$url = $package->getHomepage(); -} - -if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) { -return false; -} - -if ($showOnly) { -$this->getIO()->write(sprintf('%s', $url)); -} else { -$this->openBrowser($url); -} - -return true; -} - - - - -private function openBrowser(string $url): void -{ -$url = ProcessExecutor::escape($url); - -$process = new ProcessExecutor($this->getIO()); -if (Platform::isWindows()) { -$process->execute('start "web" explorer ' . $url, $output); - -return; -} - -$linux = $process->execute('which xdg-open', $output); -$osx = $process->execute('which open', $output); - -if (0 === $linux) { -$process->execute('xdg-open ' . $url, $output); -} elseif (0 === $osx) { -$process->execute('open ' . $url, $output); -} else { -$this->getIO()->writeError('No suitable browser opening command found, open yourself: ' . $url); -} -} - - - - - - - - -private function initializeRepos(): array -{ -$composer = $this->tryComposer(); - -if ($composer) { -return array_merge( -[new RootPackageRepository(clone $composer->getPackage())], -[$composer->getRepositoryManager()->getLocalRepository()], -$composer->getRepositoryManager()->getRepositories() -); -} - -return RepositoryFactory::defaultReposWithDefaultManager($this->getIO()); -} -} diff --git a/composer/src/Composer/Command/InitCommand.php b/composer/src/Composer/Command/InitCommand.php deleted file mode 100644 index db547eaaf..000000000 --- a/composer/src/Composer/Command/InitCommand.php +++ /dev/null @@ -1,636 +0,0 @@ -setName('init') -->setDescription('Creates a basic composer.json file in current directory') -->setDefinition([ -new InputOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the package'), -new InputOption('description', null, InputOption::VALUE_REQUIRED, 'Description of package'), -new InputOption('author', null, InputOption::VALUE_REQUIRED, 'Author name of package'), -new InputOption('type', null, InputOption::VALUE_OPTIONAL, 'Type of package (e.g. library, project, metapackage, composer-plugin)'), -new InputOption('homepage', null, InputOption::VALUE_REQUIRED, 'Homepage of package'), -new InputOption('require', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"', null, $this->suggestAvailablePackageInclPlatform()), -new InputOption('require-dev', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require for development with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"', null, $this->suggestAvailablePackageInclPlatform()), -new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum stability (empty or one of: '.implode(', ', array_keys(BasePackage::$stabilities)).')'), -new InputOption('license', 'l', InputOption::VALUE_REQUIRED, 'License of package'), -new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories, either by URL or using JSON arrays'), -new InputOption('autoload', 'a', InputOption::VALUE_REQUIRED, 'Add PSR-4 autoload mapping. Maps your package\'s namespace to the provided directory. (Expects a relative path, e.g. src/)'), -]) -->setHelp( -<<init command creates a basic composer.json file -in the current directory. - -php composer.phar init - -Read more at https://getcomposer.org/doc/03-cli.md#init -EOT -) -; -} - - - - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$io = $this->getIO(); - -$allowlist = ['name', 'description', 'author', 'type', 'homepage', 'require', 'require-dev', 'stability', 'license', 'autoload']; -$options = array_filter(array_intersect_key($input->getOptions(), array_flip($allowlist))); - -if (isset($options['name']) && !Preg::isMatch('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $options['name'])) { -throw new \InvalidArgumentException( -'The package name '.$options['name'].' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' -); -} - -if (isset($options['author'])) { -$options['authors'] = $this->formatAuthors($options['author']); -unset($options['author']); -} - -$repositories = $input->getOption('repository'); -if (count($repositories) > 0) { -$config = Factory::createConfig($io); -foreach ($repositories as $repo) { -$options['repositories'][] = RepositoryFactory::configFromString($io, $config, $repo, true); -} -} - -if (isset($options['stability'])) { -$options['minimum-stability'] = $options['stability']; -unset($options['stability']); -} - -$options['require'] = isset($options['require']) ? $this->formatRequirements($options['require']) : new \stdClass; -if ([] === $options['require']) { -$options['require'] = new \stdClass; -} - -if (isset($options['require-dev'])) { -$options['require-dev'] = $this->formatRequirements($options['require-dev']); -if ([] === $options['require-dev']) { -$options['require-dev'] = new \stdClass; -} -} - - -$autoloadPath = null; -if (isset($options['autoload'])) { -$autoloadPath = $options['autoload']; -$namespace = $this->namespaceFromPackageName((string) $input->getOption('name')); -$options['autoload'] = (object) [ -'psr-4' => [ -$namespace . '\\' => $autoloadPath, -], -]; -} - -$file = new JsonFile(Factory::getComposerFile()); -$json = JsonFile::encode($options); - -if ($input->isInteractive()) { -$io->writeError(['', $json, '']); -if (!$io->askConfirmation('Do you confirm generation [yes]? ')) { -$io->writeError('Command aborted'); - -return 1; -} -} else { -if (json_encode($options) === '{"require":{}}') { -throw new \RuntimeException('You have to run this command in interactive mode, or specify at least some data using --name, --require, etc.'); -} - -$io->writeError('Writing '.$file->getPath()); -} - -$file->write($options); -try { -$file->validateSchema(JsonFile::LAX_SCHEMA); -} catch (JsonValidationException $e) { -$io->writeError('Schema validation error, aborting'); -$errors = ' - ' . implode(PHP_EOL . ' - ', $e->getErrors()); -$io->writeError($e->getMessage() . ':' . PHP_EOL . $errors); -Silencer::call('unlink', $file->getPath()); - -return 1; -} - - -if ($autoloadPath) { -$filesystem = new Filesystem(); -$filesystem->ensureDirectoryExists($autoloadPath); - - -if (!$this->hasDependencies($options)) { -$this->runDumpAutoloadCommand($output); -} -} - -if ($input->isInteractive() && is_dir('.git')) { -$ignoreFile = realpath('.gitignore'); - -if (false === $ignoreFile) { -$ignoreFile = realpath('.') . '/.gitignore'; -} - -if (!$this->hasVendorIgnore($ignoreFile)) { -$question = 'Would you like the vendor directory added to your .gitignore [yes]? '; - -if ($io->askConfirmation($question)) { -$this->addVendorIgnore($ignoreFile); -} -} -} - -$question = 'Would you like to install dependencies now [yes]? '; -if ($input->isInteractive() && $this->hasDependencies($options) && $io->askConfirmation($question)) { -$this->updateDependencies($output); -} - - -if ($autoloadPath) { -$namespace = $this->namespaceFromPackageName((string) $input->getOption('name')); - -$io->writeError('PSR-4 autoloading configured. Use "namespace '.$namespace.';" in '.$autoloadPath); -$io->writeError('Include the Composer autoloader with: require \'vendor/autoload.php\';'); -} - -return 0; -} - - - - - - -protected function interact(InputInterface $input, OutputInterface $output) -{ -$git = $this->getGitConfig(); -$io = $this->getIO(); - -$formatter = $this->getHelperSet()->get('formatter'); - - -$repositories = $input->getOption('repository'); -if (count($repositories) > 0) { -$config = Factory::createConfig($io); -$io->loadConfiguration($config); -$repoManager = RepositoryFactory::manager($io, $config); - -$repos = [new PlatformRepository]; -$createDefaultPackagistRepo = true; -foreach ($repositories as $repo) { -$repoConfig = RepositoryFactory::configFromString($io, $config, $repo, true); -if ( -(isset($repoConfig['packagist']) && $repoConfig === ['packagist' => false]) -|| (isset($repoConfig['packagist.org']) && $repoConfig === ['packagist.org' => false]) -) { -$createDefaultPackagistRepo = false; -continue; -} -$repos[] = RepositoryFactory::createRepo($io, $config, $repoConfig, $repoManager); -} - -if ($createDefaultPackagistRepo) { -$repos[] = RepositoryFactory::createRepo($io, $config, [ -'type' => 'composer', -'url' => 'https://repo.packagist.org', -], $repoManager); -} - -$this->repos = new CompositeRepository($repos); -unset($repos, $config, $repositories); -} - -$io->writeError([ -'', -$formatter->formatBlock('Welcome to the Composer config generator', 'bg=blue;fg=white', true), -'', -]); - - -$io->writeError([ -'', -'This command will guide you through creating your composer.json config.', -'', -]); - -$cwd = realpath("."); - -$name = $input->getOption('name'); -if (null === $name) { -$name = basename($cwd); -$name = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); -$name = strtolower($name); -if (!empty($_SERVER['COMPOSER_DEFAULT_VENDOR'])) { -$name = $_SERVER['COMPOSER_DEFAULT_VENDOR'] . '/' . $name; -} elseif (isset($git['github.user'])) { -$name = $git['github.user'] . '/' . $name; -} elseif (!empty($_SERVER['USERNAME'])) { -$name = $_SERVER['USERNAME'] . '/' . $name; -} elseif (!empty($_SERVER['USER'])) { -$name = $_SERVER['USER'] . '/' . $name; -} elseif (get_current_user()) { -$name = get_current_user() . '/' . $name; -} else { - -$name .= '/' . $name; -} -$name = strtolower($name); -} - -$name = $io->askAndValidate( -'Package name (/) ['.$name.']: ', -static function ($value) use ($name) { -if (null === $value) { -return $name; -} - -if (!Preg::isMatch('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $value)) { -throw new \InvalidArgumentException( -'The package name '.$value.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' -); -} - -return $value; -}, -null, -$name -); -$input->setOption('name', $name); - -$description = $input->getOption('description') ?: null; -$description = $io->ask( -'Description ['.$description.']: ', -$description -); -$input->setOption('description', $description); - -if (null === $author = $input->getOption('author')) { -if (!empty($_SERVER['COMPOSER_DEFAULT_AUTHOR'])) { -$author_name = $_SERVER['COMPOSER_DEFAULT_AUTHOR']; -} elseif (isset($git['user.name'])) { -$author_name = $git['user.name']; -} - -if (!empty($_SERVER['COMPOSER_DEFAULT_EMAIL'])) { -$author_email = $_SERVER['COMPOSER_DEFAULT_EMAIL']; -} elseif (isset($git['user.email'])) { -$author_email = $git['user.email']; -} - -if (isset($author_name, $author_email)) { -$author = sprintf('%s <%s>', $author_name, $author_email); -} -} - -$author = $io->askAndValidate( -'Author ['.(is_string($author) ? ''.$author.', ' : '') . 'n to skip]: ', -function ($value) use ($author) { -if ($value === 'n' || $value === 'no') { -return; -} -$value = $value ?: $author; -$author = $this->parseAuthorString($value ?? ''); - -if ($author['email'] === null) { -return $author['name']; -} - -return sprintf('%s <%s>', $author['name'], $author['email']); -}, -null, -$author -); -$input->setOption('author', $author); - -$minimumStability = $input->getOption('stability') ?: null; -$minimumStability = $io->askAndValidate( -'Minimum Stability ['.$minimumStability.']: ', -static function ($value) use ($minimumStability) { -if (null === $value) { -return $minimumStability; -} - -if (!isset(BasePackage::$stabilities[$value])) { -throw new \InvalidArgumentException( -'Invalid minimum stability "'.$value.'". Must be empty or one of: '. -implode(', ', array_keys(BasePackage::$stabilities)) -); -} - -return $value; -}, -null, -$minimumStability -); -$input->setOption('stability', $minimumStability); - -$type = $input->getOption('type') ?: false; -$type = $io->ask( -'Package Type (e.g. library, project, metapackage, composer-plugin) ['.$type.']: ', -$type -); -$input->setOption('type', $type); - -if (null === $license = $input->getOption('license')) { -if (!empty($_SERVER['COMPOSER_DEFAULT_LICENSE'])) { -$license = $_SERVER['COMPOSER_DEFAULT_LICENSE']; -} -} - -$license = $io->ask( -'License ['.$license.']: ', -$license -); -$input->setOption('license', $license); - -$io->writeError(['', 'Define your dependencies.', '']); - - -$repos = $this->getRepos(); -$preferredStability = $minimumStability ?: 'stable'; -$platformRepo = null; -if ($repos instanceof CompositeRepository) { -foreach ($repos->getRepositories() as $candidateRepo) { -if ($candidateRepo instanceof PlatformRepository) { -$platformRepo = $candidateRepo; -break; -} -} -} - -$question = 'Would you like to define your dependencies (require) interactively [yes]? '; -$require = $input->getOption('require'); -$requirements = []; -if (count($require) > 0 || $io->askConfirmation($question)) { -$requirements = $this->determineRequirements($input, $output, $require, $platformRepo, $preferredStability); -} -$input->setOption('require', $requirements); - -$question = 'Would you like to define your dev dependencies (require-dev) interactively [yes]? '; -$requireDev = $input->getOption('require-dev'); -$devRequirements = []; -if (count($requireDev) > 0 || $io->askConfirmation($question)) { -$devRequirements = $this->determineRequirements($input, $output, $requireDev, $platformRepo, $preferredStability); -} -$input->setOption('require-dev', $devRequirements); - - -$autoload = $input->getOption('autoload') ?: 'src/'; -$namespace = $this->namespaceFromPackageName((string) $input->getOption('name')); -$autoload = $io->askAndValidate( -'Add PSR-4 autoload mapping? Maps namespace "'.$namespace.'" to the entered relative path. ['.$autoload.', n to skip]: ', -static function ($value) use ($autoload) { -if (null === $value) { -return $autoload; -} - -if ($value === 'n' || $value === 'no') { -return; -} - -$value = $value ?: $autoload; - -if (!Preg::isMatch('{^[^/][A-Za-z0-9\-_/]+/$}', $value)) { -throw new \InvalidArgumentException(sprintf( -'The src folder name "%s" is invalid. Please add a relative path with tailing forward slash. [A-Za-z0-9_-/]+/', -$value -)); -} - -return $value; -}, -null, -$autoload -); -$input->setOption('autoload', $autoload); -} - - - - -private function parseAuthorString(string $author): array -{ -if (Preg::isMatch('/^(?P[- .,\p{L}\p{N}\p{Mn}\'’"()]+)(?:\s+<(?P.+?)>)?$/u', $author, $match)) { -assert(is_string($match['name'])); - -if (null !== $match['email'] && !$this->isValidEmail($match['email'])) { -throw new \InvalidArgumentException('Invalid email "'.$match['email'].'"'); -} - -return [ -'name' => trim($match['name']), -'email' => $match['email'], -]; -} - -throw new \InvalidArgumentException( -'Invalid author string. Must be in the formats: '. -'Jane Doe or John Smith ' -); -} - - - - -protected function formatAuthors(string $author): array -{ -$author = $this->parseAuthorString($author); -if (null === $author['email']) { -unset($author['email']); -} - -return [$author]; -} - - - - - - -public function namespaceFromPackageName(string $packageName): ?string -{ -if (!$packageName || strpos($packageName, '/') === false) { -return null; -} - -$namespace = array_map( -static function ($part): string { -$part = Preg::replace('/[^a-z0-9]/i', ' ', $part); -$part = ucwords($part); - -return str_replace(' ', '', $part); -}, -explode('/', $packageName) -); - -return implode('\\', $namespace); -} - - - - -protected function getGitConfig(): array -{ -if (null !== $this->gitConfig) { -return $this->gitConfig; -} - -$finder = new ExecutableFinder(); -$gitBin = $finder->find('git'); - -$cmd = new Process([$gitBin, 'config', '-l']); -$cmd->run(); - -if ($cmd->isSuccessful()) { -$this->gitConfig = []; -Preg::matchAllStrictGroups('{^([^=]+)=(.*)$}m', $cmd->getOutput(), $matches); -foreach ($matches[1] as $key => $match) { -$this->gitConfig[$match] = $matches[2][$key]; -} - -return $this->gitConfig; -} - -return $this->gitConfig = []; -} - - - - - - - - - - - - -protected function hasVendorIgnore(string $ignoreFile, string $vendor = 'vendor'): bool -{ -if (!file_exists($ignoreFile)) { -return false; -} - -$pattern = sprintf('{^/?%s(/\*?)?$}', preg_quote($vendor)); - -$lines = file($ignoreFile, FILE_IGNORE_NEW_LINES); -foreach ($lines as $line) { -if (Preg::isMatch($pattern, $line)) { -return true; -} -} - -return false; -} - -protected function addVendorIgnore(string $ignoreFile, string $vendor = '/vendor/'): void -{ -$contents = ""; -if (file_exists($ignoreFile)) { -$contents = file_get_contents($ignoreFile); - -if (strpos($contents, "\n") !== 0) { -$contents .= "\n"; -} -} - -file_put_contents($ignoreFile, $contents . $vendor. "\n"); -} - -protected function isValidEmail(string $email): bool -{ - -if (!function_exists('filter_var')) { -return true; -} - -return false !== filter_var($email, FILTER_VALIDATE_EMAIL); -} - -private function updateDependencies(OutputInterface $output): void -{ -try { -$updateCommand = $this->getApplication()->find('update'); -$this->getApplication()->resetComposer(); -$updateCommand->run(new ArrayInput([]), $output); -} catch (\Exception $e) { -$this->getIO()->writeError('Could not update dependencies. Run `composer update` to see more information.'); -} -} - -private function runDumpAutoloadCommand(OutputInterface $output): void -{ -try { -$command = $this->getApplication()->find('dump-autoload'); -$this->getApplication()->resetComposer(); -$command->run(new ArrayInput([]), $output); -} catch (\Exception $e) { -$this->getIO()->writeError('Could not run dump-autoload.'); -} -} - - - - -private function hasDependencies(array $options): bool -{ -$requires = (array) $options['require']; -$devRequires = isset($options['require-dev']) ? (array) $options['require-dev'] : []; - -return !empty($requires) || !empty($devRequires); -} -} diff --git a/composer/src/Composer/Command/InstallCommand.php b/composer/src/Composer/Command/InstallCommand.php deleted file mode 100644 index c70905648..000000000 --- a/composer/src/Composer/Command/InstallCommand.php +++ /dev/null @@ -1,148 +0,0 @@ -setName('install') -->setAliases(['i']) -->setDescription('Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json') -->setDefinition([ -new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), -new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), -new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), -new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), -new InputOption('download-only', null, InputOption::VALUE_NONE, 'Download only, do not install packages.'), -new InputOption('dev', null, InputOption::VALUE_NONE, 'DEPRECATED: Enables installation of require-dev packages (enabled by default, only present for BC).'), -new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), -new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), -new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), -new InputOption('no-install', null, InputOption::VALUE_NONE, 'Do not use, only defined here to catch misuse of the install command.'), -new InputOption('audit', null, InputOption::VALUE_NONE, 'Run an audit after installation is complete.'), -new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), -new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), -new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), -new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), -new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), -new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), -new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Should not be provided, use composer require instead to add a given package to composer.json.'), -]) -->setHelp( -<<install command reads the composer.lock file from -the current directory, processes it, and downloads and installs all the -libraries and dependencies outlined in that file. If the file does not -exist it will look for composer.json and do the same. - -php composer.phar install - -Read more at https://getcomposer.org/doc/03-cli.md#install-i -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$io = $this->getIO(); -if ($input->getOption('dev')) { -$io->writeError('You are using the deprecated option "--dev". It has no effect and will break in Composer 3.'); -} -if ($input->getOption('no-suggest')) { -$io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); -} - -$args = $input->getArgument('packages'); -if (count($args) > 0) { -$io->writeError('Invalid argument '.implode(' ', $args).'. Use "composer require '.implode(' ', $args).'" instead to add packages to your composer.json.'); - -return 1; -} - -if ($input->getOption('no-install')) { -$io->writeError('Invalid option "--no-install". Use "composer update --no-install" instead if you are trying to update the composer.lock file.'); - -return 1; -} - -$composer = $this->requireComposer(); - -if (!$composer->getLocker()->isLocked() && !HttpDownloader::isCurlEnabled()) { -$io->writeError('Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.'); -} - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'install', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$install = Installer::create($io, $composer); - -$config = $composer->getConfig(); -[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); - -$optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); -$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); -$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); -$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); - -$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); - -$install -->setDryRun($input->getOption('dry-run')) -->setDownloadOnly($input->getOption('download-only')) -->setVerbose($input->getOption('verbose')) -->setPreferSource($preferSource) -->setPreferDist($preferDist) -->setDevMode(!$input->getOption('no-dev')) -->setDumpAutoloader(!$input->getOption('no-autoloader')) -->setOptimizeAutoloader($optimize) -->setClassMapAuthoritative($authoritative) -->setApcuAutoloader($apcu, $apcuPrefix) -->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) -->setAudit($input->getOption('audit')) -->setAuditFormat($this->getAuditFormat($input)) -; - -if ($input->getOption('no-plugins')) { -$install->disablePlugins(); -} - -return $install->run(); -} -} diff --git a/composer/src/Composer/Command/LicensesCommand.php b/composer/src/Composer/Command/LicensesCommand.php deleted file mode 100644 index 5512ef524..000000000 --- a/composer/src/Composer/Command/LicensesCommand.php +++ /dev/null @@ -1,153 +0,0 @@ -setName('licenses') -->setDescription('Shows information about licenses of dependencies') -->setDefinition([ -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text, json or summary', 'text', ['text', 'json', 'summary']), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), -]) -->setHelp( -<<requireComposer(); - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'licenses', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$root = $composer->getPackage(); -$repo = $composer->getRepositoryManager()->getLocalRepository(); - -if ($input->getOption('no-dev')) { -$packages = RepositoryUtils::filterRequiredPackages($repo->getPackages(), $root); -} else { -$packages = $repo->getPackages(); -} - -$packages = PackageSorter::sortPackagesAlphabetically($packages); -$io = $this->getIO(); - -switch ($format = $input->getOption('format')) { -case 'text': -$io->write('Name: '.$root->getPrettyName().''); -$io->write('Version: '.$root->getFullPrettyVersion().''); -$io->write('Licenses: '.(implode(', ', $root->getLicense()) ?: 'none').''); -$io->write('Dependencies:'); -$io->write(''); - -$table = new Table($output); -$table->setStyle('compact'); -$table->setHeaders(['Name', 'Version', 'Licenses']); -foreach ($packages as $package) { -$link = PackageInfo::getViewSourceOrHomepageUrl($package); -if ($link !== null) { -$name = ''.$package->getPrettyName().''; -} else { -$name = $package->getPrettyName(); -} - -$table->addRow([ -$name, -$package->getFullPrettyVersion(), -implode(', ', $package instanceof CompletePackageInterface ? $package->getLicense() : []) ?: 'none', -]); -} -$table->render(); -break; - -case 'json': -$dependencies = []; -foreach ($packages as $package) { -$dependencies[$package->getPrettyName()] = [ -'version' => $package->getFullPrettyVersion(), -'license' => $package instanceof CompletePackageInterface ? $package->getLicense() : [], -]; -} - -$io->write(JsonFile::encode([ -'name' => $root->getPrettyName(), -'version' => $root->getFullPrettyVersion(), -'license' => $root->getLicense(), -'dependencies' => $dependencies, -])); -break; - -case 'summary': -$usedLicenses = []; -foreach ($packages as $package) { -$licenses = $package instanceof CompletePackageInterface ? $package->getLicense() : []; -if (count($licenses) === 0) { -$licenses[] = 'none'; -} -foreach ($licenses as $licenseName) { -if (!isset($usedLicenses[$licenseName])) { -$usedLicenses[$licenseName] = 0; -} -$usedLicenses[$licenseName]++; -} -} - - -arsort($usedLicenses, SORT_NUMERIC); - -$rows = []; -foreach ($usedLicenses as $usedLicense => $numberOfDependencies) { -$rows[] = [$usedLicense, $numberOfDependencies]; -} - -$symfonyIo = new SymfonyStyle($input, $output); -$symfonyIo->table( -['License', 'Number of dependencies'], -$rows -); -break; -default: -throw new \RuntimeException(sprintf('Unsupported format "%s". See help for supported formats.', $format)); -} - -return 0; -} -} diff --git a/composer/src/Composer/Command/OutdatedCommand.php b/composer/src/Composer/Command/OutdatedCommand.php deleted file mode 100644 index d77f76d30..000000000 --- a/composer/src/Composer/Command/OutdatedCommand.php +++ /dev/null @@ -1,119 +0,0 @@ -setName('outdated') -->setDescription('Shows a list of installed packages that have updates available, including their latest version') -->setDefinition([ -new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.', null, $this->suggestInstalledPackage(false)), -new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show only packages that are outdated (this is the default, but present here for compat with `show`'), -new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show all installed packages with their latest versions'), -new InputOption('locked', null, InputOption::VALUE_NONE, 'Shows updates for packages from the lock file, regardless of what is currently in vendor dir'), -new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), -new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), -new InputOption('major-only', 'M', InputOption::VALUE_NONE, 'Show only packages that have major SemVer-compatible updates.'), -new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates.'), -new InputOption('patch-only', 'p', InputOption::VALUE_NONE, 'Show only packages that have patch SemVer-compatible updates.'), -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), -new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it if you don\'t want to be informed about new versions of some packages.', null, $this->suggestInstalledPackage(false)), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages). Use with the --outdated option'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages). Use with the --outdated option'), -]) -->setHelp( -<<green (=): Dependency is in the latest version and is up to date. -- yellow (~): Dependency has a new version available that includes backwards - compatibility breaks according to semver, so upgrade when you can but it - may involve work. -- red (!): Dependency has a new version that is semver-compatible and you should upgrade it. - -Read more at https://getcomposer.org/doc/03-cli.md#outdated -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$args = [ -'command' => 'show', -'--latest' => true, -]; -if (!$input->getOption('all')) { -$args['--outdated'] = true; -} -if ($input->getOption('direct')) { -$args['--direct'] = true; -} -if (null !== $input->getArgument('package')) { -$args['package'] = $input->getArgument('package'); -} -if ($input->getOption('strict')) { -$args['--strict'] = true; -} -if ($input->getOption('major-only')) { -$args['--major-only'] = true; -} -if ($input->getOption('minor-only')) { -$args['--minor-only'] = true; -} -if ($input->getOption('patch-only')) { -$args['--patch-only'] = true; -} -if ($input->getOption('locked')) { -$args['--locked'] = true; -} -if ($input->getOption('no-dev')) { -$args['--no-dev'] = true; -} -$args['--ignore-platform-req'] = $input->getOption('ignore-platform-req'); -if ($input->getOption('ignore-platform-reqs')) { -$args['--ignore-platform-reqs'] = true; -} -$args['--format'] = $input->getOption('format'); -$args['--ignore'] = $input->getOption('ignore'); - -$input = new ArrayInput($args); - -return $this->getApplication()->run($input, $output); -} - - - - -public function isProxyCommand(): bool -{ -return true; -} -} diff --git a/composer/src/Composer/Command/PackageDiscoveryTrait.php b/composer/src/Composer/Command/PackageDiscoveryTrait.php deleted file mode 100644 index 5aa22bb72..000000000 --- a/composer/src/Composer/Command/PackageDiscoveryTrait.php +++ /dev/null @@ -1,451 +0,0 @@ -repos) { -$this->repos = new CompositeRepository(array_merge( -[new PlatformRepository], -RepositoryFactory::defaultReposWithDefaultManager($this->getIO()) -)); -} - -return $this->repos; -} - -private function getRepositorySet(InputInterface $input, ?string $minimumStability = null): RepositorySet -{ -$key = $minimumStability ?? 'default'; - -if (!isset($this->repositorySets[$key])) { -$this->repositorySets[$key] = $repositorySet = new RepositorySet($minimumStability ?? $this->getMinimumStability($input)); -$repositorySet->addRepository($this->getRepos()); -} - -return $this->repositorySets[$key]; -} - -private function getMinimumStability(InputInterface $input): string -{ -if ($input->hasOption('stability')) { -return VersionParser::normalizeStability($input->getOption('stability') ?? 'stable'); -} - - -$file = Factory::getComposerFile(); -if (is_file($file) && Filesystem::isReadable($file) && is_array($composer = json_decode((string) file_get_contents($file), true))) { -if (!empty($composer['minimum-stability'])) { -return VersionParser::normalizeStability($composer['minimum-stability']); -} -} - -return 'stable'; -} - - - - - - - -final protected function determineRequirements(InputInterface $input, OutputInterface $output, array $requires = [], ?PlatformRepository $platformRepo = null, string $preferredStability = 'stable', bool $useBestVersionConstraint = true, bool $fixed = false): array -{ -if (count($requires) > 0) { -$requires = $this->normalizeRequirements($requires); -$result = []; -$io = $this->getIO(); - -foreach ($requires as $requirement) { -if (isset($requirement['version']) && Preg::isMatch('{^\d+(\.\d+)?$}', $requirement['version'])) { -$io->writeError('The "'.$requirement['version'].'" constraint for "'.$requirement['name'].'" appears too strict and will likely not match what you want. See https://getcomposer.org/constraints'); -} - -if (!isset($requirement['version'])) { - -[$name, $version] = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $platformRepo, $preferredStability, $fixed); - - -$requirement['name'] = $name; - -if ($useBestVersionConstraint) { -$requirement['version'] = $version; -$io->writeError(sprintf( -'Using version %s for %s', -$requirement['version'], -$requirement['name'] -)); -} else { -$requirement['version'] = 'guess'; -} -} - -$result[] = $requirement['name'] . ' ' . $requirement['version']; -} - -return $result; -} - -$versionParser = new VersionParser(); - - -$composer = $this->tryComposer(); -$installedRepo = null; -if (null !== $composer) { -$installedRepo = $composer->getRepositoryManager()->getLocalRepository(); -} -$existingPackages = []; -if (null !== $installedRepo) { -foreach ($installedRepo->getPackages() as $package) { -$existingPackages[] = $package->getName(); -} -} -unset($composer, $installedRepo); - -$io = $this->getIO(); -while (null !== $package = $io->ask('Search for a package: ')) { -$matches = $this->getRepos()->search($package); - -if (count($matches) > 0) { - -foreach ($matches as $position => $foundPackage) { -if (in_array($foundPackage['name'], $existingPackages, true)) { -unset($matches[$position]); -} -} -$matches = array_values($matches); - -$exactMatch = false; -foreach ($matches as $match) { -if ($match['name'] === $package) { -$exactMatch = true; -break; -} -} - - -if (!$exactMatch) { -$providers = $this->getRepos()->getProviders($package); -if (count($providers) > 0) { -array_unshift($matches, ['name' => $package, 'description' => '']); -} - -$choices = []; -foreach ($matches as $position => $foundPackage) { -$abandoned = ''; -if (isset($foundPackage['abandoned'])) { -if (is_string($foundPackage['abandoned'])) { -$replacement = sprintf('Use %s instead', $foundPackage['abandoned']); -} else { -$replacement = 'No replacement was suggested'; -} -$abandoned = sprintf('Abandoned. %s.', $replacement); -} - -$choices[] = sprintf(' %5s %s %s', "[$position]", $foundPackage['name'], $abandoned); -} - -$io->writeError([ -'', -sprintf('Found %s packages matching %s', count($matches), $package), -'', -]); - -$io->writeError($choices); -$io->writeError(''); - -$validator = static function (string $selection) use ($matches, $versionParser) { -if ('' === $selection) { -return false; -} - -if (is_numeric($selection) && isset($matches[(int) $selection])) { -$package = $matches[(int) $selection]; - -return $package['name']; -} - -if (Preg::isMatch('{^\s*(?P[\S/]+)(?:\s+(?P\S+))?\s*$}', $selection, $packageMatches)) { -if (isset($packageMatches['version'])) { - - - -$versionParser->parseConstraints($packageMatches['version']); - -return $packageMatches['name'].' '.$packageMatches['version']; -} - - -return $packageMatches['name']; -} - -throw new \Exception('Not a valid selection'); -}; - -$package = $io->askAndValidate( -'Enter package # to add, or the complete package name if it is not listed: ', -$validator, -3, -'' -); -} - - -if (false !== $package && false === strpos($package, ' ')) { -$validator = static function (string $input) { -$input = trim($input); - -return strlen($input) > 0 ? $input : false; -}; - -$constraint = $io->askAndValidate( -'Enter the version constraint to require (or leave blank to use the latest version): ', -$validator, -3, -'' -); - -if (false === $constraint) { -[, $constraint] = $this->findBestVersionAndNameForPackage($input, $package, $platformRepo, $preferredStability); - -$io->writeError(sprintf( -'Using version %s for %s', -$constraint, -$package -)); -} - -$package .= ' '.$constraint; -} - -if (false !== $package) { -$requires[] = $package; -$existingPackages[] = explode(' ', $package)[0]; -} -} -} - -return $requires; -} - - - - - - - - - -private function findBestVersionAndNameForPackage(InputInterface $input, string $name, ?PlatformRepository $platformRepo = null, string $preferredStability = 'stable', bool $fixed = false): array -{ - -if ($input->hasOption('ignore-platform-reqs') && $input->hasOption('ignore-platform-req')) { -$platformRequirementFilter = $this->getPlatformRequirementFilter($input); -} else { -$platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); -} - - -$repoSet = $this->getRepositorySet($input); -$versionSelector = new VersionSelector($repoSet, $platformRepo); -$effectiveMinimumStability = $this->getMinimumStability($input); - -$package = $versionSelector->findBestCandidate($name, null, $preferredStability, $platformRequirementFilter, 0, $this->getIO()); - -if (false === $package) { - - -if ($platformRequirementFilter->isIgnored($name)) { -return [$name, '*']; -} - - -$providers = $repoSet->getProviders($name); -if (count($providers) > 0) { -$constraint = '*'; -if ($input->isInteractive()) { -$constraint = $this->getIO()->askAndValidate('Package "'.$name.'" does not exist but is provided by '.count($providers).' packages. Which version constraint would you like to use? [*] ', static function ($value) { -$parser = new VersionParser(); -$parser->parseConstraints($value); - -return $value; -}, 3, '*'); -} - -return [$name, $constraint]; -} - - -if (!($platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter) && false !== ($candidate = $versionSelector->findBestCandidate($name, null, $preferredStability, PlatformRequirementFilterFactory::ignoreAll()))) { -throw new \InvalidArgumentException(sprintf( -'Package %s has requirements incompatible with your PHP version, PHP extensions and Composer version' . $this->getPlatformExceptionDetails($candidate, $platformRepo), -$name -)); -} - -if (false !== ($package = $versionSelector->findBestCandidate($name, null, $preferredStability, $platformRequirementFilter, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES))) { - -if (false !== ($allReposPackage = $versionSelector->findBestCandidate($name, null, $preferredStability, $platformRequirementFilter, RepositorySet::ALLOW_SHADOWED_REPOSITORIES))) { -throw new \InvalidArgumentException( -'Package '.$name.' exists in '.$allReposPackage->getRepository()->getRepoName().' and '.$package->getRepository()->getRepoName().' which has a higher repository priority. The packages from the higher priority repository do not match your minimum-stability and are therefore not installable. That repository is canonical so the lower priority repo\'s packages are not installable. See https://getcomposer.org/repoprio for details and assistance.' -); -} - -throw new \InvalidArgumentException(sprintf( -'Could not find a version of package %s matching your minimum-stability (%s). Require it with an explicit version constraint allowing its desired stability.', -$name, -$effectiveMinimumStability -)); -} - -if (!$platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter && false !== ($candidate = $versionSelector->findBestCandidate($name, null, $preferredStability, PlatformRequirementFilterFactory::ignoreAll(), RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES))) { -$additional = ''; -if (false === $versionSelector->findBestCandidate($name, null, $preferredStability, PlatformRequirementFilterFactory::ignoreAll())) { -$additional = PHP_EOL.PHP_EOL.'Additionally, the package was only found with a stability of "'.$candidate->getStability().'" while your minimum stability is "'.$effectiveMinimumStability.'".'; -} - -throw new \InvalidArgumentException(sprintf( -'Could not find package %s in any version matching your PHP version, PHP extensions and Composer version' . $this->getPlatformExceptionDetails($candidate, $platformRepo) . '%s', -$name, -$additional -)); -} - - -$similar = $this->findSimilar($name); -if (count($similar) > 0) { -if (in_array($name, $similar, true)) { -throw new \InvalidArgumentException(sprintf( -"Could not find package %s. It was however found via repository search, which indicates a consistency issue with the repository.", -$name -)); -} - -throw new \InvalidArgumentException(sprintf( -"Could not find package %s.\n\nDid you mean " . (count($similar) > 1 ? 'one of these' : 'this') . "?\n %s", -$name, -implode("\n ", $similar) -)); -} - -throw new \InvalidArgumentException(sprintf( -'Could not find a matching version of package %s. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (%s).', -$name, -$effectiveMinimumStability -)); -} - -return [ -$package->getPrettyName(), -$fixed ? $package->getPrettyVersion() : $versionSelector->findRecommendedRequireVersion($package), -]; -} - - - - -private function findSimilar(string $package): array -{ -try { -if (null === $this->repos) { -throw new \LogicException('findSimilar was called before $this->repos was initialized'); -} -$results = $this->repos->search($package); -} catch (\Throwable $e) { -if ($e instanceof \LogicException) { -throw $e; -} - - -return []; -} -$similarPackages = []; - -$installedRepo = $this->requireComposer()->getRepositoryManager()->getLocalRepository(); - -foreach ($results as $result) { -if (null !== $installedRepo->findPackage($result['name'], '*')) { - -continue; -} -$similarPackages[$result['name']] = levenshtein($package, $result['name']); -} -asort($similarPackages); - -return array_keys(array_slice($similarPackages, 0, 5)); -} - -private function getPlatformExceptionDetails(PackageInterface $candidate, ?PlatformRepository $platformRepo = null): string -{ -$details = []; -if (null === $platformRepo) { -return ''; -} - -foreach ($candidate->getRequires() as $link) { -if (!PlatformRepository::isPlatformPackage($link->getTarget())) { -continue; -} -$platformPkg = $platformRepo->findPackage($link->getTarget(), '*'); -if (null === $platformPkg) { -if ($platformRepo->isPlatformPackageDisabled($link->getTarget())) { -$details[] = $candidate->getPrettyName().' '.$candidate->getPrettyVersion().' requires '.$link->getTarget().' '.$link->getPrettyConstraint().' but it is disabled by your platform config. Enable it again with "composer config platform.'.$link->getTarget().' --unset".'; -} else { -$details[] = $candidate->getPrettyName().' '.$candidate->getPrettyVersion().' requires '.$link->getTarget().' '.$link->getPrettyConstraint().' but it is not present.'; -} -continue; -} -if (!$link->getConstraint()->matches(new Constraint('==', $platformPkg->getVersion()))) { -$platformPkgVersion = $platformPkg->getPrettyVersion(); -$platformExtra = $platformPkg->getExtra(); -if (isset($platformExtra['config.platform']) && $platformPkg instanceof CompletePackageInterface) { -$platformPkgVersion .= ' ('.$platformPkg->getDescription().')'; -} -$details[] = $candidate->getPrettyName().' '.$candidate->getPrettyVersion().' requires '.$link->getTarget().' '.$link->getPrettyConstraint().' which does not match your installed version '.$platformPkgVersion.'.'; -} -} - -if (count($details) === 0) { -return ''; -} - -return ':'.PHP_EOL.' - ' . implode(PHP_EOL.' - ', $details); -} -} diff --git a/composer/src/Composer/Command/ProhibitsCommand.php b/composer/src/Composer/Command/ProhibitsCommand.php deleted file mode 100644 index e432fce15..000000000 --- a/composer/src/Composer/Command/ProhibitsCommand.php +++ /dev/null @@ -1,59 +0,0 @@ -setName('prohibits') -->setAliases(['why-not']) -->setDescription('Shows which packages prevent the given package from being installed') -->setDefinition([ -new InputArgument(self::ARGUMENT_PACKAGE, InputArgument::REQUIRED, 'Package to inspect', null, $this->suggestAvailablePackage()), -new InputArgument(self::ARGUMENT_CONSTRAINT, InputArgument::REQUIRED, 'Version constraint, which version you expected to be installed'), -new InputOption(self::OPTION_RECURSIVE, 'r', InputOption::VALUE_NONE, 'Recursively resolves up to the root package'), -new InputOption(self::OPTION_TREE, 't', InputOption::VALUE_NONE, 'Prints the results as a nested tree'), -new InputOption('locked', null, InputOption::VALUE_NONE, 'Read dependency information from composer.lock'), -]) -->setHelp( -<<php composer.phar prohibits composer/composer - -Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -return parent::doExecute($input, $output, true); -} -} diff --git a/composer/src/Composer/Command/ReinstallCommand.php b/composer/src/Composer/Command/ReinstallCommand.php deleted file mode 100644 index bd56ac2d3..000000000 --- a/composer/src/Composer/Command/ReinstallCommand.php +++ /dev/null @@ -1,173 +0,0 @@ -setName('reinstall') -->setDescription('Uninstalls and reinstalls the given package names') -->setDefinition([ -new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), -new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), -new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), -new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), -new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), -new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), -new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), -new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), -new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), -new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'List of package names to reinstall, can include a wildcard (*) to match any substring.', null, $this->suggestInstalledPackage(false)), -]) -->setHelp( -<<reinstall command looks up installed packages by name, -uninstalls them and reinstalls them. This lets you do a clean install -of a package if you messed with its files, or if you wish to change -the installation type using --prefer-install. - -php composer.phar reinstall acme/foo "acme/bar-*" - -Read more at https://getcomposer.org/doc/03-cli.md#reinstall -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$io = $this->getIO(); - -$composer = $this->requireComposer(); - -$localRepo = $composer->getRepositoryManager()->getLocalRepository(); -$packagesToReinstall = []; -$packageNamesToReinstall = []; -foreach ($input->getArgument('packages') as $pattern) { -$patternRegexp = BasePackage::packageNameToRegexp($pattern); -$matched = false; -foreach ($localRepo->getCanonicalPackages() as $package) { -if (Preg::isMatch($patternRegexp, $package->getName())) { -$matched = true; -$packagesToReinstall[] = $package; -$packageNamesToReinstall[] = $package->getName(); -} -} - -if (!$matched) { -$io->writeError('Pattern "' . $pattern . '" does not match any currently installed packages.'); -} -} - -if (!$packagesToReinstall) { -$io->writeError('Found no packages to reinstall, aborting.'); - -return 1; -} - -$uninstallOperations = []; -foreach ($packagesToReinstall as $package) { -$uninstallOperations[] = new UninstallOperation($package); -} - - -$presentPackages = $localRepo->getPackages(); -$resultPackages = $presentPackages; -foreach ($presentPackages as $index => $package) { -if (in_array($package->getName(), $packageNamesToReinstall, true)) { -unset($presentPackages[$index]); -} -} -$transaction = new Transaction($presentPackages, $resultPackages); -$installOperations = $transaction->getOperations(); - - -$installOrder = []; -foreach ($installOperations as $index => $op) { -if ($op instanceof InstallOperation && !$op->getPackage() instanceof AliasPackage) { -$installOrder[$op->getPackage()->getName()] = $index; -} -} -usort($uninstallOperations, static function ($a, $b) use ($installOrder): int { -return $installOrder[$b->getPackage()->getName()] - $installOrder[$a->getPackage()->getName()]; -}); - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'reinstall', $input, $output); -$eventDispatcher = $composer->getEventDispatcher(); -$eventDispatcher->dispatch($commandEvent->getName(), $commandEvent); - -$config = $composer->getConfig(); -[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); - -$installationManager = $composer->getInstallationManager(); -$downloadManager = $composer->getDownloadManager(); -$package = $composer->getPackage(); - -$installationManager->setOutputProgress(!$input->getOption('no-progress')); -if ($input->getOption('no-plugins')) { -$installationManager->disablePlugins(); -} - -$downloadManager->setPreferSource($preferSource); -$downloadManager->setPreferDist($preferDist); - -$devMode = $localRepo->getDevMode() !== null ? $localRepo->getDevMode() : true; - -Platform::putEnv('COMPOSER_DEV_MODE', $devMode ? '1' : '0'); -$eventDispatcher->dispatchScript(ScriptEvents::PRE_INSTALL_CMD, $devMode); - -$installationManager->execute($localRepo, $uninstallOperations, $devMode); -$installationManager->execute($localRepo, $installOperations, $devMode); - -if (!$input->getOption('no-autoloader')) { -$optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); -$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); -$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); -$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); - -$generator = $composer->getAutoloadGenerator(); -$generator->setClassMapAuthoritative($authoritative); -$generator->setApcu($apcu, $apcuPrefix); -$generator->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)); -$generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize); -} - -$eventDispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, $devMode); - -return 0; -} -} diff --git a/composer/src/Composer/Command/RemoveCommand.php b/composer/src/Composer/Command/RemoveCommand.php deleted file mode 100644 index 6bc55ea94..000000000 --- a/composer/src/Composer/Command/RemoveCommand.php +++ /dev/null @@ -1,314 +0,0 @@ -setName('remove') -->setDescription('Removes a package from the require or require-dev') -->setDefinition([ -new InputArgument('packages', InputArgument::IS_ARRAY, 'Packages that should be removed.', null, $this->suggestRootRequirement()), -new InputOption('dev', null, InputOption::VALUE_NONE, 'Removes a package from the require-dev section.'), -new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), -new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), -new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies (implies --no-install).'), -new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), -new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Skip the audit step after updating the composer.lock file (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), -new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), -new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), -new InputOption('update-with-dependencies', 'w', InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated with explicit dependencies. (Deprecated, is now default behavior)'), -new InputOption('update-with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), -new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-all-dependencies'), -new InputOption('no-update-with-dependencies', null, InputOption::VALUE_NONE, 'Does not allow inherited dependencies to be updated with explicit dependencies.'), -new InputOption('unused', null, InputOption::VALUE_NONE, 'Remove all packages which are locked but not required by any other package.'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), -new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), -new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), -new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), -new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), -]) -->setHelp( -<<remove command removes a package from the current -list of installed packages - -php composer.phar remove - -Read more at https://getcomposer.org/doc/03-cli.md#remove -EOT -) -; -} - - - - -protected function execute(InputInterface $input, OutputInterface $output) -{ -if ($input->getArgument('packages') === [] && !$input->getOption('unused')) { -throw new InvalidArgumentException('Not enough arguments (missing: "packages").'); -} - -$packages = $input->getArgument('packages'); -$packages = array_map('strtolower', $packages); - -if ($input->getOption('unused')) { -$composer = $this->requireComposer(); -$locker = $composer->getLocker(); -if (!$locker->isLocked()) { -throw new \UnexpectedValueException('A valid composer.lock file is required to run this command with --unused'); -} - -$lockedPackages = $locker->getLockedRepository()->getPackages(); - -$required = []; -foreach (array_merge($composer->getPackage()->getRequires(), $composer->getPackage()->getDevRequires()) as $link) { -$required[$link->getTarget()] = true; -} - -do { -$found = false; -foreach ($lockedPackages as $index => $package) { -foreach ($package->getNames() as $name) { -if (isset($required[$name])) { -foreach ($package->getRequires() as $link) { -$required[$link->getTarget()] = true; -} -$found = true; -unset($lockedPackages[$index]); -break; -} -} -} -} while ($found); - -$unused = []; -foreach ($lockedPackages as $package) { -$unused[] = $package->getName(); -} -$packages = array_merge($packages, $unused); - -if (count($packages) === 0) { -$this->getIO()->writeError('No unused packages to remove'); - -return 0; -} -} - -$file = Factory::getComposerFile(); - -$jsonFile = new JsonFile($file); - -$composer = $jsonFile->read(); -$composerBackup = file_get_contents($jsonFile->getPath()); - -$json = new JsonConfigSource($jsonFile); - -$type = $input->getOption('dev') ? 'require-dev' : 'require'; -$altType = !$input->getOption('dev') ? 'require-dev' : 'require'; -$io = $this->getIO(); - -if ($input->getOption('update-with-dependencies')) { -$io->writeError('You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies.'); -} - - -foreach (['require', 'require-dev'] as $linkType) { -if (isset($composer[$linkType])) { -foreach ($composer[$linkType] as $name => $version) { -$composer[$linkType][strtolower($name)] = $name; -} -} -} - -$dryRun = $input->getOption('dry-run'); -$toRemove = []; -foreach ($packages as $package) { -if (isset($composer[$type][$package])) { -if ($dryRun) { -$toRemove[$type][] = $composer[$type][$package]; -} else { -$json->removeLink($type, $composer[$type][$package]); -} -} elseif (isset($composer[$altType][$package])) { -$io->writeError('' . $composer[$altType][$package] . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); -if ($io->isInteractive()) { -if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ')) { -if ($dryRun) { -$toRemove[$altType][] = $composer[$altType][$package]; -} else { -$json->removeLink($altType, $composer[$altType][$package]); -} -} -} -} elseif (isset($composer[$type]) && count($matches = Preg::grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$type]))) > 0) { -foreach ($matches as $matchedPackage) { -if ($dryRun) { -$toRemove[$type][] = $matchedPackage; -} else { -$json->removeLink($type, $matchedPackage); -} -} -} elseif (isset($composer[$altType]) && count($matches = Preg::grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$altType]))) > 0) { -foreach ($matches as $matchedPackage) { -$io->writeError('' . $matchedPackage . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); -if ($io->isInteractive()) { -if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ')) { -if ($dryRun) { -$toRemove[$altType][] = $matchedPackage; -} else { -$json->removeLink($altType, $matchedPackage); -} -} -} -} -} else { -$io->writeError(''.$package.' is not required in your composer.json and has not been removed'); -} -} - -$io->writeError(''.$file.' has been updated'); - -if ($input->getOption('no-update')) { -return 0; -} - -if ($composer = $this->tryComposer()) { -$composer->getPluginManager()->deactivateInstalledPlugins(); -} - - -$this->resetComposer(); -$composer = $this->requireComposer(); - -if ($dryRun) { -$rootPackage = $composer->getPackage(); -$links = [ -'require' => $rootPackage->getRequires(), -'require-dev' => $rootPackage->getDevRequires(), -]; -foreach ($toRemove as $type => $names) { -foreach ($names as $name) { -unset($links[$type][$name]); -} -} -$rootPackage->setRequires($links['require']); -$rootPackage->setDevRequires($links['require-dev']); -} - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'remove', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$allowPlugins = $composer->getConfig()->get('allow-plugins'); -$removedPlugins = is_array($allowPlugins) ? array_intersect(array_keys($allowPlugins), $packages) : []; -if (!$dryRun && is_array($allowPlugins) && count($removedPlugins) > 0) { -if (count($allowPlugins) === count($removedPlugins)) { -$json->removeConfigSetting('allow-plugins'); -} else { -foreach ($removedPlugins as $plugin) { -$json->removeConfigSetting('allow-plugins.'.$plugin); -} -} -} - -$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); - -$install = Installer::create($io, $composer); - -$updateDevMode = !$input->getOption('update-no-dev'); -$optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); -$authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); -$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); -$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); - -$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; -$flags = ''; -if ($input->getOption('update-with-all-dependencies') || $input->getOption('with-all-dependencies')) { -$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; -$flags .= ' --with-all-dependencies'; -} elseif ($input->getOption('no-update-with-dependencies')) { -$updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; -$flags .= ' --with-dependencies'; -} - -$io->writeError('Running composer update '.implode(' ', $packages).$flags.''); - -$install -->setVerbose($input->getOption('verbose')) -->setDevMode($updateDevMode) -->setOptimizeAutoloader($optimize) -->setClassMapAuthoritative($authoritative) -->setApcuAutoloader($apcu, $apcuPrefix) -->setUpdate(true) -->setInstall(!$input->getOption('no-install')) -->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) -->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) -->setDryRun($dryRun) -->setAudit(!$input->getOption('no-audit')) -->setAuditFormat($this->getAuditFormat($input)) -; - - - -if ($composer->getLocker()->isLocked()) { -$install->setUpdateAllowList($packages); -} - -$status = $install->run(); -if ($status !== 0) { -$io->writeError("\n".'Removal failed, reverting '.$file.' to its original content.'); -file_put_contents($jsonFile->getPath(), $composerBackup); -} - -if (!$dryRun) { -foreach ($packages as $package) { -if ($composer->getRepositoryManager()->getLocalRepository()->findPackages($package)) { -$io->writeError('Removal failed, '.$package.' is still present, it may be required by another package. See `composer why '.$package.'`.'); - -return 2; -} -} -} - -return $status; -} -} diff --git a/composer/src/Composer/Command/RequireCommand.php b/composer/src/Composer/Command/RequireCommand.php deleted file mode 100644 index 8228df029..000000000 --- a/composer/src/Composer/Command/RequireCommand.php +++ /dev/null @@ -1,635 +0,0 @@ -setName('require') -->setAliases(['r']) -->setDescription('Adds required packages to your composer.json and installs them') -->setDefinition([ -new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Optional package name can also include a version constraint, e.g. foo/bar or foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"', null, $this->suggestAvailablePackageInclPlatform()), -new InputOption('dev', null, InputOption::VALUE_NONE, 'Add requirement to require-dev.'), -new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), -new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), -new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), -new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), -new InputOption('fixed', null, InputOption::VALUE_NONE, 'Write fixed version to the composer.json.'), -new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), -new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), -new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies (implies --no-install).'), -new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), -new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Skip the audit step after updating the composer.lock file (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), -new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), -new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), -new InputOption('update-with-dependencies', 'w', InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated, except those that are root requirements.'), -new InputOption('update-with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), -new InputOption('with-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-dependencies'), -new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-all-dependencies'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), -new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies (can also be set via the COMPOSER_PREFER_STABLE=1 env var).'), -new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies (can also be set via the COMPOSER_PREFER_LOWEST=1 env var).'), -new InputOption('sort-packages', null, InputOption::VALUE_NONE, 'Sorts packages when adding/updating a new dependency'), -new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), -new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), -new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), -new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), -]) -->setHelp( -<<file = Factory::getComposerFile(); -$io = $this->getIO(); - -if ($input->getOption('no-suggest')) { -$io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); -} - -$this->newlyCreated = !file_exists($this->file); -if ($this->newlyCreated && !file_put_contents($this->file, "{\n}\n")) { -$io->writeError(''.$this->file.' could not be created.'); - -return 1; -} -if (!Filesystem::isReadable($this->file)) { -$io->writeError(''.$this->file.' is not readable.'); - -return 1; -} - -if (filesize($this->file) === 0) { -file_put_contents($this->file, "{\n}\n"); -} - -$this->json = new JsonFile($this->file); -$this->lock = Factory::getLockFile($this->file); -$this->composerBackup = file_get_contents($this->json->getPath()); -$this->lockBackup = file_exists($this->lock) ? file_get_contents($this->lock) : null; - -$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) { -$this->getIO()->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); -$this->revertComposerFile(); -$handler->exitWithLastSignal(); -}); - - - -if (!is_writable($this->file) && false === Silencer::call('file_put_contents', $this->file, $this->composerBackup)) { -$io->writeError(''.$this->file.' is not writable.'); - -return 1; -} - -if ($input->getOption('fixed') === true) { -$config = $this->json->read(); - -$packageType = empty($config['type']) ? 'library' : $config['type']; - - - - -if ($packageType !== 'project' && !$input->getOption('dev')) { -$io->writeError('The "--fixed" option is only allowed for packages with a "project" type or for dev dependencies to prevent possible misuses.'); - -if (!isset($config['type'])) { -$io->writeError('If your package is not a library, you can explicitly specify the "type" by using "composer config type project".'); -} - -return 1; -} -} - -$composer = $this->requireComposer(); -$repos = $composer->getRepositoryManager()->getRepositories(); - -$platformOverrides = $composer->getConfig()->get('platform'); - -$this->repos = new CompositeRepository(array_merge( -[$platformRepo = new PlatformRepository([], $platformOverrides)], -$repos -)); - -if ($composer->getPackage()->getPreferStable()) { -$preferredStability = 'stable'; -} else { -$preferredStability = $composer->getPackage()->getMinimumStability(); -} - -try { -$requirements = $this->determineRequirements( -$input, -$output, -$input->getArgument('packages'), -$platformRepo, -$preferredStability, -$input->getOption('no-update'), -$input->getOption('fixed') -); -} catch (\Exception $e) { -if ($this->newlyCreated) { -$this->revertComposerFile(); - -throw new \RuntimeException('No composer.json present in the current directory ('.$this->file.'), this may be the cause of the following exception.', 0, $e); -} - -throw $e; -} - -$requirements = $this->formatRequirements($requirements); - -if (!$input->getOption('dev') && $io->isInteractive()) { -$devPackages = []; -$devTags = ['dev', 'testing', 'static analysis']; -$currentRequiresByKey = $this->getPackagesByRequireKey(); -foreach ($requirements as $name => $version) { - -if (isset($currentRequiresByKey[$name])) { -continue; -} - -$pkg = PackageSorter::getMostCurrentVersion($this->getRepos()->findPackages($name)); -if ($pkg instanceof CompletePackageInterface) { -$pkgDevTags = array_intersect($devTags, array_map('strtolower', $pkg->getKeywords())); -if (count($pkgDevTags) > 0) { -$devPackages[] = $pkgDevTags; -} -} -} - -if (count($devPackages) === count($requirements)) { -$plural = count($requirements) > 1 ? 's' : ''; -$plural2 = count($requirements) > 1 ? 'are' : 'is'; -$plural3 = count($requirements) > 1 ? 'they are' : 'it is'; -$pkgDevTags = array_unique(array_merge(...$devPackages)); -$io->warning('The package'.$plural.' you required '.$plural2.' recommended to be placed in require-dev (because '.$plural3.' tagged as "'.implode('", "', $pkgDevTags).'") but you did not use --dev.'); -if ($io->askConfirmation('Do you want to re-run the command with --dev? [yes]? ')) { -$input->setOption('dev', true); -} -} - -unset($devPackages, $pkgDevTags); -} - -$requireKey = $input->getOption('dev') ? 'require-dev' : 'require'; -$removeKey = $input->getOption('dev') ? 'require' : 'require-dev'; - - -$requirementsToGuess = []; -foreach ($requirements as $package => $constraint) { -if ($constraint === 'guess') { -$requirements[$package] = '*'; -$requirementsToGuess[] = $package; -} -} - - -$versionParser = new VersionParser(); -foreach ($requirements as $package => $constraint) { -if (strtolower($package) === $composer->getPackage()->getName()) { -$io->writeError(sprintf('Root package \'%s\' cannot require itself in its composer.json', $package)); - -return 1; -} -if ($constraint === 'self.version') { -continue; -} -$versionParser->parseConstraints($constraint); -} - -$inconsistentRequireKeys = $this->getInconsistentRequireKeys($requirements, $requireKey); -if (count($inconsistentRequireKeys) > 0) { -foreach ($inconsistentRequireKeys as $package) { -$io->warning(sprintf( -'%s is currently present in the %s key and you ran the command %s the --dev flag, which will move it to the %s key.', -$package, -$removeKey, -$input->getOption('dev') ? 'with' : 'without', -$requireKey -)); -} - -if ($io->isInteractive()) { -if (!$io->askConfirmation(sprintf('Do you want to move %s? [no]? ', count($inconsistentRequireKeys) > 1 ? 'these requirements' : 'this requirement'), false)) { -if (!$io->askConfirmation(sprintf('Do you want to re-run the command %s --dev? [yes]? ', $input->getOption('dev') ? 'without' : 'with'), true)) { -return 0; -} - -$input->setOption('dev', true); -[$requireKey, $removeKey] = [$removeKey, $requireKey]; -} -} -} - -$sortPackages = $input->getOption('sort-packages') || $composer->getConfig()->get('sort-packages'); - -$this->firstRequire = $this->newlyCreated; -if (!$this->firstRequire) { -$composerDefinition = $this->json->read(); -if (count($composerDefinition['require'] ?? []) === 0 && count($composerDefinition['require-dev'] ?? []) === 0) { -$this->firstRequire = true; -} -} - -if (!$input->getOption('dry-run')) { -$this->updateFile($this->json, $requirements, $requireKey, $removeKey, $sortPackages); -} - -$io->writeError(''.$this->file.' has been '.($this->newlyCreated ? 'created' : 'updated').''); - -if ($input->getOption('no-update')) { -return 0; -} - -$composer->getPluginManager()->deactivateInstalledPlugins(); - -try { -$result = $this->doUpdate($input, $output, $io, $requirements, $requireKey, $removeKey); -if ($result === 0 && count($requirementsToGuess) > 0) { -$result = $this->updateRequirementsAfterResolution($requirementsToGuess, $requireKey, $removeKey, $sortPackages, $input->getOption('dry-run'), $input->getOption('fixed')); -} - -return $result; -} catch (\Exception $e) { -if (!$this->dependencyResolutionCompleted) { -$this->revertComposerFile(); -} -throw $e; -} finally { -$signalHandler->unregister(); -} -} - - - - - -private function getInconsistentRequireKeys(array $newRequirements, string $requireKey): array -{ -$requireKeys = $this->getPackagesByRequireKey(); -$inconsistentRequirements = []; -foreach ($requireKeys as $package => $packageRequireKey) { -if (!isset($newRequirements[$package])) { -continue; -} -if ($requireKey !== $packageRequireKey) { -$inconsistentRequirements[] = $package; -} -} - -return $inconsistentRequirements; -} - - - - -private function getPackagesByRequireKey(): array -{ -$composerDefinition = $this->json->read(); -$require = []; -$requireDev = []; - -if (isset($composerDefinition['require'])) { -$require = $composerDefinition['require']; -} - -if (isset($composerDefinition['require-dev'])) { -$requireDev = $composerDefinition['require-dev']; -} - -return array_merge( -array_fill_keys(array_keys($require), 'require'), -array_fill_keys(array_keys($requireDev), 'require-dev') -); -} - - - - - -private function doUpdate(InputInterface $input, OutputInterface $output, IOInterface $io, array $requirements, string $requireKey, string $removeKey): int -{ - -$this->resetComposer(); -$composer = $this->requireComposer(); - -$this->dependencyResolutionCompleted = false; -$composer->getEventDispatcher()->addListener(InstallerEvents::PRE_OPERATIONS_EXEC, function (): void { -$this->dependencyResolutionCompleted = true; -}, 10000); - -if ($input->getOption('dry-run')) { -$rootPackage = $composer->getPackage(); -$links = [ -'require' => $rootPackage->getRequires(), -'require-dev' => $rootPackage->getDevRequires(), -]; -$loader = new ArrayLoader(); -$newLinks = $loader->parseLinks($rootPackage->getName(), $rootPackage->getPrettyVersion(), BasePackage::$supportedLinkTypes[$requireKey]['method'], $requirements); -$links[$requireKey] = array_merge($links[$requireKey], $newLinks); -foreach ($requirements as $package => $constraint) { -unset($links[$removeKey][$package]); -} -$rootPackage->setRequires($links['require']); -$rootPackage->setDevRequires($links['require-dev']); - - -$references = $rootPackage->getReferences(); -$references = RootPackageLoader::extractReferences($requirements, $references); -$rootPackage->setReferences($references); -$stabilityFlags = $rootPackage->getStabilityFlags(); -$stabilityFlags = RootPackageLoader::extractStabilityFlags($requirements, $rootPackage->getMinimumStability(), $stabilityFlags); -$rootPackage->setStabilityFlags($stabilityFlags); -unset($stabilityFlags, $references); -} - -$updateDevMode = !$input->getOption('update-no-dev'); -$optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); -$authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); -$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); -$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); - -$updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; -$flags = ''; -if ($input->getOption('update-with-all-dependencies') || $input->getOption('with-all-dependencies')) { -$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; -$flags .= ' --with-all-dependencies'; -} elseif ($input->getOption('update-with-dependencies') || $input->getOption('with-dependencies')) { -$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; -$flags .= ' --with-dependencies'; -} - -$io->writeError('Running composer update '.implode(' ', array_keys($requirements)).$flags.''); - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'require', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); - -$install = Installer::create($io, $composer); - -[$preferSource, $preferDist] = $this->getPreferredInstallOptions($composer->getConfig(), $input); - -$install -->setDryRun($input->getOption('dry-run')) -->setVerbose($input->getOption('verbose')) -->setPreferSource($preferSource) -->setPreferDist($preferDist) -->setDevMode($updateDevMode) -->setOptimizeAutoloader($optimize) -->setClassMapAuthoritative($authoritative) -->setApcuAutoloader($apcu, $apcuPrefix) -->setUpdate(true) -->setInstall(!$input->getOption('no-install')) -->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) -->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) -->setPreferStable($input->getOption('prefer-stable')) -->setPreferLowest($input->getOption('prefer-lowest')) -->setAudit(!$input->getOption('no-audit')) -->setAuditFormat($this->getAuditFormat($input)) -; - - - -if (!$this->firstRequire && $composer->getLocker()->isLocked()) { -$install->setUpdateAllowList(array_keys($requirements)); -} - -$status = $install->run(); -if ($status !== 0) { -if ($status === Installer::ERROR_DEPENDENCY_RESOLUTION_FAILED) { -foreach ($this->normalizeRequirements($input->getArgument('packages')) as $req) { -if (!isset($req['version'])) { -$io->writeError('You can also try re-running composer require with an explicit version constraint, e.g. "composer require '.$req['name'].':*" to figure out if any version is installable, or "composer require '.$req['name'].':^2.1" if you know which you need.'); -break; -} -} -} -$this->revertComposerFile(); -} - -return $status; -} - - - - -private function updateRequirementsAfterResolution(array $requirementsToUpdate, string $requireKey, string $removeKey, bool $sortPackages, bool $dryRun, bool $fixed): int -{ -$composer = $this->requireComposer(); -$locker = $composer->getLocker(); -$requirements = []; -$versionSelector = new VersionSelector(new RepositorySet()); -$repo = $locker->isLocked() ? $composer->getLocker()->getLockedRepository(true) : $composer->getRepositoryManager()->getLocalRepository(); -foreach ($requirementsToUpdate as $packageName) { -$package = $repo->findPackage($packageName, '*'); -while ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} - -if (!$package instanceof PackageInterface) { -continue; -} - -if ($fixed) { -$requirements[$packageName] = $package->getPrettyVersion(); -} else { -$requirements[$packageName] = $versionSelector->findRecommendedRequireVersion($package); -} -$this->getIO()->writeError(sprintf( -'Using version %s for %s', -$requirements[$packageName], -$packageName -)); - -if (Preg::isMatch('{^dev-(?!main$|master$|trunk$|latest$)}', $requirements[$packageName])) { -$this->getIO()->warning('Version '.$requirements[$packageName].' looks like it may be a feature branch which is unlikely to keep working in the long run and may be in an unstable state'); -if ($this->getIO()->isInteractive() && !$this->getIO()->askConfirmation('Are you sure you want to use this constraint (Y) or would you rather abort (n) the whole operation [Y,n]? ')) { -$this->revertComposerFile(); - -return 1; -} -} -} - -if (!$dryRun) { -$this->updateFile($this->json, $requirements, $requireKey, $removeKey, $sortPackages); -if ($locker->isLocked()) { -$contents = file_get_contents($this->json->getPath()); -if (false === $contents) { -throw new \RuntimeException('Unable to read '.$this->json->getPath().' contents to update the lock file hash.'); -} -$lock = new JsonFile(Factory::getLockFile($this->json->getPath())); -$lockData = $lock->read(); -$lockData['content-hash'] = Locker::getContentHash($contents); -$lock->write($lockData); -} -} - -return 0; -} - - - - -private function updateFile(JsonFile $json, array $new, string $requireKey, string $removeKey, bool $sortPackages): void -{ -if ($this->updateFileCleanly($json, $new, $requireKey, $removeKey, $sortPackages)) { -return; -} - -$composerDefinition = $this->json->read(); -foreach ($new as $package => $version) { -$composerDefinition[$requireKey][$package] = $version; -unset($composerDefinition[$removeKey][$package]); -if (isset($composerDefinition[$removeKey]) && count($composerDefinition[$removeKey]) === 0) { -unset($composerDefinition[$removeKey]); -} -} -$this->json->write($composerDefinition); -} - - - - -private function updateFileCleanly(JsonFile $json, array $new, string $requireKey, string $removeKey, bool $sortPackages): bool -{ -$contents = file_get_contents($json->getPath()); - -$manipulator = new JsonManipulator($contents); - -foreach ($new as $package => $constraint) { -if (!$manipulator->addLink($requireKey, $package, $constraint, $sortPackages)) { -return false; -} -if (!$manipulator->removeSubNode($removeKey, $package)) { -return false; -} -} - -$manipulator->removeMainKeyIfEmpty($removeKey); - -file_put_contents($json->getPath(), $manipulator->getContents()); - -return true; -} - -protected function interact(InputInterface $input, OutputInterface $output): void -{ -} - -private function revertComposerFile(): void -{ -$io = $this->getIO(); - -if ($this->newlyCreated) { -$io->writeError("\n".'Installation failed, deleting '.$this->file.'.'); -unlink($this->json->getPath()); -if (file_exists($this->lock)) { -unlink($this->lock); -} -} else { -$msg = ' to its '; -if ($this->lockBackup) { -$msg = ' and '.$this->lock.' to their '; -} -$io->writeError("\n".'Installation failed, reverting '.$this->file.$msg.'original content.'); -file_put_contents($this->json->getPath(), $this->composerBackup); -if ($this->lockBackup) { -file_put_contents($this->lock, $this->lockBackup); -} -} -} -} diff --git a/composer/src/Composer/Command/RunScriptCommand.php b/composer/src/Composer/Command/RunScriptCommand.php deleted file mode 100644 index 5715d7bf0..000000000 --- a/composer/src/Composer/Command/RunScriptCommand.php +++ /dev/null @@ -1,187 +0,0 @@ -setName('run-script') -->setAliases(['run']) -->setDescription('Runs the scripts defined in composer.json') -->setDefinition([ -new InputArgument('script', InputArgument::OPTIONAL, 'Script name to run.', null, function () { -return array_map(static function ($script) { return $script['name']; }, $this->getScripts()); -}), -new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), -new InputOption('timeout', null, InputOption::VALUE_REQUIRED, 'Sets script timeout in seconds, or 0 for never.'), -new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), -new InputOption('list', 'l', InputOption::VALUE_NONE, 'List scripts.'), -]) -->setHelp( -<<run-script command runs scripts defined in composer.json: - -php composer.phar run-script post-update-cmd - -Read more at https://getcomposer.org/doc/03-cli.md#run-script-run -EOT -) -; -} - -protected function interact(InputInterface $input, OutputInterface $output): void -{ -$scripts = $this->getScripts(); -if (count($scripts) === 0) { -return; -} - -if ($input->getArgument('script') !== null || $input->getOption('list')) { -return; -} - -$options = []; -foreach ($scripts as $script) { -$options[$script['name']] = $script['description']; -} -$io = $this->getIO(); -$script = $io->select( -'Script to run: ', -$options, -'', -1, -'Invalid script name "%s"' -); - -$input->setArgument('script', $script); -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -if ($input->getOption('list')) { -return $this->listScripts($output); -} - -$script = $input->getArgument('script'); -if ($script === null) { -throw new \RuntimeException('Missing required argument "script"'); -} - -if (!in_array($script, $this->scriptEvents)) { -if (defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { -throw new \InvalidArgumentException(sprintf('Script "%s" cannot be run with this command', $script)); -} -} - -$composer = $this->requireComposer(); -$devMode = $input->getOption('dev') || !$input->getOption('no-dev'); -$event = new ScriptEvent($script, $composer, $this->getIO(), $devMode); -$hasListeners = $composer->getEventDispatcher()->hasEventListeners($event); -if (!$hasListeners) { -throw new \InvalidArgumentException(sprintf('Script "%s" is not defined in this package', $script)); -} - -$args = $input->getArgument('args'); - -if (null !== $timeout = $input->getOption('timeout')) { -if (!ctype_digit($timeout)) { -throw new \RuntimeException('Timeout value must be numeric and positive if defined, or 0 for forever'); -} - -ProcessExecutor::setTimeout((int) $timeout); -} - -Platform::putEnv('COMPOSER_DEV_MODE', $devMode ? '1' : '0'); - -return $composer->getEventDispatcher()->dispatchScript($script, $devMode, $args); -} - -protected function listScripts(OutputInterface $output): int -{ -$scripts = $this->getScripts(); -if (count($scripts) === 0) { -return 0; -} - -$io = $this->getIO(); -$io->writeError('scripts:'); -$table = []; -foreach ($scripts as $script) { -$table[] = [' '.$script['name'], $script['description']]; -} - -$this->renderTable($table, $output); - -return 0; -} - - - - -private function getScripts(): array -{ -$scripts = $this->requireComposer()->getPackage()->getScripts(); -if (count($scripts) === 0) { -return []; -} - -$result = []; -foreach ($scripts as $name => $script) { -$description = ''; -try { -$cmd = $this->getApplication()->find($name); -if ($cmd instanceof ScriptAliasCommand) { -$description = $cmd->getDescription(); -} -} catch (\Symfony\Component\Console\Exception\CommandNotFoundException $e) { - -} -$result[] = ['name' => $name, 'description' => $description]; -} - -return $result; -} -} diff --git a/composer/src/Composer/Command/ScriptAliasCommand.php b/composer/src/Composer/Command/ScriptAliasCommand.php deleted file mode 100644 index 93b39bebb..000000000 --- a/composer/src/Composer/Command/ScriptAliasCommand.php +++ /dev/null @@ -1,76 +0,0 @@ -script = $script; -$this->description = $description ?? 'Runs the '.$script.' script as defined in composer.json'; - -$this->ignoreValidationErrors(); - -parent::__construct(); -} - -protected function configure(): void -{ -$this -->setName($this->script) -->setDescription($this->description) -->setDefinition([ -new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), -new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), -]) -->setHelp( -<<run-script command runs scripts defined in composer.json: - -php composer.phar run-script post-update-cmd - -Read more at https://getcomposer.org/doc/03-cli.md#run-script-run -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$composer = $this->requireComposer(); - -$args = $input->getArguments(); - - -if (!method_exists($input, '__toString')) { -throw new \LogicException('Expected an Input instance that is stringable, got '.get_class($input)); -} - -return $composer->getEventDispatcher()->dispatchScript($this->script, $input->getOption('dev') || !$input->getOption('no-dev'), $args['args'], ['script-alias-input' => Preg::replace('{^\S+ ?}', '', $input->__toString(), 1)]); -} -} diff --git a/composer/src/Composer/Command/SearchCommand.php b/composer/src/Composer/Command/SearchCommand.php deleted file mode 100644 index 808b6780b..000000000 --- a/composer/src/Composer/Command/SearchCommand.php +++ /dev/null @@ -1,127 +0,0 @@ -setName('search') -->setDescription('Searches for packages') -->setDefinition([ -new InputOption('only-name', 'N', InputOption::VALUE_NONE, 'Search only in package names'), -new InputOption('only-vendor', 'O', InputOption::VALUE_NONE, 'Search only for vendor / organization names, returns only "vendor" as result'), -new InputOption('type', 't', InputOption::VALUE_REQUIRED, 'Search for a specific package type'), -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), -new InputArgument('tokens', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'tokens to search for'), -]) -->setHelp( -<<php composer.phar search symfony composer - -Read more at https://getcomposer.org/doc/03-cli.md#search -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ - -$platformRepo = new PlatformRepository; -$io = $this->getIO(); - -$format = $input->getOption('format'); -if (!in_array($format, ['text', 'json'])) { -$io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); - -return 1; -} - -if (!($composer = $this->tryComposer())) { -$composer = Factory::create($this->getIO(), [], $input->hasParameterOption('--no-plugins')); -} -$localRepo = $composer->getRepositoryManager()->getLocalRepository(); -$installedRepo = new CompositeRepository([$localRepo, $platformRepo]); -$repos = new CompositeRepository(array_merge([$installedRepo], $composer->getRepositoryManager()->getRepositories())); - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'search', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$mode = RepositoryInterface::SEARCH_FULLTEXT; -if ($input->getOption('only-name') === true) { -if ($input->getOption('only-vendor') === true) { -throw new \InvalidArgumentException('--only-name and --only-vendor cannot be used together'); -} -$mode = RepositoryInterface::SEARCH_NAME; -} elseif ($input->getOption('only-vendor') === true) { -$mode = RepositoryInterface::SEARCH_VENDOR; -} - -$type = $input->getOption('type'); - -$query = implode(' ', $input->getArgument('tokens')); -if ($mode !== RepositoryInterface::SEARCH_FULLTEXT) { -$query = preg_quote($query); -} - -$results = $repos->search($query, $mode, $type); - -if (\count($results) > 0 && $format === 'text') { -$width = $this->getTerminalWidth(); - -$nameLength = 0; -foreach ($results as $result) { -$nameLength = max(strlen($result['name']), $nameLength); -} -$nameLength += 1; -foreach ($results as $result) { -$description = $result['description'] ?? ''; -$warning = !empty($result['abandoned']) ? '! Abandoned ! ' : ''; -$remaining = $width - $nameLength - strlen($warning) - 2; -if (strlen($description) > $remaining) { -$description = substr($description, 0, $remaining - 3) . '...'; -} - -$link = $result['url'] ?? null; -if ($link !== null) { -$io->write(''.$result['name'].''. str_repeat(' ', $nameLength - strlen($result['name'])) . $warning . $description); -} else { -$io->write(str_pad($result['name'], $nameLength, ' ') . $warning . $description); -} -} -} elseif ($format === 'json') { -$io->write(JsonFile::encode($results)); -} - -return 0; -} -} diff --git a/composer/src/Composer/Command/SelfUpdateCommand.php b/composer/src/Composer/Command/SelfUpdateCommand.php deleted file mode 100644 index 85beba9e7..000000000 --- a/composer/src/Composer/Command/SelfUpdateCommand.php +++ /dev/null @@ -1,640 +0,0 @@ -setName('self-update') -->setAliases(['selfupdate']) -->setDescription('Updates composer.phar to the latest version') -->setDefinition([ -new InputOption('rollback', 'r', InputOption::VALUE_NONE, 'Revert to an older installation of composer'), -new InputOption('clean-backups', null, InputOption::VALUE_NONE, 'Delete old backups during an update. This makes the current version of composer the only backup available after the update'), -new InputArgument('version', InputArgument::OPTIONAL, 'The version to update to'), -new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), -new InputOption('update-keys', null, InputOption::VALUE_NONE, 'Prompt user for a key update'), -new InputOption('stable', null, InputOption::VALUE_NONE, 'Force an update to the stable channel'), -new InputOption('preview', null, InputOption::VALUE_NONE, 'Force an update to the preview channel'), -new InputOption('snapshot', null, InputOption::VALUE_NONE, 'Force an update to the snapshot channel'), -new InputOption('1', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 1.x versions'), -new InputOption('2', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 2.x versions'), -new InputOption('2.2', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 2.2.x LTS versions'), -new InputOption('set-channel-only', null, InputOption::VALUE_NONE, 'Only store the channel as the default one and then exit'), -]) -->setHelp( -<<self-update command checks getcomposer.org for newer -versions of composer and if found, installs the latest. - -php composer.phar self-update - -Read more at https://getcomposer.org/doc/03-cli.md#self-update-selfupdate -EOT -) -; -} - - - - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -if ($_SERVER['argv'][0] === 'Standard input code') { -return 1; -} - - - -class_exists('Composer\Util\Platform'); -class_exists('Composer\Downloader\FilesystemException'); - -$config = Factory::createConfig(); - -if ($config->get('disable-tls') === true) { -$baseUrl = 'http://' . self::HOMEPAGE; -} else { -$baseUrl = 'https://' . self::HOMEPAGE; -} - -$io = $this->getIO(); -$httpDownloader = Factory::createHttpDownloader($io, $config); - -$versionsUtil = new Versions($config, $httpDownloader); - - -$requestedChannel = null; -foreach (Versions::CHANNELS as $channel) { -if ($input->getOption($channel)) { -$requestedChannel = $channel; -$versionsUtil->setChannel($channel, $io); -break; -} -} - -if ($input->getOption('set-channel-only')) { -return 0; -} - -$cacheDir = $config->get('cache-dir'); -$rollbackDir = $config->get('data-dir'); -$home = $config->get('home'); -$localFilename = realpath($_SERVER['argv'][0]); -if (false === $localFilename) { -$localFilename = $_SERVER['argv'][0]; -} - -if ($input->getOption('update-keys')) { -$this->fetchKeys($io, $config); - -return 0; -} - - -if (!file_exists($localFilename)) { -throw new FilesystemException('Composer update failed: the "'.$localFilename.'" is not accessible'); -} - - -$tmpDir = is_writable(dirname($localFilename)) ? dirname($localFilename) : $cacheDir; - - -if (!is_writable($tmpDir)) { -throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); -} - - -if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { -$composerUser = posix_getpwuid(posix_geteuid()); -$homeDirOwnerId = fileowner($home); -if (is_array($composerUser) && $homeDirOwnerId !== false) { -$homeOwner = posix_getpwuid($homeDirOwnerId); -if (is_array($homeOwner) && isset($composerUser['name'], $homeOwner['name']) && $composerUser['name'] !== $homeOwner['name']) { -$io->writeError('You are running Composer as "'.$composerUser['name'].'", while "'.$home.'" is owned by "'.$homeOwner['name'].'"'); -} -} -} - -if ($input->getOption('rollback')) { -return $this->rollback($output, $rollbackDir, $localFilename); -} - -$latest = $versionsUtil->getLatest(); -$latestStable = $versionsUtil->getLatest('stable'); -try { -$latestPreview = $versionsUtil->getLatest('preview'); -} catch (\UnexpectedValueException $e) { -$latestPreview = $latestStable; -} -$latestVersion = $latest['version']; -$updateVersion = $input->getArgument('version') ?? $latestVersion; -$currentMajorVersion = Preg::replace('{^(\d+).*}', '$1', Composer::getVersion()); -$updateMajorVersion = Preg::replace('{^(\d+).*}', '$1', $updateVersion); -$previewMajorVersion = Preg::replace('{^(\d+).*}', '$1', $latestPreview['version']); - -if ($versionsUtil->getChannel() === 'stable' && null === $input->getArgument('version')) { - - -if ($currentMajorVersion < $updateMajorVersion) { -$skippedVersion = $updateVersion; - -$versionsUtil->setChannel($currentMajorVersion); - -$latest = $versionsUtil->getLatest(); -$latestStable = $versionsUtil->getLatest('stable'); -$latestVersion = $latest['version']; -$updateVersion = $latestVersion; - -$io->writeError('A new stable major version of Composer is available ('.$skippedVersion.'), run "composer self-update --'.$updateMajorVersion.'" to update to it. See also https://getcomposer.org/'.$updateMajorVersion.''); -} elseif ($currentMajorVersion < $previewMajorVersion) { - -$io->writeError('A preview release of the next major version of Composer is available ('.$latestPreview['version'].'), run "composer self-update --preview" to give it a try. See also https://github.com/composer/composer/releases for changelogs.'); -} -} - -$effectiveChannel = $requestedChannel === null ? $versionsUtil->getChannel() : $requestedChannel; -if (is_numeric($effectiveChannel) && strpos($latestStable['version'], $effectiveChannel) !== 0) { -$io->writeError('Warning: You forced the install of '.$latestVersion.' via --'.$effectiveChannel.', but '.$latestStable['version'].' is the latest stable version. Updating to it via composer self-update --stable is recommended.'); -} -if (isset($latest['eol'])) { -$io->writeError('Warning: Version '.$latestVersion.' is EOL / End of Life. '.$latestStable['version'].' is the latest stable version. Updating to it via composer self-update --stable is recommended.'); -} - -if (Preg::isMatch('{^[0-9a-f]{40}$}', $updateVersion) && $updateVersion !== $latestVersion) { -$io->writeError('You can not update to a specific SHA-1 as those phars are not available for download'); - -return 1; -} - -$channelString = $versionsUtil->getChannel(); -if (is_numeric($channelString)) { -$channelString .= '.x'; -} - -if (Composer::VERSION === $updateVersion) { -$io->writeError( -sprintf( -'You are already using the latest available Composer version %s (%s channel).', -$updateVersion, -$channelString -) -); - - -if ($input->getOption('clean-backups')) { -$this->cleanBackups($rollbackDir, $this->getLastBackupVersion($rollbackDir)); -} - -return 0; -} - -$tempFilename = $tmpDir . '/' . basename($localFilename, '.phar').'-temp'.random_int(0, 10000000).'.phar'; -$backupFile = sprintf( -'%s/%s-%s%s', -$rollbackDir, -strtr(Composer::RELEASE_DATE, ' :', '_-'), -Preg::replace('{^([0-9a-f]{7})[0-9a-f]{33}$}', '$1', Composer::VERSION), -self::OLD_INSTALL_EXT -); - -$updatingToTag = !Preg::isMatch('{^[0-9a-f]{40}$}', $updateVersion); - -$io->write(sprintf("Upgrading to version %s (%s channel).", $updateVersion, $channelString)); -$remoteFilename = $baseUrl . ($updatingToTag ? "/download/{$updateVersion}/composer.phar" : '/composer.phar'); -try { -$signature = $httpDownloader->get($remoteFilename.'.sig')->getBody(); -} catch (TransportException $e) { -if ($e->getStatusCode() === 404) { -throw new \InvalidArgumentException('Version "'.$updateVersion.'" could not be found.', 0, $e); -} -throw $e; -} -$io->writeError(' ', false); -$httpDownloader->copy($remoteFilename, $tempFilename); -$io->writeError(''); - -if (!file_exists($tempFilename) || null === $signature || '' === $signature) { -$io->writeError('The download of the new composer version failed for an unexpected reason'); - -return 1; -} - - -if (!extension_loaded('openssl') && $config->get('disable-tls')) { -$io->writeError('Skipping phar signature verification as you have disabled OpenSSL via config.disable-tls'); -} else { -if (!extension_loaded('openssl')) { -throw new \RuntimeException('The openssl extension is required for phar signatures to be verified but it is not available. ' -. 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); -} - -$sigFile = 'file://'.$home.'/' . ($updatingToTag ? 'keys.tags.pub' : 'keys.dev.pub'); -if (!file_exists($sigFile)) { -file_put_contents( -$home.'/keys.dev.pub', -<<getOption('clean-backups')) { -$this->cleanBackups($rollbackDir); -} - -if (!$this->setLocalPhar($localFilename, $tempFilename, $backupFile)) { -@unlink($tempFilename); - -return 1; -} - -if (file_exists($backupFile)) { -$io->writeError(sprintf( -'Use composer self-update --rollback to return to version %s', -Composer::VERSION -)); -} else { -$io->writeError('A backup of the current version could not be written to '.$backupFile.', no rollback possible'); -} - -return 0; -} - - - - -protected function fetchKeys(IOInterface $io, Config $config): void -{ -if (!$io->isInteractive()) { -throw new \RuntimeException('Public keys can not be fetched in non-interactive mode, please run Composer interactively'); -} - -$io->write('Open https://composer.github.io/pubkeys.html to find the latest keys'); - -$validator = static function ($value): string { -if (!Preg::isMatch('{^-----BEGIN PUBLIC KEY-----$}', trim($value))) { -throw new \UnexpectedValueException('Invalid input'); -} - -return trim($value)."\n"; -}; - -$devKey = ''; -while (!Preg::isMatch('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $devKey, $match)) { -$devKey = $io->askAndValidate('Enter Dev / Snapshot Public Key (including lines with -----): ', $validator); -while ($line = $io->ask('')) { -$devKey .= trim($line)."\n"; -if (trim($line) === '-----END PUBLIC KEY-----') { -break; -} -} -} -file_put_contents($keyPath = $config->get('home').'/keys.dev.pub', $match[0]); -$io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); - -$tagsKey = ''; -while (!Preg::isMatch('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $tagsKey, $match)) { -$tagsKey = $io->askAndValidate('Enter Tags Public Key (including lines with -----): ', $validator); -while ($line = $io->ask('')) { -$tagsKey .= trim($line)."\n"; -if (trim($line) === '-----END PUBLIC KEY-----') { -break; -} -} -} -file_put_contents($keyPath = $config->get('home').'/keys.tags.pub', $match[0]); -$io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); - -$io->write('Public keys stored in '.$config->get('home')); -} - - - - -protected function rollback(OutputInterface $output, string $rollbackDir, string $localFilename): int -{ -$rollbackVersion = $this->getLastBackupVersion($rollbackDir); -if (null === $rollbackVersion) { -throw new \UnexpectedValueException('Composer rollback failed: no installation to roll back to in "'.$rollbackDir.'"'); -} - -$oldFile = $rollbackDir . '/' . $rollbackVersion . self::OLD_INSTALL_EXT; - -if (!is_file($oldFile)) { -throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be found'); -} -if (!Filesystem::isReadable($oldFile)) { -throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be read'); -} - -$io = $this->getIO(); -$io->writeError(sprintf("Rolling back to version %s.", $rollbackVersion)); -if (!$this->setLocalPhar($localFilename, $oldFile)) { -return 1; -} - -return 0; -} - - - - - - - - - - -protected function setLocalPhar(string $localFilename, string $newFilename, ?string $backupTarget = null): bool -{ -$io = $this->getIO(); -$perms = @fileperms($localFilename); -if ($perms !== false) { -@chmod($newFilename, $perms); -} - - -if (!$this->validatePhar($newFilename, $error)) { -$io->writeError('The '.($backupTarget !== null ? 'update' : 'backup').' file is corrupted ('.$error.')'); - -if ($backupTarget !== null) { -$io->writeError('Please re-run the self-update command to try again.'); -} - -return false; -} - - -if ($backupTarget !== null) { -@copy($localFilename, $backupTarget); -} - -try { -if (Platform::isWindows()) { - - -copy($newFilename, $localFilename); -@unlink($newFilename); -} else { -rename($newFilename, $localFilename); -} - -return true; -} catch (\Exception $e) { - -if (!is_writable(dirname($localFilename)) -&& $io->isInteractive() -&& $this->isWindowsNonAdminUser()) { -return $this->tryAsWindowsAdmin($localFilename, $newFilename); -} - -@unlink($newFilename); -$action = 'Composer '.($backupTarget !== null ? 'update' : 'rollback'); -throw new FilesystemException($action.' failed: "'.$localFilename.'" could not be written.'.PHP_EOL.$e->getMessage()); -} -} - -protected function cleanBackups(string $rollbackDir, ?string $except = null): void -{ -$finder = $this->getOldInstallationFinder($rollbackDir); -$io = $this->getIO(); -$fs = new Filesystem; - -foreach ($finder as $file) { -if ($file->getBasename(self::OLD_INSTALL_EXT) === $except) { -continue; -} -$file = (string) $file; -$io->writeError('Removing: '.$file.''); -$fs->remove($file); -} -} - -protected function getLastBackupVersion(string $rollbackDir): ?string -{ -$finder = $this->getOldInstallationFinder($rollbackDir); -$finder->sortByName(); -$files = iterator_to_array($finder); - -if (count($files) > 0) { -return end($files)->getBasename(self::OLD_INSTALL_EXT); -} - -return null; -} - -protected function getOldInstallationFinder(string $rollbackDir): Finder -{ -return Finder::create() -->depth(0) -->files() -->name('*' . self::OLD_INSTALL_EXT) -->in($rollbackDir); -} - - - - - - - - - - - - - -protected function validatePhar(string $pharFile, ?string &$error): bool -{ -if ((bool) ini_get('phar.readonly')) { -return true; -} - -try { - -$phar = new \Phar($pharFile); - -unset($phar); -$result = true; -} catch (\Exception $e) { -if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) { -throw $e; -} -$error = $e->getMessage(); -$result = false; -} - -return $result; -} - - - - -protected function isWindowsNonAdminUser(): bool -{ -if (!Platform::isWindows()) { -return false; -} - - -exec('fltmc.exe filters', $output, $exitCode); - -return $exitCode !== 0; -} - - - - - - - - - - -protected function tryAsWindowsAdmin(string $localFilename, string $newFilename): bool -{ -$io = $this->getIO(); - -$io->writeError('Unable to write "'.$localFilename.'". Access is denied.'); -$helpMessage = 'Please run the self-update command as an Administrator.'; -$question = 'Complete this operation with Administrator privileges [Y,n]? '; - -if (!$io->askConfirmation($question, true)) { -$io->writeError('Operation cancelled. '.$helpMessage.''); - -return false; -} - -$tmpFile = tempnam(sys_get_temp_dir(), ''); -if (false === $tmpFile) { -$io->writeError('Operation failed.'.$helpMessage.''); - -return false; -} -$script = $tmpFile.'.vbs'; -rename($tmpFile, $script); - -$checksum = hash_file('sha256', $newFilename); - - -$source = str_replace('/', '\\', $newFilename); -$destination = str_replace('/', '\\', $localFilename); - -$vbs = <<writeError('Operation succeeded.'); -@unlink($newFilename); -} else { -$io->writeError('Operation failed.'.$helpMessage.''); -} - -return $result; -} -} diff --git a/composer/src/Composer/Command/ShowCommand.php b/composer/src/Composer/Command/ShowCommand.php deleted file mode 100644 index d4a525642..000000000 --- a/composer/src/Composer/Command/ShowCommand.php +++ /dev/null @@ -1,1416 +0,0 @@ -setName('show') -->setAliases(['info']) -->setDescription('Shows information about packages') -->setDefinition([ -new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.', null, $this->suggestPackageBasedOnMode()), -new InputArgument('version', InputArgument::OPTIONAL, 'Version or version constraint to inspect'), -new InputOption('all', null, InputOption::VALUE_NONE, 'List all packages'), -new InputOption('locked', null, InputOption::VALUE_NONE, 'List all locked packages'), -new InputOption('installed', 'i', InputOption::VALUE_NONE, 'List installed packages only (enabled by default, only present for BC).'), -new InputOption('platform', 'p', InputOption::VALUE_NONE, 'List platform packages only'), -new InputOption('available', 'a', InputOption::VALUE_NONE, 'List available packages only'), -new InputOption('self', 's', InputOption::VALUE_NONE, 'Show the root package information'), -new InputOption('name-only', 'N', InputOption::VALUE_NONE, 'List package names only'), -new InputOption('path', 'P', InputOption::VALUE_NONE, 'Show package paths'), -new InputOption('tree', 't', InputOption::VALUE_NONE, 'List the dependencies as a tree'), -new InputOption('latest', 'l', InputOption::VALUE_NONE, 'Show the latest version'), -new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show the latest version but only for packages that are outdated'), -new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.', null, $this->suggestInstalledPackage(false)), -new InputOption('major-only', 'M', InputOption::VALUE_NONE, 'Show only packages that have major SemVer-compatible updates. Use with the --latest or --outdated option.'), -new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --latest or --outdated option.'), -new InputOption('patch-only', null, InputOption::VALUE_NONE, 'Show only packages that have patch SemVer-compatible updates. Use with the --latest or --outdated option.'), -new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), -new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), -new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages). Use with the --outdated option'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages). Use with the --outdated option'), -]) -->setHelp( -<<getOption('available') || $input->getOption('all')) { -return $this->suggestAvailablePackageInclPlatform()($input); -} - -if ($input->getOption('platform')) { -return $this->suggestPlatformPackage()($input); -} - -return $this->suggestInstalledPackage(false)($input); -}; -} - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$this->versionParser = new VersionParser; -if ($input->getOption('tree')) { -$this->initStyles($output); -} - -$composer = $this->tryComposer(); -$io = $this->getIO(); - -if ($input->getOption('installed')) { -$io->writeError('You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.'); -} - -if ($input->getOption('outdated')) { -$input->setOption('latest', true); -} elseif (count($input->getOption('ignore')) > 0) { -$io->writeError('You are using the option "ignore" for action other than "outdated", it will be ignored.'); -} - -if ($input->getOption('direct') && ($input->getOption('all') || $input->getOption('available') || $input->getOption('platform'))) { -$io->writeError('The --direct (-D) option is not usable in combination with --all, --platform (-p) or --available (-a)'); - -return 1; -} - -if ($input->getOption('tree') && ($input->getOption('all') || $input->getOption('available'))) { -$io->writeError('The --tree (-t) option is not usable in combination with --all or --available (-a)'); - -return 1; -} - -if (count(array_filter([$input->getOption('patch-only'), $input->getOption('minor-only'), $input->getOption('major-only')])) > 1) { -$io->writeError('Only one of --major-only, --minor-only or --patch-only can be used at once'); - -return 1; -} - -if ($input->getOption('tree') && $input->getOption('latest')) { -$io->writeError('The --tree (-t) option is not usable in combination with --latest (-l)'); - -return 1; -} - -if ($input->getOption('tree') && $input->getOption('path')) { -$io->writeError('The --tree (-t) option is not usable in combination with --path (-P)'); - -return 1; -} - -$format = $input->getOption('format'); -if (!in_array($format, ['text', 'json'])) { -$io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); - -return 1; -} - -$platformReqFilter = $this->getPlatformRequirementFilter($input); - - -$platformOverrides = []; -if ($composer) { -$platformOverrides = $composer->getConfig()->get('platform'); -} -$platformRepo = new PlatformRepository([], $platformOverrides); -$lockedRepo = null; - -if ($input->getOption('self')) { -$package = clone $this->requireComposer()->getPackage(); -if ($input->getOption('name-only')) { -$io->write($package->getName()); - -return 0; -} -if ($input->getArgument('package')) { -throw new \InvalidArgumentException('You cannot use --self together with a package name'); -} -$repos = $installedRepo = new InstalledRepository([new RootPackageRepository($package)]); -} elseif ($input->getOption('platform')) { -$repos = $installedRepo = new InstalledRepository([$platformRepo]); -} elseif ($input->getOption('available')) { -$installedRepo = new InstalledRepository([$platformRepo]); -if ($composer) { -$repos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); -$installedRepo->addRepository($composer->getRepositoryManager()->getLocalRepository()); -} else { -$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io); -$repos = new CompositeRepository($defaultRepos); -$io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); -} -} elseif ($input->getOption('all') && $composer) { -$localRepo = $composer->getRepositoryManager()->getLocalRepository(); -$locker = $composer->getLocker(); -if ($locker->isLocked()) { -$lockedRepo = $locker->getLockedRepository(true); -$installedRepo = new InstalledRepository([$lockedRepo, $localRepo, $platformRepo]); -} else { -$installedRepo = new InstalledRepository([$localRepo, $platformRepo]); -} -$repos = new CompositeRepository(array_merge([new FilterRepository($installedRepo, ['canonical' => false])], $composer->getRepositoryManager()->getRepositories())); -} elseif ($input->getOption('all')) { -$defaultRepos = RepositoryFactory::defaultReposWithDefaultManager($io); -$io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); -$installedRepo = new InstalledRepository([$platformRepo]); -$repos = new CompositeRepository(array_merge([$installedRepo], $defaultRepos)); -} elseif ($input->getOption('locked')) { -if (!$composer || !$composer->getLocker()->isLocked()) { -throw new \UnexpectedValueException('A valid composer.json and composer.lock files is required to run this command with --locked'); -} -$locker = $composer->getLocker(); -$lockedRepo = $locker->getLockedRepository(!$input->getOption('no-dev')); -$repos = $installedRepo = new InstalledRepository([$lockedRepo]); -} else { - -if (!$composer) { -$composer = $this->requireComposer(); -} -$rootPkg = $composer->getPackage(); -$repos = $installedRepo = new InstalledRepository([$composer->getRepositoryManager()->getLocalRepository()]); - -if ($input->getOption('no-dev')) { -$packages = RepositoryUtils::filterRequiredPackages($installedRepo->getPackages(), $rootPkg); -$repos = $installedRepo = new InstalledRepository([new InstalledArrayRepository(array_map(static function ($pkg): PackageInterface { -return clone $pkg; -}, $packages))]); -} - -if (!$installedRepo->getPackages() && ($rootPkg->getRequires() || $rootPkg->getDevRequires())) { -$io->writeError('No dependencies installed. Try running composer install or update.'); -} -} - -if ($composer) { -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'show', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); -} - -if ($input->getOption('latest') && null === $composer) { -$io->writeError('No composer.json found in the current directory, disabling "latest" option'); -$input->setOption('latest', false); -} - -$packageFilter = $input->getArgument('package'); - - -if (isset($package)) { -$versions = [$package->getPrettyVersion() => $package->getVersion()]; -} elseif (null !== $packageFilter && !str_contains($packageFilter, '*')) { -[$package, $versions] = $this->getPackage($installedRepo, $repos, $packageFilter, $input->getArgument('version')); - -if (!isset($package)) { -$options = $input->getOptions(); -$hint = ''; -if ($input->getOption('locked')) { -$hint .= ' in lock file'; -} -if (isset($options['working-dir'])) { -$hint .= ' in ' . $options['working-dir'] . '/composer.json'; -} -if (PlatformRepository::isPlatformPackage($packageFilter) && !$input->getOption('platform')) { -$hint .= ', try using --platform (-p) to show platform packages'; -} -if (!$input->getOption('all')) { -$hint .= ', try using --available (-a) to show all available packages'; -} - -throw new \InvalidArgumentException('Package "' . $packageFilter . '" not found'.$hint.'.'); -} -} - -if (isset($package)) { -assert(isset($versions)); - -$exitCode = 0; -if ($input->getOption('tree')) { -$arrayTree = $this->generatePackageTree($package, $installedRepo, $repos); - -if ('json' === $format) { -$io->write(JsonFile::encode(['installed' => [$arrayTree]])); -} else { -$this->displayPackageTree([$arrayTree]); -} - -return $exitCode; -} - -$latestPackage = null; -if ($input->getOption('latest')) { -$latestPackage = $this->findLatestPackage($package, $composer, $platformRepo, $input->getOption('major-only'), $input->getOption('minor-only'), $input->getOption('patch-only'), $platformReqFilter); -} -if ( -$input->getOption('outdated') -&& $input->getOption('strict') -&& null !== $latestPackage -&& $latestPackage->getFullPrettyVersion() !== $package->getFullPrettyVersion() -&& (!$latestPackage instanceof CompletePackageInterface || !$latestPackage->isAbandoned()) -) { -$exitCode = 1; -} -if ($input->getOption('path')) { -$io->write($package->getName(), false); -$io->write(' ' . strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n")); - -return $exitCode; -} - -if ('json' === $format) { -$this->printPackageInfoAsJson($package, $versions, $installedRepo, $latestPackage ?: null); -} else { -$this->printPackageInfo($package, $versions, $installedRepo, $latestPackage ?: null); -} - -return $exitCode; -} - - -if ($input->getOption('tree')) { -$rootRequires = $this->getRootRequires(); -$packages = $installedRepo->getPackages(); -usort($packages, static function (BasePackage $a, BasePackage $b): int { -return strcmp((string) $a, (string) $b); -}); -$arrayTree = []; -foreach ($packages as $package) { -if (in_array($package->getName(), $rootRequires, true)) { -$arrayTree[] = $this->generatePackageTree($package, $installedRepo, $repos); -} -} - -if ('json' === $format) { -$io->write(JsonFile::encode(['installed' => $arrayTree])); -} else { -$this->displayPackageTree($arrayTree); -} - -return 0; -} - - - -$packages = []; -$packageFilterRegex = null; -if (null !== $packageFilter) { -$packageFilterRegex = '{^'.str_replace('\\*', '.*?', preg_quote($packageFilter)).'$}i'; -} - -$packageListFilter = null; -if ($input->getOption('direct')) { -$packageListFilter = $this->getRootRequires(); -} - -if ($input->getOption('path') && null === $composer) { -$io->writeError('No composer.json found in the current directory, disabling "path" option'); -$input->setOption('path', false); -} - -foreach (RepositoryUtils::flattenRepositories($repos) as $repo) { -if ($repo === $platformRepo) { -$type = 'platform'; -} elseif ($lockedRepo !== null && $repo === $lockedRepo) { -$type = 'locked'; -} elseif ($repo === $installedRepo || in_array($repo, $installedRepo->getRepositories(), true)) { -$type = 'installed'; -} else { -$type = 'available'; -} -if ($repo instanceof ComposerRepository) { -foreach ($repo->getPackageNames($packageFilter) as $name) { -$packages[$type][$name] = $name; -} -} else { -foreach ($repo->getPackages() as $package) { -if (!isset($packages[$type][$package->getName()]) -|| !is_object($packages[$type][$package->getName()]) -|| version_compare($packages[$type][$package->getName()]->getVersion(), $package->getVersion(), '<') -) { -while ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} -if (!$packageFilterRegex || Preg::isMatch($packageFilterRegex, $package->getName())) { -if (null === $packageListFilter || in_array($package->getName(), $packageListFilter, true)) { -$packages[$type][$package->getName()] = $package; -} -} -} -} -if ($repo === $platformRepo) { -foreach ($platformRepo->getDisabledPackages() as $name => $package) { -$packages[$type][$name] = $package; -} -} -} -} - -$showAllTypes = $input->getOption('all'); -$showLatest = $input->getOption('latest'); -$showMajorOnly = $input->getOption('major-only'); -$showMinorOnly = $input->getOption('minor-only'); -$showPatchOnly = $input->getOption('patch-only'); -$ignoredPackages = array_map('strtolower', $input->getOption('ignore')); -$indent = $showAllTypes ? ' ' : ''; - -$latestPackages = []; -$exitCode = 0; -$viewData = []; -$viewMetaData = []; -foreach (['platform' => true, 'locked' => true, 'available' => false, 'installed' => true] as $type => $showVersion) { -if (isset($packages[$type])) { -ksort($packages[$type]); - -$nameLength = $versionLength = $latestLength = 0; - -if ($showLatest && $showVersion) { -foreach ($packages[$type] as $package) { -if (is_object($package)) { -$latestPackage = $this->findLatestPackage($package, $composer, $platformRepo, $showMajorOnly, $showMinorOnly, $showPatchOnly, $platformReqFilter); -if ($latestPackage === null) { -continue; -} - -$latestPackages[$package->getPrettyName()] = $latestPackage; -} -} -} - -$writePath = !$input->getOption('name-only') && $input->getOption('path'); -$writeVersion = !$input->getOption('name-only') && !$input->getOption('path') && $showVersion; -$writeLatest = $writeVersion && $showLatest; -$writeDescription = !$input->getOption('name-only') && !$input->getOption('path'); - -$hasOutdatedPackages = false; - -$viewData[$type] = []; -foreach ($packages[$type] as $package) { -$packageViewData = []; -if (is_object($package)) { -$latestPackage = null; -if ($showLatest && isset($latestPackages[$package->getPrettyName()])) { -$latestPackage = $latestPackages[$package->getPrettyName()]; -} - - -$packageIsUpToDate = $latestPackage && $latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion() && (!$latestPackage instanceof CompletePackageInterface || !$latestPackage->isAbandoned()); - -$packageIsUpToDate = $packageIsUpToDate || ($latestPackage === null && $showMajorOnly); -$packageIsIgnored = \in_array($package->getPrettyName(), $ignoredPackages, true); -if ($input->getOption('outdated') && ($packageIsUpToDate || $packageIsIgnored)) { -continue; -} - -if ($input->getOption('outdated') || $input->getOption('strict')) { -$hasOutdatedPackages = true; -} - -$packageViewData['name'] = $package->getPrettyName(); -$packageViewData['direct-dependency'] = in_array($package->getName(), $this->getRootRequires(), true); -if ($format !== 'json' || true !== $input->getOption('name-only')) { -$packageViewData['homepage'] = $package instanceof CompletePackageInterface ? $package->getHomepage() : null; -$packageViewData['source'] = PackageInfo::getViewSourceUrl($package); -} -$nameLength = max($nameLength, strlen($package->getPrettyName())); -if ($writeVersion) { -$packageViewData['version'] = $package->getFullPrettyVersion(); -$versionLength = max($versionLength, strlen($package->getFullPrettyVersion())); -} -if ($writeLatest && $latestPackage) { -$packageViewData['latest'] = $latestPackage->getFullPrettyVersion(); -$packageViewData['latest-status'] = $this->getUpdateStatus($latestPackage, $package); -$latestLength = max($latestLength, strlen($packageViewData['latest'])); -} elseif ($writeLatest) { -$packageViewData['latest'] = '[none matched]'; -$packageViewData['latest-status'] = 'up-to-date'; -$latestLength = max($latestLength, strlen($packageViewData['latest'])); -} -if ($writeDescription && $package instanceof CompletePackageInterface) { -$packageViewData['description'] = $package->getDescription(); -} -if ($writePath) { -$packageViewData['path'] = strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n"); -} - -$packageIsAbandoned = false; -if ($latestPackage instanceof CompletePackageInterface && $latestPackage->isAbandoned()) { -$replacementPackageName = $latestPackage->getReplacementPackage(); -$replacement = $replacementPackageName !== null -? 'Use ' . $latestPackage->getReplacementPackage() . ' instead' -: 'No replacement was suggested'; -$packageWarning = sprintf( -'Package %s is abandoned, you should avoid using it. %s.', -$package->getPrettyName(), -$replacement -); -$packageViewData['warning'] = $packageWarning; -$packageIsAbandoned = $replacementPackageName ?? true; -} - -$packageViewData['abandoned'] = $packageIsAbandoned; -} else { -$packageViewData['name'] = $package; -$nameLength = max($nameLength, strlen($package)); -} -$viewData[$type][] = $packageViewData; -} -$viewMetaData[$type] = [ -'nameLength' => $nameLength, -'versionLength' => $versionLength, -'latestLength' => $latestLength, -'writeLatest' => $writeLatest, -]; -if ($input->getOption('strict') && $hasOutdatedPackages) { -$exitCode = 1; -break; -} -} -} - -if ('json' === $format) { -$io->write(JsonFile::encode($viewData)); -} else { -if ($input->getOption('latest') && array_filter($viewData)) { -if (!$io->isDecorated()) { -$io->writeError('Legend:'); -$io->writeError('! patch or minor release available - update recommended'); -$io->writeError('~ major release available - update possible'); -if (!$input->getOption('outdated')) { -$io->writeError('= up to date version'); -} -} else { -$io->writeError('Color legend:'); -$io->writeError('- patch or minor release available - update recommended'); -$io->writeError('- major release available - update possible'); -if (!$input->getOption('outdated')) { -$io->writeError('- up to date version'); -} -} -} - -$width = $this->getTerminalWidth(); - -foreach ($viewData as $type => $packages) { -$nameLength = $viewMetaData[$type]['nameLength']; -$versionLength = $viewMetaData[$type]['versionLength']; -$latestLength = $viewMetaData[$type]['latestLength']; -$writeLatest = $viewMetaData[$type]['writeLatest']; - -$versionFits = $nameLength + $versionLength + 3 <= $width; -$latestFits = $nameLength + $versionLength + $latestLength + 3 <= $width; -$descriptionFits = $nameLength + $versionLength + $latestLength + 24 <= $width; - -if ($latestFits && !$io->isDecorated()) { -$latestLength += 2; -} - -if ($showAllTypes) { -if ('available' === $type) { -$io->write('' . $type . ':'); -} else { -$io->write('' . $type . ':'); -} -} - -if ($writeLatest && !$input->getOption('direct')) { -$directDeps = []; -$transitiveDeps = []; -foreach ($packages as $pkg) { -if ($pkg['direct-dependency'] ?? false) { -$directDeps[] = $pkg; -} else { -$transitiveDeps[] = $pkg; -} -} - -$io->writeError(''); -$io->writeError('Direct dependencies required in composer.json:'); -if (\count($directDeps) > 0) { -$this->printPackages($io, $directDeps, $indent, $versionFits, $latestFits, $descriptionFits, $width, $versionLength, $nameLength, $latestLength); -} else { -$io->writeError('Everything up to date'); -} -$io->writeError(''); -$io->writeError('Transitive dependencies not required in composer.json:'); -if (\count($transitiveDeps) > 0) { -$this->printPackages($io, $transitiveDeps, $indent, $versionFits, $latestFits, $descriptionFits, $width, $versionLength, $nameLength, $latestLength); -} else { -$io->writeError('Everything up to date'); -} -} else { -if ($writeLatest && \count($packages) === 0) { -$io->writeError('All your direct dependencies are up to date'); -} else { -$this->printPackages($io, $packages, $indent, $versionFits, $latestFits, $descriptionFits, $width, $versionLength, $nameLength, $latestLength); -} -} - -if ($showAllTypes) { -$io->write(''); -} -} -} - -return $exitCode; -} - - - - -private function printPackages(IOInterface $io, array $packages, string $indent, bool $writeVersion, bool $writeLatest, bool $writeDescription, int $width, int $versionLength, int $nameLength, int $latestLength): void -{ -foreach ($packages as $package) { -$link = $package['source'] ?? $package['homepage'] ?? ''; -if ($link !== '') { -$io->write($indent . ''.$package['name'].''. str_repeat(' ', $nameLength - strlen($package['name'])), false); -} else { -$io->write($indent . str_pad($package['name'], $nameLength, ' '), false); -} -if (isset($package['version']) && $writeVersion) { -$io->write(' ' . str_pad($package['version'], $versionLength, ' '), false); -} -if (isset($package['latest']) && isset($package['latest-status']) && $writeLatest) { -$latestVersion = $package['latest']; -$updateStatus = $package['latest-status']; -$style = $this->updateStatusToVersionStyle($updateStatus); -if (!$io->isDecorated()) { -$latestVersion = str_replace(['up-to-date', 'semver-safe-update', 'update-possible'], ['=', '!', '~'], $updateStatus) . ' ' . $latestVersion; -} -$io->write(' <' . $style . '>' . str_pad($latestVersion, $latestLength, ' ') . '', false); -} -if (isset($package['description']) && $writeDescription) { -$description = strtok($package['description'], "\r\n"); -$remaining = $width - $nameLength - $versionLength - 4; -if ($writeLatest) { -$remaining -= $latestLength; -} -if (strlen($description) > $remaining) { -$description = substr($description, 0, $remaining - 3) . '...'; -} -$io->write(' ' . $description, false); -} -if (isset($package['path'])) { -$io->write(' ' . $package['path'], false); -} -$io->write(''); -if (isset($package['warning'])) { -$io->write('' . $package['warning'] . ''); -} -} -} - - - - -protected function getRootRequires(): array -{ -$composer = $this->tryComposer(); -if ($composer === null) { -return []; -} - -$rootPackage = $composer->getPackage(); - -return array_map( -'strtolower', -array_keys(array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires())) -); -} - - - - -protected function getVersionStyle(PackageInterface $latestPackage, PackageInterface $package) -{ -return $this->updateStatusToVersionStyle($this->getUpdateStatus($latestPackage, $package)); -} - - - - - - - - -protected function getPackage(InstalledRepository $installedRepo, RepositoryInterface $repos, string $name, $version = null): array -{ -$name = strtolower($name); -$constraint = is_string($version) ? $this->versionParser->parseConstraints($version) : $version; - -$policy = new DefaultPolicy(); -$repositorySet = new RepositorySet('dev'); -$repositorySet->allowInstalledRepositories(); -$repositorySet->addRepository($repos); - -$matchedPackage = null; -$versions = []; -if (PlatformRepository::isPlatformPackage($name)) { -$pool = $repositorySet->createPoolWithAllPackages(); -} else { -$pool = $repositorySet->createPoolForPackage($name); -} -$matches = $pool->whatProvides($name, $constraint); -foreach ($matches as $index => $package) { - -if ($package instanceof AliasPackage && $package->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -$package = $package->getAliasOf(); -} - - -if (null === $version && $installedRepo->hasPackage($package)) { -$matchedPackage = $package; -} - -$versions[$package->getPrettyVersion()] = $package->getVersion(); -$matches[$index] = $package->getId(); -} - - -if (!$matchedPackage && $matches && $preferred = $policy->selectPreferredPackages($pool, $matches)) { -$matchedPackage = $pool->literalToPackage($preferred[0]); -} - -return [$matchedPackage, $versions]; -} - - - - - - -protected function printPackageInfo(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, ?PackageInterface $latestPackage = null): void -{ -$io = $this->getIO(); - -$this->printMeta($package, $versions, $installedRepo, $latestPackage ?: null); -$this->printLinks($package, Link::TYPE_REQUIRE); -$this->printLinks($package, Link::TYPE_DEV_REQUIRE, 'requires (dev)'); - -if ($package->getSuggests()) { -$io->write("\nsuggests"); -foreach ($package->getSuggests() as $suggested => $reason) { -$io->write($suggested . ' ' . $reason . ''); -} -} - -$this->printLinks($package, Link::TYPE_PROVIDE); -$this->printLinks($package, Link::TYPE_CONFLICT); -$this->printLinks($package, Link::TYPE_REPLACE); -} - - - - - - -protected function printMeta(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, ?PackageInterface $latestPackage = null): void -{ -$io = $this->getIO(); -$io->write('name : ' . $package->getPrettyName()); -$io->write('descrip. : ' . $package->getDescription()); -$io->write('keywords : ' . implode(', ', $package->getKeywords() ?: [])); -$this->printVersions($package, $versions, $installedRepo); -if ($latestPackage) { -$style = $this->getVersionStyle($latestPackage, $package); -$io->write('latest : <'.$style.'>' . $latestPackage->getPrettyVersion() . ''); -} else { -$latestPackage = $package; -} -$io->write('type : ' . $package->getType()); -$this->printLicenses($package); -$io->write('homepage : ' . $package->getHomepage()); -$io->write('source : ' . sprintf('[%s] %s %s', $package->getSourceType(), $package->getSourceUrl(), $package->getSourceReference())); -$io->write('dist : ' . sprintf('[%s] %s %s', $package->getDistType(), $package->getDistUrl(), $package->getDistReference())); -if ($installedRepo->hasPackage($package)) { -$io->write('path : ' . sprintf('%s', realpath($this->requireComposer()->getInstallationManager()->getInstallPath($package)))); -} -$io->write('names : ' . implode(', ', $package->getNames())); - -if ($latestPackage instanceof CompletePackageInterface && $latestPackage->isAbandoned()) { -$replacement = ($latestPackage->getReplacementPackage() !== null) -? ' The author suggests using the ' . $latestPackage->getReplacementPackage(). ' package instead.' -: null; - -$io->writeError( -sprintf('Attention: This package is abandoned and no longer maintained.%s', $replacement) -); -} - -if ($package->getSupport()) { -$io->write("\nsupport"); -foreach ($package->getSupport() as $type => $value) { -$io->write('' . $type . ' : '.$value); -} -} - -if (\count($package->getAutoload()) > 0) { -$io->write("\nautoload"); -$autoloadConfig = $package->getAutoload(); -foreach ($autoloadConfig as $type => $autoloads) { -$io->write('' . $type . ''); - -if ($type === 'psr-0' || $type === 'psr-4') { -foreach ($autoloads as $name => $path) { -$io->write(($name ?: '*') . ' => ' . (is_array($path) ? implode(', ', $path) : ($path ?: '.'))); -} -} elseif ($type === 'classmap') { -$io->write(implode(', ', $autoloadConfig[$type])); -} -} -if ($package->getIncludePaths()) { -$io->write('include-path'); -$io->write(implode(', ', $package->getIncludePaths())); -} -} -} - - - - - - -protected function printVersions(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo): void -{ -$versions = array_keys($versions); -$versions = Semver::rsort($versions); - - -if ($installedPackages = $installedRepo->findPackages($package->getName())) { -foreach ($installedPackages as $installedPackage) { -$installedVersion = $installedPackage->getPrettyVersion(); -$key = array_search($installedVersion, $versions); -if (false !== $key) { -$versions[$key] = '* ' . $installedVersion . ''; -} -} -} - -$versions = implode(', ', $versions); - -$this->getIO()->write('versions : ' . $versions); -} - - - - - - -protected function printLinks(CompletePackageInterface $package, string $linkType, ?string $title = null): void -{ -$title = $title ?: $linkType; -$io = $this->getIO(); -if ($links = $package->{'get'.ucfirst($linkType)}()) { -$io->write("\n" . $title . ""); - -foreach ($links as $link) { -$io->write($link->getTarget() . ' ' . $link->getPrettyConstraint() . ''); -} -} -} - - - - -protected function printLicenses(CompletePackageInterface $package): void -{ -$spdxLicenses = new SpdxLicenses(); - -$licenses = $package->getLicense(); -$io = $this->getIO(); - -foreach ($licenses as $licenseId) { -$license = $spdxLicenses->getLicenseByIdentifier($licenseId); - -if (!$license) { -$out = $licenseId; -} else { - -if ($license[1] === true) { -$out = sprintf('%s (%s) (OSI approved) %s', $license[0], $licenseId, $license[2]); -} else { -$out = sprintf('%s (%s) %s', $license[0], $licenseId, $license[2]); -} -} - -$io->write('license : ' . $out); -} -} - - - - - - -protected function printPackageInfoAsJson(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, ?PackageInterface $latestPackage = null): void -{ -$json = [ -'name' => $package->getPrettyName(), -'description' => $package->getDescription(), -'keywords' => $package->getKeywords() ?: [], -'type' => $package->getType(), -'homepage' => $package->getHomepage(), -'names' => $package->getNames(), -]; - -$json = $this->appendVersions($json, $versions); -$json = $this->appendLicenses($json, $package); - -if ($latestPackage) { -$json['latest'] = $latestPackage->getPrettyVersion(); -} else { -$latestPackage = $package; -} - -if (null !== $package->getSourceType()) { -$json['source'] = [ -'type' => $package->getSourceType(), -'url' => $package->getSourceUrl(), -'reference' => $package->getSourceReference(), -]; -} - -if (null !== $package->getDistType()) { -$json['dist'] = [ -'type' => $package->getDistType(), -'url' => $package->getDistUrl(), -'reference' => $package->getDistReference(), -]; -} - -if ($installedRepo->hasPackage($package)) { -$path = realpath($this->requireComposer()->getInstallationManager()->getInstallPath($package)); -if ($path !== false) { -$json['path'] = $path; -} -} - -if ($latestPackage instanceof CompletePackageInterface && $latestPackage->isAbandoned()) { -$json['replacement'] = $latestPackage->getReplacementPackage(); -} - -if ($package->getSuggests()) { -$json['suggests'] = $package->getSuggests(); -} - -if ($package->getSupport()) { -$json['support'] = $package->getSupport(); -} - -$json = $this->appendAutoload($json, $package); - -if ($package->getIncludePaths()) { -$json['include_path'] = $package->getIncludePaths(); -} - -$json = $this->appendLinks($json, $package); - -$this->getIO()->write(JsonFile::encode($json)); -} - - - - - - -private function appendVersions(array $json, array $versions): array -{ -uasort($versions, 'version_compare'); -$versions = array_keys(array_reverse($versions)); -$json['versions'] = $versions; - -return $json; -} - - - - - -private function appendLicenses(array $json, CompletePackageInterface $package): array -{ -if ($licenses = $package->getLicense()) { -$spdxLicenses = new SpdxLicenses(); - -$json['licenses'] = array_map(static function ($licenseId) use ($spdxLicenses) { -$license = $spdxLicenses->getLicenseByIdentifier($licenseId); - -if (!$license) { -return $licenseId; -} - -return [ -'name' => $license[0], -'osi' => $licenseId, -'url' => $license[2], -]; -}, $licenses); -} - -return $json; -} - - - - - -private function appendAutoload(array $json, CompletePackageInterface $package): array -{ -if (\count($package->getAutoload()) > 0) { -$autoload = []; - -foreach ($package->getAutoload() as $type => $autoloads) { -if ($type === 'psr-0' || $type === 'psr-4') { -$psr = []; - -foreach ($autoloads as $name => $path) { -if (!$path) { -$path = '.'; -} - -$psr[$name ?: '*'] = $path; -} - -$autoload[$type] = $psr; -} elseif ($type === 'classmap') { -$autoload['classmap'] = $autoloads; -} -} - -$json['autoload'] = $autoload; -} - -return $json; -} - - - - - -private function appendLinks(array $json, CompletePackageInterface $package): array -{ -foreach (Link::$TYPES as $linkType) { -$json = $this->appendLink($json, $package, $linkType); -} - -return $json; -} - - - - - -private function appendLink(array $json, CompletePackageInterface $package, string $linkType): array -{ -$links = $package->{'get' . ucfirst($linkType)}(); - -if ($links) { -$json[$linkType] = []; - -foreach ($links as $link) { -$json[$linkType][$link->getTarget()] = $link->getPrettyConstraint(); -} -} - -return $json; -} - - - - -protected function initStyles(OutputInterface $output): void -{ -$this->colors = [ -'green', -'yellow', -'cyan', -'magenta', -'blue', -]; - -foreach ($this->colors as $color) { -$style = new OutputFormatterStyle($color); -$output->getFormatter()->setStyle($color, $style); -} -} - - - - - - -protected function displayPackageTree(array $arrayTree): void -{ -$io = $this->getIO(); -foreach ($arrayTree as $package) { -$io->write(sprintf('%s', $package['name']), false); -$io->write(' ' . $package['version'], false); -if (isset($package['description'])) { -$io->write(' ' . strtok($package['description'], "\r\n")); -} else { - -$io->write(''); -} - -if (isset($package['requires'])) { -$requires = $package['requires']; -$treeBar = '├'; -$j = 0; -$total = count($requires); -foreach ($requires as $require) { -$requireName = $require['name']; -$j++; -if ($j === $total) { -$treeBar = '└'; -} -$level = 1; -$color = $this->colors[$level]; -$info = sprintf( -'%s──<%s>%s %s', -$treeBar, -$color, -$requireName, -$color, -$require['version'] -); -$this->writeTreeLine($info); - -$treeBar = str_replace('└', ' ', $treeBar); -$packagesInTree = [$package['name'], $requireName]; - -$this->displayTree($require, $packagesInTree, $treeBar, $level + 1); -} -} -} -} - - - - - - -protected function generatePackageTree( -PackageInterface $package, -InstalledRepository $installedRepo, -RepositoryInterface $remoteRepos -): array { -$requires = $package->getRequires(); -ksort($requires); -$children = []; -foreach ($requires as $requireName => $require) { -$packagesInTree = [$package->getName(), $requireName]; - -$treeChildDesc = [ -'name' => $requireName, -'version' => $require->getPrettyConstraint(), -]; - -$deepChildren = $this->addTree($requireName, $require, $installedRepo, $remoteRepos, $packagesInTree); - -if ($deepChildren) { -$treeChildDesc['requires'] = $deepChildren; -} - -$children[] = $treeChildDesc; -} -$tree = [ -'name' => $package->getPrettyName(), -'version' => $package->getPrettyVersion(), -'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : '', -]; - -if ($children) { -$tree['requires'] = $children; -} - -return $tree; -} - - - - - - - -protected function displayTree( -$package, -array $packagesInTree, -string $previousTreeBar = '├', -int $level = 1 -): void { -$previousTreeBar = str_replace('├', '│', $previousTreeBar); -if (is_array($package) && isset($package['requires'])) { -$requires = $package['requires']; -$treeBar = $previousTreeBar . ' ├'; -$i = 0; -$total = count($requires); -foreach ($requires as $require) { -$currentTree = $packagesInTree; -$i++; -if ($i === $total) { -$treeBar = $previousTreeBar . ' └'; -} -$colorIdent = $level % count($this->colors); -$color = $this->colors[$colorIdent]; - -$circularWarn = in_array( -$require['name'], -$currentTree, -true -) ? '(circular dependency aborted here)' : ''; -$info = rtrim(sprintf( -'%s──<%s>%s %s %s', -$treeBar, -$color, -$require['name'], -$color, -$require['version'], -$circularWarn -)); -$this->writeTreeLine($info); - -$treeBar = str_replace('└', ' ', $treeBar); - -$currentTree[] = $require['name']; -$this->displayTree($require, $currentTree, $treeBar, $level + 1); -} -} -} - - - - - - - -protected function addTree( -string $name, -Link $link, -InstalledRepository $installedRepo, -RepositoryInterface $remoteRepos, -array $packagesInTree -): array { -$children = []; -[$package] = $this->getPackage( -$installedRepo, -$remoteRepos, -$name, -$link->getPrettyConstraint() === 'self.version' ? $link->getConstraint() : $link->getPrettyConstraint() -); -if (is_object($package)) { -$requires = $package->getRequires(); -ksort($requires); -foreach ($requires as $requireName => $require) { -$currentTree = $packagesInTree; - -$treeChildDesc = [ -'name' => $requireName, -'version' => $require->getPrettyConstraint(), -]; - -if (!in_array($requireName, $currentTree, true)) { -$currentTree[] = $requireName; -$deepChildren = $this->addTree($requireName, $require, $installedRepo, $remoteRepos, $currentTree); -if ($deepChildren) { -$treeChildDesc['requires'] = $deepChildren; -} -} - -$children[] = $treeChildDesc; -} -} - -return $children; -} - -private function updateStatusToVersionStyle(string $updateStatus): string -{ - - - -return str_replace(['up-to-date', 'semver-safe-update', 'update-possible'], ['info', 'highlight', 'comment'], $updateStatus); -} - -private function getUpdateStatus(PackageInterface $latestPackage, PackageInterface $package): string -{ -if ($latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion()) { -return 'up-to-date'; -} - -$constraint = $package->getVersion(); -if (0 !== strpos($constraint, 'dev-')) { -$constraint = '^'.$constraint; -} -if ($latestPackage->getVersion() && Semver::satisfies($latestPackage->getVersion(), $constraint)) { - -return 'semver-safe-update'; -} - - -return 'update-possible'; -} - -private function writeTreeLine(string $line): void -{ -$io = $this->getIO(); -if (!$io->isDecorated()) { -$line = str_replace(['└', '├', '──', '│'], ['`-', '|-', '-', '|'], $line); -} - -$io->write($line); -} - - - - -private function findLatestPackage(PackageInterface $package, Composer $composer, PlatformRepository $platformRepo, bool $majorOnly, bool $minorOnly, bool $patchOnly, PlatformRequirementFilterInterface $platformReqFilter): ?PackageInterface -{ - -$name = $package->getName(); -$versionSelector = new VersionSelector($this->getRepositorySet($composer), $platformRepo); -$stability = $composer->getPackage()->getMinimumStability(); -$flags = $composer->getPackage()->getStabilityFlags(); -if (isset($flags[$name])) { -$stability = array_search($flags[$name], BasePackage::$stabilities, true); -} - -$bestStability = $stability; -if ($composer->getPackage()->getPreferStable()) { -$bestStability = $package->getStability(); -} - -$targetVersion = null; -if (0 === strpos($package->getVersion(), 'dev-')) { -$targetVersion = $package->getVersion(); - - -if ($majorOnly) { -return null; -} -} - -if ($targetVersion === null) { -if ($majorOnly && Preg::isMatch('{^(?P(?:0\.)+)?(?P\d+)\.}', $package->getVersion(), $match)) { -$targetVersion = '>='.$match['zero_major'].(((int) $match['first_meaningful']) + 1).',<9999999-dev'; -} - -if ($minorOnly) { -$targetVersion = '^'.$package->getVersion(); -} - -if ($patchOnly) { -$trimmedVersion = Preg::replace('{(\.0)+$}D', '', $package->getVersion()); -$partsNeeded = substr($trimmedVersion, 0, 1) === '0' ? 4 : 3; -while (substr_count($trimmedVersion, '.') + 1 < $partsNeeded) { -$trimmedVersion .= '.0'; -} -$targetVersion = '~'.$trimmedVersion; -} -} - -if ($this->getIO()->isVerbose()) { -$showWarnings = true; -} else { -$showWarnings = static function (PackageInterface $candidate) use ($package): bool { -if (str_starts_with($candidate->getVersion(), 'dev-') || str_starts_with($package->getVersion(), 'dev-')) { -return false; -} -return version_compare($candidate->getVersion(), $package->getVersion(), '<='); -}; -} -$candidate = $versionSelector->findBestCandidate($name, $targetVersion, $bestStability, $platformReqFilter, 0, $this->getIO(), $showWarnings); -while ($candidate instanceof AliasPackage) { -$candidate = $candidate->getAliasOf(); -} - -return $candidate !== false ? $candidate : null; -} - -private function getRepositorySet(Composer $composer): RepositorySet -{ -if (!$this->repositorySet) { -$this->repositorySet = new RepositorySet($composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags()); -$this->repositorySet->addRepository(new CompositeRepository($composer->getRepositoryManager()->getRepositories())); -} - -return $this->repositorySet; -} -} diff --git a/composer/src/Composer/Command/StatusCommand.php b/composer/src/Composer/Command/StatusCommand.php deleted file mode 100644 index 7b0f00ebf..000000000 --- a/composer/src/Composer/Command/StatusCommand.php +++ /dev/null @@ -1,218 +0,0 @@ -setName('status') -->setDescription('Shows a list of locally modified packages') -->setDefinition([ -new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Show modified files for each directory that contains changes.'), -]) -->setHelp( -<<requireComposer(); - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'status', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - - -$composer->getEventDispatcher()->dispatchScript(ScriptEvents::PRE_STATUS_CMD, true); - -$exitCode = $this->doExecute($input); - - -$composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_STATUS_CMD, true); - -return $exitCode; -} - -private function doExecute(InputInterface $input): int -{ - -$composer = $this->requireComposer(); - -$installedRepo = $composer->getRepositoryManager()->getLocalRepository(); - -$dm = $composer->getDownloadManager(); -$im = $composer->getInstallationManager(); - -$errors = []; -$io = $this->getIO(); -$unpushedChanges = []; -$vcsVersionChanges = []; - -$parser = new VersionParser; -$guesser = new VersionGuesser($composer->getConfig(), $composer->getLoop()->getProcessExecutor() ?? new ProcessExecutor($io), $parser); -$dumper = new ArrayDumper; - - -foreach ($installedRepo->getCanonicalPackages() as $package) { -$downloader = $dm->getDownloaderForPackage($package); -$targetDir = $im->getInstallPath($package); - -if ($downloader instanceof ChangeReportInterface) { -if (is_link($targetDir)) { -$errors[$targetDir] = $targetDir . ' is a symbolic link.'; -} - -if (null !== ($changes = $downloader->getLocalChanges($package, $targetDir))) { -$errors[$targetDir] = $changes; -} -} - -if ($downloader instanceof VcsCapableDownloaderInterface) { -if ($downloader->getVcsReference($package, $targetDir)) { -switch ($package->getInstallationSource()) { -case 'source': -$previousRef = $package->getSourceReference(); -break; -case 'dist': -$previousRef = $package->getDistReference(); -break; -default: -$previousRef = null; -} - -$currentVersion = $guesser->guessVersion($dumper->dump($package), $targetDir); - -if ($previousRef && $currentVersion && $currentVersion['commit'] !== $previousRef && $currentVersion['pretty_version'] !== $previousRef) { -$vcsVersionChanges[$targetDir] = [ -'previous' => [ -'version' => $package->getPrettyVersion(), -'ref' => $previousRef, -], -'current' => [ -'version' => $currentVersion['pretty_version'], -'ref' => $currentVersion['commit'], -], -]; -} -} -} - -if ($downloader instanceof DvcsDownloaderInterface) { -if ($unpushed = $downloader->getUnpushedChanges($package, $targetDir)) { -$unpushedChanges[$targetDir] = $unpushed; -} -} -} - - -if (!$errors && !$unpushedChanges && !$vcsVersionChanges) { -$io->writeError('No local changes'); - -return 0; -} - -if ($errors) { -$io->writeError('You have changes in the following dependencies:'); - -foreach ($errors as $path => $changes) { -if ($input->getOption('verbose')) { -$indentedChanges = implode("\n", array_map(static function ($line): string { -return ' ' . ltrim($line); -}, explode("\n", $changes))); -$io->write(''.$path.':'); -$io->write($indentedChanges); -} else { -$io->write($path); -} -} -} - -if ($unpushedChanges) { -$io->writeError('You have unpushed changes on the current branch in the following dependencies:'); - -foreach ($unpushedChanges as $path => $changes) { -if ($input->getOption('verbose')) { -$indentedChanges = implode("\n", array_map(static function ($line): string { -return ' ' . ltrim($line); -}, explode("\n", $changes))); -$io->write(''.$path.':'); -$io->write($indentedChanges); -} else { -$io->write($path); -} -} -} - -if ($vcsVersionChanges) { -$io->writeError('You have version variations in the following dependencies:'); - -foreach ($vcsVersionChanges as $path => $changes) { -if ($input->getOption('verbose')) { - -$currentVersion = $changes['current']['version'] ?: $changes['current']['ref']; -$previousVersion = $changes['previous']['version'] ?: $changes['previous']['ref']; - -if ($io->isVeryVerbose()) { - -$currentVersion .= sprintf(' (%s)', $changes['current']['ref']); -$previousVersion .= sprintf(' (%s)', $changes['previous']['ref']); -} - -$io->write(''.$path.':'); -$io->write(sprintf(' From %s to %s', $previousVersion, $currentVersion)); -} else { -$io->write($path); -} -} -} - -if (($errors || $unpushedChanges || $vcsVersionChanges) && !$input->getOption('verbose')) { -$io->writeError('Use --verbose (-v) to see a list of files'); -} - -return ($errors ? self::EXIT_CODE_ERRORS : 0) + ($unpushedChanges ? self::EXIT_CODE_UNPUSHED_CHANGES : 0) + ($vcsVersionChanges ? self::EXIT_CODE_VERSION_CHANGES : 0); -} -} diff --git a/composer/src/Composer/Command/SuggestsCommand.php b/composer/src/Composer/Command/SuggestsCommand.php deleted file mode 100644 index 03c29fb61..000000000 --- a/composer/src/Composer/Command/SuggestsCommand.php +++ /dev/null @@ -1,103 +0,0 @@ -setName('suggests') -->setDescription('Shows package suggestions') -->setDefinition([ -new InputOption('by-package', null, InputOption::VALUE_NONE, 'Groups output by suggesting package (default)'), -new InputOption('by-suggestion', null, InputOption::VALUE_NONE, 'Groups output by suggested package'), -new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show suggestions from all dependencies, including transitive ones'), -new InputOption('list', null, InputOption::VALUE_NONE, 'Show only list of suggested package names'), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Exclude suggestions from require-dev packages'), -new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that you want to list suggestions from.', null, $this->suggestInstalledPackage()), -]) -->setHelp( -<<%command.name% command shows a sorted list of suggested packages. - -Read more at https://getcomposer.org/doc/03-cli.md#suggests -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$composer = $this->requireComposer(); - -$installedRepos = [ -new RootPackageRepository(clone $composer->getPackage()), -]; - -$locker = $composer->getLocker(); -if ($locker->isLocked()) { -$installedRepos[] = new PlatformRepository([], $locker->getPlatformOverrides()); -$installedRepos[] = $locker->getLockedRepository(!$input->getOption('no-dev')); -} else { -$installedRepos[] = new PlatformRepository([], $composer->getConfig()->get('platform')); -$installedRepos[] = $composer->getRepositoryManager()->getLocalRepository(); -} - -$installedRepo = new InstalledRepository($installedRepos); -$reporter = new SuggestedPackagesReporter($this->getIO()); - -$filter = $input->getArgument('packages'); -$packages = $installedRepo->getPackages(); -$packages[] = $composer->getPackage(); -foreach ($packages as $package) { -if (!empty($filter) && !in_array($package->getName(), $filter)) { -continue; -} - -$reporter->addSuggestionsFromPackage($package); -} - - -$mode = SuggestedPackagesReporter::MODE_BY_PACKAGE; - - -if ($input->getOption('by-suggestion')) { -$mode = SuggestedPackagesReporter::MODE_BY_SUGGESTION; -} - -if ($input->getOption('by-package')) { -$mode |= SuggestedPackagesReporter::MODE_BY_PACKAGE; -} - -if ($input->getOption('list')) { -$mode = SuggestedPackagesReporter::MODE_LIST; -} - -$reporter->output($mode, $installedRepo, empty($filter) && !$input->getOption('all') ? $composer->getPackage() : null); - -return 0; -} -} diff --git a/composer/src/Composer/Command/UpdateCommand.php b/composer/src/Composer/Command/UpdateCommand.php deleted file mode 100644 index 8a4a59224..000000000 --- a/composer/src/Composer/Command/UpdateCommand.php +++ /dev/null @@ -1,316 +0,0 @@ -setName('update') -->setAliases(['u', 'upgrade']) -->setDescription('Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file') -->setDefinition([ -new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that should be updated, if not provided all packages are.', null, $this->suggestInstalledPackage(false)), -new InputOption('with', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Temporary version constraint to add, e.g. foo/bar:1.0.0 or foo/bar=1.0.0'), -new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), -new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist (default behavior).'), -new InputOption('prefer-install', null, InputOption::VALUE_REQUIRED, 'Forces installation from package dist|source|auto (auto chooses source for dev versions, dist for the rest).', null, $this->suggestPreferInstall()), -new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), -new InputOption('dev', null, InputOption::VALUE_NONE, 'DEPRECATED: Enables installation of require-dev packages (enabled by default, only present for BC).'), -new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), -new InputOption('lock', null, InputOption::VALUE_NONE, 'Overwrites the lock file hash to suppress warning about the lock file being out of date without updating package versions. Package metadata like mirrors and URLs are updated if they changed.'), -new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), -new InputOption('no-audit', null, InputOption::VALUE_NONE, 'Skip the audit step after updating the composer.lock file (can also be set via the COMPOSER_NO_AUDIT=1 env var).'), -new InputOption('audit-format', null, InputOption::VALUE_REQUIRED, 'Audit output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_SUMMARY, Auditor::FORMATS), -new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), -new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), -new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), -new InputOption('with-dependencies', 'w', InputOption::VALUE_NONE, 'Update also dependencies of packages in the argument list, except those which are root requirements.'), -new InputOption('with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Update also dependencies of packages in the argument list, including those which are root requirements.'), -new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), -new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump.'), -new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), -new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), -new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), -new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), -new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), -new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies (can also be set via the COMPOSER_PREFER_STABLE=1 env var).'), -new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies (can also be set via the COMPOSER_PREFER_LOWEST=1 env var).'), -new InputOption('interactive', 'i', InputOption::VALUE_NONE, 'Interactive interface with autocompletion to select the packages to update.'), -new InputOption('root-reqs', null, InputOption::VALUE_NONE, 'Restricts the update to your first degree dependencies.'), -]) -->setHelp( -<<update command reads the composer.json file from the -current directory, processes it, and updates, removes or installs all the -dependencies. - -php composer.phar update - -To limit the update operation to a few packages, you can list the package(s) -you want to update as such: - -php composer.phar update vendor/package1 foo/mypackage [...] - -You may also use an asterisk (*) pattern to limit the update operation to package(s) -from a specific vendor: - -php composer.phar update vendor/package1 foo/* [...] - -To run an update with more restrictive constraints you can use: - -php composer.phar update --with vendor/package:1.0.* - -To run a partial update with more restrictive constraints you can use the shorthand: - -php composer.phar update vendor/package:1.0.* - -To select packages names interactively with auto-completion use -i. - -Read more at https://getcomposer.org/doc/03-cli.md#update-u-upgrade -EOT -) -; -} - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$io = $this->getIO(); -if ($input->getOption('dev')) { -$io->writeError('You are using the deprecated option "--dev". It has no effect and will break in Composer 3.'); -} -if ($input->getOption('no-suggest')) { -$io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); -} - -$composer = $this->requireComposer(); - -if (!HttpDownloader::isCurlEnabled()) { -$io->writeError('Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.'); -} - -$packages = $input->getArgument('packages'); -$reqs = $this->formatRequirements($input->getOption('with')); - - -if (count($packages) > 0) { -$allowlistPackagesWithRequirements = array_filter($packages, static function ($pkg): bool { -return Preg::isMatch('{\S+[ =:]\S+}', $pkg); -}); -foreach ($this->formatRequirements($allowlistPackagesWithRequirements) as $package => $constraint) { -$reqs[$package] = $constraint; -} - - -foreach ($allowlistPackagesWithRequirements as $package) { -$packageName = Preg::replace('{^([^ =:]+)[ =:].*$}', '$1', $package); -$index = array_search($package, $packages); -$packages[$index] = $packageName; -} -} - -$rootPackage = $composer->getPackage(); -$rootPackage->setReferences(RootPackageLoader::extractReferences($reqs, $rootPackage->getReferences())); -$rootPackage->setStabilityFlags(RootPackageLoader::extractStabilityFlags($reqs, $rootPackage->getMinimumStability(), $rootPackage->getStabilityFlags())); - -$parser = new VersionParser; -$temporaryConstraints = []; -$rootRequirements = array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires()); -foreach ($reqs as $package => $constraint) { -$package = strtolower($package); -$parsedConstraint = $parser->parseConstraints($constraint); -$temporaryConstraints[$package] = $parsedConstraint; -if (isset($rootRequirements[$package]) && !Intervals::haveIntersections($parsedConstraint, $rootRequirements[$package]->getConstraint())) { -throw new \InvalidArgumentException('The temporary constraint "'.$constraint.'" for "'.$package.'" must be a subset of the constraint in your composer.json ('.$rootRequirements[$package]->getPrettyConstraint().')'); -} -} - -if ($input->getOption('interactive')) { -$packages = $this->getPackagesInteractively($io, $input, $output, $composer, $packages); -} - -if ($input->getOption('root-reqs')) { -$requires = array_keys($rootPackage->getRequires()); -if (!$input->getOption('no-dev')) { -$requires = array_merge($requires, array_keys($rootPackage->getDevRequires())); -} - -if (!empty($packages)) { -$packages = array_intersect($packages, $requires); -} else { -$packages = $requires; -} -} - - - -$filteredPackages = array_filter($packages, static function ($package): bool { -return !in_array($package, ['lock', 'nothing', 'mirrors'], true); -}); -$updateMirrors = $input->getOption('lock') || count($filteredPackages) !== count($packages); -$packages = $filteredPackages; - -if ($updateMirrors && !empty($packages)) { -$io->writeError('You cannot simultaneously update only a selection of packages and regenerate the lock file metadata.'); - -return -1; -} - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'update', $input, $output); -$composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -$composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); - -$install = Installer::create($io, $composer); - -$config = $composer->getConfig(); -[$preferSource, $preferDist] = $this->getPreferredInstallOptions($config, $input); - -$optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); -$authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); -$apcuPrefix = $input->getOption('apcu-autoloader-prefix'); -$apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); - -$updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; -if ($input->getOption('with-all-dependencies')) { -$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; -} elseif ($input->getOption('with-dependencies')) { -$updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; -} - -$install -->setDryRun($input->getOption('dry-run')) -->setVerbose($input->getOption('verbose')) -->setPreferSource($preferSource) -->setPreferDist($preferDist) -->setDevMode(!$input->getOption('no-dev')) -->setDumpAutoloader(!$input->getOption('no-autoloader')) -->setOptimizeAutoloader($optimize) -->setClassMapAuthoritative($authoritative) -->setApcuAutoloader($apcu, $apcuPrefix) -->setUpdate(true) -->setInstall(!$input->getOption('no-install')) -->setUpdateMirrors($updateMirrors) -->setUpdateAllowList($packages) -->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) -->setPlatformRequirementFilter($this->getPlatformRequirementFilter($input)) -->setPreferStable($input->getOption('prefer-stable')) -->setPreferLowest($input->getOption('prefer-lowest')) -->setTemporaryConstraints($temporaryConstraints) -->setAudit(!$input->getOption('no-audit')) -->setAuditFormat($this->getAuditFormat($input)) -; - -if ($input->getOption('no-plugins')) { -$install->disablePlugins(); -} - -return $install->run(); -} - - - - - -private function getPackagesInteractively(IOInterface $io, InputInterface $input, OutputInterface $output, Composer $composer, array $packages): array -{ -if (!$input->isInteractive()) { -throw new \InvalidArgumentException('--interactive cannot be used in non-interactive terminals.'); -} - -$requires = array_merge( -$composer->getPackage()->getRequires(), -$composer->getPackage()->getDevRequires() -); -$autocompleterValues = []; -foreach ($requires as $require) { -$target = $require->getTarget(); -$autocompleterValues[strtolower($target)] = $target; -} - -$installedPackages = $composer->getRepositoryManager()->getLocalRepository()->getPackages(); -foreach ($installedPackages as $package) { -$autocompleterValues[$package->getName()] = $package->getPrettyName(); -} - -$helper = $this->getHelper('question'); -$question = new Question('Enter package name: ', null); - -$io->writeError('Press enter without value to end submission'); - -do { -$autocompleterValues = array_diff($autocompleterValues, $packages); -$question->setAutocompleterValues($autocompleterValues); -$addedPackage = $helper->ask($input, $output, $question); - -if (!is_string($addedPackage) || empty($addedPackage)) { -break; -} - -$addedPackage = strtolower($addedPackage); -if (!in_array($addedPackage, $packages)) { -$packages[] = $addedPackage; -} -} while (true); - -$packages = array_filter($packages); -if (!$packages) { -throw new \InvalidArgumentException('You must enter minimum one package.'); -} - -$table = new Table($output); -$table->setHeaders(['Selected packages']); -foreach ($packages as $package) { -$table->addRow([$package]); -} -$table->render(); - -if ($io->askConfirmation(sprintf( -'Would you like to continue and update the above package%s [yes]? ', -1 === count($packages) ? '' : 's' -))) { -return $packages; -} - -throw new \RuntimeException('Installation aborted.'); -} -} diff --git a/composer/src/Composer/Command/ValidateCommand.php b/composer/src/Composer/Command/ValidateCommand.php deleted file mode 100644 index 0b91239c5..000000000 --- a/composer/src/Composer/Command/ValidateCommand.php +++ /dev/null @@ -1,220 +0,0 @@ -setName('validate') -->setDescription('Validates a composer.json and composer.lock') -->setDefinition([ -new InputOption('no-check-all', null, InputOption::VALUE_NONE, 'Do not validate requires for overly strict/loose constraints'), -new InputOption('check-lock', null, InputOption::VALUE_NONE, 'Check if lock file is up to date (even when config.lock is false)'), -new InputOption('no-check-lock', null, InputOption::VALUE_NONE, 'Do not check if lock file is up to date'), -new InputOption('no-check-publish', null, InputOption::VALUE_NONE, 'Do not check for publish errors'), -new InputOption('no-check-version', null, InputOption::VALUE_NONE, 'Do not report a warning if the version field is present'), -new InputOption('with-dependencies', 'A', InputOption::VALUE_NONE, 'Also validate the composer.json of all installed dependencies'), -new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code for warnings as well as errors'), -new InputArgument('file', InputArgument::OPTIONAL, 'path to composer.json file'), -]) -->setHelp( -<<getArgument('file') ?: Factory::getComposerFile(); -$io = $this->getIO(); - -if (!file_exists($file)) { -$io->writeError('' . $file . ' not found.'); - -return 3; -} -if (!Filesystem::isReadable($file)) { -$io->writeError('' . $file . ' is not readable.'); - -return 3; -} - -$validator = new ConfigValidator($io); -$checkAll = $input->getOption('no-check-all') ? 0 : ValidatingArrayLoader::CHECK_ALL; -$checkPublish = !$input->getOption('no-check-publish'); -$checkLock = !$input->getOption('no-check-lock'); -$checkVersion = $input->getOption('no-check-version') ? 0 : ConfigValidator::CHECK_VERSION; -$isStrict = $input->getOption('strict'); -[$errors, $publishErrors, $warnings] = $validator->validate($file, $checkAll, $checkVersion); - -$lockErrors = []; -$composer = Factory::create($io, $file, $input->hasParameterOption('--no-plugins')); - -$checkLock = ($checkLock && $composer->getConfig()->get('lock')) || $input->getOption('check-lock'); -$locker = $composer->getLocker(); -if ($locker->isLocked() && !$locker->isFresh()) { -$lockErrors[] = '- The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `composer update` or `composer update `.'; -} - -if ($locker->isLocked()) { -$lockErrors = array_merge($lockErrors, $locker->getMissingRequirementInfo($composer->getPackage(), true)); -} - -$this->outputResult($io, $file, $errors, $warnings, $checkPublish, $publishErrors, $checkLock, $lockErrors, true); - - -$exitCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); - -if ($input->getOption('with-dependencies')) { -$localRepo = $composer->getRepositoryManager()->getLocalRepository(); -foreach ($localRepo->getPackages() as $package) { -$path = $composer->getInstallationManager()->getInstallPath($package); -$file = $path . '/composer.json'; -if (is_dir($path) && file_exists($file)) { -[$errors, $publishErrors, $warnings] = $validator->validate($file, $checkAll, $checkVersion); - -$this->outputResult($io, $package->getPrettyName(), $errors, $warnings, $checkPublish, $publishErrors); - - -$depCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); -$exitCode = max($depCode, $exitCode); -} -} -} - -$commandEvent = new CommandEvent(PluginEvents::COMMAND, 'validate', $input, $output); -$eventCode = $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); - -return max($eventCode, $exitCode); -} - - - - - - - -private function outputResult(IOInterface $io, string $name, array &$errors, array &$warnings, bool $checkPublish = false, array $publishErrors = [], bool $checkLock = false, array $lockErrors = [], bool $printSchemaUrl = false): void -{ -$doPrintSchemaUrl = false; - -if ($errors) { -$io->writeError('' . $name . ' is invalid, the following errors/warnings were found:'); -} elseif ($publishErrors) { -$io->writeError('' . $name . ' is valid for simple usage with Composer but has'); -$io->writeError('strict errors that make it unable to be published as a package'); -$doPrintSchemaUrl = $printSchemaUrl; -} elseif ($warnings) { -$io->writeError('' . $name . ' is valid, but with a few warnings'); -$doPrintSchemaUrl = $printSchemaUrl; -} elseif ($lockErrors) { -$io->write('' . $name . ' is valid but your composer.lock has some '.($checkLock ? 'errors' : 'warnings').''); -} else { -$io->write('' . $name . ' is valid'); -} - -if ($doPrintSchemaUrl) { -$io->writeError('See https://getcomposer.org/doc/04-schema.md for details on the schema'); -} - -if ($errors) { -$errors = array_map(static function ($err): string { -return '- ' . $err; -}, $errors); -array_unshift($errors, '# General errors'); -} -if ($warnings) { -$warnings = array_map(static function ($err): string { -return '- ' . $err; -}, $warnings); -array_unshift($warnings, '# General warnings'); -} - - -$extraWarnings = []; - - -if ($publishErrors) { -$publishErrors = array_map(static function ($err): string { -return '- ' . $err; -}, $publishErrors); - -if ($checkPublish) { -array_unshift($publishErrors, '# Publish errors'); -$errors = array_merge($errors, $publishErrors); -} else { -array_unshift($publishErrors, '# Publish warnings'); -$extraWarnings = array_merge($extraWarnings, $publishErrors); -} -} - - -if ($lockErrors) { -if ($checkLock) { -array_unshift($lockErrors, '# Lock file errors'); -$errors = array_merge($errors, $lockErrors); -} else { -array_unshift($lockErrors, '# Lock file warnings'); -$extraWarnings = array_merge($extraWarnings, $lockErrors); -} -} - -$messages = [ -'error' => $errors, -'warning' => array_merge($warnings, $extraWarnings), -]; - -foreach ($messages as $style => $msgs) { -foreach ($msgs as $msg) { -if (strpos($msg, '#') === 0) { -$io->writeError('<' . $style . '>' . $msg . ''); -} else { -$io->writeError($msg); -} -} -} -} -} diff --git a/composer/src/Composer/Composer.php b/composer/src/Composer/Composer.php deleted file mode 100644 index 6e9b75475..000000000 --- a/composer/src/Composer/Composer.php +++ /dev/null @@ -1,159 +0,0 @@ -locker = $locker; -} - -public function getLocker(): Locker -{ -return $this->locker; -} - -public function setDownloadManager(DownloadManager $manager): void -{ -$this->downloadManager = $manager; -} - -public function getDownloadManager(): DownloadManager -{ -return $this->downloadManager; -} - -public function setArchiveManager(ArchiveManager $manager): void -{ -$this->archiveManager = $manager; -} - -public function getArchiveManager(): ArchiveManager -{ -return $this->archiveManager; -} - -public function setPluginManager(PluginManager $manager): void -{ -$this->pluginManager = $manager; -} - -public function getPluginManager(): PluginManager -{ -return $this->pluginManager; -} - -public function setAutoloadGenerator(AutoloadGenerator $autoloadGenerator): void -{ -$this->autoloadGenerator = $autoloadGenerator; -} - -public function getAutoloadGenerator(): AutoloadGenerator -{ -return $this->autoloadGenerator; -} -} diff --git a/composer/src/Composer/Config.php b/composer/src/Composer/Config.php deleted file mode 100644 index 8d8f28865..000000000 --- a/composer/src/Composer/Config.php +++ /dev/null @@ -1,626 +0,0 @@ - 300, -'use-include-path' => false, -'allow-plugins' => [], -'use-parent-dir' => 'prompt', -'preferred-install' => 'dist', -'notify-on-install' => true, -'github-protocols' => ['https', 'ssh', 'git'], -'gitlab-protocol' => null, -'vendor-dir' => 'vendor', -'bin-dir' => '{$vendor-dir}/bin', -'cache-dir' => '{$home}/cache', -'data-dir' => '{$home}', -'cache-files-dir' => '{$cache-dir}/files', -'cache-repo-dir' => '{$cache-dir}/repo', -'cache-vcs-dir' => '{$cache-dir}/vcs', -'cache-ttl' => 15552000, -'cache-files-ttl' => null, -'cache-files-maxsize' => '300MiB', -'cache-read-only' => false, -'bin-compat' => 'auto', -'discard-changes' => false, -'autoloader-suffix' => null, -'sort-packages' => false, -'optimize-autoloader' => false, -'classmap-authoritative' => false, -'apcu-autoloader' => false, -'prepend-autoloader' => true, -'github-domains' => ['github.com'], -'bitbucket-expose-hostname' => true, -'disable-tls' => false, -'secure-http' => true, -'secure-svn-domains' => [], -'cafile' => null, -'capath' => null, -'github-expose-hostname' => true, -'gitlab-domains' => ['gitlab.com'], -'store-auths' => 'prompt', -'platform' => [], -'archive-format' => 'tar', -'archive-dir' => '.', -'htaccess-protect' => true, -'use-github-api' => true, -'lock' => true, -'platform-check' => 'php-only', -'bitbucket-oauth' => [], -'github-oauth' => [], -'gitlab-oauth' => [], -'gitlab-token' => [], -'http-basic' => [], -'bearer' => [], -]; - - -public static $defaultRepositories = [ -'packagist.org' => [ -'type' => 'composer', -'url' => 'https://repo.packagist.org', -], -]; - - -private $config; - -private $baseDir; - -private $repositories; - -private $configSource; - -private $authConfigSource; - -private $localAuthConfigSource = null; - -private $useEnvironment; - -private $warnedHosts = []; - -private $sslVerifyWarnedHosts = []; - -private $sourceOfConfigValue = []; - - - - - -public function __construct(bool $useEnvironment = true, ?string $baseDir = null) -{ - -$this->config = static::$defaultConfig; - -$this->repositories = static::$defaultRepositories; -$this->useEnvironment = (bool) $useEnvironment; -$this->baseDir = is_string($baseDir) && '' !== $baseDir ? $baseDir : null; - -foreach ($this->config as $configKey => $configValue) { -$this->setSourceOfConfigValue($configValue, $configKey, self::SOURCE_DEFAULT); -} - -foreach ($this->repositories as $configKey => $configValue) { -$this->setSourceOfConfigValue($configValue, 'repositories.' . $configKey, self::SOURCE_DEFAULT); -} -} - -public function setConfigSource(ConfigSourceInterface $source): void -{ -$this->configSource = $source; -} - -public function getConfigSource(): ConfigSourceInterface -{ -return $this->configSource; -} - -public function setAuthConfigSource(ConfigSourceInterface $source): void -{ -$this->authConfigSource = $source; -} - -public function getAuthConfigSource(): ConfigSourceInterface -{ -return $this->authConfigSource; -} - -public function setLocalAuthConfigSource(ConfigSourceInterface $source): void -{ -$this->localAuthConfigSource = $source; -} - -public function getLocalAuthConfigSource(): ?ConfigSourceInterface -{ -return $this->localAuthConfigSource; -} - - - - - - -public function merge(array $config, string $source = self::SOURCE_UNKNOWN): void -{ - -if (!empty($config['config']) && is_array($config['config'])) { -foreach ($config['config'] as $key => $val) { -if (in_array($key, ['bitbucket-oauth', 'github-oauth', 'gitlab-oauth', 'gitlab-token', 'http-basic', 'bearer'], true) && isset($this->config[$key])) { -$this->config[$key] = array_merge($this->config[$key], $val); -$this->setSourceOfConfigValue($val, $key, $source); -} elseif (in_array($key, ['allow-plugins'], true) && isset($this->config[$key]) && is_array($this->config[$key]) && is_array($val)) { - - -$this->config[$key] = array_merge($val, $this->config[$key], $val); -$this->setSourceOfConfigValue($val, $key, $source); -} elseif (in_array($key, ['gitlab-domains', 'github-domains'], true) && isset($this->config[$key])) { -$this->config[$key] = array_unique(array_merge($this->config[$key], $val)); -$this->setSourceOfConfigValue($val, $key, $source); -} elseif ('preferred-install' === $key && isset($this->config[$key])) { -if (is_array($val) || is_array($this->config[$key])) { -if (is_string($val)) { -$val = ['*' => $val]; -} -if (is_string($this->config[$key])) { -$this->config[$key] = ['*' => $this->config[$key]]; -$this->sourceOfConfigValue[$key . '*'] = $source; -} -$this->config[$key] = array_merge($this->config[$key], $val); -$this->setSourceOfConfigValue($val, $key, $source); - -if (isset($this->config[$key]['*'])) { -$wildcard = $this->config[$key]['*']; -unset($this->config[$key]['*']); -$this->config[$key]['*'] = $wildcard; -} -} else { -$this->config[$key] = $val; -$this->setSourceOfConfigValue($val, $key, $source); -} -} else { -$this->config[$key] = $val; -$this->setSourceOfConfigValue($val, $key, $source); -} -} -} - -if (!empty($config['repositories']) && is_array($config['repositories'])) { -$this->repositories = array_reverse($this->repositories, true); -$newRepos = array_reverse($config['repositories'], true); -foreach ($newRepos as $name => $repository) { - -if (false === $repository) { -$this->disableRepoByName((string) $name); -continue; -} - - -if (is_array($repository) && 1 === count($repository) && false === current($repository)) { -$this->disableRepoByName((string) key($repository)); -continue; -} - - -if (isset($repository['type'], $repository['url']) && $repository['type'] === 'composer' && Preg::isMatch('{^https?://(?:[a-z0-9-.]+\.)?packagist.org(/|$)}', $repository['url'])) { -$this->disableRepoByName('packagist.org'); -} - - -if (is_int($name)) { -$this->repositories[] = $repository; -$this->setSourceOfConfigValue($repository, 'repositories.' . array_search($repository, $this->repositories, true), $source); -} else { -if ($name === 'packagist') { -$this->repositories[$name . '.org'] = $repository; -$this->setSourceOfConfigValue($repository, 'repositories.' . $name . '.org', $source); -} else { -$this->repositories[$name] = $repository; -$this->setSourceOfConfigValue($repository, 'repositories.' . $name, $source); -} -} -} -$this->repositories = array_reverse($this->repositories, true); -} -} - - - - -public function getRepositories(): array -{ -return $this->repositories; -} - - - - - - - - - -public function get(string $key, int $flags = 0) -{ -switch ($key) { - -case 'vendor-dir': -case 'bin-dir': -case 'process-timeout': -case 'data-dir': -case 'cache-dir': -case 'cache-files-dir': -case 'cache-repo-dir': -case 'cache-vcs-dir': -case 'cafile': -case 'capath': - -$env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); - -$val = $this->getComposerEnv($env); -if ($val !== false) { -$this->setSourceOfConfigValue($val, $key, $env); -} - -if ($key === 'process-timeout') { -return max(0, false !== $val ? (int) $val : $this->config[$key]); -} - -$val = rtrim((string) $this->process(false !== $val ? $val : $this->config[$key], $flags), '/\\'); -$val = Platform::expandPath($val); - -if (substr($key, -4) !== '-dir') { -return $val; -} - -return (($flags & self::RELATIVE_PATHS) === self::RELATIVE_PATHS) ? $val : $this->realpath($val); - - -case 'cache-read-only': -case 'htaccess-protect': - -$env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); - -$val = $this->getComposerEnv($env); -if (false === $val) { -$val = $this->config[$key]; -} else { -$this->setSourceOfConfigValue($val, $key, $env); -} - -return $val !== 'false' && (bool) $val; - - -case 'disable-tls': -case 'secure-http': -case 'use-github-api': -case 'lock': - -if ($key === 'secure-http' && $this->get('disable-tls') === true) { -return false; -} - -return $this->config[$key] !== 'false' && (bool) $this->config[$key]; - - -case 'cache-ttl': -return max(0, (int) $this->config[$key]); - - -case 'cache-files-maxsize': -if (!Preg::isMatch('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', (string) $this->config[$key], $matches)) { -throw new \RuntimeException( -"Could not parse the value of '$key': {$this->config[$key]}" -); -} -$size = (float) $matches[1]; -if (isset($matches[2])) { -switch (strtolower($matches[2])) { -case 'g': -$size *= 1024; - - -case 'm': -$size *= 1024; - - -case 'k': -$size *= 1024; -break; -} -} - -return max(0, (int) $size); - - -case 'cache-files-ttl': -if (isset($this->config[$key])) { -return max(0, (int) $this->config[$key]); -} - -return $this->get('cache-ttl'); - -case 'home': -return rtrim($this->process(Platform::expandPath($this->config[$key]), $flags), '/\\'); - -case 'bin-compat': -$value = $this->getComposerEnv('COMPOSER_BIN_COMPAT') ?: $this->config[$key]; - -if (!in_array($value, ['auto', 'full', 'proxy', 'symlink'])) { -throw new \RuntimeException( -"Invalid value for 'bin-compat': {$value}. Expected auto, full or proxy" -); -} - -if ($value === 'symlink') { -trigger_error('config.bin-compat "symlink" is deprecated since Composer 2.2, use auto, full (for Windows compatibility) or proxy instead.', E_USER_DEPRECATED); -} - -return $value; - -case 'discard-changes': -$env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES'); -if ($env !== false) { -if (!in_array($env, ['stash', 'true', 'false', '1', '0'], true)) { -throw new \RuntimeException( -"Invalid value for COMPOSER_DISCARD_CHANGES: {$env}. Expected 1, 0, true, false or stash" -); -} -if ('stash' === $env) { -return 'stash'; -} - - -return $env !== 'false' && (bool) $env; -} - -if (!in_array($this->config[$key], [true, false, 'stash'], true)) { -throw new \RuntimeException( -"Invalid value for 'discard-changes': {$this->config[$key]}. Expected true, false or stash" -); -} - -return $this->config[$key]; - -case 'github-protocols': -$protos = $this->config['github-protocols']; -if ($this->config['secure-http'] && false !== ($index = array_search('git', $protos))) { -unset($protos[$index]); -} -if (reset($protos) === 'http') { -throw new \RuntimeException('The http protocol for github is not available anymore, update your config\'s github-protocols to use "https", "git" or "ssh"'); -} - -return $protos; - -case 'autoloader-suffix': -if ($this->config[$key] === '') { -return null; -} - -return $this->process($this->config[$key], $flags); - -default: -if (!isset($this->config[$key])) { -return null; -} - -return $this->process($this->config[$key], $flags); -} -} - - - - -public function all(int $flags = 0): array -{ -$all = [ -'repositories' => $this->getRepositories(), -]; -foreach (array_keys($this->config) as $key) { -$all['config'][$key] = $this->get($key, $flags); -} - -return $all; -} - -public function getSourceOfValue(string $key): string -{ -$this->get($key); - -return $this->sourceOfConfigValue[$key] ?? self::SOURCE_UNKNOWN; -} - - - - -private function setSourceOfConfigValue($configValue, string $path, string $source): void -{ -$this->sourceOfConfigValue[$path] = $source; - -if (is_array($configValue)) { -foreach ($configValue as $key => $value) { -$this->setSourceOfConfigValue($value, $path . '.' . $key, $source); -} -} -} - - - - -public function raw(): array -{ -return [ -'repositories' => $this->getRepositories(), -'config' => $this->config, -]; -} - - - - -public function has(string $key): bool -{ -return array_key_exists($key, $this->config); -} - - - - - - - - - -private function process($value, int $flags) -{ -if (!is_string($value)) { -return $value; -} - -return Preg::replaceCallback('#\{\$(.+)\}#', function ($match) use ($flags) { -assert(is_string($match[1])); -return $this->get($match[1], $flags); -}, $value); -} - - - - - - -private function realpath(string $path): string -{ -if (Preg::isMatch('{^(?:/|[a-z]:|[a-z0-9.]+://|\\\\\\\\)}i', $path)) { -return $path; -} - -return $this->baseDir ? $this->baseDir . '/' . $path : $path; -} - - - - - - - - - -private function getComposerEnv(string $var) -{ -if ($this->useEnvironment) { -return Platform::getEnv($var); -} - -return false; -} - -private function disableRepoByName(string $name): void -{ -if (isset($this->repositories[$name])) { -unset($this->repositories[$name]); -} elseif ($name === 'packagist') { -unset($this->repositories['packagist.org']); -} -} - - - - - - - -public function prohibitUrlByConfig(string $url, ?IOInterface $io = null, array $repoOptions = []): void -{ - -if (false === filter_var($url, FILTER_VALIDATE_URL)) { -return; -} - - -$scheme = parse_url($url, PHP_URL_SCHEME); -$hostname = parse_url($url, PHP_URL_HOST); -if (in_array($scheme, ['http', 'git', 'ftp', 'svn'])) { -if ($this->get('secure-http')) { -if ($scheme === 'svn') { -if (in_array($hostname, $this->get('secure-svn-domains'), true)) { -return; -} - -throw new TransportException("Your configuration does not allow connections to $url. See https://getcomposer.org/doc/06-config.md#secure-svn-domains for details."); -} - -throw new TransportException("Your configuration does not allow connections to $url. See https://getcomposer.org/doc/06-config.md#secure-http for details."); -} -if ($io !== null) { -if (is_string($hostname)) { -if (!isset($this->warnedHosts[$hostname])) { -$io->writeError("Warning: Accessing $hostname over $scheme which is an insecure protocol."); -} -$this->warnedHosts[$hostname] = true; -} -} -} - -if ($io !== null && is_string($hostname) && !isset($this->sslVerifyWarnedHosts[$hostname])) { -$warning = null; -if (isset($repoOptions['ssl']['verify_peer']) && !(bool) $repoOptions['ssl']['verify_peer']) { -$warning = 'verify_peer'; -} - -if (isset($repoOptions['ssl']['verify_peer_name']) && !(bool) $repoOptions['ssl']['verify_peer_name']) { -$warning = $warning === null ? 'verify_peer_name' : $warning . ' and verify_peer_name'; -} - -if ($warning !== null) { -$io->writeError("Warning: Accessing $hostname with $warning disabled."); -$this->sslVerifyWarnedHosts[$hostname] = true; -} -} -} - - - - - - - - - - - -public static function disableProcessTimeout(): void -{ - -ProcessExecutor::setTimeout(0); -} -} diff --git a/composer/src/Composer/Config/ConfigSourceInterface.php b/composer/src/Composer/Config/ConfigSourceInterface.php deleted file mode 100644 index 449b795be..000000000 --- a/composer/src/Composer/Config/ConfigSourceInterface.php +++ /dev/null @@ -1,84 +0,0 @@ -file = $file; -$this->authConfig = $authConfig; -} - - - - -public function getName(): string -{ -return $this->file->getPath(); -} - - - - -public function addRepository(string $name, $config, bool $append = true): void -{ -$this->manipulateJson('addRepository', static function (&$config, $repo, $repoConfig) use ($append): void { - - -if (isset($config['repositories'])) { -foreach ($config['repositories'] as $index => $val) { -if ($index === $repo) { -continue; -} -if (is_numeric($index) && ($val === ['packagist' => false] || $val === ['packagist.org' => false])) { -unset($config['repositories'][$index]); -$config['repositories']['packagist.org'] = false; -break; -} -} -} - -if ($append) { -$config['repositories'][$repo] = $repoConfig; -} else { -$config['repositories'] = [$repo => $repoConfig] + $config['repositories']; -} -}, $name, $config, $append); -} - - - - -public function removeRepository(string $name): void -{ -$this->manipulateJson('removeRepository', static function (&$config, $repo): void { -unset($config['repositories'][$repo]); -}, $name); -} - - - - -public function addConfigSetting(string $name, $value): void -{ -$authConfig = $this->authConfig; -$this->manipulateJson('addConfigSetting', static function (&$config, $key, $val) use ($authConfig): void { -if (Preg::isMatch('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|bearer|http-basic|platform)\.}', $key)) { -[$key, $host] = explode('.', $key, 2); -if ($authConfig) { -$config[$key][$host] = $val; -} else { -$config['config'][$key][$host] = $val; -} -} else { -$config['config'][$key] = $val; -} -}, $name, $value); -} - - - - -public function removeConfigSetting(string $name): void -{ -$authConfig = $this->authConfig; -$this->manipulateJson('removeConfigSetting', static function (&$config, $key) use ($authConfig): void { -if (Preg::isMatch('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|bearer|http-basic|platform)\.}', $key)) { -[$key, $host] = explode('.', $key, 2); -if ($authConfig) { -unset($config[$key][$host]); -} else { -unset($config['config'][$key][$host]); -} -} else { -unset($config['config'][$key]); -} -}, $name); -} - - - - -public function addProperty(string $name, $value): void -{ -$this->manipulateJson('addProperty', static function (&$config, $key, $val): void { -if (strpos($key, 'extra.') === 0 || strpos($key, 'scripts.') === 0) { -$bits = explode('.', $key); -$last = array_pop($bits); -$arr = &$config[reset($bits)]; -foreach ($bits as $bit) { -if (!isset($arr[$bit])) { -$arr[$bit] = []; -} -$arr = &$arr[$bit]; -} -$arr[$last] = $val; -} else { -$config[$key] = $val; -} -}, $name, $value); -} - - - - -public function removeProperty(string $name): void -{ -$this->manipulateJson('removeProperty', static function (&$config, $key): void { -if (strpos($key, 'extra.') === 0 || strpos($key, 'scripts.') === 0) { -$bits = explode('.', $key); -$last = array_pop($bits); -$arr = &$config[reset($bits)]; -foreach ($bits as $bit) { -if (!isset($arr[$bit])) { -return; -} -$arr = &$arr[$bit]; -} -unset($arr[$last]); -} else { -unset($config[$key]); -} -}, $name); -} - - - - -public function addLink(string $type, string $name, string $value): void -{ -$this->manipulateJson('addLink', static function (&$config, $type, $name, $value): void { -$config[$type][$name] = $value; -}, $type, $name, $value); -} - - - - -public function removeLink(string $type, string $name): void -{ -$this->manipulateJson('removeSubNode', static function (&$config, $type, $name): void { -unset($config[$type][$name]); -}, $type, $name); -$this->manipulateJson('removeMainKeyIfEmpty', static function (&$config, $type): void { -if (0 === count($config[$type])) { -unset($config[$type]); -} -}, $type); -} - - - - -private function manipulateJson(string $method, callable $fallback, ...$args): void -{ -if ($this->file->exists()) { -if (!is_writable($this->file->getPath())) { -throw new \RuntimeException(sprintf('The file "%s" is not writable.', $this->file->getPath())); -} - -if (!Filesystem::isReadable($this->file->getPath())) { -throw new \RuntimeException(sprintf('The file "%s" is not readable.', $this->file->getPath())); -} - -$contents = file_get_contents($this->file->getPath()); -} elseif ($this->authConfig) { -$contents = "{\n}\n"; -} else { -$contents = "{\n \"config\": {\n }\n}\n"; -} - -$manipulator = new JsonManipulator($contents); - -$newFile = !$this->file->exists(); - - -if ($this->authConfig && $method === 'addConfigSetting') { -$method = 'addSubNode'; -[$mainNode, $name] = explode('.', $args[0], 2); -$args = [$mainNode, $name, $args[1]]; -} elseif ($this->authConfig && $method === 'removeConfigSetting') { -$method = 'removeSubNode'; -[$mainNode, $name] = explode('.', $args[0], 2); -$args = [$mainNode, $name]; -} - - -if (call_user_func_array([$manipulator, $method], $args)) { -file_put_contents($this->file->getPath(), $manipulator->getContents()); -} else { - -$config = $this->file->read(); -$this->arrayUnshiftRef($args, $config); -$fallback(...$args); - -foreach (['require', 'require-dev', 'conflict', 'provide', 'replace', 'suggest', 'config', 'autoload', 'autoload-dev', 'scripts', 'scripts-descriptions', 'support'] as $prop) { -if (isset($config[$prop]) && $config[$prop] === []) { -$config[$prop] = new \stdClass; -} -} -foreach (['psr-0', 'psr-4'] as $prop) { -if (isset($config['autoload'][$prop]) && $config['autoload'][$prop] === []) { -$config['autoload'][$prop] = new \stdClass; -} -if (isset($config['autoload-dev'][$prop]) && $config['autoload-dev'][$prop] === []) { -$config['autoload-dev'][$prop] = new \stdClass; -} -} -foreach (['platform', 'http-basic', 'bearer', 'gitlab-token', 'gitlab-oauth', 'github-oauth', 'preferred-install'] as $prop) { -if (isset($config['config'][$prop]) && $config['config'][$prop] === []) { -$config['config'][$prop] = new \stdClass; -} -} -$this->file->write($config); -} - -try { -$this->file->validateSchema(JsonFile::LAX_SCHEMA); -} catch (JsonValidationException $e) { - -file_put_contents($this->file->getPath(), $contents); -throw new \RuntimeException('Failed to update composer.json with a valid format, reverting to the original content. Please report an issue to us with details (command you run and a copy of your composer.json). '.PHP_EOL.implode(PHP_EOL, $e->getErrors()), 0, $e); -} - -if ($newFile) { -Silencer::call('chmod', $this->file->getPath(), 0600); -} -} - - - - - - - -private function arrayUnshiftRef(array &$array, &$value): int -{ -$return = array_unshift($array, ''); -$array[0] = &$value; - -return $return; -} -} diff --git a/composer/src/Composer/Console/Application.php b/composer/src/Composer/Console/Application.php deleted file mode 100644 index cd02163e2..000000000 --- a/composer/src/Composer/Console/Application.php +++ /dev/null @@ -1,663 +0,0 @@ -io = new NullIO(); - -$this->signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) { -$this->io->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); - -$handler->exitWithLastSignal(); -}); - -if (!$shutdownRegistered) { -$shutdownRegistered = true; - -register_shutdown_function(static function (): void { -$lastError = error_get_last(); - -if ($lastError && $lastError['message'] && -(strpos($lastError['message'], 'Allowed memory') !== false || -strpos($lastError['message'], 'exceeded memory') !== false )) { -echo "\n". 'Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.'; -} -}); -} - -$this->initialWorkingDirectory = getcwd(); - -parent::__construct($name, $version); -} - -public function __destruct() -{ -$this->signalHandler->unregister(); -} - -public function run(?InputInterface $input = null, ?OutputInterface $output = null): int -{ -if (null === $output) { -$output = Factory::createOutput(); -} - -return parent::run($input, $output); -} - -public function doRun(InputInterface $input, OutputInterface $output): int -{ -$this->disablePluginsByDefault = $input->hasParameterOption('--no-plugins'); -$this->disableScriptsByDefault = $input->hasParameterOption('--no-scripts'); - -$stdin = defined('STDIN') ? STDIN : fopen('php://stdin', 'r'); -if (Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING') !== '1' && (Platform::getEnv('COMPOSER_NO_INTERACTION') || $stdin === false || !Platform::isTty($stdin))) { -$input->setInteractive(false); -} - -$io = $this->io = new ConsoleIO($input, $output, new HelperSet([ -new QuestionHelper(), -])); - - -ErrorHandler::register($io); - -if ($input->hasParameterOption('--no-cache')) { -$io->writeError('Disabling cache usage', true, IOInterface::DEBUG); -Platform::putEnv('COMPOSER_CACHE_DIR', Platform::isWindows() ? 'nul' : '/dev/null'); -} - - -$newWorkDir = $this->getNewWorkingDir($input); -if (null !== $newWorkDir) { -$oldWorkingDir = Platform::getCwd(true); -chdir($newWorkDir); -$this->initialWorkingDirectory = $newWorkDir; -$cwd = Platform::getCwd(true); -$io->writeError('Changed CWD to ' . ($cwd !== '' ? $cwd : $newWorkDir), true, IOInterface::DEBUG); -} - - -$commandName = ''; -if ($name = $this->getCommandName($input)) { -try { -$commandName = $this->find($name)->getName(); -} catch (CommandNotFoundException $e) { - -$commandName = false; -} catch (\InvalidArgumentException $e) { -} -} - - -if ($io->isInteractive() && null === $newWorkDir && !in_array($commandName, ['', 'list', 'init', 'about', 'help', 'diagnose', 'self-update', 'global', 'create-project', 'outdated'], true) && !file_exists(Factory::getComposerFile()) && ($useParentDirIfNoJsonAvailable = $this->getUseParentDirConfigValue()) !== false) { -$dir = dirname(Platform::getCwd(true)); -$home = realpath(Platform::getEnv('HOME') ?: Platform::getEnv('USERPROFILE') ?: '/'); - - -while (dirname($dir) !== $dir && $dir !== $home) { -if (file_exists($dir.'/'.Factory::getComposerFile())) { -if ($useParentDirIfNoJsonAvailable === true || $io->askConfirmation('No composer.json in current directory, do you want to use the one at '.$dir.'? [Y,n]? ')) { -if ($useParentDirIfNoJsonAvailable === true) { -$io->writeError('No composer.json in current directory, changing working directory to '.$dir.''); -} else { -$io->writeError('Always want to use the parent dir? Use "composer config --global use-parent-dir true" to change the default.'); -} -$oldWorkingDir = Platform::getCwd(true); -chdir($dir); -} -break; -} -$dir = dirname($dir); -} -} - -$needsSudoCheck = !Platform::isWindows() -&& function_exists('exec') -&& !Platform::getEnv('COMPOSER_ALLOW_SUPERUSER') -&& (ini_get('open_basedir') || !file_exists('/.dockerenv')); -$isNonAllowedRoot = false; - - -if ($needsSudoCheck) { -$isNonAllowedRoot = function_exists('posix_getuid') && posix_getuid() === 0; - -if ($isNonAllowedRoot) { -if ($uid = (int) Platform::getEnv('SUDO_UID')) { - - -Silencer::call('exec', "sudo -u \\#{$uid} sudo -K > /dev/null 2>&1"); -} -} - - -Silencer::call('exec', 'sudo -K > /dev/null 2>&1'); -} - - - -$mayNeedPluginCommand = false === $input->hasParameterOption(['--version', '-V']) -&& ( - -false === $commandName - -|| in_array($commandName, ['', 'list', 'help'], true) - - -|| ($commandName === '_complete' && !$isNonAllowedRoot) -); - -if ($mayNeedPluginCommand && !$this->disablePluginsByDefault && !$this->hasPluginCommands) { - - -if ($isNonAllowedRoot) { -$io->writeError('Do not run Composer as root/super user! See https://getcomposer.org/root for details'); - -if ($io->isInteractive() && $io->askConfirmation('Continue as root/super user [yes]? ')) { - -$isNonAllowedRoot = false; -} else { -$io->writeError('Aborting as no plugin should be loaded if running as super user is not explicitly allowed'); - -return 1; -} -} - -try { -foreach ($this->getPluginCommands() as $command) { -if ($this->has($command->getName())) { -$io->writeError('Plugin command '.$command->getName().' ('.get_class($command).') would override a Composer command and has been skipped'); -} else { -$this->add($command); -} -} -} catch (NoSslException $e) { - -} catch (ParsingException $e) { -$details = $e->getDetails(); - -$file = realpath(Factory::getComposerFile()); - -$line = null; -if ($details && isset($details['line'])) { -$line = $details['line']; -} - -$ghe = new GithubActionError($this->io); -$ghe->emit($e->getMessage(), $file, $line); - -throw $e; -} - -$this->hasPluginCommands = true; -} - -if ($isNonAllowedRoot && !$io->isInteractive()) { -$io->writeError('Composer plugins have been disabled for safety in this non-interactive session. Set COMPOSER_ALLOW_SUPERUSER=1 if you want to allow plugins to run as root/super user.'); -$this->disablePluginsByDefault = true; -} - - -$isProxyCommand = false; -if ($name = $this->getCommandName($input)) { -try { -$command = $this->find($name); -$commandName = $command->getName(); -$isProxyCommand = ($command instanceof Command\BaseCommand && $command->isProxyCommand()); -} catch (\InvalidArgumentException $e) { -} -} - -if (!$isProxyCommand) { -$io->writeError(sprintf( -'Running %s (%s) with %s on %s', -Composer::getVersion(), -Composer::RELEASE_DATE, -defined('HHVM_VERSION') ? 'HHVM '.HHVM_VERSION : 'PHP '.PHP_VERSION, -function_exists('php_uname') ? php_uname('s') . ' / ' . php_uname('r') : 'Unknown OS' -), true, IOInterface::DEBUG); - -if (PHP_VERSION_ID < 70205) { -$io->writeError('Composer supports PHP 7.2.5 and above, you will most likely encounter problems with your PHP '.PHP_VERSION.'. Upgrading is strongly recommended but you can use Composer 2.2.x LTS as a fallback.'); -} - -if (XdebugHandler::isXdebugActive() && !Platform::getEnv('COMPOSER_DISABLE_XDEBUG_WARN')) { -$io->writeError('Composer is operating slower than normal because you have Xdebug enabled. See https://getcomposer.org/xdebug'); -} - -if (defined('COMPOSER_DEV_WARNING_TIME') && $commandName !== 'self-update' && $commandName !== 'selfupdate' && time() > COMPOSER_DEV_WARNING_TIME) { -$io->writeError(sprintf('Warning: This development build of Composer is over 60 days old. It is recommended to update it by running "%s self-update" to get the latest version.', $_SERVER['PHP_SELF'])); -} - -if ($isNonAllowedRoot) { -if ($commandName !== 'self-update' && $commandName !== 'selfupdate' && $commandName !== '_complete') { -$io->writeError('Do not run Composer as root/super user! See https://getcomposer.org/root for details'); - -if ($io->isInteractive()) { -if (!$io->askConfirmation('Continue as root/super user [yes]? ')) { -return 1; -} -} -} -} - - -Silencer::call(static function () use ($io): void { -$tempfile = sys_get_temp_dir() . '/temp-' . md5(microtime()); -if (!(file_put_contents($tempfile, __FILE__) && (file_get_contents($tempfile) === __FILE__) && unlink($tempfile) && !file_exists($tempfile))) { -$io->writeError(sprintf('PHP temp directory (%s) does not exist or is not writable to Composer. Set sys_temp_dir in your php.ini', sys_get_temp_dir())); -} -}); - - -$file = Factory::getComposerFile(); -if (is_file($file) && Filesystem::isReadable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { -if (isset($composer['scripts']) && is_array($composer['scripts'])) { -foreach ($composer['scripts'] as $script => $dummy) { -if (!defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { -if ($this->has($script)) { -$io->writeError('A script named '.$script.' would override a Composer command and has been skipped'); -} else { -$description = null; - -if (isset($composer['scripts-descriptions'][$script])) { -$description = $composer['scripts-descriptions'][$script]; -} - -$this->add(new Command\ScriptAliasCommand($script, $description)); -} -} -} -} -} -} - -try { -if ($input->hasParameterOption('--profile')) { -$startTime = microtime(true); -$this->io->enableDebugging($startTime); -} - -$result = parent::doRun($input, $output); - - -if (isset($oldWorkingDir) && '' !== $oldWorkingDir) { -Silencer::call('chdir', $oldWorkingDir); -} - -if (isset($startTime)) { -$io->writeError('Memory usage: '.round(memory_get_usage() / 1024 / 1024, 2).'MiB (peak: '.round(memory_get_peak_usage() / 1024 / 1024, 2).'MiB), time: '.round(microtime(true) - $startTime, 2).'s'); -} - -return $result; -} catch (ScriptExecutionException $e) { -return $e->getCode(); -} catch (\Throwable $e) { -$ghe = new GithubActionError($this->io); -$ghe->emit($e->getMessage()); - -$this->hintCommonErrors($e, $output); - - - -if (!$e instanceof \Exception) { -if ($output instanceof ConsoleOutputInterface) { -$this->renderThrowable($e, $output->getErrorOutput()); -} else { -$this->renderThrowable($e, $output); -} - -return max(1, $e->getCode()); -} - -throw $e; -} finally { -restore_error_handler(); -} -} - - - - - -private function getNewWorkingDir(InputInterface $input): ?string -{ - -$workingDir = $input->getParameterOption(['--working-dir', '-d'], null, true); -if (null !== $workingDir && !is_dir($workingDir)) { -throw new \RuntimeException('Invalid working directory specified, '.$workingDir.' does not exist.'); -} - -return $workingDir; -} - -private function hintCommonErrors(\Throwable $exception, OutputInterface $output): void -{ -$io = $this->getIO(); - -if ((get_class($exception) === LogicException::class || $exception instanceof \Error) && $output->getVerbosity() < OutputInterface::VERBOSITY_VERBOSE) { -$output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); -} - -Silencer::suppress(); -try { -$composer = $this->getComposer(false, true); -if (null !== $composer && function_exists('disk_free_space')) { -$config = $composer->getConfig(); - -$minSpaceFree = 100 * 1024 * 1024; -if ((($df = disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) -|| (($df = disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) -|| (($df = disk_free_space($dir = sys_get_temp_dir())) !== false && $df < $minSpaceFree) -) { -$io->writeError('The disk hosting '.$dir.' has less than 100MiB of free space, this may be the cause of the following exception', true, IOInterface::QUIET); -} -} -} catch (\Exception $e) { -} -Silencer::restore(); - -if (Platform::isWindows() && false !== strpos($exception->getMessage(), 'The system cannot find the path specified')) { -$io->writeError('The following exception may be caused by a stale entry in your cmd.exe AutoRun', true, IOInterface::QUIET); -$io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#-the-system-cannot-find-the-path-specified-windows- for details', true, IOInterface::QUIET); -} - -if (false !== strpos($exception->getMessage(), 'fork failed - Cannot allocate memory')) { -$io->writeError('The following exception is caused by a lack of memory or swap, or not having swap configured', true, IOInterface::QUIET); -$io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details', true, IOInterface::QUIET); -} - -if ($exception instanceof ProcessTimedOutException) { -$io->writeError('The following exception is caused by a process timeout', true, IOInterface::QUIET); -$io->writeError('Check https://getcomposer.org/doc/06-config.md#process-timeout for details', true, IOInterface::QUIET); -} - -$hints = HttpDownloader::getExceptionHints($exception); -if (null !== $hints && count($hints) > 0) { -foreach ($hints as $hint) { -$io->writeError($hint, true, IOInterface::QUIET); -} -} -} - - - - - - -public function getComposer(bool $required = true, ?bool $disablePlugins = null, ?bool $disableScripts = null): ?Composer -{ -if (null === $disablePlugins) { -$disablePlugins = $this->disablePluginsByDefault; -} -if (null === $disableScripts) { -$disableScripts = $this->disableScriptsByDefault; -} - -if (null === $this->composer) { -try { -$this->composer = Factory::create(Platform::isInputCompletionProcess() ? new NullIO() : $this->io, null, $disablePlugins, $disableScripts); -} catch (\InvalidArgumentException $e) { -if ($required) { -$this->io->writeError($e->getMessage()); -if ($this->areExceptionsCaught()) { -exit(1); -} -throw $e; -} -} catch (JsonValidationException $e) { -if ($required) { -throw $e; -} -} catch (RuntimeException $e) { -if ($required) { -throw $e; -} -} -} - -return $this->composer; -} - - - - -public function resetComposer(): void -{ -$this->composer = null; -if (method_exists($this->getIO(), 'resetAuthentications')) { -$this->getIO()->resetAuthentications(); -} -} - -public function getIO(): IOInterface -{ -return $this->io; -} - -public function getHelp(): string -{ -return self::$logo . parent::getHelp(); -} - - - - - -protected function getDefaultCommands(): array -{ -$commands = array_merge(parent::getDefaultCommands(), [ -new Command\AboutCommand(), -new Command\ConfigCommand(), -new Command\DependsCommand(), -new Command\ProhibitsCommand(), -new Command\InitCommand(), -new Command\InstallCommand(), -new Command\CreateProjectCommand(), -new Command\UpdateCommand(), -new Command\SearchCommand(), -new Command\ValidateCommand(), -new Command\AuditCommand(), -new Command\ShowCommand(), -new Command\SuggestsCommand(), -new Command\RequireCommand(), -new Command\DumpAutoloadCommand(), -new Command\StatusCommand(), -new Command\ArchiveCommand(), -new Command\DiagnoseCommand(), -new Command\RunScriptCommand(), -new Command\LicensesCommand(), -new Command\GlobalCommand(), -new Command\ClearCacheCommand(), -new Command\RemoveCommand(), -new Command\HomeCommand(), -new Command\ExecCommand(), -new Command\OutdatedCommand(), -new Command\CheckPlatformReqsCommand(), -new Command\FundCommand(), -new Command\ReinstallCommand(), -new Command\BumpCommand(), -]); - -if (strpos(__FILE__, 'phar:') === 0 || '1' === Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING')) { -$commands[] = new Command\SelfUpdateCommand(); -} - -return $commands; -} - -public function getLongVersion(): string -{ -$branchAliasString = ''; -if (Composer::BRANCH_ALIAS_VERSION && Composer::BRANCH_ALIAS_VERSION !== '@package_branch_alias_version'.'@') { -$branchAliasString = sprintf(' (%s)', Composer::BRANCH_ALIAS_VERSION); -} - -return sprintf( -'%s version %s%s %s', -$this->getName(), -$this->getVersion(), -$branchAliasString, -Composer::RELEASE_DATE -); -} - -protected function getDefaultInputDefinition(): InputDefinition -{ -$definition = parent::getDefaultInputDefinition(); -$definition->addOption(new InputOption('--profile', null, InputOption::VALUE_NONE, 'Display timing and memory usage information')); -$definition->addOption(new InputOption('--no-plugins', null, InputOption::VALUE_NONE, 'Whether to disable plugins.')); -$definition->addOption(new InputOption('--no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.')); -$definition->addOption(new InputOption('--working-dir', '-d', InputOption::VALUE_REQUIRED, 'If specified, use the given directory as working directory.')); -$definition->addOption(new InputOption('--no-cache', null, InputOption::VALUE_NONE, 'Prevent use of the cache')); - -return $definition; -} - - - - -private function getPluginCommands(): array -{ -$commands = []; - -$composer = $this->getComposer(false, false); -if (null === $composer) { -$composer = Factory::createGlobal($this->io, $this->disablePluginsByDefault, $this->disableScriptsByDefault); -} - -if (null !== $composer) { -$pm = $composer->getPluginManager(); -foreach ($pm->getPluginCapabilities('Composer\Plugin\Capability\CommandProvider', ['composer' => $composer, 'io' => $this->io]) as $capability) { -$newCommands = $capability->getCommands(); -if (!is_array($newCommands)) { -throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' failed to return an array from getCommands'); -} -foreach ($newCommands as $command) { -if (!$command instanceof Command\BaseCommand) { -throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' returned an invalid value, we expected an array of Composer\Command\BaseCommand objects'); -} -} -$commands = array_merge($commands, $newCommands); -} -} - -return $commands; -} - - - - - - -public function getInitialWorkingDirectory() -{ -return $this->initialWorkingDirectory; -} - - - - -private function getUseParentDirConfigValue() -{ -$config = Factory::createConfig($this->io); - -return $config->get('use-parent-dir'); -} -} diff --git a/composer/src/Composer/Console/GithubActionError.php b/composer/src/Composer/Console/GithubActionError.php deleted file mode 100644 index c27f2a188..000000000 --- a/composer/src/Composer/Console/GithubActionError.php +++ /dev/null @@ -1,68 +0,0 @@ -io = $io; -} - -public function emit(string $message, ?string $file = null, ?int $line = null): void -{ -if (Platform::getEnv('GITHUB_ACTIONS') && !Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING')) { -$message = $this->escapeData($message); - -if ($file && $line) { -$file = $this->escapeProperty($file); -$this->io->write("::error file=". $file .",line=". $line ."::". $message); -} elseif ($file) { -$file = $this->escapeProperty($file); -$this->io->write("::error file=". $file ."::". $message); -} else { -$this->io->write("::error ::". $message); -} -} -} - -private function escapeData(string $data): string -{ - -$data = str_replace("%", '%25', $data); -$data = str_replace("\r", '%0D', $data); -$data = str_replace("\n", '%0A', $data); - -return $data; -} - -private function escapeProperty(string $property): string -{ - -$property = str_replace("%", '%25', $property); -$property = str_replace("\r", '%0D', $property); -$property = str_replace("\n", '%0A', $property); -$property = str_replace(":", '%3A', $property); -$property = str_replace(",", '%2C', $property); - -return $property; -} -} diff --git a/composer/src/Composer/Console/HtmlOutputFormatter.php b/composer/src/Composer/Console/HtmlOutputFormatter.php deleted file mode 100644 index 5b094edb3..000000000 --- a/composer/src/Composer/Console/HtmlOutputFormatter.php +++ /dev/null @@ -1,104 +0,0 @@ - 'black', -31 => 'red', -32 => 'green', -33 => 'yellow', -34 => 'blue', -35 => 'magenta', -36 => 'cyan', -37 => 'white', -]; - -private static $availableBackgroundColors = [ -40 => 'black', -41 => 'red', -42 => 'green', -43 => 'yellow', -44 => 'blue', -45 => 'magenta', -46 => 'cyan', -47 => 'white', -]; - -private static $availableOptions = [ -1 => 'bold', -4 => 'underscore', - - - -]; - - - - -public function __construct(array $styles = []) -{ -parent::__construct(true, $styles); -} - -public function format(?string $message): ?string -{ -$formatted = parent::format($message); - -if ($formatted === null) { -return null; -} - -$clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)'; - -return Preg::replaceCallback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", Closure::fromCallable([$this, 'formatHtml']), $formatted); -} - - - - -private function formatHtml(array $matches): string -{ -assert(is_string($matches[1])); -$out = ''.$matches[2].''; -} -} diff --git a/composer/src/Composer/Console/Input/InputArgument.php b/composer/src/Composer/Console/Input/InputArgument.php deleted file mode 100644 index 3f3e7607f..000000000 --- a/composer/src/Composer/Console/Input/InputArgument.php +++ /dev/null @@ -1,69 +0,0 @@ -suggestedValues = $suggestedValues; -} - - - - - - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -$values = $this->suggestedValues; -if ($values instanceof \Closure && !\is_array($values = $values($input, $suggestions))) { -throw new LogicException(sprintf('Closure for option "%s" must return an array. Got "%s".', $this->getName(), get_debug_type($values))); -} -if ([] !== $values) { -$suggestions->suggestValues($values); -} -} -} diff --git a/composer/src/Composer/Console/Input/InputOption.php b/composer/src/Composer/Console/Input/InputOption.php deleted file mode 100644 index ff59ef4e6..000000000 --- a/composer/src/Composer/Console/Input/InputOption.php +++ /dev/null @@ -1,72 +0,0 @@ -suggestedValues = $suggestedValues; - -if ([] !== $suggestedValues && !$this->acceptValue()) { -throw new LogicException('Cannot set suggested values if the option does not accept a value.'); -} -} - - - - - - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -$values = $this->suggestedValues; -if ($values instanceof \Closure && !\is_array($values = $values($input, $suggestions))) { -throw new LogicException(sprintf('Closure for argument "%s" must return an array. Got "%s".', $this->getName(), get_debug_type($values))); -} -if ([] !== $values) { -$suggestions->suggestValues($values); -} -} -} diff --git a/composer/src/Composer/DependencyResolver/Decisions.php b/composer/src/Composer/DependencyResolver/Decisions.php deleted file mode 100644 index 1d437e94a..000000000 --- a/composer/src/Composer/DependencyResolver/Decisions.php +++ /dev/null @@ -1,233 +0,0 @@ -pool = $pool; -$this->decisionMap = []; -} - -public function decide(int $literal, int $level, Rule $why): void -{ -$this->addDecision($literal, $level); -$this->decisionQueue[] = [ -self::DECISION_LITERAL => $literal, -self::DECISION_REASON => $why, -]; -} - -public function satisfy(int $literal): bool -{ -$packageId = abs($literal); - -return ( -$literal > 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 || -$literal < 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 -); -} - -public function conflict(int $literal): bool -{ -$packageId = abs($literal); - -return ( -(isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 && $literal < 0) || -(isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 && $literal > 0) -); -} - -public function decided(int $literalOrPackageId): bool -{ -return !empty($this->decisionMap[abs($literalOrPackageId)]); -} - -public function undecided(int $literalOrPackageId): bool -{ -return empty($this->decisionMap[abs($literalOrPackageId)]); -} - -public function decidedInstall(int $literalOrPackageId): bool -{ -$packageId = abs($literalOrPackageId); - -return isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0; -} - -public function decisionLevel(int $literalOrPackageId): int -{ -$packageId = abs($literalOrPackageId); -if (isset($this->decisionMap[$packageId])) { -return abs($this->decisionMap[$packageId]); -} - -return 0; -} - -public function decisionRule(int $literalOrPackageId): ?Rule -{ -$packageId = abs($literalOrPackageId); - -foreach ($this->decisionQueue as $decision) { -if ($packageId === abs($decision[self::DECISION_LITERAL])) { -return $decision[self::DECISION_REASON]; -} -} - -return null; -} - - - - -public function atOffset(int $queueOffset): array -{ -return $this->decisionQueue[$queueOffset]; -} - -public function validOffset(int $queueOffset): bool -{ -return $queueOffset >= 0 && $queueOffset < \count($this->decisionQueue); -} - -public function lastReason(): Rule -{ -return $this->decisionQueue[\count($this->decisionQueue) - 1][self::DECISION_REASON]; -} - -public function lastLiteral(): int -{ -return $this->decisionQueue[\count($this->decisionQueue) - 1][self::DECISION_LITERAL]; -} - -public function reset(): void -{ -while ($decision = array_pop($this->decisionQueue)) { -$this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; -} -} - - - - -public function resetToOffset(int $offset): void -{ -while (\count($this->decisionQueue) > $offset + 1) { -$decision = array_pop($this->decisionQueue); -$this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; -} -} - -public function revertLast(): void -{ -$this->decisionMap[abs($this->lastLiteral())] = 0; -array_pop($this->decisionQueue); -} - -public function count(): int -{ -return \count($this->decisionQueue); -} - -public function rewind(): void -{ -end($this->decisionQueue); -} - - - - -#[\ReturnTypeWillChange] -public function current() -{ -return current($this->decisionQueue); -} - -public function key(): ?int -{ -return key($this->decisionQueue); -} - -public function next(): void -{ -prev($this->decisionQueue); -} - -public function valid(): bool -{ -return false !== current($this->decisionQueue); -} - -public function isEmpty(): bool -{ -return \count($this->decisionQueue) === 0; -} - -protected function addDecision(int $literal, int $level): void -{ -$packageId = abs($literal); - -$previousDecision = $this->decisionMap[$packageId] ?? 0; -if ($previousDecision !== 0) { -$literalString = $this->pool->literalToPrettyString($literal, []); -$package = $this->pool->literalToPackage($literal); -throw new SolverBugException( -"Trying to decide $literalString on level $level, even though $package was previously decided as ".$previousDecision."." -); -} - -if ($literal > 0) { -$this->decisionMap[$packageId] = $level; -} else { -$this->decisionMap[$packageId] = -$level; -} -} - -public function toString(?Pool $pool = null): string -{ -$decisionMap = $this->decisionMap; -ksort($decisionMap); -$str = '['; -foreach ($decisionMap as $packageId => $level) { -$str .= (($pool) ? $pool->literalToPackage($packageId) : $packageId).':'.$level.','; -} -$str .= ']'; - -return $str; -} - -public function __toString(): string -{ -return $this->toString(); -} -} diff --git a/composer/src/Composer/DependencyResolver/DefaultPolicy.php b/composer/src/Composer/DependencyResolver/DefaultPolicy.php deleted file mode 100644 index cd29e0352..000000000 --- a/composer/src/Composer/DependencyResolver/DefaultPolicy.php +++ /dev/null @@ -1,258 +0,0 @@ -preferStable = $preferStable; -$this->preferLowest = $preferLowest; -} - - - - - - -public function versionCompare(PackageInterface $a, PackageInterface $b, string $operator): bool -{ -if ($this->preferStable && ($stabA = $a->getStability()) !== ($stabB = $b->getStability())) { -return BasePackage::$stabilities[$stabA] < BasePackage::$stabilities[$stabB]; -} - -$constraint = new Constraint($operator, $b->getVersion()); -$version = new Constraint('==', $a->getVersion()); - -return $constraint->matchSpecific($version, true); -} - - - - - - -public function selectPreferredPackages(Pool $pool, array $literals, ?string $requiredPackage = null): array -{ -sort($literals); -$resultCacheKey = implode(',', $literals).$requiredPackage; -$poolId = spl_object_id($pool); - -if (isset($this->preferredPackageResultCachePerPool[$poolId][$resultCacheKey])) { -return $this->preferredPackageResultCachePerPool[$poolId][$resultCacheKey]; -} - -$packages = $this->groupLiteralsByName($pool, $literals); - -foreach ($packages as &$nameLiterals) { -usort($nameLiterals, function ($a, $b) use ($pool, $requiredPackage, $poolId): int { -$cacheKey = 'i'.$a.'.'.$b.$requiredPackage; - -if (isset($this->sortingCachePerPool[$poolId][$cacheKey])) { -return $this->sortingCachePerPool[$poolId][$cacheKey]; -} - -return $this->sortingCachePerPool[$poolId][$cacheKey] = $this->compareByPriority($pool, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage, true); -}); -} - -foreach ($packages as &$sortedLiterals) { -$sortedLiterals = $this->pruneToBestVersion($pool, $sortedLiterals); -$sortedLiterals = $this->pruneRemoteAliases($pool, $sortedLiterals); -} - -$selected = array_merge(...array_values($packages)); - - -usort($selected, function ($a, $b) use ($pool, $requiredPackage, $poolId): int { -$cacheKey = $a.'.'.$b.$requiredPackage; - -if (isset($this->sortingCachePerPool[$poolId][$cacheKey])) { -return $this->sortingCachePerPool[$poolId][$cacheKey]; -} - -return $this->sortingCachePerPool[$poolId][$cacheKey] = $this->compareByPriority($pool, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage); -}); - -return $this->preferredPackageResultCachePerPool[$poolId][$resultCacheKey] = $selected; -} - - - - - -protected function groupLiteralsByName(Pool $pool, array $literals): array -{ -$packages = []; -foreach ($literals as $literal) { -$packageName = $pool->literalToPackage($literal)->getName(); - -if (!isset($packages[$packageName])) { -$packages[$packageName] = []; -} -$packages[$packageName][] = $literal; -} - -return $packages; -} - - - - -public function compareByPriority(Pool $pool, BasePackage $a, BasePackage $b, ?string $requiredPackage = null, bool $ignoreReplace = false): int -{ - -if ($a->getName() === $b->getName()) { -$aAliased = $a instanceof AliasPackage; -$bAliased = $b instanceof AliasPackage; -if ($aAliased && !$bAliased) { -return -1; -} -if (!$aAliased && $bAliased) { -return 1; -} -} - -if (!$ignoreReplace) { - -if ($this->replaces($a, $b)) { -return 1; -} -if ($this->replaces($b, $a)) { -return -1; -} - - - -if ($requiredPackage && false !== ($pos = strpos($requiredPackage, '/'))) { -$requiredVendor = substr($requiredPackage, 0, $pos); - -$aIsSameVendor = strpos($a->getName(), $requiredVendor) === 0; -$bIsSameVendor = strpos($b->getName(), $requiredVendor) === 0; - -if ($bIsSameVendor !== $aIsSameVendor) { -return $aIsSameVendor ? -1 : 1; -} -} -} - - -if ($a->id === $b->id) { -return 0; -} - -return ($a->id < $b->id) ? -1 : 1; -} - - - - - - - -protected function replaces(BasePackage $source, BasePackage $target): bool -{ -foreach ($source->getReplaces() as $link) { -if ($link->getTarget() === $target->getName() - - -) { -return true; -} -} - -return false; -} - - - - - -protected function pruneToBestVersion(Pool $pool, array $literals): array -{ -$operator = $this->preferLowest ? '<' : '>'; -$bestLiterals = [$literals[0]]; -$bestPackage = $pool->literalToPackage($literals[0]); -foreach ($literals as $i => $literal) { -if (0 === $i) { -continue; -} - -$package = $pool->literalToPackage($literal); - -if ($this->versionCompare($package, $bestPackage, $operator)) { -$bestPackage = $package; -$bestLiterals = [$literal]; -} elseif ($this->versionCompare($package, $bestPackage, '==')) { -$bestLiterals[] = $literal; -} -} - -return $bestLiterals; -} - - - - - - - - - -protected function pruneRemoteAliases(Pool $pool, array $literals): array -{ -$hasLocalAlias = false; - -foreach ($literals as $literal) { -$package = $pool->literalToPackage($literal); - -if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { -$hasLocalAlias = true; -break; -} -} - -if (!$hasLocalAlias) { -return $literals; -} - -$selected = []; -foreach ($literals as $literal) { -$package = $pool->literalToPackage($literal); - -if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { -$selected[] = $literal; -} -} - -return $selected; -} -} diff --git a/composer/src/Composer/DependencyResolver/GenericRule.php b/composer/src/Composer/DependencyResolver/GenericRule.php deleted file mode 100644 index 5a2e4f133..000000000 --- a/composer/src/Composer/DependencyResolver/GenericRule.php +++ /dev/null @@ -1,90 +0,0 @@ -literals = $literals; -} - - - - -public function getLiterals(): array -{ -return $this->literals; -} - - - - -public function getHash() -{ -$data = unpack('ihash', md5(implode(',', $this->literals), true)); - -return $data['hash']; -} - - - - - - - - - -public function equals(Rule $rule): bool -{ -return $this->literals === $rule->getLiterals(); -} - -public function isAssertion(): bool -{ -return 1 === \count($this->literals); -} - - - - -public function __toString(): string -{ -$result = $this->isDisabled() ? 'disabled(' : '('; - -foreach ($this->literals as $i => $literal) { -if ($i !== 0) { -$result .= '|'; -} -$result .= $literal; -} - -$result .= ')'; - -return $result; -} -} diff --git a/composer/src/Composer/DependencyResolver/LocalRepoTransaction.php b/composer/src/Composer/DependencyResolver/LocalRepoTransaction.php deleted file mode 100644 index df02f5ba5..000000000 --- a/composer/src/Composer/DependencyResolver/LocalRepoTransaction.php +++ /dev/null @@ -1,31 +0,0 @@ -getPackages(), -$lockedRepository->getPackages() -); -} -} diff --git a/composer/src/Composer/DependencyResolver/LockTransaction.php b/composer/src/Composer/DependencyResolver/LockTransaction.php deleted file mode 100644 index 7898709b8..000000000 --- a/composer/src/Composer/DependencyResolver/LockTransaction.php +++ /dev/null @@ -1,154 +0,0 @@ -presentMap = $presentMap; -$this->unlockableMap = $unlockableMap; - -$this->setResultPackages($pool, $decisions); -parent::__construct($this->presentMap, $this->resultPackages['all']); -} - - - -public function setResultPackages(Pool $pool, Decisions $decisions): void -{ -$this->resultPackages = ['all' => [], 'non-dev' => [], 'dev' => []]; -foreach ($decisions as $i => $decision) { -$literal = $decision[Decisions::DECISION_LITERAL]; - -if ($literal > 0) { -$package = $pool->literalToPackage($literal); - -$this->resultPackages['all'][] = $package; -if (!isset($this->unlockableMap[$package->id])) { -$this->resultPackages['non-dev'][] = $package; -} -} -} -} - -public function setNonDevPackages(LockTransaction $extractionResult): void -{ -$packages = $extractionResult->getNewLockPackages(false); - -$this->resultPackages['dev'] = $this->resultPackages['non-dev']; -$this->resultPackages['non-dev'] = []; - -foreach ($packages as $package) { -foreach ($this->resultPackages['dev'] as $i => $resultPackage) { - -if ($package->getName() === $resultPackage->getName()) { -$this->resultPackages['non-dev'][] = $resultPackage; -unset($this->resultPackages['dev'][$i]); -} -} -} -} - - - - - -public function getNewLockPackages(bool $devMode, bool $updateMirrors = false): array -{ -$packages = []; -foreach ($this->resultPackages[$devMode ? 'dev' : 'non-dev'] as $package) { -if (!$package instanceof AliasPackage) { - - -if ($updateMirrors && !isset($this->presentMap[spl_object_hash($package)])) { -foreach ($this->presentMap as $presentPackage) { -if ($package->getName() === $presentPackage->getName() && $package->getVersion() === $presentPackage->getVersion()) { -if ($presentPackage->getSourceReference() && $presentPackage->getSourceType() === $package->getSourceType()) { -$package->setSourceDistReferences($presentPackage->getSourceReference()); -} -if ($presentPackage->getReleaseDate() !== null && $package instanceof Package) { -$package->setReleaseDate($presentPackage->getReleaseDate()); -} -} -} -} -$packages[] = $package; -} -} - -return $packages; -} - - - - - - -public function getAliases(array $aliases): array -{ -$usedAliases = []; - -foreach ($this->resultPackages['all'] as $package) { -if ($package instanceof AliasPackage) { -foreach ($aliases as $index => $alias) { -if ($alias['package'] === $package->getName()) { -$usedAliases[] = $alias; -unset($aliases[$index]); -} -} -} -} - -usort($usedAliases, static function ($a, $b): int { -return strcmp($a['package'], $b['package']); -}); - -return $usedAliases; -} -} diff --git a/composer/src/Composer/DependencyResolver/MultiConflictRule.php b/composer/src/Composer/DependencyResolver/MultiConflictRule.php deleted file mode 100644 index d06d09769..000000000 --- a/composer/src/Composer/DependencyResolver/MultiConflictRule.php +++ /dev/null @@ -1,110 +0,0 @@ -literals = $literals; -} - - - - -public function getLiterals(): array -{ -return $this->literals; -} - - - - -public function getHash() -{ -$data = unpack('ihash', md5('c:'.implode(',', $this->literals), true)); - -return $data['hash']; -} - - - - - - - - - -public function equals(Rule $rule): bool -{ -if ($rule instanceof MultiConflictRule) { -return $this->literals === $rule->getLiterals(); -} - -return false; -} - -public function isAssertion(): bool -{ -return false; -} - - - - - -public function disable(): void -{ -throw new \RuntimeException("Disabling multi conflict rules is not possible. Please contact composer at https://github.com/composer/composer to let us debug what lead to this situation."); -} - - - - -public function __toString(): string -{ - -$result = $this->isDisabled() ? 'disabled(multi(' : '(multi('; - -foreach ($this->literals as $i => $literal) { -if ($i !== 0) { -$result .= '|'; -} -$result .= $literal; -} - -$result .= '))'; - -return $result; -} -} diff --git a/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php b/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php deleted file mode 100644 index 229fedda3..000000000 --- a/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php +++ /dev/null @@ -1,56 +0,0 @@ -package = $package; -} - - - - -public function getPackage(): PackageInterface -{ -return $this->package; -} - - - - -public function show($lock): string -{ -return self::format($this->package, $lock); -} - -public static function format(PackageInterface $package, bool $lock = false): string -{ -return ($lock ? 'Locking ' : 'Installing ').''.$package->getPrettyName().' ('.$package->getFullPrettyVersion().')'; -} -} diff --git a/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php b/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php deleted file mode 100644 index 0dda2ad41..000000000 --- a/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php +++ /dev/null @@ -1,51 +0,0 @@ -package = $package; -} - - - - -public function getPackage(): AliasPackage -{ -return $this->package; -} - - - - -public function show($lock): string -{ -return 'Marking '.$this->package->getPrettyName().' ('.$this->package->getFullPrettyVersion().') as installed, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->package->getAliasOf()->getFullPrettyVersion().')'; -} -} diff --git a/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php b/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php deleted file mode 100644 index 9e717606f..000000000 --- a/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php +++ /dev/null @@ -1,51 +0,0 @@ -package = $package; -} - - - - -public function getPackage(): AliasPackage -{ -return $this->package; -} - - - - -public function show($lock): string -{ -return 'Marking '.$this->package->getPrettyName().' ('.$this->package->getFullPrettyVersion().') as uninstalled, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->package->getAliasOf()->getFullPrettyVersion().')'; -} -} diff --git a/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php b/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php deleted file mode 100644 index b33eebf80..000000000 --- a/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php +++ /dev/null @@ -1,43 +0,0 @@ -show(false); -} -} diff --git a/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php b/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php deleted file mode 100644 index eb1a832f8..000000000 --- a/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php +++ /dev/null @@ -1,56 +0,0 @@ -package = $package; -} - - - - -public function getPackage(): PackageInterface -{ -return $this->package; -} - - - - -public function show($lock): string -{ -return self::format($this->package, $lock); -} - -public static function format(PackageInterface $package, bool $lock = false): string -{ -return 'Removing '.$package->getPrettyName().' ('.$package->getFullPrettyVersion().')'; -} -} diff --git a/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php b/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php deleted file mode 100644 index 1aaf965e9..000000000 --- a/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php +++ /dev/null @@ -1,88 +0,0 @@ -initialPackage = $initial; -$this->targetPackage = $target; -} - - - - -public function getInitialPackage(): PackageInterface -{ -return $this->initialPackage; -} - - - - -public function getTargetPackage(): PackageInterface -{ -return $this->targetPackage; -} - - - - -public function show($lock): string -{ -return self::format($this->initialPackage, $this->targetPackage, $lock); -} - -public static function format(PackageInterface $initialPackage, PackageInterface $targetPackage, bool $lock = false): string -{ -$fromVersion = $initialPackage->getFullPrettyVersion(); -$toVersion = $targetPackage->getFullPrettyVersion(); - -if ($fromVersion === $toVersion && $initialPackage->getSourceReference() !== $targetPackage->getSourceReference()) { -$fromVersion = $initialPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_SOURCE_REF); -$toVersion = $targetPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_SOURCE_REF); -} elseif ($fromVersion === $toVersion && $initialPackage->getDistReference() !== $targetPackage->getDistReference()) { -$fromVersion = $initialPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_DIST_REF); -$toVersion = $targetPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_DIST_REF); -} - -$actionName = VersionParser::isUpgrade($initialPackage->getVersion(), $targetPackage->getVersion()) ? 'Upgrading' : 'Downgrading'; - -return $actionName.' '.$initialPackage->getPrettyName().' ('.$fromVersion.' => '.$toVersion.')'; -} -} diff --git a/composer/src/Composer/DependencyResolver/PolicyInterface.php b/composer/src/Composer/DependencyResolver/PolicyInterface.php deleted file mode 100644 index 312dacd2f..000000000 --- a/composer/src/Composer/DependencyResolver/PolicyInterface.php +++ /dev/null @@ -1,33 +0,0 @@ -versionParser = new VersionParser; -$this->setPackages($packages); -$this->unacceptableFixedOrLockedPackages = $unacceptableFixedOrLockedPackages; -$this->removedVersions = $removedVersions; -$this->removedVersionsByPackage = $removedVersionsByPackage; -} - - - - -public function getRemovedVersions(string $name, ConstraintInterface $constraint): array -{ -if (!isset($this->removedVersions[$name])) { -return []; -} - -$result = []; -foreach ($this->removedVersions[$name] as $version => $prettyVersion) { -if ($constraint->matches(new Constraint('==', $version))) { -$result[$version] = $prettyVersion; -} -} - -return $result; -} - - - - -public function getRemovedVersionsByPackage(string $objectHash): array -{ -if (!isset($this->removedVersionsByPackage[$objectHash])) { -return []; -} - -return $this->removedVersionsByPackage[$objectHash]; -} - - - - -private function setPackages(array $packages): void -{ -$id = 1; - -foreach ($packages as $package) { -$this->packages[] = $package; - -$package->id = $id++; - -foreach ($package->getNames() as $provided) { -$this->packageByName[$provided][] = $package; -} -} -} - - - - -public function getPackages(): array -{ -return $this->packages; -} - - - - -public function packageById(int $id): BasePackage -{ -return $this->packages[$id - 1]; -} - - - - -public function count(): int -{ -return \count($this->packages); -} - - - - - - - - - -public function whatProvides(string $name, ?ConstraintInterface $constraint = null): array -{ -$key = (string) $constraint; -if (isset($this->providerCache[$name][$key])) { -return $this->providerCache[$name][$key]; -} - -return $this->providerCache[$name][$key] = $this->computeWhatProvides($name, $constraint); -} - - - - - - - -private function computeWhatProvides(string $name, ?ConstraintInterface $constraint = null): array -{ -if (!isset($this->packageByName[$name])) { -return []; -} - -$matches = []; - -foreach ($this->packageByName[$name] as $candidate) { -if ($this->match($candidate, $name, $constraint)) { -$matches[] = $candidate; -} -} - -return $matches; -} - -public function literalToPackage(int $literal): BasePackage -{ -$packageId = abs($literal); - -return $this->packageById($packageId); -} - - - - -public function literalToPrettyString(int $literal, array $installedMap): string -{ -$package = $this->literalToPackage($literal); - -if (isset($installedMap[$package->id])) { -$prefix = ($literal > 0 ? 'keep' : 'remove'); -} else { -$prefix = ($literal > 0 ? 'install' : 'don\'t install'); -} - -return $prefix.' '.$package->getPrettyString(); -} - - - - - - - -public function match(BasePackage $candidate, string $name, ?ConstraintInterface $constraint = null): bool -{ -$candidateName = $candidate->getName(); -$candidateVersion = $candidate->getVersion(); - -if ($candidateName === $name) { -return $constraint === null || CompilingMatcher::match($constraint, Constraint::OP_EQ, $candidateVersion); -} - -$provides = $candidate->getProvides(); -$replaces = $candidate->getReplaces(); - - -if (isset($replaces[0]) || isset($provides[0])) { -foreach ($provides as $link) { -if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { -return true; -} -} - -foreach ($replaces as $link) { -if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { -return true; -} -} - -return false; -} - -if (isset($provides[$name]) && ($constraint === null || $constraint->matches($provides[$name]->getConstraint()))) { -return true; -} - -if (isset($replaces[$name]) && ($constraint === null || $constraint->matches($replaces[$name]->getConstraint()))) { -return true; -} - -return false; -} - -public function isUnacceptableFixedOrLockedPackage(BasePackage $package): bool -{ -return \in_array($package, $this->unacceptableFixedOrLockedPackages, true); -} - - - - -public function getUnacceptableFixedOrLockedPackages(): array -{ -return $this->unacceptableFixedOrLockedPackages; -} - -public function __toString(): string -{ -$str = "Pool:\n"; - -foreach ($this->packages as $package) { -$str .= '- '.str_pad((string) $package->id, 6, ' ', STR_PAD_LEFT).': '.$package->getName()."\n"; -} - -return $str; -} -} diff --git a/composer/src/Composer/DependencyResolver/PoolBuilder.php b/composer/src/Composer/DependencyResolver/PoolBuilder.php deleted file mode 100644 index 63f734ded..000000000 --- a/composer/src/Composer/DependencyResolver/PoolBuilder.php +++ /dev/null @@ -1,706 +0,0 @@ -acceptableStabilities = $acceptableStabilities; -$this->stabilityFlags = $stabilityFlags; -$this->rootAliases = $rootAliases; -$this->rootReferences = $rootReferences; -$this->eventDispatcher = $eventDispatcher; -$this->poolOptimizer = $poolOptimizer; -$this->io = $io; -$this->temporaryConstraints = $temporaryConstraints; -} - - - - -public function buildPool(array $repositories, Request $request): Pool -{ -if ($request->getUpdateAllowList()) { -$this->updateAllowList = $request->getUpdateAllowList(); -$this->warnAboutNonMatchingUpdateAllowList($request); - -foreach ($request->getLockedRepository()->getPackages() as $lockedPackage) { -if (!$this->isUpdateAllowed($lockedPackage)) { - -$this->skippedLoad[$lockedPackage->getName()][] = $lockedPackage; -foreach ($lockedPackage->getReplaces() as $link) { -$this->skippedLoad[$link->getTarget()][] = $lockedPackage; -} - - - - - -if ($lockedPackage->getDistType() === 'path') { -$transportOptions = $lockedPackage->getTransportOptions(); -if (!isset($transportOptions['symlink']) || $transportOptions['symlink'] !== false) { -$this->pathRepoUnlocked[$lockedPackage->getName()] = true; -continue; -} -} - -$request->lockPackage($lockedPackage); -} -} -} - -foreach ($request->getFixedOrLockedPackages() as $package) { - - -$this->loadedPackages[$package->getName()] = new MatchAllConstraint(); - - -foreach ($package->getReplaces() as $link) { -$this->loadedPackages[$link->getTarget()] = new MatchAllConstraint(); -} - - - - -if ( -$package->getRepository() instanceof RootPackageRepository -|| $package->getRepository() instanceof PlatformRepository -|| StabilityFilter::isPackageAcceptable($this->acceptableStabilities, $this->stabilityFlags, $package->getNames(), $package->getStability()) -) { -$this->loadPackage($request, $repositories, $package, false); -} else { -$this->unacceptableFixedOrLockedPackages[] = $package; -} -} - -foreach ($request->getRequires() as $packageName => $constraint) { - -if (isset($this->loadedPackages[$packageName])) { -continue; -} - -$this->packagesToLoad[$packageName] = $constraint; -$this->maxExtendedReqs[$packageName] = true; -} - - -foreach ($this->packagesToLoad as $name => $constraint) { -if (isset($this->loadedPackages[$name])) { -unset($this->packagesToLoad[$name]); -} -} - -while (!empty($this->packagesToLoad)) { -$this->loadPackagesMarkedForLoading($request, $repositories); -} - -if (\count($this->temporaryConstraints) > 0) { -foreach ($this->packages as $i => $package) { - -if (!isset($this->temporaryConstraints[$package->getName()]) || $package instanceof AliasPackage) { -continue; -} - -$constraint = $this->temporaryConstraints[$package->getName()]; -$packageAndAliases = [$i => $package]; -if (isset($this->aliasMap[spl_object_hash($package)])) { -$packageAndAliases += $this->aliasMap[spl_object_hash($package)]; -} - -$found = false; -foreach ($packageAndAliases as $packageOrAlias) { -if (CompilingMatcher::match($constraint, Constraint::OP_EQ, $packageOrAlias->getVersion())) { -$found = true; -} -} - -if (!$found) { -foreach ($packageAndAliases as $index => $packageOrAlias) { -unset($this->packages[$index]); -} -} -} -} - -if ($this->eventDispatcher) { -$prePoolCreateEvent = new PrePoolCreateEvent( -PluginEvents::PRE_POOL_CREATE, -$repositories, -$request, -$this->acceptableStabilities, -$this->stabilityFlags, -$this->rootAliases, -$this->rootReferences, -$this->packages, -$this->unacceptableFixedOrLockedPackages -); -$this->eventDispatcher->dispatch($prePoolCreateEvent->getName(), $prePoolCreateEvent); -$this->packages = $prePoolCreateEvent->getPackages(); -$this->unacceptableFixedOrLockedPackages = $prePoolCreateEvent->getUnacceptableFixedPackages(); -} - -$pool = new Pool($this->packages, $this->unacceptableFixedOrLockedPackages); - -$this->aliasMap = []; -$this->packagesToLoad = []; -$this->loadedPackages = []; -$this->loadedPerRepo = []; -$this->packages = []; -$this->unacceptableFixedOrLockedPackages = []; -$this->maxExtendedReqs = []; -$this->skippedLoad = []; -$this->indexCounter = 0; - -$this->io->debug('Built pool.'); - -$pool = $this->runOptimizer($request, $pool); - -Intervals::clear(); - -return $pool; -} - -private function markPackageNameForLoading(Request $request, string $name, ConstraintInterface $constraint): void -{ - -if (PlatformRepository::isPlatformPackage($name)) { -return; -} - - - -if (isset($this->maxExtendedReqs[$name])) { -return; -} - - - - - -$rootRequires = $request->getRequires(); -if (isset($rootRequires[$name]) && !Intervals::isSubsetOf($constraint, $rootRequires[$name])) { -$constraint = $rootRequires[$name]; -} - - -if (!isset($this->loadedPackages[$name])) { - - - -if (isset($this->packagesToLoad[$name])) { - -if (Intervals::isSubsetOf($constraint, $this->packagesToLoad[$name])) { -return; -} - - -$constraint = Intervals::compactConstraint(MultiConstraint::create([$this->packagesToLoad[$name], $constraint], false)); -} - -$this->packagesToLoad[$name] = $constraint; - -return; -} - - - -if (Intervals::isSubsetOf($constraint, $this->loadedPackages[$name])) { -return; -} - - - - -$this->packagesToLoad[$name] = Intervals::compactConstraint(MultiConstraint::create([$this->loadedPackages[$name], $constraint], false)); -unset($this->loadedPackages[$name]); -} - - - - -private function loadPackagesMarkedForLoading(Request $request, array $repositories): void -{ -foreach ($this->packagesToLoad as $name => $constraint) { -$this->loadedPackages[$name] = $constraint; -} - -$packageBatch = $this->packagesToLoad; -$this->packagesToLoad = []; - -foreach ($repositories as $repoIndex => $repository) { -if (empty($packageBatch)) { -break; -} - - - -if ($repository instanceof PlatformRepository || $repository === $request->getLockedRepository()) { -continue; -} -$result = $repository->loadPackages($packageBatch, $this->acceptableStabilities, $this->stabilityFlags, $this->loadedPerRepo[$repoIndex] ?? []); - -foreach ($result['namesFound'] as $name) { - -unset($packageBatch[$name]); -} -foreach ($result['packages'] as $package) { -$this->loadedPerRepo[$repoIndex][$package->getName()][$package->getVersion()] = $package; -$this->loadPackage($request, $repositories, $package, !isset($this->pathRepoUnlocked[$package->getName()])); -} -} -} - - - - -private function loadPackage(Request $request, array $repositories, BasePackage $package, bool $propagateUpdate): void -{ -$index = $this->indexCounter++; -$this->packages[$index] = $package; - -if ($package instanceof AliasPackage) { -$this->aliasMap[spl_object_hash($package->getAliasOf())][$index] = $package; -} - -$name = $package->getName(); - - - - -if (isset($this->rootReferences[$name])) { - -if (!$request->isLockedPackage($package) && !$request->isFixedPackage($package)) { -$package->setSourceDistReferences($this->rootReferences[$name]); -} -} - - - -if ($propagateUpdate && isset($this->rootAliases[$name][$package->getVersion()])) { -$alias = $this->rootAliases[$name][$package->getVersion()]; -if ($package instanceof AliasPackage) { -$basePackage = $package->getAliasOf(); -} else { -$basePackage = $package; -} -if ($basePackage instanceof CompletePackage) { -$aliasPackage = new CompleteAliasPackage($basePackage, $alias['alias_normalized'], $alias['alias']); -} else { -$aliasPackage = new AliasPackage($basePackage, $alias['alias_normalized'], $alias['alias']); -} -$aliasPackage->setRootPackageAlias(true); - -$newIndex = $this->indexCounter++; -$this->packages[$newIndex] = $aliasPackage; -$this->aliasMap[spl_object_hash($aliasPackage->getAliasOf())][$newIndex] = $aliasPackage; -} - -foreach ($package->getRequires() as $link) { -$require = $link->getTarget(); -$linkConstraint = $link->getConstraint(); - - -if (isset($this->skippedLoad[$require])) { - - - -if ($propagateUpdate && $request->getUpdateAllowTransitiveDependencies()) { -$skippedRootRequires = $this->getSkippedRootRequires($request, $require); - -if ($request->getUpdateAllowTransitiveRootDependencies() || !$skippedRootRequires) { -$this->unlockPackage($request, $repositories, $require); -$this->markPackageNameForLoading($request, $require, $linkConstraint); -} else { -foreach ($skippedRootRequires as $rootRequire) { -if (!isset($this->updateAllowWarned[$rootRequire])) { -$this->updateAllowWarned[$rootRequire] = true; -$this->io->writeError('Dependency '.$rootRequire.' is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.'); -} -} -} -} elseif (isset($this->pathRepoUnlocked[$require]) && !isset($this->loadedPackages[$require])) { - - -$this->markPackageNameForLoading($request, $require, $linkConstraint); -} -} else { -$this->markPackageNameForLoading($request, $require, $linkConstraint); -} -} - - - -if ($propagateUpdate && $request->getUpdateAllowTransitiveDependencies()) { -foreach ($package->getReplaces() as $link) { -$replace = $link->getTarget(); -if (isset($this->loadedPackages[$replace], $this->skippedLoad[$replace])) { -$skippedRootRequires = $this->getSkippedRootRequires($request, $replace); - -if ($request->getUpdateAllowTransitiveRootDependencies() || !$skippedRootRequires) { -$this->unlockPackage($request, $repositories, $replace); -$this->markPackageNameForLoading($request, $replace, $link->getConstraint()); -} else { -foreach ($skippedRootRequires as $rootRequire) { -if (!isset($this->updateAllowWarned[$rootRequire])) { -$this->updateAllowWarned[$rootRequire] = true; -$this->io->writeError('Dependency '.$rootRequire.' is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.'); -} -} -} -} -} -} -} - - - - - - -private function isRootRequire(Request $request, string $name): bool -{ -$rootRequires = $request->getRequires(); - -return isset($rootRequires[$name]); -} - - - - -private function getSkippedRootRequires(Request $request, string $name): array -{ -if (!isset($this->skippedLoad[$name])) { -return []; -} - -$rootRequires = $request->getRequires(); -$matches = []; - -if (isset($rootRequires[$name])) { -return array_map(static function (PackageInterface $package) use ($name): string { -if ($name !== $package->getName()) { -return $package->getName() .' (via replace of '.$name.')'; -} - -return $package->getName(); -}, $this->skippedLoad[$name]); -} - -foreach ($this->skippedLoad[$name] as $packageOrReplacer) { -if (isset($rootRequires[$packageOrReplacer->getName()])) { -$matches[] = $packageOrReplacer->getName(); -} -foreach ($packageOrReplacer->getReplaces() as $link) { -if (isset($rootRequires[$link->getTarget()])) { -if ($name !== $packageOrReplacer->getName()) { -$matches[] = $packageOrReplacer->getName() .' (via replace of '.$name.')'; -} else { -$matches[] = $packageOrReplacer->getName(); -} -break; -} -} -} - -return $matches; -} - - - - -private function isUpdateAllowed(BasePackage $package): bool -{ -foreach ($this->updateAllowList as $pattern => $void) { -$patternRegexp = BasePackage::packageNameToRegexp($pattern); -if (Preg::isMatch($patternRegexp, $package->getName())) { -return true; -} -} - -return false; -} - -private function warnAboutNonMatchingUpdateAllowList(Request $request): void -{ -foreach ($this->updateAllowList as $pattern => $void) { -$patternRegexp = BasePackage::packageNameToRegexp($pattern); - -foreach ($request->getLockedRepository()->getPackages() as $package) { -if (Preg::isMatch($patternRegexp, $package->getName())) { -continue 2; -} -} - -foreach ($request->getRequires() as $packageName => $constraint) { -if (Preg::isMatch($patternRegexp, $packageName)) { -continue 2; -} -} -if (strpos($pattern, '*') !== false) { -$this->io->writeError('Pattern "' . $pattern . '" listed for update does not match any locked packages.'); -} else { -$this->io->writeError('Package "' . $pattern . '" listed for update is not locked.'); -} -} -} - - - - - - - -private function unlockPackage(Request $request, array $repositories, string $name): void -{ -foreach ($this->skippedLoad[$name] as $packageOrReplacer) { - - -if ($packageOrReplacer->getName() !== $name && isset($this->skippedLoad[$packageOrReplacer->getName()])) { -$replacerName = $packageOrReplacer->getName(); -if ($request->getUpdateAllowTransitiveRootDependencies() || (!$this->isRootRequire($request, $name) && !$this->isRootRequire($request, $replacerName))) { -$this->unlockPackage($request, $repositories, $replacerName); - -if ($this->isRootRequire($request, $replacerName)) { -$this->markPackageNameForLoading($request, $replacerName, new MatchAllConstraint); -} else { -foreach ($this->packages as $loadedPackage) { -$requires = $loadedPackage->getRequires(); -if (isset($requires[$replacerName])) { -$this->markPackageNameForLoading($request, $replacerName, $requires[$replacerName]->getConstraint()); -} -} -} -} -} -} - -if (isset($this->pathRepoUnlocked[$name])) { -foreach ($this->packages as $index => $package) { -if ($package->getName() === $name) { -$this->removeLoadedPackage($request, $repositories, $package, $index); -} -} -} - -unset($this->skippedLoad[$name], $this->loadedPackages[$name], $this->maxExtendedReqs[$name], $this->pathRepoUnlocked[$name]); - - -foreach ($request->getLockedPackages() as $lockedPackage) { -if (!($lockedPackage instanceof AliasPackage) && $lockedPackage->getName() === $name) { -if (false !== $index = array_search($lockedPackage, $this->packages, true)) { -$request->unlockPackage($lockedPackage); -$this->removeLoadedPackage($request, $repositories, $lockedPackage, $index); - - - - -foreach ($request->getFixedOrLockedPackages() as $fixedOrLockedPackage) { -if ($fixedOrLockedPackage === $lockedPackage) { -continue; -} - -if (isset($this->skippedLoad[$fixedOrLockedPackage->getName()])) { -$requires = $fixedOrLockedPackage->getRequires(); -if (isset($requires[$lockedPackage->getName()])) { -$this->markPackageNameForLoading($request, $lockedPackage->getName(), $requires[$lockedPackage->getName()]->getConstraint()); -} -} -} -} -} -} -} - - - - -private function removeLoadedPackage(Request $request, array $repositories, BasePackage $package, int $index): void -{ -$repoIndex = array_search($package->getRepository(), $repositories, true); - -unset($this->loadedPerRepo[$repoIndex][$package->getName()][$package->getVersion()]); -unset($this->packages[$index]); -if (isset($this->aliasMap[spl_object_hash($package)])) { -foreach ($this->aliasMap[spl_object_hash($package)] as $aliasIndex => $aliasPackage) { -unset($this->loadedPerRepo[$repoIndex][$aliasPackage->getName()][$aliasPackage->getVersion()]); -unset($this->packages[$aliasIndex]); -} -unset($this->aliasMap[spl_object_hash($package)]); -} -} - -private function runOptimizer(Request $request, Pool $pool): Pool -{ -if (null === $this->poolOptimizer) { -return $pool; -} - -$this->io->debug('Running pool optimizer.'); - -$before = microtime(true); -$total = \count($pool->getPackages()); - -$pool = $this->poolOptimizer->optimize($request, $pool); - -$filtered = $total - \count($pool->getPackages()); - -if (0 === $filtered) { -return $pool; -} - -$this->io->write(sprintf('Pool optimizer completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERY_VERBOSE); -$this->io->write(sprintf( -'Found %s package versions referenced in your dependency graph. %s (%d%%) were optimized away.', -number_format($total), -number_format($filtered), -round(100 / $total * $filtered) -), true, IOInterface::VERY_VERBOSE); - -return $pool; -} -} diff --git a/composer/src/Composer/DependencyResolver/PoolOptimizer.php b/composer/src/Composer/DependencyResolver/PoolOptimizer.php deleted file mode 100644 index 6aa75c3d9..000000000 --- a/composer/src/Composer/DependencyResolver/PoolOptimizer.php +++ /dev/null @@ -1,475 +0,0 @@ -policy = $policy; -} - -public function optimize(Request $request, Pool $pool): Pool -{ -$this->prepare($request, $pool); - -$this->optimizeByIdenticalDependencies($request, $pool); - -$this->optimizeImpossiblePackagesAway($request, $pool); - -$optimizedPool = $this->applyRemovalsToPool($pool); - - - - - - -$this->irremovablePackages = []; -$this->requireConstraintsPerPackage = []; -$this->conflictConstraintsPerPackage = []; -$this->packagesToRemove = []; -$this->aliasesPerPackage = []; -$this->removedVersionsByPackage = []; - -return $optimizedPool; -} - -private function prepare(Request $request, Pool $pool): void -{ -$irremovablePackageConstraintGroups = []; - - -foreach ($request->getFixedOrLockedPackages() as $package) { -$irremovablePackageConstraintGroups[$package->getName()][] = new Constraint('==', $package->getVersion()); -} - - -foreach ($request->getRequires() as $require => $constraint) { -$this->extractRequireConstraintsPerPackage($require, $constraint); -} - - -foreach ($pool->getPackages() as $package) { - -foreach ($package->getRequires() as $link) { -$this->extractRequireConstraintsPerPackage($link->getTarget(), $link->getConstraint()); -} - -foreach ($package->getConflicts() as $link) { -$this->extractConflictConstraintsPerPackage($link->getTarget(), $link->getConstraint()); -} - - - -if ($package instanceof AliasPackage) { -$this->aliasesPerPackage[$package->getAliasOf()->id][] = $package; -} -} - -$irremovablePackageConstraints = []; -foreach ($irremovablePackageConstraintGroups as $packageName => $constraints) { -$irremovablePackageConstraints[$packageName] = 1 === \count($constraints) ? $constraints[0] : new MultiConstraint($constraints, false); -} -unset($irremovablePackageConstraintGroups); - - -foreach ($pool->getPackages() as $package) { -if (!isset($irremovablePackageConstraints[$package->getName()])) { -continue; -} - -if (CompilingMatcher::match($irremovablePackageConstraints[$package->getName()], Constraint::OP_EQ, $package->getVersion())) { -$this->markPackageIrremovable($package); -} -} -} - -private function markPackageIrremovable(BasePackage $package): void -{ -$this->irremovablePackages[$package->id] = true; -if ($package instanceof AliasPackage) { - - -$this->markPackageIrremovable($package->getAliasOf()); -} -if (isset($this->aliasesPerPackage[$package->id])) { -foreach ($this->aliasesPerPackage[$package->id] as $aliasPackage) { -$this->irremovablePackages[$aliasPackage->id] = true; -} -} -} - - - - -private function applyRemovalsToPool(Pool $pool): Pool -{ -$packages = []; -$removedVersions = []; -foreach ($pool->getPackages() as $package) { -if (!isset($this->packagesToRemove[$package->id])) { -$packages[] = $package; -} else { -$removedVersions[$package->getName()][$package->getVersion()] = $package->getPrettyVersion(); -} -} - -$optimizedPool = new Pool($packages, $pool->getUnacceptableFixedOrLockedPackages(), $removedVersions, $this->removedVersionsByPackage); - -return $optimizedPool; -} - -private function optimizeByIdenticalDependencies(Request $request, Pool $pool): void -{ -$identicalDefinitionsPerPackage = []; -$packageIdenticalDefinitionLookup = []; - -foreach ($pool->getPackages() as $package) { - - - -if (isset($this->irremovablePackages[$package->id])) { -continue; -} - -$this->markPackageForRemoval($package->id); - -$dependencyHash = $this->calculateDependencyHash($package); - -foreach ($package->getNames(false) as $packageName) { -if (!isset($this->requireConstraintsPerPackage[$packageName])) { -continue; -} - -foreach ($this->requireConstraintsPerPackage[$packageName] as $requireConstraint) { -$groupHashParts = []; - -if (CompilingMatcher::match($requireConstraint, Constraint::OP_EQ, $package->getVersion())) { -$groupHashParts[] = 'require:' . (string) $requireConstraint; -} - -if ($package->getReplaces()) { -foreach ($package->getReplaces() as $link) { -if (CompilingMatcher::match($link->getConstraint(), Constraint::OP_EQ, $package->getVersion())) { - -$groupHashParts[] = 'require:' . (string) $link->getConstraint(); -} -} -} - -if (isset($this->conflictConstraintsPerPackage[$packageName])) { -foreach ($this->conflictConstraintsPerPackage[$packageName] as $conflictConstraint) { -if (CompilingMatcher::match($conflictConstraint, Constraint::OP_EQ, $package->getVersion())) { -$groupHashParts[] = 'conflict:' . (string) $conflictConstraint; -} -} -} - -if (!$groupHashParts) { -continue; -} - -$groupHash = implode('', $groupHashParts); -$identicalDefinitionsPerPackage[$packageName][$groupHash][$dependencyHash][] = $package; -$packageIdenticalDefinitionLookup[$package->id][$packageName] = ['groupHash' => $groupHash, 'dependencyHash' => $dependencyHash]; -} -} -} - -foreach ($identicalDefinitionsPerPackage as $constraintGroups) { -foreach ($constraintGroups as $constraintGroup) { -foreach ($constraintGroup as $packages) { - -if (1 === \count($packages)) { -$this->keepPackage($packages[0], $identicalDefinitionsPerPackage, $packageIdenticalDefinitionLookup); -continue; -} - - - -$literals = []; - -foreach ($packages as $package) { -$literals[] = $package->id; -} - -foreach ($this->policy->selectPreferredPackages($pool, $literals) as $preferredLiteral) { -$this->keepPackage($pool->literalToPackage($preferredLiteral), $identicalDefinitionsPerPackage, $packageIdenticalDefinitionLookup); -} -} -} -} -} - -private function calculateDependencyHash(BasePackage $package): string -{ -$hash = ''; - -$hashRelevantLinks = [ -'requires' => $package->getRequires(), -'conflicts' => $package->getConflicts(), -'replaces' => $package->getReplaces(), -'provides' => $package->getProvides(), -]; - -foreach ($hashRelevantLinks as $key => $links) { -if (0 === \count($links)) { -continue; -} - - -$hash .= $key . ':'; - -$subhash = []; - -foreach ($links as $link) { - - - - -$subhash[$link->getTarget()] = (string) $link->getConstraint(); -} - - -ksort($subhash); - -foreach ($subhash as $target => $constraint) { -$hash .= $target . '@' . $constraint; -} -} - -return $hash; -} - -private function markPackageForRemoval(int $id): void -{ - -if (isset($this->irremovablePackages[$id])) { -throw new \LogicException('Attempted removing a package which was previously marked irremovable'); -} - -$this->packagesToRemove[$id] = true; -} - - - - - -private function keepPackage(BasePackage $package, array $identicalDefinitionsPerPackage, array $packageIdenticalDefinitionLookup): void -{ - -if (!isset($this->packagesToRemove[$package->id])) { -return; -} - -unset($this->packagesToRemove[$package->id]); - -if ($package instanceof AliasPackage) { - - -$this->keepPackage($package->getAliasOf(), $identicalDefinitionsPerPackage, $packageIdenticalDefinitionLookup); -} - - -foreach ($package->getNames(false) as $name) { -if (isset($packageIdenticalDefinitionLookup[$package->id][$name])) { -$packageGroupPointers = $packageIdenticalDefinitionLookup[$package->id][$name]; -$packageGroup = $identicalDefinitionsPerPackage[$name][$packageGroupPointers['groupHash']][$packageGroupPointers['dependencyHash']]; -foreach ($packageGroup as $pkg) { -if ($pkg instanceof AliasPackage && $pkg->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -$pkg = $pkg->getAliasOf(); -} -$this->removedVersionsByPackage[spl_object_hash($package)][$pkg->getVersion()] = $pkg->getPrettyVersion(); -} -} -} - -if (isset($this->aliasesPerPackage[$package->id])) { -foreach ($this->aliasesPerPackage[$package->id] as $aliasPackage) { -unset($this->packagesToRemove[$aliasPackage->id]); - - -foreach ($aliasPackage->getNames(false) as $name) { -if (isset($packageIdenticalDefinitionLookup[$aliasPackage->id][$name])) { -$packageGroupPointers = $packageIdenticalDefinitionLookup[$aliasPackage->id][$name]; -$packageGroup = $identicalDefinitionsPerPackage[$name][$packageGroupPointers['groupHash']][$packageGroupPointers['dependencyHash']]; -foreach ($packageGroup as $pkg) { -if ($pkg instanceof AliasPackage && $pkg->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -$pkg = $pkg->getAliasOf(); -} -$this->removedVersionsByPackage[spl_object_hash($aliasPackage)][$pkg->getVersion()] = $pkg->getPrettyVersion(); -} -} -} -} -} -} - - - - - - -private function optimizeImpossiblePackagesAway(Request $request, Pool $pool): void -{ -if (count($request->getLockedPackages()) === 0) { -return; -} - -$packageIndex = []; - -foreach ($pool->getPackages() as $package) { -$id = $package->id; - - -if (isset($this->irremovablePackages[$id])) { -continue; -} - -if (isset($this->aliasesPerPackage[$id]) || $package instanceof AliasPackage) { -continue; -} - -if ($request->isFixedPackage($package) || $request->isLockedPackage($package)) { -continue; -} - -$packageIndex[$package->getName()][$package->id] = $package; -} - -foreach ($request->getLockedPackages() as $package) { - - -$isUnusedPackage = true; -foreach ($package->getNames(false) as $packageName) { -if (isset($this->requireConstraintsPerPackage[$packageName])) { -$isUnusedPackage = false; -break; -} -} - -if ($isUnusedPackage) { -continue; -} - -foreach ($package->getRequires() as $link) { -$require = $link->getTarget(); -if (!isset($packageIndex[$require])) { -continue; -} - -$linkConstraint = $link->getConstraint(); -foreach ($packageIndex[$require] as $id => $requiredPkg) { -if (false === CompilingMatcher::match($linkConstraint, Constraint::OP_EQ, $requiredPkg->getVersion())) { -$this->markPackageForRemoval($id); -unset($packageIndex[$require][$id]); -} -} -} -} -} - - - - - - - - -private function extractRequireConstraintsPerPackage(string $package, ConstraintInterface $constraint) -{ -foreach ($this->expandDisjunctiveMultiConstraints($constraint) as $expanded) { -$this->requireConstraintsPerPackage[$package][(string) $expanded] = $expanded; -} -} - - - - - - - - -private function extractConflictConstraintsPerPackage(string $package, ConstraintInterface $constraint) -{ -foreach ($this->expandDisjunctiveMultiConstraints($constraint) as $expanded) { -$this->conflictConstraintsPerPackage[$package][(string) $expanded] = $expanded; -} -} - - - - -private function expandDisjunctiveMultiConstraints(ConstraintInterface $constraint) -{ -$constraint = Intervals::compactConstraint($constraint); - -if ($constraint instanceof MultiConstraint && $constraint->isDisjunctive()) { - - -return $constraint->getConstraints(); -} - - -return [$constraint]; -} -} diff --git a/composer/src/Composer/DependencyResolver/Problem.php b/composer/src/Composer/DependencyResolver/Problem.php deleted file mode 100644 index f834f2c69..000000000 --- a/composer/src/Composer/DependencyResolver/Problem.php +++ /dev/null @@ -1,561 +0,0 @@ -addReason(spl_object_hash($rule), $rule); -} - - - - - - -public function getReasons(): array -{ -return $this->reasons; -} - - - - - - - -public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, array $installedMap = [], array $learnedPool = []): string -{ - -$reasons = array_merge(...array_reverse($this->reasons)); - -if (count($reasons) === 1) { -reset($reasons); -$rule = current($reasons); - -if ($rule->getReason() !== Rule::RULE_ROOT_REQUIRE) { -throw new \LogicException("Single reason problems must contain a root require rule."); -} - -$reasonData = $rule->getReasonData(); -$packageName = $reasonData['packageName']; -$constraint = $reasonData['constraint']; - -$packages = $pool->whatProvides($packageName, $constraint); -if (count($packages) === 0) { -return "\n ".implode(self::getMissingPackageReason($repositorySet, $request, $pool, $isVerbose, $packageName, $constraint)); -} -} - -return self::formatDeduplicatedRules($reasons, ' ', $repositorySet, $request, $pool, $isVerbose, $installedMap, $learnedPool); -} - - - - - - - -public static function formatDeduplicatedRules(array $rules, string $indent, RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, array $installedMap = [], array $learnedPool = []): string -{ -$messages = []; -$templates = []; -$parser = new VersionParser; -$deduplicatableRuleTypes = [Rule::RULE_PACKAGE_REQUIRES, Rule::RULE_PACKAGE_CONFLICT]; -foreach ($rules as $rule) { -$message = $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose, $installedMap, $learnedPool); -if (in_array($rule->getReason(), $deduplicatableRuleTypes, true) && Preg::isMatchStrictGroups('{^(?P\S+) (?P\S+) (?Prequires|conflicts)}', $message, $m)) { -$template = Preg::replace('{^\S+ \S+ }', '%s%s ', $message); -$messages[] = $template; -$templates[$template][$m[1]][$parser->normalize($m[2])] = $m[2]; -$sourcePackage = $rule->getSourcePackage($pool); -foreach ($pool->getRemovedVersionsByPackage(spl_object_hash($sourcePackage)) as $version => $prettyVersion) { -$templates[$template][$m[1]][$version] = $prettyVersion; -} -} elseif ($message !== '') { -$messages[] = $message; -} -} - -$result = []; -foreach (array_unique($messages) as $message) { -if (isset($templates[$message])) { -foreach ($templates[$message] as $package => $versions) { -uksort($versions, 'version_compare'); -if (!$isVerbose) { -$versions = self::condenseVersionList($versions, 1); -} -if (count($versions) > 1) { - -$message = Preg::replace('{^(%s%s (?:require|conflict))s}', '$1', $message); -$result[] = sprintf($message, $package, '['.implode(', ', $versions).']'); -} else { -$result[] = sprintf($message, $package, ' '.reset($versions)); -} -} -} else { -$result[] = $message; -} -} - -return "\n$indent- ".implode("\n$indent- ", $result); -} - -public function isCausedByLock(RepositorySet $repositorySet, Request $request, Pool $pool): bool -{ -foreach ($this->reasons as $sectionRules) { -foreach ($sectionRules as $rule) { -if ($rule->isCausedByLock($repositorySet, $request, $pool)) { -return true; -} -} -} - -return false; -} - - - - - - - -protected function addReason(string $id, Rule $reason): void -{ - - - -if (!isset($this->reasonSeen[$id])) { -$this->reasonSeen[$id] = true; -$this->reasons[$this->section][] = $reason; -} -} - -public function nextSection(): void -{ -$this->section++; -} - - - - - -public static function getMissingPackageReason(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, string $packageName, ?ConstraintInterface $constraint = null): array -{ -if (PlatformRepository::isPlatformPackage($packageName)) { - -if (0 === stripos($packageName, 'php') || $packageName === 'hhvm') { -$version = self::getPlatformPackageVersion($pool, $packageName, phpversion()); - -$msg = "- Root composer.json requires ".$packageName.self::constraintToText($constraint).' but '; - -if (defined('HHVM_VERSION') || ($packageName === 'hhvm' && count($pool->whatProvides($packageName)) > 0)) { -return [$msg, 'your HHVM version does not satisfy that requirement.']; -} - -if ($packageName === 'hhvm') { -return [$msg, 'HHVM was not detected on this machine, make sure it is in your PATH.']; -} - -if (null === $version) { -return [$msg, 'the '.$packageName.' package is disabled by your platform config. Enable it again with "composer config platform.'.$packageName.' --unset".']; -} - -return [$msg, 'your '.$packageName.' version ('. $version .') does not satisfy that requirement.']; -} - - -if (0 === stripos($packageName, 'ext-')) { -if (false !== strpos($packageName, ' ')) { -return ['- ', "PHP extension ".$packageName.' should be required as '.str_replace(' ', '-', $packageName).'.']; -} - -$ext = substr($packageName, 4); -$msg = "- Root composer.json requires PHP extension ".$packageName.self::constraintToText($constraint).' but '; - -$version = self::getPlatformPackageVersion($pool, $packageName, phpversion($ext) ?: '0'); -if (null === $version) { -if (extension_loaded($ext)) { -return [ -$msg, -'the '.$packageName.' package is disabled by your platform config. Enable it again with "composer config platform.'.$packageName.' --unset".', -]; -} - -return [$msg, 'it is missing from your system. Install or enable PHP\'s '.$ext.' extension.']; -} - -return [$msg, 'it has the wrong version installed ('.$version.').']; -} - - -if (0 === stripos($packageName, 'lib-')) { -if (strtolower($packageName) === 'lib-icu') { -$error = extension_loaded('intl') ? 'it has the wrong version installed, try upgrading the intl extension.' : 'it is missing from your system, make sure the intl extension is loaded.'; - -return ["- Root composer.json requires linked library ".$packageName.self::constraintToText($constraint).' but ', $error]; -} - -return ["- Root composer.json requires linked library ".$packageName.self::constraintToText($constraint).' but ', 'it has the wrong version installed or is missing from your system, make sure to load the extension providing it.']; -} -} - -$lockedPackage = null; -foreach ($request->getLockedPackages() as $package) { -if ($package->getName() === $packageName) { -$lockedPackage = $package; -if ($pool->isUnacceptableFixedOrLockedPackage($package)) { -return ["- ", $package->getPrettyName().' is fixed to '.$package->getPrettyVersion().' (lock file version) by a partial update but that version is rejected by your minimum-stability. Make sure you list it as an argument for the update command.']; -} -break; -} -} - - - -if ($packages = $repositorySet->findPackages($packageName, $constraint)) { -$rootReqs = $repositorySet->getRootRequires(); -if (isset($rootReqs[$packageName])) { -$filtered = array_filter($packages, static function ($p) use ($rootReqs, $packageName): bool { -return $rootReqs[$packageName]->matches(new Constraint('==', $p->getVersion())); -}); -if (0 === count($filtered)) { -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these conflict' : 'it conflicts').' with your root composer.json require ('.$rootReqs[$packageName]->getPrettyString().').']; -} -} - -$tempReqs = $repositorySet->getTemporaryConstraints(); -if (isset($tempReqs[$packageName])) { -$filtered = array_filter($packages, static function ($p) use ($tempReqs, $packageName): bool { -return $tempReqs[$packageName]->matches(new Constraint('==', $p->getVersion())); -}); -if (0 === count($filtered)) { -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these conflict' : 'it conflicts').' with your temporary update constraint ('.$packageName.':'.$tempReqs[$packageName]->getPrettyString().').']; -} -} - -if ($lockedPackage) { -$fixedConstraint = new Constraint('==', $lockedPackage->getVersion()); -$filtered = array_filter($packages, static function ($p) use ($fixedConstraint): bool { -return $fixedConstraint->matches(new Constraint('==', $p->getVersion())); -}); -if (0 === count($filtered)) { -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but the package is fixed to '.$lockedPackage->getPrettyVersion().' (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.']; -} -} - -$nonLockedPackages = array_filter($packages, static function ($p): bool { -return !$p->getRepository() instanceof LockArrayRepository; -}); - -if (!$nonLockedPackages) { -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' in the lock file but not in remote repositories, make sure you avoid updating this package to keep the one from the lock file.']; -} - -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but these were not loaded, likely because '.(self::hasMultipleNames($packages) ? 'they conflict' : 'it conflicts').' with another require.']; -} - - -if ($packages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES)) { - -if ($allReposPackages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { -return self::computeCheckForLowerPrioRepo($pool, $isVerbose, $packageName, $packages, $allReposPackages, 'minimum-stability', $constraint); -} - -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these do' : 'it does').' not match your minimum-stability.']; -} - - -if ($packages = $repositorySet->findPackages($packageName, null, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES)) { - -if ($allReposPackages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { -return self::computeCheckForLowerPrioRepo($pool, $isVerbose, $packageName, $packages, $allReposPackages, 'constraint', $constraint); -} - -$suffix = ''; -if ($constraint instanceof Constraint && $constraint->getVersion() === 'dev-master') { -foreach ($packages as $candidate) { -if (in_array($candidate->getVersion(), ['dev-default', 'dev-main'], true)) { -$suffix = ' Perhaps dev-master was renamed to '.$candidate->getPrettyVersion().'?'; -break; -} -} -} - - -$allReposPackages = $packages; -$topPackage = reset($allReposPackages); -if ($topPackage instanceof RootPackageInterface) { -$suffix = ' See https://getcomposer.org/dep-on-root for details and assistance.'; -} - -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose, $pool, $constraint).' but '.(self::hasMultipleNames($packages) ? 'these do' : 'it does').' not match the constraint.' . $suffix]; -} - -if (!Preg::isMatch('{^[A-Za-z0-9_./-]+$}', $packageName)) { -$illegalChars = Preg::replace('{[A-Za-z0-9_./-]+}', '', $packageName); - -return ["- Root composer.json requires $packageName, it ", 'could not be found, it looks like its name is invalid, "'.$illegalChars.'" is not allowed in package names.']; -} - -if ($providers = $repositorySet->getProviders($packageName)) { -$maxProviders = 20; -$providersStr = implode(array_map(static function ($p): string { -$description = $p['description'] ? ' '.substr($p['description'], 0, 100) : ''; - -return ' - '.$p['name'].$description."\n"; -}, count($providers) > $maxProviders + 1 ? array_slice($providers, 0, $maxProviders) : $providers)); -if (count($providers) > $maxProviders + 1) { -$providersStr .= ' ... and '.(count($providers) - $maxProviders).' more.'."\n"; -} - -return ["- Root composer.json requires $packageName".self::constraintToText($constraint).", it ", "could not be found in any version, but the following packages provide it:\n".$providersStr." Consider requiring one of these to satisfy the $packageName requirement."]; -} - -return ["- Root composer.json requires $packageName, it ", "could not be found in any version, there may be a typo in the package name."]; -} - - - - - -public static function getPackageList(array $packages, bool $isVerbose, ?Pool $pool = null, ?ConstraintInterface $constraint = null, bool $useRemovedVersionGroup = false): string -{ -$prepared = []; -$hasDefaultBranch = []; -foreach ($packages as $package) { -$prepared[$package->getName()]['name'] = $package->getPrettyName(); -$prepared[$package->getName()]['versions'][$package->getVersion()] = $package->getPrettyVersion().($package instanceof AliasPackage ? ' (alias of '.$package->getAliasOf()->getPrettyVersion().')' : ''); -if ($pool && $constraint) { -foreach ($pool->getRemovedVersions($package->getName(), $constraint) as $version => $prettyVersion) { -$prepared[$package->getName()]['versions'][$version] = $prettyVersion; -} -} -if ($pool && $useRemovedVersionGroup) { -foreach ($pool->getRemovedVersionsByPackage(spl_object_hash($package)) as $version => $prettyVersion) { -$prepared[$package->getName()]['versions'][$version] = $prettyVersion; -} -} -if ($package->isDefaultBranch()) { -$hasDefaultBranch[$package->getName()] = true; -} -} - -$preparedStrings = []; -foreach ($prepared as $name => $package) { - -if (isset($package['versions'][VersionParser::DEFAULT_BRANCH_ALIAS], $hasDefaultBranch[$name])) { -unset($package['versions'][VersionParser::DEFAULT_BRANCH_ALIAS]); -} - -uksort($package['versions'], 'version_compare'); - -if (!$isVerbose) { -$package['versions'] = self::condenseVersionList($package['versions'], 4); -} -$preparedStrings[] = $package['name'].'['.implode(', ', $package['versions']).']'; -} - -return implode(', ', $preparedStrings); -} - - - - - -private static function getPlatformPackageVersion(Pool $pool, string $packageName, string $version): ?string -{ -$available = $pool->whatProvides($packageName); - -if (count($available)) { -$selected = null; -foreach ($available as $pkg) { -if ($pkg->getRepository() instanceof PlatformRepository) { -$selected = $pkg; -break; -} -} -if ($selected === null) { -$selected = reset($available); -} - - -if ($selected->getName() !== $packageName) { - -foreach (array_merge(array_values($selected->getProvides()), array_values($selected->getReplaces())) as $link) { -if ($link->getTarget() === $packageName) { -return $link->getPrettyConstraint().' '.substr($link->getDescription(), 0, -1).'d by '.$selected->getPrettyString(); -} -} -} - -$version = $selected->getPrettyVersion(); -$extra = $selected->getExtra(); -if ($selected instanceof CompletePackageInterface && isset($extra['config.platform']) && $extra['config.platform'] === true) { -$version .= '; ' . str_replace('Package ', '', $selected->getDescription()); -} -} else { -return null; -} - -return $version; -} - - - - - -private static function condenseVersionList(array $versions, int $max, int $maxDev = 16): array -{ -if (count($versions) <= $max) { -return array_values($versions); -} - -$filtered = []; -$byMajor = []; -foreach ($versions as $version => $pretty) { -if (0 === stripos($version, 'dev-')) { -$byMajor['dev'][] = $pretty; -} else { -$byMajor[Preg::replace('{^(\d+)\..*}', '$1', $version)][] = $pretty; -} -} -foreach ($byMajor as $majorVersion => $versionsForMajor) { -$maxVersions = $majorVersion === 'dev' ? $maxDev : $max; -if (count($versionsForMajor) > $maxVersions) { - -$filtered[] = $versionsForMajor[0]; -$filtered[] = '...'; -$filtered[] = $versionsForMajor[count($versionsForMajor) - 1]; -} else { -$filtered = array_merge($filtered, $versionsForMajor); -} -} - -return $filtered; -} - - - - -private static function hasMultipleNames(array $packages): bool -{ -$name = null; -foreach ($packages as $package) { -if ($name === null || $name === $package->getName()) { -$name = $package->getName(); -} else { -return true; -} -} - -return false; -} - - - - - - -private static function computeCheckForLowerPrioRepo(Pool $pool, bool $isVerbose, string $packageName, array $higherRepoPackages, array $allReposPackages, string $reason, ?ConstraintInterface $constraint = null): array -{ -$nextRepoPackages = []; -$nextRepo = null; - -foreach ($allReposPackages as $package) { -if ($nextRepo === null || $nextRepo === $package->getRepository()) { -$nextRepoPackages[] = $package; -$nextRepo = $package->getRepository(); -} else { -break; -} -} - -if ($higherRepoPackages) { -$topPackage = reset($higherRepoPackages); -if ($topPackage instanceof RootPackageInterface) { -return [ -"- Root composer.json requires $packageName".self::constraintToText($constraint).', it is ', -'satisfiable by '.self::getPackageList($nextRepoPackages, $isVerbose, $pool, $constraint).' from '.$nextRepo->getRepoName().' but '.$topPackage->getPrettyName().' is the root package and cannot be modified. See https://getcomposer.org/dep-on-root for details and assistance.', -]; -} -} - -if ($nextRepo instanceof LockArrayRepository) { -$singular = count($higherRepoPackages) === 1; - -$suggestion = 'Make sure you either fix the '.$reason.' or avoid updating this package to keep the one present in the lock file ('.self::getPackageList($nextRepoPackages, $isVerbose, $pool, $constraint).').'; - -if ($nextRepoPackages[0]->getDistType() === 'path') { -$transportOptions = $nextRepoPackages[0]->getTransportOptions(); -if (!isset($transportOptions['symlink']) || $transportOptions['symlink'] !== false) { -$suggestion = 'Make sure you fix the '.$reason.' as packages installed from symlinked path repos are updated even in partial updates and the one from the lock file can thus not be used.'; -} -} - -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', -'found ' . self::getPackageList($higherRepoPackages, $isVerbose, $pool, $constraint).' but ' . ($singular ? 'it does' : 'these do') . ' not match your '.$reason.' and ' . ($singular ? 'is' : 'are') . ' therefore not installable. '.$suggestion, -]; -} - -return ["- Root composer.json requires $packageName".self::constraintToText($constraint) . ', it is ', 'satisfiable by '.self::getPackageList($nextRepoPackages, $isVerbose, $pool, $constraint).' from '.$nextRepo->getRepoName().' but '.self::getPackageList($higherRepoPackages, $isVerbose, $pool, $constraint).' from '.reset($higherRepoPackages)->getRepository()->getRepoName().' has higher repository priority. The packages from the higher priority repository do not match your '.$reason.' and are therefore not installable. That repository is canonical so the lower priority repo\'s packages are not installable. See https://getcomposer.org/repoprio for details and assistance.']; -} - - - - -protected static function constraintToText(?ConstraintInterface $constraint = null): string -{ -return $constraint ? ' '.$constraint->getPrettyString() : ''; -} -} diff --git a/composer/src/Composer/DependencyResolver/Request.php b/composer/src/Composer/DependencyResolver/Request.php deleted file mode 100644 index 8ce047aee..000000000 --- a/composer/src/Composer/DependencyResolver/Request.php +++ /dev/null @@ -1,236 +0,0 @@ -lockedRepository = $lockedRepository; -} - -public function requireName(string $packageName, ?ConstraintInterface $constraint = null): void -{ -$packageName = strtolower($packageName); - -if ($constraint === null) { -$constraint = new MatchAllConstraint(); -} -if (isset($this->requires[$packageName])) { -throw new \LogicException('Overwriting requires seems like a bug ('.$packageName.' '.$this->requires[$packageName]->getPrettyString().' => '.$constraint->getPrettyString().', check why it is happening, might be a root alias'); -} -$this->requires[$packageName] = $constraint; -} - - - - - - - -public function fixPackage(BasePackage $package): void -{ -$this->fixedPackages[spl_object_hash($package)] = $package; -} - - - - - - - - - - - -public function lockPackage(BasePackage $package): void -{ -$this->lockedPackages[spl_object_hash($package)] = $package; -} - - - - - - - - -public function fixLockedPackage(BasePackage $package): void -{ -$this->fixedPackages[spl_object_hash($package)] = $package; -$this->fixedLockedPackages[spl_object_hash($package)] = $package; -} - -public function unlockPackage(BasePackage $package): void -{ -unset($this->lockedPackages[spl_object_hash($package)]); -} - - - - - -public function setUpdateAllowList(array $updateAllowList, $updateAllowTransitiveDependencies): void -{ -$this->updateAllowList = $updateAllowList; -$this->updateAllowTransitiveDependencies = $updateAllowTransitiveDependencies; -} - - - - -public function getUpdateAllowList(): array -{ -return $this->updateAllowList; -} - -public function getUpdateAllowTransitiveDependencies(): bool -{ -return $this->updateAllowTransitiveDependencies !== self::UPDATE_ONLY_LISTED; -} - -public function getUpdateAllowTransitiveRootDependencies(): bool -{ -return $this->updateAllowTransitiveDependencies === self::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; -} - - - - -public function getRequires(): array -{ -return $this->requires; -} - - - - -public function getFixedPackages(): array -{ -return $this->fixedPackages; -} - -public function isFixedPackage(BasePackage $package): bool -{ -return isset($this->fixedPackages[spl_object_hash($package)]); -} - - - - -public function getLockedPackages(): array -{ -return $this->lockedPackages; -} - -public function isLockedPackage(PackageInterface $package): bool -{ -return isset($this->lockedPackages[spl_object_hash($package)]) || isset($this->fixedLockedPackages[spl_object_hash($package)]); -} - - - - -public function getFixedOrLockedPackages(): array -{ -return array_merge($this->fixedPackages, $this->lockedPackages); -} - - - - - - - - - -public function getPresentMap(bool $packageIds = false): array -{ -$presentMap = []; - -if ($this->lockedRepository) { -foreach ($this->lockedRepository->getPackages() as $package) { -$presentMap[$packageIds ? $package->getId() : spl_object_hash($package)] = $package; -} -} - -foreach ($this->fixedPackages as $package) { -$presentMap[$packageIds ? $package->getId() : spl_object_hash($package)] = $package; -} - -return $presentMap; -} - - - - -public function getFixedPackagesMap(): array -{ -$fixedPackagesMap = []; - -foreach ($this->fixedPackages as $package) { -$fixedPackagesMap[$package->getId()] = $package; -} - -return $fixedPackagesMap; -} - - - - -public function getLockedRepository(): ?LockArrayRepository -{ -return $this->lockedRepository; -} -} diff --git a/composer/src/Composer/DependencyResolver/Rule.php b/composer/src/Composer/DependencyResolver/Rule.php deleted file mode 100644 index 73c07c258..000000000 --- a/composer/src/Composer/DependencyResolver/Rule.php +++ /dev/null @@ -1,463 +0,0 @@ -reasonData = $reasonData; - -$this->bitfield = (0 << self::BITFIELD_DISABLED) | -($reason << self::BITFIELD_REASON) | -(255 << self::BITFIELD_TYPE); -} - - - - -abstract public function getLiterals(): array; - - - - -abstract public function getHash(); - -abstract public function __toString(): string; - -abstract public function equals(Rule $rule): bool; - - - - -public function getReason(): int -{ -return ($this->bitfield & (255 << self::BITFIELD_REASON)) >> self::BITFIELD_REASON; -} - - - - -public function getReasonData() -{ -return $this->reasonData; -} - -public function getRequiredPackage(): ?string -{ -switch ($this->getReason()) { -case self::RULE_ROOT_REQUIRE: -return $this->getReasonData()['packageName']; -case self::RULE_FIXED: -return $this->getReasonData()['package']->getName(); -case self::RULE_PACKAGE_REQUIRES: -return $this->getReasonData()->getTarget(); -} - -return null; -} - - - - -public function setType($type): void -{ -$this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_TYPE)) | ((255 & $type) << self::BITFIELD_TYPE); -} - -public function getType(): int -{ -return ($this->bitfield & (255 << self::BITFIELD_TYPE)) >> self::BITFIELD_TYPE; -} - -public function disable(): void -{ -$this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_DISABLED)) | (1 << self::BITFIELD_DISABLED); -} - -public function enable(): void -{ -$this->bitfield &= ~(255 << self::BITFIELD_DISABLED); -} - -public function isDisabled(): bool -{ -return (bool) (($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); -} - -public function isEnabled(): bool -{ -return !(($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); -} - -abstract public function isAssertion(): bool; - -public function isCausedByLock(RepositorySet $repositorySet, Request $request, Pool $pool): bool -{ -if ($this->getReason() === self::RULE_PACKAGE_REQUIRES) { -if (PlatformRepository::isPlatformPackage($this->getReasonData()->getTarget())) { -return false; -} -if ($request->getLockedRepository()) { -foreach ($request->getLockedRepository()->getPackages() as $package) { -if ($package->getName() === $this->getReasonData()->getTarget()) { -if ($pool->isUnacceptableFixedOrLockedPackage($package)) { -return true; -} -if (!$this->getReasonData()->getConstraint()->matches(new Constraint('=', $package->getVersion()))) { -return true; -} - -if (!$request->isLockedPackage($package)) { -return true; -} -break; -} -} -} -} - -if ($this->getReason() === self::RULE_ROOT_REQUIRE) { -if (PlatformRepository::isPlatformPackage($this->getReasonData()['packageName'])) { -return false; -} -if ($request->getLockedRepository()) { -foreach ($request->getLockedRepository()->getPackages() as $package) { -if ($package->getName() === $this->getReasonData()['packageName']) { -if ($pool->isUnacceptableFixedOrLockedPackage($package)) { -return true; -} -if (!$this->getReasonData()['constraint']->matches(new Constraint('=', $package->getVersion()))) { -return true; -} -break; -} -} -} -} - -return false; -} - - - - -public function getSourcePackage(Pool $pool): BasePackage -{ -$literals = $this->getLiterals(); - -switch ($this->getReason()) { -case self::RULE_PACKAGE_CONFLICT: -$package1 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); -$package2 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); - -$reasonData = $this->getReasonData(); - -if ($reasonData->getSource() === $package1->getName()) { -[$package2, $package1] = [$package1, $package2]; -} - -return $package2; - -case self::RULE_PACKAGE_REQUIRES: -$sourceLiteral = array_shift($literals); -$sourcePackage = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($sourceLiteral)); - -return $sourcePackage; - -default: -throw new \LogicException('Not implemented'); -} -} - - - - - -public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, array $installedMap = [], array $learnedPool = []): string -{ -$literals = $this->getLiterals(); - -switch ($this->getReason()) { -case self::RULE_ROOT_REQUIRE: -$reasonData = $this->getReasonData(); -$packageName = $reasonData['packageName']; -$constraint = $reasonData['constraint']; - -$packages = $pool->whatProvides($packageName, $constraint); -if (!$packages) { -return 'No package found to satisfy root composer.json require '.$packageName.' '.$constraint->getPrettyString(); -} - -$packagesNonAlias = array_values(array_filter($packages, static function ($p): bool { -return !($p instanceof AliasPackage); -})); -if (count($packagesNonAlias) === 1) { -$package = $packagesNonAlias[0]; -if ($request->isLockedPackage($package)) { -return $package->getPrettyName().' is locked to version '.$package->getPrettyVersion()." and an update of this package was not requested."; -} -} - -return 'Root composer.json requires '.$packageName.' '.$constraint->getPrettyString().' -> satisfiable by '.$this->formatPackagesUnique($pool, $packages, $isVerbose, $constraint).'.'; - -case self::RULE_FIXED: -$package = $this->deduplicateDefaultBranchAlias($this->getReasonData()['package']); - -if ($request->isLockedPackage($package)) { -return $package->getPrettyName().' is locked to version '.$package->getPrettyVersion().' and an update of this package was not requested.'; -} - -return $package->getPrettyName().' is present at version '.$package->getPrettyVersion() . ' and cannot be modified by Composer'; - -case self::RULE_PACKAGE_CONFLICT: -$package1 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); -$package2 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); - -$conflictTarget = $package1->getPrettyString(); -$reasonData = $this->getReasonData(); - - -if ($reasonData->getSource() === $package1->getName()) { -[$package2, $package1] = [$package1, $package2]; -$conflictTarget = $package1->getPrettyName().' '.$reasonData->getPrettyConstraint(); -} - - - -if ($reasonData->getTarget() !== $package1->getName()) { -$provideType = null; -$provided = null; -foreach ($package1->getProvides() as $provide) { -if ($provide->getTarget() === $reasonData->getTarget()) { -$provideType = 'provides'; -$provided = $provide->getPrettyConstraint(); -break; -} -} -foreach ($package1->getReplaces() as $replace) { -if ($replace->getTarget() === $reasonData->getTarget()) { -$provideType = 'replaces'; -$provided = $replace->getPrettyConstraint(); -break; -} -} -if (null !== $provideType) { -$conflictTarget = $reasonData->getTarget().' '.$reasonData->getPrettyConstraint().' ('.$package1->getPrettyString().' '.$provideType.' '.$reasonData->getTarget().' '.$provided.')'; -} -} - -return $package2->getPrettyString().' conflicts with '.$conflictTarget.'.'; - -case self::RULE_PACKAGE_REQUIRES: -$sourceLiteral = array_shift($literals); -$sourcePackage = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($sourceLiteral)); -$reasonData = $this->getReasonData(); - -$requires = []; -foreach ($literals as $literal) { -$requires[] = $pool->literalToPackage($literal); -} - -$text = $reasonData->getPrettyString($sourcePackage); -if ($requires) { -$text .= ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $requires, $isVerbose, $reasonData->getConstraint()) . '.'; -} else { -$targetName = $reasonData->getTarget(); - -$reason = Problem::getMissingPackageReason($repositorySet, $request, $pool, $isVerbose, $targetName, $reasonData->getConstraint()); - -return $text . ' -> ' . $reason[1]; -} - -return $text; - -case self::RULE_PACKAGE_SAME_NAME: -$packageNames = []; -foreach ($literals as $literal) { -$package = $pool->literalToPackage($literal); -$packageNames[$package->getName()] = true; -} -$replacedName = $this->getReasonData(); - -if (count($packageNames) > 1) { -$reason = null; - -if (!isset($packageNames[$replacedName])) { -$reason = 'They '.(count($literals) === 2 ? 'both' : 'all').' replace '.$replacedName.' and thus cannot coexist.'; -} else { -$replacerNames = $packageNames; -unset($replacerNames[$replacedName]); -$replacerNames = array_keys($replacerNames); - -if (count($replacerNames) === 1) { -$reason = $replacerNames[0] . ' replaces '; -} else { -$reason = '['.implode(', ', $replacerNames).'] replace '; -} -$reason .= $replacedName.' and thus cannot coexist with it.'; -} - -$installedPackages = []; -$removablePackages = []; -foreach ($literals as $literal) { -if (isset($installedMap[abs($literal)])) { -$installedPackages[] = $pool->literalToPackage($literal); -} else { -$removablePackages[] = $pool->literalToPackage($literal); -} -} - -if ($installedPackages && $removablePackages) { -return $this->formatPackagesUnique($pool, $removablePackages, $isVerbose, null, true).' cannot be installed as that would require removing '.$this->formatPackagesUnique($pool, $installedPackages, $isVerbose, null, true).'. '.$reason; -} - -return 'Only one of these can be installed: '.$this->formatPackagesUnique($pool, $literals, $isVerbose, null, true).'. '.$reason; -} - -return 'You can only install one version of a package, so only one of these can be installed: ' . $this->formatPackagesUnique($pool, $literals, $isVerbose, null, true) . '.'; -case self::RULE_LEARNED: - - - - - - - -$learnedString = ' (conflict analysis result)'; - -if (count($literals) === 1) { -$ruleText = $pool->literalToPrettyString($literals[0], $installedMap); -} else { -$groups = []; -foreach ($literals as $literal) { -$package = $pool->literalToPackage($literal); -if (isset($installedMap[$package->id])) { -$group = $literal > 0 ? 'keep' : 'remove'; -} else { -$group = $literal > 0 ? 'install' : 'don\'t install'; -} - -$groups[$group][] = $this->deduplicateDefaultBranchAlias($package); -} -$ruleTexts = []; -foreach ($groups as $group => $packages) { -$ruleTexts[] = $group . (count($packages) > 1 ? ' one of' : '').' ' . $this->formatPackagesUnique($pool, $packages, $isVerbose); -} - -$ruleText = implode(' | ', $ruleTexts); -} - -return 'Conclusion: '.$ruleText.$learnedString; -case self::RULE_PACKAGE_ALIAS: -$aliasPackage = $pool->literalToPackage($literals[0]); - - -if ($aliasPackage->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -return ''; -} -$package = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); - -return $aliasPackage->getPrettyString() .' is an alias of '.$package->getPrettyString().' and thus requires it to be installed too.'; -case self::RULE_PACKAGE_INVERSE_ALIAS: - -$aliasPackage = $pool->literalToPackage($literals[1]); - - -if ($aliasPackage->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -return ''; -} -$package = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); - -return $aliasPackage->getPrettyString() .' is an alias of '.$package->getPrettyString().' and must be installed with it.'; -default: -$ruleText = ''; -foreach ($literals as $i => $literal) { -if ($i !== 0) { -$ruleText .= '|'; -} -$ruleText .= $pool->literalToPrettyString($literal, $installedMap); -} - -return '('.$ruleText.')'; -} -} - - - - -protected function formatPackagesUnique(Pool $pool, array $packages, bool $isVerbose, ?ConstraintInterface $constraint = null, bool $useRemovedVersionGroup = false): string -{ -foreach ($packages as $index => $package) { -if (!\is_object($package)) { -$packages[$index] = $pool->literalToPackage($package); -} -} - -return Problem::getPackageList($packages, $isVerbose, $pool, $constraint, $useRemovedVersionGroup); -} - -private function deduplicateDefaultBranchAlias(BasePackage $package): BasePackage -{ -if ($package instanceof AliasPackage && $package->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -$package = $package->getAliasOf(); -} - -return $package; -} -} diff --git a/composer/src/Composer/DependencyResolver/Rule2Literals.php b/composer/src/Composer/DependencyResolver/Rule2Literals.php deleted file mode 100644 index 05a87b2b2..000000000 --- a/composer/src/Composer/DependencyResolver/Rule2Literals.php +++ /dev/null @@ -1,117 +0,0 @@ -literal1 = $literal1; -$this->literal2 = $literal2; -} else { -$this->literal1 = $literal2; -$this->literal2 = $literal1; -} -} - - - - -public function getLiterals(): array -{ -return [$this->literal1, $this->literal2]; -} - - - - -public function getHash() -{ -return $this->literal1.','.$this->literal2; -} - - - - - - - - - -public function equals(Rule $rule): bool -{ - -if ($rule instanceof self) { -if ($this->literal1 !== $rule->literal1) { -return false; -} - -if ($this->literal2 !== $rule->literal2) { -return false; -} - -return true; -} - -$literals = $rule->getLiterals(); -if (2 !== \count($literals)) { -return false; -} - -if ($this->literal1 !== $literals[0]) { -return false; -} - -if ($this->literal2 !== $literals[1]) { -return false; -} - -return true; -} - - -public function isAssertion(): bool -{ -return false; -} - - - - -public function __toString(): string -{ -$result = $this->isDisabled() ? 'disabled(' : '('; - -$result .= $this->literal1 . '|' . $this->literal2 . ')'; - -return $result; -} -} diff --git a/composer/src/Composer/DependencyResolver/RuleSet.php b/composer/src/Composer/DependencyResolver/RuleSet.php deleted file mode 100644 index c29d2d4b5..000000000 --- a/composer/src/Composer/DependencyResolver/RuleSet.php +++ /dev/null @@ -1,194 +0,0 @@ - 'PACKAGE', -self::TYPE_REQUEST => 'REQUEST', -self::TYPE_LEARNED => 'LEARNED', -]; - - -protected $rules; - - -protected $nextRuleId = 0; - - -protected $rulesByHash = []; - -public function __construct() -{ -foreach ($this->getTypes() as $type) { -$this->rules[$type] = []; -} -} - - - - -public function add(Rule $rule, $type): void -{ -if (!isset(self::TYPES[$type])) { -throw new \OutOfBoundsException('Unknown rule type: ' . $type); -} - -$hash = $rule->getHash(); - - -if (isset($this->rulesByHash[$hash])) { -$potentialDuplicates = $this->rulesByHash[$hash]; -if (\is_array($potentialDuplicates)) { -foreach ($potentialDuplicates as $potentialDuplicate) { -if ($rule->equals($potentialDuplicate)) { -return; -} -} -} else { -if ($rule->equals($potentialDuplicates)) { -return; -} -} -} - -if (!isset($this->rules[$type])) { -$this->rules[$type] = []; -} - -$this->rules[$type][] = $rule; -$this->ruleById[$this->nextRuleId] = $rule; -$rule->setType($type); - -$this->nextRuleId++; - -if (!isset($this->rulesByHash[$hash])) { -$this->rulesByHash[$hash] = $rule; -} elseif (\is_array($this->rulesByHash[$hash])) { -$this->rulesByHash[$hash][] = $rule; -} else { -$originalRule = $this->rulesByHash[$hash]; -$this->rulesByHash[$hash] = [$originalRule, $rule]; -} -} - -public function count(): int -{ -return $this->nextRuleId; -} - -public function ruleById(int $id): Rule -{ -return $this->ruleById[$id]; -} - - -public function getRules(): array -{ -return $this->rules; -} - -public function getIterator(): RuleSetIterator -{ -return new RuleSetIterator($this->getRules()); -} - - - - -public function getIteratorFor($types): RuleSetIterator -{ -if (!\is_array($types)) { -$types = [$types]; -} - -$allRules = $this->getRules(); - - -$rules = []; - -foreach ($types as $type) { -$rules[$type] = $allRules[$type]; -} - -return new RuleSetIterator($rules); -} - - - - -public function getIteratorWithout($types): RuleSetIterator -{ -if (!\is_array($types)) { -$types = [$types]; -} - -$rules = $this->getRules(); - -foreach ($types as $type) { -unset($rules[$type]); -} - -return new RuleSetIterator($rules); -} - - - - -public function getTypes(): array -{ -$types = self::TYPES; - -return array_keys($types); -} - -public function getPrettyString(?RepositorySet $repositorySet = null, ?Request $request = null, ?Pool $pool = null, bool $isVerbose = false): string -{ -$string = "\n"; -foreach ($this->rules as $type => $rules) { -$string .= str_pad(self::TYPES[$type], 8, ' ') . ": "; -foreach ($rules as $rule) { -$string .= ($repositorySet && $request && $pool ? $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose) : $rule)."\n"; -} -$string .= "\n\n"; -} - -return $string; -} - -public function __toString(): string -{ -return $this->getPrettyString(); -} -} diff --git a/composer/src/Composer/DependencyResolver/RuleSetGenerator.php b/composer/src/Composer/DependencyResolver/RuleSetGenerator.php deleted file mode 100644 index 37df1920c..000000000 --- a/composer/src/Composer/DependencyResolver/RuleSetGenerator.php +++ /dev/null @@ -1,327 +0,0 @@ -policy = $policy; -$this->pool = $pool; -$this->rules = new RuleSet; -} - - - - - - - - - - - - - - - -protected function createRequireRule(BasePackage $package, array $providers, $reason, $reasonData = null): ?Rule -{ -$literals = [-$package->id]; - -foreach ($providers as $provider) { - -if ($provider === $package) { -return null; -} -$literals[] = $provider->id; -} - -return new GenericRule($literals, $reason, $reasonData); -} - - - - - - - - - - - - - - - -protected function createInstallOneOfRule(array $packages, $reason, $reasonData): Rule -{ -$literals = []; -foreach ($packages as $package) { -$literals[] = $package->id; -} - -return new GenericRule($literals, $reason, $reasonData); -} - - - - - - - - - - - - - - - -protected function createRule2Literals(BasePackage $issuer, BasePackage $provider, $reason, $reasonData = null): ?Rule -{ - -if ($issuer === $provider) { -return null; -} - -return new Rule2Literals(-$issuer->id, -$provider->id, $reason, $reasonData); -} - - - - - - - - -protected function createMultiConflictRule(array $packages, $reason, $reasonData): Rule -{ -$literals = []; -foreach ($packages as $package) { -$literals[] = -$package->id; -} - -if (\count($literals) === 2) { -return new Rule2Literals($literals[0], $literals[1], $reason, $reasonData); -} - -return new MultiConflictRule($literals, $reason, $reasonData); -} - - - - - - - - - - -private function addRule($type, ?Rule $newRule = null): void -{ -if (!$newRule) { -return; -} - -$this->rules->add($newRule, $type); -} - -protected function addRulesForPackage(BasePackage $package, PlatformRequirementFilterInterface $platformRequirementFilter): void -{ - -$workQueue = new \SplQueue; -$workQueue->enqueue($package); - -while (!$workQueue->isEmpty()) { -$package = $workQueue->dequeue(); -if (isset($this->addedMap[$package->id])) { -continue; -} - -$this->addedMap[$package->id] = $package; - -if (!$package instanceof AliasPackage) { -foreach ($package->getNames(false) as $name) { -$this->addedPackagesByNames[$name][] = $package; -} -} else { -$workQueue->enqueue($package->getAliasOf()); -$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, [$package->getAliasOf()], Rule::RULE_PACKAGE_ALIAS, $package)); - - -$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package->getAliasOf(), [$package], Rule::RULE_PACKAGE_INVERSE_ALIAS, $package->getAliasOf())); - - - -if (!$package->hasSelfVersionRequires()) { -continue; -} -} - -foreach ($package->getRequires() as $link) { -$constraint = $link->getConstraint(); -if ($platformRequirementFilter->isIgnored($link->getTarget())) { -continue; -} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { -$constraint = $platformRequirementFilter->filterConstraint($link->getTarget(), $constraint); -} - -$possibleRequires = $this->pool->whatProvides($link->getTarget(), $constraint); - -$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, $possibleRequires, Rule::RULE_PACKAGE_REQUIRES, $link)); - -foreach ($possibleRequires as $require) { -$workQueue->enqueue($require); -} -} -} -} - -protected function addConflictRules(PlatformRequirementFilterInterface $platformRequirementFilter): void -{ - -foreach ($this->addedMap as $package) { -foreach ($package->getConflicts() as $link) { - -if (!isset($this->addedPackagesByNames[$link->getTarget()])) { -continue; -} - -$constraint = $link->getConstraint(); -if ($platformRequirementFilter->isIgnored($link->getTarget())) { -continue; -} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { -$constraint = $platformRequirementFilter->filterConstraint($link->getTarget(), $constraint, false); -} - -$conflicts = $this->pool->whatProvides($link->getTarget(), $constraint); - -foreach ($conflicts as $conflict) { - - - -if (!$conflict instanceof AliasPackage || $conflict->getName() === $link->getTarget()) { -$this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $conflict, Rule::RULE_PACKAGE_CONFLICT, $link)); -} -} -} -} - -foreach ($this->addedPackagesByNames as $name => $packages) { -if (\count($packages) > 1) { -$reason = Rule::RULE_PACKAGE_SAME_NAME; -$this->addRule(RuleSet::TYPE_PACKAGE, $this->createMultiConflictRule($packages, $reason, $name)); -} -} -} - -protected function addRulesForRequest(Request $request, PlatformRequirementFilterInterface $platformRequirementFilter): void -{ -foreach ($request->getFixedPackages() as $package) { -if ($package->id === -1) { - -if ($this->pool->isUnacceptableFixedOrLockedPackage($package)) { -continue; -} - - -throw new \LogicException("Fixed package ".$package->getPrettyString()." was not added to solver pool."); -} - -$this->addRulesForPackage($package, $platformRequirementFilter); - -$rule = $this->createInstallOneOfRule([$package], Rule::RULE_FIXED, [ -'package' => $package, -]); -$this->addRule(RuleSet::TYPE_REQUEST, $rule); -} - -foreach ($request->getRequires() as $packageName => $constraint) { -if ($platformRequirementFilter->isIgnored($packageName)) { -continue; -} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { -$constraint = $platformRequirementFilter->filterConstraint($packageName, $constraint); -} - -$packages = $this->pool->whatProvides($packageName, $constraint); -if ($packages) { -foreach ($packages as $package) { -$this->addRulesForPackage($package, $platformRequirementFilter); -} - -$rule = $this->createInstallOneOfRule($packages, Rule::RULE_ROOT_REQUIRE, [ -'packageName' => $packageName, -'constraint' => $constraint, -]); -$this->addRule(RuleSet::TYPE_REQUEST, $rule); -} -} -} - -protected function addRulesForRootAliases(PlatformRequirementFilterInterface $platformRequirementFilter): void -{ -foreach ($this->pool->getPackages() as $package) { - - - -if (!isset($this->addedMap[$package->id]) && -$package instanceof AliasPackage && -($package->isRootPackageAlias() || isset($this->addedMap[$package->getAliasOf()->id])) -) { -$this->addRulesForPackage($package, $platformRequirementFilter); -} -} -} - -public function getRulesFor(Request $request, ?PlatformRequirementFilterInterface $platformRequirementFilter = null): RuleSet -{ -$platformRequirementFilter = $platformRequirementFilter ?: PlatformRequirementFilterFactory::ignoreNothing(); - -$this->addRulesForRequest($request, $platformRequirementFilter); - -$this->addRulesForRootAliases($platformRequirementFilter); - -$this->addConflictRules($platformRequirementFilter); - - -$this->addedMap = $this->addedPackagesByNames = []; - -$rules = $this->rules; - -$this->rules = new RuleSet; - -return $rules; -} -} diff --git a/composer/src/Composer/DependencyResolver/RuleSetIterator.php b/composer/src/Composer/DependencyResolver/RuleSetIterator.php deleted file mode 100644 index 3cb68ec1b..000000000 --- a/composer/src/Composer/DependencyResolver/RuleSetIterator.php +++ /dev/null @@ -1,105 +0,0 @@ -rules = $rules; -$this->types = array_keys($rules); -sort($this->types); - -$this->rewind(); -} - -public function current(): Rule -{ -return $this->rules[$this->currentType][$this->currentOffset]; -} - - - - -public function key(): int -{ -return $this->currentType; -} - -public function next(): void -{ -$this->currentOffset++; - -if (!isset($this->rules[$this->currentType])) { -return; -} - -if ($this->currentOffset >= \count($this->rules[$this->currentType])) { -$this->currentOffset = 0; - -do { -$this->currentTypeOffset++; - -if (!isset($this->types[$this->currentTypeOffset])) { -$this->currentType = -1; -break; -} - -$this->currentType = $this->types[$this->currentTypeOffset]; -} while (0 === \count($this->rules[$this->currentType])); -} -} - -public function rewind(): void -{ -$this->currentOffset = 0; - -$this->currentTypeOffset = -1; -$this->currentType = -1; - -do { -$this->currentTypeOffset++; - -if (!isset($this->types[$this->currentTypeOffset])) { -$this->currentType = -1; -break; -} - -$this->currentType = $this->types[$this->currentTypeOffset]; -} while (0 === \count($this->rules[$this->currentType])); -} - -public function valid(): bool -{ -return isset($this->rules[$this->currentType], $this->rules[$this->currentType][$this->currentOffset]); -} -} diff --git a/composer/src/Composer/DependencyResolver/RuleWatchChain.php b/composer/src/Composer/DependencyResolver/RuleWatchChain.php deleted file mode 100644 index 5bcb57432..000000000 --- a/composer/src/Composer/DependencyResolver/RuleWatchChain.php +++ /dev/null @@ -1,51 +0,0 @@ -rewind(); -for ($i = 0; $i < $offset; $i++, $this->next()); -} - - - - - - - - - -public function remove(): void -{ -$offset = $this->key(); -$this->offsetUnset($offset); -$this->seek($offset); -} -} diff --git a/composer/src/Composer/DependencyResolver/RuleWatchGraph.php b/composer/src/Composer/DependencyResolver/RuleWatchGraph.php deleted file mode 100644 index bda05199c..000000000 --- a/composer/src/Composer/DependencyResolver/RuleWatchGraph.php +++ /dev/null @@ -1,167 +0,0 @@ -getRule()->isAssertion()) { -return; -} - -if (!$node->getRule() instanceof MultiConflictRule) { -foreach ([$node->watch1, $node->watch2] as $literal) { -if (!isset($this->watchChains[$literal])) { -$this->watchChains[$literal] = new RuleWatchChain; -} - -$this->watchChains[$literal]->unshift($node); -} -} else { -foreach ($node->getRule()->getLiterals() as $literal) { -if (!isset($this->watchChains[$literal])) { -$this->watchChains[$literal] = new RuleWatchChain; -} - -$this->watchChains[$literal]->unshift($node); -} -} -} - - - - - - - - - - - - - - - - - - - - - - - - -public function propagateLiteral(int $decidedLiteral, int $level, Decisions $decisions): ?Rule -{ - - - -$literal = -$decidedLiteral; - -if (!isset($this->watchChains[$literal])) { -return null; -} - -$chain = $this->watchChains[$literal]; - -$chain->rewind(); -while ($chain->valid()) { -$node = $chain->current(); -if (!$node->getRule() instanceof MultiConflictRule) { -$otherWatch = $node->getOtherWatch($literal); - -if (!$node->getRule()->isDisabled() && !$decisions->satisfy($otherWatch)) { -$ruleLiterals = $node->getRule()->getLiterals(); - -$alternativeLiterals = array_filter($ruleLiterals, static function ($ruleLiteral) use ($literal, $otherWatch, $decisions): bool { -return $literal !== $ruleLiteral && -$otherWatch !== $ruleLiteral && -!$decisions->conflict($ruleLiteral); -}); - -if (\count($alternativeLiterals) > 0) { -reset($alternativeLiterals); -$this->moveWatch($literal, current($alternativeLiterals), $node); -continue; -} - -if ($decisions->conflict($otherWatch)) { -return $node->getRule(); -} - -$decisions->decide($otherWatch, $level, $node->getRule()); -} -} else { -foreach ($node->getRule()->getLiterals() as $otherLiteral) { -if ($literal !== $otherLiteral && !$decisions->satisfy($otherLiteral)) { -if ($decisions->conflict($otherLiteral)) { -return $node->getRule(); -} - -$decisions->decide($otherLiteral, $level, $node->getRule()); -} -} -} - -$chain->next(); -} - -return null; -} - - - - - - - - - - -protected function moveWatch(int $fromLiteral, int $toLiteral, RuleWatchNode $node): void -{ -if (!isset($this->watchChains[$toLiteral])) { -$this->watchChains[$toLiteral] = new RuleWatchChain; -} - -$node->moveWatch($fromLiteral, $toLiteral); -$this->watchChains[$fromLiteral]->remove(); -$this->watchChains[$toLiteral]->unshift($node); -} -} diff --git a/composer/src/Composer/DependencyResolver/RuleWatchNode.php b/composer/src/Composer/DependencyResolver/RuleWatchNode.php deleted file mode 100644 index 1c22f0b30..000000000 --- a/composer/src/Composer/DependencyResolver/RuleWatchNode.php +++ /dev/null @@ -1,114 +0,0 @@ -rule = $rule; - -$literals = $rule->getLiterals(); - -$literalCount = \count($literals); -$this->watch1 = $literalCount > 0 ? $literals[0] : 0; -$this->watch2 = $literalCount > 1 ? $literals[1] : 0; -} - - - - - - - - - -public function watch2OnHighest(Decisions $decisions): void -{ -$literals = $this->rule->getLiterals(); - - -if (\count($literals) < 3 || $this->rule instanceof MultiConflictRule) { -return; -} - -$watchLevel = 0; - -foreach ($literals as $literal) { -$level = $decisions->decisionLevel($literal); - -if ($level > $watchLevel) { -$this->watch2 = $literal; -$watchLevel = $level; -} -} -} - - - - -public function getRule(): Rule -{ -return $this->rule; -} - - - - - - - -public function getOtherWatch(int $literal): int -{ -if ($this->watch1 === $literal) { -return $this->watch2; -} - -return $this->watch1; -} - - - - - - - -public function moveWatch(int $from, int $to): void -{ -if ($this->watch1 === $from) { -$this->watch1 = $to; -} else { -$this->watch2 = $to; -} -} -} diff --git a/composer/src/Composer/DependencyResolver/Solver.php b/composer/src/Composer/DependencyResolver/Solver.php deleted file mode 100644 index b9df98104..000000000 --- a/composer/src/Composer/DependencyResolver/Solver.php +++ /dev/null @@ -1,791 +0,0 @@ -io = $io; -$this->policy = $policy; -$this->pool = $pool; -} - -public function getRuleSetSize(): int -{ -return \count($this->rules); -} - -public function getPool(): Pool -{ -return $this->pool; -} - - - -private function makeAssertionRuleDecisions(): void -{ -$decisionStart = \count($this->decisions) - 1; - -$rulesCount = \count($this->rules); -for ($ruleIndex = 0; $ruleIndex < $rulesCount; $ruleIndex++) { -$rule = $this->rules->ruleById[$ruleIndex]; - -if (!$rule->isAssertion() || $rule->isDisabled()) { -continue; -} - -$literals = $rule->getLiterals(); -$literal = $literals[0]; - -if (!$this->decisions->decided($literal)) { -$this->decisions->decide($literal, 1, $rule); -continue; -} - -if ($this->decisions->satisfy($literal)) { -continue; -} - - -if (RuleSet::TYPE_LEARNED === $rule->getType()) { -$rule->disable(); -continue; -} - -$conflict = $this->decisions->decisionRule($literal); - -if ($conflict && RuleSet::TYPE_PACKAGE === $conflict->getType()) { -$problem = new Problem(); - -$problem->addRule($rule); -$problem->addRule($conflict); -$rule->disable(); -$this->problems[] = $problem; -continue; -} - - -$problem = new Problem(); -$problem->addRule($rule); -$problem->addRule($conflict); - - - -foreach ($this->rules->getIteratorFor(RuleSet::TYPE_REQUEST) as $assertRule) { -if ($assertRule->isDisabled() || !$assertRule->isAssertion()) { -continue; -} - -$assertRuleLiterals = $assertRule->getLiterals(); -$assertRuleLiteral = $assertRuleLiterals[0]; - -if (abs($literal) !== abs($assertRuleLiteral)) { -continue; -} -$problem->addRule($assertRule); -$assertRule->disable(); -} -$this->problems[] = $problem; - -$this->decisions->resetToOffset($decisionStart); -$ruleIndex = -1; -} -} - -protected function setupFixedMap(Request $request): void -{ -$this->fixedMap = []; -foreach ($request->getFixedPackages() as $package) { -$this->fixedMap[$package->id] = $package; -} -} - -protected function checkForRootRequireProblems(Request $request, PlatformRequirementFilterInterface $platformRequirementFilter): void -{ -foreach ($request->getRequires() as $packageName => $constraint) { -if ($platformRequirementFilter->isIgnored($packageName)) { -continue; -} elseif ($platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { -$constraint = $platformRequirementFilter->filterConstraint($packageName, $constraint); -} - -if (!$this->pool->whatProvides($packageName, $constraint)) { -$problem = new Problem(); -$problem->addRule(new GenericRule([], Rule::RULE_ROOT_REQUIRE, ['packageName' => $packageName, 'constraint' => $constraint])); -$this->problems[] = $problem; -} -} -} - -public function solve(Request $request, ?PlatformRequirementFilterInterface $platformRequirementFilter = null): LockTransaction -{ -$platformRequirementFilter = $platformRequirementFilter ?: PlatformRequirementFilterFactory::ignoreNothing(); - -$this->setupFixedMap($request); - -$this->io->writeError('Generating rules', true, IOInterface::DEBUG); -$ruleSetGenerator = new RuleSetGenerator($this->policy, $this->pool); -$this->rules = $ruleSetGenerator->getRulesFor($request, $platformRequirementFilter); -unset($ruleSetGenerator); -$this->checkForRootRequireProblems($request, $platformRequirementFilter); -$this->decisions = new Decisions($this->pool); -$this->watchGraph = new RuleWatchGraph; - -foreach ($this->rules as $rule) { -$this->watchGraph->insert(new RuleWatchNode($rule)); -} - - -$this->makeAssertionRuleDecisions(); - -$this->io->writeError('Resolving dependencies through SAT', true, IOInterface::DEBUG); -$before = microtime(true); -$this->runSat(); -$this->io->writeError('', true, IOInterface::DEBUG); -$this->io->writeError(sprintf('Dependency resolution completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERBOSE); - -if ($this->problems) { -throw new SolverProblemsException($this->problems, $this->learnedPool); -} - -return new LockTransaction($this->pool, $request->getPresentMap(), $request->getFixedPackagesMap(), $this->decisions); -} - - - - - - - - - -protected function propagate(int $level): ?Rule -{ -while ($this->decisions->validOffset($this->propagateIndex)) { -$decision = $this->decisions->atOffset($this->propagateIndex); - -$conflict = $this->watchGraph->propagateLiteral( -$decision[Decisions::DECISION_LITERAL], -$level, -$this->decisions -); - -$this->propagateIndex++; - -if ($conflict) { -return $conflict; -} -} - -return null; -} - - - - -private function revert(int $level): void -{ -while (!$this->decisions->isEmpty()) { -$literal = $this->decisions->lastLiteral(); - -if ($this->decisions->undecided($literal)) { -break; -} - -$decisionLevel = $this->decisions->decisionLevel($literal); - -if ($decisionLevel <= $level) { -break; -} - -$this->decisions->revertLast(); -$this->propagateIndex = \count($this->decisions); -} - -while (!empty($this->branches) && $this->branches[\count($this->branches) - 1][self::BRANCH_LEVEL] >= $level) { -array_pop($this->branches); -} -} - - - - - - - - - - - - - - - - -private function setPropagateLearn(int $level, $literal, Rule $rule): int -{ -$level++; - -$this->decisions->decide($literal, $level, $rule); - -while (true) { -$rule = $this->propagate($level); - -if (null === $rule) { -break; -} - -if ($level === 1) { -return $this->analyzeUnsolvable($rule); -} - - -[$learnLiteral, $newLevel, $newRule, $why] = $this->analyze($level, $rule); - -if ($newLevel <= 0 || $newLevel >= $level) { -throw new SolverBugException( -"Trying to revert to invalid level ".$newLevel." from level ".$level."." -); -} - -$level = $newLevel; - -$this->revert($level); - -$this->rules->add($newRule, RuleSet::TYPE_LEARNED); - -$this->learnedWhy[spl_object_hash($newRule)] = $why; - -$ruleNode = new RuleWatchNode($newRule); -$ruleNode->watch2OnHighest($this->decisions); -$this->watchGraph->insert($ruleNode); - -$this->decisions->decide($learnLiteral, $level, $newRule); -} - -return $level; -} - - - - -private function selectAndInstall(int $level, array $decisionQueue, Rule $rule): int -{ - -$literals = $this->policy->selectPreferredPackages($this->pool, $decisionQueue, $rule->getRequiredPackage()); - -$selectedLiteral = array_shift($literals); - - -if (\count($literals)) { -$this->branches[] = [$literals, $level]; -} - -return $this->setPropagateLearn($level, $selectedLiteral, $rule); -} - - - - -protected function analyze(int $level, Rule $rule): array -{ -$analyzedRule = $rule; -$ruleLevel = 1; -$num = 0; -$l1num = 0; -$seen = []; -$learnedLiterals = [null]; - -$decisionId = \count($this->decisions); - -$this->learnedPool[] = []; - -while (true) { -$this->learnedPool[\count($this->learnedPool) - 1][] = $rule; - -foreach ($rule->getLiterals() as $literal) { - -if ($rule instanceof MultiConflictRule && !$this->decisions->decided($literal)) { -continue; -} - - -if ($this->decisions->satisfy($literal)) { -continue; -} - -if (isset($seen[abs($literal)])) { -continue; -} -$seen[abs($literal)] = true; - -$l = $this->decisions->decisionLevel($literal); - -if (1 === $l) { -$l1num++; -} elseif ($level === $l) { -$num++; -} else { - -$learnedLiterals[] = $literal; - -if ($l > $ruleLevel) { -$ruleLevel = $l; -} -} -} -unset($literal); - -$l1retry = true; -while ($l1retry) { -$l1retry = false; - -if (0 === $num && 0 === --$l1num) { - -break 2; -} - -while (true) { -if ($decisionId <= 0) { -throw new SolverBugException( -"Reached invalid decision id $decisionId while looking through $rule for a literal present in the analyzed rule $analyzedRule." -); -} - -$decisionId--; - -$decision = $this->decisions->atOffset($decisionId); -$literal = $decision[Decisions::DECISION_LITERAL]; - -if (isset($seen[abs($literal)])) { -break; -} -} - -unset($seen[abs($literal)]); - -if (0 !== $num && 0 === --$num) { -if ($literal < 0) { -$this->testFlagLearnedPositiveLiteral = true; -} -$learnedLiterals[0] = -$literal; - -if (!$l1num) { -break 2; -} - -foreach ($learnedLiterals as $i => $learnedLiteral) { -if ($i !== 0) { -unset($seen[abs($learnedLiteral)]); -} -} - -$l1num++; -$l1retry = true; -} else { -$decision = $this->decisions->atOffset($decisionId); -$rule = $decision[Decisions::DECISION_REASON]; - -if ($rule instanceof MultiConflictRule) { - -foreach ($rule->getLiterals() as $literal) { -if (!isset($seen[abs($literal)]) && $this->decisions->satisfy(-$literal)) { -$this->learnedPool[\count($this->learnedPool) - 1][] = $rule; -$l = $this->decisions->decisionLevel($literal); -if (1 === $l) { -$l1num++; -} elseif ($level === $l) { -$num++; -} else { - -$learnedLiterals[] = $literal; - -if ($l > $ruleLevel) { -$ruleLevel = $l; -} -} -$seen[abs($literal)] = true; -break; -} -} - -$l1retry = true; -} -} -} - -$decision = $this->decisions->atOffset($decisionId); -$rule = $decision[Decisions::DECISION_REASON]; -} - -$why = \count($this->learnedPool) - 1; - -if (null === $learnedLiterals[0]) { -throw new SolverBugException( -"Did not find a learnable literal in analyzed rule $analyzedRule." -); -} - -$newRule = new GenericRule($learnedLiterals, Rule::RULE_LEARNED, $why); - -return [$learnedLiterals[0], $ruleLevel, $newRule, $why]; -} - - - - -private function analyzeUnsolvableRule(Problem $problem, Rule $conflictRule, array &$ruleSeen): void -{ -$why = spl_object_hash($conflictRule); -$ruleSeen[$why] = true; - -if ($conflictRule->getType() === RuleSet::TYPE_LEARNED) { -$learnedWhy = $this->learnedWhy[$why]; -$problemRules = $this->learnedPool[$learnedWhy]; - -foreach ($problemRules as $problemRule) { -if (!isset($ruleSeen[spl_object_hash($problemRule)])) { -$this->analyzeUnsolvableRule($problem, $problemRule, $ruleSeen); -} -} - -return; -} - -if ($conflictRule->getType() === RuleSet::TYPE_PACKAGE) { - -return; -} - -$problem->nextSection(); -$problem->addRule($conflictRule); -} - -private function analyzeUnsolvable(Rule $conflictRule): int -{ -$problem = new Problem(); -$problem->addRule($conflictRule); - -$ruleSeen = []; - -$this->analyzeUnsolvableRule($problem, $conflictRule, $ruleSeen); - -$this->problems[] = $problem; - -$seen = []; -$literals = $conflictRule->getLiterals(); - -foreach ($literals as $literal) { - -if ($this->decisions->satisfy($literal)) { -continue; -} -$seen[abs($literal)] = true; -} - -foreach ($this->decisions as $decision) { -$literal = $decision[Decisions::DECISION_LITERAL]; - - -if (!isset($seen[abs($literal)])) { -continue; -} - -$why = $decision[Decisions::DECISION_REASON]; - -$problem->addRule($why); -$this->analyzeUnsolvableRule($problem, $why, $ruleSeen); - -$literals = $why->getLiterals(); - -foreach ($literals as $literal) { - -if ($this->decisions->satisfy($literal)) { -continue; -} -$seen[abs($literal)] = true; -} -} - -return 0; -} - - - - - - - - -private function enableDisableLearnedRules(): void -{ -foreach ($this->rules->getIteratorFor(RuleSet::TYPE_LEARNED) as $rule) { -$why = $this->learnedWhy[spl_object_hash($rule)]; -$problemRules = $this->learnedPool[$why]; - -$foundDisabled = false; -foreach ($problemRules as $problemRule) { -if ($problemRule->isDisabled()) { -$foundDisabled = true; -break; -} -} - -if ($foundDisabled && $rule->isEnabled()) { -$rule->disable(); -} elseif (!$foundDisabled && $rule->isDisabled()) { -$rule->enable(); -} -} -} - -private function runSat(): void -{ -$this->propagateIndex = 0; - - - - - - - - - - - -$level = 1; -$systemLevel = $level + 1; - -while (true) { -if (1 === $level) { -$conflictRule = $this->propagate($level); -if (null !== $conflictRule) { -if ($this->analyzeUnsolvable($conflictRule)) { -continue; -} - -return; -} -} - - -if ($level < $systemLevel) { -$iterator = $this->rules->getIteratorFor(RuleSet::TYPE_REQUEST); -foreach ($iterator as $rule) { -if ($rule->isEnabled()) { -$decisionQueue = []; -$noneSatisfied = true; - -foreach ($rule->getLiterals() as $literal) { -if ($this->decisions->satisfy($literal)) { -$noneSatisfied = false; -break; -} -if ($literal > 0 && $this->decisions->undecided($literal)) { -$decisionQueue[] = $literal; -} -} - -if ($noneSatisfied && \count($decisionQueue)) { - -$prunedQueue = []; -foreach ($decisionQueue as $literal) { -if (isset($this->fixedMap[abs($literal)])) { -$prunedQueue[] = $literal; -} -} -if (!empty($prunedQueue)) { -$decisionQueue = $prunedQueue; -} -} - -if ($noneSatisfied && \count($decisionQueue)) { -$oLevel = $level; -$level = $this->selectAndInstall($level, $decisionQueue, $rule); - -if (0 === $level) { -return; -} -if ($level <= $oLevel) { -break; -} -} -} -} - -$systemLevel = $level + 1; - - -$iterator->next(); -if ($iterator->valid()) { -continue; -} -} - -if ($level < $systemLevel) { -$systemLevel = $level; -} - -$rulesCount = \count($this->rules); -$pass = 1; - -$this->io->writeError('Looking at all rules.', true, IOInterface::DEBUG); -for ($i = 0, $n = 0; $n < $rulesCount; $i++, $n++) { -if ($i === $rulesCount) { -if (1 === $pass) { -$this->io->writeError("Something's changed, looking at all rules again (pass #$pass)", false, IOInterface::DEBUG); -} else { -$this->io->overwriteError("Something's changed, looking at all rules again (pass #$pass)", false, null, IOInterface::DEBUG); -} - -$i = 0; -$pass++; -} - -$rule = $this->rules->ruleById[$i]; -$literals = $rule->getLiterals(); - -if ($rule->isDisabled()) { -continue; -} - -$decisionQueue = []; - - - - - - - -foreach ($literals as $literal) { -if ($literal <= 0) { -if (!$this->decisions->decidedInstall($literal)) { -continue 2; -} -} else { -if ($this->decisions->decidedInstall($literal)) { -continue 2; -} -if ($this->decisions->undecided($literal)) { -$decisionQueue[] = $literal; -} -} -} - - -if (\count($decisionQueue) < 2) { -continue; -} - -$level = $this->selectAndInstall($level, $decisionQueue, $rule); - -if (0 === $level) { -return; -} - - -$rulesCount = \count($this->rules); -$n = -1; -} - -if ($level < $systemLevel) { -continue; -} - - -if (\count($this->branches)) { -$lastLiteral = null; -$lastLevel = null; -$lastBranchIndex = 0; -$lastBranchOffset = 0; - -for ($i = \count($this->branches) - 1; $i >= 0; $i--) { -[$literals, $l] = $this->branches[$i]; - -foreach ($literals as $offset => $literal) { -if ($literal && $literal > 0 && $this->decisions->decisionLevel($literal) > $l + 1) { -$lastLiteral = $literal; -$lastBranchIndex = $i; -$lastBranchOffset = $offset; -$lastLevel = $l; -} -} -} - -if ($lastLiteral) { -unset($this->branches[$lastBranchIndex][self::BRANCH_LITERALS][$lastBranchOffset]); - -$level = $lastLevel; -$this->revert($level); - -$why = $this->decisions->lastReason(); - -$level = $this->setPropagateLearn($level, $lastLiteral, $why); - -if ($level === 0) { -return; -} - -continue; -} -} - -break; -} -} -} diff --git a/composer/src/Composer/DependencyResolver/SolverBugException.php b/composer/src/Composer/DependencyResolver/SolverBugException.php deleted file mode 100644 index 1badbad30..000000000 --- a/composer/src/Composer/DependencyResolver/SolverBugException.php +++ /dev/null @@ -1,27 +0,0 @@ -problems = $problems; -$this->learnedPool = $learnedPool; - -parent::__construct('Failed resolving dependencies with '.count($problems).' problems, call getPrettyString to get formatted details', self::ERROR_DEPENDENCY_RESOLUTION_FAILED); -} - -public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, bool $isVerbose, bool $isDevExtraction = false): string -{ -$installedMap = $request->getPresentMap(true); -$missingExtensions = []; -$isCausedByLock = false; - -$problems = []; -foreach ($this->problems as $problem) { -$problems[] = $problem->getPrettyString($repositorySet, $request, $pool, $isVerbose, $installedMap, $this->learnedPool)."\n"; - -$missingExtensions = array_merge($missingExtensions, $this->getExtensionProblems($problem->getReasons())); - -$isCausedByLock = $isCausedByLock || $problem->isCausedByLock($repositorySet, $request, $pool); -} - -$i = 1; -$text = "\n"; -foreach (array_unique($problems) as $problem) { -$text .= " Problem ".($i++).$problem; -} - -$hints = []; -if (!$isDevExtraction && (strpos($text, 'could not be found') || strpos($text, 'no matching package found'))) { -$hints[] = "Potential causes:\n - A typo in the package name\n - The package is not available in a stable-enough version according to your minimum-stability setting\n see for more details.\n - It's a private package and you forgot to add a custom repository to find it\n\nRead for further common problems."; -} - -if (!empty($missingExtensions)) { -$hints[] = $this->createExtensionHint($missingExtensions); -} - -if ($isCausedByLock && !$isDevExtraction && !$request->getUpdateAllowTransitiveRootDependencies()) { -$hints[] = "Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions."; -} - -if (strpos($text, 'found composer-plugin-api[2.0.0] but it does not match') && strpos($text, '- ocramius/package-versions')) { -$hints[] = "ocramius/package-versions only provides support for Composer 2 in 1.8+, which requires PHP 7.4.\nIf you can not upgrade PHP you can require composer/package-versions-deprecated to resolve this with PHP 7.0+."; -} - -if (!class_exists('PHPUnit\Framework\TestCase', false)) { -if (strpos($text, 'found composer-plugin-api[2.0.0] but it does not match')) { -$hints[] = "You are using Composer 2, which some of your plugins seem to be incompatible with. Make sure you update your plugins or report a plugin-issue to ask them to support Composer 2."; -} -} - -if ($hints) { -$text .= "\n" . implode("\n\n", $hints); -} - -return $text; -} - - - - -public function getProblems(): array -{ -return $this->problems; -} - - - - -private function createExtensionHint(array $missingExtensions): string -{ -$paths = IniHelper::getAll(); - -if ('' === $paths[0]) { -if (count($paths) === 1) { -return ''; -} - -array_shift($paths); -} - -$ignoreExtensionsArguments = implode(" ", array_map(static function ($extension) { -return "--ignore-platform-req=$extension"; -}, array_unique($missingExtensions))); - -$text = "To enable extensions, verify that they are enabled in your .ini files:\n - "; -$text .= implode("\n - ", $paths); -$text .= "\nYou can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode."; -$text .= "\nAlternatively, you can run Composer with `$ignoreExtensionsArguments` to temporarily ignore these required extensions."; - -return $text; -} - - - - - -private function getExtensionProblems(array $reasonSets): array -{ -$missingExtensions = []; -foreach ($reasonSets as $reasonSet) { -foreach ($reasonSet as $rule) { -$required = $rule->getRequiredPackage(); -if (null !== $required && 0 === strpos($required, 'ext-')) { -$missingExtensions[$required] = 1; -} -} -} - -return array_keys($missingExtensions); -} -} diff --git a/composer/src/Composer/DependencyResolver/Transaction.php b/composer/src/Composer/DependencyResolver/Transaction.php deleted file mode 100644 index 5f6a369be..000000000 --- a/composer/src/Composer/DependencyResolver/Transaction.php +++ /dev/null @@ -1,357 +0,0 @@ -presentPackages = $presentPackages; -$this->setResultPackageMaps($resultPackages); -$this->operations = $this->calculateOperations(); -} - - - - -public function getOperations(): array -{ -return $this->operations; -} - - - - -private function setResultPackageMaps(array $resultPackages): void -{ -$packageSort = static function (PackageInterface $a, PackageInterface $b): int { - -if ($a->getName() === $b->getName()) { -if ($a instanceof AliasPackage !== $b instanceof AliasPackage) { -return $a instanceof AliasPackage ? -1 : 1; -} - -return strcmp($b->getVersion(), $a->getVersion()); -} - -return strcmp($b->getName(), $a->getName()); -}; - -$this->resultPackageMap = []; -foreach ($resultPackages as $package) { -$this->resultPackageMap[spl_object_hash($package)] = $package; -foreach ($package->getNames() as $name) { -$this->resultPackagesByName[$name][] = $package; -} -} - -uasort($this->resultPackageMap, $packageSort); -foreach ($this->resultPackagesByName as $name => $packages) { -uasort($this->resultPackagesByName[$name], $packageSort); -} -} - - - - -protected function calculateOperations(): array -{ -$operations = []; - -$presentPackageMap = []; -$removeMap = []; -$presentAliasMap = []; -$removeAliasMap = []; -foreach ($this->presentPackages as $package) { -if ($package instanceof AliasPackage) { -$presentAliasMap[$package->getName().'::'.$package->getVersion()] = $package; -$removeAliasMap[$package->getName().'::'.$package->getVersion()] = $package; -} else { -$presentPackageMap[$package->getName()] = $package; -$removeMap[$package->getName()] = $package; -} -} - -$stack = $this->getRootPackages(); - -$visited = []; -$processed = []; - -while (!empty($stack)) { -$package = array_pop($stack); - -if (isset($processed[spl_object_hash($package)])) { -continue; -} - -if (!isset($visited[spl_object_hash($package)])) { -$visited[spl_object_hash($package)] = true; - -$stack[] = $package; -if ($package instanceof AliasPackage) { -$stack[] = $package->getAliasOf(); -} else { -foreach ($package->getRequires() as $link) { -$possibleRequires = $this->getProvidersInResult($link); - -foreach ($possibleRequires as $require) { -$stack[] = $require; -} -} -} -} elseif (!isset($processed[spl_object_hash($package)])) { -$processed[spl_object_hash($package)] = true; - -if ($package instanceof AliasPackage) { -$aliasKey = $package->getName().'::'.$package->getVersion(); -if (isset($presentAliasMap[$aliasKey])) { -unset($removeAliasMap[$aliasKey]); -} else { -$operations[] = new Operation\MarkAliasInstalledOperation($package); -} -} else { -if (isset($presentPackageMap[$package->getName()])) { -$source = $presentPackageMap[$package->getName()]; - - - -if ($package->getVersion() !== $presentPackageMap[$package->getName()]->getVersion() || -$package->getDistReference() !== $presentPackageMap[$package->getName()]->getDistReference() || -$package->getSourceReference() !== $presentPackageMap[$package->getName()]->getSourceReference() -) { -$operations[] = new Operation\UpdateOperation($source, $package); -} -unset($removeMap[$package->getName()]); -} else { -$operations[] = new Operation\InstallOperation($package); -unset($removeMap[$package->getName()]); -} -} -} -} - -foreach ($removeMap as $name => $package) { -array_unshift($operations, new Operation\UninstallOperation($package)); -} -foreach ($removeAliasMap as $nameVersion => $package) { -$operations[] = new Operation\MarkAliasUninstalledOperation($package); -} - -$operations = $this->movePluginsToFront($operations); - - -$operations = $this->moveUninstallsToFront($operations); - - - - - - - - - - - - - - - - - - - -return $this->operations = $operations; -} - - - - - - - - - -protected function getRootPackages(): array -{ -$roots = $this->resultPackageMap; - -foreach ($this->resultPackageMap as $packageHash => $package) { -if (!isset($roots[$packageHash])) { -continue; -} - -foreach ($package->getRequires() as $link) { -$possibleRequires = $this->getProvidersInResult($link); - -foreach ($possibleRequires as $require) { -if ($require !== $package) { -unset($roots[spl_object_hash($require)]); -} -} -} -} - -return $roots; -} - - - - -protected function getProvidersInResult(Link $link): array -{ -if (!isset($this->resultPackagesByName[$link->getTarget()])) { -return []; -} - -return $this->resultPackagesByName[$link->getTarget()]; -} - - - - - - - - - - - - - - -private function movePluginsToFront(array $operations): array -{ -$dlModifyingPluginsNoDeps = []; -$dlModifyingPluginsWithDeps = []; -$dlModifyingPluginRequires = []; -$pluginsNoDeps = []; -$pluginsWithDeps = []; -$pluginRequires = []; - -foreach (array_reverse($operations, true) as $idx => $op) { -if ($op instanceof Operation\InstallOperation) { -$package = $op->getPackage(); -} elseif ($op instanceof Operation\UpdateOperation) { -$package = $op->getTargetPackage(); -} else { -continue; -} - -$isDownloadsModifyingPlugin = $package->getType() === 'composer-plugin' && ($extra = $package->getExtra()) && isset($extra['plugin-modifies-downloads']) && $extra['plugin-modifies-downloads'] === true; - - -if ($isDownloadsModifyingPlugin || count(array_intersect($package->getNames(), $dlModifyingPluginRequires))) { - -$requires = array_filter(array_keys($package->getRequires()), static function ($req): bool { -return !PlatformRepository::isPlatformPackage($req); -}); - - -if ($isDownloadsModifyingPlugin && !count($requires)) { - -array_unshift($dlModifyingPluginsNoDeps, $op); -} else { - -$dlModifyingPluginRequires = array_merge($dlModifyingPluginRequires, $requires); - -array_unshift($dlModifyingPluginsWithDeps, $op); -} - -unset($operations[$idx]); -continue; -} - - -$isPlugin = $package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer'; - - -if ($isPlugin || count(array_intersect($package->getNames(), $pluginRequires))) { - -$requires = array_filter(array_keys($package->getRequires()), static function ($req): bool { -return !PlatformRepository::isPlatformPackage($req); -}); - - -if ($isPlugin && !count($requires)) { - -array_unshift($pluginsNoDeps, $op); -} else { - -$pluginRequires = array_merge($pluginRequires, $requires); - -array_unshift($pluginsWithDeps, $op); -} - -unset($operations[$idx]); -} -} - -return array_merge($dlModifyingPluginsNoDeps, $dlModifyingPluginsWithDeps, $pluginsNoDeps, $pluginsWithDeps, $operations); -} - - - - - - - - -private function moveUninstallsToFront(array $operations): array -{ -$uninstOps = []; -foreach ($operations as $idx => $op) { -if ($op instanceof Operation\UninstallOperation || $op instanceof Operation\MarkAliasUninstalledOperation) { -$uninstOps[] = $op; -unset($operations[$idx]); -} -} - -return array_merge($uninstOps, $operations); -} -} diff --git a/composer/src/Composer/Downloader/ArchiveDownloader.php b/composer/src/Composer/Downloader/ArchiveDownloader.php deleted file mode 100644 index 9fdfbe9dc..000000000 --- a/composer/src/Composer/Downloader/ArchiveDownloader.php +++ /dev/null @@ -1,223 +0,0 @@ -cleanupExecuted[$package->getName()]); - -return parent::prepare($type, $package, $path, $prevPackage); -} - -public function cleanup(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface -{ -$this->cleanupExecuted[$package->getName()] = true; - -return parent::cleanup($type, $package, $path, $prevPackage); -} - - - - - - - -public function install(PackageInterface $package, string $path, bool $output = true): PromiseInterface -{ -if ($output) { -$this->io->writeError(" - " . InstallOperation::format($package) . $this->getInstallOperationAppendix($package, $path)); -} - -$vendorDir = $this->config->get('vendor-dir'); - - - - -if (false === strpos($this->filesystem->normalizePath($vendorDir), $this->filesystem->normalizePath($path.DIRECTORY_SEPARATOR))) { -$this->filesystem->emptyDirectory($path); -} - -do { -$temporaryDir = $vendorDir.'/composer/'.substr(md5(uniqid('', true)), 0, 8); -} while (is_dir($temporaryDir)); - -$this->addCleanupPath($package, $temporaryDir); - - -if (!is_dir($path) || realpath($path) !== Platform::getCwd()) { -$this->addCleanupPath($package, $path); -} - -$this->filesystem->ensureDirectoryExists($temporaryDir); -$fileName = $this->getFileName($package, $path); - -$filesystem = $this->filesystem; - -$cleanup = function () use ($path, $filesystem, $temporaryDir, $package) { - -$this->clearLastCacheWrite($package); - - -$filesystem->removeDirectory($temporaryDir); -if (is_dir($path) && realpath($path) !== Platform::getCwd()) { -$filesystem->removeDirectory($path); -} -$this->removeCleanupPath($package, $temporaryDir); -$realpath = realpath($path); -if ($realpath !== false) { -$this->removeCleanupPath($package, $realpath); -} -}; - -try { -$promise = $this->extract($package, $fileName, $temporaryDir); -} catch (\Exception $e) { -$cleanup(); -throw $e; -} - -return $promise->then(function () use ($package, $filesystem, $fileName, $temporaryDir, $path): \React\Promise\PromiseInterface { -if (file_exists($fileName)) { -$filesystem->unlink($fileName); -} - - - - - - - -$getFolderContent = static function ($dir): array { -$finder = Finder::create() -->ignoreVCS(false) -->ignoreDotFiles(false) -->notName('.DS_Store') -->depth(0) -->in($dir); - -return iterator_to_array($finder); -}; -$renameRecursively = null; - - - - - - - - - - - -$renameRecursively = static function ($from, $to) use ($filesystem, $getFolderContent, $package, &$renameRecursively) { -$contentDir = $getFolderContent($from); - - -foreach ($contentDir as $file) { -$file = (string) $file; -if (is_dir($to . '/' . basename($file))) { -if (!is_dir($file)) { -throw new \RuntimeException('Installing '.$package.' would lead to overwriting the '.$to.'/'.basename($file).' directory with a file from the package, invalid operation.'); -} -$renameRecursively($file, $to . '/' . basename($file)); -} else { -$filesystem->rename($file, $to . '/' . basename($file)); -} -} -}; - -$renameAsOne = false; -if (!file_exists($path)) { -$renameAsOne = true; -} elseif ($filesystem->isDirEmpty($path)) { -try { -if ($filesystem->removeDirectoryPhp($path)) { -$renameAsOne = true; -} -} catch (\RuntimeException $e) { - -} -} - -$contentDir = $getFolderContent($temporaryDir); -$singleDirAtTopLevel = 1 === count($contentDir) && is_dir((string) reset($contentDir)); - -if ($renameAsOne) { - -if ($singleDirAtTopLevel) { -$extractedDir = (string) reset($contentDir); -} else { -$extractedDir = $temporaryDir; -} -$filesystem->rename($extractedDir, $path); -} else { - -$from = $temporaryDir; -if ($singleDirAtTopLevel) { -$from = (string) reset($contentDir); -} - -$renameRecursively($from, $path); -} - -$promise = $filesystem->removeDirectoryAsync($temporaryDir); - -return $promise->then(function () use ($package, $path, $temporaryDir) { -$this->removeCleanupPath($package, $temporaryDir); -$this->removeCleanupPath($package, $path); -}); -}, static function ($e) use ($cleanup) { -$cleanup(); - -throw $e; -}); -} - - - - -protected function getInstallOperationAppendix(PackageInterface $package, string $path): string -{ -return ': Extracting archive'; -} - - - - - - - - - -abstract protected function extract(PackageInterface $package, string $file, string $path): PromiseInterface; -} diff --git a/composer/src/Composer/Downloader/ChangeReportInterface.php b/composer/src/Composer/Downloader/ChangeReportInterface.php deleted file mode 100644 index 1541e195e..000000000 --- a/composer/src/Composer/Downloader/ChangeReportInterface.php +++ /dev/null @@ -1,32 +0,0 @@ -io = $io; -$this->preferSource = $preferSource; -$this->filesystem = $filesystem ?: new Filesystem(); -} - - - - - - - -public function setPreferSource(bool $preferSource): self -{ -$this->preferSource = $preferSource; - -return $this; -} - - - - - - - -public function setPreferDist(bool $preferDist): self -{ -$this->preferDist = $preferDist; - -return $this; -} - - - - - - - - -public function setPreferences(array $preferences): self -{ -$this->packagePreferences = $preferences; - -return $this; -} - - - - - - - - -public function setDownloader(string $type, DownloaderInterface $downloader): self -{ -$type = strtolower($type); -$this->downloaders[$type] = $downloader; - -return $this; -} - - - - - - - -public function getDownloader(string $type): DownloaderInterface -{ -$type = strtolower($type); -if (!isset($this->downloaders[$type])) { -throw new \InvalidArgumentException(sprintf('Unknown downloader type: %s. Available types: %s.', $type, implode(', ', array_keys($this->downloaders)))); -} - -return $this->downloaders[$type]; -} - - - - - - - - - -public function getDownloaderForPackage(PackageInterface $package): ?DownloaderInterface -{ -$installationSource = $package->getInstallationSource(); - -if ('metapackage' === $package->getType()) { -return null; -} - -if ('dist' === $installationSource) { -$downloader = $this->getDownloader($package->getDistType()); -} elseif ('source' === $installationSource) { -$downloader = $this->getDownloader($package->getSourceType()); -} else { -throw new \InvalidArgumentException( -'Package '.$package.' does not have an installation source set' -); -} - -if ($installationSource !== $downloader->getInstallationSource()) { -throw new \LogicException(sprintf( -'Downloader "%s" is a %s type downloader and can not be used to download %s for package %s', -get_class($downloader), -$downloader->getInstallationSource(), -$installationSource, -$package -)); -} - -return $downloader; -} - -public function getDownloaderType(DownloaderInterface $downloader): string -{ -return array_search($downloader, $this->downloaders); -} - - - - - - - - - - - -public function download(PackageInterface $package, string $targetDir, ?PackageInterface $prevPackage = null): PromiseInterface -{ -$targetDir = $this->normalizeTargetDir($targetDir); -$this->filesystem->ensureDirectoryExists(dirname($targetDir)); - -$sources = $this->getAvailableSources($package, $prevPackage); - -$io = $this->io; - -$download = function ($retry = false) use (&$sources, $io, $package, $targetDir, &$download, $prevPackage) { -$source = array_shift($sources); -if ($retry) { -$io->writeError(' Now trying to download from ' . $source . ''); -} -$package->setInstallationSource($source); - -$downloader = $this->getDownloaderForPackage($package); -if (!$downloader) { -return \React\Promise\resolve(null); -} - -$handleError = static function ($e) use ($sources, $source, $package, $io, $download) { -if ($e instanceof \RuntimeException && !$e instanceof IrrecoverableDownloadException) { -if (!$sources) { -throw $e; -} - -$io->writeError( -' Failed to download '. -$package->getPrettyName(). -' from ' . $source . ': '. -$e->getMessage().'' -); - -return $download(true); -} - -throw $e; -}; - -try { -$result = $downloader->download($package, $targetDir, $prevPackage); -} catch (\Exception $e) { -return $handleError($e); -} - -$res = $result->then(static function ($res) { -return $res; -}, $handleError); - -return $res; -}; - -return $download(); -} - - - - - - - - - -public function prepare(string $type, PackageInterface $package, string $targetDir, ?PackageInterface $prevPackage = null): PromiseInterface -{ -$targetDir = $this->normalizeTargetDir($targetDir); -$downloader = $this->getDownloaderForPackage($package); -if ($downloader) { -return $downloader->prepare($type, $package, $targetDir, $prevPackage); -} - -return \React\Promise\resolve(null); -} - - - - - - - - - - -public function install(PackageInterface $package, string $targetDir): PromiseInterface -{ -$targetDir = $this->normalizeTargetDir($targetDir); -$downloader = $this->getDownloaderForPackage($package); -if ($downloader) { -return $downloader->install($package, $targetDir); -} - -return \React\Promise\resolve(null); -} - - - - - - - - - - -public function update(PackageInterface $initial, PackageInterface $target, string $targetDir): PromiseInterface -{ -$targetDir = $this->normalizeTargetDir($targetDir); -$downloader = $this->getDownloaderForPackage($target); -$initialDownloader = $this->getDownloaderForPackage($initial); - - -if (!$initialDownloader && !$downloader) { -return \React\Promise\resolve(null); -} - - -if (!$downloader) { -return $initialDownloader->remove($initial, $targetDir); -} - -$initialType = $this->getDownloaderType($initialDownloader); -$targetType = $this->getDownloaderType($downloader); -if ($initialType === $targetType) { -try { -return $downloader->update($initial, $target, $targetDir); -} catch (\RuntimeException $e) { -if (!$this->io->isInteractive()) { -throw $e; -} -$this->io->writeError(' Update failed ('.$e->getMessage().')'); -if (!$this->io->askConfirmation(' Would you like to try reinstalling the package instead [yes]? ')) { -throw $e; -} -} -} - - - -$promise = $initialDownloader->remove($initial, $targetDir); - -return $promise->then(function ($res) use ($target, $targetDir): PromiseInterface { -return $this->install($target, $targetDir); -}); -} - - - - - - - -public function remove(PackageInterface $package, string $targetDir): PromiseInterface -{ -$targetDir = $this->normalizeTargetDir($targetDir); -$downloader = $this->getDownloaderForPackage($package); -if ($downloader) { -return $downloader->remove($package, $targetDir); -} - -return \React\Promise\resolve(null); -} - - - - - - - - - -public function cleanup(string $type, PackageInterface $package, string $targetDir, ?PackageInterface $prevPackage = null): PromiseInterface -{ -$targetDir = $this->normalizeTargetDir($targetDir); -$downloader = $this->getDownloaderForPackage($package); -if ($downloader) { -return $downloader->cleanup($type, $package, $targetDir, $prevPackage); -} - -return \React\Promise\resolve(null); -} - - - - - - -protected function resolvePackageInstallPreference(PackageInterface $package): string -{ -foreach ($this->packagePreferences as $pattern => $preference) { -$pattern = '{^'.str_replace('\\*', '.*', preg_quote($pattern)).'$}i'; -if (Preg::isMatch($pattern, $package->getName())) { -if ('dist' === $preference || (!$package->isDev() && 'auto' === $preference)) { -return 'dist'; -} - -return 'source'; -} -} - -return $package->isDev() ? 'source' : 'dist'; -} - - - - - -private function getAvailableSources(PackageInterface $package, ?PackageInterface $prevPackage = null): array -{ -$sourceType = $package->getSourceType(); -$distType = $package->getDistType(); - - -$sources = []; -if ($sourceType) { -$sources[] = 'source'; -} -if ($distType) { -$sources[] = 'dist'; -} - -if (empty($sources)) { -throw new \InvalidArgumentException('Package '.$package.' must have a source or dist specified'); -} - -if ( -$prevPackage - -&& in_array($prevPackage->getInstallationSource(), $sources, true) - -&& !(!$prevPackage->isDev() && $prevPackage->getInstallationSource() === 'dist' && $package->isDev()) -) { -$prevSource = $prevPackage->getInstallationSource(); -usort($sources, static function ($a, $b) use ($prevSource): int { -return $a === $prevSource ? -1 : 1; -}); - -return $sources; -} - - -if (!$this->preferSource && ($this->preferDist || 'dist' === $this->resolvePackageInstallPreference($package))) { -$sources = array_reverse($sources); -} - -return $sources; -} - - - - - - -private function normalizeTargetDir(string $dir): string -{ -if ($dir === '\\' || $dir === '/') { -return $dir; -} - -return rtrim($dir, '\\/'); -} -} diff --git a/composer/src/Composer/Downloader/DownloaderInterface.php b/composer/src/Composer/Downloader/DownloaderInterface.php deleted file mode 100644 index 5996e4ef8..000000000 --- a/composer/src/Composer/Downloader/DownloaderInterface.php +++ /dev/null @@ -1,93 +0,0 @@ -io = $io; -$this->config = $config; -$this->eventDispatcher = $eventDispatcher; -$this->httpDownloader = $httpDownloader; -$this->cache = $cache; -$this->process = $process ?? new ProcessExecutor($io); -$this->filesystem = $filesystem ?: new Filesystem($this->process); - -if ($this->cache && $this->cache->gcIsNecessary()) { -$this->io->writeError('Running cache garbage collection', true, IOInterface::VERY_VERBOSE); -$this->cache->gc($config->get('cache-files-ttl'), $config->get('cache-files-maxsize')); -} -} - - - - -public function getInstallationSource(): string -{ -return 'dist'; -} - - - - -public function download(PackageInterface $package, string $path, ?PackageInterface $prevPackage = null, bool $output = true): PromiseInterface -{ -if (!$package->getDistUrl()) { -throw new \InvalidArgumentException('The given package is missing url information'); -} - -$cacheKeyGenerator = static function (PackageInterface $package, $key): string { -$cacheKey = sha1($key); - -return $package->getName().'/'.$cacheKey.'.'.$package->getDistType(); -}; - -$retries = 3; -$distUrls = $package->getDistUrls(); - -$urls = []; -foreach ($distUrls as $index => $url) { -$processedUrl = $this->processUrl($package, $url); -$urls[$index] = [ -'base' => $url, -'processed' => $processedUrl, - - - - -'cacheKey' => $cacheKeyGenerator($package, $processedUrl), -]; -} - -$fileName = $this->getFileName($package, $path); -$this->filesystem->ensureDirectoryExists($path); -$this->filesystem->ensureDirectoryExists(dirname($fileName)); - -$io = $this->io; -$cache = $this->cache; -$httpDownloader = $this->httpDownloader; -$eventDispatcher = $this->eventDispatcher; -$filesystem = $this->filesystem; - -$accept = null; -$reject = null; -$download = function () use ($io, $output, $httpDownloader, $cache, $cacheKeyGenerator, $eventDispatcher, $package, $fileName, &$urls, &$accept, &$reject) { -$url = reset($urls); -$index = key($urls); - -if ($eventDispatcher) { -$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $httpDownloader, $url['processed'], 'package', $package); -$eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); -if ($preFileDownloadEvent->getCustomCacheKey() !== null) { -$url['cacheKey'] = $cacheKeyGenerator($package, $preFileDownloadEvent->getCustomCacheKey()); -} elseif ($preFileDownloadEvent->getProcessedUrl() !== $url['processed']) { -$url['cacheKey'] = $cacheKeyGenerator($package, $preFileDownloadEvent->getProcessedUrl()); -} -$url['processed'] = $preFileDownloadEvent->getProcessedUrl(); -} - -$urls[$index] = $url; - -$checksum = $package->getDistSha1Checksum(); -$cacheKey = $url['cacheKey']; - - -if ($cache && (!$checksum || $checksum === $cache->sha1($cacheKey)) && $cache->copyTo($cacheKey, $fileName)) { -if ($output) { -$io->writeError(" - Loading " . $package->getName() . " (" . $package->getFullPrettyVersion() . ") from cache", true, IOInterface::VERY_VERBOSE); -} - - - -if (!$cache->isReadOnly()) { -$this->lastCacheWrites[$package->getName()] = $cacheKey; -} -$result = \React\Promise\resolve($fileName); -} else { -if ($output) { -$io->writeError(" - Downloading " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); -} - -$result = $httpDownloader->addCopy($url['processed'], $fileName, $package->getTransportOptions()) -->then($accept, $reject); -} - -return $result->then(static function ($result) use ($fileName, $checksum, $url, $package, $eventDispatcher): string { - - - -if (null === $result) { -return $fileName; -} - -if (!file_exists($fileName)) { -throw new \UnexpectedValueException($url['base'].' could not be saved to '.$fileName.', make sure the' -.' directory is writable and you have internet connectivity'); -} - -if ($checksum && hash_file('sha1', $fileName) !== $checksum) { -throw new \UnexpectedValueException('The checksum verification of the file failed (downloaded from '.$url['base'].')'); -} - -if ($eventDispatcher) { -$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, $fileName, $checksum, $url['processed'], 'package', $package); -$eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); -} - -return $fileName; -}); -}; - -$accept = function ($response) use ($cache, $package, $fileName, &$urls): string { -$url = reset($urls); -$cacheKey = $url['cacheKey']; -FileDownloader::$downloadMetadata[$package->getName()] = @filesize($fileName) ?: $response->getHeader('Content-Length') ?: '?'; - -if (Platform::getEnv('GITHUB_ACTIONS') !== false && Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING') === false) { -FileDownloader::$responseHeaders[$package->getName()] = $response->getHeaders(); -} - -if ($cache && !$cache->isReadOnly()) { -$this->lastCacheWrites[$package->getName()] = $cacheKey; -$cache->copyFrom($cacheKey, $fileName); -} - -$response->collect(); - -return $fileName; -}; - -$reject = function ($e) use ($io, &$urls, $download, $fileName, $package, &$retries, $filesystem) { - -if (file_exists($fileName)) { -$filesystem->unlink($fileName); -} -$this->clearLastCacheWrite($package); - -if ($e instanceof IrrecoverableDownloadException) { -throw $e; -} - -if ($e instanceof MaxFileSizeExceededException) { -throw $e; -} - -if ($e instanceof TransportException) { - -if ((0 !== $e->getCode() && !in_array($e->getCode(), [500, 502, 503, 504])) || !$retries) { -$retries = 0; -} -} - - -if ($e instanceof TransportException && $e->getStatusCode() === 499) { -$retries = 0; -$urls = []; -} - -if ($retries) { -usleep(500000); -$retries--; - -return $download(); -} - -array_shift($urls); -if ($urls) { -if ($io->isDebug()) { -$io->writeError(' Failed downloading '.$package->getName().': ['.get_class($e).'] '.$e->getCode().': '.$e->getMessage()); -$io->writeError(' Trying the next URL for '.$package->getName()); -} else { -$io->writeError(' Failed downloading '.$package->getName().', trying the next URL ('.$e->getCode().': '.$e->getMessage().')'); -} - -$retries = 3; -usleep(100000); - -return $download(); -} - -throw $e; -}; - -return $download(); -} - - - - -public function prepare(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface -{ -return \React\Promise\resolve(null); -} - - - - -public function cleanup(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface -{ -$fileName = $this->getFileName($package, $path); -if (file_exists($fileName)) { -$this->filesystem->unlink($fileName); -} - -$dirsToCleanUp = [ -$path, -$this->config->get('vendor-dir').'/'.explode('/', $package->getPrettyName())[0], -$this->config->get('vendor-dir').'/composer/', -$this->config->get('vendor-dir'), -]; - -if (isset($this->additionalCleanupPaths[$package->getName()])) { -foreach ($this->additionalCleanupPaths[$package->getName()] as $path) { -$this->filesystem->remove($path); -} -} - -foreach ($dirsToCleanUp as $dir) { -if (is_dir($dir) && $this->filesystem->isDirEmpty($dir) && realpath($dir) !== Platform::getCwd()) { -$this->filesystem->removeDirectoryPhp($dir); -} -} - -return \React\Promise\resolve(null); -} - - - - -public function install(PackageInterface $package, string $path, bool $output = true): PromiseInterface -{ -if ($output) { -$this->io->writeError(" - " . InstallOperation::format($package)); -} - -$this->filesystem->emptyDirectory($path); -$this->filesystem->ensureDirectoryExists($path); -$this->filesystem->rename($this->getFileName($package, $path), $path . '/' . pathinfo(parse_url(strtr((string) $package->getDistUrl(), '\\', '/'), PHP_URL_PATH), PATHINFO_BASENAME)); - -if ($package->getBinaries()) { - - -foreach ($package->getBinaries() as $bin) { -if (file_exists($path . '/' . $bin) && !is_executable($path . '/' . $bin)) { -Silencer::call('chmod', $path . '/' . $bin, 0777 & ~umask()); -} -} -} - -return \React\Promise\resolve(null); -} - -protected function clearLastCacheWrite(PackageInterface $package): void -{ -if ($this->cache && isset($this->lastCacheWrites[$package->getName()])) { -$this->cache->remove($this->lastCacheWrites[$package->getName()]); -unset($this->lastCacheWrites[$package->getName()]); -} -} - -protected function addCleanupPath(PackageInterface $package, string $path): void -{ -$this->additionalCleanupPaths[$package->getName()][] = $path; -} - -protected function removeCleanupPath(PackageInterface $package, string $path): void -{ -if (isset($this->additionalCleanupPaths[$package->getName()])) { -$idx = array_search($path, $this->additionalCleanupPaths[$package->getName()]); -if (false !== $idx) { -unset($this->additionalCleanupPaths[$package->getName()][$idx]); -} -} -} - - - - -public function update(PackageInterface $initial, PackageInterface $target, string $path): PromiseInterface -{ -$this->io->writeError(" - " . UpdateOperation::format($initial, $target) . $this->getInstallOperationAppendix($target, $path)); - -$promise = $this->remove($initial, $path, false); - -return $promise->then(function () use ($target, $path): PromiseInterface { -return $this->install($target, $path, false); -}); -} - - - - -public function remove(PackageInterface $package, string $path, bool $output = true): PromiseInterface -{ -if ($output) { -$this->io->writeError(" - " . UninstallOperation::format($package)); -} -$promise = $this->filesystem->removeDirectoryAsync($path); - -return $promise->then(static function ($result) use ($path): void { -if (!$result) { -throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); -} -}); -} - - - - - - - - -protected function getFileName(PackageInterface $package, string $path): string -{ -return rtrim($this->config->get('vendor-dir').'/composer/tmp-'.md5($package.spl_object_hash($package)).'.'.pathinfo(parse_url(strtr((string) $package->getDistUrl(), '\\', '/'), PHP_URL_PATH), PATHINFO_EXTENSION), '.'); -} - - - - - - - -protected function getInstallOperationAppendix(PackageInterface $package, string $path): string -{ -return ''; -} - - - - - - - - - -protected function processUrl(PackageInterface $package, string $url): string -{ -if (!extension_loaded('openssl') && 0 === strpos($url, 'https:')) { -throw new \RuntimeException('You must enable the openssl extension to download files via https'); -} - -if ($package->getDistReference()) { -$url = UrlUtil::updateDistReference($this->config, $url, $package->getDistReference()); -} - -return $url; -} - - - - - -public function getLocalChanges(PackageInterface $package, string $path): ?string -{ -$prevIO = $this->io; - -$this->io = new NullIO; -$this->io->loadConfiguration($this->config); -$e = null; -$output = ''; - -$targetDir = Filesystem::trimTrailingSlash($path); -try { -if (is_dir($targetDir.'_compare')) { -$this->filesystem->removeDirectory($targetDir.'_compare'); -} - -$this->download($package, $targetDir.'_compare', null, false); -$this->httpDownloader->wait(); -$this->install($package, $targetDir.'_compare', false); -$this->process->wait(); - -$comparer = new Comparer(); -$comparer->setSource($targetDir.'_compare'); -$comparer->setUpdate($targetDir); -$comparer->doCompare(); -$output = $comparer->getChangedAsString(true); -$this->filesystem->removeDirectory($targetDir.'_compare'); -} catch (\Exception $e) { -} - -$this->io = $prevIO; - -if ($e) { -throw $e; -} - -$output = trim($output); - -return strlen($output) > 0 ? $output : null; -} -} diff --git a/composer/src/Composer/Downloader/FilesystemException.php b/composer/src/Composer/Downloader/FilesystemException.php deleted file mode 100644 index 28ab718d5..000000000 --- a/composer/src/Composer/Downloader/FilesystemException.php +++ /dev/null @@ -1,26 +0,0 @@ -config->prohibitUrlByConfig($url, $this->io); - -$url = ProcessExecutor::escape($url); -$ref = ProcessExecutor::escape($package->getSourceReference()); -$repoFile = $path . '.fossil'; -$this->io->writeError("Cloning ".$package->getSourceReference()); -$command = sprintf('fossil clone -- %s %s', $url, ProcessExecutor::escape($repoFile)); -if (0 !== $this->process->execute($command, $ignoredOutput)) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} -$command = sprintf('fossil open --nested -- %s', ProcessExecutor::escape($repoFile)); -if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} -$command = sprintf('fossil update -- %s', $ref); -if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -return \React\Promise\resolve(null); -} - - - - -protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface -{ - -$this->config->prohibitUrlByConfig($url, $this->io); - -$ref = ProcessExecutor::escape($target->getSourceReference()); -$this->io->writeError(" Updating to ".$target->getSourceReference()); - -if (!$this->hasMetadataRepository($path)) { -throw new \RuntimeException('The .fslckout file is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); -} - -$command = sprintf('fossil pull && fossil up %s', $ref); -if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -return \React\Promise\resolve(null); -} - - - - -public function getLocalChanges(PackageInterface $package, string $path): ?string -{ -if (!$this->hasMetadataRepository($path)) { -return null; -} - -$this->process->execute('fossil changes', $output, realpath($path)); - -$output = trim($output); - -return strlen($output) > 0 ? $output : null; -} - - - - -protected function getCommitLogs(string $fromReference, string $toReference, string $path): string -{ -$command = sprintf('fossil timeline -t ci -W 0 -n 0 before %s', ProcessExecutor::escape($toReference)); - -if (0 !== $this->process->execute($command, $output, realpath($path))) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -$log = ''; -$match = '/\d\d:\d\d:\d\d\s+\[' . $toReference . '\]/'; - -foreach ($this->process->splitLines($output) as $line) { -if (Preg::isMatch($match, $line)) { -break; -} -$log .= $line; -} - -return $log; -} - - - - -protected function hasMetadataRepository(string $path): bool -{ -return is_file($path . '/.fslckout') || is_file($path . '/_FOSSIL_'); -} -} diff --git a/composer/src/Composer/Downloader/GitDownloader.php b/composer/src/Composer/Downloader/GitDownloader.php deleted file mode 100644 index 3a6ee1d80..000000000 --- a/composer/src/Composer/Downloader/GitDownloader.php +++ /dev/null @@ -1,620 +0,0 @@ -gitUtil = new GitUtil($this->io, $this->config, $this->process, $this->filesystem); -} - - - - -protected function doDownload(PackageInterface $package, string $path, string $url, ?PackageInterface $prevPackage = null): PromiseInterface -{ - -if (Filesystem::isLocalPath($url)) { -return \React\Promise\resolve(null); -} - -GitUtil::cleanEnv(); - -$cachePath = $this->config->get('cache-vcs-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', $url).'/'; -$gitVersion = GitUtil::getVersion($this->process); - - -if ($gitVersion && version_compare($gitVersion, '2.3.0-rc0', '>=') && Cache::isUsable($cachePath)) { -$this->io->writeError(" - Syncing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ") into cache"); -$this->io->writeError(sprintf(' Cloning to cache at %s', ProcessExecutor::escape($cachePath)), true, IOInterface::DEBUG); -$ref = $package->getSourceReference(); -if ($this->gitUtil->fetchRefOrSyncMirror($url, $cachePath, $ref, $package->getPrettyVersion()) && is_dir($cachePath)) { -$this->cachedPackages[$package->getId()][$ref] = true; -} -} elseif (null === $gitVersion) { -throw new \RuntimeException('git was not found in your PATH, skipping source download'); -} - -return \React\Promise\resolve(null); -} - - - - -protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface -{ -GitUtil::cleanEnv(); -$path = $this->normalizePath($path); -$cachePath = $this->config->get('cache-vcs-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', $url).'/'; -$ref = $package->getSourceReference(); -$flag = Platform::isWindows() ? '/D ' : ''; - -if (!empty($this->cachedPackages[$package->getId()][$ref])) { -$msg = "Cloning ".$this->getShortHash($ref).' from cache'; - -$cloneFlags = '--dissociate --reference %cachePath% '; -$transportOptions = $package->getTransportOptions(); -if (isset($transportOptions['git']['single_use_clone']) && $transportOptions['git']['single_use_clone']) { -$cloneFlags = ''; -} - -$command = -'git clone --no-checkout %cachePath% %path% ' . $cloneFlags -. '&& cd '.$flag.'%path% ' -. '&& git remote set-url origin -- %sanitizedUrl% && git remote add composer -- %sanitizedUrl%'; -} else { -$msg = "Cloning ".$this->getShortHash($ref); -$command = 'git clone --no-checkout -- %url% %path% && cd '.$flag.'%path% && git remote add composer -- %url% && git fetch composer && git remote set-url origin -- %sanitizedUrl% && git remote set-url composer -- %sanitizedUrl%'; -if (Platform::getEnv('COMPOSER_DISABLE_NETWORK')) { -throw new \RuntimeException('The required git reference for '.$package->getName().' is not in cache and network is disabled, aborting'); -} -} - -$this->io->writeError($msg); - -$commandCallable = static function (string $url) use ($path, $command, $cachePath): string { -return str_replace( -['%url%', '%path%', '%cachePath%', '%sanitizedUrl%'], -[ -ProcessExecutor::escape($url), -ProcessExecutor::escape($path), -ProcessExecutor::escape($cachePath), -ProcessExecutor::escape(Preg::replace('{://([^@]+?):(.+?)@}', '://', $url)), -], -$command -); -}; - -$this->gitUtil->runCommand($commandCallable, $url, $path, true); -$sourceUrl = $package->getSourceUrl(); -if ($url !== $sourceUrl && $sourceUrl !== null) { -$this->updateOriginUrl($path, $sourceUrl); -} else { -$this->setPushUrl($path, $url); -} - -if ($newRef = $this->updateToCommit($package, $path, (string) $ref, $package->getPrettyVersion())) { -if ($package->getDistReference() === $package->getSourceReference()) { -$package->setDistReference($newRef); -} -$package->setSourceReference($newRef); -} - -return \React\Promise\resolve(null); -} - - - - -protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface -{ -GitUtil::cleanEnv(); -$path = $this->normalizePath($path); -if (!$this->hasMetadataRepository($path)) { -throw new \RuntimeException('The .git directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); -} - -$cachePath = $this->config->get('cache-vcs-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', $url).'/'; -$ref = $target->getSourceReference(); - -if (!empty($this->cachedPackages[$target->getId()][$ref])) { -$msg = "Checking out ".$this->getShortHash($ref).' from cache'; -$command = '(git rev-parse --quiet --verify %ref% || (git remote set-url composer -- %cachePath% && git fetch composer && git fetch --tags composer)) && git remote set-url composer -- %sanitizedUrl%'; -} else { -$msg = "Checking out ".$this->getShortHash($ref); -$command = '(git remote set-url composer -- %url% && git rev-parse --quiet --verify %ref% || (git fetch composer && git fetch --tags composer)) && git remote set-url composer -- %sanitizedUrl%'; -if (Platform::getEnv('COMPOSER_DISABLE_NETWORK')) { -throw new \RuntimeException('The required git reference for '.$target->getName().' is not in cache and network is disabled, aborting'); -} -} - -$this->io->writeError($msg); - -$commandCallable = static function ($url) use ($ref, $command, $cachePath): string { -return str_replace( -['%url%', '%ref%', '%cachePath%', '%sanitizedUrl%'], -[ -ProcessExecutor::escape($url), -ProcessExecutor::escape($ref.'^{commit}'), -ProcessExecutor::escape($cachePath), -ProcessExecutor::escape(Preg::replace('{://([^@]+?):(.+?)@}', '://', $url)), -], -$command -); -}; - -$this->gitUtil->runCommand($commandCallable, $url, $path); -if ($newRef = $this->updateToCommit($target, $path, (string) $ref, $target->getPrettyVersion())) { -if ($target->getDistReference() === $target->getSourceReference()) { -$target->setDistReference($newRef); -} -$target->setSourceReference($newRef); -} - -$updateOriginUrl = false; -if ( -0 === $this->process->execute('git remote -v', $output, $path) -&& Preg::isMatch('{^origin\s+(?P\S+)}m', $output, $originMatch) -&& Preg::isMatch('{^composer\s+(?P\S+)}m', $output, $composerMatch) -) { -if ($originMatch['url'] === $composerMatch['url'] && $composerMatch['url'] !== $target->getSourceUrl()) { -$updateOriginUrl = true; -} -} -if ($updateOriginUrl && $target->getSourceUrl() !== null) { -$this->updateOriginUrl($path, $target->getSourceUrl()); -} - -return \React\Promise\resolve(null); -} - - - - -public function getLocalChanges(PackageInterface $package, string $path): ?string -{ -GitUtil::cleanEnv(); -if (!$this->hasMetadataRepository($path)) { -return null; -} - -$command = 'git status --porcelain --untracked-files=no'; -if (0 !== $this->process->execute($command, $output, $path)) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -$output = trim($output); - -return strlen($output) > 0 ? $output : null; -} - -public function getUnpushedChanges(PackageInterface $package, string $path): ?string -{ -GitUtil::cleanEnv(); -$path = $this->normalizePath($path); -if (!$this->hasMetadataRepository($path)) { -return null; -} - -$command = 'git show-ref --head -d'; -if (0 !== $this->process->execute($command, $output, $path)) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -$refs = trim($output); -if (!Preg::isMatchStrictGroups('{^([a-f0-9]+) HEAD$}mi', $refs, $match)) { - -return null; -} - -$headRef = $match[1]; -if (!Preg::isMatchAllStrictGroups('{^'.$headRef.' refs/heads/(.+)$}mi', $refs, $matches)) { - -return null; -} - -$candidateBranches = $matches[1]; - -$branch = $candidateBranches[0]; -$unpushedChanges = null; -$branchNotFoundError = false; - - -for ($i = 0; $i <= 1; $i++) { -$remoteBranches = []; - - -foreach ($candidateBranches as $candidate) { -if (Preg::isMatchAllStrictGroups('{^[a-f0-9]+ refs/remotes/((?:[^/]+)/'.preg_quote($candidate).')$}mi', $refs, $matches)) { -foreach ($matches[1] as $match) { -$branch = $candidate; -$remoteBranches[] = $match; -} -break; -} -} - - - - -if (count($remoteBranches) === 0) { -$unpushedChanges = 'Branch ' . $branch . ' could not be found on any remote and appears to be unpushed'; -$branchNotFoundError = true; -} else { - - -if ($branchNotFoundError) { -$unpushedChanges = null; -} -foreach ($remoteBranches as $remoteBranch) { -$command = sprintf('git diff --name-status %s...%s --', $remoteBranch, $branch); -if (0 !== $this->process->execute($command, $output, $path)) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -$output = trim($output); - -if ($unpushedChanges === null || strlen($output) < strlen($unpushedChanges)) { -$unpushedChanges = $output; -} -} -} - - - -if ($unpushedChanges && $i === 0) { -$this->process->execute('git fetch --all', $output, $path); - - -$command = 'git show-ref --head -d'; -if (0 !== $this->process->execute($command, $output, $path)) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} -$refs = trim($output); -} - - -if (!$unpushedChanges) { -break; -} -} - -return $unpushedChanges; -} - - - - -protected function cleanChanges(PackageInterface $package, string $path, bool $update): PromiseInterface -{ -GitUtil::cleanEnv(); -$path = $this->normalizePath($path); - -$unpushed = $this->getUnpushedChanges($package, $path); -if ($unpushed && ($this->io->isInteractive() || $this->config->get('discard-changes') !== true)) { -throw new \RuntimeException('Source directory ' . $path . ' has unpushed changes on the current branch: '."\n".$unpushed); -} - -if (null === ($changes = $this->getLocalChanges($package, $path))) { -return \React\Promise\resolve(null); -} - -if (!$this->io->isInteractive()) { -$discardChanges = $this->config->get('discard-changes'); -if (true === $discardChanges) { -return $this->discardChanges($path); -} -if ('stash' === $discardChanges) { -if (!$update) { -return parent::cleanChanges($package, $path, $update); -} - -return $this->stashChanges($path); -} - -return parent::cleanChanges($package, $path, $update); -} - -$changes = array_map(static function ($elem): string { -return ' '.$elem; -}, Preg::split('{\s*\r?\n\s*}', $changes)); -$this->io->writeError(' '.$package->getPrettyName().' has modified files:'); -$this->io->writeError(array_slice($changes, 0, 10)); -if (count($changes) > 10) { -$this->io->writeError(' ' . (count($changes) - 10) . ' more files modified, choose "v" to view the full list'); -} - -while (true) { -switch ($this->io->ask(' Discard changes [y,n,v,d,'.($update ? 's,' : '').'?]? ', '?')) { -case 'y': -$this->discardChanges($path); -break 2; - -case 's': -if (!$update) { -goto help; -} - -$this->stashChanges($path); -break 2; - -case 'n': -throw new \RuntimeException('Update aborted'); - -case 'v': -$this->io->writeError($changes); -break; - -case 'd': -$this->viewDiff($path); -break; - -case '?': -default: -help : -$this->io->writeError([ -' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), -' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', -' v - view modified files', -' d - view local modifications (diff)', -]); -if ($update) { -$this->io->writeError(' s - stash changes and try to reapply them after the update'); -} -$this->io->writeError(' ? - print help'); -break; -} -} - -return \React\Promise\resolve(null); -} - - - - -protected function reapplyChanges(string $path): void -{ -$path = $this->normalizePath($path); -if (!empty($this->hasStashedChanges[$path])) { -unset($this->hasStashedChanges[$path]); -$this->io->writeError(' Re-applying stashed changes'); -if (0 !== $this->process->execute('git stash pop', $output, $path)) { -throw new \RuntimeException("Failed to apply stashed changes:\n\n".$this->process->getErrorOutput()); -} -} - -unset($this->hasDiscardedChanges[$path]); -} - - - - - - - -protected function updateToCommit(PackageInterface $package, string $path, string $reference, string $prettyVersion): ?string -{ -$force = !empty($this->hasDiscardedChanges[$path]) || !empty($this->hasStashedChanges[$path]) ? '-f ' : ''; - - - - - - -$template = 'git checkout '.$force.'%s -- && git reset --hard %1$s --'; -$branch = Preg::replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $prettyVersion); - -$branches = null; -if (0 === $this->process->execute('git branch -r', $output, $path)) { -$branches = $output; -} - - -$gitRef = $reference; -if (!Preg::isMatch('{^[a-f0-9]{40}$}', $reference) -&& null !== $branches -&& Preg::isMatch('{^\s+composer/'.preg_quote($reference).'$}m', $branches) -) { -$command = sprintf('git checkout '.$force.'-B %s %s -- && git reset --hard %2$s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference)); -if (0 === $this->process->execute($command, $output, $path)) { -return null; -} -} - - -if (Preg::isMatch('{^[a-f0-9]{40}$}', $reference)) { - -if (null !== $branches && !Preg::isMatch('{^\s+composer/'.preg_quote($branch).'$}m', $branches) && Preg::isMatch('{^\s+composer/v'.preg_quote($branch).'$}m', $branches)) { -$branch = 'v' . $branch; -} - -$command = sprintf('git checkout %s --', ProcessExecutor::escape($branch)); -$fallbackCommand = sprintf('git checkout '.$force.'-B %s %s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$branch)); -$resetCommand = sprintf('git reset --hard %s --', ProcessExecutor::escape($reference)); - -if (0 === $this->process->execute("($command || $fallbackCommand) && $resetCommand", $output, $path)) { -return null; -} -} - -$command = sprintf($template, ProcessExecutor::escape($gitRef)); -if (0 === $this->process->execute($command, $output, $path)) { -return null; -} - -$exceptionExtra = ''; - - -if (false !== strpos($this->process->getErrorOutput(), $reference)) { -$this->io->writeError(' '.$reference.' is gone (history was rewritten?)'); -$exceptionExtra = "\nIt looks like the commit hash is not available in the repository, maybe ".($package->isDev() ? 'the commit was removed from the branch' : 'the tag was recreated').'? Run "composer update '.$package->getPrettyName().'" to resolve this.'; -} - -throw new \RuntimeException(Url::sanitize('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput() . $exceptionExtra)); -} - -protected function updateOriginUrl(string $path, string $url): void -{ -$this->process->execute(sprintf('git remote set-url origin -- %s', ProcessExecutor::escape($url)), $output, $path); -$this->setPushUrl($path, $url); -} - -protected function setPushUrl(string $path, string $url): void -{ - -if (Preg::isMatch('{^(?:https?|git)://'.GitUtil::getGitHubDomainsRegex($this->config).'/([^/]+)/([^/]+?)(?:\.git)?$}', $url, $match)) { -$protocols = $this->config->get('github-protocols'); -$pushUrl = 'git@'.$match[1].':'.$match[2].'/'.$match[3].'.git'; -if (!in_array('ssh', $protocols, true)) { -$pushUrl = 'https://' . $match[1] . '/'.$match[2].'/'.$match[3].'.git'; -} -$cmd = sprintf('git remote set-url --push origin -- %s', ProcessExecutor::escape($pushUrl)); -$this->process->execute($cmd, $ignoredOutput, $path); -} -} - - - - -protected function getCommitLogs(string $fromReference, string $toReference, string $path): string -{ -$path = $this->normalizePath($path); -$command = sprintf('git log %s..%s --pretty=format:"%%h - %%an: %%s"'.GitUtil::getNoShowSignatureFlag($this->process), ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); - -if (0 !== $this->process->execute($command, $output, $path)) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -return $output; -} - - - - -protected function discardChanges(string $path): PromiseInterface -{ -$path = $this->normalizePath($path); -if (0 !== $this->process->execute('git clean -df && git reset --hard', $output, $path)) { -throw new \RuntimeException("Could not reset changes\n\n:".$output); -} - -$this->hasDiscardedChanges[$path] = true; - -return \React\Promise\resolve(null); -} - - - - -protected function stashChanges(string $path): PromiseInterface -{ -$path = $this->normalizePath($path); -if (0 !== $this->process->execute('git stash --include-untracked', $output, $path)) { -throw new \RuntimeException("Could not stash changes\n\n:".$output); -} - -$this->hasStashedChanges[$path] = true; - -return \React\Promise\resolve(null); -} - - - - -protected function viewDiff(string $path): void -{ -$path = $this->normalizePath($path); -if (0 !== $this->process->execute('git diff HEAD', $output, $path)) { -throw new \RuntimeException("Could not view diff\n\n:".$output); -} - -$this->io->writeError($output); -} - -protected function normalizePath(string $path): string -{ -if (Platform::isWindows() && strlen($path) > 0) { -$basePath = $path; -$removed = []; - -while (!is_dir($basePath) && $basePath !== '\\') { -array_unshift($removed, basename($basePath)); -$basePath = dirname($basePath); -} - -if ($basePath === '\\') { -return $path; -} - -$path = rtrim(realpath($basePath) . '/' . implode('/', $removed), '/'); -} - -return $path; -} - - - - -protected function hasMetadataRepository(string $path): bool -{ -$path = $this->normalizePath($path); - -return is_dir($path.'/.git'); -} - -protected function getShortHash(string $reference): string -{ -if (!$this->io->isVerbose() && Preg::isMatch('{^[0-9a-f]{40}$}', $reference)) { -return substr($reference, 0, 10); -} - -return $reference; -} -} diff --git a/composer/src/Composer/Downloader/GzipDownloader.php b/composer/src/Composer/Downloader/GzipDownloader.php deleted file mode 100644 index 13851bca4..000000000 --- a/composer/src/Composer/Downloader/GzipDownloader.php +++ /dev/null @@ -1,67 +0,0 @@ -getDistUrl(), '\\', '/'), PHP_URL_PATH), PATHINFO_FILENAME); -$targetFilepath = $path . DIRECTORY_SEPARATOR . $filename; - - -if (!Platform::isWindows()) { -$command = 'gzip -cd -- ' . ProcessExecutor::escape($file) . ' > ' . ProcessExecutor::escape($targetFilepath); - -if (0 === $this->process->execute($command, $ignoredOutput)) { -return \React\Promise\resolve(null); -} - -if (extension_loaded('zlib')) { - -$this->extractUsingExt($file, $targetFilepath); - -return \React\Promise\resolve(null); -} - -$processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); -throw new \RuntimeException($processError); -} - - -$this->extractUsingExt($file, $targetFilepath); - -return \React\Promise\resolve(null); -} - -private function extractUsingExt(string $file, string $targetFilepath): void -{ -$archiveFile = gzopen($file, 'rb'); -$targetFile = fopen($targetFilepath, 'wb'); -while ($string = gzread($archiveFile, 4096)) { -fwrite($targetFile, $string, Platform::strlen($string)); -} -gzclose($archiveFile); -fclose($targetFile); -} -} diff --git a/composer/src/Composer/Downloader/HgDownloader.php b/composer/src/Composer/Downloader/HgDownloader.php deleted file mode 100644 index bd54109a6..000000000 --- a/composer/src/Composer/Downloader/HgDownloader.php +++ /dev/null @@ -1,119 +0,0 @@ -process)) { -throw new \RuntimeException('hg was not found in your PATH, skipping source download'); -} - -return \React\Promise\resolve(null); -} - - - - -protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface -{ -$hgUtils = new HgUtils($this->io, $this->config, $this->process); - -$cloneCommand = static function (string $url) use ($path): string { -return sprintf('hg clone -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($path)); -}; - -$hgUtils->runCommand($cloneCommand, $url, $path); - -$ref = ProcessExecutor::escape($package->getSourceReference()); -$command = sprintf('hg up -- %s', $ref); -if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -return \React\Promise\resolve(null); -} - - - - -protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface -{ -$hgUtils = new HgUtils($this->io, $this->config, $this->process); - -$ref = $target->getSourceReference(); -$this->io->writeError(" Updating to ".$target->getSourceReference()); - -if (!$this->hasMetadataRepository($path)) { -throw new \RuntimeException('The .hg directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); -} - -$command = static function ($url) use ($ref): string { -return sprintf('hg pull -- %s && hg up -- %s', ProcessExecutor::escape($url), ProcessExecutor::escape($ref)); -}; - -$hgUtils->runCommand($command, $url, $path); - -return \React\Promise\resolve(null); -} - - - - -public function getLocalChanges(PackageInterface $package, string $path): ?string -{ -if (!is_dir($path.'/.hg')) { -return null; -} - -$this->process->execute('hg st', $output, realpath($path)); - -$output = trim($output); - -return strlen($output) > 0 ? $output : null; -} - - - - -protected function getCommitLogs(string $fromReference, string $toReference, string $path): string -{ -$command = sprintf('hg log -r %s:%s --style compact', ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); - -if (0 !== $this->process->execute($command, $output, realpath($path))) { -throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); -} - -return $output; -} - - - - -protected function hasMetadataRepository(string $path): bool -{ -return is_dir($path . '/.hg'); -} -} diff --git a/composer/src/Composer/Downloader/MaxFileSizeExceededException.php b/composer/src/Composer/Downloader/MaxFileSizeExceededException.php deleted file mode 100644 index bb5abcc27..000000000 --- a/composer/src/Composer/Downloader/MaxFileSizeExceededException.php +++ /dev/null @@ -1,17 +0,0 @@ -getDistUrl(); -$realUrl = realpath($url); -if (false === $realUrl || !file_exists($realUrl) || !is_dir($realUrl)) { -throw new \RuntimeException(sprintf( -'Source path "%s" is not found for package %s', -$url, -$package->getName() -)); -} - -if (realpath($path) === $realUrl) { -return \React\Promise\resolve(null); -} - -if (strpos(realpath($path) . DIRECTORY_SEPARATOR, $realUrl . DIRECTORY_SEPARATOR) === 0) { - - - - -throw new \RuntimeException(sprintf( -'Package %s cannot install to "%s" inside its source at "%s"', -$package->getName(), -realpath($path), -$realUrl -)); -} - -return \React\Promise\resolve(null); -} - - - - -public function install(PackageInterface $package, string $path, bool $output = true): PromiseInterface -{ -$path = Filesystem::trimTrailingSlash($path); -$url = $package->getDistUrl(); -$realUrl = realpath($url); - -if (realpath($path) === $realUrl) { -if ($output) { -$this->io->writeError(" - " . InstallOperation::format($package) . $this->getInstallOperationAppendix($package, $path)); -} - -return \React\Promise\resolve(null); -} - - -$transportOptions = $package->getTransportOptions() + ['relative' => true]; - -[$currentStrategy, $allowedStrategies] = $this->computeAllowedStrategies($transportOptions); - -$symfonyFilesystem = new SymfonyFilesystem(); -$this->filesystem->removeDirectory($path); - -if ($output) { -$this->io->writeError(" - " . InstallOperation::format($package).': ', false); -} - -$isFallback = false; -if (self::STRATEGY_SYMLINK === $currentStrategy) { -try { -if (Platform::isWindows()) { - -if ($output) { -$this->io->writeError(sprintf('Junctioning from %s', $url), false); -} -$this->filesystem->junction($realUrl, $path); -} else { -$absolutePath = $path; -if (!$this->filesystem->isAbsolutePath($absolutePath)) { -$absolutePath = Platform::getCwd() . DIRECTORY_SEPARATOR . $path; -} -$shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl); -$path = rtrim($path, "/"); -if ($output) { -$this->io->writeError(sprintf('Symlinking from %s', $url), false); -} -if ($transportOptions['relative']) { -$symfonyFilesystem->symlink($shortestPath.'/', $path); -} else { -$symfonyFilesystem->symlink($realUrl.'/', $path); -} -} -} catch (IOException $e) { -if (in_array(self::STRATEGY_MIRROR, $allowedStrategies, true)) { -if ($output) { -$this->io->writeError(''); -$this->io->writeError(' Symlink failed, fallback to use mirroring!'); -} -$currentStrategy = self::STRATEGY_MIRROR; -$isFallback = true; -} else { -throw new \RuntimeException(sprintf('Symlink from "%s" to "%s" failed!', $realUrl, $path)); -} -} -} - - -if (self::STRATEGY_MIRROR === $currentStrategy) { -$realUrl = $this->filesystem->normalizePath($realUrl); - -if ($output) { -$this->io->writeError(sprintf('%sMirroring from %s', $isFallback ? ' ' : '', $url), false); -} -$iterator = new ArchivableFilesFinder($realUrl, []); -$symfonyFilesystem->mirror($realUrl, $path, $iterator); -} - -if ($output) { -$this->io->writeError(''); -} - -return \React\Promise\resolve(null); -} - - - - -public function remove(PackageInterface $package, string $path, bool $output = true): PromiseInterface -{ -$path = Filesystem::trimTrailingSlash($path); - - - - - - - - - -if (Platform::isWindows() && $this->filesystem->isJunction($path)) { -if ($output) { -$this->io->writeError(" - " . UninstallOperation::format($package).", source is still present in $path"); -} -if (!$this->filesystem->removeJunction($path)) { -$this->io->writeError(" Could not remove junction at " . $path . " - is another process locking it?"); -throw new \RuntimeException('Could not reliably remove junction for package ' . $package->getName()); -} - -return \React\Promise\resolve(null); -} - - - - - -$fs = new Filesystem; -$absPath = $fs->isAbsolutePath($path) ? $path : Platform::getCwd() . '/' . $path; -$absDistUrl = $fs->isAbsolutePath($package->getDistUrl()) ? $package->getDistUrl() : Platform::getCwd() . '/' . $package->getDistUrl(); -if ($fs->normalizePath($absPath) === $fs->normalizePath($absDistUrl)) { -if ($output) { -$this->io->writeError(" - " . UninstallOperation::format($package).", source is still present in $path"); -} - -return \React\Promise\resolve(null); -} - -return parent::remove($package, $path, $output); -} - - - - -public function getVcsReference(PackageInterface $package, string $path): ?string -{ -$path = Filesystem::trimTrailingSlash($path); -$parser = new VersionParser; -$guesser = new VersionGuesser($this->config, $this->process, $parser); -$dumper = new ArrayDumper; - -$packageConfig = $dumper->dump($package); -if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { -return $packageVersion['commit']; -} - -return null; -} - - - - -protected function getInstallOperationAppendix(PackageInterface $package, string $path): string -{ -$realUrl = realpath($package->getDistUrl()); - -if (realpath($path) === $realUrl) { -return ': Source already present'; -} - -[$currentStrategy] = $this->computeAllowedStrategies($package->getTransportOptions()); - -if ($currentStrategy === self::STRATEGY_SYMLINK) { -if (Platform::isWindows()) { -return ': Junctioning from '.$package->getDistUrl(); -} - -return ': Symlinking from '.$package->getDistUrl(); -} - -return ': Mirroring from '.$package->getDistUrl(); -} - - - - - - -private function computeAllowedStrategies(array $transportOptions): array -{ - -$currentStrategy = self::STRATEGY_SYMLINK; -$allowedStrategies = [self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR]; - -$mirrorPathRepos = Platform::getEnv('COMPOSER_MIRROR_PATH_REPOS'); -if ($mirrorPathRepos) { -$currentStrategy = self::STRATEGY_MIRROR; -} - -$symlinkOption = $transportOptions['symlink'] ?? null; - -if (true === $symlinkOption) { -$currentStrategy = self::STRATEGY_SYMLINK; -$allowedStrategies = [self::STRATEGY_SYMLINK]; -} elseif (false === $symlinkOption) { -$currentStrategy = self::STRATEGY_MIRROR; -$allowedStrategies = [self::STRATEGY_MIRROR]; -} - - -if (Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !$this->safeJunctions()) { -if (!in_array(self::STRATEGY_MIRROR, $allowedStrategies, true)) { -throw new \RuntimeException('You are on an old Windows / old PHP combo which does not allow Composer to use junctions/symlinks and this path repository has symlink:true in its options so copying is not allowed'); -} -$currentStrategy = self::STRATEGY_MIRROR; -$allowedStrategies = [self::STRATEGY_MIRROR]; -} - - -if (!Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !function_exists('symlink')) { -if (!in_array(self::STRATEGY_MIRROR, $allowedStrategies, true)) { -throw new \RuntimeException('Your PHP has the symlink() function disabled which does not allow Composer to use symlinks and this path repository has symlink:true in its options so copying is not allowed'); -} -$currentStrategy = self::STRATEGY_MIRROR; -$allowedStrategies = [self::STRATEGY_MIRROR]; -} - -return [$currentStrategy, $allowedStrategies]; -} - - - - - - - - - - - - -private function safeJunctions(): bool -{ - -return function_exists('proc_open') && -(PHP_WINDOWS_VERSION_MAJOR > 6 || -(PHP_WINDOWS_VERSION_MAJOR === 6 && PHP_WINDOWS_VERSION_MINOR >= 1)); -} -} diff --git a/composer/src/Composer/Downloader/PerforceDownloader.php b/composer/src/Composer/Downloader/PerforceDownloader.php deleted file mode 100644 index de837d230..000000000 --- a/composer/src/Composer/Downloader/PerforceDownloader.php +++ /dev/null @@ -1,128 +0,0 @@ -getSourceReference(); -$label = $this->getLabelFromSourceReference((string) $ref); - -$this->io->writeError('Cloning ' . $ref); -$this->initPerforce($package, $path, $url); -$this->perforce->setStream($ref); -$this->perforce->p4Login(); -$this->perforce->writeP4ClientSpec(); -$this->perforce->connectClient(); -$this->perforce->syncCodeBase($label); -$this->perforce->cleanupClientSpec(); - -return \React\Promise\resolve(null); -} - -private function getLabelFromSourceReference(string $ref): ?string -{ -$pos = strpos($ref, '@'); -if (false !== $pos) { -return substr($ref, $pos + 1); -} - -return null; -} - -public function initPerforce(PackageInterface $package, string $path, string $url): void -{ -if (!empty($this->perforce)) { -$this->perforce->initializePath($path); - -return; -} - -$repository = $package->getRepository(); -$repoConfig = null; -if ($repository instanceof VcsRepository) { -$repoConfig = $this->getRepoConfig($repository); -} -$this->perforce = Perforce::create($repoConfig, $url, $path, $this->process, $this->io); -} - - - - -private function getRepoConfig(VcsRepository $repository): array -{ -return $repository->getRepoConfig(); -} - - - - -protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface -{ -return $this->doInstall($target, $path, $url); -} - - - - -public function getLocalChanges(PackageInterface $package, string $path): ?string -{ -$this->io->writeError('Perforce driver does not check for local changes before overriding'); - -return null; -} - - - - -protected function getCommitLogs(string $fromReference, string $toReference, string $path): string -{ -return $this->perforce->getCommitLogs($fromReference, $toReference); -} - -public function setPerforce(Perforce $perforce): void -{ -$this->perforce = $perforce; -} - - - - -protected function hasMetadataRepository(string $path): bool -{ -return true; -} -} diff --git a/composer/src/Composer/Downloader/PharDownloader.php b/composer/src/Composer/Downloader/PharDownloader.php deleted file mode 100644 index 04ec74ba6..000000000 --- a/composer/src/Composer/Downloader/PharDownloader.php +++ /dev/null @@ -1,41 +0,0 @@ -extractTo($path, null, true); - - - - - - -return \React\Promise\resolve(null); -} -} diff --git a/composer/src/Composer/Downloader/RarDownloader.php b/composer/src/Composer/Downloader/RarDownloader.php deleted file mode 100644 index 23c17ae94..000000000 --- a/composer/src/Composer/Downloader/RarDownloader.php +++ /dev/null @@ -1,82 +0,0 @@ -/dev/null && chmod -R u+w ' . ProcessExecutor::escape($path); - -if (0 === $this->process->execute($command, $ignoredOutput)) { -return \React\Promise\resolve(null); -} - -$processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); -} - -if (!class_exists('RarArchive')) { - -$iniMessage = IniHelper::getMessage(); - -$error = "Could not decompress the archive, enable the PHP rar extension or install unrar.\n" -. $iniMessage . "\n" . $processError; - -if (!Platform::isWindows()) { -$error = "Could not decompress the archive, enable the PHP rar extension.\n" . $iniMessage; -} - -throw new \RuntimeException($error); -} - -$rarArchive = RarArchive::open($file); - -if (false === $rarArchive) { -throw new \UnexpectedValueException('Could not open RAR archive: ' . $file); -} - -$entries = $rarArchive->getEntries(); - -if (false === $entries) { -throw new \RuntimeException('Could not retrieve RAR archive entries'); -} - -foreach ($entries as $entry) { -if (false === $entry->extract($path)) { -throw new \RuntimeException('Could not extract entry'); -} -} - -$rarArchive->close(); - -return \React\Promise\resolve(null); -} -} diff --git a/composer/src/Composer/Downloader/SvnDownloader.php b/composer/src/Composer/Downloader/SvnDownloader.php deleted file mode 100644 index a97f2a534..000000000 --- a/composer/src/Composer/Downloader/SvnDownloader.php +++ /dev/null @@ -1,249 +0,0 @@ -io, $this->config, $this->process); -if (null === $util->binaryVersion()) { -throw new \RuntimeException('svn was not found in your PATH, skipping source download'); -} - -return \React\Promise\resolve(null); -} - - - - -protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface -{ -SvnUtil::cleanEnv(); -$ref = $package->getSourceReference(); - -$repo = $package->getRepository(); -if ($repo instanceof VcsRepository) { -$repoConfig = $repo->getRepoConfig(); -if (array_key_exists('svn-cache-credentials', $repoConfig)) { -$this->cacheCredentials = (bool) $repoConfig['svn-cache-credentials']; -} -} - -$this->io->writeError(" Checking out ".$package->getSourceReference()); -$this->execute($package, $url, "svn co", sprintf("%s/%s", $url, $ref), null, $path); - -return \React\Promise\resolve(null); -} - - - - -protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface -{ -SvnUtil::cleanEnv(); -$ref = $target->getSourceReference(); - -if (!$this->hasMetadataRepository($path)) { -throw new \RuntimeException('The .svn directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); -} - -$util = new SvnUtil($url, $this->io, $this->config, $this->process); -$flags = ""; -if (version_compare($util->binaryVersion(), '1.7.0', '>=')) { -$flags .= ' --ignore-ancestry'; -} - -$this->io->writeError(" Checking out " . $ref); -$this->execute($target, $url, "svn switch" . $flags, sprintf("%s/%s", $url, $ref), $path); - -return \React\Promise\resolve(null); -} - - - - -public function getLocalChanges(PackageInterface $package, string $path): ?string -{ -if (!$this->hasMetadataRepository($path)) { -return null; -} - -$this->process->execute('svn status --ignore-externals', $output, $path); - -return Preg::isMatch('{^ *[^X ] +}m', $output) ? $output : null; -} - - - - - - - - - - - - -protected function execute(PackageInterface $package, string $baseUrl, string $command, string $url, ?string $cwd = null, ?string $path = null): string -{ -$util = new SvnUtil($baseUrl, $this->io, $this->config, $this->process); -$util->setCacheCredentials($this->cacheCredentials); -try { -return $util->execute($command, $url, $cwd, $path, $this->io->isVerbose()); -} catch (\RuntimeException $e) { -throw new \RuntimeException( -$package->getPrettyName().' could not be downloaded, '.$e->getMessage() -); -} -} - - - - -protected function cleanChanges(PackageInterface $package, string $path, bool $update): PromiseInterface -{ -if (null === ($changes = $this->getLocalChanges($package, $path))) { -return \React\Promise\resolve(null); -} - -if (!$this->io->isInteractive()) { -if (true === $this->config->get('discard-changes')) { -return $this->discardChanges($path); -} - -return parent::cleanChanges($package, $path, $update); -} - -$changes = array_map(static function ($elem): string { -return ' '.$elem; -}, Preg::split('{\s*\r?\n\s*}', $changes)); -$countChanges = count($changes); -$this->io->writeError(sprintf(' '.$package->getPrettyName().' has modified file%s:', $countChanges === 1 ? '' : 's')); -$this->io->writeError(array_slice($changes, 0, 10)); -if ($countChanges > 10) { -$remainingChanges = $countChanges - 10; -$this->io->writeError( -sprintf( -' '.$remainingChanges.' more file%s modified, choose "v" to view the full list', -$remainingChanges === 1 ? '' : 's' -) -); -} - -while (true) { -switch ($this->io->ask(' Discard changes [y,n,v,?]? ', '?')) { -case 'y': -$this->discardChanges($path); -break 2; - -case 'n': -throw new \RuntimeException('Update aborted'); - -case 'v': -$this->io->writeError($changes); -break; - -case '?': -default: -$this->io->writeError([ -' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), -' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', -' v - view modified files', -' ? - print help', -]); -break; -} -} - -return \React\Promise\resolve(null); -} - - - - -protected function getCommitLogs(string $fromReference, string $toReference, string $path): string -{ -if (Preg::isMatch('{@(\d+)$}', $fromReference) && Preg::isMatch('{@(\d+)$}', $toReference)) { - -$command = sprintf('svn info --non-interactive --xml -- %s', ProcessExecutor::escape($path)); -if (0 !== $this->process->execute($command, $output, $path)) { -throw new \RuntimeException( -'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput() -); -} - -$urlPattern = '#(.*)#'; -if (Preg::isMatchStrictGroups($urlPattern, $output, $matches)) { -$baseUrl = $matches[1]; -} else { -throw new \RuntimeException( -'Unable to determine svn url for path '. $path -); -} - - -$fromRevision = Preg::replace('{.*@(\d+)$}', '$1', $fromReference); -$toRevision = Preg::replace('{.*@(\d+)$}', '$1', $toReference); - -$command = sprintf('svn log -r%s:%s --incremental', ProcessExecutor::escape($fromRevision), ProcessExecutor::escape($toRevision)); - -$util = new SvnUtil($baseUrl, $this->io, $this->config, $this->process); -$util->setCacheCredentials($this->cacheCredentials); -try { -return $util->executeLocal($command, $path, null, $this->io->isVerbose()); -} catch (\RuntimeException $e) { -throw new \RuntimeException( -'Failed to execute ' . $command . "\n\n".$e->getMessage() -); -} -} - -return "Could not retrieve changes between $fromReference and $toReference due to missing revision information"; -} - -protected function discardChanges(string $path): PromiseInterface -{ -if (0 !== $this->process->execute('svn revert -R .', $output, $path)) { -throw new \RuntimeException("Could not reset changes\n\n:".$this->process->getErrorOutput()); -} - -return \React\Promise\resolve(null); -} - - - - -protected function hasMetadataRepository(string $path): bool -{ -return is_dir($path.'/.svn'); -} -} diff --git a/composer/src/Composer/Downloader/TarDownloader.php b/composer/src/Composer/Downloader/TarDownloader.php deleted file mode 100644 index 4c59d60d2..000000000 --- a/composer/src/Composer/Downloader/TarDownloader.php +++ /dev/null @@ -1,36 +0,0 @@ -extractTo($path, null, true); - -return \React\Promise\resolve(null); -} -} diff --git a/composer/src/Composer/Downloader/TransportException.php b/composer/src/Composer/Downloader/TransportException.php deleted file mode 100644 index 1c23642f5..000000000 --- a/composer/src/Composer/Downloader/TransportException.php +++ /dev/null @@ -1,89 +0,0 @@ -headers = $headers; -} - - - - -public function getHeaders(): ?array -{ -return $this->headers; -} - -public function setResponse(?string $response): void -{ -$this->response = $response; -} - - - - -public function getResponse(): ?string -{ -return $this->response; -} - - - - -public function setStatusCode($statusCode): void -{ -$this->statusCode = $statusCode; -} - - - - -public function getStatusCode(): ?int -{ -return $this->statusCode; -} - - - - -public function getResponseInfo(): array -{ -return $this->responseInfo; -} - - - - -public function setResponseInfo(array $responseInfo): void -{ -$this->responseInfo = $responseInfo; -} -} diff --git a/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php b/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php deleted file mode 100644 index c4ec22ea1..000000000 --- a/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php +++ /dev/null @@ -1,32 +0,0 @@ -io = $io; -$this->config = $config; -$this->process = $process ?? new ProcessExecutor($io); -$this->filesystem = $fs ?? new Filesystem($this->process); -} - - - - -public function getInstallationSource(): string -{ -return 'source'; -} - - - - -public function download(PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface -{ -if (!$package->getSourceReference()) { -throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); -} - -$urls = $this->prepareUrls($package->getSourceUrls()); - -while ($url = array_shift($urls)) { -try { -return $this->doDownload($package, $path, $url, $prevPackage); -} catch (\Exception $e) { - -if ($e instanceof \PHPUnit\Framework\Exception) { -throw $e; -} -if ($this->io->isDebug()) { -$this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); -} elseif (count($urls)) { -$this->io->writeError(' Failed, trying the next URL'); -} -if (!count($urls)) { -throw $e; -} -} -} - -return \React\Promise\resolve(null); -} - - - - -public function prepare(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface -{ -if ($type === 'update') { -$this->cleanChanges($prevPackage, $path, true); -$this->hasCleanedChanges[$prevPackage->getUniqueName()] = true; -} elseif ($type === 'install') { -$this->filesystem->emptyDirectory($path); -} elseif ($type === 'uninstall') { -$this->cleanChanges($package, $path, false); -} - -return \React\Promise\resolve(null); -} - - - - -public function cleanup(string $type, PackageInterface $package, string $path, ?PackageInterface $prevPackage = null): PromiseInterface -{ -if ($type === 'update' && isset($this->hasCleanedChanges[$prevPackage->getUniqueName()])) { -$this->reapplyChanges($path); -unset($this->hasCleanedChanges[$prevPackage->getUniqueName()]); -} - -return \React\Promise\resolve(null); -} - - - - -public function install(PackageInterface $package, string $path): PromiseInterface -{ -if (!$package->getSourceReference()) { -throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); -} - -$this->io->writeError(" - " . InstallOperation::format($package).': ', false); - -$urls = $this->prepareUrls($package->getSourceUrls()); -while ($url = array_shift($urls)) { -try { -$this->doInstall($package, $path, $url); -break; -} catch (\Exception $e) { - -if ($e instanceof \PHPUnit\Framework\Exception) { -throw $e; -} -if ($this->io->isDebug()) { -$this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); -} elseif (count($urls)) { -$this->io->writeError(' Failed, trying the next URL'); -} -if (!count($urls)) { -throw $e; -} -} -} - -return \React\Promise\resolve(null); -} - - - - -public function update(PackageInterface $initial, PackageInterface $target, string $path): PromiseInterface -{ -if (!$target->getSourceReference()) { -throw new \InvalidArgumentException('Package '.$target->getPrettyName().' is missing reference information'); -} - -$this->io->writeError(" - " . UpdateOperation::format($initial, $target).': ', false); - -$urls = $this->prepareUrls($target->getSourceUrls()); - -$exception = null; -while ($url = array_shift($urls)) { -try { -$this->doUpdate($initial, $target, $path, $url); - -$exception = null; -break; -} catch (\Exception $exception) { - -if ($exception instanceof \PHPUnit\Framework\Exception) { -throw $exception; -} -if ($this->io->isDebug()) { -$this->io->writeError('Failed: ['.get_class($exception).'] '.$exception->getMessage()); -} elseif (count($urls)) { -$this->io->writeError(' Failed, trying the next URL'); -} -} -} - - - -if (!$exception && $this->io->isVerbose() && $this->hasMetadataRepository($path)) { -$message = 'Pulling in changes:'; -$logs = $this->getCommitLogs($initial->getSourceReference(), $target->getSourceReference(), $path); - -if ('' === trim($logs)) { -$message = 'Rolling back changes:'; -$logs = $this->getCommitLogs($target->getSourceReference(), $initial->getSourceReference(), $path); -} - -if ('' !== trim($logs)) { -$logs = implode("\n", array_map(static function ($line): string { -return ' ' . $line; -}, explode("\n", $logs))); - - -$logs = str_replace('<', '\<', $logs); - -$this->io->writeError(' '.$message); -$this->io->writeError($logs); -} -} - -if (!$urls && $exception) { -throw $exception; -} - -return \React\Promise\resolve(null); -} - - - - -public function remove(PackageInterface $package, string $path): PromiseInterface -{ -$this->io->writeError(" - " . UninstallOperation::format($package)); - -$promise = $this->filesystem->removeDirectoryAsync($path); - -return $promise->then(static function (bool $result) use ($path) { -if (!$result) { -throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); -} -}); -} - - - - -public function getVcsReference(PackageInterface $package, string $path): ?string -{ -$parser = new VersionParser; -$guesser = new VersionGuesser($this->config, $this->process, $parser); -$dumper = new ArrayDumper; - -$packageConfig = $dumper->dump($package); -if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { -return $packageVersion['commit']; -} - -return null; -} - - - - - - - - - -protected function cleanChanges(PackageInterface $package, string $path, bool $update): PromiseInterface -{ - -if (null !== $this->getLocalChanges($package, $path)) { -throw new \RuntimeException('Source directory ' . $path . ' has uncommitted changes.'); -} - -return \React\Promise\resolve(null); -} - - - - - - -protected function reapplyChanges(string $path): void -{ -} - - - - - - - - - -abstract protected function doDownload(PackageInterface $package, string $path, string $url, ?PackageInterface $prevPackage = null): PromiseInterface; - - - - - - - - -abstract protected function doInstall(PackageInterface $package, string $path, string $url): PromiseInterface; - - - - - - - - - -abstract protected function doUpdate(PackageInterface $initial, PackageInterface $target, string $path, string $url): PromiseInterface; - - - - - - - - -abstract protected function getCommitLogs(string $fromReference, string $toReference, string $path): string; - - - - - -abstract protected function hasMetadataRepository(string $path): bool; - - - - - - -private function prepareUrls(array $urls): array -{ -foreach ($urls as $index => $url) { -if (Filesystem::isLocalPath($url)) { - - -$fileProtocol = 'file://'; -$isFileProtocol = false; -if (0 === strpos($url, $fileProtocol)) { -$url = substr($url, strlen($fileProtocol)); -$isFileProtocol = true; -} - - -if (false !== strpos($url, '%')) { -$url = rawurldecode($url); -} - -$urls[$index] = realpath($url); - -if ($isFileProtocol) { -$urls[$index] = $fileProtocol . $urls[$index]; -} -} -} - -return $urls; -} -} diff --git a/composer/src/Composer/Downloader/XzDownloader.php b/composer/src/Composer/Downloader/XzDownloader.php deleted file mode 100644 index e042ed6a5..000000000 --- a/composer/src/Composer/Downloader/XzDownloader.php +++ /dev/null @@ -1,39 +0,0 @@ -process->execute($command, $ignoredOutput)) { -return \React\Promise\resolve(null); -} - -$processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); - -throw new \RuntimeException($processError); -} -} diff --git a/composer/src/Composer/Downloader/ZipDownloader.php b/composer/src/Composer/Downloader/ZipDownloader.php deleted file mode 100644 index 4f4f97a8c..000000000 --- a/composer/src/Composer/Downloader/ZipDownloader.php +++ /dev/null @@ -1,272 +0,0 @@ -find('7z', null, ['C:\Program Files\7-Zip']))) { -self::$unzipCommands[] = ['7z', ProcessExecutor::escape($cmd).' x -bb0 -y %s -o%s']; -} -if ($cmd = $finder->find('unzip')) { -self::$unzipCommands[] = ['unzip', ProcessExecutor::escape($cmd).' -qq %s -d %s']; -} -if (!Platform::isWindows() && ($cmd = $finder->find('7z'))) { -self::$unzipCommands[] = ['7z', ProcessExecutor::escape($cmd).' x -bb0 -y %s -o%s']; -} -if (!Platform::isWindows() && ($cmd = $finder->find('7zz'))) { -self::$unzipCommands[] = ['7zz', ProcessExecutor::escape($cmd).' x -bb0 -y %s -o%s']; -} -} - -$procOpenMissing = false; -if (!function_exists('proc_open')) { -self::$unzipCommands = []; -$procOpenMissing = true; -} - -if (null === self::$hasZipArchive) { -self::$hasZipArchive = class_exists('ZipArchive'); -} - -if (!self::$hasZipArchive && !self::$unzipCommands) { - -$iniMessage = IniHelper::getMessage(); -if ($procOpenMissing) { -$error = "The zip extension is missing and unzip/7z commands cannot be called as proc_open is disabled, skipping.\n" . $iniMessage; -} else { -$error = "The zip extension and unzip/7z commands are both missing, skipping.\n" . $iniMessage; -} - -throw new \RuntimeException($error); -} - -if (null === self::$isWindows) { -self::$isWindows = Platform::isWindows(); - -if (!self::$isWindows && !self::$unzipCommands) { -if ($procOpenMissing) { -$this->io->writeError("proc_open is disabled so 'unzip' and '7z' commands cannot be used, zip files are being unpacked using the PHP zip extension."); -$this->io->writeError("This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost."); -$this->io->writeError("Enabling proc_open and installing 'unzip' or '7z' (21.01+) may remediate them."); -} else { -$this->io->writeError("As there is no 'unzip' nor '7z' command installed zip files are being unpacked using the PHP zip extension."); -$this->io->writeError("This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost."); -$this->io->writeError("Installing 'unzip' or '7z' (21.01+) may remediate them."); -} -} -} - -return parent::download($package, $path, $prevPackage, $output); -} - - - - - - - -private function extractWithSystemUnzip(PackageInterface $package, string $file, string $path): PromiseInterface -{ -static $warned7ZipLinux = false; - - -$isLastChance = !self::$hasZipArchive; - -if (!self::$unzipCommands) { - - -return $this->extractWithZipArchive($package, $file, $path); -} - -$commandSpec = reset(self::$unzipCommands); -$command = sprintf($commandSpec[1], ProcessExecutor::escape($file), ProcessExecutor::escape($path)); - - -if (Platform::isWindows()) { -$command = sprintf($commandSpec[1], ProcessExecutor::escape(strtr($file, '/', '\\')), ProcessExecutor::escape(strtr($path, '/', '\\'))); -} - -$executable = $commandSpec[0]; -if (!$warned7ZipLinux && !Platform::isWindows() && in_array($executable, ['7z', '7zz'], true)) { -$warned7ZipLinux = true; -if (0 === $this->process->execute($executable, $output)) { -if (Preg::isMatchStrictGroups('{^\s*7-Zip(?: \[64\])? ([0-9.]+)}', $output, $match) && version_compare($match[1], '21.01', '<')) { -$this->io->writeError(' Unzipping using '.$executable.' '.$match[1].' may result in incorrect file permissions. Install '.$executable.' 21.01+ or unzip to ensure you get correct permissions.'); -} -} -} - -$io = $this->io; -$tryFallback = function (\Throwable $processError) use ($isLastChance, $io, $file, $path, $package, $executable): \React\Promise\PromiseInterface { -if ($isLastChance) { -throw $processError; -} - -if (!is_file($file)) { -$io->writeError(' '.$processError->getMessage().''); -$io->writeError(' This most likely is due to a custom installer plugin not handling the returned Promise from the downloader'); -$io->writeError(' See https://github.com/composer/installers/commit/5006d0c28730ade233a8f42ec31ac68fb1c5c9bb for an example fix'); -} else { -$io->writeError(' '.$processError->getMessage().''); -$io->writeError(' The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)'); -$io->writeError(' Unzip with '.$executable.' command failed, falling back to ZipArchive class'); - - -if (Platform::getEnv('GITHUB_ACTIONS') !== false && Platform::getEnv('COMPOSER_TESTS_ARE_RUNNING') === false) { -$io->writeError(' Additional debug info, please report to https://github.com/composer/composer/issues/11148 if you see this:'); -$io->writeError('File size: '.@filesize($file)); -$io->writeError('File SHA1: '.hash_file('sha1', $file)); -$io->writeError('First 100 bytes (hex): '.bin2hex(substr((string) file_get_contents($file), 0, 100))); -$io->writeError('Last 100 bytes (hex): '.bin2hex(substr((string) file_get_contents($file), -100))); -if (strlen((string) $package->getDistUrl()) > 0) { -$io->writeError('Origin URL: '.$this->processUrl($package, (string) $package->getDistUrl())); -$io->writeError('Response Headers: '.json_encode(FileDownloader::$responseHeaders[$package->getName()] ?? [])); -} -} -} - -return $this->extractWithZipArchive($package, $file, $path); -}; - -try { -$promise = $this->process->executeAsync($command); - -return $promise->then(function (Process $process) use ($tryFallback, $command, $package, $file) { -if (!$process->isSuccessful()) { -if (isset($this->cleanupExecuted[$package->getName()])) { -throw new \RuntimeException('Failed to extract '.$package->getName().' as the installation was aborted by another package operation.'); -} - -$output = $process->getErrorOutput(); -$output = str_replace(', '.$file.'.zip or '.$file.'.ZIP', '', $output); - -return $tryFallback(new \RuntimeException('Failed to extract '.$package->getName().': ('.$process->getExitCode().') '.$command."\n\n".$output)); -} -}); -} catch (\Throwable $e) { -return $tryFallback($e); -} -} - - - - - - - -private function extractWithZipArchive(PackageInterface $package, string $file, string $path): PromiseInterface -{ -$processError = null; -$zipArchive = $this->zipArchiveObject ?: new ZipArchive(); - -try { -if (!file_exists($file) || ($filesize = filesize($file)) === false || $filesize === 0) { -$retval = -1; -} else { -$retval = $zipArchive->open($file); -} -if (true === $retval) { -$extractResult = $zipArchive->extractTo($path); - -if (true === $extractResult) { -$zipArchive->close(); - -return \React\Promise\resolve(null); -} - -$processError = new \RuntimeException(rtrim("There was an error extracting the ZIP file, it is either corrupted or using an invalid format.\n")); -} else { -$processError = new \UnexpectedValueException(rtrim($this->getErrorMessage($retval, $file)."\n"), $retval); -} -} catch (\ErrorException $e) { -$processError = new \RuntimeException('The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems): '.$e->getMessage(), 0, $e); -} catch (\Throwable $e) { -$processError = $e; -} - -throw $processError; -} - - - - - - - -protected function extract(PackageInterface $package, string $file, string $path): PromiseInterface -{ -return $this->extractWithSystemUnzip($package, $file, $path); -} - - - - -protected function getErrorMessage(int $retval, string $file): string -{ -switch ($retval) { -case ZipArchive::ER_EXISTS: -return sprintf("File '%s' already exists.", $file); -case ZipArchive::ER_INCONS: -return sprintf("Zip archive '%s' is inconsistent.", $file); -case ZipArchive::ER_INVAL: -return sprintf("Invalid argument (%s)", $file); -case ZipArchive::ER_MEMORY: -return sprintf("Malloc failure (%s)", $file); -case ZipArchive::ER_NOENT: -return sprintf("No such zip file: '%s'", $file); -case ZipArchive::ER_NOZIP: -return sprintf("'%s' is not a zip archive.", $file); -case ZipArchive::ER_OPEN: -return sprintf("Can't open zip file: %s", $file); -case ZipArchive::ER_READ: -return sprintf("Zip read error (%s)", $file); -case ZipArchive::ER_SEEK: -return sprintf("Zip seek error (%s)", $file); -case -1: -return sprintf("'%s' is a corrupted zip archive (0 bytes), try again.", $file); -default: -return sprintf("'%s' is not a valid zip archive, got error code: %s", $file, $retval); -} -} -} diff --git a/composer/src/Composer/EventDispatcher/Event.php b/composer/src/Composer/EventDispatcher/Event.php deleted file mode 100644 index d38bec108..000000000 --- a/composer/src/Composer/EventDispatcher/Event.php +++ /dev/null @@ -1,103 +0,0 @@ -name = $name; -$this->args = $args; -$this->flags = $flags; -} - - - - - - -public function getName(): string -{ -return $this->name; -} - - - - - - -public function getArguments(): array -{ -return $this->args; -} - - - - - - -public function getFlags(): array -{ -return $this->flags; -} - - - - - - -public function isPropagationStopped(): bool -{ -return $this->propagationStopped; -} - - - - -public function stopPropagation(): void -{ -$this->propagationStopped = true; -} -} diff --git a/composer/src/Composer/EventDispatcher/EventDispatcher.php b/composer/src/Composer/EventDispatcher/EventDispatcher.php deleted file mode 100644 index 2a2fecd79..000000000 --- a/composer/src/Composer/EventDispatcher/EventDispatcher.php +++ /dev/null @@ -1,623 +0,0 @@ -composer = $composer; -$this->io = $io; -$this->process = $process ?? new ProcessExecutor($io); -$this->eventStack = []; -} - - - - - - -public function setRunScripts(bool $runScripts = true): self -{ -$this->runScripts = (bool) $runScripts; - -return $this; -} - - - - - - - - - -public function dispatch(?string $eventName, ?Event $event = null): int -{ -if (null === $event) { -if (null === $eventName) { -throw new \InvalidArgumentException('If no $event is passed in to '.__METHOD__.' you have to pass in an $eventName, got null.'); -} -$event = new Event($eventName); -} - -return $this->doDispatch($event); -} - - - - - - - - - - -public function dispatchScript(string $eventName, bool $devMode = false, array $additionalArgs = [], array $flags = []): int -{ -assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); - -return $this->doDispatch(new Script\Event($eventName, $this->composer, $this->io, $devMode, $additionalArgs, $flags)); -} - - - - - - - - - - - - - -public function dispatchPackageEvent(string $eventName, bool $devMode, RepositoryInterface $localRepo, array $operations, OperationInterface $operation): int -{ -assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); - -return $this->doDispatch(new PackageEvent($eventName, $this->composer, $this->io, $devMode, $localRepo, $operations, $operation)); -} - - - - - - - - - - - - -public function dispatchInstallerEvent(string $eventName, bool $devMode, bool $executeOperations, Transaction $transaction): int -{ -assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); - -return $this->doDispatch(new InstallerEvent($eventName, $this->composer, $this->io, $devMode, $executeOperations, $transaction)); -} - - - - - - - - - -protected function doDispatch(Event $event) -{ -if (Platform::getEnv('COMPOSER_DEBUG_EVENTS')) { -$details = null; -if ($event instanceof PackageEvent) { -$details = (string) $event->getOperation(); -} -$this->io->writeError('Dispatching '.$event->getName().''.($details ? ' ('.$details.')' : '').' event'); -} - -$listeners = $this->getListeners($event); - -$this->pushEvent($event); - -try { -$returnMax = 0; -foreach ($listeners as $callable) { -$return = 0; -$this->ensureBinDirIsInPath(); - -if (!is_string($callable)) { -if (!is_callable($callable)) { -$className = is_object($callable[0]) ? get_class($callable[0]) : $callable[0]; - -throw new \RuntimeException('Subscriber '.$className.'::'.$callable[1].' for event '.$event->getName().' is not callable, make sure the function is defined and public'); -} -if (is_array($callable) && (is_string($callable[0]) || is_object($callable[0])) && is_string($callable[1])) { -$this->io->writeError(sprintf('> %s: %s', $event->getName(), (is_object($callable[0]) ? get_class($callable[0]) : $callable[0]).'->'.$callable[1]), true, IOInterface::VERBOSE); -} -$return = false === $callable($event) ? 1 : 0; -} elseif ($this->isComposerScript($callable)) { -$this->io->writeError(sprintf('> %s: %s', $event->getName(), $callable), true, IOInterface::VERBOSE); - -$script = explode(' ', substr($callable, 1)); -$scriptName = $script[0]; -unset($script[0]); - -$args = array_merge($script, $event->getArguments()); -$flags = $event->getFlags(); -if (isset($flags['script-alias-input'])) { -$argsString = implode(' ', array_map(static function ($arg) { return ProcessExecutor::escape($arg); }, $script)); -$flags['script-alias-input'] = $argsString . ' ' . $flags['script-alias-input']; -unset($argsString); -} -if (strpos($callable, '@composer ') === 0) { -$exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(Platform::getEnv('COMPOSER_BINARY')) . ' ' . implode(' ', $args); -if (0 !== ($exitCode = $this->executeTty($exec))) { -$this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); - -throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); -} -} else { -if (!$this->getListeners(new Event($scriptName))) { -$this->io->writeError(sprintf('You made a reference to a non-existent script %s', $callable), true, IOInterface::QUIET); -} - -try { - -$scriptEvent = new Script\Event($scriptName, $event->getComposer(), $event->getIO(), $event->isDevMode(), $args, $flags); -$scriptEvent->setOriginatingEvent($event); -$return = $this->dispatch($scriptName, $scriptEvent); -} catch (ScriptExecutionException $e) { -$this->io->writeError(sprintf('Script %s was called via %s', $callable, $event->getName()), true, IOInterface::QUIET); -throw $e; -} -} -} elseif ($this->isPhpScript($callable)) { -$className = substr($callable, 0, strpos($callable, '::')); -$methodName = substr($callable, strpos($callable, '::') + 2); - -if (!class_exists($className)) { -$this->io->writeError('Class '.$className.' is not autoloadable, can not call '.$event->getName().' script', true, IOInterface::QUIET); -continue; -} -if (!is_callable($callable)) { -$this->io->writeError('Method '.$callable.' is not callable, can not call '.$event->getName().' script', true, IOInterface::QUIET); -continue; -} - -try { -$return = false === $this->executeEventPhpScript($className, $methodName, $event) ? 1 : 0; -} catch (\Exception $e) { -$message = "Script %s handling the %s event terminated with an exception"; -$this->io->writeError(''.sprintf($message, $callable, $event->getName()).'', true, IOInterface::QUIET); -throw $e; -} -} elseif ($this->isCommandClass($callable)) { -$className = $callable; -if (!class_exists($className)) { -$this->io->writeError('Class '.$className.' is not autoloadable, can not call '.$event->getName().' script', true, IOInterface::QUIET); -continue; -} -if (!is_a($className, Command::class, true)) { -$this->io->writeError('Class '.$className.' does not extend '.Command::class.', can not call '.$event->getName().' script', true, IOInterface::QUIET); -continue; -} -if (defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($event->getName())))) { -$this->io->writeError('You cannot bind '.$event->getName().' to a Command class, use a non-reserved name', true, IOInterface::QUIET); -continue; -} - -$app = new Application(); -$app->setCatchExceptions(false); -$app->setAutoExit(false); -$cmd = new $className($event->getName()); -$app->add($cmd); -$app->setDefaultCommand((string) $cmd->getName(), true); -try { -$args = implode(' ', array_map(static function ($arg) { return ProcessExecutor::escape($arg); }, $event->getArguments())); - - -if ($this->io instanceof ConsoleIO) { -$reflProp = new \ReflectionProperty($this->io, 'output'); -if (PHP_VERSION_ID < 80100) { -$reflProp->setAccessible(true); -} -$output = $reflProp->getValue($this->io); -} else { -$output = new ConsoleOutput(); -} -$return = $app->run(new StringInput($event->getFlags()['script-alias-input'] ?? $args), $output); -} catch (\Exception $e) { -$message = "Script %s handling the %s event terminated with an exception"; -$this->io->writeError(''.sprintf($message, $callable, $event->getName()).'', true, IOInterface::QUIET); -throw $e; -} -} else { -$args = implode(' ', array_map(['Composer\Util\ProcessExecutor', 'escape'], $event->getArguments())); - - -if (strpos($callable, '@putenv ') === 0) { -$exec = $callable; -} else { -$exec = $callable . ($args === '' ? '' : ' '.$args); -} - -if ($this->io->isVerbose()) { -$this->io->writeError(sprintf('> %s: %s', $event->getName(), $exec)); -} elseif ($event->getName() !== '__exec_command') { - -$this->io->writeError(sprintf('> %s', $exec)); -} - -$possibleLocalBinaries = $this->composer->getPackage()->getBinaries(); -if ($possibleLocalBinaries) { -foreach ($possibleLocalBinaries as $localExec) { -if (Preg::isMatch('{\b'.preg_quote($callable).'$}', $localExec)) { -$caller = BinaryInstaller::determineBinaryCaller($localExec); -$exec = Preg::replace('{^'.preg_quote($callable).'}', $caller . ' ' . $localExec, $exec); -break; -} -} -} - -if (strpos($exec, '@putenv ') === 0) { -if (false === strpos($exec, '=')) { -Platform::clearEnv(substr($exec, 8)); -} else { -[$var, $value] = explode('=', substr($exec, 8), 2); -Platform::putEnv($var, $value); -} - -continue; -} -if (strpos($exec, '@php ') === 0) { -$pathAndArgs = substr($exec, 5); -if (Platform::isWindows()) { -$pathAndArgs = Preg::replaceCallback('{^\S+}', static function ($path) { -return str_replace('/', '\\', (string) $path[0]); -}, $pathAndArgs); -} - - -$matched = Preg::isMatchStrictGroups('{^[^\'"\s/\\\\]+}', $pathAndArgs, $match); -if ($matched && !file_exists($match[0])) { -$finder = new ExecutableFinder; -if ($pathToExec = $finder->find($match[0])) { -$pathAndArgs = $pathToExec . substr($pathAndArgs, strlen($match[0])); -} -} -$exec = $this->getPhpExecCommand() . ' ' . $pathAndArgs; -} else { -$finder = new PhpExecutableFinder(); -$phpPath = $finder->find(false); -if ($phpPath) { -Platform::putEnv('PHP_BINARY', $phpPath); -} - -if (Platform::isWindows()) { -$exec = Preg::replaceCallback('{^\S+}', static function ($path) { -assert(is_string($path[0])); - -return str_replace('/', '\\', $path[0]); -}, $exec); -} -} - - - - -if (strpos($exec, 'composer ') === 0) { -$exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(Platform::getEnv('COMPOSER_BINARY')) . substr($exec, 8); -} - -if (0 !== ($exitCode = $this->executeTty($exec))) { -$this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); - -throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); -} -} - -$returnMax = max($returnMax, $return); - -if ($event->isPropagationStopped()) { -break; -} -} -} finally { -$this->popEvent(); -} - -return $returnMax; -} - -protected function executeTty(string $exec): int -{ -if ($this->io->isInteractive()) { -return $this->process->executeTty($exec); -} - -return $this->process->execute($exec); -} - -protected function getPhpExecCommand(): string -{ -$finder = new PhpExecutableFinder(); -$phpPath = $finder->find(false); -if (!$phpPath) { -throw new \RuntimeException('Failed to locate PHP binary to execute '.$phpPath); -} -$phpArgs = $finder->findArguments(); -$phpArgs = $phpArgs ? ' ' . implode(' ', $phpArgs) : ''; -$allowUrlFOpenFlag = ' -d allow_url_fopen=' . ProcessExecutor::escape(ini_get('allow_url_fopen')); -$disableFunctionsFlag = ' -d disable_functions=' . ProcessExecutor::escape(ini_get('disable_functions')); -$memoryLimitFlag = ' -d memory_limit=' . ProcessExecutor::escape(ini_get('memory_limit')); - -return ProcessExecutor::escape($phpPath) . $phpArgs . $allowUrlFOpenFlag . $disableFunctionsFlag . $memoryLimitFlag; -} - - - - - - -protected function executeEventPhpScript(string $className, string $methodName, Event $event) -{ -if ($this->io->isVerbose()) { -$this->io->writeError(sprintf('> %s: %s::%s', $event->getName(), $className, $methodName)); -} else { -$this->io->writeError(sprintf('> %s::%s', $className, $methodName)); -} - -return $className::$methodName($event); -} - - - - - - - - -public function addListener(string $eventName, $listener, int $priority = 0): void -{ -$this->listeners[$eventName][$priority][] = $listener; -} - - - - -public function removeListener($listener): void -{ -foreach ($this->listeners as $eventName => $priorities) { -foreach ($priorities as $priority => $listeners) { -foreach ($listeners as $index => $candidate) { -if ($listener === $candidate || (is_array($candidate) && is_object($listener) && $candidate[0] === $listener)) { -unset($this->listeners[$eventName][$priority][$index]); -} -} -} -} -} - - - - - - -public function addSubscriber(EventSubscriberInterface $subscriber): void -{ -foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { -if (is_string($params)) { -$this->addListener($eventName, [$subscriber, $params]); -} elseif (is_string($params[0])) { -$this->addListener($eventName, [$subscriber, $params[0]], $params[1] ?? 0); -} else { -foreach ($params as $listener) { -$this->addListener($eventName, [$subscriber, $listener[0]], $listener[1] ?? 0); -} -} -} -} - - - - - - -protected function getListeners(Event $event): array -{ -$scriptListeners = $this->runScripts ? $this->getScriptListeners($event) : []; - -if (!isset($this->listeners[$event->getName()][0])) { -$this->listeners[$event->getName()][0] = []; -} -krsort($this->listeners[$event->getName()]); - -$listeners = $this->listeners; -$listeners[$event->getName()][0] = array_merge($listeners[$event->getName()][0], $scriptListeners); - -return array_merge(...$listeners[$event->getName()]); -} - - - - -public function hasEventListeners(Event $event): bool -{ -$listeners = $this->getListeners($event); - -return count($listeners) > 0; -} - - - - - - - -protected function getScriptListeners(Event $event): array -{ -$package = $this->composer->getPackage(); -$scripts = $package->getScripts(); - -if (empty($scripts[$event->getName()])) { -return []; -} - -assert($this->composer instanceof Composer, new \LogicException('This should only be reached with a fully loaded Composer')); - -if ($this->loader) { -$this->loader->unregister(); -} - -$generator = $this->composer->getAutoloadGenerator(); -if ($event instanceof ScriptEvent) { -$generator->setDevMode($event->isDevMode()); -} - -$packages = $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); -$packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $package, $packages); -$map = $generator->parseAutoloads($packageMap, $package); -$this->loader = $generator->createLoader($map, $this->composer->getConfig()->get('vendor-dir')); -$this->loader->register(false); - -return $scripts[$event->getName()]; -} - - - - -protected function isPhpScript(string $callable): bool -{ -return false === strpos($callable, ' ') && false !== strpos($callable, '::'); -} - - - - -protected function isCommandClass(string $callable): bool -{ -return str_contains($callable, '\\') && !str_contains($callable, ' ') && str_ends_with($callable, 'Command'); -} - - - - -protected function isComposerScript(string $callable): bool -{ -return strpos($callable, '@') === 0 && strpos($callable, '@php ') !== 0 && strpos($callable, '@putenv ') !== 0; -} - - - - - - -protected function pushEvent(Event $event): int -{ -$eventName = $event->getName(); -if (in_array($eventName, $this->eventStack)) { -throw new \RuntimeException(sprintf("Circular call to script handler '%s' detected", $eventName)); -} - -return array_push($this->eventStack, $eventName); -} - - - - -protected function popEvent(): ?string -{ -return array_pop($this->eventStack); -} - -private function ensureBinDirIsInPath(): void -{ -$pathEnv = 'PATH'; - - - - -if (!isset($_SERVER[$pathEnv]) && isset($_SERVER['Path'])) { -$pathEnv = 'Path'; -} - - -$binDir = $this->composer->getConfig()->get('bin-dir'); -if (is_dir($binDir)) { -$binDir = realpath($binDir); -$pathValue = (string) Platform::getEnv($pathEnv); -if (!Preg::isMatch('{(^|'.PATH_SEPARATOR.')'.preg_quote($binDir).'($|'.PATH_SEPARATOR.')}', $pathValue)) { -Platform::putEnv($pathEnv, $binDir.PATH_SEPARATOR.$pathValue); -} -} -} -} diff --git a/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php b/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php deleted file mode 100644 index c9ef7684f..000000000 --- a/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php +++ /dev/null @@ -1,48 +0,0 @@ -merge([ -'config' => [ -'home' => $home, -'cache-dir' => self::getCacheDir($home), -'data-dir' => self::getDataDir($home), -], -], Config::SOURCE_DEFAULT); - - -$file = new JsonFile($config->get('home').'/config.json'); -if ($file->exists()) { -if ($io instanceof IOInterface) { -$io->writeError('Loading config file ' . $file->getPath(), true, IOInterface::DEBUG); -} -self::validateJsonSchema($io, $file); -$config->merge($file->read(), $file->getPath()); -} -$config->setConfigSource(new JsonConfigSource($file)); - -$htaccessProtect = $config->get('htaccess-protect'); -if ($htaccessProtect) { - - - -$dirs = [$config->get('home'), $config->get('cache-dir'), $config->get('data-dir')]; -foreach ($dirs as $dir) { -if (!file_exists($dir . '/.htaccess')) { -if (!is_dir($dir)) { -Silencer::call('mkdir', $dir, 0777, true); -} -Silencer::call('file_put_contents', $dir . '/.htaccess', 'Deny from all'); -} -} -} - - -$file = new JsonFile($config->get('home').'/auth.json'); -if ($file->exists()) { -if ($io instanceof IOInterface) { -$io->writeError('Loading config file ' . $file->getPath(), true, IOInterface::DEBUG); -} -self::validateJsonSchema($io, $file, JsonFile::AUTH_SCHEMA); -$config->merge(['config' => $file->read()], $file->getPath()); -} -$config->setAuthConfigSource(new JsonConfigSource($file, true)); - - -if ($composerAuthEnv = Platform::getEnv('COMPOSER_AUTH')) { -$authData = json_decode($composerAuthEnv); -if (null === $authData) { -throw new \UnexpectedValueException('COMPOSER_AUTH environment variable is malformed, should be a valid JSON object'); -} else { -if ($io instanceof IOInterface) { -$io->writeError('Loading auth config from COMPOSER_AUTH', true, IOInterface::DEBUG); -} -self::validateJsonSchema($io, $authData, JsonFile::AUTH_SCHEMA, 'COMPOSER_AUTH'); -$authData = json_decode($composerAuthEnv, true); -if (null !== $authData) { -$config->merge(['config' => $authData], 'COMPOSER_AUTH'); -} -} -} - -return $config; -} - -public static function getComposerFile(): string -{ -return trim((string) Platform::getEnv('COMPOSER')) ?: './composer.json'; -} - -public static function getLockFile(string $composerFile): string -{ -return "json" === pathinfo($composerFile, PATHINFO_EXTENSION) -? substr($composerFile, 0, -4).'lock' -: $composerFile . '.lock'; -} - - - - -public static function createAdditionalStyles(): array -{ -return [ -'highlight' => new OutputFormatterStyle('red'), -'warning' => new OutputFormatterStyle('black', 'yellow'), -]; -} - -public static function createOutput(): ConsoleOutput -{ -$styles = self::createAdditionalStyles(); -$formatter = new OutputFormatter(false, $styles); - -return new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, null, $formatter); -} - - - - - - - - - - - - - - - -public function createComposer(IOInterface $io, $localConfig = null, $disablePlugins = false, ?string $cwd = null, bool $fullLoad = true, bool $disableScripts = false) -{ - -if (is_string($localConfig) && is_file($localConfig) && null === $cwd) { -$cwd = dirname($localConfig); -} - -$cwd = $cwd ?? Platform::getCwd(true); - - -if (null === $localConfig) { -$localConfig = static::getComposerFile(); -} - -$localConfigSource = Config::SOURCE_UNKNOWN; -if (is_string($localConfig)) { -$composerFile = $localConfig; - -$file = new JsonFile($localConfig, null, $io); - -if (!$file->exists()) { -if ($localConfig === './composer.json' || $localConfig === 'composer.json') { -$message = 'Composer could not find a composer.json file in '.$cwd; -} else { -$message = 'Composer could not find the config file: '.$localConfig; -} -$instructions = $fullLoad ? 'To initialize a project, please create a composer.json file. See https://getcomposer.org/basic-usage' : ''; -throw new \InvalidArgumentException($message.PHP_EOL.$instructions); -} - -if (!Platform::isInputCompletionProcess()) { -try { -$file->validateSchema(JsonFile::LAX_SCHEMA); -} catch (JsonValidationException $e) { -$errors = ' - ' . implode(PHP_EOL . ' - ', $e->getErrors()); -$message = $e->getMessage() . ':' . PHP_EOL . $errors; -throw new JsonValidationException($message); -} -} - -$localConfig = $file->read(); -$localConfigSource = $file->getPath(); -} - - -$config = static::createConfig($io, $cwd); -$config->merge($localConfig, $localConfigSource); -if (isset($composerFile)) { -$io->writeError('Loading config file ' . $composerFile .' ('.realpath($composerFile).')', true, IOInterface::DEBUG); -$config->setConfigSource(new JsonConfigSource(new JsonFile(realpath($composerFile), null, $io))); - -$localAuthFile = new JsonFile(dirname(realpath($composerFile)) . '/auth.json', null, $io); -if ($localAuthFile->exists()) { -$io->writeError('Loading config file ' . $localAuthFile->getPath(), true, IOInterface::DEBUG); -self::validateJsonSchema($io, $localAuthFile, JsonFile::AUTH_SCHEMA); -$config->merge(['config' => $localAuthFile->read()], $localAuthFile->getPath()); -$config->setLocalAuthConfigSource(new JsonConfigSource($localAuthFile, true)); -} -} - -$vendorDir = $config->get('vendor-dir'); - - -$composer = $fullLoad ? new Composer() : new PartialComposer(); -$composer->setConfig($config); - -if ($fullLoad) { - -$io->loadConfiguration($config); - - -if (!class_exists('Composer\InstalledVersions', false) && file_exists($installedVersionsPath = $config->get('vendor-dir').'/composer/InstalledVersions.php')) { -include $installedVersionsPath; -} -} - -$httpDownloader = self::createHttpDownloader($io, $config); -$process = new ProcessExecutor($io); -$loop = new Loop($httpDownloader, $process); -$composer->setLoop($loop); - - -$dispatcher = new EventDispatcher($composer, $io, $process); -$dispatcher->setRunScripts(!$disableScripts); -$composer->setEventDispatcher($dispatcher); - - -$rm = RepositoryFactory::manager($io, $config, $httpDownloader, $dispatcher, $process); -$composer->setRepositoryManager($rm); - - - -if (!$fullLoad && !isset($localConfig['version'])) { -$localConfig['version'] = '1.0.0'; -} - - -$parser = new VersionParser; -$guesser = new VersionGuesser($config, $process, $parser); -$loader = $this->loadRootPackage($rm, $config, $parser, $guesser, $io); -$package = $loader->load($localConfig, 'Composer\Package\RootPackage', $cwd); -$composer->setPackage($package); - - -$this->addLocalRepository($io, $rm, $vendorDir, $package, $process); - - -$im = $this->createInstallationManager($loop, $io, $dispatcher); -$composer->setInstallationManager($im); - -if ($composer instanceof Composer) { - -$dm = $this->createDownloadManager($io, $config, $httpDownloader, $process, $dispatcher); -$composer->setDownloadManager($dm); - - -$generator = new AutoloadGenerator($dispatcher, $io); -$composer->setAutoloadGenerator($generator); - - -$am = $this->createArchiveManager($config, $dm, $loop); -$composer->setArchiveManager($am); -} - - -$this->createDefaultInstallers($im, $composer, $io, $process); - - -if ($composer instanceof Composer && isset($composerFile)) { -$lockFile = self::getLockFile($composerFile); -if (!$config->get('lock') && file_exists($lockFile)) { -$io->writeError(''.$lockFile.' is present but ignored as the "lock" config option is disabled.'); -} - -$locker = new Package\Locker($io, new JsonFile($config->get('lock') ? $lockFile : Platform::getDevNull(), null, $io), $im, file_get_contents($composerFile), $process); -$composer->setLocker($locker); -} elseif ($composer instanceof Composer) { -$locker = new Package\Locker($io, new JsonFile(Platform::getDevNull(), null, $io), $im, JsonFile::encode($localConfig), $process); -$composer->setLocker($locker); -} - -if ($composer instanceof Composer) { -$globalComposer = null; -if (realpath($config->get('home')) !== $cwd) { -$globalComposer = $this->createGlobalComposer($io, $config, $disablePlugins, $disableScripts); -} - -$pm = $this->createPluginManager($io, $composer, $globalComposer, $disablePlugins); -$composer->setPluginManager($pm); - -if (realpath($config->get('home')) === $cwd) { -$pm->setRunningInGlobalDir(true); -} - -$pm->loadInstalledPlugins(); -} - -if ($fullLoad) { -$initEvent = new Event(PluginEvents::INIT); -$composer->getEventDispatcher()->dispatch($initEvent->getName(), $initEvent); - - - -$this->purgePackages($rm->getLocalRepository(), $im); -} - -return $composer; -} - - - - - -public static function createGlobal(IOInterface $io, bool $disablePlugins = false, bool $disableScripts = false): ?Composer -{ -$factory = new static(); - -return $factory->createGlobalComposer($io, static::createConfig($io), $disablePlugins, $disableScripts, true); -} - - - - -protected function addLocalRepository(IOInterface $io, RepositoryManager $rm, string $vendorDir, RootPackageInterface $rootPackage, ?ProcessExecutor $process = null): void -{ -$fs = null; -if ($process) { -$fs = new Filesystem($process); -} - -$rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir.'/composer/installed.json', null, $io), true, $rootPackage, $fs)); -} - - - - - - -protected function createGlobalComposer(IOInterface $io, Config $config, $disablePlugins, bool $disableScripts, bool $fullLoad = false): ?PartialComposer -{ - -$disablePlugins = $disablePlugins === 'global' || $disablePlugins === true; - -$composer = null; -try { -$composer = $this->createComposer($io, $config->get('home') . '/composer.json', $disablePlugins, $config->get('home'), $fullLoad, $disableScripts); -} catch (\Exception $e) { -$io->writeError('Failed to initialize global composer: '.$e->getMessage(), true, IOInterface::DEBUG); -} - -return $composer; -} - - - - - -public function createDownloadManager(IOInterface $io, Config $config, HttpDownloader $httpDownloader, ProcessExecutor $process, ?EventDispatcher $eventDispatcher = null): Downloader\DownloadManager -{ -$cache = null; -if ($config->get('cache-files-ttl') > 0) { -$cache = new Cache($io, $config->get('cache-files-dir'), 'a-z0-9_./'); -$cache->setReadOnly($config->get('cache-read-only')); -} - -$fs = new Filesystem($process); - -$dm = new Downloader\DownloadManager($io, false, $fs); -switch ($preferred = $config->get('preferred-install')) { -case 'dist': -$dm->setPreferDist(true); -break; -case 'source': -$dm->setPreferSource(true); -break; -case 'auto': -default: - -break; -} - -if (is_array($preferred)) { -$dm->setPreferences($preferred); -} - -$dm->setDownloader('git', new Downloader\GitDownloader($io, $config, $process, $fs)); -$dm->setDownloader('svn', new Downloader\SvnDownloader($io, $config, $process, $fs)); -$dm->setDownloader('fossil', new Downloader\FossilDownloader($io, $config, $process, $fs)); -$dm->setDownloader('hg', new Downloader\HgDownloader($io, $config, $process, $fs)); -$dm->setDownloader('perforce', new Downloader\PerforceDownloader($io, $config, $process, $fs)); -$dm->setDownloader('zip', new Downloader\ZipDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); -$dm->setDownloader('rar', new Downloader\RarDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); -$dm->setDownloader('tar', new Downloader\TarDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); -$dm->setDownloader('gzip', new Downloader\GzipDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); -$dm->setDownloader('xz', new Downloader\XzDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); -$dm->setDownloader('phar', new Downloader\PharDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); -$dm->setDownloader('file', new Downloader\FileDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); -$dm->setDownloader('path', new Downloader\PathDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); - -return $dm; -} - - - - - - -public function createArchiveManager(Config $config, Downloader\DownloadManager $dm, Loop $loop) -{ -$am = new Archiver\ArchiveManager($dm, $loop); -if (class_exists(ZipArchive::class)) { -$am->addArchiver(new Archiver\ZipArchiver); -} -if (class_exists(Phar::class)) { -$am->addArchiver(new Archiver\PharArchiver); -} - -return $am; -} - - - - -protected function createPluginManager(IOInterface $io, Composer $composer, ?PartialComposer $globalComposer = null, $disablePlugins = false): Plugin\PluginManager -{ -return new Plugin\PluginManager($io, $composer, $globalComposer, $disablePlugins); -} - -public function createInstallationManager(Loop $loop, IOInterface $io, ?EventDispatcher $eventDispatcher = null): Installer\InstallationManager -{ -return new Installer\InstallationManager($loop, $io, $eventDispatcher); -} - -protected function createDefaultInstallers(Installer\InstallationManager $im, PartialComposer $composer, IOInterface $io, ?ProcessExecutor $process = null): void -{ -$fs = new Filesystem($process); -$binaryInstaller = new Installer\BinaryInstaller($io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $fs, rtrim($composer->getConfig()->get('vendor-dir'), '/')); - -$im->addInstaller(new Installer\LibraryInstaller($io, $composer, null, $fs, $binaryInstaller)); -$im->addInstaller(new Installer\PluginInstaller($io, $composer, $fs, $binaryInstaller)); -$im->addInstaller(new Installer\MetapackageInstaller($io)); -} - - - - - -protected function purgePackages(InstalledRepositoryInterface $repo, Installer\InstallationManager $im): void -{ -foreach ($repo->getPackages() as $package) { -if (!$im->isPackageInstalled($repo, $package)) { -$repo->removePackage($package); -} -} -} - -protected function loadRootPackage(RepositoryManager $rm, Config $config, VersionParser $parser, VersionGuesser $guesser, IOInterface $io): Package\Loader\RootPackageLoader -{ -return new Package\Loader\RootPackageLoader($rm, $config, $parser, $guesser, $io); -} - - - - - - - - -public static function create(IOInterface $io, $config = null, $disablePlugins = false, bool $disableScripts = false): Composer -{ -$factory = new static(); - - - - - -if ($config !== null && $config !== self::getComposerFile() && $disablePlugins === false) { -$disablePlugins = 'local'; -} - -return $factory->createComposer($io, $config, $disablePlugins, null, true, $disableScripts); -} - - - - - - - - -public static function createHttpDownloader(IOInterface $io, Config $config, array $options = []): HttpDownloader -{ -static $warned = false; -$disableTls = false; - -if (isset($_SERVER['argv']) && in_array('disable-tls', $_SERVER['argv']) && (in_array('conf', $_SERVER['argv']) || in_array('config', $_SERVER['argv']))) { -$warned = true; -$disableTls = !extension_loaded('openssl'); -} elseif ($config->get('disable-tls') === true) { -if (!$warned) { -$io->writeError('You are running Composer with SSL/TLS protection disabled.'); -} -$warned = true; -$disableTls = true; -} elseif (!extension_loaded('openssl')) { -throw new Exception\NoSslException('The openssl extension is required for SSL/TLS protection but is not available. ' -. 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); -} -$httpDownloaderOptions = []; -if ($disableTls === false) { -if ('' !== $config->get('cafile')) { -$httpDownloaderOptions['ssl']['cafile'] = $config->get('cafile'); -} -if ('' !== $config->get('capath')) { -$httpDownloaderOptions['ssl']['capath'] = $config->get('capath'); -} -$httpDownloaderOptions = array_replace_recursive($httpDownloaderOptions, $options); -} -try { -$httpDownloader = new HttpDownloader($io, $config, $httpDownloaderOptions, $disableTls); -} catch (TransportException $e) { -if (false !== strpos($e->getMessage(), 'cafile')) { -$io->write('Unable to locate a valid CA certificate file. You must set a valid \'cafile\' option.'); -$io->write('A valid CA certificate file is required for SSL/TLS protection.'); -$io->write('You can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); -} -throw $e; -} - -return $httpDownloader; -} - -private static function useXdg(): bool -{ -foreach (array_keys($_SERVER) as $key) { -if (strpos($key, 'XDG_') === 0) { -return true; -} -} - -if (Silencer::call('is_dir', '/etc/xdg')) { -return true; -} - -return false; -} - - - - -private static function getUserDir(): string -{ -$home = Platform::getEnv('HOME'); -if (!$home) { -throw new \RuntimeException('The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly'); -} - -return rtrim(strtr($home, '\\', '/'), '/'); -} - - - - - -private static function validateJsonSchema(?IOInterface $io, $fileOrData, int $schema = JsonFile::LAX_SCHEMA, ?string $source = null): void -{ -if (Platform::isInputCompletionProcess()) { -return; -} - -try { -if ($fileOrData instanceof JsonFile) { -$fileOrData->validateSchema($schema); -} else { -if (null === $source) { -throw new \InvalidArgumentException('$source is required to be provided if $fileOrData is arbitrary data'); -} -JsonFile::validateJsonSchema($source, $fileOrData, $schema); -} -} catch (JsonValidationException $e) { -$msg = $e->getMessage().', this may result in errors and should be resolved:'.PHP_EOL.' - '.implode(PHP_EOL.' - ', $e->getErrors()); -if ($io instanceof IOInterface) { -$io->writeError(''.$msg.''); -} else { -throw new UnexpectedValueException($msg); -} -} -} -} diff --git a/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php b/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php deleted file mode 100644 index 2932f9a54..000000000 --- a/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php +++ /dev/null @@ -1,23 +0,0 @@ -ignoreRegex = BasePackage::packageNamesToRegexp($ignoreAll); -$this->ignoreUpperBoundRegex = BasePackage::packageNamesToRegexp($ignoreUpperBound); -} - -public function isIgnored(string $req): bool -{ -if (!PlatformRepository::isPlatformPackage($req)) { -return false; -} - -return Preg::isMatch($this->ignoreRegex, $req); -} - - - - -public function filterConstraint(string $req, ConstraintInterface $constraint, bool $allowUpperBoundOverride = true): ConstraintInterface -{ -if (!PlatformRepository::isPlatformPackage($req)) { -return $constraint; -} - -if (!$allowUpperBoundOverride || !Preg::isMatch($this->ignoreUpperBoundRegex, $req)) { -return $constraint; -} - -if (Preg::isMatch($this->ignoreRegex, $req)) { -return new MatchAllConstraint; -} - -$intervals = Intervals::get($constraint); -$last = end($intervals['numeric']); -if ($last !== false && (string) $last->getEnd() !== (string) Interval::untilPositiveInfinity()) { -$constraint = new MultiConstraint([$constraint, new Constraint('>=', $last->getEnd()->getVersion())], false); -} - -return $constraint; -} -} diff --git a/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php b/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php deleted file mode 100644 index d003713e5..000000000 --- a/composer/src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php +++ /dev/null @@ -1,24 +0,0 @@ -authentications; -} - - - - -public function resetAuthentications() -{ -$this->authentications = []; -} - - - - -public function hasAuthentication($repositoryName) -{ -return isset($this->authentications[$repositoryName]); -} - - - - -public function getAuthentication($repositoryName) -{ -if (isset($this->authentications[$repositoryName])) { -return $this->authentications[$repositoryName]; -} - -return ['username' => null, 'password' => null]; -} - - - - -public function setAuthentication($repositoryName, $username, $password = null) -{ -$this->authentications[$repositoryName] = ['username' => $username, 'password' => $password]; -} - - - - -public function writeRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) -{ -$this->write($messages, $newline, $verbosity); -} - - - - -public function writeErrorRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) -{ -$this->writeError($messages, $newline, $verbosity); -} - - - - - - - - - - -protected function checkAndSetAuthentication(string $repositoryName, string $username, ?string $password = null) -{ -if ($this->hasAuthentication($repositoryName)) { -$auth = $this->getAuthentication($repositoryName); -if ($auth['username'] === $username && $auth['password'] === $password) { -return; -} - -$this->writeError( -sprintf( -"Warning: You should avoid overwriting already defined auth settings for %s.", -$repositoryName -) -); -} -$this->setAuthentication($repositoryName, $username, $password); -} - - - - -public function loadConfiguration(Config $config) -{ -$bitbucketOauth = $config->get('bitbucket-oauth'); -$githubOauth = $config->get('github-oauth'); -$gitlabOauth = $config->get('gitlab-oauth'); -$gitlabToken = $config->get('gitlab-token'); -$httpBasic = $config->get('http-basic'); -$bearerToken = $config->get('bearer'); - - - -foreach ($bitbucketOauth as $domain => $cred) { -$this->checkAndSetAuthentication($domain, $cred['consumer-key'], $cred['consumer-secret']); -} - -foreach ($githubOauth as $domain => $token) { -if ($domain !== 'github.com' && !in_array($domain, $config->get('github-domains'), true)) { -$this->debug($domain.' is not in the configured github-domains, adding it implicitly as authentication is configured for this domain'); -$config->merge(['config' => ['github-domains' => array_merge($config->get('github-domains'), [$domain])]], 'implicit-due-to-auth'); -} - - - -if (!Preg::isMatch('{^[.A-Za-z0-9_]+$}', $token)) { -throw new \UnexpectedValueException('Your github oauth token for '.$domain.' contains invalid characters: "'.$token.'"'); -} -$this->checkAndSetAuthentication($domain, $token, 'x-oauth-basic'); -} - -foreach ($gitlabOauth as $domain => $token) { -if ($domain !== 'gitlab.com' && !in_array($domain, $config->get('gitlab-domains'), true)) { -$this->debug($domain.' is not in the configured gitlab-domains, adding it implicitly as authentication is configured for this domain'); -$config->merge(['config' => ['gitlab-domains' => array_merge($config->get('gitlab-domains'), [$domain])]], 'implicit-due-to-auth'); -} - -$token = is_array($token) ? $token["token"] : $token; -$this->checkAndSetAuthentication($domain, $token, 'oauth2'); -} - -foreach ($gitlabToken as $domain => $token) { -if ($domain !== 'gitlab.com' && !in_array($domain, $config->get('gitlab-domains'), true)) { -$this->debug($domain.' is not in the configured gitlab-domains, adding it implicitly as authentication is configured for this domain'); -$config->merge(['config' => ['gitlab-domains' => array_merge($config->get('gitlab-domains'), [$domain])]], 'implicit-due-to-auth'); -} - -$username = is_array($token) ? $token["username"] : $token; -$password = is_array($token) ? $token["token"] : 'private-token'; -$this->checkAndSetAuthentication($domain, $username, $password); -} - - -foreach ($httpBasic as $domain => $cred) { -$this->checkAndSetAuthentication($domain, $cred['username'], $cred['password']); -} - -foreach ($bearerToken as $domain => $token) { -$this->checkAndSetAuthentication($domain, $token, 'bearer'); -} - - -ProcessExecutor::setTimeout($config->get('process-timeout')); -} - -public function emergency($message, array $context = []): void -{ -$this->log(LogLevel::EMERGENCY, $message, $context); -} - -public function alert($message, array $context = []): void -{ -$this->log(LogLevel::ALERT, $message, $context); -} - -public function critical($message, array $context = []): void -{ -$this->log(LogLevel::CRITICAL, $message, $context); -} - -public function error($message, array $context = []): void -{ -$this->log(LogLevel::ERROR, $message, $context); -} - -public function warning($message, array $context = []): void -{ -$this->log(LogLevel::WARNING, $message, $context); -} - -public function notice($message, array $context = []): void -{ -$this->log(LogLevel::NOTICE, $message, $context); -} - -public function info($message, array $context = []): void -{ -$this->log(LogLevel::INFO, $message, $context); -} - -public function debug($message, array $context = []): void -{ -$this->log(LogLevel::DEBUG, $message, $context); -} - -public function log($level, $message, array $context = []): void -{ -$message = (string) $message; - -if (in_array($level, [LogLevel::EMERGENCY, LogLevel::ALERT, LogLevel::CRITICAL, LogLevel::ERROR])) { -$this->writeError(''.$message.''); -} elseif ($level === LogLevel::WARNING) { -$this->writeError(''.$message.''); -} elseif ($level === LogLevel::NOTICE) { -$this->writeError(''.$message.'', true, self::VERBOSE); -} elseif ($level === LogLevel::INFO) { -$this->writeError(''.$message.'', true, self::VERY_VERBOSE); -} else { -$this->writeError($message, true, self::DEBUG); -} -} -} diff --git a/composer/src/Composer/IO/BufferIO.php b/composer/src/Composer/IO/BufferIO.php deleted file mode 100644 index b845e7825..000000000 --- a/composer/src/Composer/IO/BufferIO.php +++ /dev/null @@ -1,102 +0,0 @@ -setInteractive(false); - -$output = new StreamOutput(fopen('php://memory', 'rw'), $verbosity, $formatter ? $formatter->isDecorated() : false, $formatter); - -parent::__construct($input, $output, new HelperSet([ -new QuestionHelper(), -])); -} - - - - -public function getOutput(): string -{ -fseek($this->output->getStream(), 0); - -$output = stream_get_contents($this->output->getStream()); - -$output = Preg::replaceCallback("{(?<=^|\n|\x08)(.+?)(\x08+)}", static function ($matches): string { -assert(is_string($matches[1])); -assert(is_string($matches[2])); -$pre = strip_tags($matches[1]); - -if (strlen($pre) === strlen($matches[2])) { -return ''; -} - - -return rtrim($matches[1])."\n"; -}, $output); - -return $output; -} - - - - - - -public function setUserInputs(array $inputs): void -{ -if (!$this->input instanceof StreamableInputInterface) { -throw new \RuntimeException('Setting the user inputs requires at least the version 3.2 of the symfony/console component.'); -} - -$this->input->setStream($this->createStream($inputs)); -$this->input->setInteractive(true); -} - - - - - - -private function createStream(array $inputs) -{ -$stream = fopen('php://memory', 'r+'); - -foreach ($inputs as $input) { -fwrite($stream, $input.PHP_EOL); -} - -rewind($stream); - -return $stream; -} -} diff --git a/composer/src/Composer/IO/ConsoleIO.php b/composer/src/Composer/IO/ConsoleIO.php deleted file mode 100644 index f290c8133..000000000 --- a/composer/src/Composer/IO/ConsoleIO.php +++ /dev/null @@ -1,345 +0,0 @@ -input = $input; -$this->output = $output; -$this->helperSet = $helperSet; -$this->verbosityMap = [ -self::QUIET => OutputInterface::VERBOSITY_QUIET, -self::NORMAL => OutputInterface::VERBOSITY_NORMAL, -self::VERBOSE => OutputInterface::VERBOSITY_VERBOSE, -self::VERY_VERBOSE => OutputInterface::VERBOSITY_VERY_VERBOSE, -self::DEBUG => OutputInterface::VERBOSITY_DEBUG, -]; -} - - - - -public function enableDebugging(float $startTime) -{ -$this->startTime = $startTime; -} - - - - -public function isInteractive() -{ -return $this->input->isInteractive(); -} - - - - -public function isDecorated() -{ -return $this->output->isDecorated(); -} - - - - -public function isVerbose() -{ -return $this->output->isVerbose(); -} - - - - -public function isVeryVerbose() -{ -return $this->output->isVeryVerbose(); -} - - - - -public function isDebug() -{ -return $this->output->isDebug(); -} - - - - -public function write($messages, bool $newline = true, int $verbosity = self::NORMAL) -{ -$this->doWrite($messages, $newline, false, $verbosity); -} - - - - -public function writeError($messages, bool $newline = true, int $verbosity = self::NORMAL) -{ -$this->doWrite($messages, $newline, true, $verbosity); -} - - - - -public function writeRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) -{ -$this->doWrite($messages, $newline, false, $verbosity, true); -} - - - - -public function writeErrorRaw($messages, bool $newline = true, int $verbosity = self::NORMAL) -{ -$this->doWrite($messages, $newline, true, $verbosity, true); -} - - - - -private function doWrite($messages, bool $newline, bool $stderr, int $verbosity, bool $raw = false): void -{ -$sfVerbosity = $this->verbosityMap[$verbosity]; -if ($sfVerbosity > $this->output->getVerbosity()) { -return; -} - -if ($raw) { -$sfVerbosity |= OutputInterface::OUTPUT_RAW; -} - -if (null !== $this->startTime) { -$memoryUsage = memory_get_usage() / 1024 / 1024; -$timeSpent = microtime(true) - $this->startTime; -$messages = array_map(static function ($message) use ($memoryUsage, $timeSpent): string { -return sprintf('[%.1fMiB/%.2fs] %s', $memoryUsage, $timeSpent, $message); -}, (array) $messages); -} - -if (true === $stderr && $this->output instanceof ConsoleOutputInterface) { -$this->output->getErrorOutput()->write($messages, $newline, $sfVerbosity); -$this->lastMessageErr = implode($newline ? "\n" : '', (array) $messages); - -return; -} - -$this->output->write($messages, $newline, $sfVerbosity); -$this->lastMessage = implode($newline ? "\n" : '', (array) $messages); -} - - - - -public function overwrite($messages, bool $newline = true, ?int $size = null, int $verbosity = self::NORMAL) -{ -$this->doOverwrite($messages, $newline, $size, false, $verbosity); -} - - - - -public function overwriteError($messages, bool $newline = true, ?int $size = null, int $verbosity = self::NORMAL) -{ -$this->doOverwrite($messages, $newline, $size, true, $verbosity); -} - - - - -private function doOverwrite($messages, bool $newline, ?int $size, bool $stderr, int $verbosity): void -{ - -$messages = implode($newline ? "\n" : '', (array) $messages); - - -if (!isset($size)) { - -$size = strlen(strip_tags($stderr ? $this->lastMessageErr : $this->lastMessage)); -} - -$this->doWrite(str_repeat("\x08", $size), false, $stderr, $verbosity); - - -$this->doWrite($messages, false, $stderr, $verbosity); - - - - -$fill = $size - strlen(strip_tags($messages)); -if ($fill > 0) { - -$this->doWrite(str_repeat(' ', $fill), false, $stderr, $verbosity); - -$this->doWrite(str_repeat("\x08", $fill), false, $stderr, $verbosity); -} - -if ($newline) { -$this->doWrite('', true, $stderr, $verbosity); -} - -if ($stderr) { -$this->lastMessageErr = $messages; -} else { -$this->lastMessage = $messages; -} -} - - - - -public function getProgressBar(int $max = 0) -{ -return new ProgressBar($this->getErrorOutput(), $max); -} - - - - -public function ask($question, $default = null) -{ - -$helper = $this->helperSet->get('question'); -$question = new Question($question, $default); - -return $helper->ask($this->input, $this->getErrorOutput(), $question); -} - - - - -public function askConfirmation($question, $default = true) -{ - -$helper = $this->helperSet->get('question'); -$question = new StrictConfirmationQuestion($question, $default); - -return $helper->ask($this->input, $this->getErrorOutput(), $question); -} - - - - -public function askAndValidate($question, $validator, $attempts = null, $default = null) -{ - -$helper = $this->helperSet->get('question'); -$question = new Question($question, $default); -$question->setValidator($validator); -$question->setMaxAttempts($attempts); - -return $helper->ask($this->input, $this->getErrorOutput(), $question); -} - - - - -public function askAndHideAnswer($question) -{ - -$helper = $this->helperSet->get('question'); -$question = new Question($question); -$question->setHidden(true); - -return $helper->ask($this->input, $this->getErrorOutput(), $question); -} - - - - -public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) -{ - -$helper = $this->helperSet->get('question'); -$question = new ChoiceQuestion($question, $choices, $default); -$question->setMaxAttempts($attempts ?: null); -$question->setErrorMessage($errorMessage); -$question->setMultiselect($multiselect); - -$result = $helper->ask($this->input, $this->getErrorOutput(), $question); - -$isAssoc = (bool) \count(array_filter(array_keys($choices), 'is_string')); -if ($isAssoc) { -return $result; -} - -if (!is_array($result)) { -return (string) array_search($result, $choices, true); -} - -$results = []; -foreach ($choices as $index => $choice) { -if (in_array($choice, $result, true)) { -$results[] = (string) $index; -} -} - -return $results; -} - -public function getTable(): Table -{ -return new Table($this->output); -} - -private function getErrorOutput(): OutputInterface -{ -if ($this->output instanceof ConsoleOutputInterface) { -return $this->output->getErrorOutput(); -} - -return $this->output; -} -} diff --git a/composer/src/Composer/IO/IOInterface.php b/composer/src/Composer/IO/IOInterface.php deleted file mode 100644 index 94bbcf359..000000000 --- a/composer/src/Composer/IO/IOInterface.php +++ /dev/null @@ -1,242 +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; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints($constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = require __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - $installed[] = self::$installed; - - return $installed; - } -} diff --git a/composer/src/Composer/Installer.php b/composer/src/Composer/Installer.php deleted file mode 100644 index c317fcdda..000000000 --- a/composer/src/Composer/Installer.php +++ /dev/null @@ -1,1461 +0,0 @@ -io = $io; -$this->config = $config; -$this->package = $package; -$this->downloadManager = $downloadManager; -$this->repositoryManager = $repositoryManager; -$this->locker = $locker; -$this->installationManager = $installationManager; -$this->eventDispatcher = $eventDispatcher; -$this->autoloadGenerator = $autoloadGenerator; -$this->suggestedPackagesReporter = new SuggestedPackagesReporter($this->io); -$this->platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); - -$this->writeLock = $config->get('lock'); -} - - - - - - - - -public function run(): int -{ - - - - -gc_collect_cycles(); -gc_disable(); - -if ($this->updateAllowList && $this->updateMirrors) { -throw new \RuntimeException("The installer options updateMirrors and updateAllowList are mutually exclusive."); -} - -$isFreshInstall = $this->repositoryManager->getLocalRepository()->isFresh(); - - -if (!$this->update && !$this->locker->isLocked()) { -$this->io->writeError('No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.'); -$this->update = true; -} - -if ($this->dryRun) { -$this->verbose = true; -$this->runScripts = false; -$this->executeOperations = false; -$this->writeLock = false; -$this->dumpAutoloader = false; -$this->mockLocalRepositories($this->repositoryManager); -} - -if ($this->downloadOnly) { -$this->dumpAutoloader = false; -} - -if ($this->update && !$this->install) { -$this->dumpAutoloader = false; -} - -if ($this->runScripts) { -Platform::putEnv('COMPOSER_DEV_MODE', $this->devMode ? '1' : '0'); - - - -$eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD; -$this->eventDispatcher->dispatchScript($eventName, $this->devMode); -} - -$this->downloadManager->setPreferSource($this->preferSource); -$this->downloadManager->setPreferDist($this->preferDist); - -$localRepo = $this->repositoryManager->getLocalRepository(); - -try { -if ($this->update) { -$res = $this->doUpdate($localRepo, $this->install); -} else { -$res = $this->doInstall($localRepo); -} -if ($res !== 0) { -return $res; -} -} catch (\Exception $e) { -if ($this->executeOperations && $this->install && $this->config->get('notify-on-install')) { -$this->installationManager->notifyInstalls($this->io); -} - -throw $e; -} -if ($this->executeOperations && $this->install && $this->config->get('notify-on-install')) { -$this->installationManager->notifyInstalls($this->io); -} - -if ($this->update) { -$installedRepo = new InstalledRepository([ -$this->locker->getLockedRepository($this->devMode), -$this->createPlatformRepo(false), -new RootPackageRepository(clone $this->package), -]); -if ($isFreshInstall) { -$this->suggestedPackagesReporter->addSuggestionsFromPackage($this->package); -} -$this->suggestedPackagesReporter->outputMinimalistic($installedRepo); -} - - -$lockedRepository = $this->locker->getLockedRepository(true); -foreach ($lockedRepository->getPackages() as $package) { -if (!$package instanceof CompletePackage || !$package->isAbandoned()) { -continue; -} - -$replacement = is_string($package->getReplacementPackage()) -? 'Use ' . $package->getReplacementPackage() . ' instead' -: 'No replacement was suggested'; - -$this->io->writeError( -sprintf( -"Package %s is abandoned, you should avoid using it. %s.", -$package->getPrettyName(), -$replacement -) -); -} - -if ($this->dumpAutoloader) { - -if ($this->optimizeAutoloader) { -$this->io->writeError('Generating optimized autoload files'); -} else { -$this->io->writeError('Generating autoload files'); -} - -$this->autoloadGenerator->setClassMapAuthoritative($this->classMapAuthoritative); -$this->autoloadGenerator->setApcu($this->apcuAutoloader, $this->apcuAutoloaderPrefix); -$this->autoloadGenerator->setRunScripts($this->runScripts); -$this->autoloadGenerator->setPlatformRequirementFilter($this->platformRequirementFilter); -$this->autoloadGenerator->dump($this->config, $localRepo, $this->package, $this->installationManager, 'composer', $this->optimizeAutoloader); -} - -if ($this->install && $this->executeOperations) { - -foreach ($localRepo->getPackages() as $package) { -$this->installationManager->ensureBinariesPresence($package); -} -} - -$fundingCount = 0; -foreach ($localRepo->getPackages() as $package) { -if ($package instanceof CompletePackageInterface && !$package instanceof AliasPackage && $package->getFunding()) { -$fundingCount++; -} -} -if ($fundingCount > 0) { -$this->io->writeError([ -sprintf( -"%d package%s you are using %s looking for funding.", -$fundingCount, -1 === $fundingCount ? '' : 's', -1 === $fundingCount ? 'is' : 'are' -), -'Use the `composer fund` command to find out more!', -]); -} - -if ($this->runScripts) { - -$eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD; -$this->eventDispatcher->dispatchScript($eventName, $this->devMode); -} - - -if (!defined('HHVM_VERSION')) { -gc_enable(); -} - -if ($this->audit) { -if ($this->update && !$this->install) { -$packages = $lockedRepository->getCanonicalPackages(); -$target = 'locked'; -} else { -$packages = $localRepo->getCanonicalPackages(); -$target = 'installed'; -} -if (count($packages) > 0) { -try { -$auditor = new Auditor(); -$repoSet = new RepositorySet(); -foreach ($this->repositoryManager->getRepositories() as $repo) { -$repoSet->addRepository($repo); -} -$auditor->audit($this->io, $repoSet, $packages, $this->auditFormat); -} catch (TransportException $e) { -$this->io->error('Failed to audit '.$target.' packages.'); -if ($this->io->isVerbose()) { -$this->io->error('['.get_class($e).'] '.$e->getMessage()); -} -} -} else { -$this->io->writeError('No '.$target.' packages - skipping audit.'); -} -} - -return 0; -} - - - - -protected function doUpdate(InstalledRepositoryInterface $localRepo, bool $doInstall): int -{ -$platformRepo = $this->createPlatformRepo(true); -$aliases = $this->getRootAliases(true); - -$lockedRepository = null; - -try { -if ($this->locker->isLocked()) { -$lockedRepository = $this->locker->getLockedRepository(true); -} -} catch (\Seld\JsonLint\ParsingException $e) { -if ($this->updateAllowList || $this->updateMirrors) { - -throw $e; -} - - -} - -if (($this->updateAllowList || $this->updateMirrors) && !$lockedRepository) { -$this->io->writeError('Cannot update ' . ($this->updateMirrors ? 'lock file information' : 'only a partial set of packages') . ' without a lock file present. Run `composer update` to generate a lock file.', true, IOInterface::QUIET); - -return self::ERROR_NO_LOCK_FILE_FOR_PARTIAL_UPDATE; -} - -$this->io->writeError('Loading composer repositories with package information'); - - -$policy = $this->createPolicy(true); -$repositorySet = $this->createRepositorySet(true, $platformRepo, $aliases); -$repositories = $this->repositoryManager->getRepositories(); -foreach ($repositories as $repository) { -$repositorySet->addRepository($repository); -} -if ($lockedRepository) { -$repositorySet->addRepository($lockedRepository); -} - -$request = $this->createRequest($this->fixedRootPackage, $platformRepo, $lockedRepository); -$this->requirePackagesForUpdate($request, $lockedRepository, true); - - -if ($this->updateAllowList) { -$request->setUpdateAllowList($this->updateAllowList, $this->updateAllowTransitiveDependencies); -} - -$pool = $repositorySet->createPool($request, $this->io, $this->eventDispatcher, $this->createPoolOptimizer($policy)); - -$this->io->writeError('Updating dependencies'); - - -$solver = new Solver($policy, $pool, $this->io); -try { -$lockTransaction = $solver->solve($request, $this->platformRequirementFilter); -$ruleSetSize = $solver->getRuleSetSize(); -$solver = null; -} catch (SolverProblemsException $e) { -$err = 'Your requirements could not be resolved to an installable set of packages.'; -$prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose()); - -$this->io->writeError(''. $err .'', true, IOInterface::QUIET); -$this->io->writeError($prettyProblem); -if (!$this->devMode) { -$this->io->writeError('Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.', true, IOInterface::QUIET); -} - -$ghe = new GithubActionError($this->io); -$ghe->emit($err."\n".$prettyProblem); - -return max(self::ERROR_GENERIC_FAILURE, $e->getCode()); -} - -$this->io->writeError("Analyzed ".count($pool)." packages to resolve dependencies", true, IOInterface::VERBOSE); -$this->io->writeError("Analyzed ".$ruleSetSize." rules to resolve dependencies", true, IOInterface::VERBOSE); - -$pool = null; - -if (!$lockTransaction->getOperations()) { -$this->io->writeError('Nothing to modify in lock file'); -} - -$exitCode = $this->extractDevPackages($lockTransaction, $platformRepo, $aliases, $policy, $lockedRepository); -if ($exitCode !== 0) { -return $exitCode; -} - - -if (method_exists('Composer\Semver\CompilingMatcher', 'clear')) { -\Composer\Semver\CompilingMatcher::clear(); -} - - -$platformReqs = $this->extractPlatformRequirements($this->package->getRequires()); -$platformDevReqs = $this->extractPlatformRequirements($this->package->getDevRequires()); - -$installsUpdates = $uninstalls = []; -if ($lockTransaction->getOperations()) { -$installNames = $updateNames = $uninstallNames = []; -foreach ($lockTransaction->getOperations() as $operation) { -if ($operation instanceof InstallOperation) { -$installsUpdates[] = $operation; -$installNames[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); -} elseif ($operation instanceof UpdateOperation) { - - -if ($this->updateMirrors -&& $operation->getInitialPackage()->getName() === $operation->getTargetPackage()->getName() -&& $operation->getInitialPackage()->getVersion() === $operation->getTargetPackage()->getVersion() -) { -continue; -} - -$installsUpdates[] = $operation; -$updateNames[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); -} elseif ($operation instanceof UninstallOperation) { -$uninstalls[] = $operation; -$uninstallNames[] = $operation->getPackage()->getPrettyName(); -} -} - -if ($this->config->get('lock')) { -$this->io->writeError(sprintf( -"Lock file operations: %d install%s, %d update%s, %d removal%s", -count($installNames), -1 === count($installNames) ? '' : 's', -count($updateNames), -1 === count($updateNames) ? '' : 's', -count($uninstalls), -1 === count($uninstalls) ? '' : 's' -)); -if ($installNames) { -$this->io->writeError("Installs: ".implode(', ', $installNames), true, IOInterface::VERBOSE); -} -if ($updateNames) { -$this->io->writeError("Updates: ".implode(', ', $updateNames), true, IOInterface::VERBOSE); -} -if ($uninstalls) { -$this->io->writeError("Removals: ".implode(', ', $uninstallNames), true, IOInterface::VERBOSE); -} -} -} - -$sortByName = static function ($a, $b): int { -if ($a instanceof UpdateOperation) { -$a = $a->getTargetPackage()->getName(); -} else { -$a = $a->getPackage()->getName(); -} -if ($b instanceof UpdateOperation) { -$b = $b->getTargetPackage()->getName(); -} else { -$b = $b->getPackage()->getName(); -} - -return strcmp($a, $b); -}; -usort($uninstalls, $sortByName); -usort($installsUpdates, $sortByName); - -foreach (array_merge($uninstalls, $installsUpdates) as $operation) { - -if ($operation instanceof InstallOperation) { -$this->suggestedPackagesReporter->addSuggestionsFromPackage($operation->getPackage()); -} - - -if ($this->config->get('lock') && (false === strpos($operation->getOperationType(), 'Alias') || $this->io->isDebug())) { -$this->io->writeError(' - ' . $operation->show(true)); -} -} - -$updatedLock = $this->locker->setLockData( -$lockTransaction->getNewLockPackages(false, $this->updateMirrors), -$lockTransaction->getNewLockPackages(true, $this->updateMirrors), -$platformReqs, -$platformDevReqs, -$lockTransaction->getAliases($aliases), -$this->package->getMinimumStability(), -$this->package->getStabilityFlags(), -$this->preferStable || $this->package->getPreferStable(), -$this->preferLowest, -$this->config->get('platform') ?: [], -$this->writeLock && $this->executeOperations -); -if ($updatedLock && $this->writeLock && $this->executeOperations) { -$this->io->writeError('Writing lock file'); -} - - -if ($this->executeOperations && count($lockTransaction->getOperations()) > 0) { -$vendorDir = $this->config->get('vendor-dir'); -if (is_dir($vendorDir)) { - - -@touch($vendorDir); -} -} - -if ($doInstall) { - -return $this->doInstall($localRepo, true); -} - -return 0; -} - - - - - - - - - - -protected function extractDevPackages(LockTransaction $lockTransaction, PlatformRepository $platformRepo, array $aliases, PolicyInterface $policy, ?LockArrayRepository $lockedRepository = null): int -{ -if (!$this->package->getDevRequires()) { -return 0; -} - -$resultRepo = new ArrayRepository([]); -$loader = new ArrayLoader(null, true); -$dumper = new ArrayDumper(); -foreach ($lockTransaction->getNewLockPackages(false) as $pkg) { -$resultRepo->addPackage($loader->load($dumper->dump($pkg))); -} - -$repositorySet = $this->createRepositorySet(true, $platformRepo, $aliases); -$repositorySet->addRepository($resultRepo); - -$request = $this->createRequest($this->fixedRootPackage, $platformRepo); -$this->requirePackagesForUpdate($request, $lockedRepository, false); - -$pool = $repositorySet->createPoolWithAllPackages(); - -$solver = new Solver($policy, $pool, $this->io); -try { -$nonDevLockTransaction = $solver->solve($request, $this->platformRequirementFilter); -$solver = null; -} catch (SolverProblemsException $e) { -$err = 'Unable to find a compatible set of packages based on your non-dev requirements alone.'; -$prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose(), true); - -$this->io->writeError(''. $err .'', true, IOInterface::QUIET); -$this->io->writeError('Your requirements can be resolved successfully when require-dev packages are present.'); -$this->io->writeError('You may need to move packages from require-dev or some of their dependencies to require.'); -$this->io->writeError($prettyProblem); - -$ghe = new GithubActionError($this->io); -$ghe->emit($err."\n".$prettyProblem); - -return $e->getCode(); -} - -$lockTransaction->setNonDevPackages($nonDevLockTransaction); - -return 0; -} - - - - - - -protected function doInstall(InstalledRepositoryInterface $localRepo, bool $alreadySolved = false): int -{ -if ($this->config->get('lock')) { -$this->io->writeError('Installing dependencies from lock file'.($this->devMode ? ' (including require-dev)' : '').''); -} - -$lockedRepository = $this->locker->getLockedRepository($this->devMode); - - - -if (!$alreadySolved) { -$this->io->writeError('Verifying lock file contents can be installed on current platform.'); - -$platformRepo = $this->createPlatformRepo(false); - -$policy = $this->createPolicy(false); - -$repositorySet = $this->createRepositorySet(false, $platformRepo, [], $lockedRepository); -$repositorySet->addRepository($lockedRepository); - - -$request = $this->createRequest($this->fixedRootPackage, $platformRepo, $lockedRepository); - -if (!$this->locker->isFresh()) { -$this->io->writeError('Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update `.', true, IOInterface::QUIET); -} - -$missingRequirementInfo = $this->locker->getMissingRequirementInfo($this->package, $this->devMode); -if ($missingRequirementInfo !== []) { -$this->io->writeError($missingRequirementInfo); - -return self::ERROR_LOCK_FILE_INVALID; -} - -foreach ($lockedRepository->getPackages() as $package) { -$request->fixLockedPackage($package); -} - -foreach ($this->locker->getPlatformRequirements($this->devMode) as $link) { -$request->requireName($link->getTarget(), $link->getConstraint()); -} - -$pool = $repositorySet->createPool($request, $this->io, $this->eventDispatcher); - - -$solver = new Solver($policy, $pool, $this->io); -try { -$lockTransaction = $solver->solve($request, $this->platformRequirementFilter); -$solver = null; - - -if (0 !== count($lockTransaction->getOperations())) { -$this->io->writeError('Your lock file cannot be installed on this system without changes. Please run composer update.', true, IOInterface::QUIET); - -return self::ERROR_LOCK_FILE_INVALID; -} -} catch (SolverProblemsException $e) { -$err = 'Your lock file does not contain a compatible set of packages. Please run composer update.'; -$prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose()); - -$this->io->writeError(''. $err .'', true, IOInterface::QUIET); -$this->io->writeError($prettyProblem); - -$ghe = new GithubActionError($this->io); -$ghe->emit($err."\n".$prettyProblem); - -return max(self::ERROR_GENERIC_FAILURE, $e->getCode()); -} -} - - -$localRepoTransaction = new LocalRepoTransaction($lockedRepository, $localRepo); -$this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_OPERATIONS_EXEC, $this->devMode, $this->executeOperations, $localRepoTransaction); - -$installs = $updates = $uninstalls = []; -foreach ($localRepoTransaction->getOperations() as $operation) { -if ($operation instanceof InstallOperation) { -$installs[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); -} elseif ($operation instanceof UpdateOperation) { -$updates[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); -} elseif ($operation instanceof UninstallOperation) { -$uninstalls[] = $operation->getPackage()->getPrettyName(); -} -} - -if ($installs === [] && $updates === [] && $uninstalls === []) { -$this->io->writeError('Nothing to install, update or remove'); -} else { -$this->io->writeError(sprintf( -"Package operations: %d install%s, %d update%s, %d removal%s", -count($installs), -1 === count($installs) ? '' : 's', -count($updates), -1 === count($updates) ? '' : 's', -count($uninstalls), -1 === count($uninstalls) ? '' : 's' -)); -if ($installs) { -$this->io->writeError("Installs: ".implode(', ', $installs), true, IOInterface::VERBOSE); -} -if ($updates) { -$this->io->writeError("Updates: ".implode(', ', $updates), true, IOInterface::VERBOSE); -} -if ($uninstalls) { -$this->io->writeError("Removals: ".implode(', ', $uninstalls), true, IOInterface::VERBOSE); -} -} - -if ($this->executeOperations) { -$localRepo->setDevPackageNames($this->locker->getDevPackageNames()); -$this->installationManager->execute($localRepo, $localRepoTransaction->getOperations(), $this->devMode, $this->runScripts, $this->downloadOnly); -} else { -foreach ($localRepoTransaction->getOperations() as $operation) { - -if (false === strpos($operation->getOperationType(), 'Alias') || $this->io->isDebug()) { -$this->io->writeError(' - ' . $operation->show(false)); -} -} -} - -return 0; -} - -protected function createPlatformRepo(bool $forUpdate): PlatformRepository -{ -if ($forUpdate) { -$platformOverrides = $this->config->get('platform') ?: []; -} else { -$platformOverrides = $this->locker->getPlatformOverrides(); -} - -return new PlatformRepository([], $platformOverrides); -} - - - - - - -private function createRepositorySet(bool $forUpdate, PlatformRepository $platformRepo, array $rootAliases = [], ?RepositoryInterface $lockedRepository = null): RepositorySet -{ -if ($forUpdate) { -$minimumStability = $this->package->getMinimumStability(); -$stabilityFlags = $this->package->getStabilityFlags(); - -$requires = array_merge($this->package->getRequires(), $this->package->getDevRequires()); -} else { -$minimumStability = $this->locker->getMinimumStability(); -$stabilityFlags = $this->locker->getStabilityFlags(); - -$requires = []; -foreach ($lockedRepository->getPackages() as $package) { -$constraint = new Constraint('=', $package->getVersion()); -$constraint->setPrettyString($package->getPrettyVersion()); -$requires[$package->getName()] = $constraint; -} -} - -$rootRequires = []; -foreach ($requires as $req => $constraint) { -if ($constraint instanceof Link) { -$constraint = $constraint->getConstraint(); -} - -if ($this->platformRequirementFilter->isIgnored($req)) { -continue; -} elseif ($this->platformRequirementFilter instanceof IgnoreListPlatformRequirementFilter) { -$constraint = $this->platformRequirementFilter->filterConstraint($req, $constraint); -} -$rootRequires[$req] = $constraint; -} - -$this->fixedRootPackage = clone $this->package; -$this->fixedRootPackage->setRequires([]); -$this->fixedRootPackage->setDevRequires([]); - -$stabilityFlags[$this->package->getName()] = BasePackage::$stabilities[VersionParser::parseStability($this->package->getVersion())]; - -$repositorySet = new RepositorySet($minimumStability, $stabilityFlags, $rootAliases, $this->package->getReferences(), $rootRequires, $this->temporaryConstraints); -$repositorySet->addRepository(new RootPackageRepository($this->fixedRootPackage)); -$repositorySet->addRepository($platformRepo); -if ($this->additionalFixedRepository) { - - -$additionalFixedRepositories = $this->additionalFixedRepository; -if ($additionalFixedRepositories instanceof CompositeRepository) { -$additionalFixedRepositories = $additionalFixedRepositories->getRepositories(); -} else { -$additionalFixedRepositories = [$additionalFixedRepositories]; -} -foreach ($additionalFixedRepositories as $additionalFixedRepository) { -if ($additionalFixedRepository instanceof InstalledRepository || $additionalFixedRepository instanceof InstalledRepositoryInterface) { -$repositorySet->allowInstalledRepositories(); -break; -} -} - -$repositorySet->addRepository($this->additionalFixedRepository); -} - -return $repositorySet; -} - -private function createPolicy(bool $forUpdate): DefaultPolicy -{ -$preferStable = null; -$preferLowest = null; -if (!$forUpdate) { -$preferStable = $this->locker->getPreferStable(); -$preferLowest = $this->locker->getPreferLowest(); -} - - -if (null === $preferStable) { -$preferStable = $this->preferStable || $this->package->getPreferStable(); -} -if (null === $preferLowest) { -$preferLowest = $this->preferLowest; -} - -return new DefaultPolicy($preferStable, $preferLowest); -} - - - - -private function createRequest(RootPackageInterface $rootPackage, PlatformRepository $platformRepo, ?LockArrayRepository $lockedRepository = null): Request -{ -$request = new Request($lockedRepository); - -$request->fixPackage($rootPackage); -if ($rootPackage instanceof RootAliasPackage) { -$request->fixPackage($rootPackage->getAliasOf()); -} - -$fixedPackages = $platformRepo->getPackages(); -if ($this->additionalFixedRepository) { -$fixedPackages = array_merge($fixedPackages, $this->additionalFixedRepository->getPackages()); -} - - - - -$provided = $rootPackage->getProvides(); -foreach ($fixedPackages as $package) { - -if ($package->getRepository() !== $platformRepo -|| !isset($provided[$package->getName()]) -|| !$provided[$package->getName()]->getConstraint()->matches(new Constraint('=', $package->getVersion())) -) { -$request->fixPackage($package); -} -} - -return $request; -} - -private function requirePackagesForUpdate(Request $request, ?LockArrayRepository $lockedRepository = null, bool $includeDevRequires = true): void -{ - -if ($this->updateMirrors) { -$excludedPackages = []; -if (!$includeDevRequires) { -$excludedPackages = array_flip($this->locker->getDevPackageNames()); -} - -foreach ($lockedRepository->getPackages() as $lockedPackage) { - - -if (!$lockedPackage instanceof AliasPackage && !isset($excludedPackages[$lockedPackage->getName()])) { -$request->requireName($lockedPackage->getName(), new Constraint('==', $lockedPackage->getVersion())); -} -} -} else { -$links = $this->package->getRequires(); -if ($includeDevRequires) { -$links = array_merge($links, $this->package->getDevRequires()); -} -foreach ($links as $link) { -$request->requireName($link->getTarget(), $link->getConstraint()); -} -} -} - - - - - - -private function getRootAliases(bool $forUpdate): array -{ -if ($forUpdate) { -$aliases = $this->package->getAliases(); -} else { -$aliases = $this->locker->getAliases(); -} - -return $aliases; -} - - - - - - -private function extractPlatformRequirements(array $links): array -{ -$platformReqs = []; -foreach ($links as $link) { -if (PlatformRepository::isPlatformPackage($link->getTarget())) { -$platformReqs[$link->getTarget()] = $link->getPrettyConstraint(); -} -} - -return $platformReqs; -} - - - - - - -private function mockLocalRepositories(RepositoryManager $rm): void -{ -$packages = []; -foreach ($rm->getLocalRepository()->getPackages() as $package) { -$packages[(string) $package] = clone $package; -} -foreach ($packages as $key => $package) { -if ($package instanceof AliasPackage) { -$alias = (string) $package->getAliasOf(); -$className = get_class($package); -$packages[$key] = new $className($packages[$alias], $package->getVersion(), $package->getPrettyVersion()); -} -} -$rm->setLocalRepository( -new InstalledArrayRepository($packages) -); -} - -private function createPoolOptimizer(PolicyInterface $policy): ?PoolOptimizer -{ - - - -if ('0' === Platform::getEnv('COMPOSER_POOL_OPTIMIZER')) { -$this->io->write('Pool Optimizer was disabled for debugging purposes.', true, IOInterface::DEBUG); - -return null; -} - -return new PoolOptimizer($policy); -} - - - - - - -public static function create(IOInterface $io, Composer $composer): self -{ -return new static( -$io, -$composer->getConfig(), -$composer->getPackage(), -$composer->getDownloadManager(), -$composer->getRepositoryManager(), -$composer->getLocker(), -$composer->getInstallationManager(), -$composer->getEventDispatcher(), -$composer->getAutoloadGenerator() -); -} - - - - -public function setAdditionalFixedRepository(RepositoryInterface $additionalFixedRepository): self -{ -$this->additionalFixedRepository = $additionalFixedRepository; - -return $this; -} - - - - - -public function setTemporaryConstraints(array $constraints): self -{ -$this->temporaryConstraints = $constraints; - -return $this; -} - - - - - - -public function setDryRun(bool $dryRun = true): self -{ -$this->dryRun = (bool) $dryRun; - -return $this; -} - - - - -public function isDryRun(): bool -{ -return $this->dryRun; -} - - - - - - -public function setDownloadOnly(bool $downloadOnly = true): self -{ -$this->downloadOnly = $downloadOnly; - -return $this; -} - - - - - - -public function setPreferSource(bool $preferSource = true): self -{ -$this->preferSource = (bool) $preferSource; - -return $this; -} - - - - - - -public function setPreferDist(bool $preferDist = true): self -{ -$this->preferDist = (bool) $preferDist; - -return $this; -} - - - - - - -public function setOptimizeAutoloader(bool $optimizeAutoloader): self -{ -$this->optimizeAutoloader = (bool) $optimizeAutoloader; -if (!$this->optimizeAutoloader) { - - -$this->setClassMapAuthoritative(false); -} - -return $this; -} - - - - - - - -public function setClassMapAuthoritative(bool $classMapAuthoritative): self -{ -$this->classMapAuthoritative = (bool) $classMapAuthoritative; -if ($this->classMapAuthoritative) { - -$this->setOptimizeAutoloader(true); -} - -return $this; -} - - - - - - -public function setApcuAutoloader(bool $apcuAutoloader, ?string $apcuAutoloaderPrefix = null): self -{ -$this->apcuAutoloader = $apcuAutoloader; -$this->apcuAutoloaderPrefix = $apcuAutoloaderPrefix; - -return $this; -} - - - - - - -public function setUpdate(bool $update): self -{ -$this->update = (bool) $update; - -return $this; -} - - - - - - -public function setInstall(bool $install): self -{ -$this->install = (bool) $install; - -return $this; -} - - - - - - -public function setDevMode(bool $devMode = true): self -{ -$this->devMode = (bool) $devMode; - -return $this; -} - - - - - - - - -public function setDumpAutoloader(bool $dumpAutoloader = true): self -{ -$this->dumpAutoloader = (bool) $dumpAutoloader; - -return $this; -} - - - - - - - - - -public function setRunScripts(bool $runScripts = true): self -{ -$this->runScripts = (bool) $runScripts; - -return $this; -} - - - - - - -public function setConfig(Config $config): self -{ -$this->config = $config; - -return $this; -} - - - - - - -public function setVerbose(bool $verbose = true): self -{ -$this->verbose = (bool) $verbose; - -return $this; -} - - - - -public function isVerbose(): bool -{ -return $this->verbose; -} - - - - - - - - - - - - - - -public function setIgnorePlatformRequirements($ignorePlatformReqs): self -{ -trigger_error('Installer::setIgnorePlatformRequirements is deprecated since Composer 2.2, use setPlatformRequirementFilter instead.', E_USER_DEPRECATED); - -return $this->setPlatformRequirementFilter(PlatformRequirementFilterFactory::fromBoolOrList($ignorePlatformReqs)); -} - - - - -public function setPlatformRequirementFilter(PlatformRequirementFilterInterface $platformRequirementFilter): self -{ -$this->platformRequirementFilter = $platformRequirementFilter; - -return $this; -} - - - - - - -public function setUpdateMirrors(bool $updateMirrors): self -{ -$this->updateMirrors = $updateMirrors; - -return $this; -} - - - - - - - - - -public function setUpdateAllowList(array $packages): self -{ -$this->updateAllowList = array_flip(array_map('strtolower', $packages)); - -return $this; -} - - - - - - - - - - -public function setUpdateAllowTransitiveDependencies(int $updateAllowTransitiveDependencies): self -{ -if (!in_array($updateAllowTransitiveDependencies, [Request::UPDATE_ONLY_LISTED, Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE, Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS], true)) { -throw new \RuntimeException("Invalid value for updateAllowTransitiveDependencies supplied"); -} - -$this->updateAllowTransitiveDependencies = $updateAllowTransitiveDependencies; - -return $this; -} - - - - - - -public function setPreferStable(bool $preferStable = true): self -{ -$this->preferStable = (bool) $preferStable; - -return $this; -} - - - - - - -public function setPreferLowest(bool $preferLowest = true): self -{ -$this->preferLowest = (bool) $preferLowest; - -return $this; -} - - - - - - - - -public function setWriteLock(bool $writeLock = true): self -{ -$this->writeLock = (bool) $writeLock; - -return $this; -} - - - - - - - - -public function setExecuteOperations(bool $executeOperations = true): self -{ -$this->executeOperations = (bool) $executeOperations; - -return $this; -} - - - - - - -public function setAudit(bool $audit): self -{ -$this->audit = $audit; - -return $this; -} - - - - - - - -public function setAuditFormat(string $auditFormat): self -{ -$this->auditFormat = $auditFormat; - -return $this; -} - - - - - - - - - - -public function disablePlugins(): self -{ -$this->installationManager->disablePlugins(); - -return $this; -} - - - - -public function setSuggestedPackagesReporter(SuggestedPackagesReporter $suggestedPackagesReporter): self -{ -$this->suggestedPackagesReporter = $suggestedPackagesReporter; - -return $this; -} -} diff --git a/composer/src/Composer/Installer/BinaryInstaller.php b/composer/src/Composer/Installer/BinaryInstaller.php deleted file mode 100644 index 3dcc74a42..000000000 --- a/composer/src/Composer/Installer/BinaryInstaller.php +++ /dev/null @@ -1,409 +0,0 @@ -binDir = $binDir; -$this->binCompat = $binCompat; -$this->io = $io; -$this->filesystem = $filesystem ?: new Filesystem(); -$this->vendorDir = $vendorDir; -} - -public function installBinaries(PackageInterface $package, string $installPath, bool $warnOnOverwrite = true): void -{ -$binaries = $this->getBinaries($package); -if (!$binaries) { -return; -} - -Platform::workaroundFilesystemIssues(); - -foreach ($binaries as $bin) { -$binPath = $installPath.'/'.$bin; -if (!file_exists($binPath)) { -$this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': file not found in package'); -continue; -} -if (is_dir($binPath)) { -$this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': found a directory at that path'); -continue; -} -if (!$this->filesystem->isAbsolutePath($binPath)) { - - - - -$binPath = realpath($binPath); -} -$this->initializeBinDir(); -$link = $this->binDir.'/'.basename($bin); -if (file_exists($link)) { -if (!is_link($link)) { -if ($warnOnOverwrite) { -$this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': name conflicts with an existing file'); -} -continue; -} -if (realpath($link) === realpath($binPath)) { - -$this->filesystem->unlink($link); -} -} - -$binCompat = $this->binCompat; -if ($binCompat === "auto" && (Platform::isWindows() || Platform::isWindowsSubsystemForLinux())) { -$binCompat = 'full'; -} - -if ($binCompat === "full") { -$this->installFullBinaries($binPath, $link, $bin, $package); -} else { -$this->installUnixyProxyBinaries($binPath, $link); -} -Silencer::call('chmod', $binPath, 0777 & ~umask()); -} -} - -public function removeBinaries(PackageInterface $package): void -{ -$this->initializeBinDir(); - -$binaries = $this->getBinaries($package); -if (!$binaries) { -return; -} -foreach ($binaries as $bin) { -$link = $this->binDir.'/'.basename($bin); -if (is_link($link) || file_exists($link)) { -$this->filesystem->unlink($link); -} -if (is_file($link.'.bat')) { -$this->filesystem->unlink($link.'.bat'); -} -} - - -if (is_dir($this->binDir) && $this->filesystem->isDirEmpty($this->binDir)) { -Silencer::call('rmdir', $this->binDir); -} -} - -public static function determineBinaryCaller(string $bin): string -{ -if ('.bat' === substr($bin, -4) || '.exe' === substr($bin, -4)) { -return 'call'; -} - -$handle = fopen($bin, 'r'); -$line = fgets($handle); -fclose($handle); -if (Preg::isMatchStrictGroups('{^#!/(?:usr/bin/env )?(?:[^/]+/)*(.+)$}m', (string) $line, $match)) { -return trim($match[1]); -} - -return 'php'; -} - - - - -protected function getBinaries(PackageInterface $package): array -{ -return $package->getBinaries(); -} - -protected function installFullBinaries(string $binPath, string $link, string $bin, PackageInterface $package): void -{ - -if ('.bat' !== substr($binPath, -4)) { -$this->installUnixyProxyBinaries($binPath, $link); -$link .= '.bat'; -if (file_exists($link)) { -$this->io->writeError(' Skipped installation of bin '.$bin.'.bat proxy for package '.$package->getName().': a .bat proxy was already installed'); -} -} -if (!file_exists($link)) { -file_put_contents($link, $this->generateWindowsProxyCode($binPath, $link)); -Silencer::call('chmod', $link, 0777 & ~umask()); -} -} - -protected function installUnixyProxyBinaries(string $binPath, string $link): void -{ -file_put_contents($link, $this->generateUnixyProxyCode($binPath, $link)); -Silencer::call('chmod', $link, 0777 & ~umask()); -} - -protected function initializeBinDir(): void -{ -$this->filesystem->ensureDirectoryExists($this->binDir); -$this->binDir = realpath($this->binDir); -} - -protected function generateWindowsProxyCode(string $bin, string $link): string -{ -$binPath = $this->filesystem->findShortestPath($link, $bin); -$caller = self::determineBinaryCaller($bin); - - - - -if ($caller === 'php') { -return "@ECHO OFF\r\n". -"setlocal DISABLEDELAYEDEXPANSION\r\n". -"SET BIN_TARGET=%~dp0/".trim(ProcessExecutor::escape(basename($link, '.bat')), '"\'')."\r\n". -"SET COMPOSER_RUNTIME_BIN_DIR=%~dp0\r\n". -"{$caller} \"%BIN_TARGET%\" %*\r\n"; -} - -return "@ECHO OFF\r\n". -"setlocal DISABLEDELAYEDEXPANSION\r\n". -"SET BIN_TARGET=%~dp0/".trim(ProcessExecutor::escape($binPath), '"\'')."\r\n". -"SET COMPOSER_RUNTIME_BIN_DIR=%~dp0\r\n". -"{$caller} \"%BIN_TARGET%\" %*\r\n"; -} - -protected function generateUnixyProxyCode(string $bin, string $link): string -{ -$binPath = $this->filesystem->findShortestPath($link, $bin); - -$binDir = ProcessExecutor::escape(dirname($binPath)); -$binFile = basename($binPath); - -$binContents = file_get_contents($bin); - - -if (Preg::isMatch('{^(#!.*\r?\n)?[\r\n\t ]*<\?php}', $binContents, $match)) { - -$proxyCode = $match[1] === null ? '#!/usr/bin/env php' : trim($match[1]); -$binPathExported = $this->filesystem->findShortestPathCode($link, $bin, false, true); -$streamProxyCode = $streamHint = ''; -$globalsCode = '$GLOBALS[\'_composer_bin_dir\'] = __DIR__;'."\n"; -$phpunitHack1 = $phpunitHack2 = ''; - -if ($this->vendorDir) { -$globalsCode .= '$GLOBALS[\'_composer_autoload_path\'] = ' . $this->filesystem->findShortestPathCode($link, $this->vendorDir . '/autoload.php', false, true).";\n"; -} - -if ($this->filesystem->normalizePath($bin) === $this->filesystem->normalizePath($this->vendorDir.'/phpunit/phpunit/phpunit')) { - -$globalsCode .= '$GLOBALS[\'__PHPUNIT_ISOLATION_EXCLUDE_LIST\'] = $GLOBALS[\'__PHPUNIT_ISOLATION_BLACKLIST\'] = array(realpath('.$binPathExported.'));'."\n"; - -$phpunitHack1 = "'phpvfscomposer://'."; -$phpunitHack2 = ' - $data = str_replace(\'__DIR__\', var_export(dirname($this->realpath), true), $data); - $data = str_replace(\'__FILE__\', var_export($this->realpath, true), $data);'; -} -if (trim((string) $match[0]) !== 'realpath = realpath(\$opened_path) ?: \$opened_path; - \$opened_path = $phpunitHack1\$this->realpath; - \$this->handle = fopen(\$this->realpath, \$mode); - \$this->position = 0; - - return (bool) \$this->handle; - } - - public function stream_read(\$count) - { - \$data = fread(\$this->handle, \$count); - - if (\$this->position === 0) { - \$data = preg_replace('{^#!.*\\r?\\n}', '', \$data); - }$phpunitHack2 - - \$this->position += strlen(\$data); - - return \$data; - } - - public function stream_cast(\$castAs) - { - return \$this->handle; - } - - public function stream_close() - { - fclose(\$this->handle); - } - - public function stream_lock(\$operation) - { - return \$operation ? flock(\$this->handle, \$operation) : true; - } - - public function stream_seek(\$offset, \$whence) - { - if (0 === fseek(\$this->handle, \$offset, \$whence)) { - \$this->position = ftell(\$this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return \$this->position; - } - - public function stream_eof() - { - return feof(\$this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option(\$option, \$arg1, \$arg2) - { - return true; - } - - public function url_stat(\$path, \$flags) - { - \$path = substr(\$path, 17); - if (file_exists(\$path)) { - return stat(\$path); - } - - return false; - } - } - } - - if ( - (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) - || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) - ) { - include("phpvfscomposer://" . $binPathExported); - exit(0); - } -} - -STREAMPROXY; -} - -return $proxyCode . "\n" . << /dev/null) -if [ -z "\$self" ]; then - self="\$selfArg" -fi - -dir=\$(cd "\${self%[/\\\\]*}" > /dev/null; cd $binDir && pwd) - -if [ -d /proc/cygdrive ]; then - case \$(which php) in - \$(readlink -n /proc/cygdrive)/*) - # We are in Cygwin using Windows php, so the path must be translated - dir=\$(cygpath -m "\$dir"); - ;; - esac -fi - -export COMPOSER_RUNTIME_BIN_DIR="\$(cd "\${self%[/\\\\]*}" > /dev/null; pwd)" - -# If bash is sourcing this file, we have to source the target as well -bashSource="\$BASH_SOURCE" -if [ -n "\$bashSource" ]; then - if [ "\$bashSource" != "\$0" ]; then - source "\${dir}/$binFile" "\$@" - return - fi -fi - -"\${dir}/$binFile" "\$@" - -PROXY; -} -} diff --git a/composer/src/Composer/Installer/BinaryPresenceInterface.php b/composer/src/Composer/Installer/BinaryPresenceInterface.php deleted file mode 100644 index a5d0ecdcb..000000000 --- a/composer/src/Composer/Installer/BinaryPresenceInterface.php +++ /dev/null @@ -1,32 +0,0 @@ -loop = $loop; -$this->io = $io; -$this->eventDispatcher = $eventDispatcher; -} - -public function reset(): void -{ -$this->notifiablePackages = []; -FileDownloader::$downloadMetadata = []; -} - - - - - - -public function addInstaller(InstallerInterface $installer): void -{ -array_unshift($this->installers, $installer); -$this->cache = []; -} - - - - - - -public function removeInstaller(InstallerInterface $installer): void -{ -if (false !== ($key = array_search($installer, $this->installers, true))) { -array_splice($this->installers, $key, 1); -$this->cache = []; -} -} - - - - - - - - -public function disablePlugins(): void -{ -foreach ($this->installers as $i => $installer) { -if (!$installer instanceof PluginInstaller) { -continue; -} - -unset($this->installers[$i]); -} -} - - - - - - - - -public function getInstaller(string $type): InstallerInterface -{ -$type = strtolower($type); - -if (isset($this->cache[$type])) { -return $this->cache[$type]; -} - -foreach ($this->installers as $installer) { -if ($installer->supports($type)) { -return $this->cache[$type] = $installer; -} -} - -throw new \InvalidArgumentException('Unknown installer type: '.$type); -} - - - - - - - -public function isPackageInstalled(InstalledRepositoryInterface $repo, PackageInterface $package): bool -{ -if ($package instanceof AliasPackage) { -return $repo->hasPackage($package) && $this->isPackageInstalled($repo, $package->getAliasOf()); -} - -return $this->getInstaller($package->getType())->isInstalled($repo, $package); -} - - - - - - - -public function ensureBinariesPresence(PackageInterface $package): void -{ -try { -$installer = $this->getInstaller($package->getType()); -} catch (\InvalidArgumentException $e) { - -return; -} - - -if ($installer instanceof BinaryPresenceInterface) { -$installer->ensureBinariesPresence($package); -} -} - - - - - - - - - - -public function execute(InstalledRepositoryInterface $repo, array $operations, bool $devMode = true, bool $runScripts = true, bool $downloadOnly = false): void -{ - -$cleanupPromises = []; - -$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal, SignalHandler $handler) use (&$cleanupPromises) { -$this->io->writeError('Received '.$signal.', aborting', true, IOInterface::DEBUG); -$this->runCleanup($cleanupPromises); -$handler->exitWithLastSignal(); -}); - -try { - - -$batches = []; -$batch = []; -foreach ($operations as $index => $operation) { -if ($operation instanceof UpdateOperation || $operation instanceof InstallOperation) { -$package = $operation instanceof UpdateOperation ? $operation->getTargetPackage() : $operation->getPackage(); -if ($package->getType() === 'composer-plugin' && ($extra = $package->getExtra()) && isset($extra['plugin-modifies-downloads']) && $extra['plugin-modifies-downloads'] === true) { -if ($batch) { -$batches[] = $batch; -} -$batches[] = [$index => $operation]; -$batch = []; - -continue; -} -} -$batch[$index] = $operation; -} - -if ($batch) { -$batches[] = $batch; -} - -foreach ($batches as $batch) { -$this->downloadAndExecuteBatch($repo, $batch, $cleanupPromises, $devMode, $runScripts, $downloadOnly, $operations); -} -} catch (\Exception $e) { -$this->runCleanup($cleanupPromises); - -throw $e; -} finally { -$signalHandler->unregister(); -} - -if ($downloadOnly) { -return; -} - - - - -$repo->write($devMode, $this); -} - - - - - - -private function downloadAndExecuteBatch(InstalledRepositoryInterface $repo, array $operations, array &$cleanupPromises, bool $devMode, bool $runScripts, bool $downloadOnly, array $allOperations): void -{ -$promises = []; - -foreach ($operations as $index => $operation) { -$opType = $operation->getOperationType(); - - -if (!in_array($opType, ['update', 'install', 'uninstall'])) { -continue; -} - -if ($opType === 'update') { - -$package = $operation->getTargetPackage(); -$initialPackage = $operation->getInitialPackage(); -} else { - -$package = $operation->getPackage(); -$initialPackage = null; -} -$installer = $this->getInstaller($package->getType()); - -$cleanupPromises[$index] = static function () use ($opType, $installer, $package, $initialPackage): ?PromiseInterface { - - -if (!$package->getInstallationSource()) { -return \React\Promise\resolve(null); -} - -return $installer->cleanup($opType, $package, $initialPackage); -}; - -if ($opType !== 'uninstall') { -$promise = $installer->download($package, $initialPackage); -if ($promise) { -$promises[] = $promise; -} -} -} - - -if (count($promises)) { -$this->waitOnPromises($promises); -} - -if ($downloadOnly) { -$this->runCleanup($cleanupPromises); -return; -} - - - -$batches = []; -$batch = []; -foreach ($operations as $index => $operation) { -if ($operation instanceof InstallOperation || $operation instanceof UpdateOperation) { -$package = $operation instanceof UpdateOperation ? $operation->getTargetPackage() : $operation->getPackage(); -if ($package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer') { -if ($batch) { -$batches[] = $batch; -} -$batches[] = [$index => $operation]; -$batch = []; - -continue; -} -} -$batch[$index] = $operation; -} - -if ($batch) { -$batches[] = $batch; -} - -foreach ($batches as $batch) { -$this->executeBatch($repo, $batch, $cleanupPromises, $devMode, $runScripts, $allOperations); -} -} - - - - - - -private function executeBatch(InstalledRepositoryInterface $repo, array $operations, array $cleanupPromises, bool $devMode, bool $runScripts, array $allOperations): void -{ -$promises = []; -$postExecCallbacks = []; - -foreach ($operations as $index => $operation) { -$opType = $operation->getOperationType(); - - -if (!in_array($opType, ['update', 'install', 'uninstall'])) { - -if ($this->io->isDebug()) { -$this->io->writeError(' - ' . $operation->show(false)); -} -$this->{$opType}($repo, $operation); - -continue; -} - -if ($opType === 'update') { - -$package = $operation->getTargetPackage(); -$initialPackage = $operation->getInitialPackage(); -} else { - -$package = $operation->getPackage(); -$initialPackage = null; -} - -$installer = $this->getInstaller($package->getType()); - -$eventName = [ -'install' => PackageEvents::PRE_PACKAGE_INSTALL, -'update' => PackageEvents::PRE_PACKAGE_UPDATE, -'uninstall' => PackageEvents::PRE_PACKAGE_UNINSTALL, -][$opType] ?? null; - -if (null !== $eventName && $runScripts && $this->eventDispatcher) { -$this->eventDispatcher->dispatchPackageEvent($eventName, $devMode, $repo, $allOperations, $operation); -} - -$dispatcher = $this->eventDispatcher; -$io = $this->io; - -$promise = $installer->prepare($opType, $package, $initialPackage); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -$promise = $promise->then(function () use ($opType, $repo, $operation) { -return $this->{$opType}($repo, $operation); -})->then($cleanupPromises[$index]) -->then(function () use ($devMode, $repo): void { -$repo->write($devMode, $this); -}, static function ($e) use ($opType, $package, $io): void { -$io->writeError(' ' . ucfirst($opType) .' of '.$package->getPrettyName().' failed'); - -throw $e; -}); - -$eventName = [ -'install' => PackageEvents::POST_PACKAGE_INSTALL, -'update' => PackageEvents::POST_PACKAGE_UPDATE, -'uninstall' => PackageEvents::POST_PACKAGE_UNINSTALL, -][$opType] ?? null; - -if (null !== $eventName && $runScripts && $dispatcher) { -$postExecCallbacks[] = static function () use ($dispatcher, $eventName, $devMode, $repo, $allOperations, $operation): void { -$dispatcher->dispatchPackageEvent($eventName, $devMode, $repo, $allOperations, $operation); -}; -} - -$promises[] = $promise; -} - - -if (count($promises)) { -$this->waitOnPromises($promises); -} - -Platform::workaroundFilesystemIssues(); - -foreach ($postExecCallbacks as $cb) { -$cb(); -} -} - - - - -private function waitOnPromises(array $promises): void -{ -$progress = null; -if ( -$this->outputProgress -&& $this->io instanceof ConsoleIO -&& !Platform::getEnv('CI') -&& !$this->io->isDebug() -&& count($promises) > 1 -) { -$progress = $this->io->getProgressBar(); -} -$this->loop->wait($promises, $progress); -if ($progress) { -$progress->clear(); - -if (!$this->io->isDecorated()) { -$this->io->writeError(''); -} -} -} - - - - - - -public function download(PackageInterface $package): ?PromiseInterface -{ -$installer = $this->getInstaller($package->getType()); -$promise = $installer->cleanup("install", $package); - -return $promise; -} - - - - - - - -public function install(InstalledRepositoryInterface $repo, InstallOperation $operation): ?PromiseInterface -{ -$package = $operation->getPackage(); -$installer = $this->getInstaller($package->getType()); -$promise = $installer->install($repo, $package); -$this->markForNotification($package); - -return $promise; -} - - - - - - - -public function update(InstalledRepositoryInterface $repo, UpdateOperation $operation): ?PromiseInterface -{ -$initial = $operation->getInitialPackage(); -$target = $operation->getTargetPackage(); - -$initialType = $initial->getType(); -$targetType = $target->getType(); - -if ($initialType === $targetType) { -$installer = $this->getInstaller($initialType); -$promise = $installer->update($repo, $initial, $target); -$this->markForNotification($target); -} else { -$promise = $this->getInstaller($initialType)->uninstall($repo, $initial); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -$installer = $this->getInstaller($targetType); -$promise = $promise->then(static function () use ($installer, $repo, $target): PromiseInterface { -$promise = $installer->install($repo, $target); -if ($promise instanceof PromiseInterface) { -return $promise; -} - -return \React\Promise\resolve(null); -}); -} - -return $promise; -} - - - - - - - -public function uninstall(InstalledRepositoryInterface $repo, UninstallOperation $operation): ?PromiseInterface -{ -$package = $operation->getPackage(); -$installer = $this->getInstaller($package->getType()); - -return $installer->uninstall($repo, $package); -} - - - - - - - -public function markAliasInstalled(InstalledRepositoryInterface $repo, MarkAliasInstalledOperation $operation): void -{ -$package = $operation->getPackage(); - -if (!$repo->hasPackage($package)) { -$repo->addPackage(clone $package); -} -} - - - - - - - -public function markAliasUninstalled(InstalledRepositoryInterface $repo, MarkAliasUninstalledOperation $operation): void -{ -$package = $operation->getPackage(); - -$repo->removePackage($package); -} - - - - - - -public function getInstallPath(PackageInterface $package): string -{ -$installer = $this->getInstaller($package->getType()); - -return $installer->getInstallPath($package); -} - -public function setOutputProgress(bool $outputProgress): void -{ -$this->outputProgress = $outputProgress; -} - -public function notifyInstalls(IOInterface $io): void -{ -$promises = []; - -try { -foreach ($this->notifiablePackages as $repoUrl => $packages) { - -if (strpos($repoUrl, '%package%')) { -foreach ($packages as $package) { -$url = str_replace('%package%', $package->getPrettyName(), $repoUrl); - -$params = [ -'version' => $package->getPrettyVersion(), -'version_normalized' => $package->getVersion(), -]; -$opts = [ -'retry-auth-failure' => false, -'http' => [ -'method' => 'POST', -'header' => ['Content-type: application/x-www-form-urlencoded'], -'content' => http_build_query($params, '', '&'), -'timeout' => 3, -], -]; - -$promises[] = $this->loop->getHttpDownloader()->add($url, $opts); -} - -continue; -} - -$postData = ['downloads' => []]; -foreach ($packages as $package) { -$packageNotification = [ -'name' => $package->getPrettyName(), -'version' => $package->getVersion(), -]; -if (strpos($repoUrl, 'packagist.org/') !== false) { -if (isset(FileDownloader::$downloadMetadata[$package->getName()])) { -$packageNotification['downloaded'] = FileDownloader::$downloadMetadata[$package->getName()]; -} else { -$packageNotification['downloaded'] = false; -} -} -$postData['downloads'][] = $packageNotification; -} - -$opts = [ -'retry-auth-failure' => false, -'http' => [ -'method' => 'POST', -'header' => ['Content-Type: application/json'], -'content' => json_encode($postData), -'timeout' => 6, -], -]; - -$promises[] = $this->loop->getHttpDownloader()->add($repoUrl, $opts); -} - -$this->loop->wait($promises); -} catch (\Exception $e) { -} - -$this->reset(); -} - -private function markForNotification(PackageInterface $package): void -{ -if ($package->getNotificationUrl()) { -$this->notifiablePackages[$package->getNotificationUrl()][$package->getName()] = $package; -} -} - - - - - -private function runCleanup(array $cleanupPromises): void -{ -$promises = []; - -$this->loop->abortJobs(); - -foreach ($cleanupPromises as $cleanup) { -$promises[] = new \React\Promise\Promise(static function ($resolve, $reject) use ($cleanup): void { -$promise = $cleanup(); -if (!$promise instanceof PromiseInterface) { -$resolve(); -} else { -$promise->then(static function () use ($resolve): void { -$resolve(); -}); -} -}); -} - -if (!empty($promises)) { -$this->loop->wait($promises); -} -} -} diff --git a/composer/src/Composer/Installer/InstallerEvent.php b/composer/src/Composer/Installer/InstallerEvent.php deleted file mode 100644 index 3949e228d..000000000 --- a/composer/src/Composer/Installer/InstallerEvent.php +++ /dev/null @@ -1,85 +0,0 @@ -composer = $composer; -$this->io = $io; -$this->devMode = $devMode; -$this->executeOperations = $executeOperations; -$this->transaction = $transaction; -} - -public function getComposer(): Composer -{ -return $this->composer; -} - -public function getIO(): IOInterface -{ -return $this->io; -} - -public function isDevMode(): bool -{ -return $this->devMode; -} - -public function isExecutingOperations(): bool -{ -return $this->executeOperations; -} - -public function getTransaction(): ?Transaction -{ -return $this->transaction; -} -} diff --git a/composer/src/Composer/Installer/InstallerEvents.php b/composer/src/Composer/Installer/InstallerEvents.php deleted file mode 100644 index 06577b66b..000000000 --- a/composer/src/Composer/Installer/InstallerEvents.php +++ /dev/null @@ -1,26 +0,0 @@ -composer = $composer; -$this->downloadManager = $composer instanceof Composer ? $composer->getDownloadManager() : null; -$this->io = $io; -$this->type = $type; - -$this->filesystem = $filesystem ?: new Filesystem(); -$this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/'); -$this->binaryInstaller = $binaryInstaller ?: new BinaryInstaller($this->io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $this->filesystem, $this->vendorDir); -} - - - - -public function supports(string $packageType) -{ -return $packageType === $this->type || null === $this->type; -} - - - - -public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -if (!$repo->hasPackage($package)) { -return false; -} - -$installPath = $this->getInstallPath($package); - -if (Filesystem::isReadable($installPath)) { -return true; -} - -if (Platform::isWindows() && $this->filesystem->isJunction($installPath)) { -return true; -} - -if (is_link($installPath)) { -if (realpath($installPath) === false) { -return false; -} - -return true; -} - -return false; -} - - - - -public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) -{ -$this->initializeVendorDir(); -$downloadPath = $this->getInstallPath($package); - -return $this->getDownloadManager()->download($package, $downloadPath, $prevPackage); -} - - - - -public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null) -{ -$this->initializeVendorDir(); -$downloadPath = $this->getInstallPath($package); - -return $this->getDownloadManager()->prepare($type, $package, $downloadPath, $prevPackage); -} - - - - -public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null) -{ -$this->initializeVendorDir(); -$downloadPath = $this->getInstallPath($package); - -return $this->getDownloadManager()->cleanup($type, $package, $downloadPath, $prevPackage); -} - - - - -public function install(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -$this->initializeVendorDir(); -$downloadPath = $this->getInstallPath($package); - - -if (!Filesystem::isReadable($downloadPath) && $repo->hasPackage($package)) { -$this->binaryInstaller->removeBinaries($package); -} - -$promise = $this->installCode($package); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -$binaryInstaller = $this->binaryInstaller; -$installPath = $this->getInstallPath($package); - -return $promise->then(static function () use ($binaryInstaller, $installPath, $package, $repo): void { -$binaryInstaller->installBinaries($package, $installPath); -if (!$repo->hasPackage($package)) { -$repo->addPackage(clone $package); -} -}); -} - - - - -public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) -{ -if (!$repo->hasPackage($initial)) { -throw new \InvalidArgumentException('Package is not installed: '.$initial); -} - -$this->initializeVendorDir(); - -$this->binaryInstaller->removeBinaries($initial); -$promise = $this->updateCode($initial, $target); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -$binaryInstaller = $this->binaryInstaller; -$installPath = $this->getInstallPath($target); - -return $promise->then(static function () use ($binaryInstaller, $installPath, $target, $initial, $repo): void { -$binaryInstaller->installBinaries($target, $installPath); -$repo->removePackage($initial); -if (!$repo->hasPackage($target)) { -$repo->addPackage(clone $target); -} -}); -} - - - - -public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -if (!$repo->hasPackage($package)) { -throw new \InvalidArgumentException('Package is not installed: '.$package); -} - -$promise = $this->removeCode($package); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -$binaryInstaller = $this->binaryInstaller; -$downloadPath = $this->getPackageBasePath($package); -$filesystem = $this->filesystem; - -return $promise->then(static function () use ($binaryInstaller, $filesystem, $downloadPath, $package, $repo): void { -$binaryInstaller->removeBinaries($package); -$repo->removePackage($package); - -if (strpos($package->getName(), '/')) { -$packageVendorDir = dirname($downloadPath); -if (is_dir($packageVendorDir) && $filesystem->isDirEmpty($packageVendorDir)) { -Silencer::call('rmdir', $packageVendorDir); -} -} -}); -} - - - - -public function getInstallPath(PackageInterface $package) -{ -$this->initializeVendorDir(); - -$basePath = ($this->vendorDir ? $this->vendorDir.'/' : '') . $package->getPrettyName(); -$targetDir = $package->getTargetDir(); - -return $basePath . ($targetDir ? '/'.$targetDir : ''); -} - - - - - - -public function ensureBinariesPresence(PackageInterface $package) -{ -$this->binaryInstaller->installBinaries($package, $this->getInstallPath($package), false); -} - - - - - - - - - -protected function getPackageBasePath(PackageInterface $package) -{ -$installPath = $this->getInstallPath($package); -$targetDir = $package->getTargetDir(); - -if ($targetDir) { -return Preg::replace('{/*'.str_replace('/', '/+', preg_quote($targetDir)).'/?$}', '', $installPath); -} - -return $installPath; -} - - - - -protected function installCode(PackageInterface $package) -{ -$downloadPath = $this->getInstallPath($package); - -return $this->getDownloadManager()->install($package, $downloadPath); -} - - - - -protected function updateCode(PackageInterface $initial, PackageInterface $target) -{ -$initialDownloadPath = $this->getInstallPath($initial); -$targetDownloadPath = $this->getInstallPath($target); -if ($targetDownloadPath !== $initialDownloadPath) { - - -if (strpos($initialDownloadPath, $targetDownloadPath) === 0 -|| strpos($targetDownloadPath, $initialDownloadPath) === 0 -) { -$promise = $this->removeCode($initial); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -return $promise->then(function () use ($target): PromiseInterface { -$promise = $this->installCode($target); -if ($promise instanceof PromiseInterface) { -return $promise; -} - -return \React\Promise\resolve(null); -}); -} - -$this->filesystem->rename($initialDownloadPath, $targetDownloadPath); -} - -return $this->getDownloadManager()->update($initial, $target, $targetDownloadPath); -} - - - - -protected function removeCode(PackageInterface $package) -{ -$downloadPath = $this->getPackageBasePath($package); - -return $this->getDownloadManager()->remove($package, $downloadPath); -} - - - - -protected function initializeVendorDir() -{ -$this->filesystem->ensureDirectoryExists($this->vendorDir); -$this->vendorDir = realpath($this->vendorDir); -} - -protected function getDownloadManager(): DownloadManager -{ -assert($this->downloadManager instanceof DownloadManager, new \LogicException(self::class.' should be initialized with a fully loaded Composer instance to be able to install/... packages')); - -return $this->downloadManager; -} -} diff --git a/composer/src/Composer/Installer/MetapackageInstaller.php b/composer/src/Composer/Installer/MetapackageInstaller.php deleted file mode 100644 index 19445986d..000000000 --- a/composer/src/Composer/Installer/MetapackageInstaller.php +++ /dev/null @@ -1,132 +0,0 @@ -io = $io; -} - - - - -public function supports(string $packageType) -{ -return $packageType === 'metapackage'; -} - - - - -public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -return $repo->hasPackage($package); -} - - - - -public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) -{ - -return \React\Promise\resolve(null); -} - - - - -public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null) -{ - -return \React\Promise\resolve(null); -} - - - - -public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null) -{ - -return \React\Promise\resolve(null); -} - - - - -public function install(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -$this->io->writeError(" - " . InstallOperation::format($package)); - -$repo->addPackage(clone $package); - -return \React\Promise\resolve(null); -} - - - - -public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) -{ -if (!$repo->hasPackage($initial)) { -throw new \InvalidArgumentException('Package is not installed: '.$initial); -} - -$this->io->writeError(" - " . UpdateOperation::format($initial, $target)); - -$repo->removePackage($initial); -$repo->addPackage(clone $target); - -return \React\Promise\resolve(null); -} - - - - -public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -if (!$repo->hasPackage($package)) { -throw new \InvalidArgumentException('Package is not installed: '.$package); -} - -$this->io->writeError(" - " . UninstallOperation::format($package)); - -$repo->removePackage($package); - -return \React\Promise\resolve(null); -} - - - - -public function getInstallPath(PackageInterface $package) -{ -return ''; -} -} diff --git a/composer/src/Composer/Installer/NoopInstaller.php b/composer/src/Composer/Installer/NoopInstaller.php deleted file mode 100644 index c7f86c364..000000000 --- a/composer/src/Composer/Installer/NoopInstaller.php +++ /dev/null @@ -1,118 +0,0 @@ -hasPackage($package); -} - - - - -public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) -{ -return \React\Promise\resolve(null); -} - - - - -public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null) -{ -return \React\Promise\resolve(null); -} - - - - -public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null) -{ -return \React\Promise\resolve(null); -} - - - - -public function install(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -if (!$repo->hasPackage($package)) { -$repo->addPackage(clone $package); -} - -return \React\Promise\resolve(null); -} - - - - -public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) -{ -if (!$repo->hasPackage($initial)) { -throw new \InvalidArgumentException('Package is not installed: '.$initial); -} - -$repo->removePackage($initial); -if (!$repo->hasPackage($target)) { -$repo->addPackage(clone $target); -} - -return \React\Promise\resolve(null); -} - - - - -public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -if (!$repo->hasPackage($package)) { -throw new \InvalidArgumentException('Package is not installed: '.$package); -} -$repo->removePackage($package); - -return \React\Promise\resolve(null); -} - - - - -public function getInstallPath(PackageInterface $package) -{ -$targetDir = $package->getTargetDir(); - -return $package->getPrettyName() . ($targetDir ? '/'.$targetDir : ''); -} -} diff --git a/composer/src/Composer/Installer/PackageEvent.php b/composer/src/Composer/Installer/PackageEvent.php deleted file mode 100644 index c5d803bc1..000000000 --- a/composer/src/Composer/Installer/PackageEvent.php +++ /dev/null @@ -1,110 +0,0 @@ -composer = $composer; -$this->io = $io; -$this->devMode = $devMode; -$this->localRepo = $localRepo; -$this->operations = $operations; -$this->operation = $operation; -} - -public function getComposer(): Composer -{ -return $this->composer; -} - -public function getIO(): IOInterface -{ -return $this->io; -} - -public function isDevMode(): bool -{ -return $this->devMode; -} - -public function getLocalRepo(): RepositoryInterface -{ -return $this->localRepo; -} - - - - -public function getOperations(): array -{ -return $this->operations; -} - - - - -public function getOperation(): OperationInterface -{ -return $this->operation; -} -} diff --git a/composer/src/Composer/Installer/PackageEvents.php b/composer/src/Composer/Installer/PackageEvents.php deleted file mode 100644 index 1838e9b0d..000000000 --- a/composer/src/Composer/Installer/PackageEvents.php +++ /dev/null @@ -1,75 +0,0 @@ -getPluginManager()->arePluginsDisabled('local')) { -$this->getPluginManager()->isPluginAllowed($package->getName(), false); -} - -return parent::prepare($type, $package, $prevPackage); -} - - - - -public function download(PackageInterface $package, ?PackageInterface $prevPackage = null) -{ -$extra = $package->getExtra(); -if (empty($extra['class'])) { -throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); -} - -return parent::download($package, $prevPackage); -} - - - - -public function install(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -$promise = parent::install($repo, $package); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -return $promise->then(function () use ($package, $repo): void { -try { -Platform::workaroundFilesystemIssues(); -$this->getPluginManager()->registerPackage($package, true); -} catch (\Exception $e) { -$this->rollbackInstall($e, $repo, $package); -} -}); -} - - - - -public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) -{ -$promise = parent::update($repo, $initial, $target); -if (!$promise instanceof PromiseInterface) { -$promise = \React\Promise\resolve(null); -} - -return $promise->then(function () use ($initial, $target, $repo): void { -try { -Platform::workaroundFilesystemIssues(); -$this->getPluginManager()->deactivatePackage($initial); -$this->getPluginManager()->registerPackage($target, true); -} catch (\Exception $e) { -$this->rollbackInstall($e, $repo, $target); -} -}); -} - -public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) -{ -$this->getPluginManager()->uninstallPackage($package); - -return parent::uninstall($repo, $package); -} - -private function rollbackInstall(\Exception $e, InstalledRepositoryInterface $repo, PackageInterface $package): void -{ -$this->io->writeError('Plugin initialization failed ('.$e->getMessage().'), uninstalling plugin'); -parent::uninstall($repo, $package); -throw $e; -} - -protected function getPluginManager(): PluginManager -{ -assert($this->composer instanceof Composer, new \LogicException(self::class.' should be initialized with a fully loaded Composer instance.')); -$pluginManager = $this->composer->getPluginManager(); - -return $pluginManager; -} -} diff --git a/composer/src/Composer/Installer/ProjectInstaller.php b/composer/src/Composer/Installer/ProjectInstaller.php deleted file mode 100644 index 973bf6bf3..000000000 --- a/composer/src/Composer/Installer/ProjectInstaller.php +++ /dev/null @@ -1,124 +0,0 @@ -installPath = rtrim(strtr($installPath, '\\', '/'), '/').'/'; -$this->downloadManager = $dm; -$this->filesystem = $fs; -} - - - - -public function supports(string $packageType): bool -{ -return true; -} - - - - -public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package): bool -{ -return false; -} - - - - -public function download(PackageInterface $package, ?PackageInterface $prevPackage = null): ?PromiseInterface -{ -$installPath = $this->installPath; -if (file_exists($installPath) && !$this->filesystem->isDirEmpty($installPath)) { -throw new \InvalidArgumentException("Project directory $installPath is not empty."); -} -if (!is_dir($installPath)) { -mkdir($installPath, 0777, true); -} - -return $this->downloadManager->download($package, $installPath, $prevPackage); -} - - - - -public function prepare($type, PackageInterface $package, ?PackageInterface $prevPackage = null): ?PromiseInterface -{ -return $this->downloadManager->prepare($type, $package, $this->installPath, $prevPackage); -} - - - - -public function cleanup($type, PackageInterface $package, ?PackageInterface $prevPackage = null): ?PromiseInterface -{ -return $this->downloadManager->cleanup($type, $package, $this->installPath, $prevPackage); -} - - - - -public function install(InstalledRepositoryInterface $repo, PackageInterface $package): ?PromiseInterface -{ -return $this->downloadManager->install($package, $this->installPath); -} - - - - -public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target): ?PromiseInterface -{ -throw new \InvalidArgumentException("not supported"); -} - - - - -public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package): ?PromiseInterface -{ -throw new \InvalidArgumentException("not supported"); -} - - - - - - -public function getInstallPath(PackageInterface $package): string -{ -return $this->installPath; -} -} diff --git a/composer/src/Composer/Installer/SuggestedPackagesReporter.php b/composer/src/Composer/Installer/SuggestedPackagesReporter.php deleted file mode 100644 index fbe7090f0..000000000 --- a/composer/src/Composer/Installer/SuggestedPackagesReporter.php +++ /dev/null @@ -1,228 +0,0 @@ -io = $io; -} - - - - -public function getPackages(): array -{ -return $this->suggestedPackages; -} - - - - - - - - - - - -public function addPackage(string $source, string $target, string $reason): SuggestedPackagesReporter -{ -$this->suggestedPackages[] = [ -'source' => $source, -'target' => $target, -'reason' => $reason, -]; - -return $this; -} - - - - -public function addSuggestionsFromPackage(PackageInterface $package): SuggestedPackagesReporter -{ -$source = $package->getPrettyName(); -foreach ($package->getSuggests() as $target => $reason) { -$this->addPackage( -$source, -$target, -$reason -); -} - -return $this; -} - - - - - - - - - - -public function output(int $mode, ?InstalledRepository $installedRepo = null, ?PackageInterface $onlyDependentsOf = null): void -{ -$suggestedPackages = $this->getFilteredSuggestions($installedRepo, $onlyDependentsOf); - -$suggesters = []; -$suggested = []; -foreach ($suggestedPackages as $suggestion) { -$suggesters[$suggestion['source']][$suggestion['target']] = $suggestion['reason']; -$suggested[$suggestion['target']][$suggestion['source']] = $suggestion['reason']; -} -ksort($suggesters); -ksort($suggested); - - -if ($mode & self::MODE_LIST) { -foreach (array_keys($suggested) as $name) { -$this->io->write(sprintf('%s', $name)); -} - -return; -} - - -if ($mode & self::MODE_BY_PACKAGE) { -foreach ($suggesters as $suggester => $suggestions) { -$this->io->write(sprintf('%s suggests:', $suggester)); - -foreach ($suggestions as $suggestion => $reason) { -$this->io->write(sprintf(' - %s' . ($reason ? ': %s' : ''), $suggestion, $this->escapeOutput($reason))); -} -$this->io->write(''); -} -} - - -if ($mode & self::MODE_BY_SUGGESTION) { - -if ($mode & self::MODE_BY_PACKAGE) { -$this->io->write(str_repeat('-', 78)); -} -foreach ($suggested as $suggestion => $suggesters) { -$this->io->write(sprintf('%s is suggested by:', $suggestion)); - -foreach ($suggesters as $suggester => $reason) { -$this->io->write(sprintf(' - %s' . ($reason ? ': %s' : ''), $suggester, $this->escapeOutput($reason))); -} -$this->io->write(''); -} -} - -if ($onlyDependentsOf) { -$allSuggestedPackages = $this->getFilteredSuggestions($installedRepo); -$diff = count($allSuggestedPackages) - count($suggestedPackages); -if ($diff) { -$this->io->write(''.$diff.' additional suggestions by transitive dependencies can be shown with --all'); -} -} -} - - - - - - - -public function outputMinimalistic(?InstalledRepository $installedRepo = null, ?PackageInterface $onlyDependentsOf = null): void -{ -$suggestedPackages = $this->getFilteredSuggestions($installedRepo, $onlyDependentsOf); -if ($suggestedPackages) { -$this->io->writeError(''.count($suggestedPackages).' package suggestions were added by new dependencies, use `composer suggest` to see details.'); -} -} - - - - - - -private function getFilteredSuggestions(?InstalledRepository $installedRepo = null, ?PackageInterface $onlyDependentsOf = null): array -{ -$suggestedPackages = $this->getPackages(); -$installedNames = []; -if (null !== $installedRepo && !empty($suggestedPackages)) { -foreach ($installedRepo->getPackages() as $package) { -$installedNames = array_merge( -$installedNames, -$package->getNames() -); -} -} - -$sourceFilter = []; -if ($onlyDependentsOf) { -$sourceFilter = array_map(static function ($link): string { -return $link->getTarget(); -}, array_merge($onlyDependentsOf->getRequires(), $onlyDependentsOf->getDevRequires())); -$sourceFilter[] = $onlyDependentsOf->getName(); -} - -$suggestions = []; -foreach ($suggestedPackages as $suggestion) { -if (in_array($suggestion['target'], $installedNames) || ($sourceFilter && !in_array($suggestion['source'], $sourceFilter))) { -continue; -} - -$suggestions[] = $suggestion; -} - -return $suggestions; -} - -private function escapeOutput(string $string): string -{ -return OutputFormatter::escape( -$this->removeControlCharacters($string) -); -} - -private function removeControlCharacters(string $string): string -{ -return Preg::replace( -'/[[:cntrl:]]/', -'', -str_replace("\n", ' ', $string) -); -} -} diff --git a/composer/src/Composer/Json/JsonFile.php b/composer/src/Composer/Json/JsonFile.php deleted file mode 100644 index 9739098ca..000000000 --- a/composer/src/Composer/Json/JsonFile.php +++ /dev/null @@ -1,349 +0,0 @@ -path = $path; - -if (null === $httpDownloader && Preg::isMatch('{^https?://}i', $path)) { -throw new \InvalidArgumentException('http urls require a HttpDownloader instance to be passed'); -} -$this->httpDownloader = $httpDownloader; -$this->io = $io; -} - -public function getPath(): string -{ -return $this->path; -} - - - - -public function exists(): bool -{ -return is_file($this->path); -} - - - - - - - - -public function read() -{ -try { -if ($this->httpDownloader) { -$json = $this->httpDownloader->get($this->path)->getBody(); -} else { -if (!Filesystem::isReadable($this->path)) { -throw new \RuntimeException('The file "'.$this->path.'" is not readable.'); -} -if ($this->io && $this->io->isDebug()) { -$realpathInfo = ''; -$realpath = realpath($this->path); -if (false !== $realpath && $realpath !== $this->path) { -$realpathInfo = ' (' . $realpath . ')'; -} -$this->io->writeError('Reading ' . $this->path . $realpathInfo); -} -$json = file_get_contents($this->path); -} -} catch (TransportException $e) { -throw new \RuntimeException($e->getMessage(), 0, $e); -} catch (\Exception $e) { -throw new \RuntimeException('Could not read '.$this->path."\n\n".$e->getMessage()); -} - -if ($json === false) { -throw new \RuntimeException('Could not read '.$this->path); -} - -return static::parseJson($json, $this->path); -} - - - - - - - - - -public function write(array $hash, int $options = JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) -{ -if ($this->path === 'php://memory') { -file_put_contents($this->path, static::encode($hash, $options)); - -return; -} - -$dir = dirname($this->path); -if (!is_dir($dir)) { -if (file_exists($dir)) { -throw new \UnexpectedValueException( -realpath($dir).' exists and is not a directory.' -); -} -if (!@mkdir($dir, 0777, true)) { -throw new \UnexpectedValueException( -$dir.' does not exist and could not be created.' -); -} -} - -$retries = 3; -while ($retries--) { -try { -$this->filePutContentsIfModified($this->path, static::encode($hash, $options). ($options & JSON_PRETTY_PRINT ? "\n" : '')); -break; -} catch (\Exception $e) { -if ($retries > 0) { -usleep(500000); -continue; -} - -throw $e; -} -} -} - - - - - - -private function filePutContentsIfModified(string $path, string $content) -{ -$currentContent = @file_get_contents($path); -if (false === $currentContent || $currentContent !== $content) { -return file_put_contents($path, $content); -} - -return 0; -} - - - - - - - - - - - - -public function validateSchema(int $schema = self::STRICT_SCHEMA, ?string $schemaFile = null): bool -{ -if (!Filesystem::isReadable($this->path)) { -throw new \RuntimeException('The file "'.$this->path.'" is not readable.'); -} -$content = file_get_contents($this->path); -$data = json_decode($content); - -if (null === $data && 'null' !== $content) { -self::validateSyntax($content, $this->path); -} - -return self::validateJsonSchema($this->path, $data, $schema, $schemaFile); -} - - - - - - - - - - - - -public static function validateJsonSchema(string $source, $data, int $schema, ?string $schemaFile = null): bool -{ -$isComposerSchemaFile = false; -if (null === $schemaFile) { -$isComposerSchemaFile = true; -$schemaFile = self::COMPOSER_SCHEMA_PATH; -} - - -if (false === strpos($schemaFile, '://')) { -$schemaFile = 'file://' . $schemaFile; -} - -$schemaData = (object) ['$ref' => $schemaFile]; - -if ($schema === self::LAX_SCHEMA) { -$schemaData->additionalProperties = true; -$schemaData->required = []; -} elseif ($schema === self::STRICT_SCHEMA && $isComposerSchemaFile) { -$schemaData->additionalProperties = false; -$schemaData->required = ['name', 'description']; -} elseif ($schema === self::AUTH_SCHEMA && $isComposerSchemaFile) { -$schemaData = (object) ['$ref' => $schemaFile.'#/properties/config', '$schema' => "https://json-schema.org/draft-04/schema#"]; -} - -$validator = new Validator(); -$validator->check($data, $schemaData); - -if (!$validator->isValid()) { -$errors = []; -foreach ((array) $validator->getErrors() as $error) { -$errors[] = ($error['property'] ? $error['property'].' : ' : '').$error['message']; -} -throw new JsonValidationException('"'.$source.'" does not match the expected JSON schema', $errors); -} - -return true; -} - - - - - - - - -public static function encode($data, int $options = 448) -{ -$json = json_encode($data, $options); -if (false === $json) { -self::throwEncodeError(json_last_error()); -} - -return $json; -} - - - - - - - -private static function throwEncodeError(int $code): void -{ -switch ($code) { -case JSON_ERROR_DEPTH: -$msg = 'Maximum stack depth exceeded'; -break; -case JSON_ERROR_STATE_MISMATCH: -$msg = 'Underflow or the modes mismatch'; -break; -case JSON_ERROR_CTRL_CHAR: -$msg = 'Unexpected control character found'; -break; -case JSON_ERROR_UTF8: -$msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; -break; -default: -$msg = 'Unknown error'; -} - -throw new \RuntimeException('JSON encoding failed: '.$msg); -} - - - - - - - - - - -public static function parseJson(?string $json, ?string $file = null) -{ -if (null === $json) { -return null; -} -$data = json_decode($json, true); -if (null === $data && JSON_ERROR_NONE !== json_last_error()) { -self::validateSyntax($json, $file); -} - -return $data; -} - - - - - - - - - -protected static function validateSyntax(string $json, ?string $file = null): bool -{ -$parser = new JsonParser(); -$result = $parser->lint($json); -if (null === $result) { -if (defined('JSON_ERROR_UTF8') && JSON_ERROR_UTF8 === json_last_error()) { -throw new \UnexpectedValueException('"'.$file.'" is not UTF-8, could not parse as JSON'); -} - -return true; -} - -throw new ParsingException('"'.$file.'" does not contain valid JSON'."\n".$result->getMessage(), $result->getDetails()); -} -} diff --git a/composer/src/Composer/Json/JsonFormatter.php b/composer/src/Composer/Json/JsonFormatter.php deleted file mode 100644 index dfd648022..000000000 --- a/composer/src/Composer/Json/JsonFormatter.php +++ /dev/null @@ -1,134 +0,0 @@ -= $code) { -return $match[0]; -} - -return str_repeat('\\', $l - 1) . mb_convert_encoding( -pack('H*', $match[2]), -'UTF-8', -'UCS-2BE' -); -} - -return $match[0]; -}, $buffer); -} - -$result .= $buffer.$char; -$buffer = ''; -continue; -} - -if (':' === $char) { - -$char .= ' '; -} elseif ('}' === $char || ']' === $char) { -$pos--; -$prevChar = substr($json, $i - 1, 1); - -if ('{' !== $prevChar && '[' !== $prevChar) { - - -$result .= $newLine; -$result .= str_repeat($indentStr, $pos); -} else { - -$result = rtrim($result); -} -} - -$result .= $char; - - - -if (',' === $char || '{' === $char || '[' === $char) { -$result .= $newLine; - -if ('{' === $char || '[' === $char) { -$pos++; -} - -$result .= str_repeat($indentStr, $pos); -} -} - -return $result; -} -} diff --git a/composer/src/Composer/Json/JsonManipulator.php b/composer/src/Composer/Json/JsonManipulator.php deleted file mode 100644 index 9d35f3a05..000000000 --- a/composer/src/Composer/Json/JsonManipulator.php +++ /dev/null @@ -1,570 +0,0 @@ - -? (?= [1-9]|0(?!\d) ) \d++ (?:\.\d++)? (?:[eE] [+-]?+ \d++)? ) - (? true | false | null ) - (? " (?:[^"\\\\]*+ | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9A-Fa-f]{4} )* " ) - (? \[ (?: (?&json) \s*+ (?: , (?&json) \s*+ )*+ )?+ \s*+ \] ) - (? \s*+ (?&string) \s*+ : (?&json) \s*+ ) - (? \{ (?: (?&pair) (?: , (?&pair) )*+ )?+ \s*+ \} ) - (? \s*+ (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) ) - )'; - - -private $contents; - -private $newline; - -private $indent; - -public function __construct(string $contents) -{ -$contents = trim($contents); -if ($contents === '') { -$contents = '{}'; -} -if (!Preg::isMatch('#^\{(.*)\}$#s', $contents)) { -throw new \InvalidArgumentException('The json file must be an object ({})'); -} -$this->newline = false !== strpos($contents, "\r\n") ? "\r\n" : "\n"; -$this->contents = $contents === '{}' ? '{' . $this->newline . '}' : $contents; -$this->detectIndenting(); -} - -public function getContents(): string -{ -return $this->contents . $this->newline; -} - -public function addLink(string $type, string $package, string $constraint, bool $sortPackages = false): bool -{ -$decoded = JsonFile::parseJson($this->contents); - - -if (!isset($decoded[$type])) { -return $this->addMainKey($type, [$package => $constraint]); -} - -$regex = '{'.self::DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. -'(?P'.preg_quote(JsonFile::encode($type)).'\s*:\s*)(?P(?&json))(?P.*)}sx'; -if (!Preg::isMatch($regex, $this->contents, $matches)) { -return false; -} -assert(is_string($matches['start'])); -assert(is_string($matches['value'])); -assert(is_string($matches['end'])); - -$links = $matches['value']; - - -$packageRegex = str_replace('/', '\\\\?/', preg_quote($package)); -$regex = '{'.self::DEFINES.'"(?P'.$packageRegex.')"(\s*:\s*)(?&string)}ix'; -if (Preg::isMatch($regex, $links, $packageMatches)) { -assert(is_string($packageMatches['package'])); - -$existingPackage = $packageMatches['package']; -$packageRegex = str_replace('/', '\\\\?/', preg_quote($existingPackage)); -$links = Preg::replaceCallback('{'.self::DEFINES.'"'.$packageRegex.'"(?P\s*:\s*)(?&string)}ix', static function ($m) use ($existingPackage, $constraint): string { -return JsonFile::encode(str_replace('\\/', '/', $existingPackage)) . $m['separator'] . '"' . $constraint . '"'; -}, $links); -} else { -if (Preg::isMatchStrictGroups('#^\s*\{\s*\S+.*?(\s*\}\s*)$#s', $links, $match)) { - -$links = Preg::replace( -'{'.preg_quote($match[1]).'$}', - -addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $match[1], '\\$'), -$links -); -} else { - -$links = '{' . $this->newline . -$this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $this->newline . -$this->indent . '}'; -} -} - -if (true === $sortPackages) { -$requirements = json_decode($links, true); -$this->sortPackages($requirements); -$links = $this->format($requirements); -} - -$this->contents = $matches['start'] . $matches['property'] . $links . $matches['end']; - -return true; -} - - - - - - - - -private function sortPackages(array &$packages = []): void -{ -$prefix = static function ($requirement): string { -if (PlatformRepository::isPlatformPackage($requirement)) { -return Preg::replace( -[ -'/^php/', -'/^hhvm/', -'/^ext/', -'/^lib/', -'/^\D/', -], -[ -'0-$0', -'1-$0', -'2-$0', -'3-$0', -'4-$0', -], -$requirement -); -} - -return '5-'.$requirement; -}; - -uksort($packages, static function ($a, $b) use ($prefix): int { -return strnatcmp($prefix($a), $prefix($b)); -}); -} - - - - -public function addRepository(string $name, $config, bool $append = true): bool -{ -return $this->addSubNode('repositories', $name, $config, $append); -} - -public function removeRepository(string $name): bool -{ -return $this->removeSubNode('repositories', $name); -} - - - - -public function addConfigSetting(string $name, $value): bool -{ -return $this->addSubNode('config', $name, $value); -} - -public function removeConfigSetting(string $name): bool -{ -return $this->removeSubNode('config', $name); -} - - - - -public function addProperty(string $name, $value): bool -{ -if (strpos($name, 'suggest.') === 0) { -return $this->addSubNode('suggest', substr($name, 8), $value); -} - -if (strpos($name, 'extra.') === 0) { -return $this->addSubNode('extra', substr($name, 6), $value); -} - -if (strpos($name, 'scripts.') === 0) { -return $this->addSubNode('scripts', substr($name, 8), $value); -} - -return $this->addMainKey($name, $value); -} - -public function removeProperty(string $name): bool -{ -if (strpos($name, 'suggest.') === 0) { -return $this->removeSubNode('suggest', substr($name, 8)); -} - -if (strpos($name, 'extra.') === 0) { -return $this->removeSubNode('extra', substr($name, 6)); -} - -if (strpos($name, 'scripts.') === 0) { -return $this->removeSubNode('scripts', substr($name, 8)); -} - -return $this->removeMainKey($name); -} - - - - -public function addSubNode(string $mainNode, string $name, $value, bool $append = true): bool -{ -$decoded = JsonFile::parseJson($this->contents); - -$subName = null; -if (in_array($mainNode, ['config', 'extra', 'scripts']) && false !== strpos($name, '.')) { -[$name, $subName] = explode('.', $name, 2); -} - - -if (!isset($decoded[$mainNode])) { -if ($subName !== null) { -$this->addMainKey($mainNode, [$name => [$subName => $value]]); -} else { -$this->addMainKey($mainNode, [$name => $value]); -} - -return true; -} - - -$nodeRegex = '{'.self::DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. -preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; - -try { -if (!Preg::isMatch($nodeRegex, $this->contents, $match)) { -return false; -} -} catch (\RuntimeException $e) { -if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { -return false; -} -throw $e; -} - -assert(is_string($match['start'])); -assert(is_string($match['content'])); -assert(is_string($match['end'])); - -$children = $match['content']; - -if (!@json_decode($children)) { -return false; -} - - -$childRegex = '{'.self::DEFINES.'(?P"'.preg_quote($name).'"\s*:\s*)(?P(?&json))(?P,?)}x'; -if (Preg::isMatch($childRegex, $children, $matches)) { -$children = Preg::replaceCallback($childRegex, function ($matches) use ($subName, $value): string { -if ($subName !== null && is_string($matches['content'])) { -$curVal = json_decode($matches['content'], true); -if (!is_array($curVal)) { -$curVal = []; -} -$curVal[$subName] = $value; -$value = $curVal; -} - -return $matches['start'] . $this->format($value, 1) . $matches['end']; -}, $children); -} else { -Preg::match('#^{ (?P\s*?) (?P\S+.*?)? (?P\s*) }$#sx', $children, $match); - -$whitespace = ''; -if (!empty($match['trailingspace'])) { -$whitespace = $match['trailingspace']; -} - -if (!empty($match['content'])) { -if ($subName !== null) { -$value = [$subName => $value]; -} - - -if ($append) { -$children = Preg::replace( -'#'.$whitespace.'}$#', -addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}', '\\$'), -$children -); -} else { -$whitespace = ''; -if (!empty($match['leadingspace'])) { -$whitespace = $match['leadingspace']; -} - -$children = Preg::replace( -'#^{'.$whitespace.'#', -addcslashes('{' . $whitespace . JsonFile::encode($name).': '.$this->format($value, 1) . ',' . $this->newline . $this->indent . $this->indent, '\\$'), -$children -); -} -} else { -if ($subName !== null) { -$value = [$subName => $value]; -} - - -$children = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}'; -} -} - -$this->contents = Preg::replaceCallback($nodeRegex, static function ($m) use ($children): string { -return $m['start'] . $children . $m['end']; -}, $this->contents); - -return true; -} - -public function removeSubNode(string $mainNode, string $name): bool -{ -$decoded = JsonFile::parseJson($this->contents); - - -if (empty($decoded[$mainNode])) { -return true; -} - - -$nodeRegex = '{'.self::DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. -preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; -try { -if (!Preg::isMatch($nodeRegex, $this->contents, $match)) { -return false; -} -} catch (\RuntimeException $e) { -if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { -return false; -} -throw $e; -} - -assert(is_string($match['start'])); -assert(is_string($match['content'])); -assert(is_string($match['end'])); - -$children = $match['content']; - - -if (!@json_decode($children, true)) { -return false; -} - -$subName = null; -if (in_array($mainNode, ['config', 'extra', 'scripts']) && false !== strpos($name, '.')) { -[$name, $subName] = explode('.', $name, 2); -} - - -if (!isset($decoded[$mainNode][$name]) || ($subName && !isset($decoded[$mainNode][$name][$subName]))) { -return true; -} - - -$keyRegex = str_replace('/', '\\\\?/', preg_quote($name)); -if (Preg::isMatch('{"'.$keyRegex.'"\s*:}i', $children)) { - -if (Preg::isMatchAll('{'.self::DEFINES.'"'.$keyRegex.'"\s*:\s*(?:(?&json))}x', $children, $matches)) { -$bestMatch = ''; -foreach ($matches[0] as $match) { -assert(is_string($match)); -if (strlen($bestMatch) < strlen($match)) { -$bestMatch = $match; -} -} -$childrenClean = Preg::replace('{,\s*'.preg_quote($bestMatch).'}i', '', $children, -1, $count); -if (1 !== $count) { -$childrenClean = Preg::replace('{'.preg_quote($bestMatch).'\s*,?\s*}i', '', $childrenClean, -1, $count); -if (1 !== $count) { -return false; -} -} -} -} else { -$childrenClean = $children; -} - -if (!isset($childrenClean)) { -throw new \InvalidArgumentException("JsonManipulator: \$childrenClean is not defined. Please report at https://github.com/composer/composer/issues/new."); -} - - -unset($match); -Preg::match('#^{ \s*? (?P\S+.*?)? (?P\s*) }$#sx', $childrenClean, $match); -if (empty($match['content'])) { -$newline = $this->newline; -$indent = $this->indent; - -$this->contents = Preg::replaceCallback($nodeRegex, static function ($matches) use ($indent, $newline): string { -return $matches['start'] . '{' . $newline . $indent . '}' . $matches['end']; -}, $this->contents); - - -if ($subName !== null) { -$curVal = json_decode($children, true); -unset($curVal[$name][$subName]); -$this->addSubNode($mainNode, $name, $curVal[$name]); -} - -return true; -} - -$this->contents = Preg::replaceCallback($nodeRegex, function ($matches) use ($name, $subName, $childrenClean): string { -assert(is_string($matches['content'])); -if ($subName !== null) { -$curVal = json_decode($matches['content'], true); -unset($curVal[$name][$subName]); -$childrenClean = $this->format($curVal); -} - -return $matches['start'] . $childrenClean . $matches['end']; -}, $this->contents); - -return true; -} - - - - -public function addMainKey(string $key, $content): bool -{ -$decoded = JsonFile::parseJson($this->contents); -$content = $this->format($content); - - -$regex = '{'.self::DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. -'(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))(?P.*)}sx'; -if (isset($decoded[$key]) && Preg::isMatch($regex, $this->contents, $matches)) { - -if (!@json_decode('{'.$matches['key'].'}')) { -return false; -} - -$this->contents = $matches['start'] . JsonFile::encode($key).': '.$content . $matches['end']; - -return true; -} - - -if (Preg::isMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) { -$this->contents = Preg::replace( -'#'.$match[1].'\}$#', -addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'), -$this->contents -); - -return true; -} - - -$this->contents = Preg::replace( -'#\}$#', -addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'), -$this->contents -); - -return true; -} - -public function removeMainKey(string $key): bool -{ -$decoded = JsonFile::parseJson($this->contents); - -if (!array_key_exists($key, $decoded)) { -return true; -} - - -$regex = '{'.self::DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. -'(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))\s*,?\s*(?P.*)}sx'; -if (Preg::isMatch($regex, $this->contents, $matches)) { -assert(is_string($matches['start'])); -assert(is_string($matches['removal'])); -assert(is_string($matches['end'])); - - -if (!@json_decode('{'.$matches['removal'].'}')) { -return false; -} - - -if (Preg::isMatchStrictGroups('#,\s*$#', $matches['start']) && Preg::isMatch('#^\}$#', $matches['end'])) { -$matches['start'] = rtrim(Preg::replace('#,(\s*)$#', '$1', $matches['start']), $this->indent); -} - -$this->contents = $matches['start'] . $matches['end']; -if (Preg::isMatch('#^\{\s*\}\s*$#', $this->contents)) { -$this->contents = "{\n}"; -} - -return true; -} - -return false; -} - -public function removeMainKeyIfEmpty(string $key): bool -{ -$decoded = JsonFile::parseJson($this->contents); - -if (!array_key_exists($key, $decoded)) { -return true; -} - -if (is_array($decoded[$key]) && count($decoded[$key]) === 0) { -return $this->removeMainKey($key); -} - -return true; -} - - - - -public function format($data, int $depth = 0): string -{ -if (is_array($data)) { -reset($data); - -if (is_numeric(key($data))) { -foreach ($data as $key => $val) { -$data[$key] = $this->format($val, $depth + 1); -} - -return '['.implode(', ', $data).']'; -} - -$out = '{' . $this->newline; -$elems = []; -foreach ($data as $key => $val) { -$elems[] = str_repeat($this->indent, $depth + 2) . JsonFile::encode($key). ': '.$this->format($val, $depth + 1); -} - -return $out . implode(','.$this->newline, $elems) . $this->newline . str_repeat($this->indent, $depth + 1) . '}'; -} - -return JsonFile::encode($data); -} - -protected function detectIndenting(): void -{ -if (Preg::isMatchStrictGroups('{^([ \t]+)"}m', $this->contents, $match)) { -$this->indent = $match[1]; -} else { -$this->indent = ' '; -} -} -} diff --git a/composer/src/Composer/Json/JsonValidationException.php b/composer/src/Composer/Json/JsonValidationException.php deleted file mode 100644 index 403fcd132..000000000 --- a/composer/src/Composer/Json/JsonValidationException.php +++ /dev/null @@ -1,43 +0,0 @@ -errors = $errors; -parent::__construct((string) $message, 0, $previous); -} - - - - -public function getErrors(): array -{ -return $this->errors; -} -} diff --git a/composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php b/composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php deleted file mode 100644 index 49478fa8c..000000000 --- a/composer/src/Composer/PHPStan/ConfigReturnTypeExtension.php +++ /dev/null @@ -1,194 +0,0 @@ - $conf) { -$type = $this->parseType($conf, $prop); - -$this->properties[$prop] = $type; -} -} - -public function getClass(): string -{ -return Config::class; -} - -public function isMethodSupported(MethodReflection $methodReflection): bool -{ -return strtolower($methodReflection->getName()) === 'get'; -} - -public function getTypeFromMethodCall(MethodReflection $methodReflection, MethodCall $methodCall, Scope $scope): Type -{ -$args = $methodCall->getArgs(); - -if (count($args) < 1) { -return ParametersAcceptorSelector::selectSingle($methodReflection->getVariants())->getReturnType(); -} - -$keyType = $scope->getType($args[0]->value); -if ($keyType instanceof ConstantStringType) { -if (isset($this->properties[$keyType->getValue()])) { -return $this->properties[$keyType->getValue()]; -} -} - -return ParametersAcceptorSelector::selectSingle($methodReflection->getVariants())->getReturnType(); -} - - - - -private function parseType(array $def, string $path): Type -{ -if (isset($def['type'])) { -$types = []; -foreach ((array) $def['type'] as $type) { -switch ($type) { -case 'integer': -if (in_array($path, ['process-timeout', 'cache-ttl', 'cache-files-ttl', 'cache-files-maxsize'], true)) { -$types[] = IntegerRangeType::createAllGreaterThanOrEqualTo(0); -} else { -$types[] = new IntegerType(); -} -break; - -case 'string': -if ($path === 'cache-files-maxsize') { - -} elseif ($path === 'discard-changes') { -$types[] = new ConstantStringType('stash'); -} elseif ($path === 'use-parent-dir') { -$types[] = new ConstantStringType('prompt'); -} elseif ($path === 'store-auths') { -$types[] = new ConstantStringType('prompt'); -} elseif ($path === 'platform-check') { -$types[] = new ConstantStringType('php-only'); -} elseif ($path === 'github-protocols') { -$types[] = new UnionType([new ConstantStringType('git'), new ConstantStringType('https'), new ConstantStringType('ssh'), new ConstantStringType('http')]); -} elseif (str_starts_with($path, 'preferred-install')) { -$types[] = new UnionType([new ConstantStringType('source'), new ConstantStringType('dist'), new ConstantStringType('auto')]); -} else { -$types[] = new StringType(); -} -break; - -case 'boolean': -if ($path === 'platform.additionalProperties') { -$types[] = new ConstantBooleanType(false); -} else { -$types[] = new BooleanType(); -} -break; - -case 'object': -$addlPropType = null; -if (isset($def['additionalProperties'])) { -$addlPropType = $this->parseType($def['additionalProperties'], $path.'.additionalProperties'); -} - -if (isset($def['properties'])) { -$keyNames = []; -$valTypes = []; -$optionalKeys = []; -$propIndex = 0; -foreach ($def['properties'] as $propName => $propdef) { -$keyNames[] = new ConstantStringType($propName); -$valType = $this->parseType($propdef, $path.'.'.$propName); -if (!isset($def['required']) || !in_array($propName, $def['required'], true)) { -$valType = TypeCombinator::addNull($valType); -$optionalKeys[] = $propIndex; -} -$valTypes[] = $valType; -$propIndex++; -} - -if ($addlPropType !== null) { -$types[] = new ArrayType(TypeCombinator::union(new StringType(), ...$keyNames), TypeCombinator::union($addlPropType, ...$valTypes)); -} else { -$types[] = new ConstantArrayType($keyNames, $valTypes, [0], $optionalKeys); -} -} else { -$types[] = new ArrayType(new StringType(), $addlPropType ?? new MixedType()); -} -break; - -case 'array': -if (isset($def['items'])) { -$valType = $this->parseType($def['items'], $path.'.items'); -} else { -$valType = new MixedType(); -} - -$types[] = new ArrayType(new IntegerType(), $valType); -break; - -default: -$types[] = new MixedType(); -} -} - -$type = TypeCombinator::union(...$types); -} elseif (isset($def['enum'])) { -$type = TypeCombinator::union(...array_map(static function (string $value): ConstantStringType { -return new ConstantStringType($value); -}, $def['enum'])); -} else { -$type = new MixedType(); -} - - -if ($path === 'allow-plugins' && time() < strtotime('2022-07-01')) { -$type = TypeCombinator::addNull($type); -} - - -if (in_array($path, ['autoloader-suffix', 'gitlab-protocol'], true)) { -$type = TypeCombinator::addNull($type); -} - -return $type; -} -} diff --git a/composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php b/composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php deleted file mode 100644 index f1ad9b001..000000000 --- a/composer/src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php +++ /dev/null @@ -1,69 +0,0 @@ -getName()) === 'getreasondata'; -} - -public function getTypeFromMethodCall(MethodReflection $methodReflection, MethodCall $methodCall, Scope $scope): Type -{ -$reasonType = $scope->getType(new MethodCall($methodCall->var, new Identifier('getReason'))); - -$types = [ -Rule::RULE_ROOT_REQUIRE => new ConstantArrayType([new ConstantStringType('packageName'), new ConstantStringType('constraint')], [new StringType, new ObjectType(ConstraintInterface::class)]), -Rule::RULE_FIXED => new ConstantArrayType([new ConstantStringType('package')], [new ObjectType(BasePackage::class)]), -Rule::RULE_PACKAGE_CONFLICT => new ObjectType(Link::class), -Rule::RULE_PACKAGE_REQUIRES => new ObjectType(Link::class), -Rule::RULE_PACKAGE_SAME_NAME => TypeCombinator::intersect(new StringType, new AccessoryNonEmptyStringType()), -Rule::RULE_LEARNED => new IntegerType(), -Rule::RULE_PACKAGE_ALIAS => new ObjectType(BasePackage::class), -Rule::RULE_PACKAGE_INVERSE_ALIAS => new ObjectType(BasePackage::class), -]; - -foreach ($types as $const => $type) { -if ((new ConstantIntegerType($const))->isSuperTypeOf($reasonType)->yes()) { -return $type; -} -} - -return TypeCombinator::union(...$types); -} -} diff --git a/composer/src/Composer/Package/AliasPackage.php b/composer/src/Composer/Package/AliasPackage.php deleted file mode 100644 index b653ab343..000000000 --- a/composer/src/Composer/Package/AliasPackage.php +++ /dev/null @@ -1,393 +0,0 @@ -getName()); - -$this->version = $version; -$this->prettyVersion = $prettyVersion; -$this->aliasOf = $aliasOf; -$this->stability = VersionParser::parseStability($version); -$this->dev = $this->stability === 'dev'; - -foreach (Link::$TYPES as $type) { -$links = $aliasOf->{'get' . ucfirst($type)}(); -$this->{$type} = $this->replaceSelfVersionDependencies($links, $type); -} -} - - - - -public function getAliasOf() -{ -return $this->aliasOf; -} - - - - -public function getVersion(): string -{ -return $this->version; -} - - - - -public function getStability(): string -{ -return $this->stability; -} - - - - -public function getPrettyVersion(): string -{ -return $this->prettyVersion; -} - - - - -public function isDev(): bool -{ -return $this->dev; -} - - - - -public function getRequires(): array -{ -return $this->requires; -} - - - - - -public function getConflicts(): array -{ -return $this->conflicts; -} - - - - - -public function getProvides(): array -{ -return $this->provides; -} - - - - - -public function getReplaces(): array -{ -return $this->replaces; -} - - - - -public function getDevRequires(): array -{ -return $this->devRequires; -} - - - - - - -public function setRootPackageAlias(bool $value): void -{ -$this->rootPackageAlias = $value; -} - - - - -public function isRootPackageAlias(): bool -{ -return $this->rootPackageAlias; -} - - - - - - - -protected function replaceSelfVersionDependencies(array $links, $linkType): array -{ - -$prettyVersion = $this->prettyVersion; -if ($prettyVersion === VersionParser::DEFAULT_BRANCH_ALIAS) { -$prettyVersion = $this->aliasOf->getPrettyVersion(); -} - -if (\in_array($linkType, [Link::TYPE_CONFLICT, Link::TYPE_PROVIDE, Link::TYPE_REPLACE], true)) { -$newLinks = []; -foreach ($links as $link) { - -if ('self.version' === $link->getPrettyConstraint()) { -$newLinks[] = new Link($link->getSource(), $link->getTarget(), $constraint = new Constraint('=', $this->version), $linkType, $prettyVersion); -$constraint->setPrettyString($prettyVersion); -} -} -$links = array_merge($links, $newLinks); -} else { -foreach ($links as $index => $link) { -if ('self.version' === $link->getPrettyConstraint()) { -if ($linkType === Link::TYPE_REQUIRE) { -$this->hasSelfVersionRequires = true; -} -$links[$index] = new Link($link->getSource(), $link->getTarget(), $constraint = new Constraint('=', $this->version), $linkType, $prettyVersion); -$constraint->setPrettyString($prettyVersion); -} -} -} - -return $links; -} - -public function hasSelfVersionRequires(): bool -{ -return $this->hasSelfVersionRequires; -} - -public function __toString(): string -{ -return parent::__toString().' ('.($this->rootPackageAlias ? 'root ' : ''). 'alias of '.$this->aliasOf->getVersion().')'; -} - - - - - -public function getType(): string -{ -return $this->aliasOf->getType(); -} - -public function getTargetDir(): ?string -{ -return $this->aliasOf->getTargetDir(); -} - -public function getExtra(): array -{ -return $this->aliasOf->getExtra(); -} - -public function setInstallationSource(?string $type): void -{ -$this->aliasOf->setInstallationSource($type); -} - -public function getInstallationSource(): ?string -{ -return $this->aliasOf->getInstallationSource(); -} - -public function getSourceType(): ?string -{ -return $this->aliasOf->getSourceType(); -} - -public function getSourceUrl(): ?string -{ -return $this->aliasOf->getSourceUrl(); -} - -public function getSourceUrls(): array -{ -return $this->aliasOf->getSourceUrls(); -} - -public function getSourceReference(): ?string -{ -return $this->aliasOf->getSourceReference(); -} - -public function setSourceReference(?string $reference): void -{ -$this->aliasOf->setSourceReference($reference); -} - -public function setSourceMirrors(?array $mirrors): void -{ -$this->aliasOf->setSourceMirrors($mirrors); -} - -public function getSourceMirrors(): ?array -{ -return $this->aliasOf->getSourceMirrors(); -} - -public function getDistType(): ?string -{ -return $this->aliasOf->getDistType(); -} - -public function getDistUrl(): ?string -{ -return $this->aliasOf->getDistUrl(); -} - -public function getDistUrls(): array -{ -return $this->aliasOf->getDistUrls(); -} - -public function getDistReference(): ?string -{ -return $this->aliasOf->getDistReference(); -} - -public function setDistReference(?string $reference): void -{ -$this->aliasOf->setDistReference($reference); -} - -public function getDistSha1Checksum(): ?string -{ -return $this->aliasOf->getDistSha1Checksum(); -} - -public function setTransportOptions(array $options): void -{ -$this->aliasOf->setTransportOptions($options); -} - -public function getTransportOptions(): array -{ -return $this->aliasOf->getTransportOptions(); -} - -public function setDistMirrors(?array $mirrors): void -{ -$this->aliasOf->setDistMirrors($mirrors); -} - -public function getDistMirrors(): ?array -{ -return $this->aliasOf->getDistMirrors(); -} - -public function getAutoload(): array -{ -return $this->aliasOf->getAutoload(); -} - -public function getDevAutoload(): array -{ -return $this->aliasOf->getDevAutoload(); -} - -public function getIncludePaths(): array -{ -return $this->aliasOf->getIncludePaths(); -} - -public function getReleaseDate(): ?\DateTimeInterface -{ -return $this->aliasOf->getReleaseDate(); -} - -public function getBinaries(): array -{ -return $this->aliasOf->getBinaries(); -} - -public function getSuggests(): array -{ -return $this->aliasOf->getSuggests(); -} - -public function getNotificationUrl(): ?string -{ -return $this->aliasOf->getNotificationUrl(); -} - -public function isDefaultBranch(): bool -{ -return $this->aliasOf->isDefaultBranch(); -} - -public function setDistUrl(?string $url): void -{ -$this->aliasOf->setDistUrl($url); -} - -public function setDistType(?string $type): void -{ -$this->aliasOf->setDistType($type); -} - -public function setSourceDistReferences(string $reference): void -{ -$this->aliasOf->setSourceDistReferences($reference); -} -} diff --git a/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php b/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php deleted file mode 100644 index 01d7afa6b..000000000 --- a/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php +++ /dev/null @@ -1,50 +0,0 @@ -getInnerIterator()->current(); -if ($file->isDir()) { -$this->dirs[] = (string) $file; - -return false; -} - -return true; -} - -public function addEmptyDir(PharData $phar, string $sources): void -{ -foreach ($this->dirs as $filepath) { -$localname = str_replace($sources . "/", '', $filepath); -$phar->addEmptyDir($localname); -} -} -} diff --git a/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php b/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php deleted file mode 100644 index 981ec86a3..000000000 --- a/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php +++ /dev/null @@ -1,109 +0,0 @@ -normalizePath(realpath($sources)); - -if ($ignoreFilters) { -$filters = []; -} else { -$filters = [ -new GitExcludeFilter($sources), -new ComposerExcludeFilter($sources, $excludes), -]; -} - -$this->finder = new Finder(); - -$filter = static function (\SplFileInfo $file) use ($sources, $filters, $fs): bool { -if ($file->isLink() && ($file->getRealPath() === false || strpos($file->getRealPath(), $sources) !== 0)) { -return false; -} - -$relativePath = Preg::replace( -'#^'.preg_quote($sources, '#').'#', -'', -$fs->normalizePath($file->getRealPath()) -); - -$exclude = false; -foreach ($filters as $filter) { -$exclude = $filter->filter($relativePath, $exclude); -} - -return !$exclude; -}; - -if (method_exists($filter, 'bindTo')) { -$filter = $filter->bindTo(null); -} - -$this->finder -->in($sources) -->filter($filter) -->ignoreVCS(true) -->ignoreDotFiles(false) -->sortByName(); - -parent::__construct($this->finder->getIterator()); -} - -public function accept(): bool -{ - -$current = $this->getInnerIterator()->current(); - -if (!$current->isDir()) { -return true; -} - -$iterator = new FilesystemIterator((string) $current, FilesystemIterator::SKIP_DOTS); - -return !$iterator->valid(); -} -} diff --git a/composer/src/Composer/Package/Archiver/ArchiveManager.php b/composer/src/Composer/Package/Archiver/ArchiveManager.php deleted file mode 100644 index c3d06fa4f..000000000 --- a/composer/src/Composer/Package/Archiver/ArchiveManager.php +++ /dev/null @@ -1,287 +0,0 @@ -downloadManager = $downloadManager; -$this->loop = $loop; -} - -public function addArchiver(ArchiverInterface $archiver): void -{ -$this->archivers[] = $archiver; -} - - - - - - - - -public function setOverwriteFiles(bool $overwriteFiles): self -{ -$this->overwriteFiles = $overwriteFiles; - -return $this; -} - - - - - -public function getPackageFilenameParts(CompletePackageInterface $package): array -{ -$baseName = $package->getArchiveName(); -if (null === $baseName) { -$baseName = Preg::replace('#[^a-z0-9-_]#i', '-', $package->getName()); -} - -$parts = [ -'base' => $baseName, -]; - -$distReference = $package->getDistReference(); -if (null !== $distReference && Preg::isMatch('{^[a-f0-9]{40}$}', $distReference)) { -$parts['dist_reference'] = $distReference; -$parts['dist_type'] = $package->getDistType(); -} else { -$parts['version'] = $package->getPrettyVersion(); -$parts['dist_reference'] = $distReference; -} - -$sourceReference = $package->getSourceReference(); -if (null !== $sourceReference) { -$parts['source_reference'] = substr(sha1($sourceReference), 0, 6); -} - -$parts = array_filter($parts); -foreach ($parts as $key => $part) { -$parts[$key] = str_replace('/', '-', $part); -} - -return $parts; -} - - - - - - - -public function getPackageFilenameFromParts(array $parts): string -{ -return implode('-', $parts); -} - - - - - - - - -public function getPackageFilename(CompletePackageInterface $package): string -{ -return $this->getPackageFilenameFromParts($this->getPackageFilenameParts($package)); -} - - - - - - - - - - - - - - -public function archive(CompletePackageInterface $package, string $format, string $targetDir, ?string $fileName = null, bool $ignoreFilters = false): string -{ -if (empty($format)) { -throw new \InvalidArgumentException('Format must be specified'); -} - - -$usableArchiver = null; -foreach ($this->archivers as $archiver) { -if ($archiver->supports($format, $package->getSourceType())) { -$usableArchiver = $archiver; -break; -} -} - - -if (null === $usableArchiver) { -throw new \RuntimeException(sprintf('No archiver found to support %s format', $format)); -} - -$filesystem = new Filesystem(); - -if ($package instanceof RootPackageInterface) { -$sourcePath = realpath('.'); -} else { - -$sourcePath = sys_get_temp_dir().'/composer_archive'.uniqid(); -$filesystem->ensureDirectoryExists($sourcePath); - -try { - -$promise = $this->downloadManager->download($package, $sourcePath); -SyncHelper::await($this->loop, $promise); -$promise = $this->downloadManager->install($package, $sourcePath); -SyncHelper::await($this->loop, $promise); -} catch (\Exception $e) { -$filesystem->removeDirectory($sourcePath); -throw $e; -} - - -if (file_exists($composerJsonPath = $sourcePath.'/composer.json')) { -$jsonFile = new JsonFile($composerJsonPath); -$jsonData = $jsonFile->read(); -if (!empty($jsonData['archive']['name'])) { -$package->setArchiveName($jsonData['archive']['name']); -} -if (!empty($jsonData['archive']['exclude'])) { -$package->setArchiveExcludes($jsonData['archive']['exclude']); -} -} -} - -$supportedFormats = $this->getSupportedFormats(); -$packageNameParts = null === $fileName ? -$this->getPackageFilenameParts($package) -: ['base' => $fileName]; - -$packageName = $this->getPackageFilenameFromParts($packageNameParts); -$excludePatterns = $this->buildExcludePatterns($packageNameParts, $supportedFormats); - - -$filesystem->ensureDirectoryExists($targetDir); -$target = realpath($targetDir).'/'.$packageName.'.'.$format; -$filesystem->ensureDirectoryExists(dirname($target)); - -if (!$this->overwriteFiles && file_exists($target)) { -return $target; -} - - -$tempTarget = sys_get_temp_dir().'/composer_archive'.uniqid().'.'.$format; -$filesystem->ensureDirectoryExists(dirname($tempTarget)); - -$archivePath = $usableArchiver->archive( -$sourcePath, -$tempTarget, -$format, -array_merge($excludePatterns, $package->getArchiveExcludes()), -$ignoreFilters -); -$filesystem->rename($archivePath, $target); - - -if (!$package instanceof RootPackageInterface) { -$filesystem->removeDirectory($sourcePath); -} -$filesystem->remove($tempTarget); - -return $target; -} - - - - - - - -private function buildExcludePatterns(array $parts, array $formats): array -{ -$base = $parts['base']; -if (count($parts) > 1) { -$base .= '-*'; -} - -$patterns = []; -foreach ($formats as $format) { -$patterns[] = "$base.$format"; -} - -return $patterns; -} - - - - -private function getSupportedFormats(): array -{ - - - - - -$formats = []; -foreach ($this->archivers as $archiver) { -$items = []; -switch (get_class($archiver)) { -case ZipArchiver::class: -$items = ['zip']; -break; - -case PharArchiver::class: -$items = ['zip', 'tar', 'tar.gz', 'tar.bz2']; -break; -} - -$formats = array_merge($formats, $items); -} - -return array_unique($formats); -} -} diff --git a/composer/src/Composer/Package/Archiver/ArchiverInterface.php b/composer/src/Composer/Package/Archiver/ArchiverInterface.php deleted file mode 100644 index d3cb6c6f8..000000000 --- a/composer/src/Composer/Package/Archiver/ArchiverInterface.php +++ /dev/null @@ -1,44 +0,0 @@ -sourcePath = $sourcePath; -$this->excludePatterns = []; -} - - - - - - - - - - - -public function filter(string $relativePath, bool $exclude): bool -{ -foreach ($this->excludePatterns as $patternData) { -[$pattern, $negate, $stripLeadingSlash] = $patternData; - -if ($stripLeadingSlash) { -$path = substr($relativePath, 1); -} else { -$path = $relativePath; -} - -try { -if (Preg::isMatch($pattern, $path)) { -$exclude = !$negate; -} -} catch (\RuntimeException $e) { - -} -} - -return $exclude; -} - - - - - - - - - -protected function parseLines(array $lines, callable $lineParser): array -{ -return array_filter( -array_map( -static function ($line) use ($lineParser) { -$line = trim($line); - -if (!$line || 0 === strpos($line, '#')) { -return null; -} - -return $lineParser($line); -}, -$lines -), -static function ($pattern): bool { -return $pattern !== null; -} -); -} - - - - - - - - -protected function generatePatterns(array $rules): array -{ -$patterns = []; -foreach ($rules as $rule) { -$patterns[] = $this->generatePattern($rule); -} - -return $patterns; -} - - - - - - - - -protected function generatePattern(string $rule): array -{ -$negate = false; -$pattern = ''; - -if ($rule !== '' && $rule[0] === '!') { -$negate = true; -$rule = ltrim($rule, '!'); -} - -$firstSlashPosition = strpos($rule, '/'); -if (0 === $firstSlashPosition) { -$pattern = '^/'; -} elseif (false === $firstSlashPosition || strlen($rule) - 1 === $firstSlashPosition) { -$pattern = '/'; -} - -$rule = trim($rule, '/'); - - -$rule = substr(Finder\Glob::toRegex($rule), 2, -2); - -return ['{'.$pattern.$rule.'(?=$|/)}', $negate, false]; -} -} diff --git a/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php b/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php deleted file mode 100644 index bce122ae1..000000000 --- a/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php +++ /dev/null @@ -1,31 +0,0 @@ -excludePatterns = $this->generatePatterns($excludeRules); -} -} diff --git a/composer/src/Composer/Package/Archiver/GitExcludeFilter.php b/composer/src/Composer/Package/Archiver/GitExcludeFilter.php deleted file mode 100644 index 7932f05ef..000000000 --- a/composer/src/Composer/Package/Archiver/GitExcludeFilter.php +++ /dev/null @@ -1,65 +0,0 @@ -excludePatterns = array_merge( -$this->excludePatterns, -$this->parseLines( -file($sourcePath.'/.gitattributes'), -[$this, 'parseGitAttributesLine'] -) -); -} -} - - - - - - - - -public function parseGitAttributesLine(string $line): ?array -{ -$parts = Preg::split('#\s+#', $line); - -if (count($parts) === 2 && $parts[1] === 'export-ignore') { -return $this->generatePattern($parts[0]); -} - -if (count($parts) === 2 && $parts[1] === '-export-ignore') { -return $this->generatePattern('!'.$parts[0]); -} - -return null; -} -} diff --git a/composer/src/Composer/Package/Archiver/PharArchiver.php b/composer/src/Composer/Package/Archiver/PharArchiver.php deleted file mode 100644 index f48cbc6d2..000000000 --- a/composer/src/Composer/Package/Archiver/PharArchiver.php +++ /dev/null @@ -1,104 +0,0 @@ - \Phar::ZIP, -'tar' => \Phar::TAR, -'tar.gz' => \Phar::TAR, -'tar.bz2' => \Phar::TAR, -]; - - -protected static $compressFormats = [ -'tar.gz' => \Phar::GZ, -'tar.bz2' => \Phar::BZ2, -]; - - - - -public function archive(string $sources, string $target, string $format, array $excludes = [], bool $ignoreFilters = false): string -{ -$sources = realpath($sources); - - -if (file_exists($target)) { -unlink($target); -} - -try { -$filename = substr($target, 0, strrpos($target, $format) - 1); - - -if (isset(static::$compressFormats[$format])) { - -$target = $filename . '.tar'; -} - -$phar = new \PharData( -$target, -\FilesystemIterator::KEY_AS_PATHNAME | \FilesystemIterator::CURRENT_AS_FILEINFO, -'', -static::$formats[$format] -); -$files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); -$filesOnly = new ArchivableFilesFilter($files); -$phar->buildFromIterator($filesOnly, $sources); -$filesOnly->addEmptyDir($phar, $sources); - -if (isset(static::$compressFormats[$format])) { - -if (!$phar->canCompress(static::$compressFormats[$format])) { -throw new \RuntimeException(sprintf('Can not compress to %s format', $format)); -} - - -unlink($target); - - -$phar->compress(static::$compressFormats[$format]); - - -$target = $filename . '.' . $format; -} - -return $target; -} catch (\UnexpectedValueException $e) { -$message = sprintf( -"Could not create archive '%s' from '%s': %s", -$target, -$sources, -$e->getMessage() -); - -throw new \RuntimeException($message, $e->getCode(), $e); -} -} - - - - -public function supports(string $format, ?string $sourceType): bool -{ -return isset(static::$formats[$format]); -} -} diff --git a/composer/src/Composer/Package/Archiver/ZipArchiver.php b/composer/src/Composer/Package/Archiver/ZipArchiver.php deleted file mode 100644 index d1f06ea83..000000000 --- a/composer/src/Composer/Package/Archiver/ZipArchiver.php +++ /dev/null @@ -1,90 +0,0 @@ - true, -]; - - - - -public function archive(string $sources, string $target, string $format, array $excludes = [], bool $ignoreFilters = false): string -{ -$fs = new Filesystem(); -$sources = $fs->normalizePath($sources); - -$zip = new ZipArchive(); -$res = $zip->open($target, ZipArchive::CREATE); -if ($res === true) { -$files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); -foreach ($files as $file) { - -$filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/'); -$localname = $filepath; -if (strpos($localname, $sources . '/') === 0) { -$localname = substr($localname, strlen($sources . '/')); -} -if ($file->isDir()) { -$zip->addEmptyDir($localname); -} else { -$zip->addFile($filepath, $localname); -} - - - - -if (method_exists($zip, 'setExternalAttributesName')) { -$perms = fileperms($filepath); - - - - -$zip->setExternalAttributesName($localname, ZipArchive::OPSYS_UNIX, $perms << 16); -} -} -if ($zip->close()) { -return $target; -} -} -$message = sprintf( -"Could not create archive '%s' from '%s': %s", -$target, -$sources, -$zip->getStatusString() -); -throw new \RuntimeException($message); -} - - - - -public function supports(string $format, ?string $sourceType): bool -{ -return isset(static::$formats[$format]) && $this->compressionAvailable(); -} - -private function compressionAvailable(): bool -{ -return class_exists('ZipArchive'); -} -} diff --git a/composer/src/Composer/Package/BasePackage.php b/composer/src/Composer/Package/BasePackage.php deleted file mode 100644 index 31f32b395..000000000 --- a/composer/src/Composer/Package/BasePackage.php +++ /dev/null @@ -1,277 +0,0 @@ - ['description' => 'requires', 'method' => Link::TYPE_REQUIRE], -'conflict' => ['description' => 'conflicts', 'method' => Link::TYPE_CONFLICT], -'provide' => ['description' => 'provides', 'method' => Link::TYPE_PROVIDE], -'replace' => ['description' => 'replaces', 'method' => Link::TYPE_REPLACE], -'require-dev' => ['description' => 'requires (for development)', 'method' => Link::TYPE_DEV_REQUIRE], -]; - -public const STABILITY_STABLE = 0; -public const STABILITY_RC = 5; -public const STABILITY_BETA = 10; -public const STABILITY_ALPHA = 15; -public const STABILITY_DEV = 20; - - -public static $stabilities = [ -'stable' => self::STABILITY_STABLE, -'RC' => self::STABILITY_RC, -'beta' => self::STABILITY_BETA, -'alpha' => self::STABILITY_ALPHA, -'dev' => self::STABILITY_DEV, -]; - - - - - - -public $id; - -protected $name; - -protected $prettyName; - -protected $repository = null; - - - - - - -public function __construct(string $name) -{ -$this->prettyName = $name; -$this->name = strtolower($name); -$this->id = -1; -} - - - - -public function getName(): string -{ -return $this->name; -} - - - - -public function getPrettyName(): string -{ -return $this->prettyName; -} - - - - -public function getNames($provides = true): array -{ -$names = [ -$this->getName() => true, -]; - -if ($provides) { -foreach ($this->getProvides() as $link) { -$names[$link->getTarget()] = true; -} -} - -foreach ($this->getReplaces() as $link) { -$names[$link->getTarget()] = true; -} - -return array_keys($names); -} - - - - -public function setId(int $id): void -{ -$this->id = $id; -} - - - - -public function getId(): int -{ -return $this->id; -} - - - - -public function setRepository(RepositoryInterface $repository): void -{ -if ($this->repository && $repository !== $this->repository) { -throw new \LogicException(sprintf( -'Package "%s" cannot be added to repository "%s" as it is already in repository "%s".', -$this->getPrettyName(), -$repository->getRepoName(), -$this->repository->getRepoName() -)); -} -$this->repository = $repository; -} - - - - -public function getRepository(): ?RepositoryInterface -{ -return $this->repository; -} - - - - -public function isPlatform(): bool -{ -return $this->getRepository() instanceof PlatformRepository; -} - - - - -public function getUniqueName(): string -{ -return $this->getName().'-'.$this->getVersion(); -} - -public function equals(PackageInterface $package): bool -{ -$self = $this; -if ($this instanceof AliasPackage) { -$self = $this->getAliasOf(); -} -if ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} - -return $package === $self; -} - - - - -public function __toString(): string -{ -return $this->getUniqueName(); -} - -public function getPrettyString(): string -{ -return $this->getPrettyName().' '.$this->getPrettyVersion(); -} - - - - -public function getFullPrettyVersion(bool $truncate = true, int $displayMode = PackageInterface::DISPLAY_SOURCE_REF_IF_DEV): string -{ -if ($displayMode === PackageInterface::DISPLAY_SOURCE_REF_IF_DEV && -(!$this->isDev() || !\in_array($this->getSourceType(), ['hg', 'git'])) -) { -return $this->getPrettyVersion(); -} - -switch ($displayMode) { -case PackageInterface::DISPLAY_SOURCE_REF_IF_DEV: -case PackageInterface::DISPLAY_SOURCE_REF: -$reference = $this->getSourceReference(); -break; -case PackageInterface::DISPLAY_DIST_REF: -$reference = $this->getDistReference(); -break; -default: -throw new \UnexpectedValueException('Display mode '.$displayMode.' is not supported'); -} - -if (null === $reference) { -return $this->getPrettyVersion(); -} - - -if ($truncate && \strlen($reference) === 40 && $this->getSourceType() !== 'svn') { -return $this->getPrettyVersion() . ' ' . substr($reference, 0, 7); -} - -return $this->getPrettyVersion() . ' ' . $reference; -} - - - - -public function getStabilityPriority(): int -{ -return self::$stabilities[$this->getStability()]; -} - -public function __clone() -{ -$this->repository = null; -$this->id = -1; -} - - - - - - - -public static function packageNameToRegexp(string $allowPattern, string $wrap = '{^%s$}i'): string -{ -$cleanedAllowPattern = str_replace('\\*', '.*', preg_quote($allowPattern)); - -return sprintf($wrap, $cleanedAllowPattern); -} - - - - - - - - -public static function packageNamesToRegexp(array $packageNames, string $wrap = '{^(?:%s)$}iD'): string -{ -$packageNames = array_map( -static function ($packageName): string { -return BasePackage::packageNameToRegexp($packageName, '%s'); -}, -$packageNames -); - -return sprintf($wrap, implode('|', $packageNames)); -} -} diff --git a/composer/src/Composer/Package/Comparer/Comparer.php b/composer/src/Composer/Package/Comparer/Comparer.php deleted file mode 100644 index eb0233504..000000000 --- a/composer/src/Composer/Package/Comparer/Comparer.php +++ /dev/null @@ -1,152 +0,0 @@ -source = $source; -} - -public function setUpdate(string $update): void -{ -$this->update = $update; -} - - - - -public function getChanged(bool $explicated = false) -{ -$changed = $this->changed; -if (!count($changed)) { -return false; -} -if ($explicated) { -foreach ($changed as $sectionKey => $itemSection) { -foreach ($itemSection as $itemKey => $item) { -$changed[$sectionKey][$itemKey] = $item.' ('.$sectionKey.')'; -} -} -} - -return $changed; -} - - - - -public function getChangedAsString(bool $toString = false, bool $explicated = false): string -{ -$changed = $this->getChanged($explicated); -if (false === $changed) { -return ''; -} - -$strings = []; -foreach ($changed as $sectionKey => $itemSection) { -foreach ($itemSection as $itemKey => $item) { -$strings[] = $item."\r\n"; -} -} - -return trim(implode("\r\n", $strings)); -} - -public function doCompare(): void -{ -$source = []; -$destination = []; -$this->changed = []; -$currentDirectory = Platform::getCwd(); -chdir($this->source); -$source = $this->doTree('.', $source); -if (!is_array($source)) { -return; -} -chdir($currentDirectory); -chdir($this->update); -$destination = $this->doTree('.', $destination); -if (!is_array($destination)) { -exit; -} -chdir($currentDirectory); -foreach ($source as $dir => $value) { -foreach ($value as $file => $hash) { -if (isset($destination[$dir][$file])) { -if ($hash !== $destination[$dir][$file]) { -$this->changed['changed'][] = $dir.'/'.$file; -} -} else { -$this->changed['removed'][] = $dir.'/'.$file; -} -} -} -foreach ($destination as $dir => $value) { -foreach ($value as $file => $hash) { -if (!isset($source[$dir][$file])) { -$this->changed['added'][] = $dir.'/'.$file; -} -} -} -} - - - - - - -private function doTree(string $dir, array &$array) -{ -if ($dh = opendir($dir)) { -while ($file = readdir($dh)) { -if ($file !== '.' && $file !== '..') { -if (is_link($dir.'/'.$file)) { -$array[$dir][$file] = readlink($dir.'/'.$file); -} elseif (is_dir($dir.'/'.$file)) { -if (!count($array)) { -$array[0] = 'Temp'; -} -if (!$this->doTree($dir.'/'.$file, $array)) { -return false; -} -} elseif (is_file($dir.'/'.$file) && filesize($dir.'/'.$file)) { -$array[$dir][$file] = md5_file($dir.'/'.$file); -} -} -} -if (count($array) > 1 && isset($array['0'])) { -unset($array['0']); -} - -return $array; -} - -return false; -} -} diff --git a/composer/src/Composer/Package/CompleteAliasPackage.php b/composer/src/Composer/Package/CompleteAliasPackage.php deleted file mode 100644 index 7d4395ef6..000000000 --- a/composer/src/Composer/Package/CompleteAliasPackage.php +++ /dev/null @@ -1,167 +0,0 @@ -aliasOf; -} - -public function getScripts(): array -{ -return $this->aliasOf->getScripts(); -} - -public function setScripts(array $scripts): void -{ -$this->aliasOf->setScripts($scripts); -} - -public function getRepositories(): array -{ -return $this->aliasOf->getRepositories(); -} - -public function setRepositories(array $repositories): void -{ -$this->aliasOf->setRepositories($repositories); -} - -public function getLicense(): array -{ -return $this->aliasOf->getLicense(); -} - -public function setLicense(array $license): void -{ -$this->aliasOf->setLicense($license); -} - -public function getKeywords(): array -{ -return $this->aliasOf->getKeywords(); -} - -public function setKeywords(array $keywords): void -{ -$this->aliasOf->setKeywords($keywords); -} - -public function getDescription(): ?string -{ -return $this->aliasOf->getDescription(); -} - -public function setDescription(?string $description): void -{ -$this->aliasOf->setDescription($description); -} - -public function getHomepage(): ?string -{ -return $this->aliasOf->getHomepage(); -} - -public function setHomepage(?string $homepage): void -{ -$this->aliasOf->setHomepage($homepage); -} - -public function getAuthors(): array -{ -return $this->aliasOf->getAuthors(); -} - -public function setAuthors(array $authors): void -{ -$this->aliasOf->setAuthors($authors); -} - -public function getSupport(): array -{ -return $this->aliasOf->getSupport(); -} - -public function setSupport(array $support): void -{ -$this->aliasOf->setSupport($support); -} - -public function getFunding(): array -{ -return $this->aliasOf->getFunding(); -} - -public function setFunding(array $funding): void -{ -$this->aliasOf->setFunding($funding); -} - -public function isAbandoned(): bool -{ -return $this->aliasOf->isAbandoned(); -} - -public function getReplacementPackage(): ?string -{ -return $this->aliasOf->getReplacementPackage(); -} - -public function setAbandoned($abandoned): void -{ -$this->aliasOf->setAbandoned($abandoned); -} - -public function getArchiveName(): ?string -{ -return $this->aliasOf->getArchiveName(); -} - -public function setArchiveName(?string $name): void -{ -$this->aliasOf->setArchiveName($name); -} - -public function getArchiveExcludes(): array -{ -return $this->aliasOf->getArchiveExcludes(); -} - -public function setArchiveExcludes(array $excludes): void -{ -$this->aliasOf->setArchiveExcludes($excludes); -} -} diff --git a/composer/src/Composer/Package/CompletePackage.php b/composer/src/Composer/Package/CompletePackage.php deleted file mode 100644 index c1dcce280..000000000 --- a/composer/src/Composer/Package/CompletePackage.php +++ /dev/null @@ -1,246 +0,0 @@ -scripts = $scripts; -} - - - - -public function getScripts(): array -{ -return $this->scripts; -} - - - - -public function setRepositories(array $repositories): void -{ -$this->repositories = $repositories; -} - - - - -public function getRepositories(): array -{ -return $this->repositories; -} - - - - -public function setLicense(array $license): void -{ -$this->license = $license; -} - - - - -public function getLicense(): array -{ -return $this->license; -} - - - - -public function setKeywords(array $keywords): void -{ -$this->keywords = $keywords; -} - - - - -public function getKeywords(): array -{ -return $this->keywords; -} - - - - -public function setAuthors(array $authors): void -{ -$this->authors = $authors; -} - - - - -public function getAuthors(): array -{ -return $this->authors; -} - - - - -public function setDescription(?string $description): void -{ -$this->description = $description; -} - - - - -public function getDescription(): ?string -{ -return $this->description; -} - - - - -public function setHomepage(?string $homepage): void -{ -$this->homepage = $homepage; -} - - - - -public function getHomepage(): ?string -{ -return $this->homepage; -} - - - - -public function setSupport(array $support): void -{ -$this->support = $support; -} - - - - -public function getSupport(): array -{ -return $this->support; -} - - - - -public function setFunding(array $funding): void -{ -$this->funding = $funding; -} - - - - -public function getFunding(): array -{ -return $this->funding; -} - - - - -public function isAbandoned(): bool -{ -return (bool) $this->abandoned; -} - - - - -public function setAbandoned($abandoned): void -{ -$this->abandoned = $abandoned; -} - - - - -public function getReplacementPackage(): ?string -{ -return \is_string($this->abandoned) ? $this->abandoned : null; -} - - - - -public function setArchiveName(?string $name): void -{ -$this->archiveName = $name; -} - - - - -public function getArchiveName(): ?string -{ -return $this->archiveName; -} - - - - -public function setArchiveExcludes(array $excludes): void -{ -$this->archiveExcludes = $excludes; -} - - - - -public function getArchiveExcludes(): array -{ -return $this->archiveExcludes; -} -} diff --git a/composer/src/Composer/Package/CompletePackageInterface.php b/composer/src/Composer/Package/CompletePackageInterface.php deleted file mode 100644 index eb0655832..000000000 --- a/composer/src/Composer/Package/CompletePackageInterface.php +++ /dev/null @@ -1,188 +0,0 @@ - 'bin', -'type', -'extra', -'installationSource' => 'installation-source', -'autoload', -'devAutoload' => 'autoload-dev', -'notificationUrl' => 'notification-url', -'includePaths' => 'include-path', -]; - -$data = []; -$data['name'] = $package->getPrettyName(); -$data['version'] = $package->getPrettyVersion(); -$data['version_normalized'] = $package->getVersion(); - -if ($package->getTargetDir()) { -$data['target-dir'] = $package->getTargetDir(); -} - -if ($package->getSourceType()) { -$data['source']['type'] = $package->getSourceType(); -$data['source']['url'] = $package->getSourceUrl(); -if (null !== ($value = $package->getSourceReference())) { -$data['source']['reference'] = $value; -} -if ($mirrors = $package->getSourceMirrors()) { -$data['source']['mirrors'] = $mirrors; -} -} - -if ($package->getDistType()) { -$data['dist']['type'] = $package->getDistType(); -$data['dist']['url'] = $package->getDistUrl(); -if (null !== ($value = $package->getDistReference())) { -$data['dist']['reference'] = $value; -} -if (null !== ($value = $package->getDistSha1Checksum())) { -$data['dist']['shasum'] = $value; -} -if ($mirrors = $package->getDistMirrors()) { -$data['dist']['mirrors'] = $mirrors; -} -} - -foreach (BasePackage::$supportedLinkTypes as $type => $opts) { -if ($links = $package->{'get'.ucfirst($opts['method'])}()) { -foreach ($links as $link) { -$data[$type][$link->getTarget()] = $link->getPrettyConstraint(); -} -ksort($data[$type]); -} -} - -if ($packages = $package->getSuggests()) { -ksort($packages); -$data['suggest'] = $packages; -} - -if ($package->getReleaseDate() instanceof \DateTimeInterface) { -$data['time'] = $package->getReleaseDate()->format(DATE_RFC3339); -} - -if ($package->isDefaultBranch()) { -$data['default-branch'] = true; -} - -$data = $this->dumpValues($package, $keys, $data); - -if ($package instanceof CompletePackageInterface) { -if ($package->getArchiveName()) { -$data['archive']['name'] = $package->getArchiveName(); -} -if ($package->getArchiveExcludes()) { -$data['archive']['exclude'] = $package->getArchiveExcludes(); -} - -$keys = [ -'scripts', -'license', -'authors', -'description', -'homepage', -'keywords', -'repositories', -'support', -'funding', -]; - -$data = $this->dumpValues($package, $keys, $data); - -if (isset($data['keywords']) && \is_array($data['keywords'])) { -sort($data['keywords']); -} - -if ($package->isAbandoned()) { -$data['abandoned'] = $package->getReplacementPackage() ?: true; -} -} - -if ($package instanceof RootPackageInterface) { -$minimumStability = $package->getMinimumStability(); -if ($minimumStability) { -$data['minimum-stability'] = $minimumStability; -} -} - -if (\count($package->getTransportOptions()) > 0) { -$data['transport-options'] = $package->getTransportOptions(); -} - -return $data; -} - - - - - - - -private function dumpValues(PackageInterface $package, array $keys, array $data): array -{ -foreach ($keys as $method => $key) { -if (is_numeric($method)) { -$method = $key; -} - -$getter = 'get'.ucfirst($method); -$value = $package->{$getter}(); - -if (null !== $value && !(\is_array($value) && 0 === \count($value))) { -$data[$key] = $value; -} -} - -return $data; -} -} diff --git a/composer/src/Composer/Package/Link.php b/composer/src/Composer/Package/Link.php deleted file mode 100644 index a42f839f9..000000000 --- a/composer/src/Composer/Package/Link.php +++ /dev/null @@ -1,140 +0,0 @@ -source = strtolower($source); -$this->target = strtolower($target); -$this->constraint = $constraint; -$this->description = self::TYPE_DEV_REQUIRE === $description ? 'requires (for development)' : $description; -$this->prettyConstraint = $prettyConstraint; -} - -public function getDescription(): string -{ -return $this->description; -} - -public function getSource(): string -{ -return $this->source; -} - -public function getTarget(): string -{ -return $this->target; -} - -public function getConstraint(): ConstraintInterface -{ -return $this->constraint; -} - - - - -public function getPrettyConstraint(): string -{ -if (null === $this->prettyConstraint) { -throw new \UnexpectedValueException(sprintf('Link %s has been misconfigured and had no prettyConstraint given.', $this)); -} - -return $this->prettyConstraint; -} - -public function __toString(): string -{ -return $this->source.' '.$this->description.' '.$this->target.' ('.$this->constraint.')'; -} - -public function getPrettyString(PackageInterface $sourcePackage): string -{ -return $sourcePackage->getPrettyString().' '.$this->description.' '.$this->target.' '.$this->constraint->getPrettyString(); -} -} diff --git a/composer/src/Composer/Package/Loader/ArrayLoader.php b/composer/src/Composer/Package/Loader/ArrayLoader.php deleted file mode 100644 index 5c9ae5d47..000000000 --- a/composer/src/Composer/Package/Loader/ArrayLoader.php +++ /dev/null @@ -1,465 +0,0 @@ -versionParser = $parser; -$this->loadOptions = $loadOptions; -} - - - - -public function load(array $config, string $class = 'Composer\Package\CompletePackage'): BasePackage -{ -if ($class !== 'Composer\Package\CompletePackage' && $class !== 'Composer\Package\RootPackage') { -trigger_error('The $class arg is deprecated, please reach out to Composer maintainers ASAP if you still need this.', E_USER_DEPRECATED); -} - -$package = $this->createObject($config, $class); - -foreach (BasePackage::$supportedLinkTypes as $type => $opts) { -if (!isset($config[$type]) || !is_array($config[$type])) { -continue; -} -$method = 'set'.ucfirst($opts['method']); -$package->{$method}( -$this->parseLinks( -$package->getName(), -$package->getPrettyVersion(), -$opts['method'], -$config[$type] -) -); -} - -$package = $this->configureObject($package, $config); - -return $package; -} - - - - - - -public function loadPackages(array $versions): array -{ -$packages = []; -$linkCache = []; - -foreach ($versions as $version) { -$package = $this->createObject($version, 'Composer\Package\CompletePackage'); - -$this->configureCachedLinks($linkCache, $package, $version); -$package = $this->configureObject($package, $version); - -$packages[] = $package; -} - -return $packages; -} - - - - - - - - - - - -private function createObject(array $config, string $class): CompletePackage -{ -if (!isset($config['name'])) { -throw new \UnexpectedValueException('Unknown package has no name defined ('.json_encode($config).').'); -} -if (!isset($config['version']) || !is_scalar($config['version'])) { -throw new \UnexpectedValueException('Package '.$config['name'].' has no version defined.'); -} -if (!is_string($config['version'])) { -$config['version'] = (string) $config['version']; -} - - -if (isset($config['version_normalized']) && is_string($config['version_normalized'])) { -$version = $config['version_normalized']; - - -if ($version === VersionParser::DEFAULT_BRANCH_ALIAS) { -$version = $this->versionParser->normalize($config['version']); -} -} else { -$version = $this->versionParser->normalize($config['version']); -} - -return new $class($config['name'], $version, $config['version']); -} - - - - - - - -private function configureObject(PackageInterface $package, array $config): BasePackage -{ -if (!$package instanceof CompletePackage) { -throw new \LogicException('ArrayLoader expects instances of the Composer\Package\CompletePackage class to function correctly'); -} - -$package->setType(isset($config['type']) ? strtolower($config['type']) : 'library'); - -if (isset($config['target-dir'])) { -$package->setTargetDir($config['target-dir']); -} - -if (isset($config['extra']) && \is_array($config['extra'])) { -$package->setExtra($config['extra']); -} - -if (isset($config['bin'])) { -if (!\is_array($config['bin'])) { -$config['bin'] = [$config['bin']]; -} -foreach ($config['bin'] as $key => $bin) { -$config['bin'][$key] = ltrim($bin, '/'); -} -$package->setBinaries($config['bin']); -} - -if (isset($config['installation-source'])) { -$package->setInstallationSource($config['installation-source']); -} - -if (isset($config['default-branch']) && $config['default-branch'] === true) { -$package->setIsDefaultBranch(true); -} - -if (isset($config['source'])) { -if (!isset($config['source']['type'], $config['source']['url'], $config['source']['reference'])) { -throw new \UnexpectedValueException(sprintf( -"Package %s's source key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ...},\n%s given.", -$config['name'], -json_encode($config['source']) -)); -} -$package->setSourceType($config['source']['type']); -$package->setSourceUrl($config['source']['url']); -$package->setSourceReference(isset($config['source']['reference']) ? (string) $config['source']['reference'] : null); -if (isset($config['source']['mirrors'])) { -$package->setSourceMirrors($config['source']['mirrors']); -} -} - -if (isset($config['dist'])) { -if (!isset($config['dist']['type'], $config['dist']['url'])) { -throw new \UnexpectedValueException(sprintf( -"Package %s's dist key should be specified as ". -"{\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...},\n%s given.", -$config['name'], -json_encode($config['dist']) -)); -} -$package->setDistType($config['dist']['type']); -$package->setDistUrl($config['dist']['url']); -$package->setDistReference(isset($config['dist']['reference']) ? (string) $config['dist']['reference'] : null); -$package->setDistSha1Checksum($config['dist']['shasum'] ?? null); -if (isset($config['dist']['mirrors'])) { -$package->setDistMirrors($config['dist']['mirrors']); -} -} - -if (isset($config['suggest']) && \is_array($config['suggest'])) { -foreach ($config['suggest'] as $target => $reason) { -if ('self.version' === trim($reason)) { -$config['suggest'][$target] = $package->getPrettyVersion(); -} -} -$package->setSuggests($config['suggest']); -} - -if (isset($config['autoload'])) { -$package->setAutoload($config['autoload']); -} - -if (isset($config['autoload-dev'])) { -$package->setDevAutoload($config['autoload-dev']); -} - -if (isset($config['include-path'])) { -$package->setIncludePaths($config['include-path']); -} - -if (!empty($config['time'])) { -$time = Preg::isMatch('/^\d++$/D', $config['time']) ? '@'.$config['time'] : $config['time']; - -try { -$date = new \DateTime($time, new \DateTimeZone('UTC')); -$package->setReleaseDate($date); -} catch (\Exception $e) { -} -} - -if (!empty($config['notification-url'])) { -$package->setNotificationUrl($config['notification-url']); -} - -if ($package instanceof CompletePackageInterface) { -if (!empty($config['archive']['name'])) { -$package->setArchiveName($config['archive']['name']); -} -if (!empty($config['archive']['exclude'])) { -$package->setArchiveExcludes($config['archive']['exclude']); -} - -if (isset($config['scripts']) && \is_array($config['scripts'])) { -foreach ($config['scripts'] as $event => $listeners) { -$config['scripts'][$event] = (array) $listeners; -} -foreach (['composer', 'php', 'putenv'] as $reserved) { -if (isset($config['scripts'][$reserved])) { -trigger_error('The `'.$reserved.'` script name is reserved for internal use, please avoid defining it', E_USER_DEPRECATED); -} -} -$package->setScripts($config['scripts']); -} - -if (!empty($config['description']) && \is_string($config['description'])) { -$package->setDescription($config['description']); -} - -if (!empty($config['homepage']) && \is_string($config['homepage'])) { -$package->setHomepage($config['homepage']); -} - -if (!empty($config['keywords']) && \is_array($config['keywords'])) { -$package->setKeywords(array_map('strval', $config['keywords'])); -} - -if (!empty($config['license'])) { -$package->setLicense(\is_array($config['license']) ? $config['license'] : [$config['license']]); -} - -if (!empty($config['authors']) && \is_array($config['authors'])) { -$package->setAuthors($config['authors']); -} - -if (isset($config['support'])) { -$package->setSupport($config['support']); -} - -if (!empty($config['funding']) && \is_array($config['funding'])) { -$package->setFunding($config['funding']); -} - -if (isset($config['abandoned'])) { -$package->setAbandoned($config['abandoned']); -} -} - -if ($this->loadOptions && isset($config['transport-options'])) { -$package->setTransportOptions($config['transport-options']); -} - -if ($aliasNormalized = $this->getBranchAlias($config)) { -$prettyAlias = Preg::replace('{(\.9{7})+}', '.x', $aliasNormalized); - -if ($package instanceof RootPackage) { -return new RootAliasPackage($package, $aliasNormalized, $prettyAlias); -} - -return new CompleteAliasPackage($package, $aliasNormalized, $prettyAlias); -} - -return $package; -} - - - - - -private function configureCachedLinks(array &$linkCache, PackageInterface $package, array $config): void -{ -$name = $package->getName(); -$prettyVersion = $package->getPrettyVersion(); - -foreach (BasePackage::$supportedLinkTypes as $type => $opts) { -if (isset($config[$type])) { -$method = 'set'.ucfirst($opts['method']); - -$links = []; -foreach ($config[$type] as $prettyTarget => $constraint) { -$target = strtolower($prettyTarget); - - -if ($target === $name) { -continue; -} - -if ($constraint === 'self.version') { -$links[$target] = $this->createLink($name, $prettyVersion, $opts['method'], $target, $constraint); -} else { -if (!isset($linkCache[$name][$type][$target][$constraint])) { -$linkCache[$name][$type][$target][$constraint] = [$target, $this->createLink($name, $prettyVersion, $opts['method'], $target, $constraint)]; -} - -[$target, $link] = $linkCache[$name][$type][$target][$constraint]; -$links[$target] = $link; -} -} - -$package->{$method}($links); -} -} -} - - - - - - - - - - - -public function parseLinks(string $source, string $sourceVersion, string $description, array $links): array -{ -$res = []; -foreach ($links as $target => $constraint) { -if (!is_string($constraint)) { -continue; -} -$target = strtolower((string) $target); -$res[$target] = $this->createLink($source, $sourceVersion, $description, $target, $constraint); -} - -return $res; -} - - - - - - - - -private function createLink(string $source, string $sourceVersion, string $description, string $target, string $prettyConstraint): Link -{ -if (!\is_string($prettyConstraint)) { -throw new \UnexpectedValueException('Link constraint in '.$source.' '.$description.' > '.$target.' should be a string, got '.\gettype($prettyConstraint) . ' (' . var_export($prettyConstraint, true) . ')'); -} -if ('self.version' === $prettyConstraint) { -$parsedConstraint = $this->versionParser->parseConstraints($sourceVersion); -} else { -$parsedConstraint = $this->versionParser->parseConstraints($prettyConstraint); -} - -return new Link($source, $target, $parsedConstraint, $description, $prettyConstraint); -} - - - - - - - - -public function getBranchAlias(array $config): ?string -{ -if (!isset($config['version']) || !is_scalar($config['version'])) { -throw new \UnexpectedValueException('no/invalid version defined'); -} -if (!is_string($config['version'])) { -$config['version'] = (string) $config['version']; -} - -if (strpos($config['version'], 'dev-') !== 0 && '-dev' !== substr($config['version'], -4)) { -return null; -} - -if (isset($config['extra']['branch-alias']) && \is_array($config['extra']['branch-alias'])) { -foreach ($config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { -$sourceBranch = (string) $sourceBranch; - - -if ('-dev' !== substr($targetBranch, -4)) { -continue; -} - - -if ($targetBranch === VersionParser::DEFAULT_BRANCH_ALIAS) { -$validatedTargetBranch = VersionParser::DEFAULT_BRANCH_ALIAS; -} else { -$validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); -} -if ('-dev' !== substr($validatedTargetBranch, -4)) { -continue; -} - - -if (strtolower($config['version']) !== strtolower($sourceBranch)) { -continue; -} - - -if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) -&& ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) -&& (stripos($targetPrefix, $sourcePrefix) !== 0) -) { -continue; -} - -return $validatedTargetBranch; -} -} - -if ( -isset($config['default-branch']) -&& $config['default-branch'] === true -&& false === $this->versionParser->parseNumericAliasPrefix($config['version']) -) { -return VersionParser::DEFAULT_BRANCH_ALIAS; -} - -return null; -} -} diff --git a/composer/src/Composer/Package/Loader/InvalidPackageException.php b/composer/src/Composer/Package/Loader/InvalidPackageException.php deleted file mode 100644 index 5cb8e2a08..000000000 --- a/composer/src/Composer/Package/Loader/InvalidPackageException.php +++ /dev/null @@ -1,63 +0,0 @@ -errors = $errors; -$this->warnings = $warnings; -$this->data = $data; -parent::__construct("Invalid package information: \n".implode("\n", array_merge($errors, $warnings))); -} - - - - -public function getData(): array -{ -return $this->data; -} - - - - -public function getErrors(): array -{ -return $this->errors; -} - - - - -public function getWarnings(): array -{ -return $this->warnings; -} -} diff --git a/composer/src/Composer/Package/Loader/JsonLoader.php b/composer/src/Composer/Package/Loader/JsonLoader.php deleted file mode 100644 index c386b3ea1..000000000 --- a/composer/src/Composer/Package/Loader/JsonLoader.php +++ /dev/null @@ -1,56 +0,0 @@ -loader = $loader; -} - - - - - -public function load($json): BasePackage -{ -if ($json instanceof JsonFile) { -$config = $json->read(); -} elseif (file_exists($json)) { -$config = JsonFile::parseJson(file_get_contents($json), $json); -} elseif (is_string($json)) { -$config = JsonFile::parseJson($json); -} else { -throw new \InvalidArgumentException(sprintf( -"JsonLoader: Unknown \$json parameter %s. Please report at https://github.com/composer/composer/issues/new.", -gettype($json) -)); -} - -return $this->loader->load($config); -} -} diff --git a/composer/src/Composer/Package/Loader/LoaderInterface.php b/composer/src/Composer/Package/Loader/LoaderInterface.php deleted file mode 100644 index 3404b3cc7..000000000 --- a/composer/src/Composer/Package/Loader/LoaderInterface.php +++ /dev/null @@ -1,39 +0,0 @@ -manager = $manager; -$this->config = $config; -$this->versionGuesser = $versionGuesser ?: new VersionGuesser($config, new ProcessExecutor($io), $this->versionParser); -} - - - - - - - - -public function load(array $config, string $class = 'Composer\Package\RootPackage', ?string $cwd = null): BasePackage -{ -if ($class !== 'Composer\Package\RootPackage') { -trigger_error('The $class arg is deprecated, please reach out to Composer maintainers ASAP if you still need this.', E_USER_DEPRECATED); -} - -if (!isset($config['name'])) { -$config['name'] = '__root__'; -} elseif ($err = ValidatingArrayLoader::hasPackageNamingError($config['name'])) { -throw new \RuntimeException('Your package name '.$err); -} -$autoVersioned = false; -if (!isset($config['version'])) { -$commit = null; - - -if (Platform::getEnv('COMPOSER_ROOT_VERSION')) { -$config['version'] = Platform::getEnv('COMPOSER_ROOT_VERSION'); -} else { -$versionData = $this->versionGuesser->guessVersion($config, $cwd ?? Platform::getCwd(true)); -if ($versionData) { -$config['version'] = $versionData['pretty_version']; -$config['version_normalized'] = $versionData['version']; -$commit = $versionData['commit']; -} -} - -if (!isset($config['version'])) { -$config['version'] = '1.0.0'; -$autoVersioned = true; -} - -if ($commit) { -$config['source'] = [ -'type' => '', -'url' => '', -'reference' => $commit, -]; -$config['dist'] = [ -'type' => '', -'url' => '', -'reference' => $commit, -]; -} -} - - -$package = parent::load($config, $class); -if ($package instanceof RootAliasPackage) { -$realPackage = $package->getAliasOf(); -} else { -$realPackage = $package; -} - -if (!$realPackage instanceof RootPackage) { -throw new \LogicException('Expecting a Composer\Package\RootPackage at this point'); -} - -if ($autoVersioned) { -$realPackage->replaceVersion($realPackage->getVersion(), RootPackage::DEFAULT_PRETTY_VERSION); -} - -if (isset($config['minimum-stability'])) { -$realPackage->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability'])); -} - -$aliases = []; -$stabilityFlags = []; -$references = []; -foreach (['require', 'require-dev'] as $linkType) { -if (isset($config[$linkType])) { -$linkInfo = BasePackage::$supportedLinkTypes[$linkType]; -$method = 'get'.ucfirst($linkInfo['method']); -$links = []; -foreach ($realPackage->{$method}() as $link) { -$links[$link->getTarget()] = $link->getConstraint()->getPrettyString(); -} -$aliases = $this->extractAliases($links, $aliases); -$stabilityFlags = self::extractStabilityFlags($links, $realPackage->getMinimumStability(), $stabilityFlags); -$references = self::extractReferences($links, $references); - -if (isset($links[$config['name']])) { -throw new \RuntimeException(sprintf('Root package \'%s\' cannot require itself in its composer.json' . PHP_EOL . -'Did you accidentally name your root package after an external package?', $config['name'])); -} -} -} - -foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { -if (isset($config[$linkType])) { -foreach ($config[$linkType] as $linkName => $constraint) { -if ($err = ValidatingArrayLoader::hasPackageNamingError($linkName, true)) { -throw new \RuntimeException($linkType.'.'.$err); -} -} -} -} - -$realPackage->setAliases($aliases); -$realPackage->setStabilityFlags($stabilityFlags); -$realPackage->setReferences($references); - -if (isset($config['prefer-stable'])) { -$realPackage->setPreferStable((bool) $config['prefer-stable']); -} - -if (isset($config['config'])) { -$realPackage->setConfig($config['config']); -} - -$repos = RepositoryFactory::defaultRepos(null, $this->config, $this->manager); -foreach ($repos as $repo) { -$this->manager->addRepository($repo); -} -$realPackage->setRepositories($this->config->getRepositories()); - -return $package; -} - - - - - - - -private function extractAliases(array $requires, array $aliases): array -{ -foreach ($requires as $reqName => $reqVersion) { -if (Preg::isMatchStrictGroups('{(?:^|\| *|, *)([^,\s#|]+)(?:#[^ ]+)? +as +([^,\s|]+)(?:$| *\|| *,)}', $reqVersion, $match)) { -$aliases[] = [ -'package' => strtolower($reqName), -'version' => $this->versionParser->normalize($match[1], $reqVersion), -'alias' => $match[2], -'alias_normalized' => $this->versionParser->normalize($match[2], $reqVersion), -]; -} elseif (strpos($reqVersion, ' as ') !== false) { -throw new \UnexpectedValueException('Invalid alias definition in "'.$reqName.'": "'.$reqVersion.'". Aliases should be in the form "exact-version as other-exact-version".'); -} -} - -return $aliases; -} - - - - - - - - - - - - -public static function extractStabilityFlags(array $requires, string $minimumStability, array $stabilityFlags): array -{ -$stabilities = BasePackage::$stabilities; - -$minimumStability = $stabilities[$minimumStability]; -foreach ($requires as $reqName => $reqVersion) { -$constraints = []; - - -$orSplit = Preg::split('{\s*\|\|?\s*}', trim($reqVersion)); -foreach ($orSplit as $orConstraint) { -$andSplit = Preg::split('{(?< ,]) *(? $stability) { -continue; -} -$stabilityFlags[$name] = $stability; -$matched = true; -} -} - -if ($matched) { -continue; -} - -foreach ($constraints as $constraint) { - - -$reqVersion = Preg::replace('{^([^,\s@]+) as .+$}', '$1', $constraint); -if (Preg::isMatch('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) { -$name = strtolower($reqName); -$stability = $stabilities[$stabilityName]; -if ((isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) || ($minimumStability > $stability)) { -continue; -} -$stabilityFlags[$name] = $stability; -} -} -} - -return $stabilityFlags; -} - - - - - - - - - -public static function extractReferences(array $requires, array $references): array -{ -foreach ($requires as $reqName => $reqVersion) { -$reqVersion = Preg::replace('{^([^,\s@]+) as .+$}', '$1', $reqVersion); -if (Preg::isMatchStrictGroups('{^[^,\s@]+?#([a-f0-9]+)$}', $reqVersion, $match) && 'dev' === VersionParser::parseStability($reqVersion)) { -$name = strtolower($reqName); -$references[$name] = $match[1]; -} -} - -return $references; -} -} diff --git a/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php b/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php deleted file mode 100644 index 1033670cb..000000000 --- a/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php +++ /dev/null @@ -1,623 +0,0 @@ -loader = $loader; -$this->versionParser = $parser ?? new VersionParser(); -$this->flags = $flags; - -if ($strictName !== true) { -trigger_error('$strictName must be set to true in ValidatingArrayLoader\'s constructor as of 2.2, and it will be removed in 3.0', E_USER_DEPRECATED); -} -} - - - - -public function load(array $config, string $class = 'Composer\Package\CompletePackage'): BasePackage -{ -$this->errors = []; -$this->warnings = []; -$this->config = $config; - -$this->validateString('name', true); -if (isset($config['name']) && null !== ($err = self::hasPackageNamingError($config['name']))) { -$this->errors[] = 'name : '.$err; -} - -if (isset($this->config['version'])) { -if (!is_scalar($this->config['version'])) { -$this->validateString('version'); -} else { -if (!is_string($this->config['version'])) { -$this->config['version'] = (string) $this->config['version']; -} -try { -$this->versionParser->normalize($this->config['version']); -} catch (\Exception $e) { -$this->errors[] = 'version : invalid value ('.$this->config['version'].'): '.$e->getMessage(); -unset($this->config['version']); -} -} -} - -if (isset($this->config['config']['platform'])) { -foreach ((array) $this->config['config']['platform'] as $key => $platform) { -if (false === $platform) { -continue; -} -if (!is_string($platform)) { -$this->errors[] = 'config.platform.' . $key . ' : invalid value ('.gettype($platform).' '.var_export($platform, true).'): expected string or false'; -continue; -} -try { -$this->versionParser->normalize($platform); -} catch (\Exception $e) { -$this->errors[] = 'config.platform.' . $key . ' : invalid value ('.$platform.'): '.$e->getMessage(); -} -} -} - -$this->validateRegex('type', '[A-Za-z0-9-]+'); -$this->validateString('target-dir'); -$this->validateArray('extra'); - -if (isset($this->config['bin'])) { -if (is_string($this->config['bin'])) { -$this->validateString('bin'); -} else { -$this->validateFlatArray('bin'); -} -} - -$this->validateArray('scripts'); -$this->validateString('description'); -$this->validateUrl('homepage'); -$this->validateFlatArray('keywords', '[\p{N}\p{L} ._-]+'); - -$releaseDate = null; -$this->validateString('time'); -if (isset($this->config['time'])) { -try { -$releaseDate = new \DateTime($this->config['time'], new \DateTimeZone('UTC')); -} catch (\Exception $e) { -$this->errors[] = 'time : invalid value ('.$this->config['time'].'): '.$e->getMessage(); -unset($this->config['time']); -} -} - - -if (isset($this->config['license']) && (null === $releaseDate || $releaseDate->getTimestamp() >= strtotime('-8days'))) { -if (is_array($this->config['license']) || is_string($this->config['license'])) { -$licenses = (array) $this->config['license']; - -$licenseValidator = new SpdxLicenses(); -foreach ($licenses as $license) { - -if ('proprietary' === $license) { -continue; -} -$licenseToValidate = str_replace('proprietary', 'MIT', $license); -if (!$licenseValidator->validate($licenseToValidate)) { -if ($licenseValidator->validate(trim($licenseToValidate))) { -$this->warnings[] = sprintf( -'License %s must not contain extra spaces, make sure to trim it.', -json_encode($license) -); -} else { -$this->warnings[] = sprintf( -'License %s is not a valid SPDX license identifier, see https://spdx.org/licenses/ if you use an open license.' . PHP_EOL . -'If the software is closed-source, you may use "proprietary" as license.', -json_encode($license) -); -} -} -} -} -} - -if ($this->validateArray('authors')) { -foreach ($this->config['authors'] as $key => $author) { -if (!is_array($author)) { -$this->errors[] = 'authors.'.$key.' : should be an array, '.gettype($author).' given'; -unset($this->config['authors'][$key]); -continue; -} -foreach (['homepage', 'email', 'name', 'role'] as $authorData) { -if (isset($author[$authorData]) && !is_string($author[$authorData])) { -$this->errors[] = 'authors.'.$key.'.'.$authorData.' : invalid value, must be a string'; -unset($this->config['authors'][$key][$authorData]); -} -} -if (isset($author['homepage']) && !$this->filterUrl($author['homepage'])) { -$this->warnings[] = 'authors.'.$key.'.homepage : invalid value ('.$author['homepage'].'), must be an http/https URL'; -unset($this->config['authors'][$key]['homepage']); -} -if (isset($author['email']) && false === filter_var($author['email'], FILTER_VALIDATE_EMAIL)) { -$this->warnings[] = 'authors.'.$key.'.email : invalid value ('.$author['email'].'), must be a valid email address'; -unset($this->config['authors'][$key]['email']); -} -if (\count($this->config['authors'][$key]) === 0) { -unset($this->config['authors'][$key]); -} -} -if (\count($this->config['authors']) === 0) { -unset($this->config['authors']); -} -} - -if ($this->validateArray('support') && !empty($this->config['support'])) { -foreach (['issues', 'forum', 'wiki', 'source', 'email', 'irc', 'docs', 'rss', 'chat'] as $key) { -if (isset($this->config['support'][$key]) && !is_string($this->config['support'][$key])) { -$this->errors[] = 'support.'.$key.' : invalid value, must be a string'; -unset($this->config['support'][$key]); -} -} - -if (isset($this->config['support']['email']) && !filter_var($this->config['support']['email'], FILTER_VALIDATE_EMAIL)) { -$this->warnings[] = 'support.email : invalid value ('.$this->config['support']['email'].'), must be a valid email address'; -unset($this->config['support']['email']); -} - -if (isset($this->config['support']['irc']) && !$this->filterUrl($this->config['support']['irc'], ['irc', 'ircs'])) { -$this->warnings[] = 'support.irc : invalid value ('.$this->config['support']['irc'].'), must be a irc:/// or ircs:// URL'; -unset($this->config['support']['irc']); -} - -foreach (['issues', 'forum', 'wiki', 'source', 'docs', 'chat'] as $key) { -if (isset($this->config['support'][$key]) && !$this->filterUrl($this->config['support'][$key])) { -$this->warnings[] = 'support.'.$key.' : invalid value ('.$this->config['support'][$key].'), must be an http/https URL'; -unset($this->config['support'][$key]); -} -} -if (empty($this->config['support'])) { -unset($this->config['support']); -} -} - -if ($this->validateArray('funding') && !empty($this->config['funding'])) { -foreach ($this->config['funding'] as $key => $fundingOption) { -if (!is_array($fundingOption)) { -$this->errors[] = 'funding.'.$key.' : should be an array, '.gettype($fundingOption).' given'; -unset($this->config['funding'][$key]); -continue; -} -foreach (['type', 'url'] as $fundingData) { -if (isset($fundingOption[$fundingData]) && !is_string($fundingOption[$fundingData])) { -$this->errors[] = 'funding.'.$key.'.'.$fundingData.' : invalid value, must be a string'; -unset($this->config['funding'][$key][$fundingData]); -} -} -if (isset($fundingOption['url']) && !$this->filterUrl($fundingOption['url'])) { -$this->warnings[] = 'funding.'.$key.'.url : invalid value ('.$fundingOption['url'].'), must be an http/https URL'; -unset($this->config['funding'][$key]['url']); -} -if (empty($this->config['funding'][$key])) { -unset($this->config['funding'][$key]); -} -} -if (empty($this->config['funding'])) { -unset($this->config['funding']); -} -} - -$unboundConstraint = new Constraint('=', '10000000-dev'); - -foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { -if ($this->validateArray($linkType) && isset($this->config[$linkType])) { -foreach ($this->config[$linkType] as $package => $constraint) { -$package = (string) $package; -if (0 === strcasecmp($package, $this->config['name'])) { -$this->errors[] = $linkType.'.'.$package.' : a package cannot set a '.$linkType.' on itself'; -unset($this->config[$linkType][$package]); -continue; -} -if ($err = self::hasPackageNamingError($package, true)) { -$this->warnings[] = $linkType.'.'.$err; -} elseif (!Preg::isMatch('{^[A-Za-z0-9_./-]+$}', $package)) { -$this->errors[] = $linkType.'.'.$package.' : invalid key, package names must be strings containing only [A-Za-z0-9_./-]'; -} -if (!is_string($constraint)) { -$this->errors[] = $linkType.'.'.$package.' : invalid value, must be a string containing a version constraint'; -unset($this->config[$linkType][$package]); -} elseif ('self.version' !== $constraint) { -try { -$linkConstraint = $this->versionParser->parseConstraints($constraint); -} catch (\Exception $e) { -$this->errors[] = $linkType.'.'.$package.' : invalid version constraint ('.$e->getMessage().')'; -unset($this->config[$linkType][$package]); -continue; -} - - -if ( -($this->flags & self::CHECK_UNBOUND_CONSTRAINTS) -&& 'require' === $linkType -&& $linkConstraint->matches($unboundConstraint) -&& !PlatformRepository::isPlatformPackage($package) -) { -$this->warnings[] = $linkType.'.'.$package.' : unbound version constraints ('.$constraint.') should be avoided'; -} elseif ( - -($this->flags & self::CHECK_STRICT_CONSTRAINTS) -&& 'require' === $linkType -&& $linkConstraint instanceof Constraint && in_array($linkConstraint->getOperator(), ['==', '='], true) -&& (new Constraint('>=', '1.0.0.0-dev'))->matches($linkConstraint) -) { -$this->warnings[] = $linkType.'.'.$package.' : exact version constraints ('.$constraint.') should be avoided if the package follows semantic versioning'; -} -} - -if ($linkType === 'conflict' && isset($this->config['replace']) && $keys = array_intersect_key($this->config['replace'], $this->config['conflict'])) { -$this->errors[] = $linkType.'.'.$package.' : you cannot conflict with a package that is also replaced, as replace already creates an implicit conflict rule'; -unset($this->config[$linkType][$package]); -} -} -} -} - -if ($this->validateArray('suggest') && isset($this->config['suggest'])) { -foreach ($this->config['suggest'] as $package => $description) { -if (!is_string($description)) { -$this->errors[] = 'suggest.'.$package.' : invalid value, must be a string describing why the package is suggested'; -unset($this->config['suggest'][$package]); -} -} -} - -if ($this->validateString('minimum-stability') && isset($this->config['minimum-stability'])) { -if (!isset(BasePackage::$stabilities[strtolower($this->config['minimum-stability'])]) && $this->config['minimum-stability'] !== 'RC') { -$this->errors[] = 'minimum-stability : invalid value ('.$this->config['minimum-stability'].'), must be one of '.implode(', ', array_keys(BasePackage::$stabilities)); -unset($this->config['minimum-stability']); -} -} - -if ($this->validateArray('autoload') && isset($this->config['autoload'])) { -$types = ['psr-0', 'psr-4', 'classmap', 'files', 'exclude-from-classmap']; -foreach ($this->config['autoload'] as $type => $typeConfig) { -if (!in_array($type, $types)) { -$this->errors[] = 'autoload : invalid value ('.$type.'), must be one of '.implode(', ', $types); -unset($this->config['autoload'][$type]); -} -if ($type === 'psr-4') { -foreach ($typeConfig as $namespace => $dirs) { -if ($namespace !== '' && '\\' !== substr((string) $namespace, -1)) { -$this->errors[] = 'autoload.psr-4 : invalid value ('.$namespace.'), namespaces must end with a namespace separator, should be '.$namespace.'\\\\'; -} -} -} -} -} - -if (isset($this->config['autoload']['psr-4']) && isset($this->config['target-dir'])) { -$this->errors[] = 'target-dir : this can not be used together with the autoload.psr-4 setting, remove target-dir to upgrade to psr-4'; - - -unset($this->config['autoload']['psr-4']); -} - -foreach (['source', 'dist'] as $srcType) { -if ($this->validateArray($srcType) && !empty($this->config[$srcType])) { -if (!isset($this->config[$srcType]['type'])) { -$this->errors[] = $srcType . '.type : must be present'; -} -if (!isset($this->config[$srcType]['url'])) { -$this->errors[] = $srcType . '.url : must be present'; -} -if ($srcType === 'source' && !isset($this->config[$srcType]['reference'])) { -$this->errors[] = $srcType . '.reference : must be present'; -} -if (isset($this->config[$srcType]['type']) && !is_string($this->config[$srcType]['type'])) { -$this->errors[] = $srcType . '.type : should be a string, '.gettype($this->config[$srcType]['type']).' given'; -} -if (isset($this->config[$srcType]['url']) && !is_string($this->config[$srcType]['url'])) { -$this->errors[] = $srcType . '.url : should be a string, '.gettype($this->config[$srcType]['url']).' given'; -} -if (isset($this->config[$srcType]['reference']) && !is_string($this->config[$srcType]['reference']) && !is_int($this->config[$srcType]['reference'])) { -$this->errors[] = $srcType . '.reference : should be a string or int, '.gettype($this->config[$srcType]['reference']).' given'; -} -if (isset($this->config[$srcType]['reference']) && Preg::isMatch('{^\s*-}', (string) $this->config[$srcType]['reference'])) { -$this->errors[] = $srcType . '.reference : must not start with a "-", "'.$this->config[$srcType]['reference'].'" given'; -} -if (isset($this->config[$srcType]['url']) && Preg::isMatch('{^\s*-}', (string) $this->config[$srcType]['url'])) { -$this->errors[] = $srcType . '.url : must not start with a "-", "'.$this->config[$srcType]['url'].'" given'; -} -} -} - - - - -$this->validateFlatArray('include-path'); -$this->validateArray('transport-options'); - - -if (isset($this->config['extra']['branch-alias'])) { -if (!is_array($this->config['extra']['branch-alias'])) { -$this->errors[] = 'extra.branch-alias : must be an array of versions => aliases'; -} else { -foreach ($this->config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { -if (!is_string($targetBranch)) { -$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.json_encode($targetBranch).') must be a string, "'.gettype($targetBranch).'" received.'; -unset($this->config['extra']['branch-alias'][$sourceBranch]); - -continue; -} - - -if ('-dev' !== substr($targetBranch, -4)) { -$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must end in -dev'; -unset($this->config['extra']['branch-alias'][$sourceBranch]); - -continue; -} - - -$validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); -if ('-dev' !== substr($validatedTargetBranch, -4)) { -$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must be a parseable number like 2.0-dev'; -unset($this->config['extra']['branch-alias'][$sourceBranch]); - -continue; -} - - -if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) -&& ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) -&& (stripos($targetPrefix, $sourcePrefix) !== 0) -) { -$this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') is not a valid numeric alias for this version'; -unset($this->config['extra']['branch-alias'][$sourceBranch]); -} -} -} -} - -if ($this->errors) { -throw new InvalidPackageException($this->errors, $this->warnings, $config); -} - -$package = $this->loader->load($this->config, $class); -$this->config = []; - -return $package; -} - - - - -public function getWarnings(): array -{ -return $this->warnings; -} - - - - -public function getErrors(): array -{ -return $this->errors; -} - -public static function hasPackageNamingError(string $name, bool $isLink = false): ?string -{ -if (PlatformRepository::isPlatformPackage($name)) { -return null; -} - -if (!Preg::isMatch('{^[a-z0-9](?:[_.-]?[a-z0-9]++)*+/[a-z0-9](?:(?:[_.]|-{1,2})?[a-z0-9]++)*+$}iD', $name)) { -return $name.' is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$".'; -} - -$reservedNames = ['nul', 'con', 'prn', 'aux', 'com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9', 'lpt1', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9']; -$bits = explode('/', strtolower($name)); -if (in_array($bits[0], $reservedNames, true) || in_array($bits[1], $reservedNames, true)) { -return $name.' is reserved, package and vendor names can not match any of: '.implode(', ', $reservedNames).'.'; -} - -if (Preg::isMatch('{\.json$}', $name)) { -return $name.' is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.'; -} - -if (Preg::isMatch('{[A-Z]}', $name)) { -if ($isLink) { -return $name.' is invalid, it should not contain uppercase characters. Please use '.strtolower($name).' instead.'; -} - -$suggestName = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); -$suggestName = strtolower($suggestName); - -return $name.' is invalid, it should not contain uppercase characters. We suggest using '.$suggestName.' instead.'; -} - -return null; -} - - - - - -private function validateRegex(string $property, string $regex, bool $mandatory = false): bool -{ -if (!$this->validateString($property, $mandatory)) { -return false; -} - -if (!Preg::isMatch('{^'.$regex.'$}u', $this->config[$property])) { -$message = $property.' : invalid value ('.$this->config[$property].'), must match '.$regex; -if ($mandatory) { -$this->errors[] = $message; -} else { -$this->warnings[] = $message; -} -unset($this->config[$property]); - -return false; -} - -return true; -} - - - - -private function validateString(string $property, bool $mandatory = false): bool -{ -if (isset($this->config[$property]) && !is_string($this->config[$property])) { -$this->errors[] = $property.' : should be a string, '.gettype($this->config[$property]).' given'; -unset($this->config[$property]); - -return false; -} - -if (!isset($this->config[$property]) || trim($this->config[$property]) === '') { -if ($mandatory) { -$this->errors[] = $property.' : must be present'; -} -unset($this->config[$property]); - -return false; -} - -return true; -} - - - - -private function validateArray(string $property, bool $mandatory = false): bool -{ -if (isset($this->config[$property]) && !is_array($this->config[$property])) { -$this->errors[] = $property.' : should be an array, '.gettype($this->config[$property]).' given'; -unset($this->config[$property]); - -return false; -} - -if (!isset($this->config[$property]) || !count($this->config[$property])) { -if ($mandatory) { -$this->errors[] = $property.' : must be present and contain at least one element'; -} -unset($this->config[$property]); - -return false; -} - -return true; -} - - - - - -private function validateFlatArray(string $property, ?string $regex = null, bool $mandatory = false): bool -{ -if (!$this->validateArray($property, $mandatory)) { -return false; -} - -$pass = true; -foreach ($this->config[$property] as $key => $value) { -if (!is_string($value) && !is_numeric($value)) { -$this->errors[] = $property.'.'.$key.' : must be a string or int, '.gettype($value).' given'; -unset($this->config[$property][$key]); -$pass = false; - -continue; -} - -if ($regex && !Preg::isMatch('{^'.$regex.'$}u', (string) $value)) { -$this->warnings[] = $property.'.'.$key.' : invalid value ('.$value.'), must match '.$regex; -unset($this->config[$property][$key]); -$pass = false; -} -} - -return $pass; -} - - - - -private function validateUrl(string $property, bool $mandatory = false): bool -{ -if (!$this->validateString($property, $mandatory)) { -return false; -} - -if (!$this->filterUrl($this->config[$property])) { -$this->warnings[] = $property.' : invalid value ('.$this->config[$property].'), must be an http/https URL'; -unset($this->config[$property]); - -return false; -} - -return true; -} - - - - - -private function filterUrl($value, array $schemes = ['http', 'https']): bool -{ -if ($value === '') { -return true; -} - -$bits = parse_url($value); -if (empty($bits['scheme']) || empty($bits['host'])) { -return false; -} - -if (!in_array($bits['scheme'], $schemes, true)) { -return false; -} - -return true; -} -} diff --git a/composer/src/Composer/Package/Locker.php b/composer/src/Composer/Package/Locker.php deleted file mode 100644 index 4aa896c9f..000000000 --- a/composer/src/Composer/Package/Locker.php +++ /dev/null @@ -1,545 +0,0 @@ -lockFile = $lockFile; -$this->installationManager = $installationManager; -$this->hash = md5($composerFileContents); -$this->contentHash = self::getContentHash($composerFileContents); -$this->loader = new ArrayLoader(null, true); -$this->dumper = new ArrayDumper(); -$this->process = $process ?? new ProcessExecutor($io); -} - - - - - - -public static function getContentHash(string $composerFileContents): string -{ -$content = JsonFile::parseJson($composerFileContents, 'composer.json'); - -$relevantKeys = [ -'name', -'version', -'require', -'require-dev', -'conflict', -'replace', -'provide', -'minimum-stability', -'prefer-stable', -'repositories', -'extra', -]; - -$relevantContent = []; - -foreach (array_intersect($relevantKeys, array_keys($content)) as $key) { -$relevantContent[$key] = $content[$key]; -} -if (isset($content['config']['platform'])) { -$relevantContent['config']['platform'] = $content['config']['platform']; -} - -ksort($relevantContent); - -return md5(JsonFile::encode($relevantContent, 0)); -} - - - - -public function isLocked(): bool -{ -if (!$this->virtualFileWritten && !$this->lockFile->exists()) { -return false; -} - -$data = $this->getLockData(); - -return isset($data['packages']); -} - - - - -public function isFresh(): bool -{ -$lock = $this->lockFile->read(); - -if (!empty($lock['content-hash'])) { - -return $this->contentHash === $lock['content-hash']; -} - - -if (!empty($lock['hash'])) { -return $this->hash === $lock['hash']; -} - - -return false; -} - - - - - - - -public function getLockedRepository(bool $withDevReqs = false): LockArrayRepository -{ -$lockData = $this->getLockData(); -$packages = new LockArrayRepository(); - -$lockedPackages = $lockData['packages']; -if ($withDevReqs) { -if (isset($lockData['packages-dev'])) { -$lockedPackages = array_merge($lockedPackages, $lockData['packages-dev']); -} else { -throw new \RuntimeException('The lock file does not contain require-dev information, run install with the --no-dev option or delete it and run composer update to generate a new lock file.'); -} -} - -if (empty($lockedPackages)) { -return $packages; -} - -if (isset($lockedPackages[0]['name'])) { -$packageByName = []; -foreach ($lockedPackages as $info) { -$package = $this->loader->load($info); -$packages->addPackage($package); -$packageByName[$package->getName()] = $package; - -if ($package instanceof AliasPackage) { -$packageByName[$package->getAliasOf()->getName()] = $package->getAliasOf(); -} -} - -if (isset($lockData['aliases'])) { -foreach ($lockData['aliases'] as $alias) { -if (isset($packageByName[$alias['package']])) { -$aliasPkg = new CompleteAliasPackage($packageByName[$alias['package']], $alias['alias_normalized'], $alias['alias']); -$aliasPkg->setRootPackageAlias(true); -$packages->addPackage($aliasPkg); -} -} -} - -return $packages; -} - -throw new \RuntimeException('Your composer.lock is invalid. Run "composer update" to generate a new one.'); -} - - - - -public function getDevPackageNames(): array -{ -$names = []; -$lockData = $this->getLockData(); -if (isset($lockData['packages-dev'])) { -foreach ($lockData['packages-dev'] as $package) { -$names[] = strtolower($package['name']); -} -} - -return $names; -} - - - - - - - -public function getPlatformRequirements(bool $withDevReqs = false): array -{ -$lockData = $this->getLockData(); -$requirements = []; - -if (!empty($lockData['platform'])) { -$requirements = $this->loader->parseLinks( -'__root__', -'1.0.0', -Link::TYPE_REQUIRE, -$lockData['platform'] ?? [] -); -} - -if ($withDevReqs && !empty($lockData['platform-dev'])) { -$devRequirements = $this->loader->parseLinks( -'__root__', -'1.0.0', -Link::TYPE_REQUIRE, -$lockData['platform-dev'] ?? [] -); - -$requirements = array_merge($requirements, $devRequirements); -} - -return $requirements; -} - -public function getMinimumStability(): string -{ -$lockData = $this->getLockData(); - -return $lockData['minimum-stability'] ?? 'stable'; -} - - - - -public function getStabilityFlags(): array -{ -$lockData = $this->getLockData(); - -return $lockData['stability-flags'] ?? []; -} - -public function getPreferStable(): ?bool -{ -$lockData = $this->getLockData(); - - - -return $lockData['prefer-stable'] ?? null; -} - -public function getPreferLowest(): ?bool -{ -$lockData = $this->getLockData(); - - - -return $lockData['prefer-lowest'] ?? null; -} - - - - -public function getPlatformOverrides(): array -{ -$lockData = $this->getLockData(); - -return $lockData['platform-overrides'] ?? []; -} - - - - - - -public function getAliases(): array -{ -$lockData = $this->getLockData(); - -return $lockData['aliases'] ?? []; -} - - - - -public function getPluginApi() -{ -$lockData = $this->getLockData(); - -return $lockData['plugin-api-version'] ?? '1.1.0'; -} - - - - -public function getLockData(): array -{ -if (null !== $this->lockDataCache) { -return $this->lockDataCache; -} - -if (!$this->lockFile->exists()) { -throw new \LogicException('No lockfile found. Unable to read locked packages'); -} - -return $this->lockDataCache = $this->lockFile->read(); -} - - - - - - - - - - - - - - - -public function setLockData(array $packages, ?array $devPackages, array $platformReqs, array $platformDevReqs, array $aliases, string $minimumStability, array $stabilityFlags, bool $preferStable, bool $preferLowest, array $platformOverrides, bool $write = true): bool -{ - - -$aliases = array_map(static function ($alias): array { -if (in_array($alias['version'], ['dev-master', 'dev-trunk', 'dev-default'], true)) { -$alias['version'] = VersionParser::DEFAULT_BRANCH_ALIAS; -} - -return $alias; -}, $aliases); - -$lock = [ -'_readme' => ['This file locks the dependencies of your project to a known state', -'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies', -'This file is @gener'.'ated automatically', ], -'content-hash' => $this->contentHash, -'packages' => null, -'packages-dev' => null, -'aliases' => $aliases, -'minimum-stability' => $minimumStability, -'stability-flags' => $stabilityFlags, -'prefer-stable' => $preferStable, -'prefer-lowest' => $preferLowest, -]; - -$lock['packages'] = $this->lockPackages($packages); -if (null !== $devPackages) { -$lock['packages-dev'] = $this->lockPackages($devPackages); -} - -$lock['platform'] = $platformReqs; -$lock['platform-dev'] = $platformDevReqs; -if (\count($platformOverrides) > 0) { -$lock['platform-overrides'] = $platformOverrides; -} -$lock['plugin-api-version'] = PluginInterface::PLUGIN_API_VERSION; - -try { -$isLocked = $this->isLocked(); -} catch (ParsingException $e) { -$isLocked = false; -} -if (!$isLocked || $lock !== $this->getLockData()) { -if ($write) { -$this->lockFile->write($lock); -$this->lockDataCache = null; -$this->virtualFileWritten = false; -} else { -$this->virtualFileWritten = true; -$this->lockDataCache = JsonFile::parseJson(JsonFile::encode($lock)); -} - -return true; -} - -return false; -} - - - - - - - - -private function lockPackages(array $packages): array -{ -$locked = []; - -foreach ($packages as $package) { -if ($package instanceof AliasPackage) { -continue; -} - -$name = $package->getPrettyName(); -$version = $package->getPrettyVersion(); - -if (!$name || !$version) { -throw new \LogicException(sprintf( -'Package "%s" has no version or name and can not be locked', -$package -)); -} - -$spec = $this->dumper->dump($package); -unset($spec['version_normalized']); - - -$time = $spec['time'] ?? null; -unset($spec['time']); -if ($package->isDev() && $package->getInstallationSource() === 'source') { - -$time = $this->getPackageTime($package) ?: $time; -} -if (null !== $time) { -$spec['time'] = $time; -} - -unset($spec['installation-source']); - -$locked[] = $spec; -} - -usort($locked, static function ($a, $b) { -$comparison = strcmp($a['name'], $b['name']); - -if (0 !== $comparison) { -return $comparison; -} - - -return strcmp($a['version'], $b['version']); -}); - -return $locked; -} - - - - - - - -private function getPackageTime(PackageInterface $package): ?string -{ -if (!function_exists('proc_open')) { -return null; -} - -$path = realpath($this->installationManager->getInstallPath($package)); -$sourceType = $package->getSourceType(); -$datetime = null; - -if ($path && in_array($sourceType, ['git', 'hg'])) { -$sourceRef = $package->getSourceReference() ?: $package->getDistReference(); -switch ($sourceType) { -case 'git': -GitUtil::cleanEnv(); - -if (0 === $this->process->execute('git log -n1 --pretty=%ct '.ProcessExecutor::escape($sourceRef).GitUtil::getNoShowSignatureFlag($this->process), $output, $path) && Preg::isMatch('{^\s*\d+\s*$}', $output)) { -$datetime = new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); -} -break; - -case 'hg': -if (0 === $this->process->execute('hg log --template "{date|hgdate}" -r '.ProcessExecutor::escape($sourceRef), $output, $path) && Preg::isMatch('{^\s*(\d+)\s*}', $output, $match)) { -$datetime = new \DateTime('@'.$match[1], new \DateTimeZone('UTC')); -} -break; -} -} - -return $datetime ? $datetime->format(DATE_RFC3339) : null; -} - - - - -public function getMissingRequirementInfo(RootPackageInterface $package, bool $includeDev): array -{ -$missingRequirementInfo = []; -$missingRequirements = false; -$sets = [['repo' => $this->getLockedRepository(false), 'method' => 'getRequires', 'description' => 'Required']]; -if ($includeDev === true) { -$sets[] = ['repo' => $this->getLockedRepository(true), 'method' => 'getDevRequires', 'description' => 'Required (in require-dev)']; -} - -foreach ($sets as $set) { -$installedRepo = new InstalledRepository([$set['repo']]); - -foreach (call_user_func([$package, $set['method']]) as $link) { -if (PlatformRepository::isPlatformPackage($link->getTarget())) { -continue; -} -if ($link->getPrettyConstraint() === 'self.version') { -continue; -} -if ($installedRepo->findPackagesWithReplacersAndProviders($link->getTarget(), $link->getConstraint()) === []) { -$results = $installedRepo->findPackagesWithReplacersAndProviders($link->getTarget()); -if ($results !== []) { -$provider = reset($results); -$missingRequirementInfo[] = '- ' . $set['description'].' package "' . $link->getTarget() . '" is in the lock file as "'.$provider->getPrettyVersion().'" but that does not satisfy your constraint "'.$link->getPrettyConstraint().'".'; -} else { -$missingRequirementInfo[] = '- ' . $set['description'].' package "' . $link->getTarget() . '" is not present in the lock file.'; -} -$missingRequirements = true; -} -} -} - -if ($missingRequirements) { -$missingRequirementInfo[] = 'This usually happens when composer files are incorrectly merged or the composer.json file is manually edited.'; -$missingRequirementInfo[] = 'Read more about correctly resolving merge conflicts https://getcomposer.org/doc/articles/resolving-merge-conflicts.md'; -$missingRequirementInfo[] = 'and prefer using the "require" command over editing the composer.json file directly https://getcomposer.org/doc/03-cli.md#require-r'; -} - -return $missingRequirementInfo; -} -} diff --git a/composer/src/Composer/Package/Package.php b/composer/src/Composer/Package/Package.php deleted file mode 100644 index 645d10739..000000000 --- a/composer/src/Composer/Package/Package.php +++ /dev/null @@ -1,711 +0,0 @@ -version = $version; -$this->prettyVersion = $prettyVersion; - -$this->stability = VersionParser::parseStability($version); -$this->dev = $this->stability === 'dev'; -} - - - - -public function isDev(): bool -{ -return $this->dev; -} - -public function setType(string $type): void -{ -$this->type = $type; -} - - - - -public function getType(): string -{ -return $this->type ?: 'library'; -} - - - - -public function getStability(): string -{ -return $this->stability; -} - -public function setTargetDir(?string $targetDir): void -{ -$this->targetDir = $targetDir; -} - - - - -public function getTargetDir(): ?string -{ -if (null === $this->targetDir) { -return null; -} - -return ltrim(Preg::replace('{ (?:^|[\\\\/]+) \.\.? (?:[\\\\/]+|$) (?:\.\.? (?:[\\\\/]+|$) )*}x', '/', $this->targetDir), '/'); -} - - - - -public function setExtra(array $extra): void -{ -$this->extra = $extra; -} - - - - -public function getExtra(): array -{ -return $this->extra; -} - - - - -public function setBinaries(array $binaries): void -{ -$this->binaries = $binaries; -} - - - - -public function getBinaries(): array -{ -return $this->binaries; -} - - - - -public function setInstallationSource(?string $type): void -{ -$this->installationSource = $type; -} - - - - -public function getInstallationSource(): ?string -{ -return $this->installationSource; -} - -public function setSourceType(?string $type): void -{ -$this->sourceType = $type; -} - - - - -public function getSourceType(): ?string -{ -return $this->sourceType; -} - -public function setSourceUrl(?string $url): void -{ -$this->sourceUrl = $url; -} - - - - -public function getSourceUrl(): ?string -{ -return $this->sourceUrl; -} - -public function setSourceReference(?string $reference): void -{ -$this->sourceReference = $reference; -} - - - - -public function getSourceReference(): ?string -{ -return $this->sourceReference; -} - -public function setSourceMirrors(?array $mirrors): void -{ -$this->sourceMirrors = $mirrors; -} - - - - -public function getSourceMirrors(): ?array -{ -return $this->sourceMirrors; -} - - - - -public function getSourceUrls(): array -{ -return $this->getUrls($this->sourceUrl, $this->sourceMirrors, $this->sourceReference, $this->sourceType, 'source'); -} - - - - -public function setDistType(?string $type): void -{ -$this->distType = $type === '' ? null : $type; -} - - - - -public function getDistType(): ?string -{ -return $this->distType; -} - - - - -public function setDistUrl(?string $url): void -{ -$this->distUrl = $url === '' ? null : $url; -} - - - - -public function getDistUrl(): ?string -{ -return $this->distUrl; -} - - - - -public function setDistReference(?string $reference): void -{ -$this->distReference = $reference; -} - - - - -public function getDistReference(): ?string -{ -return $this->distReference; -} - - - - -public function setDistSha1Checksum(?string $sha1checksum): void -{ -$this->distSha1Checksum = $sha1checksum; -} - - - - -public function getDistSha1Checksum(): ?string -{ -return $this->distSha1Checksum; -} - -public function setDistMirrors(?array $mirrors): void -{ -$this->distMirrors = $mirrors; -} - - - - -public function getDistMirrors(): ?array -{ -return $this->distMirrors; -} - - - - -public function getDistUrls(): array -{ -return $this->getUrls($this->distUrl, $this->distMirrors, $this->distReference, $this->distType, 'dist'); -} - - - - -public function getTransportOptions(): array -{ -return $this->transportOptions; -} - - - - -public function setTransportOptions(array $options): void -{ -$this->transportOptions = $options; -} - - - - -public function getVersion(): string -{ -return $this->version; -} - - - - -public function getPrettyVersion(): string -{ -return $this->prettyVersion; -} - -public function setReleaseDate(?\DateTimeInterface $releaseDate): void -{ -$this->releaseDate = $releaseDate; -} - - - - -public function getReleaseDate(): ?\DateTimeInterface -{ -return $this->releaseDate; -} - - - - - - -public function setRequires(array $requires): void -{ -if (isset($requires[0])) { -$requires = $this->convertLinksToMap($requires, 'setRequires'); -} - -$this->requires = $requires; -} - - - - -public function getRequires(): array -{ -return $this->requires; -} - - - - - - -public function setConflicts(array $conflicts): void -{ -if (isset($conflicts[0])) { -$conflicts = $this->convertLinksToMap($conflicts, 'setConflicts'); -} - -$this->conflicts = $conflicts; -} - - - - - -public function getConflicts(): array -{ -return $this->conflicts; -} - - - - - - -public function setProvides(array $provides): void -{ -if (isset($provides[0])) { -$provides = $this->convertLinksToMap($provides, 'setProvides'); -} - -$this->provides = $provides; -} - - - - - -public function getProvides(): array -{ -return $this->provides; -} - - - - - - -public function setReplaces(array $replaces): void -{ -if (isset($replaces[0])) { -$replaces = $this->convertLinksToMap($replaces, 'setReplaces'); -} - -$this->replaces = $replaces; -} - - - - - -public function getReplaces(): array -{ -return $this->replaces; -} - - - - - - -public function setDevRequires(array $devRequires): void -{ -if (isset($devRequires[0])) { -$devRequires = $this->convertLinksToMap($devRequires, 'setDevRequires'); -} - -$this->devRequires = $devRequires; -} - - - - -public function getDevRequires(): array -{ -return $this->devRequires; -} - - - - - - -public function setSuggests(array $suggests): void -{ -$this->suggests = $suggests; -} - - - - -public function getSuggests(): array -{ -return $this->suggests; -} - - - - - - - - -public function setAutoload(array $autoload): void -{ -$this->autoload = $autoload; -} - - - - -public function getAutoload(): array -{ -return $this->autoload; -} - - - - - - - - -public function setDevAutoload(array $devAutoload): void -{ -$this->devAutoload = $devAutoload; -} - - - - -public function getDevAutoload(): array -{ -return $this->devAutoload; -} - - - - - - -public function setIncludePaths(array $includePaths): void -{ -$this->includePaths = $includePaths; -} - - - - -public function getIncludePaths(): array -{ -return $this->includePaths; -} - - - - -public function setNotificationUrl(string $notificationUrl): void -{ -$this->notificationUrl = $notificationUrl; -} - - - - -public function getNotificationUrl(): ?string -{ -return $this->notificationUrl; -} - -public function setIsDefaultBranch(bool $defaultBranch): void -{ -$this->isDefaultBranch = $defaultBranch; -} - - - - -public function isDefaultBranch(): bool -{ -return $this->isDefaultBranch; -} - - - - -public function setSourceDistReferences(string $reference): void -{ -$this->setSourceReference($reference); - - - -if ( -$this->getDistUrl() !== null -&& Preg::isMatch('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $this->getDistUrl()) -) { -$this->setDistReference($reference); -$this->setDistUrl(Preg::replace('{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i', $reference, $this->getDistUrl())); -} elseif ($this->getDistReference()) { -$this->setDistReference($reference); -} -} - - - - - - - - -public function replaceVersion(string $version, string $prettyVersion): void -{ -$this->version = $version; -$this->prettyVersion = $prettyVersion; - -$this->stability = VersionParser::parseStability($version); -$this->dev = $this->stability === 'dev'; -} - - - - - - - - -protected function getUrls(?string $url, ?array $mirrors, ?string $ref, ?string $type, string $urlType): array -{ -if (!$url) { -return []; -} - -if ($urlType === 'dist' && false !== strpos($url, '%')) { -$url = ComposerMirror::processUrl($url, $this->name, $this->version, $ref, $type, $this->prettyVersion); -} - -$urls = [$url]; -if ($mirrors) { -foreach ($mirrors as $mirror) { -if ($urlType === 'dist') { -$mirrorUrl = ComposerMirror::processUrl($mirror['url'], $this->name, $this->version, $ref, $type, $this->prettyVersion); -} elseif ($urlType === 'source' && $type === 'git') { -$mirrorUrl = ComposerMirror::processGitUrl($mirror['url'], $this->name, $url, $type); -} elseif ($urlType === 'source' && $type === 'hg') { -$mirrorUrl = ComposerMirror::processHgUrl($mirror['url'], $this->name, $url, $type); -} else { -continue; -} -if (!\in_array($mirrorUrl, $urls)) { -$func = $mirror['preferred'] ? 'array_unshift' : 'array_push'; -$func($urls, $mirrorUrl); -} -} -} - -return $urls; -} - - - - - -private function convertLinksToMap(array $links, string $source): array -{ -trigger_error('Package::'.$source.' must be called with a map of lowercased package name => Link object, got a indexed array, this is deprecated and you should fix your usage.'); -$newLinks = []; -foreach ($links as $link) { -$newLinks[$link->getTarget()] = $link; -} - -return $newLinks; -} -} diff --git a/composer/src/Composer/Package/PackageInterface.php b/composer/src/Composer/Package/PackageInterface.php deleted file mode 100644 index 4ac4c9253..000000000 --- a/composer/src/Composer/Package/PackageInterface.php +++ /dev/null @@ -1,393 +0,0 @@ -aliasOf; -} - - - - -public function getAliases(): array -{ -return $this->aliasOf->getAliases(); -} - - - - -public function getMinimumStability(): string -{ -return $this->aliasOf->getMinimumStability(); -} - - - - -public function getStabilityFlags(): array -{ -return $this->aliasOf->getStabilityFlags(); -} - - - - -public function getReferences(): array -{ -return $this->aliasOf->getReferences(); -} - - - - -public function getPreferStable(): bool -{ -return $this->aliasOf->getPreferStable(); -} - - - - -public function getConfig(): array -{ -return $this->aliasOf->getConfig(); -} - - - - -public function setRequires(array $requires): void -{ -$this->requires = $this->replaceSelfVersionDependencies($requires, Link::TYPE_REQUIRE); - -$this->aliasOf->setRequires($requires); -} - - - - -public function setDevRequires(array $devRequires): void -{ -$this->devRequires = $this->replaceSelfVersionDependencies($devRequires, Link::TYPE_DEV_REQUIRE); - -$this->aliasOf->setDevRequires($devRequires); -} - - - - -public function setConflicts(array $conflicts): void -{ -$this->conflicts = $this->replaceSelfVersionDependencies($conflicts, Link::TYPE_CONFLICT); -$this->aliasOf->setConflicts($conflicts); -} - - - - -public function setProvides(array $provides): void -{ -$this->provides = $this->replaceSelfVersionDependencies($provides, Link::TYPE_PROVIDE); -$this->aliasOf->setProvides($provides); -} - - - - -public function setReplaces(array $replaces): void -{ -$this->replaces = $this->replaceSelfVersionDependencies($replaces, Link::TYPE_REPLACE); -$this->aliasOf->setReplaces($replaces); -} - - - - -public function setAutoload(array $autoload): void -{ -$this->aliasOf->setAutoload($autoload); -} - - - - -public function setDevAutoload(array $devAutoload): void -{ -$this->aliasOf->setDevAutoload($devAutoload); -} - - - - -public function setStabilityFlags(array $stabilityFlags): void -{ -$this->aliasOf->setStabilityFlags($stabilityFlags); -} - - - - -public function setMinimumStability(string $minimumStability): void -{ -$this->aliasOf->setMinimumStability($minimumStability); -} - - - - -public function setPreferStable(bool $preferStable): void -{ -$this->aliasOf->setPreferStable($preferStable); -} - - - - -public function setConfig(array $config): void -{ -$this->aliasOf->setConfig($config); -} - - - - -public function setReferences(array $references): void -{ -$this->aliasOf->setReferences($references); -} - - - - -public function setAliases(array $aliases): void -{ -$this->aliasOf->setAliases($aliases); -} - - - - -public function setSuggests(array $suggests): void -{ -$this->aliasOf->setSuggests($suggests); -} - - - - -public function setExtra(array $extra): void -{ -$this->aliasOf->setExtra($extra); -} - -public function __clone() -{ -parent::__clone(); -$this->aliasOf = clone $this->aliasOf; -} -} diff --git a/composer/src/Composer/Package/RootPackage.php b/composer/src/Composer/Package/RootPackage.php deleted file mode 100644 index 8a6d8de77..000000000 --- a/composer/src/Composer/Package/RootPackage.php +++ /dev/null @@ -1,132 +0,0 @@ -minimumStability = $minimumStability; -} - - - - -public function getMinimumStability(): string -{ -return $this->minimumStability; -} - - - - -public function setStabilityFlags(array $stabilityFlags): void -{ -$this->stabilityFlags = $stabilityFlags; -} - - - - -public function getStabilityFlags(): array -{ -return $this->stabilityFlags; -} - - - - -public function setPreferStable(bool $preferStable): void -{ -$this->preferStable = $preferStable; -} - - - - -public function getPreferStable(): bool -{ -return $this->preferStable; -} - - - - -public function setConfig(array $config): void -{ -$this->config = $config; -} - - - - -public function getConfig(): array -{ -return $this->config; -} - - - - -public function setReferences(array $references): void -{ -$this->references = $references; -} - - - - -public function getReferences(): array -{ -return $this->references; -} - - - - -public function setAliases(array $aliases): void -{ -$this->aliases = $aliases; -} - - - - -public function getAliases(): array -{ -return $this->aliases; -} -} diff --git a/composer/src/Composer/Package/RootPackageInterface.php b/composer/src/Composer/Package/RootPackageInterface.php deleted file mode 100644 index d344536a1..000000000 --- a/composer/src/Composer/Package/RootPackageInterface.php +++ /dev/null @@ -1,169 +0,0 @@ -getPrettyString(); -if (str_starts_with($constraint->getPrettyString(), 'dev-')) { -return $prettyConstraint; -} - -$version = $package->getVersion(); -if (str_starts_with($package->getVersion(), 'dev-')) { -$loader = new ArrayLoader($parser); -$dumper = new ArrayDumper(); -$extra = $loader->getBranchAlias($dumper->dump($package)); - - -if (null === $extra || $extra === VersionParser::DEFAULT_BRANCH_ALIAS) { -return $prettyConstraint; -} - -$version = $extra; -} - -$intervals = Intervals::get($constraint); - - -if (\count($intervals['branches']['names']) > 0) { -return $prettyConstraint; -} - -$major = Preg::replace('{^(\d+).*}', '$1', $version); -$versionWithoutSuffix = Preg::replace('{(?:\.(?:0|9999999))+(-dev)?$}', '', $version); -$newPrettyConstraint = '^'.$versionWithoutSuffix; - - -if (!Preg::isMatch('{^\^\d+(\.\d+)*$}', $newPrettyConstraint)) { -return $prettyConstraint; -} - -$pattern = '{ - (?<=,|\ |\||^) # leading separator - (?P - \^'.$major.'(?:\.\d+)* # e.g. ^2.anything - | ~'.$major.'(?:\.\d+)? # e.g. ~2 or ~2.2 but no more - | '.$major.'(?:\.[*x])+ # e.g. 2.* or 2.*.* or 2.x.x.x etc - | >=\d(?:\.\d+)* # e.g. >=2 or >=1.2 etc - ) - (?=,|$|\ |\||@) # trailing separator - }x'; -if (Preg::isMatchAllWithOffsets($pattern, $prettyConstraint, $matches)) { -$modified = $prettyConstraint; -foreach (array_reverse($matches['constraint']) as $match) { -assert(is_string($match[0])); -$suffix = ''; -if (substr_count($match[0], '.') === 2 && substr_count($versionWithoutSuffix, '.') === 1) { -$suffix = '.0'; -} -if (str_starts_with($match[0], '>=')) { -$replacement = '>='.$versionWithoutSuffix.$suffix; -} else { -$replacement = $newPrettyConstraint.$suffix; -} -$modified = substr_replace($modified, $replacement, $match[1], Platform::strlen($match[0])); -} - - -$newConstraint = $parser->parseConstraints($modified); -if (Intervals::isSubsetOf($newConstraint, $constraint) && Intervals::isSubsetOf($constraint, $newConstraint)) { -return $prettyConstraint; -} - -return $modified; -} - -return $prettyConstraint; -} -} diff --git a/composer/src/Composer/Package/Version/VersionGuesser.php b/composer/src/Composer/Package/Version/VersionGuesser.php deleted file mode 100644 index 146cd6ca1..000000000 --- a/composer/src/Composer/Package/Version/VersionGuesser.php +++ /dev/null @@ -1,423 +0,0 @@ -config = $config; -$this->process = $process; -$this->versionParser = $versionParser; -} - - - - - - - -public function guessVersion(array $packageConfig, string $path): ?array -{ -if (!function_exists('proc_open')) { -return null; -} - - - -if (Platform::isInputCompletionProcess()) { -return null; -} - -$versionData = $this->guessGitVersion($packageConfig, $path); -if (null !== $versionData && null !== $versionData['version']) { -return $this->postprocess($versionData); -} - -$versionData = $this->guessHgVersion($packageConfig, $path); -if (null !== $versionData && null !== $versionData['version']) { -return $this->postprocess($versionData); -} - -$versionData = $this->guessFossilVersion($path); -if (null !== $versionData && null !== $versionData['version']) { -return $this->postprocess($versionData); -} - -$versionData = $this->guessSvnVersion($packageConfig, $path); -if (null !== $versionData && null !== $versionData['version']) { -return $this->postprocess($versionData); -} - -return null; -} - - - - - - -private function postprocess(array $versionData): array -{ -if (!empty($versionData['feature_version']) && $versionData['feature_version'] === $versionData['version'] && $versionData['feature_pretty_version'] === $versionData['pretty_version']) { -unset($versionData['feature_version'], $versionData['feature_pretty_version']); -} - -if ('-dev' === substr($versionData['version'], -4) && Preg::isMatch('{\.9{7}}', $versionData['version'])) { -$versionData['pretty_version'] = Preg::replace('{(\.9{7})+}', '.x', $versionData['version']); -} - -if (!empty($versionData['feature_version']) && '-dev' === substr($versionData['feature_version'], -4) && Preg::isMatch('{\.9{7}}', $versionData['feature_version'])) { -$versionData['feature_pretty_version'] = Preg::replace('{(\.9{7})+}', '.x', $versionData['feature_version']); -} - -return $versionData; -} - - - - - - -private function guessGitVersion(array $packageConfig, string $path): array -{ -GitUtil::cleanEnv(); -$commit = null; -$version = null; -$prettyVersion = null; -$featureVersion = null; -$featurePrettyVersion = null; -$isDetached = false; - - -if (0 === $this->process->execute(['git', 'branch', '-a', '--no-color', '--no-abbrev', '-v'], $output, $path)) { -$branches = []; -$isFeatureBranch = false; - - -foreach ($this->process->splitLines($output) as $branch) { -if ($branch && Preg::isMatchStrictGroups('{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}', $branch, $match)) { -if ( -$match[1] === '(no branch)' -|| strpos($match[1], '(detached ') === 0 -|| strpos($match[1], '(HEAD detached at') === 0 -) { -$version = 'dev-' . $match[2]; -$prettyVersion = $version; -$isFeatureBranch = true; -$isDetached = true; -} else { -$version = $this->versionParser->normalizeBranch($match[1]); -$prettyVersion = 'dev-' . $match[1]; -$isFeatureBranch = $this->isFeatureBranch($packageConfig, $match[1]); -} - -$commit = $match[2]; -} - -if ($branch && !Preg::isMatchStrictGroups('{^ *.+/HEAD }', $branch)) { -if (Preg::isMatchStrictGroups('{^(?:\* )? *((?:remotes/(?:origin|upstream)/)?[^\s/]+) *([a-f0-9]+) .*$}', $branch, $match)) { -$branches[] = $match[1]; -} -} -} - -if ($isFeatureBranch) { -$featureVersion = $version; -$featurePrettyVersion = $prettyVersion; - - -$result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'git rev-list %candidate%..%branch%', $path); -$version = $result['version']; -$prettyVersion = $result['pretty_version']; -} -} - -if (!$version || $isDetached) { -$result = $this->versionFromGitTags($path); -if ($result) { -$version = $result['version']; -$prettyVersion = $result['pretty_version']; -$featureVersion = null; -$featurePrettyVersion = null; -} -} - -if (null === $commit) { -$command = 'git log --pretty="%H" -n1 HEAD'.GitUtil::getNoShowSignatureFlag($this->process); -if (0 === $this->process->execute($command, $output, $path)) { -$commit = trim($output) ?: null; -} -} - -if ($featureVersion) { -return ['version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion, 'feature_version' => $featureVersion, 'feature_pretty_version' => $featurePrettyVersion]; -} - -return ['version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion]; -} - - - - -private function versionFromGitTags(string $path): ?array -{ - -if (0 === $this->process->execute('git describe --exact-match --tags', $output, $path)) { -try { -$version = $this->versionParser->normalize(trim($output)); - -return ['version' => $version, 'pretty_version' => trim($output)]; -} catch (\Exception $e) { -} -} - -return null; -} - - - - - - -private function guessHgVersion(array $packageConfig, string $path): ?array -{ - -if (0 === $this->process->execute('hg branch', $output, $path)) { -$branch = trim($output); -$version = $this->versionParser->normalizeBranch($branch); -$isFeatureBranch = 0 === strpos($version, 'dev-'); - -if (VersionParser::DEFAULT_BRANCH_ALIAS === $version) { -return ['version' => $version, 'commit' => null, 'pretty_version' => 'dev-'.$branch]; -} - -if (!$isFeatureBranch) { -return ['version' => $version, 'commit' => null, 'pretty_version' => $version]; -} - - -$io = new NullIO(); -$driver = new HgDriver(['url' => $path], $io, $this->config, new HttpDownloader($io, $this->config), $this->process); -$branches = array_map('strval', array_keys($driver->getBranches())); - - -$result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'hg log -r "not ancestors(\'%candidate%\') and ancestors(\'%branch%\')" --template "{node}\\n"', $path); -$result['commit'] = ''; -$result['feature_version'] = $version; -$result['feature_pretty_version'] = $version; - -return $result; -} - -return null; -} - - - - - - - - - -private function guessFeatureVersion(array $packageConfig, ?string $version, array $branches, string $scmCmdline, string $path): array -{ -$prettyVersion = $version; - - - -if (!isset($packageConfig['extra']['branch-alias'][$version]) -|| strpos(json_encode($packageConfig), '"self.version"') -) { -$branch = Preg::replace('{^dev-}', '', $version); -$length = PHP_INT_MAX; - - -if (!$this->isFeatureBranch($packageConfig, $branch)) { -return ['version' => $version, 'pretty_version' => $prettyVersion]; -} - - - - -usort($branches, static function ($a, $b): int { -$aRemote = 0 === strpos($a, 'remotes/'); -$bRemote = 0 === strpos($b, 'remotes/'); - -if ($aRemote !== $bRemote) { -return $aRemote ? 1 : -1; -} - -return strnatcasecmp($b, $a); -}); - -$promises = []; -$this->process->setMaxJobs(30); -try { -foreach ($branches as $candidate) { -$candidateVersion = Preg::replace('{^remotes/\S+/}', '', $candidate); - - -if ($candidate === $branch || $this->isFeatureBranch($packageConfig, $candidateVersion)) { -continue; -} - -$cmdLine = str_replace(['%candidate%', '%branch%'], [$candidate, $branch], $scmCmdline); -$promises[] = $this->process->executeAsync($cmdLine, $path)->then(function (Process $process) use (&$length, &$version, &$prettyVersion, $candidateVersion, &$promises): void { -if (!$process->isSuccessful()) { -return; -} - -$output = $process->getOutput(); -if (strlen($output) < $length) { -$length = strlen($output); -$version = $this->versionParser->normalizeBranch($candidateVersion); -$prettyVersion = 'dev-' . $candidateVersion; -if ($length === 0) { -foreach ($promises as $promise) { -if ($promise instanceof CancellablePromiseInterface) { -$promise->cancel(); -} -} -} -} -}); -} - -$this->process->wait(); -} finally { -$this->process->resetMaxJobs(); -} -} - -return ['version' => $version, 'pretty_version' => $prettyVersion]; -} - - - - -private function isFeatureBranch(array $packageConfig, ?string $branchName): bool -{ -$nonFeatureBranches = ''; -if (!empty($packageConfig['non-feature-branches'])) { -$nonFeatureBranches = implode('|', $packageConfig['non-feature-branches']); -} - -return !Preg::isMatch('{^(' . $nonFeatureBranches . '|master|main|latest|next|current|support|tip|trunk|default|develop|\d+\..+)$}', $branchName, $match); -} - - - - -private function guessFossilVersion(string $path): array -{ -$version = null; -$prettyVersion = null; - - -if (0 === $this->process->execute('fossil branch list', $output, $path)) { -$branch = trim($output); -$version = $this->versionParser->normalizeBranch($branch); -$prettyVersion = 'dev-' . $branch; -} - - -if (0 === $this->process->execute('fossil tag list', $output, $path)) { -try { -$version = $this->versionParser->normalize(trim($output)); -$prettyVersion = trim($output); -} catch (\Exception $e) { -} -} - -return ['version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion]; -} - - - - - - -private function guessSvnVersion(array $packageConfig, string $path): ?array -{ -SvnUtil::cleanEnv(); - - -if (0 === $this->process->execute('svn info --xml', $output, $path)) { -$trunkPath = isset($packageConfig['trunk-path']) ? preg_quote($packageConfig['trunk-path'], '#') : 'trunk'; -$branchesPath = isset($packageConfig['branches-path']) ? preg_quote($packageConfig['branches-path'], '#') : 'branches'; -$tagsPath = isset($packageConfig['tags-path']) ? preg_quote($packageConfig['tags-path'], '#') : 'tags'; - -$urlPattern = '#.*/(' . $trunkPath . '|(' . $branchesPath . '|' . $tagsPath . ')/(.*))#'; - -if (Preg::isMatch($urlPattern, $output, $matches)) { -if (isset($matches[2], $matches[3]) && ($branchesPath === $matches[2] || $tagsPath === $matches[2])) { - -$version = $this->versionParser->normalizeBranch($matches[3]); -$prettyVersion = 'dev-' . $matches[3]; - -return ['version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion]; -} - -assert(is_string($matches[1])); -$prettyVersion = trim($matches[1]); -if ($prettyVersion === 'trunk') { -$version = 'dev-trunk'; -} else { -$version = $this->versionParser->normalize($prettyVersion); -} - -return ['version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion]; -} -} - -return null; -} -} diff --git a/composer/src/Composer/Package/Version/VersionParser.php b/composer/src/Composer/Package/Version/VersionParser.php deleted file mode 100644 index 605735f08..000000000 --- a/composer/src/Composer/Package/Version/VersionParser.php +++ /dev/null @@ -1,94 +0,0 @@ - $name, 'version' => $version]; -} else { -$result[] = ['name' => $pair]; -} -} - -return $result; -} - -public static function isUpgrade(string $normalizedFrom, string $normalizedTo): bool -{ -if ($normalizedFrom === $normalizedTo) { -return true; -} - -if (in_array($normalizedFrom, ['dev-master', 'dev-trunk', 'dev-default'], true)) { -$normalizedFrom = VersionParser::DEFAULT_BRANCH_ALIAS; -} -if (in_array($normalizedTo, ['dev-master', 'dev-trunk', 'dev-default'], true)) { -$normalizedTo = VersionParser::DEFAULT_BRANCH_ALIAS; -} - -if (strpos($normalizedFrom, 'dev-') === 0 || strpos($normalizedTo, 'dev-') === 0) { -return true; -} - -$sorted = Semver::sort([$normalizedTo, $normalizedFrom]); - -return $sorted[0] === $normalizedFrom; -} -} diff --git a/composer/src/Composer/Package/Version/VersionSelector.php b/composer/src/Composer/Package/Version/VersionSelector.php deleted file mode 100644 index eff1d907d..000000000 --- a/composer/src/Composer/Package/Version/VersionSelector.php +++ /dev/null @@ -1,259 +0,0 @@ -repositorySet = $repositorySet; -if ($platformRepo) { -foreach ($platformRepo->getPackages() as $package) { -$this->platformConstraints[$package->getName()][] = new Constraint('==', $package->getVersion()); -} -} -} - - - - - - - - - - - -public function findBestCandidate(string $packageName, ?string $targetPackageVersion = null, string $preferredStability = 'stable', $platformRequirementFilter = null, int $repoSetFlags = 0, ?IOInterface $io = null, $showWarnings = true) -{ -if (!isset(BasePackage::$stabilities[$preferredStability])) { - -throw new \UnexpectedValueException('Expected a valid stability name as 3rd argument, got '.$preferredStability); -} - -if (null === $platformRequirementFilter) { -$platformRequirementFilter = PlatformRequirementFilterFactory::ignoreNothing(); -} elseif (!($platformRequirementFilter instanceof PlatformRequirementFilterInterface)) { -trigger_error('VersionSelector::findBestCandidate with ignored platform reqs as bool|array is deprecated since Composer 2.2, use an instance of PlatformRequirementFilterInterface instead.', E_USER_DEPRECATED); -$platformRequirementFilter = PlatformRequirementFilterFactory::fromBoolOrList($platformRequirementFilter); -} - -$constraint = $targetPackageVersion ? $this->getParser()->parseConstraints($targetPackageVersion) : null; -$candidates = $this->repositorySet->findPackages(strtolower($packageName), $constraint, $repoSetFlags); - -$minPriority = BasePackage::$stabilities[$preferredStability]; -usort($candidates, static function (PackageInterface $a, PackageInterface $b) use ($minPriority) { -$aPriority = $a->getStabilityPriority(); -$bPriority = $b->getStabilityPriority(); - - - -if ($minPriority < $aPriority && $bPriority < $aPriority) { -return 1; -} - - - -if ($minPriority < $aPriority && $aPriority < $bPriority) { -return -1; -} - - - -if ($minPriority >= $aPriority && $minPriority < $bPriority) { -return -1; -} - - -return version_compare($b->getVersion(), $a->getVersion()); -}); - -if (count($this->platformConstraints) > 0 && !($platformRequirementFilter instanceof IgnoreAllPlatformRequirementFilter)) { - -$alreadyWarnedNames = []; - -$alreadySeenNames = []; - -foreach ($candidates as $pkg) { -$reqs = $pkg->getRequires(); -foreach ($reqs as $name => $link) { -if (!PlatformRepository::isPlatformPackage($name) || $platformRequirementFilter->isIgnored($name)) { -continue; -} -if (isset($this->platformConstraints[$name])) { -foreach ($this->platformConstraints[$name] as $providedConstraint) { -if ($link->getConstraint()->matches($providedConstraint)) { - -continue 2; -} -} - - -$reason = 'is not satisfied by your platform'; -} else { - - -$reason = 'is missing from your platform'; -} - -$isLatestVersion = !isset($alreadySeenNames[$pkg->getName()]); -$alreadySeenNames[$pkg->getName()] = true; -if ($io !== null && ($showWarnings === true || (is_callable($showWarnings) && $showWarnings($pkg)))) { -$isFirstWarning = !isset($alreadyWarnedNames[$pkg->getName()]); -$alreadyWarnedNames[$pkg->getName()] = true; -$latest = $isLatestVersion ? "'s latest version" : ''; -$io->writeError( -'Cannot use '.$pkg->getPrettyName().$latest.' '.$pkg->getPrettyVersion().' as it '.$link->getDescription().' '.$link->getTarget().' '.$link->getPrettyConstraint().' which '.$reason.'.', -true, -$isFirstWarning ? IOInterface::NORMAL : IOInterface::VERBOSE -); -} - - -continue 2; -} - -$package = $pkg; -break; -} -} else { -$package = count($candidates) > 0 ? $candidates[0] : null; -} - -if (!isset($package)) { -return false; -} - - -if ($package instanceof AliasPackage && $package->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { -$package = $package->getAliasOf(); -} - -return $package; -} - - - - - - - - - - - - - -public function findRecommendedRequireVersion(PackageInterface $package): string -{ - - -if (0 === strpos($package->getName(), 'ext-')) { -$phpVersion = PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; -$extVersion = implode('.', array_slice(explode('.', $package->getVersion()), 0, 3)); -if ($phpVersion === $extVersion) { -return '*'; -} -} - -$version = $package->getVersion(); -if (!$package->isDev()) { -return $this->transformVersion($version, $package->getPrettyVersion(), $package->getStability()); -} - -$loader = new ArrayLoader($this->getParser()); -$dumper = new ArrayDumper(); -$extra = $loader->getBranchAlias($dumper->dump($package)); -if ($extra && $extra !== VersionParser::DEFAULT_BRANCH_ALIAS) { -$extra = Preg::replace('{^(\d+\.\d+\.\d+)(\.9999999)-dev$}', '$1.0', $extra, -1, $count); -if ($count > 0) { -$extra = str_replace('.9999999', '.0', $extra); - -return $this->transformVersion($extra, $extra, 'dev'); -} -} - -return $package->getPrettyVersion(); -} - -private function transformVersion(string $version, string $prettyVersion, string $stability): string -{ - - -$semanticVersionParts = explode('.', $version); - - -if (count($semanticVersionParts) === 4 && Preg::isMatch('{^0\D?}', $semanticVersionParts[3])) { - -if ($semanticVersionParts[0] === '0') { -unset($semanticVersionParts[3]); -} else { -unset($semanticVersionParts[2], $semanticVersionParts[3]); -} -$version = implode('.', $semanticVersionParts); -} else { -return $prettyVersion; -} - - -if ($stability !== 'stable') { -$version .= '@'.$stability; -} - - -return '^' . $version; -} - -private function getParser(): VersionParser -{ -if ($this->parser === null) { -$this->parser = new VersionParser(); -} - -return $this->parser; -} -} diff --git a/composer/src/Composer/PartialComposer.php b/composer/src/Composer/PartialComposer.php deleted file mode 100644 index 223c8f923..000000000 --- a/composer/src/Composer/PartialComposer.php +++ /dev/null @@ -1,115 +0,0 @@ -package = $package; -} - -public function getPackage(): RootPackageInterface -{ -return $this->package; -} - -public function setConfig(Config $config): void -{ -$this->config = $config; -} - -public function getConfig(): Config -{ -return $this->config; -} - -public function setLoop(Loop $loop): void -{ -$this->loop = $loop; -} - -public function getLoop(): Loop -{ -return $this->loop; -} - -public function setRepositoryManager(RepositoryManager $manager): void -{ -$this->repositoryManager = $manager; -} - -public function getRepositoryManager(): RepositoryManager -{ -return $this->repositoryManager; -} - -public function setInstallationManager(InstallationManager $manager): void -{ -$this->installationManager = $manager; -} - -public function getInstallationManager(): InstallationManager -{ -return $this->installationManager; -} - -public function setEventDispatcher(EventDispatcher $eventDispatcher): void -{ -$this->eventDispatcher = $eventDispatcher; -} - -public function getEventDispatcher(): EventDispatcher -{ -return $this->eventDispatcher; -} -} diff --git a/composer/src/Composer/Platform/HhvmDetector.php b/composer/src/Composer/Platform/HhvmDetector.php deleted file mode 100644 index f8aec15cc..000000000 --- a/composer/src/Composer/Platform/HhvmDetector.php +++ /dev/null @@ -1,65 +0,0 @@ -executableFinder = $executableFinder; -$this->processExecutor = $processExecutor; -} - -public function reset(): void -{ -self::$hhvmVersion = null; -} - -public function getVersion(): ?string -{ -if (null !== self::$hhvmVersion) { -return self::$hhvmVersion ?: null; -} - -self::$hhvmVersion = defined('HHVM_VERSION') ? HHVM_VERSION : null; -if (self::$hhvmVersion === null && !Platform::isWindows()) { -self::$hhvmVersion = false; -$this->executableFinder = $this->executableFinder ?: new ExecutableFinder(); -$hhvmPath = $this->executableFinder->find('hhvm'); -if ($hhvmPath !== null) { -$this->processExecutor = $this->processExecutor ?? new ProcessExecutor(); -$exitCode = $this->processExecutor->execute( -ProcessExecutor::escape($hhvmPath). -' --php -d hhvm.jit=0 -r "echo HHVM_VERSION;" 2>/dev/null', -self::$hhvmVersion -); -if ($exitCode !== 0) { -self::$hhvmVersion = false; -} -} -} - -return self::$hhvmVersion ?: null; -} -} diff --git a/composer/src/Composer/Platform/Runtime.php b/composer/src/Composer/Platform/Runtime.php deleted file mode 100644 index 2f3290879..000000000 --- a/composer/src/Composer/Platform/Runtime.php +++ /dev/null @@ -1,103 +0,0 @@ -newInstanceArgs($arguments); -} - - -public function getExtensions(): array -{ -return get_loaded_extensions(); -} - -public function getExtensionVersion(string $extension): string -{ -$version = phpversion($extension); -if ($version === false) { -$version = '0'; -} - -return $version; -} - - - - -public function getExtensionInfo(string $extension): string -{ -$reflector = new \ReflectionExtension($extension); - -ob_start(); -$reflector->info(); - -return ob_get_clean(); -} -} diff --git a/composer/src/Composer/Platform/Version.php b/composer/src/Composer/Platform/Version.php deleted file mode 100644 index b1337f749..000000000 --- a/composer/src/Composer/Platform/Version.php +++ /dev/null @@ -1,90 +0,0 @@ -[0-9.]+)(?[a-z]{0,2})(?(?:-?(?:dev|pre|alpha|beta|rc|fips)[\d]*)*)(?:-\w+)?(?: \(.+?\))?$/', $opensslVersion, $matches)) { -return null; -} - - -$patch = ''; -if (version_compare($matches['version'], '3.0.0', '<')) { -$patch = '.'.self::convertAlphaVersionToIntVersion($matches['patch']); -} - -$isFips = strpos($matches['suffix'], 'fips') !== false; -$suffix = strtr('-'.ltrim($matches['suffix'], '-'), ['-fips' => '', '-pre' => '-alpha']); - -return rtrim($matches['version'].$patch.$suffix, '-'); -} - -public static function parseLibjpeg(string $libjpegVersion): ?string -{ -if (!Preg::isMatchStrictGroups('/^(?\d+)(?[a-z]*)$/', $libjpegVersion, $matches)) { -return null; -} - -return $matches['major'].'.'.self::convertAlphaVersionToIntVersion($matches['minor']); -} - -public static function parseZoneinfoVersion(string $zoneinfoVersion): ?string -{ -if (!Preg::isMatchStrictGroups('/^(?\d{4})(?[a-z]*)$/', $zoneinfoVersion, $matches)) { -return null; -} - -return $matches['year'].'.'.self::convertAlphaVersionToIntVersion($matches['revision']); -} - - - - -private static function convertAlphaVersionToIntVersion(string $alpha): int -{ -return strlen($alpha) * (-ord('a') + 1) + array_sum(array_map('ord', str_split($alpha))); -} - -public static function convertLibxpmVersionId(int $versionId): string -{ -return self::convertVersionId($versionId, 100); -} - -public static function convertOpenldapVersionId(int $versionId): string -{ -return self::convertVersionId($versionId, 100); -} - -private static function convertVersionId(int $versionId, int $base): string -{ -return sprintf( -'%d.%d.%d', -$versionId / ($base * $base), -(int) ($versionId / $base) % $base, -$versionId % $base -); -} -} diff --git a/composer/src/Composer/Plugin/Capability/Capability.php b/composer/src/Composer/Plugin/Capability/Capability.php deleted file mode 100644 index 9d3ef1a39..000000000 --- a/composer/src/Composer/Plugin/Capability/Capability.php +++ /dev/null @@ -1,23 +0,0 @@ -commandName = $commandName; -$this->input = $input; -$this->output = $output; -} - - - - -public function getInput(): InputInterface -{ -return $this->input; -} - - - - -public function getOutput(): OutputInterface -{ -return $this->output; -} - - - - -public function getCommandName(): string -{ -return $this->commandName; -} -} diff --git a/composer/src/Composer/Plugin/PluginBlockedException.php b/composer/src/Composer/Plugin/PluginBlockedException.php deleted file mode 100644 index ba0527ce3..000000000 --- a/composer/src/Composer/Plugin/PluginBlockedException.php +++ /dev/null @@ -1,19 +0,0 @@ -io = $io; - $this->composer = $composer; - $this->globalComposer = $globalComposer; - $this->versionParser = new VersionParser(); - $this->disablePlugins = $disablePlugins; - $this->allowPluginRules = $this->parseAllowedPlugins($composer->getConfig()->get('allow-plugins'), $composer->getLocker()); - $this->allowGlobalPluginRules = $this->parseAllowedPlugins($globalComposer !== null ? $globalComposer->getConfig()->get('allow-plugins') : false); - } - - public function setRunningInGlobalDir(bool $runningInGlobalDir): void - { - $this->runningInGlobalDir = $runningInGlobalDir; - } - - - public function loadInstalledPlugins(): void - { - if (!$this->arePluginsDisabled('local')) { - $repo = $this->composer->getRepositoryManager()->getLocalRepository(); - $this->loadRepository($repo, false); - } - - if ($this->globalComposer !== null && !$this->arePluginsDisabled('global')) { - $this->loadRepository($this->globalComposer->getRepositoryManager()->getLocalRepository(), true); - } - } - - - public function deactivateInstalledPlugins(): void - { - if (!$this->arePluginsDisabled('local')) { - $repo = $this->composer->getRepositoryManager()->getLocalRepository(); - $this->deactivateRepository($repo, false); - } - - if ($this->globalComposer !== null && !$this->arePluginsDisabled('global')) { - $this->deactivateRepository($this->globalComposer->getRepositoryManager()->getLocalRepository(), true); - } - } - - - public function getPlugins(): array - { - return $this->plugins; - } - - - public function getGlobalComposer(): ?PartialComposer - { - return $this->globalComposer; - } - - - public function registerPackage(PackageInterface $package, bool $failOnMissingClasses = false, bool $isGlobalPlugin = false): void - { - if ($this->arePluginsDisabled($isGlobalPlugin ? 'global' : 'local')) { - return; - } - - if ($package->getType() === 'composer-plugin') { - $requiresComposer = null; - foreach ($package->getRequires() as $link) { - if ('composer-plugin-api' === $link->getTarget()) { - $requiresComposer = $link->getConstraint(); - break; - } - } - - if (!$requiresComposer) { - throw new \RuntimeException("Plugin " . $package->getName() . " is missing a require statement for a version of the composer-plugin-api package."); - } - - $currentPluginApiVersion = $this->getPluginApiVersion(); - $currentPluginApiConstraint = new Constraint('==', $this->versionParser->normalize($currentPluginApiVersion)); - - if ($requiresComposer->getPrettyString() === $this->getPluginApiVersion()) { - $this->io->writeError('The "' . $package->getName() . '" plugin requires composer-plugin-api ' . $this->getPluginApiVersion() . ', this *WILL* break in the future and it should be fixed ASAP (require ^' . $this->getPluginApiVersion() . ' instead for example).'); - } elseif (!$requiresComposer->matches($currentPluginApiConstraint)) { - $this->io->writeError('The "' . $package->getName() . '" plugin ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'was skipped because it requires a Plugin API version ("' . $requiresComposer->getPrettyString() . '") that does not match your Composer installation ("' . $currentPluginApiVersion . '"). You may need to run composer update with the "--no-plugins" option.'); - - return; - } - - if ($package->getName() === 'symfony/flex' && Preg::isMatch('{^[0-9.]+$}', $package->getVersion()) && version_compare($package->getVersion(), '1.9.8', '<')) { - $this->io->writeError('The "' . $package->getName() . '" plugin ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'was skipped because it is not compatible with Composer 2+. Make sure to update it to version 1.9.8 or greater.'); - - return; - } - } - - if (!$this->isPluginAllowed($package->getName(), $isGlobalPlugin, $package->getExtra()['plugin-optional'] ?? false)) { - $this->io->writeError('Skipped loading "' . $package->getName() . '" ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'as it is not in config.allow-plugins', true, IOInterface::DEBUG); - - return; - } - - $oldInstallerPlugin = ($package->getType() === 'composer-installer'); - - if (isset($this->registeredPlugins[$package->getName()])) { - return; - } - - $extra = $package->getExtra(); - if (empty($extra['class'])) { - throw new \UnexpectedValueException('Error while installing ' . $package->getPrettyName() . ', composer-plugin packages should have a class defined in their extra key to be usable.'); - } - $classes = is_array($extra['class']) ? $extra['class'] : [$extra['class']]; - - $localRepo = $this->composer->getRepositoryManager()->getLocalRepository(); - $globalRepo = $this->globalComposer !== null ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; - - $rootPackage = clone $this->composer->getPackage(); - - - $rootPackageAutoloads = $rootPackage->getAutoload(); - $rootPackageAutoloads['files'] = []; - $rootPackage->setAutoload($rootPackageAutoloads); - $rootPackageAutoloads = $rootPackage->getDevAutoload(); - $rootPackageAutoloads['files'] = []; - $rootPackage->setDevAutoload($rootPackageAutoloads); - unset($rootPackageAutoloads); - - $rootPackageRepo = new RootPackageRepository($rootPackage); - $installedRepo = new InstalledRepository([$localRepo, $rootPackageRepo]); - if ($globalRepo) { - $installedRepo->addRepository($globalRepo); - } - - $autoloadPackages = [$package->getName() => $package]; - $autoloadPackages = $this->collectDependencies($installedRepo, $autoloadPackages, $package); - - $generator = $this->composer->getAutoloadGenerator(); - $autoloads = [[$rootPackage, '']]; - foreach ($autoloadPackages as $autoloadPackage) { - if ($autoloadPackage === $rootPackage) { - continue; - } - - $downloadPath = $this->getInstallPath($autoloadPackage, $globalRepo && $globalRepo->hasPackage($autoloadPackage)); - $autoloads[] = [$autoloadPackage, $downloadPath]; - } - - $map = $generator->parseAutoloads($autoloads, $rootPackage); - $classLoader = $generator->createLoader($map, $this->composer->getConfig()->get('vendor-dir')); - $classLoader->register(false); - - foreach ($map['files'] as $fileIdentifier => $file) { - - - if ($fileIdentifier === '7e9bd612cc444b3eed788ebbe46263a0') { - continue; - } - \Composer\Autoload\composerRequire($fileIdentifier, $file); - } - - foreach ($classes as $class) { - if (class_exists($class, false)) { - $class = trim($class, '\\'); - $path = $classLoader->findFile($class); - $code = file_get_contents($path); - $separatorPos = strrpos($class, '\\'); - $className = $class; - if ($separatorPos) { - $className = substr($class, $separatorPos + 1); - } - $code = Preg::replace('{^((?:final\s+)?(?:\s*))class\s+(' . preg_quote($className) . ')}mi', '$1class $2_composer_tmp' . self::$classCounter, $code, 1); - $code = strtr($code, [ - '__FILE__' => var_export($path, true), - '__DIR__' => var_export(dirname($path), true), - '__CLASS__' => var_export($class, true), - ]); - $code = Preg::replace('/^\s*<\?(php)?/i', '', $code, 1); - eval($code); - $class .= '_composer_tmp' . self::$classCounter; - self::$classCounter++; - } - - if ($oldInstallerPlugin) { - if (!is_a($class, 'Composer\Installer\InstallerInterface', true)) { - throw new \RuntimeException('Could not activate plugin "' . $package->getName() . '" as "' . $class . '" does not implement Composer\Installer\InstallerInterface'); - } - $this->io->writeError('Loading "' . $package->getName() . '" ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . 'which is a legacy composer-installer built for Composer 1.x, it is likely to cause issues as you are running Composer 2.x.'); - $installer = new $class($this->io, $this->composer); - $this->composer->getInstallationManager()->addInstaller($installer); - $this->registeredPlugins[$package->getName()] = $installer; - } elseif (class_exists($class)) { - if (!is_a($class, 'Composer\Plugin\PluginInterface', true)) { - throw new \RuntimeException('Could not activate plugin "' . $package->getName() . '" as "' . $class . '" does not implement Composer\Plugin\PluginInterface'); - } - $plugin = new $class(); - $this->addPlugin($plugin, $isGlobalPlugin, $package); - $this->registeredPlugins[$package->getName()] = $plugin; - } elseif ($failOnMissingClasses) { - throw new \UnexpectedValueException('Plugin ' . $package->getName() . ' could not be initialized, class not found: ' . $class); - } - } - } - - - public function deactivatePackage(PackageInterface $package): void - { - if (!isset($this->registeredPlugins[$package->getName()])) { - return; - } - - $plugin = $this->registeredPlugins[$package->getName()]; - unset($this->registeredPlugins[$package->getName()]); - if ($plugin instanceof InstallerInterface) { - $this->composer->getInstallationManager()->removeInstaller($plugin); - } else { - $this->removePlugin($plugin); - } - } - - - public function uninstallPackage(PackageInterface $package): void - { - if (!isset($this->registeredPlugins[$package->getName()])) { - return; - } - - $plugin = $this->registeredPlugins[$package->getName()]; - if ($plugin instanceof InstallerInterface) { - $this->deactivatePackage($package); - } else { - unset($this->registeredPlugins[$package->getName()]); - $this->removePlugin($plugin); - $this->uninstallPlugin($plugin); - } - } - - - protected function getPluginApiVersion(): string - { - return PluginInterface::PLUGIN_API_VERSION; - } - - - public function addPlugin(PluginInterface $plugin, bool $isGlobalPlugin = false, ?PackageInterface $sourcePackage = null): void - { - if ($this->arePluginsDisabled($isGlobalPlugin ? 'global' : 'local')) { - return; - } - - if ($sourcePackage === null) { - trigger_error('Calling PluginManager::addPlugin without $sourcePackage is deprecated, if you are using this please get in touch with us to explain the use case', E_USER_DEPRECATED); - } elseif (!$this->isPluginAllowed($sourcePackage->getName(), $isGlobalPlugin, $sourcePackage->getExtra()['plugin-optional'] ?? false)) { - $this->io->writeError('Skipped loading "' . get_class($plugin) . ' from ' . $sourcePackage->getName() . '" ' . ($isGlobalPlugin || $this->runningInGlobalDir ? '(installed globally) ' : '') . ' as it is not in config.allow-plugins', true, IOInterface::DEBUG); - - return; - } - - $details = []; - if ($sourcePackage) { - $details[] = 'from ' . $sourcePackage->getName(); - } - if ($isGlobalPlugin || $this->runningInGlobalDir) { - $details[] = 'installed globally'; - } - $this->io->writeError('Loading plugin ' . get_class($plugin) . ($details ? ' (' . implode(', ', $details) . ')' : ''), true, IOInterface::DEBUG); - $this->plugins[] = $plugin; - $plugin->activate($this->composer, $this->io); - - if ($plugin instanceof EventSubscriberInterface) { - $this->composer->getEventDispatcher()->addSubscriber($plugin); - } - } - - - public function removePlugin(PluginInterface $plugin): void - { - $index = array_search($plugin, $this->plugins, true); - if ($index === false) { - return; - } - - $this->io->writeError('Unloading plugin ' . get_class($plugin), true, IOInterface::DEBUG); - unset($this->plugins[$index]); - $plugin->deactivate($this->composer, $this->io); - - $this->composer->getEventDispatcher()->removeListener($plugin); - } - - - public function uninstallPlugin(PluginInterface $plugin): void - { - $this->io->writeError('Uninstalling plugin ' . get_class($plugin), true, IOInterface::DEBUG); - $plugin->uninstall($this->composer, $this->io); - } - - - private function loadRepository(RepositoryInterface $repo, bool $isGlobalRepo): void - { - $packages = $repo->getPackages(); - - $weights = []; - foreach ($packages as $package) { - if ($package->getType() === 'composer-plugin') { - $extra = $package->getExtra(); - if ($package->getName() === 'composer/installers' || true === ($extra['plugin-modifies-install-path'] ?? false)) { - $weights[$package->getName()] = -10000; - } - } - } - - $sortedPackages = PackageSorter::sortPackages($packages, $weights); - foreach ($sortedPackages as $package) { - if (!($package instanceof CompletePackage)) { - continue; - } - if ('composer-plugin' === $package->getType()) { - $this->registerPackage($package, false, $isGlobalRepo); - - } elseif ('composer-installer' === $package->getType()) { - $this->registerPackage($package, false, $isGlobalRepo); - } - } - } - - - private function deactivateRepository(RepositoryInterface $repo, bool $isGlobalRepo): void - { - $packages = $repo->getPackages(); - $sortedPackages = array_reverse(PackageSorter::sortPackages($packages)); - - foreach ($sortedPackages as $package) { - if (!($package instanceof CompletePackage)) { - continue; - } - if ('composer-plugin' === $package->getType()) { - $this->deactivatePackage($package); - - } elseif ('composer-installer' === $package->getType()) { - $this->deactivatePackage($package); - } - } - } - - - private function collectDependencies(InstalledRepository $installedRepo, array $collected, PackageInterface $package): array - { - foreach ($package->getRequires() as $requireLink) { - foreach ($installedRepo->findPackagesWithReplacersAndProviders($requireLink->getTarget()) as $requiredPackage) { - if (!isset($collected[$requiredPackage->getName()])) { - $collected[$requiredPackage->getName()] = $requiredPackage; - $collected = $this->collectDependencies($installedRepo, $collected, $requiredPackage); - } - } - } - - return $collected; - } - - - private function getInstallPath(PackageInterface $package, bool $global = false): string - { - if (!$global) { - return $this->composer->getInstallationManager()->getInstallPath($package); - } - - assert(null !== $this->globalComposer); - - return $this->globalComposer->getInstallationManager()->getInstallPath($package); - } - - - protected function getCapabilityImplementationClassName(PluginInterface $plugin, string $capability): ?string - { - if (!($plugin instanceof Capable)) { - return null; - } - - $capabilities = (array)$plugin->getCapabilities(); - - if (!empty($capabilities[$capability]) && is_string($capabilities[$capability]) && trim($capabilities[$capability])) { - return trim($capabilities[$capability]); - } - - if ( - array_key_exists($capability, $capabilities) - && (empty($capabilities[$capability]) || !is_string($capabilities[$capability]) || !trim($capabilities[$capability])) - ) { - throw new \UnexpectedValueException('Plugin ' . get_class($plugin) . ' provided invalid capability class name(s), got ' . var_export($capabilities[$capability], true)); - } - - return null; - } - - - public function getPluginCapability(PluginInterface $plugin, $capabilityClassName, array $ctorArgs = []): ?Capability - { - if ($capabilityClass = $this->getCapabilityImplementationClassName($plugin, $capabilityClassName)) { - if (!class_exists($capabilityClass)) { - throw new \RuntimeException("Cannot instantiate Capability, as class $capabilityClass from plugin " . get_class($plugin) . " does not exist."); - } - - $ctorArgs['plugin'] = $plugin; - $capabilityObj = new $capabilityClass($ctorArgs); - - - if (!$capabilityObj instanceof Capability || !$capabilityObj instanceof $capabilityClassName) { - throw new \RuntimeException( - 'Class ' . $capabilityClass . ' must implement both Composer\Plugin\Capability\Capability and ' . $capabilityClassName . '.' - ); - } - - return $capabilityObj; - } - - return null; - } - - - public function getPluginCapabilities($capabilityClassName, array $ctorArgs = []): array - { - $capabilities = []; - foreach ($this->getPlugins() as $plugin) { - $capability = $this->getPluginCapability($plugin, $capabilityClassName, $ctorArgs); - if (null !== $capability) { - $capabilities[] = $capability; - } - } - - return $capabilities; - } - - - private function parseAllowedPlugins($allowPluginsConfig, ?Locker $locker = null): ?array - { - if ([] === $allowPluginsConfig && $locker !== null && $locker->isLocked() && version_compare($locker->getPluginApi(), '2.2.0', '<')) { - return null; - } - - if (true === $allowPluginsConfig) { - return ['{}' => true]; - } - - if (false === $allowPluginsConfig) { - return ['{}' => false]; - } - - $rules = []; - foreach ($allowPluginsConfig as $pattern => $allow) { - $rules[BasePackage::packageNameToRegexp($pattern)] = $allow; - } - - return $rules; - } - - - public function arePluginsDisabled($type) - { - return $this->disablePlugins === true || $this->disablePlugins === $type; - } - - - public function isPluginAllowed(string $package, bool $isGlobalPlugin, bool $optional = false): bool - { - if ($isGlobalPlugin) { - $rules = &$this->allowGlobalPluginRules; - } else { - $rules = &$this->allowPluginRules; - } - - - if ($rules === null) { - if (!$this->io->isInteractive()) { - $this->io->writeError('For additional security you should declare the allow-plugins config with a list of packages names that are allowed to run code. See https://getcomposer.org/allow-plugins'); - $this->io->writeError('This warning will become an exception once you run composer update!'); - - $rules = ['{}' => true]; - - - return true; - } - - - $rules = []; - } - - foreach ($rules as $pattern => $allow) { - if (Preg::isMatch($pattern, $package)) { - return $allow === true; - } - } - - if ($package === 'composer/package-versions-deprecated') { - return false; - } - - if ($this->io->isInteractive()) { - $composer = $isGlobalPlugin && $this->globalComposer !== null ? $this->globalComposer : $this->composer; - - $this->io->writeError('' . $package . ($isGlobalPlugin || $this->runningInGlobalDir ? ' (installed globally)' : '') . ' contains a Composer plugin which is currently not in your allow-plugins config. See https://getcomposer.org/allow-plugins'); - $attempts = 0; - while (true) { - - - $default = '?'; - if ($attempts > 5) { - $this->io->writeError('Too many failed prompts, aborting.'); - break; - } - - switch ($answer = $this->io->ask('Do you trust "' . $package . '" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?] ', $default)) { - case 'y': - case 'n': - case 'd': - $allow = $answer === 'y'; - - - $rules[BasePackage::packageNameToRegexp($package)] = $allow; - - - if ($answer === 'y' || $answer === 'n') { - $composer->getConfig()->getConfigSource()->addConfigSetting('allow-plugins.' . $package, $allow); - } - - return $allow; - - case '?': - default: - $attempts++; - $this->io->writeError([ - 'y - add package to allow-plugins in composer.json and let it run immediately', - 'n - add package (as disallowed) to allow-plugins in composer.json to suppress further prompts', - 'd - discard this, do not change composer.json and do not allow the plugin to run', - '? - print help', - ]); - break; - } - } - } elseif ($optional) { - return false; - } - - throw new PluginBlockedException( - $package . ($isGlobalPlugin || $this->runningInGlobalDir ? ' (installed globally)' : '') . ' contains a Composer plugin which is blocked by your allow-plugins config. You may add it to the list if you consider it safe.' . PHP_EOL . - 'You can run "composer ' . ($isGlobalPlugin || $this->runningInGlobalDir ? 'global ' : '') . 'config --no-plugins allow-plugins.' . $package . ' [true|false]" to enable it (true) or disable it explicitly and suppress this exception (false)' . PHP_EOL . - 'See https://getcomposer.org/allow-plugins' - ); - } -} diff --git a/composer/src/Composer/Plugin/PostFileDownloadEvent.php b/composer/src/Composer/Plugin/PostFileDownloadEvent.php deleted file mode 100644 index 789e22add..000000000 --- a/composer/src/Composer/Plugin/PostFileDownloadEvent.php +++ /dev/null @@ -1,139 +0,0 @@ -fileName = $fileName; -$this->checksum = $checksum; -$this->url = $url; -$this->context = $context; -$this->type = $type; -} - - - - - - -public function getFileName(): ?string -{ -return $this->fileName; -} - - - - -public function getChecksum(): ?string -{ -return $this->checksum; -} - - - - -public function getUrl(): string -{ -return $this->url; -} - - - - - - - - - -public function getContext() -{ -return $this->context; -} - - - - - - - - - -public function getPackage(): ?PackageInterface -{ -trigger_error('PostFileDownloadEvent::getPackage is deprecated since Composer 2.1, use getContext instead.', E_USER_DEPRECATED); -$context = $this->getContext(); - -return $context instanceof PackageInterface ? $context : null; -} - - - - -public function getType(): string -{ -return $this->type; -} -} diff --git a/composer/src/Composer/Plugin/PreCommandRunEvent.php b/composer/src/Composer/Plugin/PreCommandRunEvent.php deleted file mode 100644 index 0ef948ff8..000000000 --- a/composer/src/Composer/Plugin/PreCommandRunEvent.php +++ /dev/null @@ -1,63 +0,0 @@ -input = $input; -$this->command = $command; -} - - - - -public function getInput(): InputInterface -{ -return $this->input; -} - - - - -public function getCommand(): string -{ -return $this->command; -} -} diff --git a/composer/src/Composer/Plugin/PreFileDownloadEvent.php b/composer/src/Composer/Plugin/PreFileDownloadEvent.php deleted file mode 100644 index b6f63cde6..000000000 --- a/composer/src/Composer/Plugin/PreFileDownloadEvent.php +++ /dev/null @@ -1,158 +0,0 @@ -httpDownloader = $httpDownloader; -$this->processedUrl = $processedUrl; -$this->type = $type; -$this->context = $context; -} - -public function getHttpDownloader(): HttpDownloader -{ -return $this->httpDownloader; -} - - - - - - -public function getProcessedUrl(): string -{ -return $this->processedUrl; -} - - - - - - -public function setProcessedUrl(string $processedUrl): void -{ -$this->processedUrl = $processedUrl; -} - - - - -public function getCustomCacheKey(): ?string -{ -return $this->customCacheKey; -} - - - - - - -public function setCustomCacheKey(?string $customCacheKey): void -{ -$this->customCacheKey = $customCacheKey; -} - - - - -public function getType(): string -{ -return $this->type; -} - - - - - - - - - -public function getContext() -{ -return $this->context; -} - - - - - - - - -public function getTransportOptions(): array -{ -return $this->transportOptions; -} - - - - - - - - -public function setTransportOptions(array $options): void -{ -$this->transportOptions = $options; -} -} diff --git a/composer/src/Composer/Plugin/PrePoolCreateEvent.php b/composer/src/Composer/Plugin/PrePoolCreateEvent.php deleted file mode 100644 index d34272c94..000000000 --- a/composer/src/Composer/Plugin/PrePoolCreateEvent.php +++ /dev/null @@ -1,173 +0,0 @@ -repositories = $repositories; -$this->request = $request; -$this->acceptableStabilities = $acceptableStabilities; -$this->stabilityFlags = $stabilityFlags; -$this->rootAliases = $rootAliases; -$this->rootReferences = $rootReferences; -$this->packages = $packages; -$this->unacceptableFixedPackages = $unacceptableFixedPackages; -} - - - - -public function getRepositories(): array -{ -return $this->repositories; -} - -public function getRequest(): Request -{ -return $this->request; -} - - - - - -public function getAcceptableStabilities(): array -{ -return $this->acceptableStabilities; -} - - - - - -public function getStabilityFlags(): array -{ -return $this->stabilityFlags; -} - - - - - -public function getRootAliases(): array -{ -return $this->rootAliases; -} - - - - - -public function getRootReferences(): array -{ -return $this->rootReferences; -} - - - - -public function getPackages(): array -{ -return $this->packages; -} - - - - -public function getUnacceptableFixedPackages(): array -{ -return $this->unacceptableFixedPackages; -} - - - - -public function setPackages(array $packages): void -{ -$this->packages = $packages; -} - - - - -public function setUnacceptableFixedPackages(array $packages): void -{ -$this->unacceptableFixedPackages = $packages; -} -} diff --git a/composer/src/Composer/Question/StrictConfirmationQuestion.php b/composer/src/Composer/Question/StrictConfirmationQuestion.php deleted file mode 100644 index f2f1a1e46..000000000 --- a/composer/src/Composer/Question/StrictConfirmationQuestion.php +++ /dev/null @@ -1,93 +0,0 @@ -trueAnswerRegex = $trueAnswerRegex; -$this->falseAnswerRegex = $falseAnswerRegex; -$this->setNormalizer($this->getDefaultNormalizer()); -$this->setValidator($this->getDefaultValidator()); -} - - - - -private function getDefaultNormalizer(): callable -{ -$default = $this->getDefault(); -$trueRegex = $this->trueAnswerRegex; -$falseRegex = $this->falseAnswerRegex; - -return static function ($answer) use ($default, $trueRegex, $falseRegex) { -if (is_bool($answer)) { -return $answer; -} -if (empty($answer) && !empty($default)) { -return $default; -} - -if (Preg::isMatch($trueRegex, $answer)) { -return true; -} - -if (Preg::isMatch($falseRegex, $answer)) { -return false; -} - -return null; -}; -} - - - - -private function getDefaultValidator(): callable -{ -return static function ($answer): bool { -if (!is_bool($answer)) { -throw new InvalidArgumentException('Please answer yes, y, no, or n.'); -} - -return $answer; -}; -} -} diff --git a/composer/src/Composer/Repository/AdvisoryProviderInterface.php b/composer/src/Composer/Repository/AdvisoryProviderInterface.php deleted file mode 100644 index d9eee3ee9..000000000 --- a/composer/src/Composer/Repository/AdvisoryProviderInterface.php +++ /dev/null @@ -1,34 +0,0 @@ -addPackage($package); -} -} - -public function getRepoName() -{ -return 'array repo (defining '.$this->count().' package'.($this->count() > 1 ? 's' : '').')'; -} - - - - -public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []) -{ -$packages = $this->getPackages(); - -$result = []; -$namesFound = []; -foreach ($packages as $package) { -if (array_key_exists($package->getName(), $packageNameMap)) { -if ( -(!$packageNameMap[$package->getName()] || $packageNameMap[$package->getName()]->matches(new Constraint('==', $package->getVersion()))) -&& StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, $package->getNames(), $package->getStability()) -&& !isset($alreadyLoaded[$package->getName()][$package->getVersion()]) -) { - -$result[spl_object_hash($package)] = $package; - -if ($package instanceof AliasPackage && !isset($result[spl_object_hash($package->getAliasOf())])) { -$result[spl_object_hash($package->getAliasOf())] = $package->getAliasOf(); -} -} - -$namesFound[$package->getName()] = true; -} -} - - -foreach ($packages as $package) { -if ($package instanceof AliasPackage) { -if (isset($result[spl_object_hash($package->getAliasOf())])) { -$result[spl_object_hash($package)] = $package; -} -} -} - -return ['namesFound' => array_keys($namesFound), 'packages' => $result]; -} - - - - -public function findPackage(string $name, $constraint) -{ -$name = strtolower($name); - -if (!$constraint instanceof ConstraintInterface) { -$versionParser = new VersionParser(); -$constraint = $versionParser->parseConstraints($constraint); -} - -foreach ($this->getPackages() as $package) { -if ($name === $package->getName()) { -$pkgConstraint = new Constraint('==', $package->getVersion()); -if ($constraint->matches($pkgConstraint)) { -return $package; -} -} -} - -return null; -} - - - - -public function findPackages(string $name, $constraint = null) -{ - -$name = strtolower($name); -$packages = []; - -if (null !== $constraint && !$constraint instanceof ConstraintInterface) { -$versionParser = new VersionParser(); -$constraint = $versionParser->parseConstraints($constraint); -} - -foreach ($this->getPackages() as $package) { -if ($name === $package->getName()) { -if (null === $constraint || $constraint->matches(new Constraint('==', $package->getVersion()))) { -$packages[] = $package; -} -} -} - -return $packages; -} - - - - -public function search(string $query, int $mode = 0, ?string $type = null) -{ -if ($mode === self::SEARCH_FULLTEXT) { -$regex = '{(?:'.implode('|', Preg::split('{\s+}', preg_quote($query))).')}i'; -} else { - -$regex = '{(?:'.implode('|', Preg::split('{\s+}', $query)).')}i'; -} - -$matches = []; -foreach ($this->getPackages() as $package) { -$name = $package->getName(); -if ($mode === self::SEARCH_VENDOR) { -[$name] = explode('/', $name); -} -if (isset($matches[$name])) { -continue; -} -if (null !== $type && $package->getType() !== $type) { -continue; -} - -if (Preg::isMatch($regex, $name) -|| ($mode === self::SEARCH_FULLTEXT && $package instanceof CompletePackageInterface && Preg::isMatch($regex, implode(' ', (array) $package->getKeywords()) . ' ' . $package->getDescription())) -) { -if ($mode === self::SEARCH_VENDOR) { -$matches[$name] = [ -'name' => $name, -'description' => null, -]; -} else { -$matches[$name] = [ -'name' => $package->getPrettyName(), -'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : null, -]; - -if ($package instanceof CompletePackageInterface && $package->isAbandoned()) { -$matches[$name]['abandoned'] = $package->getReplacementPackage() ?: true; -} -} -} -} - -return array_values($matches); -} - - - - -public function hasPackage(PackageInterface $package) -{ -if ($this->packageMap === null) { -$this->packageMap = []; -foreach ($this->getPackages() as $repoPackage) { -$this->packageMap[$repoPackage->getUniqueName()] = $repoPackage; -} -} - -return isset($this->packageMap[$package->getUniqueName()]); -} - - - - - - -public function addPackage(PackageInterface $package) -{ -if (!$package instanceof BasePackage) { -throw new \InvalidArgumentException('Only subclasses of BasePackage are supported'); -} -if (null === $this->packages) { -$this->initialize(); -} -$package->setRepository($this); -$this->packages[] = $package; - -if ($package instanceof AliasPackage) { -$aliasedPackage = $package->getAliasOf(); -if (null === $aliasedPackage->getRepository()) { -$this->addPackage($aliasedPackage); -} -} - - -$this->packageMap = null; -} - - - - -public function getProviders(string $packageName) -{ -$result = []; - -foreach ($this->getPackages() as $candidate) { -if (isset($result[$candidate->getName()])) { -continue; -} -foreach ($candidate->getProvides() as $link) { -if ($packageName === $link->getTarget()) { -$result[$candidate->getName()] = [ -'name' => $candidate->getName(), -'description' => $candidate instanceof CompletePackageInterface ? $candidate->getDescription() : null, -'type' => $candidate->getType(), -]; -continue 2; -} -} -} - -return $result; -} - - - - -protected function createAliasPackage(BasePackage $package, string $alias, string $prettyAlias) -{ -while ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} - -if ($package instanceof CompletePackage) { -return new CompleteAliasPackage($package, $alias, $prettyAlias); -} - -return new AliasPackage($package, $alias, $prettyAlias); -} - - - - - - - - -public function removePackage(PackageInterface $package) -{ -$packageId = $package->getUniqueName(); - -foreach ($this->getPackages() as $key => $repoPackage) { -if ($packageId === $repoPackage->getUniqueName()) { -array_splice($this->packages, $key, 1); - - -$this->packageMap = null; - -return; -} -} -} - - - - -public function getPackages() -{ -if (null === $this->packages) { -$this->initialize(); -} - -if (null === $this->packages) { -throw new \LogicException('initialize failed to initialize the packages array'); -} - -return $this->packages; -} - - - - - - -public function count(): int -{ -if (null === $this->packages) { -$this->initialize(); -} - -return count($this->packages); -} - - - - - - -protected function initialize() -{ -$this->packages = []; -} -} diff --git a/composer/src/Composer/Repository/ArtifactRepository.php b/composer/src/Composer/Repository/ArtifactRepository.php deleted file mode 100644 index b24cb2e78..000000000 --- a/composer/src/Composer/Repository/ArtifactRepository.php +++ /dev/null @@ -1,142 +0,0 @@ -loader = new ArrayLoader(); -$this->lookup = $repoConfig['url']; -$this->io = $io; -$this->repoConfig = $repoConfig; -} - -public function getRepoName() -{ -return 'artifact repo ('.$this->lookup.')'; -} - -public function getRepoConfig() -{ -return $this->repoConfig; -} - -protected function initialize() -{ -parent::initialize(); - -$this->scanDirectory($this->lookup); -} - -private function scanDirectory(string $path): void -{ -$io = $this->io; - -$directory = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS); -$iterator = new \RecursiveIteratorIterator($directory); -$regex = new \RegexIterator($iterator, '/^.+\.(zip|tar|gz|tgz)$/i'); -foreach ($regex as $file) { - -if (!$file->isFile()) { -continue; -} - -$package = $this->getComposerInformation($file); -if (!$package) { -$io->writeError("File {$file->getBasename()} doesn't seem to hold a package", true, IOInterface::VERBOSE); -continue; -} - -$template = 'Found package %s (%s) in file %s'; -$io->writeError(sprintf($template, $package->getName(), $package->getPrettyVersion(), $file->getBasename()), true, IOInterface::VERBOSE); - -$this->addPackage($package); -} -} - - - - -private function getComposerInformation(\SplFileInfo $file): ?BasePackage -{ -$json = null; -$fileType = null; -$fileExtension = pathinfo($file->getPathname(), PATHINFO_EXTENSION); -if (in_array($fileExtension, ['gz', 'tar', 'tgz'], true)) { -$fileType = 'tar'; -} elseif ($fileExtension === 'zip') { -$fileType = 'zip'; -} else { -throw new \RuntimeException('Files with "'.$fileExtension.'" extensions aren\'t supported. Only ZIP and TAR/TAR.GZ/TGZ archives are supported.'); -} - -try { -if ($fileType === 'tar') { -$json = Tar::getComposerJson($file->getPathname()); -} else { -$json = Zip::getComposerJson($file->getPathname()); -} -} catch (\Exception $exception) { -$this->io->write('Failed loading package '.$file->getPathname().': '.$exception->getMessage(), false, IOInterface::VERBOSE); -} - -if (null === $json) { -return null; -} - -$package = JsonFile::parseJson($json, $file->getPathname().'#composer.json'); -$package['dist'] = [ -'type' => $fileType, -'url' => strtr($file->getPathname(), '\\', '/'), -'shasum' => sha1_file($file->getRealPath()), -]; - -try { -$package = $this->loader->load($package); -} catch (\UnexpectedValueException $e) { -throw new \UnexpectedValueException('Failed loading package in '.$file.': '.$e->getMessage(), 0, $e); -} - -return $package; -} -} diff --git a/composer/src/Composer/Repository/CanonicalPackagesTrait.php b/composer/src/Composer/Repository/CanonicalPackagesTrait.php deleted file mode 100644 index da823a53c..000000000 --- a/composer/src/Composer/Repository/CanonicalPackagesTrait.php +++ /dev/null @@ -1,55 +0,0 @@ -getPackages(); - - -$packagesByName = []; -foreach ($packages as $package) { -if (!isset($packagesByName[$package->getName()]) || $packagesByName[$package->getName()] instanceof AliasPackage) { -$packagesByName[$package->getName()] = $package; -} -} - -$canonicalPackages = []; - - -foreach ($packagesByName as $package) { -while ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} - -$canonicalPackages[] = $package; -} - -return $canonicalPackages; -} -} diff --git a/composer/src/Composer/Repository/ComposerRepository.php b/composer/src/Composer/Repository/ComposerRepository.php deleted file mode 100644 index 5b9876b98..000000000 --- a/composer/src/Composer/Repository/ComposerRepository.php +++ /dev/null @@ -1,1755 +0,0 @@ -allowSslDowngrade = true; -} - -$this->options = $repoConfig['options']; -$this->url = $repoConfig['url']; - - -if (Preg::isMatch('{^(?Phttps?)://packagist\.org/?$}i', $this->url, $match)) { -$this->url = $match['proto'].'://repo.packagist.org'; -} - -$baseUrl = rtrim(Preg::replace('{(?:/[^/\\\\]+\.json)?(?:[?#].*)?$}', '', $this->url), '/'); -assert($baseUrl !== ''); -$this->baseUrl = $baseUrl; -$this->io = $io; -$this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', Url::sanitize($this->url)), 'a-z0-9.$~_'); -$this->cache->setReadOnly($config->get('cache-read-only')); -$this->versionParser = new VersionParser(); -$this->loader = new ArrayLoader($this->versionParser); -$this->httpDownloader = $httpDownloader; -$this->eventDispatcher = $eventDispatcher; -$this->repoConfig = $repoConfig; -$this->loop = new Loop($this->httpDownloader); -} - -public function getRepoName() -{ -return 'composer repo ('.Url::sanitize($this->url).')'; -} - -public function getRepoConfig() -{ -return $this->repoConfig; -} - - - - -public function findPackage(string $name, $constraint) -{ - -$hasProviders = $this->hasProviders(); - -$name = strtolower($name); -if (!$constraint instanceof ConstraintInterface) { -$constraint = $this->versionParser->parseConstraints($constraint); -} - -if ($this->lazyProvidersUrl) { -if ($this->hasPartialPackages() && isset($this->partialPackagesByName[$name])) { -return $this->filterPackages($this->whatProvides($name), $constraint, true); -} - -if ($this->hasAvailablePackageList && !$this->lazyProvidersRepoContains($name)) { -return null; -} - -$packages = $this->loadAsyncPackages([$name => $constraint]); - -if (count($packages['packages']) > 0) { -return reset($packages['packages']); -} - -return null; -} - -if ($hasProviders) { -foreach ($this->getProviderNames() as $providerName) { -if ($name === $providerName) { -return $this->filterPackages($this->whatProvides($providerName), $constraint, true); -} -} - -return null; -} - -return parent::findPackage($name, $constraint); -} - - - - -public function findPackages(string $name, $constraint = null) -{ - -$hasProviders = $this->hasProviders(); - -$name = strtolower($name); -if (null !== $constraint && !$constraint instanceof ConstraintInterface) { -$constraint = $this->versionParser->parseConstraints($constraint); -} - -if ($this->lazyProvidersUrl) { -if ($this->hasPartialPackages() && isset($this->partialPackagesByName[$name])) { -return $this->filterPackages($this->whatProvides($name), $constraint); -} - -if ($this->hasAvailablePackageList && !$this->lazyProvidersRepoContains($name)) { -return []; -} - -$result = $this->loadAsyncPackages([$name => $constraint]); - -return $result['packages']; -} - -if ($hasProviders) { -foreach ($this->getProviderNames() as $providerName) { -if ($name === $providerName) { -return $this->filterPackages($this->whatProvides($providerName), $constraint); -} -} - -return []; -} - -return parent::findPackages($name, $constraint); -} - - - - - - -private function filterPackages(array $packages, ?ConstraintInterface $constraint = null, bool $returnFirstMatch = false) -{ -if (null === $constraint) { -if ($returnFirstMatch) { -return reset($packages); -} - -return $packages; -} - -$filteredPackages = []; - -foreach ($packages as $package) { -$pkgConstraint = new Constraint('==', $package->getVersion()); - -if ($constraint->matches($pkgConstraint)) { -if ($returnFirstMatch) { -return $package; -} - -$filteredPackages[] = $package; -} -} - -if ($returnFirstMatch) { -return null; -} - -return $filteredPackages; -} - -public function getPackages() -{ -$hasProviders = $this->hasProviders(); - -if ($this->lazyProvidersUrl) { -if (is_array($this->availablePackages) && !$this->availablePackagePatterns) { -$packageMap = []; -foreach ($this->availablePackages as $name) { -$packageMap[$name] = new MatchAllConstraint(); -} - -$result = $this->loadAsyncPackages($packageMap); - -return array_values($result['packages']); -} - -if ($this->hasPartialPackages()) { -if (!is_array($this->partialPackagesByName)) { -throw new \LogicException('hasPartialPackages failed to initialize $this->partialPackagesByName'); -} - -return $this->createPackages($this->partialPackagesByName, 'packages.json inline packages'); -} - -throw new \LogicException('Composer repositories that have lazy providers and no available-packages list can not load the complete list of packages, use getPackageNames instead.'); -} - -if ($hasProviders) { -throw new \LogicException('Composer repositories that have providers can not load the complete list of packages, use getPackageNames instead.'); -} - -return parent::getPackages(); -} - - - - - - -public function getPackageNames(?string $packageFilter = null) -{ -$hasProviders = $this->hasProviders(); - -$filterResults = - - - - -static function (array $results): array { -return $results; -} -; -if (null !== $packageFilter && '' !== $packageFilter) { -$packageFilterRegex = BasePackage::packageNameToRegexp($packageFilter); -$filterResults = - - - - -static function (array $results) use ($packageFilterRegex): array { - -return Preg::grep($packageFilterRegex, $results); -} -; -} - -if ($this->lazyProvidersUrl) { -if (is_array($this->availablePackages)) { -return $filterResults(array_keys($this->availablePackages)); -} - -if ($this->listUrl) { - -return $this->loadPackageList($packageFilter); -} - -if ($this->hasPartialPackages() && $this->partialPackagesByName !== null) { -return $filterResults(array_keys($this->partialPackagesByName)); -} - -return []; -} - -if ($hasProviders) { -return $filterResults($this->getProviderNames()); -} - -$names = []; -foreach ($this->getPackages() as $package) { -$names[] = $package->getPrettyName(); -} - -return $filterResults($names); -} - - - - -private function getVendorNames(): array -{ -$cacheKey = 'vendor-list.txt'; -$cacheAge = $this->cache->getAge($cacheKey); -if (false !== $cacheAge && $cacheAge < 600 && ($cachedData = $this->cache->read($cacheKey)) !== false) { -$cachedData = explode("\n", $cachedData); - -return $cachedData; -} - -$names = $this->getPackageNames(); - -$uniques = []; -foreach ($names as $name) { - -$uniques[substr($name, 0, strpos($name, '/'))] = true; -} - -$vendors = array_keys($uniques); - -if (!$this->cache->isReadOnly()) { -$this->cache->write($cacheKey, implode("\n", $vendors)); -} - -return $vendors; -} - - - - -private function loadPackageList(?string $packageFilter = null): array -{ -if (null === $this->listUrl) { -throw new \LogicException('Make sure to call loadRootServerFile before loadPackageList'); -} - -$url = $this->listUrl; -if (is_string($packageFilter) && $packageFilter !== '') { -$url .= '?filter='.urlencode($packageFilter); -$result = $this->httpDownloader->get($url, $this->options)->decodeJson(); - -return $result['packageNames']; -} - -$cacheKey = 'package-list.txt'; -$cacheAge = $this->cache->getAge($cacheKey); -if (false !== $cacheAge && $cacheAge < 600 && ($cachedData = $this->cache->read($cacheKey)) !== false) { -$cachedData = explode("\n", $cachedData); - -return $cachedData; -} - -$result = $this->httpDownloader->get($url, $this->options)->decodeJson(); -if (!$this->cache->isReadOnly()) { -$this->cache->write($cacheKey, implode("\n", $result['packageNames'])); -} - -return $result['packageNames']; -} - -public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []) -{ - -$hasProviders = $this->hasProviders(); - -if (!$hasProviders && !$this->hasPartialPackages() && null === $this->lazyProvidersUrl) { -return parent::loadPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); -} - -$packages = []; -$namesFound = []; - -if ($hasProviders || $this->hasPartialPackages()) { -foreach ($packageNameMap as $name => $constraint) { -$matches = []; - - - -if (!$hasProviders && !isset($this->partialPackagesByName[$name])) { -continue; -} - -$candidates = $this->whatProvides($name, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); -foreach ($candidates as $candidate) { -if ($candidate->getName() !== $name) { -throw new \LogicException('whatProvides should never return a package with a different name than the requested one'); -} -$namesFound[$name] = true; - -if (!$constraint || $constraint->matches(new Constraint('==', $candidate->getVersion()))) { -$matches[spl_object_hash($candidate)] = $candidate; -if ($candidate instanceof AliasPackage && !isset($matches[spl_object_hash($candidate->getAliasOf())])) { -$matches[spl_object_hash($candidate->getAliasOf())] = $candidate->getAliasOf(); -} -} -} - - -foreach ($candidates as $candidate) { -if ($candidate instanceof AliasPackage) { -if (isset($matches[spl_object_hash($candidate->getAliasOf())])) { -$matches[spl_object_hash($candidate)] = $candidate; -} -} -} -$packages = array_merge($packages, $matches); - -unset($packageNameMap[$name]); -} -} - -if ($this->lazyProvidersUrl && count($packageNameMap)) { -if ($this->hasAvailablePackageList) { -foreach ($packageNameMap as $name => $constraint) { -if (!$this->lazyProvidersRepoContains(strtolower($name))) { -unset($packageNameMap[$name]); -} -} -} - -$result = $this->loadAsyncPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); -$packages = array_merge($packages, $result['packages']); -$namesFound = array_merge($namesFound, $result['namesFound']); -} - -return ['namesFound' => array_keys($namesFound), 'packages' => $packages]; -} - - - - -public function search(string $query, int $mode = 0, ?string $type = null) -{ -$this->loadRootServerFile(600); - -if ($this->searchUrl && $mode === self::SEARCH_FULLTEXT) { -$url = str_replace(['%query%', '%type%'], [urlencode($query), $type], $this->searchUrl); - -$search = $this->httpDownloader->get($url, $this->options)->decodeJson(); - -if (empty($search['results'])) { -return []; -} - -$results = []; -foreach ($search['results'] as $result) { - -if (!empty($result['virtual'])) { -continue; -} - -$results[] = $result; -} - -return $results; -} - -if ($mode === self::SEARCH_VENDOR) { -$results = []; -$regex = '{(?:'.implode('|', Preg::split('{\s+}', $query)).')}i'; - -$vendorNames = $this->getVendorNames(); -foreach (Preg::grep($regex, $vendorNames) as $name) { -$results[] = ['name' => $name, 'description' => '']; -} - -return $results; -} - -if ($this->hasProviders() || $this->lazyProvidersUrl) { - -if (Preg::isMatchStrictGroups('{^\^(?P(?P[a-z0-9_.-]+)/[a-z0-9_.-]*)\*?$}i', $query, $match) && $this->listUrl !== null) { -$url = $this->listUrl . '?vendor='.urlencode($match['vendor']).'&filter='.urlencode($match['query'].'*'); -$result = $this->httpDownloader->get($url, $this->options)->decodeJson(); - -$results = []; -foreach ($result['packageNames'] as $name) { -$results[] = ['name' => $name, 'description' => '']; -} - -return $results; -} - -$results = []; -$regex = '{(?:'.implode('|', Preg::split('{\s+}', $query)).')}i'; - -$packageNames = $this->getPackageNames(); -foreach (Preg::grep($regex, $packageNames) as $name) { -$results[] = ['name' => $name, 'description' => '']; -} - -return $results; -} - -return parent::search($query, $mode); -} - -public function hasSecurityAdvisories(): bool -{ -$this->loadRootServerFile(600); - -return $this->securityAdvisoryConfig !== null && ($this->securityAdvisoryConfig['metadata'] || $this->securityAdvisoryConfig['api-url'] !== null); -} - - - - -public function getSecurityAdvisories(array $packageConstraintMap, bool $allowPartialAdvisories = false): array -{ -$this->loadRootServerFile(600); -if (null === $this->securityAdvisoryConfig) { -return ['namesFound' => [], 'advisories' => []]; -} - -$advisories = []; -$namesFound = []; - -$apiUrl = $this->securityAdvisoryConfig['api-url']; - -$parser = new VersionParser(); - - - - - -$create = function (array $data, string $name) use ($parser, $allowPartialAdvisories, &$packageConstraintMap): ?PartialSecurityAdvisory { -$advisory = PartialSecurityAdvisory::create($name, $data, $parser); -if (!$allowPartialAdvisories && !$advisory instanceof SecurityAdvisory) { -throw new \RuntimeException('Advisory for '.$name.' could not be loaded as a full advisory from '.$this->getRepoName() . PHP_EOL . var_export($data, true)); -} -if (!$advisory->affectedVersions->matches($packageConstraintMap[$name])) { -return null; -} - -return $advisory; -}; - -if ($this->securityAdvisoryConfig['metadata'] && ($allowPartialAdvisories || $apiUrl === null)) { -$promises = []; -foreach ($packageConstraintMap as $name => $constraint) { -$name = strtolower($name); - - -if (PlatformRepository::isPlatformPackage($name) || '__root__' === $name) { -continue; -} - -$promises[] = $this->startCachedAsyncDownload($name, $name) -->then(static function (array $spec) use (&$advisories, &$namesFound, &$packageConstraintMap, $name, $create): void { -[$response, ] = $spec; - -if (!isset($response['security-advisories']) || !is_array($response['security-advisories'])) { -return; -} - -$namesFound[$name] = true; -if (count($response['security-advisories']) > 0) { -$advisories[$name] = array_filter(array_map( -static function ($data) use ($name, $create) { -return $create($data, $name); -}, -$response['security-advisories'] -)); -} -unset($packageConstraintMap[$name]); -}); -} - -$this->loop->wait($promises); -} - -if ($apiUrl !== null && count($packageConstraintMap) > 0) { -$options = [ -'http' => [ -'method' => 'POST', -'header' => ['Content-type: application/x-www-form-urlencoded'], -'timeout' => 10, -'content' => http_build_query(['packages' => array_keys($packageConstraintMap)]), -], -]; -$response = $this->httpDownloader->get($apiUrl, $options); - -foreach ($response->decodeJson()['advisories'] as $name => $list) { -if (count($list) > 0) { -$advisories[$name] = array_filter(array_map( -static function ($data) use ($name, $create) { -return $create($data, $name); -}, -$list -)); -} -$namesFound[$name] = true; -} -} - -return ['namesFound' => array_keys($namesFound), 'advisories' => array_filter($advisories)]; -} - -public function getProviders(string $packageName) -{ -$this->loadRootServerFile(); -$result = []; - -if ($this->providersApiUrl) { -try { -$apiResult = $this->httpDownloader->get(str_replace('%package%', $packageName, $this->providersApiUrl), $this->options)->decodeJson(); -} catch (TransportException $e) { -if ($e->getStatusCode() === 404) { -return $result; -} -throw $e; -} - -foreach ($apiResult['providers'] as $provider) { -$result[$provider['name']] = $provider; -} - -return $result; -} - -if ($this->hasPartialPackages()) { -if (!is_array($this->partialPackagesByName)) { -throw new \LogicException('hasPartialPackages failed to initialize $this->partialPackagesByName'); -} -foreach ($this->partialPackagesByName as $versions) { -foreach ($versions as $candidate) { -if (isset($result[$candidate['name']]) || !isset($candidate['provide'][$packageName])) { -continue; -} -$result[$candidate['name']] = [ -'name' => $candidate['name'], -'description' => $candidate['description'] ?? '', -'type' => $candidate['type'] ?? '', -]; -} -} -} - -if ($this->packages) { -$result = array_merge($result, parent::getProviders($packageName)); -} - -return $result; -} - - - - -private function getProviderNames(): array -{ -$this->loadRootServerFile(); - -if (null === $this->providerListing) { -$data = $this->loadRootServerFile(); -if (is_array($data)) { -$this->loadProviderListings($data); -} -} - -if ($this->lazyProvidersUrl) { - -return []; -} - -if (null !== $this->providersUrl && null !== $this->providerListing) { -return array_keys($this->providerListing); -} - -return []; -} - -protected function configurePackageTransportOptions(PackageInterface $package): void -{ -foreach ($package->getDistUrls() as $url) { -if (strpos($url, $this->baseUrl) === 0) { -$package->setTransportOptions($this->options); - -return; -} -} -} - -private function hasProviders(): bool -{ -$this->loadRootServerFile(); - -return $this->hasProviders; -} - - - - - - - - - - - -private function whatProvides(string $name, ?array $acceptableStabilities = null, ?array $stabilityFlags = null, array $alreadyLoaded = []): array -{ -$packagesSource = null; -if (!$this->hasPartialPackages() || !isset($this->partialPackagesByName[$name])) { - -if (PlatformRepository::isPlatformPackage($name) || '__root__' === $name) { -return []; -} - -if (null === $this->providerListing) { -$data = $this->loadRootServerFile(); -if (is_array($data)) { -$this->loadProviderListings($data); -} -} - -$useLastModifiedCheck = false; -if ($this->lazyProvidersUrl && !isset($this->providerListing[$name])) { -$hash = null; -$url = str_replace('%package%', $name, $this->lazyProvidersUrl); -$cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; -$useLastModifiedCheck = true; -} elseif ($this->providersUrl) { - -if (!isset($this->providerListing[$name])) { -return []; -} - -$hash = $this->providerListing[$name]['sha256']; -$url = str_replace(['%package%', '%hash%'], [$name, $hash], $this->providersUrl); -$cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; -} else { -return []; -} - -$packages = null; -if (!$useLastModifiedCheck && $hash && $this->cache->sha256($cacheKey) === $hash) { -$packages = json_decode($this->cache->read($cacheKey), true); -$packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; -} elseif ($useLastModifiedCheck) { -if ($contents = $this->cache->read($cacheKey)) { -$contents = json_decode($contents, true); - -if (isset($alreadyLoaded[$name])) { -$packages = $contents; -$packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; -} elseif (isset($contents['last-modified'])) { -$response = $this->fetchFileIfLastModified($url, $cacheKey, $contents['last-modified']); -$packages = true === $response ? $contents : $response; -$packagesSource = true === $response ? 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')' : 'downloaded file ('.Url::sanitize($url).')'; -} -} -} - -if (!$packages) { -try { -$packages = $this->fetchFile($url, $cacheKey, $hash, $useLastModifiedCheck); -$packagesSource = 'downloaded file ('.Url::sanitize($url).')'; -} catch (TransportException $e) { - -if ($this->lazyProvidersUrl && in_array($e->getStatusCode(), [404, 499], true)) { -$packages = ['packages' => []]; -$packagesSource = 'not-found file ('.Url::sanitize($url).')'; -if ($e->getStatusCode() === 499) { -$this->io->error('' . $e->getMessage() . ''); -} -} else { -throw $e; -} -} -} - -$loadingPartialPackage = false; -} else { -$packages = ['packages' => ['versions' => $this->partialPackagesByName[$name]]]; -$packagesSource = 'root file ('.Url::sanitize($this->getPackagesJsonUrl()).')'; -$loadingPartialPackage = true; -} - -$result = []; -$versionsToLoad = []; -foreach ($packages['packages'] as $versions) { -foreach ($versions as $version) { -$normalizedName = strtolower($version['name']); - - -if ($normalizedName !== $name) { -continue; -} - -if (!$loadingPartialPackage && $this->hasPartialPackages() && isset($this->partialPackagesByName[$normalizedName])) { -continue; -} - -if (!isset($versionsToLoad[$version['uid']])) { -if (!isset($version['version_normalized'])) { -$version['version_normalized'] = $this->versionParser->normalize($version['version']); -} elseif ($version['version_normalized'] === VersionParser::DEFAULT_BRANCH_ALIAS) { - -$version['version_normalized'] = $this->versionParser->normalize($version['version']); -} - - -if (isset($alreadyLoaded[$name][$version['version_normalized']])) { -continue; -} - -if ($this->isVersionAcceptable(null, $normalizedName, $version, $acceptableStabilities, $stabilityFlags)) { -$versionsToLoad[$version['uid']] = $version; -} -} -} -} - - -$loadedPackages = $this->createPackages($versionsToLoad, $packagesSource); -$uids = array_keys($versionsToLoad); - -foreach ($loadedPackages as $index => $package) { -$package->setRepository($this); -$uid = $uids[$index]; - -if ($package instanceof AliasPackage) { -$aliased = $package->getAliasOf(); -$aliased->setRepository($this); - -$result[$uid] = $aliased; -$result[$uid.'-alias'] = $package; -} else { -$result[$uid] = $package; -} -} - -return $result; -} - - - - -protected function initialize() -{ -parent::initialize(); - -$repoData = $this->loadDataFromServer(); - -foreach ($this->createPackages($repoData, 'root file ('.Url::sanitize($this->getPackagesJsonUrl()).')') as $package) { -$this->addPackage($package); -} -} - - - - -public function addPackage(PackageInterface $package) -{ -parent::addPackage($package); -$this->configurePackageTransportOptions($package); -} - - - - - - - - - - - - -private function loadAsyncPackages(array $packageNames, ?array $acceptableStabilities = null, ?array $stabilityFlags = null, array $alreadyLoaded = []): array -{ -$this->loadRootServerFile(); - -$packages = []; -$namesFound = []; -$promises = []; - -if (null === $this->lazyProvidersUrl) { -throw new \LogicException('loadAsyncPackages only supports v2 protocol composer repos with a metadata-url'); -} - - -foreach ($packageNames as $name => $constraint) { -if ($acceptableStabilities === null || $stabilityFlags === null || StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, [$name], 'dev')) { -$packageNames[$name.'~dev'] = $constraint; -} - -if (isset($acceptableStabilities['dev']) && count($acceptableStabilities) === 1 && count($stabilityFlags) === 0) { -unset($packageNames[$name]); -} -} - -foreach ($packageNames as $name => $constraint) { -$name = strtolower($name); - -$realName = Preg::replace('{~dev$}', '', $name); - -if (PlatformRepository::isPlatformPackage($realName) || '__root__' === $realName) { -continue; -} - -$promises[] = $this->startCachedAsyncDownload($name, $realName) -->then(function (array $spec) use (&$packages, &$namesFound, $realName, $constraint, $acceptableStabilities, $stabilityFlags, $alreadyLoaded): void { -[$response, $packagesSource] = $spec; -if (null === $response || !isset($response['packages'][$realName])) { -return; -} - -$versions = $response['packages'][$realName]; - -if (isset($response['minified']) && $response['minified'] === 'composer/2.0') { -$versions = MetadataMinifier::expand($versions); -} - -$namesFound[$realName] = true; -$versionsToLoad = []; -foreach ($versions as $version) { -if (!isset($version['version_normalized'])) { -$version['version_normalized'] = $this->versionParser->normalize($version['version']); -} elseif ($version['version_normalized'] === VersionParser::DEFAULT_BRANCH_ALIAS) { - -$version['version_normalized'] = $this->versionParser->normalize($version['version']); -} - - -if (isset($alreadyLoaded[$realName][$version['version_normalized']])) { -continue; -} - -if ($this->isVersionAcceptable($constraint, $realName, $version, $acceptableStabilities, $stabilityFlags)) { -$versionsToLoad[] = $version; -} -} - -$loadedPackages = $this->createPackages($versionsToLoad, $packagesSource); -foreach ($loadedPackages as $package) { -$package->setRepository($this); -$packages[spl_object_hash($package)] = $package; - -if ($package instanceof AliasPackage && !isset($packages[spl_object_hash($package->getAliasOf())])) { -$package->getAliasOf()->setRepository($this); -$packages[spl_object_hash($package->getAliasOf())] = $package->getAliasOf(); -} -} -}); -} - -$this->loop->wait($promises); - -return ['namesFound' => $namesFound, 'packages' => $packages]; -} - -private function startCachedAsyncDownload(string $fileName, ?string $packageName = null): PromiseInterface -{ -if (null === $this->lazyProvidersUrl) { -throw new \LogicException('startCachedAsyncDownload only supports v2 protocol composer repos with a metadata-url'); -} - -$name = strtolower($fileName); -$packageName = $packageName ?? $name; - -$url = str_replace('%package%', $name, $this->lazyProvidersUrl); -$cacheKey = 'provider-'.strtr($name, '/', '~').'.json'; - -$lastModified = null; -if ($contents = $this->cache->read($cacheKey)) { -$contents = json_decode($contents, true); -$lastModified = $contents['last-modified'] ?? null; -} - -return $this->asyncFetchFile($url, $cacheKey, $lastModified) -->then(static function ($response) use ($url, $cacheKey, $contents, $packageName): array { -$packagesSource = 'downloaded file ('.Url::sanitize($url).')'; - -if (true === $response) { -$packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; -$response = $contents; -} - -if (!isset($response['packages'][$packageName]) && !isset($response['security-advisories'])) { -return [null, $packagesSource]; -} - -return [$response, $packagesSource]; -}); -} - - - - - - - - - -private function isVersionAcceptable(?ConstraintInterface $constraint, string $name, array $versionData, ?array $acceptableStabilities = null, ?array $stabilityFlags = null): bool -{ -$versions = [$versionData['version_normalized']]; - -if ($alias = $this->loader->getBranchAlias($versionData)) { -$versions[] = $alias; -} - -foreach ($versions as $version) { -if (null !== $acceptableStabilities && null !== $stabilityFlags && !StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, [$name], VersionParser::parseStability($version))) { -continue; -} - -if ($constraint && !CompilingMatcher::match($constraint, Constraint::OP_EQ, $version)) { -continue; -} - -return true; -} - -return false; -} - -private function getPackagesJsonUrl(): string -{ -$jsonUrlParts = parse_url(strtr($this->url, '\\', '/')); - -if (isset($jsonUrlParts['path']) && false !== strpos($jsonUrlParts['path'], '.json')) { -return $this->url; -} - -return $this->url . '/packages.json'; -} - - - - -protected function loadRootServerFile(?int $rootMaxAge = null) -{ -if (null !== $this->rootData) { -return $this->rootData; -} - -if (!extension_loaded('openssl') && strpos($this->url, 'https') === 0) { -throw new \RuntimeException('You must enable the openssl extension in your php.ini to load information from '.$this->url); -} - -if ($cachedData = $this->cache->read('packages.json')) { -$cachedData = json_decode($cachedData, true); -if ($rootMaxAge !== null && ($age = $this->cache->getAge('packages.json')) !== false && $age <= $rootMaxAge) { -$data = $cachedData; -} elseif (isset($cachedData['last-modified'])) { -$response = $this->fetchFileIfLastModified($this->getPackagesJsonUrl(), 'packages.json', $cachedData['last-modified']); -$data = true === $response ? $cachedData : $response; -} -} - -if (!isset($data)) { -$data = $this->fetchFile($this->getPackagesJsonUrl(), 'packages.json', null, true); -} - -if (!empty($data['notify-batch'])) { -$this->notifyUrl = $this->canonicalizeUrl($data['notify-batch']); -} elseif (!empty($data['notify'])) { -$this->notifyUrl = $this->canonicalizeUrl($data['notify']); -} - -if (!empty($data['search'])) { -$this->searchUrl = $this->canonicalizeUrl($data['search']); -} - -if (!empty($data['mirrors'])) { -foreach ($data['mirrors'] as $mirror) { -if (!empty($mirror['git-url'])) { -$this->sourceMirrors['git'][] = ['url' => $mirror['git-url'], 'preferred' => !empty($mirror['preferred'])]; -} -if (!empty($mirror['hg-url'])) { -$this->sourceMirrors['hg'][] = ['url' => $mirror['hg-url'], 'preferred' => !empty($mirror['preferred'])]; -} -if (!empty($mirror['dist-url'])) { -$this->distMirrors[] = [ -'url' => $this->canonicalizeUrl($mirror['dist-url']), -'preferred' => !empty($mirror['preferred']), -]; -} -} -} - -if (!empty($data['providers-lazy-url'])) { -$this->lazyProvidersUrl = $this->canonicalizeUrl($data['providers-lazy-url']); -$this->hasProviders = true; - -$this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); -} - - - - -if (!empty($data['metadata-url'])) { -$this->lazyProvidersUrl = $this->canonicalizeUrl($data['metadata-url']); -$this->providersUrl = null; -$this->hasProviders = false; -$this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); -$this->allowSslDowngrade = false; - - - - -if (!empty($data['available-packages'])) { -$availPackages = array_map('strtolower', $data['available-packages']); -$this->availablePackages = array_combine($availPackages, $availPackages); -$this->hasAvailablePackageList = true; -} - - - - -if (!empty($data['available-package-patterns'])) { -$this->availablePackagePatterns = array_map(static function ($pattern): string { -return BasePackage::packageNameToRegexp($pattern); -}, $data['available-package-patterns']); -$this->hasAvailablePackageList = true; -} - - - -unset($data['providers-url'], $data['providers'], $data['providers-includes']); - -if (isset($data['security-advisories']) && is_array($data['security-advisories'])) { -$this->securityAdvisoryConfig = [ -'metadata' => $data['security-advisories']['metadata'] ?? false, -'api-url' => $data['security-advisories']['api-url'] ?? null, -'query-all' => $data['security-advisories']['query-all'] ?? false, -]; -} -} - -if ($this->allowSslDowngrade) { -$this->url = str_replace('https://', 'http://', $this->url); -$this->baseUrl = str_replace('https://', 'http://', $this->baseUrl); -} - -if (!empty($data['providers-url'])) { -$this->providersUrl = $this->canonicalizeUrl($data['providers-url']); -$this->hasProviders = true; -} - -if (!empty($data['list'])) { -$this->listUrl = $this->canonicalizeUrl($data['list']); -} - -if (!empty($data['providers']) || !empty($data['providers-includes'])) { -$this->hasProviders = true; -} - -if (!empty($data['providers-api'])) { -$this->providersApiUrl = $this->canonicalizeUrl($data['providers-api']); -} - -return $this->rootData = $data; -} - - - - - -private function canonicalizeUrl(string $url): string -{ -if ('/' === $url[0]) { -if (Preg::isMatch('{^[^:]++://[^/]*+}', $this->url, $matches)) { -return $matches[0] . $url; -} - -return $this->url; -} - -return $url; -} - - - - -private function loadDataFromServer(): array -{ -$data = $this->loadRootServerFile(); -if (true === $data) { -throw new \LogicException('loadRootServerFile should not return true during initialization'); -} - -return $this->loadIncludes($data); -} - -private function hasPartialPackages(): bool -{ -if ($this->hasPartialPackages && null === $this->partialPackagesByName) { -$this->initializePartialPackages(); -} - -return $this->hasPartialPackages; -} - - - - -private function loadProviderListings($data): void -{ -if (isset($data['providers'])) { -if (!is_array($this->providerListing)) { -$this->providerListing = []; -} -$this->providerListing = array_merge($this->providerListing, $data['providers']); -} - -if ($this->providersUrl && isset($data['provider-includes'])) { -$includes = $data['provider-includes']; -foreach ($includes as $include => $metadata) { -$url = $this->baseUrl . '/' . str_replace('%hash%', $metadata['sha256'], $include); -$cacheKey = str_replace(['%hash%','$'], '', $include); -if ($this->cache->sha256($cacheKey) === $metadata['sha256']) { -$includedData = json_decode($this->cache->read($cacheKey), true); -} else { -$includedData = $this->fetchFile($url, $cacheKey, $metadata['sha256']); -} - -$this->loadProviderListings($includedData); -} -} -} - - - - - - -private function loadIncludes(array $data): array -{ -$packages = []; - - -if (!isset($data['packages']) && !isset($data['includes'])) { -foreach ($data as $pkg) { -if (isset($pkg['versions']) && is_array($pkg['versions'])) { -foreach ($pkg['versions'] as $metadata) { -$packages[] = $metadata; -} -} -} - -return $packages; -} - -if (isset($data['packages'])) { -foreach ($data['packages'] as $package => $versions) { -$packageName = strtolower((string) $package); -foreach ($versions as $version => $metadata) { -$packages[] = $metadata; -if (!$this->displayedWarningAboutNonMatchingPackageIndex && $packageName !== strtolower((string) ($metadata['name'] ?? ''))) { -$this->displayedWarningAboutNonMatchingPackageIndex = true; -$this->io->writeError(sprintf("Warning: the packages key '%s' doesn't match the name defined in the package metadata '%s' in repository %s", $package, $metadata['name'] ?? '', $this->baseUrl)); -} -} -} -} - -if (isset($data['includes'])) { -foreach ($data['includes'] as $include => $metadata) { -if (isset($metadata['sha1']) && $this->cache->sha1((string) $include) === $metadata['sha1']) { -$includedData = json_decode($this->cache->read((string) $include), true); -} else { -$includedData = $this->fetchFile($include); -} -$packages = array_merge($packages, $this->loadIncludes($includedData)); -} -} - -return $packages; -} - - - - - - -private function createPackages(array $packages, ?string $source = null): array -{ -if (!$packages) { -return []; -} - -try { -foreach ($packages as &$data) { -if (!isset($data['notification-url'])) { -$data['notification-url'] = $this->notifyUrl; -} -} - -$packageInstances = $this->loader->loadPackages($packages); - -foreach ($packageInstances as $package) { -if (isset($this->sourceMirrors[$package->getSourceType()])) { -$package->setSourceMirrors($this->sourceMirrors[$package->getSourceType()]); -} -$package->setDistMirrors($this->distMirrors); -$this->configurePackageTransportOptions($package); -} - -return $packageInstances; -} catch (\Exception $e) { -throw new \RuntimeException('Could not load packages '.($packages[0]['name'] ?? json_encode($packages)).' in '.$this->getRepoName().($source ? ' from '.$source : '').': ['.get_class($e).'] '.$e->getMessage(), 0, $e); -} -} - - - - -protected function fetchFile(string $filename, ?string $cacheKey = null, ?string $sha256 = null, bool $storeLastModifiedTime = false) -{ -if ('' === $filename) { -throw new \InvalidArgumentException('$filename should not be an empty string'); -} - -if (null === $cacheKey) { -$cacheKey = $filename; -$filename = $this->baseUrl.'/'.$filename; -} - - -if (($pos = strpos($filename, '$')) && Preg::isMatch('{^https?://}i', $filename)) { -$filename = substr($filename, 0, $pos) . '%24' . substr($filename, $pos + 1); -} - -$retries = 3; -while ($retries--) { -try { -$options = $this->options; -if ($this->eventDispatcher) { -$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata', ['repository' => $this]); -$preFileDownloadEvent->setTransportOptions($this->options); -$this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); -$filename = $preFileDownloadEvent->getProcessedUrl(); -$options = $preFileDownloadEvent->getTransportOptions(); -} - -$response = $this->httpDownloader->get($filename, $options); -$json = (string) $response->getBody(); -if ($sha256 && $sha256 !== hash('sha256', $json)) { - -if ($this->allowSslDowngrade) { -$this->url = str_replace('http://', 'https://', $this->url); -$this->baseUrl = str_replace('http://', 'https://', $this->baseUrl); -$filename = str_replace('http://', 'https://', $filename); -} - -if ($retries > 0) { -usleep(100000); - -continue; -} - - -throw new RepositorySecurityException('The contents of '.$filename.' do not match its signature. This could indicate a man-in-the-middle attack or e.g. antivirus software corrupting files. Try running composer again and report this if you think it is a mistake.'); -} - -if ($this->eventDispatcher) { -$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, null, $sha256, $filename, 'metadata', ['response' => $response, 'repository' => $this]); -$this->eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); -} - -$data = $response->decodeJson(); -HttpDownloader::outputWarnings($this->io, $this->url, $data); - -if ($cacheKey && !$this->cache->isReadOnly()) { -if ($storeLastModifiedTime) { -$lastModifiedDate = $response->getHeader('last-modified'); -if ($lastModifiedDate) { -$data['last-modified'] = $lastModifiedDate; -$json = JsonFile::encode($data, 0); -} -} -$this->cache->write($cacheKey, $json); -} - -$response->collect(); - -break; -} catch (\Exception $e) { -if ($e instanceof \LogicException) { -throw $e; -} - -if ($e instanceof TransportException && $e->getStatusCode() === 404) { -throw $e; -} - -if ($e instanceof RepositorySecurityException) { -throw $e; -} - -if ($cacheKey && ($contents = $this->cache->read($cacheKey))) { -if (!$this->degradedMode) { -$this->io->writeError(''.$this->url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); -} -$this->degradedMode = true; -$data = JsonFile::parseJson($contents, $this->cache->getRoot().$cacheKey); - -break; -} - -throw $e; -} -} - -if (!isset($data)) { -throw new \LogicException("ComposerRepository: Undefined \$data. Please report at https://github.com/composer/composer/issues/new."); -} - -return $data; -} - - - - -private function fetchFileIfLastModified(string $filename, string $cacheKey, string $lastModifiedTime) -{ -if ('' === $filename) { -throw new \InvalidArgumentException('$filename should not be an empty string'); -} - -try { -$options = $this->options; -if ($this->eventDispatcher) { -$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata', ['repository' => $this]); -$preFileDownloadEvent->setTransportOptions($this->options); -$this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); -$filename = $preFileDownloadEvent->getProcessedUrl(); -$options = $preFileDownloadEvent->getTransportOptions(); -} - -if (isset($options['http']['header'])) { -$options['http']['header'] = (array) $options['http']['header']; -} -$options['http']['header'][] = 'If-Modified-Since: '.$lastModifiedTime; -$response = $this->httpDownloader->get($filename, $options); -$json = (string) $response->getBody(); -if ($json === '' && $response->getStatusCode() === 304) { -return true; -} - -if ($this->eventDispatcher) { -$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, null, null, $filename, 'metadata', ['response' => $response, 'repository' => $this]); -$this->eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); -} - -$data = $response->decodeJson(); -HttpDownloader::outputWarnings($this->io, $this->url, $data); - -$lastModifiedDate = $response->getHeader('last-modified'); -$response->collect(); -if ($lastModifiedDate) { -$data['last-modified'] = $lastModifiedDate; -$json = JsonFile::encode($data, 0); -} -if (!$this->cache->isReadOnly()) { -$this->cache->write($cacheKey, $json); -} - -return $data; -} catch (\Exception $e) { -if ($e instanceof \LogicException) { -throw $e; -} - -if ($e instanceof TransportException && $e->getStatusCode() === 404) { -throw $e; -} - -if (!$this->degradedMode) { -$this->io->writeError(''.$this->url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); -} -$this->degradedMode = true; - -return true; -} -} - -private function asyncFetchFile(string $filename, string $cacheKey, ?string $lastModifiedTime = null): PromiseInterface -{ -if ('' === $filename) { -throw new \InvalidArgumentException('$filename should not be an empty string'); -} - -if (isset($this->packagesNotFoundCache[$filename])) { -return \React\Promise\resolve(['packages' => []]); -} - -if (isset($this->freshMetadataUrls[$filename]) && $lastModifiedTime) { - -return \React\Promise\resolve(true); -} - -$httpDownloader = $this->httpDownloader; -$options = $this->options; -if ($this->eventDispatcher) { -$preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata', ['repository' => $this]); -$preFileDownloadEvent->setTransportOptions($this->options); -$this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); -$filename = $preFileDownloadEvent->getProcessedUrl(); -$options = $preFileDownloadEvent->getTransportOptions(); -} - -if ($lastModifiedTime) { -if (isset($options['http']['header'])) { -$options['http']['header'] = (array) $options['http']['header']; -} -$options['http']['header'][] = 'If-Modified-Since: '.$lastModifiedTime; -} - -$io = $this->io; -$url = $this->url; -$cache = $this->cache; -$degradedMode = &$this->degradedMode; -$eventDispatcher = $this->eventDispatcher; - - - - -$accept = function ($response) use ($io, $url, $filename, $cache, $cacheKey, $eventDispatcher) { - -if ($response->getStatusCode() === 404) { -$this->packagesNotFoundCache[$filename] = true; - -return ['packages' => []]; -} - -$json = (string) $response->getBody(); -if ($json === '' && $response->getStatusCode() === 304) { -$this->freshMetadataUrls[$filename] = true; - -return true; -} - -if ($eventDispatcher) { -$postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, null, null, $filename, 'metadata', ['response' => $response, 'repository' => $this]); -$eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); -} - -$data = $response->decodeJson(); -HttpDownloader::outputWarnings($io, $url, $data); - -$lastModifiedDate = $response->getHeader('last-modified'); -$response->collect(); -if ($lastModifiedDate) { -$data['last-modified'] = $lastModifiedDate; -$json = JsonFile::encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE); -} -if (!$cache->isReadOnly()) { -$cache->write($cacheKey, $json); -} -$this->freshMetadataUrls[$filename] = true; - -return $data; -}; - -$reject = function ($e) use ($filename, $accept, $io, $url, &$degradedMode, $lastModifiedTime) { -if ($e instanceof TransportException && $e->getStatusCode() === 404) { -$this->packagesNotFoundCache[$filename] = true; - -return false; -} - -if (!$degradedMode) { -$io->writeError(''.$url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); -} -$degradedMode = true; - - -if ($lastModifiedTime) { -return $accept(new Response(['url' => $url], 304, [], '')); -} - - -if ($e instanceof TransportException && $e->getStatusCode() === 499) { -return $accept(new Response(['url' => $url], 404, [], '')); -} - -throw $e; -}; - -return $httpDownloader->add($filename, $options)->then($accept, $reject); -} - - - - - - -private function initializePartialPackages(): void -{ -$rootData = $this->loadRootServerFile(); -if ($rootData === true) { -return; -} - -$this->partialPackagesByName = []; -foreach ($rootData['packages'] as $package => $versions) { -foreach ($versions as $version) { -$versionPackageName = strtolower((string) ($version['name'] ?? '')); -$this->partialPackagesByName[$versionPackageName][] = $version; -if (!$this->displayedWarningAboutNonMatchingPackageIndex && $versionPackageName !== strtolower($package)) { -$this->io->writeError(sprintf("Warning: the packages key '%s' doesn't match the name defined in the package metadata '%s' in repository %s", $package, $version['name'] ?? '', $this->baseUrl)); -$this->displayedWarningAboutNonMatchingPackageIndex = true; -} -} -} - - -$this->rootData = true; -} - - - - - - -protected function lazyProvidersRepoContains(string $name) -{ -if (!$this->hasAvailablePackageList) { -throw new \LogicException('lazyProvidersRepoContains should not be called unless hasAvailablePackageList is true'); -} - -if (is_array($this->availablePackages) && isset($this->availablePackages[$name])) { -return true; -} - -if (is_array($this->availablePackagePatterns)) { -foreach ($this->availablePackagePatterns as $providerRegex) { -if (Preg::isMatch($providerRegex, $name)) { -return true; -} -} -} - -return false; -} -} diff --git a/composer/src/Composer/Repository/CompositeRepository.php b/composer/src/Composer/Repository/CompositeRepository.php deleted file mode 100644 index 06b896a11..000000000 --- a/composer/src/Composer/Repository/CompositeRepository.php +++ /dev/null @@ -1,203 +0,0 @@ -repositories = []; -foreach ($repositories as $repo) { -$this->addRepository($repo); -} -} - -public function getRepoName(): string -{ -return 'composite repo ('.implode(', ', array_map(static function ($repo): string { -return $repo->getRepoName(); -}, $this->repositories)).')'; -} - - - - - - -public function getRepositories(): array -{ -return $this->repositories; -} - - - - -public function hasPackage(PackageInterface $package): bool -{ -foreach ($this->repositories as $repository) { - -if ($repository->hasPackage($package)) { -return true; -} -} - -return false; -} - - - - -public function findPackage($name, $constraint): ?BasePackage -{ -foreach ($this->repositories as $repository) { - -$package = $repository->findPackage($name, $constraint); -if (null !== $package) { -return $package; -} -} - -return null; -} - - - - -public function findPackages($name, $constraint = null): array -{ -$packages = []; -foreach ($this->repositories as $repository) { - -$packages[] = $repository->findPackages($name, $constraint); -} - -return $packages ? array_merge(...$packages) : []; -} - - - - -public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []): array -{ -$packages = []; -$namesFound = []; -foreach ($this->repositories as $repository) { - -$result = $repository->loadPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); -$packages[] = $result['packages']; -$namesFound[] = $result['namesFound']; -} - -return [ -'packages' => $packages ? array_merge(...$packages) : [], -'namesFound' => $namesFound ? array_unique(array_merge(...$namesFound)) : [], -]; -} - - - - -public function search(string $query, int $mode = 0, ?string $type = null): array -{ -$matches = []; -foreach ($this->repositories as $repository) { - -$matches[] = $repository->search($query, $mode, $type); -} - -return \count($matches) > 0 ? array_merge(...$matches) : []; -} - - - - -public function getPackages(): array -{ -$packages = []; -foreach ($this->repositories as $repository) { - -$packages[] = $repository->getPackages(); -} - -return $packages ? array_merge(...$packages) : []; -} - - - - -public function getProviders($packageName): array -{ -$results = []; -foreach ($this->repositories as $repository) { - -$results[] = $repository->getProviders($packageName); -} - -return $results ? array_merge(...$results) : []; -} - -public function removePackage(PackageInterface $package): void -{ -foreach ($this->repositories as $repository) { -if ($repository instanceof WritableRepositoryInterface) { -$repository->removePackage($package); -} -} -} - - - - -public function count(): int -{ -$total = 0; -foreach ($this->repositories as $repository) { - -$total += $repository->count(); -} - -return $total; -} - - - - -public function addRepository(RepositoryInterface $repository): void -{ -if ($repository instanceof self) { -foreach ($repository->getRepositories() as $repo) { -$this->addRepository($repo); -} -} else { -$this->repositories[] = $repository; -} -} -} diff --git a/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php b/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php deleted file mode 100644 index fe0f6bdf3..000000000 --- a/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php +++ /dev/null @@ -1,26 +0,0 @@ -file = $repositoryFile; - $this->dumpVersions = $dumpVersions; - $this->rootPackage = $rootPackage; - $this->filesystem = $filesystem ?: new Filesystem; - if ($dumpVersions && !$rootPackage) { - throw new \InvalidArgumentException('Expected a root package instance if $dumpVersions is true'); - } - } - - - public function getDevMode() - { - return $this->devMode; - } - - - protected function initialize() - { - parent::initialize(); - - if (!$this->file->exists()) { - return; - } - - try { - $data = $this->file->read(); - if (isset($data['packages'])) { - $packages = $data['packages']; - } else { - $packages = $data; - } - - if (isset($data['dev-package-names'])) { - $this->setDevPackageNames($data['dev-package-names']); - } - if (isset($data['dev'])) { - $this->devMode = $data['dev']; - } - - if (!is_array($packages)) { - throw new \UnexpectedValueException('Could not parse package list from the repository'); - } - } catch (\Exception $e) { - throw new InvalidRepositoryException('Invalid repository data in ' . $this->file->getPath() . ', packages could not be loaded: [' . get_class($e) . '] ' . $e->getMessage()); - } - - $loader = new ArrayLoader(null, true); - foreach ($packages as $packageData) { - $package = $loader->load($packageData); - $this->addPackage($package); - } - } - - public function reload() - { - $this->packages = null; - $this->initialize(); - } - - - public function write(bool $devMode, InstallationManager $installationManager) - { - $data = ['packages' => [], 'dev' => $devMode, 'dev-package-names' => []]; - $dumper = new ArrayDumper(); - - - $repoDir = dirname($this->file->getPath()); - $this->filesystem->ensureDirectoryExists($repoDir); - - $repoDir = $this->filesystem->normalizePath(realpath($repoDir)); - $installPaths = []; - - foreach ($this->getCanonicalPackages() as $package) { - $pkgArray = $dumper->dump($package); - $path = $installationManager->getInstallPath($package); - $installPath = null; - if ('' !== $path && null !== $path) { - $normalizedPath = $this->filesystem->normalizePath($this->filesystem->isAbsolutePath($path) ? $path : Platform::getCwd() . '/' . $path); - $installPath = $this->filesystem->findShortestPath($repoDir, $normalizedPath, true); - } - $installPaths[$package->getName()] = $installPath; - - $pkgArray['install-path'] = $installPath; - $data['packages'][] = $pkgArray; - - - if (in_array($package->getName(), $this->devPackageNames, true)) { - $data['dev-package-names'][] = $package->getName(); - } - } - - sort($data['dev-package-names']); - usort($data['packages'], static function ($a, $b): int { - return strcmp($a['name'], $b['name']); - }); - - $this->file->write($data); - - if ($this->dumpVersions) { - $versions = $this->generateInstalledVersions($installationManager, $installPaths, $devMode, $repoDir); - - $this->filesystem->filePutContentsIfModified($repoDir . '/installed.php', 'dumpToPhpCode($versions) . ';' . "\n"); - $installedVersionsClass = file_get_contents(__DIR__ . '/../InstalledVersions.php'); - $this->filesystem->filePutContentsIfModified($repoDir . '/InstalledVersions.php', $installedVersionsClass); - - \Composer\InstalledVersions::reload($versions); - } - } - - - private function dumpToPhpCode(array $array = [], int $level = 0): string - { - $lines = "array(\n"; - $level++; - - foreach ($array as $key => $value) { - $lines .= str_repeat(' ', $level); - $lines .= is_int($key) ? $key . ' => ' : '\'' . $key . '\' => '; - - if (is_array($value)) { - if (!empty($value)) { - $lines .= $this->dumpToPhpCode($value, $level); - } else { - $lines .= "array(),\n"; - } - } elseif ($key === 'install_path' && is_string($value)) { - if ($this->filesystem->isAbsolutePath($value)) { - $lines .= var_export($value, true) . ",\n"; - } else { - $lines .= "__DIR__ . " . var_export('/' . $value, true) . ",\n"; - } - } else { - $lines .= var_export($value, true) . ",\n"; - } - } - - $lines .= str_repeat(' ', $level - 1) . ')' . ($level - 1 === 0 ? '' : ",\n"); - - return $lines; - } - - - private function generateInstalledVersions(InstallationManager $installationManager, array $installPaths, bool $devMode, string $repoDir): array - { - $devPackages = array_flip($this->devPackageNames); - $packages = $this->getPackages(); - if (null === $this->rootPackage) { - throw new \LogicException('It should not be possible to dump packages if no root package is given'); - } - $packages[] = $rootPackage = $this->rootPackage; - - while ($rootPackage instanceof RootAliasPackage) { - $rootPackage = $rootPackage->getAliasOf(); - $packages[] = $rootPackage; - } - $versions = [ - 'root' => $this->dumpRootPackage($rootPackage, $installPaths, $devMode, $repoDir, $devPackages), - 'versions' => [], - ]; - - - foreach ($packages as $package) { - if ($package instanceof AliasPackage) { - continue; - } - - $versions['versions'][$package->getName()] = $this->dumpInstalledPackage($package, $installPaths, $repoDir, $devPackages); - } - - - foreach ($packages as $package) { - $isDevPackage = isset($devPackages[$package->getName()]); - foreach ($package->getReplaces() as $replace) { - - if (PlatformRepository::isPlatformPackage($replace->getTarget())) { - continue; - } - if (!isset($versions['versions'][$replace->getTarget()]['dev_requirement'])) { - $versions['versions'][$replace->getTarget()]['dev_requirement'] = $isDevPackage; - } elseif (!$isDevPackage) { - $versions['versions'][$replace->getTarget()]['dev_requirement'] = false; - } - $replaced = $replace->getPrettyConstraint(); - if ($replaced === 'self.version') { - $replaced = $package->getPrettyVersion(); - } - if (!isset($versions['versions'][$replace->getTarget()]['replaced']) || !in_array($replaced, $versions['versions'][$replace->getTarget()]['replaced'], true)) { - $versions['versions'][$replace->getTarget()]['replaced'][] = $replaced; - } - } - foreach ($package->getProvides() as $provide) { - - if (PlatformRepository::isPlatformPackage($provide->getTarget())) { - continue; - } - if (!isset($versions['versions'][$provide->getTarget()]['dev_requirement'])) { - $versions['versions'][$provide->getTarget()]['dev_requirement'] = $isDevPackage; - } elseif (!$isDevPackage) { - $versions['versions'][$provide->getTarget()]['dev_requirement'] = false; - } - $provided = $provide->getPrettyConstraint(); - if ($provided === 'self.version') { - $provided = $package->getPrettyVersion(); - } - if (!isset($versions['versions'][$provide->getTarget()]['provided']) || !in_array($provided, $versions['versions'][$provide->getTarget()]['provided'], true)) { - $versions['versions'][$provide->getTarget()]['provided'][] = $provided; - } - } - } - - - foreach ($packages as $package) { - if (!$package instanceof AliasPackage) { - continue; - } - $versions['versions'][$package->getName()]['aliases'][] = $package->getPrettyVersion(); - if ($package instanceof RootPackageInterface) { - $versions['root']['aliases'][] = $package->getPrettyVersion(); - } - } - - ksort($versions['versions']); - ksort($versions); - - return $versions; - } - - - private function dumpInstalledPackage(PackageInterface $package, array $installPaths, string $repoDir, array $devPackages): array - { - $reference = null; - if ($package->getInstallationSource()) { - $reference = $package->getInstallationSource() === 'source' ? $package->getSourceReference() : $package->getDistReference(); - } - if (null === $reference) { - $reference = ($package->getSourceReference() ?: $package->getDistReference()) ?: null; - } - - if ($package instanceof RootPackageInterface) { - $to = $this->filesystem->normalizePath(realpath(Platform::getCwd())); - $installPath = $this->filesystem->findShortestPath($repoDir, $to, true); - } else { - $installPath = $installPaths[$package->getName()]; - } - - $data = [ - 'pretty_version' => $package->getPrettyVersion(), - 'version' => $package->getVersion(), - 'reference' => $reference, - 'type' => $package->getType(), - 'install_path' => $installPath, - 'aliases' => [], - 'dev_requirement' => isset($devPackages[$package->getName()]), - ]; - - return $data; - } - - - private function dumpRootPackage(RootPackageInterface $package, array $installPaths, bool $devMode, string $repoDir, array $devPackages) - { - $data = $this->dumpInstalledPackage($package, $installPaths, $repoDir, $devPackages); - - return [ - 'name' => $package->getName(), - 'pretty_version' => $data['pretty_version'], - 'version' => $data['version'], - 'reference' => $data['reference'], - 'type' => $data['type'], - 'install_path' => $data['install_path'], - 'aliases' => $data['aliases'], - 'dev' => $devMode, - ]; - } -} diff --git a/composer/src/Composer/Repository/FilterRepository.php b/composer/src/Composer/Repository/FilterRepository.php deleted file mode 100644 index 6a0a9f775..000000000 --- a/composer/src/Composer/Repository/FilterRepository.php +++ /dev/null @@ -1,234 +0,0 @@ -getRepoName().' should be an array'); -} -$this->only = BasePackage::packageNamesToRegexp($options['only']); -} -if (isset($options['exclude'])) { -if (!is_array($options['exclude'])) { -throw new \InvalidArgumentException('"exclude" key for repository '.$repo->getRepoName().' should be an array'); -} -$this->exclude = BasePackage::packageNamesToRegexp($options['exclude']); -} -if ($this->exclude && $this->only) { -throw new \InvalidArgumentException('Only one of "only" and "exclude" can be specified for repository '.$repo->getRepoName()); -} -if (isset($options['canonical'])) { -if (!is_bool($options['canonical'])) { -throw new \InvalidArgumentException('"canonical" key for repository '.$repo->getRepoName().' should be a boolean'); -} -$this->canonical = $options['canonical']; -} - -$this->repo = $repo; -} - -public function getRepoName(): string -{ -return $this->repo->getRepoName(); -} - - - - -public function getRepository(): RepositoryInterface -{ -return $this->repo; -} - - - - -public function hasPackage(PackageInterface $package): bool -{ -return $this->repo->hasPackage($package); -} - - - - -public function findPackage($name, $constraint): ?BasePackage -{ -if (!$this->isAllowed($name)) { -return null; -} - -return $this->repo->findPackage($name, $constraint); -} - - - - -public function findPackages($name, $constraint = null): array -{ -if (!$this->isAllowed($name)) { -return []; -} - -return $this->repo->findPackages($name, $constraint); -} - - - - -public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []): array -{ -foreach ($packageNameMap as $name => $constraint) { -if (!$this->isAllowed($name)) { -unset($packageNameMap[$name]); -} -} - -if (!$packageNameMap) { -return ['namesFound' => [], 'packages' => []]; -} - -$result = $this->repo->loadPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); -if (!$this->canonical) { -$result['namesFound'] = []; -} - -return $result; -} - - - - -public function search(string $query, int $mode = 0, ?string $type = null): array -{ -$result = []; - -foreach ($this->repo->search($query, $mode, $type) as $package) { -if ($this->isAllowed($package['name'])) { -$result[] = $package; -} -} - -return $result; -} - - - - -public function getPackages(): array -{ -$result = []; -foreach ($this->repo->getPackages() as $package) { -if ($this->isAllowed($package->getName())) { -$result[] = $package; -} -} - -return $result; -} - - - - -public function getProviders($packageName): array -{ -$result = []; -foreach ($this->repo->getProviders($packageName) as $name => $provider) { -if ($this->isAllowed($provider['name'])) { -$result[$name] = $provider; -} -} - -return $result; -} - - - - -public function count(): int -{ -if ($this->repo->count() > 0) { -return count($this->getPackages()); -} - -return 0; -} - -public function hasSecurityAdvisories(): bool -{ -if (!$this->repo instanceof AdvisoryProviderInterface) { -return false; -} - -return $this->repo->hasSecurityAdvisories(); -} - - - - -public function getSecurityAdvisories(array $packageConstraintMap, bool $allowPartialAdvisories = false): array -{ -if (!$this->repo instanceof AdvisoryProviderInterface) { -return ['namesFound' => [], 'advisories' => []]; -} - -foreach ($packageConstraintMap as $name => $constraint) { -if (!$this->isAllowed($name)) { -unset($packageConstraintMap[$name]); -} -} - -return $this->repo->getSecurityAdvisories($packageConstraintMap, $allowPartialAdvisories); -} - -private function isAllowed(string $name): bool -{ -if (!$this->only && !$this->exclude) { -return true; -} - -if ($this->only) { -return Preg::isMatch($this->only, $name); -} - -if ($this->exclude === null) { -return true; -} - -return !Preg::isMatch($this->exclude, $name); -} -} diff --git a/composer/src/Composer/Repository/InstalledArrayRepository.php b/composer/src/Composer/Repository/InstalledArrayRepository.php deleted file mode 100644 index a137773f9..000000000 --- a/composer/src/Composer/Repository/InstalledArrayRepository.php +++ /dev/null @@ -1,38 +0,0 @@ -count() === 0; -} -} diff --git a/composer/src/Composer/Repository/InstalledFilesystemRepository.php b/composer/src/Composer/Repository/InstalledFilesystemRepository.php deleted file mode 100644 index a975ad118..000000000 --- a/composer/src/Composer/Repository/InstalledFilesystemRepository.php +++ /dev/null @@ -1,19 +0,0 @@ -file->exists(); - } -} diff --git a/composer/src/Composer/Repository/InstalledRepository.php b/composer/src/Composer/Repository/InstalledRepository.php deleted file mode 100644 index 4ccbac106..000000000 --- a/composer/src/Composer/Repository/InstalledRepository.php +++ /dev/null @@ -1,276 +0,0 @@ -parseConstraints($constraint); -} - -$matches = []; -foreach ($this->getRepositories() as $repo) { -foreach ($repo->getPackages() as $candidate) { -if ($name === $candidate->getName()) { -if (null === $constraint || $constraint->matches(new Constraint('==', $candidate->getVersion()))) { -$matches[] = $candidate; -} -continue; -} - -foreach (array_merge($candidate->getProvides(), $candidate->getReplaces()) as $link) { -if ( -$name === $link->getTarget() -&& ($constraint === null || $constraint->matches($link->getConstraint())) -) { -$matches[] = $candidate; -continue 2; -} -} -} -} - -return $matches; -} - - - - - - - - - - - - - - - - -public function getDependents($needle, ?ConstraintInterface $constraint = null, bool $invert = false, bool $recurse = true, ?array $packagesFound = null): array -{ -$needles = array_map('strtolower', (array) $needle); -$results = []; - - -if (null === $packagesFound) { -$packagesFound = $needles; -} - - -$rootPackage = null; -foreach ($this->getPackages() as $package) { -if ($package instanceof RootPackageInterface) { -$rootPackage = $package; -break; -} -} - - -foreach ($this->getPackages() as $package) { -$links = $package->getRequires(); - - - -$packagesInTree = $packagesFound; - - -if (!$invert) { -$links += $package->getReplaces(); - - - - -foreach ($package->getReplaces() as $link) { -foreach ($needles as $needle) { -if ($link->getSource() === $needle) { -if ($constraint === null || ($link->getConstraint()->matches($constraint) === true)) { - -if (in_array($link->getTarget(), $packagesInTree)) { -$results[] = [$package, $link, false]; -continue; -} -$packagesInTree[] = $link->getTarget(); -$dependents = $recurse ? $this->getDependents($link->getTarget(), null, false, true, $packagesInTree) : []; -$results[] = [$package, $link, $dependents]; -$needles[] = $link->getTarget(); -} -} -} -} -} - - -if ($package instanceof RootPackageInterface) { -$links += $package->getDevRequires(); -} - - -foreach ($links as $link) { -foreach ($needles as $needle) { -if ($link->getTarget() === $needle) { -if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { - -if (in_array($link->getSource(), $packagesInTree)) { -$results[] = [$package, $link, false]; -continue; -} -$packagesInTree[] = $link->getSource(); -$dependents = $recurse ? $this->getDependents($link->getSource(), null, false, true, $packagesInTree) : []; -$results[] = [$package, $link, $dependents]; -} -} -} -} - - -if ($invert && in_array($package->getName(), $needles)) { -foreach ($package->getConflicts() as $link) { -foreach ($this->findPackages($link->getTarget()) as $pkg) { -$version = new Constraint('=', $pkg->getVersion()); -if ($link->getConstraint()->matches($version) === $invert) { -$results[] = [$package, $link, false]; -} -} -} -} - - -foreach ($package->getConflicts() as $link) { -if (in_array($link->getTarget(), $needles)) { -foreach ($this->findPackages($link->getTarget()) as $pkg) { -$version = new Constraint('=', $pkg->getVersion()); -if ($link->getConstraint()->matches($version) === $invert) { -$results[] = [$package, $link, false]; -} -} -} -} - - -if ($invert && $constraint && in_array($package->getName(), $needles) && $constraint->matches(new Constraint('=', $package->getVersion()))) { -foreach ($package->getRequires() as $link) { -if (PlatformRepository::isPlatformPackage($link->getTarget())) { -if ($this->findPackage($link->getTarget(), $link->getConstraint())) { -continue; -} - -$platformPkg = $this->findPackage($link->getTarget(), '*'); -$description = $platformPkg ? 'but '.$platformPkg->getPrettyVersion().' is installed' : 'but it is missing'; -$results[] = [$package, new Link($package->getName(), $link->getTarget(), new MatchAllConstraint, Link::TYPE_REQUIRE, $link->getPrettyConstraint().' '.$description), false]; - -continue; -} - -foreach ($this->getPackages() as $pkg) { -if (!in_array($link->getTarget(), $pkg->getNames())) { -continue; -} - -$version = new Constraint('=', $pkg->getVersion()); - -if ($link->getTarget() !== $pkg->getName()) { -foreach (array_merge($pkg->getReplaces(), $pkg->getProvides()) as $prov) { -if ($link->getTarget() === $prov->getTarget()) { -$version = $prov->getConstraint(); -break; -} -} -} - -if (!$link->getConstraint()->matches($version)) { - - -if ($rootPackage) { -foreach (array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires()) as $rootReq) { -if (in_array($rootReq->getTarget(), $pkg->getNames()) && !$rootReq->getConstraint()->matches($link->getConstraint())) { -$results[] = [$package, $link, false]; -$results[] = [$rootPackage, $rootReq, false]; -continue 3; -} -} - -$results[] = [$package, $link, false]; -$results[] = [$rootPackage, new Link($rootPackage->getName(), $link->getTarget(), new MatchAllConstraint, Link::TYPE_DOES_NOT_REQUIRE, 'but ' . $pkg->getPrettyVersion() . ' is installed'), false]; -} else { - -$results[] = [$package, $link, false]; -} -} - -continue 2; -} -} -} -} - -ksort($results); - -return $results; -} - -public function getRepoName(): string -{ -return 'installed repo ('.implode(', ', array_map(static function ($repo): string { -return $repo->getRepoName(); -}, $this->getRepositories())).')'; -} - - - - -public function addRepository(RepositoryInterface $repository): void -{ -if ( -$repository instanceof LockArrayRepository -|| $repository instanceof InstalledRepositoryInterface -|| $repository instanceof RootPackageRepository -|| $repository instanceof PlatformRepository -) { -parent::addRepository($repository); - -return; -} - -throw new \LogicException('An InstalledRepository can not contain a repository of type '.get_class($repository).' ('.$repository->getRepoName().')'); -} -} diff --git a/composer/src/Composer/Repository/InstalledRepositoryInterface.php b/composer/src/Composer/Repository/InstalledRepositoryInterface.php deleted file mode 100644 index 82ca23f51..000000000 --- a/composer/src/Composer/Repository/InstalledRepositoryInterface.php +++ /dev/null @@ -1,33 +0,0 @@ -config = $config['package']; - - -if (!is_numeric(key($this->config))) { -$this->config = [$this->config]; -} -} - - - - -protected function initialize(): void -{ -parent::initialize(); - -$loader = new ValidatingArrayLoader(new ArrayLoader(null, true), true); -foreach ($this->config as $package) { -try { -$package = $loader->load($package); -} catch (\Exception $e) { -throw new InvalidRepositoryException('A repository of type "package" contains an invalid package definition: '.$e->getMessage()."\n\nInvalid package definition:\n".json_encode($package)); -} - -$this->addPackage($package); -} -} - -public function getRepoName(): string -{ -return Preg::replace('{^array }', 'package ', parent::getRepoName()); -} -} diff --git a/composer/src/Composer/Repository/PathRepository.php b/composer/src/Composer/Repository/PathRepository.php deleted file mode 100644 index 9ca1f7fc9..000000000 --- a/composer/src/Composer/Repository/PathRepository.php +++ /dev/null @@ -1,253 +0,0 @@ -loader = new ArrayLoader(null, true); -$this->url = Platform::expandPath($repoConfig['url']); -$this->process = $process ?? new ProcessExecutor($io); -$this->versionGuesser = new VersionGuesser($config, $this->process, new VersionParser()); -$this->repoConfig = $repoConfig; -$this->options = $repoConfig['options'] ?? []; -if (!isset($this->options['relative'])) { -$filesystem = new Filesystem(); -$this->options['relative'] = !$filesystem->isAbsolutePath($this->url); -} - -parent::__construct(); -} - -public function getRepoName(): string -{ -return 'path repo ('.Url::sanitize($this->repoConfig['url']).')'; -} - -public function getRepoConfig(): array -{ -return $this->repoConfig; -} - - - - - - -protected function initialize(): void -{ -parent::initialize(); - -$urlMatches = $this->getUrlMatches(); - -if (empty($urlMatches)) { -if (Preg::isMatch('{[*{}]}', $this->url)) { -$url = $this->url; -while (Preg::isMatch('{[*{}]}', $url)) { -$url = dirname($url); -} - -if (is_dir($url)) { -return; -} -} - -throw new \RuntimeException('The `url` supplied for the path (' . $this->url . ') repository does not exist'); -} - -foreach ($urlMatches as $url) { -$path = realpath($url) . DIRECTORY_SEPARATOR; -$composerFilePath = $path.'composer.json'; - -if (!file_exists($composerFilePath)) { -continue; -} - -$json = file_get_contents($composerFilePath); -$package = JsonFile::parseJson($json, $composerFilePath); -$package['dist'] = [ -'type' => 'path', -'url' => $url, -]; -$reference = $this->options['reference'] ?? 'auto'; -if ('none' === $reference) { -$package['dist']['reference'] = null; -} elseif ('config' === $reference || 'auto' === $reference) { -$package['dist']['reference'] = sha1($json . serialize($this->options)); -} - - -$package['transport-options'] = array_intersect_key($this->options, ['symlink' => true, 'relative' => true]); - -if (isset($package['name'], $this->options['versions'][$package['name']])) { -$package['version'] = $this->options['versions'][$package['name']]; -} - - -if (!isset($package['version']) && ($rootVersion = Platform::getEnv('COMPOSER_ROOT_VERSION'))) { -if ( -0 === $this->process->execute('git rev-parse HEAD', $ref1, $path) -&& 0 === $this->process->execute('git rev-parse HEAD', $ref2) -&& $ref1 === $ref2 -) { -$package['version'] = $rootVersion; -} -} - -$output = ''; -if ('auto' === $reference && is_dir($path . DIRECTORY_SEPARATOR . '.git') && 0 === $this->process->execute('git log -n1 --pretty=%H'.GitUtil::getNoShowSignatureFlag($this->process), $output, $path)) { -$package['dist']['reference'] = trim($output); -} - -if (!isset($package['version'])) { -$versionData = $this->versionGuesser->guessVersion($package, $path); -if (is_array($versionData) && $versionData['pretty_version']) { - -if (!empty($versionData['feature_pretty_version'])) { -$package['version'] = $versionData['feature_pretty_version']; -$this->addPackage($this->loader->load($package)); -} - -$package['version'] = $versionData['pretty_version']; -} else { -$package['version'] = 'dev-main'; -} -} - -try { -$this->addPackage($this->loader->load($package)); -} catch (\Exception $e) { -throw new \RuntimeException('Failed loading the package in '.$composerFilePath, 0, $e); -} -} -} - - - - - - -private function getUrlMatches(): array -{ -$flags = GLOB_MARK | GLOB_ONLYDIR; - -if (defined('GLOB_BRACE')) { -$flags |= GLOB_BRACE; -} elseif (strpos($this->url, '{') !== false || strpos($this->url, '}') !== false) { -throw new \RuntimeException('The operating system does not support GLOB_BRACE which is required for the url '. $this->url); -} - - -return array_map(static function ($val): string { -return rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $val), '/'); -}, glob($this->url, $flags)); -} -} diff --git a/composer/src/Composer/Repository/PearRepository.php b/composer/src/Composer/Repository/PearRepository.php deleted file mode 100644 index 75ada6be0..000000000 --- a/composer/src/Composer/Repository/PearRepository.php +++ /dev/null @@ -1,32 +0,0 @@ -runtime = $runtime ?: new Runtime(); -$this->hhvmDetector = $hhvmDetector ?: new HhvmDetector(); -foreach ($overrides as $name => $version) { -if (!is_string($version) && false !== $version) { -throw new \UnexpectedValueException('config.platform.'.$name.' should be a string or false, but got '.gettype($version).' '.var_export($version, true)); -} -if ($name === 'php' && $version === false) { -throw new \UnexpectedValueException('config.platform.'.$name.' cannot be set to false as you cannot disable php entirely.'); -} -$this->overrides[strtolower($name)] = ['name' => $name, 'version' => $version]; -} -parent::__construct($packages); -} - -public function getRepoName(): string -{ -return 'platform repo'; -} - -public function isPlatformPackageDisabled(string $name): bool -{ -return isset($this->disabledPackages[$name]); -} - - - - -public function getDisabledPackages(): array -{ -return $this->disabledPackages; -} - -protected function initialize(): void -{ -parent::initialize(); - -$this->versionParser = new VersionParser(); - - - -foreach ($this->overrides as $override) { - -if (!self::isPlatformPackage($override['name'])) { -throw new \InvalidArgumentException('Invalid platform package name in config.platform: '.$override['name']); -} - -if ($override['version'] !== false) { -$this->addOverriddenPackage($override); -} -} - -$prettyVersion = Composer::getVersion(); -$version = $this->versionParser->normalize($prettyVersion); -$composer = new CompletePackage('composer', $version, $prettyVersion); -$composer->setDescription('Composer package'); -$this->addPackage($composer); - -$prettyVersion = PluginInterface::PLUGIN_API_VERSION; -$version = $this->versionParser->normalize($prettyVersion); -$composerPluginApi = new CompletePackage('composer-plugin-api', $version, $prettyVersion); -$composerPluginApi->setDescription('The Composer Plugin API'); -$this->addPackage($composerPluginApi); - -$prettyVersion = Composer::RUNTIME_API_VERSION; -$version = $this->versionParser->normalize($prettyVersion); -$composerRuntimeApi = new CompletePackage('composer-runtime-api', $version, $prettyVersion); -$composerRuntimeApi->setDescription('The Composer Runtime API'); -$this->addPackage($composerRuntimeApi); - -try { -$prettyVersion = $this->runtime->getConstant('PHP_VERSION'); -$version = $this->versionParser->normalize($prettyVersion); -} catch (\UnexpectedValueException $e) { -$prettyVersion = Preg::replace('#^([^~+-]+).*$#', '$1', $this->runtime->getConstant('PHP_VERSION')); -$version = $this->versionParser->normalize($prettyVersion); -} - -$php = new CompletePackage('php', $version, $prettyVersion); -$php->setDescription('The PHP interpreter'); -$this->addPackage($php); - -if ($this->runtime->getConstant('PHP_DEBUG')) { -$phpdebug = new CompletePackage('php-debug', $version, $prettyVersion); -$phpdebug->setDescription('The PHP interpreter, with debugging symbols'); -$this->addPackage($phpdebug); -} - -if ($this->runtime->hasConstant('PHP_ZTS') && $this->runtime->getConstant('PHP_ZTS')) { -$phpzts = new CompletePackage('php-zts', $version, $prettyVersion); -$phpzts->setDescription('The PHP interpreter, with Zend Thread Safety'); -$this->addPackage($phpzts); -} - -if ($this->runtime->getConstant('PHP_INT_SIZE') === 8) { -$php64 = new CompletePackage('php-64bit', $version, $prettyVersion); -$php64->setDescription('The PHP interpreter, 64bit'); -$this->addPackage($php64); -} - - - -if ($this->runtime->hasConstant('AF_INET6') || Silencer::call([$this->runtime, 'invoke'], 'inet_pton', ['::']) !== false) { -$phpIpv6 = new CompletePackage('php-ipv6', $version, $prettyVersion); -$phpIpv6->setDescription('The PHP interpreter, with IPv6 support'); -$this->addPackage($phpIpv6); -} - -$loadedExtensions = $this->runtime->getExtensions(); - - -foreach ($loadedExtensions as $name) { -if (in_array($name, ['standard', 'Core'])) { -continue; -} - -$this->addExtension($name, $this->runtime->getExtensionVersion($name)); -} - - -if (!in_array('xdebug', $loadedExtensions, true) && ($prettyVersion = XdebugHandler::getSkippedVersion())) { -$this->addExtension('xdebug', $prettyVersion); -} - - - - -foreach ($loadedExtensions as $name) { -switch ($name) { -case 'amqp': -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatch('/^librabbitmq version => (?.+)$/im', $info, $librabbitmqMatches)) { -$this->addLibrary($name.'-librabbitmq', $librabbitmqMatches['version'], 'AMQP librabbitmq version'); -} - - -if (Preg::isMatchStrictGroups('/^AMQP protocol version => (?.+)$/im', $info, $protocolMatches)) { -$this->addLibrary($name.'-protocol', str_replace('-', '.', $protocolMatches['version']), 'AMQP protocol version'); -} -break; - -case 'bz2': -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatch('/^BZip2 Version => (?.*),/im', $info, $matches)) { -$this->addLibrary($name, $matches['version']); -} -break; - -case 'curl': -$curlVersion = $this->runtime->invoke('curl_version'); -$this->addLibrary($name, $curlVersion['version']); - -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatchStrictGroups('{^SSL Version => (?[^/]+)/(?.+)$}im', $info, $sslMatches)) { -$library = strtolower($sslMatches['library']); -if ($library === 'openssl') { -$parsedVersion = Version::parseOpenssl($sslMatches['version'], $isFips); -$this->addLibrary($name.'-openssl'.($isFips ? '-fips' : ''), $parsedVersion, 'curl OpenSSL version ('.$parsedVersion.')', [], $isFips ? ['curl-openssl'] : []); -} else { -$this->addLibrary($name.'-'.$library, $sslMatches['version'], 'curl '.$library.' version ('.$sslMatches['version'].')', ['curl-openssl']); -} -} - - -if (Preg::isMatchStrictGroups('{^libSSH Version => (?[^/]+)/(?.+?)(?:/.*)?$}im', $info, $sshMatches)) { -$this->addLibrary($name.'-'.strtolower($sshMatches['library']), $sshMatches['version'], 'curl '.$sshMatches['library'].' version'); -} - - -if (Preg::isMatchStrictGroups('{^ZLib Version => (?.+)$}im', $info, $zlibMatches)) { -$this->addLibrary($name.'-zlib', $zlibMatches['version'], 'curl zlib version'); -} -break; - -case 'date': -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatchStrictGroups('/^timelib version => (?.+)$/im', $info, $timelibMatches)) { -$this->addLibrary($name.'-timelib', $timelibMatches['version'], 'date timelib version'); -} - - -if (Preg::isMatchStrictGroups('/^Timezone Database => (?internal|external)$/im', $info, $zoneinfoSourceMatches)) { -$external = $zoneinfoSourceMatches['source'] === 'external'; -if (Preg::isMatchStrictGroups('/^"Olson" Timezone Database Version => (?.+?)(?:\.system)?$/im', $info, $zoneinfoMatches)) { - -if ($external && in_array('timezonedb', $loadedExtensions, true)) { -$this->addLibrary('timezonedb-zoneinfo', $zoneinfoMatches['version'], 'zoneinfo ("Olson") database for date (replaced by timezonedb)', [$name.'-zoneinfo']); -} else { -$this->addLibrary($name.'-zoneinfo', $zoneinfoMatches['version'], 'zoneinfo ("Olson") database for date'); -} -} -} -break; - -case 'fileinfo': -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatch('/^libmagic => (?.+)$/im', $info, $magicMatches)) { -$this->addLibrary($name.'-libmagic', $magicMatches['version'], 'fileinfo libmagic version'); -} -break; - -case 'gd': -$this->addLibrary($name, $this->runtime->getConstant('GD_VERSION')); - -$info = $this->runtime->getExtensionInfo($name); - -if (Preg::isMatchStrictGroups('/^libJPEG Version => (?.+?)(?: compatible)?$/im', $info, $libjpegMatches)) { -$this->addLibrary($name.'-libjpeg', Version::parseLibjpeg($libjpegMatches['version']), 'libjpeg version for gd'); -} - -if (Preg::isMatchStrictGroups('/^libPNG Version => (?.+)$/im', $info, $libpngMatches)) { -$this->addLibrary($name.'-libpng', $libpngMatches['version'], 'libpng version for gd'); -} - -if (Preg::isMatchStrictGroups('/^FreeType Version => (?.+)$/im', $info, $freetypeMatches)) { -$this->addLibrary($name.'-freetype', $freetypeMatches['version'], 'freetype version for gd'); -} - -if (Preg::isMatchStrictGroups('/^libXpm Version => (?\d+)$/im', $info, $libxpmMatches)) { -$this->addLibrary($name.'-libxpm', Version::convertLibxpmVersionId((int) $libxpmMatches['versionId']), 'libxpm version for gd'); -} - -break; - -case 'gmp': -$this->addLibrary($name, $this->runtime->getConstant('GMP_VERSION')); -break; - -case 'iconv': -$this->addLibrary($name, $this->runtime->getConstant('ICONV_VERSION')); -break; - -case 'intl': -$info = $this->runtime->getExtensionInfo($name); - -$description = 'The ICU unicode and globalization support library'; - -if ($this->runtime->hasConstant('INTL_ICU_VERSION')) { -$this->addLibrary('icu', $this->runtime->getConstant('INTL_ICU_VERSION'), $description); -} elseif (Preg::isMatch('/^ICU version => (?.+)$/im', $info, $matches)) { -$this->addLibrary('icu', $matches['version'], $description); -} - - -if (Preg::isMatchStrictGroups('/^ICU TZData version => (?.*)$/im', $info, $zoneinfoMatches) && null !== ($version = Version::parseZoneinfoVersion($zoneinfoMatches['version']))) { -$this->addLibrary('icu-zoneinfo', $version, 'zoneinfo ("Olson") database for icu'); -} - - -if ($this->runtime->hasClass('ResourceBundle')) { -$cldrVersion = $this->runtime->invoke(['ResourceBundle', 'create'], ['root', 'ICUDATA', false])->get('Version'); -$this->addLibrary('icu-cldr', $cldrVersion, 'ICU CLDR project version'); -} - -if ($this->runtime->hasClass('IntlChar')) { -$this->addLibrary('icu-unicode', implode('.', array_slice($this->runtime->invoke(['IntlChar', 'getUnicodeVersion']), 0, 3)), 'ICU unicode version'); -} -break; - -case 'imagick': -$imageMagickVersion = $this->runtime->construct('Imagick')->getVersion(); - - -Preg::match('/^ImageMagick (?[\d.]+)(?:-(?\d+))?/', $imageMagickVersion['versionString'], $matches); -$version = $matches['version']; -if (isset($matches['patch'])) { -$version .= '.'.$matches['patch']; -} - -$this->addLibrary($name.'-imagemagick', $version, null, ['imagick']); -break; - -case 'ldap': -$info = $this->runtime->getExtensionInfo($name); - -if (Preg::isMatchStrictGroups('/^Vendor Version => (?\d+)$/im', $info, $matches) && Preg::isMatchStrictGroups('/^Vendor Name => (?.+)$/im', $info, $vendorMatches)) { -$this->addLibrary($name.'-'.strtolower($vendorMatches['vendor']), Version::convertOpenldapVersionId((int) $matches['versionId']), $vendorMatches['vendor'].' version of ldap'); -} -break; - -case 'libxml': - -$libxmlProvides = array_map(static function ($extension): string { -return $extension . '-libxml'; -}, array_intersect($loadedExtensions, ['dom', 'simplexml', 'xml', 'xmlreader', 'xmlwriter'])); -$this->addLibrary($name, $this->runtime->getConstant('LIBXML_DOTTED_VERSION'), 'libxml library version', [], $libxmlProvides); - -break; - -case 'mbstring': -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatch('/^libmbfl version => (?.+)$/im', $info, $libmbflMatches)) { -$this->addLibrary($name.'-libmbfl', $libmbflMatches['version'], 'mbstring libmbfl version'); -} - -if ($this->runtime->hasConstant('MB_ONIGURUMA_VERSION')) { -$this->addLibrary($name.'-oniguruma', $this->runtime->getConstant('MB_ONIGURUMA_VERSION'), 'mbstring oniguruma version'); - - - -} elseif (Preg::isMatch('/^(?:oniguruma|Multibyte regex \(oniguruma\)) version => (?.+)$/im', $info, $onigurumaMatches)) { -$this->addLibrary($name.'-oniguruma', $onigurumaMatches['version'], 'mbstring oniguruma version'); -} - -break; - -case 'memcached': -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatch('/^libmemcached version => (?.+)$/im', $info, $matches)) { -$this->addLibrary($name.'-libmemcached', $matches['version'], 'libmemcached version'); -} -break; - -case 'openssl': - -if (Preg::isMatchStrictGroups('{^(?:OpenSSL|LibreSSL)?\s*(?\S+)}i', $this->runtime->getConstant('OPENSSL_VERSION_TEXT'), $matches)) { -$parsedVersion = Version::parseOpenssl($matches['version'], $isFips); -$this->addLibrary($name.($isFips ? '-fips' : ''), $parsedVersion, $this->runtime->getConstant('OPENSSL_VERSION_TEXT'), [], $isFips ? [$name] : []); -} -break; - -case 'pcre': -$this->addLibrary($name, Preg::replace('{^(\S+).*}', '$1', $this->runtime->getConstant('PCRE_VERSION'))); - -$info = $this->runtime->getExtensionInfo($name); - - -if (Preg::isMatchStrictGroups('/^PCRE Unicode Version => (?.+)$/im', $info, $pcreUnicodeMatches)) { -$this->addLibrary($name.'-unicode', $pcreUnicodeMatches['version'], 'PCRE Unicode version support'); -} - -break; - -case 'mysqlnd': -case 'pdo_mysql': -$info = $this->runtime->getExtensionInfo($name); - -if (Preg::isMatchStrictGroups('/^(?:Client API version|Version) => mysqlnd (?.+?) /mi', $info, $matches)) { -$this->addLibrary($name.'-mysqlnd', $matches['version'], 'mysqlnd library version for '.$name); -} -break; - -case 'mongodb': -$info = $this->runtime->getExtensionInfo($name); - -if (Preg::isMatchStrictGroups('/^libmongoc bundled version => (?.+)$/im', $info, $libmongocMatches)) { -$this->addLibrary($name.'-libmongoc', $libmongocMatches['version'], 'libmongoc version of mongodb'); -} - -if (Preg::isMatchStrictGroups('/^libbson bundled version => (?.+)$/im', $info, $libbsonMatches)) { -$this->addLibrary($name.'-libbson', $libbsonMatches['version'], 'libbson version of mongodb'); -} -break; - -case 'pgsql': -case 'pdo_pgsql': -$info = $this->runtime->getExtensionInfo($name); - -if (Preg::isMatch('/^PostgreSQL\(libpq\) Version => (?.*)$/im', $info, $matches)) { -$this->addLibrary($name.'-libpq', $matches['version'], 'libpq for '.$name); -} -break; - -case 'libsodium': -case 'sodium': -if ($this->runtime->hasConstant('SODIUM_LIBRARY_VERSION')) { -$this->addLibrary('libsodium', $this->runtime->getConstant('SODIUM_LIBRARY_VERSION')); -} -break; - -case 'sqlite3': -case 'pdo_sqlite': -$info = $this->runtime->getExtensionInfo($name); - -if (Preg::isMatch('/^SQLite Library => (?.+)$/im', $info, $matches)) { -$this->addLibrary($name.'-sqlite', $matches['version']); -} -break; - -case 'ssh2': -$info = $this->runtime->getExtensionInfo($name); - -if (Preg::isMatch('/^libssh2 version => (?.+)$/im', $info, $matches)) { -$this->addLibrary($name.'-libssh2', $matches['version']); -} -break; - -case 'xsl': -$this->addLibrary('libxslt', $this->runtime->getConstant('LIBXSLT_DOTTED_VERSION'), null, ['xsl']); - -$info = $this->runtime->getExtensionInfo('xsl'); -if (Preg::isMatch('/^libxslt compiled against libxml Version => (?.+)$/im', $info, $matches)) { -$this->addLibrary('libxslt-libxml', $matches['version'], 'libxml version libxslt is compiled against'); -} -break; - -case 'yaml': -$info = $this->runtime->getExtensionInfo('yaml'); - -if (Preg::isMatch('/^LibYAML Version => (?.+)$/im', $info, $matches)) { -$this->addLibrary($name.'-libyaml', $matches['version'], 'libyaml version of yaml'); -} -break; - -case 'zip': -if ($this->runtime->hasConstant('LIBZIP_VERSION', 'ZipArchive')) { -$this->addLibrary($name.'-libzip', $this->runtime->getConstant('LIBZIP_VERSION', 'ZipArchive'), null, ['zip']); -} -break; - -case 'zlib': -if ($this->runtime->hasConstant('ZLIB_VERSION')) { -$this->addLibrary($name, $this->runtime->getConstant('ZLIB_VERSION')); - - -} elseif (Preg::isMatch('/^Linked Version => (?.+)$/im', $this->runtime->getExtensionInfo($name), $matches)) { -$this->addLibrary($name, $matches['version']); -} -break; - -default: -break; -} -} - -$hhvmVersion = $this->hhvmDetector->getVersion(); -if ($hhvmVersion) { -try { -$prettyVersion = $hhvmVersion; -$version = $this->versionParser->normalize($prettyVersion); -} catch (\UnexpectedValueException $e) { -$prettyVersion = Preg::replace('#^([^~+-]+).*$#', '$1', $hhvmVersion); -$version = $this->versionParser->normalize($prettyVersion); -} - -$hhvm = new CompletePackage('hhvm', $version, $prettyVersion); -$hhvm->setDescription('The HHVM Runtime (64bit)'); -$this->addPackage($hhvm); -} -} - - - - -public function addPackage(PackageInterface $package): void -{ -if (!$package instanceof CompletePackage) { -throw new \UnexpectedValueException('Expected CompletePackage but got '.get_class($package)); -} - - -if (isset($this->overrides[$package->getName()])) { -if ($this->overrides[$package->getName()]['version'] === false) { -$this->addDisabledPackage($package); - -return; -} - -$overrider = $this->findPackage($package->getName(), '*'); -if ($package->getVersion() === $overrider->getVersion()) { -$actualText = 'same as actual'; -} else { -$actualText = 'actual: '.$package->getPrettyVersion(); -} -if ($overrider instanceof CompletePackageInterface) { -$overrider->setDescription($overrider->getDescription().', '.$actualText); -} - -return; -} - - -if (isset($this->overrides['php']) && 0 === strpos($package->getName(), 'php-')) { -$overrider = $this->addOverriddenPackage($this->overrides['php'], $package->getPrettyName()); -if ($package->getVersion() === $overrider->getVersion()) { -$actualText = 'same as actual'; -} else { -$actualText = 'actual: '.$package->getPrettyVersion(); -} -$overrider->setDescription($overrider->getDescription().', '.$actualText); - -return; -} - -parent::addPackage($package); -} - - - - -private function addOverriddenPackage(array $override, ?string $name = null): CompletePackage -{ -$version = $this->versionParser->normalize($override['version']); -$package = new CompletePackage($name ?: $override['name'], $version, $override['version']); -$package->setDescription('Package overridden via config.platform'); -$package->setExtra(['config.platform' => true]); -parent::addPackage($package); - -if ($package->getName() === 'php') { -self::$lastSeenPlatformPhp = implode('.', array_slice(explode('.', $package->getVersion()), 0, 3)); -} - -return $package; -} - -private function addDisabledPackage(CompletePackage $package): void -{ -$package->setDescription($package->getDescription().'. Package disabled via config.platform'); -$package->setExtra(['config.platform' => true]); - -$this->disabledPackages[$package->getName()] = $package; -} - - - - -private function addExtension(string $name, string $prettyVersion): void -{ -$extraDescription = null; - -try { -$version = $this->versionParser->normalize($prettyVersion); -} catch (\UnexpectedValueException $e) { -$extraDescription = ' (actual version: '.$prettyVersion.')'; -if (Preg::isMatchStrictGroups('{^(\d+\.\d+\.\d+(?:\.\d+)?)}', $prettyVersion, $match)) { -$prettyVersion = $match[1]; -} else { -$prettyVersion = '0'; -} -$version = $this->versionParser->normalize($prettyVersion); -} - -$packageName = $this->buildPackageName($name); -$ext = new CompletePackage($packageName, $version, $prettyVersion); -$ext->setDescription('The '.$name.' PHP extension'.$extraDescription); - -if ($name === 'uuid') { -$ext->setReplaces([ -'lib-uuid' => new Link('ext-uuid', 'lib-uuid', new Constraint('=', $version), Link::TYPE_REPLACE, $ext->getPrettyVersion()), -]); -} - -$this->addPackage($ext); -} - -private function buildPackageName(string $name): string -{ -return 'ext-' . str_replace(' ', '-', strtolower($name)); -} - - - - - -private function addLibrary(string $name, ?string $prettyVersion, ?string $description = null, array $replaces = [], array $provides = []): void -{ -if (null === $prettyVersion) { -return; -} -try { -$version = $this->versionParser->normalize($prettyVersion); -} catch (\UnexpectedValueException $e) { -return; -} - -if ($description === null) { -$description = 'The '.$name.' library'; -} - -$lib = new CompletePackage('lib-'.$name, $version, $prettyVersion); -$lib->setDescription($description); - -$replaceLinks = []; -foreach ($replaces as $replace) { -$replace = strtolower($replace); -$replaceLinks[$replace] = new Link('lib-'.$name, 'lib-'.$replace, new Constraint('=', $version), Link::TYPE_REPLACE, $lib->getPrettyVersion()); -} -$provideLinks = []; -foreach ($provides as $provide) { -$provide = strtolower($provide); -$provideLinks[$provide] = new Link('lib-'.$name, 'lib-'.$provide, new Constraint('=', $version), Link::TYPE_PROVIDE, $lib->getPrettyVersion()); -} -$lib->setReplaces($replaceLinks); -$lib->setProvides($provideLinks); - -$this->addPackage($lib); -} - - - - -public static function isPlatformPackage(string $name): bool -{ -static $cache = []; - -if (isset($cache[$name])) { -return $cache[$name]; -} - -return $cache[$name] = Preg::isMatch(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name); -} - - - - - - - - - - -public static function getPlatformPhpVersion(): ?string -{ -return self::$lastSeenPlatformPhp; -} - -public function search(string $query, int $mode = 0, ?string $type = null): array -{ - -if ($mode === self::SEARCH_VENDOR) { -return []; -} - -return parent::search($query, $mode, $type); -} -} diff --git a/composer/src/Composer/Repository/RepositoryFactory.php b/composer/src/Composer/Repository/RepositoryFactory.php deleted file mode 100644 index aa92ffd5d..000000000 --- a/composer/src/Composer/Repository/RepositoryFactory.php +++ /dev/null @@ -1,192 +0,0 @@ - 'composer', 'url' => $repository]; -} elseif ("json" === pathinfo($repository, PATHINFO_EXTENSION)) { -$json = new JsonFile($repository, Factory::createHttpDownloader($io, $config)); -$data = $json->read(); -if (!empty($data['packages']) || !empty($data['includes']) || !empty($data['provider-includes'])) { -$repoConfig = ['type' => 'composer', 'url' => 'file://' . strtr(realpath($repository), '\\', '/')]; -} elseif ($allowFilesystem) { -$repoConfig = ['type' => 'filesystem', 'json' => $json]; -} else { -throw new \InvalidArgumentException("Invalid repository URL ($repository) given. This file does not contain a valid composer repository."); -} -} elseif (strpos($repository, '{') === 0) { - -$repoConfig = JsonFile::parseJson($repository); -} else { -throw new \InvalidArgumentException("Invalid repository url ($repository) given. Has to be a .json file, an http url or a JSON object."); -} - -return $repoConfig; -} - -public static function fromString(IOInterface $io, Config $config, string $repository, bool $allowFilesystem = false, ?RepositoryManager $rm = null): RepositoryInterface -{ -$repoConfig = static::configFromString($io, $config, $repository, $allowFilesystem); - -return static::createRepo($io, $config, $repoConfig, $rm); -} - - - - -public static function createRepo(IOInterface $io, Config $config, array $repoConfig, ?RepositoryManager $rm = null): RepositoryInterface -{ -if (!$rm) { -@trigger_error('Not passing a repository manager when calling createRepo is deprecated since Composer 2.3.6', E_USER_DEPRECATED); -$rm = static::manager($io, $config); -} -$repos = self::createRepos($rm, [$repoConfig]); - -return reset($repos); -} - - - - -public static function defaultRepos(?IOInterface $io = null, ?Config $config = null, ?RepositoryManager $rm = null): array -{ -if (null === $rm) { -@trigger_error('Not passing a repository manager when calling defaultRepos is deprecated since Composer 2.3.6, use defaultReposWithDefaultManager() instead if you cannot get a manager.', E_USER_DEPRECATED); -} - -if (null === $config) { -$config = Factory::createConfig($io); -} -if (null !== $io) { -$io->loadConfiguration($config); -} -if (null === $rm) { -if (null === $io) { -throw new \InvalidArgumentException('This function requires either an IOInterface or a RepositoryManager'); -} -$rm = static::manager($io, $config, Factory::createHttpDownloader($io, $config)); -} - -return self::createRepos($rm, $config->getRepositories()); -} - - - - - -public static function manager(IOInterface $io, Config $config, ?HttpDownloader $httpDownloader = null, ?EventDispatcher $eventDispatcher = null, ?ProcessExecutor $process = null): RepositoryManager -{ -if ($httpDownloader === null) { -$httpDownloader = Factory::createHttpDownloader($io, $config); -} -if ($process === null) { -$process = new ProcessExecutor($io); -$process->enableAsync(); -} - -$rm = new RepositoryManager($io, $config, $httpDownloader, $eventDispatcher, $process); -$rm->setRepositoryClass('composer', 'Composer\Repository\ComposerRepository'); -$rm->setRepositoryClass('vcs', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository'); -$rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository'); -$rm->setRepositoryClass('git', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('bitbucket', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('git-bitbucket', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('github', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('gitlab', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('svn', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('fossil', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('perforce', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('hg', 'Composer\Repository\VcsRepository'); -$rm->setRepositoryClass('artifact', 'Composer\Repository\ArtifactRepository'); -$rm->setRepositoryClass('path', 'Composer\Repository\PathRepository'); - -return $rm; -} - - - - -public static function defaultReposWithDefaultManager(IOInterface $io): array -{ -$manager = RepositoryFactory::manager($io, $config = Factory::createConfig($io)); -$io->loadConfiguration($config); - -return RepositoryFactory::defaultRepos($io, $config, $manager); -} - - - - - - -private static function createRepos(RepositoryManager $rm, array $repoConfigs): array -{ -$repos = []; - -foreach ($repoConfigs as $index => $repo) { -if (is_string($repo)) { -throw new \UnexpectedValueException('"repositories" should be an array of repository definitions, only a single repository was given'); -} -if (!is_array($repo)) { -throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') should be an array, '.gettype($repo).' given'); -} -if (!isset($repo['type'])) { -throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') must have a type defined'); -} - -$name = self::generateRepositoryName($index, $repo, $repos); -if ($repo['type'] === 'filesystem') { -$repos[$name] = new FilesystemRepository($repo['json']); -} else { -$repos[$name] = $rm->createRepository($repo['type'], $repo, (string) $index); -} -} - -return $repos; -} - - - - - - -public static function generateRepositoryName($index, array $repo, array $existingRepos): string -{ -$name = is_int($index) && isset($repo['url']) ? Preg::replace('{^https?://}i', '', $repo['url']) : (string) $index; -while (isset($existingRepos[$name])) { -$name .= '2'; -} - -return $name; -} -} diff --git a/composer/src/Composer/Repository/RepositoryInterface.php b/composer/src/Composer/Repository/RepositoryInterface.php deleted file mode 100644 index 4df95e7d9..000000000 --- a/composer/src/Composer/Repository/RepositoryInterface.php +++ /dev/null @@ -1,118 +0,0 @@ -io = $io; -$this->config = $config; -$this->httpDownloader = $httpDownloader; -$this->eventDispatcher = $eventDispatcher; -$this->process = $process ?? new ProcessExecutor($io); -} - - - - - - - -public function findPackage(string $name, $constraint): ?PackageInterface -{ -foreach ($this->repositories as $repository) { - -if ($package = $repository->findPackage($name, $constraint)) { -return $package; -} -} - -return null; -} - - - - - - - - - -public function findPackages(string $name, $constraint): array -{ -$packages = []; - -foreach ($this->getRepositories() as $repository) { -$packages = array_merge($packages, $repository->findPackages($name, $constraint)); -} - -return $packages; -} - - - - - - -public function addRepository(RepositoryInterface $repository): void -{ -$this->repositories[] = $repository; -} - - - - - - - - -public function prependRepository(RepositoryInterface $repository): void -{ -array_unshift($this->repositories, $repository); -} - - - - - - - - - -public function createRepository(string $type, array $config, ?string $name = null): RepositoryInterface -{ -if (!isset($this->repositoryClasses[$type])) { -throw new \InvalidArgumentException('Repository type is not registered: '.$type); -} - -if (isset($config['packagist']) && false === $config['packagist']) { -$this->io->writeError('Repository "'.$name.'" ('.json_encode($config).') has a packagist key which should be in its own repository definition'); -} - -$class = $this->repositoryClasses[$type]; - -if (isset($config['only']) || isset($config['exclude']) || isset($config['canonical'])) { -$filterConfig = $config; -unset($config['only'], $config['exclude'], $config['canonical']); -} - -$repository = new $class($config, $this->io, $this->config, $this->httpDownloader, $this->eventDispatcher, $this->process); - -if (isset($filterConfig)) { -$repository = new FilterRepository($repository, $filterConfig); -} - -return $repository; -} - - - - - - - -public function setRepositoryClass(string $type, $class): void -{ -$this->repositoryClasses[$type] = $class; -} - - - - - - -public function getRepositories(): array -{ -return $this->repositories; -} - - - - - - -public function setLocalRepository(InstalledRepositoryInterface $repository): void -{ -$this->localRepository = $repository; -} - - - - -public function getLocalRepository(): InstalledRepositoryInterface -{ -return $this->localRepository; -} -} diff --git a/composer/src/Composer/Repository/RepositorySecurityException.php b/composer/src/Composer/Repository/RepositorySecurityException.php deleted file mode 100644 index efd1518fa..000000000 --- a/composer/src/Composer/Repository/RepositorySecurityException.php +++ /dev/null @@ -1,22 +0,0 @@ -rootAliases = self::getRootAliasesPerPackage($rootAliases); -$this->rootReferences = $rootReferences; - -$this->acceptableStabilities = []; -foreach (BasePackage::$stabilities as $stability => $value) { -if ($value <= BasePackage::$stabilities[$minimumStability]) { -$this->acceptableStabilities[$stability] = $value; -} -} -$this->stabilityFlags = $stabilityFlags; -$this->rootRequires = $rootRequires; -foreach ($rootRequires as $name => $constraint) { -if (PlatformRepository::isPlatformPackage($name)) { -unset($this->rootRequires[$name]); -} -} - -$this->temporaryConstraints = $temporaryConstraints; -} - -public function allowInstalledRepositories(bool $allow = true): void -{ -$this->allowInstalledRepositories = $allow; -} - - - - - -public function getRootRequires(): array -{ -return $this->rootRequires; -} - - - - -public function getTemporaryConstraints(): array -{ -return $this->temporaryConstraints; -} - - - - - - - - - -public function addRepository(RepositoryInterface $repo): void -{ -if ($this->locked) { -throw new \RuntimeException("Pool has already been created from this repository set, it cannot be modified anymore."); -} - -if ($repo instanceof CompositeRepository) { -$repos = $repo->getRepositories(); -} else { -$repos = [$repo]; -} - -foreach ($repos as $repo) { -$this->repositories[] = $repo; -} -} - - - - - - - - - -public function findPackages(string $name, ?ConstraintInterface $constraint = null, int $flags = 0): array -{ -$ignoreStability = ($flags & self::ALLOW_UNACCEPTABLE_STABILITIES) !== 0; -$loadFromAllRepos = ($flags & self::ALLOW_SHADOWED_REPOSITORIES) !== 0; - -$packages = []; -if ($loadFromAllRepos) { -foreach ($this->repositories as $repository) { -$packages[] = $repository->findPackages($name, $constraint) ?: []; -} -} else { -foreach ($this->repositories as $repository) { -$result = $repository->loadPackages([$name => $constraint], $ignoreStability ? BasePackage::$stabilities : $this->acceptableStabilities, $ignoreStability ? [] : $this->stabilityFlags); - -$packages[] = $result['packages']; -foreach ($result['namesFound'] as $nameFound) { - -if ($name === $nameFound) { -break 2; -} -} -} -} - -$candidates = $packages ? array_merge(...$packages) : []; - - -if ($ignoreStability || !$loadFromAllRepos) { -return $candidates; -} - -$result = []; -foreach ($candidates as $candidate) { -if ($this->isPackageAcceptable($candidate->getNames(), $candidate->getStability())) { -$result[] = $candidate; -} -} - -return $result; -} - - - - - -public function getSecurityAdvisories(array $packageNames, bool $allowPartialAdvisories = false): array -{ -$map = []; -foreach ($packageNames as $name) { -$map[$name] = new MatchAllConstraint(); -} - -return $this->getSecurityAdvisoriesForConstraints($map, $allowPartialAdvisories); -} - - - - - -public function getMatchingSecurityAdvisories(array $packages, bool $allowPartialAdvisories = false): array -{ -$map = []; -foreach ($packages as $package) { -$map[$package->getName()] = new Constraint('=', $package->getVersion()); -} - -return $this->getSecurityAdvisoriesForConstraints($map, $allowPartialAdvisories); -} - - - - - -private function getSecurityAdvisoriesForConstraints(array $packageConstraintMap, bool $allowPartialAdvisories): array -{ -$advisories = []; -foreach ($this->repositories as $repository) { -if (!$repository instanceof AdvisoryProviderInterface || !$repository->hasSecurityAdvisories()) { -continue; -} - -$result = $repository->getSecurityAdvisories($packageConstraintMap, $allowPartialAdvisories); -foreach ($result['namesFound'] as $nameFound) { -unset($packageConstraintMap[$nameFound]); -} - -$advisories = array_merge($advisories, $result['advisories']); -} - -return $advisories; -} - - - - - -public function getProviders(string $packageName): array -{ -$providers = []; -foreach ($this->repositories as $repository) { -if ($repoProviders = $repository->getProviders($packageName)) { -$providers = array_merge($providers, $repoProviders); -} -} - -return $providers; -} - - - - - - - -public function isPackageAcceptable(array $names, string $stability): bool -{ -return StabilityFilter::isPackageAcceptable($this->acceptableStabilities, $this->stabilityFlags, $names, $stability); -} - - - - -public function createPool(Request $request, IOInterface $io, ?EventDispatcher $eventDispatcher = null, ?PoolOptimizer $poolOptimizer = null): Pool -{ -$poolBuilder = new PoolBuilder($this->acceptableStabilities, $this->stabilityFlags, $this->rootAliases, $this->rootReferences, $io, $eventDispatcher, $poolOptimizer, $this->temporaryConstraints); - -foreach ($this->repositories as $repo) { -if (($repo instanceof InstalledRepositoryInterface || $repo instanceof InstalledRepository) && !$this->allowInstalledRepositories) { -throw new \LogicException('The pool can not accept packages from an installed repository'); -} -} - -$this->locked = true; - -return $poolBuilder->buildPool($this->repositories, $request); -} - - - - -public function createPoolWithAllPackages(): Pool -{ -foreach ($this->repositories as $repo) { -if (($repo instanceof InstalledRepositoryInterface || $repo instanceof InstalledRepository) && !$this->allowInstalledRepositories) { -throw new \LogicException('The pool can not accept packages from an installed repository'); -} -} - -$this->locked = true; - -$packages = []; -foreach ($this->repositories as $repository) { -foreach ($repository->getPackages() as $package) { -$packages[] = $package; - -if (isset($this->rootAliases[$package->getName()][$package->getVersion()])) { -$alias = $this->rootAliases[$package->getName()][$package->getVersion()]; -while ($package instanceof AliasPackage) { -$package = $package->getAliasOf(); -} -if ($package instanceof CompletePackage) { -$aliasPackage = new CompleteAliasPackage($package, $alias['alias_normalized'], $alias['alias']); -} else { -$aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']); -} -$aliasPackage->setRootPackageAlias(true); -$packages[] = $aliasPackage; -} -} -} - -return new Pool($packages); -} - -public function createPoolForPackage(string $packageName, ?LockArrayRepository $lockedRepo = null): Pool -{ - -return $this->createPoolForPackages([$packageName], $lockedRepo); -} - - - - -public function createPoolForPackages(array $packageNames, ?LockArrayRepository $lockedRepo = null): Pool -{ -$request = new Request($lockedRepo); - -foreach ($packageNames as $packageName) { -if (PlatformRepository::isPlatformPackage($packageName)) { -throw new \LogicException('createPoolForPackage(s) can not be used for platform packages, as they are never loaded by the PoolBuilder which expects them to be fixed. Use createPoolWithAllPackages or pass in a proper request with the platform packages you need fixed in it.'); -} - -$request->requireName($packageName); -} - -return $this->createPool($request, new NullIO()); -} - - - - - - - -private static function getRootAliasesPerPackage(array $aliases): array -{ -$normalizedAliases = []; - -foreach ($aliases as $alias) { -$normalizedAliases[$alias['package']][$alias['version']] = [ -'alias' => $alias['alias'], -'alias_normalized' => $alias['alias_normalized'], -]; -} - -return $normalizedAliases; -} -} diff --git a/composer/src/Composer/Repository/RepositoryUtils.php b/composer/src/Composer/Repository/RepositoryUtils.php deleted file mode 100644 index 161cd77b4..000000000 --- a/composer/src/Composer/Repository/RepositoryUtils.php +++ /dev/null @@ -1,78 +0,0 @@ -getRequires(); - -foreach ($packages as $candidate) { -foreach ($candidate->getNames() as $name) { -if (isset($requires[$name])) { -if (!in_array($candidate, $bucket, true)) { -$bucket[] = $candidate; -$bucket = self::filterRequiredPackages($packages, $candidate, $bucket); -} -break; -} -} -} - -return $bucket; -} - - - - - - -public static function flattenRepositories(RepositoryInterface $repo, bool $unwrapFilterRepos = true): array -{ - -if ($unwrapFilterRepos && $repo instanceof FilterRepository) { -$repo = $repo->getRepository(); -} - -if (!$repo instanceof CompositeRepository) { -return [$repo]; -} - -$repos = []; -foreach ($repo->getRepositories() as $r) { -foreach (self::flattenRepositories($r, $unwrapFilterRepos) as $r2) { -$repos[] = $r2; -} -} - -return $repos; -} -} diff --git a/composer/src/Composer/Repository/RootPackageRepository.php b/composer/src/Composer/Repository/RootPackageRepository.php deleted file mode 100644 index 477020459..000000000 --- a/composer/src/Composer/Repository/RootPackageRepository.php +++ /dev/null @@ -1,35 +0,0 @@ -checkFossil(); - - -$this->config->prohibitUrlByConfig($this->url, $this->io); - - - -if (Filesystem::isLocalPath($this->url) && is_dir($this->url)) { -$this->checkoutDir = $this->url; -} else { -if (!Cache::isUsable($this->config->get('cache-repo-dir')) || !Cache::isUsable($this->config->get('cache-vcs-dir'))) { -throw new \RuntimeException('FossilDriver requires a usable cache directory, and it looks like you set it to be disabled'); -} - -$localName = Preg::replace('{[^a-z0-9]}i', '-', $this->url); -$this->repoFile = $this->config->get('cache-repo-dir') . '/' . $localName . '.fossil'; -$this->checkoutDir = $this->config->get('cache-vcs-dir') . '/' . $localName . '/'; - -$this->updateLocalRepo(); -} - -$this->getTags(); -$this->getBranches(); -} - - - - -protected function checkFossil(): void -{ -if (0 !== $this->process->execute('fossil version', $ignoredOutput)) { -throw new \RuntimeException("fossil was not found, check that it is installed and in your PATH env.\n\n" . $this->process->getErrorOutput()); -} -} - - - - -protected function updateLocalRepo(): void -{ -$fs = new Filesystem(); -$fs->ensureDirectoryExists($this->checkoutDir); - -if (!is_writable(dirname($this->checkoutDir))) { -throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$this->checkoutDir.'" directory is not writable by the current user.'); -} - - -if (is_file($this->repoFile) && is_dir($this->checkoutDir) && 0 === $this->process->execute('fossil info', $output, $this->checkoutDir)) { -if (0 !== $this->process->execute('fossil pull', $output, $this->checkoutDir)) { -$this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); -} -} else { - -$fs->removeDirectory($this->checkoutDir); -$fs->remove($this->repoFile); - -$fs->ensureDirectoryExists($this->checkoutDir); - -if (0 !== $this->process->execute(sprintf('fossil clone -- %s %s', ProcessExecutor::escape($this->url), ProcessExecutor::escape($this->repoFile)), $output)) { -$output = $this->process->getErrorOutput(); - -throw new \RuntimeException('Failed to clone '.$this->url.' to repository ' . $this->repoFile . "\n\n" .$output); -} - -if (0 !== $this->process->execute(sprintf('fossil open --nested -- %s', ProcessExecutor::escape($this->repoFile)), $output, $this->checkoutDir)) { -$output = $this->process->getErrorOutput(); - -throw new \RuntimeException('Failed to open repository '.$this->repoFile.' in ' . $this->checkoutDir . "\n\n" .$output); -} -} -} - - - - -public function getRootIdentifier(): string -{ -if (null === $this->rootIdentifier) { -$this->rootIdentifier = 'trunk'; -} - -return $this->rootIdentifier; -} - - - - -public function getUrl(): string -{ -return $this->url; -} - - - - -public function getSource(string $identifier): array -{ -return ['type' => 'fossil', 'url' => $this->getUrl(), 'reference' => $identifier]; -} - - - - -public function getDist(string $identifier): ?array -{ -return null; -} - - - - -public function getFileContent(string $file, string $identifier): ?string -{ -$command = sprintf('fossil cat -r %s -- %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); -$this->process->execute($command, $content, $this->checkoutDir); - -if (!trim($content)) { -return null; -} - -return $content; -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -$this->process->execute('fossil finfo -b -n 1 composer.json', $output, $this->checkoutDir); -[, $date] = explode(' ', trim($output), 3); - -return new \DateTimeImmutable($date, new \DateTimeZone('UTC')); -} - - - - -public function getTags(): array -{ -if (null === $this->tags) { -$tags = []; - -$this->process->execute('fossil tag list', $output, $this->checkoutDir); -foreach ($this->process->splitLines($output) as $tag) { -$tags[$tag] = $tag; -} - -$this->tags = $tags; -} - -return $this->tags; -} - - - - -public function getBranches(): array -{ -if (null === $this->branches) { -$branches = []; - -$this->process->execute('fossil branch list', $output, $this->checkoutDir); -foreach ($this->process->splitLines($output) as $branch) { -$branch = trim(Preg::replace('/^\*/', '', trim($branch))); -$branches[$branch] = $branch; -} - -$this->branches = $branches; -} - -return $this->branches; -} - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -if (Preg::isMatch('#(^(?:https?|ssh)://(?:[^@]@)?(?:chiselapp\.com|fossil\.))#i', $url)) { -return true; -} - -if (Preg::isMatch('!/fossil/|\.fossil!', $url)) { -return true; -} - - -if (Filesystem::isLocalPath($url)) { -$url = Filesystem::getPlatformPath($url); -if (!is_dir($url)) { -return false; -} - -$process = new ProcessExecutor($io); - -if ($process->execute('fossil info', $output, $url) === 0) { -return true; -} -} - -return false; -} -} diff --git a/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php b/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php deleted file mode 100644 index 539e9d020..000000000 --- a/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php +++ /dev/null @@ -1,519 +0,0 @@ -url, $match)) { -throw new \InvalidArgumentException(sprintf('The Bitbucket repository URL %s is invalid. It must be the HTTPS URL of a Bitbucket repository.', $this->url)); -} - -$this->owner = $match[1]; -$this->repository = $match[2]; -$this->originUrl = 'bitbucket.org'; -$this->cache = new Cache( -$this->io, -implode('/', [ -$this->config->get('cache-repo-dir'), -$this->originUrl, -$this->owner, -$this->repository, -]) -); -$this->cache->setReadOnly($this->config->get('cache-read-only')); -} - - - - -public function getUrl(): string -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getUrl(); -} - -return $this->cloneHttpsUrl; -} - - - - - - - -protected function getRepoData(): bool -{ -$resource = sprintf( -'https://api.bitbucket.org/2.0/repositories/%s/%s?%s', -$this->owner, -$this->repository, -http_build_query( -['fields' => '-project,-owner'], -'', -'&' -) -); - -$repoData = $this->fetchWithOAuthCredentials($resource, true)->decodeJson(); -if ($this->fallbackDriver) { -return false; -} -$this->parseCloneUrls($repoData['links']['clone']); - -$this->hasIssues = !empty($repoData['has_issues']); -$this->branchesUrl = $repoData['links']['branches']['href']; -$this->tagsUrl = $repoData['links']['tags']['href']; -$this->homeUrl = $repoData['links']['html']['href']; -$this->website = $repoData['website']; -$this->vcsType = $repoData['scm']; - -$this->repoData = $repoData; - -return true; -} - - - - -public function getComposerInformation(string $identifier): ?array -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getComposerInformation($identifier); -} - -if (!isset($this->infoCache[$identifier])) { -if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { -$composer = JsonFile::parseJson($res); -} else { -$composer = $this->getBaseComposerInformation($identifier); - -if ($this->shouldCache($identifier)) { -$this->cache->write($identifier, json_encode($composer)); -} -} - -if ($composer !== null) { - -if (!isset($composer['support']['source'])) { -$label = array_search( -$identifier, -$this->getTags() -) ?: array_search( -$identifier, -$this->getBranches() -) ?: $identifier; - -if (array_key_exists($label, $tags = $this->getTags())) { -$hash = $tags[$label]; -} elseif (array_key_exists($label, $branches = $this->getBranches())) { -$hash = $branches[$label]; -} - -if (!isset($hash)) { -$composer['support']['source'] = sprintf( -'https://%s/%s/%s/src', -$this->originUrl, -$this->owner, -$this->repository -); -} else { -$composer['support']['source'] = sprintf( -'https://%s/%s/%s/src/%s/?at=%s', -$this->originUrl, -$this->owner, -$this->repository, -$hash, -$label -); -} -} -if (!isset($composer['support']['issues']) && $this->hasIssues) { -$composer['support']['issues'] = sprintf( -'https://%s/%s/%s/issues', -$this->originUrl, -$this->owner, -$this->repository -); -} -if (!isset($composer['homepage'])) { -$composer['homepage'] = empty($this->website) ? $this->homeUrl : $this->website; -} -} - -$this->infoCache[$identifier] = $composer; -} - -return $this->infoCache[$identifier]; -} - - - - -public function getFileContent(string $file, string $identifier): ?string -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getFileContent($file, $identifier); -} - -if (strpos($identifier, '/') !== false) { -$branches = $this->getBranches(); -if (isset($branches[$identifier])) { -$identifier = $branches[$identifier]; -} -} - -$resource = sprintf( -'https://api.bitbucket.org/2.0/repositories/%s/%s/src/%s/%s', -$this->owner, -$this->repository, -$identifier, -$file -); - -return $this->fetchWithOAuthCredentials($resource)->getBody(); -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getChangeDate($identifier); -} - -if (strpos($identifier, '/') !== false) { -$branches = $this->getBranches(); -if (isset($branches[$identifier])) { -$identifier = $branches[$identifier]; -} -} - -$resource = sprintf( -'https://api.bitbucket.org/2.0/repositories/%s/%s/commit/%s?fields=date', -$this->owner, -$this->repository, -$identifier -); -$commit = $this->fetchWithOAuthCredentials($resource)->decodeJson(); - -return new \DateTimeImmutable($commit['date']); -} - - - - -public function getSource(string $identifier): array -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getSource($identifier); -} - -return ['type' => $this->vcsType, 'url' => $this->getUrl(), 'reference' => $identifier]; -} - - - - -public function getDist(string $identifier): ?array -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getDist($identifier); -} - -$url = sprintf( -'https://bitbucket.org/%s/%s/get/%s.zip', -$this->owner, -$this->repository, -$identifier -); - -return ['type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => '']; -} - - - - -public function getTags(): array -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getTags(); -} - -if (null === $this->tags) { -$tags = []; -$resource = sprintf( -'%s?%s', -$this->tagsUrl, -http_build_query( -[ -'pagelen' => 100, -'fields' => 'values.name,values.target.hash,next', -'sort' => '-target.date', -], -'', -'&' -) -); -$hasNext = true; -while ($hasNext) { -$tagsData = $this->fetchWithOAuthCredentials($resource)->decodeJson(); -foreach ($tagsData['values'] as $data) { -$tags[$data['name']] = $data['target']['hash']; -} -if (empty($tagsData['next'])) { -$hasNext = false; -} else { -$resource = $tagsData['next']; -} -} - -$this->tags = $tags; -} - -return $this->tags; -} - - - - -public function getBranches(): array -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getBranches(); -} - -if (null === $this->branches) { -$branches = []; -$resource = sprintf( -'%s?%s', -$this->branchesUrl, -http_build_query( -[ -'pagelen' => 100, -'fields' => 'values.name,values.target.hash,values.heads,next', -'sort' => '-target.date', -], -'', -'&' -) -); -$hasNext = true; -while ($hasNext) { -$branchData = $this->fetchWithOAuthCredentials($resource)->decodeJson(); -foreach ($branchData['values'] as $data) { -$branches[$data['name']] = $data['target']['hash']; -} -if (empty($branchData['next'])) { -$hasNext = false; -} else { -$resource = $branchData['next']; -} -} - -$this->branches = $branches; -} - -return $this->branches; -} - - - - - - - - - - -protected function fetchWithOAuthCredentials(string $url, bool $fetchingRepoData = false): Response -{ -try { -return parent::getContents($url); -} catch (TransportException $e) { -$bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process, $this->httpDownloader); - -if (in_array($e->getCode(), [403, 404], true) || (401 === $e->getCode() && strpos($e->getMessage(), 'Could not authenticate against') === 0)) { -if (!$this->io->hasAuthentication($this->originUrl) -&& $bitbucketUtil->authorizeOAuth($this->originUrl) -) { -return parent::getContents($url); -} - -if (!$this->io->isInteractive() && $fetchingRepoData) { -$this->attemptCloneFallback(); - -return new Response(['url' => 'dummy'], 200, [], 'null'); -} -} - -throw $e; -} -} - - - - -protected function generateSshUrl(): string -{ -return 'git@' . $this->originUrl . ':' . $this->owner.'/'.$this->repository.'.git'; -} - - - - - - - -protected function attemptCloneFallback(): bool -{ -try { -$this->setupFallbackDriver($this->generateSshUrl()); - -return true; -} catch (\RuntimeException $e) { -$this->fallbackDriver = null; - -$this->io->writeError( -'Failed to clone the ' . $this->generateSshUrl() . ' repository, try running in interactive mode' -. ' so that you can enter your Bitbucket OAuth consumer credentials' -); -throw $e; -} -} - -protected function setupFallbackDriver(string $url): void -{ -$this->fallbackDriver = new GitDriver( -['url' => $url], -$this->io, -$this->config, -$this->httpDownloader, -$this->process -); -$this->fallbackDriver->initialize(); -} - - - - -protected function parseCloneUrls(array $cloneLinks): void -{ -foreach ($cloneLinks as $cloneLink) { -if ($cloneLink['name'] === 'https') { - - -$this->cloneHttpsUrl = Preg::replace('/https:\/\/([^@]+@)?/', 'https://', $cloneLink['href']); -} -} -} - - - - -public function getRootIdentifier(): string -{ -if ($this->fallbackDriver) { -return $this->fallbackDriver->getRootIdentifier(); -} - -if (null === $this->rootIdentifier) { -if (!$this->getRepoData()) { -if (!$this->fallbackDriver) { -throw new \LogicException('A fallback driver should be setup if getRepoData returns false'); -} - -return $this->fallbackDriver->getRootIdentifier(); -} - -if ($this->vcsType !== 'git') { -throw new \RuntimeException( -$this->url.' does not appear to be a git repository, use '. -$this->cloneHttpsUrl.' but remember that Bitbucket no longer supports the mercurial repositories. '. -'https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket' -); -} - -$this->rootIdentifier = $this->repoData['mainbranch']['name'] ?? 'master'; -} - -return $this->rootIdentifier; -} - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -if (!Preg::isMatch('#^https?://bitbucket\.org/([^/]+)/([^/]+?)(\.git|/?)?$#i', $url)) { -return false; -} - -if (!extension_loaded('openssl')) { -$io->writeError('Skipping Bitbucket git driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); - -return false; -} - -return true; -} -} diff --git a/composer/src/Composer/Repository/Vcs/GitDriver.php b/composer/src/Composer/Repository/Vcs/GitDriver.php deleted file mode 100644 index 676d86ae7..000000000 --- a/composer/src/Composer/Repository/Vcs/GitDriver.php +++ /dev/null @@ -1,258 +0,0 @@ -url)) { -$this->url = Preg::replace('{[\\/]\.git/?$}', '', $this->url); -if (!is_dir($this->url)) { -throw new \RuntimeException('Failed to read package information from '.$this->url.' as the path does not exist'); -} -$this->repoDir = $this->url; -$cacheUrl = realpath($this->url); -} else { -if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { -throw new \RuntimeException('GitDriver requires a usable cache directory, and it looks like you set it to be disabled'); -} - -$this->repoDir = $this->config->get('cache-vcs-dir') . '/' . Preg::replace('{[^a-z0-9.]}i', '-', $this->url) . '/'; - -GitUtil::cleanEnv(); - -$fs = new Filesystem(); -$fs->ensureDirectoryExists(dirname($this->repoDir)); - -if (!is_writable(dirname($this->repoDir))) { -throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.dirname($this->repoDir).'" directory is not writable by the current user.'); -} - -if (Preg::isMatch('{^ssh://[^@]+@[^:]+:[^0-9]+}', $this->url)) { -throw new \InvalidArgumentException('The source URL '.$this->url.' is invalid, ssh URLs should have a port number after ":".'."\n".'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); -} - -$gitUtil = new GitUtil($this->io, $this->config, $this->process, $fs); -if (!$gitUtil->syncMirror($this->url, $this->repoDir)) { -if (!is_dir($this->repoDir)) { -throw new \RuntimeException('Failed to clone '.$this->url.' to read package information from it'); -} -$this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated'); -} - -$cacheUrl = $this->url; -} - -$this->getTags(); -$this->getBranches(); - -$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', Url::sanitize($cacheUrl))); -$this->cache->setReadOnly($this->config->get('cache-read-only')); -} - - - - -public function getRootIdentifier(): string -{ -if (null === $this->rootIdentifier) { -$this->rootIdentifier = 'master'; - -$gitUtil = new GitUtil($this->io, $this->config, $this->process, new Filesystem()); -if (!Filesystem::isLocalPath($this->url)) { -$defaultBranch = $gitUtil->getMirrorDefaultBranch($this->url, $this->repoDir, false); -if ($defaultBranch !== null) { -return $this->rootIdentifier = $defaultBranch; -} -} - - -$this->process->execute('git branch --no-color', $output, $this->repoDir); -$branches = $this->process->splitLines($output); -if (!in_array('* master', $branches)) { -foreach ($branches as $branch) { -if ($branch && Preg::isMatchStrictGroups('{^\* +(\S+)}', $branch, $match)) { -$this->rootIdentifier = $match[1]; -break; -} -} -} -} - -return $this->rootIdentifier; -} - - - - -public function getUrl(): string -{ -return $this->url; -} - - - - -public function getSource(string $identifier): array -{ -return ['type' => 'git', 'url' => $this->getUrl(), 'reference' => $identifier]; -} - - - - -public function getDist(string $identifier): ?array -{ -return null; -} - - - - -public function getFileContent(string $file, string $identifier): ?string -{ -if (isset($identifier[0]) && $identifier[0] === '-') { -throw new \RuntimeException('Invalid git identifier detected. Identifier must not start with a -, given: ' . $identifier); -} - -$resource = sprintf('%s:%s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); -$this->process->execute(sprintf('git show %s', $resource), $content, $this->repoDir); - -if (!trim($content)) { -return null; -} - -return $content; -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -$this->process->execute(sprintf( -'git -c log.showSignature=false log -1 --format=%%at %s', -ProcessExecutor::escape($identifier) -), $output, $this->repoDir); - -return new \DateTimeImmutable('@'.trim($output), new \DateTimeZone('UTC')); -} - - - - -public function getTags(): array -{ -if (null === $this->tags) { -$this->tags = []; - -$this->process->execute('git show-ref --tags --dereference', $output, $this->repoDir); -foreach ($output = $this->process->splitLines($output) as $tag) { -if ($tag && Preg::isMatch('{^([a-f0-9]{40}) refs/tags/(\S+?)(\^\{\})?$}', $tag, $match)) { -$this->tags[$match[2]] = (string) $match[1]; -} -} -} - -return $this->tags; -} - - - - -public function getBranches(): array -{ -if (null === $this->branches) { -$branches = []; - -$this->process->execute('git branch --no-color --no-abbrev -v', $output, $this->repoDir); -foreach ($this->process->splitLines($output) as $branch) { -if ($branch && !Preg::isMatch('{^ *[^/]+/HEAD }', $branch)) { -if (Preg::isMatchStrictGroups('{^(?:\* )? *(\S+) *([a-f0-9]+)(?: .*)?$}', $branch, $match) && $match[1][0] !== '-') { -$branches[$match[1]] = $match[2]; -} -} -} - -$this->branches = $branches; -} - -return $this->branches; -} - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -if (Preg::isMatch('#(^git://|\.git/?$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) { -return true; -} - - -if (Filesystem::isLocalPath($url)) { -$url = Filesystem::getPlatformPath($url); -if (!is_dir($url)) { -return false; -} - -$process = new ProcessExecutor($io); - -if ($process->execute('git tag', $output, $url) === 0) { -return true; -} -} - -if (!$deep) { -return false; -} - -$gitUtil = new GitUtil($io, $config, new ProcessExecutor($io), new Filesystem()); -GitUtil::cleanEnv(); - -try { -$gitUtil->runCommand(static function ($url): string { -return 'git ls-remote --heads -- ' . ProcessExecutor::escape($url); -}, $url, sys_get_temp_dir()); -} catch (\RuntimeException $e) { -return false; -} - -return true; -} -} diff --git a/composer/src/Composer/Repository/Vcs/GitHubDriver.php b/composer/src/Composer/Repository/Vcs/GitHubDriver.php deleted file mode 100644 index d094f4705..000000000 --- a/composer/src/Composer/Repository/Vcs/GitHubDriver.php +++ /dev/null @@ -1,621 +0,0 @@ -url, $match)) { -throw new \InvalidArgumentException(sprintf('The GitHub repository URL %s is invalid.', $this->url)); -} - -assert(is_string($match[3])); -assert(is_string($match[4])); -$this->owner = $match[3]; -$this->repository = $match[4]; -$this->originUrl = strtolower($match[1] ?? (string) $match[2]); -if ($this->originUrl === 'www.github.com') { -$this->originUrl = 'github.com'; -} -$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->owner.'/'.$this->repository); -$this->cache->setReadOnly($this->config->get('cache-read-only')); - -if ($this->config->get('use-github-api') === false || (isset($this->repoConfig['no-api']) && $this->repoConfig['no-api'])) { -$this->setupGitDriver($this->url); - -return; -} - -$this->fetchRootIdentifier(); -} - -public function getRepositoryUrl(): string -{ -return 'https://'.$this->originUrl.'/'.$this->owner.'/'.$this->repository; -} - - - - -public function getRootIdentifier(): string -{ -if ($this->gitDriver) { -return $this->gitDriver->getRootIdentifier(); -} - -return $this->rootIdentifier; -} - - - - -public function getUrl(): string -{ -if ($this->gitDriver) { -return $this->gitDriver->getUrl(); -} - -return 'https://' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; -} - -protected function getApiUrl(): string -{ -if ('github.com' === $this->originUrl) { -$apiUrl = 'api.github.com'; -} else { -$apiUrl = $this->originUrl . '/api/v3'; -} - -return 'https://' . $apiUrl; -} - - - - -public function getSource(string $identifier): array -{ -if ($this->gitDriver) { -return $this->gitDriver->getSource($identifier); -} -if ($this->isPrivate) { - - -$url = $this->generateSshUrl(); -} else { -$url = $this->getUrl(); -} - -return ['type' => 'git', 'url' => $url, 'reference' => $identifier]; -} - - - - -public function getDist(string $identifier): ?array -{ -$url = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/zipball/'.$identifier; - -return ['type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => '']; -} - - - - -public function getComposerInformation(string $identifier): ?array -{ -if ($this->gitDriver) { -return $this->gitDriver->getComposerInformation($identifier); -} - -if (!isset($this->infoCache[$identifier])) { -if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { -$composer = JsonFile::parseJson($res); -} else { -$composer = $this->getBaseComposerInformation($identifier); - -if ($this->shouldCache($identifier)) { -$this->cache->write($identifier, json_encode($composer)); -} -} - -if ($composer !== null) { - -if (!isset($composer['support']['source'])) { -$label = array_search($identifier, $this->getTags()) ?: array_search($identifier, $this->getBranches()) ?: $identifier; -$composer['support']['source'] = sprintf('https://%s/%s/%s/tree/%s', $this->originUrl, $this->owner, $this->repository, $label); -} -if (!isset($composer['support']['issues']) && $this->hasIssues) { -$composer['support']['issues'] = sprintf('https://%s/%s/%s/issues', $this->originUrl, $this->owner, $this->repository); -} -if (!isset($composer['abandoned']) && $this->isArchived) { -$composer['abandoned'] = true; -} -if (!isset($composer['funding']) && $funding = $this->getFundingInfo()) { -$composer['funding'] = $funding; -} -} - -$this->infoCache[$identifier] = $composer; -} - -return $this->infoCache[$identifier]; -} - - - - -private function getFundingInfo() -{ -if (null !== $this->fundingInfo) { -return $this->fundingInfo; -} - -if ($this->originUrl !== 'github.com') { -return $this->fundingInfo = false; -} - -foreach ([$this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/.github/FUNDING.yml', $this->getApiUrl() . '/repos/'.$this->owner.'/.github/contents/FUNDING.yml'] as $file) { -try { -$response = $this->httpDownloader->get($file, [ -'retry-auth-failure' => false, -])->decodeJson(); -} catch (TransportException $e) { -continue; -} -if (empty($response['content']) || $response['encoding'] !== 'base64' || !($funding = base64_decode($response['content']))) { -continue; -} -break; -} -if (empty($funding)) { -return $this->fundingInfo = false; -} - -$result = []; -$key = null; -foreach (Preg::split('{\r?\n}', $funding) as $line) { -$line = trim($line); -if (Preg::isMatchStrictGroups('{^(\w+)\s*:\s*(.+)$}', $line, $match)) { -if ($match[2] === '[') { -$key = $match[1]; -continue; -} -if (Preg::isMatchStrictGroups('{^\[(.*)\](?:\s*#.*)?$}', $match[2], $match2)) { -foreach (array_map('trim', Preg::split('{[\'"]?\s*,\s*[\'"]?}', $match2[1])) as $item) { -$result[] = ['type' => $match[1], 'url' => trim($item, '"\' ')]; -} -} elseif (Preg::isMatchStrictGroups('{^([^#].*?)(?:\s+#.*)?$}', $match[2], $match2)) { -$result[] = ['type' => $match[1], 'url' => trim($match2[1], '"\' ')]; -} -$key = null; -} elseif (Preg::isMatchStrictGroups('{^(\w+)\s*:\s*#\s*$}', $line, $match)) { -$key = $match[1]; -} elseif ($key !== null && ( -Preg::isMatchStrictGroups('{^-\s*(.+)(?:\s+#.*)?$}', $line, $match) -|| Preg::isMatchStrictGroups('{^(.+),(?:\s*#.*)?$}', $line, $match) -)) { -$result[] = ['type' => $key, 'url' => trim($match[1], '"\' ')]; -} elseif ($key !== null && $line === ']') { -$key = null; -} -} - -foreach ($result as $key => $item) { -switch ($item['type']) { -case 'tidelift': -$result[$key]['url'] = 'https://tidelift.com/funding/github/' . $item['url']; -break; -case 'github': -$result[$key]['url'] = 'https://github.com/' . basename($item['url']); -break; -case 'patreon': -$result[$key]['url'] = 'https://www.patreon.com/' . basename($item['url']); -break; -case 'otechie': -$result[$key]['url'] = 'https://otechie.com/' . basename($item['url']); -break; -case 'open_collective': -$result[$key]['url'] = 'https://opencollective.com/' . basename($item['url']); -break; -case 'liberapay': -$result[$key]['url'] = 'https://liberapay.com/' . basename($item['url']); -break; -case 'ko_fi': -$result[$key]['url'] = 'https://ko-fi.com/' . basename($item['url']); -break; -case 'issuehunt': -$result[$key]['url'] = 'https://issuehunt.io/r/' . $item['url']; -break; -case 'community_bridge': -$result[$key]['url'] = 'https://funding.communitybridge.org/projects/' . basename($item['url']); -break; -} -} - -return $this->fundingInfo = $result; -} - - - - -public function getFileContent(string $file, string $identifier): ?string -{ -if ($this->gitDriver) { -return $this->gitDriver->getFileContent($file, $identifier); -} - -$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/' . $file . '?ref='.urlencode($identifier); -$resource = $this->getContents($resource)->decodeJson(); - - - -if ((!isset($resource['content']) || $resource['content'] === '') && $resource['encoding'] === 'none' && isset($resource['git_url'])) { -$resource = $this->getContents($resource['git_url'])->decodeJson(); -} - -if (empty($resource['content']) || $resource['encoding'] !== 'base64' || !($content = base64_decode($resource['content']))) { -throw new \RuntimeException('Could not retrieve ' . $file . ' for '.$identifier); -} - -return $content; -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -if ($this->gitDriver) { -return $this->gitDriver->getChangeDate($identifier); -} - -$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/commits/'.urlencode($identifier); -$commit = $this->getContents($resource)->decodeJson(); - -return new \DateTimeImmutable($commit['commit']['committer']['date']); -} - - - - -public function getTags(): array -{ -if ($this->gitDriver) { -return $this->gitDriver->getTags(); -} -if (null === $this->tags) { -$tags = []; -$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/tags?per_page=100'; - -do { -$response = $this->getContents($resource); -$tagsData = $response->decodeJson(); -foreach ($tagsData as $tag) { -$tags[$tag['name']] = $tag['commit']['sha']; -} - -$resource = $this->getNextPage($response); -} while ($resource); - -$this->tags = $tags; -} - -return $this->tags; -} - - - - -public function getBranches(): array -{ -if ($this->gitDriver) { -return $this->gitDriver->getBranches(); -} -if (null === $this->branches) { -$branches = []; -$resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/git/refs/heads?per_page=100'; - -do { -$response = $this->getContents($resource); -$branchData = $response->decodeJson(); -foreach ($branchData as $branch) { -$name = substr($branch['ref'], 11); -if ($name !== 'gh-pages') { -$branches[$name] = $branch['object']['sha']; -} -} - -$resource = $this->getNextPage($response); -} while ($resource); - -$this->branches = $branches; -} - -return $this->branches; -} - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -if (!Preg::isMatch('#^((?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/([^/]+?)(?:\.git|/)?$#', $url, $matches)) { -return false; -} - -$originUrl = $matches[2] ?? (string) $matches[3]; -if (!in_array(strtolower(Preg::replace('{^www\.}i', '', $originUrl)), $config->get('github-domains'))) { -return false; -} - -if (!extension_loaded('openssl')) { -$io->writeError('Skipping GitHub driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); - -return false; -} - -return true; -} - - - - - - -public function getRepoData(): ?array -{ -$this->fetchRootIdentifier(); - -return $this->repoData; -} - - - - -protected function generateSshUrl(): string -{ -if (false !== strpos($this->originUrl, ':')) { -return 'ssh://git@' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; -} - -return 'git@' . $this->originUrl . ':'.$this->owner.'/'.$this->repository.'.git'; -} - - - - -protected function getContents(string $url, bool $fetchingRepoData = false): Response -{ -try { -return parent::getContents($url); -} catch (TransportException $e) { -$gitHubUtil = new GitHub($this->io, $this->config, $this->process, $this->httpDownloader); - -switch ($e->getCode()) { -case 401: -case 404: - -if (!$fetchingRepoData) { -throw $e; -} - -if ($gitHubUtil->authorizeOAuth($this->originUrl)) { -return parent::getContents($url); -} - -if (!$this->io->isInteractive()) { -$this->attemptCloneFallback(); - -return new Response(['url' => 'dummy'], 200, [], 'null'); -} - -$scopesIssued = []; -$scopesNeeded = []; -if ($headers = $e->getHeaders()) { -if ($scopes = Response::findHeaderValue($headers, 'X-OAuth-Scopes')) { -$scopesIssued = explode(' ', $scopes); -} -if ($scopes = Response::findHeaderValue($headers, 'X-Accepted-OAuth-Scopes')) { -$scopesNeeded = explode(' ', $scopes); -} -} -$scopesFailed = array_diff($scopesNeeded, $scopesIssued); - - -if (!$headers || !count($scopesNeeded) || count($scopesFailed)) { -$gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'Your GitHub credentials are required to fetch private repository metadata ('.$this->url.')'); -} - -return parent::getContents($url); - -case 403: -if (!$this->io->hasAuthentication($this->originUrl) && $gitHubUtil->authorizeOAuth($this->originUrl)) { -return parent::getContents($url); -} - -if (!$this->io->isInteractive() && $fetchingRepoData) { -$this->attemptCloneFallback(); - -return new Response(['url' => 'dummy'], 200, [], 'null'); -} - -$rateLimited = $gitHubUtil->isRateLimited((array) $e->getHeaders()); - -if (!$this->io->hasAuthentication($this->originUrl)) { -if (!$this->io->isInteractive()) { -$this->io->writeError('GitHub API limit exhausted. Failed to get metadata for the '.$this->url.' repository, try running in interactive mode so that you can enter your GitHub credentials to increase the API limit'); -throw $e; -} - -$gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'API limit exhausted. Enter your GitHub credentials to get a larger API limit ('.$this->url.')'); - -return parent::getContents($url); -} - -if ($rateLimited) { -$rateLimit = $gitHubUtil->getRateLimit($e->getHeaders()); -$this->io->writeError(sprintf( -'GitHub API limit (%d calls/hr) is exhausted. You are already authorized so you have to wait until %s before doing more requests', -$rateLimit['limit'], -$rateLimit['reset'] -)); -} - -throw $e; - -default: -throw $e; -} -} -} - - - - - - -protected function fetchRootIdentifier(): void -{ -if ($this->repoData) { -return; -} - -$repoDataUrl = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository; - -try { -$this->repoData = $this->getContents($repoDataUrl, true)->decodeJson(); -} catch (TransportException $e) { -if ($e->getCode() === 499) { -$this->attemptCloneFallback(); -} else { -throw $e; -} -} -if (null === $this->repoData && null !== $this->gitDriver) { -return; -} - -$this->owner = $this->repoData['owner']['login']; -$this->repository = $this->repoData['name']; - -$this->isPrivate = !empty($this->repoData['private']); -if (isset($this->repoData['default_branch'])) { -$this->rootIdentifier = $this->repoData['default_branch']; -} elseif (isset($this->repoData['master_branch'])) { -$this->rootIdentifier = $this->repoData['master_branch']; -} else { -$this->rootIdentifier = 'master'; -} -$this->hasIssues = !empty($this->repoData['has_issues']); -$this->isArchived = !empty($this->repoData['archived']); -} - - - - - - - -protected function attemptCloneFallback(): bool -{ -$this->isPrivate = true; - -try { - - - - -$this->setupGitDriver($this->generateSshUrl()); - -return true; -} catch (\RuntimeException $e) { -$this->gitDriver = null; - -$this->io->writeError('Failed to clone the '.$this->generateSshUrl().' repository, try running in interactive mode so that you can enter your GitHub credentials'); -throw $e; -} -} - -protected function setupGitDriver(string $url): void -{ -$this->gitDriver = new GitDriver( -['url' => $url], -$this->io, -$this->config, -$this->httpDownloader, -$this->process -); -$this->gitDriver->initialize(); -} - -protected function getNextPage(Response $response): ?string -{ -$header = $response->getHeader('link'); -if (!$header) { -return null; -} - -$links = explode(',', $header); -foreach ($links as $link) { -if (Preg::isMatch('{<(.+?)>; *rel="next"}', $link, $match)) { -return $match[1]; -} -} - -return null; -} -} diff --git a/composer/src/Composer/Repository/Vcs/GitLabDriver.php b/composer/src/Composer/Repository/Vcs/GitLabDriver.php deleted file mode 100644 index 01249b741..000000000 --- a/composer/src/Composer/Repository/Vcs/GitLabDriver.php +++ /dev/null @@ -1,628 +0,0 @@ -https?)://(?P.+?)(?::(?P[0-9]+))?/|git@(?P[^:]+):)(?P.+)/(?P[^/]+?)(?:\.git|/)?$#'; - - - - - - - - -public function initialize(): void -{ -if (!Preg::isMatch(self::URL_REGEX, $this->url, $match)) { -throw new \InvalidArgumentException(sprintf('The GitLab repository URL %s is invalid. It must be the HTTP URL of a GitLab project.', $this->url)); -} - -assert(is_string($match['parts'])); -assert(is_string($match['repo'])); -$guessedDomain = $match['domain'] ?? (string) $match['domain2']; -$configuredDomains = $this->config->get('gitlab-domains'); -$urlParts = explode('/', $match['parts']); - -$this->scheme = in_array($match['scheme'], ['https', 'http'], true) -? $match['scheme'] -: (isset($this->repoConfig['secure-http']) && $this->repoConfig['secure-http'] === false ? 'http' : 'https') -; -$origin = self::determineOrigin($configuredDomains, $guessedDomain, $urlParts, $match['port']); -if (false === $origin) { -throw new \LogicException('It should not be possible to create a gitlab driver with an unparseable origin URL ('.$this->url.')'); -} -$this->originUrl = $origin; - -if (is_string($protocol = $this->config->get('gitlab-protocol'))) { - -if (!in_array($protocol, ['git', 'http', 'https'])) { -throw new \RuntimeException('gitlab-protocol must be one of git, http.'); -} -$this->protocol = $protocol === 'git' ? 'ssh' : 'http'; -} - -if (false !== strpos($this->originUrl, ':') || false !== strpos($this->originUrl, '/')) { -$this->hasNonstandardOrigin = true; -} - -$this->namespace = implode('/', $urlParts); -$this->repository = Preg::replace('#(\.git)$#', '', $match['repo']); - -$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository); -$this->cache->setReadOnly($this->config->get('cache-read-only')); - -$this->fetchProject(); -} - - - - - - - -public function setHttpDownloader(HttpDownloader $httpDownloader): void -{ -$this->httpDownloader = $httpDownloader; -} - - - - -public function getComposerInformation(string $identifier): ?array -{ -if ($this->gitDriver) { -return $this->gitDriver->getComposerInformation($identifier); -} - -if (!isset($this->infoCache[$identifier])) { -if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { -$composer = JsonFile::parseJson($res); -} else { -$composer = $this->getBaseComposerInformation($identifier); - -if ($this->shouldCache($identifier)) { -$this->cache->write($identifier, json_encode($composer)); -} -} - -if (null !== $composer) { - -if (!isset($composer['support']['source']) && isset($this->project['web_url'])) { -$label = array_search($identifier, $this->getTags(), true) ?: array_search($identifier, $this->getBranches(), true) ?: $identifier; -$composer['support']['source'] = sprintf('%s/-/tree/%s', $this->project['web_url'], $label); -} -if (!isset($composer['support']['issues']) && !empty($this->project['issues_enabled']) && isset($this->project['web_url'])) { -$composer['support']['issues'] = sprintf('%s/-/issues', $this->project['web_url']); -} -if (!isset($composer['abandoned']) && !empty($this->project['archived'])) { -$composer['abandoned'] = true; -} -} - -$this->infoCache[$identifier] = $composer; -} - -return $this->infoCache[$identifier]; -} - - - - -public function getFileContent(string $file, string $identifier): ?string -{ -if ($this->gitDriver) { -return $this->gitDriver->getFileContent($file, $identifier); -} - - -if (!Preg::isMatch('{[a-f0-9]{40}}i', $identifier)) { -$branches = $this->getBranches(); -if (isset($branches[$identifier])) { -$identifier = $branches[$identifier]; -} -} - -$resource = $this->getApiUrl().'/repository/files/'.$this->urlEncodeAll($file).'/raw?ref='.$identifier; - -try { -$content = $this->getContents($resource)->getBody(); -} catch (TransportException $e) { -if ($e->getCode() !== 404) { -throw $e; -} - -return null; -} - -return $content; -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -if ($this->gitDriver) { -return $this->gitDriver->getChangeDate($identifier); -} - -if (isset($this->commits[$identifier])) { -return new \DateTimeImmutable($this->commits[$identifier]['committed_date']); -} - -return null; -} - -public function getRepositoryUrl(): string -{ -if ($this->protocol) { -return $this->project["{$this->protocol}_url_to_repo"]; -} - -return $this->isPrivate ? $this->project['ssh_url_to_repo'] : $this->project['http_url_to_repo']; -} - - - - -public function getUrl(): string -{ -if ($this->gitDriver) { -return $this->gitDriver->getUrl(); -} - -return $this->project['web_url']; -} - - - - -public function getDist(string $identifier): ?array -{ -$url = $this->getApiUrl().'/repository/archive.zip?sha='.$identifier; - -return ['type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => '']; -} - - - - -public function getSource(string $identifier): array -{ -if ($this->gitDriver) { -return $this->gitDriver->getSource($identifier); -} - -return ['type' => 'git', 'url' => $this->getRepositoryUrl(), 'reference' => $identifier]; -} - - - - -public function getRootIdentifier(): string -{ -if ($this->gitDriver) { -return $this->gitDriver->getRootIdentifier(); -} - -return $this->project['default_branch']; -} - - - - -public function getBranches(): array -{ -if ($this->gitDriver) { -return $this->gitDriver->getBranches(); -} - -if (null === $this->branches) { -$this->branches = $this->getReferences('branches'); -} - -return $this->branches; -} - - - - -public function getTags(): array -{ -if ($this->gitDriver) { -return $this->gitDriver->getTags(); -} - -if (null === $this->tags) { -$this->tags = $this->getReferences('tags'); -} - -return $this->tags; -} - - - - -public function getApiUrl(): string -{ -return $this->scheme.'://'.$this->originUrl.'/api/v4/projects/'.$this->urlEncodeAll($this->namespace).'%2F'.$this->urlEncodeAll($this->repository); -} - - - - -private function urlEncodeAll(string $string): string -{ -$encoded = ''; -for ($i = 0; isset($string[$i]); $i++) { -$character = $string[$i]; -if (!ctype_alnum($character) && !in_array($character, ['-', '_'], true)) { -$character = '%' . sprintf('%02X', ord($character)); -} -$encoded .= $character; -} - -return $encoded; -} - - - - -protected function getReferences(string $type): array -{ -$perPage = 100; -$resource = $this->getApiUrl().'/repository/'.$type.'?per_page='.$perPage; - -$references = []; -do { -$response = $this->getContents($resource); -$data = $response->decodeJson(); - -foreach ($data as $datum) { -$references[$datum['name']] = $datum['commit']['id']; - - - -$this->commits[$datum['commit']['id']] = $datum['commit']; -} - -if (count($data) >= $perPage) { -$resource = $this->getNextPage($response); -} else { -$resource = false; -} -} while ($resource); - -return $references; -} - -protected function fetchProject(): void -{ - -$resource = $this->getApiUrl(); -$this->project = $this->getContents($resource, true)->decodeJson(); -if (isset($this->project['visibility'])) { -$this->isPrivate = $this->project['visibility'] !== 'public'; -} else { - -$this->isPrivate = false; -} -} - - - - - - - -protected function attemptCloneFallback(): bool -{ -if ($this->isPrivate === false) { -$url = $this->generatePublicUrl(); -} else { -$url = $this->generateSshUrl(); -} - -try { - - - -$this->setupGitDriver($url); - -return true; -} catch (\RuntimeException $e) { -$this->gitDriver = null; - -$this->io->writeError('Failed to clone the '.$url.' repository, try running in interactive mode so that you can enter your credentials'); -throw $e; -} -} - - - - -protected function generateSshUrl(): string -{ -if ($this->hasNonstandardOrigin) { -return 'ssh://git@'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository.'.git'; -} - -return 'git@' . $this->originUrl . ':'.$this->namespace.'/'.$this->repository.'.git'; -} - -protected function generatePublicUrl(): string -{ -return $this->scheme . '://' . $this->originUrl . '/'.$this->namespace.'/'.$this->repository.'.git'; -} - -protected function setupGitDriver(string $url): void -{ -$this->gitDriver = new GitDriver( -['url' => $url], -$this->io, -$this->config, -$this->httpDownloader, -$this->process -); -$this->gitDriver->initialize(); -} - - - - -protected function getContents(string $url, bool $fetchingRepoData = false): Response -{ -try { -$response = parent::getContents($url); - -if ($fetchingRepoData) { -$json = $response->decodeJson(); - - - - -if (!isset($json['default_branch']) && isset($json['permissions'])) { -$this->isPrivate = $json['visibility'] !== 'public'; - -$moreThanGuestAccess = false; - - - -foreach ($json['permissions'] as $permission) { -if ($permission && $permission['access_level'] > 10) { -$moreThanGuestAccess = true; -} -} - -if (!$moreThanGuestAccess) { -$this->io->writeError('GitLab token with Guest only access detected'); - -$this->attemptCloneFallback(); - -return new Response(['url' => 'dummy'], 200, [], 'null'); -} -} - - -if (!isset($json['default_branch'])) { - -if (isset($json['repository_access_level']) && $json['repository_access_level'] === 'disabled') { -throw new TransportException('The GitLab repository is disabled in the project', 400); -} - -if (!empty($json['id'])) { -$this->isPrivate = false; -} - -throw new TransportException('GitLab API seems to not be authenticated as it did not return a default_branch', 401); -} -} - -return $response; -} catch (TransportException $e) { -$gitLabUtil = new GitLab($this->io, $this->config, $this->process, $this->httpDownloader); - -switch ($e->getCode()) { -case 401: -case 404: - -if (!$fetchingRepoData) { -throw $e; -} - -if ($gitLabUtil->authorizeOAuth($this->originUrl)) { -return parent::getContents($url); -} - -if ($gitLabUtil->isOAuthExpired($this->originUrl) && $gitLabUtil->authorizeOAuthRefresh($this->scheme, $this->originUrl)) { -return parent::getContents($url); -} - -if (!$this->io->isInteractive()) { -$this->attemptCloneFallback(); - -return new Response(['url' => 'dummy'], 200, [], 'null'); -} -$this->io->writeError('Failed to download ' . $this->namespace . '/' . $this->repository . ':' . $e->getMessage() . ''); -$gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, 'Your credentials are required to fetch private repository metadata ('.$this->url.')'); - -return parent::getContents($url); - -case 403: -if (!$this->io->hasAuthentication($this->originUrl) && $gitLabUtil->authorizeOAuth($this->originUrl)) { -return parent::getContents($url); -} - -if (!$this->io->isInteractive() && $fetchingRepoData) { -$this->attemptCloneFallback(); - -return new Response(['url' => 'dummy'], 200, [], 'null'); -} - -throw $e; - -default: -throw $e; -} -} -} - - - - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -if (!Preg::isMatch(self::URL_REGEX, $url, $match)) { -return false; -} - -assert(is_string($match['parts'])); -assert(is_string($match['repo'])); -$scheme = $match['scheme']; -$guessedDomain = $match['domain'] ?? (string) $match['domain2']; -$urlParts = explode('/', $match['parts']); - -if (false === self::determineOrigin($config->get('gitlab-domains'), $guessedDomain, $urlParts, $match['port'])) { -return false; -} - -if ('https' === $scheme && !extension_loaded('openssl')) { -$io->writeError('Skipping GitLab driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); - -return false; -} - -return true; -} - -protected function getNextPage(Response $response): ?string -{ -$header = $response->getHeader('link'); - -$links = explode(',', $header); -foreach ($links as $link) { -if (Preg::isMatchStrictGroups('{<(.+?)>; *rel="next"}', $link, $match)) { -return $match[1]; -} -} - -return null; -} - - - - - - - - -private static function determineOrigin(array $configuredDomains, string $guessedDomain, array &$urlParts, ?string $portNumber) -{ -$guessedDomain = strtolower($guessedDomain); - -if (in_array($guessedDomain, $configuredDomains) || (null !== $portNumber && in_array($guessedDomain.':'.$portNumber, $configuredDomains))) { -if (null !== $portNumber) { -return $guessedDomain.':'.$portNumber; -} - -return $guessedDomain; -} - -if (null !== $portNumber) { -$guessedDomain .= ':'.$portNumber; -} - -while (null !== ($part = array_shift($urlParts))) { -$guessedDomain .= '/' . $part; - -if (in_array($guessedDomain, $configuredDomains) || (null !== $portNumber && in_array(Preg::replace('{:\d+}', '', $guessedDomain), $configuredDomains))) { -return $guessedDomain; -} -} - -return false; -} -} diff --git a/composer/src/Composer/Repository/Vcs/HgDriver.php b/composer/src/Composer/Repository/Vcs/HgDriver.php deleted file mode 100644 index 5a83ee650..000000000 --- a/composer/src/Composer/Repository/Vcs/HgDriver.php +++ /dev/null @@ -1,244 +0,0 @@ -url)) { -$this->repoDir = $this->url; -} else { -if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { -throw new \RuntimeException('HgDriver requires a usable cache directory, and it looks like you set it to be disabled'); -} - -$cacheDir = $this->config->get('cache-vcs-dir'); -$this->repoDir = $cacheDir . '/' . Preg::replace('{[^a-z0-9]}i', '-', $this->url) . '/'; - -$fs = new Filesystem(); -$fs->ensureDirectoryExists($cacheDir); - -if (!is_writable(dirname($this->repoDir))) { -throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$cacheDir.'" directory is not writable by the current user.'); -} - - -$this->config->prohibitUrlByConfig($this->url, $this->io); - -$hgUtils = new HgUtils($this->io, $this->config, $this->process); - - -if (is_dir($this->repoDir) && 0 === $this->process->execute('hg summary', $output, $this->repoDir)) { -if (0 !== $this->process->execute('hg pull', $output, $this->repoDir)) { -$this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); -} -} else { - -$fs->removeDirectory($this->repoDir); - -$repoDir = $this->repoDir; -$command = static function ($url) use ($repoDir): string { -return sprintf('hg clone --noupdate -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($repoDir)); -}; - -$hgUtils->runCommand($command, $this->url, null); -} -} - -$this->getTags(); -$this->getBranches(); -} - - - - -public function getRootIdentifier(): string -{ -if (null === $this->rootIdentifier) { -$this->process->execute('hg tip --template "{node}"', $output, $this->repoDir); -$output = $this->process->splitLines($output); -$this->rootIdentifier = $output[0]; -} - -return $this->rootIdentifier; -} - - - - -public function getUrl(): string -{ -return $this->url; -} - - - - -public function getSource(string $identifier): array -{ -return ['type' => 'hg', 'url' => $this->getUrl(), 'reference' => $identifier]; -} - - - - -public function getDist(string $identifier): ?array -{ -return null; -} - - - - -public function getFileContent(string $file, string $identifier): ?string -{ -if (isset($identifier[0]) && $identifier[0] === '-') { -throw new \RuntimeException('Invalid hg identifier detected. Identifier must not start with a -, given: ' . $identifier); -} - -$resource = sprintf('hg cat -r %s -- %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); -$this->process->execute($resource, $content, $this->repoDir); - -if (!trim($content)) { -return null; -} - -return $content; -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -$this->process->execute( -sprintf( -'hg log --template "{date|rfc3339date}" -r %s', -ProcessExecutor::escape($identifier) -), -$output, -$this->repoDir -); - -return new \DateTimeImmutable(trim($output), new \DateTimeZone('UTC')); -} - - - - -public function getTags(): array -{ -if (null === $this->tags) { -$tags = []; - -$this->process->execute('hg tags', $output, $this->repoDir); -foreach ($this->process->splitLines($output) as $tag) { -if ($tag && Preg::isMatchStrictGroups('(^([^\s]+)\s+\d+:(.*)$)', $tag, $match)) { -$tags[$match[1]] = $match[2]; -} -} -unset($tags['tip']); - -$this->tags = $tags; -} - -return $this->tags; -} - - - - -public function getBranches(): array -{ -if (null === $this->branches) { -$branches = []; -$bookmarks = []; - -$this->process->execute('hg branches', $output, $this->repoDir); -foreach ($this->process->splitLines($output) as $branch) { -if ($branch && Preg::isMatchStrictGroups('(^([^\s]+)\s+\d+:([a-f0-9]+))', $branch, $match) && $match[1][0] !== '-') { -$branches[$match[1]] = $match[2]; -} -} - -$this->process->execute('hg bookmarks', $output, $this->repoDir); -foreach ($this->process->splitLines($output) as $branch) { -if ($branch && Preg::isMatchStrictGroups('(^(?:[\s*]*)([^\s]+)\s+\d+:(.*)$)', $branch, $match) && $match[1][0] !== '-') { -$bookmarks[$match[1]] = $match[2]; -} -} - - -$this->branches = array_merge($bookmarks, $branches); -} - -return $this->branches; -} - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -if (Preg::isMatch('#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { -return true; -} - - -if (Filesystem::isLocalPath($url)) { -$url = Filesystem::getPlatformPath($url); -if (!is_dir($url)) { -return false; -} - -$process = new ProcessExecutor($io); - -if ($process->execute('hg summary', $output, $url) === 0) { -return true; -} -} - -if (!$deep) { -return false; -} - -$process = new ProcessExecutor($io); -$exit = $process->execute(sprintf('hg identify -- %s', ProcessExecutor::escape($url)), $ignored); - -return $exit === 0; -} -} diff --git a/composer/src/Composer/Repository/Vcs/PerforceDriver.php b/composer/src/Composer/Repository/Vcs/PerforceDriver.php deleted file mode 100644 index 01f38c525..000000000 --- a/composer/src/Composer/Repository/Vcs/PerforceDriver.php +++ /dev/null @@ -1,188 +0,0 @@ -depot = $this->repoConfig['depot']; -$this->branch = ''; -if (!empty($this->repoConfig['branch'])) { -$this->branch = $this->repoConfig['branch']; -} - -$this->initPerforce($this->repoConfig); -$this->perforce->p4Login(); -$this->perforce->checkStream(); - -$this->perforce->writeP4ClientSpec(); -$this->perforce->connectClient(); -} - - - - -private function initPerforce(array $repoConfig): void -{ -if (!empty($this->perforce)) { -return; -} - -if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { -throw new \RuntimeException('PerforceDriver requires a usable cache directory, and it looks like you set it to be disabled'); -} - -$repoDir = $this->config->get('cache-vcs-dir') . '/' . $this->depot; -$this->perforce = Perforce::create($repoConfig, $this->getUrl(), $repoDir, $this->process, $this->io); -} - - - - -public function getFileContent(string $file, string $identifier): ?string -{ -return $this->perforce->getFileContent($file, $identifier); -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -return null; -} - - - - -public function getRootIdentifier(): string -{ -return $this->branch; -} - - - - -public function getBranches(): array -{ -return $this->perforce->getBranches(); -} - - - - -public function getTags(): array -{ -return $this->perforce->getTags(); -} - - - - -public function getDist(string $identifier): ?array -{ -return null; -} - - - - -public function getSource(string $identifier): array -{ -return [ -'type' => 'perforce', -'url' => $this->repoConfig['url'], -'reference' => $identifier, -'p4user' => $this->perforce->getUser(), -]; -} - - - - -public function getUrl(): string -{ -return $this->url; -} - - - - -public function hasComposerFile(string $identifier): bool -{ -$composerInfo = $this->perforce->getComposerInformation('//' . $this->depot . '/' . $identifier); - -return !empty($composerInfo); -} - - - - -public function getContents(string $url): Response -{ -throw new \BadMethodCallException('Not implemented/used in PerforceDriver'); -} - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -if ($deep || Preg::isMatch('#\b(perforce|p4)\b#i', $url)) { -return Perforce::checkServerExists($url, new ProcessExecutor($io)); -} - -return false; -} - - - - -public function cleanup(): void -{ -$this->perforce->cleanupClientSpec(); -$this->perforce = null; -} - -public function getDepot(): string -{ -return $this->depot; -} - -public function getBranch(): string -{ -return $this->branch; -} -} diff --git a/composer/src/Composer/Repository/Vcs/SvnDriver.php b/composer/src/Composer/Repository/Vcs/SvnDriver.php deleted file mode 100644 index ab31adb15..000000000 --- a/composer/src/Composer/Repository/Vcs/SvnDriver.php +++ /dev/null @@ -1,408 +0,0 @@ -url = $this->baseUrl = rtrim(self::normalizeUrl($this->url), '/'); - -SvnUtil::cleanEnv(); - -if (isset($this->repoConfig['trunk-path'])) { -$this->trunkPath = $this->repoConfig['trunk-path']; -} -if (isset($this->repoConfig['branches-path'])) { -$this->branchesPath = $this->repoConfig['branches-path']; -} -if (isset($this->repoConfig['tags-path'])) { -$this->tagsPath = $this->repoConfig['tags-path']; -} -if (array_key_exists('svn-cache-credentials', $this->repoConfig)) { -$this->cacheCredentials = (bool) $this->repoConfig['svn-cache-credentials']; -} -if (isset($this->repoConfig['package-path'])) { -$this->packagePath = '/' . trim($this->repoConfig['package-path'], '/'); -} - -if (false !== ($pos = strrpos($this->url, '/' . $this->trunkPath))) { -$this->baseUrl = substr($this->url, 0, $pos); -} - -$this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.Preg::replace('{[^a-z0-9.]}i', '-', Url::sanitize($this->baseUrl))); -$this->cache->setReadOnly($this->config->get('cache-read-only')); - -$this->getBranches(); -$this->getTags(); -} - - - - -public function getRootIdentifier(): string -{ -return $this->rootIdentifier ?: $this->trunkPath; -} - - - - -public function getUrl(): string -{ -return $this->url; -} - - - - -public function getSource(string $identifier): array -{ -return ['type' => 'svn', 'url' => $this->baseUrl, 'reference' => $identifier]; -} - - - - -public function getDist(string $identifier): ?array -{ -return null; -} - - - - -protected function shouldCache(string $identifier): bool -{ -return $this->cache && Preg::isMatch('{@\d+$}', $identifier); -} - - - - -public function getComposerInformation(string $identifier): ?array -{ -if (!isset($this->infoCache[$identifier])) { -if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier.'.json')) { - - -if ($res === '""') { -$res = 'null'; -$this->cache->write($identifier.'.json', json_encode(null)); -} - -return $this->infoCache[$identifier] = JsonFile::parseJson($res); -} - -try { -$composer = $this->getBaseComposerInformation($identifier); -} catch (TransportException $e) { -$message = $e->getMessage(); -if (stripos($message, 'path not found') === false && stripos($message, 'svn: warning: W160013') === false) { -throw $e; -} - -$composer = null; -} - -if ($this->shouldCache($identifier)) { -$this->cache->write($identifier.'.json', json_encode($composer)); -} - -$this->infoCache[$identifier] = $composer; -} - - -if (!is_array($this->infoCache[$identifier])) { -return null; -} - -return $this->infoCache[$identifier]; -} - -public function getFileContent(string $file, string $identifier): ?string -{ -$identifier = '/' . trim($identifier, '/') . '/'; - -Preg::match('{^(.+?)(@\d+)?/$}', $identifier, $match); -if (!empty($match[2])) { -$path = $match[1]; -$rev = $match[2]; -} else { -$path = $identifier; -$rev = ''; -} - -try { -$resource = $path.$file; -$output = $this->execute('svn cat', $this->baseUrl . $resource . $rev); -if (!trim($output)) { -return null; -} -} catch (\RuntimeException $e) { -throw new TransportException($e->getMessage()); -} - -return $output; -} - - - - -public function getChangeDate(string $identifier): ?\DateTimeImmutable -{ -$identifier = '/' . trim($identifier, '/') . '/'; - -Preg::match('{^(.+?)(@\d+)?/$}', $identifier, $match); -if (null !== $match[2] && null !== $match[1]) { -$path = $match[1]; -$rev = $match[2]; -} else { -$path = $identifier; -$rev = ''; -} - -$output = $this->execute('svn info', $this->baseUrl . $path . $rev); -foreach ($this->process->splitLines($output) as $line) { -if ($line && Preg::isMatchStrictGroups('{^Last Changed Date: ([^(]+)}', $line, $match)) { -return new \DateTimeImmutable($match[1], new \DateTimeZone('UTC')); -} -} - -return null; -} - - - - -public function getTags(): array -{ -if (null === $this->tags) { -$tags = []; - -if ($this->tagsPath !== false) { -$output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath); -if ($output) { -foreach ($this->process->splitLines($output) as $line) { -$line = trim($line); -if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { -if (isset($match[1], $match[2]) && $match[2] !== './') { -$tags[rtrim($match[2], '/')] = $this->buildIdentifier( -'/' . $this->tagsPath . '/' . $match[2], -$match[1] -); -} -} -} -} -} - -$this->tags = $tags; -} - -return $this->tags; -} - - - - -public function getBranches(): array -{ -if (null === $this->branches) { -$branches = []; - -if (false === $this->trunkPath) { -$trunkParent = $this->baseUrl . '/'; -} else { -$trunkParent = $this->baseUrl . '/' . $this->trunkPath; -} - -$output = $this->execute('svn ls --verbose', $trunkParent); -if ($output) { -foreach ($this->process->splitLines($output) as $line) { -$line = trim($line); -if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { -if (isset($match[1], $match[2]) && $match[2] === './') { -$branches['trunk'] = $this->buildIdentifier( -'/' . $this->trunkPath, -$match[1] -); -$this->rootIdentifier = $branches['trunk']; -break; -} -} -} -} -unset($output); - -if ($this->branchesPath !== false) { -$output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath); -if ($output) { -foreach ($this->process->splitLines(trim($output)) as $line) { -$line = trim($line); -if ($line && Preg::isMatch('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { -if (isset($match[1], $match[2]) && $match[2] !== './') { -$branches[rtrim($match[2], '/')] = $this->buildIdentifier( -'/' . $this->branchesPath . '/' . $match[2], -$match[1] -); -} -} -} -} -} - -$this->branches = $branches; -} - -return $this->branches; -} - - - - -public static function supports(IOInterface $io, Config $config, string $url, bool $deep = false): bool -{ -$url = self::normalizeUrl($url); -if (Preg::isMatch('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) { -return true; -} - - -if (!$deep && !Filesystem::isLocalPath($url)) { -return false; -} - -$process = new ProcessExecutor($io); -$exit = $process->execute( -"svn info --non-interactive -- ".ProcessExecutor::escape($url), -$ignoredOutput -); - -if ($exit === 0) { - -return true; -} - - -if (false !== stripos($process->getErrorOutput(), 'authorization failed:')) { - - -return true; -} - - -if (false !== stripos($process->getErrorOutput(), 'Authentication failed')) { - - -return true; -} - -return false; -} - - - - -protected static function normalizeUrl(string $url): string -{ -$fs = new Filesystem(); -if ($fs->isAbsolutePath($url)) { -return 'file://' . strtr($url, '\\', '/'); -} - -return $url; -} - - - - - - - - - -protected function execute(string $command, string $url): string -{ -if (null === $this->util) { -$this->util = new SvnUtil($this->baseUrl, $this->io, $this->config, $this->process); -$this->util->setCacheCredentials($this->cacheCredentials); -} - -try { -return $this->util->execute($command, $url); -} catch (\RuntimeException $e) { -if (null === $this->util->binaryVersion()) { -throw new \RuntimeException('Failed to load '.$this->url.', svn was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput()); -} - -throw new \RuntimeException( -'Repository '.$this->url.' could not be processed, '.$e->getMessage() -); -} -} - - - - - - - -protected function buildIdentifier(string $baseDir, string $revision): string -{ -return rtrim($baseDir, '/') . $this->packagePath . '/@' . $revision; -} -} diff --git a/composer/src/Composer/Repository/Vcs/VcsDriver.php b/composer/src/Composer/Repository/Vcs/VcsDriver.php deleted file mode 100644 index c09bf04a3..000000000 --- a/composer/src/Composer/Repository/Vcs/VcsDriver.php +++ /dev/null @@ -1,179 +0,0 @@ -url = $repoConfig['url']; -$this->originUrl = $repoConfig['url']; -$this->repoConfig = $repoConfig; -$this->io = $io; -$this->config = $config; -$this->httpDownloader = $httpDownloader; -$this->process = $process; -} - - - - -protected function shouldCache(string $identifier): bool -{ -return $this->cache && Preg::isMatch('{^[a-f0-9]{40}$}iD', $identifier); -} - - - - -public function getComposerInformation(string $identifier): ?array -{ -if (!isset($this->infoCache[$identifier])) { -if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { -return $this->infoCache[$identifier] = JsonFile::parseJson($res); -} - -$composer = $this->getBaseComposerInformation($identifier); - -if ($this->shouldCache($identifier)) { -$this->cache->write($identifier, JsonFile::encode($composer, 0)); -} - -$this->infoCache[$identifier] = $composer; -} - -return $this->infoCache[$identifier]; -} - - - - -protected function getBaseComposerInformation(string $identifier): ?array -{ -$composerFileContent = $this->getFileContent('composer.json', $identifier); - -if (!$composerFileContent) { -return null; -} - -$composer = JsonFile::parseJson($composerFileContent, $identifier . ':composer.json'); - -if ([] === $composer || !is_array($composer)) { -return null; -} - -if (empty($composer['time']) && null !== ($changeDate = $this->getChangeDate($identifier))) { -$composer['time'] = $changeDate->format(DATE_RFC3339); -} - -return $composer; -} - - - - -public function hasComposerFile(string $identifier): bool -{ -try { -return null !== $this->getComposerInformation($identifier); -} catch (TransportException $e) { -} - -return false; -} - - - - - - - - -protected function getScheme(): string -{ -if (extension_loaded('openssl')) { -return 'https'; -} - -return 'http'; -} - - - - - - - - -protected function getContents(string $url): Response -{ -$options = $this->repoConfig['options'] ?? []; - -return $this->httpDownloader->get($url, $options); -} - - - - -public function cleanup(): void -{ -} -} diff --git a/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php b/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php deleted file mode 100644 index d66df8b4b..000000000 --- a/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php +++ /dev/null @@ -1,110 +0,0 @@ -drivers = $drivers ?: [ -'github' => 'Composer\Repository\Vcs\GitHubDriver', -'gitlab' => 'Composer\Repository\Vcs\GitLabDriver', -'bitbucket' => 'Composer\Repository\Vcs\GitBitbucketDriver', -'git-bitbucket' => 'Composer\Repository\Vcs\GitBitbucketDriver', -'git' => 'Composer\Repository\Vcs\GitDriver', -'hg' => 'Composer\Repository\Vcs\HgDriver', -'perforce' => 'Composer\Repository\Vcs\PerforceDriver', -'fossil' => 'Composer\Repository\Vcs\FossilDriver', - -'svn' => 'Composer\Repository\Vcs\SvnDriver', -]; - -$this->url = $repoConfig['url']; -$this->io = $io; -$this->type = $repoConfig['type'] ?? 'vcs'; -$this->isVerbose = $io->isVerbose(); -$this->isVeryVerbose = $io->isVeryVerbose(); -$this->config = $config; -$this->repoConfig = $repoConfig; -$this->versionCache = $versionCache; -$this->httpDownloader = $httpDownloader; -$this->processExecutor = $process ?? new ProcessExecutor($io); -} - -public function getRepoName() -{ -$driverClass = get_class($this->getDriver()); -$driverType = array_search($driverClass, $this->drivers); -if (!$driverType) { -$driverType = $driverClass; -} - -return 'vcs repo ('.$driverType.' '.Url::sanitize($this->url).')'; -} - -public function getRepoConfig() -{ -return $this->repoConfig; -} - -public function setLoader(LoaderInterface $loader): void -{ -$this->loader = $loader; -} - -public function getDriver(): ?VcsDriverInterface -{ -if ($this->driver) { -return $this->driver; -} - -if (isset($this->drivers[$this->type])) { -$class = $this->drivers[$this->type]; -$this->driver = new $class($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); -$this->driver->initialize(); - -return $this->driver; -} - -foreach ($this->drivers as $driver) { -if ($driver::supports($this->io, $this->config, $this->url)) { -$this->driver = new $driver($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); -$this->driver->initialize(); - -return $this->driver; -} -} - -foreach ($this->drivers as $driver) { -if ($driver::supports($this->io, $this->config, $this->url, true)) { -$this->driver = new $driver($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); -$this->driver->initialize(); - -return $this->driver; -} -} - -return null; -} - -public function hadInvalidBranches(): bool -{ -return $this->branchErrorOccurred; -} - - - - -public function getEmptyReferences(): array -{ -return $this->emptyReferences; -} - - - - -public function getVersionTransportExceptions(): array -{ -return $this->versionTransportExceptions; -} - -protected function initialize() -{ -parent::initialize(); - -$isVerbose = $this->isVerbose; -$isVeryVerbose = $this->isVeryVerbose; - -$driver = $this->getDriver(); -if (!$driver) { -throw new \InvalidArgumentException('No driver found to handle VCS repository '.$this->url); -} - -$this->versionParser = new VersionParser; -if (!$this->loader) { -$this->loader = new ArrayLoader($this->versionParser); -} - -$hasRootIdentifierComposerJson = false; -try { -$hasRootIdentifierComposerJson = $driver->hasComposerFile($driver->getRootIdentifier()); -if ($hasRootIdentifierComposerJson) { -$data = $driver->getComposerInformation($driver->getRootIdentifier()); -$this->packageName = !empty($data['name']) ? $data['name'] : null; -} -} catch (\Exception $e) { -if ($e instanceof TransportException && $this->shouldRethrowTransportException($e)) { -throw $e; -} - -if ($isVeryVerbose) { -$this->io->writeError('Skipped parsing '.$driver->getRootIdentifier().', '.$e->getMessage().''); -} -} - -foreach ($driver->getTags() as $tag => $identifier) { -$tag = (string) $tag; -$msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $tag . ')'; -if ($isVeryVerbose) { -$this->io->writeError($msg); -} elseif ($isVerbose) { -$this->io->overwriteError($msg, false); -} - - -$tag = str_replace('release-', '', $tag); - -$cachedPackage = $this->getCachedPackageVersion($tag, $identifier, $isVerbose, $isVeryVerbose); -if ($cachedPackage) { -$this->addPackage($cachedPackage); - -continue; -} -if ($cachedPackage === false) { -$this->emptyReferences[] = $identifier; - -continue; -} - -if (!$parsedTag = $this->validateTag($tag)) { -if ($isVeryVerbose) { -$this->io->writeError('Skipped tag '.$tag.', invalid tag name'); -} -continue; -} - -try { -$data = $driver->getComposerInformation($identifier); -if (null === $data) { -if ($isVeryVerbose) { -$this->io->writeError('Skipped tag '.$tag.', no composer file'); -} -$this->emptyReferences[] = $identifier; -continue; -} - - -if (isset($data['version'])) { -$data['version_normalized'] = $this->versionParser->normalize($data['version']); -} else { - -$data['version'] = $tag; -$data['version_normalized'] = $parsedTag; -} - - -$data['version'] = Preg::replace('{[.-]?dev$}i', '', $data['version']); -$data['version_normalized'] = Preg::replace('{(^dev-|[.-]?dev$)}i', '', $data['version_normalized']); - - -unset($data['default-branch']); - - -if ($data['version_normalized'] !== $parsedTag) { -if ($isVeryVerbose) { -if (Preg::isMatch('{(^dev-|[.-]?dev$)}i', $parsedTag)) { -$this->io->writeError('Skipped tag '.$tag.', invalid tag name, tags can not use dev prefixes or suffixes'); -} else { -$this->io->writeError('Skipped tag '.$tag.', tag ('.$parsedTag.') does not match version ('.$data['version_normalized'].') in composer.json'); -} -} -continue; -} - -$tagPackageName = $this->packageName ?: ($data['name'] ?? ''); -if ($existingPackage = $this->findPackage($tagPackageName, $data['version_normalized'])) { -if ($isVeryVerbose) { -$this->io->writeError('Skipped tag '.$tag.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$data['version_normalized'].' internally'); -} -continue; -} - -if ($isVeryVerbose) { -$this->io->writeError('Importing tag '.$tag.' ('.$data['version_normalized'].')'); -} - -$this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier))); -} catch (\Exception $e) { -if ($e instanceof TransportException) { -$this->versionTransportExceptions['tags'][$tag] = $e; -if ($e->getCode() === 404) { -$this->emptyReferences[] = $identifier; -} -if ($this->shouldRethrowTransportException($e)) { -throw $e; -} -} -if ($isVeryVerbose) { -$this->io->writeError('Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found (' . $e->getCode() . ' HTTP status code)' : $e->getMessage()).''); -} -continue; -} -} - -if (!$isVeryVerbose) { -$this->io->overwriteError('', false); -} - -$branches = $driver->getBranches(); - -if ($hasRootIdentifierComposerJson && isset($branches[$driver->getRootIdentifier()])) { -$branches = [$driver->getRootIdentifier() => $branches[$driver->getRootIdentifier()]] + $branches; -} - -foreach ($branches as $branch => $identifier) { -$branch = (string) $branch; -$msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $branch . ')'; -if ($isVeryVerbose) { -$this->io->writeError($msg); -} elseif ($isVerbose) { -$this->io->overwriteError($msg, false); -} - -if (!$parsedBranch = $this->validateBranch($branch)) { -if ($isVeryVerbose) { -$this->io->writeError('Skipped branch '.$branch.', invalid name'); -} -continue; -} - - -if (strpos($parsedBranch, 'dev-') === 0 || VersionParser::DEFAULT_BRANCH_ALIAS === $parsedBranch) { -$version = 'dev-' . $branch; -} else { -$prefix = strpos($branch, 'v') === 0 ? 'v' : ''; -$version = $prefix . Preg::replace('{(\.9{7})+}', '.x', $parsedBranch); -} - -$cachedPackage = $this->getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose, $driver->getRootIdentifier() === $branch); -if ($cachedPackage) { -$this->addPackage($cachedPackage); - -continue; -} -if ($cachedPackage === false) { -$this->emptyReferences[] = $identifier; - -continue; -} - -try { -$data = $driver->getComposerInformation($identifier); -if (null === $data) { -if ($isVeryVerbose) { -$this->io->writeError('Skipped branch '.$branch.', no composer file'); -} -$this->emptyReferences[] = $identifier; -continue; -} - - -$data['version'] = $version; -$data['version_normalized'] = $parsedBranch; - -unset($data['default-branch']); -if ($driver->getRootIdentifier() === $branch) { -$data['default-branch'] = true; -} - -if ($isVeryVerbose) { -$this->io->writeError('Importing branch '.$branch.' ('.$data['version'].')'); -} - -$packageData = $this->preProcess($driver, $data, $identifier); -$package = $this->loader->load($packageData); -if ($this->loader instanceof ValidatingArrayLoader && \count($this->loader->getWarnings()) > 0) { -throw new InvalidPackageException($this->loader->getErrors(), $this->loader->getWarnings(), $packageData); -} -$this->addPackage($package); -} catch (TransportException $e) { -$this->versionTransportExceptions['branches'][$branch] = $e; -if ($e->getCode() === 404) { -$this->emptyReferences[] = $identifier; -} -if ($this->shouldRethrowTransportException($e)) { -throw $e; -} -if ($isVeryVerbose) { -$this->io->writeError('Skipped branch '.$branch.', no composer file was found (' . $e->getCode() . ' HTTP status code)'); -} -continue; -} catch (\Exception $e) { -if (!$isVeryVerbose) { -$this->io->writeError(''); -} -$this->branchErrorOccurred = true; -$this->io->writeError('Skipped branch '.$branch.', '.$e->getMessage().''); -$this->io->writeError(''); -continue; -} -} -$driver->cleanup(); - -if (!$isVeryVerbose) { -$this->io->overwriteError('', false); -} - -if (!$this->getPackages()) { -throw new InvalidRepositoryException('No valid composer.json was found in any branch or tag of '.$this->url.', could not load a package from it.'); -} -} - - - - - - -protected function preProcess(VcsDriverInterface $driver, array $data, string $identifier): array -{ - - - -$dataPackageName = $data['name'] ?? null; -$data['name'] = $this->packageName ?: $dataPackageName; - -if (!isset($data['dist'])) { -$data['dist'] = $driver->getDist($identifier); -} -if (!isset($data['source'])) { -$data['source'] = $driver->getSource($identifier); -} - -return $data; -} - - - - -private function validateBranch(string $branch) -{ -try { -$normalizedBranch = $this->versionParser->normalizeBranch($branch); - - -$this->versionParser->parseConstraints($normalizedBranch); - -return $normalizedBranch; -} catch (\Exception $e) { -} - -return false; -} - - - - -private function validateTag(string $version) -{ -try { -return $this->versionParser->normalize($version); -} catch (\Exception $e) { -} - -return false; -} - - - - -private function getCachedPackageVersion(string $version, string $identifier, bool $isVerbose, bool $isVeryVerbose, bool $isDefaultBranch = false) -{ -if (!$this->versionCache) { -return null; -} - -$cachedPackage = $this->versionCache->getVersionPackage($version, $identifier); -if ($cachedPackage === false) { -if ($isVeryVerbose) { -$this->io->writeError('Skipped '.$version.', no composer file (cached from ref '.$identifier.')'); -} - -return false; -} - -if ($cachedPackage) { -$msg = 'Found cached composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $version . ')'; -if ($isVeryVerbose) { -$this->io->writeError($msg); -} elseif ($isVerbose) { -$this->io->overwriteError($msg, false); -} - -unset($cachedPackage['default-branch']); -if ($isDefaultBranch) { -$cachedPackage['default-branch'] = true; -} - -if ($existingPackage = $this->findPackage($cachedPackage['name'], new Constraint('=', $cachedPackage['version_normalized']))) { -if ($isVeryVerbose) { -$this->io->writeError('Skipped cached version '.$version.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$cachedPackage['version_normalized'].' internally'); -} -$cachedPackage = null; -} -} - -if ($cachedPackage) { -return $this->loader->load($cachedPackage); -} - -return null; -} - -private function shouldRethrowTransportException(TransportException $e): bool -{ -return in_array($e->getCode(), [401, 403, 429], true) || $e->getCode() >= 500; -} -} diff --git a/composer/src/Composer/Repository/VersionCacheInterface.php b/composer/src/Composer/Repository/VersionCacheInterface.php deleted file mode 100644 index e26591d96..000000000 --- a/composer/src/Composer/Repository/VersionCacheInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -devMode; -} - - - - -public function setDevPackageNames(array $devPackageNames) -{ -$this->devPackageNames = $devPackageNames; -} - - - - -public function getDevPackageNames() -{ -return $this->devPackageNames; -} - - - - -public function write(bool $devMode, InstallationManager $installationManager) -{ -$this->devMode = $devMode; -} - - - - -public function reload() -{ -$this->devMode = null; -} -} diff --git a/composer/src/Composer/Repository/WritableRepositoryInterface.php b/composer/src/Composer/Repository/WritableRepositoryInterface.php deleted file mode 100644 index 4a0cd8e49..000000000 --- a/composer/src/Composer/Repository/WritableRepositoryInterface.php +++ /dev/null @@ -1,73 +0,0 @@ -composer = $composer; -$this->io = $io; -$this->devMode = $devMode; -} - - - - -public function getComposer(): Composer -{ -return $this->composer; -} - - - - -public function getIO(): IOInterface -{ -return $this->io; -} - - - - -public function isDevMode(): bool -{ -return $this->devMode; -} - - - - - - -public function getOriginatingEvent(): ?BaseEvent -{ -return $this->originatingEvent; -} - - - - - - -public function setOriginatingEvent(BaseEvent $event): self -{ -$this->originatingEvent = $this->calculateOriginatingEvent($event); - -return $this; -} - - - - -private function calculateOriginatingEvent(BaseEvent $event): BaseEvent -{ -if ($event instanceof Event && $event->getOriginatingEvent()) { -return $this->calculateOriginatingEvent($event->getOriginatingEvent()); -} - -return $event; -} -} diff --git a/composer/src/Composer/Script/ScriptEvents.php b/composer/src/Composer/Script/ScriptEvents.php deleted file mode 100644 index dfe1e7485..000000000 --- a/composer/src/Composer/Script/ScriptEvents.php +++ /dev/null @@ -1,131 +0,0 @@ -httpDownloader = $httpDownloader; -$this->config = $config; -} - -public function getChannel(): string -{ -if ($this->channel) { -return $this->channel; -} - -$channelFile = $this->config->get('home').'/update-channel'; -if (file_exists($channelFile)) { -$channel = trim(file_get_contents($channelFile)); -if (in_array($channel, ['stable', 'preview', 'snapshot', '2.2'], true)) { -return $this->channel = $channel; -} -} - -return $this->channel = 'stable'; -} - -public function setChannel(string $channel, ?IOInterface $io = null): void -{ -if (!in_array($channel, self::$channels, true)) { -throw new \InvalidArgumentException('Invalid channel '.$channel.', must be one of: ' . implode(', ', self::$channels)); -} - -$channelFile = $this->config->get('home').'/update-channel'; -$this->channel = $channel; - - -$storedChannel = Preg::isMatch('{^\d+$}D', $channel) ? 'stable' : $channel; -$previouslyStored = file_exists($channelFile) ? trim((string) file_get_contents($channelFile)) : null; -file_put_contents($channelFile, $storedChannel.PHP_EOL); - -if ($io !== null && $previouslyStored !== $storedChannel) { -$io->writeError('Storing "'.$storedChannel.'" as default update channel for the next self-update run.'); -} -} - - - - -public function getLatest(?string $channel = null): array -{ -$versions = $this->getVersionsData(); - -foreach ($versions[$channel ?: $this->getChannel()] as $version) { -if ($version['min-php'] <= PHP_VERSION_ID) { -return $version; -} -} - -throw new \UnexpectedValueException('There is no version of Composer available for your PHP version ('.PHP_VERSION.')'); -} - - - - -private function getVersionsData(): array -{ -if (null === $this->versionsData) { -if ($this->config->get('disable-tls') === true) { -$protocol = 'http'; -} else { -$protocol = 'https'; -} - -$this->versionsData = $this->httpDownloader->get($protocol . '://getcomposer.org/versions')->decodeJson(); -} - -return $this->versionsData; -} -} diff --git a/composer/src/Composer/Util/AuthHelper.php b/composer/src/Composer/Util/AuthHelper.php deleted file mode 100644 index 782cca0e8..000000000 --- a/composer/src/Composer/Util/AuthHelper.php +++ /dev/null @@ -1,300 +0,0 @@ -io = $io; -$this->config = $config; -} - - - - -public function storeAuth(string $origin, $storeAuth): void -{ -$store = false; -$configSource = $this->config->getAuthConfigSource(); -if ($storeAuth === true) { -$store = $configSource; -} elseif ($storeAuth === 'prompt') { -$answer = $this->io->askAndValidate( -'Do you want to store credentials for '.$origin.' in '.$configSource->getName().' ? [Yn] ', -static function ($value): string { -$input = strtolower(substr(trim($value), 0, 1)); -if (in_array($input, ['y','n'])) { -return $input; -} -throw new \RuntimeException('Please answer (y)es or (n)o'); -}, -null, -'y' -); - -if ($answer === 'y') { -$store = $configSource; -} -} -if ($store) { -$store->addConfigSetting( -'http-basic.'.$origin, -$this->io->getAuthentication($origin) -); -} -} - - - - - - - - - - -public function promptAuthIfNeeded(string $url, string $origin, int $statusCode, ?string $reason = null, array $headers = [], int $retryCount = 0): array -{ -$storeAuth = false; - -if (in_array($origin, $this->config->get('github-domains'), true)) { -$gitHubUtil = new GitHub($this->io, $this->config, null); -$message = "\n"; - -$rateLimited = $gitHubUtil->isRateLimited($headers); -$requiresSso = $gitHubUtil->requiresSso($headers); - -if ($requiresSso) { -$ssoUrl = $gitHubUtil->getSsoUrl($headers); -$message = 'GitHub API token requires SSO authorization. Authorize this token at ' . $ssoUrl . "\n"; -$this->io->writeError($message); -if (!$this->io->isInteractive()) { -throw new TransportException('Could not authenticate against ' . $origin, 403); -} -$this->io->ask('After authorizing your token, confirm that you would like to retry the request'); - -return ['retry' => true, 'storeAuth' => $storeAuth]; -} - -if ($rateLimited) { -$rateLimit = $gitHubUtil->getRateLimit($headers); -if ($this->io->hasAuthentication($origin)) { -$message = 'Review your configured GitHub OAuth token or enter a new one to go over the API rate limit.'; -} else { -$message = 'Create a GitHub OAuth token to go over the API rate limit.'; -} - -$message = sprintf( -'GitHub API limit (%d calls/hr) is exhausted, could not fetch '.$url.'. '.$message.' You can also wait until %s for the rate limit to reset.', -$rateLimit['limit'], -$rateLimit['reset'] -)."\n"; -} else { -$message .= 'Could not fetch '.$url.', please '; -if ($this->io->hasAuthentication($origin)) { -$message .= 'review your configured GitHub OAuth token or enter a new one to access private repos'; -} else { -$message .= 'create a GitHub OAuth token to access private repos'; -} -} - -if (!$gitHubUtil->authorizeOAuth($origin) -&& (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively($origin, $message)) -) { -throw new TransportException('Could not authenticate against '.$origin, 401); -} -} elseif (in_array($origin, $this->config->get('gitlab-domains'), true)) { -$message = "\n".'Could not fetch '.$url.', enter your ' . $origin . ' credentials ' .($statusCode === 401 ? 'to access private repos' : 'to go over the API rate limit'); -$gitLabUtil = new GitLab($this->io, $this->config, null); - -$auth = null; -if ($this->io->hasAuthentication($origin)) { -$auth = $this->io->getAuthentication($origin); -if (in_array($auth['password'], ['gitlab-ci-token', 'private-token', 'oauth2'], true)) { -throw new TransportException("Invalid credentials for '" . $url . "', aborting.", $statusCode); -} -} - -if (!$gitLabUtil->authorizeOAuth($origin) -&& (!$this->io->isInteractive() || !$gitLabUtil->authorizeOAuthInteractively(parse_url($url, PHP_URL_SCHEME), $origin, $message)) -) { -throw new TransportException('Could not authenticate against '.$origin, 401); -} - -if ($auth !== null && $this->io->hasAuthentication($origin)) { -if ($auth === $this->io->getAuthentication($origin)) { -throw new TransportException("Invalid credentials for '" . $url . "', aborting.", $statusCode); -} -} -} elseif ($origin === 'bitbucket.org' || $origin === 'api.bitbucket.org') { -$askForOAuthToken = true; -$origin = 'bitbucket.org'; -if ($this->io->hasAuthentication($origin)) { -$auth = $this->io->getAuthentication($origin); -if ($auth['username'] !== 'x-token-auth') { -$bitbucketUtil = new Bitbucket($this->io, $this->config); -$accessToken = $bitbucketUtil->requestToken($origin, $auth['username'], $auth['password']); -if (!empty($accessToken)) { -$this->io->setAuthentication($origin, 'x-token-auth', $accessToken); -$askForOAuthToken = false; -} -} else { -throw new TransportException('Could not authenticate against ' . $origin, 401); -} -} - -if ($askForOAuthToken) { -$message = "\n".'Could not fetch ' . $url . ', please create a bitbucket OAuth token to ' . (($statusCode === 401 || $statusCode === 403) ? 'access private repos' : 'go over the API rate limit'); -$bitBucketUtil = new Bitbucket($this->io, $this->config); -if (!$bitBucketUtil->authorizeOAuth($origin) -&& (!$this->io->isInteractive() || !$bitBucketUtil->authorizeOAuthInteractively($origin, $message)) -) { -throw new TransportException('Could not authenticate against ' . $origin, 401); -} -} -} else { - -if ($statusCode === 404) { -return ['retry' => false, 'storeAuth' => false]; -} - - -if (!$this->io->isInteractive()) { -if ($statusCode === 401) { -$message = "The '" . $url . "' URL required authentication (HTTP 401).\nYou must be using the interactive console to authenticate"; -} elseif ($statusCode === 403) { -$message = "The '" . $url . "' URL could not be accessed (HTTP 403): " . $reason; -} else { -$message = "Unknown error code '" . $statusCode . "', reason: " . $reason; -} - -throw new TransportException($message, $statusCode); -} - - -if ($this->io->hasAuthentication($origin)) { - - -if ($retryCount === 0) { -return ['retry' => true, 'storeAuth' => false]; -} - -throw new TransportException("Invalid credentials (HTTP $statusCode) for '$url', aborting.", $statusCode); -} - -$this->io->writeError(' Authentication required ('.$origin.'):'); -$username = $this->io->ask(' Username: '); -$password = $this->io->askAndHideAnswer(' Password: '); -$this->io->setAuthentication($origin, $username, $password); -$storeAuth = $this->config->get('store-auths'); -} - -return ['retry' => true, 'storeAuth' => $storeAuth]; -} - - - - - - -public function addAuthenticationHeader(array $headers, string $origin, string $url): array -{ -if ($this->io->hasAuthentication($origin)) { -$authenticationDisplayMessage = null; -$auth = $this->io->getAuthentication($origin); -if ($auth['password'] === 'bearer') { -$headers[] = 'Authorization: Bearer '.$auth['username']; -} elseif ('github.com' === $origin && 'x-oauth-basic' === $auth['password']) { - -if (Preg::isMatch('{^https?://api\.github\.com/}', $url)) { -$headers[] = 'Authorization: token '.$auth['username']; -$authenticationDisplayMessage = 'Using GitHub token authentication'; -} -} elseif ( -in_array($origin, $this->config->get('gitlab-domains'), true) -&& in_array($auth['password'], ['oauth2', 'private-token', 'gitlab-ci-token'], true) -) { -if ($auth['password'] === 'oauth2') { -$headers[] = 'Authorization: Bearer '.$auth['username']; -$authenticationDisplayMessage = 'Using GitLab OAuth token authentication'; -} else { -$headers[] = 'PRIVATE-TOKEN: '.$auth['username']; -$authenticationDisplayMessage = 'Using GitLab private token authentication'; -} -} elseif ( -'bitbucket.org' === $origin -&& $url !== Bitbucket::OAUTH2_ACCESS_TOKEN_URL -&& 'x-token-auth' === $auth['username'] -) { -if (!$this->isPublicBitBucketDownload($url)) { -$headers[] = 'Authorization: Bearer ' . $auth['password']; -$authenticationDisplayMessage = 'Using Bitbucket OAuth token authentication'; -} -} else { -$authStr = base64_encode($auth['username'] . ':' . $auth['password']); -$headers[] = 'Authorization: Basic '.$authStr; -$authenticationDisplayMessage = 'Using HTTP basic authentication with username "' . $auth['username'] . '"'; -} - -if ($authenticationDisplayMessage && (!isset($this->displayedOriginAuthentications[$origin]) || $this->displayedOriginAuthentications[$origin] !== $authenticationDisplayMessage)) { -$this->io->writeError($authenticationDisplayMessage, true, IOInterface::DEBUG); -$this->displayedOriginAuthentications[$origin] = $authenticationDisplayMessage; -} -} elseif (in_array($origin, ['api.bitbucket.org', 'api.github.com'], true)) { -return $this->addAuthenticationHeader($headers, str_replace('api.', '', $origin), $url); -} - -return $headers; -} - - - - - - - - -public function isPublicBitBucketDownload(string $urlToBitBucketFile): bool -{ -$domain = parse_url($urlToBitBucketFile, PHP_URL_HOST); -if (strpos($domain, 'bitbucket.org') === false) { - - -return true; -} - -$path = parse_url($urlToBitBucketFile, PHP_URL_PATH); - - - -$pathParts = explode('/', $path); - -return count($pathParts) >= 4 && $pathParts[3] === 'downloads'; -} -} diff --git a/composer/src/Composer/Util/Bitbucket.php b/composer/src/Composer/Util/Bitbucket.php deleted file mode 100644 index 2e7e8aae3..000000000 --- a/composer/src/Composer/Util/Bitbucket.php +++ /dev/null @@ -1,256 +0,0 @@ -io = $io; -$this->config = $config; -$this->process = $process ?: new ProcessExecutor($io); -$this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); -$this->time = $time; -} - -public function getToken(): string -{ -if (!isset($this->token['access_token'])) { -return ''; -} - -return $this->token['access_token']; -} - - - - - - - -public function authorizeOAuth(string $originUrl): bool -{ -if ($originUrl !== 'bitbucket.org') { -return false; -} - - -if (0 === $this->process->execute('git config bitbucket.accesstoken', $output)) { -$this->io->setAuthentication($originUrl, 'x-token-auth', trim($output)); - -return true; -} - -return false; -} - -private function requestAccessToken(): bool -{ -try { -$response = $this->httpDownloader->get(self::OAUTH2_ACCESS_TOKEN_URL, [ -'retry-auth-failure' => false, -'http' => [ -'method' => 'POST', -'content' => 'grant_type=client_credentials', -], -]); - -$token = $response->decodeJson(); -if (!isset($token['expires_in']) || !isset($token['access_token'])) { -throw new \LogicException('Expected a token configured with expires_in and access_token present, got '.json_encode($token)); -} - -$this->token = $token; -} catch (TransportException $e) { -if ($e->getCode() === 400) { -$this->io->writeError('Invalid OAuth consumer provided.'); -$this->io->writeError('This can have three reasons:'); -$this->io->writeError('1. You are authenticating with a bitbucket username/password combination'); -$this->io->writeError('2. You are using an OAuth consumer, but didn\'t configure a (dummy) callback url'); -$this->io->writeError('3. You are using an OAuth consumer, but didn\'t configure it as private consumer'); - -return false; -} -if (in_array($e->getCode(), [403, 401])) { -$this->io->writeError('Invalid OAuth consumer provided.'); -$this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); - -return false; -} - -throw $e; -} - -return true; -} - - - - - - - - - - -public function authorizeOAuthInteractively(string $originUrl, ?string $message = null): bool -{ -if ($message) { -$this->io->writeError($message); -} - -$localAuthConfig = $this->config->getLocalAuthConfigSource(); -$url = 'https://support.atlassian.com/bitbucket-cloud/docs/use-oauth-on-bitbucket-cloud/'; -$this->io->writeError(sprintf('Follow the instructions on %s', $url)); -$this->io->writeError(sprintf('to create a consumer. It will be stored in "%s" for future use by Composer.', ($localAuthConfig !== null ? $localAuthConfig->getName() . ' OR ' : '') . $this->config->getAuthConfigSource()->getName())); -$this->io->writeError('Ensure you enter a "Callback URL" (http://example.com is fine) or it will not be possible to create an Access Token (this callback url will not be used by composer)'); - -$storeInLocalAuthConfig = false; -if ($localAuthConfig !== null) { -$storeInLocalAuthConfig = $this->io->askConfirmation('A local auth config source was found, do you want to store the token there?', true); -} - -$consumerKey = trim((string) $this->io->askAndHideAnswer('Consumer Key (hidden): ')); - -if (!$consumerKey) { -$this->io->writeError('No consumer key given, aborting.'); -$this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); - -return false; -} - -$consumerSecret = trim((string) $this->io->askAndHideAnswer('Consumer Secret (hidden): ')); - -if (!$consumerSecret) { -$this->io->writeError('No consumer secret given, aborting.'); -$this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); - -return false; -} - -$this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); - -if (!$this->requestAccessToken()) { -return false; -} - - -$authConfigSource = $storeInLocalAuthConfig && $localAuthConfig !== null ? $localAuthConfig : $this->config->getAuthConfigSource(); -$this->storeInAuthConfig($authConfigSource, $originUrl, $consumerKey, $consumerSecret); - - -$this->config->getAuthConfigSource()->removeConfigSetting('http-basic.' . $originUrl); - -$this->io->writeError('Consumer stored successfully.'); - -return true; -} - - - - -public function requestToken(string $originUrl, string $consumerKey, string $consumerSecret): string -{ -if ($this->token !== null || $this->getTokenFromConfig($originUrl)) { -return $this->token['access_token']; -} - -$this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); -if (!$this->requestAccessToken()) { -return ''; -} - -$this->storeInAuthConfig($this->config->getLocalAuthConfigSource() ?? $this->config->getAuthConfigSource(), $originUrl, $consumerKey, $consumerSecret); - -if (!isset($this->token['access_token'])) { -throw new \LogicException('Failed to initialize token above'); -} - -return $this->token['access_token']; -} - - - - -private function storeInAuthConfig(Config\ConfigSourceInterface $authConfigSource, string $originUrl, string $consumerKey, string $consumerSecret): void -{ -$this->config->getConfigSource()->removeConfigSetting('bitbucket-oauth.'.$originUrl); - -if (null === $this->token || !isset($this->token['expires_in'])) { -throw new \LogicException('Expected a token configured with expires_in present, got '.json_encode($this->token)); -} - -$time = null === $this->time ? time() : $this->time; -$consumer = [ -"consumer-key" => $consumerKey, -"consumer-secret" => $consumerSecret, -"access-token" => $this->token['access_token'], -"access-token-expiration" => $time + $this->token['expires_in'], -]; - -$this->config->getAuthConfigSource()->addConfigSetting('bitbucket-oauth.'.$originUrl, $consumer); -} - - - - -private function getTokenFromConfig(string $originUrl): bool -{ -$authConfig = $this->config->get('bitbucket-oauth'); - -if ( -!isset($authConfig[$originUrl]['access-token'], $authConfig[$originUrl]['access-token-expiration']) -|| time() > $authConfig[$originUrl]['access-token-expiration'] -) { -return false; -} - -$this->token = [ -'access_token' => $authConfig[$originUrl]['access-token'], -]; - -return true; -} -} diff --git a/composer/src/Composer/Util/ComposerMirror.php b/composer/src/Composer/Util/ComposerMirror.php deleted file mode 100644 index 930cced24..000000000 --- a/composer/src/Composer/Util/ComposerMirror.php +++ /dev/null @@ -1,77 +0,0 @@ -io = $io; -} - - - - - - - - - - -public function validate(string $file, int $arrayLoaderValidationFlags = ValidatingArrayLoader::CHECK_ALL, int $flags = self::CHECK_VERSION): array -{ -$errors = []; -$publishErrors = []; -$warnings = []; - - -$laxValid = false; -$manifest = null; -try { -$json = new JsonFile($file, null, $this->io); -$manifest = $json->read(); - -$json->validateSchema(JsonFile::LAX_SCHEMA); -$laxValid = true; -$json->validateSchema(); -} catch (JsonValidationException $e) { -foreach ($e->getErrors() as $message) { -if ($laxValid) { -$publishErrors[] = $message; -} else { -$errors[] = $message; -} -} -} catch (\Exception $e) { -$errors[] = $e->getMessage(); - -return [$errors, $publishErrors, $warnings]; -} - -if (is_array($manifest)) { -$jsonParser = new JsonParser(); -try { -$jsonParser->parse((string) file_get_contents($file), JsonParser::DETECT_KEY_CONFLICTS); -} catch (DuplicateKeyException $e) { -$details = $e->getDetails(); -$warnings[] = 'Key '.$details['key'].' is a duplicate in '.$file.' at line '.$details['line']; -} -} - - -if (empty($manifest['license'])) { -$warnings[] = 'No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.'; -} else { -$licenses = (array) $manifest['license']; - - -foreach ($licenses as $key => $license) { -if ('proprietary' === $license) { -unset($licenses[$key]); -} -} - -$licenseValidator = new SpdxLicenses(); -foreach ($licenses as $license) { -$spdxLicense = $licenseValidator->getLicenseByIdentifier($license); -if ($spdxLicense && $spdxLicense[3]) { -if (Preg::isMatch('{^[AL]?GPL-[123](\.[01])?\+$}i', $license)) { -$warnings[] = sprintf( -'License "%s" is a deprecated SPDX license identifier, use "'.str_replace('+', '', $license).'-or-later" instead', -$license -); -} elseif (Preg::isMatch('{^[AL]?GPL-[123](\.[01])?$}i', $license)) { -$warnings[] = sprintf( -'License "%s" is a deprecated SPDX license identifier, use "'.$license.'-only" or "'.$license.'-or-later" instead', -$license -); -} else { -$warnings[] = sprintf( -'License "%s" is a deprecated SPDX license identifier, see https://spdx.org/licenses/', -$license -); -} -} -} -} - -if (($flags & self::CHECK_VERSION) && isset($manifest['version'])) { -$warnings[] = 'The version field is present, it is recommended to leave it out if the package is published on Packagist.'; -} - -if (!empty($manifest['name']) && Preg::isMatch('{[A-Z]}', $manifest['name'])) { -$suggestName = Preg::replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $manifest['name']); -$suggestName = strtolower($suggestName); - -$publishErrors[] = sprintf( -'Name "%s" does not match the best practice (e.g. lower-cased/with-dashes). We suggest using "%s" instead. As such you will not be able to submit it to Packagist.', -$manifest['name'], -$suggestName -); -} - -if (!empty($manifest['type']) && $manifest['type'] === 'composer-installer') { -$warnings[] = "The package type 'composer-installer' is deprecated. Please distribute your custom installers as plugins from now on. See https://getcomposer.org/doc/articles/plugins.md for plugin documentation."; -} - - -if (isset($manifest['require'], $manifest['require-dev'])) { -$requireOverrides = array_intersect_key($manifest['require'], $manifest['require-dev']); - -if (!empty($requireOverrides)) { -$plural = (count($requireOverrides) > 1) ? 'are' : 'is'; -$warnings[] = implode(', ', array_keys($requireOverrides)). " {$plural} required both in require and require-dev, this can lead to unexpected behavior"; -} -} - - -foreach (['provide', 'replace'] as $linkType) { -if (isset($manifest[$linkType])) { -foreach (['require', 'require-dev'] as $requireType) { -if (isset($manifest[$requireType])) { -foreach ($manifest[$linkType] as $provide => $constraint) { -if (isset($manifest[$requireType][$provide])) { -$warnings[] = 'The package ' . $provide . ' in '.$requireType.' is also listed in '.$linkType.' which satisfies the requirement. Remove it from '.$linkType.' if you wish to install it.'; -} -} -} -} -} -} - - -$require = $manifest['require'] ?? []; -$requireDev = $manifest['require-dev'] ?? []; -$packages = array_merge($require, $requireDev); -foreach ($packages as $package => $version) { -if (Preg::isMatch('/#/', $version)) { -$warnings[] = sprintf( -'The package "%s" is pointing to a commit-ref, this is bad practice and can cause unforeseen issues.', -$package -); -} -} - - -$scriptsDescriptions = $manifest['scripts-descriptions'] ?? []; -$scripts = $manifest['scripts'] ?? []; -foreach ($scriptsDescriptions as $scriptName => $scriptDescription) { -if (!array_key_exists($scriptName, $scripts)) { -$warnings[] = sprintf( -'Description for non-existent script "%s" found in "scripts-descriptions"', -$scriptName -); -} -} - - -if (isset($manifest['autoload']['psr-0'][''])) { -$warnings[] = "Defining autoload.psr-0 with an empty namespace prefix is a bad idea for performance"; -} -if (isset($manifest['autoload']['psr-4'][''])) { -$warnings[] = "Defining autoload.psr-4 with an empty namespace prefix is a bad idea for performance"; -} - -$loader = new ValidatingArrayLoader(new ArrayLoader(), true, null, $arrayLoaderValidationFlags); -try { -if (!isset($manifest['version'])) { -$manifest['version'] = '1.0.0'; -} -if (!isset($manifest['name'])) { -$manifest['name'] = 'dummy/dummy'; -} -$loader->load($manifest); -} catch (InvalidPackageException $e) { -$errors = array_merge($errors, $e->getErrors()); -} - -$warnings = array_merge($warnings, $loader->getWarnings()); - -return [$errors, $publishErrors, $warnings]; -} -} diff --git a/composer/src/Composer/Util/ErrorHandler.php b/composer/src/Composer/Util/ErrorHandler.php deleted file mode 100644 index bac49b0d4..000000000 --- a/composer/src/Composer/Util/ErrorHandler.php +++ /dev/null @@ -1,82 +0,0 @@ -writeError('Deprecation Notice: '.$message.' in '.$file.':'.$line.''); -if (self::$io->isVerbose()) { -self::$io->writeError('Stack trace:'); -self::$io->writeError(array_filter(array_map(static function ($a): ?string { -if (isset($a['line'], $a['file'])) { -return ' '.$a['file'].':'.$a['line'].''; -} - -return null; -}, array_slice(debug_backtrace(), 2)))); -} -} - -return true; -} - - - - -public static function register(?IOInterface $io = null): void -{ -set_error_handler([__CLASS__, 'handle']); -error_reporting(E_ALL | E_STRICT); -self::$io = $io; -} -} diff --git a/composer/src/Composer/Util/Filesystem.php b/composer/src/Composer/Util/Filesystem.php deleted file mode 100644 index 33c21487a..000000000 --- a/composer/src/Composer/Util/Filesystem.php +++ /dev/null @@ -1,917 +0,0 @@ -processExecutor = $executor; -} - - - - -public function remove(string $file) -{ -if (is_dir($file)) { -return $this->removeDirectory($file); -} - -if (file_exists($file)) { -return $this->unlink($file); -} - -return false; -} - - - - - - -public function isDirEmpty(string $dir) -{ -$finder = Finder::create() -->ignoreVCS(false) -->ignoreDotFiles(false) -->depth(0) -->in($dir); - -return \count($finder) === 0; -} - - - - -public function emptyDirectory(string $dir, bool $ensureDirectoryExists = true) -{ -if (is_link($dir) && file_exists($dir)) { -$this->unlink($dir); -} - -if ($ensureDirectoryExists) { -$this->ensureDirectoryExists($dir); -} - -if (is_dir($dir)) { -$finder = Finder::create() -->ignoreVCS(false) -->ignoreDotFiles(false) -->depth(0) -->in($dir); - -foreach ($finder as $path) { -$this->remove((string) $path); -} -} -} - - - - - - - - - - -public function removeDirectory(string $directory) -{ -$edgeCaseResult = $this->removeEdgeCases($directory); -if ($edgeCaseResult !== null) { -return $edgeCaseResult; -} - -if (Platform::isWindows()) { -$cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape(realpath($directory))); -} else { -$cmd = sprintf('rm -rf %s', ProcessExecutor::escape($directory)); -} - -$result = $this->getProcess()->execute($cmd, $output) === 0; - - -clearstatcache(); - -if ($result && !is_dir($directory)) { -return true; -} - -return $this->removeDirectoryPhp($directory); -} - - - - - - - - - - -public function removeDirectoryAsync(string $directory) -{ -$edgeCaseResult = $this->removeEdgeCases($directory); -if ($edgeCaseResult !== null) { -return \React\Promise\resolve($edgeCaseResult); -} - -if (Platform::isWindows()) { -$cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape(realpath($directory))); -} else { -$cmd = sprintf('rm -rf %s', ProcessExecutor::escape($directory)); -} - -$promise = $this->getProcess()->executeAsync($cmd); - -return $promise->then(function ($process) use ($directory) { - -clearstatcache(); - -if ($process->isSuccessful()) { -if (!is_dir($directory)) { -return \React\Promise\resolve(true); -} -} - -return \React\Promise\resolve($this->removeDirectoryPhp($directory)); -}); -} - - - - -private function removeEdgeCases(string $directory, bool $fallbackToPhp = true): ?bool -{ -if ($this->isSymlinkedDirectory($directory)) { -return $this->unlinkSymlinkedDirectory($directory); -} - -if ($this->isJunction($directory)) { -return $this->removeJunction($directory); -} - -if (is_link($directory)) { -return unlink($directory); -} - -if (!is_dir($directory) || !file_exists($directory)) { -return true; -} - -if (Preg::isMatch('{^(?:[a-z]:)?[/\\\\]+$}i', $directory)) { -throw new \RuntimeException('Aborting an attempted deletion of '.$directory.', this was probably not intended, if it is a real use case please report it.'); -} - -if (!\function_exists('proc_open') && $fallbackToPhp) { -return $this->removeDirectoryPhp($directory); -} - -return null; -} - - - - - - - - - - -public function removeDirectoryPhp(string $directory) -{ -$edgeCaseResult = $this->removeEdgeCases($directory, false); -if ($edgeCaseResult !== null) { -return $edgeCaseResult; -} - -try { -$it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); -} catch (\UnexpectedValueException $e) { - - -clearstatcache(); -usleep(100000); -if (!is_dir($directory)) { -return true; -} -$it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); -} -$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); - -foreach ($ri as $file) { -if ($file->isDir()) { -$this->rmdir($file->getPathname()); -} else { -$this->unlink($file->getPathname()); -} -} - - -unset($ri, $it, $file); - -return $this->rmdir($directory); -} - - - - -public function ensureDirectoryExists(string $directory) -{ -if (!is_dir($directory)) { -if (file_exists($directory)) { -throw new \RuntimeException( -$directory.' exists and is not a directory.' -); -} -if (!@mkdir($directory, 0777, true)) { -throw new \RuntimeException( -$directory.' does not exist and could not be created.' -); -} -} -} - - - - - - - -public function unlink(string $path) -{ -$unlinked = @$this->unlinkImplementation($path); -if (!$unlinked) { - -if (Platform::isWindows()) { -usleep(350000); -$unlinked = @$this->unlinkImplementation($path); -} - -if (!$unlinked) { -$error = error_get_last(); -$message = 'Could not delete '.$path.': ' . ($error['message'] ?? ''); -if (Platform::isWindows()) { -$message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; -} - -throw new \RuntimeException($message); -} -} - -return true; -} - - - - - - - -public function rmdir(string $path) -{ -$deleted = @rmdir($path); -if (!$deleted) { - -if (Platform::isWindows()) { -usleep(350000); -$deleted = @rmdir($path); -} - -if (!$deleted) { -$error = error_get_last(); -$message = 'Could not delete '.$path.': ' . ($error['message'] ?? ''); -if (Platform::isWindows()) { -$message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; -} - -throw new \RuntimeException($message); -} -} - -return true; -} - - - - - - - - - -public function copyThenRemove(string $source, string $target) -{ -$this->copy($source, $target); -if (!is_dir($source)) { -$this->unlink($source); - -return; -} - -$this->removeDirectoryPhp($source); -} - - - - - - -public function copy(string $source, string $target) -{ -if (!is_dir($source)) { -return copy($source, $target); -} - -$it = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS); -$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST); -$this->ensureDirectoryExists($target); - -$result = true; -foreach ($ri as $file) { -$targetPath = $target . DIRECTORY_SEPARATOR . $ri->getSubPathname(); -if ($file->isDir()) { -$this->ensureDirectoryExists($targetPath); -} else { -$result = $result && copy($file->getPathname(), $targetPath); -} -} - -return $result; -} - - - - -public function rename(string $source, string $target) -{ -if (true === @rename($source, $target)) { -return; -} - -if (!\function_exists('proc_open')) { -$this->copyThenRemove($source, $target); - -return; -} - -if (Platform::isWindows()) { - -$command = sprintf('xcopy %s %s /E /I /Q /Y', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); -$result = $this->getProcess()->execute($command, $output); - - -clearstatcache(); - -if (0 === $result) { -$this->remove($source); - -return; -} -} else { - - -$command = sprintf('mv %s %s', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); -$result = $this->getProcess()->execute($command, $output); - - -clearstatcache(); - -if (0 === $result) { -return; -} -} - -$this->copyThenRemove($source, $target); -} - - - - - - - - -public function findShortestPath(string $from, string $to, bool $directories = false) -{ -if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { -throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); -} - -$from = $this->normalizePath($from); -$to = $this->normalizePath($to); - -if ($directories) { -$from = rtrim($from, '/') . '/dummy_file'; -} - -if (\dirname($from) === \dirname($to)) { -return './'.basename($to); -} - -$commonPath = $to; -while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !Preg::isMatch('{^[A-Z]:/?$}i', $commonPath)) { -$commonPath = strtr(\dirname($commonPath), '\\', '/'); -} - - -if (0 !== strpos($from, $commonPath)) { -return $to; -} - -$commonPath = rtrim($commonPath, '/') . '/'; -$sourcePathDepth = substr_count((string) substr($from, \strlen($commonPath)), '/'); -$commonPathCode = str_repeat('../', $sourcePathDepth); - - -if ('/' === $commonPath && $sourcePathDepth > 1) { -return $to; -} - -$result = $commonPathCode . substr($to, \strlen($commonPath)); -if (\strlen($result) === 0) { -return './'; -} - -return $result; -} - - - - - - - - -public function findShortestPathCode(string $from, string $to, bool $directories = false, bool $staticCode = false) -{ -if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { -throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); -} - -$from = $this->normalizePath($from); -$to = $this->normalizePath($to); - -if ($from === $to) { -return $directories ? '__DIR__' : '__FILE__'; -} - -$commonPath = $to; -while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !Preg::isMatch('{^[A-Z]:/?$}i', $commonPath) && '.' !== $commonPath) { -$commonPath = strtr(\dirname($commonPath), '\\', '/'); -} - - -if (0 !== strpos($from, $commonPath) || '.' === $commonPath) { -return var_export($to, true); -} - -$commonPath = rtrim($commonPath, '/') . '/'; -if (str_starts_with($to, $from.'/')) { -return '__DIR__ . '.var_export((string) substr($to, \strlen($from)), true); -} -$sourcePathDepth = substr_count((string) substr($from, \strlen($commonPath)), '/') + (int) $directories; - - -if ('/' === $commonPath && $sourcePathDepth > 1) { -return var_export($to, true); -} - -if ($staticCode) { -$commonPathCode = "__DIR__ . '".str_repeat('/..', $sourcePathDepth)."'"; -} else { -$commonPathCode = str_repeat('dirname(', $sourcePathDepth).'__DIR__'.str_repeat(')', $sourcePathDepth); -} -$relTarget = (string) substr($to, \strlen($commonPath)); - -return $commonPathCode . (\strlen($relTarget) > 0 ? '.' . var_export('/' . $relTarget, true) : ''); -} - - - - - - -public function isAbsolutePath(string $path) -{ -return strpos($path, '/') === 0 || substr($path, 1, 1) === ':' || strpos($path, '\\\\') === 0; -} - - - - - - - - - -public function size(string $path) -{ -if (!file_exists($path)) { -throw new \RuntimeException("$path does not exist."); -} -if (is_dir($path)) { -return $this->directorySize($path); -} - -return (int) filesize($path); -} - - - - - - - - -public function normalizePath(string $path) -{ -$parts = []; -$path = strtr($path, '\\', '/'); -$prefix = ''; -$absolute = ''; - - -if (strpos($path, '//') === 0 && \strlen($path) > 2) { -$absolute = '//'; -$path = substr($path, 2); -} - - -if (Preg::isMatchStrictGroups('{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix', $path, $match)) { -$prefix = $match[1]; -$path = substr($path, \strlen($prefix)); -} - -if (strpos($path, '/') === 0) { -$absolute = '/'; -$path = substr($path, 1); -} - -$up = false; -foreach (explode('/', $path) as $chunk) { -if ('..' === $chunk && (\strlen($absolute) > 0 || $up)) { -array_pop($parts); -$up = !(\count($parts) === 0 || '..' === end($parts)); -} elseif ('.' !== $chunk && '' !== $chunk) { -$parts[] = $chunk; -$up = '..' !== $chunk; -} -} - - -$prefix = Preg::replaceCallback('{(^|://)[a-z]:$}i', static function (array $m) { -assert(is_string($m[0])); -return strtoupper($m[0]); -}, $prefix); - -return $prefix.$absolute.implode('/', $parts); -} - - - - - - - - -public static function trimTrailingSlash(string $path) -{ -if (!Preg::isMatch('{^[/\\\\]+$}', $path)) { -$path = rtrim($path, '/\\'); -} - -return $path; -} - - - - - - -public static function isLocalPath(string $path) -{ -return Preg::isMatch('{^(file://(?!//)|/(?!/)|/?[a-z]:[\\\\/]|\.\.[\\\\/]|[a-z0-9_.-]+[\\\\/])}i', $path); -} - - - - -public static function getPlatformPath(string $path) -{ -if (Platform::isWindows()) { -$path = Preg::replace('{^(?:file:///([a-z]):?/)}i', 'file://$1:/', $path); -} - -return Preg::replace('{^file://}i', '', $path); -} - - - - - - - - - -public static function isReadable(string $path) -{ -if (is_readable($path)) { -return true; -} - -if (is_file($path)) { -return false !== Silencer::call('file_get_contents', $path, false, null, 0, 1); -} - -if (is_dir($path)) { -return false !== Silencer::call('opendir', $path); -} - - -return false; -} - - - - -protected function directorySize(string $directory) -{ -$it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); -$ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); - -$size = 0; -foreach ($ri as $file) { -if ($file->isFile()) { -$size += $file->getSize(); -} -} - -return $size; -} - - - - -protected function getProcess() -{ -if (null === $this->processExecutor) { -$this->processExecutor = new ProcessExecutor(); -} - -return $this->processExecutor; -} - - - - - - -private function unlinkImplementation(string $path): bool -{ -if (Platform::isWindows() && is_dir($path) && is_link($path)) { -return rmdir($path); -} - -return unlink($path); -} - - - - - - - - -public function relativeSymlink(string $target, string $link) -{ -if (!function_exists('symlink')) { -return false; -} - -$cwd = Platform::getCwd(); - -$relativePath = $this->findShortestPath($link, $target); -chdir(\dirname($link)); -$result = @symlink($relativePath, $link); - -chdir($cwd); - -return $result; -} - - - - - - -public function isSymlinkedDirectory(string $directory) -{ -if (!is_dir($directory)) { -return false; -} - -$resolved = $this->resolveSymlinkedDirectorySymlink($directory); - -return is_link($resolved); -} - -private function unlinkSymlinkedDirectory(string $directory): bool -{ -$resolved = $this->resolveSymlinkedDirectorySymlink($directory); - -return $this->unlink($resolved); -} - - - - - - - - -private function resolveSymlinkedDirectorySymlink(string $pathname): string -{ -if (!is_dir($pathname)) { -return $pathname; -} - -$resolved = rtrim($pathname, '/'); - -if (0 === \strlen($resolved)) { -return $pathname; -} - -return $resolved; -} - - - - - - -public function junction(string $target, string $junction) -{ -if (!Platform::isWindows()) { -throw new \LogicException(sprintf('Function %s is not available on non-Windows platform', __CLASS__)); -} -if (!is_dir($target)) { -throw new IOException(sprintf('Cannot junction to "%s" as it is not a directory.', $target), 0, null, $target); -} -$cmd = sprintf( -'mklink /J %s %s', -ProcessExecutor::escape(str_replace('/', DIRECTORY_SEPARATOR, $junction)), -ProcessExecutor::escape(realpath($target)) -); -if ($this->getProcess()->execute($cmd, $output) !== 0) { -throw new IOException(sprintf('Failed to create junction to "%s" at "%s".', $target, $junction), 0, null, $target); -} -clearstatcache(true, $junction); -} - - - - - - - - - - - - - - - - - - - - - -public function isJunction(string $junction) -{ -if (!Platform::isWindows()) { -return false; -} - - -clearstatcache(true, $junction); - -if (!is_dir($junction) || is_link($junction)) { -return false; -} - -$stat = lstat($junction); - - -return is_array($stat) ? 0x4000 !== ($stat['mode'] & 0xF000) : false; -} - - - - - - -public function removeJunction(string $junction) -{ -if (!Platform::isWindows()) { -return false; -} -$junction = rtrim(str_replace('/', DIRECTORY_SEPARATOR, $junction), DIRECTORY_SEPARATOR); -if (!$this->isJunction($junction)) { -throw new IOException(sprintf('%s is not a junction and thus cannot be removed as one', $junction)); -} - -return $this->rmdir($junction); -} - - - - -public function filePutContentsIfModified(string $path, string $content) -{ -$currentContent = Silencer::call('file_get_contents', $path); -if (false === $currentContent || $currentContent !== $content) { -return file_put_contents($path, $content); -} - -return 0; -} - - - - - - -public function safeCopy(string $source, string $target) -{ -if (!file_exists($target) || !file_exists($source) || !$this->filesAreEqual($source, $target)) { -$sourceHandle = fopen($source, 'r'); -assert($sourceHandle !== false, 'Could not open "'.$source.'" for reading.'); -$targetHandle = fopen($target, 'w+'); -assert($targetHandle !== false, 'Could not open "'.$target.'" for writing.'); - -stream_copy_to_stream($sourceHandle, $targetHandle); -fclose($sourceHandle); -fclose($targetHandle); -} -} - - - - - -private function filesAreEqual(string $a, string $b): bool -{ - -if (filesize($a) !== filesize($b)) { -return false; -} - - -$aHandle = fopen($a, 'rb'); -assert($aHandle !== false, 'Could not open "'.$a.'" for reading.'); -$bHandle = fopen($b, 'rb'); -assert($bHandle !== false, 'Could not open "'.$b.'" for reading.'); - -$result = true; -while (!feof($aHandle)) { -if (fread($aHandle, 8192) !== fread($bHandle, 8192)) { -$result = false; -break; -} -} - -fclose($aHandle); -fclose($bHandle); - -return $result; -} -} diff --git a/composer/src/Composer/Util/Git.php b/composer/src/Composer/Util/Git.php deleted file mode 100644 index 8aebeddbe..000000000 --- a/composer/src/Composer/Util/Git.php +++ /dev/null @@ -1,512 +0,0 @@ -io = $io; -$this->config = $config; -$this->process = $process; -$this->filesystem = $fs; -} - - - - - -public function runCommand(callable $commandCallable, string $url, ?string $cwd, bool $initialClone = false, &$commandOutput = null): void -{ - -$this->config->prohibitUrlByConfig($url, $this->io); - -if ($initialClone) { -$origCwd = $cwd; -$cwd = null; -} - -if (Preg::isMatch('{^ssh://[^@]+@[^:]+:[^0-9]+}', $url)) { -throw new \InvalidArgumentException('The source URL ' . $url . ' is invalid, ssh URLs should have a port number after ":".' . "\n" . 'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); -} - -if (!$initialClone) { - -$this->process->execute('git remote -v', $output, $cwd); -if (Preg::isMatchStrictGroups('{^(?:composer|origin)\s+https?://(.+):(.+)@([^/]+)}im', $output, $match) && !$this->io->hasAuthentication($match[3])) { -$this->io->setAuthentication($match[3], rawurldecode($match[1]), rawurldecode($match[2])); -} -} - -$protocols = $this->config->get('github-protocols'); - -if (Preg::isMatchStrictGroups('{^(?:https?|git)://' . self::getGitHubDomainsRegex($this->config) . '/(.*)}', $url, $match)) { -$messages = []; -foreach ($protocols as $protocol) { -if ('ssh' === $protocol) { -$protoUrl = "git@" . $match[1] . ":" . $match[2]; -} else { -$protoUrl = $protocol . "://" . $match[1] . "/" . $match[2]; -} - -if (0 === $this->process->execute($commandCallable($protoUrl), $commandOutput, $cwd)) { -return; -} -$messages[] = '- ' . $protoUrl . "\n" . Preg::replace('#^#m', ' ', $this->process->getErrorOutput()); - -if ($initialClone && isset($origCwd)) { -$this->filesystem->removeDirectory($origCwd); -} -} - - -if (!$this->io->hasAuthentication($match[1]) && !$this->io->isInteractive()) { -$this->throwException('Failed to clone ' . $url . ' via ' . implode(', ', $protocols) . ' protocols, aborting.' . "\n\n" . implode("\n", $messages), $url); -} -} - - -$bypassSshForGitHub = Preg::isMatch('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url) && !in_array('ssh', $protocols, true); - -$command = $commandCallable($url); - -$auth = null; -$credentials = []; -if ($bypassSshForGitHub || 0 !== $this->process->execute($command, $commandOutput, $cwd)) { -$errorMsg = $this->process->getErrorOutput(); - -if (Preg::isMatchStrictGroups('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url, $match) -|| Preg::isMatchStrictGroups('{^https?://' . self::getGitHubDomainsRegex($this->config) . '/(.*?)(?:\.git)?$}i', $url, $match) -) { -if (!$this->io->hasAuthentication($match[1])) { -$gitHubUtil = new GitHub($this->io, $this->config, $this->process); -$message = 'Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos'; - -if (!$gitHubUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { -$gitHubUtil->authorizeOAuthInteractively($match[1], $message); -} -} - -if ($this->io->hasAuthentication($match[1])) { -$auth = $this->io->getAuthentication($match[1]); -$authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; -$command = $commandCallable($authUrl); -if (0 === $this->process->execute($command, $commandOutput, $cwd)) { -return; -} - -$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; -$errorMsg = $this->process->getErrorOutput(); -} -} elseif (Preg::isMatchStrictGroups('{^https://(bitbucket\.org)/(.*?)(?:\.git)?$}i', $url, $match)) { -$bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process); - -if (!$this->io->hasAuthentication($match[1])) { -$message = 'Enter your Bitbucket credentials to access private repos'; - -if (!$bitbucketUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { -$bitbucketUtil->authorizeOAuthInteractively($match[1], $message); -$accessToken = $bitbucketUtil->getToken(); -$this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); -} -} else { -$auth = $this->io->getAuthentication($match[1]); - - -if ($auth['username'] !== 'x-token-auth') { -$accessToken = $bitbucketUtil->requestToken($match[1], $auth['username'], $auth['password']); -if (!empty($accessToken)) { -$this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); -} -} -} - -if ($this->io->hasAuthentication($match[1])) { -$auth = $this->io->getAuthentication($match[1]); -$authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; - -$command = $commandCallable($authUrl); -if (0 === $this->process->execute($command, $commandOutput, $cwd)) { -return; -} - -$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; -$errorMsg = $this->process->getErrorOutput(); -} else { -$sshUrl = 'git@bitbucket.org:' . $match[2] . '.git'; -$this->io->writeError(' No bitbucket authentication configured. Falling back to ssh.'); -$command = $commandCallable($sshUrl); -if (0 === $this->process->execute($command, $commandOutput, $cwd)) { -return; -} - -$errorMsg = $this->process->getErrorOutput(); -} -} elseif ( -Preg::isMatchStrictGroups('{^(git)@' . self::getGitLabDomainsRegex($this->config) . ':(.+?\.git)$}i', $url, $match) -|| Preg::isMatchStrictGroups('{^(https?)://' . self::getGitLabDomainsRegex($this->config) . '/(.*)}i', $url, $match) -) { -if ($match[1] === 'git') { -$match[1] = 'https'; -} - -if (!$this->io->hasAuthentication($match[2])) { -$gitLabUtil = new GitLab($this->io, $this->config, $this->process); -$message = 'Cloning failed, enter your GitLab credentials to access private repos'; - -if (!$gitLabUtil->authorizeOAuth($match[2]) && $this->io->isInteractive()) { -$gitLabUtil->authorizeOAuthInteractively($match[1], $match[2], $message); -} -} - -if ($this->io->hasAuthentication($match[2])) { -$auth = $this->io->getAuthentication($match[2]); -if ($auth['password'] === 'private-token' || $auth['password'] === 'oauth2' || $auth['password'] === 'gitlab-ci-token') { -$authUrl = $match[1] . '://' . rawurlencode($auth['password']) . ':' . rawurlencode($auth['username']) . '@' . $match[2] . '/' . $match[3]; -} else { -$authUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . '/' . $match[3]; -} - -$command = $commandCallable($authUrl); -if (0 === $this->process->execute($command, $commandOutput, $cwd)) { -return; -} - -$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; -$errorMsg = $this->process->getErrorOutput(); -} -} elseif ($this->isAuthenticationFailure($url, $match)) { -if (strpos($match[2], '@')) { -[$authParts, $match[2]] = explode('@', $match[2], 2); -} - -$storeAuth = false; -if ($this->io->hasAuthentication($match[2])) { -$auth = $this->io->getAuthentication($match[2]); -} elseif ($this->io->isInteractive()) { -$defaultUsername = null; -if (isset($authParts) && $authParts) { -if (false !== strpos($authParts, ':')) { -[$defaultUsername, ] = explode(':', $authParts, 2); -} else { -$defaultUsername = $authParts; -} -} - -$this->io->writeError(' Authentication required (' . $match[2] . '):'); -$auth = [ -'username' => $this->io->ask(' Username: ', $defaultUsername), -'password' => $this->io->askAndHideAnswer(' Password: '), -]; -$storeAuth = $this->config->get('store-auths'); -} - -if (null !== $auth) { -$authUrl = $match[1] . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . $match[3]; - -$command = $commandCallable($authUrl); -if (0 === $this->process->execute($command, $commandOutput, $cwd)) { -$this->io->setAuthentication($match[2], $auth['username'], $auth['password']); -$authHelper = new AuthHelper($this->io, $this->config); -$authHelper->storeAuth($match[2], $storeAuth); - -return; -} - -$credentials = [rawurlencode($auth['username']), rawurlencode($auth['password'])]; -$errorMsg = $this->process->getErrorOutput(); -} -} - -if ($initialClone && isset($origCwd)) { -$this->filesystem->removeDirectory($origCwd); -} - -if (count($credentials) > 0) { -$command = $this->maskCredentials($command, $credentials); -$errorMsg = $this->maskCredentials($errorMsg, $credentials); -} -$this->throwException('Failed to execute ' . $command . "\n\n" . $errorMsg, $url); -} -} - -public function syncMirror(string $url, string $dir): bool -{ -if (Platform::getEnv('COMPOSER_DISABLE_NETWORK') && Platform::getEnv('COMPOSER_DISABLE_NETWORK') !== 'prime') { -$this->io->writeError('Aborting git mirror sync of '.$url.' as network is disabled'); - -return false; -} - - -if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { -try { -$commandCallable = static function ($url): string { -$sanitizedUrl = Preg::replace('{://([^@]+?):(.+?)@}', '://', $url); - -return sprintf('git remote set-url origin -- %s && git remote update --prune origin && git remote set-url origin -- %s && git gc --auto', ProcessExecutor::escape($url), ProcessExecutor::escape($sanitizedUrl)); -}; -$this->runCommand($commandCallable, $url, $dir); -} catch (\Exception $e) { -$this->io->writeError('Sync mirror failed: ' . $e->getMessage() . '', true, IOInterface::DEBUG); - -return false; -} - -return true; -} - - -$this->filesystem->removeDirectory($dir); - -$commandCallable = static function ($url) use ($dir): string { -return sprintf('git clone --mirror -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($dir)); -}; - -$this->runCommand($commandCallable, $url, $dir, true); - -return true; -} - -public function fetchRefOrSyncMirror(string $url, string $dir, string $ref, string $prettyVersion = null): bool -{ -if ($this->checkRefIsInMirror($dir, $ref)) { -if (Preg::isMatch('{^[a-f0-9]{40}$}', $ref) && $prettyVersion !== null) { -$branch = Preg::replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $prettyVersion); -$branches = null; -$tags = null; -if (0 === $this->process->execute('git branch', $output, $dir)) { -$branches = $output; -} -if (0 === $this->process->execute('git tag', $output, $dir)) { -$tags = $output; -} - - - - - -if (null !== $branches && !Preg::isMatch('{^[\s*]*v?'.preg_quote($branch).'$}m', $branches) -&& null !== $tags && !Preg::isMatch('{^[\s*]*'.preg_quote($branch).'$}m', $tags) -) { -$this->syncMirror($url, $dir); -} -} - -return true; -} - -if ($this->syncMirror($url, $dir)) { -return $this->checkRefIsInMirror($dir, $ref); -} - -return false; -} - -public static function getNoShowSignatureFlag(ProcessExecutor $process): string -{ -$gitVersion = self::getVersion($process); -if ($gitVersion && version_compare($gitVersion, '2.10.0-rc0', '>=')) { -return ' --no-show-signature'; -} - -return ''; -} - -private function checkRefIsInMirror(string $dir, string $ref): bool -{ -if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { -$escapedRef = ProcessExecutor::escape($ref.'^{commit}'); -$exitCode = $this->process->execute(sprintf('git rev-parse --quiet --verify %s', $escapedRef), $ignoredOutput, $dir); -if ($exitCode === 0) { -return true; -} -} - -return false; -} - - - - -private function isAuthenticationFailure(string $url, array &$match): bool -{ -if (!Preg::isMatch('{^(https?://)([^/]+)(.*)$}i', $url, $match)) { -return false; -} - -$authFailures = [ -'fatal: Authentication failed', -'remote error: Invalid username or password.', -'error: 401 Unauthorized', -'fatal: unable to access', -'fatal: could not read Username', -]; - -$errorOutput = $this->process->getErrorOutput(); -foreach ($authFailures as $authFailure) { -if (strpos($errorOutput, $authFailure) !== false) { -return true; -} -} - -return false; -} - -public function getMirrorDefaultBranch(string $url, string $dir, bool $isLocalPathRepository): ?string -{ -if ((bool) Platform::getEnv('COMPOSER_DISABLE_NETWORK')) { -return null; -} - -try { -if ($isLocalPathRepository) { -$this->process->execute('git remote show origin', $output, $dir); -} else { -$commandCallable = static function ($url): string { -$sanitizedUrl = Preg::replace('{://([^@]+?):(.+?)@}', '://', $url); - -return sprintf('git remote set-url origin -- %s && git remote show origin && git remote set-url origin -- %s', ProcessExecutor::escape($url), ProcessExecutor::escape($sanitizedUrl)); -}; - -$this->runCommand($commandCallable, $url, $dir, false, $output); -} - -$lines = $this->process->splitLines($output); -foreach ($lines as $line) { -if (Preg::match('{^\s*HEAD branch:\s(.+)\s*$}m', $line, $matches) > 0) { -return $matches[1]; -} -} -} catch (\Exception $e) { -$this->io->writeError('Failed to fetch root identifier from remote: ' . $e->getMessage() . '', true, IOInterface::DEBUG); -} - -return null; -} - -public static function cleanEnv(): void -{ - -if (Platform::getEnv('GIT_ASKPASS') !== 'echo') { -Platform::putEnv('GIT_ASKPASS', 'echo'); -} - - -if (Platform::getEnv('GIT_DIR')) { -Platform::clearEnv('GIT_DIR'); -} -if (Platform::getEnv('GIT_WORK_TREE')) { -Platform::clearEnv('GIT_WORK_TREE'); -} - - -if (Platform::getEnv('LANGUAGE') !== 'C') { -Platform::putEnv('LANGUAGE', 'C'); -} - - -Platform::clearEnv('DYLD_LIBRARY_PATH'); -} - - - - -public static function getGitHubDomainsRegex(Config $config): string -{ -return '(' . implode('|', array_map('preg_quote', $config->get('github-domains'))) . ')'; -} - - - - -public static function getGitLabDomainsRegex(Config $config): string -{ -return '(' . implode('|', array_map('preg_quote', $config->get('gitlab-domains'))) . ')'; -} - - - - - - -private function throwException($message, string $url): void -{ - -clearstatcache(); - -if (0 !== $this->process->execute('git --version', $ignoredOutput)) { -throw new \RuntimeException(Url::sanitize('Failed to clone ' . $url . ', git was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); -} - -throw new \RuntimeException(Url::sanitize($message)); -} - - - - - - -public static function getVersion(ProcessExecutor $process): ?string -{ -if (false === self::$version) { -self::$version = null; -if (0 === $process->execute('git --version', $output) && Preg::isMatch('/^git version (\d+(?:\.\d+)+)/m', $output, $matches)) { -self::$version = $matches[1]; -} -} - -return self::$version; -} - - - - -private function maskCredentials(string $error, array $credentials): string -{ -$maskedCredentials = []; - -foreach ($credentials as $credential) { -if (in_array($credential, ['private-token', 'x-token-auth', 'oauth2', 'gitlab-ci-token', 'x-oauth-basic'])) { -$maskedCredentials[] = $credential; -} elseif (strlen($credential) > 6) { -$maskedCredentials[] = substr($credential, 0, 3) . '...' . substr($credential, -3); -} elseif (strlen($credential) > 3) { -$maskedCredentials[] = substr($credential, 0, 3) . '...'; -} else { -$maskedCredentials[] = 'XXX'; -} -} - -return str_replace($credentials, $maskedCredentials, $error); -} -} diff --git a/composer/src/Composer/Util/GitHub.php b/composer/src/Composer/Util/GitHub.php deleted file mode 100644 index 89981e503..000000000 --- a/composer/src/Composer/Util/GitHub.php +++ /dev/null @@ -1,234 +0,0 @@ -io = $io; -$this->config = $config; -$this->process = $process ?: new ProcessExecutor($io); -$this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); -} - - - - - - - -public function authorizeOAuth(string $originUrl): bool -{ -if (!in_array($originUrl, $this->config->get('github-domains'))) { -return false; -} - - -if (0 === $this->process->execute('git config github.accesstoken', $output)) { -$this->io->setAuthentication($originUrl, trim($output), 'x-oauth-basic'); - -return true; -} - -return false; -} - - - - - - - - - - -public function authorizeOAuthInteractively(string $originUrl, ?string $message = null): bool -{ -if ($message) { -$this->io->writeError($message); -} - -$note = 'Composer'; -if ($this->config->get('github-expose-hostname') === true && 0 === $this->process->execute('hostname', $output)) { -$note .= ' on ' . trim($output); -} -$note .= ' ' . date('Y-m-d Hi'); - -$url = 'https://'.$originUrl.'/settings/tokens/new?scopes=&description=' . str_replace('%20', '+', rawurlencode($note)); -$this->io->writeError(sprintf('When working with _public_ GitHub repositories only, head to %s to retrieve a token.', $url)); -$this->io->writeError('This token will have read-only permission for public information only.'); - -$localAuthConfig = $this->config->getLocalAuthConfigSource(); -$url = 'https://'.$originUrl.'/settings/tokens/new?scopes=repo&description=' . str_replace('%20', '+', rawurlencode($note)); -$this->io->writeError(sprintf('When you need to access _private_ GitHub repositories as well, go to %s', $url)); -$this->io->writeError('Note that such tokens have broad read/write permissions on your behalf, even if not needed by Composer.'); -$this->io->writeError(sprintf('Tokens will be stored in plain text in "%s" for future use by Composer.', ($localAuthConfig !== null ? $localAuthConfig->getName() . ' OR ' : '') . $this->config->getAuthConfigSource()->getName())); -$this->io->writeError('For additional information, check https://getcomposer.org/doc/articles/authentication-for-private-packages.md#github-oauth'); - -$storeInLocalAuthConfig = false; -if ($localAuthConfig !== null) { -$storeInLocalAuthConfig = $this->io->askConfirmation('A local auth config source was found, do you want to store the token there?', true); -} - -$token = trim((string) $this->io->askAndHideAnswer('Token (hidden): ')); - -if ($token === '') { -$this->io->writeError('No token given, aborting.'); -$this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); - -return false; -} - -$this->io->setAuthentication($originUrl, $token, 'x-oauth-basic'); - -try { -$apiUrl = ('github.com' === $originUrl) ? 'api.github.com/' : $originUrl . '/api/v3/'; - -$this->httpDownloader->get('https://'. $apiUrl, [ -'retry-auth-failure' => false, -]); -} catch (TransportException $e) { -if (in_array($e->getCode(), [403, 401])) { -$this->io->writeError('Invalid token provided.'); -$this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); - -return false; -} - -throw $e; -} - - -$authConfigSource = $storeInLocalAuthConfig && $localAuthConfig !== null ? $localAuthConfig : $this->config->getAuthConfigSource(); -$this->config->getConfigSource()->removeConfigSetting('github-oauth.'.$originUrl); -$authConfigSource->addConfigSetting('github-oauth.'.$originUrl, $token); - -$this->io->writeError('Token stored successfully.'); - -return true; -} - - - - - - - - -public function getRateLimit(array $headers): array -{ -$rateLimit = [ -'limit' => '?', -'reset' => '?', -]; - -foreach ($headers as $header) { -$header = trim($header); -if (false === strpos($header, 'X-RateLimit-')) { -continue; -} -[$type, $value] = explode(':', $header, 2); -switch ($type) { -case 'X-RateLimit-Limit': -$rateLimit['limit'] = (int) trim($value); -break; -case 'X-RateLimit-Reset': -$rateLimit['reset'] = date('Y-m-d H:i:s', (int) trim($value)); -break; -} -} - -return $rateLimit; -} - - - - - - -public function getSsoUrl(array $headers): ?string -{ -foreach ($headers as $header) { -$header = trim($header); -if (false === stripos($header, 'x-github-sso: required')) { -continue; -} -if (Preg::isMatch('{\burl=(?P[^\s;]+)}', $header, $match)) { -return $match['url']; -} -} - -return null; -} - - - - - - -public function isRateLimited(array $headers): bool -{ -foreach ($headers as $header) { -if (Preg::isMatch('{^X-RateLimit-Remaining: *0$}i', trim($header))) { -return true; -} -} - -return false; -} - - - - - - - - -public function requiresSso(array $headers): bool -{ -foreach ($headers as $header) { -if (Preg::isMatch('{^X-GitHub-SSO: required}i', trim($header))) { -return true; -} -} - -return false; -} -} diff --git a/composer/src/Composer/Util/GitLab.php b/composer/src/Composer/Util/GitLab.php deleted file mode 100644 index 1abf08df3..000000000 --- a/composer/src/Composer/Util/GitLab.php +++ /dev/null @@ -1,311 +0,0 @@ -io = $io; -$this->config = $config; -$this->process = $process ?: new ProcessExecutor($io); -$this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); -} - - - - - - - - -public function authorizeOAuth(string $originUrl): bool -{ - -$bcOriginUrl = Preg::replace('{:\d+}', '', $originUrl); - -if (!in_array($originUrl, $this->config->get('gitlab-domains'), true) && !in_array($bcOriginUrl, $this->config->get('gitlab-domains'), true)) { -return false; -} - - -if (0 === $this->process->execute('git config gitlab.accesstoken', $output)) { -$this->io->setAuthentication($originUrl, trim($output), 'oauth2'); - -return true; -} - - -if (0 === $this->process->execute('git config gitlab.deploytoken.user', $tokenUser) && 0 === $this->process->execute('git config gitlab.deploytoken.token', $tokenPassword)) { -$this->io->setAuthentication($originUrl, trim($tokenUser), trim($tokenPassword)); - -return true; -} - - -$authTokens = $this->config->get('gitlab-token'); - -if (isset($authTokens[$originUrl])) { -$token = $authTokens[$originUrl]; -} - -if (isset($authTokens[$bcOriginUrl])) { -$token = $authTokens[$bcOriginUrl]; -} - -if (isset($token)) { -$username = is_array($token) ? $token["username"] : $token; -$password = is_array($token) ? $token["token"] : 'private-token'; - - - -if (in_array($username, ['private-token', 'gitlab-ci-token', 'oauth2'], true)) { -$this->io->setAuthentication($originUrl, $password, $username); -} else { -$this->io->setAuthentication($originUrl, $username, $password); -} - -return true; -} - -return false; -} - - - - - - - - - - - - - -public function authorizeOAuthInteractively(string $scheme, string $originUrl, ?string $message = null): bool -{ -if ($message) { -$this->io->writeError($message); -} - -$localAuthConfig = $this->config->getLocalAuthConfigSource(); -$this->io->writeError(sprintf('A token will be created and stored in "%s", your password will never be stored', ($localAuthConfig !== null ? $localAuthConfig->getName() . ' OR ' : '') . $this->config->getAuthConfigSource()->getName())); -$this->io->writeError('To revoke access to this token you can visit '.$scheme.'://'.$originUrl.'/-/profile/applications'); -$this->io->writeError('Alternatively you can setup an personal access token on '.$scheme.'://'.$originUrl.'/-/profile/personal_access_tokens and store it under "gitlab-token" see https://getcomposer.org/doc/articles/authentication-for-private-packages.md#gitlab-token for more details.'); - -$storeInLocalAuthConfig = false; -if ($localAuthConfig !== null) { -$storeInLocalAuthConfig = $this->io->askConfirmation('A local auth config source was found, do you want to store the token there?', true); -} - -$attemptCounter = 0; - -while ($attemptCounter++ < 5) { -try { -$response = $this->createToken($scheme, $originUrl); -} catch (TransportException $e) { - - -if (in_array($e->getCode(), [403, 401])) { -if (401 === $e->getCode()) { -$response = json_decode($e->getResponse(), true); -if (isset($response['error']) && $response['error'] === 'invalid_grant') { -$this->io->writeError('Bad credentials. If you have two factor authentication enabled you will have to manually create a personal access token'); -} else { -$this->io->writeError('Bad credentials.'); -} -} else { -$this->io->writeError('Maximum number of login attempts exceeded. Please try again later.'); -} - -$this->io->writeError('You can also manually create a personal access token enabling the "read_api" scope at '.$scheme.'://'.$originUrl.'/profile/personal_access_tokens'); -$this->io->writeError('Add it using "composer config --global --auth gitlab-token.'.$originUrl.' "'); - -continue; -} - -throw $e; -} - -$this->io->setAuthentication($originUrl, $response['access_token'], 'oauth2'); - -$authConfigSource = $storeInLocalAuthConfig && $localAuthConfig !== null ? $localAuthConfig : $this->config->getAuthConfigSource(); - -if (isset($response['expires_in'])) { -$authConfigSource->addConfigSetting( -'gitlab-oauth.'.$originUrl, -[ -'expires-at' => intval($response['created_at']) + intval($response['expires_in']), -'refresh-token' => $response['refresh_token'], -'token' => $response['access_token'], -] -); -} else { -$authConfigSource->addConfigSetting('gitlab-oauth.'.$originUrl, $response['access_token']); -} - -return true; -} - -throw new \RuntimeException('Invalid GitLab credentials 5 times in a row, aborting.'); -} - - - - - - - - - - - - -public function authorizeOAuthRefresh(string $scheme, string $originUrl): bool -{ -try { -$response = $this->refreshToken($scheme, $originUrl); -} catch (TransportException $e) { -$this->io->writeError("Couldn't refresh access token: ".$e->getMessage()); - -return false; -} - -$this->io->setAuthentication($originUrl, $response['access_token'], 'oauth2'); - - -$this->config->getAuthConfigSource()->addConfigSetting( -'gitlab-oauth.'.$originUrl, -[ -'expires-at' => intval($response['created_at']) + intval($response['expires_in']), -'refresh-token' => $response['refresh_token'], -'token' => $response['access_token'], -] -); - -return true; -} - - - - - - -private function createToken(string $scheme, string $originUrl): array -{ -$username = $this->io->ask('Username: '); -$password = $this->io->askAndHideAnswer('Password: '); - -$headers = ['Content-Type: application/x-www-form-urlencoded']; - -$apiUrl = $originUrl; -$data = http_build_query([ -'username' => $username, -'password' => $password, -'grant_type' => 'password', -], '', '&'); -$options = [ -'retry-auth-failure' => false, -'http' => [ -'method' => 'POST', -'header' => $headers, -'content' => $data, -], -]; - -$token = $this->httpDownloader->get($scheme.'://'.$apiUrl.'/oauth/token', $options)->decodeJson(); - -$this->io->writeError('Token successfully created'); - -return $token; -} - - - - - - -public function isOAuthExpired(string $originUrl): bool -{ -$authTokens = $this->config->get('gitlab-oauth'); -if (isset($authTokens[$originUrl]['expires-at'])) { -if ($authTokens[$originUrl]['expires-at'] < time()) { -return true; -} -} - -return false; -} - - - - - - -private function refreshToken(string $scheme, string $originUrl): array -{ -$authTokens = $this->config->get('gitlab-oauth'); -if (!isset($authTokens[$originUrl]['refresh-token'])) { -throw new \RuntimeException('No GitLab refresh token present for '.$originUrl.'.'); -} - -$refreshToken = $authTokens[$originUrl]['refresh-token']; -$headers = ['Content-Type: application/x-www-form-urlencoded']; - -$data = http_build_query([ -'refresh_token' => $refreshToken, -'grant_type' => 'refresh_token', -], '', '&'); -$options = [ -'retry-auth-failure' => false, -'http' => [ -'method' => 'POST', -'header' => $headers, -'content' => $data, -], -]; - -$token = $this->httpDownloader->get($scheme.'://'.$originUrl.'/oauth/token', $options)->decodeJson(); -$this->io->writeError('GitLab token successfully refreshed', true, IOInterface::VERY_VERBOSE); -$this->io->writeError('To revoke access to this token you can visit '.$scheme.'://'.$originUrl.'/-/profile/applications', true, IOInterface::VERY_VERBOSE); - -return $token; -} -} diff --git a/composer/src/Composer/Util/Hg.php b/composer/src/Composer/Util/Hg.php deleted file mode 100644 index 325d63134..000000000 --- a/composer/src/Composer/Util/Hg.php +++ /dev/null @@ -1,109 +0,0 @@ -io = $io; -$this->config = $config; -$this->process = $process; -} - -public function runCommand(callable $commandCallable, string $url, ?string $cwd): void -{ -$this->config->prohibitUrlByConfig($url, $this->io); - - -$command = $commandCallable($url); - -if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { -return; -} - - -if (Preg::isMatch('{^(https?)://((.+)(?:\:(.+))?@)?([^/]+)(/.*)?}mi', $url, $match) && $this->io->hasAuthentication((string) $match[5])) { -$auth = $this->io->getAuthentication((string) $match[5]); -$authenticatedUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[5] . $match[6]; - -$command = $commandCallable($authenticatedUrl); - -if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { -return; -} - -$error = $this->process->getErrorOutput(); -} else { -$error = 'The given URL (' . $url . ') does not match the required format (http(s)://(username:password@)example.com/path-to-repository)'; -} - -$this->throwException('Failed to clone ' . $url . ', ' . "\n\n" . $error, $url); -} - - - - - - -private function throwException($message, string $url): void -{ -if (null === self::getVersion($this->process)) { -throw new \RuntimeException(Url::sanitize('Failed to clone ' . $url . ', hg was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); -} - -throw new \RuntimeException(Url::sanitize($message)); -} - - - - - - -public static function getVersion(ProcessExecutor $process): ?string -{ -if (false === self::$version) { -self::$version = null; -if (0 === $process->execute('hg --version', $output) && Preg::isMatch('/^.+? (\d+(?:\.\d+)+)(?:\+.*?)?\)?\r?\n/', $output, $matches)) { -self::$version = $matches[1]; -} -} - -return self::$version; -} -} diff --git a/composer/src/Composer/Util/Http/CurlDownloader.php b/composer/src/Composer/Util/Http/CurlDownloader.php deleted file mode 100644 index 79e61443b..000000000 --- a/composer/src/Composer/Util/Http/CurlDownloader.php +++ /dev/null @@ -1,653 +0,0 @@ - ['CURLM_BAD_HANDLE', 'The passed-in handle is not a valid CURLM handle.'], -CURLM_BAD_EASY_HANDLE => ['CURLM_BAD_EASY_HANDLE', "An easy handle was not good/valid. It could mean that it isn't an easy handle at all, or possibly that the handle already is in used by this or another multi handle."], -CURLM_OUT_OF_MEMORY => ['CURLM_OUT_OF_MEMORY', 'You are doomed.'], -CURLM_INTERNAL_ERROR => ['CURLM_INTERNAL_ERROR', 'This can only be returned if libcurl bugs. Please report it to us!'], -]; - - -private static $options = [ -'http' => [ -'method' => CURLOPT_CUSTOMREQUEST, -'content' => CURLOPT_POSTFIELDS, -'header' => CURLOPT_HTTPHEADER, -'timeout' => CURLOPT_TIMEOUT, -], -'ssl' => [ -'cafile' => CURLOPT_CAINFO, -'capath' => CURLOPT_CAPATH, -'verify_peer' => CURLOPT_SSL_VERIFYPEER, -'verify_peer_name' => CURLOPT_SSL_VERIFYHOST, -'local_cert' => CURLOPT_SSLCERT, -'local_pk' => CURLOPT_SSLKEY, -'passphrase' => CURLOPT_SSLKEYPASSWD, -], -]; - - -private static $timeInfo = [ -'total_time' => true, -'namelookup_time' => true, -'connect_time' => true, -'pretransfer_time' => true, -'starttransfer_time' => true, -'redirect_time' => true, -]; - - - - -public function __construct(IOInterface $io, Config $config, array $options = [], bool $disableTls = false) -{ -$this->io = $io; -$this->config = $config; - -$this->multiHandle = $mh = curl_multi_init(); -if (function_exists('curl_multi_setopt')) { -curl_multi_setopt($mh, CURLMOPT_PIPELINING, PHP_VERSION_ID >= 70400 ? 2 : 3); -if (defined('CURLMOPT_MAX_HOST_CONNECTIONS') && !defined('HHVM_VERSION')) { -curl_multi_setopt($mh, CURLMOPT_MAX_HOST_CONNECTIONS, 8); -} -} - -if (function_exists('curl_share_init')) { -$this->shareHandle = $sh = curl_share_init(); -curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); -curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); -curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); -} - -$this->authHelper = new AuthHelper($io, $config); -$this->proxyManager = ProxyManager::getInstance(); - -$version = curl_version(); -$features = $version['features']; -$this->supportsSecureProxy = defined('CURL_VERSION_HTTPS_PROXY') && ($features & CURL_VERSION_HTTPS_PROXY); -} - - - - - - - -public function download(callable $resolve, callable $reject, string $origin, string $url, array $options, ?string $copyTo = null): int -{ -$attributes = []; -if (isset($options['retry-auth-failure'])) { -$attributes['retryAuthFailure'] = $options['retry-auth-failure']; -unset($options['retry-auth-failure']); -} - -return $this->initDownload($resolve, $reject, $origin, $url, $options, $copyTo, $attributes); -} - - - - - - - - - -private function initDownload(callable $resolve, callable $reject, string $origin, string $url, array $options, ?string $copyTo = null, array $attributes = []): int -{ -$attributes = array_merge([ -'retryAuthFailure' => true, -'redirects' => 0, -'retries' => 0, -'storeAuth' => false, -], $attributes); - -$originalOptions = $options; - - -if (!Preg::isMatch('{^http://(repo\.)?packagist\.org/p/}', $url) || (false === strpos($url, '$') && false === strpos($url, '%24'))) { -$this->config->prohibitUrlByConfig($url, $this->io, $options); -} - -$curlHandle = curl_init(); -$headerHandle = fopen('php://temp/maxmemory:32768', 'w+b'); -if (false === $headerHandle) { -throw new \RuntimeException('Failed to open a temp stream to store curl headers'); -} - -if ($copyTo !== null) { -$bodyTarget = $copyTo.'~'; -} else { -$bodyTarget = 'php://temp/maxmemory:524288'; -} - -$errorMessage = ''; - -set_error_handler(static function ($code, $msg) use (&$errorMessage): void { -if ($errorMessage) { -$errorMessage .= "\n"; -} -$errorMessage .= Preg::replace('{^fopen\(.*?\): }', '', $msg); -}); -$bodyHandle = fopen($bodyTarget, 'w+b'); -restore_error_handler(); -if (false === $bodyHandle) { -throw new TransportException('The "'.$url.'" file could not be written to '.($copyTo ?? 'a temporary file').': '.$errorMessage); -} - -curl_setopt($curlHandle, CURLOPT_URL, $url); -curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, false); -curl_setopt($curlHandle, CURLOPT_CONNECTTIMEOUT, 10); -curl_setopt($curlHandle, CURLOPT_TIMEOUT, max((int) ini_get("default_socket_timeout"), 300)); -curl_setopt($curlHandle, CURLOPT_WRITEHEADER, $headerHandle); -curl_setopt($curlHandle, CURLOPT_FILE, $bodyHandle); -curl_setopt($curlHandle, CURLOPT_ENCODING, ""); -curl_setopt($curlHandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - -if (function_exists('curl_share_init')) { -curl_setopt($curlHandle, CURLOPT_SHARE, $this->shareHandle); -} - -if (!isset($options['http']['header'])) { -$options['http']['header'] = []; -} - -$options['http']['header'] = array_diff($options['http']['header'], ['Connection: close']); -$options['http']['header'][] = 'Connection: keep-alive'; - -$version = curl_version(); -$features = $version['features']; -if (0 === strpos($url, 'https://') && \defined('CURL_VERSION_HTTP2') && \defined('CURL_HTTP_VERSION_2_0') && (CURL_VERSION_HTTP2 & $features)) { -curl_setopt($curlHandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0); -} - -$options['http']['header'] = $this->authHelper->addAuthenticationHeader($options['http']['header'], $origin, $url); -$options = StreamContextFactory::initOptions($url, $options, true); - -foreach (self::$options as $type => $curlOptions) { -foreach ($curlOptions as $name => $curlOption) { -if (isset($options[$type][$name])) { -if ($type === 'ssl' && $name === 'verify_peer_name') { -curl_setopt($curlHandle, $curlOption, $options[$type][$name] === true ? 2 : $options[$type][$name]); -} else { -curl_setopt($curlHandle, $curlOption, $options[$type][$name]); -} -} -} -} - - - -$proxy = $this->proxyManager->getProxyForRequest($url); -if ($proxy->getUrl() !== '') { -curl_setopt($curlHandle, CURLOPT_PROXY, $proxy->getUrl()); -} - - - -if ($proxy->isSecure()) { -if (!$this->supportsSecureProxy) { -throw new TransportException('Connecting to a secure proxy using curl is not supported on PHP versions below 7.3.0.'); -} -if (!empty($options['ssl']['cafile'])) { -curl_setopt($curlHandle, CURLOPT_PROXY_CAINFO, $options['ssl']['cafile']); -} -if (!empty($options['ssl']['capath'])) { -curl_setopt($curlHandle, CURLOPT_PROXY_CAPATH, $options['ssl']['capath']); -} -} - -$progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo); - -$this->jobs[(int) $curlHandle] = [ -'url' => $url, -'origin' => $origin, -'attributes' => $attributes, -'options' => $originalOptions, -'progress' => $progress, -'curlHandle' => $curlHandle, -'filename' => $copyTo, -'headerHandle' => $headerHandle, -'bodyHandle' => $bodyHandle, -'resolve' => $resolve, -'reject' => $reject, -]; - -$usingProxy = $proxy->getFormattedUrl(' using proxy (%s)'); -$ifModified = false !== stripos(implode(',', $options['http']['header']), 'if-modified-since:') ? ' if modified' : ''; -if ($attributes['redirects'] === 0 && $attributes['retries'] === 0) { -$this->io->writeError('Downloading ' . Url::sanitize($url) . $usingProxy . $ifModified, true, IOInterface::DEBUG); -} - -$this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $curlHandle)); - - -return (int) $curlHandle; -} - -public function abortRequest(int $id): void -{ -if (isset($this->jobs[$id], $this->jobs[$id]['curlHandle'])) { -$job = $this->jobs[$id]; -curl_multi_remove_handle($this->multiHandle, $job['curlHandle']); -curl_close($job['curlHandle']); -if (is_resource($job['headerHandle'])) { -fclose($job['headerHandle']); -} -if (is_resource($job['bodyHandle'])) { -fclose($job['bodyHandle']); -} -if (null !== $job['filename']) { -@unlink($job['filename'].'~'); -} -unset($this->jobs[$id]); -} -} - -public function tick(): void -{ -static $timeoutWarning = false; - -if (count($this->jobs) === 0) { -return; -} - -$active = true; -$this->checkCurlResult(curl_multi_exec($this->multiHandle, $active)); -if (-1 === curl_multi_select($this->multiHandle, $this->selectTimeout)) { - -usleep(150); -} - -while ($progress = curl_multi_info_read($this->multiHandle)) { -$curlHandle = $progress['handle']; -$result = $progress['result']; -$i = (int) $curlHandle; -if (!isset($this->jobs[$i])) { -continue; -} - -$progress = curl_getinfo($curlHandle); -if (false === $progress) { -throw new \RuntimeException('Failed getting info from curl handle '.$i.' ('.$this->jobs[$i]['url'].')'); -} -$job = $this->jobs[$i]; -unset($this->jobs[$i]); -$error = curl_error($curlHandle); -$errno = curl_errno($curlHandle); -curl_multi_remove_handle($this->multiHandle, $curlHandle); -curl_close($curlHandle); - -$headers = null; -$statusCode = null; -$response = null; -try { - -if (CURLE_OK !== $errno || $error || $result !== CURLE_OK) { -$errno = $errno ?: $result; -if (!$error && function_exists('curl_strerror')) { -$error = curl_strerror($errno); -} -$progress['error_code'] = $errno; - -if ( -(!isset($job['options']['http']['method']) || $job['options']['http']['method'] === 'GET') -&& ( -in_array($errno, [7 , 16 , 92 , 6 ], true) -|| ($errno === 35 && false !== strpos($error, 'Connection reset by peer')) -) && $job['attributes']['retries'] < $this->maxRetries -) { -$this->io->writeError('Retrying ('.($job['attributes']['retries'] + 1).') ' . Url::sanitize($job['url']) . ' due to curl error '. $errno, true, IOInterface::DEBUG); -$this->restartJobWithDelay($job, $job['url'], ['retries' => $job['attributes']['retries'] + 1]); -continue; -} - -if ($errno === 28 && PHP_VERSION_ID >= 70300 && $progress['namelookup_time'] === 0.0 && !$timeoutWarning) { -$timeoutWarning = true; -$this->io->writeError('A connection timeout was encountered. If you intend to run Composer without connecting to the internet, run the command again prefixed with COMPOSER_DISABLE_NETWORK=1 to make Composer run in offline mode.'); -} - -throw new TransportException('curl error '.$errno.' while downloading '.Url::sanitize($progress['url']).': '.$error); -} -$statusCode = $progress['http_code']; -rewind($job['headerHandle']); -$headers = explode("\r\n", rtrim(stream_get_contents($job['headerHandle']))); -fclose($job['headerHandle']); - -if ($statusCode === 0) { -throw new \LogicException('Received unexpected http status code 0 without error for '.Url::sanitize($progress['url']).': headers '.var_export($headers, true).' curl info '.var_export($progress, true)); -} - - -if (null !== $job['filename']) { -$contents = $job['filename'].'~'; -if ($statusCode >= 300) { -rewind($job['bodyHandle']); -$contents = stream_get_contents($job['bodyHandle']); -} -$response = new CurlResponse(['url' => $job['url']], $statusCode, $headers, $contents, $progress); -$this->io->writeError('['.$statusCode.'] '.Url::sanitize($job['url']), true, IOInterface::DEBUG); -} else { -$maxFileSize = $job['options']['max_file_size'] ?? null; -rewind($job['bodyHandle']); -if ($maxFileSize !== null) { -$contents = stream_get_contents($job['bodyHandle'], $maxFileSize); - - -if ($contents !== false && Platform::strlen($contents) >= $maxFileSize) { -throw new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . Platform::strlen($contents) . ' of allowed ' . $maxFileSize . ' bytes'); -} -} else { -$contents = stream_get_contents($job['bodyHandle']); -} - -$response = new CurlResponse(['url' => $job['url']], $statusCode, $headers, $contents, $progress); -$this->io->writeError('['.$statusCode.'] '.Url::sanitize($job['url']), true, IOInterface::DEBUG); -} -fclose($job['bodyHandle']); - -if ($response->getStatusCode() >= 400 && $response->getHeader('content-type') === 'application/json') { -HttpDownloader::outputWarnings($this->io, $job['origin'], json_decode($response->getBody(), true)); -} - -$result = $this->isAuthenticatedRetryNeeded($job, $response); -if ($result['retry']) { -$this->restartJob($job, $job['url'], ['storeAuth' => $result['storeAuth']]); -continue; -} - - -if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $job['attributes']['redirects'] < $this->maxRedirects) { -$location = $this->handleRedirect($job, $response); -if ($location) { -$this->restartJob($job, $location, ['redirects' => $job['attributes']['redirects'] + 1]); -continue; -} -} - - -if ($statusCode >= 400 && $statusCode <= 599) { -if ( -(!isset($job['options']['http']['method']) || $job['options']['http']['method'] === 'GET') -&& in_array($statusCode, [423, 425, 500, 502, 503, 504, 507, 510], true) -&& $job['attributes']['retries'] < $this->maxRetries -) { -$this->io->writeError('Retrying ('.($job['attributes']['retries'] + 1).') ' . Url::sanitize($job['url']) . ' due to status code '. $statusCode, true, IOInterface::DEBUG); -$this->restartJobWithDelay($job, $job['url'], ['retries' => $job['attributes']['retries'] + 1]); -continue; -} - -throw $this->failResponse($job, $response, $response->getStatusMessage()); -} - -if ($job['attributes']['storeAuth'] !== false) { -$this->authHelper->storeAuth($job['origin'], $job['attributes']['storeAuth']); -} - - -if (null !== $job['filename']) { -rename($job['filename'].'~', $job['filename']); -$job['resolve']($response); -} else { -$job['resolve']($response); -} -} catch (\Exception $e) { -if ($e instanceof TransportException) { -if (null !== $headers) { -$e->setHeaders($headers); -$e->setStatusCode($statusCode); -} -if (null !== $response) { -$e->setResponse($response->getBody()); -} -$e->setResponseInfo($progress); -} - -$this->rejectJob($job, $e); -} -} - -foreach ($this->jobs as $i => $curlHandle) { -$curlHandle = $this->jobs[$i]['curlHandle']; -$progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo); - -if ($this->jobs[$i]['progress'] !== $progress) { -$this->jobs[$i]['progress'] = $progress; - -if (isset($this->jobs[$i]['options']['max_file_size'])) { - -if ($this->jobs[$i]['options']['max_file_size'] < $progress['download_content_length']) { -$this->rejectJob($this->jobs[$i], new MaxFileSizeExceededException('Maximum allowed download size reached. Content-length header indicates ' . $progress['download_content_length'] . ' bytes. Allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes')); -} - - -if ($this->jobs[$i]['options']['max_file_size'] < $progress['size_download']) { -$this->rejectJob($this->jobs[$i], new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . $progress['size_download'] . ' of allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes')); -} -} - - -} -} -} - - - - -private function handleRedirect(array $job, Response $response): string -{ -if ($locationHeader = $response->getHeader('location')) { -if (parse_url($locationHeader, PHP_URL_SCHEME)) { - -$targetUrl = $locationHeader; -} elseif (parse_url($locationHeader, PHP_URL_HOST)) { - -$targetUrl = parse_url($job['url'], PHP_URL_SCHEME).':'.$locationHeader; -} elseif ('/' === $locationHeader[0]) { - -$urlHost = parse_url($job['url'], PHP_URL_HOST); - - -$targetUrl = Preg::replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $job['url']); -} else { - - -$targetUrl = Preg::replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $job['url']); -} -} - -if (!empty($targetUrl)) { -$this->io->writeError(sprintf('Following redirect (%u) %s', $job['attributes']['redirects'] + 1, Url::sanitize($targetUrl)), true, IOInterface::DEBUG); - -return $targetUrl; -} - -throw new TransportException('The "'.$job['url'].'" file could not be downloaded, got redirect without Location ('.$response->getStatusMessage().')'); -} - - - - - -private function isAuthenticatedRetryNeeded(array $job, Response $response): array -{ -if (in_array($response->getStatusCode(), [401, 403]) && $job['attributes']['retryAuthFailure']) { -$result = $this->authHelper->promptAuthIfNeeded($job['url'], $job['origin'], $response->getStatusCode(), $response->getStatusMessage(), $response->getHeaders(), $job['attributes']['retries']); - -if ($result['retry']) { -return $result; -} -} - -$locationHeader = $response->getHeader('location'); -$needsAuthRetry = false; - - -if ( -$job['origin'] === 'bitbucket.org' -&& !$this->authHelper->isPublicBitBucketDownload($job['url']) -&& substr($job['url'], -4) === '.zip' -&& (!$locationHeader || substr($locationHeader, -4) !== '.zip') -&& Preg::isMatch('{^text/html\b}i', $response->getHeader('content-type')) -) { -$needsAuthRetry = 'Bitbucket requires authentication and it was not provided'; -} - - -if ( -$response->getStatusCode() === 404 -&& in_array($job['origin'], $this->config->get('gitlab-domains'), true) -&& false !== strpos($job['url'], 'archive.zip') -) { -$needsAuthRetry = 'GitLab requires authentication and it was not provided'; -} - -if ($needsAuthRetry) { -if ($job['attributes']['retryAuthFailure']) { -$result = $this->authHelper->promptAuthIfNeeded($job['url'], $job['origin'], 401, null, [], $job['attributes']['retries']); -if ($result['retry']) { -return $result; -} -} - -throw $this->failResponse($job, $response, $needsAuthRetry); -} - -return ['retry' => false, 'storeAuth' => false]; -} - - - - - - - -private function restartJob(array $job, string $url, array $attributes = []): void -{ -if (null !== $job['filename']) { -@unlink($job['filename'].'~'); -} - -$attributes = array_merge($job['attributes'], $attributes); -$origin = Url::getOrigin($this->config, $url); - -$this->initDownload($job['resolve'], $job['reject'], $origin, $url, $job['options'], $job['filename'], $attributes); -} - - - - - - - -private function restartJobWithDelay(array $job, string $url, array $attributes): void -{ -if ($attributes['retries'] >= 3) { -usleep(500000); -} elseif ($attributes['retries'] >= 2) { -usleep(100000); -} - -$this->restartJob($job, $url, $attributes); -} - - - - -private function failResponse(array $job, Response $response, string $errorMessage): TransportException -{ -if (null !== $job['filename']) { -@unlink($job['filename'].'~'); -} - -$details = ''; -if (in_array(strtolower((string) $response->getHeader('content-type')), ['application/json', 'application/json; charset=utf-8'], true)) { -$details = ':'.PHP_EOL.substr($response->getBody(), 0, 200).(strlen($response->getBody()) > 200 ? '...' : ''); -} - -return new TransportException('The "'.$job['url'].'" file could not be downloaded ('.$errorMessage.')' . $details, $response->getStatusCode()); -} - - - - -private function rejectJob(array $job, \Exception $e): void -{ -if (is_resource($job['headerHandle'])) { -fclose($job['headerHandle']); -} -if (is_resource($job['bodyHandle'])) { -fclose($job['bodyHandle']); -} -if (null !== $job['filename']) { -@unlink($job['filename'].'~'); -} -$job['reject']($e); -} - -private function checkCurlResult(int $code): void -{ -if ($code !== CURLM_OK && $code !== CURLM_CALL_MULTI_PERFORM) { -throw new \RuntimeException( -isset($this->multiErrors[$code]) -? "cURL error: {$code} ({$this->multiErrors[$code][0]}): cURL message: {$this->multiErrors[$code][1]}" -: 'Unexpected cURL error: ' . $code -); -} -} -} diff --git a/composer/src/Composer/Util/Http/CurlResponse.php b/composer/src/Composer/Util/Http/CurlResponse.php deleted file mode 100644 index 8aaf5a66d..000000000 --- a/composer/src/Composer/Util/Http/CurlResponse.php +++ /dev/null @@ -1,43 +0,0 @@ -curlInfo = $curlInfo; -} - - - - -public function getCurlInfo(): array -{ -return $this->curlInfo; -} -} diff --git a/composer/src/Composer/Util/Http/ProxyHelper.php b/composer/src/Composer/Util/Http/ProxyHelper.php deleted file mode 100644 index 0efa8a789..000000000 --- a/composer/src/Composer/Util/Http/ProxyHelper.php +++ /dev/null @@ -1,181 +0,0 @@ -fullProxy = $this->safeProxy = [ -'http' => null, -'https' => null, -]; - -$this->streams['http'] = $this->streams['https'] = [ -'options' => null, -]; - -$this->hasProxy = false; -$this->initProxyData(); -} - -public static function getInstance(): ProxyManager -{ -if (!self::$instance) { -self::$instance = new self(); -} - -return self::$instance; -} - - - - -public static function reset(): void -{ -self::$instance = null; -} - - - - - - -public function getProxyForRequest(string $requestUrl): RequestProxy -{ -if ($this->error) { -throw new TransportException('Unable to use a proxy: '.$this->error); -} - -$scheme = parse_url($requestUrl, PHP_URL_SCHEME) ?: 'http'; -$proxyUrl = ''; -$options = []; -$formattedProxyUrl = ''; - -if ($this->hasProxy && in_array($scheme, ['http', 'https'], true) && $this->fullProxy[$scheme]) { -if ($this->noProxy($requestUrl)) { -$formattedProxyUrl = 'excluded by no_proxy'; -} else { -$proxyUrl = $this->fullProxy[$scheme]; -$options = $this->streams[$scheme]['options']; -ProxyHelper::setRequestFullUri($requestUrl, $options); -$formattedProxyUrl = $this->safeProxy[$scheme]; -} -} - -return new RequestProxy($proxyUrl, $options, $formattedProxyUrl); -} - - - - - - -public function isProxying(): bool -{ -return $this->hasProxy; -} - - - - - - -public function getFormattedProxy(): ?string -{ -return $this->hasProxy ? $this->info : $this->error; -} - - - - -private function initProxyData(): void -{ -try { -[$httpProxy, $httpsProxy, $noProxy] = ProxyHelper::getProxyData(); -} catch (\RuntimeException $e) { -$this->error = $e->getMessage(); - -return; -} - -$info = []; - -if ($httpProxy) { -$info[] = $this->setData($httpProxy, 'http'); -} -if ($httpsProxy) { -$info[] = $this->setData($httpsProxy, 'https'); -} -if ($this->hasProxy) { -$this->info = implode(', ', $info); -if ($noProxy) { -$this->noProxyHandler = new NoProxyPattern($noProxy); -} -} -} - - - - - - - - - -private function setData($url, $scheme): string -{ -$safeProxy = Url::sanitize($url); -$this->fullProxy[$scheme] = $url; -$this->safeProxy[$scheme] = $safeProxy; -$this->streams[$scheme]['options'] = ProxyHelper::getContextOptions($url); -$this->hasProxy = true; - -return sprintf('%s=%s', $scheme, $safeProxy); -} - - - - -private function noProxy(string $requestUrl): bool -{ -return $this->noProxyHandler && $this->noProxyHandler->test($requestUrl); -} -} diff --git a/composer/src/Composer/Util/Http/RequestProxy.php b/composer/src/Composer/Util/Http/RequestProxy.php deleted file mode 100644 index fcc712949..000000000 --- a/composer/src/Composer/Util/Http/RequestProxy.php +++ /dev/null @@ -1,89 +0,0 @@ -url = $url; -$this->contextOptions = $contextOptions; -$this->formattedUrl = $formattedUrl; -$this->isSecure = 0 === strpos($url, 'https://'); -} - - - - - - -public function getContextOptions(): array -{ -return $this->contextOptions; -} - - - - - - - -public function getFormattedUrl(?string $format = ''): string -{ -$result = ''; -if ($this->formattedUrl) { -$format = $format ?: '%s'; -$result = sprintf($format, $this->formattedUrl); -} - -return $result; -} - - - - - - -public function getUrl(): string -{ -return $this->url; -} - - - - - - -public function isSecure(): bool -{ -return $this->isSecure; -} -} diff --git a/composer/src/Composer/Util/Http/Response.php b/composer/src/Composer/Util/Http/Response.php deleted file mode 100644 index 6b4af473d..000000000 --- a/composer/src/Composer/Util/Http/Response.php +++ /dev/null @@ -1,123 +0,0 @@ -request = $request; -$this->code = (int) $code; -$this->headers = $headers; -$this->body = $body; -} - -public function getStatusCode(): int -{ -return $this->code; -} - -public function getStatusMessage(): ?string -{ -$value = null; -foreach ($this->headers as $header) { -if (Preg::isMatch('{^HTTP/\S+ \d+}i', $header)) { - - -$value = $header; -} -} - -return $value; -} - - - - -public function getHeaders(): array -{ -return $this->headers; -} - - - - -public function getHeader(string $name): ?string -{ -return self::findHeaderValue($this->headers, $name); -} - - - - -public function getBody(): ?string -{ -return $this->body; -} - - - - -public function decodeJson() -{ -return JsonFile::parseJson($this->body, $this->request['url']); -} - - - - -public function collect(): void -{ - -$this->request = $this->code = $this->headers = $this->body = null; -} - - - - - -public static function findHeaderValue(array $headers, string $name): ?string -{ -$value = null; -foreach ($headers as $header) { -if (Preg::isMatch('{^'.preg_quote($name).':\s*(.+?)\s*$}i', $header, $match)) { -$value = $match[1]; -} -} - -return $value; -} -} diff --git a/composer/src/Composer/Util/HttpDownloader.php b/composer/src/Composer/Util/HttpDownloader.php deleted file mode 100644 index 4a3da4bcb..000000000 --- a/composer/src/Composer/Util/HttpDownloader.php +++ /dev/null @@ -1,545 +0,0 @@ -io = $io; - -$this->disabled = (bool) Platform::getEnv('COMPOSER_DISABLE_NETWORK'); - - - -if ($disableTls === false) { -$this->options = StreamContextFactory::getTlsDefaults($options, $io); -} - - -$this->options = array_replace_recursive($this->options, $options); -$this->config = $config; - -if (self::isCurlEnabled()) { -$this->curl = new CurlDownloader($io, $config, $options, $disableTls); -} - -$this->rfs = new RemoteFilesystem($io, $config, $options, $disableTls); - -if (is_numeric($maxJobs = Platform::getEnv('COMPOSER_MAX_PARALLEL_HTTP'))) { -$this->maxJobs = max(1, min(50, (int) $maxJobs)); -} -} - - - - - - - - - - -public function get(string $url, array $options = []) -{ -if ('' === $url) { -throw new \InvalidArgumentException('$url must not be an empty string'); -} -[$job] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => null], true); -$this->wait($job['id']); - -$response = $this->getResponse($job['id']); - -return $response; -} - - - - - - - - - - -public function add(string $url, array $options = []) -{ -if ('' === $url) { -throw new \InvalidArgumentException('$url must not be an empty string'); -} -[, $promise] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => null]); - -return $promise; -} - - - - - - - - - - - -public function copy(string $url, string $to, array $options = []) -{ -if ('' === $url) { -throw new \InvalidArgumentException('$url must not be an empty string'); -} -[$job] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => $to], true); -$this->wait($job['id']); - -return $this->getResponse($job['id']); -} - - - - - - - - - - - -public function addCopy(string $url, string $to, array $options = []) -{ -if ('' === $url) { -throw new \InvalidArgumentException('$url must not be an empty string'); -} -[, $promise] = $this->addJob(['url' => $url, 'options' => $options, 'copyTo' => $to]); - -return $promise; -} - - - - - - -public function getOptions() -{ -return $this->options; -} - - - - - - - -public function setOptions(array $options) -{ -$this->options = array_replace_recursive($this->options, $options); -} - - - - - -private function addJob(array $request, bool $sync = false): array -{ -$request['options'] = array_replace_recursive($this->options, $request['options']); - - -$job = [ -'id' => $this->idGen++, -'status' => self::STATUS_QUEUED, -'request' => $request, -'sync' => $sync, -'origin' => Url::getOrigin($this->config, $request['url']), -]; - -if (!$sync && !$this->allowAsync) { -throw new \LogicException('You must use the HttpDownloader instance which is part of a Composer\Loop instance to be able to run async http requests'); -} - - -if (Preg::isMatchStrictGroups('{^https?://([^:/]+):([^@/]+)@([^/]+)}i', $request['url'], $match)) { -$this->io->setAuthentication($job['origin'], rawurldecode($match[1]), rawurldecode($match[2])); -} - -$rfs = $this->rfs; - -if ($this->canUseCurl($job)) { -$resolver = static function ($resolve, $reject) use (&$job): void { -$job['status'] = HttpDownloader::STATUS_QUEUED; -$job['resolve'] = $resolve; -$job['reject'] = $reject; -}; -} else { -$resolver = static function ($resolve, $reject) use (&$job, $rfs): void { - -$url = $job['request']['url']; -$options = $job['request']['options']; - -$job['status'] = HttpDownloader::STATUS_STARTED; - -if ($job['request']['copyTo']) { -$rfs->copy($job['origin'], $url, $job['request']['copyTo'], false , $options); - -$headers = $rfs->getLastHeaders(); -$response = new Http\Response($job['request'], $rfs->findStatusCode($headers), $headers, $job['request']['copyTo'].'~'); - -$resolve($response); -} else { -$body = $rfs->getContents($job['origin'], $url, false , $options); -$headers = $rfs->getLastHeaders(); -$response = new Http\Response($job['request'], $rfs->findStatusCode($headers), $headers, $body); - -$resolve($response); -} -}; -} - -$curl = $this->curl; - -$canceler = static function () use (&$job, $curl): void { -if ($job['status'] === HttpDownloader::STATUS_QUEUED) { -$job['status'] = HttpDownloader::STATUS_ABORTED; -} -if ($job['status'] !== HttpDownloader::STATUS_STARTED) { -return; -} -$job['status'] = HttpDownloader::STATUS_ABORTED; -if (isset($job['curl_id'])) { -$curl->abortRequest($job['curl_id']); -} -throw new IrrecoverableDownloadException('Download of ' . Url::sanitize($job['request']['url']) . ' canceled'); -}; - -$promise = new Promise($resolver, $canceler); -$promise = $promise->then(function ($response) use (&$job) { -$job['status'] = HttpDownloader::STATUS_COMPLETED; -$job['response'] = $response; - -$this->markJobDone(); - -return $response; -}, function ($e) use (&$job): void { -$job['status'] = HttpDownloader::STATUS_FAILED; -$job['exception'] = $e; - -$this->markJobDone(); - -throw $e; -}); -$this->jobs[$job['id']] = &$job; - -if ($this->runningJobs < $this->maxJobs) { -$this->startJob($job['id']); -} - -return [$job, $promise]; -} - -private function startJob(int $id): void -{ -$job = &$this->jobs[$id]; -if ($job['status'] !== self::STATUS_QUEUED) { -return; -} - - -$job['status'] = self::STATUS_STARTED; -$this->runningJobs++; - -assert(isset($job['resolve'])); -assert(isset($job['reject'])); - -$resolve = $job['resolve']; -$reject = $job['reject']; -$url = $job['request']['url']; -$options = $job['request']['options']; -$origin = $job['origin']; - -if ($this->disabled) { -if (isset($job['request']['options']['http']['header']) && false !== stripos(implode('', $job['request']['options']['http']['header']), 'if-modified-since')) { -$resolve(new Response(['url' => $url], 304, [], '')); -} else { -$e = new TransportException('Network disabled, request canceled: '.Url::sanitize($url), 499); -$e->setStatusCode(499); -$reject($e); -} - -return; -} - -try { -if ($job['request']['copyTo']) { -$job['curl_id'] = $this->curl->download($resolve, $reject, $origin, $url, $options, $job['request']['copyTo']); -} else { -$job['curl_id'] = $this->curl->download($resolve, $reject, $origin, $url, $options); -} -} catch (\Exception $exception) { -$reject($exception); -} -} - -private function markJobDone(): void -{ -$this->runningJobs--; -} - - - - - - - - -public function wait(?int $index = null) -{ -do { -$jobCount = $this->countActiveJobs($index); -} while ($jobCount); -} - - - - -public function enableAsync(): void -{ -$this->allowAsync = true; -} - - - - - - - -public function countActiveJobs(?int $index = null): int -{ -if ($this->runningJobs < $this->maxJobs) { -foreach ($this->jobs as $job) { -if ($job['status'] === self::STATUS_QUEUED && $this->runningJobs < $this->maxJobs) { -$this->startJob($job['id']); -} -} -} - -if ($this->curl) { -$this->curl->tick(); -} - -if (null !== $index) { -return $this->jobs[$index]['status'] < self::STATUS_COMPLETED ? 1 : 0; -} - -$active = 0; -foreach ($this->jobs as $job) { -if ($job['status'] < self::STATUS_COMPLETED) { -$active++; -} elseif (!$job['sync']) { -unset($this->jobs[$job['id']]); -} -} - -return $active; -} - - - - -private function getResponse(int $index): Response -{ -if (!isset($this->jobs[$index])) { -throw new \LogicException('Invalid request id'); -} - -if ($this->jobs[$index]['status'] === self::STATUS_FAILED) { -assert(isset($this->jobs[$index]['exception'])); -throw $this->jobs[$index]['exception']; -} - -if (!isset($this->jobs[$index]['response'])) { -throw new \LogicException('Response not available yet, call wait() first'); -} - -$resp = $this->jobs[$index]['response']; - -unset($this->jobs[$index]); - -return $resp; -} - - - - - - -public static function outputWarnings(IOInterface $io, string $url, $data): void -{ -$cleanMessage = static function ($msg) use ($io) { -if (!$io->isDecorated()) { -$msg = Preg::replace('{'.chr(27).'\\[[;\d]*m}u', '', $msg); -} - -return $msg; -}; - - -foreach (['warning', 'info'] as $type) { -if (empty($data[$type])) { -continue; -} - -if (!empty($data[$type . '-versions'])) { -$versionParser = new VersionParser(); -$constraint = $versionParser->parseConstraints($data[$type . '-versions']); -$composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); -if (!$constraint->matches($composer)) { -continue; -} -} - -$io->writeError('<'.$type.'>'.ucfirst($type).' from '.Url::sanitize($url).': '.$cleanMessage($data[$type]).''); -} - - -foreach (['warnings', 'infos'] as $key) { -if (empty($data[$key])) { -continue; -} - -$versionParser = new VersionParser(); -foreach ($data[$key] as $spec) { -$type = substr($key, 0, -1); -$constraint = $versionParser->parseConstraints($spec['versions']); -$composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); -if (!$constraint->matches($composer)) { -continue; -} - -$io->writeError('<'.$type.'>'.ucfirst($type).' from '.Url::sanitize($url).': '.$cleanMessage($spec['message']).''); -} -} -} - - - - - - -public static function getExceptionHints(\Throwable $e): ?array -{ -if (!$e instanceof TransportException) { -return null; -} - -if ( -false !== strpos($e->getMessage(), 'Resolving timed out') -|| false !== strpos($e->getMessage(), 'Could not resolve host') -) { -Silencer::suppress(); -$testConnectivity = file_get_contents('https://8.8.8.8', false, stream_context_create([ -'ssl' => ['verify_peer' => false], -'http' => ['follow_location' => false, 'ignore_errors' => true], -])); -Silencer::restore(); -if (false !== $testConnectivity) { -return [ -'The following exception probably indicates you have misconfigured DNS resolver(s)', -]; -} - -return [ -'The following exception probably indicates you are offline or have misconfigured DNS resolver(s)', -]; -} - -return null; -} - - - - -private function canUseCurl(array $job): bool -{ -if (!$this->curl) { -return false; -} - -if (!Preg::isMatch('{^https?://}i', $job['request']['url'])) { -return false; -} - -if (!empty($job['request']['options']['ssl']['allow_self_signed'])) { -return false; -} - -return true; -} - - - - -public static function isCurlEnabled(): bool -{ -return \extension_loaded('curl') && \function_exists('curl_multi_exec') && \function_exists('curl_multi_init'); -} -} diff --git a/composer/src/Composer/Util/IniHelper.php b/composer/src/Composer/Util/IniHelper.php deleted file mode 100644 index 4501a0e6e..000000000 --- a/composer/src/Composer/Util/IniHelper.php +++ /dev/null @@ -1,62 +0,0 @@ -httpDownloader = $httpDownloader; -$this->httpDownloader->enableAsync(); - -$this->processExecutor = $processExecutor; -if ($this->processExecutor) { -$this->processExecutor->enableAsync(); -} -} - -public function getHttpDownloader(): HttpDownloader -{ -return $this->httpDownloader; -} - -public function getProcessExecutor(): ?ProcessExecutor -{ -return $this->processExecutor; -} - - - - - -public function wait(array $promises, ?ProgressBar $progress = null): void -{ - -$uncaught = null; - -\React\Promise\all($promises)->then( -static function (): void { -}, -static function ($e) use (&$uncaught): void { -$uncaught = $e; -} -); - - - -$waitIndex = $this->waitIndex++; -$this->currentPromises[$waitIndex] = $promises; - -if ($progress) { -$totalJobs = 0; -$totalJobs += $this->httpDownloader->countActiveJobs(); -if ($this->processExecutor) { -$totalJobs += $this->processExecutor->countActiveJobs(); -} -$progress->start($totalJobs); -} - -$lastUpdate = 0; -while (true) { -$activeJobs = 0; - -$activeJobs += $this->httpDownloader->countActiveJobs(); -if ($this->processExecutor) { -$activeJobs += $this->processExecutor->countActiveJobs(); -} - -if ($progress && microtime(true) - $lastUpdate > 0.1) { -$lastUpdate = microtime(true); -$progress->setProgress($progress->getMaxSteps() - $activeJobs); -} - -if (!$activeJobs) { -break; -} -} - - -if ($progress) { -$progress->finish(); -} - -unset($this->currentPromises[$waitIndex]); -if ($uncaught) { -throw $uncaught; -} -} - -public function abortJobs(): void -{ -foreach ($this->currentPromises as $promiseGroup) { -foreach ($promiseGroup as $promise) { -if ($promise instanceof CancellablePromiseInterface) { -$promise->cancel(); -} -} -} -} -} diff --git a/composer/src/Composer/Util/MetadataMinifier.php b/composer/src/Composer/Util/MetadataMinifier.php deleted file mode 100644 index 0a24e014e..000000000 --- a/composer/src/Composer/Util/MetadataMinifier.php +++ /dev/null @@ -1,22 +0,0 @@ -hostNames = Preg::split('{[\s,]+}', $pattern, -1, PREG_SPLIT_NO_EMPTY); -$this->noproxy = empty($this->hostNames) || '*' === $this->hostNames[0]; -} - - - - -public function test(string $url): bool -{ -if ($this->noproxy) { -return true; -} - -if (!$urlData = $this->getUrlData($url)) { -return false; -} - -foreach ($this->hostNames as $index => $hostName) { -if ($this->match($index, $hostName, $urlData)) { -return true; -} -} - -return false; -} - - - - - - -protected function getUrlData(string $url) -{ -if (!$host = parse_url($url, PHP_URL_HOST)) { -return false; -} - -$port = parse_url($url, PHP_URL_PORT); - -if (empty($port)) { -switch (parse_url($url, PHP_URL_SCHEME)) { -case 'http': -$port = 80; -break; -case 'https': -$port = 443; -break; -} -} - -$hostName = $host . ($port ? ':' . $port : ''); -[$host, $port, $err] = $this->splitHostPort($hostName); - -if ($err || !$this->ipCheckData($host, $ipdata)) { -return false; -} - -return $this->makeData($host, $port, $ipdata); -} - - - - -protected function match(int $index, string $hostName, stdClass $url): bool -{ -if (!$rule = $this->getRule($index, $hostName)) { - -return false; -} - -if ($rule->ipdata) { - -if (!$url->ipdata) { -return false; -} - -if ($rule->ipdata->netmask) { -return $this->matchRange($rule->ipdata, $url->ipdata); -} - -$match = $rule->ipdata->ip === $url->ipdata->ip; -} else { - -$haystack = substr($url->name, -strlen($rule->name)); -$match = stripos($haystack, $rule->name) === 0; -} - -if ($match && $rule->port) { -$match = $rule->port === $url->port; -} - -return $match; -} - - - - -protected function matchRange(stdClass $network, stdClass $target): bool -{ -$net = unpack('C*', $network->ip); -$mask = unpack('C*', $network->netmask); -$ip = unpack('C*', $target->ip); -if (false === $net) { -throw new \RuntimeException('Could not parse network IP '.$network->ip); -} -if (false === $mask) { -throw new \RuntimeException('Could not parse netmask '.$network->netmask); -} -if (false === $ip) { -throw new \RuntimeException('Could not parse target IP '.$target->ip); -} - -for ($i = 1; $i < 17; ++$i) { -if (($net[$i] & $mask[$i]) !== ($ip[$i] & $mask[$i])) { -return false; -} -} - -return true; -} - - - - - - -private function getRule(int $index, string $hostName): ?stdClass -{ -if (array_key_exists($index, $this->rules)) { -return $this->rules[$index]; -} - -$this->rules[$index] = null; -[$host, $port, $err] = $this->splitHostPort($hostName); - -if ($err || !$this->ipCheckData($host, $ipdata, true)) { -return null; -} - -$this->rules[$index] = $this->makeData($host, $port, $ipdata); - -return $this->rules[$index]; -} - - - - - - - - - -private function ipCheckData(string $host, ?stdClass &$ipdata, bool $allowPrefix = false): bool -{ -$ipdata = null; -$netmask = null; -$prefix = null; -$modified = false; - - -if (strpos($host, '/') !== false) { -[$host, $prefix] = explode('/', $host); - -if (!$allowPrefix || !$this->validateInt($prefix, 0, 128)) { -return false; -} -$prefix = (int) $prefix; -$modified = true; -} - - -if (!filter_var($host, FILTER_VALIDATE_IP)) { -return !$modified; -} - -[$ip, $size] = $this->ipGetAddr($host); - -if ($prefix !== null) { - -if ($prefix > $size * 8) { -return false; -} - -[$ip, $netmask] = $this->ipGetNetwork($ip, $size, $prefix); -} - -$ipdata = $this->makeIpData($ip, $size, $netmask); - -return true; -} - - - - - - - - - -private function ipGetAddr(string $host): array -{ -$ip = inet_pton($host); -$size = strlen($ip); -$mapped = $this->ipMapTo6($ip, $size); - -return [$mapped, $size]; -} - - - - - - - -private function ipGetMask(int $prefix, int $size): string -{ -$mask = ''; - -if ($ones = floor($prefix / 8)) { -$mask = str_repeat(chr(255), (int) $ones); -} - -if ($remainder = $prefix % 8) { -$mask .= chr(0xff ^ (0xff >> $remainder)); -} - -$mask = str_pad($mask, $size, chr(0)); - -return $this->ipMapTo6($mask, $size); -} - - - - - - - - - - -private function ipGetNetwork(string $rangeIp, int $size, int $prefix): array -{ -$netmask = $this->ipGetMask($prefix, $size); - - -$mask = unpack('C*', $netmask); -$ip = unpack('C*', $rangeIp); -$net = ''; -if (false === $mask) { -throw new \RuntimeException('Could not parse netmask '.$netmask); -} -if (false === $ip) { -throw new \RuntimeException('Could not parse range IP '.$rangeIp); -} - -for ($i = 1; $i < 17; ++$i) { -$net .= chr($ip[$i] & $mask[$i]); -} - -return [$net, $netmask]; -} - - - - - - - - - -private function ipMapTo6(string $binary, int $size): string -{ -if ($size === 4) { -$prefix = str_repeat(chr(0), 10) . str_repeat(chr(255), 2); -$binary = $prefix . $binary; -} - -return $binary; -} - - - - -private function makeData(string $host, int $port, ?stdClass $ipdata): stdClass -{ -return (object) [ -'host' => $host, -'name' => '.' . ltrim($host, '.'), -'port' => $port, -'ipdata' => $ipdata, -]; -} - - - - - - - - -private function makeIpData(string $ip, int $size, ?string $netmask): stdClass -{ -return (object) [ -'ip' => $ip, -'size' => $size, -'netmask' => $netmask, -]; -} - - - - - - -private function splitHostPort(string $hostName): array -{ - -$error = ['', '', true]; -$port = 0; -$ip6 = ''; - - -if ($hostName[0] === '[') { -$index = strpos($hostName, ']'); - - -if (false === $index || $index < 3) { -return $error; -} - -$ip6 = substr($hostName, 1, $index - 1); -$hostName = substr($hostName, $index + 1); - -if (strpbrk($hostName, '[]') !== false || substr_count($hostName, ':') > 1) { -return $error; -} -} - -if (substr_count($hostName, ':') === 1) { -$index = strpos($hostName, ':'); -$port = substr($hostName, $index + 1); -$hostName = substr($hostName, 0, $index); - -if (!$this->validateInt($port, 1, 65535)) { -return $error; -} - -$port = (int) $port; -} - -$host = $ip6 . $hostName; - -return [$host, $port, false]; -} - - - - -private function validateInt(string $int, int $min, int $max): bool -{ -$options = [ -'options' => [ -'min_range' => $min, -'max_range' => $max, -], -]; - -return false !== filter_var($int, FILTER_VALIDATE_INT, $options); -} -} diff --git a/composer/src/Composer/Util/PackageInfo.php b/composer/src/Composer/Util/PackageInfo.php deleted file mode 100644 index ca4ba3078..000000000 --- a/composer/src/Composer/Util/PackageInfo.php +++ /dev/null @@ -1,33 +0,0 @@ -getSupport()['source'])) { -return $package->getSupport()['source']; -} - -return $package->getSourceUrl(); -} - -public static function getViewSourceOrHomepageUrl(PackageInterface $package): ?string -{ -return self::getViewSourceUrl($package) ?? ($package instanceof CompletePackageInterface ? $package->getHomepage() : null); -} -} diff --git a/composer/src/Composer/Util/PackageSorter.php b/composer/src/Composer/Util/PackageSorter.php deleted file mode 100644 index 44af7a170..000000000 --- a/composer/src/Composer/Util/PackageSorter.php +++ /dev/null @@ -1,140 +0,0 @@ -isDefaultBranch()) { -return $candidate; -} - -if (version_compare($highest->getVersion(), $candidate->getVersion(), '<')) { -$highest = $candidate; -} -} - -return $highest; -} - - - - - - - - -public static function sortPackagesAlphabetically(array $packages): array -{ -usort($packages, static function (PackageInterface $a, PackageInterface $b) { -return $a->getName() <=> $b->getName(); -}); - -return $packages; -} - - - - - - - - - - -public static function sortPackages(array $packages, array $weights = []): array -{ -$usageList = []; - -foreach ($packages as $package) { -$links = $package->getRequires(); -if ($package instanceof RootPackageInterface) { -$links = array_merge($links, $package->getDevRequires()); -} -foreach ($links as $link) { -$target = $link->getTarget(); -$usageList[$target][] = $package->getName(); -} -} -$computing = []; -$computed = []; -$computeImportance = static function ($name) use (&$computeImportance, &$computing, &$computed, $usageList, $weights) { - -if (isset($computed[$name])) { -return $computed[$name]; -} - - -if (isset($computing[$name])) { -return 0; -} - -$computing[$name] = true; -$weight = $weights[$name] ?? 0; - -if (isset($usageList[$name])) { -foreach ($usageList[$name] as $user) { -$weight -= 1 - $computeImportance($user); -} -} - -unset($computing[$name]); -$computed[$name] = $weight; - -return $weight; -}; - -$weightedPackages = []; - -foreach ($packages as $index => $package) { -$name = $package->getName(); -$weight = $computeImportance($name); -$weightedPackages[] = ['name' => $name, 'weight' => $weight, 'index' => $index]; -} - -usort($weightedPackages, static function (array $a, array $b): int { -if ($a['weight'] !== $b['weight']) { -return $a['weight'] - $b['weight']; -} - -return strnatcasecmp($a['name'], $b['name']); -}); - -$sortedPackages = []; - -foreach ($weightedPackages as $pkg) { -$sortedPackages[] = $packages[$pkg['index']]; -} - -return $sortedPackages; -} -} diff --git a/composer/src/Composer/Util/Perforce.php b/composer/src/Composer/Util/Perforce.php deleted file mode 100644 index 73fb7c552..000000000 --- a/composer/src/Composer/Util/Perforce.php +++ /dev/null @@ -1,623 +0,0 @@ -windowsFlag = $isWindows; -$this->p4Port = $port; -$this->initializePath($path); -$this->process = $process; -$this->initialize($repoConfig); -$this->io = $io; -} - - - - -public static function create($repoConfig, string $port, string $path, ProcessExecutor $process, IOInterface $io): self -{ -return new Perforce($repoConfig, $port, $path, $process, Platform::isWindows(), $io); -} - -public static function checkServerExists(string $url, ProcessExecutor $processExecutor): bool -{ -return 0 === $processExecutor->execute('p4 -p ' . ProcessExecutor::escape($url) . ' info -s', $ignoredOutput); -} - - - - -public function initialize($repoConfig): void -{ -$this->uniquePerforceClientName = $this->generateUniquePerforceClientName(); -if (!$repoConfig) { -return; -} -if (isset($repoConfig['unique_perforce_client_name'])) { -$this->uniquePerforceClientName = $repoConfig['unique_perforce_client_name']; -} - -if (isset($repoConfig['depot'])) { -$this->p4Depot = $repoConfig['depot']; -} -if (isset($repoConfig['branch'])) { -$this->p4Branch = $repoConfig['branch']; -} -if (isset($repoConfig['p4user'])) { -$this->p4User = $repoConfig['p4user']; -} else { -$this->p4User = $this->getP4variable('P4USER'); -} -if (isset($repoConfig['p4password'])) { -$this->p4Password = $repoConfig['p4password']; -} -} - -public function initializeDepotAndBranch(?string $depot, ?string $branch): void -{ -if (isset($depot)) { -$this->p4Depot = $depot; -} -if (isset($branch)) { -$this->p4Branch = $branch; -} -} - - - - -public function generateUniquePerforceClientName(): string -{ -return gethostname() . "_" . time(); -} - -public function cleanupClientSpec(): void -{ -$client = $this->getClient(); -$task = 'client -d ' . ProcessExecutor::escape($client); -$useP4Client = false; -$command = $this->generateP4Command($task, $useP4Client); -$this->executeCommand($command); -$clientSpec = $this->getP4ClientSpec(); -$fileSystem = $this->getFilesystem(); -$fileSystem->remove($clientSpec); -} - - - - -protected function executeCommand($command): int -{ -$this->commandResult = ''; - -return $this->process->execute($command, $this->commandResult); -} - -public function getClient(): string -{ -if (!isset($this->p4Client)) { -$cleanStreamName = str_replace(['//', '/', '@'], ['', '_', ''], $this->getStream()); -$this->p4Client = 'composer_perforce_' . $this->uniquePerforceClientName . '_' . $cleanStreamName; -} - -return $this->p4Client; -} - -protected function getPath(): string -{ -return $this->path; -} - -public function initializePath(string $path): void -{ -$this->path = $path; -$fs = $this->getFilesystem(); -$fs->ensureDirectoryExists($path); -} - -protected function getPort(): string -{ -return $this->p4Port; -} - -public function setStream(string $stream): void -{ -$this->p4Stream = $stream; -$index = strrpos($stream, '/'); - -if ($index > 2) { -$this->p4DepotType = 'stream'; -} -} - -public function isStream(): bool -{ -return is_string($this->p4DepotType) && (strcmp($this->p4DepotType, 'stream') === 0); -} - -public function getStream(): string -{ -if (!isset($this->p4Stream)) { -if ($this->isStream()) { -$this->p4Stream = '//' . $this->p4Depot . '/' . $this->p4Branch; -} else { -$this->p4Stream = '//' . $this->p4Depot; -} -} - -return $this->p4Stream; -} - -public function getStreamWithoutLabel(string $stream): string -{ -$index = strpos($stream, '@'); -if ($index === false) { -return $stream; -} - -return substr($stream, 0, $index); -} - - - - -public function getP4ClientSpec(): string -{ -return $this->path . '/' . $this->getClient() . '.p4.spec'; -} - -public function getUser(): ?string -{ -return $this->p4User; -} - -public function setUser(?string $user): void -{ -$this->p4User = $user; -} - -public function queryP4User(): void -{ -$this->getUser(); -if (strlen((string) $this->p4User) > 0) { -return; -} -$this->p4User = $this->getP4variable('P4USER'); -if (strlen((string) $this->p4User) > 0) { -return; -} -$this->p4User = $this->io->ask('Enter P4 User:'); -if ($this->windowsFlag) { -$command = 'p4 set P4USER=' . $this->p4User; -} else { -$command = 'export P4USER=' . $this->p4User; -} -$this->executeCommand($command); -} - - - - -protected function getP4variable(string $name): ?string -{ -if ($this->windowsFlag) { -$command = 'p4 set'; -$this->executeCommand($command); -$result = trim($this->commandResult); -$resArray = explode(PHP_EOL, $result); -foreach ($resArray as $line) { -$fields = explode('=', $line); -if (strcmp($name, $fields[0]) === 0) { -$index = strpos($fields[1], ' '); -if ($index === false) { -$value = $fields[1]; -} else { -$value = substr($fields[1], 0, $index); -} -$value = trim($value); - -return $value; -} -} - -return null; -} - -$command = 'echo $' . $name; -$this->executeCommand($command); -$result = trim($this->commandResult); - -return $result; -} - -public function queryP4Password(): ?string -{ -if (isset($this->p4Password)) { -return $this->p4Password; -} -$password = $this->getP4variable('P4PASSWD'); -if (strlen((string) $password) <= 0) { -$password = $this->io->askAndHideAnswer('Enter password for Perforce user ' . $this->getUser() . ': '); -} -$this->p4Password = $password; - -return $password; -} - - - - -public function generateP4Command(string $command, bool $useClient = true): string -{ -$p4Command = 'p4 '; -$p4Command .= '-u ' . $this->getUser() . ' '; -if ($useClient) { -$p4Command .= '-c ' . $this->getClient() . ' '; -} -$p4Command .= '-p ' . $this->getPort() . ' ' . $command; - -return $p4Command; -} - -public function isLoggedIn(): bool -{ -$command = $this->generateP4Command('login -s', false); -$exitCode = $this->executeCommand($command); -if ($exitCode) { -$errorOutput = $this->process->getErrorOutput(); -$index = strpos($errorOutput, $this->getUser()); -if ($index === false) { -$index = strpos($errorOutput, 'p4'); -if ($index === false) { -return false; -} -throw new \Exception('p4 command not found in path: ' . $errorOutput); -} -throw new \Exception('Invalid user name: ' . $this->getUser()); -} - -return true; -} - -public function connectClient(): void -{ -$p4CreateClientCommand = $this->generateP4Command( -'client -i < ' . str_replace(" ", "\\ ", $this->getP4ClientSpec()) -); -$this->executeCommand($p4CreateClientCommand); -} - -public function syncCodeBase(?string $sourceReference): void -{ -$prevDir = Platform::getCwd(); -chdir($this->path); -$p4SyncCommand = $this->generateP4Command('sync -f '); -if (null !== $sourceReference) { -$p4SyncCommand .= '@' . $sourceReference; -} -$this->executeCommand($p4SyncCommand); -chdir($prevDir); -} - - - - -public function writeClientSpecToFile($spec): void -{ -fwrite($spec, 'Client: ' . $this->getClient() . PHP_EOL . PHP_EOL); -fwrite($spec, 'Update: ' . date('Y/m/d H:i:s') . PHP_EOL . PHP_EOL); -fwrite($spec, 'Access: ' . date('Y/m/d H:i:s') . PHP_EOL); -fwrite($spec, 'Owner: ' . $this->getUser() . PHP_EOL . PHP_EOL); -fwrite($spec, 'Description:' . PHP_EOL); -fwrite($spec, ' Created by ' . $this->getUser() . ' from composer.' . PHP_EOL . PHP_EOL); -fwrite($spec, 'Root: ' . $this->getPath() . PHP_EOL . PHP_EOL); -fwrite($spec, 'Options: noallwrite noclobber nocompress unlocked modtime rmdir' . PHP_EOL . PHP_EOL); -fwrite($spec, 'SubmitOptions: revertunchanged' . PHP_EOL . PHP_EOL); -fwrite($spec, 'LineEnd: local' . PHP_EOL . PHP_EOL); -if ($this->isStream()) { -fwrite($spec, 'Stream:' . PHP_EOL); -fwrite($spec, ' ' . $this->getStreamWithoutLabel($this->p4Stream) . PHP_EOL); -} else { -fwrite( -$spec, -'View: ' . $this->getStream() . '/... //' . $this->getClient() . '/... ' . PHP_EOL -); -} -} - -public function writeP4ClientSpec(): void -{ -$clientSpec = $this->getP4ClientSpec(); -$spec = fopen($clientSpec, 'w'); -try { -$this->writeClientSpecToFile($spec); -} catch (\Exception $e) { -fclose($spec); -throw $e; -} -fclose($spec); -} - - - - - -protected function read($pipe, $name): void -{ -if (feof($pipe)) { -return; -} -$line = fgets($pipe); -while ($line !== false) { -$line = fgets($pipe); -} -} - -public function windowsLogin(?string $password): int -{ -$command = $this->generateP4Command(' login -a'); - -$process = Process::fromShellCommandline($command, null, null, $password); - -return $process->run(); -} - -public function p4Login(): void -{ -$this->queryP4User(); -if (!$this->isLoggedIn()) { -$password = $this->queryP4Password(); -if ($this->windowsFlag) { -$this->windowsLogin($password); -} else { -$command = 'echo ' . ProcessExecutor::escape($password) . ' | ' . $this->generateP4Command(' login -a', false); -$exitCode = $this->executeCommand($command); -if ($exitCode) { -throw new \Exception("Error logging in:" . $this->process->getErrorOutput()); -} -} -} -} - - - - -public function getComposerInformation(string $identifier): ?array -{ -$composerFileContent = $this->getFileContent('composer.json', $identifier); - -if (!$composerFileContent) { -return null; -} - -return json_decode($composerFileContent, true); -} - -public function getFileContent(string $file, string $identifier): ?string -{ -$path = $this->getFilePath($file, $identifier); - -$command = $this->generateP4Command(' print ' . ProcessExecutor::escape($path)); -$this->executeCommand($command); -$result = $this->commandResult; - -if (!trim($result)) { -return null; -} - -return $result; -} - -public function getFilePath(string $file, string $identifier): ?string -{ -$index = strpos($identifier, '@'); -if ($index === false) { -return $identifier. '/' . $file; -} - -$path = substr($identifier, 0, $index) . '/' . $file . substr($identifier, $index); -$command = $this->generateP4Command(' files ' . ProcessExecutor::escape($path), false); -$this->executeCommand($command); -$result = $this->commandResult; -$index2 = strpos($result, 'no such file(s).'); -if ($index2 === false) { -$index3 = strpos($result, 'change'); -if ($index3 !== false) { -$phrase = trim(substr($result, $index3)); -$fields = explode(' ', $phrase); - -return substr($identifier, 0, $index) . '/' . $file . '@' . $fields[1]; -} -} - -return null; -} - - - - -public function getBranches(): array -{ -$possibleBranches = []; -if (!$this->isStream()) { -$possibleBranches[$this->p4Branch] = $this->getStream(); -} else { -$command = $this->generateP4Command('streams '.ProcessExecutor::escape('//' . $this->p4Depot . '/...')); -$this->executeCommand($command); -$result = $this->commandResult; -$resArray = explode(PHP_EOL, $result); -foreach ($resArray as $line) { -$resBits = explode(' ', $line); -if (count($resBits) > 4) { -$branch = Preg::replace('/[^A-Za-z0-9 ]/', '', $resBits[4]); -$possibleBranches[$branch] = $resBits[1]; -} -} -} -$command = $this->generateP4Command('changes '. ProcessExecutor::escape($this->getStream() . '/...'), false); -$this->executeCommand($command); -$result = $this->commandResult; -$resArray = explode(PHP_EOL, $result); -$lastCommit = $resArray[0]; -$lastCommitArr = explode(' ', $lastCommit); -$lastCommitNum = $lastCommitArr[1]; - -return ['master' => $possibleBranches[$this->p4Branch] . '@'. $lastCommitNum]; -} - - - - -public function getTags(): array -{ -$command = $this->generateP4Command('labels'); -$this->executeCommand($command); -$result = $this->commandResult; -$resArray = explode(PHP_EOL, $result); -$tags = []; -foreach ($resArray as $line) { -if (strpos($line, 'Label') !== false) { -$fields = explode(' ', $line); -$tags[$fields[1]] = $this->getStream() . '@' . $fields[1]; -} -} - -return $tags; -} - -public function checkStream(): bool -{ -$command = $this->generateP4Command('depots', false); -$this->executeCommand($command); -$result = $this->commandResult; -$resArray = explode(PHP_EOL, $result); -foreach ($resArray as $line) { -if (strpos($line, 'Depot') !== false) { -$fields = explode(' ', $line); -if (strcmp($this->p4Depot, $fields[1]) === 0) { -$this->p4DepotType = $fields[3]; - -return $this->isStream(); -} -} -} - -return false; -} - - - - -protected function getChangeList(string $reference): mixed -{ -$index = strpos($reference, '@'); -if ($index === false) { -return null; -} -$label = substr($reference, $index); -$command = $this->generateP4Command(' changes -m1 ' . ProcessExecutor::escape($label)); -$this->executeCommand($command); -$changes = $this->commandResult; -if (strpos($changes, 'Change') !== 0) { -return null; -} -$fields = explode(' ', $changes); - -return $fields[1]; -} - - - - -public function getCommitLogs(string $fromReference, string $toReference): mixed -{ -$fromChangeList = $this->getChangeList($fromReference); -if ($fromChangeList === null) { -return null; -} -$toChangeList = $this->getChangeList($toReference); -if ($toChangeList === null) { -return null; -} -$index = strpos($fromReference, '@'); -$main = substr($fromReference, 0, $index) . '/...'; -$command = $this->generateP4Command('filelog ' . ProcessExecutor::escape($main . '@' . $fromChangeList. ',' . $toChangeList)); -$this->executeCommand($command); - -return $this->commandResult; -} - -public function getFilesystem(): Filesystem -{ -if (null === $this->filesystem) { -$this->filesystem = new Filesystem($this->process); -} - -return $this->filesystem; -} - -public function setFilesystem(Filesystem $fs): void -{ -$this->filesystem = $fs; -} -} diff --git a/composer/src/Composer/Util/Platform.php b/composer/src/Composer/Util/Platform.php deleted file mode 100644 index c25423fdb..000000000 --- a/composer/src/Composer/Util/Platform.php +++ /dev/null @@ -1,285 +0,0 @@ -%))(?P\w++)(?(percent)%)(?P.*)#', static function ($matches): string { -assert(is_string($matches['var'])); - - -if (Platform::isWindows() && $matches['var'] === 'HOME') { -return (Platform::getEnv('HOME') ?: Platform::getEnv('USERPROFILE')) . $matches['path']; -} - -return Platform::getEnv($matches['var']) . $matches['path']; -}, $path); -} - - - - - -public static function getUserDirectory(): string -{ -if (false !== ($home = self::getEnv('HOME'))) { -return $home; -} - -if (self::isWindows() && false !== ($home = self::getEnv('USERPROFILE'))) { -return $home; -} - -if (\function_exists('posix_getuid') && \function_exists('posix_getpwuid')) { -$info = posix_getpwuid(posix_getuid()); - -return $info['dir']; -} - -throw new \RuntimeException('Could not determine user directory'); -} - - - - -public static function isWindowsSubsystemForLinux(): bool -{ -if (null === self::$isWindowsSubsystemForLinux) { -self::$isWindowsSubsystemForLinux = false; - - -if (self::isWindows()) { -return self::$isWindowsSubsystemForLinux = false; -} - -if ( -!ini_get('open_basedir') -&& is_readable('/proc/version') -&& false !== stripos(Silencer::call('file_get_contents', '/proc/version'), 'microsoft') -&& !file_exists('/.dockerenv') -) { -return self::$isWindowsSubsystemForLinux = true; -} -} - -return self::$isWindowsSubsystemForLinux; -} - - - - -public static function isWindows(): bool -{ -return \defined('PHP_WINDOWS_VERSION_BUILD'); -} - - - - -public static function strlen(string $str): int -{ -static $useMbString = null; -if (null === $useMbString) { -$useMbString = \function_exists('mb_strlen') && ini_get('mbstring.func_overload'); -} - -if ($useMbString) { -return mb_strlen($str, '8bit'); -} - -return \strlen($str); -} - - - - -public static function isTty($fd = null): bool -{ -if ($fd === null) { -$fd = defined('STDOUT') ? STDOUT : fopen('php://stdout', 'w'); -if ($fd === false) { -return false; -} -} - - - -if (in_array(strtoupper(self::getEnv('MSYSTEM') ?: ''), ['MINGW32', 'MINGW64'], true)) { -return true; -} - - - -if (function_exists('stream_isatty')) { -return stream_isatty($fd); -} - - -if (function_exists('posix_isatty') && posix_isatty($fd)) { -return true; -} - -$stat = @fstat($fd); - -return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; -} - - - - -public static function isInputCompletionProcess(): bool -{ -return '_complete' === ($_SERVER['argv'][1] ?? null); -} - -public static function workaroundFilesystemIssues(): void -{ -if (self::isVirtualBoxGuest()) { -usleep(200000); -} -} - - - - - - -private static function isVirtualBoxGuest(): bool -{ -if (null === self::$isVirtualBoxGuest) { -self::$isVirtualBoxGuest = false; -if (self::isWindows()) { -return self::$isVirtualBoxGuest; -} - -if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { -$processUser = posix_getpwuid(posix_geteuid()); -if ($processUser && $processUser['name'] === 'vagrant') { -return self::$isVirtualBoxGuest = true; -} -} - -if (self::getEnv('COMPOSER_RUNTIME_ENV') === 'virtualbox') { -return self::$isVirtualBoxGuest = true; -} - -if (defined('PHP_OS_FAMILY') && PHP_OS_FAMILY === 'Linux') { -$process = new ProcessExecutor(); -try { -if (0 === $process->execute('lsmod | grep vboxguest', $ignoredOutput)) { -return self::$isVirtualBoxGuest = true; -} -} catch (\Exception $e) { - -} -} -} - -return self::$isVirtualBoxGuest; -} - - - - -public static function getDevNull(): string -{ -if (self::isWindows()) { -return 'NUL'; -} - -return '/dev/null'; -} -} diff --git a/composer/src/Composer/Util/ProcessExecutor.php b/composer/src/Composer/Util/ProcessExecutor.php deleted file mode 100644 index b6e37d094..000000000 --- a/composer/src/Composer/Util/ProcessExecutor.php +++ /dev/null @@ -1,480 +0,0 @@ -io = $io; -} - - - - - - - - - - -public function execute($command, &$output = null, ?string $cwd = null): int -{ -if (func_num_args() > 1) { -return $this->doExecute($command, $cwd, false, $output); -} - -return $this->doExecute($command, $cwd, false); -} - - - - - - - - -public function executeTty($command, ?string $cwd = null): int -{ -if (Platform::isTty()) { -return $this->doExecute($command, $cwd, true); -} - -return $this->doExecute($command, $cwd, false); -} - - - - - -private function doExecute($command, ?string $cwd, bool $tty, &$output = null): int -{ -$this->outputCommandRun($command, $cwd, false); - -$this->captureOutput = func_num_args() > 3; -$this->errorOutput = ''; - -if (is_string($command)) { -$process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); -} else { -$process = new Process($command, $cwd, null, null, static::getTimeout()); -} - -if (!Platform::isWindows() && $tty) { -try { -$process->setTty(true); -} catch (RuntimeException $e) { - -} -} - -$callback = is_callable($output) ? $output : function (string $type, string $buffer): void { -$this->outputHandler($type, $buffer); -}; - -$signalHandler = SignalHandler::create([SignalHandler::SIGINT, SignalHandler::SIGTERM, SignalHandler::SIGHUP], function (string $signal) { -if ($this->io !== null) { -$this->io->writeError('Received '.$signal.', aborting when child process is done', true, IOInterface::DEBUG); -} -}); - -try { -$process->run($callback); - -if ($this->captureOutput && !is_callable($output)) { -$output = $process->getOutput(); -} - -$this->errorOutput = $process->getErrorOutput(); -} catch (ProcessSignaledException $e) { -if ($signalHandler->isTriggered()) { - -$signalHandler->exitWithLastSignal(); -} -} finally { -$signalHandler->unregister(); -} - -return $process->getExitCode(); -} - - - - - - - -public function executeAsync($command, ?string $cwd = null): PromiseInterface -{ -if (!$this->allowAsync) { -throw new \LogicException('You must use the ProcessExecutor instance which is part of a Composer\Loop instance to be able to run async processes'); -} - -$job = [ -'id' => $this->idGen++, -'status' => self::STATUS_QUEUED, -'command' => $command, -'cwd' => $cwd, -]; - -$resolver = static function ($resolve, $reject) use (&$job): void { -$job['status'] = ProcessExecutor::STATUS_QUEUED; -$job['resolve'] = $resolve; -$job['reject'] = $reject; -}; - -$canceler = static function () use (&$job): void { -if ($job['status'] === ProcessExecutor::STATUS_QUEUED) { -$job['status'] = ProcessExecutor::STATUS_ABORTED; -} -if ($job['status'] !== ProcessExecutor::STATUS_STARTED) { -return; -} -$job['status'] = ProcessExecutor::STATUS_ABORTED; -try { -if (defined('SIGINT')) { -$job['process']->signal(SIGINT); -} -} catch (\Exception $e) { - -} -$job['process']->stop(1); - -throw new \RuntimeException('Aborted process'); -}; - -$promise = new Promise($resolver, $canceler); -$promise = $promise->then(function () use (&$job) { -if ($job['process']->isSuccessful()) { -$job['status'] = ProcessExecutor::STATUS_COMPLETED; -} else { -$job['status'] = ProcessExecutor::STATUS_FAILED; -} - -$this->markJobDone(); - -return $job['process']; -}, function ($e) use (&$job): void { -$job['status'] = ProcessExecutor::STATUS_FAILED; - -$this->markJobDone(); - -throw $e; -}); -$this->jobs[$job['id']] = &$job; - -if ($this->runningJobs < $this->maxJobs) { -$this->startJob($job['id']); -} - -return $promise; -} - -protected function outputHandler(string $type, string $buffer): void -{ -if ($this->captureOutput) { -return; -} - -if (null === $this->io) { -echo $buffer; - -return; -} - -if (Process::ERR === $type) { -$this->io->writeErrorRaw($buffer, false); -} else { -$this->io->writeRaw($buffer, false); -} -} - -private function startJob(int $id): void -{ -$job = &$this->jobs[$id]; -if ($job['status'] !== self::STATUS_QUEUED) { -return; -} - - -$job['status'] = self::STATUS_STARTED; -$this->runningJobs++; - -$command = $job['command']; -$cwd = $job['cwd']; - -$this->outputCommandRun($command, $cwd, true); - -try { -if (is_string($command)) { -$process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); -} else { -$process = new Process($command, $cwd, null, null, static::getTimeout()); -} -} catch (\Throwable $e) { -$job['reject']($e); - -return; -} - -$job['process'] = $process; - -try { -$process->start(); -} catch (\Throwable $e) { -$job['reject']($e); - -return; -} -} - -public function setMaxJobs(int $maxJobs): void -{ -$this->maxJobs = $maxJobs; -} - -public function resetMaxJobs(): void -{ -$this->maxJobs = 10; -} - - - - -public function wait($index = null): void -{ -while (true) { -if (0 === $this->countActiveJobs($index)) { -return; -} - -usleep(1000); -} -} - - - - -public function enableAsync(): void -{ -$this->allowAsync = true; -} - - - - - - - -public function countActiveJobs($index = null): int -{ - -foreach ($this->jobs as $job) { -if ($job['status'] === self::STATUS_STARTED) { -if (!$job['process']->isRunning()) { -call_user_func($job['resolve'], $job['process']); -} - -$job['process']->checkTimeout(); -} - -if ($this->runningJobs < $this->maxJobs) { -if ($job['status'] === self::STATUS_QUEUED) { -$this->startJob($job['id']); -} -} -} - -if (null !== $index) { -return $this->jobs[$index]['status'] < self::STATUS_COMPLETED ? 1 : 0; -} - -$active = 0; -foreach ($this->jobs as $job) { -if ($job['status'] < self::STATUS_COMPLETED) { -$active++; -} else { -unset($this->jobs[$job['id']]); -} -} - -return $active; -} - -private function markJobDone(): void -{ -$this->runningJobs--; -} - - - - -public function splitLines(?string $output): array -{ -$output = trim((string) $output); - -return $output === '' ? [] : Preg::split('{\r?\n}', $output); -} - - - - -public function getErrorOutput(): string -{ -return $this->errorOutput; -} - - - - -public static function getTimeout(): int -{ -return static::$timeout; -} - - - - -public static function setTimeout(int $timeout): void -{ -static::$timeout = $timeout; -} - - - - - - - - -public static function escape($argument): string -{ -return self::escapeArgument($argument); -} - - - - -private function outputCommandRun($command, ?string $cwd, bool $async): void -{ -if (null === $this->io || !$this->io->isDebug()) { -return; -} - -$commandString = is_string($command) ? $command : implode(' ', array_map(self::class.'::escape', $command)); -$safeCommand = Preg::replaceCallback('{://(?P[^:/\s]+):(?P[^@\s/]+)@}i', static function ($m): string { -assert(is_string($m['user'])); - - -if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+)$}', $m['user'])) { -return '://***:***@'; -} -if (Preg::isMatch('{^[a-f0-9]{12,}$}', $m['user'])) { -return '://***:***@'; -} - -return '://'.$m['user'].':***@'; -}, $commandString); -$safeCommand = Preg::replace("{--password (.*[^\\\\]\') }", '--password \'***\' ', $safeCommand); -$this->io->writeError('Executing'.($async ? ' async' : '').' command ('.($cwd ?: 'CWD').'): '.$safeCommand); -} - - - - - - - - - - - - - - -private static function escapeArgument($argument): string -{ -if ('' === ($argument = (string) $argument)) { -return escapeshellarg($argument); -} - -if (!Platform::isWindows()) { -return "'".str_replace("'", "'\\''", $argument)."'"; -} - - -$argument = strtr($argument, "\n", ' '); - - -$quote = strpbrk($argument, " \t,") !== false; -$argument = Preg::replace('/(\\\\*)"/', '$1$1\\"', $argument, -1, $dquotes); -$meta = $dquotes > 0 || Preg::isMatch('/%[^%]+%|![^!]+!/', $argument); - -if (!$meta && !$quote) { -$quote = strpbrk($argument, '^&|<>()') !== false; -} - -if ($quote) { -$argument = '"'.Preg::replace('/(\\\\*)$/', '$1$1', $argument).'"'; -} - -if ($meta) { -$argument = Preg::replace('/(["^&|<>()%])/', '^$1', $argument); -$argument = Preg::replace('/(!)/', '^^$1', $argument); -} - -return $argument; -} -} diff --git a/composer/src/Composer/Util/RemoteFilesystem.php b/composer/src/Composer/Util/RemoteFilesystem.php deleted file mode 100644 index b908b7c83..000000000 --- a/composer/src/Composer/Util/RemoteFilesystem.php +++ /dev/null @@ -1,726 +0,0 @@ -io = $io; - - - -if ($disableTls === false) { -$this->options = StreamContextFactory::getTlsDefaults($options, $io); -} else { -$this->disableTls = true; -} - - -$this->options = array_replace_recursive($this->options, $options); -$this->config = $config; -$this->authHelper = $authHelper ?? new AuthHelper($io, $config); -$this->proxyManager = ProxyManager::getInstance(); -} - - - - - - - - - - - - -public function copy(string $originUrl, string $fileUrl, string $fileName, bool $progress = true, array $options = []) -{ -return $this->get($originUrl, $fileUrl, $options, $fileName, $progress); -} - - - - - - - - - - - -public function getContents(string $originUrl, string $fileUrl, bool $progress = true, array $options = []) -{ -return $this->get($originUrl, $fileUrl, $options, null, $progress); -} - - - - - - -public function getOptions() -{ -return $this->options; -} - - - - - - - -public function setOptions(array $options) -{ -$this->options = array_replace_recursive($this->options, $options); -} - - - - - - -public function isTlsDisabled() -{ -return $this->disableTls === true; -} - - - - - - -public function getLastHeaders() -{ -return $this->lastHeaders; -} - - - - - -public static function findStatusCode(array $headers) -{ -$value = null; -foreach ($headers as $header) { -if (Preg::isMatch('{^HTTP/\S+ (\d+)}i', $header, $match)) { - - -$value = (int) $match[1]; -} -} - -return $value; -} - - - - - -public function findStatusMessage(array $headers) -{ -$value = null; -foreach ($headers as $header) { -if (Preg::isMatch('{^HTTP/\S+ \d+}i', $header)) { - - -$value = $header; -} -} - -return $value; -} - - - - - - - - - - - - - - - -protected function get(string $originUrl, string $fileUrl, array $additionalOptions = [], ?string $fileName = null, bool $progress = true) -{ -$this->scheme = parse_url(strtr($fileUrl, '\\', '/'), PHP_URL_SCHEME); -$this->bytesMax = 0; -$this->originUrl = $originUrl; -$this->fileUrl = $fileUrl; -$this->fileName = $fileName; -$this->progress = $progress; -$this->lastProgress = null; -$retryAuthFailure = true; -$this->lastHeaders = []; -$this->redirects = 1; - -$tempAdditionalOptions = $additionalOptions; -if (isset($tempAdditionalOptions['retry-auth-failure'])) { -$retryAuthFailure = (bool) $tempAdditionalOptions['retry-auth-failure']; - -unset($tempAdditionalOptions['retry-auth-failure']); -} - -$isRedirect = false; -if (isset($tempAdditionalOptions['redirects'])) { -$this->redirects = $tempAdditionalOptions['redirects']; -$isRedirect = true; - -unset($tempAdditionalOptions['redirects']); -} - -$options = $this->getOptionsForUrl($originUrl, $tempAdditionalOptions); -unset($tempAdditionalOptions); - -$origFileUrl = $fileUrl; - -if (isset($options['gitlab-token'])) { -$fileUrl .= (false === strpos($fileUrl, '?') ? '?' : '&') . 'access_token='.$options['gitlab-token']; -unset($options['gitlab-token']); -} - -if (isset($options['http'])) { -$options['http']['ignore_errors'] = true; -} - -if ($this->degradedMode && strpos($fileUrl, 'http://repo.packagist.org/') === 0) { - -$fileUrl = 'http://' . gethostbyname('repo.packagist.org') . substr($fileUrl, 20); -$degradedPackagist = true; -} - -$maxFileSize = null; -if (isset($options['max_file_size'])) { -$maxFileSize = $options['max_file_size']; -unset($options['max_file_size']); -} - -$ctx = StreamContextFactory::getContext($fileUrl, $options, ['notification' => [$this, 'callbackGet']]); - -$proxy = $this->proxyManager->getProxyForRequest($fileUrl); -$usingProxy = $proxy->getFormattedUrl(' using proxy (%s)'); -$this->io->writeError((strpos($origFileUrl, 'http') === 0 ? 'Downloading ' : 'Reading ') . Url::sanitize($origFileUrl) . $usingProxy, true, IOInterface::DEBUG); -unset($origFileUrl, $proxy, $usingProxy); - - -if ((!Preg::isMatch('{^http://(repo\.)?packagist\.org/p/}', $fileUrl) || (false === strpos($fileUrl, '$') && false === strpos($fileUrl, '%24'))) && empty($degradedPackagist)) { -$this->config->prohibitUrlByConfig($fileUrl, $this->io); -} - -if ($this->progress && !$isRedirect) { -$this->io->writeError("Downloading (connecting...)", false); -} - -$errorMessage = ''; -$errorCode = 0; -$result = false; -set_error_handler(static function ($code, $msg) use (&$errorMessage): bool { -if ($errorMessage) { -$errorMessage .= "\n"; -} -$errorMessage .= Preg::replace('{^file_get_contents\(.*?\): }', '', $msg); - -return true; -}); -$http_response_header = []; -try { -$result = $this->getRemoteContents($originUrl, $fileUrl, $ctx, $http_response_header, $maxFileSize); - -if (!empty($http_response_header[0])) { -$statusCode = self::findStatusCode($http_response_header); -if ($statusCode >= 400 && Response::findHeaderValue($http_response_header, 'content-type') === 'application/json') { -HttpDownloader::outputWarnings($this->io, $originUrl, json_decode($result, true)); -} - -if (in_array($statusCode, [401, 403]) && $retryAuthFailure) { -$this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), $http_response_header); -} -} - -$contentLength = !empty($http_response_header[0]) ? Response::findHeaderValue($http_response_header, 'content-length') : null; -if ($contentLength && Platform::strlen($result) < $contentLength) { - -$e = new TransportException('Content-Length mismatch, received '.Platform::strlen($result).' bytes out of the expected '.$contentLength); -$e->setHeaders($http_response_header); -$e->setStatusCode(self::findStatusCode($http_response_header)); -try { -$e->setResponse($this->decodeResult($result, $http_response_header)); -} catch (\Exception $discarded) { -$e->setResponse($this->normalizeResult($result)); -} - -$this->io->writeError('Content-Length mismatch, received '.Platform::strlen($result).' out of '.$contentLength.' bytes: (' . base64_encode($result).')', true, IOInterface::DEBUG); - -throw $e; -} -} catch (\Exception $e) { -if ($e instanceof TransportException && !empty($http_response_header[0])) { -$e->setHeaders($http_response_header); -$e->setStatusCode(self::findStatusCode($http_response_header)); -} -if ($e instanceof TransportException && $result !== false) { -$e->setResponse($this->decodeResult($result, $http_response_header)); -} -$result = false; -} -if ($errorMessage && !filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { -$errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')'; -} -restore_error_handler(); -if (isset($e) && !$this->retry) { -if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { -$this->degradedMode = true; -$this->io->writeError(''); -$this->io->writeError([ -''.$e->getMessage().'', -'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', -]); - -return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); -} - -throw $e; -} - -$statusCode = null; -$contentType = null; -$locationHeader = null; -if (!empty($http_response_header[0])) { -$statusCode = self::findStatusCode($http_response_header); -$contentType = Response::findHeaderValue($http_response_header, 'content-type'); -$locationHeader = Response::findHeaderValue($http_response_header, 'location'); -} - - -if ($originUrl === 'bitbucket.org' -&& !$this->authHelper->isPublicBitBucketDownload($fileUrl) -&& substr($fileUrl, -4) === '.zip' -&& (!$locationHeader || substr(parse_url($locationHeader, PHP_URL_PATH), -4) !== '.zip') -&& $contentType && Preg::isMatch('{^text/html\b}i', $contentType) -) { -$result = false; -if ($retryAuthFailure) { -$this->promptAuthAndRetry(401); -} -} - - -if ($statusCode === 404 -&& in_array($originUrl, $this->config->get('gitlab-domains'), true) -&& false !== strpos($fileUrl, 'archive.zip') -) { -$result = false; -if ($retryAuthFailure) { -$this->promptAuthAndRetry(401); -} -} - - -$hasFollowedRedirect = false; -if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $this->redirects < $this->maxRedirects) { -$hasFollowedRedirect = true; -$result = $this->handleRedirect($http_response_header, $additionalOptions, $result); -} - - -if ($statusCode && $statusCode >= 400 && $statusCode <= 599) { -if (!$this->retry) { -if ($this->progress && !$isRedirect) { -$this->io->overwriteError("Downloading (failed)", false); -} - -$e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.$http_response_header[0].')', $statusCode); -$e->setHeaders($http_response_header); -$e->setResponse($this->decodeResult($result, $http_response_header)); -$e->setStatusCode($statusCode); -throw $e; -} -$result = false; -} - -if ($this->progress && !$this->retry && !$isRedirect) { -$this->io->overwriteError("Downloading (".($result === false ? 'failed' : '100%').")", false); -} - - -if ($result && extension_loaded('zlib') && strpos($fileUrl, 'http') === 0 && !$hasFollowedRedirect) { -try { -$result = $this->decodeResult($result, $http_response_header); -} catch (\Exception $e) { -if ($this->degradedMode) { -throw $e; -} - -$this->degradedMode = true; -$this->io->writeError([ -'', -'Failed to decode response: '.$e->getMessage().'', -'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', -]); - -return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); -} -} - - -if (false !== $result && null !== $fileName && !$isRedirect) { -if ('' === $result) { -throw new TransportException('"'.$this->fileUrl.'" appears broken, and returned an empty 200 response'); -} - -$errorMessage = ''; -set_error_handler(static function ($code, $msg) use (&$errorMessage): bool { -if ($errorMessage) { -$errorMessage .= "\n"; -} -$errorMessage .= Preg::replace('{^file_put_contents\(.*?\): }', '', $msg); - -return true; -}); -$result = (bool) file_put_contents($fileName, $result); -restore_error_handler(); -if (false === $result) { -throw new TransportException('The "'.$this->fileUrl.'" file could not be written to '.$fileName.': '.$errorMessage); -} -} - -if ($this->retry) { -$this->retry = false; - -$result = $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); - -if ($this->storeAuth) { -$this->authHelper->storeAuth($this->originUrl, $this->storeAuth); -$this->storeAuth = false; -} - -return $result; -} - -if (false === $result) { -$e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded: '.$errorMessage, $errorCode); -if (!empty($http_response_header[0])) { -$e->setHeaders($http_response_header); -} - -if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { -$this->degradedMode = true; -$this->io->writeError(''); -$this->io->writeError([ -''.$e->getMessage().'', -'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', -]); - -return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); -} - -throw $e; -} - -if (!empty($http_response_header[0])) { -$this->lastHeaders = $http_response_header; -} - -return $result; -} - - - - - - - - - - - - -protected function getRemoteContents(string $originUrl, string $fileUrl, $context, ?array &$responseHeaders = null, ?int $maxFileSize = null) -{ -$result = false; - -try { -$e = null; -if ($maxFileSize !== null) { -$result = file_get_contents($fileUrl, false, $context, 0, $maxFileSize); -} else { - -$result = file_get_contents($fileUrl, false, $context); -} -} catch (\Throwable $e) { -} - -if ($result !== false && $maxFileSize !== null && Platform::strlen($result) >= $maxFileSize) { -throw new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . Platform::strlen($result) . ' of allowed ' . $maxFileSize . ' bytes'); -} - - -$responseHeaders = $http_response_header ?? []; - -if (null !== $e) { -throw $e; -} - -return $result; -} - - - - - - - - - - - - - - - -protected function callbackGet(int $notificationCode, int $severity, ?string $message, int $messageCode, int $bytesTransferred, int $bytesMax) -{ -switch ($notificationCode) { -case STREAM_NOTIFY_FAILURE: -if (400 === $messageCode) { - - -throw new TransportException("The '" . $this->fileUrl . "' URL could not be accessed: " . $message, $messageCode); -} -break; - -case STREAM_NOTIFY_FILE_SIZE_IS: -$this->bytesMax = $bytesMax; -break; - -case STREAM_NOTIFY_PROGRESS: -if ($this->bytesMax > 0 && $this->progress) { -$progression = min(100, (int) round($bytesTransferred / $this->bytesMax * 100)); - -if ((0 === $progression % 5) && 100 !== $progression && $progression !== $this->lastProgress) { -$this->lastProgress = $progression; -$this->io->overwriteError("Downloading ($progression%)", false); -} -} -break; - -default: -break; -} -} - - - - - - - -protected function promptAuthAndRetry($httpStatus, ?string $reason = null, array $headers = []) -{ -$result = $this->authHelper->promptAuthIfNeeded($this->fileUrl, $this->originUrl, $httpStatus, $reason, $headers, 1 ); - -$this->storeAuth = $result['storeAuth']; -$this->retry = $result['retry']; - -if ($this->retry) { -throw new TransportException('RETRY'); -} -} - - - - - - -protected function getOptionsForUrl(string $originUrl, array $additionalOptions) -{ -$tlsOptions = []; -$headers = []; - -if (extension_loaded('zlib')) { -$headers[] = 'Accept-Encoding: gzip'; -} - -$options = array_replace_recursive($this->options, $tlsOptions, $additionalOptions); -if (!$this->degradedMode) { - - -$options['http']['protocol_version'] = 1.1; -$headers[] = 'Connection: close'; -} - -$headers = $this->authHelper->addAuthenticationHeader($headers, $originUrl, $this->fileUrl); - -$options['http']['follow_location'] = 0; - -if (isset($options['http']['header']) && !is_array($options['http']['header'])) { -$options['http']['header'] = explode("\r\n", trim($options['http']['header'], "\r\n")); -} -foreach ($headers as $header) { -$options['http']['header'][] = $header; -} - -return $options; -} - - - - - - - - -private function handleRedirect(array $http_response_header, array $additionalOptions, $result) -{ -if ($locationHeader = Response::findHeaderValue($http_response_header, 'location')) { -if (parse_url($locationHeader, PHP_URL_SCHEME)) { - -$targetUrl = $locationHeader; -} elseif (parse_url($locationHeader, PHP_URL_HOST)) { - -$targetUrl = $this->scheme.':'.$locationHeader; -} elseif ('/' === $locationHeader[0]) { - -$urlHost = parse_url($this->fileUrl, PHP_URL_HOST); - - -$targetUrl = Preg::replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $this->fileUrl); -} else { - - -$targetUrl = Preg::replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $this->fileUrl); -} -} - -if (!empty($targetUrl)) { -$this->redirects++; - -$this->io->writeError('', true, IOInterface::DEBUG); -$this->io->writeError(sprintf('Following redirect (%u) %s', $this->redirects, Url::sanitize($targetUrl)), true, IOInterface::DEBUG); - -$additionalOptions['redirects'] = $this->redirects; - -return $this->get(parse_url($targetUrl, PHP_URL_HOST), $targetUrl, $additionalOptions, $this->fileName, $this->progress); -} - -if (!$this->retry) { -$e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded, got redirect without Location ('.$http_response_header[0].')'); -$e->setHeaders($http_response_header); -$e->setResponse($this->decodeResult($result, $http_response_header)); - -throw $e; -} - -return false; -} - - - - - -private function decodeResult($result, array $http_response_header): ?string -{ - -if ($result && extension_loaded('zlib')) { -$contentEncoding = Response::findHeaderValue($http_response_header, 'content-encoding'); -$decode = $contentEncoding && 'gzip' === strtolower($contentEncoding); - -if ($decode) { -$result = zlib_decode($result); - -if ($result === false) { -throw new TransportException('Failed to decode zlib stream'); -} -} -} - -return $this->normalizeResult($result); -} - - - - -private function normalizeResult($result): ?string -{ -if ($result === false) { -return null; -} - -return $result; -} -} diff --git a/composer/src/Composer/Util/Silencer.php b/composer/src/Composer/Util/Silencer.php deleted file mode 100644 index 3762a7cb1..000000000 --- a/composer/src/Composer/Util/Silencer.php +++ /dev/null @@ -1,77 +0,0 @@ - [ - -'follow_location' => 1, -'max_redirects' => 20, -]]; - -$options = array_replace_recursive($options, self::initOptions($url, $defaultOptions)); -unset($defaultOptions['http']['header']); -$options = array_replace_recursive($options, $defaultOptions); - -if (isset($options['http']['header'])) { -$options['http']['header'] = self::fixHttpHeaderField($options['http']['header']); -} - -return stream_context_create($options, $defaultParams); -} - - - - - - - - -public static function initOptions(string $url, array $options, bool $forCurl = false): array -{ - -if (!isset($options['http']['header'])) { -$options['http']['header'] = []; -} -if (is_string($options['http']['header'])) { -$options['http']['header'] = explode("\r\n", $options['http']['header']); -} - - -if (!$forCurl) { -$proxy = ProxyManager::getInstance()->getProxyForRequest($url); -if ($proxyOptions = $proxy->getContextOptions()) { -$isHttpsRequest = 0 === strpos($url, 'https://'); - -if ($proxy->isSecure()) { -if (!extension_loaded('openssl')) { -throw new TransportException('You must enable the openssl extension to use a secure proxy.'); -} -if ($isHttpsRequest) { -throw new TransportException('You must enable the curl extension to make https requests through a secure proxy.'); -} -} elseif ($isHttpsRequest && !extension_loaded('openssl')) { -throw new TransportException('You must enable the openssl extension to make https requests through a proxy.'); -} - - -if (isset($proxyOptions['http']['header'])) { -$options['http']['header'][] = $proxyOptions['http']['header']; -unset($proxyOptions['http']['header']); -} -$options = array_replace_recursive($options, $proxyOptions); -} -} - -if (defined('HHVM_VERSION')) { -$phpVersion = 'HHVM ' . HHVM_VERSION; -} else { -$phpVersion = 'PHP ' . PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; -} - -if ($forCurl) { -$curl = curl_version(); -$httpVersion = 'cURL '.$curl['version']; -} else { -$httpVersion = 'streams'; -} - -if (!isset($options['http']['header']) || false === stripos(implode('', $options['http']['header']), 'user-agent')) { -$platformPhpVersion = PlatformRepository::getPlatformPhpVersion(); -$options['http']['header'][] = sprintf( -'User-Agent: Composer/%s (%s; %s; %s; %s%s%s)', -Composer::getVersion(), -function_exists('php_uname') ? php_uname('s') : 'Unknown', -function_exists('php_uname') ? php_uname('r') : 'Unknown', -$phpVersion, -$httpVersion, -$platformPhpVersion ? '; Platform-PHP '.$platformPhpVersion : '', -Platform::getEnv('CI') ? '; CI' : '' -); -} - -return $options; -} - - - - - - -public static function getTlsDefaults(array $options, ?LoggerInterface $logger = null): array -{ -$ciphers = implode(':', [ -'ECDHE-RSA-AES128-GCM-SHA256', -'ECDHE-ECDSA-AES128-GCM-SHA256', -'ECDHE-RSA-AES256-GCM-SHA384', -'ECDHE-ECDSA-AES256-GCM-SHA384', -'DHE-RSA-AES128-GCM-SHA256', -'DHE-DSS-AES128-GCM-SHA256', -'kEDH+AESGCM', -'ECDHE-RSA-AES128-SHA256', -'ECDHE-ECDSA-AES128-SHA256', -'ECDHE-RSA-AES128-SHA', -'ECDHE-ECDSA-AES128-SHA', -'ECDHE-RSA-AES256-SHA384', -'ECDHE-ECDSA-AES256-SHA384', -'ECDHE-RSA-AES256-SHA', -'ECDHE-ECDSA-AES256-SHA', -'DHE-RSA-AES128-SHA256', -'DHE-RSA-AES128-SHA', -'DHE-DSS-AES128-SHA256', -'DHE-RSA-AES256-SHA256', -'DHE-DSS-AES256-SHA', -'DHE-RSA-AES256-SHA', -'AES128-GCM-SHA256', -'AES256-GCM-SHA384', -'AES128-SHA256', -'AES256-SHA256', -'AES128-SHA', -'AES256-SHA', -'AES', -'CAMELLIA', -'DES-CBC3-SHA', -'!aNULL', -'!eNULL', -'!EXPORT', -'!DES', -'!RC4', -'!MD5', -'!PSK', -'!aECDH', -'!EDH-DSS-DES-CBC3-SHA', -'!EDH-RSA-DES-CBC3-SHA', -'!KRB5-DES-CBC3-SHA', -]); - - - - - - - -$defaults = [ -'ssl' => [ -'ciphers' => $ciphers, -'verify_peer' => true, -'verify_depth' => 7, -'SNI_enabled' => true, -'capture_peer_cert' => true, -], -]; - -if (isset($options['ssl'])) { -$defaults['ssl'] = array_replace_recursive($defaults['ssl'], $options['ssl']); -} - - - - - -if (!isset($defaults['ssl']['cafile']) && !isset($defaults['ssl']['capath'])) { -$result = CaBundle::getSystemCaRootBundlePath($logger); - -if (is_dir($result)) { -$defaults['ssl']['capath'] = $result; -} else { -$defaults['ssl']['cafile'] = $result; -} -} - -if (isset($defaults['ssl']['cafile']) && (!Filesystem::isReadable($defaults['ssl']['cafile']) || !CaBundle::validateCaFile($defaults['ssl']['cafile'], $logger))) { -throw new TransportException('The configured cafile was not valid or could not be read.'); -} - -if (isset($defaults['ssl']['capath']) && (!is_dir($defaults['ssl']['capath']) || !Filesystem::isReadable($defaults['ssl']['capath']))) { -throw new TransportException('The configured capath was not valid or could not be read.'); -} - - - - -$defaults['ssl']['disable_compression'] = true; - -return $defaults; -} - - - - - - - - - - - -private static function fixHttpHeaderField($header): array -{ -if (!is_array($header)) { -$header = explode("\r\n", $header); -} -uasort($header, static function ($el): int { -return stripos($el, 'content-type') === 0 ? 1 : -1; -}); - -return $header; -} -} diff --git a/composer/src/Composer/Util/Svn.php b/composer/src/Composer/Util/Svn.php deleted file mode 100644 index 852b96b32..000000000 --- a/composer/src/Composer/Util/Svn.php +++ /dev/null @@ -1,361 +0,0 @@ -url = $url; -$this->io = $io; -$this->config = $config; -$this->process = $process ?: new ProcessExecutor($io); -} - -public static function cleanEnv(): void -{ - -Platform::clearEnv('DYLD_LIBRARY_PATH'); -} - - - - - - - - - - - - - -public function execute(string $command, string $url, ?string $cwd = null, ?string $path = null, bool $verbose = false): string -{ - -$this->config->prohibitUrlByConfig($url, $this->io); - -return $this->executeWithAuthRetry($command, $cwd, $url, $path, $verbose); -} - - - - - - - - - - - - -public function executeLocal(string $command, string $path, ?string $cwd = null, bool $verbose = false): string -{ - -return $this->executeWithAuthRetry($command, $cwd, '', $path, $verbose); -} - -private function executeWithAuthRetry(string $svnCommand, ?string $cwd, string $url, ?string $path, bool $verbose): ?string -{ - -$command = $this->getCommand($svnCommand, $url, $path); - -$output = null; -$io = $this->io; -$handler = static function ($type, $buffer) use (&$output, $io, $verbose) { -if ($type !== 'out') { -return null; -} -if (strpos($buffer, 'Redirecting to URL ') === 0) { -return null; -} -$output .= $buffer; -if ($verbose) { -$io->writeError($buffer, false); -} -}; -$status = $this->process->execute($command, $handler, $cwd); -if (0 === $status) { -return $output; -} - -$errorOutput = $this->process->getErrorOutput(); -$fullOutput = trim(implode("\n", [$output, $errorOutput])); - - -if (false === stripos($fullOutput, 'Could not authenticate to server:') -&& false === stripos($fullOutput, 'authorization failed') -&& false === stripos($fullOutput, 'svn: E170001:') -&& false === stripos($fullOutput, 'svn: E215004:')) { -throw new \RuntimeException($fullOutput); -} - -if (!$this->hasAuth()) { -$this->doAuthDance(); -} - - -if ($this->qtyAuthTries++ < self::MAX_QTY_AUTH_TRIES) { - -return $this->executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose); -} - -throw new \RuntimeException( -'wrong credentials provided ('.$fullOutput.')' -); -} - -public function setCacheCredentials(bool $cacheCredentials): void -{ -$this->cacheCredentials = $cacheCredentials; -} - - - - - - - -protected function doAuthDance(): Svn -{ - -if (!$this->io->isInteractive()) { -throw new \RuntimeException( -'can not ask for authentication in non interactive mode' -); -} - -$this->io->writeError("The Subversion server ({$this->url}) requested credentials:"); - -$this->hasAuth = true; -$this->credentials = [ -'username' => (string) $this->io->ask("Username: ", ''), -'password' => (string) $this->io->askAndHideAnswer("Password: "), -]; - -$this->cacheCredentials = $this->io->askConfirmation("Should Subversion cache these credentials? (yes/no) "); - -return $this; -} - - - - - - - - -protected function getCommand(string $cmd, string $url, ?string $path = null): string -{ -$cmd = sprintf( -'%s %s%s -- %s', -$cmd, -'--non-interactive ', -$this->getCredentialString(), -ProcessExecutor::escape($url) -); - -if ($path) { -$cmd .= ' ' . ProcessExecutor::escape($path); -} - -return $cmd; -} - - - - - - -protected function getCredentialString(): string -{ -if (!$this->hasAuth()) { -return ''; -} - -return sprintf( -' %s--username %s --password %s ', -$this->getAuthCache(), -ProcessExecutor::escape($this->getUsername()), -ProcessExecutor::escape($this->getPassword()) -); -} - - - - - - -protected function getPassword(): string -{ -if ($this->credentials === null) { -throw new \LogicException("No svn auth detected."); -} - -return $this->credentials['password']; -} - - - - - - -protected function getUsername(): string -{ -if ($this->credentials === null) { -throw new \LogicException("No svn auth detected."); -} - -return $this->credentials['username']; -} - - - - -protected function hasAuth(): bool -{ -if (null !== $this->hasAuth) { -return $this->hasAuth; -} - -if (false === $this->createAuthFromConfig()) { -$this->createAuthFromUrl(); -} - -return (bool) $this->hasAuth; -} - - - - -protected function getAuthCache(): string -{ -return $this->cacheCredentials ? '' : '--no-auth-cache '; -} - - - - -private function createAuthFromConfig(): bool -{ -if (!$this->config->has('http-basic')) { -return $this->hasAuth = false; -} - -$authConfig = $this->config->get('http-basic'); - -$host = parse_url($this->url, PHP_URL_HOST); -if (isset($authConfig[$host])) { -$this->credentials = [ -'username' => $authConfig[$host]['username'], -'password' => $authConfig[$host]['password'], -]; - -return $this->hasAuth = true; -} - -return $this->hasAuth = false; -} - - - - -private function createAuthFromUrl(): bool -{ -$uri = parse_url($this->url); -if (empty($uri['user'])) { -return $this->hasAuth = false; -} - -$this->credentials = [ -'username' => $uri['user'], -'password' => !empty($uri['pass']) ? $uri['pass'] : '', -]; - -return $this->hasAuth = true; -} - - - - -public function binaryVersion(): ?string -{ -if (!self::$version) { -if (0 === $this->process->execute('svn --version', $output)) { -if (Preg::isMatch('{(\d+(?:\.\d+)+)}', $output, $match)) { -self::$version = $match[1]; -} -} -} - -return self::$version; -} -} diff --git a/composer/src/Composer/Util/SyncHelper.php b/composer/src/Composer/Util/SyncHelper.php deleted file mode 100644 index 716bef886..000000000 --- a/composer/src/Composer/Util/SyncHelper.php +++ /dev/null @@ -1,65 +0,0 @@ -download($package, $path, $prevPackage)); - -self::await($loop, $downloader->prepare($type, $package, $path, $prevPackage)); - -if ($type === 'update') { -self::await($loop, $downloader->update($package, $prevPackage, $path)); -} else { -self::await($loop, $downloader->install($package, $path)); -} -} catch (\Exception $e) { -self::await($loop, $downloader->cleanup($type, $package, $path, $prevPackage)); -throw $e; -} - -self::await($loop, $downloader->cleanup($type, $package, $path, $prevPackage)); -} - - - - - - -public static function await(Loop $loop, ?PromiseInterface $promise = null): void -{ -if ($promise) { -$loop->wait([$promise]); -} -} -} diff --git a/composer/src/Composer/Util/Tar.php b/composer/src/Composer/Util/Tar.php deleted file mode 100644 index ec5948555..000000000 --- a/composer/src/Composer/Util/Tar.php +++ /dev/null @@ -1,59 +0,0 @@ -valid()) { -return null; -} - -return self::extractComposerJsonFromFolder($phar); -} - - - - -private static function extractComposerJsonFromFolder(\PharData $phar): string -{ -if (isset($phar['composer.json'])) { -return $phar['composer.json']->getContent(); -} - -$topLevelPaths = []; -foreach ($phar as $folderFile) { -$name = $folderFile->getBasename(); - -if ($folderFile->isDir()) { -$topLevelPaths[$name] = true; -if (\count($topLevelPaths) > 1) { -throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); -} -} -} - -$composerJsonPath = key($topLevelPaths).'/composer.json'; -if ($topLevelPaths && isset($phar[$composerJsonPath])) { -return $phar[$composerJsonPath]->getContent(); -} - -throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory'); -} -} diff --git a/composer/src/Composer/Util/TlsHelper.php b/composer/src/Composer/Util/TlsHelper.php deleted file mode 100644 index bd05a4ed2..000000000 --- a/composer/src/Composer/Util/TlsHelper.php +++ /dev/null @@ -1,204 +0,0 @@ - $commonName, -'san' => $subjectAltNames, -]; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -public static function getCertificateFingerprint(string $certificate): string -{ -$pubkey = openssl_get_publickey($certificate); -if ($pubkey === false) { -throw new \RuntimeException('Failed to retrieve the public key from certificate'); -} -$pubkeydetails = openssl_pkey_get_details($pubkey); -$pubkeypem = $pubkeydetails['key']; - -$start = '-----BEGIN PUBLIC KEY-----'; -$end = '-----END PUBLIC KEY-----'; -$pemtrim = substr($pubkeypem, strpos($pubkeypem, $start) + strlen($start), (strlen($pubkeypem) - strpos($pubkeypem, $end)) * (-1)); -$der = base64_decode($pemtrim); - -return sha1($der); -} - - - - - - - -public static function isOpensslParseSafe(): bool -{ -return CaBundle::isOpensslParseSafe(); -} - - - - - - -private static function certNameMatcher(string $certName): ?callable -{ -$wildcards = substr_count($certName, '*'); - -if (0 === $wildcards) { - -return static function ($hostname) use ($certName): bool { -return $hostname === $certName; -}; -} - -if (1 === $wildcards) { -$components = explode('.', $certName); - -if (3 > count($components)) { - -return null; -} - -$firstComponent = $components[0]; - - -if ('*' !== $firstComponent[strlen($firstComponent) - 1]) { -return null; -} - -$wildcardRegex = preg_quote($certName); -$wildcardRegex = str_replace('\\*', '[a-z0-9-]+', $wildcardRegex); -$wildcardRegex = "{^{$wildcardRegex}$}"; - -return static function ($hostname) use ($wildcardRegex): bool { -return Preg::isMatch($wildcardRegex, $hostname); -}; -} - -return null; -} -} diff --git a/composer/src/Composer/Util/Url.php b/composer/src/Composer/Util/Url.php deleted file mode 100644 index f84e83e08..000000000 --- a/composer/src/Composer/Util/Url.php +++ /dev/null @@ -1,124 +0,0 @@ -get('github-domains'), true)) { -$url = Preg::replace('{(/repos/[^/]+/[^/]+/(zip|tar)ball)(?:/.+)?$}i', '$1/'.$ref, $url); -} elseif (in_array($host, $config->get('gitlab-domains'), true)) { -$url = Preg::replace('{(/api/v[34]/projects/[^/]+/repository/archive\.(?:zip|tar\.gz|tar\.bz2|tar)\?sha=).+$}i', '${1}'.$ref, $url); -} - -assert($url !== ''); - -return $url; -} - - - - - -public static function getOrigin(Config $config, string $url): string -{ -if (0 === strpos($url, 'file://')) { -return $url; -} - -$origin = (string) parse_url($url, PHP_URL_HOST); -if ($port = parse_url($url, PHP_URL_PORT)) { -$origin .= ':'.$port; -} - -if (strpos($origin, '.github.com') === (strlen($origin) - 11)) { -return 'github.com'; -} - -if ($origin === 'repo.packagist.org') { -return 'packagist.org'; -} - -if ($origin === '') { -$origin = $url; -} - - - -if ( -false === strpos($origin, '/') -&& !in_array($origin, $config->get('gitlab-domains'), true) -) { -foreach ($config->get('gitlab-domains') as $gitlabDomain) { -if ($gitlabDomain !== '' && str_starts_with($gitlabDomain, $origin)) { -return $gitlabDomain; -} -} -} - -return $origin; -} - -public static function sanitize(string $url): string -{ - - -$url = Preg::replace('{([&?]access_token=)[^&]+}', '$1***', $url); - -$url = Preg::replaceCallback('{^(?P[a-z0-9]+://)?(?P[^:/\s@]+):(?P[^@\s/]+)@}i', static function ($m): string { -assert(is_string($m['user'])); - -if (Preg::isMatch('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+|github_pat_[a-zA-Z0-9_]+)$}', $m['user'])) { -return $m['prefix'].'***:***@'; -} - -return $m['prefix'].$m['user'].':***@'; -}, $url); - -return $url; -} -} diff --git a/composer/src/Composer/Util/Zip.php b/composer/src/Composer/Util/Zip.php deleted file mode 100644 index b721500f0..000000000 --- a/composer/src/Composer/Util/Zip.php +++ /dev/null @@ -1,101 +0,0 @@ -open($pathToZip) !== true) { -return null; -} - -if (0 === $zip->numFiles) { -$zip->close(); - -return null; -} - -$foundFileIndex = self::locateFile($zip, 'composer.json'); - -$content = null; -$configurationFileName = $zip->getNameIndex($foundFileIndex); -$stream = $zip->getStream($configurationFileName); - -if (false !== $stream) { -$content = stream_get_contents($stream); -} - -$zip->close(); - -return $content; -} - - - - - - -private static function locateFile(\ZipArchive $zip, string $filename): int -{ - -if (false !== ($index = $zip->locateName($filename)) && $zip->getFromIndex($index) !== false) { -return $index; -} - -$topLevelPaths = []; -for ($i = 0; $i < $zip->numFiles; $i++) { -$name = $zip->getNameIndex($i); -$dirname = dirname($name); - - -if (strpos($name, '__MACOSX') !== false) { -continue; -} - - -if ($dirname === '.') { -$topLevelPaths[$name] = true; -if (\count($topLevelPaths) > 1) { -throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); -} -continue; -} - - -if (false === strpos($dirname, '\\') && false === strpos($dirname, '/')) { -$topLevelPaths[$dirname.'/'] = true; -if (\count($topLevelPaths) > 1) { -throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); -} -} -} - -if ($topLevelPaths && false !== ($index = $zip->locateName(key($topLevelPaths).$filename)) && $zip->getFromIndex($index) !== false) { -return $index; -} - -throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory'); -} -} diff --git a/composer/src/bootstrap.php b/composer/src/bootstrap.php deleted file mode 100644 index 4cbb6c00e..000000000 --- a/composer/src/bootstrap.php +++ /dev/null @@ -1,26 +0,0 @@ -vendorDir = $vendorDir; -self::initializeIncludeClosure(); -} - - - - -public function getPrefixes() -{ -if (!empty($this->prefixesPsr0)) { -return call_user_func_array('array_merge', array_values($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; -} - - - - - - - -public function addClassMap(array $classMap) -{ -if ($this->classMap) { -$this->classMap = array_merge($this->classMap, $classMap); -} else { -$this->classMap = $classMap; -} -} - - - - - - - - - - - -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 -); -} -} - - - - - - - - - - - - - -public function addPsr4($prefix, $paths, $prepend = false) -{ -if (!$prefix) { - -if ($prepend) { -$this->fallbackDirsPsr4 = array_merge( -(array) $paths, -$this->fallbackDirsPsr4 -); -} else { -$this->fallbackDirsPsr4 = array_merge( -$this->fallbackDirsPsr4, -(array) $paths -); -} -} elseif (!isset($this->prefixDirsPsr4[$prefix])) { - -$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) { - -$this->prefixDirsPsr4[$prefix] = array_merge( -(array) $paths, -$this->prefixDirsPsr4[$prefix] -); -} else { - -$this->prefixDirsPsr4[$prefix] = array_merge( -$this->prefixDirsPsr4[$prefix], -(array) $paths -); -} -} - - - - - - - - - - -public function set($prefix, $paths) -{ -if (!$prefix) { -$this->fallbackDirsPsr0 = (array) $paths; -} else { -$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; -} -} - - - - - - - - - - - - -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; -} -} - - - - - - - - -public function setUseIncludePath($useIncludePath) -{ -$this->useIncludePath = $useIncludePath; -} - - - - - - - -public function getUseIncludePath() -{ -return $this->useIncludePath; -} - - - - - - - - - -public function setClassMapAuthoritative($classMapAuthoritative) -{ -$this->classMapAuthoritative = $classMapAuthoritative; -} - - - - - - -public function isClassMapAuthoritative() -{ -return $this->classMapAuthoritative; -} - - - - - - - - -public function setApcuPrefix($apcuPrefix) -{ -$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; -} - - - - - - -public function getApcuPrefix() -{ -return $this->apcuPrefix; -} - - - - - - - - -public function register($prepend = false) -{ -spl_autoload_register(array($this, 'loadClass'), true, $prepend); - -if (null === $this->vendorDir) { -return; -} - -if ($prepend) { -self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; -} else { -unset(self::$registeredLoaders[$this->vendorDir]); -self::$registeredLoaders[$this->vendorDir] = $this; -} -} - - - - - - -public function unregister() -{ -spl_autoload_unregister(array($this, 'loadClass')); - -if (null !== $this->vendorDir) { -unset(self::$registeredLoaders[$this->vendorDir]); -} -} - - - - - - - -public function loadClass($class) -{ -if ($file = $this->findFile($class)) { -$includeFile = self::$includeFile; -$includeFile($file); - -return true; -} - -return null; -} - - - - - - - - -public function findFile($class) -{ - -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'); - - -if (false === $file && defined('HHVM_VERSION')) { -$file = $this->findFileWithExtension($class, '.hh'); -} - -if (null !== $this->apcuPrefix) { -apcu_add($this->apcuPrefix.$class, $file); -} - -if (false === $file) { - -$this->missingClasses[$class] = true; -} - -return $file; -} - - - - - - -public static function getRegisteredLoaders() -{ -return self::$registeredLoaders; -} - - - - - - -private function findFileWithExtension($class, $ext) -{ - -$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; -} -} -} -} -} - - -foreach ($this->fallbackDirsPsr4 as $dir) { -if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { -return $file; -} -} - - -if (false !== $pos = strrpos($class, '\\')) { - -$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) -. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); -} else { - -$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; -} -} -} -} -} - - -foreach ($this->fallbackDirsPsr0 as $dir) { -if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { -return $file; -} -} - - -if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { -return $file; -} - -return false; -} - - - - -private static function initializeIncludeClosure() -{ -if (self::$includeFile !== null) { -return; -} - - - - - - - - - -self::$includeFile = \Closure::bind(static function($file) { -include $file; -}, null, null); -} -} diff --git a/composer/vendor/composer/InstalledVersions.php b/composer/vendor/composer/InstalledVersions.php deleted file mode 100644 index 487cfa8d7..000000000 --- a/composer/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,352 +0,0 @@ - $package) { -if (isset($package['type']) && $package['type'] === $type) { -$packagesByType[] = $name; -} -} -} - -return $packagesByType; -} - - - - - - - - - - -public static function isInstalled($packageName, $includeDevRequirements = true) -{ -foreach (self::getInstalled() as $installed) { -if (isset($installed['versions'][$packageName])) { -return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); -} -} - -return false; -} - - - - - - - - - - - - - -public static function satisfies(VersionParser $parser, $packageName, $constraint) -{ -$constraint = $parser->parseConstraints($constraint); -$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - -return $provided->matches($constraint); -} - - - - - - - - - - -public static function getVersionRanges($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -$ranges = array(); -if (isset($installed['versions'][$packageName]['pretty_version'])) { -$ranges[] = $installed['versions'][$packageName]['pretty_version']; -} -if (array_key_exists('aliases', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); -} -if (array_key_exists('replaced', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); -} -if (array_key_exists('provided', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); -} - -return implode(' || ', $ranges); -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['version'])) { -return null; -} - -return $installed['versions'][$packageName]['version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getPrettyVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['pretty_version'])) { -return null; -} - -return $installed['versions'][$packageName]['pretty_version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getReference($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['reference'])) { -return null; -} - -return $installed['versions'][$packageName]['reference']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getInstallPath($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getRootPackage() -{ -$installed = self::getInstalled(); - -return $installed[0]['root']; -} - - - - - - - - -public static function getRawData() -{ -@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - -if (null === self::$installed) { - - -if (substr(__DIR__, -8, 1) !== 'C') { -self::$installed = include __DIR__ . '/installed.php'; -} else { -self::$installed = array(); -} -} - -return self::$installed; -} - - - - - - - -public static function getAllRawData() -{ -return self::getInstalled(); -} - - - - - - - - - - - - - - - - - - - -public static function reload($data) -{ -self::$installed = $data; -self::$installedByVendor = array(); -} - - - - - -private static function getInstalled() -{ -if (null === self::$canGetVendors) { -self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); -} - -$installed = array(); - -if (self::$canGetVendors) { -foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { -if (isset(self::$installedByVendor[$vendorDir])) { -$installed[] = self::$installedByVendor[$vendorDir]; -} elseif (is_file($vendorDir.'/composer/installed.php')) { -$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; -if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { -self::$installed = $installed[count($installed) - 1]; -} -} -} -} - -if (null === self::$installed) { - - -if (substr(__DIR__, -8, 1) !== 'C') { -self::$installed = require __DIR__ . '/installed.php'; -} else { -self::$installed = array(); -} -} -$installed[] = self::$installed; - -return $installed; -} -} diff --git a/composer/vendor/composer/autoload_classmap.php b/composer/vendor/composer/autoload_classmap.php deleted file mode 100644 index ac14dcdf3..000000000 --- a/composer/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,18 +0,0 @@ - $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', -'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', -'JsonException' => $vendorDir . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', -'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', -'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', -'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', -'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', -'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', -'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', -); diff --git a/composer/vendor/composer/autoload_files.php b/composer/vendor/composer/autoload_files.php deleted file mode 100644 index d9a203475..000000000 --- a/composer/vendor/composer/autoload_files.php +++ /dev/null @@ -1,19 +0,0 @@ - $vendorDir . '/symfony/polyfill-php80/bootstrap.php', -'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', -'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', -'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', -'8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', -'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', -'0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', -'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', -'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php', -'23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', -); diff --git a/composer/vendor/composer/autoload_namespaces.php b/composer/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 50619c924..000000000 --- a/composer/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($vendorDir . '/symfony/polyfill-php81'), -'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), -'Symfony\\Polyfill\\Php73\\' => array($vendorDir . '/symfony/polyfill-php73'), -'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), -'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), -'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), -'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), -'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), -'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), -'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), -'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), -'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), -'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), -'Seld\\Signal\\' => array($vendorDir . '/seld/signal-handler/src'), -'Seld\\PharUtils\\' => array($vendorDir . '/seld/phar-utils/src'), -'Seld\\JsonLint\\' => array($vendorDir . '/seld/jsonlint/src/Seld/JsonLint'), -'React\\Promise\\' => array($vendorDir . '/react/promise/src'), -'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), -'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), -'JsonSchema\\' => array($vendorDir . '/justinrainbow/json-schema/src/JsonSchema'), -'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), -'Composer\\Spdx\\' => array($vendorDir . '/composer/spdx-licenses/src'), -'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), -'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'), -'Composer\\MetadataMinifier\\' => array($vendorDir . '/composer/metadata-minifier/src'), -'Composer\\ClassMapGenerator\\' => array($vendorDir . '/composer/class-map-generator/src'), -'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), -'Composer\\' => array($baseDir . '/src/Composer'), -); diff --git a/composer/vendor/composer/autoload_real.php b/composer/vendor/composer/autoload_real.php deleted file mode 100644 index fe3088d5f..000000000 --- a/composer/vendor/composer/autoload_real.php +++ /dev/null @@ -1,48 +0,0 @@ -register(true); - -$filesToLoad = \Composer\Autoload\ComposerStaticInitComposerPhar1676031832::$files; -$requireFile = \Closure::bind(static function ($fileIdentifier, $file) { -if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - -require $file; -} -}, null, null); -foreach ($filesToLoad as $fileIdentifier => $file) { -$requireFile($fileIdentifier, $file); -} - -return $loader; -} -} diff --git a/composer/vendor/composer/autoload_static.php b/composer/vendor/composer/autoload_static.php deleted file mode 100644 index 98cac0e44..000000000 --- a/composer/vendor/composer/autoload_static.php +++ /dev/null @@ -1,204 +0,0 @@ - __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', -'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', -'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', -'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', -'8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', -'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', -'0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', -'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', -'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', -'23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', -); - -public static $prefixLengthsPsr4 = array ( -'S' => -array ( -'Symfony\\Polyfill\\Php81\\' => 23, -'Symfony\\Polyfill\\Php80\\' => 23, -'Symfony\\Polyfill\\Php73\\' => 23, -'Symfony\\Polyfill\\Mbstring\\' => 26, -'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, -'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, -'Symfony\\Polyfill\\Ctype\\' => 23, -'Symfony\\Contracts\\Service\\' => 26, -'Symfony\\Component\\String\\' => 25, -'Symfony\\Component\\Process\\' => 26, -'Symfony\\Component\\Finder\\' => 25, -'Symfony\\Component\\Filesystem\\' => 29, -'Symfony\\Component\\Console\\' => 26, -'Seld\\Signal\\' => 12, -'Seld\\PharUtils\\' => 15, -'Seld\\JsonLint\\' => 14, -), -'R' => -array ( -'React\\Promise\\' => 14, -), -'P' => -array ( -'Psr\\Log\\' => 8, -'Psr\\Container\\' => 14, -), -'J' => -array ( -'JsonSchema\\' => 11, -), -'C' => -array ( -'Composer\\XdebugHandler\\' => 23, -'Composer\\Spdx\\' => 14, -'Composer\\Semver\\' => 16, -'Composer\\Pcre\\' => 14, -'Composer\\MetadataMinifier\\' => 26, -'Composer\\ClassMapGenerator\\' => 27, -'Composer\\CaBundle\\' => 18, -'Composer\\' => 9, -), -); - -public static $prefixDirsPsr4 = array ( -'Symfony\\Polyfill\\Php81\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/polyfill-php81', -), -'Symfony\\Polyfill\\Php80\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/polyfill-php80', -), -'Symfony\\Polyfill\\Php73\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/polyfill-php73', -), -'Symfony\\Polyfill\\Mbstring\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', -), -'Symfony\\Polyfill\\Intl\\Normalizer\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', -), -'Symfony\\Polyfill\\Intl\\Grapheme\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', -), -'Symfony\\Polyfill\\Ctype\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', -), -'Symfony\\Contracts\\Service\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/service-contracts', -), -'Symfony\\Component\\String\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/string', -), -'Symfony\\Component\\Process\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/process', -), -'Symfony\\Component\\Finder\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/finder', -), -'Symfony\\Component\\Filesystem\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/filesystem', -), -'Symfony\\Component\\Console\\' => -array ( -0 => __DIR__ . '/..' . '/symfony/console', -), -'Seld\\Signal\\' => -array ( -0 => __DIR__ . '/..' . '/seld/signal-handler/src', -), -'Seld\\PharUtils\\' => -array ( -0 => __DIR__ . '/..' . '/seld/phar-utils/src', -), -'Seld\\JsonLint\\' => -array ( -0 => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint', -), -'React\\Promise\\' => -array ( -0 => __DIR__ . '/..' . '/react/promise/src', -), -'Psr\\Log\\' => -array ( -0 => __DIR__ . '/..' . '/psr/log/Psr/Log', -), -'Psr\\Container\\' => -array ( -0 => __DIR__ . '/..' . '/psr/container/src', -), -'JsonSchema\\' => -array ( -0 => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema', -), -'Composer\\XdebugHandler\\' => -array ( -0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', -), -'Composer\\Spdx\\' => -array ( -0 => __DIR__ . '/..' . '/composer/spdx-licenses/src', -), -'Composer\\Semver\\' => -array ( -0 => __DIR__ . '/..' . '/composer/semver/src', -), -'Composer\\Pcre\\' => -array ( -0 => __DIR__ . '/..' . '/composer/pcre/src', -), -'Composer\\MetadataMinifier\\' => -array ( -0 => __DIR__ . '/..' . '/composer/metadata-minifier/src', -), -'Composer\\ClassMapGenerator\\' => -array ( -0 => __DIR__ . '/..' . '/composer/class-map-generator/src', -), -'Composer\\CaBundle\\' => -array ( -0 => __DIR__ . '/..' . '/composer/ca-bundle/src', -), -'Composer\\' => -array ( -0 => __DIR__ . '/../..' . '/src/Composer', -), -); - -public static $classMap = array ( -'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', -'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', -'JsonException' => __DIR__ . '/..' . '/symfony/polyfill-php73/Resources/stubs/JsonException.php', -'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', -'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', -'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', -'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', -'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', -'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', -); - -public static function getInitializer(ClassLoader $loader) -{ -return \Closure::bind(function () use ($loader) { -$loader->prefixLengthsPsr4 = ComposerStaticInitComposerPhar1676031832::$prefixLengthsPsr4; -$loader->prefixDirsPsr4 = ComposerStaticInitComposerPhar1676031832::$prefixDirsPsr4; -$loader->classMap = ComposerStaticInitComposerPhar1676031832::$classMap; - -}, null, ClassLoader::class); -} -} diff --git a/composer/vendor/composer/ca-bundle/LICENSE b/composer/vendor/composer/ca-bundle/LICENSE deleted file mode 100644 index 395c98b03..000000000 --- a/composer/vendor/composer/ca-bundle/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (C) 2016 Composer - -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/composer/vendor/composer/ca-bundle/res/cacert.pem b/composer/vendor/composer/ca-bundle/res/cacert.pem deleted file mode 100644 index 2ae7b6cb2..000000000 --- a/composer/vendor/composer/ca-bundle/res/cacert.pem +++ /dev/null @@ -1,3372 +0,0 @@ -## -## Bundle of CA Root Certificates -## -## Certificate data from Mozilla as of: Tue Jan 10 04:12:06 2023 GMT -## -## This is a bundle of X.509 certificates of public Certificate Authorities -## (CA). These were automatically extracted from Mozilla's root certificates -## file (certdata.txt). This file can be found in the mozilla source tree: -## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt -## -## It contains the certificates in PEM format and therefore -## can be directly used with curl / libcurl / php_curl, or with -## an Apache+mod_ssl webserver for SSL client authentication. -## Just configure this file as the SSLCACertificateFile. -## -## Conversion done with mk-ca-bundle.pl version 1.29. -## SHA256: 90c470e705b4b5f36f09684dc50e2b79c8b86989a848b62cd1a7bd6460ee65f6 -## - - -GlobalSign Root CA -================== ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx -GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds -b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV -BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD -VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa -DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc -THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb -Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP -c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX -gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF -AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj -Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG -j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH -hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC -X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -Entrust.net Premium 2048 Secure Server CA -========================================= ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u -ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp -bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx -NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 -d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u -ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL -Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr -hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW -nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi -VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ -KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy -T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT -J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e -nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= ------END CERTIFICATE----- - -Baltimore CyberTrust Root -========================= ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE -ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li -ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC -SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs -dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME -uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB -UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C -G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 -XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr -l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI -VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB -BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh -cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 -hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa -Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H -RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- - -Entrust Root Certification Authority -==================================== ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV -BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw -b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG -A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 -MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu -MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu -Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz -A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww -Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 -j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN -rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw -DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 -MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH -hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM -Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa -v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS -W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 -tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- - -Comodo AAA Services root -======================== ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS -R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg -TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw -MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl -c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV -BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG -C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs -i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW -Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH -Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK -Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f -BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl -cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz -LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm -7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z -8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C -12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- - -QuoVadis Root CA 2 -================== ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -QuoVadis Root CA 3 -================== ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -Security Communication Root CA -============================== ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP -U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw -HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP -U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw -8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM -DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX -5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd -DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 -JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw -DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g -0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a -mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ -s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ -6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi -FL39vmwLAw== ------END CERTIFICATE----- - -XRamp Global CA Root -==================== ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE -BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj -dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx -HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg -U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu -IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx -foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE -zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs -AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry -xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud -EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap -oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC -AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc -/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n -nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz -8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- - -Go Daddy Class 2 CA -=================== ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY -VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG -A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g -RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD -ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv -2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 -qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j -YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY -vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O -BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o -atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu -MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim -PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt -I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI -Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b -vZ8= ------END CERTIFICATE----- - -Starfield Class 2 CA -==================== ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc -U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo -MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG -A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG -SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY -bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ -JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm -epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN -F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF -MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f -hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo -bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g -QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs -afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM -PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD -KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 -QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- - -DigiCert Assured ID Root CA -=========================== ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw -IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx -MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL -ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO -9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy -UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW -/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy -oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf -GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF -66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq -hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc -EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn -SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i -8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- - -DigiCert Global Root CA -======================= ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw -HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw -MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 -dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn -TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 -BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H -4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y -7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB -o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm -8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF -BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr -EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt -tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 -UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- - -DigiCert High Assurance EV Root CA -================================== ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw -KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw -MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ -MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu -Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t -Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS -OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 -MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ -NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe -h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB -Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY -JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ -V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp -myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK -mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K ------END CERTIFICATE----- - -SwissSign Gold CA - G2 -====================== ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -SwissSign Silver CA - G2 -======================== ------BEGIN CERTIFICATE----- -MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT -BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X -DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 -aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG -9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 -N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm -+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH -6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu -MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h -qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 -FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs -ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc -celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X -CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB -tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 -cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P -4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F -kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L -3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx -/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa -DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP -e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu -WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ -DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub -DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u ------END CERTIFICATE----- - -SecureTrust CA -============== ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG -EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy -dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe -BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX -OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t -DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH -GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b -01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH -ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj -aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ -KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu -SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf -mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ -nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -Secure Global CA -================ ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG -EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH -bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg -MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg -Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx -YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ -bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g -8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV -HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi -0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud -EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn -oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA -MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ -OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn -CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 -3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - -COMODO Certification Authority -============================== ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE -BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG -A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb -MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD -T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH -+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww -xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV -4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA -1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI -rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k -b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC -AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP -OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc -IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN -+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== ------END CERTIFICATE----- - -COMODO ECC Certification Authority -================================== ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC -R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE -ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix -GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo -b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X -4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni -wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E -BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG -FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA -U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- - -Certigna -======== ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw -EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 -MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI -Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q -XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH -GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p -ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg -DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf -Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ -tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ -BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J -SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA -hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ -ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu -PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY -1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -ePKI Root Certification Authority -================================= ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG -EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg -Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx -MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq -MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs -IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi -lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv -qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX -12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O -WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ -ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao -lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ -vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi -Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi -MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 -1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq -KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV -xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP -NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r -GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE -xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx -gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy -sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD -BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -certSIGN ROOT CA -================ ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD -VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa -Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE -CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I -JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH -rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 -ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD -0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 -AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B -Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB -AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 -SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 -x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt -vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz -TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -NetLock Arany (Class Gold) Főtanúsítvány -======================================== ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G -A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 -dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB -cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx -MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO -ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 -c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu -0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw -/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk -H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw -fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 -neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW -qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta -YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna -NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu -dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -Hongkong Post Root CA 1 -======================= ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT -DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx -NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n -IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 -ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr -auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh -qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY -V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV -HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i -h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio -l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei -IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps -T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT -c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== ------END CERTIFICATE----- - -SecureSign RootCA11 -=================== ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi -SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS -b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw -KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 -cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL -TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO -wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq -g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP -O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA -bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX -t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh -OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r -bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ -Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 -y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 -lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -Microsec e-Szigno Root CA 2009 -============================== ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER -MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv -c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE -BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt -U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA -fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG -0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA -pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm -1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC -AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf -QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE -FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o -lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX -I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 -yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi -LXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -GlobalSign Root CA - R3 -======================= ------BEGIN CERTIFICATE----- -MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv -YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh -bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT -aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln -bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt -iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ -0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 -rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl -OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 -xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 -lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 -EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E -bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 -YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r -kpeDMdmztcpHWD9f ------END CERTIFICATE----- - -Autoridad de Certificacion Firmaprofesional CIF A62634068 -========================================================= ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA -BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw -QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB -NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD -Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P -B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY -7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH -ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI -plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX -MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX -LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK -bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU -vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud -EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH -DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA -bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx -ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx -51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk -R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP -T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f -Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl -osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR -crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR -saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD -KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi -6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -Izenpe.com -========== ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -Go Daddy Root Certificate Authority - G2 -======================================== ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu -MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 -MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G -A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq -9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD -+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd -fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl -NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 -BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac -vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r -5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV -N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 ------END CERTIFICATE----- - -Starfield Root Certificate Authority - G2 -========================================= ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s -b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 -eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw -DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg -VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB -dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv -W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs -bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk -N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf -ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU -JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol -TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx -4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw -F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ -c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- - -Starfield Services Root Certificate Authority - G2 -================================================== ------BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT -B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s -b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl -IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT -dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg -Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC -AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 -h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa -hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP -LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB -rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG -SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP -E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy -xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd -iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza -YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 ------END CERTIFICATE----- - -AffirmTrust Commercial -====================== ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw -MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly -bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb -DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV -C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 -BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww -MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV -HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG -hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi -qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv -0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh -sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= ------END CERTIFICATE----- - -AffirmTrust Networking -====================== ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw -MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly -bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE -Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI -dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 -/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb -h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV -HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu -UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 -12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 -WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 -/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= ------END CERTIFICATE----- - -AffirmTrust Premium -=================== ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS -BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy -OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy -dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn -BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV -5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs -+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd -GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R -p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI -S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 -6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 -/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo -+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB -/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv -MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg -Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC -6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S -L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK -+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV -BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg -IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 -g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb -zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== ------END CERTIFICATE----- - -AffirmTrust Premium ECC -======================= ------BEGIN CERTIFICATE----- -MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV -BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx -MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U -cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ -N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW -BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK -BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X -57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM -eQ== ------END CERTIFICATE----- - -Certum Trusted Network CA -========================= ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK -ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy -MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU -ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC -l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J -J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 -fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 -cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB -Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw -DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj -jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 -mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj -Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -TWCA Root Certification Authority -================================= ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ -VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG -EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB -IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx -QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC -oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP -4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r -y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG -9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC -mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW -QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY -T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny -Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -Security Communication RootCA2 -============================== ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc -U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh -dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC -SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy -aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ -+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R -3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV -spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K -EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 -QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB -CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj -u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk -3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q -tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 -mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -Actalis Authentication Root CA -============================== ------BEGIN CERTIFICATE----- -MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM -BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE -AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky -MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz -IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 -IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ -wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa -by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 -zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f -YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 -oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l -EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 -hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 -EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 -jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY -iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt -ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI -WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 -JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx -K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ -Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC -4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo -2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz -lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem -OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 -vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== ------END CERTIFICATE----- - -Buypass Class 2 Root CA -======================= ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU -QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X -DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 -eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw -DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 -g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn -9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b -/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU -CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff -awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI -zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn -Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX -Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs -M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF -AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s -A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI -osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S -aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd -DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD -LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 -oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC -wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS -CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN -rJgWVqA= ------END CERTIFICATE----- - -Buypass Class 3 Root CA -======================= ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU -QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X -DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 -eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw -DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH -sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR -5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh -7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ -ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH -2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV -/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ -RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA -Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq -j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF -AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV -cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G -uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG -Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 -ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 -KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz -6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug -UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe -eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi -Cp/HuZc= ------END CERTIFICATE----- - -T-TeleSec GlobalRoot Class 3 -============================ ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM -IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU -cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx -MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz -dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD -ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK -9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU -NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF -iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W -0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr -AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb -fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT -ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h -P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== ------END CERTIFICATE----- - -D-TRUST Root Class 3 CA 2 2009 -============================== ------BEGIN CERTIFICATE----- -MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK -DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe -Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE -LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD -ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA -BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv -KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z -p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC -AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ -4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y -eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw -MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G -PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw -OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm -2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 -o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV -dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph -X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= ------END CERTIFICATE----- - -D-TRUST Root Class 3 CA 2 EV 2009 -================================= ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK -DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw -OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK -DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw -OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS -egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh -zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T -7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 -sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 -11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv -cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v -ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El -MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp -b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh -c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ -PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 -nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX -ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA -NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv -w9y4AyHqnxbxLFS1 ------END CERTIFICATE----- - -CA Disig Root R2 -================ ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw -EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp -ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx -EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp -c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC -w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia -xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 -A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S -GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV -g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa -5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE -koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A -Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i -Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u -Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM -tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV -sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je -dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 -1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx -mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 -utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 -sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg -UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV -7+ZtsH8tZ/3zbBt1RqPlShfppNcL ------END CERTIFICATE----- - -ACCVRAIZ1 -========= ------BEGIN CERTIFICATE----- -MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB -SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 -MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH -UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM -jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 -RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD -aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ -0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG -WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 -8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR -5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J -9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK -Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw -Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu -Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 -VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM -Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA -QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh -AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA -YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj -AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA -IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk -aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 -dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 -MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI -hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E -R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN -YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 -nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ -TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 -sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h -I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg -Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd -3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p -EfbRD0tVNEYqi4Y7 ------END CERTIFICATE----- - -TWCA Global Root CA -=================== ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT -CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD -QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK -EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg -Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C -nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV -r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR -Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV -tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W -KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 -sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p -yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn -kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI -zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC -AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g -cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn -LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M -8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg -/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg -lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP -A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m -i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 -EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 -zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= ------END CERTIFICATE----- - -TeliaSonera Root CA v1 -====================== ------BEGIN CERTIFICATE----- -MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE -CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 -MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW -VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ -6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA -3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k -B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn -Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH -oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 -F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ -oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 -gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc -TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB -AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW -DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm -zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx -0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW -pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV -G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc -c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT -JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 -qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 -Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems -WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= ------END CERTIFICATE----- - -E-Tugra Certification Authority -=============================== ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w -DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls -ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN -ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw -NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx -QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl -cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD -DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd -hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K -CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g -ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ -BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 -E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz -rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq -jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn -rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 -dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB -/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG -MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK -kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO -XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 -VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo -a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc -dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV -KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT -Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 -8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G -C7TbO6Orb1wdtn7os4I07QZcJA== ------END CERTIFICATE----- - -T-TeleSec GlobalRoot Class 2 -============================ ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM -IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU -cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx -MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz -dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD -ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ -SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F -vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 -2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV -WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy -YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 -r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf -vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR -3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== ------END CERTIFICATE----- - -Atos TrustedRoot 2011 -===================== ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU -cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 -MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG -A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV -hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr -54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ -DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 -HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR -z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R -l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ -bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h -k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh -TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 -61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G -3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed ------END CERTIFICATE----- - -QuoVadis Root CA 1 G3 -===================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG -A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv -b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN -MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg -RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE -PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm -PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 -Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN -ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l -g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV -7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX -9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f -iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg -t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI -hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC -MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 -GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct -Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP -+V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh -3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa -wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 -O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 -FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV -hMJKzRwuJIczYOXD ------END CERTIFICATE----- - -QuoVadis Root CA 2 G3 -===================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG -A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv -b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN -MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg -RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh -ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY -NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t -oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o -MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l -V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo -L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ -sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD -6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh -lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI -hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 -AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K -pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 -x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz -dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X -U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw -mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD -zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN -JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr -O3jtZsSOeWmD3n+M ------END CERTIFICATE----- - -QuoVadis Root CA 3 G3 -===================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG -A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv -b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN -MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg -RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 -IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL -Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe -6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 -I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U -VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 -5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi -Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM -dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt -rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI -hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px -KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS -t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ -TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du -DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib -Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD -hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX -0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW -dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 -PpxxVJkES/1Y+Zj0 ------END CERTIFICATE----- - -DigiCert Assured ID Root G2 -=========================== ------BEGIN CERTIFICATE----- -MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw -IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw -MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL -ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH -35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq -bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw -VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP -YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn -lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO -w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv -0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz -d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW -hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M -jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo -IhNzbM8m9Yop5w== ------END CERTIFICATE----- - -DigiCert Assured ID Root G3 -=========================== ------BEGIN CERTIFICATE----- -MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD -VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 -MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ -BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb -RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs -KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF -UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy -YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy -1vUhZscv6pZjamVFkpUBtA== ------END CERTIFICATE----- - -DigiCert Global Root G2 -======================= ------BEGIN CERTIFICATE----- -MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw -HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx -MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 -dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq -hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ -kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO -3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV -BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM -UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB -o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu -5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr -F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U -WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH -QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ -iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl -MrY= ------END CERTIFICATE----- - -DigiCert Global Root G3 -======================= ------BEGIN CERTIFICATE----- -MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD -VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw -MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k -aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C -AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O -YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP -BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp -Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y -3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 -VOKa5Vt8sycX ------END CERTIFICATE----- - -DigiCert Trusted Root G4 -======================== ------BEGIN CERTIFICATE----- -MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw -HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 -MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp -pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o -k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa -vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY -QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 -MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm -mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 -f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH -dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 -oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD -ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY -ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr -yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy -7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah -ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN -5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb -/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa -5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK -G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP -82Z+ ------END CERTIFICATE----- - -COMODO RSA Certification Authority -================================== ------BEGIN CERTIFICATE----- -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 -LaZRfyHBNVOFBkpdn627G190 ------END CERTIFICATE----- - -USERTrust RSA Certification Authority -===================================== ------BEGIN CERTIFICATE----- -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 -Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9 ------END CERTIFICATE----- - -USERTrust ECC Certification Authority -===================================== ------BEGIN CERTIFICATE----- -MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC -VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC -VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2 -0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez -nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV -HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB -HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu -9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= ------END CERTIFICATE----- - -GlobalSign ECC Root CA - R5 -=========================== ------BEGIN CERTIFICATE----- -MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6 -SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS -h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd -BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx -uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 -yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 ------END CERTIFICATE----- - -IdenTrust Commercial Root CA 1 -============================== ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG -EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS -b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES -MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB -IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld -hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/ -mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi -1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C -XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl -3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy -NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV -WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg -xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix -uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC -AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI -hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH -6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg -ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt -ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV -YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX -feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro -kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe -2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz -Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R -cGzM7vRX+Bi6hG6H ------END CERTIFICATE----- - -IdenTrust Public Sector Root CA 1 -================================= ------BEGIN CERTIFICATE----- -MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG -EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv -ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV -UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS -b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy -P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6 -Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI -rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf -qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS -mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn -ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh -LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v -iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL -4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B -Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw -DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj -t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A -mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt -GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt -m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx -NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4 -Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI -ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC -ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ -3Wl9af0AVqW3rLatt8o+Ae+c ------END CERTIFICATE----- - -Entrust Root Certification Authority - G2 -========================================= ------BEGIN CERTIFICATE----- -MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV -BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy -bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug -b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw -HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT -DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx -OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP -/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz -HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU -s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y -TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx -AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6 -0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z -iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ -Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi -nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+ -vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO -e4pIb4tF9g== ------END CERTIFICATE----- - -Entrust Root Certification Authority - EC1 -========================================== ------BEGIN CERTIFICATE----- -MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx -FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn -YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl -ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw -FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs -LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg -dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy -AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef -9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE -FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h -vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8 -kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G ------END CERTIFICATE----- - -CFCA EV ROOT -============ ------BEGIN CERTIFICATE----- -MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE -CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB -IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw -MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD -DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV -BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD -7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN -uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW -ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7 -xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f -py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K -gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol -hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ -tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf -BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB -/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB -ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q -ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua -4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG -E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX -BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn -aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy -PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX -kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C -ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su ------END CERTIFICATE----- - -OISTE WISeKey Global Root GB CA -=============================== ------BEGIN CERTIFICATE----- -MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG -EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl -ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw -MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD -VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds -b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX -scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP -rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk -9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o -Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg -GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI -hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD -dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0 -VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui -HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic -Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= ------END CERTIFICATE----- - -SZAFIR ROOT CA2 -=============== ------BEGIN CERTIFICATE----- -MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG -A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV -BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ -BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD -VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q -qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK -DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE -2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ -ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi -ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P -AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC -AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5 -O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67 -oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul -4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6 -+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw== ------END CERTIFICATE----- - -Certum Trusted Network CA 2 -=========================== ------BEGIN CERTIFICATE----- -MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE -BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1 -bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y -ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ -TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB -IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9 -7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o -CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b -Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p -uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130 -GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ -9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB -Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye -hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM -BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI -hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW -Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA -L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo -clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM -pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb -w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo -J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm -ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX -is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7 -zAYspsbiDrW5viSP ------END CERTIFICATE----- - -Hellenic Academic and Research Institutions RootCA 2015 -======================================================= ------BEGIN CERTIFICATE----- -MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT -BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0 -aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl -YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx -MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg -QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV -BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw -MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv -bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh -iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+ -6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd -FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr -i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F -GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2 -fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu -iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc -Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI -hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+ -D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM -d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y -d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn -82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb -davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F -Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt -J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa -JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q -p/UsQu0yrbYhnr68 ------END CERTIFICATE----- - -Hellenic Academic and Research Institutions ECC RootCA 2015 -=========================================================== ------BEGIN CERTIFICATE----- -MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0 -aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u -cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj -aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw -MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj -IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD -VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290 -Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP -dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK -Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O -BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA -GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn -dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR ------END CERTIFICATE----- - -ISRG Root X1 -============ ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE -BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD -EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG -EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT -DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r -Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1 -3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K -b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN -Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ -4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf -1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu -hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH -usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r -OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G -A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY -9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV -0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt -hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw -TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx -e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA -JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD -YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n -JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ -m+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- - -AC RAIZ FNMT-RCM -================ ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT -AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw -MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD -TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC -ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf -qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr -btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL -j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou -08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw -WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT -tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ -47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC -ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa -i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o -dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD -nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s -D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ -j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT -Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW -+YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7 -Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d -8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm -5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG -rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM= ------END CERTIFICATE----- - -Amazon Root CA 1 -================ ------BEGIN CERTIFICATE----- -MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD -VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1 -MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv -bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH -FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ -gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t -dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce -VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3 -DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM -CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy -8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa -2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2 -xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5 ------END CERTIFICATE----- - -Amazon Root CA 2 -================ ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD -VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1 -MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv -bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC -ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4 -kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp -N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9 -AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd -fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx -kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS -btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0 -Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN -c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+ -3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw -DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA -A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY -+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE -YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW -xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ -gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW -aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV -Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3 -KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi -JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw= ------END CERTIFICATE----- - -Amazon Root CA 3 -================ ------BEGIN CERTIFICATE----- -MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG -EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy -NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ -MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB -f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr -Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43 -rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc -eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw== ------END CERTIFICATE----- - -Amazon Root CA 4 -================ ------BEGIN CERTIFICATE----- -MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG -EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy -NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ -MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN -/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri -83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA -MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 -AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== ------END CERTIFICATE----- - -TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 -============================================= ------BEGIN CERTIFICATE----- -MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT -D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr -IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g -TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp -ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD -VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt -c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth -bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11 -IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8 -6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc -wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0 -3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9 -WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU -ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh -AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc -lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R -e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j -q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= ------END CERTIFICATE----- - -GDCA TrustAUTH R5 ROOT -====================== ------BEGIN CERTIFICATE----- -MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw -BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD -DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow -YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ -IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B -AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs -AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p -OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr -pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ -9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ -xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM -R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ -D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4 -oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx -9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg -p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9 -H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35 -6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd -+PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ -HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD -F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ -8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv -/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT -aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== ------END CERTIFICATE----- - -SSL.com Root Certification Authority RSA -======================================== ------BEGIN CERTIFICATE----- -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 -WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k= ------END CERTIFICATE----- - -SSL.com Root Certification Authority ECC -======================================== ------BEGIN CERTIFICATE----- -MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV -BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv -BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy -MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO -BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv -bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA -BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+ -8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR -hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT -jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW -e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z -5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl ------END CERTIFICATE----- - -SSL.com EV Root Certification Authority RSA R2 -============================================== ------BEGIN CERTIFICATE----- -MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w -DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u -MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy -MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI -DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD -VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh -hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w -cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO -Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+ -B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh -CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim -9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto -RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm -JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48 -+qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV -HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp -qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1 -++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx -Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G -guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz -OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7 -CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq -lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR -rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1 -hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX -9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w== ------END CERTIFICATE----- - -SSL.com EV Root Certification Authority ECC -=========================================== ------BEGIN CERTIFICATE----- -MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV -BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy -BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw -MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx -EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM -LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB -BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy -3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O -BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe -5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ -N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm -m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg== ------END CERTIFICATE----- - -GlobalSign Root CA - R6 -======================= ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX -R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds -b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i -YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs -U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss -grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE -3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF -vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM -PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+ -azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O -WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy -CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP -0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN -b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE -AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV -HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN -nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0 -lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY -BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym -Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr -3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1 -0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T -uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK -oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t -JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA= ------END CERTIFICATE----- - -OISTE WISeKey Global Root GC CA -=============================== ------BEGIN CERTIFICATE----- -MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD -SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo -MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa -Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL -ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh -bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr -VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab -NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd -BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E -AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk -AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 ------END CERTIFICATE----- - -UCA Global G2 Root -================== ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG -EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x -NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU -cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT -oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV -8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS -h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o -LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/ -R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe -KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa -4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc -OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97 -8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo -5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5 -1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A -Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9 -yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX -c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo -jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk -bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x -ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn -RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A== ------END CERTIFICATE----- - -UCA Extended Validation Root -============================ ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG -EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u -IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G -A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs -iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF -Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu -eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR -59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH -0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR -el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv -B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth -WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS -NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS -3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL -BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR -ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM -aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4 -dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb -+7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW -F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi -GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc -GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi -djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr -dhh2n1ax ------END CERTIFICATE----- - -Certigna Root CA -================ ------BEGIN CERTIFICATE----- -MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE -BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ -MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda -MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz -MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC -DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX -stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz -KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8 -JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16 -XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq -4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej -wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ -lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI -jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/ -/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of -1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy -dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h -LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl -cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt -OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP -TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq -7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3 -4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd -8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS -6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY -tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS -aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde -E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0= ------END CERTIFICATE----- - -emSign Root CA - G1 -=================== ------BEGIN CERTIFICATE----- -MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET -MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl -ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx -ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk -aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN -LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1 -cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW -DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ -6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH -hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG -MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2 -vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q -NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q -+Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih -U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx -iN66zB+Afko= ------END CERTIFICATE----- - -emSign ECC Root CA - G3 -======================= ------BEGIN CERTIFICATE----- -MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG -A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg -MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4 -MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11 -ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g -RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc -58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr -MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC -AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D -CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7 -jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj ------END CERTIFICATE----- - -emSign Root CA - C1 -=================== ------BEGIN CERTIFICATE----- -MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx -EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp -Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE -BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD -ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up -ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/ -Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX -OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V -I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms -lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+ -XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD -ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp -/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1 -NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9 -wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ -BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI= ------END CERTIFICATE----- - -emSign ECC Root CA - C3 -======================= ------BEGIN CERTIFICATE----- -MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG -A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF -Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE -BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD -ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd -6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9 -SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA -B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA -MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU -ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ== ------END CERTIFICATE----- - -Hongkong Post Root CA 3 -======================= ------BEGIN CERTIFICATE----- -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 -dBb9HxEGmpv0 ------END CERTIFICATE----- - -Entrust Root Certification Authority - G4 -========================================= ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu -bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 -dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT -AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D -umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV -3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds -8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ -e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 -ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X -xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV -7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 -dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW -Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n -MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q -jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht -7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK -YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt -jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ -m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW -RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA -JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G -+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT -kcpG2om3PVODLAgfi49T3f+sHw== ------END CERTIFICATE----- - -Microsoft ECC Root Certificate Authority 2017 -============================================= ------BEGIN CERTIFICATE----- -MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV -UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND -IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4 -MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw -NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ -BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6 -thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB -eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM -+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf -Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR -eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= ------END CERTIFICATE----- - -Microsoft RSA Root Certificate Authority 2017 -============================================= ------BEGIN CERTIFICATE----- -MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG -EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg -UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw -NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u -MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml -7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e -S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7 -1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+ -dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F -yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS -MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr -lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ -0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ -ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og -6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80 -dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk -+ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex -/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy -AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW -ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE -7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT -c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D -5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E ------END CERTIFICATE----- - -e-Szigno Root CA 2017 -===================== ------BEGIN CERTIFICATE----- -MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw -DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt -MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa -Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE -CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp -Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx -s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G -A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv -vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA -tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO -svxyqltZ+efcMQ== ------END CERTIFICATE----- - -certSIGN Root CA G2 -=================== ------BEGIN CERTIFICATE----- -MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw -EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy -MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH -TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05 -N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk -abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg -wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp -dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh -ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732 -jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf -95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc -z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL -iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud -DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB -ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC -b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB -/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5 -8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5 -BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW -atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU -Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M -NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N -0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc= ------END CERTIFICATE----- - -Trustwave Global Certification Authority -======================================== ------BEGIN CERTIFICATE----- -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 -29FpHOTKyeC2nOnOcXHebD8WpHk= ------END CERTIFICATE----- - -Trustwave Global ECC P256 Certification Authority -================================================= ------BEGIN CERTIFICATE----- -MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER -MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI -b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD -VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy -dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1 -NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj -43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm -P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt -0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz -RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 ------END CERTIFICATE----- - -Trustwave Global ECC P384 Certification Authority -================================================= ------BEGIN CERTIFICATE----- -MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER -MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI -b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD -VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy -dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4 -NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH -Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr -/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV -HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn -ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl -CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw== ------END CERTIFICATE----- - -NAVER Global Root Certification Authority -========================================= ------BEGIN CERTIFICATE----- -MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG -A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD -DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4 -NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT -UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb -UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW -+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7 -XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2 -aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4 -Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z -VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B -A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai -cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy -YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV -HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB -Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK -21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB -jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx -hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg -E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH -D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ -A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY -qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG -I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg -kpzNNIaRkPpkUZ3+/uul9XXeifdy ------END CERTIFICATE----- - -AC RAIZ FNMT-RCM SERVIDORES SEGUROS -=================================== ------BEGIN CERTIFICATE----- -MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF -UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy -NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4 -MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt -UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB -QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA -BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2 -LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG -SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD -zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c= ------END CERTIFICATE----- - -GlobalSign Root R46 -=================== ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV -BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv -b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX -BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es -CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/ -r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje -2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt -bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj -K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4 -12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on -ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls -eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9 -vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM -BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg -JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy -gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92 -CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm -OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq -JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye -qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz -nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7 -DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3 -QEUxeCp6 ------END CERTIFICATE----- - -GlobalSign Root E46 -=================== ------BEGIN CERTIFICATE----- -MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT -AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg -RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV -BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB -jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj -QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL -gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk -vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ -CAezNIm8BZ/3Hobui3A= ------END CERTIFICATE----- - -GLOBALTRUST 2020 -================ ------BEGIN CERTIFICATE----- -MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx -IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT -VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh -BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy -MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi -D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO -VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM -CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm -fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA -A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR -JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG -DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU -clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ -mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud -IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA -VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw -4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 -iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS -8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 -HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS -vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 -oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF -YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl -gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== ------END CERTIFICATE----- - -ANF Secure Server Root CA -========================= ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -Certum EC-384 CA -================ ------BEGIN CERTIFICATE----- -MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ -TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy -dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2 -MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh -dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx -GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq -vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn -iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo -ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0 -QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= ------END CERTIFICATE----- - -Certum Trusted Root CA -====================== ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -TunTrust Root CA -================ ------BEGIN CERTIFICATE----- -MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG -A1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj -dHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw -NDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD -ZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw -DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz -2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b -bjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7 -NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd -gjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW -VSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f -Tpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ -juXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas -DXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS -VXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI -04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0 -90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl -0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd -Ao74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY -YdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp -adbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x -xBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP -jCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM -MEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z -ZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r -AZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o= ------END CERTIFICATE----- - -HARICA TLS RSA Root CA 2021 -=========================== ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG -EwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u -cyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz -OFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl -bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB -IFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN -JLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu -a2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y -Ulhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K -5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv -dmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR -0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH -GjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm -haZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ -CPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G -A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU -EapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq -QRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD -QpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR -j88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5 -vZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0 -qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6 -Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/ -PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn -kf3/W9b3raYvAwtt41dU63ZTGI0RmLo= ------END CERTIFICATE----- - -HARICA TLS ECC Root CA 2021 -=========================== ------BEGIN CERTIFICATE----- -MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH -UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD -QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX -DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj -IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv -b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l -AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b -ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW -0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi -rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw -CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps ------END CERTIFICATE----- - -Autoridad de Certificacion Firmaprofesional CIF A62634068 -========================================================= ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA -BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 -MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw -QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB -NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD -Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P -B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY -7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH -ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI -plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX -MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX -LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK -bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU -vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud -DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w -gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j -b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A -bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL -4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb -LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il -I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP -cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA -LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A -lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH -9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf -NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE -ZycPvEJdvSRUDewdcAZfpLz6IHxV ------END CERTIFICATE----- - -vTrus ECC Root CA -================= ------BEGIN CERTIFICATE----- -MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE -BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS -b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa -BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw -EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c -ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n -TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT -QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL -YgmRWAD5Tfs0aNoJrSEGGJTO ------END CERTIFICATE----- - -vTrus Root CA -============= ------BEGIN CERTIFICATE----- -MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG -A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv -b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG -A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ -KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots -SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI -ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF -XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA -YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70 -kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2 -AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu -/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu -1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO -9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg -scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC -AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd -nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr -jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4 -8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn -xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg -icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4 -sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW -nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc -SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H -l3s= ------END CERTIFICATE----- - -ISRG Root X2 -============ ------BEGIN CERTIFICATE----- -MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV -UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT -UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT -MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS -RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H -ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb -d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF -cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5 -U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn ------END CERTIFICATE----- - -HiPKI Root CA - G1 -================== ------BEGIN CERTIFICATE----- -MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG -EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ -IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT -AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg -Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0 -o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k -wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE -YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA -GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd -hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj -1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4 -9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/ -Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF -8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD -AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi -7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl -tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE -wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q -JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv -5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz -jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg -hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb -yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/ -yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== ------END CERTIFICATE----- - -GlobalSign ECC Root CA - R4 -=========================== ------BEGIN CERTIFICATE----- -MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i -YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds -b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i -YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds -b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW -ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E -BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI -KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg -UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm ------END CERTIFICATE----- - -GTS Root R1 -=========== ------BEGIN CERTIFICATE----- -MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV -UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg -UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE -ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM -f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0 -xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w -B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW -nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk -9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq -kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A -K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX -V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW -cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T -AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD -ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe -QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi -ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar -J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci -NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me -LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF -fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+ -7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3 -FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3 -gm3c ------END CERTIFICATE----- - -GTS Root R2 -=========== ------BEGIN CERTIFICATE----- -MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV -UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg -UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE -ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv -CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl -e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb -a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS -+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M -kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG -r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q -S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV -J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL -dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T -AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD -ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 -0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh -swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel -/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn -jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5 -9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M -7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8 -0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR -WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW -HYbL ------END CERTIFICATE----- - -GTS Root R3 -=========== ------BEGIN CERTIFICATE----- -MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi -MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw -HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ -R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO -PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout -736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA -MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq -Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT -L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV -11RZt+cRLInUue4X ------END CERTIFICATE----- - -GTS Root R4 -=========== ------BEGIN CERTIFICATE----- -MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi -MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw -HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ -R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO -PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu -hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA -MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1 -PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C -r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh -4rsUecrNIdSUtUlD ------END CERTIFICATE----- - -Telia Root CA v2 -================ ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT -AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2 -MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK -DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7 -6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q -9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn -pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl -tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW -5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr -RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E -BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4 -M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau -BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W -xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ -8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5 -tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H -eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C -y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC -QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15 -h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70 -sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9 -xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ -raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc= ------END CERTIFICATE----- - -D-TRUST BR Root CA 1 2020 -========================= ------BEGIN CERTIFICATE----- -MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE -RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy -MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV -BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG -ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7 -dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu -QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t -MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu -bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj -dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP -PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD -AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom -AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87 ------END CERTIFICATE----- - -D-TRUST EV Root CA 1 2020 -========================= ------BEGIN CERTIFICATE----- -MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE -RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy -MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV -BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG -ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8 -ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ -raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL -MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu -bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj -dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP -PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD -AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR -AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW ------END CERTIFICATE----- - -DigiCert TLS ECC P384 Root G5 -============================= ------BEGIN CERTIFICATE----- -MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4 -NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx -FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg -Um9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd -lHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj -n4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB -/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds -Jk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx -AJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA== ------END CERTIFICATE----- - -DigiCert TLS RSA4096 Root G5 -============================ ------BEGIN CERTIFICATE----- -MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG -EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0 -MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2 -IFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8 -7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU -AT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces -tyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa -zOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV -DdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q -TXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy -z6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/ -MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk -wcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E -FgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w -DQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw -GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN -lnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN -MBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/ -u4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G -OUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh -47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU -FvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ -yqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP -bEtoL8pU9ozaMv7Da4M/OMZ+ ------END CERTIFICATE----- - -Certainly Root R1 -================= ------BEGIN CERTIFICATE----- -MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE -BhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN -MjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy -dGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O -5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl -8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl -DbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI -XsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN -KPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ -AjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb -rlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1 -VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS -p6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz -HQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d -8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v -MMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB -GsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+ -gjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH -JBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7 -fpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw -x06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S -X3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8= ------END CERTIFICATE----- - -Certainly Root E1 -================= ------BEGIN CERTIFICATE----- -MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV -UzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0 -MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu -bHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4 -fxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9 -YBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E -AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8 -rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR ------END CERTIFICATE----- - -E-Tugra Global Root CA RSA v3 -============================= ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -E-Tugra Global Root CA ECC v3 -============================= ------BEGIN CERTIFICATE----- -MIICpTCCAiqgAwIBAgIUJkYZdzHhT28oNt45UYbm1JeIIsEwCgYIKoZIzj0EAwMwgYAxCzAJBgNV -BAYTAlRSMQ8wDQYDVQQHEwZBbmthcmExGTAXBgNVBAoTEEUtVHVncmEgRUJHIEEuUy4xHTAbBgNV -BAsTFEUtVHVncmEgVHJ1c3QgQ2VudGVyMSYwJAYDVQQDEx1FLVR1Z3JhIEdsb2JhbCBSb290IENB -IEVDQyB2MzAeFw0yMDAzMTgwOTQ2NThaFw00NTAzMTIwOTQ2NThaMIGAMQswCQYDVQQGEwJUUjEP -MA0GA1UEBxMGQW5rYXJhMRkwFwYDVQQKExBFLVR1Z3JhIEVCRyBBLlMuMR0wGwYDVQQLExRFLVR1 -Z3JhIFRydXN0IENlbnRlcjEmMCQGA1UEAxMdRS1UdWdyYSBHbG9iYWwgUm9vdCBDQSBFQ0MgdjMw -djAQBgcqhkjOPQIBBgUrgQQAIgNiAASOmCm/xxAeJ9urA8woLNheSBkQKczLWYHMjLiSF4mDKpL2 -w6QdTGLVn9agRtwcvHbB40fQWxPa56WzZkjnIZpKT4YKfWzqTTKACrJ6CZtpS5iB4i7sAnCWH/31 -Rs7K3IKjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU/4Ixcj75xGZsrTie0bBRiKWQ -zPUwHQYDVR0OBBYEFP+CMXI++cRmbK04ntGwUYilkMz1MA4GA1UdDwEB/wQEAwIBBjAKBggqhkjO -PQQDAwNpADBmAjEA5gVYaWHlLcoNy/EZCL3W/VGSGn5jVASQkZo1kTmZ+gepZpO6yGjUij/67W4W -Aie3AjEA3VoXK3YdZUKWpqxdinlW2Iob35reX8dQj7FbcQwm32pAAOwzkSFxvmjkI6TZraE3 ------END CERTIFICATE----- - -Security Communication RootCA3 -============================== ------BEGIN CERTIFICATE----- -MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw -IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD -b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw -CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE -AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r -hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE -NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2 -/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm -npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY -XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK -p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC -3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf -GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw -CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB -/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS -YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu -Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O -H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx -YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ -XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml -+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn -KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9 -dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm -6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg== ------END CERTIFICATE----- - -Security Communication ECC RootCA1 -================================== ------BEGIN CERTIFICATE----- -MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUwIwYD -VQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21t -dW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYxNjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTEL -MAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNV -BAMTIlNlY3VyaXR5IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQA -IgNiAASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+CnnfdldB9sELLo -5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpKULGjQjBAMB0GA1UdDgQW -BBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAK -BggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L -snNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e -N9k= ------END CERTIFICATE----- diff --git a/composer/vendor/composer/ca-bundle/src/CaBundle.php b/composer/vendor/composer/ca-bundle/src/CaBundle.php deleted file mode 100644 index 454c62cc0..000000000 --- a/composer/vendor/composer/ca-bundle/src/CaBundle.php +++ /dev/null @@ -1,431 +0,0 @@ -warning(sprintf( -'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', -PHP_VERSION -)); -$warned = true; -} - -$isValid = !empty($contents); -} elseif (is_string($contents) && strlen($contents) > 0) { -$contents = preg_replace("/^(\\-+(?:BEGIN|END))\\s+TRUSTED\\s+(CERTIFICATE\\-+)\$/m", '$1 $2', $contents); -if (null === $contents) { - -$isValid = false; -} else { -$isValid = (bool) openssl_x509_parse($contents); -} -} else { -$isValid = false; -} - -if ($logger) { -$logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid')); -} - -return self::$caFileValidity[$filename] = $isValid; -} - - - - - - - - - -public static function isOpensslParseSafe() -{ -if (null !== self::$useOpensslParse) { -return self::$useOpensslParse; -} - -if (PHP_VERSION_ID >= 50600) { -return self::$useOpensslParse = true; -} - - - - - -if ( -(PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328) -|| (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423) -|| PHP_VERSION_ID >= 50507 -) { - -return self::$useOpensslParse = true; -} - -if (defined('PHP_WINDOWS_VERSION_BUILD')) { - -return self::$useOpensslParse = false; -} - -$compareDistroVersionPrefix = function ($prefix, $fixedVersion) { -$regex = '{^'.preg_quote($prefix).'([0-9]+)$}'; - -if (preg_match($regex, PHP_VERSION, $m)) { -return ((int) $m[1]) >= $fixedVersion; -} - -return false; -}; - - -if ( -$compareDistroVersionPrefix('5.3.3-7+squeeze', 18) -|| $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) -|| $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) -) { -return self::$useOpensslParse = true; -} - - -if (!class_exists('Symfony\Component\Process\PhpProcess')) { -return self::$useOpensslParse = false; -} - - - - - - - - - - -$cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'; -$script = <<<'EOT' - -error_reporting(-1); -$info = openssl_x509_parse(base64_decode('%s')); -var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']); - -EOT; -$script = '<'."?php\n".sprintf($script, $cert); - -try { -$process = new PhpProcess($script); -$process->mustRun(); -} catch (\Exception $e) { - - -return self::$useOpensslParse = false; -} - -$output = preg_split('{\r?\n}', trim($process->getOutput())); -$errorOutput = trim($process->getErrorOutput()); - -if ( -is_array($output) -&& count($output) === 3 -&& $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION) -&& $output[1] === 'string(27) "stefan.esser@sektioneins.de"' -&& $output[2] === 'int(-1)' -&& preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput) -) { - -return self::$useOpensslParse = true; -} - -return self::$useOpensslParse = false; -} - - - - - -public static function reset() -{ -self::$caFileValidity = array(); -self::$caPath = null; -self::$useOpensslParse = null; -} - - - - - -private static function getEnvVariable($name) -{ -if (isset($_SERVER[$name])) { -return (string) $_SERVER[$name]; -} - -if (PHP_SAPI === 'cli' && ($value = getenv($name)) !== false && $value !== null) { -return (string) $value; -} - -return false; -} - - - - - - -private static function caFileUsable($certFile, LoggerInterface $logger = null) -{ -return $certFile -&& static::isFile($certFile, $logger) -&& static::isReadable($certFile, $logger) -&& static::validateCaFile($certFile, $logger); -} - - - - - - -private static function caDirUsable($certDir, LoggerInterface $logger = null) -{ -return $certDir -&& static::isDir($certDir, $logger) -&& static::isReadable($certDir, $logger) -&& static::glob($certDir . '/*', $logger); -} - - - - - - -private static function isFile($certFile, LoggerInterface $logger = null) -{ -$isFile = @is_file($certFile); -if (!$isFile && $logger) { -$logger->debug(sprintf('Checked CA file %s does not exist or it is not a file.', $certFile)); -} - -return $isFile; -} - - - - - - -private static function isDir($certDir, LoggerInterface $logger = null) -{ -$isDir = @is_dir($certDir); -if (!$isDir && $logger) { -$logger->debug(sprintf('Checked directory %s does not exist or it is not a directory.', $certDir)); -} - -return $isDir; -} - - - - - - -private static function isReadable($certFileOrDir, LoggerInterface $logger = null) -{ -$isReadable = @is_readable($certFileOrDir); -if (!$isReadable && $logger) { -$logger->debug(sprintf('Checked file or directory %s is not readable.', $certFileOrDir)); -} - -return $isReadable; -} - - - - - - -private static function glob($pattern, LoggerInterface $logger = null) -{ -$certs = glob($pattern); -if ($certs === false) { -if ($logger) { -$logger->debug(sprintf("An error occurred while trying to find certificates for pattern: %s", $pattern)); -} -return false; -} - -if (count($certs) === 0) { -if ($logger) { -$logger->debug(sprintf("No CA files found for pattern: %s", $pattern)); -} -return false; -} - -return true; -} -} diff --git a/composer/vendor/composer/class-map-generator/LICENSE b/composer/vendor/composer/class-map-generator/LICENSE deleted file mode 100644 index b7b64e162..000000000 --- a/composer/vendor/composer/class-map-generator/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (C) 2022 Composer - -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/composer/vendor/composer/class-map-generator/src/ClassMap.php b/composer/vendor/composer/class-map-generator/src/ClassMap.php deleted file mode 100644 index df8846c01..000000000 --- a/composer/vendor/composer/class-map-generator/src/ClassMap.php +++ /dev/null @@ -1,131 +0,0 @@ -map; -} - - - - - - - - - - - - -public function getPsrViolations(): array -{ -return $this->psrViolations; -} - - - - - - - - - - -public function getAmbiguousClasses(): array -{ -return $this->ambiguousClasses; -} - - - - -public function sort(): void -{ -ksort($this->map); -} - - - - - -public function addClass(string $className, string $path): void -{ -$this->map[$className] = $path; -} - - - - - -public function getClassPath(string $className): string -{ -if (!isset($this->map[$className])) { -throw new \OutOfBoundsException('Class '.$className.' is not present in the map'); -} - -return $this->map[$className]; -} - - - - -public function hasClass(string $className): bool -{ -return isset($this->map[$className]); -} - -public function addPsrViolation(string $warning): void -{ -$this->psrViolations[] = $warning; -} - - - - - -public function addAmbiguousClass(string $className, string $path): void -{ -$this->ambiguousClasses[$className][] = $path; -} - -public function count(): int -{ -return \count($this->map); -} -} diff --git a/composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php b/composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php deleted file mode 100644 index 25b51073b..000000000 --- a/composer/vendor/composer/class-map-generator/src/ClassMapGenerator.php +++ /dev/null @@ -1,334 +0,0 @@ -extensions = $extensions; -$this->classMap = new ClassMap; -} - - - - - - - - -public function avoidDuplicateScans(FileList $scannedFiles = null): self -{ -$this->scannedFiles = $scannedFiles ?? new FileList; - -return $this; -} - - - - - - - - - -public static function createMap($path): array -{ -$generator = new self(); - -$generator->scanPaths($path); - -return $generator->getClassMap()->getMap(); -} - -public function getClassMap(): ClassMap -{ -return $this->classMap; -} - - - - - - - - - - - -public function scanPaths($path, string $excluded = null, string $autoloadType = 'classmap', ?string $namespace = null): void -{ -if (!in_array($autoloadType, ['psr-0', 'psr-4', 'classmap'], true)) { -throw new \InvalidArgumentException('$autoloadType must be one of: "psr-0", "psr-4" or "classmap"'); -} - -if ('classmap' !== $autoloadType) { -if (!is_string($path)) { -throw new \InvalidArgumentException('$path must be a string when specifying a psr-0 or psr-4 autoload type'); -} -if (!is_string($namespace)) { -throw new \InvalidArgumentException('$namespace must be given (even if it is an empty string if you do not want to filter) when specifying a psr-0 or psr-4 autoload type'); -} -$basePath = $path; -} - -if (is_string($path)) { -if (is_file($path)) { -$path = [new \SplFileInfo($path)]; -} elseif (is_dir($path) || strpos($path, '*') !== false) { -$path = Finder::create() -->files() -->followLinks() -->name('/\.(?:'.implode('|', array_map('preg_quote', $this->extensions)).')$/') -->in($path); -} else { -throw new \RuntimeException( -'Could not scan for classes inside "'.$path.'" which does not appear to be a file nor a folder' -); -} -} - -$cwd = realpath(self::getCwd()); - -foreach ($path as $file) { -$filePath = $file->getPathname(); -if (!in_array(pathinfo($filePath, PATHINFO_EXTENSION), $this->extensions, true)) { -continue; -} - -if (!self::isAbsolutePath($filePath)) { -$filePath = $cwd . '/' . $filePath; -$filePath = self::normalizePath($filePath); -} else { -$filePath = Preg::replace('{[\\\\/]{2,}}', '/', $filePath); -} - -if ('' === $filePath) { -throw new \LogicException('Got an empty $filePath for '.$file->getPathname()); -} - -$realPath = realpath($filePath); - - -if (false === $realPath) { -throw new \RuntimeException('realpath of '.$filePath.' failed to resolve, got false'); -} - - - -if ($this->scannedFiles !== null && $this->scannedFiles->contains($realPath)) { -continue; -} - - -if (null !== $excluded && Preg::isMatch($excluded, strtr($realPath, '\\', '/'))) { -continue; -} - -if (null !== $excluded && Preg::isMatch($excluded, strtr($filePath, '\\', '/'))) { -continue; -} - -$classes = PhpFileParser::findClasses($filePath); -if ('classmap' !== $autoloadType && isset($namespace, $basePath)) { -$classes = $this->filterByNamespace($classes, $filePath, $namespace, $autoloadType, $basePath); - - -if (\count($classes) > 0 && $this->scannedFiles !== null) { -$this->scannedFiles->add($realPath); -} -} elseif ($this->scannedFiles !== null) { - -$this->scannedFiles->add($realPath); -} - -foreach ($classes as $class) { -if (!$this->classMap->hasClass($class)) { -$this->classMap->addClass($class, $filePath); -} elseif ($filePath !== $this->classMap->getClassPath($class) && !Preg::isMatch('{/(test|fixture|example|stub)s?/}i', strtr($this->classMap->getClassPath($class).' '.$filePath, '\\', '/'))) { -$this->classMap->addAmbiguousClass($class, $filePath); -} -} -} -} - - - - - - - - - - - -private function filterByNamespace(array $classes, string $filePath, string $baseNamespace, string $namespaceType, string $basePath): array -{ -$validClasses = []; -$rejectedClasses = []; - -$realSubPath = substr($filePath, strlen($basePath) + 1); -$dotPosition = strrpos($realSubPath, '.'); -$realSubPath = substr($realSubPath, 0, $dotPosition === false ? PHP_INT_MAX : $dotPosition); - -foreach ($classes as $class) { - -if ('' !== $baseNamespace && 0 !== strpos($class, $baseNamespace)) { -continue; -} - -if ('psr-0' === $namespaceType) { -$namespaceLength = strrpos($class, '\\'); -if (false !== $namespaceLength) { -$namespace = substr($class, 0, $namespaceLength + 1); -$className = substr($class, $namespaceLength + 1); -$subPath = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) -. str_replace('_', DIRECTORY_SEPARATOR, $className); -} else { -$subPath = str_replace('_', DIRECTORY_SEPARATOR, $class); -} -} elseif ('psr-4' === $namespaceType) { -$subNamespace = ('' !== $baseNamespace) ? substr($class, strlen($baseNamespace)) : $class; -$subPath = str_replace('\\', DIRECTORY_SEPARATOR, $subNamespace); -} else { -throw new \InvalidArgumentException('$namespaceType must be "psr-0" or "psr-4"'); -} -if ($subPath === $realSubPath) { -$validClasses[] = $class; -} else { -$rejectedClasses[] = $class; -} -} - -if (\count($validClasses) === 0) { -foreach ($rejectedClasses as $class) { -$this->classMap->addPsrViolation("Class $class located in ".Preg::replace('{^'.preg_quote(self::getCwd()).'}', '.', $filePath, 1)." does not comply with $namespaceType autoloading standard. Skipping."); -} - -return []; -} - -return $validClasses; -} - - - - - - - - - -private static function isAbsolutePath(string $path) -{ -return strpos($path, '/') === 0 || substr($path, 1, 1) === ':' || strpos($path, '\\\\') === 0; -} - - - - - - - - - - -private static function normalizePath(string $path) -{ -$parts = []; -$path = strtr($path, '\\', '/'); -$prefix = ''; -$absolute = ''; - - -if (strpos($path, '//') === 0 && \strlen($path) > 2) { -$absolute = '//'; -$path = substr($path, 2); -} - - -if (Preg::isMatch('{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix', $path, $match)) { -$prefix = $match[1]; -$path = substr($path, \strlen($prefix)); -} - -if (strpos($path, '/') === 0) { -$absolute = '/'; -$path = substr($path, 1); -} - -$up = false; -foreach (explode('/', $path) as $chunk) { -if ('..' === $chunk && (\strlen($absolute) > 0 || $up)) { -array_pop($parts); -$up = !(\count($parts) === 0 || '..' === end($parts)); -} elseif ('.' !== $chunk && '' !== $chunk) { -$parts[] = $chunk; -$up = '..' !== $chunk; -} -} - - -$prefix = Preg::replaceCallback('{(^|://)[a-z]:$}i', function (array $m) { return strtoupper($m[0]); }, $prefix); - -return $prefix.$absolute.implode('/', $parts); -} - - - - -private static function getCwd(): string -{ -$cwd = getcwd(); - -if (false === $cwd) { -throw new \RuntimeException('Could not determine the current working directory'); -} - -return $cwd; -} -} diff --git a/composer/vendor/composer/class-map-generator/src/FileList.php b/composer/vendor/composer/class-map-generator/src/FileList.php deleted file mode 100644 index fb3516df9..000000000 --- a/composer/vendor/composer/class-map-generator/src/FileList.php +++ /dev/null @@ -1,42 +0,0 @@ -files[$path] = true; -} - - - - -public function contains(string $path): bool -{ -return isset($this->files[$path]); -} -} diff --git a/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php b/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php deleted file mode 100644 index 2e55c2bda..000000000 --- a/composer/vendor/composer/class-map-generator/src/PhpFileCleaner.php +++ /dev/null @@ -1,247 +0,0 @@ - $type, -'length' => \strlen($type), -'pattern' => '{.\b(?])'.$type.'\s++[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+}Ais', -); -} - -self::$restPattern = '{[^?"\'contents = $contents; -$this->len = \strlen($this->contents); -$this->maxMatches = $maxMatches; -} - -public function clean(): string -{ -$clean = ''; - -while ($this->index < $this->len) { -$this->skipToPhp(); -$clean .= 'index < $this->len) { -$char = $this->contents[$this->index]; -if ($char === '?' && $this->peek('>')) { -$clean .= '?>'; -$this->index += 2; -continue 2; -} - -if ($char === '"') { -$this->skipString('"'); -$clean .= 'null'; -continue; -} - -if ($char === "'") { -$this->skipString("'"); -$clean .= 'null'; -continue; -} - -if ($char === "<" && $this->peek('<') && $this->match('{<<<[ \t]*+([\'"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*+)\\1(?:\r\n|\n|\r)}A', $match)) { -$this->index += \strlen($match[0]); -$this->skipHeredoc($match[2]); -$clean .= 'null'; -continue; -} - -if ($char === '/') { -if ($this->peek('/')) { -$this->skipToNewline(); -continue; -} -if ($this->peek('*')) { -$this->skipComment(); -continue; -} -} - -if ($this->maxMatches === 1 && isset(self::$typeConfig[$char])) { -$type = self::$typeConfig[$char]; -if ( -\substr($this->contents, $this->index, $type['length']) === $type['name'] -&& Preg::isMatch($type['pattern'], $this->contents, $match, 0, $this->index - 1) -) { -$clean .= $match[0]; - -return $clean; -} -} - -$this->index += 1; -if ($this->match(self::$restPattern, $match)) { -$clean .= $char . $match[0]; -$this->index += \strlen($match[0]); -} else { -$clean .= $char; -} -} -} - -return $clean; -} - -private function skipToPhp(): void -{ -while ($this->index < $this->len) { -if ($this->contents[$this->index] === '<' && $this->peek('?')) { -$this->index += 2; -break; -} - -$this->index += 1; -} -} - -private function skipString(string $delimiter): void -{ -$this->index += 1; -while ($this->index < $this->len) { -if ($this->contents[$this->index] === '\\' && ($this->peek('\\') || $this->peek($delimiter))) { -$this->index += 2; -continue; -} -if ($this->contents[$this->index] === $delimiter) { -$this->index += 1; -break; -} -$this->index += 1; -} -} - -private function skipComment(): void -{ -$this->index += 2; -while ($this->index < $this->len) { -if ($this->contents[$this->index] === '*' && $this->peek('/')) { -$this->index += 2; -break; -} - -$this->index += 1; -} -} - -private function skipToNewline(): void -{ -while ($this->index < $this->len) { -if ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n") { -return; -} -$this->index += 1; -} -} - -private function skipHeredoc(string $delimiter): void -{ -$firstDelimiterChar = $delimiter[0]; -$delimiterLength = \strlen($delimiter); -$delimiterPattern = '{'.preg_quote($delimiter).'(?![a-zA-Z0-9_\x80-\xff])}A'; - -while ($this->index < $this->len) { - -switch ($this->contents[$this->index]) { -case "\t": -case " ": -$this->index += 1; -continue 2; -case $firstDelimiterChar: -if ( -\substr($this->contents, $this->index, $delimiterLength) === $delimiter -&& $this->match($delimiterPattern) -) { -$this->index += $delimiterLength; - -return; -} -break; -} - - -while ($this->index < $this->len) { -$this->skipToNewline(); - - -while ($this->index < $this->len && ($this->contents[$this->index] === "\r" || $this->contents[$this->index] === "\n")) { -$this->index += 1; -} - -break; -} -} -} - -private function peek(string $char): bool -{ -return $this->index + 1 < $this->len && $this->contents[$this->index + 1] === $char; -} - - - - - -private function match(string $regex, array &$match = null): bool -{ -return Preg::isMatch($regex, $this->contents, $match, 0, $this->index); -} -} diff --git a/composer/vendor/composer/class-map-generator/src/PhpFileParser.php b/composer/vendor/composer/class-map-generator/src/PhpFileParser.php deleted file mode 100644 index 2e6f071b2..000000000 --- a/composer/vendor/composer/class-map-generator/src/PhpFileParser.php +++ /dev/null @@ -1,150 +0,0 @@ -clean(); -unset($p); - -Preg::matchAll('{ - (?: - \b(?])(?Pclass|interface|trait'.$extraTypes.') \s++ (?P[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+) - | \b(?])(?Pnamespace) (?P\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;] - ) - }ix', $contents, $matches); - -$classes = array(); -$namespace = ''; - -for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { -if (isset($matches['ns'][$i]) && $matches['ns'][$i] !== '') { -$namespace = str_replace(array(' ', "\t", "\r", "\n"), '', (string) $matches['nsname'][$i]) . '\\'; -} else { -$name = $matches['name'][$i]; - -if ($name === 'extends' || $name === 'implements') { -continue; -} -if ($name[0] === ':') { - -$name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); -} elseif (strtolower($matches['type'][$i]) === 'enum') { - - - - - - - - -$colonPos = strrpos($name, ':'); -if (false !== $colonPos) { -$name = substr($name, 0, $colonPos); -} -} -$classes[] = ltrim($namespace . $name, '\\'); -} -} - -return $classes; -} - - - - -private static function getExtraTypes(): string -{ -static $extraTypes = null; - -if (null === $extraTypes) { -$extraTypes = ''; -if (PHP_VERSION_ID >= 80100 || (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>='))) { -$extraTypes .= '|enum'; -} - -PhpFileCleaner::setTypeConfig(array_merge(['class', 'interface', 'trait'], array_filter(explode('|', $extraTypes)))); -} - -return $extraTypes; -} - - - - - - - - - - - - -private static function isReadable(string $path) -{ -if (is_readable($path)) { -return true; -} - -if (is_file($path)) { -return false !== @file_get_contents($path, false, null, 0, 1); -} - - -return false; -} -} diff --git a/composer/vendor/composer/installed.php b/composer/vendor/composer/installed.php deleted file mode 100644 index f677438ac..000000000 --- a/composer/vendor/composer/installed.php +++ /dev/null @@ -1,281 +0,0 @@ - array( -'name' => 'composer/composer', -'pretty_version' => '2.5.3', -'version' => '2.5.3.0', -'reference' => '607a4c04006ce1d2b6fdfd5467bae3d7ad9ce5ab', -'type' => 'library', -'install_path' => __DIR__ . '/../../', -'aliases' => array(), -'dev' => false, -), -'versions' => array( -'composer/ca-bundle' => array( -'pretty_version' => '1.3.5', -'version' => '1.3.5.0', -'reference' => '74780ccf8c19d6acb8d65c5f39cd72110e132bbd', -'type' => 'library', -'install_path' => __DIR__ . '/./ca-bundle', -'aliases' => array(), -'dev_requirement' => false, -), -'composer/class-map-generator' => array( -'pretty_version' => '1.0.0', -'version' => '1.0.0.0', -'reference' => '1e1cb2b791facb2dfe32932a7718cf2571187513', -'type' => 'library', -'install_path' => __DIR__ . '/./class-map-generator', -'aliases' => array(), -'dev_requirement' => false, -), -'composer/composer' => array( -'pretty_version' => '2.5.3', -'version' => '2.5.3.0', -'reference' => '607a4c04006ce1d2b6fdfd5467bae3d7ad9ce5ab', -'type' => 'library', -'install_path' => __DIR__ . '/../../', -'aliases' => array(), -'dev_requirement' => false, -), -'composer/metadata-minifier' => array( -'pretty_version' => '1.0.0', -'version' => '1.0.0.0', -'reference' => 'c549d23829536f0d0e984aaabbf02af91f443207', -'type' => 'library', -'install_path' => __DIR__ . '/./metadata-minifier', -'aliases' => array(), -'dev_requirement' => false, -), -'composer/pcre' => array( -'pretty_version' => '2.1.0', -'version' => '2.1.0.0', -'reference' => '3fdb2807b31a78a40ad89570e30ec77466c98717', -'type' => 'library', -'install_path' => __DIR__ . '/./pcre', -'aliases' => array(), -'dev_requirement' => false, -), -'composer/semver' => array( -'pretty_version' => '3.3.2', -'version' => '3.3.2.0', -'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', -'type' => 'library', -'install_path' => __DIR__ . '/./semver', -'aliases' => array(), -'dev_requirement' => false, -), -'composer/spdx-licenses' => array( -'pretty_version' => '1.5.7', -'version' => '1.5.7.0', -'reference' => 'c848241796da2abf65837d51dce1fae55a960149', -'type' => 'library', -'install_path' => __DIR__ . '/./spdx-licenses', -'aliases' => array(), -'dev_requirement' => false, -), -'composer/xdebug-handler' => array( -'pretty_version' => '3.0.3', -'version' => '3.0.3.0', -'reference' => 'ced299686f41dce890debac69273b47ffe98a40c', -'type' => 'library', -'install_path' => __DIR__ . '/./xdebug-handler', -'aliases' => array(), -'dev_requirement' => false, -), -'justinrainbow/json-schema' => array( -'pretty_version' => '5.2.12', -'version' => '5.2.12.0', -'reference' => 'ad87d5a5ca981228e0e205c2bc7dfb8e24559b60', -'type' => 'library', -'install_path' => __DIR__ . '/../justinrainbow/json-schema', -'aliases' => array(), -'dev_requirement' => false, -), -'psr/container' => array( -'pretty_version' => '1.1.1', -'version' => '1.1.1.0', -'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', -'type' => 'library', -'install_path' => __DIR__ . '/../psr/container', -'aliases' => array(), -'dev_requirement' => false, -), -'psr/log' => array( -'pretty_version' => '1.1.4', -'version' => '1.1.4.0', -'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', -'type' => 'library', -'install_path' => __DIR__ . '/../psr/log', -'aliases' => array(), -'dev_requirement' => false, -), -'psr/log-implementation' => array( -'dev_requirement' => false, -'provided' => array( -0 => '1.0|2.0', -), -), -'react/promise' => array( -'pretty_version' => 'v2.9.0', -'version' => '2.9.0.0', -'reference' => '234f8fd1023c9158e2314fa9d7d0e6a83db42910', -'type' => 'library', -'install_path' => __DIR__ . '/../react/promise', -'aliases' => array(), -'dev_requirement' => false, -), -'seld/jsonlint' => array( -'pretty_version' => '1.9.0', -'version' => '1.9.0.0', -'reference' => '4211420d25eba80712bff236a98960ef68b866b7', -'type' => 'library', -'install_path' => __DIR__ . '/../seld/jsonlint', -'aliases' => array(), -'dev_requirement' => false, -), -'seld/phar-utils' => array( -'pretty_version' => '1.2.1', -'version' => '1.2.1.0', -'reference' => 'ea2f4014f163c1be4c601b9b7bd6af81ba8d701c', -'type' => 'library', -'install_path' => __DIR__ . '/../seld/phar-utils', -'aliases' => array(), -'dev_requirement' => false, -), -'seld/signal-handler' => array( -'pretty_version' => '2.0.1', -'version' => '2.0.1.0', -'reference' => 'f69d119511dc0360440cdbdaa71829c149b7be75', -'type' => 'library', -'install_path' => __DIR__ . '/../seld/signal-handler', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/console' => array( -'pretty_version' => 'v5.4.19', -'version' => '5.4.19.0', -'reference' => 'dccb8d251a9017d5994c988b034d3e18aaabf740', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/console', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/deprecation-contracts' => array( -'pretty_version' => 'v2.5.2', -'version' => '2.5.2.0', -'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/deprecation-contracts', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/filesystem' => array( -'pretty_version' => 'v5.4.19', -'version' => '5.4.19.0', -'reference' => '648bfaca6a494f3e22378123bcee2894045dc9d8', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/filesystem', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/finder' => array( -'pretty_version' => 'v5.4.19', -'version' => '5.4.19.0', -'reference' => '6071aebf810ad13fe8200c224f36103abb37cf1f', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/finder', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/polyfill-ctype' => array( -'pretty_version' => 'v1.27.0', -'version' => '1.27.0.0', -'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/polyfill-ctype', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/polyfill-intl-grapheme' => array( -'pretty_version' => 'v1.27.0', -'version' => '1.27.0.0', -'reference' => '511a08c03c1960e08a883f4cffcacd219b758354', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/polyfill-intl-normalizer' => array( -'pretty_version' => 'v1.27.0', -'version' => '1.27.0.0', -'reference' => '19bd1e4fcd5b91116f14d8533c57831ed00571b6', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/polyfill-mbstring' => array( -'pretty_version' => 'v1.27.0', -'version' => '1.27.0.0', -'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/polyfill-php73' => array( -'pretty_version' => 'v1.27.0', -'version' => '1.27.0.0', -'reference' => '9e8ecb5f92152187c4799efd3c96b78ccab18ff9', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/polyfill-php73', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/polyfill-php80' => array( -'pretty_version' => 'v1.27.0', -'version' => '1.27.0.0', -'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/polyfill-php80', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/polyfill-php81' => array( -'pretty_version' => 'v1.27.0', -'version' => '1.27.0.0', -'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/polyfill-php81', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/process' => array( -'pretty_version' => 'v5.4.19', -'version' => '5.4.19.0', -'reference' => 'c5ba874c9b636dbccf761e22ce750e88ec3f55e1', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/process', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/service-contracts' => array( -'pretty_version' => 'v2.5.2', -'version' => '2.5.2.0', -'reference' => '4b426aac47d6427cc1a1d0f7e2ac724627f5966c', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/service-contracts', -'aliases' => array(), -'dev_requirement' => false, -), -'symfony/string' => array( -'pretty_version' => 'v5.4.19', -'version' => '5.4.19.0', -'reference' => '0a01071610fd861cc160dfb7e2682ceec66064cb', -'type' => 'library', -'install_path' => __DIR__ . '/../symfony/string', -'aliases' => array(), -'dev_requirement' => false, -), -), -); diff --git a/composer/vendor/composer/metadata-minifier/LICENSE b/composer/vendor/composer/metadata-minifier/LICENSE deleted file mode 100644 index 35aad3355..000000000 --- a/composer/vendor/composer/metadata-minifier/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (C) 2021 Composer - -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/composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php b/composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php deleted file mode 100644 index adcb6c569..000000000 --- a/composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php +++ /dev/null @@ -1,89 +0,0 @@ - $val) { -if ($val === '__unset') { -unset($expandedVersion[$key]); -} else { -$expandedVersion[$key] = $val; -} -} - -$expanded[] = $expandedVersion; -} - -return $expanded; -} - - - - - - - -public static function minify(array $versions) -{ -$minifiedVersions = array(); - -$lastKnownVersionData = null; -foreach ($versions as $version) { -if (!$lastKnownVersionData) { -$lastKnownVersionData = $version; -$minifiedVersions[] = $version; -continue; -} - -$minifiedVersion = array(); - - -foreach ($version as $key => $val) { -if (!isset($lastKnownVersionData[$key]) || $lastKnownVersionData[$key] !== $val) { -$minifiedVersion[$key] = $val; -$lastKnownVersionData[$key] = $val; -} -} - - -foreach ($lastKnownVersionData as $key => $val) { -if (!isset($version[$key])) { -$minifiedVersion[$key] = "__unset"; -unset($lastKnownVersionData[$key]); -} -} - -$minifiedVersions[] = $minifiedVersion; -} - -return $minifiedVersions; -} -} diff --git a/composer/vendor/composer/pcre/LICENSE b/composer/vendor/composer/pcre/LICENSE deleted file mode 100644 index 35aad3355..000000000 --- a/composer/vendor/composer/pcre/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (C) 2021 Composer - -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/composer/vendor/composer/pcre/src/MatchAllResult.php b/composer/vendor/composer/pcre/src/MatchAllResult.php deleted file mode 100644 index 8168221ca..000000000 --- a/composer/vendor/composer/pcre/src/MatchAllResult.php +++ /dev/null @@ -1,46 +0,0 @@ -matches = $matches; -$this->matched = (bool) $count; -$this->count = $count; -} -} diff --git a/composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php b/composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php deleted file mode 100644 index 0b4cd7458..000000000 --- a/composer/vendor/composer/pcre/src/MatchAllStrictGroupsResult.php +++ /dev/null @@ -1,46 +0,0 @@ -matches = $matches; -$this->matched = (bool) $count; -$this->count = $count; -} -} diff --git a/composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php b/composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php deleted file mode 100644 index b8f056b74..000000000 --- a/composer/vendor/composer/pcre/src/MatchAllWithOffsetsResult.php +++ /dev/null @@ -1,48 +0,0 @@ -matches = $matches; -$this->matched = (bool) $count; -$this->count = $count; -} -} diff --git a/composer/vendor/composer/pcre/src/MatchResult.php b/composer/vendor/composer/pcre/src/MatchResult.php deleted file mode 100644 index 8a2899c56..000000000 --- a/composer/vendor/composer/pcre/src/MatchResult.php +++ /dev/null @@ -1,39 +0,0 @@ -matches = $matches; -$this->matched = (bool) $count; -} -} diff --git a/composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php b/composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php deleted file mode 100644 index dea22d898..000000000 --- a/composer/vendor/composer/pcre/src/MatchStrictGroupsResult.php +++ /dev/null @@ -1,39 +0,0 @@ -matches = $matches; -$this->matched = (bool) $count; -} -} diff --git a/composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php b/composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php deleted file mode 100644 index e49f57533..000000000 --- a/composer/vendor/composer/pcre/src/MatchWithOffsetsResult.php +++ /dev/null @@ -1,41 +0,0 @@ -matches = $matches; -$this->matched = (bool) $count; -} -} diff --git a/composer/vendor/composer/pcre/src/PcreException.php b/composer/vendor/composer/pcre/src/PcreException.php deleted file mode 100644 index 0b2245008..000000000 --- a/composer/vendor/composer/pcre/src/PcreException.php +++ /dev/null @@ -1,60 +0,0 @@ - $val) { -if ($val === $code && substr($const, -6) === '_ERROR') { -return $const; -} -} - -return 'UNDEFINED_ERROR'; -} -} diff --git a/composer/vendor/composer/pcre/src/Preg.php b/composer/vendor/composer/pcre/src/Preg.php deleted file mode 100644 index be4c097f0..000000000 --- a/composer/vendor/composer/pcre/src/Preg.php +++ /dev/null @@ -1,454 +0,0 @@ -= 70400) { -$result = preg_replace_callback($pattern, $replacement, $subject, $limit, $count, $flags); -} else { -$result = preg_replace_callback($pattern, $replacement, $subject, $limit, $count); -} -if ($result === null) { -throw PcreException::fromFunction('preg_replace_callback', $pattern); -} - -return $result; -} - - - - - - - - - -public static function replaceCallbackArray(array $pattern, $subject, int $limit = -1, int &$count = null, int $flags = 0): string -{ -if (!is_scalar($subject)) { -if (is_array($subject)) { -throw new \InvalidArgumentException(static::ARRAY_MSG); -} - -throw new \TypeError(sprintf(static::INVALID_TYPE_MSG, gettype($subject))); -} - -if (PHP_VERSION_ID >= 70400) { -$result = preg_replace_callback_array($pattern, $subject, $limit, $count, $flags); -} else { -$result = preg_replace_callback_array($pattern, $subject, $limit, $count); -} -if ($result === null) { -$pattern = array_keys($pattern); -throw PcreException::fromFunction('preg_replace_callback_array', $pattern); -} - -return $result; -} - - - - - -public static function split(string $pattern, string $subject, int $limit = -1, int $flags = 0): array -{ -if (($flags & PREG_SPLIT_OFFSET_CAPTURE) !== 0) { -throw new \InvalidArgumentException('PREG_SPLIT_OFFSET_CAPTURE is not supported as it changes the type of $matches, use splitWithOffsets() instead'); -} - -$result = preg_split($pattern, $subject, $limit, $flags); -if ($result === false) { -throw PcreException::fromFunction('preg_split', $pattern); -} - -return $result; -} - - - - - - -public static function splitWithOffsets(string $pattern, string $subject, int $limit = -1, int $flags = 0): array -{ -$result = preg_split($pattern, $subject, $limit, $flags | PREG_SPLIT_OFFSET_CAPTURE); -if ($result === false) { -throw PcreException::fromFunction('preg_split', $pattern); -} - -return $result; -} - - - - - - - - -public static function grep(string $pattern, array $array, int $flags = 0): array -{ -$result = preg_grep($pattern, $array, $flags); -if ($result === false) { -throw PcreException::fromFunction('preg_grep', $pattern); -} - -return $result; -} - - - - - - - - - - -public static function isMatch(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool -{ -return (bool) static::match($pattern, $subject, $matches, $flags, $offset); -} - - - - - - - - - - - -public static function isMatchStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool -{ -return (bool) self::matchStrictGroups($pattern, $subject, $matches, $flags, $offset); -} - - - - - - - - - - -public static function isMatchAll(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool -{ -return (bool) static::matchAll($pattern, $subject, $matches, $flags, $offset); -} - - - - - - - - - - -public static function isMatchAllStrictGroups(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0): bool -{ -return (bool) self::matchAllStrictGroups($pattern, $subject, $matches, $flags, $offset); -} - - - - - - - - - - - - -public static function isMatchWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool -{ -return (bool) static::matchWithOffsets($pattern, $subject, $matches, $flags, $offset); -} - - - - - - - - - - - - -public static function isMatchAllWithOffsets(string $pattern, string $subject, ?array &$matches, int $flags = 0, int $offset = 0): bool -{ -return (bool) static::matchAllWithOffsets($pattern, $subject, $matches, $flags, $offset); -} - -private static function checkOffsetCapture(int $flags, string $useFunctionName): void -{ -if (($flags & PREG_OFFSET_CAPTURE) !== 0) { -throw new \InvalidArgumentException('PREG_OFFSET_CAPTURE is not supported as it changes the type of $matches, use ' . $useFunctionName . '() instead'); -} -} - -private static function checkSetOrder(int $flags): void -{ -if (($flags & PREG_SET_ORDER) !== 0) { -throw new \InvalidArgumentException('PREG_SET_ORDER is not supported as it changes the type of $matches'); -} -} - - - - - - -private static function enforceNonNullMatches(string $pattern, array $matches, string $variantMethod) -{ -foreach ($matches as $group => $match) { -if (null === $match) { -throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.'); -} -} - - -return $matches; -} - - - - - - -private static function enforceNonNullMatchAll(string $pattern, array $matches, string $variantMethod) -{ -foreach ($matches as $group => $groupMatches) { -foreach ($groupMatches as $match) { -if (null === $match) { -throw new UnexpectedNullMatchException('Pattern "'.$pattern.'" had an unexpected unmatched group "'.$group.'", make sure the pattern always matches or use '.$variantMethod.'() instead.'); -} -} -} - - -return $matches; -} - - - - - - - - - -private static function pregMatch(string $pattern, string $subject, ?array &$matches = null, int $flags = 0, int $offset = 0) -{ -if (PHP_VERSION_ID >= 70400) { -return preg_match($pattern, $subject, $matches, $flags, $offset); -} - - - - - - - - -$result = preg_match_all($pattern, $subject, $matchesInternal, $flags, $offset); -if (!is_int($result)) { -throw PcreException::fromFunction('preg_match', $pattern); -} - -if ($result === 0) { -$matches = []; -} else { -$matches = array_map(function ($m) { return reset($m); }, $matchesInternal); -$result = min($result, 1); -} - -return $result; -} -} diff --git a/composer/vendor/composer/pcre/src/Regex.php b/composer/vendor/composer/pcre/src/Regex.php deleted file mode 100644 index 2adb108df..000000000 --- a/composer/vendor/composer/pcre/src/Regex.php +++ /dev/null @@ -1,159 +0,0 @@ -count = $count; -$this->matched = (bool) $count; -$this->result = $result; -} -} diff --git a/composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php b/composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php deleted file mode 100644 index 281496549..000000000 --- a/composer/vendor/composer/pcre/src/UnexpectedNullMatchException.php +++ /dev/null @@ -1,20 +0,0 @@ -', $version2); -} - - - - - - - - - -public static function greaterThanOrEqualTo($version1, $version2) -{ -return self::compare($version1, '>=', $version2); -} - - - - - - - - - -public static function lessThan($version1, $version2) -{ -return self::compare($version1, '<', $version2); -} - - - - - - - - - -public static function lessThanOrEqualTo($version1, $version2) -{ -return self::compare($version1, '<=', $version2); -} - - - - - - - - - -public static function equalTo($version1, $version2) -{ -return self::compare($version1, '==', $version2); -} - - - - - - - - - -public static function notEqualTo($version1, $version2) -{ -return self::compare($version1, '!=', $version2); -} - - - - - - - - - - - - -public static function compare($version1, $operator, $version2) -{ -$constraint = new Constraint($operator, $version2); - -return $constraint->matchSpecific(new Constraint('==', $version1), true); -} -} diff --git a/composer/vendor/composer/semver/src/CompilingMatcher.php b/composer/vendor/composer/semver/src/CompilingMatcher.php deleted file mode 100644 index 8db85010c..000000000 --- a/composer/vendor/composer/semver/src/CompilingMatcher.php +++ /dev/null @@ -1,94 +0,0 @@ - Constraint::STR_OP_EQ, -Constraint::OP_LT => Constraint::STR_OP_LT, -Constraint::OP_LE => Constraint::STR_OP_LE, -Constraint::OP_GT => Constraint::STR_OP_GT, -Constraint::OP_GE => Constraint::STR_OP_GE, -Constraint::OP_NE => Constraint::STR_OP_NE, -); - - - - - - -public static function clear() -{ -self::$resultCache = array(); -self::$compiledCheckerCache = array(); -} - - - - - - - - - - - -public static function match(ConstraintInterface $constraint, $operator, $version) -{ -$resultCacheKey = $operator.$constraint.';'.$version; - -if (isset(self::$resultCache[$resultCacheKey])) { -return self::$resultCache[$resultCacheKey]; -} - -if (self::$enabled === null) { -self::$enabled = !\in_array('eval', explode(',', (string) ini_get('disable_functions')), true); -} -if (!self::$enabled) { -return self::$resultCache[$resultCacheKey] = $constraint->matches(new Constraint(self::$transOpInt[$operator], $version)); -} - -$cacheKey = $operator.$constraint; -if (!isset(self::$compiledCheckerCache[$cacheKey])) { -$code = $constraint->compile($operator); -self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return '.$code.';};'); -} else { -$function = self::$compiledCheckerCache[$cacheKey]; -} - -return self::$resultCache[$resultCacheKey] = $function($version, strpos($version, 'dev-') === 0); -} -} diff --git a/composer/vendor/composer/semver/src/Constraint/Bound.php b/composer/vendor/composer/semver/src/Constraint/Bound.php deleted file mode 100644 index 135cbadae..000000000 --- a/composer/vendor/composer/semver/src/Constraint/Bound.php +++ /dev/null @@ -1,122 +0,0 @@ -version = $version; -$this->isInclusive = $isInclusive; -} - - - - -public function getVersion() -{ -return $this->version; -} - - - - -public function isInclusive() -{ -return $this->isInclusive; -} - - - - -public function isZero() -{ -return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive(); -} - - - - -public function isPositiveInfinity() -{ -return $this->getVersion() === PHP_INT_MAX.'.0.0.0' && !$this->isInclusive(); -} - - - - - - - - - -public function compareTo(Bound $other, $operator) -{ -if (!\in_array($operator, array('<', '>'), true)) { -throw new \InvalidArgumentException('Does not support any other operator other than > or <.'); -} - - -if ($this == $other) { -return false; -} - -$compareResult = version_compare($this->getVersion(), $other->getVersion()); - - -if (0 !== $compareResult) { -return (('>' === $operator) ? 1 : -1) === $compareResult; -} - - -return '>' === $operator ? $other->isInclusive() : !$other->isInclusive(); -} - -public function __toString() -{ -return sprintf( -'%s [%s]', -$this->getVersion(), -$this->isInclusive() ? 'inclusive' : 'exclusive' -); -} - - - - -public static function zero() -{ -return new Bound('0.0.0.0-dev', true); -} - - - - -public static function positiveInfinity() -{ -return new Bound(PHP_INT_MAX.'.0.0.0', false); -} -} diff --git a/composer/vendor/composer/semver/src/Constraint/Constraint.php b/composer/vendor/composer/semver/src/Constraint/Constraint.php deleted file mode 100644 index fe5caf95b..000000000 --- a/composer/vendor/composer/semver/src/Constraint/Constraint.php +++ /dev/null @@ -1,435 +0,0 @@ -'; -const STR_OP_GE = '>='; -const STR_OP_NE = '!='; -const STR_OP_NE_ALT = '<>'; - - - - - - - -private static $transOpStr = array( -'=' => self::OP_EQ, -'==' => self::OP_EQ, -'<' => self::OP_LT, -'<=' => self::OP_LE, -'>' => self::OP_GT, -'>=' => self::OP_GE, -'<>' => self::OP_NE, -'!=' => self::OP_NE, -); - - - - - - - -private static $transOpInt = array( -self::OP_EQ => '==', -self::OP_LT => '<', -self::OP_LE => '<=', -self::OP_GT => '>', -self::OP_GE => '>=', -self::OP_NE => '!=', -); - - - - - -protected $operator; - - -protected $version; - - -protected $prettyString; - - -protected $lowerBound; - - -protected $upperBound; - - - - - - - - - - - -public function __construct($operator, $version) -{ -if (!isset(self::$transOpStr[$operator])) { -throw new \InvalidArgumentException(sprintf( -'Invalid operator "%s" given, expected one of: %s', -$operator, -implode(', ', self::getSupportedOperators()) -)); -} - -$this->operator = self::$transOpStr[$operator]; -$this->version = $version; -} - - - - -public function getVersion() -{ -return $this->version; -} - - - - - - -public function getOperator() -{ -return self::$transOpInt[$this->operator]; -} - - - - - - -public function matches(ConstraintInterface $provider) -{ -if ($provider instanceof self) { -return $this->matchSpecific($provider); -} - - -return $provider->matches($this); -} - - - - -public function setPrettyString($prettyString) -{ -$this->prettyString = $prettyString; -} - - - - -public function getPrettyString() -{ -if ($this->prettyString) { -return $this->prettyString; -} - -return $this->__toString(); -} - - - - - - - - -public static function getSupportedOperators() -{ -return array_keys(self::$transOpStr); -} - - - - - - - - -public static function getOperatorConstant($operator) -{ -return self::$transOpStr[$operator]; -} - - - - - - - - - - - - - -public function versionCompare($a, $b, $operator, $compareBranches = false) -{ -if (!isset(self::$transOpStr[$operator])) { -throw new \InvalidArgumentException(sprintf( -'Invalid operator "%s" given, expected one of: %s', -$operator, -implode(', ', self::getSupportedOperators()) -)); -} - -$aIsBranch = strpos($a, 'dev-') === 0; -$bIsBranch = strpos($b, 'dev-') === 0; - -if ($operator === '!=' && ($aIsBranch || $bIsBranch)) { -return $a !== $b; -} - -if ($aIsBranch && $bIsBranch) { -return $operator === '==' && $a === $b; -} - - -if (!$compareBranches && ($aIsBranch || $bIsBranch)) { -return false; -} - -return \version_compare($a, $b, $operator); -} - - - - -public function compile($otherOperator) -{ -if (strpos($this->version, 'dev-') === 0) { -if (self::OP_EQ === $this->operator) { -if (self::OP_EQ === $otherOperator) { -return sprintf('$b && $v === %s', \var_export($this->version, true)); -} -if (self::OP_NE === $otherOperator) { -return sprintf('!$b || $v !== %s', \var_export($this->version, true)); -} -return 'false'; -} - -if (self::OP_NE === $this->operator) { -if (self::OP_EQ === $otherOperator) { -return sprintf('!$b || $v !== %s', \var_export($this->version, true)); -} -if (self::OP_NE === $otherOperator) { -return 'true'; -} -return '!$b'; -} - -return 'false'; -} - -if (self::OP_EQ === $this->operator) { -if (self::OP_EQ === $otherOperator) { -return sprintf('\version_compare($v, %s, \'==\')', \var_export($this->version, true)); -} -if (self::OP_NE === $otherOperator) { -return sprintf('$b || \version_compare($v, %s, \'!=\')', \var_export($this->version, true)); -} - -return sprintf('!$b && \version_compare(%s, $v, \'%s\')', \var_export($this->version, true), self::$transOpInt[$otherOperator]); -} - -if (self::OP_NE === $this->operator) { -if (self::OP_EQ === $otherOperator) { -return sprintf('$b || (!$b && \version_compare($v, %s, \'!=\'))', \var_export($this->version, true)); -} - -if (self::OP_NE === $otherOperator) { -return 'true'; -} -return '!$b'; -} - -if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) { -if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) { -return '!$b'; -} -} else { -if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) { -return '!$b'; -} -} - -if (self::OP_NE === $otherOperator) { -return 'true'; -} - -$codeComparison = sprintf('\version_compare($v, %s, \'%s\')', \var_export($this->version, true), self::$transOpInt[$this->operator]); -if ($this->operator === self::OP_LE) { -if ($otherOperator === self::OP_GT) { -return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; -} -} elseif ($this->operator === self::OP_GE) { -if ($otherOperator === self::OP_LT) { -return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; -} -} - -return sprintf('!$b && %s', $codeComparison); -} - - - - - - - -public function matchSpecific(Constraint $provider, $compareBranches = false) -{ -$noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]); -$providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]); - -$isEqualOp = self::OP_EQ === $this->operator; -$isNonEqualOp = self::OP_NE === $this->operator; -$isProviderEqualOp = self::OP_EQ === $provider->operator; -$isProviderNonEqualOp = self::OP_NE === $provider->operator; - - - -if ($isNonEqualOp || $isProviderNonEqualOp) { -if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && strpos($provider->version, 'dev-') === 0) { -return false; -} - -if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && strpos($this->version, 'dev-') === 0) { -return false; -} - -if (!$isEqualOp && !$isProviderEqualOp) { -return true; -} -return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); -} - - - -if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { -return !(strpos($this->version, 'dev-') === 0 || strpos($provider->version, 'dev-') === 0); -} - -$version1 = $isEqualOp ? $this->version : $provider->version; -$version2 = $isEqualOp ? $provider->version : $this->version; -$operator = $isEqualOp ? $provider->operator : $this->operator; - -if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) { - - - -return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp -&& self::$transOpInt[$this->operator] !== $noEqualOp -&& \version_compare($provider->version, $this->version, '==')); -} - -return false; -} - - - - -public function __toString() -{ -return self::$transOpInt[$this->operator] . ' ' . $this->version; -} - - - - -public function getLowerBound() -{ -$this->extractBounds(); - -return $this->lowerBound; -} - - - - -public function getUpperBound() -{ -$this->extractBounds(); - -return $this->upperBound; -} - - - - -private function extractBounds() -{ -if (null !== $this->lowerBound) { -return; -} - - -if (strpos($this->version, 'dev-') === 0) { -$this->lowerBound = Bound::zero(); -$this->upperBound = Bound::positiveInfinity(); - -return; -} - -switch ($this->operator) { -case self::OP_EQ: -$this->lowerBound = new Bound($this->version, true); -$this->upperBound = new Bound($this->version, true); -break; -case self::OP_LT: -$this->lowerBound = Bound::zero(); -$this->upperBound = new Bound($this->version, false); -break; -case self::OP_LE: -$this->lowerBound = Bound::zero(); -$this->upperBound = new Bound($this->version, true); -break; -case self::OP_GT: -$this->lowerBound = new Bound($this->version, false); -$this->upperBound = Bound::positiveInfinity(); -break; -case self::OP_GE: -$this->lowerBound = new Bound($this->version, true); -$this->upperBound = Bound::positiveInfinity(); -break; -case self::OP_NE: -$this->lowerBound = Bound::zero(); -$this->upperBound = Bound::positiveInfinity(); -break; -} -} -} diff --git a/composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php b/composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php deleted file mode 100644 index 28476df14..000000000 --- a/composer/vendor/composer/semver/src/Constraint/ConstraintInterface.php +++ /dev/null @@ -1,75 +0,0 @@ -prettyString = $prettyString; -} - - - - -public function getPrettyString() -{ -if ($this->prettyString) { -return $this->prettyString; -} - -return (string) $this; -} - - - - -public function __toString() -{ -return '*'; -} - - - - -public function getUpperBound() -{ -return Bound::positiveInfinity(); -} - - - - -public function getLowerBound() -{ -return Bound::zero(); -} -} diff --git a/composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php b/composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php deleted file mode 100644 index f75c1df76..000000000 --- a/composer/vendor/composer/semver/src/Constraint/MatchNoneConstraint.php +++ /dev/null @@ -1,83 +0,0 @@ -prettyString = $prettyString; -} - - - - -public function getPrettyString() -{ -if ($this->prettyString) { -return $this->prettyString; -} - -return (string) $this; -} - - - - -public function __toString() -{ -return '[]'; -} - - - - -public function getUpperBound() -{ -return new Bound('0.0.0.0-dev', false); -} - - - - -public function getLowerBound() -{ -return new Bound('0.0.0.0-dev', false); -} -} diff --git a/composer/vendor/composer/semver/src/Constraint/MultiConstraint.php b/composer/vendor/composer/semver/src/Constraint/MultiConstraint.php deleted file mode 100644 index 9a0d328b5..000000000 --- a/composer/vendor/composer/semver/src/Constraint/MultiConstraint.php +++ /dev/null @@ -1,325 +0,0 @@ -constraints = $constraints; -$this->conjunctive = $conjunctive; -} - - - - -public function getConstraints() -{ -return $this->constraints; -} - - - - -public function isConjunctive() -{ -return $this->conjunctive; -} - - - - -public function isDisjunctive() -{ -return !$this->conjunctive; -} - - - - -public function compile($otherOperator) -{ -$parts = array(); -foreach ($this->constraints as $constraint) { -$code = $constraint->compile($otherOperator); -if ($code === 'true') { -if (!$this->conjunctive) { -return 'true'; -} -} elseif ($code === 'false') { -if ($this->conjunctive) { -return 'false'; -} -} else { -$parts[] = '('.$code.')'; -} -} - -if (!$parts) { -return $this->conjunctive ? 'true' : 'false'; -} - -return $this->conjunctive ? implode('&&', $parts) : implode('||', $parts); -} - - - - - - -public function matches(ConstraintInterface $provider) -{ -if (false === $this->conjunctive) { -foreach ($this->constraints as $constraint) { -if ($provider->matches($constraint)) { -return true; -} -} - -return false; -} - - - - -if ($provider instanceof MultiConstraint && $provider->isDisjunctive()) { -return $provider->matches($this); -} - -foreach ($this->constraints as $constraint) { -if (!$provider->matches($constraint)) { -return false; -} -} - -return true; -} - - - - -public function setPrettyString($prettyString) -{ -$this->prettyString = $prettyString; -} - - - - -public function getPrettyString() -{ -if ($this->prettyString) { -return $this->prettyString; -} - -return (string) $this; -} - - - - -public function __toString() -{ -if ($this->string !== null) { -return $this->string; -} - -$constraints = array(); -foreach ($this->constraints as $constraint) { -$constraints[] = (string) $constraint; -} - -return $this->string = '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; -} - - - - -public function getLowerBound() -{ -$this->extractBounds(); - -if (null === $this->lowerBound) { -throw new \LogicException('extractBounds should have populated the lowerBound property'); -} - -return $this->lowerBound; -} - - - - -public function getUpperBound() -{ -$this->extractBounds(); - -if (null === $this->upperBound) { -throw new \LogicException('extractBounds should have populated the upperBound property'); -} - -return $this->upperBound; -} - - - - - - - - - - - - -public static function create(array $constraints, $conjunctive = true) -{ -if (0 === \count($constraints)) { -return new MatchAllConstraint(); -} - -if (1 === \count($constraints)) { -return $constraints[0]; -} - -$optimized = self::optimizeConstraints($constraints, $conjunctive); -if ($optimized !== null) { -list($constraints, $conjunctive) = $optimized; -if (\count($constraints) === 1) { -return $constraints[0]; -} -} - -return new self($constraints, $conjunctive); -} - - - - - - - - -private static function optimizeConstraints(array $constraints, $conjunctive) -{ - - - -if (!$conjunctive) { -$left = $constraints[0]; -$mergedConstraints = array(); -$optimized = false; -for ($i = 1, $l = \count($constraints); $i < $l; $i++) { -$right = $constraints[$i]; -if ( -$left instanceof self -&& $left->conjunctive -&& $right instanceof self -&& $right->conjunctive -&& \count($left->constraints) === 2 -&& \count($right->constraints) === 2 -&& ($left0 = (string) $left->constraints[0]) -&& $left0[0] === '>' && $left0[1] === '=' -&& ($left1 = (string) $left->constraints[1]) -&& $left1[0] === '<' -&& ($right0 = (string) $right->constraints[0]) -&& $right0[0] === '>' && $right0[1] === '=' -&& ($right1 = (string) $right->constraints[1]) -&& $right1[0] === '<' -&& substr($left1, 2) === substr($right0, 3) -) { -$optimized = true; -$left = new MultiConstraint( -array( -$left->constraints[0], -$right->constraints[1], -), -true); -} else { -$mergedConstraints[] = $left; -$left = $right; -} -} -if ($optimized) { -$mergedConstraints[] = $left; -return array($mergedConstraints, false); -} -} - - - -return null; -} - - - - -private function extractBounds() -{ -if (null !== $this->lowerBound) { -return; -} - -foreach ($this->constraints as $constraint) { -if (null === $this->lowerBound || null === $this->upperBound) { -$this->lowerBound = $constraint->getLowerBound(); -$this->upperBound = $constraint->getUpperBound(); -continue; -} - -if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) { -$this->lowerBound = $constraint->getLowerBound(); -} - -if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) { -$this->upperBound = $constraint->getUpperBound(); -} -} -} -} diff --git a/composer/vendor/composer/semver/src/Interval.php b/composer/vendor/composer/semver/src/Interval.php deleted file mode 100644 index 76021d8d7..000000000 --- a/composer/vendor/composer/semver/src/Interval.php +++ /dev/null @@ -1,98 +0,0 @@ -start = $start; -$this->end = $end; -} - - - - -public function getStart() -{ -return $this->start; -} - - - - -public function getEnd() -{ -return $this->end; -} - - - - -public static function fromZero() -{ -static $zero; - -if (null === $zero) { -$zero = new Constraint('>=', '0.0.0.0-dev'); -} - -return $zero; -} - - - - -public static function untilPositiveInfinity() -{ -static $positiveInfinity; - -if (null === $positiveInfinity) { -$positiveInfinity = new Constraint('<', PHP_INT_MAX.'.0.0.0'); -} - -return $positiveInfinity; -} - - - - -public static function any() -{ -return new self(self::fromZero(), self::untilPositiveInfinity()); -} - - - - -public static function anyDev() -{ - -return array('names' => array(), 'exclude' => true); -} - - - - -public static function noDev() -{ - -return array('names' => array(), 'exclude' => false); -} -} diff --git a/composer/vendor/composer/semver/src/Intervals.php b/composer/vendor/composer/semver/src/Intervals.php deleted file mode 100644 index c83a42628..000000000 --- a/composer/vendor/composer/semver/src/Intervals.php +++ /dev/null @@ -1,478 +0,0 @@ -=' => -3, -'<' => -2, -'>' => 2, -'<=' => 3, -); - - - - - - -public static function clear() -{ -self::$intervalsCache = array(); -} - - - - - - -public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint) -{ -if ($constraint instanceof MatchAllConstraint) { -return true; -} - -if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) { -return false; -} - -$intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), true)); -$candidateIntervals = self::get($candidate); -if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) { -return false; -} - -foreach ($intersectionIntervals['numeric'] as $index => $interval) { -if (!isset($candidateIntervals['numeric'][$index])) { -return false; -} - -if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) { -return false; -} - -if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) { -return false; -} -} - -if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) { -return false; -} -if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) { -return false; -} -foreach ($intersectionIntervals['branches']['names'] as $index => $name) { -if ($name !== $candidateIntervals['branches']['names'][$index]) { -return false; -} -} - -return true; -} - - - - - - -public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b) -{ -if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) { -return true; -} - -if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) { -return false; -} - -$intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), true), true); - -return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0; -} - - - - - - - - - - - -public static function compactConstraint(ConstraintInterface $constraint) -{ -if (!$constraint instanceof MultiConstraint) { -return $constraint; -} - -$intervals = self::generateIntervals($constraint); -$constraints = array(); -$hasNumericMatchAll = false; - -if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) { -$constraints[] = $intervals['numeric'][0]->getStart(); -$hasNumericMatchAll = true; -} else { -$unEqualConstraints = array(); -for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) { -$interval = $intervals['numeric'][$i]; - - - - - -if ($interval->getEnd()->getOperator() === '<' && $i+1 < $count) { -$nextInterval = $intervals['numeric'][$i+1]; -if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') { - - - -if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) { -$unEqualConstraints[] = $interval->getStart(); -} -$unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion()); -continue; -} -} - -if (\count($unEqualConstraints) > 0) { - -if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) { -$unEqualConstraints[] = $interval->getEnd(); -} - - -if (\count($unEqualConstraints) > 1) { -$constraints[] = new MultiConstraint($unEqualConstraints, true); -} else { -$constraints[] = $unEqualConstraints[0]; -} - -$unEqualConstraints = array(); -continue; -} - - -if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') { -$constraints[] = new Constraint('==', $interval->getStart()->getVersion()); -continue; -} - -if ((string) $interval->getStart() === (string) Interval::fromZero()) { -$constraints[] = $interval->getEnd(); -} elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) { -$constraints[] = $interval->getStart(); -} else { -$constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), true); -} -} -} - -$devConstraints = array(); - -if (0 === \count($intervals['branches']['names'])) { -if ($intervals['branches']['exclude']) { -if ($hasNumericMatchAll) { -return new MatchAllConstraint; -} - -} -} else { -foreach ($intervals['branches']['names'] as $branchName) { -if ($intervals['branches']['exclude']) { -$devConstraints[] = new Constraint('!=', $branchName); -} else { -$devConstraints[] = new Constraint('==', $branchName); -} -} - - - -if ($intervals['branches']['exclude']) { -if (\count($constraints) > 1) { -return new MultiConstraint(array_merge( -array(new MultiConstraint($constraints, false)), -$devConstraints -), true); -} - -if (\count($constraints) === 1 && (string)$constraints[0] === (string)Interval::fromZero()) { -if (\count($devConstraints) > 1) { -return new MultiConstraint($devConstraints, true); -} -return $devConstraints[0]; -} - -return new MultiConstraint(array_merge($constraints, $devConstraints), true); -} - - - -$constraints = array_merge($constraints, $devConstraints); -} - -if (\count($constraints) > 1) { -return new MultiConstraint($constraints, false); -} - -if (\count($constraints) === 1) { -return $constraints[0]; -} - -return new MatchNoneConstraint; -} - - - - - - - - - - - -public static function get(ConstraintInterface $constraint) -{ -$key = (string) $constraint; - -if (!isset(self::$intervalsCache[$key])) { -self::$intervalsCache[$key] = self::generateIntervals($constraint); -} - -return self::$intervalsCache[$key]; -} - - - - - - -private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = false) -{ -if ($constraint instanceof MatchAllConstraint) { -return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); -} - -if ($constraint instanceof MatchNoneConstraint) { -return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => false)); -} - -if ($constraint instanceof Constraint) { -return self::generateSingleConstraintIntervals($constraint); -} - -if (!$constraint instanceof MultiConstraint) { -throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got '.\get_class($constraint).'.'); -} - -$constraints = $constraint->getConstraints(); - -$numericGroups = array(); -$constraintBranches = array(); -foreach ($constraints as $c) { -$res = self::get($c); -$numericGroups[] = $res['numeric']; -$constraintBranches[] = $res['branches']; -} - -if ($constraint->isDisjunctive()) { -$branches = Interval::noDev(); -foreach ($constraintBranches as $b) { -if ($b['exclude']) { -if ($branches['exclude']) { - - -$branches['names'] = array_intersect($branches['names'], $b['names']); -} else { - - -$branches['exclude'] = true; -$branches['names'] = array_diff($b['names'], $branches['names']); -} -} else { -if ($branches['exclude']) { - - -$branches['names'] = array_diff($branches['names'], $b['names']); -} else { - - -$branches['names'] = array_merge($branches['names'], $b['names']); -} -} -} -} else { -$branches = Interval::anyDev(); -foreach ($constraintBranches as $b) { -if ($b['exclude']) { -if ($branches['exclude']) { - - -$branches['names'] = array_merge($branches['names'], $b['names']); -} else { - - -$branches['names'] = array_diff($branches['names'], $b['names']); -} -} else { -if ($branches['exclude']) { - - -$branches['names'] = array_diff($b['names'], $branches['names']); -$branches['exclude'] = false; -} else { - - -$branches['names'] = array_intersect($branches['names'], $b['names']); -} -} -} -} - -$branches['names'] = array_unique($branches['names']); - -if (\count($numericGroups) === 1) { -return array('numeric' => $numericGroups[0], 'branches' => $branches); -} - -$borders = array(); -foreach ($numericGroups as $group) { -foreach ($group as $interval) { -$borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start'); -$borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end'); -} -} - -$opSortOrder = self::$opSortOrder; -usort($borders, function ($a, $b) use ($opSortOrder) { -$order = version_compare($a['version'], $b['version']); -if ($order === 0) { -return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']]; -} - -return $order; -}); - -$activeIntervals = 0; -$intervals = array(); -$index = 0; -$activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1; -$start = null; -foreach ($borders as $border) { -if ($border['side'] === 'start') { -$activeIntervals++; -} else { -$activeIntervals--; -} -if (!$start && $activeIntervals >= $activationThreshold) { -$start = new Constraint($border['operator'], $border['version']); -} elseif ($start && $activeIntervals < $activationThreshold) { - -if ( -version_compare($start->getVersion(), $border['version'], '=') -&& ( -($start->getOperator() === '>' && $border['operator'] === '<=') -|| ($start->getOperator() === '>=' && $border['operator'] === '<') -) -) { -unset($intervals[$index]); -} else { -$intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version'])); -$index++; - -if ($stopOnFirstValidInterval) { -break; -} -} - -$start = null; -} -} - -return array('numeric' => $intervals, 'branches' => $branches); -} - - - - -private static function generateSingleConstraintIntervals(Constraint $constraint) -{ -$op = $constraint->getOperator(); - - -if (strpos($constraint->getVersion(), 'dev-') === 0) { -$intervals = array(); -$branches = array('names' => array(), 'exclude' => false); - - -if ($op === '!=') { -$intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity()); -$branches = array('names' => array($constraint->getVersion()), 'exclude' => true); -} elseif ($op === '==') { -$branches['names'][] = $constraint->getVersion(); -} - -return array( -'numeric' => $intervals, -'branches' => $branches, -); -} - -if ($op[0] === '>') { -return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev()); -} -if ($op[0] === '<') { -return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev()); -} -if ($op === '!=') { - -return array('numeric' => array( -new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())), -new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity()), -), 'branches' => Interval::anyDev()); -} - - -return array('numeric' => array( -new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion())), -), 'branches' => Interval::noDev()); -} -} diff --git a/composer/vendor/composer/semver/src/Semver.php b/composer/vendor/composer/semver/src/Semver.php deleted file mode 100644 index a051b6c7f..000000000 --- a/composer/vendor/composer/semver/src/Semver.php +++ /dev/null @@ -1,129 +0,0 @@ -normalize($version)); -$parsedConstraints = $versionParser->parseConstraints($constraints); - -return $parsedConstraints->matches($provider); -} - - - - - - - - - -public static function satisfiedBy(array $versions, $constraints) -{ -$versions = array_filter($versions, function ($version) use ($constraints) { -return Semver::satisfies($version, $constraints); -}); - -return array_values($versions); -} - - - - - - - - -public static function sort(array $versions) -{ -return self::usort($versions, self::SORT_ASC); -} - - - - - - - - -public static function rsort(array $versions) -{ -return self::usort($versions, self::SORT_DESC); -} - - - - - - - -private static function usort(array $versions, $direction) -{ -if (null === self::$versionParser) { -self::$versionParser = new VersionParser(); -} - -$versionParser = self::$versionParser; -$normalized = array(); - - - -foreach ($versions as $key => $version) { -$normalizedVersion = $versionParser->normalize($version); -$normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); -$normalized[] = array($normalizedVersion, $key); -} - -usort($normalized, function (array $left, array $right) use ($direction) { -if ($left[0] === $right[0]) { -return 0; -} - -if (Comparator::lessThan($left[0], $right[0])) { -return -$direction; -} - -return $direction; -}); - - -$sorted = array(); -foreach ($normalized as $item) { -$sorted[] = $versions[$item[1]]; -} - -return $sorted; -} -} diff --git a/composer/vendor/composer/semver/src/VersionParser.php b/composer/vendor/composer/semver/src/VersionParser.php deleted file mode 100644 index 687e48d5e..000000000 --- a/composer/vendor/composer/semver/src/VersionParser.php +++ /dev/null @@ -1,586 +0,0 @@ -expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? ltrim($matches[$index + 1], '.-') : ''); -} - -if (!empty($matches[$index + 2])) { -$version .= '-dev'; -} - -return $version; -} - - -if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { -try { -$normalized = $this->normalizeBranch($match[1]); - - - -if (strpos($normalized, 'dev-') === false) { -return $normalized; -} -} catch (\Exception $e) { -} -} - -$extraMessage = ''; -if (preg_match('{ +as +' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))?$}', $fullVersion)) { -$extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; -} elseif (preg_match('{^' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))? +as +}', $fullVersion)) { -$extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; -} - -throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage); -} - - - - - - - - -public function parseNumericAliasPrefix($branch) -{ -if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', (string) $branch, $matches)) { -return $matches['version'] . '.'; -} - -return false; -} - - - - - - - - -public function normalizeBranch($name) -{ -$name = trim((string) $name); - -if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) { -$version = ''; -for ($i = 1; $i < 5; ++$i) { -$version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; -} - -return str_replace('x', '9999999', $version) . '-dev'; -} - -return 'dev-' . $name; -} - - - - - - - - - - -public function normalizeDefaultBranch($name) -{ -if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') { -return '9999999-dev'; -} - -return (string) $name; -} - - - - - - - - -public function parseConstraints($constraints) -{ -$prettyConstraint = (string) $constraints; - -$orConstraints = preg_split('{\s*\|\|?\s*}', trim((string) $constraints)); -if (false === $orConstraints) { -throw new \RuntimeException('Failed to preg_split string: '.$constraints); -} -$orGroups = array(); - -foreach ($orConstraints as $constraints) { -$andConstraints = preg_split('{(?< ,]) *(? 1) { -$constraintObjects = array(); -foreach ($andConstraints as $constraint) { -foreach ($this->parseConstraint($constraint) as $parsedConstraint) { -$constraintObjects[] = $parsedConstraint; -} -} -} else { -$constraintObjects = $this->parseConstraint($andConstraints[0]); -} - -if (1 === \count($constraintObjects)) { -$constraint = $constraintObjects[0]; -} else { -$constraint = new MultiConstraint($constraintObjects); -} - -$orGroups[] = $constraint; -} - -$constraint = MultiConstraint::create($orGroups, false); - -$constraint->setPrettyString($prettyConstraint); - -return $constraint; -} - - - - - - - - - - -private function parseConstraint($constraint) -{ - -if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $constraint, $match)) { -$constraint = $match[1]; -} - - -if (preg_match('{^([^,\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) { -$constraint = '' !== $match[1] ? $match[1] : '*'; -if ($match[2] !== 'stable') { -$stabilityModifier = $match[2]; -} -} - - -if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraint, $match)) { -$constraint = $match[1]; -} - -if (preg_match('{^(v)?[xX*](\.[xX*])*$}i', $constraint, $match)) { -if (!empty($match[1]) || !empty($match[2])) { -return array(new Constraint('>=', '0.0.0.0-dev')); -} - -return array(new MatchAllConstraint()); -} - -$versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?(?:' . self::$modifierRegex . '|\.([xX*][.-]?dev))(?:\+[^\s]+)?'; - - - - - - -if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { -if (strpos($constraint, '~>') === 0) { -throw new \UnexpectedValueException( -'Could not parse version constraint ' . $constraint . ': ' . -'Invalid operator "~>", you probably meant to use the "~" operator' -); -} - - -if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { -$position = 4; -} elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { -$position = 3; -} elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { -$position = 2; -} else { -$position = 1; -} - - -if (!empty($matches[8])) { -$position++; -} - - -$stabilitySuffix = ''; -if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { -$stabilitySuffix .= '-dev'; -} - -$lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); -$lowerBound = new Constraint('>=', $lowVersion); - - - -$highPosition = max(1, $position - 1); -$highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; -$upperBound = new Constraint('<', $highVersion); - -return array( -$lowerBound, -$upperBound, -); -} - - - - - - -if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) { - -if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { -$position = 1; -} elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { -$position = 2; -} else { -$position = 3; -} - - -$stabilitySuffix = ''; -if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { -$stabilitySuffix .= '-dev'; -} - -$lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); -$lowerBound = new Constraint('>=', $lowVersion); - - - -$highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; -$upperBound = new Constraint('<', $highVersion); - -return array( -$lowerBound, -$upperBound, -); -} - - - - - -if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) { -if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { -$position = 3; -} elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { -$position = 2; -} else { -$position = 1; -} - -$lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; -$highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; - -if ($lowVersion === '0.0.0.0-dev') { -return array(new Constraint('<', $highVersion)); -} - -return array( -new Constraint('>=', $lowVersion), -new Constraint('<', $highVersion), -); -} - - - - - - - -if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { - -$lowStabilitySuffix = ''; -if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) { -$lowStabilitySuffix = '-dev'; -} - -$lowVersion = $this->normalize($matches['from']); -$lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); - -$empty = function ($x) { -return ($x === 0 || $x === '0') ? false : empty($x); -}; - -if ((!$empty($matches[12]) && !$empty($matches[13])) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) { -$highVersion = $this->normalize($matches['to']); -$upperBound = new Constraint('<=', $highVersion); -} else { -$highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]); - - -$this->normalize($matches['to']); - -$highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev'; -$upperBound = new Constraint('<', $highVersion); -} - -return array( -$lowerBound, -$upperBound, -); -} - - -if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) { -try { -try { -$version = $this->normalize($matches[2]); -} catch (\UnexpectedValueException $e) { - - -if (substr($matches[2], -4) === '-dev' && preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) { -$version = $this->normalize('dev-'.substr($matches[2], 0, -4)); -} else { -throw $e; -} -} - -$op = $matches[1] ?: '='; - -if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') { -$version .= '-' . $stabilityModifier; -} elseif ('<' === $op || '>=' === $op) { -if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) { -if (strpos($matches[2], 'dev-') !== 0) { -$version .= '-dev'; -} -} -} - -return array(new Constraint($matches[1] ?: '=', $version)); -} catch (\Exception $e) { -} -} - -$message = 'Could not parse version constraint ' . $constraint; -if (isset($e)) { -$message .= ': ' . $e->getMessage(); -} - -throw new \UnexpectedValueException($message); -} - - - - - - - - - - - - - - - -private function manipulateVersionString(array $matches, $position, $increment = 0, $pad = '0') -{ -for ($i = 4; $i > 0; --$i) { -if ($i > $position) { -$matches[$i] = $pad; -} elseif ($i === $position && $increment) { -$matches[$i] += $increment; - -if ($matches[$i] < 0) { -$matches[$i] = $pad; ---$position; - - -if ($i === 1) { -return null; -} -} -} -} - -return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; -} - - - - - - - - -private function expandStability($stability) -{ -$stability = strtolower($stability); - -switch ($stability) { -case 'a': -return 'alpha'; -case 'b': -return 'beta'; -case 'p': -case 'pl': -return 'patch'; -case 'rc': -return 'RC'; -default: -return $stability; -} -} -} diff --git a/composer/vendor/composer/spdx-licenses/LICENSE b/composer/vendor/composer/spdx-licenses/LICENSE deleted file mode 100644 index 851b1edcd..000000000 --- a/composer/vendor/composer/spdx-licenses/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (C) 2015 Composer - -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/composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json b/composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json deleted file mode 100644 index b9ac244c1..000000000 --- a/composer/vendor/composer/spdx-licenses/res/spdx-exceptions.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "389-exception": [ - "389 Directory Server Exception" - ], - "Autoconf-exception-2.0": [ - "Autoconf exception 2.0" - ], - "Autoconf-exception-3.0": [ - "Autoconf exception 3.0" - ], - "Bison-exception-2.2": [ - "Bison exception 2.2" - ], - "Bootloader-exception": [ - "Bootloader Distribution Exception" - ], - "Classpath-exception-2.0": [ - "Classpath exception 2.0" - ], - "CLISP-exception-2.0": [ - "CLISP exception 2.0" - ], - "DigiRule-FOSS-exception": [ - "DigiRule FOSS License Exception" - ], - "eCos-exception-2.0": [ - "eCos exception 2.0" - ], - "Fawkes-Runtime-exception": [ - "Fawkes Runtime Exception" - ], - "FLTK-exception": [ - "FLTK exception" - ], - "Font-exception-2.0": [ - "Font exception 2.0" - ], - "freertos-exception-2.0": [ - "FreeRTOS Exception 2.0" - ], - "GCC-exception-2.0": [ - "GCC Runtime Library exception 2.0" - ], - "GCC-exception-3.1": [ - "GCC Runtime Library exception 3.1" - ], - "gnu-javamail-exception": [ - "GNU JavaMail exception" - ], - "GPL-3.0-linking-exception": [ - "GPL-3.0 Linking Exception" - ], - "GPL-3.0-linking-source-exception": [ - "GPL-3.0 Linking Exception (with Corresponding Source)" - ], - "GPL-CC-1.0": [ - "GPL Cooperation Commitment 1.0" - ], - "i2p-gpl-java-exception": [ - "i2p GPL+Java Exception" - ], - "LGPL-3.0-linking-exception": [ - "LGPL-3.0 Linking Exception" - ], - "Libtool-exception": [ - "Libtool Exception" - ], - "Linux-syscall-note": [ - "Linux Syscall Note" - ], - "LLVM-exception": [ - "LLVM Exception" - ], - "LZMA-exception": [ - "LZMA exception" - ], - "mif-exception": [ - "Macros and Inline Functions Exception" - ], - "Nokia-Qt-exception-1.1": [ - "Nokia Qt LGPL exception 1.1" - ], - "OCaml-LGPL-linking-exception": [ - "OCaml LGPL Linking Exception" - ], - "OCCT-exception-1.0": [ - "Open CASCADE Exception 1.0" - ], - "OpenJDK-assembly-exception-1.0": [ - "OpenJDK Assembly exception 1.0" - ], - "openvpn-openssl-exception": [ - "OpenVPN OpenSSL Exception" - ], - "PS-or-PDF-font-exception-20170817": [ - "PS/PDF font exception (2017-08-17)" - ], - "Qt-GPL-exception-1.0": [ - "Qt GPL exception 1.0" - ], - "Qt-LGPL-exception-1.1": [ - "Qt LGPL exception 1.1" - ], - "Qwt-exception-1.0": [ - "Qwt exception 1.0" - ], - "SHL-2.0": [ - "Solderpad Hardware License v2.0" - ], - "SHL-2.1": [ - "Solderpad Hardware License v2.1" - ], - "Swift-exception": [ - "Swift Exception" - ], - "u-boot-exception-2.0": [ - "U-Boot exception 2.0" - ], - "Universal-FOSS-exception-1.0": [ - "Universal FOSS Exception, Version 1.0" - ], - "WxWindows-exception-3.1": [ - "WxWindows Library Exception 3.1" - ] -} \ No newline at end of file diff --git a/composer/vendor/composer/spdx-licenses/res/spdx-licenses.json b/composer/vendor/composer/spdx-licenses/res/spdx-licenses.json deleted file mode 100644 index 6916b53b5..000000000 --- a/composer/vendor/composer/spdx-licenses/res/spdx-licenses.json +++ /dev/null @@ -1,2447 +0,0 @@ -{ - "0BSD": [ - "BSD Zero Clause License", - true, - false - ], - "AAL": [ - "Attribution Assurance License", - true, - false - ], - "Abstyles": [ - "Abstyles License", - false, - false - ], - "Adobe-2006": [ - "Adobe Systems Incorporated Source Code License Agreement", - false, - false - ], - "Adobe-Glyph": [ - "Adobe Glyph List License", - false, - false - ], - "ADSL": [ - "Amazon Digital Services License", - false, - false - ], - "AFL-1.1": [ - "Academic Free License v1.1", - true, - false - ], - "AFL-1.2": [ - "Academic Free License v1.2", - true, - false - ], - "AFL-2.0": [ - "Academic Free License v2.0", - true, - false - ], - "AFL-2.1": [ - "Academic Free License v2.1", - true, - false - ], - "AFL-3.0": [ - "Academic Free License v3.0", - true, - false - ], - "Afmparse": [ - "Afmparse License", - false, - false - ], - "AGPL-1.0": [ - "Affero General Public License v1.0", - false, - true - ], - "AGPL-1.0-only": [ - "Affero General Public License v1.0 only", - false, - false - ], - "AGPL-1.0-or-later": [ - "Affero General Public License v1.0 or later", - false, - false - ], - "AGPL-3.0": [ - "GNU Affero General Public License v3.0", - true, - true - ], - "AGPL-3.0-only": [ - "GNU Affero General Public License v3.0 only", - true, - false - ], - "AGPL-3.0-or-later": [ - "GNU Affero General Public License v3.0 or later", - true, - false - ], - "Aladdin": [ - "Aladdin Free Public License", - false, - false - ], - "AMDPLPA": [ - "AMD's plpa_map.c License", - false, - false - ], - "AML": [ - "Apple MIT License", - false, - false - ], - "AMPAS": [ - "Academy of Motion Picture Arts and Sciences BSD", - false, - false - ], - "ANTLR-PD": [ - "ANTLR Software Rights Notice", - false, - false - ], - "ANTLR-PD-fallback": [ - "ANTLR Software Rights Notice with license fallback", - false, - false - ], - "Apache-1.0": [ - "Apache License 1.0", - false, - false - ], - "Apache-1.1": [ - "Apache License 1.1", - true, - false - ], - "Apache-2.0": [ - "Apache License 2.0", - true, - false - ], - "APAFML": [ - "Adobe Postscript AFM License", - false, - false - ], - "APL-1.0": [ - "Adaptive Public License 1.0", - true, - false - ], - "App-s2p": [ - "App::s2p License", - false, - false - ], - "APSL-1.0": [ - "Apple Public Source License 1.0", - true, - false - ], - "APSL-1.1": [ - "Apple Public Source License 1.1", - true, - false - ], - "APSL-1.2": [ - "Apple Public Source License 1.2", - true, - false - ], - "APSL-2.0": [ - "Apple Public Source License 2.0", - true, - false - ], - "Arphic-1999": [ - "Arphic Public License", - false, - false - ], - "Artistic-1.0": [ - "Artistic License 1.0", - true, - false - ], - "Artistic-1.0-cl8": [ - "Artistic License 1.0 w/clause 8", - true, - false - ], - "Artistic-1.0-Perl": [ - "Artistic License 1.0 (Perl)", - true, - false - ], - "Artistic-2.0": [ - "Artistic License 2.0", - true, - false - ], - "Baekmuk": [ - "Baekmuk License", - false, - false - ], - "Bahyph": [ - "Bahyph License", - false, - false - ], - "Barr": [ - "Barr License", - false, - false - ], - "Beerware": [ - "Beerware License", - false, - false - ], - "Bitstream-Vera": [ - "Bitstream Vera Font License", - false, - false - ], - "BitTorrent-1.0": [ - "BitTorrent Open Source License v1.0", - false, - false - ], - "BitTorrent-1.1": [ - "BitTorrent Open Source License v1.1", - false, - false - ], - "blessing": [ - "SQLite Blessing", - false, - false - ], - "BlueOak-1.0.0": [ - "Blue Oak Model License 1.0.0", - false, - false - ], - "Borceux": [ - "Borceux license", - false, - false - ], - "BSD-1-Clause": [ - "BSD 1-Clause License", - true, - false - ], - "BSD-2-Clause": [ - "BSD 2-Clause \"Simplified\" License", - true, - false - ], - "BSD-2-Clause-FreeBSD": [ - "BSD 2-Clause FreeBSD License", - false, - true - ], - "BSD-2-Clause-NetBSD": [ - "BSD 2-Clause NetBSD License", - false, - true - ], - "BSD-2-Clause-Patent": [ - "BSD-2-Clause Plus Patent License", - true, - false - ], - "BSD-2-Clause-Views": [ - "BSD 2-Clause with views sentence", - false, - false - ], - "BSD-3-Clause": [ - "BSD 3-Clause \"New\" or \"Revised\" License", - true, - false - ], - "BSD-3-Clause-Attribution": [ - "BSD with attribution", - false, - false - ], - "BSD-3-Clause-Clear": [ - "BSD 3-Clause Clear License", - false, - false - ], - "BSD-3-Clause-LBNL": [ - "Lawrence Berkeley National Labs BSD variant license", - true, - false - ], - "BSD-3-Clause-Modification": [ - "BSD 3-Clause Modification", - false, - false - ], - "BSD-3-Clause-No-Military-License": [ - "BSD 3-Clause No Military License", - false, - false - ], - "BSD-3-Clause-No-Nuclear-License": [ - "BSD 3-Clause No Nuclear License", - false, - false - ], - "BSD-3-Clause-No-Nuclear-License-2014": [ - "BSD 3-Clause No Nuclear License 2014", - false, - false - ], - "BSD-3-Clause-No-Nuclear-Warranty": [ - "BSD 3-Clause No Nuclear Warranty", - false, - false - ], - "BSD-3-Clause-Open-MPI": [ - "BSD 3-Clause Open MPI variant", - false, - false - ], - "BSD-4-Clause": [ - "BSD 4-Clause \"Original\" or \"Old\" License", - false, - false - ], - "BSD-4-Clause-Shortened": [ - "BSD 4 Clause Shortened", - false, - false - ], - "BSD-4-Clause-UC": [ - "BSD-4-Clause (University of California-Specific)", - false, - false - ], - "BSD-Protection": [ - "BSD Protection License", - false, - false - ], - "BSD-Source-Code": [ - "BSD Source Code Attribution", - false, - false - ], - "BSL-1.0": [ - "Boost Software License 1.0", - true, - false - ], - "BUSL-1.1": [ - "Business Source License 1.1", - false, - false - ], - "bzip2-1.0.5": [ - "bzip2 and libbzip2 License v1.0.5", - false, - true - ], - "bzip2-1.0.6": [ - "bzip2 and libbzip2 License v1.0.6", - false, - false - ], - "C-UDA-1.0": [ - "Computational Use of Data Agreement v1.0", - false, - false - ], - "CAL-1.0": [ - "Cryptographic Autonomy License 1.0", - true, - false - ], - "CAL-1.0-Combined-Work-Exception": [ - "Cryptographic Autonomy License 1.0 (Combined Work Exception)", - true, - false - ], - "Caldera": [ - "Caldera License", - false, - false - ], - "CATOSL-1.1": [ - "Computer Associates Trusted Open Source License 1.1", - true, - false - ], - "CC-BY-1.0": [ - "Creative Commons Attribution 1.0 Generic", - false, - false - ], - "CC-BY-2.0": [ - "Creative Commons Attribution 2.0 Generic", - false, - false - ], - "CC-BY-2.5": [ - "Creative Commons Attribution 2.5 Generic", - false, - false - ], - "CC-BY-2.5-AU": [ - "Creative Commons Attribution 2.5 Australia", - false, - false - ], - "CC-BY-3.0": [ - "Creative Commons Attribution 3.0 Unported", - false, - false - ], - "CC-BY-3.0-AT": [ - "Creative Commons Attribution 3.0 Austria", - false, - false - ], - "CC-BY-3.0-DE": [ - "Creative Commons Attribution 3.0 Germany", - false, - false - ], - "CC-BY-3.0-NL": [ - "Creative Commons Attribution 3.0 Netherlands", - false, - false - ], - "CC-BY-3.0-US": [ - "Creative Commons Attribution 3.0 United States", - false, - false - ], - "CC-BY-4.0": [ - "Creative Commons Attribution 4.0 International", - false, - false - ], - "CC-BY-NC-1.0": [ - "Creative Commons Attribution Non Commercial 1.0 Generic", - false, - false - ], - "CC-BY-NC-2.0": [ - "Creative Commons Attribution Non Commercial 2.0 Generic", - false, - false - ], - "CC-BY-NC-2.5": [ - "Creative Commons Attribution Non Commercial 2.5 Generic", - false, - false - ], - "CC-BY-NC-3.0": [ - "Creative Commons Attribution Non Commercial 3.0 Unported", - false, - false - ], - "CC-BY-NC-3.0-DE": [ - "Creative Commons Attribution Non Commercial 3.0 Germany", - false, - false - ], - "CC-BY-NC-4.0": [ - "Creative Commons Attribution Non Commercial 4.0 International", - false, - false - ], - "CC-BY-NC-ND-1.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", - false, - false - ], - "CC-BY-NC-ND-2.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", - false, - false - ], - "CC-BY-NC-ND-2.5": [ - "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", - false, - false - ], - "CC-BY-NC-ND-3.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", - false, - false - ], - "CC-BY-NC-ND-3.0-DE": [ - "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany", - false, - false - ], - "CC-BY-NC-ND-3.0-IGO": [ - "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO", - false, - false - ], - "CC-BY-NC-ND-4.0": [ - "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", - false, - false - ], - "CC-BY-NC-SA-1.0": [ - "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", - false, - false - ], - "CC-BY-NC-SA-2.0": [ - "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", - false, - false - ], - "CC-BY-NC-SA-2.0-FR": [ - "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France", - false, - false - ], - "CC-BY-NC-SA-2.0-UK": [ - "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales", - false, - false - ], - "CC-BY-NC-SA-2.5": [ - "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", - false, - false - ], - "CC-BY-NC-SA-3.0": [ - "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", - false, - false - ], - "CC-BY-NC-SA-3.0-DE": [ - "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany", - false, - false - ], - "CC-BY-NC-SA-3.0-IGO": [ - "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO", - false, - false - ], - "CC-BY-NC-SA-4.0": [ - "Creative Commons Attribution Non Commercial Share Alike 4.0 International", - false, - false - ], - "CC-BY-ND-1.0": [ - "Creative Commons Attribution No Derivatives 1.0 Generic", - false, - false - ], - "CC-BY-ND-2.0": [ - "Creative Commons Attribution No Derivatives 2.0 Generic", - false, - false - ], - "CC-BY-ND-2.5": [ - "Creative Commons Attribution No Derivatives 2.5 Generic", - false, - false - ], - "CC-BY-ND-3.0": [ - "Creative Commons Attribution No Derivatives 3.0 Unported", - false, - false - ], - "CC-BY-ND-3.0-DE": [ - "Creative Commons Attribution No Derivatives 3.0 Germany", - false, - false - ], - "CC-BY-ND-4.0": [ - "Creative Commons Attribution No Derivatives 4.0 International", - false, - false - ], - "CC-BY-SA-1.0": [ - "Creative Commons Attribution Share Alike 1.0 Generic", - false, - false - ], - "CC-BY-SA-2.0": [ - "Creative Commons Attribution Share Alike 2.0 Generic", - false, - false - ], - "CC-BY-SA-2.0-UK": [ - "Creative Commons Attribution Share Alike 2.0 England and Wales", - false, - false - ], - "CC-BY-SA-2.1-JP": [ - "Creative Commons Attribution Share Alike 2.1 Japan", - false, - false - ], - "CC-BY-SA-2.5": [ - "Creative Commons Attribution Share Alike 2.5 Generic", - false, - false - ], - "CC-BY-SA-3.0": [ - "Creative Commons Attribution Share Alike 3.0 Unported", - false, - false - ], - "CC-BY-SA-3.0-AT": [ - "Creative Commons Attribution Share Alike 3.0 Austria", - false, - false - ], - "CC-BY-SA-3.0-DE": [ - "Creative Commons Attribution Share Alike 3.0 Germany", - false, - false - ], - "CC-BY-SA-4.0": [ - "Creative Commons Attribution Share Alike 4.0 International", - false, - false - ], - "CC-PDDC": [ - "Creative Commons Public Domain Dedication and Certification", - false, - false - ], - "CC0-1.0": [ - "Creative Commons Zero v1.0 Universal", - false, - false - ], - "CDDL-1.0": [ - "Common Development and Distribution License 1.0", - true, - false - ], - "CDDL-1.1": [ - "Common Development and Distribution License 1.1", - false, - false - ], - "CDL-1.0": [ - "Common Documentation License 1.0", - false, - false - ], - "CDLA-Permissive-1.0": [ - "Community Data License Agreement Permissive 1.0", - false, - false - ], - "CDLA-Permissive-2.0": [ - "Community Data License Agreement Permissive 2.0", - false, - false - ], - "CDLA-Sharing-1.0": [ - "Community Data License Agreement Sharing 1.0", - false, - false - ], - "CECILL-1.0": [ - "CeCILL Free Software License Agreement v1.0", - false, - false - ], - "CECILL-1.1": [ - "CeCILL Free Software License Agreement v1.1", - false, - false - ], - "CECILL-2.0": [ - "CeCILL Free Software License Agreement v2.0", - false, - false - ], - "CECILL-2.1": [ - "CeCILL Free Software License Agreement v2.1", - true, - false - ], - "CECILL-B": [ - "CeCILL-B Free Software License Agreement", - false, - false - ], - "CECILL-C": [ - "CeCILL-C Free Software License Agreement", - false, - false - ], - "CERN-OHL-1.1": [ - "CERN Open Hardware Licence v1.1", - false, - false - ], - "CERN-OHL-1.2": [ - "CERN Open Hardware Licence v1.2", - false, - false - ], - "CERN-OHL-P-2.0": [ - "CERN Open Hardware Licence Version 2 - Permissive", - true, - false - ], - "CERN-OHL-S-2.0": [ - "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", - true, - false - ], - "CERN-OHL-W-2.0": [ - "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", - true, - false - ], - "ClArtistic": [ - "Clarified Artistic License", - false, - false - ], - "CNRI-Jython": [ - "CNRI Jython License", - false, - false - ], - "CNRI-Python": [ - "CNRI Python License", - true, - false - ], - "CNRI-Python-GPL-Compatible": [ - "CNRI Python Open Source GPL Compatible License Agreement", - false, - false - ], - "COIL-1.0": [ - "Copyfree Open Innovation License", - false, - false - ], - "Community-Spec-1.0": [ - "Community Specification License 1.0", - false, - false - ], - "Condor-1.1": [ - "Condor Public License v1.1", - false, - false - ], - "copyleft-next-0.3.0": [ - "copyleft-next 0.3.0", - false, - false - ], - "copyleft-next-0.3.1": [ - "copyleft-next 0.3.1", - false, - false - ], - "CPAL-1.0": [ - "Common Public Attribution License 1.0", - true, - false - ], - "CPL-1.0": [ - "Common Public License 1.0", - true, - false - ], - "CPOL-1.02": [ - "Code Project Open License 1.02", - false, - false - ], - "Crossword": [ - "Crossword License", - false, - false - ], - "CrystalStacker": [ - "CrystalStacker License", - false, - false - ], - "CUA-OPL-1.0": [ - "CUA Office Public License v1.0", - true, - false - ], - "Cube": [ - "Cube License", - false, - false - ], - "curl": [ - "curl License", - false, - false - ], - "D-FSL-1.0": [ - "Deutsche Freie Software Lizenz", - false, - false - ], - "diffmark": [ - "diffmark license", - false, - false - ], - "DL-DE-BY-2.0": [ - "Data licence Germany \u2013 attribution \u2013 version 2.0", - false, - false - ], - "DOC": [ - "DOC License", - false, - false - ], - "Dotseqn": [ - "Dotseqn License", - false, - false - ], - "DRL-1.0": [ - "Detection Rule License 1.0", - false, - false - ], - "DSDP": [ - "DSDP License", - false, - false - ], - "dvipdfm": [ - "dvipdfm License", - false, - false - ], - "ECL-1.0": [ - "Educational Community License v1.0", - true, - false - ], - "ECL-2.0": [ - "Educational Community License v2.0", - true, - false - ], - "eCos-2.0": [ - "eCos license version 2.0", - false, - true - ], - "EFL-1.0": [ - "Eiffel Forum License v1.0", - true, - false - ], - "EFL-2.0": [ - "Eiffel Forum License v2.0", - true, - false - ], - "eGenix": [ - "eGenix.com Public License 1.1.0", - false, - false - ], - "Elastic-2.0": [ - "Elastic License 2.0", - false, - false - ], - "Entessa": [ - "Entessa Public License v1.0", - true, - false - ], - "EPICS": [ - "EPICS Open License", - false, - false - ], - "EPL-1.0": [ - "Eclipse Public License 1.0", - true, - false - ], - "EPL-2.0": [ - "Eclipse Public License 2.0", - true, - false - ], - "ErlPL-1.1": [ - "Erlang Public License v1.1", - false, - false - ], - "etalab-2.0": [ - "Etalab Open License 2.0", - false, - false - ], - "EUDatagrid": [ - "EU DataGrid Software License", - true, - false - ], - "EUPL-1.0": [ - "European Union Public License 1.0", - false, - false - ], - "EUPL-1.1": [ - "European Union Public License 1.1", - true, - false - ], - "EUPL-1.2": [ - "European Union Public License 1.2", - true, - false - ], - "Eurosym": [ - "Eurosym License", - false, - false - ], - "Fair": [ - "Fair License", - true, - false - ], - "FDK-AAC": [ - "Fraunhofer FDK AAC Codec Library", - false, - false - ], - "Frameworx-1.0": [ - "Frameworx Open License 1.0", - true, - false - ], - "FreeBSD-DOC": [ - "FreeBSD Documentation License", - false, - false - ], - "FreeImage": [ - "FreeImage Public License v1.0", - false, - false - ], - "FSFAP": [ - "FSF All Permissive License", - false, - false - ], - "FSFUL": [ - "FSF Unlimited License", - false, - false - ], - "FSFULLR": [ - "FSF Unlimited License (with License Retention)", - false, - false - ], - "FTL": [ - "Freetype Project License", - false, - false - ], - "GD": [ - "GD License", - false, - false - ], - "GFDL-1.1": [ - "GNU Free Documentation License v1.1", - false, - true - ], - "GFDL-1.1-invariants-only": [ - "GNU Free Documentation License v1.1 only - invariants", - false, - false - ], - "GFDL-1.1-invariants-or-later": [ - "GNU Free Documentation License v1.1 or later - invariants", - false, - false - ], - "GFDL-1.1-no-invariants-only": [ - "GNU Free Documentation License v1.1 only - no invariants", - false, - false - ], - "GFDL-1.1-no-invariants-or-later": [ - "GNU Free Documentation License v1.1 or later - no invariants", - false, - false - ], - "GFDL-1.1-only": [ - "GNU Free Documentation License v1.1 only", - false, - false - ], - "GFDL-1.1-or-later": [ - "GNU Free Documentation License v1.1 or later", - false, - false - ], - "GFDL-1.2": [ - "GNU Free Documentation License v1.2", - false, - true - ], - "GFDL-1.2-invariants-only": [ - "GNU Free Documentation License v1.2 only - invariants", - false, - false - ], - "GFDL-1.2-invariants-or-later": [ - "GNU Free Documentation License v1.2 or later - invariants", - false, - false - ], - "GFDL-1.2-no-invariants-only": [ - "GNU Free Documentation License v1.2 only - no invariants", - false, - false - ], - "GFDL-1.2-no-invariants-or-later": [ - "GNU Free Documentation License v1.2 or later - no invariants", - false, - false - ], - "GFDL-1.2-only": [ - "GNU Free Documentation License v1.2 only", - false, - false - ], - "GFDL-1.2-or-later": [ - "GNU Free Documentation License v1.2 or later", - false, - false - ], - "GFDL-1.3": [ - "GNU Free Documentation License v1.3", - false, - true - ], - "GFDL-1.3-invariants-only": [ - "GNU Free Documentation License v1.3 only - invariants", - false, - false - ], - "GFDL-1.3-invariants-or-later": [ - "GNU Free Documentation License v1.3 or later - invariants", - false, - false - ], - "GFDL-1.3-no-invariants-only": [ - "GNU Free Documentation License v1.3 only - no invariants", - false, - false - ], - "GFDL-1.3-no-invariants-or-later": [ - "GNU Free Documentation License v1.3 or later - no invariants", - false, - false - ], - "GFDL-1.3-only": [ - "GNU Free Documentation License v1.3 only", - false, - false - ], - "GFDL-1.3-or-later": [ - "GNU Free Documentation License v1.3 or later", - false, - false - ], - "Giftware": [ - "Giftware License", - false, - false - ], - "GL2PS": [ - "GL2PS License", - false, - false - ], - "Glide": [ - "3dfx Glide License", - false, - false - ], - "Glulxe": [ - "Glulxe License", - false, - false - ], - "GLWTPL": [ - "Good Luck With That Public License", - false, - false - ], - "gnuplot": [ - "gnuplot License", - false, - false - ], - "GPL-1.0": [ - "GNU General Public License v1.0 only", - false, - true - ], - "GPL-1.0+": [ - "GNU General Public License v1.0 or later", - false, - true - ], - "GPL-1.0-only": [ - "GNU General Public License v1.0 only", - false, - false - ], - "GPL-1.0-or-later": [ - "GNU General Public License v1.0 or later", - false, - false - ], - "GPL-2.0": [ - "GNU General Public License v2.0 only", - true, - true - ], - "GPL-2.0+": [ - "GNU General Public License v2.0 or later", - true, - true - ], - "GPL-2.0-only": [ - "GNU General Public License v2.0 only", - true, - false - ], - "GPL-2.0-or-later": [ - "GNU General Public License v2.0 or later", - true, - false - ], - "GPL-2.0-with-autoconf-exception": [ - "GNU General Public License v2.0 w/Autoconf exception", - false, - true - ], - "GPL-2.0-with-bison-exception": [ - "GNU General Public License v2.0 w/Bison exception", - false, - true - ], - "GPL-2.0-with-classpath-exception": [ - "GNU General Public License v2.0 w/Classpath exception", - false, - true - ], - "GPL-2.0-with-font-exception": [ - "GNU General Public License v2.0 w/Font exception", - false, - true - ], - "GPL-2.0-with-GCC-exception": [ - "GNU General Public License v2.0 w/GCC Runtime Library exception", - false, - true - ], - "GPL-3.0": [ - "GNU General Public License v3.0 only", - true, - true - ], - "GPL-3.0+": [ - "GNU General Public License v3.0 or later", - true, - true - ], - "GPL-3.0-only": [ - "GNU General Public License v3.0 only", - true, - false - ], - "GPL-3.0-or-later": [ - "GNU General Public License v3.0 or later", - true, - false - ], - "GPL-3.0-with-autoconf-exception": [ - "GNU General Public License v3.0 w/Autoconf exception", - false, - true - ], - "GPL-3.0-with-GCC-exception": [ - "GNU General Public License v3.0 w/GCC Runtime Library exception", - true, - true - ], - "gSOAP-1.3b": [ - "gSOAP Public License v1.3b", - false, - false - ], - "HaskellReport": [ - "Haskell Language Report License", - false, - false - ], - "Hippocratic-2.1": [ - "Hippocratic License 2.1", - false, - false - ], - "HPND": [ - "Historical Permission Notice and Disclaimer", - true, - false - ], - "HPND-sell-variant": [ - "Historical Permission Notice and Disclaimer - sell variant", - false, - false - ], - "HTMLTIDY": [ - "HTML Tidy License", - false, - false - ], - "IBM-pibs": [ - "IBM PowerPC Initialization and Boot Software", - false, - false - ], - "ICU": [ - "ICU License", - false, - false - ], - "IJG": [ - "Independent JPEG Group License", - false, - false - ], - "ImageMagick": [ - "ImageMagick License", - false, - false - ], - "iMatix": [ - "iMatix Standard Function Library Agreement", - false, - false - ], - "Imlib2": [ - "Imlib2 License", - false, - false - ], - "Info-ZIP": [ - "Info-ZIP License", - false, - false - ], - "Intel": [ - "Intel Open Source License", - true, - false - ], - "Intel-ACPI": [ - "Intel ACPI Software License Agreement", - false, - false - ], - "Interbase-1.0": [ - "Interbase Public License v1.0", - false, - false - ], - "IPA": [ - "IPA Font License", - true, - false - ], - "IPL-1.0": [ - "IBM Public License v1.0", - true, - false - ], - "ISC": [ - "ISC License", - true, - false - ], - "Jam": [ - "Jam License", - true, - false - ], - "JasPer-2.0": [ - "JasPer License", - false, - false - ], - "JPNIC": [ - "Japan Network Information Center License", - false, - false - ], - "JSON": [ - "JSON License", - false, - false - ], - "KiCad-libraries-exception": [ - "KiCad Libraries Exception", - false, - false - ], - "LAL-1.2": [ - "Licence Art Libre 1.2", - false, - false - ], - "LAL-1.3": [ - "Licence Art Libre 1.3", - false, - false - ], - "Latex2e": [ - "Latex2e License", - false, - false - ], - "Leptonica": [ - "Leptonica License", - false, - false - ], - "LGPL-2.0": [ - "GNU Library General Public License v2 only", - true, - true - ], - "LGPL-2.0+": [ - "GNU Library General Public License v2 or later", - true, - true - ], - "LGPL-2.0-only": [ - "GNU Library General Public License v2 only", - true, - false - ], - "LGPL-2.0-or-later": [ - "GNU Library General Public License v2 or later", - true, - false - ], - "LGPL-2.1": [ - "GNU Lesser General Public License v2.1 only", - true, - true - ], - "LGPL-2.1+": [ - "GNU Library General Public License v2.1 or later", - true, - true - ], - "LGPL-2.1-only": [ - "GNU Lesser General Public License v2.1 only", - true, - false - ], - "LGPL-2.1-or-later": [ - "GNU Lesser General Public License v2.1 or later", - true, - false - ], - "LGPL-3.0": [ - "GNU Lesser General Public License v3.0 only", - true, - true - ], - "LGPL-3.0+": [ - "GNU Lesser General Public License v3.0 or later", - true, - true - ], - "LGPL-3.0-only": [ - "GNU Lesser General Public License v3.0 only", - true, - false - ], - "LGPL-3.0-or-later": [ - "GNU Lesser General Public License v3.0 or later", - true, - false - ], - "LGPLLR": [ - "Lesser General Public License For Linguistic Resources", - false, - false - ], - "Libpng": [ - "libpng License", - false, - false - ], - "libpng-2.0": [ - "PNG Reference Library version 2", - false, - false - ], - "libselinux-1.0": [ - "libselinux public domain notice", - false, - false - ], - "libtiff": [ - "libtiff License", - false, - false - ], - "LiLiQ-P-1.1": [ - "Licence Libre du Qu\u00e9bec \u2013 Permissive version 1.1", - true, - false - ], - "LiLiQ-R-1.1": [ - "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 version 1.1", - true, - false - ], - "LiLiQ-Rplus-1.1": [ - "Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 forte version 1.1", - true, - false - ], - "Linux-man-pages-copyleft": [ - "Linux man-pages Copyleft", - false, - false - ], - "Linux-OpenIB": [ - "Linux Kernel Variant of OpenIB.org license", - false, - false - ], - "LPL-1.0": [ - "Lucent Public License Version 1.0", - true, - false - ], - "LPL-1.02": [ - "Lucent Public License v1.02", - true, - false - ], - "LPPL-1.0": [ - "LaTeX Project Public License v1.0", - false, - false - ], - "LPPL-1.1": [ - "LaTeX Project Public License v1.1", - false, - false - ], - "LPPL-1.2": [ - "LaTeX Project Public License v1.2", - false, - false - ], - "LPPL-1.3a": [ - "LaTeX Project Public License v1.3a", - false, - false - ], - "LPPL-1.3c": [ - "LaTeX Project Public License v1.3c", - true, - false - ], - "MakeIndex": [ - "MakeIndex License", - false, - false - ], - "MirOS": [ - "The MirOS Licence", - true, - false - ], - "MIT": [ - "MIT License", - true, - false - ], - "MIT-0": [ - "MIT No Attribution", - true, - false - ], - "MIT-advertising": [ - "Enlightenment License (e16)", - false, - false - ], - "MIT-CMU": [ - "CMU License", - false, - false - ], - "MIT-enna": [ - "enna License", - false, - false - ], - "MIT-feh": [ - "feh License", - false, - false - ], - "MIT-Modern-Variant": [ - "MIT License Modern Variant", - true, - false - ], - "MIT-open-group": [ - "MIT Open Group variant", - false, - false - ], - "MITNFA": [ - "MIT +no-false-attribs license", - false, - false - ], - "Motosoto": [ - "Motosoto License", - true, - false - ], - "mpich2": [ - "mpich2 License", - false, - false - ], - "MPL-1.0": [ - "Mozilla Public License 1.0", - true, - false - ], - "MPL-1.1": [ - "Mozilla Public License 1.1", - true, - false - ], - "MPL-2.0": [ - "Mozilla Public License 2.0", - true, - false - ], - "MPL-2.0-no-copyleft-exception": [ - "Mozilla Public License 2.0 (no copyleft exception)", - true, - false - ], - "mplus": [ - "mplus Font License", - false, - false - ], - "MS-PL": [ - "Microsoft Public License", - true, - false - ], - "MS-RL": [ - "Microsoft Reciprocal License", - true, - false - ], - "MTLL": [ - "Matrix Template Library License", - false, - false - ], - "MulanPSL-1.0": [ - "Mulan Permissive Software License, Version 1", - false, - false - ], - "MulanPSL-2.0": [ - "Mulan Permissive Software License, Version 2", - true, - false - ], - "Multics": [ - "Multics License", - true, - false - ], - "Mup": [ - "Mup License", - false, - false - ], - "NAIST-2003": [ - "Nara Institute of Science and Technology License (2003)", - false, - false - ], - "NASA-1.3": [ - "NASA Open Source Agreement 1.3", - true, - false - ], - "Naumen": [ - "Naumen Public License", - true, - false - ], - "NBPL-1.0": [ - "Net Boolean Public License v1", - false, - false - ], - "NCGL-UK-2.0": [ - "Non-Commercial Government Licence", - false, - false - ], - "NCSA": [ - "University of Illinois/NCSA Open Source License", - true, - false - ], - "Net-SNMP": [ - "Net-SNMP License", - false, - false - ], - "NetCDF": [ - "NetCDF license", - false, - false - ], - "Newsletr": [ - "Newsletr License", - false, - false - ], - "NGPL": [ - "Nethack General Public License", - true, - false - ], - "NIST-PD": [ - "NIST Public Domain Notice", - false, - false - ], - "NIST-PD-fallback": [ - "NIST Public Domain Notice with license fallback", - false, - false - ], - "NLOD-1.0": [ - "Norwegian Licence for Open Government Data (NLOD) 1.0", - false, - false - ], - "NLOD-2.0": [ - "Norwegian Licence for Open Government Data (NLOD) 2.0", - false, - false - ], - "NLPL": [ - "No Limit Public License", - false, - false - ], - "Nokia": [ - "Nokia Open Source License", - true, - false - ], - "NOSL": [ - "Netizen Open Source License", - false, - false - ], - "Noweb": [ - "Noweb License", - false, - false - ], - "NPL-1.0": [ - "Netscape Public License v1.0", - false, - false - ], - "NPL-1.1": [ - "Netscape Public License v1.1", - false, - false - ], - "NPOSL-3.0": [ - "Non-Profit Open Software License 3.0", - true, - false - ], - "NRL": [ - "NRL License", - false, - false - ], - "NTP": [ - "NTP License", - true, - false - ], - "NTP-0": [ - "NTP No Attribution", - false, - false - ], - "Nunit": [ - "Nunit License", - false, - true - ], - "O-UDA-1.0": [ - "Open Use of Data Agreement v1.0", - false, - false - ], - "OCCT-PL": [ - "Open CASCADE Technology Public License", - false, - false - ], - "OCLC-2.0": [ - "OCLC Research Public License 2.0", - true, - false - ], - "ODbL-1.0": [ - "Open Data Commons Open Database License v1.0", - false, - false - ], - "ODC-By-1.0": [ - "Open Data Commons Attribution License v1.0", - false, - false - ], - "OFL-1.0": [ - "SIL Open Font License 1.0", - false, - false - ], - "OFL-1.0-no-RFN": [ - "SIL Open Font License 1.0 with no Reserved Font Name", - false, - false - ], - "OFL-1.0-RFN": [ - "SIL Open Font License 1.0 with Reserved Font Name", - false, - false - ], - "OFL-1.1": [ - "SIL Open Font License 1.1", - true, - false - ], - "OFL-1.1-no-RFN": [ - "SIL Open Font License 1.1 with no Reserved Font Name", - true, - false - ], - "OFL-1.1-RFN": [ - "SIL Open Font License 1.1 with Reserved Font Name", - true, - false - ], - "OGC-1.0": [ - "OGC Software License, Version 1.0", - false, - false - ], - "OGDL-Taiwan-1.0": [ - "Taiwan Open Government Data License, version 1.0", - false, - false - ], - "OGL-Canada-2.0": [ - "Open Government Licence - Canada", - false, - false - ], - "OGL-UK-1.0": [ - "Open Government Licence v1.0", - false, - false - ], - "OGL-UK-2.0": [ - "Open Government Licence v2.0", - false, - false - ], - "OGL-UK-3.0": [ - "Open Government Licence v3.0", - false, - false - ], - "OGTSL": [ - "Open Group Test Suite License", - true, - false - ], - "OLDAP-1.1": [ - "Open LDAP Public License v1.1", - false, - false - ], - "OLDAP-1.2": [ - "Open LDAP Public License v1.2", - false, - false - ], - "OLDAP-1.3": [ - "Open LDAP Public License v1.3", - false, - false - ], - "OLDAP-1.4": [ - "Open LDAP Public License v1.4", - false, - false - ], - "OLDAP-2.0": [ - "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", - false, - false - ], - "OLDAP-2.0.1": [ - "Open LDAP Public License v2.0.1", - false, - false - ], - "OLDAP-2.1": [ - "Open LDAP Public License v2.1", - false, - false - ], - "OLDAP-2.2": [ - "Open LDAP Public License v2.2", - false, - false - ], - "OLDAP-2.2.1": [ - "Open LDAP Public License v2.2.1", - false, - false - ], - "OLDAP-2.2.2": [ - "Open LDAP Public License 2.2.2", - false, - false - ], - "OLDAP-2.3": [ - "Open LDAP Public License v2.3", - false, - false - ], - "OLDAP-2.4": [ - "Open LDAP Public License v2.4", - false, - false - ], - "OLDAP-2.5": [ - "Open LDAP Public License v2.5", - false, - false - ], - "OLDAP-2.6": [ - "Open LDAP Public License v2.6", - false, - false - ], - "OLDAP-2.7": [ - "Open LDAP Public License v2.7", - false, - false - ], - "OLDAP-2.8": [ - "Open LDAP Public License v2.8", - true, - false - ], - "OML": [ - "Open Market License", - false, - false - ], - "OpenSSL": [ - "OpenSSL License", - false, - false - ], - "OPL-1.0": [ - "Open Public License v1.0", - false, - false - ], - "OPUBL-1.0": [ - "Open Publication License v1.0", - false, - false - ], - "OSET-PL-2.1": [ - "OSET Public License version 2.1", - true, - false - ], - "OSL-1.0": [ - "Open Software License 1.0", - true, - false - ], - "OSL-1.1": [ - "Open Software License 1.1", - false, - false - ], - "OSL-2.0": [ - "Open Software License 2.0", - true, - false - ], - "OSL-2.1": [ - "Open Software License 2.1", - true, - false - ], - "OSL-3.0": [ - "Open Software License 3.0", - true, - false - ], - "Parity-6.0.0": [ - "The Parity Public License 6.0.0", - false, - false - ], - "Parity-7.0.0": [ - "The Parity Public License 7.0.0", - false, - false - ], - "PDDL-1.0": [ - "Open Data Commons Public Domain Dedication & License 1.0", - false, - false - ], - "PHP-3.0": [ - "PHP License v3.0", - true, - false - ], - "PHP-3.01": [ - "PHP License v3.01", - true, - false - ], - "Plexus": [ - "Plexus Classworlds License", - false, - false - ], - "PolyForm-Noncommercial-1.0.0": [ - "PolyForm Noncommercial License 1.0.0", - false, - false - ], - "PolyForm-Small-Business-1.0.0": [ - "PolyForm Small Business License 1.0.0", - false, - false - ], - "PostgreSQL": [ - "PostgreSQL License", - true, - false - ], - "PSF-2.0": [ - "Python Software Foundation License 2.0", - false, - false - ], - "psfrag": [ - "psfrag License", - false, - false - ], - "psutils": [ - "psutils License", - false, - false - ], - "Python-2.0": [ - "Python License 2.0", - true, - false - ], - "Qhull": [ - "Qhull License", - false, - false - ], - "QPL-1.0": [ - "Q Public License 1.0", - true, - false - ], - "Rdisc": [ - "Rdisc License", - false, - false - ], - "RHeCos-1.1": [ - "Red Hat eCos Public License v1.1", - false, - false - ], - "RPL-1.1": [ - "Reciprocal Public License 1.1", - true, - false - ], - "RPL-1.5": [ - "Reciprocal Public License 1.5", - true, - false - ], - "RPSL-1.0": [ - "RealNetworks Public Source License v1.0", - true, - false - ], - "RSA-MD": [ - "RSA Message-Digest License", - false, - false - ], - "RSCPL": [ - "Ricoh Source Code Public License", - true, - false - ], - "Ruby": [ - "Ruby License", - false, - false - ], - "SAX-PD": [ - "Sax Public Domain Notice", - false, - false - ], - "Saxpath": [ - "Saxpath License", - false, - false - ], - "SCEA": [ - "SCEA Shared Source License", - false, - false - ], - "SchemeReport": [ - "Scheme Language Report License", - false, - false - ], - "Sendmail": [ - "Sendmail License", - false, - false - ], - "Sendmail-8.23": [ - "Sendmail License 8.23", - false, - false - ], - "SGI-B-1.0": [ - "SGI Free Software License B v1.0", - false, - false - ], - "SGI-B-1.1": [ - "SGI Free Software License B v1.1", - false, - false - ], - "SGI-B-2.0": [ - "SGI Free Software License B v2.0", - false, - false - ], - "SHL-0.5": [ - "Solderpad Hardware License v0.5", - false, - false - ], - "SHL-0.51": [ - "Solderpad Hardware License, Version 0.51", - false, - false - ], - "SimPL-2.0": [ - "Simple Public License 2.0", - true, - false - ], - "SISSL": [ - "Sun Industry Standards Source License v1.1", - true, - false - ], - "SISSL-1.2": [ - "Sun Industry Standards Source License v1.2", - false, - false - ], - "Sleepycat": [ - "Sleepycat License", - true, - false - ], - "SMLNJ": [ - "Standard ML of New Jersey License", - false, - false - ], - "SMPPL": [ - "Secure Messaging Protocol Public License", - false, - false - ], - "SNIA": [ - "SNIA Public License 1.1", - false, - false - ], - "Spencer-86": [ - "Spencer License 86", - false, - false - ], - "Spencer-94": [ - "Spencer License 94", - false, - false - ], - "Spencer-99": [ - "Spencer License 99", - false, - false - ], - "SPL-1.0": [ - "Sun Public License v1.0", - true, - false - ], - "SSH-OpenSSH": [ - "SSH OpenSSH license", - false, - false - ], - "SSH-short": [ - "SSH short notice", - false, - false - ], - "SSPL-1.0": [ - "Server Side Public License, v 1", - false, - false - ], - "StandardML-NJ": [ - "Standard ML of New Jersey License", - false, - true - ], - "SugarCRM-1.1.3": [ - "SugarCRM Public License v1.1.3", - false, - false - ], - "SWL": [ - "Scheme Widget Library (SWL) Software License Agreement", - false, - false - ], - "TAPR-OHL-1.0": [ - "TAPR Open Hardware License v1.0", - false, - false - ], - "TCL": [ - "TCL/TK License", - false, - false - ], - "TCP-wrappers": [ - "TCP Wrappers License", - false, - false - ], - "TMate": [ - "TMate Open Source License", - false, - false - ], - "TORQUE-1.1": [ - "TORQUE v2.5+ Software License v1.1", - false, - false - ], - "TOSL": [ - "Trusster Open Source License", - false, - false - ], - "TU-Berlin-1.0": [ - "Technische Universitaet Berlin License 1.0", - false, - false - ], - "TU-Berlin-2.0": [ - "Technische Universitaet Berlin License 2.0", - false, - false - ], - "UCL-1.0": [ - "Upstream Compatibility License v1.0", - true, - false - ], - "Unicode-DFS-2015": [ - "Unicode License Agreement - Data Files and Software (2015)", - false, - false - ], - "Unicode-DFS-2016": [ - "Unicode License Agreement - Data Files and Software (2016)", - true, - false - ], - "Unicode-TOU": [ - "Unicode Terms of Use", - false, - false - ], - "Unlicense": [ - "The Unlicense", - true, - false - ], - "UPL-1.0": [ - "Universal Permissive License v1.0", - true, - false - ], - "Vim": [ - "Vim License", - false, - false - ], - "VOSTROM": [ - "VOSTROM Public License for Open Source", - false, - false - ], - "VSL-1.0": [ - "Vovida Software License v1.0", - true, - false - ], - "W3C": [ - "W3C Software Notice and License (2002-12-31)", - true, - false - ], - "W3C-19980720": [ - "W3C Software Notice and License (1998-07-20)", - false, - false - ], - "W3C-20150513": [ - "W3C Software Notice and Document License (2015-05-13)", - false, - false - ], - "Watcom-1.0": [ - "Sybase Open Watcom Public License 1.0", - true, - false - ], - "Wsuipa": [ - "Wsuipa License", - false, - false - ], - "WTFPL": [ - "Do What The F*ck You Want To Public License", - false, - false - ], - "wxWindows": [ - "wxWindows Library License", - true, - true - ], - "X11": [ - "X11 License", - false, - false - ], - "X11-distribute-modifications-variant": [ - "X11 License Distribution Modification Variant", - false, - false - ], - "Xerox": [ - "Xerox License", - false, - false - ], - "XFree86-1.1": [ - "XFree86 License 1.1", - false, - false - ], - "xinetd": [ - "xinetd License", - false, - false - ], - "Xnet": [ - "X.Net License", - true, - false - ], - "xpp": [ - "XPP License", - false, - false - ], - "XSkat": [ - "XSkat License", - false, - false - ], - "YPL-1.0": [ - "Yahoo! Public License v1.0", - false, - false - ], - "YPL-1.1": [ - "Yahoo! Public License v1.1", - false, - false - ], - "Zed": [ - "Zed License", - false, - false - ], - "Zend-2.0": [ - "Zend License v2.0", - false, - false - ], - "Zimbra-1.3": [ - "Zimbra Public License v1.3", - false, - false - ], - "Zimbra-1.4": [ - "Zimbra Public License v1.4", - false, - false - ], - "Zlib": [ - "zlib License", - true, - false - ], - "zlib-acknowledgement": [ - "zlib/libpng License with Acknowledgement", - false, - false - ], - "ZPL-1.1": [ - "Zope Public License 1.1", - false, - false - ], - "ZPL-2.0": [ - "Zope Public License 2.0", - true, - false - ], - "ZPL-2.1": [ - "Zope Public License 2.1", - true, - false - ] -} \ No newline at end of file diff --git a/composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php b/composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php deleted file mode 100644 index ac75247c3..000000000 --- a/composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php +++ /dev/null @@ -1,357 +0,0 @@ -loadLicenses(); -$this->loadExceptions(); -} - - - - - - - - - - - - - -public function getLicenseByIdentifier($identifier) -{ -$key = strtolower($identifier); - -if (!isset($this->licenses[$key])) { -return null; -} - -list($identifier, $name, $isOsiApproved, $isDeprecatedLicenseId) = $this->licenses[$key]; - -return array( -$name, -$isOsiApproved, -'https://spdx.org/licenses/' . $identifier . '.html#licenseText', -$isDeprecatedLicenseId, -); -} - - - - - - -public function getLicenses() -{ -return $this->licenses; -} - - - - - - - - - - - - - -public function getExceptionByIdentifier($identifier) -{ -$key = strtolower($identifier); - -if (!isset($this->exceptions[$key])) { -return null; -} - -list($identifier, $name) = $this->exceptions[$key]; - -return array( -$name, -'https://spdx.org/licenses/' . $identifier . '.html#licenseExceptionText', -); -} - - - - - - - - -public function getIdentifierByName($name) -{ -foreach ($this->licenses as $licenseData) { -if ($licenseData[1] === $name) { -return $licenseData[0]; -} -} - -foreach ($this->exceptions as $licenseData) { -if ($licenseData[1] === $name) { -return $licenseData[0]; -} -} - -return null; -} - - - - - - - - -public function isOsiApprovedByIdentifier($identifier) -{ -return $this->licenses[strtolower($identifier)][2]; -} - - - - - - - - -public function isDeprecatedByIdentifier($identifier) -{ -return $this->licenses[strtolower($identifier)][3]; -} - - - - - - - - -public function validate($license) -{ -if (is_array($license)) { -$count = count($license); -if ($count !== count(array_filter($license, 'is_string'))) { -throw new \InvalidArgumentException('Array of strings expected.'); -} -$license = $count > 1 ? '(' . implode(' OR ', $license) . ')' : (string) reset($license); -} - -if (!is_string($license)) { -throw new \InvalidArgumentException(sprintf( -'Array or String expected, %s given.', -gettype($license) -)); -} - -return $this->isValidLicenseString($license); -} - - - - -public static function getResourcesDir() -{ -return dirname(__DIR__) . '/res'; -} - - - - -private function loadLicenses() -{ -if (null !== $this->licenses) { -return; -} - -$json = file_get_contents(self::getResourcesDir() . '/' . self::LICENSES_FILE); -if (false === $json) { -throw new \RuntimeException('Missing license file in ' . self::getResourcesDir() . '/' . self::LICENSES_FILE); -} -$this->licenses = array(); - -foreach (json_decode($json, true) as $identifier => $license) { -$this->licenses[strtolower($identifier)] = array($identifier, $license[0], $license[1], $license[2]); -} -} - - - - -private function loadExceptions() -{ -if (null !== $this->exceptions) { -return; -} - -$json = file_get_contents(self::getResourcesDir() . '/' . self::EXCEPTIONS_FILE); -if (false === $json) { -throw new \RuntimeException('Missing exceptions file in ' . self::getResourcesDir() . '/' . self::EXCEPTIONS_FILE); -} -$this->exceptions = array(); - -foreach (json_decode($json, true) as $identifier => $exception) { -$this->exceptions[strtolower($identifier)] = array($identifier, $exception[0]); -} -} - - - - -private function getLicensesExpression() -{ -if (null === $this->licensesExpression) { -$licenses = array_map('preg_quote', array_keys($this->licenses)); -rsort($licenses); -$licenses = implode('|', $licenses); -$this->licensesExpression = $licenses; -} - -return $this->licensesExpression; -} - - - - -private function getExceptionsExpression() -{ -if (null === $this->exceptionsExpression) { -$exceptions = array_map('preg_quote', array_keys($this->exceptions)); -rsort($exceptions); -$exceptions = implode('|', $exceptions); -$this->exceptionsExpression = $exceptions; -} - -return $this->exceptionsExpression; -} - - - - - - - - -private function isValidLicenseString($license) -{ -if (isset($this->licenses[strtolower($license)])) { -return true; -} - -$licenses = $this->getLicensesExpression(); -$exceptions = $this->getExceptionsExpression(); - -$regex = <<[\pL\pN.-]{1,}) - - # license-id: taken from list - (?{$licenses}) - - # license-exception-id: taken from list - (?{$exceptions}) - - # license-ref: [DocumentRef-1*(idstring):]LicenseRef-1*(idstring) - (?(?:DocumentRef-(?&idstring):)?LicenseRef-(?&idstring)) - - # simple-expresssion: license-id / license-id+ / license-ref - (?(?&licenseid)\+? | (?&licenseid) | (?&licenseref)) - - # compound-expression: 1*( - # simple-expression / - # simple-expression WITH license-exception-id / - # compound-expression AND compound-expression / - # compound-expression OR compound-expression - # ) / ( compound-expression ) ) - (? - (?&simple_expression) ( \s+ WITH \s+ (?&licenseexceptionid))? - | \( \s* (?&compound_expression) \s* \) - ) - (? - (?&compound_head) (?: \s+ (?:AND|OR) \s+ (?&compound_expression))? - ) - - # license-expression: 1*1(simple-expression / compound-expression) - (?(?&compound_expression) | (?&simple_expression)) -) # end of define - -^(NONE | NOASSERTION | (?&license_expression))$ -}xi -REGEX; - -$match = preg_match($regex, $license); - -if (0 === $match) { -return false; -} - -if (false === $match) { -throw new \RuntimeException('Regex failed to compile/run.'); -} - -return true; -} -} diff --git a/composer/vendor/composer/xdebug-handler/LICENSE b/composer/vendor/composer/xdebug-handler/LICENSE deleted file mode 100644 index c17073236..000000000 --- a/composer/vendor/composer/xdebug-handler/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - -MIT License - -Copyright (c) 2017 Composer - -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/composer/vendor/composer/xdebug-handler/src/PhpConfig.php b/composer/vendor/composer/xdebug-handler/src/PhpConfig.php deleted file mode 100644 index d3cad6782..000000000 --- a/composer/vendor/composer/xdebug-handler/src/PhpConfig.php +++ /dev/null @@ -1,91 +0,0 @@ -getDataAndReset(); -return []; -} - - - - - - -public function useStandard(): array -{ -$data = $this->getDataAndReset(); -if ($data !== null) { -return ['-n', '-c', $data['tmpIni']]; -} - -return []; -} - - - - - - -public function usePersistent(): array -{ -$data = $this->getDataAndReset(); -if ($data !== null) { -$this->updateEnv('PHPRC', $data['tmpIni']); -$this->updateEnv('PHP_INI_SCAN_DIR', ''); -} - -return []; -} - - - - - - -private function getDataAndReset(): ?array -{ -$data = XdebugHandler::getRestartSettings(); -if ($data !== null) { -$this->updateEnv('PHPRC', $data['phprc']); -$this->updateEnv('PHP_INI_SCAN_DIR', $data['scanDir']); -} - -return $data; -} - - - - - - - -private function updateEnv(string $name, $value): void -{ -Process::setEnv($name, false !== $value ? $value : null); -} -} diff --git a/composer/vendor/composer/xdebug-handler/src/Process.php b/composer/vendor/composer/xdebug-handler/src/Process.php deleted file mode 100644 index d7ec82e5e..000000000 --- a/composer/vendor/composer/xdebug-handler/src/Process.php +++ /dev/null @@ -1,118 +0,0 @@ -()') !== false; -} elseif ($module && !$dquotes && $quote) { -$meta = false; -} -} - -if ($quote) { -$arg = '"'.(Preg::replace('/(\\\\*)$/', '$1$1', $arg)).'"'; -} - -if ($meta) { -$arg = Preg::replace('/(["^&|<>()%])/', '^$1', $arg); -} - -return $arg; -} - - - - - - -public static function escapeShellCommand(array $args): string -{ -$command = ''; -$module = array_shift($args); - -if ($module !== null) { -$command = self::escape($module, true, true); - -foreach ($args as $arg) { -$command .= ' '.self::escape($arg); -} -} - -return $command; -} - - - - - - - -public static function setEnv(string $name, ?string $value = null): bool -{ -$unset = null === $value; - -if (!putenv($unset ? $name : $name.'='.$value)) { -return false; -} - -if ($unset) { -unset($_SERVER[$name]); -} else { -$_SERVER[$name] = $value; -} - - -if (false !== stripos((string) ini_get('variables_order'), 'E')) { -if ($unset) { -unset($_ENV[$name]); -} else { -$_ENV[$name] = $value; -} -} - -return true; -} -} diff --git a/composer/vendor/composer/xdebug-handler/src/Status.php b/composer/vendor/composer/xdebug-handler/src/Status.php deleted file mode 100644 index eb74f6c8a..000000000 --- a/composer/vendor/composer/xdebug-handler/src/Status.php +++ /dev/null @@ -1,203 +0,0 @@ -time = is_numeric($start) ? round((microtime(true) - $start) * 1000) : 0; - -$this->envAllowXdebug = $envAllowXdebug; -$this->debug = $debug && defined('STDERR'); -$this->modeOff = false; -} - - - - - - -public function setLogger(LoggerInterface $logger): void -{ -$this->logger = $logger; -} - - - - - - -public function report(string $op, ?string $data): void -{ -if ($this->logger !== null || $this->debug) { -$callable = [$this, 'report'.$op]; - -if (!is_callable($callable)) { -throw new \InvalidArgumentException('Unknown op handler: '.$op); -} - -$params = $data !== null ? [$data] : []; -call_user_func_array($callable, $params); -} -} - - - - -private function output(string $text, ?string $level = null): void -{ -if ($this->logger !== null) { -$this->logger->log($level !== null ? $level: LogLevel::DEBUG, $text); -} - -if ($this->debug) { -fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL)); -} -} - - - - -private function reportCheck(string $loaded): void -{ -list($version, $mode) = explode('|', $loaded); - -if ($version !== '') { -$this->loaded = '('.$version.')'.($mode !== '' ? ' xdebug.mode='.$mode : ''); -} -$this->modeOff = $mode === 'off'; -$this->output('Checking '.$this->envAllowXdebug); -} - - - - -private function reportError(string $error): void -{ -$this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING); -} - - - - -private function reportInfo(string $info): void -{ -$this->output($info); -} - - - - -private function reportNoRestart(): void -{ -$this->output($this->getLoadedMessage()); - -if ($this->loaded !== null) { -$text = sprintf('No restart (%s)', $this->getEnvAllow()); -if (!((bool) getenv($this->envAllowXdebug))) { -$text .= ' Allowed by '.($this->modeOff ? 'xdebug.mode' : 'application'); -} -$this->output($text); -} -} - - - - -private function reportRestart(): void -{ -$this->output($this->getLoadedMessage()); -Process::setEnv(self::ENV_RESTART, (string) microtime(true)); -} - - - - -private function reportRestarted(): void -{ -$loaded = $this->getLoadedMessage(); -$text = sprintf('Restarted (%d ms). %s', $this->time, $loaded); -$level = $this->loaded !== null ? LogLevel::WARNING : null; -$this->output($text, $level); -} - - - - -private function reportRestarting(string $command): void -{ -$text = sprintf('Process restarting (%s)', $this->getEnvAllow()); -$this->output($text); -$text = 'Running '.$command; -$this->output($text); -} - - - - -private function getEnvAllow(): string -{ -return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug); -} - - - - -private function getLoadedMessage(): string -{ -$loaded = $this->loaded !== null ? sprintf('loaded %s', $this->loaded) : 'not loaded'; -return 'The Xdebug extension is '.$loaded; -} -} diff --git a/composer/vendor/composer/xdebug-handler/src/XdebugHandler.php b/composer/vendor/composer/xdebug-handler/src/XdebugHandler.php deleted file mode 100644 index 4e9fd1be3..000000000 --- a/composer/vendor/composer/xdebug-handler/src/XdebugHandler.php +++ /dev/null @@ -1,668 +0,0 @@ -envAllowXdebug = self::$name.self::SUFFIX_ALLOW; -$this->envOriginalInis = self::$name.self::SUFFIX_INIS; - -self::setXdebugDetails(); -self::$inRestart = false; - -if ($this->cli = PHP_SAPI === 'cli') { -$this->debug = (string) getenv(self::DEBUG); -} - -$this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug); -} - - - - -public function setLogger(LoggerInterface $logger): self -{ -$this->statusWriter->setLogger($logger); -return $this; -} - - - - -public function setMainScript(string $script): self -{ -$this->script = $script; -return $this; -} - - - - -public function setPersistent(): self -{ -$this->persistent = true; -return $this; -} - - - - - - - - -public function check(): void -{ -$this->notify(Status::CHECK, self::$xdebugVersion.'|'.self::$xdebugMode); -$envArgs = explode('|', (string) getenv($this->envAllowXdebug)); - -if (!((bool) $envArgs[0]) && $this->requiresRestart(self::$xdebugActive)) { - -$this->notify(Status::RESTART); - -if ($this->prepareRestart()) { -$command = $this->getCommand(); -$this->restart($command); -} -return; -} - -if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) { - -$this->notify(Status::RESTARTED); - -Process::setEnv($this->envAllowXdebug); -self::$inRestart = true; - -if (self::$xdebugVersion === null) { - -self::$skipped = $envArgs[1]; -} - -$this->tryEnableSignals(); - - -$this->setEnvRestartSettings($envArgs); -return; -} - -$this->notify(Status::NORESTART); -$settings = self::getRestartSettings(); - -if ($settings !== null) { - -$this->syncSettings($settings); -} -} - - - - - - - - - -public static function getAllIniFiles(): array -{ -if (self::$name !== null) { -$env = getenv(self::$name.self::SUFFIX_INIS); - -if (false !== $env) { -return explode(PATH_SEPARATOR, $env); -} -} - -$paths = [(string) php_ini_loaded_file()]; -$scanned = php_ini_scanned_files(); - -if ($scanned !== false) { -$paths = array_merge($paths, array_map('trim', explode(',', $scanned))); -} - -return $paths; -} - - - - - - - - - -public static function getRestartSettings(): ?array -{ -$envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS)); - -if (count($envArgs) !== 6 -|| (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) { -return null; -} - -return [ -'tmpIni' => $envArgs[0], -'scannedInis' => (bool) $envArgs[1], -'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2], -'phprc' => '*' === $envArgs[3] ? false : $envArgs[3], -'inis' => explode(PATH_SEPARATOR, $envArgs[4]), -'skipped' => $envArgs[5], -]; -} - - - - -public static function getSkippedVersion(): string -{ -return (string) self::$skipped; -} - - - - - - - -public static function isXdebugActive(): bool -{ -self::setXdebugDetails(); -return self::$xdebugActive; -} - - - - - - -protected function requiresRestart(bool $default): bool -{ -return $default; -} - - - - - - -protected function restart(array $command): void -{ -$this->doRestart($command); -} - - - - - - - -private function doRestart(array $command): void -{ -$this->tryEnableSignals(); -$this->notify(Status::RESTARTING, implode(' ', $command)); - -if (PHP_VERSION_ID >= 70400) { -$cmd = $command; -} else { -$cmd = Process::escapeShellCommand($command); -if (defined('PHP_WINDOWS_VERSION_BUILD')) { - -$cmd = '"'.$cmd.'"'; -} -} - -$process = proc_open($cmd, [], $pipes); -if (is_resource($process)) { -$exitCode = proc_close($process); -} - -if (!isset($exitCode)) { - -$this->notify(Status::ERROR, 'Unable to restart process'); -$exitCode = -1; -} else { -$this->notify(Status::INFO, 'Restarted process exited '.$exitCode); -} - -if ($this->debug === '2') { -$this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni); -} else { -@unlink((string) $this->tmpIni); -} - -exit($exitCode); -} - - - - - - - - - -private function prepareRestart(): bool -{ -$error = null; -$iniFiles = self::getAllIniFiles(); -$scannedInis = count($iniFiles) > 1; -$tmpDir = sys_get_temp_dir(); - -if (!$this->cli) { -$error = 'Unsupported SAPI: '.PHP_SAPI; -} elseif (!$this->checkConfiguration($info)) { -$error = $info; -} elseif (!$this->checkMainScript()) { -$error = 'Unable to access main script: '.$this->script; -} elseif (!$this->writeTmpIni($iniFiles, $tmpDir, $error)) { -$error = $error !== null ? $error : 'Unable to create temp ini file at: '.$tmpDir; -} elseif (!$this->setEnvironment($scannedInis, $iniFiles)) { -$error = 'Unable to set environment variables'; -} - -if ($error !== null) { -$this->notify(Status::ERROR, $error); -} - -return $error === null; -} - - - - - - -private function writeTmpIni(array $iniFiles, string $tmpDir, ?string &$error): bool -{ -if (($tmpfile = @tempnam($tmpDir, '')) === false) { -return false; -} - -$this->tmpIni = $tmpfile; - - -if ($iniFiles[0] === '') { -array_shift($iniFiles); -} - -$content = ''; -$sectionRegex = '/^\s*\[(?:PATH|HOST)\s*=/mi'; -$xdebugRegex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi'; - -foreach ($iniFiles as $file) { - -if (($data = @file_get_contents($file)) === false) { -$error = 'Unable to read ini: '.$file; -return false; -} - -if (Preg::isMatchWithOffsets($sectionRegex, $data, $matches, PREG_OFFSET_CAPTURE)) { -$data = substr($data, 0, $matches[0][1]); -} -$content .= Preg::replace($xdebugRegex, ';$1', $data).PHP_EOL; -} - - -$config = parse_ini_string($content); -$loaded = ini_get_all(null, false); - -if (false === $config || false === $loaded) { -$error = 'Unable to parse ini data'; -return false; -} - -$content .= $this->mergeLoadedConfig($loaded, $config); - - -$content .= 'opcache.enable_cli=0'.PHP_EOL; - -return (bool) @file_put_contents($this->tmpIni, $content); -} - - - - - - -private function getCommand(): array -{ -$php = [PHP_BINARY]; -$args = array_slice($_SERVER['argv'], 1); - -if (!$this->persistent) { - -array_push($php, '-n', '-c', $this->tmpIni); -} - -return array_merge($php, [$this->script], $args); -} - - - - - - - - -private function setEnvironment(bool $scannedInis, array $iniFiles): bool -{ -$scanDir = getenv('PHP_INI_SCAN_DIR'); -$phprc = getenv('PHPRC'); - - -if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) { -return false; -} - -if ($this->persistent) { - -if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$this->tmpIni)) { -return false; -} -} - - -$envArgs = [ -self::RESTART_ID, -self::$xdebugVersion, -(int) $scannedInis, -false === $scanDir ? '*' : $scanDir, -false === $phprc ? '*' : $phprc, -]; - -return putenv($this->envAllowXdebug.'='.implode('|', $envArgs)); -} - - - - -private function notify(string $op, ?string $data = null): void -{ -$this->statusWriter->report($op, $data); -} - - - - - - - - -private function mergeLoadedConfig(array $loadedConfig, array $iniConfig): string -{ -$content = ''; - -foreach ($loadedConfig as $name => $value) { - -if (!is_string($value) -|| strpos($name, 'xdebug') === 0 -|| $name === 'apc.mmap_file_mask') { -continue; -} - -if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { - -$content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL; -} -} - -return $content; -} - - - - -private function checkMainScript(): bool -{ -if ($this->script !== null) { - -return file_exists($this->script) || '--' === $this->script; -} - -if (file_exists($this->script = $_SERVER['argv'][0])) { -return true; -} - - -$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); -$main = end($trace); - -if ($main !== false && isset($main['file'])) { -return file_exists($this->script = $main['file']); -} - -return false; -} - - - - - - -private function setEnvRestartSettings(array $envArgs): void -{ -$settings = [ -php_ini_loaded_file(), -$envArgs[2], -$envArgs[3], -$envArgs[4], -getenv($this->envOriginalInis), -self::$skipped, -]; - -Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings)); -} - - - - - - -private function syncSettings(array $settings): void -{ -if (false === getenv($this->envOriginalInis)) { - -Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis'])); -} - -self::$skipped = $settings['skipped']; -$this->notify(Status::INFO, 'Process called with existing restart settings'); -} - - - - -private function checkConfiguration(?string &$info): bool -{ -if (!function_exists('proc_open')) { -$info = 'proc_open function is disabled'; -return false; -} - -if (extension_loaded('uopz') && !((bool) ini_get('uopz.disable'))) { - -if (function_exists('uopz_allow_exit')) { -@uopz_allow_exit(true); -} else { -$info = 'uopz extension is not compatible'; -return false; -} -} - - -if (defined('PHP_WINDOWS_VERSION_BUILD') && PHP_VERSION_ID < 70400) { -$workingDir = getcwd(); - -if ($workingDir === false) { -$info = 'unable to determine working directory'; -return false; -} - -if (0 === strpos($workingDir, '\\\\')) { -$info = 'cmd.exe does not support UNC paths: '.$workingDir; -return false; -} -} - -return true; -} - - - - - - -private function tryEnableSignals(): void -{ -if (function_exists('pcntl_async_signals') && function_exists('pcntl_signal')) { -pcntl_async_signals(true); -$message = 'Async signals enabled'; - -if (!self::$inRestart) { - -pcntl_signal(SIGINT, SIG_IGN); -} elseif (is_int(pcntl_signal_get_handler(SIGINT))) { - -pcntl_signal(SIGINT, SIG_DFL); -} -} - -if (!self::$inRestart && function_exists('sapi_windows_set_ctrl_handler')) { - - - -sapi_windows_set_ctrl_handler(function ($evt) {}); -} -} - - - - -private static function setXdebugDetails(): void -{ -if (self::$xdebugActive !== null) { -return; -} - -self::$xdebugActive = false; -if (!extension_loaded('xdebug')) { -return; -} - -$version = phpversion('xdebug'); -self::$xdebugVersion = $version !== false ? $version : 'unknown'; - -if (version_compare(self::$xdebugVersion, '3.1', '>=')) { -$modes = xdebug_info('mode'); -self::$xdebugMode = count($modes) === 0 ? 'off' : implode(',', $modes); -self::$xdebugActive = self::$xdebugMode !== 'off'; -return; -} - - -$iniMode = ini_get('xdebug.mode'); -if ($iniMode === false) { -self::$xdebugActive = true; -return; -} - - -$envMode = (string) getenv('XDEBUG_MODE'); -if ($envMode !== '') { -self::$xdebugMode = $envMode; -} else { -self::$xdebugMode = $iniMode !== '' ? $iniMode : 'off'; -} - - -if (Preg::isMatch('/^,+$/', str_replace(' ', '', self::$xdebugMode))) { -self::$xdebugMode = 'off'; -} - -self::$xdebugActive = self::$xdebugMode !== 'off'; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/LICENSE b/composer/vendor/justinrainbow/json-schema/LICENSE deleted file mode 100644 index 7029069d1..000000000 --- a/composer/vendor/justinrainbow/json-schema/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - -MIT License - -Copyright (c) 2016 - -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/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php deleted file mode 100644 index 049a216d3..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php +++ /dev/null @@ -1,148 +0,0 @@ -factory = $factory ?: new Factory(); -} - -public function addError(JsonPointer $path = null, $message, $constraint = '', array $more = null) -{ -$error = array( -'property' => $this->convertJsonPointerIntoPropertyPath($path ?: new JsonPointer('')), -'pointer' => ltrim(strval($path ?: new JsonPointer('')), '#'), -'message' => $message, -'constraint' => $constraint, -'context' => $this->factory->getErrorContext(), -); - -if ($this->factory->getConfig(Constraint::CHECK_MODE_EXCEPTIONS)) { -throw new ValidationException(sprintf('Error validating %s: %s', $error['pointer'], $error['message'])); -} - -if (is_array($more) && count($more) > 0) { -$error += $more; -} - -$this->errors[] = $error; -$this->errorMask |= $error['context']; -} - -public function addErrors(array $errors) -{ -if ($errors) { -$this->errors = array_merge($this->errors, $errors); -$errorMask = &$this->errorMask; -array_walk($errors, function ($error) use (&$errorMask) { -if (isset($error['context'])) { -$errorMask |= $error['context']; -} -}); -} -} - -public function getErrors($errorContext = Validator::ERROR_ALL) -{ -if ($errorContext === Validator::ERROR_ALL) { -return $this->errors; -} - -return array_filter($this->errors, function ($error) use ($errorContext) { -if ($errorContext & $error['context']) { -return true; -} -}); -} - -public function numErrors($errorContext = Validator::ERROR_ALL) -{ -if ($errorContext === Validator::ERROR_ALL) { -return count($this->errors); -} - -return count($this->getErrors($errorContext)); -} - -public function isValid() -{ -return !$this->getErrors(); -} - - - - - -public function reset() -{ -$this->errors = array(); -$this->errorMask = Validator::ERROR_NONE; -} - - - - - - -public function getErrorMask() -{ -return $this->errorMask; -} - - - - - - - - -public static function arrayToObjectRecursive($array) -{ -$json = json_encode($array); -if (json_last_error() !== \JSON_ERROR_NONE) { -$message = 'Unable to encode schema array as JSON'; -if (function_exists('json_last_error_msg')) { -$message .= ': ' . json_last_error_msg(); -} -throw new InvalidArgumentException($message); -} - -return (object) json_decode($json); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php deleted file mode 100644 index 99ccee4f7..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php +++ /dev/null @@ -1,121 +0,0 @@ -minItems) && count($value) < $schema->minItems) { -$this->addError($path, 'There must be a minimum of ' . $schema->minItems . ' items in the array', 'minItems', array('minItems' => $schema->minItems)); -} - - -if (isset($schema->maxItems) && count($value) > $schema->maxItems) { -$this->addError($path, 'There must be a maximum of ' . $schema->maxItems . ' items in the array', 'maxItems', array('maxItems' => $schema->maxItems)); -} - - -if (isset($schema->uniqueItems) && $schema->uniqueItems) { -$unique = $value; -if (is_array($value) && count($value)) { -$unique = array_map(function ($e) { -return var_export($e, true); -}, $value); -} -if (count(array_unique($unique)) != count($value)) { -$this->addError($path, 'There are no duplicates allowed in the array', 'uniqueItems'); -} -} - - -if (isset($schema->items)) { -$this->validateItems($value, $schema, $path, $i); -} -} - - - - - - - - - -protected function validateItems(&$value, $schema = null, JsonPointer $path = null, $i = null) -{ -if (is_object($schema->items)) { - -foreach ($value as $k => &$v) { -$initErrors = $this->getErrors(); - - -$this->checkUndefined($v, $schema->items, $path, $k); - - -if (count($initErrors) < count($this->getErrors()) && (isset($schema->additionalItems) && $schema->additionalItems !== false)) { -$secondErrors = $this->getErrors(); -$this->checkUndefined($v, $schema->additionalItems, $path, $k); -} - - -if (isset($secondErrors) && count($secondErrors) < count($this->getErrors())) { -$this->errors = $secondErrors; -} elseif (isset($secondErrors) && count($secondErrors) === count($this->getErrors())) { -$this->errors = $initErrors; -} -} -unset($v); - -} else { - -foreach ($value as $k => &$v) { -if (array_key_exists($k, $schema->items)) { -$this->checkUndefined($v, $schema->items[$k], $path, $k); -} else { - -if (property_exists($schema, 'additionalItems')) { -if ($schema->additionalItems !== false) { -$this->checkUndefined($v, $schema->additionalItems, $path, $k); -} else { -$this->addError( -$path, 'The item ' . $i . '[' . $k . '] is not defined and the definition does not allow additional items', 'additionalItems', array('additionalItems' => $schema->additionalItems)); -} -} else { - -$this->checkUndefined($v, new \stdClass(), $path, $k); -} -} -} -unset($v); - - - -if (count($value) > 0) { -for ($k = count($value); $k < count($schema->items); $k++) { -$undefinedInstance = $this->factory->createInstanceFor('undefined'); -$this->checkUndefined($undefinedInstance, $schema->items[$k], $path, $k); -} -} -} -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php deleted file mode 100644 index ce91138de..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php +++ /dev/null @@ -1,218 +0,0 @@ -withPropertyPaths( -array_merge( -$path->getPropertyPaths(), -array($i) -) -); - -return $path; -} - - - - - - - - - -protected function checkArray(&$value, $schema = null, JsonPointer $path = null, $i = null) -{ -$validator = $this->factory->createInstanceFor('collection'); -$validator->check($value, $schema, $path, $i); - -$this->addErrors($validator->getErrors()); -} - - - - - - - - - - - -protected function checkObject(&$value, $schema = null, JsonPointer $path = null, $properties = null, -$additionalProperties = null, $patternProperties = null, $appliedDefaults = array()) -{ -$validator = $this->factory->createInstanceFor('object'); -$validator->check($value, $schema, $path, $properties, $additionalProperties, $patternProperties, $appliedDefaults); - -$this->addErrors($validator->getErrors()); -} - - - - - - - - - -protected function checkType(&$value, $schema = null, JsonPointer $path = null, $i = null) -{ -$validator = $this->factory->createInstanceFor('type'); -$validator->check($value, $schema, $path, $i); - -$this->addErrors($validator->getErrors()); -} - - - - - - - - - -protected function checkUndefined(&$value, $schema = null, JsonPointer $path = null, $i = null, $fromDefault = false) -{ -$validator = $this->factory->createInstanceFor('undefined'); - -$validator->check($value, $this->factory->getSchemaStorage()->resolveRefSchema($schema), $path, $i, $fromDefault); - -$this->addErrors($validator->getErrors()); -} - - - - - - - - - -protected function checkString($value, $schema = null, JsonPointer $path = null, $i = null) -{ -$validator = $this->factory->createInstanceFor('string'); -$validator->check($value, $schema, $path, $i); - -$this->addErrors($validator->getErrors()); -} - - - - - - - - - -protected function checkNumber($value, $schema = null, JsonPointer $path = null, $i = null) -{ -$validator = $this->factory->createInstanceFor('number'); -$validator->check($value, $schema, $path, $i); - -$this->addErrors($validator->getErrors()); -} - - - - - - - - - -protected function checkEnum($value, $schema = null, JsonPointer $path = null, $i = null) -{ -$validator = $this->factory->createInstanceFor('enum'); -$validator->check($value, $schema, $path, $i); - -$this->addErrors($validator->getErrors()); -} - - - - - - - - - -protected function checkFormat($value, $schema = null, JsonPointer $path = null, $i = null) -{ -$validator = $this->factory->createInstanceFor('format'); -$validator->check($value, $schema, $path, $i); - -$this->addErrors($validator->getErrors()); -} - - - - - - -protected function getTypeCheck() -{ -return $this->factory->getTypeCheck(); -} - - - - - - -protected function convertJsonPointerIntoPropertyPath(JsonPointer $pointer) -{ -$result = array_map( -function ($path) { -return sprintf(is_numeric($path) ? '[%d]' : '.%s', $path); -}, -$pointer->getPropertyPaths() -); - -return trim(implode('', $result), '.'); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php deleted file mode 100644 index 9d4907d9c..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php +++ /dev/null @@ -1,65 +0,0 @@ -required) || !$schema->required)) { -return; -} -$type = gettype($element); - -foreach ($schema->enum as $enum) { -$enumType = gettype($enum); -if ($this->factory->getConfig(self::CHECK_MODE_TYPE_CAST) && $type == 'array' && $enumType == 'object') { -if ((object) $element == $enum) { -return; -} -} - -if ($type === gettype($enum)) { -if ($type == 'object') { -if ($element == $enum) { -return; -} -} elseif ($element === $enum) { -return; -} -} -} - -$this->addError($path, 'Does not have a value in the enumeration ' . json_encode($schema->enum), 'enum', array('enum' => $schema->enum)); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php deleted file mode 100644 index 0349ed49d..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php +++ /dev/null @@ -1,220 +0,0 @@ - 'JsonSchema\Constraints\CollectionConstraint', -'collection' => 'JsonSchema\Constraints\CollectionConstraint', -'object' => 'JsonSchema\Constraints\ObjectConstraint', -'type' => 'JsonSchema\Constraints\TypeConstraint', -'undefined' => 'JsonSchema\Constraints\UndefinedConstraint', -'string' => 'JsonSchema\Constraints\StringConstraint', -'number' => 'JsonSchema\Constraints\NumberConstraint', -'enum' => 'JsonSchema\Constraints\EnumConstraint', -'format' => 'JsonSchema\Constraints\FormatConstraint', -'schema' => 'JsonSchema\Constraints\SchemaConstraint', -'validator' => 'JsonSchema\Validator' -); - - - - -private $instanceCache = array(); - - - - - - -public function __construct( -SchemaStorageInterface $schemaStorage = null, -UriRetrieverInterface $uriRetriever = null, -$checkMode = Constraint::CHECK_MODE_NORMAL -) { - -$this->setConfig($checkMode); - -$this->uriRetriever = $uriRetriever ?: new UriRetriever(); -$this->schemaStorage = $schemaStorage ?: new SchemaStorage($this->uriRetriever); -} - - - - - - -public function setConfig($checkMode = Constraint::CHECK_MODE_NORMAL) -{ -$this->checkMode = $checkMode; -} - - - - - - -public function addConfig($options) -{ -$this->checkMode |= $options; -} - - - - - - -public function removeConfig($options) -{ -$this->checkMode &= ~$options; -} - - - - - - - - -public function getConfig($options = null) -{ -if ($options === null) { -return $this->checkMode; -} - -return $this->checkMode & $options; -} - - - - -public function getUriRetriever() -{ -return $this->uriRetriever; -} - -public function getSchemaStorage() -{ -return $this->schemaStorage; -} - -public function getTypeCheck() -{ -if (!isset($this->typeCheck[$this->checkMode])) { -$this->typeCheck[$this->checkMode] = ($this->checkMode & Constraint::CHECK_MODE_TYPE_CAST) -? new TypeCheck\LooseTypeCheck() -: new TypeCheck\StrictTypeCheck(); -} - -return $this->typeCheck[$this->checkMode]; -} - - - - - - - -public function setConstraintClass($name, $class) -{ - -if (!class_exists($class)) { -throw new InvalidArgumentException('Unknown constraint ' . $name); -} - -if (!in_array('JsonSchema\Constraints\ConstraintInterface', class_implements($class))) { -throw new InvalidArgumentException('Invalid class ' . $name); -} -$this->constraintMap[$name] = $class; - -return $this; -} - - - - - - - - - - -public function createInstanceFor($constraintName) -{ -if (!isset($this->constraintMap[$constraintName])) { -throw new InvalidArgumentException('Unknown constraint ' . $constraintName); -} - -if (!isset($this->instanceCache[$constraintName])) { -$this->instanceCache[$constraintName] = new $this->constraintMap[$constraintName]($this); -} - -return clone $this->instanceCache[$constraintName]; -} - - - - - - -public function getErrorContext() -{ -return $this->errorContext; -} - - - - - - -public function setErrorContext($errorContext) -{ -$this->errorContext = $errorContext; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php deleted file mode 100644 index e449fa820..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php +++ /dev/null @@ -1,214 +0,0 @@ -format) || $this->factory->getConfig(self::CHECK_MODE_DISABLE_FORMAT)) { -return; -} - -switch ($schema->format) { -case 'date': -if (!$date = $this->validateDateTime($element, 'Y-m-d')) { -$this->addError($path, sprintf('Invalid date %s, expected format YYYY-MM-DD', json_encode($element)), 'format', array('format' => $schema->format)); -} -break; - -case 'time': -if (!$this->validateDateTime($element, 'H:i:s')) { -$this->addError($path, sprintf('Invalid time %s, expected format hh:mm:ss', json_encode($element)), 'format', array('format' => $schema->format)); -} -break; - -case 'date-time': -if (null === Rfc3339::createFromString($element)) { -$this->addError($path, sprintf('Invalid date-time %s, expected format YYYY-MM-DDThh:mm:ssZ or YYYY-MM-DDThh:mm:ss+hh:mm', json_encode($element)), 'format', array('format' => $schema->format)); -} -break; - -case 'utc-millisec': -if (!$this->validateDateTime($element, 'U')) { -$this->addError($path, sprintf('Invalid time %s, expected integer of milliseconds since Epoch', json_encode($element)), 'format', array('format' => $schema->format)); -} -break; - -case 'regex': -if (!$this->validateRegex($element)) { -$this->addError($path, 'Invalid regex format ' . $element, 'format', array('format' => $schema->format)); -} -break; - -case 'color': -if (!$this->validateColor($element)) { -$this->addError($path, 'Invalid color', 'format', array('format' => $schema->format)); -} -break; - -case 'style': -if (!$this->validateStyle($element)) { -$this->addError($path, 'Invalid style', 'format', array('format' => $schema->format)); -} -break; - -case 'phone': -if (!$this->validatePhone($element)) { -$this->addError($path, 'Invalid phone number', 'format', array('format' => $schema->format)); -} -break; - -case 'uri': -if (null === filter_var($element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE)) { -$this->addError($path, 'Invalid URL format', 'format', array('format' => $schema->format)); -} -break; - -case 'uriref': -case 'uri-reference': -if (null === filter_var($element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE)) { - - - -if (substr($element, 0, 2) === '//') { -$validURL = filter_var('scheme:' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); -} elseif (substr($element, 0, 1) === '/') { -$validURL = filter_var('scheme://host' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); -} elseif (strlen($element)) { -$pathParts = explode('/', $element, 2); -if (strpos($pathParts[0], ':') !== false) { -$validURL = null; -} else { -$validURL = filter_var('scheme://host/' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); -} -} else { -$validURL = null; -} -if ($validURL === null) { -$this->addError($path, 'Invalid URL format', 'format', array('format' => $schema->format)); -} -} -break; - -case 'email': -$filterFlags = FILTER_NULL_ON_FAILURE; -if (defined('FILTER_FLAG_EMAIL_UNICODE')) { - -$filterFlags |= constant('FILTER_FLAG_EMAIL_UNICODE'); -} -if (null === filter_var($element, FILTER_VALIDATE_EMAIL, $filterFlags)) { -$this->addError($path, 'Invalid email', 'format', array('format' => $schema->format)); -} -break; - -case 'ip-address': -case 'ipv4': -if (null === filter_var($element, FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE | FILTER_FLAG_IPV4)) { -$this->addError($path, 'Invalid IP address', 'format', array('format' => $schema->format)); -} -break; - -case 'ipv6': -if (null === filter_var($element, FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE | FILTER_FLAG_IPV6)) { -$this->addError($path, 'Invalid IP address', 'format', array('format' => $schema->format)); -} -break; - -case 'host-name': -case 'hostname': -if (!$this->validateHostname($element)) { -$this->addError($path, 'Invalid hostname', 'format', array('format' => $schema->format)); -} -break; - -default: - - - - - - -break; -} -} - -protected function validateDateTime($datetime, $format) -{ -$dt = \DateTime::createFromFormat($format, $datetime); - -if (!$dt) { -return false; -} - -if ($datetime === $dt->format($format)) { -return true; -} - - - - - -if ((strpos('u', $format) !== -1) && (preg_match('/\.\d+Z$/', $datetime))) { -return true; -} - -return false; -} - -protected function validateRegex($regex) -{ -return false !== @preg_match('/' . $regex . '/u', ''); -} - -protected function validateColor($color) -{ -if (in_array(strtolower($color), array('aqua', 'black', 'blue', 'fuchsia', -'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'orange', 'purple', -'red', 'silver', 'teal', 'white', 'yellow'))) { -return true; -} - -return preg_match('/^#([a-f0-9]{3}|[a-f0-9]{6})$/i', $color); -} - -protected function validateStyle($style) -{ -$properties = explode(';', rtrim($style, ';')); -$invalidEntries = preg_grep('/^\s*[-a-z]+\s*:\s*.+$/i', $properties, PREG_GREP_INVERT); - -return empty($invalidEntries); -} - -protected function validatePhone($phone) -{ -return preg_match('/^\+?(\(\d{3}\)|\d{3}) \d{3} \d{4}$/', $phone); -} - -protected function validateHostname($host) -{ -$hostnameRegex = '/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/i'; - -return preg_match($hostnameRegex, $host); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php deleted file mode 100644 index 5f53062cb..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php +++ /dev/null @@ -1,81 +0,0 @@ -exclusiveMinimum)) { -if (isset($schema->minimum)) { -if ($schema->exclusiveMinimum && $element <= $schema->minimum) { -$this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'exclusiveMinimum', array('minimum' => $schema->minimum)); -} elseif ($element < $schema->minimum) { -$this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); -} -} else { -$this->addError($path, 'Use of exclusiveMinimum requires presence of minimum', 'missingMinimum'); -} -} elseif (isset($schema->minimum) && $element < $schema->minimum) { -$this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); -} - - -if (isset($schema->exclusiveMaximum)) { -if (isset($schema->maximum)) { -if ($schema->exclusiveMaximum && $element >= $schema->maximum) { -$this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'exclusiveMaximum', array('maximum' => $schema->maximum)); -} elseif ($element > $schema->maximum) { -$this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); -} -} else { -$this->addError($path, 'Use of exclusiveMaximum requires presence of maximum', 'missingMaximum'); -} -} elseif (isset($schema->maximum) && $element > $schema->maximum) { -$this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); -} - - -if (isset($schema->divisibleBy) && $this->fmod($element, $schema->divisibleBy) != 0) { -$this->addError($path, 'Is not divisible by ' . $schema->divisibleBy, 'divisibleBy', array('divisibleBy' => $schema->divisibleBy)); -} - - -if (isset($schema->multipleOf) && $this->fmod($element, $schema->multipleOf) != 0) { -$this->addError($path, 'Must be a multiple of ' . $schema->multipleOf, 'multipleOf', array('multipleOf' => $schema->multipleOf)); -} - -$this->checkFormat($element, $schema, $path, $i); -} - -private function fmod($number1, $number2) -{ -$modulus = ($number1 - round($number1 / $number2) * $number2); -$precision = 0.0000000001; - -if (-$precision < $modulus && $modulus < $precision) { -return 0.0; -} - -return $modulus; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php deleted file mode 100644 index 4bd152428..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php +++ /dev/null @@ -1,192 +0,0 @@ -appliedDefaults = $appliedDefaults; - -$matches = array(); -if ($patternProperties) { - -$matches = $this->validatePatternProperties($element, $path, $patternProperties); -} - -if ($properties) { - -$this->validateProperties($element, $properties, $path); -} - - -$this->validateElement($element, $matches, $schema, $path, $properties, $additionalProp); -} - -public function validatePatternProperties($element, JsonPointer $path = null, $patternProperties) -{ -$try = array('/', '#', '+', '~', '%'); -$matches = array(); -foreach ($patternProperties as $pregex => $schema) { -$delimiter = '/'; - -foreach ($try as $delimiter) { -if (strpos($pregex, $delimiter) === false) { -break; -} -} - - -if (@preg_match($delimiter . $pregex . $delimiter . 'u', '') === false) { -$this->addError($path, 'The pattern "' . $pregex . '" is invalid', 'pregex', array('pregex' => $pregex)); -continue; -} -foreach ($element as $i => $value) { -if (preg_match($delimiter . $pregex . $delimiter . 'u', $i)) { -$matches[] = $i; -$this->checkUndefined($value, $schema ?: new \stdClass(), $path, $i, in_array($i, $this->appliedDefaults)); -} -} -} - -return $matches; -} - - - - - - - - - - - -public function validateElement($element, $matches, $schema = null, JsonPointer $path = null, -$properties = null, $additionalProp = null) -{ -$this->validateMinMaxConstraint($element, $schema, $path); - -foreach ($element as $i => $value) { -$definition = $this->getProperty($properties, $i); - - -if (!in_array($i, $matches) && $additionalProp === false && $this->inlineSchemaProperty !== $i && !$definition) { -$this->addError($path, 'The property ' . $i . ' is not defined and the definition does not allow additional properties', 'additionalProp'); -} - - -if (!in_array($i, $matches) && $additionalProp && !$definition) { -if ($additionalProp === true) { -$this->checkUndefined($value, null, $path, $i, in_array($i, $this->appliedDefaults)); -} else { -$this->checkUndefined($value, $additionalProp, $path, $i, in_array($i, $this->appliedDefaults)); -} -} - - -$require = $this->getProperty($definition, 'requires'); -if ($require && !$this->getProperty($element, $require)) { -$this->addError($path, 'The presence of the property ' . $i . ' requires that ' . $require . ' also be present', 'requires'); -} - -$property = $this->getProperty($element, $i, $this->factory->createInstanceFor('undefined')); -if (is_object($property)) { -$this->validateMinMaxConstraint(!($property instanceof UndefinedConstraint) ? $property : $element, $definition, $path); -} -} -} - - - - - - - - -public function validateProperties(&$element, $properties = null, JsonPointer $path = null) -{ -$undefinedConstraint = $this->factory->createInstanceFor('undefined'); - -foreach ($properties as $i => $value) { -$property = &$this->getProperty($element, $i, $undefinedConstraint); -$definition = $this->getProperty($properties, $i); - -if (is_object($definition)) { - -$this->checkUndefined($property, $definition, $path, $i, in_array($i, $this->appliedDefaults)); -} -} -} - - - - - - - - - - -protected function &getProperty(&$element, $property, $fallback = null) -{ -if (is_array($element) && (isset($element[$property]) || array_key_exists($property, $element)) ) { -return $element[$property]; -} elseif (is_object($element) && property_exists($element, $property)) { -return $element->$property; -} - -return $fallback; -} - - - - - - - - -protected function validateMinMaxConstraint($element, $objectDefinition, JsonPointer $path = null) -{ - -if (isset($objectDefinition->minProperties) && !is_object($objectDefinition->minProperties)) { -if ($this->getTypeCheck()->propertyCount($element) < $objectDefinition->minProperties) { -$this->addError($path, 'Must contain a minimum of ' . $objectDefinition->minProperties . ' properties', 'minProperties', array('minProperties' => $objectDefinition->minProperties)); -} -} - -if (isset($objectDefinition->maxProperties) && !is_object($objectDefinition->maxProperties)) { -if ($this->getTypeCheck()->propertyCount($element) > $objectDefinition->maxProperties) { -$this->addError($path, 'Must contain no more than ' . $objectDefinition->maxProperties . ' properties', 'maxProperties', array('maxProperties' => $objectDefinition->maxProperties)); -} -} -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php deleted file mode 100644 index 0cdd22a39..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php +++ /dev/null @@ -1,94 +0,0 @@ -getTypeCheck()->propertyExists($element, $this->inlineSchemaProperty)) { - -$validationSchema = $this->getTypeCheck()->propertyGet($element, $this->inlineSchemaProperty); -} else { -throw new InvalidArgumentException('no schema found to verify against'); -} - - -if (is_array($validationSchema)) { -$validationSchema = BaseConstraint::arrayToObjectRecursive($validationSchema); -} - - - -if ($this->factory->getConfig(self::CHECK_MODE_VALIDATE_SCHEMA)) { -if (!$this->getTypeCheck()->isObject($validationSchema)) { -throw new RuntimeException('Cannot validate the schema of a non-object'); -} -if ($this->getTypeCheck()->propertyExists($validationSchema, '$schema')) { -$schemaSpec = $this->getTypeCheck()->propertyGet($validationSchema, '$schema'); -} else { -$schemaSpec = self::DEFAULT_SCHEMA_SPEC; -} - - -$schemaStorage = $this->factory->getSchemaStorage(); -if (!$this->getTypeCheck()->isObject($schemaSpec)) { -$schemaSpec = $schemaStorage->getSchema($schemaSpec); -} - - -$initialErrorCount = $this->numErrors(); -$initialConfig = $this->factory->getConfig(); -$initialContext = $this->factory->getErrorContext(); -$this->factory->removeConfig(self::CHECK_MODE_VALIDATE_SCHEMA | self::CHECK_MODE_APPLY_DEFAULTS); -$this->factory->addConfig(self::CHECK_MODE_TYPE_CAST); -$this->factory->setErrorContext(Validator::ERROR_SCHEMA_VALIDATION); - - -try { -$this->check($validationSchema, $schemaSpec); -} catch (\Exception $e) { -if ($this->factory->getConfig(self::CHECK_MODE_EXCEPTIONS)) { -throw new InvalidSchemaException('Schema did not pass validation', 0, $e); -} -} -if ($this->numErrors() > $initialErrorCount) { -$this->addError($path, 'Schema is not valid', 'schema'); -} - - -$this->factory->setConfig($initialConfig); -$this->factory->setErrorContext($initialContext); -} - - -$this->checkUndefined($element, $validationSchema, $path, $i); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php deleted file mode 100644 index ecfa27213..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php +++ /dev/null @@ -1,60 +0,0 @@ -maxLength) && $this->strlen($element) > $schema->maxLength) { -$this->addError($path, 'Must be at most ' . $schema->maxLength . ' characters long', 'maxLength', array( -'maxLength' => $schema->maxLength, -)); -} - - -if (isset($schema->minLength) && $this->strlen($element) < $schema->minLength) { -$this->addError($path, 'Must be at least ' . $schema->minLength . ' characters long', 'minLength', array( -'minLength' => $schema->minLength, -)); -} - - -if (isset($schema->pattern) && !preg_match('#' . str_replace('#', '\\#', $schema->pattern) . '#u', $element)) { -$this->addError($path, 'Does not match the regex pattern ' . $schema->pattern, 'pattern', array( -'pattern' => $schema->pattern, -)); -} - -$this->checkFormat($element, $schema, $path, $i); -} - -private function strlen($string) -{ -if (extension_loaded('mbstring')) { -return mb_strlen($string, mb_detect_encoding($string)); -} - - -return strlen($string); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php deleted file mode 100644 index da5017f5c..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php +++ /dev/null @@ -1,68 +0,0 @@ -{$property}; -} - -return $value[$property]; -} - -public static function propertySet(&$value, $property, $data) -{ -if (is_object($value)) { -$value->{$property} = $data; -} else { -$value[$property] = $data; -} -} - -public static function propertyExists($value, $property) -{ -if (is_object($value)) { -return property_exists($value, $property); -} - -return array_key_exists($property, $value); -} - -public static function propertyCount($value) -{ -if (is_object($value)) { -return count(get_object_vars($value)); -} - -return count($value); -} - - - - - - - - -private static function isAssociativeArray($arr) -{ -return array_keys($arr) !== range(0, count($arr) - 1); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php deleted file mode 100644 index e6a73d2d3..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php +++ /dev/null @@ -1,40 +0,0 @@ -{$property}; -} - -public static function propertySet(&$value, $property, $data) -{ -$value->{$property} = $data; -} - -public static function propertyExists($value, $property) -{ -return property_exists($value, $property); -} - -public static function propertyCount($value) -{ -if (!is_object($value)) { -return 0; -} - -return count(get_object_vars($value)); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php deleted file mode 100644 index 0d08e2de2..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php +++ /dev/null @@ -1,18 +0,0 @@ - 'an integer', -'number' => 'a number', -'boolean' => 'a boolean', -'object' => 'an object', -'array' => 'an array', -'string' => 'a string', -'null' => 'a null', -'any' => null, -0 => null, -); - - - - -public function check(&$value = null, $schema = null, JsonPointer $path = null, $i = null) -{ -$type = isset($schema->type) ? $schema->type : null; -$isValid = false; -$wording = array(); - -if (is_array($type)) { -$this->validateTypesArray($value, $type, $wording, $isValid, $path); -} elseif (is_object($type)) { -$this->checkUndefined($value, $type, $path); - -return; -} else { -$isValid = $this->validateType($value, $type); -} - -if ($isValid === false) { -if (!is_array($type)) { -$this->validateTypeNameWording($type); -$wording[] = self::$wording[$type]; -} -$this->addError($path, ucwords(gettype($value)) . ' value found, but ' . -$this->implodeWith($wording, ', ', 'or') . ' is required', 'type'); -} -} - - - - - - - - - - - - -protected function validateTypesArray(&$value, array $type, &$validTypesWording, &$isValid, $path) -{ -foreach ($type as $tp) { - - -if (is_object($tp)) { -if (!$isValid) { -$validator = $this->factory->createInstanceFor('type'); -$subSchema = new \stdClass(); -$subSchema->type = $tp; -$validator->check($value, $subSchema, $path, null); -$error = $validator->getErrors(); -$isValid = !(bool) $error; -$validTypesWording[] = self::$wording['object']; -} -} else { -$this->validateTypeNameWording($tp); -$validTypesWording[] = self::$wording[$tp]; -if (!$isValid) { -$isValid = $this->validateType($value, $tp); -} -} -} -} - - - - - - - - - - - - -protected function implodeWith(array $elements, $delimiter = ', ', $listEnd = false) -{ -if ($listEnd === false || !isset($elements[1])) { -return implode($delimiter, $elements); -} -$lastElement = array_slice($elements, -1); -$firsElements = join($delimiter, array_slice($elements, 0, -1)); -$implodedElements = array_merge(array($firsElements), $lastElement); - -return join(" $listEnd ", $implodedElements); -} - - - - - - - - - -protected function validateTypeNameWording($type) -{ -if (!array_key_exists($type, self::$wording)) { -throw new StandardUnexpectedValueException( -sprintf( -'No wording for %s available, expected wordings are: [%s]', -var_export($type, true), -implode(', ', array_filter(self::$wording))) -); -} -} - - - - - - - - - - - -protected function validateType(&$value, $type) -{ - -if (!$type) { -return true; -} - -if ('any' === $type) { -return true; -} - -if ('object' === $type) { -return $this->getTypeCheck()->isObject($value); -} - -if ('array' === $type) { -return $this->getTypeCheck()->isArray($value); -} - -$coerce = $this->factory->getConfig(Constraint::CHECK_MODE_COERCE_TYPES); - -if ('integer' === $type) { -if ($coerce) { -$value = $this->toInteger($value); -} - -return is_int($value); -} - -if ('number' === $type) { -if ($coerce) { -$value = $this->toNumber($value); -} - -return is_numeric($value) && !is_string($value); -} - -if ('boolean' === $type) { -if ($coerce) { -$value = $this->toBoolean($value); -} - -return is_bool($value); -} - -if ('string' === $type) { -return is_string($value); -} - -if ('email' === $type) { -return is_string($value); -} - -if ('null' === $type) { -return is_null($value); -} - -throw new InvalidArgumentException((is_object($value) ? 'object' : $value) . ' is an invalid type for ' . $type); -} - - - - - - - - -protected function toBoolean($value) -{ -if ($value === 'true') { -return true; -} - -if ($value === 'false') { -return false; -} - -return $value; -} - - - - - - - - -protected function toNumber($value) -{ -if (is_numeric($value)) { -return $value + 0; -} - -return $value; -} - -protected function toInteger($value) -{ -if (is_numeric($value) && (int) $value == $value) { -return (int) $value; -} - -return $value; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php deleted file mode 100644 index 4fd490a74..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php +++ /dev/null @@ -1,419 +0,0 @@ -incrementPath($path ?: new JsonPointer(''), $i); -if ($fromDefault) { -$path->setFromDefault(); -} - - -$this->validateCommonProperties($value, $schema, $path, $i); - - -$this->validateOfProperties($value, $schema, $path, ''); - - -$this->validateTypes($value, $schema, $path, $i); -} - - - - - - - - - -public function validateTypes(&$value, $schema, JsonPointer $path, $i = null) -{ - -if ($this->getTypeCheck()->isArray($value)) { -$this->checkArray($value, $schema, $path, $i); -} - - -if (LooseTypeCheck::isObject($value)) { - - -$this->checkObject( -$value, -$schema, -$path, -isset($schema->properties) ? $schema->properties : null, -isset($schema->additionalProperties) ? $schema->additionalProperties : null, -isset($schema->patternProperties) ? $schema->patternProperties : null, -$this->appliedDefaults -); -} - - -if (is_string($value)) { -$this->checkString($value, $schema, $path, $i); -} - - -if (is_numeric($value)) { -$this->checkNumber($value, $schema, $path, $i); -} - - -if (isset($schema->enum)) { -$this->checkEnum($value, $schema, $path, $i); -} -} - - - - - - - - - -protected function validateCommonProperties(&$value, $schema, JsonPointer $path, $i = '') -{ - -if (isset($schema->extends)) { -if (is_string($schema->extends)) { -$schema->extends = $this->validateUri($schema, $schema->extends); -} -if (is_array($schema->extends)) { -foreach ($schema->extends as $extends) { -$this->checkUndefined($value, $extends, $path, $i); -} -} else { -$this->checkUndefined($value, $schema->extends, $path, $i); -} -} - - -if (!$path->fromDefault()) { -$this->applyDefaultValues($value, $schema, $path); -} - - -if ($this->getTypeCheck()->isObject($value)) { -if (!($value instanceof self) && isset($schema->required) && is_array($schema->required)) { - -foreach ($schema->required as $required) { -if (!$this->getTypeCheck()->propertyExists($value, $required)) { -$this->addError( -$this->incrementPath($path ?: new JsonPointer(''), $required), -'The property ' . $required . ' is required', -'required' -); -} -} -} elseif (isset($schema->required) && !is_array($schema->required)) { - -if ($schema->required && $value instanceof self) { -$propertyPaths = $path->getPropertyPaths(); -$propertyName = end($propertyPaths); -$this->addError( -$path, -'The property ' . $propertyName . ' is required', -'required' -); -} -} else { - - -if ($value instanceof self) { -return; -} -} -} - - -if (!($value instanceof self)) { -$this->checkType($value, $schema, $path, $i); -} - - -if (isset($schema->disallow)) { -$initErrors = $this->getErrors(); - -$typeSchema = new \stdClass(); -$typeSchema->type = $schema->disallow; -$this->checkType($value, $typeSchema, $path); - - -if (count($this->getErrors()) == count($initErrors)) { -$this->addError($path, 'Disallowed value was matched', 'disallow'); -} else { -$this->errors = $initErrors; -} -} - -if (isset($schema->not)) { -$initErrors = $this->getErrors(); -$this->checkUndefined($value, $schema->not, $path, $i); - - -if (count($this->getErrors()) == count($initErrors)) { -$this->addError($path, 'Matched a schema which it should not', 'not'); -} else { -$this->errors = $initErrors; -} -} - - -if (isset($schema->dependencies) && $this->getTypeCheck()->isObject($value)) { -$this->validateDependencies($value, $schema->dependencies, $path); -} -} - - - - - - - - - - -private function shouldApplyDefaultValue($requiredOnly, $schema, $name = null, $parentSchema = null) -{ - -if (!$requiredOnly) { -return true; -} - -if ( -$name !== null -&& isset($parentSchema->required) -&& is_array($parentSchema->required) -&& in_array($name, $parentSchema->required) -) { -return true; -} - -if (isset($schema->required) && !is_array($schema->required) && $schema->required) { -return true; -} - -return false; -} - - - - - - - - -protected function applyDefaultValues(&$value, $schema, $path) -{ - -if (!$this->factory->getConfig(self::CHECK_MODE_APPLY_DEFAULTS)) { -return; -} - - -$requiredOnly = $this->factory->getConfig(self::CHECK_MODE_ONLY_REQUIRED_DEFAULTS); -if (isset($schema->properties) && LooseTypeCheck::isObject($value)) { - -foreach ($schema->properties as $currentProperty => $propertyDefinition) { -$propertyDefinition = $this->factory->getSchemaStorage()->resolveRefSchema($propertyDefinition); -if ( -!LooseTypeCheck::propertyExists($value, $currentProperty) -&& property_exists($propertyDefinition, 'default') -&& $this->shouldApplyDefaultValue($requiredOnly, $propertyDefinition, $currentProperty, $schema) -) { - -if (is_object($propertyDefinition->default)) { -LooseTypeCheck::propertySet($value, $currentProperty, clone $propertyDefinition->default); -} else { -LooseTypeCheck::propertySet($value, $currentProperty, $propertyDefinition->default); -} -$this->appliedDefaults[] = $currentProperty; -} -} -} elseif (isset($schema->items) && LooseTypeCheck::isArray($value)) { -$items = array(); -if (LooseTypeCheck::isArray($schema->items)) { -$items = $schema->items; -} elseif (isset($schema->minItems) && count($value) < $schema->minItems) { -$items = array_fill(count($value), $schema->minItems - count($value), $schema->items); -} - -foreach ($items as $currentItem => $itemDefinition) { -$itemDefinition = $this->factory->getSchemaStorage()->resolveRefSchema($itemDefinition); -if ( -!array_key_exists($currentItem, $value) -&& property_exists($itemDefinition, 'default') -&& $this->shouldApplyDefaultValue($requiredOnly, $itemDefinition)) { -if (is_object($itemDefinition->default)) { -$value[$currentItem] = clone $itemDefinition->default; -} else { -$value[$currentItem] = $itemDefinition->default; -} -} -$path->setFromDefault(); -} -} elseif ( -$value instanceof self -&& property_exists($schema, 'default') -&& $this->shouldApplyDefaultValue($requiredOnly, $schema)) { - -$value = is_object($schema->default) ? clone $schema->default : $schema->default; -$path->setFromDefault(); -} -} - - - - - - - - - -protected function validateOfProperties(&$value, $schema, JsonPointer $path, $i = '') -{ - -if ($value instanceof self) { -return; -} - -if (isset($schema->allOf)) { -$isValid = true; -foreach ($schema->allOf as $allOf) { -$initErrors = $this->getErrors(); -$this->checkUndefined($value, $allOf, $path, $i); -$isValid = $isValid && (count($this->getErrors()) == count($initErrors)); -} -if (!$isValid) { -$this->addError($path, 'Failed to match all schemas', 'allOf'); -} -} - -if (isset($schema->anyOf)) { -$isValid = false; -$startErrors = $this->getErrors(); -$caughtException = null; -foreach ($schema->anyOf as $anyOf) { -$initErrors = $this->getErrors(); -try { -$this->checkUndefined($value, $anyOf, $path, $i); -if ($isValid = (count($this->getErrors()) == count($initErrors))) { -break; -} -} catch (ValidationException $e) { -$isValid = false; -} -} -if (!$isValid) { -$this->addError($path, 'Failed to match at least one schema', 'anyOf'); -} else { -$this->errors = $startErrors; -} -} - -if (isset($schema->oneOf)) { -$allErrors = array(); -$matchedSchemas = 0; -$startErrors = $this->getErrors(); -foreach ($schema->oneOf as $oneOf) { -try { -$this->errors = array(); -$this->checkUndefined($value, $oneOf, $path, $i); -if (count($this->getErrors()) == 0) { -$matchedSchemas++; -} -$allErrors = array_merge($allErrors, array_values($this->getErrors())); -} catch (ValidationException $e) { - - -} -} -if ($matchedSchemas !== 1) { -$this->addErrors(array_merge($allErrors, $startErrors)); -$this->addError($path, 'Failed to match exactly one schema', 'oneOf'); -} else { -$this->errors = $startErrors; -} -} -} - - - - - - - - - -protected function validateDependencies($value, $dependencies, JsonPointer $path, $i = '') -{ -foreach ($dependencies as $key => $dependency) { -if ($this->getTypeCheck()->propertyExists($value, $key)) { -if (is_string($dependency)) { - -if (!$this->getTypeCheck()->propertyExists($value, $dependency)) { -$this->addError($path, "$key depends on $dependency and $dependency is missing", 'dependencies'); -} -} elseif (is_array($dependency)) { - -foreach ($dependency as $d) { -if (!$this->getTypeCheck()->propertyExists($value, $d)) { -$this->addError($path, "$key depends on $d and $d is missing", 'dependencies'); -} -} -} elseif (is_object($dependency)) { - -$this->checkUndefined($value, $dependency, $path, $i); -} -} -} -} - -protected function validateUri($schema, $schemaUri = null) -{ -$resolver = new UriResolver(); -$retriever = $this->factory->getUriRetriever(); - -$jsonSchema = null; -if ($resolver->isValid($schemaUri)) { -$schemaId = property_exists($schema, 'id') ? $schema->id : null; -$jsonSchema = $retriever->retrieve($schemaId, $schemaUri); -} - -return $jsonSchema; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php deleted file mode 100644 index 75c43f46d..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php +++ /dev/null @@ -1,161 +0,0 @@ -filename = $splitRef[0]; -if (array_key_exists(1, $splitRef)) { -$this->propertyPaths = $this->decodePropertyPaths($splitRef[1]); -} -} - - - - - - -private function decodePropertyPaths($propertyPathString) -{ -$paths = array(); -foreach (explode('/', trim($propertyPathString, '/')) as $path) { -$path = $this->decodePath($path); -if (is_string($path) && '' !== $path) { -$paths[] = $path; -} -} - -return $paths; -} - - - - -private function encodePropertyPaths() -{ -return array_map( -array($this, 'encodePath'), -$this->getPropertyPaths() -); -} - - - - - - -private function decodePath($path) -{ -return strtr($path, array('~1' => '/', '~0' => '~', '%25' => '%')); -} - - - - - - -private function encodePath($path) -{ -return strtr($path, array('/' => '~1', '~' => '~0', '%' => '%25')); -} - - - - -public function getFilename() -{ -return $this->filename; -} - - - - -public function getPropertyPaths() -{ -return $this->propertyPaths; -} - - - - - - -public function withPropertyPaths(array $propertyPaths) -{ -$new = clone $this; -$new->propertyPaths = $propertyPaths; - -return $new; -} - - - - -public function getPropertyPathAsString() -{ -return rtrim('#/' . implode('/', $this->encodePropertyPaths()), '/'); -} - - - - -public function __toString() -{ -return $this->getFilename() . $this->getPropertyPathAsString(); -} - - - - -public function setFromDefault() -{ -$this->fromDefault = true; -} - - - - - - -public function fromDefault() -{ -return $this->fromDefault; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php deleted file mode 100644 index 439bd277e..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php +++ /dev/null @@ -1,7 +0,0 @@ -object = $object; -} - - - - -public function current() -{ -$this->initialize(); - -return $this->data[$this->position]; -} - - - - -public function next() -{ -$this->initialize(); -$this->position++; -} - - - - -public function key() -{ -$this->initialize(); - -return $this->position; -} - - - - -public function valid() -{ -$this->initialize(); - -return isset($this->data[$this->position]); -} - - - - -public function rewind() -{ -$this->initialize(); -$this->position = 0; -} - - - - -public function count() -{ -$this->initialize(); - -return count($this->data); -} - - - - -private function initialize() -{ -if (!$this->initialized) { -$this->data = $this->buildDataFromObject($this->object); -$this->initialized = true; -} -} - - - - - - -private function buildDataFromObject($object) -{ -$result = array(); - -$stack = new \SplStack(); -$stack->push($object); - -while (!$stack->isEmpty()) { -$current = $stack->pop(); -if (is_object($current)) { -array_push($result, $current); -} - -foreach ($this->getDataFromItem($current) as $propertyName => $propertyValue) { -if (is_object($propertyValue) || is_array($propertyValue)) { -$stack->push($propertyValue); -} -} -} - -return $result; -} - - - - - - -private function getDataFromItem($item) -{ -if (!is_object($item) && !is_array($item)) { -return array(); -} - -return is_object($item) ? get_object_vars($item) : $item; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php deleted file mode 100644 index 7ed61d6cd..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php +++ /dev/null @@ -1,30 +0,0 @@ -uriRetriever = $uriRetriever ?: new UriRetriever(); -$this->uriResolver = $uriResolver ?: new UriResolver(); -} - - - - -public function getUriRetriever() -{ -return $this->uriRetriever; -} - - - - -public function getUriResolver() -{ -return $this->uriResolver; -} - - - - -public function addSchema($id, $schema = null) -{ -if (is_null($schema) && $id !== self::INTERNAL_PROVIDED_SCHEMA_URI) { - - - -$schema = $this->uriRetriever->retrieve($id); -} - - -if (is_array($schema)) { -$schema = BaseConstraint::arrayToObjectRecursive($schema); -} - - - -if (is_object($schema) && property_exists($schema, 'id')) { -if ($schema->id == 'http://json-schema.org/draft-04/schema#') { -$schema->properties->id->format = 'uri-reference'; -} elseif ($schema->id == 'http://json-schema.org/draft-03/schema#') { -$schema->properties->id->format = 'uri-reference'; -$schema->properties->{'$ref'}->format = 'uri-reference'; -} -} - - -$this->expandRefs($schema, $id); - -$this->schemas[$id] = $schema; -} - - - - - - - -private function expandRefs(&$schema, $base = null) -{ -if (!is_object($schema)) { -if (is_array($schema)) { -foreach ($schema as &$member) { -$this->expandRefs($member, $base); -} -} - -return; -} - -if (property_exists($schema, 'id') && is_string($schema->id) && $base != $schema->id) { -$base = $this->uriResolver->resolve($schema->id, $base); -} - -if (property_exists($schema, '$ref') && is_string($schema->{'$ref'})) { -$refPointer = new JsonPointer($this->uriResolver->resolve($schema->{'$ref'}, $base)); -$schema->{'$ref'} = (string) $refPointer; -} - -foreach ($schema as &$member) { -$this->expandRefs($member, $base); -} -} - - - - -public function getSchema($id) -{ -if (!array_key_exists($id, $this->schemas)) { -$this->addSchema($id); -} - -return $this->schemas[$id]; -} - - - - -public function resolveRef($ref) -{ -$jsonPointer = new JsonPointer($ref); - - -$fileName = $jsonPointer->getFilename(); -if (!strlen($fileName)) { -throw new UnresolvableJsonPointerException(sprintf( -"Could not resolve fragment '%s': no file is defined", -$jsonPointer->getPropertyPathAsString() -)); -} - - -$refSchema = $this->getSchema($fileName); -foreach ($jsonPointer->getPropertyPaths() as $path) { -if (is_object($refSchema) && property_exists($refSchema, $path)) { -$refSchema = $this->resolveRefSchema($refSchema->{$path}); -} elseif (is_array($refSchema) && array_key_exists($path, $refSchema)) { -$refSchema = $this->resolveRefSchema($refSchema[$path]); -} else { -throw new UnresolvableJsonPointerException(sprintf( -'File: %s is found, but could not resolve fragment: %s', -$jsonPointer->getFilename(), -$jsonPointer->getPropertyPathAsString() -)); -} -} - -return $refSchema; -} - - - - -public function resolveRefSchema($refSchema) -{ -if (is_object($refSchema) && property_exists($refSchema, '$ref') && is_string($refSchema->{'$ref'})) { -$newSchema = $this->resolveRef($refSchema->{'$ref'}); -$refSchema = (object) (get_object_vars($refSchema) + get_object_vars($newSchema)); -unset($refSchema->{'$ref'}); -} - -return $refSchema; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php deleted file mode 100644 index 4def56b13..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php +++ /dev/null @@ -1,41 +0,0 @@ -contentType; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php deleted file mode 100644 index 53f5a249d..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php +++ /dev/null @@ -1,83 +0,0 @@ -fetchMessageBody($response); -$this->fetchContentType($response); - -curl_close($ch); - -return $this->messageBody; -} - - - - -private function fetchMessageBody($response) -{ -preg_match("/(?:\r\n){2}(.*)$/ms", $response, $match); -$this->messageBody = $match[1]; -} - - - - - - -protected function fetchContentType($response) -{ -if (0 < preg_match("/Content-Type:(\V*)/ims", $response, $match)) { -$this->contentType = trim($match[1]); - -return true; -} - -return false; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php deleted file mode 100644 index 3d810300d..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php +++ /dev/null @@ -1,93 +0,0 @@ -messageBody = $response; -if (!empty($http_response_header)) { - - -$this->fetchContentType($http_response_header); -} else { - -$this->contentType = null; -} - -return $this->messageBody; -} - - - - - - -private function fetchContentType(array $headers) -{ -foreach ($headers as $header) { -if ($this->contentType = self::getContentTypeMatchInHeader($header)) { -return true; -} -} - -return false; -} - - - - - - -protected static function getContentTypeMatchInHeader($header) -{ -if (0 < preg_match("/Content-Type:(\V*)/ims", $header, $match)) { -return trim($match[1]); -} - -return null; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php deleted file mode 100644 index 606daef00..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php +++ /dev/null @@ -1,56 +0,0 @@ -schemas = $schemas; -$this->contentType = $contentType; -} - - - - - - -public function retrieve($uri) -{ -if (!array_key_exists($uri, $this->schemas)) { -throw new \JsonSchema\Exception\ResourceNotFoundException(sprintf( -'The JSON schema "%s" was not found.', -$uri -)); -} - -return $this->schemas[$uri]; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php deleted file mode 100644 index d8cdfa114..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php +++ /dev/null @@ -1,36 +0,0 @@ - $match[2], -'authority' => $match[4], -'path' => $match[5] -); -} -if (7 < count($match)) { -$components['query'] = $match[7]; -} -if (9 < count($match)) { -$components['fragment'] = $match[9]; -} - -return $components; -} - - - - - - - - -public function generate(array $components) -{ -$uri = $components['scheme'] . '://' -. $components['authority'] -. $components['path']; - -if (array_key_exists('query', $components) && strlen($components['query'])) { -$uri .= '?' . $components['query']; -} -if (array_key_exists('fragment', $components)) { -$uri .= '#' . $components['fragment']; -} - -return $uri; -} - - - - -public function resolve($uri, $baseUri = null) -{ - -if ( -!is_null($baseUri) && -!filter_var($baseUri, \FILTER_VALIDATE_URL) && -!preg_match('|^[^/]+://|u', $baseUri) -) { -if (is_file($baseUri)) { -$baseUri = 'file://' . realpath($baseUri); -} elseif (is_dir($baseUri)) { -$baseUri = 'file://' . realpath($baseUri) . '/'; -} else { -$baseUri = 'file://' . getcwd() . '/' . $baseUri; -} -} - -if ($uri == '') { -return $baseUri; -} - -$components = $this->parse($uri); -$path = $components['path']; - -if (!empty($components['scheme'])) { -return $uri; -} -$baseComponents = $this->parse($baseUri); -$basePath = $baseComponents['path']; - -$baseComponents['path'] = self::combineRelativePathWithBasePath($path, $basePath); -if (isset($components['fragment'])) { -$baseComponents['fragment'] = $components['fragment']; -} - -return $this->generate($baseComponents); -} - - - - - - - - - - - -public static function combineRelativePathWithBasePath($relativePath, $basePath) -{ -$relativePath = self::normalizePath($relativePath); -if ($relativePath == '') { -return $basePath; -} -if ($relativePath[0] == '/') { -return $relativePath; -} - -$basePathSegments = explode('/', $basePath); - -preg_match('|^/?(\.\./(?:\./)*)*|', $relativePath, $match); -$numLevelUp = strlen($match[0]) /3 + 1; -if ($numLevelUp >= count($basePathSegments)) { -throw new UriResolverException(sprintf("Unable to resolve URI '%s' from base '%s'", $relativePath, $basePath)); -} - -$basePathSegments = array_slice($basePathSegments, 0, -$numLevelUp); -$path = preg_replace('|^/?(\.\./(\./)*)*|', '', $relativePath); - -return implode('/', $basePathSegments) . '/' . $path; -} - - - - - - - - -private static function normalizePath($path) -{ -$path = preg_replace('|((?parse($uri); - -return !empty($components); -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php deleted file mode 100644 index 6cdfd8911..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php +++ /dev/null @@ -1,349 +0,0 @@ - 'package://dist/schema/json-schema-draft-$1.json' -); - - - - -protected $allowedInvalidContentTypeEndpoints = array( -'http://json-schema.org/', -'https://json-schema.org/' -); - - - - -protected $uriRetriever = null; - - - - - - -private $schemaCache = array(); - - - - - - -public function addInvalidContentTypeEndpoint($endpoint) -{ -$this->allowedInvalidContentTypeEndpoints[] = $endpoint; -} - - - - - - - - - -public function confirmMediaType($uriRetriever, $uri) -{ -$contentType = $uriRetriever->getContentType(); - -if (is_null($contentType)) { - -return; -} - -if (in_array($contentType, array(Validator::SCHEMA_MEDIA_TYPE, 'application/json'))) { -return; -} - -foreach ($this->allowedInvalidContentTypeEndpoints as $endpoint) { -if (strpos($uri, $endpoint) === 0) { -return true; -} -} - -throw new InvalidSchemaMediaTypeException(sprintf('Media type %s expected', Validator::SCHEMA_MEDIA_TYPE)); -} - - - - - - - - - -public function getUriRetriever() -{ -if (is_null($this->uriRetriever)) { -$this->setUriRetriever(new FileGetContents()); -} - -return $this->uriRetriever; -} - - - - - - - - - - - - - - - -public function resolvePointer($jsonSchema, $uri) -{ -$resolver = new UriResolver(); -$parsed = $resolver->parse($uri); -if (empty($parsed['fragment'])) { -return $jsonSchema; -} - -$path = explode('/', $parsed['fragment']); -while ($path) { -$pathElement = array_shift($path); -if (!empty($pathElement)) { -$pathElement = str_replace('~1', '/', $pathElement); -$pathElement = str_replace('~0', '~', $pathElement); -if (!empty($jsonSchema->$pathElement)) { -$jsonSchema = $jsonSchema->$pathElement; -} else { -throw new ResourceNotFoundException( -'Fragment "' . $parsed['fragment'] . '" not found' -. ' in ' . $uri -); -} - -if (!is_object($jsonSchema)) { -throw new ResourceNotFoundException( -'Fragment part "' . $pathElement . '" is no object ' -. ' in ' . $uri -); -} -} -} - -return $jsonSchema; -} - - - - -public function retrieve($uri, $baseUri = null, $translate = true) -{ -$resolver = new UriResolver(); -$resolvedUri = $fetchUri = $resolver->resolve($uri, $baseUri); - - -$arParts = $resolver->parse($resolvedUri); -if (isset($arParts['fragment'])) { -unset($arParts['fragment']); -$fetchUri = $resolver->generate($arParts); -} - - -if ($translate) { -$fetchUri = $this->translate($fetchUri); -} - -$jsonSchema = $this->loadSchema($fetchUri); - - -$jsonSchema = $this->resolvePointer($jsonSchema, $resolvedUri); - -if ($jsonSchema instanceof \stdClass) { -$jsonSchema->id = $resolvedUri; -} - -return $jsonSchema; -} - - - - - - - - - -protected function loadSchema($fetchUri) -{ -if (isset($this->schemaCache[$fetchUri])) { -return $this->schemaCache[$fetchUri]; -} - -$uriRetriever = $this->getUriRetriever(); -$contents = $this->uriRetriever->retrieve($fetchUri); -$this->confirmMediaType($uriRetriever, $fetchUri); -$jsonSchema = json_decode($contents); - -if (JSON_ERROR_NONE < $error = json_last_error()) { -throw new JsonDecodingException($error); -} - -$this->schemaCache[$fetchUri] = $jsonSchema; - -return $jsonSchema; -} - - - - - - - - -public function setUriRetriever(UriRetrieverInterface $uriRetriever) -{ -$this->uriRetriever = $uriRetriever; - -return $this; -} - - - - - - - - -public function parse($uri) -{ -preg_match('|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?|', $uri, $match); - -$components = array(); -if (5 < count($match)) { -$components = array( -'scheme' => $match[2], -'authority' => $match[4], -'path' => $match[5] -); -} - -if (7 < count($match)) { -$components['query'] = $match[7]; -} - -if (9 < count($match)) { -$components['fragment'] = $match[9]; -} - -return $components; -} - - - - - - - - -public function generate(array $components) -{ -$uri = $components['scheme'] . '://' -. $components['authority'] -. $components['path']; - -if (array_key_exists('query', $components)) { -$uri .= $components['query']; -} - -if (array_key_exists('fragment', $components)) { -$uri .= $components['fragment']; -} - -return $uri; -} - - - - - - - - - -public function resolve($uri, $baseUri = null) -{ -$components = $this->parse($uri); -$path = $components['path']; - -if ((array_key_exists('scheme', $components)) && ('http' === $components['scheme'])) { -return $uri; -} - -$baseComponents = $this->parse($baseUri); -$basePath = $baseComponents['path']; - -$baseComponents['path'] = UriResolver::combineRelativePathWithBasePath($path, $basePath); - -return $this->generate($baseComponents); -} - - - - - - -public function isValid($uri) -{ -$components = $this->parse($uri); - -return !empty($components); -} - - - - -public function setTranslation($from, $to) -{ -$this->translationMap[$from] = $to; -} - - - - -public function translate($uri) -{ -foreach ($this->translationMap as $from => $to) { -$uri = preg_replace($from, $to, $uri); -} - - -$uri = preg_replace('|^package://|', sprintf('file://%s/', realpath(__DIR__ . '/../../..')), $uri); - -return $uri; -} -} diff --git a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php b/composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php deleted file mode 100644 index 30d06c2cc..000000000 --- a/composer/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php +++ /dev/null @@ -1,26 +0,0 @@ -factory->getConfig(); -if ($checkMode !== null) { -$this->factory->setConfig($checkMode); -} - - -if (is_object($schema) && property_exists($schema, 'id')) { -$schemaURI = $schema->id; -} else { -$schemaURI = SchemaStorage::INTERNAL_PROVIDED_SCHEMA_URI; -} -$this->factory->getSchemaStorage()->addSchema($schemaURI, $schema); - -$validator = $this->factory->createInstanceFor('schema'); -$validator->check( -$value, -$this->factory->getSchemaStorage()->getSchema($schemaURI) -); - -$this->factory->setConfig($initialCheckMode); - -$this->addErrors(array_unique($validator->getErrors(), SORT_REGULAR)); - -return $validator->getErrorMask(); -} - - - - -public function check($value, $schema) -{ -return $this->validate($value, $schema); -} - - - - -public function coerce(&$value, $schema) -{ -return $this->validate($value, $schema, Constraint::CHECK_MODE_COERCE_TYPES); -} -} diff --git a/composer/vendor/psr/container/LICENSE b/composer/vendor/psr/container/LICENSE deleted file mode 100644 index 307d5a599..000000000 --- a/composer/vendor/psr/container/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2013-2016 container-interop -Copyright (c) 2016 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/composer/vendor/psr/container/src/ContainerExceptionInterface.php b/composer/vendor/psr/container/src/ContainerExceptionInterface.php deleted file mode 100644 index 6126aa164..000000000 --- a/composer/vendor/psr/container/src/ContainerExceptionInterface.php +++ /dev/null @@ -1,10 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); -} - - - - - - - - - - - - -public function alert($message, array $context = array()) -{ -$this->log(LogLevel::ALERT, $message, $context); -} - - - - - - - - - - - -public function critical($message, array $context = array()) -{ -$this->log(LogLevel::CRITICAL, $message, $context); -} - - - - - - - - - - -public function error($message, array $context = array()) -{ -$this->log(LogLevel::ERROR, $message, $context); -} - - - - - - - - - - - - -public function warning($message, array $context = array()) -{ -$this->log(LogLevel::WARNING, $message, $context); -} - - - - - - - - - -public function notice($message, array $context = array()) -{ -$this->log(LogLevel::NOTICE, $message, $context); -} - - - - - - - - - - - -public function info($message, array $context = array()) -{ -$this->log(LogLevel::INFO, $message, $context); -} - - - - - - - - - -public function debug($message, array $context = array()) -{ -$this->log(LogLevel::DEBUG, $message, $context); -} -} diff --git a/composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php deleted file mode 100644 index 67f852d1d..000000000 --- a/composer/vendor/psr/log/Psr/Log/InvalidArgumentException.php +++ /dev/null @@ -1,7 +0,0 @@ -logger = $logger; -} -} diff --git a/composer/vendor/psr/log/Psr/Log/LoggerInterface.php b/composer/vendor/psr/log/Psr/Log/LoggerInterface.php deleted file mode 100644 index a29608db3..000000000 --- a/composer/vendor/psr/log/Psr/Log/LoggerInterface.php +++ /dev/null @@ -1,125 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); -} - - - - - - - - - - - - -public function alert($message, array $context = array()) -{ -$this->log(LogLevel::ALERT, $message, $context); -} - - - - - - - - - - - -public function critical($message, array $context = array()) -{ -$this->log(LogLevel::CRITICAL, $message, $context); -} - - - - - - - - - - -public function error($message, array $context = array()) -{ -$this->log(LogLevel::ERROR, $message, $context); -} - - - - - - - - - - - - -public function warning($message, array $context = array()) -{ -$this->log(LogLevel::WARNING, $message, $context); -} - - - - - - - - - -public function notice($message, array $context = array()) -{ -$this->log(LogLevel::NOTICE, $message, $context); -} - - - - - - - - - - - -public function info($message, array $context = array()) -{ -$this->log(LogLevel::INFO, $message, $context); -} - - - - - - - - - -public function debug($message, array $context = array()) -{ -$this->log(LogLevel::DEBUG, $message, $context); -} - - - - - - - - - - - - -abstract public function log($level, $message, array $context = array()); -} diff --git a/composer/vendor/psr/log/Psr/Log/NullLogger.php b/composer/vendor/psr/log/Psr/Log/NullLogger.php deleted file mode 100644 index 03eb9f5ff..000000000 --- a/composer/vendor/psr/log/Psr/Log/NullLogger.php +++ /dev/null @@ -1,30 +0,0 @@ -assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger()); -} - - - - -public function testLogsAtAllLevels($level, $message) -{ -$logger = $this->getLogger(); -$logger->{$level}($message, array('user' => 'Bob')); -$logger->log($level, $message, array('user' => 'Bob')); - -$expected = array( -$level.' message of level '.$level.' with context: Bob', -$level.' message of level '.$level.' with context: Bob', -); -$this->assertEquals($expected, $this->getLogs()); -} - -public function provideLevelsAndMessages() -{ -return array( -LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'), -LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'), -LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'), -LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'), -LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'), -LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'), -LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'), -LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'), -); -} - - - - -public function testThrowsOnInvalidLevel() -{ -$logger = $this->getLogger(); -$logger->log('invalid level', 'Foo'); -} - -public function testContextReplacement() -{ -$logger = $this->getLogger(); -$logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar')); - -$expected = array('info {Message {nothing} Bob Bar a}'); -$this->assertEquals($expected, $this->getLogs()); -} - -public function testObjectCastToString() -{ -if (method_exists($this, 'createPartialMock')) { -$dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString')); -} else { -$dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString')); -} -$dummy->expects($this->once()) -->method('__toString') -->will($this->returnValue('DUMMY')); - -$this->getLogger()->warning($dummy); - -$expected = array('warning DUMMY'); -$this->assertEquals($expected, $this->getLogs()); -} - -public function testContextCanContainAnything() -{ -$closed = fopen('php://memory', 'r'); -fclose($closed); - -$context = array( -'bool' => true, -'null' => null, -'string' => 'Foo', -'int' => 0, -'float' => 0.5, -'nested' => array('with object' => new DummyTest), -'object' => new \DateTime, -'resource' => fopen('php://memory', 'r'), -'closed' => $closed, -); - -$this->getLogger()->warning('Crazy context data', $context); - -$expected = array('warning Crazy context data'); -$this->assertEquals($expected, $this->getLogs()); -} - -public function testContextExceptionKeyCanBeExceptionOrOtherValues() -{ -$logger = $this->getLogger(); -$logger->warning('Random message', array('exception' => 'oops')); -$logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail'))); - -$expected = array( -'warning Random message', -'critical Uncaught Exception!' -); -$this->assertEquals($expected, $this->getLogs()); -} -} diff --git a/composer/vendor/psr/log/Psr/Log/Test/TestLogger.php b/composer/vendor/psr/log/Psr/Log/Test/TestLogger.php deleted file mode 100644 index 66120a2e7..000000000 --- a/composer/vendor/psr/log/Psr/Log/Test/TestLogger.php +++ /dev/null @@ -1,147 +0,0 @@ - $level, -'message' => $message, -'context' => $context, -]; - -$this->recordsByLevel[$record['level']][] = $record; -$this->records[] = $record; -} - -public function hasRecords($level) -{ -return isset($this->recordsByLevel[$level]); -} - -public function hasRecord($record, $level) -{ -if (is_string($record)) { -$record = ['message' => $record]; -} -return $this->hasRecordThatPasses(function ($rec) use ($record) { -if ($rec['message'] !== $record['message']) { -return false; -} -if (isset($record['context']) && $rec['context'] !== $record['context']) { -return false; -} -return true; -}, $level); -} - -public function hasRecordThatContains($message, $level) -{ -return $this->hasRecordThatPasses(function ($rec) use ($message) { -return strpos($rec['message'], $message) !== false; -}, $level); -} - -public function hasRecordThatMatches($regex, $level) -{ -return $this->hasRecordThatPasses(function ($rec) use ($regex) { -return preg_match($regex, $rec['message']) > 0; -}, $level); -} - -public function hasRecordThatPasses(callable $predicate, $level) -{ -if (!isset($this->recordsByLevel[$level])) { -return false; -} -foreach ($this->recordsByLevel[$level] as $i => $rec) { -if (call_user_func($predicate, $rec, $i)) { -return true; -} -} -return false; -} - -public function __call($method, $args) -{ -if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { -$genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; -$level = strtolower($matches[2]); -if (method_exists($this, $genericMethod)) { -$args[] = $level; -return call_user_func_array([$this, $genericMethod], $args); -} -} -throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); -} - -public function reset() -{ -$this->records = []; -$this->recordsByLevel = []; -} -} diff --git a/composer/vendor/react/promise/LICENSE b/composer/vendor/react/promise/LICENSE deleted file mode 100644 index 1e2c78b9c..000000000 --- a/composer/vendor/react/promise/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ - -The MIT License (MIT) - -Copyright (c) 2012 Jan Sorgalla, Christian Lück, Cees-Jan Kiewiet, Chris Boden - -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/composer/vendor/react/promise/src/CancellablePromiseInterface.php b/composer/vendor/react/promise/src/CancellablePromiseInterface.php deleted file mode 100644 index e01e4b799..000000000 --- a/composer/vendor/react/promise/src/CancellablePromiseInterface.php +++ /dev/null @@ -1,17 +0,0 @@ -started) { -return; -} - -$this->started = true; -$this->drain(); -} - -public function enqueue($cancellable) -{ -if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) { -return; -} - -$length = \array_push($this->queue, $cancellable); - -if ($this->started && 1 === $length) { -$this->drain(); -} -} - -private function drain() -{ -for ($i = key($this->queue); isset($this->queue[$i]); $i++) { -$cancellable = $this->queue[$i]; - -$exception = null; - -try { -$cancellable->cancel(); -} catch (\Throwable $exception) { -} catch (\Exception $exception) { -} - -unset($this->queue[$i]); - -if ($exception) { -throw $exception; -} -} - -$this->queue = []; -} -} diff --git a/composer/vendor/react/promise/src/Deferred.php b/composer/vendor/react/promise/src/Deferred.php deleted file mode 100644 index 20baa845f..000000000 --- a/composer/vendor/react/promise/src/Deferred.php +++ /dev/null @@ -1,65 +0,0 @@ -canceller = $canceller; -} - -public function promise() -{ -if (null === $this->promise) { -$this->promise = new Promise(function ($resolve, $reject, $notify) { -$this->resolveCallback = $resolve; -$this->rejectCallback = $reject; -$this->notifyCallback = $notify; -}, $this->canceller); -$this->canceller = null; -} - -return $this->promise; -} - -public function resolve($value = null) -{ -$this->promise(); - -\call_user_func($this->resolveCallback, $value); -} - -public function reject($reason = null) -{ -$this->promise(); - -\call_user_func($this->rejectCallback, $reason); -} - - - - - -public function notify($update = null) -{ -$this->promise(); - -\call_user_func($this->notifyCallback, $update); -} - - - - - -public function progress($update = null) -{ -$this->notify($update); -} -} diff --git a/composer/vendor/react/promise/src/Exception/LengthException.php b/composer/vendor/react/promise/src/Exception/LengthException.php deleted file mode 100644 index 775c48db6..000000000 --- a/composer/vendor/react/promise/src/Exception/LengthException.php +++ /dev/null @@ -1,7 +0,0 @@ -value = $value; -} - -public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -if (null === $onFulfilled) { -return $this; -} - -try { -return resolve($onFulfilled($this->value)); -} catch (\Throwable $exception) { -return new RejectedPromise($exception); -} catch (\Exception $exception) { -return new RejectedPromise($exception); -} -} - -public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -if (null === $onFulfilled) { -return; -} - -$result = $onFulfilled($this->value); - -if ($result instanceof ExtendedPromiseInterface) { -$result->done(); -} -} - -public function otherwise(callable $onRejected) -{ -return $this; -} - -public function always(callable $onFulfilledOrRejected) -{ -return $this->then(function ($value) use ($onFulfilledOrRejected) { -return resolve($onFulfilledOrRejected())->then(function () use ($value) { -return $value; -}); -}); -} - -public function progress(callable $onProgress) -{ -return $this; -} - -public function cancel() -{ -} -} diff --git a/composer/vendor/react/promise/src/LazyPromise.php b/composer/vendor/react/promise/src/LazyPromise.php deleted file mode 100644 index 11eb52ff7..000000000 --- a/composer/vendor/react/promise/src/LazyPromise.php +++ /dev/null @@ -1,66 +0,0 @@ -factory = $factory; -} - -public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -return $this->promise()->then($onFulfilled, $onRejected, $onProgress); -} - -public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -return $this->promise()->done($onFulfilled, $onRejected, $onProgress); -} - -public function otherwise(callable $onRejected) -{ -return $this->promise()->otherwise($onRejected); -} - -public function always(callable $onFulfilledOrRejected) -{ -return $this->promise()->always($onFulfilledOrRejected); -} - -public function progress(callable $onProgress) -{ -return $this->promise()->progress($onProgress); -} - -public function cancel() -{ -return $this->promise()->cancel(); -} - - - - - -public function promise() -{ -if (null === $this->promise) { -try { -$this->promise = resolve(\call_user_func($this->factory)); -} catch (\Throwable $exception) { -$this->promise = new RejectedPromise($exception); -} catch (\Exception $exception) { -$this->promise = new RejectedPromise($exception); -} -} - -return $this->promise; -} -} diff --git a/composer/vendor/react/promise/src/Promise.php b/composer/vendor/react/promise/src/Promise.php deleted file mode 100644 index e48ffe417..000000000 --- a/composer/vendor/react/promise/src/Promise.php +++ /dev/null @@ -1,256 +0,0 @@ -canceller = $canceller; - - - - -$cb = $resolver; -$resolver = $canceller = null; -$this->call($cb); -} - -public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -if (null !== $this->result) { -return $this->result->then($onFulfilled, $onRejected, $onProgress); -} - -if (null === $this->canceller) { -return new static($this->resolver($onFulfilled, $onRejected, $onProgress)); -} - - - - - - -$parent = $this; -++$parent->requiredCancelRequests; - -return new static( -$this->resolver($onFulfilled, $onRejected, $onProgress), -static function () use (&$parent) { -if (++$parent->cancelRequests >= $parent->requiredCancelRequests) { -$parent->cancel(); -} - -$parent = null; -} -); -} - -public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -if (null !== $this->result) { -return $this->result->done($onFulfilled, $onRejected, $onProgress); -} - -$this->handlers[] = static function (ExtendedPromiseInterface $promise) use ($onFulfilled, $onRejected) { -$promise -->done($onFulfilled, $onRejected); -}; - -if ($onProgress) { -$this->progressHandlers[] = $onProgress; -} -} - -public function otherwise(callable $onRejected) -{ -return $this->then(null, static function ($reason) use ($onRejected) { -if (!_checkTypehint($onRejected, $reason)) { -return new RejectedPromise($reason); -} - -return $onRejected($reason); -}); -} - -public function always(callable $onFulfilledOrRejected) -{ -return $this->then(static function ($value) use ($onFulfilledOrRejected) { -return resolve($onFulfilledOrRejected())->then(function () use ($value) { -return $value; -}); -}, static function ($reason) use ($onFulfilledOrRejected) { -return resolve($onFulfilledOrRejected())->then(function () use ($reason) { -return new RejectedPromise($reason); -}); -}); -} - -public function progress(callable $onProgress) -{ -return $this->then(null, null, $onProgress); -} - -public function cancel() -{ -if (null === $this->canceller || null !== $this->result) { -return; -} - -$canceller = $this->canceller; -$this->canceller = null; - -$this->call($canceller); -} - -private function resolver(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -return function ($resolve, $reject, $notify) use ($onFulfilled, $onRejected, $onProgress) { -if ($onProgress) { -$progressHandler = static function ($update) use ($notify, $onProgress) { -try { -$notify($onProgress($update)); -} catch (\Throwable $e) { -$notify($e); -} catch (\Exception $e) { -$notify($e); -} -}; -} else { -$progressHandler = $notify; -} - -$this->handlers[] = static function (ExtendedPromiseInterface $promise) use ($onFulfilled, $onRejected, $resolve, $reject, $progressHandler) { -$promise -->then($onFulfilled, $onRejected) -->done($resolve, $reject, $progressHandler); -}; - -$this->progressHandlers[] = $progressHandler; -}; -} - -private function reject($reason = null) -{ -if (null !== $this->result) { -return; -} - -$this->settle(reject($reason)); -} - -private function settle(ExtendedPromiseInterface $promise) -{ -$promise = $this->unwrap($promise); - -if ($promise === $this) { -$promise = new RejectedPromise( -new \LogicException('Cannot resolve a promise with itself.') -); -} - -$handlers = $this->handlers; - -$this->progressHandlers = $this->handlers = []; -$this->result = $promise; -$this->canceller = null; - -foreach ($handlers as $handler) { -$handler($promise); -} -} - -private function unwrap($promise) -{ -$promise = $this->extract($promise); - -while ($promise instanceof self && null !== $promise->result) { -$promise = $this->extract($promise->result); -} - -return $promise; -} - -private function extract($promise) -{ -if ($promise instanceof LazyPromise) { -$promise = $promise->promise(); -} - -return $promise; -} - -private function call(callable $cb) -{ - - -$callback = $cb; -$cb = null; - - - - - - -if (\is_array($callback)) { -$ref = new \ReflectionMethod($callback[0], $callback[1]); -} elseif (\is_object($callback) && !$callback instanceof \Closure) { -$ref = new \ReflectionMethod($callback, '__invoke'); -} else { -$ref = new \ReflectionFunction($callback); -} -$args = $ref->getNumberOfParameters(); - -try { -if ($args === 0) { -$callback(); -} else { - - - - - - - - -$target =& $this; -$progressHandlers =& $this->progressHandlers; - -$callback( -static function ($value = null) use (&$target) { -if ($target !== null) { -$target->settle(resolve($value)); -$target = null; -} -}, -static function ($reason = null) use (&$target) { -if ($target !== null) { -$target->reject($reason); -$target = null; -} -}, -static function ($update = null) use (&$progressHandlers) { -foreach ($progressHandlers as $handler) { -$handler($update); -} -} -); -} -} catch (\Throwable $e) { -$target = null; -$this->reject($e); -} catch (\Exception $e) { -$target = null; -$this->reject($e); -} -} -} diff --git a/composer/vendor/react/promise/src/PromiseInterface.php b/composer/vendor/react/promise/src/PromiseInterface.php deleted file mode 100644 index 8070d0841..000000000 --- a/composer/vendor/react/promise/src/PromiseInterface.php +++ /dev/null @@ -1,41 +0,0 @@ -reason = $reason; -} - -public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -if (null === $onRejected) { -return $this; -} - -try { -return resolve($onRejected($this->reason)); -} catch (\Throwable $exception) { -return new RejectedPromise($exception); -} catch (\Exception $exception) { -return new RejectedPromise($exception); -} -} - -public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) -{ -if (null === $onRejected) { -throw UnhandledRejectionException::resolve($this->reason); -} - -$result = $onRejected($this->reason); - -if ($result instanceof self) { -throw UnhandledRejectionException::resolve($result->reason); -} - -if ($result instanceof ExtendedPromiseInterface) { -$result->done(); -} -} - -public function otherwise(callable $onRejected) -{ -if (!_checkTypehint($onRejected, $this->reason)) { -return $this; -} - -return $this->then(null, $onRejected); -} - -public function always(callable $onFulfilledOrRejected) -{ -return $this->then(null, function ($reason) use ($onFulfilledOrRejected) { -return resolve($onFulfilledOrRejected())->then(function () use ($reason) { -return new RejectedPromise($reason); -}); -}); -} - -public function progress(callable $onProgress) -{ -return $this; -} - -public function cancel() -{ -} -} diff --git a/composer/vendor/react/promise/src/UnhandledRejectionException.php b/composer/vendor/react/promise/src/UnhandledRejectionException.php deleted file mode 100644 index 3030491ba..000000000 --- a/composer/vendor/react/promise/src/UnhandledRejectionException.php +++ /dev/null @@ -1,31 +0,0 @@ -reason = $reason; - -$message = \sprintf('Unhandled Rejection: %s', \json_encode($reason)); - -parent::__construct($message, 0); -} - -public function getReason() -{ -return $this->reason; -} -} diff --git a/composer/vendor/react/promise/src/functions.php b/composer/vendor/react/promise/src/functions.php deleted file mode 100644 index 557cb33b1..000000000 --- a/composer/vendor/react/promise/src/functions.php +++ /dev/null @@ -1,407 +0,0 @@ -then($resolve, $reject, $notify); -}, $canceller); -} - -return new FulfilledPromise($promiseOrValue); -} - - - - - - - - - - - - - - - - - -function reject($promiseOrValue = null) -{ -if ($promiseOrValue instanceof PromiseInterface) { -return resolve($promiseOrValue)->then(function ($value) { -return new RejectedPromise($value); -}); -} - -return new RejectedPromise($promiseOrValue); -} - - - - - - - - - - -function all($promisesOrValues) -{ -return map($promisesOrValues, function ($val) { -return $val; -}); -} - - - - - - - - - - - -function race($promisesOrValues) -{ -$cancellationQueue = new CancellationQueue(); -$cancellationQueue->enqueue($promisesOrValues); - -return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $cancellationQueue) { -resolve($promisesOrValues) -->done(function ($array) use ($cancellationQueue, $resolve, $reject, $notify) { -if (!is_array($array) || !$array) { -$resolve(); -return; -} - -foreach ($array as $promiseOrValue) { -$cancellationQueue->enqueue($promiseOrValue); - -resolve($promiseOrValue) -->done($resolve, $reject, $notify); -} -}, $reject, $notify); -}, $cancellationQueue); -} - - - - - - - - - - - - - - - -function any($promisesOrValues) -{ -return some($promisesOrValues, 1) -->then(function ($val) { -return \array_shift($val); -}); -} - - - - - - - - - - - - - - - - - - - -function some($promisesOrValues, $howMany) -{ -$cancellationQueue = new CancellationQueue(); -$cancellationQueue->enqueue($promisesOrValues); - -return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $howMany, $cancellationQueue) { -resolve($promisesOrValues) -->done(function ($array) use ($howMany, $cancellationQueue, $resolve, $reject, $notify) { -if (!\is_array($array) || $howMany < 1) { -$resolve([]); -return; -} - -$len = \count($array); - -if ($len < $howMany) { -throw new Exception\LengthException( -\sprintf( -'Input array must contain at least %d item%s but contains only %s item%s.', -$howMany, -1 === $howMany ? '' : 's', -$len, -1 === $len ? '' : 's' -) -); -} - -$toResolve = $howMany; -$toReject = ($len - $toResolve) + 1; -$values = []; -$reasons = []; - -foreach ($array as $i => $promiseOrValue) { -$fulfiller = function ($val) use ($i, &$values, &$toResolve, $toReject, $resolve) { -if ($toResolve < 1 || $toReject < 1) { -return; -} - -$values[$i] = $val; - -if (0 === --$toResolve) { -$resolve($values); -} -}; - -$rejecter = function ($reason) use ($i, &$reasons, &$toReject, $toResolve, $reject) { -if ($toResolve < 1 || $toReject < 1) { -return; -} - -$reasons[$i] = $reason; - -if (0 === --$toReject) { -$reject($reasons); -} -}; - -$cancellationQueue->enqueue($promiseOrValue); - -resolve($promiseOrValue) -->done($fulfiller, $rejecter, $notify); -} -}, $reject, $notify); -}, $cancellationQueue); -} - - - - - - - - - - - - -function map($promisesOrValues, callable $mapFunc) -{ -$cancellationQueue = new CancellationQueue(); -$cancellationQueue->enqueue($promisesOrValues); - -return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $mapFunc, $cancellationQueue) { -resolve($promisesOrValues) -->done(function ($array) use ($mapFunc, $cancellationQueue, $resolve, $reject, $notify) { -if (!\is_array($array) || !$array) { -$resolve([]); -return; -} - -$toResolve = \count($array); -$values = []; - -foreach ($array as $i => $promiseOrValue) { -$cancellationQueue->enqueue($promiseOrValue); -$values[$i] = null; - -resolve($promiseOrValue) -->then($mapFunc) -->done( -function ($mapped) use ($i, &$values, &$toResolve, $resolve) { -$values[$i] = $mapped; - -if (0 === --$toResolve) { -$resolve($values); -} -}, -$reject, -$notify -); -} -}, $reject, $notify); -}, $cancellationQueue); -} - - - - - - - - - - - - -function reduce($promisesOrValues, callable $reduceFunc, $initialValue = null) -{ -$cancellationQueue = new CancellationQueue(); -$cancellationQueue->enqueue($promisesOrValues); - -return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $reduceFunc, $initialValue, $cancellationQueue) { -resolve($promisesOrValues) -->done(function ($array) use ($reduceFunc, $initialValue, $cancellationQueue, $resolve, $reject, $notify) { -if (!\is_array($array)) { -$array = []; -} - -$total = \count($array); -$i = 0; - - - -$wrappedReduceFunc = function ($current, $val) use ($reduceFunc, $cancellationQueue, $total, &$i) { -$cancellationQueue->enqueue($val); - -return $current -->then(function ($c) use ($reduceFunc, $total, &$i, $val) { -return resolve($val) -->then(function ($value) use ($reduceFunc, $total, &$i, $c) { -return $reduceFunc($c, $value, $i++, $total); -}); -}); -}; - -$cancellationQueue->enqueue($initialValue); - -\array_reduce($array, $wrappedReduceFunc, resolve($initialValue)) -->done($resolve, $reject, $notify); -}, $reject, $notify); -}, $cancellationQueue); -} - - - - -function _checkTypehint(callable $callback, $object) -{ -if (!\is_object($object)) { -return true; -} - -if (\is_array($callback)) { -$callbackReflection = new \ReflectionMethod($callback[0], $callback[1]); -} elseif (\is_object($callback) && !$callback instanceof \Closure) { -$callbackReflection = new \ReflectionMethod($callback, '__invoke'); -} else { -$callbackReflection = new \ReflectionFunction($callback); -} - -$parameters = $callbackReflection->getParameters(); - -if (!isset($parameters[0])) { -return true; -} - -$expectedException = $parameters[0]; - - -if (\PHP_VERSION_ID < 70100 || \defined('HHVM_VERSION')) { -if (!$expectedException->getClass()) { -return true; -} - -return $expectedException->getClass()->isInstance($object); -} - - -$type = $expectedException->getType(); - -$isTypeUnion = true; -$types = []; - -switch (true) { -case $type === null: -break; -case $type instanceof \ReflectionNamedType: -$types = [$type]; -break; -case $type instanceof \ReflectionIntersectionType: -$isTypeUnion = false; -case $type instanceof \ReflectionUnionType; -$types = $type->getTypes(); -break; -default: -throw new \LogicException('Unexpected return value of ReflectionParameter::getType'); -} - - -if (empty($types)) { -return true; -} - -foreach ($types as $type) { -if (!$type instanceof \ReflectionNamedType) { -throw new \LogicException('This implementation does not support groups of intersection or union types'); -} - - -$matches = ($type->isBuiltin() && \gettype($object) === $type->getName()) -|| (new \ReflectionClass($type->getName()))->isInstance($object); - - - - -if ($matches) { -if ($isTypeUnion) { -return true; -} -} else { -if (!$isTypeUnion) { -return false; -} -} -} - - - -return $isTypeUnion ? false : true; -} diff --git a/composer/vendor/react/promise/src/functions_include.php b/composer/vendor/react/promise/src/functions_include.php deleted file mode 100644 index 6d727b631..000000000 --- a/composer/vendor/react/promise/src/functions_include.php +++ /dev/null @@ -1,5 +0,0 @@ -details['key']; -} - - - - -public function getDetails() -{ -return $this->details; -} -} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php deleted file mode 100644 index ace4f022d..000000000 --- a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php +++ /dev/null @@ -1,584 +0,0 @@ - 2, -'JSONString' => 3, -'STRING' => 4, -'JSONNumber' => 5, -'NUMBER' => 6, -'JSONNullLiteral' => 7, -'NULL' => 8, -'JSONBooleanLiteral' => 9, -'TRUE' => 10, -'FALSE' => 11, -'JSONText' => 12, -'JSONValue' => 13, -'EOF' => 14, -'JSONObject' => 15, -'JSONArray' => 16, -'{' => 17, -'}' => 18, -'JSONMemberList' => 19, -'JSONMember' => 20, -':' => 21, -',' => 22, -'[' => 23, -']' => 24, -'JSONElementList' => 25, -'$accept' => 0, -'$end' => 1, -); - - - - - -private $terminals_ = array( -2 => "error", -4 => "STRING", -6 => "NUMBER", -8 => "NULL", -10 => "TRUE", -11 => "FALSE", -14 => "EOF", -17 => "{", -18 => "}", -21 => ":", -22 => ",", -23 => "[", -24 => "]", -); - - - - - -private $productions_ = array( -1 => array(3, 1), -2 => array(5, 1), -3 => array(7, 1), -4 => array(9, 1), -5 => array(9, 1), -6 => array(12, 2), -7 => array(13, 1), -8 => array(13, 1), -9 => array(13, 1), -10 => array(13, 1), -11 => array(13, 1), -12 => array(13, 1), -13 => array(15, 2), -14 => array(15, 3), -15 => array(20, 3), -16 => array(19, 1), -17 => array(19, 3), -18 => array(16, 2), -19 => array(16, 3), -20 => array(25, 1), -21 => array(25, 3) -); - - - - - -private $table = array( -0 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 12 => 1, 13 => 2, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), -1 => array( 1 => array(3)), -2 => array( 14 => array(1,16)), -3 => array( 14 => array(2,7), 18 => array(2,7), 22 => array(2,7), 24 => array(2,7)), -4 => array( 14 => array(2,8), 18 => array(2,8), 22 => array(2,8), 24 => array(2,8)), -5 => array( 14 => array(2,9), 18 => array(2,9), 22 => array(2,9), 24 => array(2,9)), -6 => array( 14 => array(2,10), 18 => array(2,10), 22 => array(2,10), 24 => array(2,10)), -7 => array( 14 => array(2,11), 18 => array(2,11), 22 => array(2,11), 24 => array(2,11)), -8 => array( 14 => array(2,12), 18 => array(2,12), 22 => array(2,12), 24 => array(2,12)), -9 => array( 14 => array(2,3), 18 => array(2,3), 22 => array(2,3), 24 => array(2,3)), -10 => array( 14 => array(2,4), 18 => array(2,4), 22 => array(2,4), 24 => array(2,4)), -11 => array( 14 => array(2,5), 18 => array(2,5), 22 => array(2,5), 24 => array(2,5)), -12 => array( 14 => array(2,1), 18 => array(2,1), 21 => array(2,1), 22 => array(2,1), 24 => array(2,1)), -13 => array( 14 => array(2,2), 18 => array(2,2), 22 => array(2,2), 24 => array(2,2)), -14 => array( 3 => 20, 4 => array(1,12), 18 => array(1,17), 19 => 18, 20 => 19 ), -15 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 23, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15), 24 => array(1,21), 25 => 22 ), -16 => array( 1 => array(2,6)), -17 => array( 14 => array(2,13), 18 => array(2,13), 22 => array(2,13), 24 => array(2,13)), -18 => array( 18 => array(1,24), 22 => array(1,25)), -19 => array( 18 => array(2,16), 22 => array(2,16)), -20 => array( 21 => array(1,26)), -21 => array( 14 => array(2,18), 18 => array(2,18), 22 => array(2,18), 24 => array(2,18)), -22 => array( 22 => array(1,28), 24 => array(1,27)), -23 => array( 22 => array(2,20), 24 => array(2,20)), -24 => array( 14 => array(2,14), 18 => array(2,14), 22 => array(2,14), 24 => array(2,14)), -25 => array( 3 => 20, 4 => array(1,12), 20 => 29 ), -26 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 30, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), -27 => array( 14 => array(2,19), 18 => array(2,19), 22 => array(2,19), 24 => array(2,19)), -28 => array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 31, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), -29 => array( 18 => array(2,17), 22 => array(2,17)), -30 => array( 18 => array(2,15), 22 => array(2,15)), -31 => array( 22 => array(2,21), 24 => array(2,21)), -); - - - - - -private $defaultActions = array( -16 => array(2, 6) -); - - - - - - -public function lint($input, $flags = 0) -{ -try { -$this->parse($input, $flags); -} catch (ParsingException $e) { -return $e; -} -return null; -} - - - - - - - -public function parse($input, $flags = 0) -{ -$this->failOnBOM($input); - -$this->flags = $flags; - -$this->stack = array(0); -$this->vstack = array(null); -$this->lstack = array(); - -$yytext = ''; -$yylineno = 0; -$yyleng = 0; - -$recovering = 0; - -$this->lexer = new Lexer(); -$this->lexer->setInput($input); - -$yyloc = $this->lexer->yylloc; -$this->lstack[] = $yyloc; - -$symbol = null; -$preErrorSymbol = null; -$action = null; -$a = null; -$r = null; -$p = null; -$len = null; -$newState = null; -$expected = null; - -$errStr = null; - -while (true) { - -$state = $this->stack[\count($this->stack)-1]; - - -if (isset($this->defaultActions[$state])) { -$action = $this->defaultActions[$state]; -} else { -if ($symbol === null) { -$symbol = $this->lexer->lex(); -} - - -$action = isset($this->table[$state][$symbol]) ? $this->table[$state][$symbol] : false; -} - - -if (!$action || !$action[0]) { -assert(isset($symbol)); -if (!$recovering) { - -$expected = array(); -foreach ($this->table[$state] as $p => $ignore) { -if (isset($this->terminals_[$p]) && $p > 2) { -$expected[] = "'" . $this->terminals_[$p] . "'"; -} -} - -$message = null; -if (\in_array("'STRING'", $expected) && \in_array(substr($this->lexer->match, 0, 1), array('"', "'"))) { -$message = "Invalid string"; -if ("'" === substr($this->lexer->match, 0, 1)) { -$message .= ", it appears you used single quotes instead of double quotes"; -} elseif (preg_match('{".+?(\\\\[^"bfnrt/\\\\u](...)?)}', $this->lexer->getFullUpcomingInput(), $match)) { -$message .= ", it appears you have an unescaped backslash at: ".$match[1]; -} elseif (preg_match('{"(?:[^"]+|\\\\")*$}m', $this->lexer->getFullUpcomingInput())) { -$message .= ", it appears you forgot to terminate a string, or attempted to write a multiline string which is invalid"; -} -} - -$errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; -$errStr .= $this->lexer->showPosition() . "\n"; -if ($message) { -$errStr .= $message; -} else { -$errStr .= (\count($expected) > 1) ? "Expected one of: " : "Expected: "; -$errStr .= implode(', ', $expected); -} - -if (',' === substr(trim($this->lexer->getPastInput()), -1)) { -$errStr .= " - It appears you have an extra trailing comma"; -} - -$this->parseError($errStr, array( -'text' => $this->lexer->match, -'token' => isset($this->terminals_[$symbol]) ? $this->terminals_[$symbol] : $symbol, -'line' => $this->lexer->yylineno, -'loc' => $yyloc, -'expected' => $expected, -)); -} - - -if ($recovering == 3) { -if ($symbol === Lexer::EOF) { -throw new ParsingException($errStr ?: 'Parsing halted.'); -} - - -$yyleng = $this->lexer->yyleng; -$yytext = $this->lexer->yytext; -$yylineno = $this->lexer->yylineno; -$yyloc = $this->lexer->yylloc; -$symbol = $this->lexer->lex(); -} - - -while (true) { - -if (\array_key_exists(Lexer::T_ERROR, $this->table[$state])) { -break; -} -if ($state == 0) { -throw new ParsingException($errStr ?: 'Parsing halted.'); -} -$this->popStack(1); -$state = $this->stack[\count($this->stack)-1]; -} - -$preErrorSymbol = $symbol; -$symbol = Lexer::T_ERROR; -$state = $this->stack[\count($this->stack)-1]; - -$action = isset($this->table[$state][Lexer::T_ERROR]) ? $this->table[$state][Lexer::T_ERROR] : false; -if ($action === false) { -throw new \LogicException('No table value found for '.$state.' => '.Lexer::T_ERROR); -} -$recovering = 3; -} - - -if (\is_array($action[0]) && \count($action) > 1) { -throw new ParsingException('Parse Error: multiple actions possible at state: ' . $state . ', token: ' . $symbol); -} - -switch ($action[0]) { -case 1: -assert(isset($symbol)); -$this->stack[] = $symbol; -$this->vstack[] = $this->lexer->yytext; -$this->lstack[] = $this->lexer->yylloc; -$this->stack[] = $action[1]; -$symbol = null; -if (!$preErrorSymbol) { -$yyleng = $this->lexer->yyleng; -$yytext = $this->lexer->yytext; -$yylineno = $this->lexer->yylineno; -$yyloc = $this->lexer->yylloc; -if ($recovering > 0) { -$recovering--; -} -} else { -$symbol = $preErrorSymbol; -$preErrorSymbol = null; -} -break; - -case 2: -$len = $this->productions_[$action[1]][1]; - - -$currentToken = $this->vstack[\count($this->vstack) - $len]; - -$position = array( -'first_line' => $this->lstack[\count($this->lstack) - ($len ?: 1)]['first_line'], -'last_line' => $this->lstack[\count($this->lstack) - 1]['last_line'], -'first_column' => $this->lstack[\count($this->lstack) - ($len ?: 1)]['first_column'], -'last_column' => $this->lstack[\count($this->lstack) - 1]['last_column'], -); -list($newToken, $actionResult) = $this->performAction($currentToken, $yytext, $yyleng, $yylineno, $action[1]); - -if (!$actionResult instanceof Undefined) { -return $actionResult; -} - -if ($len) { -$this->popStack($len); -} - -$this->stack[] = $this->productions_[$action[1]][0]; -$this->vstack[] = $newToken; -$this->lstack[] = $position; - -$newState = $this->table[$this->stack[\count($this->stack)-2]][$this->stack[\count($this->stack)-1]]; -$this->stack[] = $newState; -break; - -case 3: - -return true; -} -} -} - - - - - - -protected function parseError($str, $hash = null) -{ -throw new ParsingException($str, $hash ?: array()); -} - - - - - - - - - -private function performAction($currentToken, $yytext, $yyleng, $yylineno, $yystate) -{ -$token = $currentToken; - -$len = \count($this->vstack) - 1; -switch ($yystate) { -case 1: -$yytext = preg_replace_callback('{(?:\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4})}', array($this, 'stringInterpolation'), $yytext); -$token = $yytext; -break; -case 2: -if (strpos($yytext, 'e') !== false || strpos($yytext, 'E') !== false) { -$token = \floatval($yytext); -} else { -$token = strpos($yytext, '.') === false ? \intval($yytext) : \floatval($yytext); -} -break; -case 3: -$token = null; -break; -case 4: -$token = true; -break; -case 5: -$token = false; -break; -case 6: -$token = $this->vstack[$len-1]; - -return array($token, $token); -case 13: -if ($this->flags & self::PARSE_TO_ASSOC) { -$token = array(); -} else { -$token = new stdClass; -} -break; -case 14: -$token = $this->vstack[$len-1]; -break; -case 15: -$token = array($this->vstack[$len-2], $this->vstack[$len]); -break; -case 16: -assert(\is_array($this->vstack[$len])); -if (PHP_VERSION_ID < 70100) { -$property = $this->vstack[$len][0] === '' ? '_empty_' : $this->vstack[$len][0]; -} else { -$property = $this->vstack[$len][0]; -} -if ($this->flags & self::PARSE_TO_ASSOC) { -$token = array(); -$token[$property] = $this->vstack[$len][1]; -} else { -$token = new stdClass; -$token->$property = $this->vstack[$len][1]; -} -break; -case 17: -assert(\is_array($this->vstack[$len])); -if ($this->flags & self::PARSE_TO_ASSOC) { -assert(\is_array($this->vstack[$len-2])); -$token =& $this->vstack[$len-2]; -$key = $this->vstack[$len][0]; -if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($this->vstack[$len-2][$key])) { -$errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; -$errStr .= $this->lexer->showPosition() . "\n"; -$errStr .= "Duplicate key: ".$this->vstack[$len][0]; -throw new DuplicateKeyException($errStr, $this->vstack[$len][0], array('line' => $yylineno+1)); -} elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($this->vstack[$len-2][$key])) { -$duplicateCount = 1; -do { -$duplicateKey = $key . '.' . $duplicateCount++; -} while (isset($this->vstack[$len-2][$duplicateKey])); -$key = $duplicateKey; -} -$this->vstack[$len-2][$key] = $this->vstack[$len][1]; -} else { -assert($this->vstack[$len-2] instanceof stdClass); -$token = $this->vstack[$len-2]; -if (PHP_VERSION_ID < 70100) { -$key = $this->vstack[$len][0] === '' ? '_empty_' : $this->vstack[$len][0]; -} else { -$key = $this->vstack[$len][0]; -} -if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($this->vstack[$len-2]->{$key})) { -$errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; -$errStr .= $this->lexer->showPosition() . "\n"; -$errStr .= "Duplicate key: ".$this->vstack[$len][0]; -throw new DuplicateKeyException($errStr, $this->vstack[$len][0], array('line' => $yylineno+1)); -} elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($this->vstack[$len-2]->{$key})) { -$duplicateCount = 1; -do { -$duplicateKey = $key . '.' . $duplicateCount++; -} while (isset($this->vstack[$len-2]->$duplicateKey)); -$key = $duplicateKey; -} -$this->vstack[$len-2]->$key = $this->vstack[$len][1]; -} -break; -case 18: -$token = array(); -break; -case 19: -$token = $this->vstack[$len-1]; -break; -case 20: -$token = array($this->vstack[$len]); -break; -case 21: -assert(\is_array($this->vstack[$len-2])); -$this->vstack[$len-2][] = $this->vstack[$len]; -$token = $this->vstack[$len-2]; -break; -} - -return array($token, new Undefined()); -} - - - - - -private function stringInterpolation($match) -{ -switch ($match[0]) { -case '\\\\': -return '\\'; -case '\"': -return '"'; -case '\b': -return \chr(8); -case '\f': -return \chr(12); -case '\n': -return "\n"; -case '\r': -return "\r"; -case '\t': -return "\t"; -case '\/': -return "/"; -default: -return html_entity_decode('&#x'.ltrim(substr($match[0], 2), '0').';', ENT_QUOTES, 'UTF-8'); -} -} - - - - - -private function popStack($n) -{ -$this->stack = \array_slice($this->stack, 0, - (2 * $n)); -$this->vstack = \array_slice($this->vstack, 0, - $n); -$this->lstack = \array_slice($this->lstack, 0, - $n); -} - - - - - -private function failOnBOM($input) -{ - -$bom = "\xEF\xBB\xBF"; - -if (substr($input, 0, 3) === $bom) { -$this->parseError("BOM detected, make sure your input does not include a Unicode Byte-Order-Mark"); -} -} -} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php deleted file mode 100644 index 6a1147458..000000000 --- a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php +++ /dev/null @@ -1,257 +0,0 @@ - '/\G\s+/', -1 => '/\G-?([0-9]|[1-9][0-9]+)(\.[0-9]+)?([eE][+-]?[0-9]+)?\b/', -2 => '{\G"(?>\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\0-\x1f\\\\"]++)*+"}', -3 => '/\G\{/', -4 => '/\G\}/', -5 => '/\G\[/', -6 => '/\G\]/', -7 => '/\G,/', -8 => '/\G:/', -9 => '/\Gtrue\b/', -10 => '/\Gfalse\b/', -11 => '/\Gnull\b/', -12 => '/\G$/', -13 => '/\G./', -); - - -private $input; - -private $more; - -private $done; - -private $offset; - - -public $match; - -public $yylineno; - -public $yyleng; - -public $yytext; - -public $yylloc; - - - - -public function lex() -{ -do { -$symbol = $this->next(); -} while ($symbol === self::T_SKIP_WHITESPACE); - -return $symbol; -} - - - - - -public function setInput($input) -{ -$this->input = $input; -$this->more = false; -$this->done = false; -$this->offset = 0; -$this->yylineno = $this->yyleng = 0; -$this->yytext = $this->match = ''; -$this->yylloc = array('first_line' => 1, 'first_column' => 0, 'last_line' => 1, 'last_column' => 0); - -return $this; -} - - - - -public function showPosition() -{ -$pre = str_replace("\n", '', $this->getPastInput()); -$c = str_repeat('-', max(0, \strlen($pre) - 1)); - -return $pre . str_replace("\n", '', $this->getUpcomingInput()) . "\n" . $c . "^"; -} - - - - -public function getPastInput() -{ -$pastLength = $this->offset - \strlen($this->match); - -return ($pastLength > 20 ? '...' : '') . substr($this->input, max(0, $pastLength - 20), min(20, $pastLength)); -} - - - - -public function getUpcomingInput() -{ -$next = $this->match; -if (\strlen($next) < 20) { -$next .= substr($this->input, $this->offset, 20 - \strlen($next)); -} - -return substr($next, 0, 20) . (\strlen($next) > 20 ? '...' : ''); -} - - - - -public function getFullUpcomingInput() -{ -$next = $this->match; -if (substr($next, 0, 1) === '"' && substr_count($next, '"') === 1) { -$len = \strlen($this->input); -if ($len === $this->offset) { -$strEnd = $len; -} else { -$strEnd = min(strpos($this->input, '"', $this->offset + 1) ?: $len, strpos($this->input, "\n", $this->offset + 1) ?: $len); -} -$next .= substr($this->input, $this->offset, $strEnd - $this->offset); -} elseif (\strlen($next) < 20) { -$next .= substr($this->input, $this->offset, 20 - \strlen($next)); -} - -return $next; -} - - - - - -protected function parseError($str) -{ -throw new ParsingException($str); -} - - - - -private function next() -{ -if ($this->done) { -return self::EOF; -} -if ($this->offset === \strlen($this->input)) { -$this->done = true; -} - -$token = null; -$match = null; -$col = null; -$lines = null; - -if (!$this->more) { -$this->yytext = ''; -$this->match = ''; -} - -$rulesLen = 14; - -for ($i=0; $i < $rulesLen; $i++) { -if (preg_match($this->rules[$i], $this->input, $match, 0, $this->offset)) { -$lines = explode("\n", $match[0]); -array_shift($lines); -$lineCount = \count($lines); -$this->yylineno += $lineCount; -$this->yylloc = array( -'first_line' => $this->yylloc['last_line'], -'last_line' => $this->yylineno+1, -'first_column' => $this->yylloc['last_column'], -'last_column' => $lineCount > 0 ? \strlen($lines[$lineCount - 1]) : $this->yylloc['last_column'] + \strlen($match[0]), -); -$this->yytext .= $match[0]; -$this->match .= $match[0]; -$this->yyleng = \strlen($this->yytext); -$this->more = false; -$this->offset += \strlen($match[0]); -return $this->performAction($i); -} -} - -if ($this->offset === \strlen($this->input)) { -return self::EOF; -} - -$this->parseError( -'Lexical error on line ' . ($this->yylineno+1) . ". Unrecognized text.\n" . $this->showPosition() -); -} - - - - - -private function performAction($rule) -{ -switch ($rule) { -case 0: -return self::T_SKIP_WHITESPACE; -case 1: -return 6; -case 2: -$this->yytext = substr($this->yytext, 1, $this->yyleng-2); - -return 4; -case 3: -return 17; -case 4: -return 18; -case 5: -return 23; -case 6: -return 24; -case 7: -return 22; -case 8: -return 21; -case 9: -return 10; -case 10: -return 11; -case 11: -return 8; -case 12: -return 14; -case 13: -return self::T_INVALID; -default: -throw new \LogicException('Unsupported rule '.$rule); -} -} -} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php deleted file mode 100644 index 40d90a328..000000000 --- a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php +++ /dev/null @@ -1,38 +0,0 @@ -details = $details; -parent::__construct($message); -} - - - - -public function getDetails() -{ -return $this->details; -} -} diff --git a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php b/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php deleted file mode 100644 index 49d17d3e1..000000000 --- a/composer/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php +++ /dev/null @@ -1,16 +0,0 @@ -= 80000) { -$format = '%s -l %s'; -} else { -$format = '"%s -l %s"'; -} - -$command = sprintf($format, $php, $tmpFile); -} else { -$command = "'".$php."' -l"; -} - -$descriptorspec = array( -0 => array('pipe', 'r'), -1 => array('pipe', 'w'), -2 => array('pipe', 'w') -); - - -$baseLen = strlen(realpath($path)) + 7 + 1; -foreach (new \RecursiveIteratorIterator(new \Phar($path)) as $file) { -if ($file->isDir()) { -continue; -} -if (substr($file, -4) === '.php') { -$filename = (string) $file; -if (in_array(substr($filename, $baseLen), $excludedPaths, true)) { -continue; -} -if ($isWindows) { -file_put_contents($tmpFile, file_get_contents($filename)); -} - -$process = proc_open($command, $descriptorspec, $pipes); -if (is_resource($process)) { -if (!$isWindows) { -fwrite($pipes[0], file_get_contents($filename)); -} -fclose($pipes[0]); - -$stdout = stream_get_contents($pipes[1]); -fclose($pipes[1]); -$stderr = stream_get_contents($pipes[2]); -fclose($pipes[2]); - -$exitCode = proc_close($process); - -if ($exitCode !== 0) { -if ($isWindows) { -$stderr = str_replace($tmpFile, $filename, $stderr); -} -throw new \UnexpectedValueException('Failed linting '.$file.': '.$stderr); -} -} else { -throw new \RuntimeException('Could not start linter process'); -} -} -} - -if ($isWindows) { -@unlink($tmpFile); -} -} - - - - - - - -private static function escapeWindowsPath($path) -{ - -if (strpbrk($path, " ()") !== false) { -$path = '"'.$path.'"'; -} - -return $path; -} -} diff --git a/composer/vendor/seld/phar-utils/src/Timestamps.php b/composer/vendor/seld/phar-utils/src/Timestamps.php deleted file mode 100644 index 889d9e501..000000000 --- a/composer/vendor/seld/phar-utils/src/Timestamps.php +++ /dev/null @@ -1,196 +0,0 @@ -contents = file_get_contents($file); -} - - - - - - - - -public function updateTimestamps($timestamp = null) -{ -if ($timestamp instanceof \DateTime || $timestamp instanceof \DateTimeInterface) { -$timestamp = $timestamp->getTimestamp(); -} elseif (is_string($timestamp)) { -$timestamp = strtotime($timestamp); -} elseif (!is_int($timestamp)) { -$timestamp = strtotime('1984-12-24T00:00:00Z'); -} - - -if (!preg_match('{__HALT_COMPILER\(\);(?: +\?>)?\r?\n}', $this->contents, $match, PREG_OFFSET_CAPTURE)) { -throw new \RuntimeException('Could not detect the stub\'s end in the phar'); -} - - -$pos = $match[0][1] + strlen($match[0][0]); -$stubEnd = $pos + $this->readUint($pos, 4); -$pos += 4; - -$numFiles = $this->readUint($pos, 4); -$pos += 4; - - -$pos += 2; - - -$pos += 4; - -$aliasLength = $this->readUint($pos, 4); -$pos += 4 + $aliasLength; - -$metadataLength = $this->readUint($pos, 4); -$pos += 4 + $metadataLength; - -while ($pos < $stubEnd) { -$filenameLength = $this->readUint($pos, 4); -$pos += 4 + $filenameLength; - - -$pos += 4; - - -$timeStampBytes = pack('L', $timestamp); -$this->contents[$pos + 0] = $timeStampBytes[0]; -$this->contents[$pos + 1] = $timeStampBytes[1]; -$this->contents[$pos + 2] = $timeStampBytes[2]; -$this->contents[$pos + 3] = $timeStampBytes[3]; - - -$pos += 4*4; - -$metadataLength = $this->readUint($pos, 4); -$pos += 4 + $metadataLength; - -$numFiles--; -} - -if ($numFiles !== 0) { -throw new \LogicException('All files were not processed, something must have gone wrong'); -} -} - - - - - - - - -public function save($path, $signatureAlgo) -{ -$pos = $this->determineSignatureBegin(); - -$algos = array( -\Phar::MD5 => 'md5', -\Phar::SHA1 => 'sha1', -\Phar::SHA256 => 'sha256', -\Phar::SHA512 => 'sha512', -); - -if (!isset($algos[$signatureAlgo])) { -throw new \UnexpectedValueException('Invalid hash algorithm given: '.$signatureAlgo.' expected one of Phar::MD5, Phar::SHA1, Phar::SHA256 or Phar::SHA512'); -} -$algo = $algos[$signatureAlgo]; - - - -$signature = hash($algo, substr($this->contents, 0, $pos), true) - -. pack('L', $signatureAlgo) - -. 'GBMB'; - -$this->contents = substr($this->contents, 0, $pos) . $signature; - -return file_put_contents($path, $this->contents); -} - -private function readUint($pos, $bytes) -{ -$res = unpack('V', substr($this->contents, $pos, $bytes)); - -return $res[1]; -} - - - - - - -private function determineSignatureBegin() -{ - -if (!preg_match('{__HALT_COMPILER\(\);(?: +\?>)?\r?\n}', $this->contents, $match, PREG_OFFSET_CAPTURE)) { -throw new \RuntimeException('Could not detect the stub\'s end in the phar'); -} - - -$pos = $match[0][1] + strlen($match[0][0]); -$manifestEnd = $pos + 4 + $this->readUint($pos, 4); - -$pos += 4; -$numFiles = $this->readUint($pos, 4); - -$pos += 4; - - -$pos += 2; - - -$pos += 4; - -$aliasLength = $this->readUint($pos, 4); -$pos += 4 + $aliasLength; - -$metadataLength = $this->readUint($pos, 4); -$pos += 4 + $metadataLength; - -$compressedSizes = 0; -while (($numFiles > 0) && ($pos < $manifestEnd - 24)) { -$filenameLength = $this->readUint($pos, 4); -$pos += 4 + $filenameLength; - - -$pos += 2*4; - -$compressedSizes += $this->readUint($pos, 4); - -$pos += 3*4; - -$metadataLength = $this->readUint($pos, 4); -$pos += 4 + $metadataLength; - -$numFiles--; -} - -if ($numFiles !== 0) { -throw new \LogicException('All files were not processed, something must have gone wrong'); -} - -return $manifestEnd + $compressedSizes; -} -} diff --git a/composer/vendor/seld/signal-handler/LICENSE b/composer/vendor/seld/signal-handler/LICENSE deleted file mode 100644 index 0432a5c77..000000000 --- a/composer/vendor/seld/signal-handler/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2015 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/composer/vendor/seld/signal-handler/src/SignalHandler.php b/composer/vendor/seld/signal-handler/src/SignalHandler.php deleted file mode 100644 index cc8e0dd8b..000000000 --- a/composer/vendor/seld/signal-handler/src/SignalHandler.php +++ /dev/null @@ -1,567 +0,0 @@ -signals = $signals; -$this->loggerOrCallback = $loggerOrCallback; -} - - - - -private function trigger(string $signalName): void -{ -$this->triggered = $signalName; - -if ($this->loggerOrCallback instanceof LoggerInterface) { -$this->loggerOrCallback->info('Received '.$signalName); -} elseif ($this->loggerOrCallback !== null) { -($this->loggerOrCallback)($signalName, $this); -} -} - - - - - - -public function isTriggered(): bool -{ -return $this->triggered !== null; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -public function exitWithLastSignal(): void -{ -$signal = $this->triggered ?? 'SIGINT'; -$signal = defined($signal) ? constant($signal) : 2; - -if (function_exists('posix_kill') && function_exists('posix_getpid')) { -pcntl_signal($signal, SIG_DFL); -posix_kill(posix_getpid(), $signal); -} - - - -exit(128 + $signal); -} - - - - -public function reset(): void -{ -$this->triggered = null; -} - -public function __destruct() -{ -$this->unregister(); -} - - - - - - - - - -public static function create(?array $signals = null, $loggerOrCallback = null): self -{ -if ($signals === null) { -$signals = [self::SIGINT, self::SIGTERM]; -} -$signals = array_map(function ($signal) { -if (is_int($signal)) { -return self::getSignalName($signal); -} elseif (!in_array($signal, self::ALL_SIGNALS, true)) { -throw new \InvalidArgumentException('$signals must be an array of SIG* constants or self::SIG* constants, got '.var_export($signal, true)); -} -return $signal; -}, (array) $signals); - -$handler = new self($signals, $loggerOrCallback); - -if (PHP_VERSION_ID >= 80000) { -array_unshift(self::$handlers, WeakReference::create($handler)); -} else { -array_unshift(self::$handlers, $handler); -} - -if (function_exists('sapi_windows_set_ctrl_handler') && PHP_SAPI === 'cli' && (in_array(self::SIGINT, $signals, true) || in_array(self::SIGBREAK, $signals, true))) { -if (null === self::$windowsHandler) { -self::$windowsHandler = Closure::fromCallable([self::class, 'handleWindowsSignal']); -sapi_windows_set_ctrl_handler(self::$windowsHandler); -} -} - -if (function_exists('pcntl_signal') && function_exists('pcntl_async_signals')) { -pcntl_async_signals(true); - -self::registerPcntlHandler($signals); -} - -return $handler; -} - - - - - - - - - -public function unregister(): void -{ -$signals = $this->signals; - -$index = false; -foreach (self::$handlers as $key => $handler) { -if (($handler instanceof WeakReference && $handler->get() === $this) || $handler === $this) { -$index = $key; -break; -} -} -if ($index === false) { - -return; -} - -unset(self::$handlers[$index]); - -if (self::$windowsHandler !== null && (in_array(self::SIGINT, $signals, true) || in_array(self::SIGBREAK, $signals, true))) { -if (self::getHandlerFor(self::SIGINT) === null && self::getHandlerFor(self::SIGBREAK) === null) { -sapi_windows_set_ctrl_handler(self::$windowsHandler, false); -self::$windowsHandler = null; -} -} - -if (function_exists('pcntl_signal')) { -foreach ($signals as $signal) { - -if (!defined($signal)) { -continue; -} - - -if (self::getHandlerFor($signal) !== null) { -continue; -} - -pcntl_signal(constant($signal), SIG_DFL); -} -} -} - - - - - - - - - -public static function unregisterAll(): void -{ -if (self::$windowsHandler !== null) { -sapi_windows_set_ctrl_handler(self::$windowsHandler, false); -self::$windowsHandler = null; -} - -foreach (self::$handlers as $key => $handler) { -if ($handler instanceof WeakReference) { -$handler = $handler->get(); -if ($handler === null) { -unset(self::$handlers[$key]); -continue; -} -} -$handler->unregister(); -} -} - - - - -private static function registerPcntlHandler(array $signals): void -{ -static $callable; -if ($callable === null) { -$callable = Closure::fromCallable([self::class, 'handlePcntlSignal']); -} -foreach ($signals as $signal) { - -if (!defined($signal)) { -continue; -} - -pcntl_signal(constant($signal), $callable); -} -} - -private static function handleWindowsSignal(int $event): void -{ -if (PHP_WINDOWS_EVENT_CTRL_C === $event) { -self::callHandlerFor(self::SIGINT); -} elseif (PHP_WINDOWS_EVENT_CTRL_BREAK === $event) { -self::callHandlerFor(self::SIGBREAK); -} -} - -private static function handlePcntlSignal(int $signal): void -{ -self::callHandlerFor(self::getSignalName($signal)); -} - - - - - - -private static function callHandlerFor(string $signal): void -{ -$handler = self::getHandlerFor($signal); -if ($handler !== null) { -$handler->trigger($signal); -} -} - - - - - - - -private static function getHandlerFor(string $signal): ?self -{ -foreach (self::$handlers as $key => $handler) { -if ($handler instanceof WeakReference) { -$handler = $handler->get(); -if ($handler === null) { -unset(self::$handlers[$key]); -continue; -} -} -if (in_array($signal, $handler->signals, true)) { -return $handler; -} -} - -return null; -} - - - - -private static function getSignalName(int $signo): string -{ -static $signals = null; -if ($signals === null) { -$signals = []; -foreach (self::ALL_SIGNALS as $value) { -if (defined($value)) { -$signals[constant($value)] = $value; -} -} -} - -if (isset($signals[$signo])) { -return $signals[$signo]; -} - -throw new \InvalidArgumentException('Unknown signal #'.$signo); -} -} diff --git a/composer/vendor/symfony/console/Application.php b/composer/vendor/symfony/console/Application.php deleted file mode 100644 index efc33d4e4..000000000 --- a/composer/vendor/symfony/console/Application.php +++ /dev/null @@ -1,1301 +0,0 @@ -name = $name; -$this->version = $version; -$this->terminal = new Terminal(); -$this->defaultCommand = 'list'; -if (\defined('SIGINT') && SignalRegistry::isSupported()) { -$this->signalRegistry = new SignalRegistry(); -$this->signalsToDispatchEvent = [\SIGINT, \SIGTERM, \SIGUSR1, \SIGUSR2]; -} -} - - - - -public function setDispatcher(EventDispatcherInterface $dispatcher) -{ -$this->dispatcher = $dispatcher; -} - -public function setCommandLoader(CommandLoaderInterface $commandLoader) -{ -$this->commandLoader = $commandLoader; -} - -public function getSignalRegistry(): SignalRegistry -{ -if (!$this->signalRegistry) { -throw new RuntimeException('Signals are not supported. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); -} - -return $this->signalRegistry; -} - -public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent) -{ -$this->signalsToDispatchEvent = $signalsToDispatchEvent; -} - - - - - - - - -public function run(InputInterface $input = null, OutputInterface $output = null) -{ -if (\function_exists('putenv')) { -@putenv('LINES='.$this->terminal->getHeight()); -@putenv('COLUMNS='.$this->terminal->getWidth()); -} - -if (null === $input) { -$input = new ArgvInput(); -} - -if (null === $output) { -$output = new ConsoleOutput(); -} - -$renderException = function (\Throwable $e) use ($output) { -if ($output instanceof ConsoleOutputInterface) { -$this->renderThrowable($e, $output->getErrorOutput()); -} else { -$this->renderThrowable($e, $output); -} -}; -if ($phpHandler = set_exception_handler($renderException)) { -restore_exception_handler(); -if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { -$errorHandler = true; -} elseif ($errorHandler = $phpHandler[0]->setExceptionHandler($renderException)) { -$phpHandler[0]->setExceptionHandler($errorHandler); -} -} - -$this->configureIO($input, $output); - -try { -$exitCode = $this->doRun($input, $output); -} catch (\Exception $e) { -if (!$this->catchExceptions) { -throw $e; -} - -$renderException($e); - -$exitCode = $e->getCode(); -if (is_numeric($exitCode)) { -$exitCode = (int) $exitCode; -if ($exitCode <= 0) { -$exitCode = 1; -} -} else { -$exitCode = 1; -} -} finally { - - -if (!$phpHandler) { -if (set_exception_handler($renderException) === $renderException) { -restore_exception_handler(); -} -restore_exception_handler(); -} elseif (!$errorHandler) { -$finalHandler = $phpHandler[0]->setExceptionHandler(null); -if ($finalHandler !== $renderException) { -$phpHandler[0]->setExceptionHandler($finalHandler); -} -} -} - -if ($this->autoExit) { -if ($exitCode > 255) { -$exitCode = 255; -} - -exit($exitCode); -} - -return $exitCode; -} - - - - - - -public function doRun(InputInterface $input, OutputInterface $output) -{ -if (true === $input->hasParameterOption(['--version', '-V'], true)) { -$output->writeln($this->getLongVersion()); - -return 0; -} - -try { - -$input->bind($this->getDefinition()); -} catch (ExceptionInterface $e) { - -} - -$name = $this->getCommandName($input); -if (true === $input->hasParameterOption(['--help', '-h'], true)) { -if (!$name) { -$name = 'help'; -$input = new ArrayInput(['command_name' => $this->defaultCommand]); -} else { -$this->wantHelps = true; -} -} - -if (!$name) { -$name = $this->defaultCommand; -$definition = $this->getDefinition(); -$definition->setArguments(array_merge( -$definition->getArguments(), -[ -'command' => new InputArgument('command', InputArgument::OPTIONAL, $definition->getArgument('command')->getDescription(), $name), -] -)); -} - -try { -$this->runningCommand = null; - -$command = $this->find($name); -} catch (\Throwable $e) { -if (!($e instanceof CommandNotFoundException && !$e instanceof NamespaceNotFoundException) || 1 !== \count($alternatives = $e->getAlternatives()) || !$input->isInteractive()) { -if (null !== $this->dispatcher) { -$event = new ConsoleErrorEvent($input, $output, $e); -$this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - -if (0 === $event->getExitCode()) { -return 0; -} - -$e = $event->getError(); -} - -throw $e; -} - -$alternative = $alternatives[0]; - -$style = new SymfonyStyle($input, $output); -$output->writeln(''); -$formattedBlock = (new FormatterHelper())->formatBlock(sprintf('Command "%s" is not defined.', $name), 'error', true); -$output->writeln($formattedBlock); -if (!$style->confirm(sprintf('Do you want to run "%s" instead? ', $alternative), false)) { -if (null !== $this->dispatcher) { -$event = new ConsoleErrorEvent($input, $output, $e); -$this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - -return $event->getExitCode(); -} - -return 1; -} - -$command = $this->find($alternative); -} - -if ($command instanceof LazyCommand) { -$command = $command->getCommand(); -} - -$this->runningCommand = $command; -$exitCode = $this->doRunCommand($command, $input, $output); -$this->runningCommand = null; - -return $exitCode; -} - - - - -public function reset() -{ -} - -public function setHelperSet(HelperSet $helperSet) -{ -$this->helperSet = $helperSet; -} - - - - - - -public function getHelperSet() -{ -if (!$this->helperSet) { -$this->helperSet = $this->getDefaultHelperSet(); -} - -return $this->helperSet; -} - -public function setDefinition(InputDefinition $definition) -{ -$this->definition = $definition; -} - - - - - - -public function getDefinition() -{ -if (!$this->definition) { -$this->definition = $this->getDefaultInputDefinition(); -} - -if ($this->singleCommand) { -$inputDefinition = $this->definition; -$inputDefinition->setArguments(); - -return $inputDefinition; -} - -return $this->definition; -} - - - - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -if ( -CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() -&& 'command' === $input->getCompletionName() -) { -$commandNames = []; -foreach ($this->all() as $name => $command) { - -if ($command->isHidden() || $command->getName() !== $name) { -continue; -} -$commandNames[] = $command->getName(); -foreach ($command->getAliases() as $name) { -$commandNames[] = $name; -} -} -$suggestions->suggestValues(array_filter($commandNames)); - -return; -} - -if (CompletionInput::TYPE_OPTION_NAME === $input->getCompletionType()) { -$suggestions->suggestOptions($this->getDefinition()->getOptions()); - -return; -} -} - - - - - - -public function getHelp() -{ -return $this->getLongVersion(); -} - - - - - - -public function areExceptionsCaught() -{ -return $this->catchExceptions; -} - - - - -public function setCatchExceptions(bool $boolean) -{ -$this->catchExceptions = $boolean; -} - - - - - - -public function isAutoExitEnabled() -{ -return $this->autoExit; -} - - - - -public function setAutoExit(bool $boolean) -{ -$this->autoExit = $boolean; -} - - - - - - -public function getName() -{ -return $this->name; -} - - - - -public function setName(string $name) -{ -$this->name = $name; -} - - - - - - -public function getVersion() -{ -return $this->version; -} - - - - -public function setVersion(string $version) -{ -$this->version = $version; -} - - - - - - -public function getLongVersion() -{ -if ('UNKNOWN' !== $this->getName()) { -if ('UNKNOWN' !== $this->getVersion()) { -return sprintf('%s %s', $this->getName(), $this->getVersion()); -} - -return $this->getName(); -} - -return 'Console Tool'; -} - - - - - - -public function register(string $name) -{ -return $this->add(new Command($name)); -} - - - - - - - - -public function addCommands(array $commands) -{ -foreach ($commands as $command) { -$this->add($command); -} -} - - - - - - - - - -public function add(Command $command) -{ -$this->init(); - -$command->setApplication($this); - -if (!$command->isEnabled()) { -$command->setApplication(null); - -return null; -} - -if (!$command instanceof LazyCommand) { - -$command->getDefinition(); -} - -if (!$command->getName()) { -throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_debug_type($command))); -} - -$this->commands[$command->getName()] = $command; - -foreach ($command->getAliases() as $alias) { -$this->commands[$alias] = $command; -} - -return $command; -} - - - - - - - - -public function get(string $name) -{ -$this->init(); - -if (!$this->has($name)) { -throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); -} - - -if (!isset($this->commands[$name])) { -throw new CommandNotFoundException(sprintf('The "%s" command cannot be found because it is registered under multiple names. Make sure you don\'t set a different name via constructor or "setName()".', $name)); -} - -$command = $this->commands[$name]; - -if ($this->wantHelps) { -$this->wantHelps = false; - -$helpCommand = $this->get('help'); -$helpCommand->setCommand($command); - -return $helpCommand; -} - -return $command; -} - - - - - - -public function has(string $name) -{ -$this->init(); - -return isset($this->commands[$name]) || ($this->commandLoader && $this->commandLoader->has($name) && $this->add($this->commandLoader->get($name))); -} - - - - - - - - -public function getNamespaces() -{ -$namespaces = []; -foreach ($this->all() as $command) { -if ($command->isHidden()) { -continue; -} - -$namespaces[] = $this->extractAllNamespaces($command->getName()); - -foreach ($command->getAliases() as $alias) { -$namespaces[] = $this->extractAllNamespaces($alias); -} -} - -return array_values(array_unique(array_filter(array_merge([], ...$namespaces)))); -} - - - - - - - - -public function findNamespace(string $namespace) -{ -$allNamespaces = $this->getNamespaces(); -$expr = implode('[^:]*:', array_map('preg_quote', explode(':', $namespace))).'[^:]*'; -$namespaces = preg_grep('{^'.$expr.'}', $allNamespaces); - -if (empty($namespaces)) { -$message = sprintf('There are no commands defined in the "%s" namespace.', $namespace); - -if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { -if (1 == \count($alternatives)) { -$message .= "\n\nDid you mean this?\n "; -} else { -$message .= "\n\nDid you mean one of these?\n "; -} - -$message .= implode("\n ", $alternatives); -} - -throw new NamespaceNotFoundException($message, $alternatives); -} - -$exact = \in_array($namespace, $namespaces, true); -if (\count($namespaces) > 1 && !$exact) { -throw new NamespaceNotFoundException(sprintf("The namespace \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))), array_values($namespaces)); -} - -return $exact ? $namespace : reset($namespaces); -} - - - - - - - - - - - -public function find(string $name) -{ -$this->init(); - -$aliases = []; - -foreach ($this->commands as $command) { -foreach ($command->getAliases() as $alias) { -if (!$this->has($alias)) { -$this->commands[$alias] = $command; -} -} -} - -if ($this->has($name)) { -return $this->get($name); -} - -$allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands); -$expr = implode('[^:]*:', array_map('preg_quote', explode(':', $name))).'[^:]*'; -$commands = preg_grep('{^'.$expr.'}', $allCommands); - -if (empty($commands)) { -$commands = preg_grep('{^'.$expr.'}i', $allCommands); -} - - -if (empty($commands) || \count(preg_grep('{^'.$expr.'$}i', $commands)) < 1) { -if (false !== $pos = strrpos($name, ':')) { - -$this->findNamespace(substr($name, 0, $pos)); -} - -$message = sprintf('Command "%s" is not defined.', $name); - -if ($alternatives = $this->findAlternatives($name, $allCommands)) { - -$alternatives = array_filter($alternatives, function ($name) { -return !$this->get($name)->isHidden(); -}); - -if (1 == \count($alternatives)) { -$message .= "\n\nDid you mean this?\n "; -} else { -$message .= "\n\nDid you mean one of these?\n "; -} -$message .= implode("\n ", $alternatives); -} - -throw new CommandNotFoundException($message, array_values($alternatives)); -} - - -if (\count($commands) > 1) { -$commandList = $this->commandLoader ? array_merge(array_flip($this->commandLoader->getNames()), $this->commands) : $this->commands; -$commands = array_unique(array_filter($commands, function ($nameOrAlias) use (&$commandList, $commands, &$aliases) { -if (!$commandList[$nameOrAlias] instanceof Command) { -$commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); -} - -$commandName = $commandList[$nameOrAlias]->getName(); - -$aliases[$nameOrAlias] = $commandName; - -return $commandName === $nameOrAlias || !\in_array($commandName, $commands); -})); -} - -if (\count($commands) > 1) { -$usableWidth = $this->terminal->getWidth() - 10; -$abbrevs = array_values($commands); -$maxLen = 0; -foreach ($abbrevs as $abbrev) { -$maxLen = max(Helper::width($abbrev), $maxLen); -} -$abbrevs = array_map(function ($cmd) use ($commandList, $usableWidth, $maxLen, &$commands) { -if ($commandList[$cmd]->isHidden()) { -unset($commands[array_search($cmd, $commands)]); - -return false; -} - -$abbrev = str_pad($cmd, $maxLen, ' ').' '.$commandList[$cmd]->getDescription(); - -return Helper::width($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; -}, array_values($commands)); - -if (\count($commands) > 1) { -$suggestions = $this->getAbbreviationSuggestions(array_filter($abbrevs)); - -throw new CommandNotFoundException(sprintf("Command \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $name, $suggestions), array_values($commands)); -} -} - -$command = $this->get(reset($commands)); - -if ($command->isHidden()) { -throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); -} - -return $command; -} - - - - - - - - -public function all(string $namespace = null) -{ -$this->init(); - -if (null === $namespace) { -if (!$this->commandLoader) { -return $this->commands; -} - -$commands = $this->commands; -foreach ($this->commandLoader->getNames() as $name) { -if (!isset($commands[$name]) && $this->has($name)) { -$commands[$name] = $this->get($name); -} -} - -return $commands; -} - -$commands = []; -foreach ($this->commands as $name => $command) { -if ($namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1)) { -$commands[$name] = $command; -} -} - -if ($this->commandLoader) { -foreach ($this->commandLoader->getNames() as $name) { -if (!isset($commands[$name]) && $namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1) && $this->has($name)) { -$commands[$name] = $this->get($name); -} -} -} - -return $commands; -} - - - - - - -public static function getAbbreviations(array $names) -{ -$abbrevs = []; -foreach ($names as $name) { -for ($len = \strlen($name); $len > 0; --$len) { -$abbrev = substr($name, 0, $len); -$abbrevs[$abbrev][] = $name; -} -} - -return $abbrevs; -} - -public function renderThrowable(\Throwable $e, OutputInterface $output): void -{ -$output->writeln('', OutputInterface::VERBOSITY_QUIET); - -$this->doRenderThrowable($e, $output); - -if (null !== $this->runningCommand) { -$output->writeln(sprintf('%s', OutputFormatter::escape(sprintf($this->runningCommand->getSynopsis(), $this->getName()))), OutputInterface::VERBOSITY_QUIET); -$output->writeln('', OutputInterface::VERBOSITY_QUIET); -} -} - -protected function doRenderThrowable(\Throwable $e, OutputInterface $output): void -{ -do { -$message = trim($e->getMessage()); -if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { -$class = get_debug_type($e); -$title = sprintf(' [%s%s] ', $class, 0 !== ($code = $e->getCode()) ? ' ('.$code.')' : ''); -$len = Helper::width($title); -} else { -$len = 0; -} - -if (str_contains($message, "@anonymous\0")) { -$message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', function ($m) { -return class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0]; -}, $message); -} - -$width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; -$lines = []; -foreach ('' !== $message ? preg_split('/\r?\n/', $message) : [] as $line) { -foreach ($this->splitStringByWidth($line, $width - 4) as $line) { - -$lineLength = Helper::width($line) + 4; -$lines[] = [$line, $lineLength]; - -$len = max($lineLength, $len); -} -} - -$messages = []; -if (!$e instanceof ExceptionInterface || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { -$messages[] = sprintf('%s', OutputFormatter::escape(sprintf('In %s line %s:', basename($e->getFile()) ?: 'n/a', $e->getLine() ?: 'n/a'))); -} -$messages[] = $emptyLine = sprintf('%s', str_repeat(' ', $len)); -if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { -$messages[] = sprintf('%s%s', $title, str_repeat(' ', max(0, $len - Helper::width($title)))); -} -foreach ($lines as $line) { -$messages[] = sprintf(' %s %s', OutputFormatter::escape($line[0]), str_repeat(' ', $len - $line[1])); -} -$messages[] = $emptyLine; -$messages[] = ''; - -$output->writeln($messages, OutputInterface::VERBOSITY_QUIET); - -if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { -$output->writeln('Exception trace:', OutputInterface::VERBOSITY_QUIET); - - -$trace = $e->getTrace(); - -array_unshift($trace, [ -'function' => '', -'file' => $e->getFile() ?: 'n/a', -'line' => $e->getLine() ?: 'n/a', -'args' => [], -]); - -for ($i = 0, $count = \count($trace); $i < $count; ++$i) { -$class = $trace[$i]['class'] ?? ''; -$type = $trace[$i]['type'] ?? ''; -$function = $trace[$i]['function'] ?? ''; -$file = $trace[$i]['file'] ?? 'n/a'; -$line = $trace[$i]['line'] ?? 'n/a'; - -$output->writeln(sprintf(' %s%s at %s:%s', $class, $function ? $type.$function.'()' : '', $file, $line), OutputInterface::VERBOSITY_QUIET); -} - -$output->writeln('', OutputInterface::VERBOSITY_QUIET); -} -} while ($e = $e->getPrevious()); -} - - - - -protected function configureIO(InputInterface $input, OutputInterface $output) -{ -if (true === $input->hasParameterOption(['--ansi'], true)) { -$output->setDecorated(true); -} elseif (true === $input->hasParameterOption(['--no-ansi'], true)) { -$output->setDecorated(false); -} - -if (true === $input->hasParameterOption(['--no-interaction', '-n'], true)) { -$input->setInteractive(false); -} - -switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { -case -1: -$output->setVerbosity(OutputInterface::VERBOSITY_QUIET); -break; -case 1: -$output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); -break; -case 2: -$output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); -break; -case 3: -$output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); -break; -default: -$shellVerbosity = 0; -break; -} - -if (true === $input->hasParameterOption(['--quiet', '-q'], true)) { -$output->setVerbosity(OutputInterface::VERBOSITY_QUIET); -$shellVerbosity = -1; -} else { -if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || 3 === $input->getParameterOption('--verbose', false, true)) { -$output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); -$shellVerbosity = 3; -} elseif ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || 2 === $input->getParameterOption('--verbose', false, true)) { -$output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); -$shellVerbosity = 2; -} elseif ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true) || $input->getParameterOption('--verbose', false, true)) { -$output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); -$shellVerbosity = 1; -} -} - -if (-1 === $shellVerbosity) { -$input->setInteractive(false); -} - -if (\function_exists('putenv')) { -@putenv('SHELL_VERBOSITY='.$shellVerbosity); -} -$_ENV['SHELL_VERBOSITY'] = $shellVerbosity; -$_SERVER['SHELL_VERBOSITY'] = $shellVerbosity; -} - - - - - - - - - -protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) -{ -foreach ($command->getHelperSet() as $helper) { -if ($helper instanceof InputAwareInterface) { -$helper->setInput($input); -} -} - -if ($this->signalsToDispatchEvent) { -$commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; - -if ($commandSignals || null !== $this->dispatcher) { -if (!$this->signalRegistry) { -throw new RuntimeException('Unable to subscribe to signal events. Make sure that the `pcntl` extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); -} - -if (Terminal::hasSttyAvailable()) { -$sttyMode = shell_exec('stty -g'); - -foreach ([\SIGINT, \SIGTERM] as $signal) { -$this->signalRegistry->register($signal, static function () use ($sttyMode) { -shell_exec('stty '.$sttyMode); -}); -} -} -} - -if (null !== $this->dispatcher) { -foreach ($this->signalsToDispatchEvent as $signal) { -$event = new ConsoleSignalEvent($command, $input, $output, $signal); - -$this->signalRegistry->register($signal, function ($signal, $hasNext) use ($event) { -$this->dispatcher->dispatch($event, ConsoleEvents::SIGNAL); - - -if (!$hasNext) { -if (!\in_array($signal, [\SIGUSR1, \SIGUSR2], true)) { -exit(0); -} -} -}); -} -} - -foreach ($commandSignals as $signal) { -$this->signalRegistry->register($signal, [$command, 'handleSignal']); -} -} - -if (null === $this->dispatcher) { -return $command->run($input, $output); -} - - -try { -$command->mergeApplicationDefinition(); -$input->bind($command->getDefinition()); -} catch (ExceptionInterface $e) { - -} - -$event = new ConsoleCommandEvent($command, $input, $output); -$e = null; - -try { -$this->dispatcher->dispatch($event, ConsoleEvents::COMMAND); - -if ($event->commandShouldRun()) { -$exitCode = $command->run($input, $output); -} else { -$exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; -} -} catch (\Throwable $e) { -$event = new ConsoleErrorEvent($input, $output, $e, $command); -$this->dispatcher->dispatch($event, ConsoleEvents::ERROR); -$e = $event->getError(); - -if (0 === $exitCode = $event->getExitCode()) { -$e = null; -} -} - -$event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); -$this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); - -if (null !== $e) { -throw $e; -} - -return $event->getExitCode(); -} - - - - - - -protected function getCommandName(InputInterface $input) -{ -return $this->singleCommand ? $this->defaultCommand : $input->getFirstArgument(); -} - - - - - - -protected function getDefaultInputDefinition() -{ -return new InputDefinition([ -new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), -new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display help for the given command. When no command is given display help for the '.$this->defaultCommand.' command'), -new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), -new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), -new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), -new InputOption('--ansi', '', InputOption::VALUE_NEGATABLE, 'Force (or disable --no-ansi) ANSI output', null), -new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), -]); -} - - - - - - -protected function getDefaultCommands() -{ -return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; -} - - - - - - -protected function getDefaultHelperSet() -{ -return new HelperSet([ -new FormatterHelper(), -new DebugFormatterHelper(), -new ProcessHelper(), -new QuestionHelper(), -]); -} - - - - -private function getAbbreviationSuggestions(array $abbrevs): string -{ -return ' '.implode("\n ", $abbrevs); -} - - - - - - - - -public function extractNamespace(string $name, int $limit = null) -{ -$parts = explode(':', $name, -1); - -return implode(':', null === $limit ? $parts : \array_slice($parts, 0, $limit)); -} - - - - - - - -private function findAlternatives(string $name, iterable $collection): array -{ -$threshold = 1e3; -$alternatives = []; - -$collectionParts = []; -foreach ($collection as $item) { -$collectionParts[$item] = explode(':', $item); -} - -foreach (explode(':', $name) as $i => $subname) { -foreach ($collectionParts as $collectionName => $parts) { -$exists = isset($alternatives[$collectionName]); -if (!isset($parts[$i]) && $exists) { -$alternatives[$collectionName] += $threshold; -continue; -} elseif (!isset($parts[$i])) { -continue; -} - -$lev = levenshtein($subname, $parts[$i]); -if ($lev <= \strlen($subname) / 3 || '' !== $subname && str_contains($parts[$i], $subname)) { -$alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; -} elseif ($exists) { -$alternatives[$collectionName] += $threshold; -} -} -} - -foreach ($collection as $item) { -$lev = levenshtein($name, $item); -if ($lev <= \strlen($name) / 3 || str_contains($item, $name)) { -$alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; -} -} - -$alternatives = array_filter($alternatives, function ($lev) use ($threshold) { return $lev < 2 * $threshold; }); -ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); - -return array_keys($alternatives); -} - - - - - - -public function setDefaultCommand(string $commandName, bool $isSingleCommand = false) -{ -$this->defaultCommand = explode('|', ltrim($commandName, '|'))[0]; - -if ($isSingleCommand) { - -$this->find($commandName); - -$this->singleCommand = true; -} - -return $this; -} - - - - -public function isSingleCommand(): bool -{ -return $this->singleCommand; -} - -private function splitStringByWidth(string $string, int $width): array -{ - - - -if (false === $encoding = mb_detect_encoding($string, null, true)) { -return str_split($string, $width); -} - -$utf8String = mb_convert_encoding($string, 'utf8', $encoding); -$lines = []; -$line = ''; - -$offset = 0; -while (preg_match('/.{1,10000}/u', $utf8String, $m, 0, $offset)) { -$offset += \strlen($m[0]); - -foreach (preg_split('//u', $m[0]) as $char) { - -if (mb_strwidth($line.$char, 'utf8') <= $width) { -$line .= $char; -continue; -} - -$lines[] = str_pad($line, $width); -$line = $char; -} -} - -$lines[] = \count($lines) ? str_pad($line, $width) : $line; - -mb_convert_variables($encoding, 'utf8', $lines); - -return $lines; -} - - - - - - -private function extractAllNamespaces(string $name): array -{ - -$parts = explode(':', $name, -1); -$namespaces = []; - -foreach ($parts as $part) { -if (\count($namespaces)) { -$namespaces[] = end($namespaces).':'.$part; -} else { -$namespaces[] = $part; -} -} - -return $namespaces; -} - -private function init() -{ -if ($this->initialized) { -return; -} -$this->initialized = true; - -foreach ($this->getDefaultCommands() as $command) { -$this->add($command); -} -} -} diff --git a/composer/vendor/symfony/console/Attribute/AsCommand.php b/composer/vendor/symfony/console/Attribute/AsCommand.php deleted file mode 100644 index cb8dfb54d..000000000 --- a/composer/vendor/symfony/console/Attribute/AsCommand.php +++ /dev/null @@ -1,39 +0,0 @@ -name = implode('|', $name); -} -} diff --git a/composer/vendor/symfony/console/CI/GithubActionReporter.php b/composer/vendor/symfony/console/CI/GithubActionReporter.php deleted file mode 100644 index 06ce50557..000000000 --- a/composer/vendor/symfony/console/CI/GithubActionReporter.php +++ /dev/null @@ -1,99 +0,0 @@ - '%25', -"\r" => '%0D', -"\n" => '%0A', -]; - - - - -private const ESCAPED_PROPERTIES = [ -'%' => '%25', -"\r" => '%0D', -"\n" => '%0A', -':' => '%3A', -',' => '%2C', -]; - -public function __construct(OutputInterface $output) -{ -$this->output = $output; -} - -public static function isGithubActionEnvironment(): bool -{ -return false !== getenv('GITHUB_ACTIONS'); -} - - - - - - -public function error(string $message, string $file = null, int $line = null, int $col = null): void -{ -$this->log('error', $message, $file, $line, $col); -} - - - - - - -public function warning(string $message, string $file = null, int $line = null, int $col = null): void -{ -$this->log('warning', $message, $file, $line, $col); -} - - - - - - -public function debug(string $message, string $file = null, int $line = null, int $col = null): void -{ -$this->log('debug', $message, $file, $line, $col); -} - -private function log(string $type, string $message, string $file = null, int $line = null, int $col = null): void -{ - -$message = strtr($message, self::ESCAPED_DATA); - -if (!$file) { - -$this->output->writeln(sprintf('::%s::%s', $type, $message)); - -return; -} - -$this->output->writeln(sprintf('::%s file=%s,line=%s,col=%s::%s', $type, strtr($file, self::ESCAPED_PROPERTIES), strtr($line ?? 1, self::ESCAPED_PROPERTIES), strtr($col ?? 0, self::ESCAPED_PROPERTIES), $message)); -} -} diff --git a/composer/vendor/symfony/console/Color.php b/composer/vendor/symfony/console/Color.php deleted file mode 100644 index d4256d13d..000000000 --- a/composer/vendor/symfony/console/Color.php +++ /dev/null @@ -1,180 +0,0 @@ - 0, -'red' => 1, -'green' => 2, -'yellow' => 3, -'blue' => 4, -'magenta' => 5, -'cyan' => 6, -'white' => 7, -'default' => 9, -]; - -private const BRIGHT_COLORS = [ -'gray' => 0, -'bright-red' => 1, -'bright-green' => 2, -'bright-yellow' => 3, -'bright-blue' => 4, -'bright-magenta' => 5, -'bright-cyan' => 6, -'bright-white' => 7, -]; - -private const AVAILABLE_OPTIONS = [ -'bold' => ['set' => 1, 'unset' => 22], -'underscore' => ['set' => 4, 'unset' => 24], -'blink' => ['set' => 5, 'unset' => 25], -'reverse' => ['set' => 7, 'unset' => 27], -'conceal' => ['set' => 8, 'unset' => 28], -]; - -private $foreground; -private $background; -private $options = []; - -public function __construct(string $foreground = '', string $background = '', array $options = []) -{ -$this->foreground = $this->parseColor($foreground); -$this->background = $this->parseColor($background, true); - -foreach ($options as $option) { -if (!isset(self::AVAILABLE_OPTIONS[$option])) { -throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(self::AVAILABLE_OPTIONS)))); -} - -$this->options[$option] = self::AVAILABLE_OPTIONS[$option]; -} -} - -public function apply(string $text): string -{ -return $this->set().$text.$this->unset(); -} - -public function set(): string -{ -$setCodes = []; -if ('' !== $this->foreground) { -$setCodes[] = $this->foreground; -} -if ('' !== $this->background) { -$setCodes[] = $this->background; -} -foreach ($this->options as $option) { -$setCodes[] = $option['set']; -} -if (0 === \count($setCodes)) { -return ''; -} - -return sprintf("\033[%sm", implode(';', $setCodes)); -} - -public function unset(): string -{ -$unsetCodes = []; -if ('' !== $this->foreground) { -$unsetCodes[] = 39; -} -if ('' !== $this->background) { -$unsetCodes[] = 49; -} -foreach ($this->options as $option) { -$unsetCodes[] = $option['unset']; -} -if (0 === \count($unsetCodes)) { -return ''; -} - -return sprintf("\033[%sm", implode(';', $unsetCodes)); -} - -private function parseColor(string $color, bool $background = false): string -{ -if ('' === $color) { -return ''; -} - -if ('#' === $color[0]) { -$color = substr($color, 1); - -if (3 === \strlen($color)) { -$color = $color[0].$color[0].$color[1].$color[1].$color[2].$color[2]; -} - -if (6 !== \strlen($color)) { -throw new InvalidArgumentException(sprintf('Invalid "%s" color.', $color)); -} - -return ($background ? '4' : '3').$this->convertHexColorToAnsi(hexdec($color)); -} - -if (isset(self::COLORS[$color])) { -return ($background ? '4' : '3').self::COLORS[$color]; -} - -if (isset(self::BRIGHT_COLORS[$color])) { -return ($background ? '10' : '9').self::BRIGHT_COLORS[$color]; -} - -throw new InvalidArgumentException(sprintf('Invalid "%s" color; expected one of (%s).', $color, implode(', ', array_merge(array_keys(self::COLORS), array_keys(self::BRIGHT_COLORS))))); -} - -private function convertHexColorToAnsi(int $color): string -{ -$r = ($color >> 16) & 255; -$g = ($color >> 8) & 255; -$b = $color & 255; - - -if ('truecolor' !== getenv('COLORTERM')) { -return (string) $this->degradeHexColorToAnsi($r, $g, $b); -} - -return sprintf('8;2;%d;%d;%d', $r, $g, $b); -} - -private function degradeHexColorToAnsi(int $r, int $g, int $b): int -{ -if (0 === round($this->getSaturation($r, $g, $b) / 50)) { -return 0; -} - -return (round($b / 255) << 2) | (round($g / 255) << 1) | round($r / 255); -} - -private function getSaturation(int $r, int $g, int $b): int -{ -$r = $r / 255; -$g = $g / 255; -$b = $b / 255; -$v = max($r, $g, $b); - -if (0 === $diff = $v - min($r, $g, $b)) { -return 0; -} - -return (int) $diff * 100 / $v; -} -} diff --git a/composer/vendor/symfony/console/Command/Command.php b/composer/vendor/symfony/console/Command/Command.php deleted file mode 100644 index a64144314..000000000 --- a/composer/vendor/symfony/console/Command/Command.php +++ /dev/null @@ -1,710 +0,0 @@ -= 80000 && $attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { -return $attribute[0]->newInstance()->name; -} - -$r = new \ReflectionProperty($class, 'defaultName'); - -return $class === $r->class ? static::$defaultName : null; -} - -public static function getDefaultDescription(): ?string -{ -$class = static::class; - -if (\PHP_VERSION_ID >= 80000 && $attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { -return $attribute[0]->newInstance()->description; -} - -$r = new \ReflectionProperty($class, 'defaultDescription'); - -return $class === $r->class ? static::$defaultDescription : null; -} - - - - - - -public function __construct(string $name = null) -{ -$this->definition = new InputDefinition(); - -if (null === $name && null !== $name = static::getDefaultName()) { -$aliases = explode('|', $name); - -if ('' === $name = array_shift($aliases)) { -$this->setHidden(true); -$name = array_shift($aliases); -} - -$this->setAliases($aliases); -} - -if (null !== $name) { -$this->setName($name); -} - -if ('' === $this->description) { -$this->setDescription(static::getDefaultDescription() ?? ''); -} - -$this->configure(); -} - - - - - - -public function ignoreValidationErrors() -{ -$this->ignoreValidationErrors = true; -} - -public function setApplication(Application $application = null) -{ -$this->application = $application; -if ($application) { -$this->setHelperSet($application->getHelperSet()); -} else { -$this->helperSet = null; -} - -$this->fullDefinition = null; -} - -public function setHelperSet(HelperSet $helperSet) -{ -$this->helperSet = $helperSet; -} - - - - - - -public function getHelperSet() -{ -return $this->helperSet; -} - - - - - - -public function getApplication() -{ -return $this->application; -} - - - - - - - - - -public function isEnabled() -{ -return true; -} - - - - -protected function configure() -{ -} - - - - - - - - - - - - - - - -protected function execute(InputInterface $input, OutputInterface $output) -{ -throw new LogicException('You must override the execute() method in the concrete command class.'); -} - - - - - - - - -protected function interact(InputInterface $input, OutputInterface $output) -{ -} - - - - - - - - - - - -protected function initialize(InputInterface $input, OutputInterface $output) -{ -} - - - - - - - - - - - - - - - -public function run(InputInterface $input, OutputInterface $output) -{ - -$this->mergeApplicationDefinition(); - - -try { -$input->bind($this->getDefinition()); -} catch (ExceptionInterface $e) { -if (!$this->ignoreValidationErrors) { -throw $e; -} -} - -$this->initialize($input, $output); - -if (null !== $this->processTitle) { -if (\function_exists('cli_set_process_title')) { -if (!@cli_set_process_title($this->processTitle)) { -if ('Darwin' === \PHP_OS) { -$output->writeln('Running "cli_set_process_title" as an unprivileged user is not supported on MacOS.', OutputInterface::VERBOSITY_VERY_VERBOSE); -} else { -cli_set_process_title($this->processTitle); -} -} -} elseif (\function_exists('setproctitle')) { -setproctitle($this->processTitle); -} elseif (OutputInterface::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) { -$output->writeln('Install the proctitle PECL to be able to change the process title.'); -} -} - -if ($input->isInteractive()) { -$this->interact($input, $output); -} - - - - -if ($input->hasArgument('command') && null === $input->getArgument('command')) { -$input->setArgument('command', $this->getName()); -} - -$input->validate(); - -if ($this->code) { -$statusCode = ($this->code)($input, $output); -} else { -$statusCode = $this->execute($input, $output); - -if (!\is_int($statusCode)) { -throw new \TypeError(sprintf('Return value of "%s::execute()" must be of the type int, "%s" returned.', static::class, get_debug_type($statusCode))); -} -} - -return is_numeric($statusCode) ? (int) $statusCode : 0; -} - - - - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -} - - - - - - - - - - - - - - - -public function setCode(callable $code) -{ -if ($code instanceof \Closure) { -$r = new \ReflectionFunction($code); -if (null === $r->getClosureThis()) { -set_error_handler(static function () {}); -try { -if ($c = \Closure::bind($code, $this)) { -$code = $c; -} -} finally { -restore_error_handler(); -} -} -} - -$this->code = $code; - -return $this; -} - - - - - - - - - - -public function mergeApplicationDefinition(bool $mergeArgs = true) -{ -if (null === $this->application) { -return; -} - -$this->fullDefinition = new InputDefinition(); -$this->fullDefinition->setOptions($this->definition->getOptions()); -$this->fullDefinition->addOptions($this->application->getDefinition()->getOptions()); - -if ($mergeArgs) { -$this->fullDefinition->setArguments($this->application->getDefinition()->getArguments()); -$this->fullDefinition->addArguments($this->definition->getArguments()); -} else { -$this->fullDefinition->setArguments($this->definition->getArguments()); -} -} - - - - - - - - -public function setDefinition($definition) -{ -if ($definition instanceof InputDefinition) { -$this->definition = $definition; -} else { -$this->definition->setDefinition($definition); -} - -$this->fullDefinition = null; - -return $this; -} - - - - - - -public function getDefinition() -{ -return $this->fullDefinition ?? $this->getNativeDefinition(); -} - - - - - - - - - - - -public function getNativeDefinition() -{ -if (null === $this->definition) { -throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', static::class)); -} - -return $this->definition; -} - - - - - - - - - - - -public function addArgument(string $name, int $mode = null, string $description = '', $default = null) -{ -$this->definition->addArgument(new InputArgument($name, $mode, $description, $default)); -if (null !== $this->fullDefinition) { -$this->fullDefinition->addArgument(new InputArgument($name, $mode, $description, $default)); -} - -return $this; -} - - - - - - - - - - - - -public function addOption(string $name, $shortcut = null, int $mode = null, string $description = '', $default = null) -{ -$this->definition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); -if (null !== $this->fullDefinition) { -$this->fullDefinition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); -} - -return $this; -} - - - - - - - - - - - - - -public function setName(string $name) -{ -$this->validateName($name); - -$this->name = $name; - -return $this; -} - - - - - - - - - -public function setProcessTitle(string $title) -{ -$this->processTitle = $title; - -return $this; -} - - - - - - -public function getName() -{ -return $this->name; -} - - - - - - - - - -public function setHidden(bool $hidden ) -{ -$this->hidden = $hidden; - -return $this; -} - - - - -public function isHidden() -{ -return $this->hidden; -} - - - - - - -public function setDescription(string $description) -{ -$this->description = $description; - -return $this; -} - - - - - - -public function getDescription() -{ -return $this->description; -} - - - - - - -public function setHelp(string $help) -{ -$this->help = $help; - -return $this; -} - - - - - - -public function getHelp() -{ -return $this->help; -} - - - - - - - -public function getProcessedHelp() -{ -$name = $this->name; -$isSingleCommand = $this->application && $this->application->isSingleCommand(); - -$placeholders = [ -'%command.name%', -'%command.full_name%', -]; -$replacements = [ -$name, -$isSingleCommand ? $_SERVER['PHP_SELF'] : $_SERVER['PHP_SELF'].' '.$name, -]; - -return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription()); -} - - - - - - - - - - -public function setAliases(iterable $aliases) -{ -$list = []; - -foreach ($aliases as $alias) { -$this->validateName($alias); -$list[] = $alias; -} - -$this->aliases = \is_array($aliases) ? $aliases : $list; - -return $this; -} - - - - - - -public function getAliases() -{ -return $this->aliases; -} - - - - - - - - -public function getSynopsis(bool $short = false) -{ -$key = $short ? 'short' : 'long'; - -if (!isset($this->synopsis[$key])) { -$this->synopsis[$key] = trim(sprintf('%s %s', $this->name, $this->definition->getSynopsis($short))); -} - -return $this->synopsis[$key]; -} - - - - - - -public function addUsage(string $usage) -{ -if (!str_starts_with($usage, $this->name)) { -$usage = sprintf('%s %s', $this->name, $usage); -} - -$this->usages[] = $usage; - -return $this; -} - - - - - - -public function getUsages() -{ -return $this->usages; -} - - - - - - - - - -public function getHelper(string $name) -{ -if (null === $this->helperSet) { -throw new LogicException(sprintf('Cannot retrieve helper "%s" because there is no HelperSet defined. Did you forget to add your command to the application or to set the application on the command using the setApplication() method? You can also set the HelperSet directly using the setHelperSet() method.', $name)); -} - -return $this->helperSet->get($name); -} - - - - - - - - -private function validateName(string $name) -{ -if (!preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)) { -throw new InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name)); -} -} -} diff --git a/composer/vendor/symfony/console/Command/CompleteCommand.php b/composer/vendor/symfony/console/Command/CompleteCommand.php deleted file mode 100644 index f88805914..000000000 --- a/composer/vendor/symfony/console/Command/CompleteCommand.php +++ /dev/null @@ -1,205 +0,0 @@ -completionOutputs = $completionOutputs + ['bash' => BashCompletionOutput::class]; - -parent::__construct(); -} - -protected function configure(): void -{ -$this -->addOption('shell', 's', InputOption::VALUE_REQUIRED, 'The shell type ("'.implode('", "', array_keys($this->completionOutputs)).'")') -->addOption('input', 'i', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'An array of input tokens (e.g. COMP_WORDS or argv)') -->addOption('current', 'c', InputOption::VALUE_REQUIRED, 'The index of the "input" array that the cursor is in (e.g. COMP_CWORD)') -->addOption('symfony', 'S', InputOption::VALUE_REQUIRED, 'The version of the completion script') -; -} - -protected function initialize(InputInterface $input, OutputInterface $output) -{ -$this->isDebug = filter_var(getenv('SYMFONY_COMPLETION_DEBUG'), \FILTER_VALIDATE_BOOLEAN); -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -try { - - - - - - - - - - - -$shell = $input->getOption('shell'); -if (!$shell) { -throw new \RuntimeException('The "--shell" option must be set.'); -} - -if (!$completionOutput = $this->completionOutputs[$shell] ?? false) { -throw new \RuntimeException(sprintf('Shell completion is not supported for your shell: "%s" (supported: "%s").', $shell, implode('", "', array_keys($this->completionOutputs)))); -} - -$completionInput = $this->createCompletionInput($input); -$suggestions = new CompletionSuggestions(); - -$this->log([ -'', -''.date('Y-m-d H:i:s').'', -'Input: ("|" indicates the cursor position)', -' '.(string) $completionInput, -'Command:', -' '.(string) implode(' ', $_SERVER['argv']), -'Messages:', -]); - -$command = $this->findCommand($completionInput, $output); -if (null === $command) { -$this->log(' No command found, completing using the Application class.'); - -$this->getApplication()->complete($completionInput, $suggestions); -} elseif ( -$completionInput->mustSuggestArgumentValuesFor('command') -&& $command->getName() !== $completionInput->getCompletionValue() -&& !\in_array($completionInput->getCompletionValue(), $command->getAliases(), true) -) { -$this->log(' No command found, completing using the Application class.'); - - -$suggestions->suggestValues(array_filter(array_merge([$command->getName()], $command->getAliases()))); -} else { -$command->mergeApplicationDefinition(); -$completionInput->bind($command->getDefinition()); - -if (CompletionInput::TYPE_OPTION_NAME === $completionInput->getCompletionType()) { -$this->log(' Completing option names for the '.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).' command.'); - -$suggestions->suggestOptions($command->getDefinition()->getOptions()); -} else { -$this->log([ -' Completing using the '.\get_class($command instanceof LazyCommand ? $command->getCommand() : $command).' class.', -' Completing '.$completionInput->getCompletionType().' for '.$completionInput->getCompletionName().'', -]); -if (null !== $compval = $completionInput->getCompletionValue()) { -$this->log(' Current value: '.$compval.''); -} - -$command->complete($completionInput, $suggestions); -} -} - - -$completionOutput = new $completionOutput(); - -$this->log('Suggestions:'); -if ($options = $suggestions->getOptionSuggestions()) { -$this->log(' --'.implode(' --', array_map(function ($o) { return $o->getName(); }, $options))); -} elseif ($values = $suggestions->getValueSuggestions()) { -$this->log(' '.implode(' ', $values)); -} else { -$this->log(' No suggestions were provided'); -} - -$completionOutput->write($suggestions, $output); -} catch (\Throwable $e) { -$this->log([ -'Error!', -(string) $e, -]); - -if ($output->isDebug()) { -throw $e; -} - -return self::FAILURE; -} - -return self::SUCCESS; -} - -private function createCompletionInput(InputInterface $input): CompletionInput -{ -$currentIndex = $input->getOption('current'); -if (!$currentIndex || !ctype_digit($currentIndex)) { -throw new \RuntimeException('The "--current" option must be set and it must be an integer.'); -} - -$completionInput = CompletionInput::fromTokens($input->getOption('input'), (int) $currentIndex); - -try { -$completionInput->bind($this->getApplication()->getDefinition()); -} catch (ExceptionInterface $e) { -} - -return $completionInput; -} - -private function findCommand(CompletionInput $completionInput, OutputInterface $output): ?Command -{ -try { -$inputName = $completionInput->getFirstArgument(); -if (null === $inputName) { -return null; -} - -return $this->getApplication()->find($inputName); -} catch (CommandNotFoundException $e) { -} - -return null; -} - -private function log($messages): void -{ -if (!$this->isDebug) { -return; -} - -$commandName = basename($_SERVER['argv'][0]); -file_put_contents(sys_get_temp_dir().'/sf_'.$commandName.'.log', implode(\PHP_EOL, (array) $messages).\PHP_EOL, \FILE_APPEND); -} -} diff --git a/composer/vendor/symfony/console/Command/DumpCompletionCommand.php b/composer/vendor/symfony/console/Command/DumpCompletionCommand.php deleted file mode 100644 index 973a83572..000000000 --- a/composer/vendor/symfony/console/Command/DumpCompletionCommand.php +++ /dev/null @@ -1,139 +0,0 @@ -mustSuggestArgumentValuesFor('shell')) { -$suggestions->suggestValues($this->getSupportedShells()); -} -} - -protected function configure() -{ -$fullCommand = $_SERVER['PHP_SELF']; -$commandName = basename($fullCommand); -$fullCommand = @realpath($fullCommand) ?: $fullCommand; - -$this -->setHelp(<<%command.name% command dumps the shell completion script required -to use shell autocompletion (currently only bash completion is supported). - -Static installation -------------------- - -Dump the script to a global completion file and restart your shell: - - %command.full_name% bash | sudo tee /etc/bash_completion.d/{$commandName} - -Or dump the script to a local file and source it: - - %command.full_name% bash > completion.sh - - # source the file whenever you use the project - source completion.sh - - # or add this line at the end of your "~/.bashrc" file: - source /path/to/completion.sh - -Dynamic installation --------------------- - -Add this to the end of your shell configuration file (e.g. "~/.bashrc"): - - eval "$({$fullCommand} completion bash)" -EOH -) -->addArgument('shell', InputArgument::OPTIONAL, 'The shell type (e.g. "bash"), the value of the "$SHELL" env var will be used if this is not given') -->addOption('debug', null, InputOption::VALUE_NONE, 'Tail the completion debug log') -; -} - -protected function execute(InputInterface $input, OutputInterface $output): int -{ -$commandName = basename($_SERVER['argv'][0]); - -if ($input->getOption('debug')) { -$this->tailDebugLog($commandName, $output); - -return self::SUCCESS; -} - -$shell = $input->getArgument('shell') ?? self::guessShell(); -$completionFile = __DIR__.'/../Resources/completion.'.$shell; -if (!file_exists($completionFile)) { -$supportedShells = $this->getSupportedShells(); - -if ($output instanceof ConsoleOutputInterface) { -$output = $output->getErrorOutput(); -} -if ($shell) { -$output->writeln(sprintf('Detected shell "%s", which is not supported by Symfony shell completion (supported shells: "%s").', $shell, implode('", "', $supportedShells))); -} else { -$output->writeln(sprintf('Shell not detected, Symfony shell completion only supports "%s").', implode('", "', $supportedShells))); -} - -return self::INVALID; -} - -$output->write(str_replace(['{{ COMMAND_NAME }}', '{{ VERSION }}'], [$commandName, $this->getApplication()->getVersion()], file_get_contents($completionFile))); - -return self::SUCCESS; -} - -private static function guessShell(): string -{ -return basename($_SERVER['SHELL'] ?? ''); -} - -private function tailDebugLog(string $commandName, OutputInterface $output): void -{ -$debugFile = sys_get_temp_dir().'/sf_'.$commandName.'.log'; -if (!file_exists($debugFile)) { -touch($debugFile); -} -$process = new Process(['tail', '-f', $debugFile], null, null, null, 0); -$process->run(function (string $type, string $line) use ($output): void { -$output->write($line); -}); -} - - - - -private function getSupportedShells(): array -{ -return array_map(function ($f) { -return pathinfo($f, \PATHINFO_EXTENSION); -}, glob(__DIR__.'/../Resources/completion.*')); -} -} diff --git a/composer/vendor/symfony/console/Command/HelpCommand.php b/composer/vendor/symfony/console/Command/HelpCommand.php deleted file mode 100644 index 6c921071a..000000000 --- a/composer/vendor/symfony/console/Command/HelpCommand.php +++ /dev/null @@ -1,101 +0,0 @@ -ignoreValidationErrors(); - -$this -->setName('help') -->setDefinition([ -new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help'), -new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), -new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help'), -]) -->setDescription('Display help for a command') -->setHelp(<<<'EOF' -The %command.name% command displays help for a given command: - - %command.full_name% list - -You can also output the help in other formats by using the --format option: - - %command.full_name% --format=xml list - -To display the list of available commands, please use the list command. -EOF -) -; -} - -public function setCommand(Command $command) -{ -$this->command = $command; -} - - - - -protected function execute(InputInterface $input, OutputInterface $output) -{ -if (null === $this->command) { -$this->command = $this->getApplication()->find($input->getArgument('command_name')); -} - -$helper = new DescriptorHelper(); -$helper->describe($output, $this->command, [ -'format' => $input->getOption('format'), -'raw_text' => $input->getOption('raw'), -]); - -$this->command = null; - -return 0; -} - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -if ($input->mustSuggestArgumentValuesFor('command_name')) { -$descriptor = new ApplicationDescription($this->getApplication()); -$suggestions->suggestValues(array_keys($descriptor->getCommands())); - -return; -} - -if ($input->mustSuggestOptionValuesFor('format')) { -$helper = new DescriptorHelper(); -$suggestions->suggestValues($helper->getFormats()); -} -} -} diff --git a/composer/vendor/symfony/console/Command/LazyCommand.php b/composer/vendor/symfony/console/Command/LazyCommand.php deleted file mode 100644 index 47a883052..000000000 --- a/composer/vendor/symfony/console/Command/LazyCommand.php +++ /dev/null @@ -1,218 +0,0 @@ -setName($name) -->setAliases($aliases) -->setHidden($isHidden) -->setDescription($description); - -$this->command = $commandFactory; -$this->isEnabled = $isEnabled; -} - -public function ignoreValidationErrors(): void -{ -$this->getCommand()->ignoreValidationErrors(); -} - -public function setApplication(Application $application = null): void -{ -if ($this->command instanceof parent) { -$this->command->setApplication($application); -} - -parent::setApplication($application); -} - -public function setHelperSet(HelperSet $helperSet): void -{ -if ($this->command instanceof parent) { -$this->command->setHelperSet($helperSet); -} - -parent::setHelperSet($helperSet); -} - -public function isEnabled(): bool -{ -return $this->isEnabled ?? $this->getCommand()->isEnabled(); -} - -public function run(InputInterface $input, OutputInterface $output): int -{ -return $this->getCommand()->run($input, $output); -} - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -$this->getCommand()->complete($input, $suggestions); -} - - - - -public function setCode(callable $code): self -{ -$this->getCommand()->setCode($code); - -return $this; -} - - - - -public function mergeApplicationDefinition(bool $mergeArgs = true): void -{ -$this->getCommand()->mergeApplicationDefinition($mergeArgs); -} - - - - -public function setDefinition($definition): self -{ -$this->getCommand()->setDefinition($definition); - -return $this; -} - -public function getDefinition(): InputDefinition -{ -return $this->getCommand()->getDefinition(); -} - -public function getNativeDefinition(): InputDefinition -{ -return $this->getCommand()->getNativeDefinition(); -} - - - - -public function addArgument(string $name, int $mode = null, string $description = '', $default = null): self -{ -$this->getCommand()->addArgument($name, $mode, $description, $default); - -return $this; -} - - - - -public function addOption(string $name, $shortcut = null, int $mode = null, string $description = '', $default = null): self -{ -$this->getCommand()->addOption($name, $shortcut, $mode, $description, $default); - -return $this; -} - - - - -public function setProcessTitle(string $title): self -{ -$this->getCommand()->setProcessTitle($title); - -return $this; -} - - - - -public function setHelp(string $help): self -{ -$this->getCommand()->setHelp($help); - -return $this; -} - -public function getHelp(): string -{ -return $this->getCommand()->getHelp(); -} - -public function getProcessedHelp(): string -{ -return $this->getCommand()->getProcessedHelp(); -} - -public function getSynopsis(bool $short = false): string -{ -return $this->getCommand()->getSynopsis($short); -} - - - - -public function addUsage(string $usage): self -{ -$this->getCommand()->addUsage($usage); - -return $this; -} - -public function getUsages(): array -{ -return $this->getCommand()->getUsages(); -} - - - - -public function getHelper(string $name) -{ -return $this->getCommand()->getHelper($name); -} - -public function getCommand(): parent -{ -if (!$this->command instanceof \Closure) { -return $this->command; -} - -$command = $this->command = ($this->command)(); -$command->setApplication($this->getApplication()); - -if (null !== $this->getHelperSet()) { -$command->setHelperSet($this->getHelperSet()); -} - -$command->setName($this->getName()) -->setAliases($this->getAliases()) -->setHidden($this->isHidden()) -->setDescription($this->getDescription()); - - -$command->getDefinition(); - -return $command; -} -} diff --git a/composer/vendor/symfony/console/Command/ListCommand.php b/composer/vendor/symfony/console/Command/ListCommand.php deleted file mode 100644 index d97263be2..000000000 --- a/composer/vendor/symfony/console/Command/ListCommand.php +++ /dev/null @@ -1,95 +0,0 @@ -setName('list') -->setDefinition([ -new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'), -new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), -new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), -new InputOption('short', null, InputOption::VALUE_NONE, 'To skip describing commands\' arguments'), -]) -->setDescription('List commands') -->setHelp(<<<'EOF' -The %command.name% command lists all commands: - - %command.full_name% - -You can also display the commands for a specific namespace: - - %command.full_name% test - -You can also output the information in other formats by using the --format option: - - %command.full_name% --format=xml - -It's also possible to get raw list of commands (useful for embedding command runner): - - %command.full_name% --raw -EOF -) -; -} - - - - -protected function execute(InputInterface $input, OutputInterface $output) -{ -$helper = new DescriptorHelper(); -$helper->describe($output, $this->getApplication(), [ -'format' => $input->getOption('format'), -'raw_text' => $input->getOption('raw'), -'namespace' => $input->getArgument('namespace'), -'short' => $input->getOption('short'), -]); - -return 0; -} - -public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void -{ -if ($input->mustSuggestArgumentValuesFor('namespace')) { -$descriptor = new ApplicationDescription($this->getApplication()); -$suggestions->suggestValues(array_keys($descriptor->getNamespaces())); - -return; -} - -if ($input->mustSuggestOptionValuesFor('format')) { -$helper = new DescriptorHelper(); -$suggestions->suggestValues($helper->getFormats()); -} -} -} diff --git a/composer/vendor/symfony/console/Command/LockableTrait.php b/composer/vendor/symfony/console/Command/LockableTrait.php deleted file mode 100644 index ddf2d44c8..000000000 --- a/composer/vendor/symfony/console/Command/LockableTrait.php +++ /dev/null @@ -1,69 +0,0 @@ -lock) { -throw new LogicException('A lock is already in place.'); -} - -if (SemaphoreStore::isSupported()) { -$store = new SemaphoreStore(); -} else { -$store = new FlockStore(); -} - -$this->lock = (new LockFactory($store))->createLock($name ?: $this->getName()); -if (!$this->lock->acquire($blocking)) { -$this->lock = null; - -return false; -} - -return true; -} - - - - -private function release() -{ -if ($this->lock) { -$this->lock->release(); -$this->lock = null; -} -} -} diff --git a/composer/vendor/symfony/console/Command/SignalableCommandInterface.php b/composer/vendor/symfony/console/Command/SignalableCommandInterface.php deleted file mode 100644 index 6da52d12d..000000000 --- a/composer/vendor/symfony/console/Command/SignalableCommandInterface.php +++ /dev/null @@ -1,30 +0,0 @@ -container = $container; -$this->commandMap = $commandMap; -} - - - - -public function get(string $name) -{ -if (!$this->has($name)) { -throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); -} - -return $this->container->get($this->commandMap[$name]); -} - - - - -public function has(string $name) -{ -return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); -} - - - - -public function getNames() -{ -return array_keys($this->commandMap); -} -} diff --git a/composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php b/composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php deleted file mode 100644 index 3ae38caba..000000000 --- a/composer/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php +++ /dev/null @@ -1,62 +0,0 @@ -factories = $factories; -} - - - - -public function has(string $name) -{ -return isset($this->factories[$name]); -} - - - - -public function get(string $name) -{ -if (!isset($this->factories[$name])) { -throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); -} - -$factory = $this->factories[$name]; - -return $factory(); -} - - - - -public function getNames() -{ -return array_keys($this->factories); -} -} diff --git a/composer/vendor/symfony/console/Completion/CompletionInput.php b/composer/vendor/symfony/console/Completion/CompletionInput.php deleted file mode 100644 index 54b08edd4..000000000 --- a/composer/vendor/symfony/console/Completion/CompletionInput.php +++ /dev/null @@ -1,249 +0,0 @@ -tokens = $tokens; -$input->currentIndex = $currentIndex; - -return $input; -} - - - - -public function bind(InputDefinition $definition): void -{ -parent::bind($definition); - -$relevantToken = $this->getRelevantToken(); -if ('-' === $relevantToken[0]) { - -[$optionToken, $optionValue] = explode('=', $relevantToken, 2) + ['', '']; - -$option = $this->getOptionFromToken($optionToken); -if (null === $option && !$this->isCursorFree()) { -$this->completionType = self::TYPE_OPTION_NAME; -$this->completionValue = $relevantToken; - -return; -} - -if (null !== $option && $option->acceptValue()) { -$this->completionType = self::TYPE_OPTION_VALUE; -$this->completionName = $option->getName(); -$this->completionValue = $optionValue ?: (!str_starts_with($optionToken, '--') ? substr($optionToken, 2) : ''); - -return; -} -} - -$previousToken = $this->tokens[$this->currentIndex - 1]; -if ('-' === $previousToken[0] && '' !== trim($previousToken, '-')) { - -$previousOption = $this->getOptionFromToken($previousToken); -if (null !== $previousOption && $previousOption->acceptValue()) { -$this->completionType = self::TYPE_OPTION_VALUE; -$this->completionName = $previousOption->getName(); -$this->completionValue = $relevantToken; - -return; -} -} - - -$this->completionType = self::TYPE_ARGUMENT_VALUE; - -foreach ($this->definition->getArguments() as $argumentName => $argument) { -if (!isset($this->arguments[$argumentName])) { -break; -} - -$argumentValue = $this->arguments[$argumentName]; -$this->completionName = $argumentName; -if (\is_array($argumentValue)) { -$this->completionValue = $argumentValue ? $argumentValue[array_key_last($argumentValue)] : null; -} else { -$this->completionValue = $argumentValue; -} -} - -if ($this->currentIndex >= \count($this->tokens)) { -if (!isset($this->arguments[$argumentName]) || $this->definition->getArgument($argumentName)->isArray()) { -$this->completionName = $argumentName; -$this->completionValue = ''; -} else { - -$this->completionType = self::TYPE_NONE; -$this->completionName = null; -$this->completionValue = ''; -} -} -} - - - - - - - - - - - -public function getCompletionType(): string -{ -return $this->completionType; -} - - - - - - -public function getCompletionName(): ?string -{ -return $this->completionName; -} - - - - -public function getCompletionValue(): string -{ -return $this->completionValue; -} - -public function mustSuggestOptionValuesFor(string $optionName): bool -{ -return self::TYPE_OPTION_VALUE === $this->getCompletionType() && $optionName === $this->getCompletionName(); -} - -public function mustSuggestArgumentValuesFor(string $argumentName): bool -{ -return self::TYPE_ARGUMENT_VALUE === $this->getCompletionType() && $argumentName === $this->getCompletionName(); -} - -protected function parseToken(string $token, bool $parseOptions): bool -{ -try { -return parent::parseToken($token, $parseOptions); -} catch (RuntimeException $e) { - -} - -return $parseOptions; -} - -private function getOptionFromToken(string $optionToken): ?InputOption -{ -$optionName = ltrim($optionToken, '-'); -if (!$optionName) { -return null; -} - -if ('-' === ($optionToken[1] ?? ' ')) { - -return $this->definition->hasOption($optionName) ? $this->definition->getOption($optionName) : null; -} - - -return $this->definition->hasShortcut($optionName[0]) ? $this->definition->getOptionForShortcut($optionName[0]) : null; -} - - - - -private function getRelevantToken(): string -{ -return $this->tokens[$this->isCursorFree() ? $this->currentIndex - 1 : $this->currentIndex]; -} - - - - -private function isCursorFree(): bool -{ -$nrOfTokens = \count($this->tokens); -if ($this->currentIndex > $nrOfTokens) { -throw new \LogicException('Current index is invalid, it must be the number of input tokens or one more.'); -} - -return $this->currentIndex >= $nrOfTokens; -} - -public function __toString() -{ -$str = ''; -foreach ($this->tokens as $i => $token) { -$str .= $token; - -if ($this->currentIndex === $i) { -$str .= '|'; -} - -$str .= ' '; -} - -if ($this->currentIndex > $i) { -$str .= '|'; -} - -return rtrim($str); -} -} diff --git a/composer/vendor/symfony/console/Completion/CompletionSuggestions.php b/composer/vendor/symfony/console/Completion/CompletionSuggestions.php deleted file mode 100644 index 4d16e5c3a..000000000 --- a/composer/vendor/symfony/console/Completion/CompletionSuggestions.php +++ /dev/null @@ -1,99 +0,0 @@ -valueSuggestions[] = !$value instanceof Suggestion ? new Suggestion($value) : $value; - -return $this; -} - - - - - - - - -public function suggestValues(array $values): self -{ -foreach ($values as $value) { -$this->suggestValue($value); -} - -return $this; -} - - - - - - -public function suggestOption(InputOption $option): self -{ -$this->optionSuggestions[] = $option; - -return $this; -} - - - - - - - - -public function suggestOptions(array $options): self -{ -foreach ($options as $option) { -$this->suggestOption($option); -} - -return $this; -} - - - - -public function getOptionSuggestions(): array -{ -return $this->optionSuggestions; -} - - - - -public function getValueSuggestions(): array -{ -return $this->valueSuggestions; -} -} diff --git a/composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php b/composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php deleted file mode 100644 index 0913eac7e..000000000 --- a/composer/vendor/symfony/console/Completion/Output/BashCompletionOutput.php +++ /dev/null @@ -1,33 +0,0 @@ -getValueSuggestions(); -foreach ($suggestions->getOptionSuggestions() as $option) { -$values[] = '--'.$option->getName(); -if ($option->isNegatable()) { -$values[] = '--no-'.$option->getName(); -} -} -$output->writeln(implode("\n", $values)); -} -} diff --git a/composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php b/composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php deleted file mode 100644 index d2d86c929..000000000 --- a/composer/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php +++ /dev/null @@ -1,25 +0,0 @@ -value = $value; -} - -public function getValue(): string -{ -return $this->value; -} - -public function __toString(): string -{ -return $this->getValue(); -} -} diff --git a/composer/vendor/symfony/console/ConsoleEvents.php b/composer/vendor/symfony/console/ConsoleEvents.php deleted file mode 100644 index 7e8291c37..000000000 --- a/composer/vendor/symfony/console/ConsoleEvents.php +++ /dev/null @@ -1,72 +0,0 @@ - self::COMMAND, -ConsoleErrorEvent::class => self::ERROR, -ConsoleSignalEvent::class => self::SIGNAL, -ConsoleTerminateEvent::class => self::TERMINATE, -]; -} diff --git a/composer/vendor/symfony/console/Cursor.php b/composer/vendor/symfony/console/Cursor.php deleted file mode 100644 index 7ab735e33..000000000 --- a/composer/vendor/symfony/console/Cursor.php +++ /dev/null @@ -1,207 +0,0 @@ -output = $output; -$this->input = $input ?? (\defined('STDIN') ? \STDIN : fopen('php://input', 'r+')); -} - - - - -public function moveUp(int $lines = 1): self -{ -$this->output->write(sprintf("\x1b[%dA", $lines)); - -return $this; -} - - - - -public function moveDown(int $lines = 1): self -{ -$this->output->write(sprintf("\x1b[%dB", $lines)); - -return $this; -} - - - - -public function moveRight(int $columns = 1): self -{ -$this->output->write(sprintf("\x1b[%dC", $columns)); - -return $this; -} - - - - -public function moveLeft(int $columns = 1): self -{ -$this->output->write(sprintf("\x1b[%dD", $columns)); - -return $this; -} - - - - -public function moveToColumn(int $column): self -{ -$this->output->write(sprintf("\x1b[%dG", $column)); - -return $this; -} - - - - -public function moveToPosition(int $column, int $row): self -{ -$this->output->write(sprintf("\x1b[%d;%dH", $row + 1, $column)); - -return $this; -} - - - - -public function savePosition(): self -{ -$this->output->write("\x1b7"); - -return $this; -} - - - - -public function restorePosition(): self -{ -$this->output->write("\x1b8"); - -return $this; -} - - - - -public function hide(): self -{ -$this->output->write("\x1b[?25l"); - -return $this; -} - - - - -public function show(): self -{ -$this->output->write("\x1b[?25h\x1b[?0c"); - -return $this; -} - - - - - - -public function clearLine(): self -{ -$this->output->write("\x1b[2K"); - -return $this; -} - - - - -public function clearLineAfter(): self -{ -$this->output->write("\x1b[K"); - -return $this; -} - - - - - - -public function clearOutput(): self -{ -$this->output->write("\x1b[0J"); - -return $this; -} - - - - - - -public function clearScreen(): self -{ -$this->output->write("\x1b[2J"); - -return $this; -} - - - - -public function getCurrentPosition(): array -{ -static $isTtySupported; - -if (null === $isTtySupported && \function_exists('proc_open')) { -$isTtySupported = (bool) @proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); -} - -if (!$isTtySupported) { -return [1, 1]; -} - -$sttyMode = shell_exec('stty -g'); -shell_exec('stty -icanon -echo'); - -@fwrite($this->input, "\033[6n"); - -$code = trim(fread($this->input, 1024)); - -shell_exec(sprintf('stty %s', $sttyMode)); - -sscanf($code, "\033[%d;%dR", $row, $col); - -return [$col, $row]; -} -} diff --git a/composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php b/composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php deleted file mode 100644 index 28813ff63..000000000 --- a/composer/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php +++ /dev/null @@ -1,148 +0,0 @@ -commandLoaderServiceId = $commandLoaderServiceId; -$this->commandTag = $commandTag; -$this->noPreloadTag = $noPreloadTag; -$this->privateTagName = $privateTagName; -} - -public function process(ContainerBuilder $container) -{ -$commandServices = $container->findTaggedServiceIds($this->commandTag, true); -$lazyCommandMap = []; -$lazyCommandRefs = []; -$serviceIds = []; - -foreach ($commandServices as $id => $tags) { -$definition = $container->getDefinition($id); -$definition->addTag($this->noPreloadTag); -$class = $container->getParameterBag()->resolveValue($definition->getClass()); - -if (isset($tags[0]['command'])) { -$aliases = $tags[0]['command']; -} else { -if (!$r = $container->getReflectionClass($class)) { -throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); -} -if (!$r->isSubclassOf(Command::class)) { -throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); -} -$aliases = str_replace('%', '%%', $class::getDefaultName() ?? ''); -} - -$aliases = explode('|', $aliases ?? ''); -$commandName = array_shift($aliases); - -if ($isHidden = '' === $commandName) { -$commandName = array_shift($aliases); -} - -if (null === $commandName) { -if (!$definition->isPublic() || $definition->isPrivate() || $definition->hasTag($this->privateTagName)) { -$commandId = 'console.command.public_alias.'.$id; -$container->setAlias($commandId, $id)->setPublic(true); -$id = $commandId; -} -$serviceIds[] = $id; - -continue; -} - -$description = $tags[0]['description'] ?? null; - -unset($tags[0]); -$lazyCommandMap[$commandName] = $id; -$lazyCommandRefs[$id] = new TypedReference($id, $class); - -foreach ($aliases as $alias) { -$lazyCommandMap[$alias] = $id; -} - -foreach ($tags as $tag) { -if (isset($tag['command'])) { -$aliases[] = $tag['command']; -$lazyCommandMap[$tag['command']] = $id; -} - -$description = $description ?? $tag['description'] ?? null; -} - -$definition->addMethodCall('setName', [$commandName]); - -if ($aliases) { -$definition->addMethodCall('setAliases', [$aliases]); -} - -if ($isHidden) { -$definition->addMethodCall('setHidden', [true]); -} - -if (!$description) { -if (!$r = $container->getReflectionClass($class)) { -throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); -} -if (!$r->isSubclassOf(Command::class)) { -throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); -} -$description = str_replace('%', '%%', $class::getDefaultDescription() ?? ''); -} - -if ($description) { -$definition->addMethodCall('setDescription', [$description]); - -$container->register('.'.$id.'.lazy', LazyCommand::class) -->setArguments([$commandName, $aliases, $description, $isHidden, new ServiceClosureArgument($lazyCommandRefs[$id])]); - -$lazyCommandRefs[$id] = new Reference('.'.$id.'.lazy'); -} -} - -$container -->register($this->commandLoaderServiceId, ContainerCommandLoader::class) -->setPublic(true) -->addTag($this->noPreloadTag) -->setArguments([ServiceLocatorTagPass::register($container, $lazyCommandRefs), $lazyCommandMap]); - -$container->setParameter('console.command.ids', $serviceIds); -} -} diff --git a/composer/vendor/symfony/console/Descriptor/ApplicationDescription.php b/composer/vendor/symfony/console/Descriptor/ApplicationDescription.php deleted file mode 100644 index f215510cb..000000000 --- a/composer/vendor/symfony/console/Descriptor/ApplicationDescription.php +++ /dev/null @@ -1,143 +0,0 @@ -application = $application; -$this->namespace = $namespace; -$this->showHidden = $showHidden; -} - -public function getNamespaces(): array -{ -if (null === $this->namespaces) { -$this->inspectApplication(); -} - -return $this->namespaces; -} - - - - -public function getCommands(): array -{ -if (null === $this->commands) { -$this->inspectApplication(); -} - -return $this->commands; -} - - - - -public function getCommand(string $name): Command -{ -if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) { -throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); -} - -return $this->commands[$name] ?? $this->aliases[$name]; -} - -private function inspectApplication() -{ -$this->commands = []; -$this->namespaces = []; - -$all = $this->application->all($this->namespace ? $this->application->findNamespace($this->namespace) : null); -foreach ($this->sortCommands($all) as $namespace => $commands) { -$names = []; - - -foreach ($commands as $name => $command) { -if (!$command->getName() || (!$this->showHidden && $command->isHidden())) { -continue; -} - -if ($command->getName() === $name) { -$this->commands[$name] = $command; -} else { -$this->aliases[$name] = $command; -} - -$names[] = $name; -} - -$this->namespaces[$namespace] = ['id' => $namespace, 'commands' => $names]; -} -} - -private function sortCommands(array $commands): array -{ -$namespacedCommands = []; -$globalCommands = []; -$sortedCommands = []; -foreach ($commands as $name => $command) { -$key = $this->application->extractNamespace($name, 1); -if (\in_array($key, ['', self::GLOBAL_NAMESPACE], true)) { -$globalCommands[$name] = $command; -} else { -$namespacedCommands[$key][$name] = $command; -} -} - -if ($globalCommands) { -ksort($globalCommands); -$sortedCommands[self::GLOBAL_NAMESPACE] = $globalCommands; -} - -if ($namespacedCommands) { -ksort($namespacedCommands, \SORT_STRING); -foreach ($namespacedCommands as $key => $commandsSet) { -ksort($commandsSet); -$sortedCommands[$key] = $commandsSet; -} -} - -return $sortedCommands; -} -} diff --git a/composer/vendor/symfony/console/Descriptor/Descriptor.php b/composer/vendor/symfony/console/Descriptor/Descriptor.php deleted file mode 100644 index 523283dc4..000000000 --- a/composer/vendor/symfony/console/Descriptor/Descriptor.php +++ /dev/null @@ -1,94 +0,0 @@ -output = $output; - -switch (true) { -case $object instanceof InputArgument: -$this->describeInputArgument($object, $options); -break; -case $object instanceof InputOption: -$this->describeInputOption($object, $options); -break; -case $object instanceof InputDefinition: -$this->describeInputDefinition($object, $options); -break; -case $object instanceof Command: -$this->describeCommand($object, $options); -break; -case $object instanceof Application: -$this->describeApplication($object, $options); -break; -default: -throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_debug_type($object))); -} -} - - - - -protected function write(string $content, bool $decorated = false) -{ -$this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW); -} - - - - -abstract protected function describeInputArgument(InputArgument $argument, array $options = []); - - - - -abstract protected function describeInputOption(InputOption $option, array $options = []); - - - - -abstract protected function describeInputDefinition(InputDefinition $definition, array $options = []); - - - - -abstract protected function describeCommand(Command $command, array $options = []); - - - - -abstract protected function describeApplication(Application $application, array $options = []); -} diff --git a/composer/vendor/symfony/console/Descriptor/DescriptorInterface.php b/composer/vendor/symfony/console/Descriptor/DescriptorInterface.php deleted file mode 100644 index 621df656a..000000000 --- a/composer/vendor/symfony/console/Descriptor/DescriptorInterface.php +++ /dev/null @@ -1,24 +0,0 @@ -writeData($this->getInputArgumentData($argument), $options); -} - - - - -protected function describeInputOption(InputOption $option, array $options = []) -{ -$this->writeData($this->getInputOptionData($option), $options); -if ($option->isNegatable()) { -$this->writeData($this->getInputOptionData($option, true), $options); -} -} - - - - -protected function describeInputDefinition(InputDefinition $definition, array $options = []) -{ -$this->writeData($this->getInputDefinitionData($definition), $options); -} - - - - -protected function describeCommand(Command $command, array $options = []) -{ -$this->writeData($this->getCommandData($command, $options['short'] ?? false), $options); -} - - - - -protected function describeApplication(Application $application, array $options = []) -{ -$describedNamespace = $options['namespace'] ?? null; -$description = new ApplicationDescription($application, $describedNamespace, true); -$commands = []; - -foreach ($description->getCommands() as $command) { -$commands[] = $this->getCommandData($command, $options['short'] ?? false); -} - -$data = []; -if ('UNKNOWN' !== $application->getName()) { -$data['application']['name'] = $application->getName(); -if ('UNKNOWN' !== $application->getVersion()) { -$data['application']['version'] = $application->getVersion(); -} -} - -$data['commands'] = $commands; - -if ($describedNamespace) { -$data['namespace'] = $describedNamespace; -} else { -$data['namespaces'] = array_values($description->getNamespaces()); -} - -$this->writeData($data, $options); -} - - - - -private function writeData(array $data, array $options) -{ -$flags = $options['json_encoding'] ?? 0; - -$this->write(json_encode($data, $flags)); -} - -private function getInputArgumentData(InputArgument $argument): array -{ -return [ -'name' => $argument->getName(), -'is_required' => $argument->isRequired(), -'is_array' => $argument->isArray(), -'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()), -'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault(), -]; -} - -private function getInputOptionData(InputOption $option, bool $negated = false): array -{ -return $negated ? [ -'name' => '--no-'.$option->getName(), -'shortcut' => '', -'accept_value' => false, -'is_value_required' => false, -'is_multiple' => false, -'description' => 'Negate the "--'.$option->getName().'" option', -'default' => false, -] : [ -'name' => '--'.$option->getName(), -'shortcut' => $option->getShortcut() ? '-'.str_replace('|', '|-', $option->getShortcut()) : '', -'accept_value' => $option->acceptValue(), -'is_value_required' => $option->isValueRequired(), -'is_multiple' => $option->isArray(), -'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()), -'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault(), -]; -} - -private function getInputDefinitionData(InputDefinition $definition): array -{ -$inputArguments = []; -foreach ($definition->getArguments() as $name => $argument) { -$inputArguments[$name] = $this->getInputArgumentData($argument); -} - -$inputOptions = []; -foreach ($definition->getOptions() as $name => $option) { -$inputOptions[$name] = $this->getInputOptionData($option); -if ($option->isNegatable()) { -$inputOptions['no-'.$name] = $this->getInputOptionData($option, true); -} -} - -return ['arguments' => $inputArguments, 'options' => $inputOptions]; -} - -private function getCommandData(Command $command, bool $short = false): array -{ -$data = [ -'name' => $command->getName(), -'description' => $command->getDescription(), -]; - -if ($short) { -$data += [ -'usage' => $command->getAliases(), -]; -} else { -$command->mergeApplicationDefinition(false); - -$data += [ -'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), -'help' => $command->getProcessedHelp(), -'definition' => $this->getInputDefinitionData($command->getDefinition()), -]; -} - -$data['hidden'] = $command->isHidden(); - -return $data; -} -} diff --git a/composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php b/composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php deleted file mode 100644 index 08d38d263..000000000 --- a/composer/vendor/symfony/console/Descriptor/MarkdownDescriptor.php +++ /dev/null @@ -1,206 +0,0 @@ -isDecorated(); -$output->setDecorated(false); - -parent::describe($output, $object, $options); - -$output->setDecorated($decorated); -} - - - - -protected function write(string $content, bool $decorated = true) -{ -parent::write($content, $decorated); -} - - - - -protected function describeInputArgument(InputArgument $argument, array $options = []) -{ -$this->write( -'#### `'.($argument->getName() ?: '')."`\n\n" -.($argument->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $argument->getDescription())."\n\n" : '') -.'* Is required: '.($argument->isRequired() ? 'yes' : 'no')."\n" -.'* Is array: '.($argument->isArray() ? 'yes' : 'no')."\n" -.'* Default: `'.str_replace("\n", '', var_export($argument->getDefault(), true)).'`' -); -} - - - - -protected function describeInputOption(InputOption $option, array $options = []) -{ -$name = '--'.$option->getName(); -if ($option->isNegatable()) { -$name .= '|--no-'.$option->getName(); -} -if ($option->getShortcut()) { -$name .= '|-'.str_replace('|', '|-', $option->getShortcut()).''; -} - -$this->write( -'#### `'.$name.'`'."\n\n" -.($option->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $option->getDescription())."\n\n" : '') -.'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n" -.'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n" -.'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n" -.'* Is negatable: '.($option->isNegatable() ? 'yes' : 'no')."\n" -.'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`' -); -} - - - - -protected function describeInputDefinition(InputDefinition $definition, array $options = []) -{ -if ($showArguments = \count($definition->getArguments()) > 0) { -$this->write('### Arguments'); -foreach ($definition->getArguments() as $argument) { -$this->write("\n\n"); -if (null !== $describeInputArgument = $this->describeInputArgument($argument)) { -$this->write($describeInputArgument); -} -} -} - -if (\count($definition->getOptions()) > 0) { -if ($showArguments) { -$this->write("\n\n"); -} - -$this->write('### Options'); -foreach ($definition->getOptions() as $option) { -$this->write("\n\n"); -if (null !== $describeInputOption = $this->describeInputOption($option)) { -$this->write($describeInputOption); -} -} -} -} - - - - -protected function describeCommand(Command $command, array $options = []) -{ -if ($options['short'] ?? false) { -$this->write( -'`'.$command->getName()."`\n" -.str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" -.($command->getDescription() ? $command->getDescription()."\n\n" : '') -.'### Usage'."\n\n" -.array_reduce($command->getAliases(), function ($carry, $usage) { -return $carry.'* `'.$usage.'`'."\n"; -}) -); - -return; -} - -$command->mergeApplicationDefinition(false); - -$this->write( -'`'.$command->getName()."`\n" -.str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" -.($command->getDescription() ? $command->getDescription()."\n\n" : '') -.'### Usage'."\n\n" -.array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), function ($carry, $usage) { -return $carry.'* `'.$usage.'`'."\n"; -}) -); - -if ($help = $command->getProcessedHelp()) { -$this->write("\n"); -$this->write($help); -} - -$definition = $command->getDefinition(); -if ($definition->getOptions() || $definition->getArguments()) { -$this->write("\n\n"); -$this->describeInputDefinition($definition); -} -} - - - - -protected function describeApplication(Application $application, array $options = []) -{ -$describedNamespace = $options['namespace'] ?? null; -$description = new ApplicationDescription($application, $describedNamespace); -$title = $this->getApplicationTitle($application); - -$this->write($title."\n".str_repeat('=', Helper::width($title))); - -foreach ($description->getNamespaces() as $namespace) { -if (ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { -$this->write("\n\n"); -$this->write('**'.$namespace['id'].':**'); -} - -$this->write("\n\n"); -$this->write(implode("\n", array_map(function ($commandName) use ($description) { -return sprintf('* [`%s`](#%s)', $commandName, str_replace(':', '', $description->getCommand($commandName)->getName())); -}, $namespace['commands']))); -} - -foreach ($description->getCommands() as $command) { -$this->write("\n\n"); -if (null !== $describeCommand = $this->describeCommand($command, $options)) { -$this->write($describeCommand); -} -} -} - -private function getApplicationTitle(Application $application): string -{ -if ('UNKNOWN' !== $application->getName()) { -if ('UNKNOWN' !== $application->getVersion()) { -return sprintf('%s %s', $application->getName(), $application->getVersion()); -} - -return $application->getName(); -} - -return 'Console Tool'; -} -} diff --git a/composer/vendor/symfony/console/Descriptor/TextDescriptor.php b/composer/vendor/symfony/console/Descriptor/TextDescriptor.php deleted file mode 100644 index e7e1ddadb..000000000 --- a/composer/vendor/symfony/console/Descriptor/TextDescriptor.php +++ /dev/null @@ -1,341 +0,0 @@ -getDefault() && (!\is_array($argument->getDefault()) || \count($argument->getDefault()))) { -$default = sprintf(' [default: %s]', $this->formatDefaultValue($argument->getDefault())); -} else { -$default = ''; -} - -$totalWidth = $options['total_width'] ?? Helper::width($argument->getName()); -$spacingWidth = $totalWidth - \strlen($argument->getName()); - -$this->writeText(sprintf(' %s %s%s%s', -$argument->getName(), -str_repeat(' ', $spacingWidth), - -preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $argument->getDescription()), -$default -), $options); -} - - - - -protected function describeInputOption(InputOption $option, array $options = []) -{ -if ($option->acceptValue() && null !== $option->getDefault() && (!\is_array($option->getDefault()) || \count($option->getDefault()))) { -$default = sprintf(' [default: %s]', $this->formatDefaultValue($option->getDefault())); -} else { -$default = ''; -} - -$value = ''; -if ($option->acceptValue()) { -$value = '='.strtoupper($option->getName()); - -if ($option->isValueOptional()) { -$value = '['.$value.']'; -} -} - -$totalWidth = $options['total_width'] ?? $this->calculateTotalWidthForOptions([$option]); -$synopsis = sprintf('%s%s', -$option->getShortcut() ? sprintf('-%s, ', $option->getShortcut()) : ' ', -sprintf($option->isNegatable() ? '--%1$s|--no-%1$s' : '--%1$s%2$s', $option->getName(), $value) -); - -$spacingWidth = $totalWidth - Helper::width($synopsis); - -$this->writeText(sprintf(' %s %s%s%s%s', -$synopsis, -str_repeat(' ', $spacingWidth), - -preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $option->getDescription()), -$default, -$option->isArray() ? ' (multiple values allowed)' : '' -), $options); -} - - - - -protected function describeInputDefinition(InputDefinition $definition, array $options = []) -{ -$totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); -foreach ($definition->getArguments() as $argument) { -$totalWidth = max($totalWidth, Helper::width($argument->getName())); -} - -if ($definition->getArguments()) { -$this->writeText('Arguments:', $options); -$this->writeText("\n"); -foreach ($definition->getArguments() as $argument) { -$this->describeInputArgument($argument, array_merge($options, ['total_width' => $totalWidth])); -$this->writeText("\n"); -} -} - -if ($definition->getArguments() && $definition->getOptions()) { -$this->writeText("\n"); -} - -if ($definition->getOptions()) { -$laterOptions = []; - -$this->writeText('Options:', $options); -foreach ($definition->getOptions() as $option) { -if (\strlen($option->getShortcut() ?? '') > 1) { -$laterOptions[] = $option; -continue; -} -$this->writeText("\n"); -$this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); -} -foreach ($laterOptions as $option) { -$this->writeText("\n"); -$this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); -} -} -} - - - - -protected function describeCommand(Command $command, array $options = []) -{ -$command->mergeApplicationDefinition(false); - -if ($description = $command->getDescription()) { -$this->writeText('Description:', $options); -$this->writeText("\n"); -$this->writeText(' '.$description); -$this->writeText("\n\n"); -} - -$this->writeText('Usage:', $options); -foreach (array_merge([$command->getSynopsis(true)], $command->getAliases(), $command->getUsages()) as $usage) { -$this->writeText("\n"); -$this->writeText(' '.OutputFormatter::escape($usage), $options); -} -$this->writeText("\n"); - -$definition = $command->getDefinition(); -if ($definition->getOptions() || $definition->getArguments()) { -$this->writeText("\n"); -$this->describeInputDefinition($definition, $options); -$this->writeText("\n"); -} - -$help = $command->getProcessedHelp(); -if ($help && $help !== $description) { -$this->writeText("\n"); -$this->writeText('Help:', $options); -$this->writeText("\n"); -$this->writeText(' '.str_replace("\n", "\n ", $help), $options); -$this->writeText("\n"); -} -} - - - - -protected function describeApplication(Application $application, array $options = []) -{ -$describedNamespace = $options['namespace'] ?? null; -$description = new ApplicationDescription($application, $describedNamespace); - -if (isset($options['raw_text']) && $options['raw_text']) { -$width = $this->getColumnWidth($description->getCommands()); - -foreach ($description->getCommands() as $command) { -$this->writeText(sprintf("%-{$width}s %s", $command->getName(), $command->getDescription()), $options); -$this->writeText("\n"); -} -} else { -if ('' != $help = $application->getHelp()) { -$this->writeText("$help\n\n", $options); -} - -$this->writeText("Usage:\n", $options); -$this->writeText(" command [options] [arguments]\n\n", $options); - -$this->describeInputDefinition(new InputDefinition($application->getDefinition()->getOptions()), $options); - -$this->writeText("\n"); -$this->writeText("\n"); - -$commands = $description->getCommands(); -$namespaces = $description->getNamespaces(); -if ($describedNamespace && $namespaces) { - -$describedNamespaceInfo = reset($namespaces); -foreach ($describedNamespaceInfo['commands'] as $name) { -$commands[$name] = $description->getCommand($name); -} -} - - -$width = $this->getColumnWidth(array_merge(...array_values(array_map(function ($namespace) use ($commands) { -return array_intersect($namespace['commands'], array_keys($commands)); -}, array_values($namespaces))))); - -if ($describedNamespace) { -$this->writeText(sprintf('Available commands for the "%s" namespace:', $describedNamespace), $options); -} else { -$this->writeText('Available commands:', $options); -} - -foreach ($namespaces as $namespace) { -$namespace['commands'] = array_filter($namespace['commands'], function ($name) use ($commands) { -return isset($commands[$name]); -}); - -if (!$namespace['commands']) { -continue; -} - -if (!$describedNamespace && ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { -$this->writeText("\n"); -$this->writeText(' '.$namespace['id'].'', $options); -} - -foreach ($namespace['commands'] as $name) { -$this->writeText("\n"); -$spacingWidth = $width - Helper::width($name); -$command = $commands[$name]; -$commandAliases = $name === $command->getName() ? $this->getCommandAliasesText($command) : ''; -$this->writeText(sprintf(' %s%s%s', $name, str_repeat(' ', $spacingWidth), $commandAliases.$command->getDescription()), $options); -} -} - -$this->writeText("\n"); -} -} - - - - -private function writeText(string $content, array $options = []) -{ -$this->write( -isset($options['raw_text']) && $options['raw_text'] ? strip_tags($content) : $content, -isset($options['raw_output']) ? !$options['raw_output'] : true -); -} - - - - -private function getCommandAliasesText(Command $command): string -{ -$text = ''; -$aliases = $command->getAliases(); - -if ($aliases) { -$text = '['.implode('|', $aliases).'] '; -} - -return $text; -} - - - - - - -private function formatDefaultValue($default): string -{ -if (\INF === $default) { -return 'INF'; -} - -if (\is_string($default)) { -$default = OutputFormatter::escape($default); -} elseif (\is_array($default)) { -foreach ($default as $key => $value) { -if (\is_string($value)) { -$default[$key] = OutputFormatter::escape($value); -} -} -} - -return str_replace('\\\\', '\\', json_encode($default, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE)); -} - - - - -private function getColumnWidth(array $commands): int -{ -$widths = []; - -foreach ($commands as $command) { -if ($command instanceof Command) { -$widths[] = Helper::width($command->getName()); -foreach ($command->getAliases() as $alias) { -$widths[] = Helper::width($alias); -} -} else { -$widths[] = Helper::width($command); -} -} - -return $widths ? max($widths) + 2 : 0; -} - - - - -private function calculateTotalWidthForOptions(array $options): int -{ -$totalWidth = 0; -foreach ($options as $option) { - -$nameLength = 1 + max(Helper::width($option->getShortcut()), 1) + 4 + Helper::width($option->getName()); -if ($option->isNegatable()) { -$nameLength += 6 + Helper::width($option->getName()); -} elseif ($option->acceptValue()) { -$valueLength = 1 + Helper::width($option->getName()); -$valueLength += $option->isValueOptional() ? 2 : 0; - -$nameLength += $valueLength; -} -$totalWidth = max($totalWidth, $nameLength); -} - -return $totalWidth; -} -} diff --git a/composer/vendor/symfony/console/Descriptor/XmlDescriptor.php b/composer/vendor/symfony/console/Descriptor/XmlDescriptor.php deleted file mode 100644 index 40e71eae0..000000000 --- a/composer/vendor/symfony/console/Descriptor/XmlDescriptor.php +++ /dev/null @@ -1,247 +0,0 @@ -appendChild($definitionXML = $dom->createElement('definition')); - -$definitionXML->appendChild($argumentsXML = $dom->createElement('arguments')); -foreach ($definition->getArguments() as $argument) { -$this->appendDocument($argumentsXML, $this->getInputArgumentDocument($argument)); -} - -$definitionXML->appendChild($optionsXML = $dom->createElement('options')); -foreach ($definition->getOptions() as $option) { -$this->appendDocument($optionsXML, $this->getInputOptionDocument($option)); -} - -return $dom; -} - -public function getCommandDocument(Command $command, bool $short = false): \DOMDocument -{ -$dom = new \DOMDocument('1.0', 'UTF-8'); -$dom->appendChild($commandXML = $dom->createElement('command')); - -$commandXML->setAttribute('id', $command->getName()); -$commandXML->setAttribute('name', $command->getName()); -$commandXML->setAttribute('hidden', $command->isHidden() ? 1 : 0); - -$commandXML->appendChild($usagesXML = $dom->createElement('usages')); - -$commandXML->appendChild($descriptionXML = $dom->createElement('description')); -$descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription()))); - -if ($short) { -foreach ($command->getAliases() as $usage) { -$usagesXML->appendChild($dom->createElement('usage', $usage)); -} -} else { -$command->mergeApplicationDefinition(false); - -foreach (array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()) as $usage) { -$usagesXML->appendChild($dom->createElement('usage', $usage)); -} - -$commandXML->appendChild($helpXML = $dom->createElement('help')); -$helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); - -$definitionXML = $this->getInputDefinitionDocument($command->getDefinition()); -$this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); -} - -return $dom; -} - -public function getApplicationDocument(Application $application, string $namespace = null, bool $short = false): \DOMDocument -{ -$dom = new \DOMDocument('1.0', 'UTF-8'); -$dom->appendChild($rootXml = $dom->createElement('symfony')); - -if ('UNKNOWN' !== $application->getName()) { -$rootXml->setAttribute('name', $application->getName()); -if ('UNKNOWN' !== $application->getVersion()) { -$rootXml->setAttribute('version', $application->getVersion()); -} -} - -$rootXml->appendChild($commandsXML = $dom->createElement('commands')); - -$description = new ApplicationDescription($application, $namespace, true); - -if ($namespace) { -$commandsXML->setAttribute('namespace', $namespace); -} - -foreach ($description->getCommands() as $command) { -$this->appendDocument($commandsXML, $this->getCommandDocument($command, $short)); -} - -if (!$namespace) { -$rootXml->appendChild($namespacesXML = $dom->createElement('namespaces')); - -foreach ($description->getNamespaces() as $namespaceDescription) { -$namespacesXML->appendChild($namespaceArrayXML = $dom->createElement('namespace')); -$namespaceArrayXML->setAttribute('id', $namespaceDescription['id']); - -foreach ($namespaceDescription['commands'] as $name) { -$namespaceArrayXML->appendChild($commandXML = $dom->createElement('command')); -$commandXML->appendChild($dom->createTextNode($name)); -} -} -} - -return $dom; -} - - - - -protected function describeInputArgument(InputArgument $argument, array $options = []) -{ -$this->writeDocument($this->getInputArgumentDocument($argument)); -} - - - - -protected function describeInputOption(InputOption $option, array $options = []) -{ -$this->writeDocument($this->getInputOptionDocument($option)); -} - - - - -protected function describeInputDefinition(InputDefinition $definition, array $options = []) -{ -$this->writeDocument($this->getInputDefinitionDocument($definition)); -} - - - - -protected function describeCommand(Command $command, array $options = []) -{ -$this->writeDocument($this->getCommandDocument($command, $options['short'] ?? false)); -} - - - - -protected function describeApplication(Application $application, array $options = []) -{ -$this->writeDocument($this->getApplicationDocument($application, $options['namespace'] ?? null, $options['short'] ?? false)); -} - - - - -private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent) -{ -foreach ($importedParent->childNodes as $childNode) { -$parentNode->appendChild($parentNode->ownerDocument->importNode($childNode, true)); -} -} - - - - -private function writeDocument(\DOMDocument $dom) -{ -$dom->formatOutput = true; -$this->write($dom->saveXML()); -} - -private function getInputArgumentDocument(InputArgument $argument): \DOMDocument -{ -$dom = new \DOMDocument('1.0', 'UTF-8'); - -$dom->appendChild($objectXML = $dom->createElement('argument')); -$objectXML->setAttribute('name', $argument->getName()); -$objectXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0); -$objectXML->setAttribute('is_array', $argument->isArray() ? 1 : 0); -$objectXML->appendChild($descriptionXML = $dom->createElement('description')); -$descriptionXML->appendChild($dom->createTextNode($argument->getDescription())); - -$objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); -$defaults = \is_array($argument->getDefault()) ? $argument->getDefault() : (\is_bool($argument->getDefault()) ? [var_export($argument->getDefault(), true)] : ($argument->getDefault() ? [$argument->getDefault()] : [])); -foreach ($defaults as $default) { -$defaultsXML->appendChild($defaultXML = $dom->createElement('default')); -$defaultXML->appendChild($dom->createTextNode($default)); -} - -return $dom; -} - -private function getInputOptionDocument(InputOption $option): \DOMDocument -{ -$dom = new \DOMDocument('1.0', 'UTF-8'); - -$dom->appendChild($objectXML = $dom->createElement('option')); -$objectXML->setAttribute('name', '--'.$option->getName()); -$pos = strpos($option->getShortcut() ?? '', '|'); -if (false !== $pos) { -$objectXML->setAttribute('shortcut', '-'.substr($option->getShortcut(), 0, $pos)); -$objectXML->setAttribute('shortcuts', '-'.str_replace('|', '|-', $option->getShortcut())); -} else { -$objectXML->setAttribute('shortcut', $option->getShortcut() ? '-'.$option->getShortcut() : ''); -} -$objectXML->setAttribute('accept_value', $option->acceptValue() ? 1 : 0); -$objectXML->setAttribute('is_value_required', $option->isValueRequired() ? 1 : 0); -$objectXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0); -$objectXML->appendChild($descriptionXML = $dom->createElement('description')); -$descriptionXML->appendChild($dom->createTextNode($option->getDescription())); - -if ($option->acceptValue()) { -$defaults = \is_array($option->getDefault()) ? $option->getDefault() : (\is_bool($option->getDefault()) ? [var_export($option->getDefault(), true)] : ($option->getDefault() ? [$option->getDefault()] : [])); -$objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); - -if (!empty($defaults)) { -foreach ($defaults as $default) { -$defaultsXML->appendChild($defaultXML = $dom->createElement('default')); -$defaultXML->appendChild($dom->createTextNode($default)); -} -} -} - -if ($option->isNegatable()) { -$dom->appendChild($objectXML = $dom->createElement('option')); -$objectXML->setAttribute('name', '--no-'.$option->getName()); -$objectXML->setAttribute('shortcut', ''); -$objectXML->setAttribute('accept_value', 0); -$objectXML->setAttribute('is_value_required', 0); -$objectXML->setAttribute('is_multiple', 0); -$objectXML->appendChild($descriptionXML = $dom->createElement('description')); -$descriptionXML->appendChild($dom->createTextNode('Negate the "--'.$option->getName().'" option')); -} - -return $dom; -} -} diff --git a/composer/vendor/symfony/console/Event/ConsoleCommandEvent.php b/composer/vendor/symfony/console/Event/ConsoleCommandEvent.php deleted file mode 100644 index 3635826a4..000000000 --- a/composer/vendor/symfony/console/Event/ConsoleCommandEvent.php +++ /dev/null @@ -1,51 +0,0 @@ -commandShouldRun = false; -} - -public function enableCommand(): bool -{ -return $this->commandShouldRun = true; -} - - - - -public function commandShouldRun(): bool -{ -return $this->commandShouldRun; -} -} diff --git a/composer/vendor/symfony/console/Event/ConsoleErrorEvent.php b/composer/vendor/symfony/console/Event/ConsoleErrorEvent.php deleted file mode 100644 index 45499f775..000000000 --- a/composer/vendor/symfony/console/Event/ConsoleErrorEvent.php +++ /dev/null @@ -1,58 +0,0 @@ -error = $error; -} - -public function getError(): \Throwable -{ -return $this->error; -} - -public function setError(\Throwable $error): void -{ -$this->error = $error; -} - -public function setExitCode(int $exitCode): void -{ -$this->exitCode = $exitCode; - -$r = new \ReflectionProperty($this->error, 'code'); -$r->setAccessible(true); -$r->setValue($this->error, $this->exitCode); -} - -public function getExitCode(): int -{ -return $this->exitCode ?? (\is_int($this->error->getCode()) && 0 !== $this->error->getCode() ? $this->error->getCode() : 1); -} -} diff --git a/composer/vendor/symfony/console/Event/ConsoleEvent.php b/composer/vendor/symfony/console/Event/ConsoleEvent.php deleted file mode 100644 index 82bf1033f..000000000 --- a/composer/vendor/symfony/console/Event/ConsoleEvent.php +++ /dev/null @@ -1,67 +0,0 @@ -command = $command; -$this->input = $input; -$this->output = $output; -} - - - - - - -public function getCommand() -{ -return $this->command; -} - - - - - - -public function getInput() -{ -return $this->input; -} - - - - - - -public function getOutput() -{ -return $this->output; -} -} diff --git a/composer/vendor/symfony/console/Event/ConsoleSignalEvent.php b/composer/vendor/symfony/console/Event/ConsoleSignalEvent.php deleted file mode 100644 index 5c697c1fc..000000000 --- a/composer/vendor/symfony/console/Event/ConsoleSignalEvent.php +++ /dev/null @@ -1,35 +0,0 @@ -handlingSignal = $handlingSignal; -} - -public function getHandlingSignal(): int -{ -return $this->handlingSignal; -} -} diff --git a/composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php b/composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php deleted file mode 100644 index 7d698e98e..000000000 --- a/composer/vendor/symfony/console/Event/ConsoleTerminateEvent.php +++ /dev/null @@ -1,43 +0,0 @@ -setExitCode($exitCode); -} - -public function setExitCode(int $exitCode): void -{ -$this->exitCode = $exitCode; -} - -public function getExitCode(): int -{ -return $this->exitCode; -} -} diff --git a/composer/vendor/symfony/console/EventListener/ErrorListener.php b/composer/vendor/symfony/console/EventListener/ErrorListener.php deleted file mode 100644 index c22b436a6..000000000 --- a/composer/vendor/symfony/console/EventListener/ErrorListener.php +++ /dev/null @@ -1,95 +0,0 @@ -logger = $logger; -} - -public function onConsoleError(ConsoleErrorEvent $event) -{ -if (null === $this->logger) { -return; -} - -$error = $event->getError(); - -if (!$inputString = $this->getInputString($event)) { -$this->logger->critical('An error occurred while using the console. Message: "{message}"', ['exception' => $error, 'message' => $error->getMessage()]); - -return; -} - -$this->logger->critical('Error thrown while running command "{command}". Message: "{message}"', ['exception' => $error, 'command' => $inputString, 'message' => $error->getMessage()]); -} - -public function onConsoleTerminate(ConsoleTerminateEvent $event) -{ -if (null === $this->logger) { -return; -} - -$exitCode = $event->getExitCode(); - -if (0 === $exitCode) { -return; -} - -if (!$inputString = $this->getInputString($event)) { -$this->logger->debug('The console exited with code "{code}"', ['code' => $exitCode]); - -return; -} - -$this->logger->debug('Command "{command}" exited with code "{code}"', ['command' => $inputString, 'code' => $exitCode]); -} - -public static function getSubscribedEvents() -{ -return [ -ConsoleEvents::ERROR => ['onConsoleError', -128], -ConsoleEvents::TERMINATE => ['onConsoleTerminate', -128], -]; -} - -private static function getInputString(ConsoleEvent $event): ?string -{ -$commandName = $event->getCommand() ? $event->getCommand()->getName() : null; -$input = $event->getInput(); - -if (method_exists($input, '__toString')) { -if ($commandName) { -return str_replace(["'$commandName'", "\"$commandName\""], $commandName, (string) $input); -} - -return (string) $input; -} - -return $commandName; -} -} diff --git a/composer/vendor/symfony/console/Exception/CommandNotFoundException.php b/composer/vendor/symfony/console/Exception/CommandNotFoundException.php deleted file mode 100644 index 75ee726f4..000000000 --- a/composer/vendor/symfony/console/Exception/CommandNotFoundException.php +++ /dev/null @@ -1,43 +0,0 @@ -alternatives = $alternatives; -} - - - - -public function getAlternatives() -{ -return $this->alternatives; -} -} diff --git a/composer/vendor/symfony/console/Exception/ExceptionInterface.php b/composer/vendor/symfony/console/Exception/ExceptionInterface.php deleted file mode 100644 index 1ec15240a..000000000 --- a/composer/vendor/symfony/console/Exception/ExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -style ?? $this->style = new NullOutputFormatterStyle(); -} - - - - -public function hasStyle(string $name): bool -{ -return false; -} - - - - -public function isDecorated(): bool -{ -return false; -} - - - - -public function setDecorated(bool $decorated): void -{ - -} - - - - -public function setStyle(string $name, OutputFormatterStyleInterface $style): void -{ - -} -} diff --git a/composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php b/composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php deleted file mode 100644 index 198015df8..000000000 --- a/composer/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php +++ /dev/null @@ -1,66 +0,0 @@ -styleStack = clone $this->styleStack; -foreach ($this->styles as $key => $value) { -$this->styles[$key] = clone $value; -} -} - - - - - - -public static function escape(string $text) -{ -$text = preg_replace('/([^\\\\]|^)([<>])/', '$1\\\\$2', $text); - -return self::escapeTrailingBackslash($text); -} - - - - - - -public static function escapeTrailingBackslash(string $text): string -{ -if (str_ends_with($text, '\\')) { -$len = \strlen($text); -$text = rtrim($text, '\\'); -$text = str_replace("\0", '', $text); -$text .= str_repeat("\0", $len - \strlen($text)); -} - -return $text; -} - - - - - - -public function __construct(bool $decorated = false, array $styles = []) -{ -$this->decorated = $decorated; - -$this->setStyle('error', new OutputFormatterStyle('white', 'red')); -$this->setStyle('info', new OutputFormatterStyle('green')); -$this->setStyle('comment', new OutputFormatterStyle('yellow')); -$this->setStyle('question', new OutputFormatterStyle('black', 'cyan')); - -foreach ($styles as $name => $style) { -$this->setStyle($name, $style); -} - -$this->styleStack = new OutputFormatterStyleStack(); -} - - - - -public function setDecorated(bool $decorated) -{ -$this->decorated = $decorated; -} - - - - -public function isDecorated() -{ -return $this->decorated; -} - - - - -public function setStyle(string $name, OutputFormatterStyleInterface $style) -{ -$this->styles[strtolower($name)] = $style; -} - - - - -public function hasStyle(string $name) -{ -return isset($this->styles[strtolower($name)]); -} - - - - -public function getStyle(string $name) -{ -if (!$this->hasStyle($name)) { -throw new InvalidArgumentException(sprintf('Undefined style: "%s".', $name)); -} - -return $this->styles[strtolower($name)]; -} - - - - -public function format(?string $message) -{ -return $this->formatAndWrap($message, 0); -} - - - - -public function formatAndWrap(?string $message, int $width) -{ -if (null === $message) { -return ''; -} - -$offset = 0; -$output = ''; -$openTagRegex = '[a-z](?:[^\\\\<>]*+ | \\\\.)*'; -$closeTagRegex = '[a-z][^<>]*+'; -$currentLineLength = 0; -preg_match_all("#<(($openTagRegex) | /($closeTagRegex)?)>#ix", $message, $matches, \PREG_OFFSET_CAPTURE); -foreach ($matches[0] as $i => $match) { -$pos = $match[1]; -$text = $match[0]; - -if (0 != $pos && '\\' == $message[$pos - 1]) { -continue; -} - - -$output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset), $output, $width, $currentLineLength); -$offset = $pos + \strlen($text); - - -if ($open = '/' != $text[1]) { -$tag = $matches[1][$i][0]; -} else { -$tag = $matches[3][$i][0] ?? ''; -} - -if (!$open && !$tag) { - -$this->styleStack->pop(); -} elseif (null === $style = $this->createStyleFromString($tag)) { -$output .= $this->applyCurrentStyle($text, $output, $width, $currentLineLength); -} elseif ($open) { -$this->styleStack->push($style); -} else { -$this->styleStack->pop($style); -} -} - -$output .= $this->applyCurrentStyle(substr($message, $offset), $output, $width, $currentLineLength); - -return strtr($output, ["\0" => '\\', '\\<' => '<', '\\>' => '>']); -} - - - - -public function getStyleStack() -{ -return $this->styleStack; -} - - - - -private function createStyleFromString(string $string): ?OutputFormatterStyleInterface -{ -if (isset($this->styles[$string])) { -return $this->styles[$string]; -} - -if (!preg_match_all('/([^=]+)=([^;]+)(;|$)/', $string, $matches, \PREG_SET_ORDER)) { -return null; -} - -$style = new OutputFormatterStyle(); -foreach ($matches as $match) { -array_shift($match); -$match[0] = strtolower($match[0]); - -if ('fg' == $match[0]) { -$style->setForeground(strtolower($match[1])); -} elseif ('bg' == $match[0]) { -$style->setBackground(strtolower($match[1])); -} elseif ('href' === $match[0]) { -$url = preg_replace('{\\\\([<>])}', '$1', $match[1]); -$style->setHref($url); -} elseif ('options' === $match[0]) { -preg_match_all('([^,;]+)', strtolower($match[1]), $options); -$options = array_shift($options); -foreach ($options as $option) { -$style->setOption($option); -} -} else { -return null; -} -} - -return $style; -} - - - - -private function applyCurrentStyle(string $text, string $current, int $width, int &$currentLineLength): string -{ -if ('' === $text) { -return ''; -} - -if (!$width) { -return $this->isDecorated() ? $this->styleStack->getCurrent()->apply($text) : $text; -} - -if (!$currentLineLength && '' !== $current) { -$text = ltrim($text); -} - -if ($currentLineLength) { -$prefix = substr($text, 0, $i = $width - $currentLineLength)."\n"; -$text = substr($text, $i); -} else { -$prefix = ''; -} - -preg_match('~(\\n)$~', $text, $matches); -$text = $prefix.preg_replace('~([^\\n]{'.$width.'})\\ *~', "\$1\n", $text); -$text = rtrim($text, "\n").($matches[1] ?? ''); - -if (!$currentLineLength && '' !== $current && "\n" !== substr($current, -1)) { -$text = "\n".$text; -} - -$lines = explode("\n", $text); - -foreach ($lines as $line) { -$currentLineLength += \strlen($line); -if ($width <= $currentLineLength) { -$currentLineLength = 0; -} -} - -if ($this->isDecorated()) { -foreach ($lines as $i => $line) { -$lines[$i] = $this->styleStack->getCurrent()->apply($line); -} -} - -return implode("\n", $lines); -} -} diff --git a/composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php b/composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php deleted file mode 100644 index f5d19733e..000000000 --- a/composer/vendor/symfony/console/Formatter/OutputFormatterInterface.php +++ /dev/null @@ -1,60 +0,0 @@ -color = new Color($this->foreground = $foreground ?: '', $this->background = $background ?: '', $this->options = $options); -} - - - - -public function setForeground(string $color = null) -{ -$this->color = new Color($this->foreground = $color ?: '', $this->background, $this->options); -} - - - - -public function setBackground(string $color = null) -{ -$this->color = new Color($this->foreground, $this->background = $color ?: '', $this->options); -} - -public function setHref(string $url): void -{ -$this->href = $url; -} - - - - -public function setOption(string $option) -{ -$this->options[] = $option; -$this->color = new Color($this->foreground, $this->background, $this->options); -} - - - - -public function unsetOption(string $option) -{ -$pos = array_search($option, $this->options); -if (false !== $pos) { -unset($this->options[$pos]); -} - -$this->color = new Color($this->foreground, $this->background, $this->options); -} - - - - -public function setOptions(array $options) -{ -$this->color = new Color($this->foreground, $this->background, $this->options = $options); -} - - - - -public function apply(string $text) -{ -if (null === $this->handlesHrefGracefully) { -$this->handlesHrefGracefully = 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR') -&& (!getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100); -} - -if (null !== $this->href && $this->handlesHrefGracefully) { -$text = "\033]8;;$this->href\033\\$text\033]8;;\033\\"; -} - -return $this->color->apply($text); -} -} diff --git a/composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php b/composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php deleted file mode 100644 index 5b614b293..000000000 --- a/composer/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php +++ /dev/null @@ -1,52 +0,0 @@ -emptyStyle = $emptyStyle ?? new OutputFormatterStyle(); -$this->reset(); -} - - - - -public function reset() -{ -$this->styles = []; -} - - - - -public function push(OutputFormatterStyleInterface $style) -{ -$this->styles[] = $style; -} - - - - - - - - -public function pop(OutputFormatterStyleInterface $style = null) -{ -if (empty($this->styles)) { -return $this->emptyStyle; -} - -if (null === $style) { -return array_pop($this->styles); -} - -foreach (array_reverse($this->styles, true) as $index => $stackedStyle) { -if ($style->apply('') === $stackedStyle->apply('')) { -$this->styles = \array_slice($this->styles, 0, $index); - -return $stackedStyle; -} -} - -throw new InvalidArgumentException('Incorrectly nested style tag found.'); -} - - - - - - -public function getCurrent() -{ -if (empty($this->styles)) { -return $this->emptyStyle; -} - -return $this->styles[\count($this->styles) - 1]; -} - - - - -public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle) -{ -$this->emptyStyle = $emptyStyle; - -return $this; -} - - - - -public function getEmptyStyle() -{ -return $this->emptyStyle; -} -} diff --git a/composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php b/composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php deleted file mode 100644 index 86186c377..000000000 --- a/composer/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php +++ /dev/null @@ -1,25 +0,0 @@ -started[$id] = ['border' => ++$this->count % \count(self::COLORS)]; - -return sprintf("%s %s %s\n", $this->getBorder($id), $prefix, $message); -} - - - - - - -public function progress(string $id, string $buffer, bool $error = false, string $prefix = 'OUT', string $errorPrefix = 'ERR') -{ -$message = ''; - -if ($error) { -if (isset($this->started[$id]['out'])) { -$message .= "\n"; -unset($this->started[$id]['out']); -} -if (!isset($this->started[$id]['err'])) { -$message .= sprintf('%s %s ', $this->getBorder($id), $errorPrefix); -$this->started[$id]['err'] = true; -} - -$message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $errorPrefix), $buffer); -} else { -if (isset($this->started[$id]['err'])) { -$message .= "\n"; -unset($this->started[$id]['err']); -} -if (!isset($this->started[$id]['out'])) { -$message .= sprintf('%s %s ', $this->getBorder($id), $prefix); -$this->started[$id]['out'] = true; -} - -$message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $prefix), $buffer); -} - -return $message; -} - - - - - - -public function stop(string $id, string $message, bool $successful, string $prefix = 'RES') -{ -$trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : ''; - -if ($successful) { -return sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); -} - -$message = sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); - -unset($this->started[$id]['out'], $this->started[$id]['err']); - -return $message; -} - -private function getBorder(string $id): string -{ -return sprintf(' ', self::COLORS[$this->started[$id]['border']]); -} - - - - -public function getName() -{ -return 'debug_formatter'; -} -} diff --git a/composer/vendor/symfony/console/Helper/DescriptorHelper.php b/composer/vendor/symfony/console/Helper/DescriptorHelper.php deleted file mode 100644 index c1cae46aa..000000000 --- a/composer/vendor/symfony/console/Helper/DescriptorHelper.php +++ /dev/null @@ -1,92 +0,0 @@ -register('txt', new TextDescriptor()) -->register('xml', new XmlDescriptor()) -->register('json', new JsonDescriptor()) -->register('md', new MarkdownDescriptor()) -; -} - - - - - - - - - - -public function describe(OutputInterface $output, ?object $object, array $options = []) -{ -$options = array_merge([ -'raw_text' => false, -'format' => 'txt', -], $options); - -if (!isset($this->descriptors[$options['format']])) { -throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format'])); -} - -$descriptor = $this->descriptors[$options['format']]; -$descriptor->describe($output, $object, $options); -} - - - - - - -public function register(string $format, DescriptorInterface $descriptor) -{ -$this->descriptors[$format] = $descriptor; - -return $this; -} - - - - -public function getName() -{ -return 'descriptor'; -} - -public function getFormats(): array -{ -return array_keys($this->descriptors); -} -} diff --git a/composer/vendor/symfony/console/Helper/Dumper.php b/composer/vendor/symfony/console/Helper/Dumper.php deleted file mode 100644 index 42eb04af9..000000000 --- a/composer/vendor/symfony/console/Helper/Dumper.php +++ /dev/null @@ -1,64 +0,0 @@ -output = $output; -$this->dumper = $dumper; -$this->cloner = $cloner; - -if (class_exists(CliDumper::class)) { -$this->handler = function ($var): string { -$dumper = $this->dumper ?? $this->dumper = new CliDumper(null, null, CliDumper::DUMP_LIGHT_ARRAY | CliDumper::DUMP_COMMA_SEPARATOR); -$dumper->setColors($this->output->isDecorated()); - -return rtrim($dumper->dump(($this->cloner ?? $this->cloner = new VarCloner())->cloneVar($var)->withRefHandles(false), true)); -}; -} else { -$this->handler = function ($var): string { -switch (true) { -case null === $var: -return 'null'; -case true === $var: -return 'true'; -case false === $var: -return 'false'; -case \is_string($var): -return '"'.$var.'"'; -default: -return rtrim(print_r($var, true)); -} -}; -} -} - -public function __invoke($var): string -{ -return ($this->handler)($var); -} -} diff --git a/composer/vendor/symfony/console/Helper/FormatterHelper.php b/composer/vendor/symfony/console/Helper/FormatterHelper.php deleted file mode 100644 index d6f1b94ef..000000000 --- a/composer/vendor/symfony/console/Helper/FormatterHelper.php +++ /dev/null @@ -1,92 +0,0 @@ -[%s] %s', $style, $section, $style, $message); -} - - - - - - - - -public function formatBlock($messages, string $style, bool $large = false) -{ -if (!\is_array($messages)) { -$messages = [$messages]; -} - -$len = 0; -$lines = []; -foreach ($messages as $message) { -$message = OutputFormatter::escape($message); -$lines[] = sprintf($large ? ' %s ' : ' %s ', $message); -$len = max(self::width($message) + ($large ? 4 : 2), $len); -} - -$messages = $large ? [str_repeat(' ', $len)] : []; -for ($i = 0; isset($lines[$i]); ++$i) { -$messages[] = $lines[$i].str_repeat(' ', $len - self::width($lines[$i])); -} -if ($large) { -$messages[] = str_repeat(' ', $len); -} - -for ($i = 0; isset($messages[$i]); ++$i) { -$messages[$i] = sprintf('<%s>%s', $style, $messages[$i], $style); -} - -return implode("\n", $messages); -} - - - - - - -public function truncate(string $message, int $length, string $suffix = '...') -{ -$computedLength = $length - self::width($suffix); - -if ($computedLength > self::width($message)) { -return $message; -} - -return self::substr($message, 0, $length).$suffix; -} - - - - -public function getName() -{ -return 'formatter'; -} -} diff --git a/composer/vendor/symfony/console/Helper/Helper.php b/composer/vendor/symfony/console/Helper/Helper.php deleted file mode 100644 index d434f58f2..000000000 --- a/composer/vendor/symfony/console/Helper/Helper.php +++ /dev/null @@ -1,180 +0,0 @@ -helperSet = $helperSet; -} - - - - -public function getHelperSet() -{ -return $this->helperSet; -} - - - - - - - - -public static function strlen(?string $string) -{ -trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::width() or Helper::length() instead.', __METHOD__); - -return self::width($string); -} - - - - - -public static function width(?string $string): int -{ -$string ?? $string = ''; - -if (preg_match('//u', $string)) { -return (new UnicodeString($string))->width(false); -} - -if (false === $encoding = mb_detect_encoding($string, null, true)) { -return \strlen($string); -} - -return mb_strwidth($string, $encoding); -} - - - - - -public static function length(?string $string): int -{ -$string ?? $string = ''; - -if (preg_match('//u', $string)) { -return (new UnicodeString($string))->length(); -} - -if (false === $encoding = mb_detect_encoding($string, null, true)) { -return \strlen($string); -} - -return mb_strlen($string, $encoding); -} - - - - - - -public static function substr(?string $string, int $from, int $length = null) -{ -$string ?? $string = ''; - -if (false === $encoding = mb_detect_encoding($string, null, true)) { -return substr($string, $from, $length); -} - -return mb_substr($string, $from, $length, $encoding); -} - -public static function formatTime($secs) -{ -static $timeFormats = [ -[0, '< 1 sec'], -[1, '1 sec'], -[2, 'secs', 1], -[60, '1 min'], -[120, 'mins', 60], -[3600, '1 hr'], -[7200, 'hrs', 3600], -[86400, '1 day'], -[172800, 'days', 86400], -]; - -foreach ($timeFormats as $index => $format) { -if ($secs >= $format[0]) { -if ((isset($timeFormats[$index + 1]) && $secs < $timeFormats[$index + 1][0]) -|| $index == \count($timeFormats) - 1 -) { -if (2 == \count($format)) { -return $format[1]; -} - -return floor($secs / $format[2]).' '.$format[1]; -} -} -} -} - -public static function formatMemory(int $memory) -{ -if ($memory >= 1024 * 1024 * 1024) { -return sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024); -} - -if ($memory >= 1024 * 1024) { -return sprintf('%.1f MiB', $memory / 1024 / 1024); -} - -if ($memory >= 1024) { -return sprintf('%d KiB', $memory / 1024); -} - -return sprintf('%d B', $memory); -} - - - - -public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, ?string $string) -{ -trigger_deprecation('symfony/console', '5.3', 'Method "%s()" is deprecated and will be removed in Symfony 6.0. Use Helper::removeDecoration() instead.', __METHOD__); - -return self::width(self::removeDecoration($formatter, $string)); -} - -public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) -{ -$isDecorated = $formatter->isDecorated(); -$formatter->setDecorated(false); - -$string = $formatter->format($string ?? ''); - -$string = preg_replace("/\033\[[^m]*m/", '', $string ?? ''); - -$string = preg_replace('/\\033]8;[^;]*;[^\\033]*\\033\\\\/', '', $string ?? ''); -$formatter->setDecorated($isDecorated); - -return $string; -} -} diff --git a/composer/vendor/symfony/console/Helper/HelperInterface.php b/composer/vendor/symfony/console/Helper/HelperInterface.php deleted file mode 100644 index eee26bbab..000000000 --- a/composer/vendor/symfony/console/Helper/HelperInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - $helper) { -$this->set($helper, \is_int($alias) ? null : $alias); -} -} - -public function set(HelperInterface $helper, string $alias = null) -{ -$this->helpers[$helper->getName()] = $helper; -if (null !== $alias) { -$this->helpers[$alias] = $helper; -} - -$helper->setHelperSet($this); -} - - - - - - -public function has(string $name) -{ -return isset($this->helpers[$name]); -} - - - - - - - - -public function get(string $name) -{ -if (!$this->has($name)) { -throw new InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name)); -} - -return $this->helpers[$name]; -} - - - - -public function setCommand(Command $command = null) -{ -trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); - -$this->command = $command; -} - - - - - - - - -public function getCommand() -{ -trigger_deprecation('symfony/console', '5.4', 'Method "%s()" is deprecated.', __METHOD__); - -return $this->command; -} - - - - -#[\ReturnTypeWillChange] -public function getIterator() -{ -return new \ArrayIterator($this->helpers); -} -} diff --git a/composer/vendor/symfony/console/Helper/InputAwareHelper.php b/composer/vendor/symfony/console/Helper/InputAwareHelper.php deleted file mode 100644 index b7376df12..000000000 --- a/composer/vendor/symfony/console/Helper/InputAwareHelper.php +++ /dev/null @@ -1,33 +0,0 @@ -input = $input; -} -} diff --git a/composer/vendor/symfony/console/Helper/ProcessHelper.php b/composer/vendor/symfony/console/Helper/ProcessHelper.php deleted file mode 100644 index ec765705b..000000000 --- a/composer/vendor/symfony/console/Helper/ProcessHelper.php +++ /dev/null @@ -1,144 +0,0 @@ -getErrorOutput(); -} - -$formatter = $this->getHelperSet()->get('debug_formatter'); - -if ($cmd instanceof Process) { -$cmd = [$cmd]; -} - -if (!\is_array($cmd)) { -throw new \TypeError(sprintf('The "command" argument of "%s()" must be an array or a "%s" instance, "%s" given.', __METHOD__, Process::class, get_debug_type($cmd))); -} - -if (\is_string($cmd[0] ?? null)) { -$process = new Process($cmd); -$cmd = []; -} elseif (($cmd[0] ?? null) instanceof Process) { -$process = $cmd[0]; -unset($cmd[0]); -} else { -throw new \InvalidArgumentException(sprintf('Invalid command provided to "%s()": the command should be an array whose first element is either the path to the binary to run or a "Process" object.', __METHOD__)); -} - -if ($verbosity <= $output->getVerbosity()) { -$output->write($formatter->start(spl_object_hash($process), $this->escapeString($process->getCommandLine()))); -} - -if ($output->isDebug()) { -$callback = $this->wrapCallback($output, $process, $callback); -} - -$process->run($callback, $cmd); - -if ($verbosity <= $output->getVerbosity()) { -$message = $process->isSuccessful() ? 'Command ran successfully' : sprintf('%s Command did not run successfully', $process->getExitCode()); -$output->write($formatter->stop(spl_object_hash($process), $message, $process->isSuccessful())); -} - -if (!$process->isSuccessful() && null !== $error) { -$output->writeln(sprintf('%s', $this->escapeString($error))); -} - -return $process; -} - - - - - - - - - - - - - - - -public function mustRun(OutputInterface $output, $cmd, string $error = null, callable $callback = null): Process -{ -$process = $this->run($output, $cmd, $error, $callback); - -if (!$process->isSuccessful()) { -throw new ProcessFailedException($process); -} - -return $process; -} - - - - -public function wrapCallback(OutputInterface $output, Process $process, callable $callback = null): callable -{ -if ($output instanceof ConsoleOutputInterface) { -$output = $output->getErrorOutput(); -} - -$formatter = $this->getHelperSet()->get('debug_formatter'); - -return function ($type, $buffer) use ($output, $process, $callback, $formatter) { -$output->write($formatter->progress(spl_object_hash($process), $this->escapeString($buffer), Process::ERR === $type)); - -if (null !== $callback) { -$callback($type, $buffer); -} -}; -} - -private function escapeString(string $str): string -{ -return str_replace('<', '\\<', $str); -} - - - - -public function getName(): string -{ -return 'process'; -} -} diff --git a/composer/vendor/symfony/console/Helper/ProgressBar.php b/composer/vendor/symfony/console/Helper/ProgressBar.php deleted file mode 100644 index 5853b1c12..000000000 --- a/composer/vendor/symfony/console/Helper/ProgressBar.php +++ /dev/null @@ -1,609 +0,0 @@ -'; -private $format; -private $internalFormat; -private $redrawFreq = 1; -private $writeCount; -private $lastWriteTime; -private $minSecondsBetweenRedraws = 0; -private $maxSecondsBetweenRedraws = 1; -private $output; -private $step = 0; -private $max; -private $startTime; -private $stepWidth; -private $percent = 0.0; -private $messages = []; -private $overwrite = true; -private $terminal; -private $previousMessage; -private $cursor; - -private static $formatters; -private static $formats; - - - - -public function __construct(OutputInterface $output, int $max = 0, float $minSecondsBetweenRedraws = 1 / 25) -{ -if ($output instanceof ConsoleOutputInterface) { -$output = $output->getErrorOutput(); -} - -$this->output = $output; -$this->setMaxSteps($max); -$this->terminal = new Terminal(); - -if (0 < $minSecondsBetweenRedraws) { -$this->redrawFreq = null; -$this->minSecondsBetweenRedraws = $minSecondsBetweenRedraws; -} - -if (!$this->output->isDecorated()) { - -$this->overwrite = false; - - -$this->redrawFreq = null; -} - -$this->startTime = time(); -$this->cursor = new Cursor($output); -} - - - - - - - - - -public static function setPlaceholderFormatterDefinition(string $name, callable $callable): void -{ -if (!self::$formatters) { -self::$formatters = self::initPlaceholderFormatters(); -} - -self::$formatters[$name] = $callable; -} - - - - - - -public static function getPlaceholderFormatterDefinition(string $name): ?callable -{ -if (!self::$formatters) { -self::$formatters = self::initPlaceholderFormatters(); -} - -return self::$formatters[$name] ?? null; -} - - - - - - - - - -public static function setFormatDefinition(string $name, string $format): void -{ -if (!self::$formats) { -self::$formats = self::initFormats(); -} - -self::$formats[$name] = $format; -} - - - - - - -public static function getFormatDefinition(string $name): ?string -{ -if (!self::$formats) { -self::$formats = self::initFormats(); -} - -return self::$formats[$name] ?? null; -} - - - - - - - - - - - -public function setMessage(string $message, string $name = 'message') -{ -$this->messages[$name] = $message; -} - -public function getMessage(string $name = 'message') -{ -return $this->messages[$name]; -} - -public function getStartTime(): int -{ -return $this->startTime; -} - -public function getMaxSteps(): int -{ -return $this->max; -} - -public function getProgress(): int -{ -return $this->step; -} - -private function getStepWidth(): int -{ -return $this->stepWidth; -} - -public function getProgressPercent(): float -{ -return $this->percent; -} - -public function getBarOffset(): float -{ -return floor($this->max ? $this->percent * $this->barWidth : (null === $this->redrawFreq ? (int) (min(5, $this->barWidth / 15) * $this->writeCount) : $this->step) % $this->barWidth); -} - -public function getEstimated(): float -{ -if (!$this->step) { -return 0; -} - -return round((time() - $this->startTime) / $this->step * $this->max); -} - -public function getRemaining(): float -{ -if (!$this->step) { -return 0; -} - -return round((time() - $this->startTime) / $this->step * ($this->max - $this->step)); -} - -public function setBarWidth(int $size) -{ -$this->barWidth = max(1, $size); -} - -public function getBarWidth(): int -{ -return $this->barWidth; -} - -public function setBarCharacter(string $char) -{ -$this->barChar = $char; -} - -public function getBarCharacter(): string -{ -return $this->barChar ?? ($this->max ? '=' : $this->emptyBarChar); -} - -public function setEmptyBarCharacter(string $char) -{ -$this->emptyBarChar = $char; -} - -public function getEmptyBarCharacter(): string -{ -return $this->emptyBarChar; -} - -public function setProgressCharacter(string $char) -{ -$this->progressChar = $char; -} - -public function getProgressCharacter(): string -{ -return $this->progressChar; -} - -public function setFormat(string $format) -{ -$this->format = null; -$this->internalFormat = $format; -} - - - - - - -public function setRedrawFrequency(?int $freq) -{ -$this->redrawFreq = null !== $freq ? max(1, $freq) : null; -} - -public function minSecondsBetweenRedraws(float $seconds): void -{ -$this->minSecondsBetweenRedraws = $seconds; -} - -public function maxSecondsBetweenRedraws(float $seconds): void -{ -$this->maxSecondsBetweenRedraws = $seconds; -} - - - - - - -public function iterate(iterable $iterable, int $max = null): iterable -{ -$this->start($max ?? (is_countable($iterable) ? \count($iterable) : 0)); - -foreach ($iterable as $key => $value) { -yield $key => $value; - -$this->advance(); -} - -$this->finish(); -} - - - - - - -public function start(int $max = null) -{ -$this->startTime = time(); -$this->step = 0; -$this->percent = 0.0; - -if (null !== $max) { -$this->setMaxSteps($max); -} - -$this->display(); -} - - - - - - -public function advance(int $step = 1) -{ -$this->setProgress($this->step + $step); -} - - - - -public function setOverwrite(bool $overwrite) -{ -$this->overwrite = $overwrite; -} - -public function setProgress(int $step) -{ -if ($this->max && $step > $this->max) { -$this->max = $step; -} elseif ($step < 0) { -$step = 0; -} - -$redrawFreq = $this->redrawFreq ?? (($this->max ?: 10) / 10); -$prevPeriod = (int) ($this->step / $redrawFreq); -$currPeriod = (int) ($step / $redrawFreq); -$this->step = $step; -$this->percent = $this->max ? (float) $this->step / $this->max : 0; -$timeInterval = microtime(true) - $this->lastWriteTime; - - -if ($this->max === $step) { -$this->display(); - -return; -} - - -if ($timeInterval < $this->minSecondsBetweenRedraws) { -return; -} - - -if ($prevPeriod !== $currPeriod || $timeInterval >= $this->maxSecondsBetweenRedraws) { -$this->display(); -} -} - -public function setMaxSteps(int $max) -{ -$this->format = null; -$this->max = max(0, $max); -$this->stepWidth = $this->max ? Helper::width((string) $this->max) : 4; -} - - - - -public function finish(): void -{ -if (!$this->max) { -$this->max = $this->step; -} - -if ($this->step === $this->max && !$this->overwrite) { - -return; -} - -$this->setProgress($this->max); -} - - - - -public function display(): void -{ -if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { -return; -} - -if (null === $this->format) { -$this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); -} - -$this->overwrite($this->buildLine()); -} - - - - - - - - -public function clear(): void -{ -if (!$this->overwrite) { -return; -} - -if (null === $this->format) { -$this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); -} - -$this->overwrite(''); -} - -private function setRealFormat(string $format) -{ - -if (!$this->max && null !== self::getFormatDefinition($format.'_nomax')) { -$this->format = self::getFormatDefinition($format.'_nomax'); -} elseif (null !== self::getFormatDefinition($format)) { -$this->format = self::getFormatDefinition($format); -} else { -$this->format = $format; -} -} - - - - -private function overwrite(string $message): void -{ -if ($this->previousMessage === $message) { -return; -} - -$originalMessage = $message; - -if ($this->overwrite) { -if (null !== $this->previousMessage) { -if ($this->output instanceof ConsoleSectionOutput) { -$messageLines = explode("\n", $this->previousMessage); -$lineCount = \count($messageLines); -foreach ($messageLines as $messageLine) { -$messageLineLength = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $messageLine)); -if ($messageLineLength > $this->terminal->getWidth()) { -$lineCount += floor($messageLineLength / $this->terminal->getWidth()); -} -} -$this->output->clear($lineCount); -} else { -$lineCount = substr_count($this->previousMessage, "\n"); -for ($i = 0; $i < $lineCount; ++$i) { -$this->cursor->moveToColumn(1); -$this->cursor->clearLine(); -$this->cursor->moveUp(); -} - -$this->cursor->moveToColumn(1); -$this->cursor->clearLine(); -} -} -} elseif ($this->step > 0) { -$message = \PHP_EOL.$message; -} - -$this->previousMessage = $originalMessage; -$this->lastWriteTime = microtime(true); - -$this->output->write($message); -++$this->writeCount; -} - -private function determineBestFormat(): string -{ -switch ($this->output->getVerbosity()) { - -case OutputInterface::VERBOSITY_VERBOSE: -return $this->max ? self::FORMAT_VERBOSE : self::FORMAT_VERBOSE_NOMAX; -case OutputInterface::VERBOSITY_VERY_VERBOSE: -return $this->max ? self::FORMAT_VERY_VERBOSE : self::FORMAT_VERY_VERBOSE_NOMAX; -case OutputInterface::VERBOSITY_DEBUG: -return $this->max ? self::FORMAT_DEBUG : self::FORMAT_DEBUG_NOMAX; -default: -return $this->max ? self::FORMAT_NORMAL : self::FORMAT_NORMAL_NOMAX; -} -} - -private static function initPlaceholderFormatters(): array -{ -return [ -'bar' => function (self $bar, OutputInterface $output) { -$completeBars = $bar->getBarOffset(); -$display = str_repeat($bar->getBarCharacter(), $completeBars); -if ($completeBars < $bar->getBarWidth()) { -$emptyBars = $bar->getBarWidth() - $completeBars - Helper::length(Helper::removeDecoration($output->getFormatter(), $bar->getProgressCharacter())); -$display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars); -} - -return $display; -}, -'elapsed' => function (self $bar) { -return Helper::formatTime(time() - $bar->getStartTime()); -}, -'remaining' => function (self $bar) { -if (!$bar->getMaxSteps()) { -throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); -} - -return Helper::formatTime($bar->getRemaining()); -}, -'estimated' => function (self $bar) { -if (!$bar->getMaxSteps()) { -throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); -} - -return Helper::formatTime($bar->getEstimated()); -}, -'memory' => function (self $bar) { -return Helper::formatMemory(memory_get_usage(true)); -}, -'current' => function (self $bar) { -return str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT); -}, -'max' => function (self $bar) { -return $bar->getMaxSteps(); -}, -'percent' => function (self $bar) { -return floor($bar->getProgressPercent() * 100); -}, -]; -} - -private static function initFormats(): array -{ -return [ -self::FORMAT_NORMAL => ' %current%/%max% [%bar%] %percent:3s%%', -self::FORMAT_NORMAL_NOMAX => ' %current% [%bar%]', - -self::FORMAT_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', -self::FORMAT_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - -self::FORMAT_VERY_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', -self::FORMAT_VERY_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - -self::FORMAT_DEBUG => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', -self::FORMAT_DEBUG_NOMAX => ' %current% [%bar%] %elapsed:6s% %memory:6s%', -]; -} - -private function buildLine(): string -{ -$regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i"; -$callback = function ($matches) { -if ($formatter = $this::getPlaceholderFormatterDefinition($matches[1])) { -$text = $formatter($this, $this->output); -} elseif (isset($this->messages[$matches[1]])) { -$text = $this->messages[$matches[1]]; -} else { -return $matches[0]; -} - -if (isset($matches[2])) { -$text = sprintf('%'.$matches[2], $text); -} - -return $text; -}; -$line = preg_replace_callback($regex, $callback, $this->format); - - -$linesLength = array_map(function ($subLine) { -return Helper::width(Helper::removeDecoration($this->output->getFormatter(), rtrim($subLine, "\r"))); -}, explode("\n", $line)); - -$linesWidth = max($linesLength); - -$terminalWidth = $this->terminal->getWidth(); -if ($linesWidth <= $terminalWidth) { -return $line; -} - -$this->setBarWidth($this->barWidth - $linesWidth + $terminalWidth); - -return preg_replace_callback($regex, $callback, $this->format); -} -} diff --git a/composer/vendor/symfony/console/Helper/ProgressIndicator.php b/composer/vendor/symfony/console/Helper/ProgressIndicator.php deleted file mode 100644 index e1581e13e..000000000 --- a/composer/vendor/symfony/console/Helper/ProgressIndicator.php +++ /dev/null @@ -1,249 +0,0 @@ - ' %indicator% %message%', -'normal_no_ansi' => ' %message%', - -'verbose' => ' %indicator% %message% (%elapsed:6s%)', -'verbose_no_ansi' => ' %message% (%elapsed:6s%)', - -'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)', -'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)', -]; - -private $output; -private $startTime; -private $format; -private $message; -private $indicatorValues; -private $indicatorCurrent; -private $indicatorChangeInterval; -private $indicatorUpdateTime; -private $started = false; - - - - -private static $formatters; - - - - - -public function __construct(OutputInterface $output, string $format = null, int $indicatorChangeInterval = 100, array $indicatorValues = null) -{ -$this->output = $output; - -if (null === $format) { -$format = $this->determineBestFormat(); -} - -if (null === $indicatorValues) { -$indicatorValues = ['-', '\\', '|', '/']; -} - -$indicatorValues = array_values($indicatorValues); - -if (2 > \count($indicatorValues)) { -throw new InvalidArgumentException('Must have at least 2 indicator value characters.'); -} - -$this->format = self::getFormatDefinition($format); -$this->indicatorChangeInterval = $indicatorChangeInterval; -$this->indicatorValues = $indicatorValues; -$this->startTime = time(); -} - - - - -public function setMessage(?string $message) -{ -$this->message = $message; - -$this->display(); -} - - - - -public function start(string $message) -{ -if ($this->started) { -throw new LogicException('Progress indicator already started.'); -} - -$this->message = $message; -$this->started = true; -$this->startTime = time(); -$this->indicatorUpdateTime = $this->getCurrentTimeInMilliseconds() + $this->indicatorChangeInterval; -$this->indicatorCurrent = 0; - -$this->display(); -} - - - - -public function advance() -{ -if (!$this->started) { -throw new LogicException('Progress indicator has not yet been started.'); -} - -if (!$this->output->isDecorated()) { -return; -} - -$currentTime = $this->getCurrentTimeInMilliseconds(); - -if ($currentTime < $this->indicatorUpdateTime) { -return; -} - -$this->indicatorUpdateTime = $currentTime + $this->indicatorChangeInterval; -++$this->indicatorCurrent; - -$this->display(); -} - - - - - - -public function finish(string $message) -{ -if (!$this->started) { -throw new LogicException('Progress indicator has not yet been started.'); -} - -$this->message = $message; -$this->display(); -$this->output->writeln(''); -$this->started = false; -} - - - - - - -public static function getFormatDefinition(string $name) -{ -return self::FORMATS[$name] ?? null; -} - - - - - - -public static function setPlaceholderFormatterDefinition(string $name, callable $callable) -{ -if (!self::$formatters) { -self::$formatters = self::initPlaceholderFormatters(); -} - -self::$formatters[$name] = $callable; -} - - - - - - -public static function getPlaceholderFormatterDefinition(string $name) -{ -if (!self::$formatters) { -self::$formatters = self::initPlaceholderFormatters(); -} - -return self::$formatters[$name] ?? null; -} - -private function display() -{ -if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { -return; -} - -$this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) { -if ($formatter = self::getPlaceholderFormatterDefinition($matches[1])) { -return $formatter($this); -} - -return $matches[0]; -}, $this->format ?? '')); -} - -private function determineBestFormat(): string -{ -switch ($this->output->getVerbosity()) { - -case OutputInterface::VERBOSITY_VERBOSE: -return $this->output->isDecorated() ? 'verbose' : 'verbose_no_ansi'; -case OutputInterface::VERBOSITY_VERY_VERBOSE: -case OutputInterface::VERBOSITY_DEBUG: -return $this->output->isDecorated() ? 'very_verbose' : 'very_verbose_no_ansi'; -default: -return $this->output->isDecorated() ? 'normal' : 'normal_no_ansi'; -} -} - - - - -private function overwrite(string $message) -{ -if ($this->output->isDecorated()) { -$this->output->write("\x0D\x1B[2K"); -$this->output->write($message); -} else { -$this->output->writeln($message); -} -} - -private function getCurrentTimeInMilliseconds(): float -{ -return round(microtime(true) * 1000); -} - -private static function initPlaceholderFormatters(): array -{ -return [ -'indicator' => function (self $indicator) { -return $indicator->indicatorValues[$indicator->indicatorCurrent % \count($indicator->indicatorValues)]; -}, -'message' => function (self $indicator) { -return $indicator->message; -}, -'elapsed' => function (self $indicator) { -return Helper::formatTime(time() - $indicator->startTime); -}, -'memory' => function () { -return Helper::formatMemory(memory_get_usage(true)); -}, -]; -} -} diff --git a/composer/vendor/symfony/console/Helper/QuestionHelper.php b/composer/vendor/symfony/console/Helper/QuestionHelper.php deleted file mode 100644 index 4daeab940..000000000 --- a/composer/vendor/symfony/console/Helper/QuestionHelper.php +++ /dev/null @@ -1,616 +0,0 @@ -getErrorOutput(); -} - -if (!$input->isInteractive()) { -return $this->getDefaultAnswer($question); -} - -if ($input instanceof StreamableInputInterface && $stream = $input->getStream()) { -$this->inputStream = $stream; -} - -try { -if (!$question->getValidator()) { -return $this->doAsk($output, $question); -} - -$interviewer = function () use ($output, $question) { -return $this->doAsk($output, $question); -}; - -return $this->validateAttempts($interviewer, $output, $question); -} catch (MissingInputException $exception) { -$input->setInteractive(false); - -if (null === $fallbackOutput = $this->getDefaultAnswer($question)) { -throw $exception; -} - -return $fallbackOutput; -} -} - - - - -public function getName() -{ -return 'question'; -} - - - - -public static function disableStty() -{ -self::$stty = false; -} - - - - - - - - -private function doAsk(OutputInterface $output, Question $question) -{ -$this->writePrompt($output, $question); - -$inputStream = $this->inputStream ?: \STDIN; -$autocomplete = $question->getAutocompleterCallback(); - -if (null === $autocomplete || !self::$stty || !Terminal::hasSttyAvailable()) { -$ret = false; -if ($question->isHidden()) { -try { -$hiddenResponse = $this->getHiddenResponse($output, $inputStream, $question->isTrimmable()); -$ret = $question->isTrimmable() ? trim($hiddenResponse) : $hiddenResponse; -} catch (RuntimeException $e) { -if (!$question->isHiddenFallback()) { -throw $e; -} -} -} - -if (false === $ret) { -$ret = $this->readInput($inputStream, $question); -if (false === $ret) { -throw new MissingInputException('Aborted.'); -} -if ($question->isTrimmable()) { -$ret = trim($ret); -} -} -} else { -$autocomplete = $this->autocomplete($output, $question, $inputStream, $autocomplete); -$ret = $question->isTrimmable() ? trim($autocomplete) : $autocomplete; -} - -if ($output instanceof ConsoleSectionOutput) { -$output->addContent($ret); -} - -$ret = \strlen($ret) > 0 ? $ret : $question->getDefault(); - -if ($normalizer = $question->getNormalizer()) { -return $normalizer($ret); -} - -return $ret; -} - - - - -private function getDefaultAnswer(Question $question) -{ -$default = $question->getDefault(); - -if (null === $default) { -return $default; -} - -if ($validator = $question->getValidator()) { -return \call_user_func($question->getValidator(), $default); -} elseif ($question instanceof ChoiceQuestion) { -$choices = $question->getChoices(); - -if (!$question->isMultiselect()) { -return $choices[$default] ?? $default; -} - -$default = explode(',', $default); -foreach ($default as $k => $v) { -$v = $question->isTrimmable() ? trim($v) : $v; -$default[$k] = $choices[$v] ?? $v; -} -} - -return $default; -} - - - - -protected function writePrompt(OutputInterface $output, Question $question) -{ -$message = $question->getQuestion(); - -if ($question instanceof ChoiceQuestion) { -$output->writeln(array_merge([ -$question->getQuestion(), -], $this->formatChoiceQuestionChoices($question, 'info'))); - -$message = $question->getPrompt(); -} - -$output->write($message); -} - - - - -protected function formatChoiceQuestionChoices(ChoiceQuestion $question, string $tag) -{ -$messages = []; - -$maxWidth = max(array_map([__CLASS__, 'width'], array_keys($choices = $question->getChoices()))); - -foreach ($choices as $key => $value) { -$padding = str_repeat(' ', $maxWidth - self::width($key)); - -$messages[] = sprintf(" [<$tag>%s$padding] %s", $key, $value); -} - -return $messages; -} - - - - -protected function writeError(OutputInterface $output, \Exception $error) -{ -if (null !== $this->getHelperSet() && $this->getHelperSet()->has('formatter')) { -$message = $this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error'); -} else { -$message = ''.$error->getMessage().''; -} - -$output->writeln($message); -} - - - - - - -private function autocomplete(OutputInterface $output, Question $question, $inputStream, callable $autocomplete): string -{ -$cursor = new Cursor($output, $inputStream); - -$fullChoice = ''; -$ret = ''; - -$i = 0; -$ofs = -1; -$matches = $autocomplete($ret); -$numMatches = \count($matches); - -$sttyMode = shell_exec('stty -g'); -$isStdin = 'php://stdin' === (stream_get_meta_data($inputStream)['uri'] ?? null); -$r = [$inputStream]; -$w = []; - - -shell_exec('stty -icanon -echo'); - - -$output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white')); - - -while (!feof($inputStream)) { -while ($isStdin && 0 === @stream_select($r, $w, $w, 0, 100)) { - -$r = [$inputStream]; -} -$c = fread($inputStream, 1); - - -if (false === $c || ('' === $ret && '' === $c && null === $question->getDefault())) { -shell_exec('stty '.$sttyMode); -throw new MissingInputException('Aborted.'); -} elseif ("\177" === $c) { -if (0 === $numMatches && 0 !== $i) { ---$i; -$cursor->moveLeft(s($fullChoice)->slice(-1)->width(false)); - -$fullChoice = self::substr($fullChoice, 0, $i); -} - -if (0 === $i) { -$ofs = -1; -$matches = $autocomplete($ret); -$numMatches = \count($matches); -} else { -$numMatches = 0; -} - - -$ret = self::substr($ret, 0, $i); -} elseif ("\033" === $c) { - -$c .= fread($inputStream, 2); - - -if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) { -if ('A' === $c[2] && -1 === $ofs) { -$ofs = 0; -} - -if (0 === $numMatches) { -continue; -} - -$ofs += ('A' === $c[2]) ? -1 : 1; -$ofs = ($numMatches + $ofs) % $numMatches; -} -} elseif (\ord($c) < 32) { -if ("\t" === $c || "\n" === $c) { -if ($numMatches > 0 && -1 !== $ofs) { -$ret = (string) $matches[$ofs]; - -$remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)))); -$output->write($remainingCharacters); -$fullChoice .= $remainingCharacters; -$i = (false === $encoding = mb_detect_encoding($fullChoice, null, true)) ? \strlen($fullChoice) : mb_strlen($fullChoice, $encoding); - -$matches = array_filter( -$autocomplete($ret), -function ($match) use ($ret) { -return '' === $ret || str_starts_with($match, $ret); -} -); -$numMatches = \count($matches); -$ofs = -1; -} - -if ("\n" === $c) { -$output->write($c); -break; -} - -$numMatches = 0; -} - -continue; -} else { -if ("\x80" <= $c) { -$c .= fread($inputStream, ["\xC0" => 1, "\xD0" => 1, "\xE0" => 2, "\xF0" => 3][$c & "\xF0"]); -} - -$output->write($c); -$ret .= $c; -$fullChoice .= $c; -++$i; - -$tempRet = $ret; - -if ($question instanceof ChoiceQuestion && $question->isMultiselect()) { -$tempRet = $this->mostRecentlyEnteredValue($fullChoice); -} - -$numMatches = 0; -$ofs = 0; - -foreach ($autocomplete($ret) as $value) { - -if (str_starts_with($value, $tempRet)) { -$matches[$numMatches++] = $value; -} -} -} - -$cursor->clearLineAfter(); - -if ($numMatches > 0 && -1 !== $ofs) { -$cursor->savePosition(); - -$charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))); -$output->write(''.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).''); -$cursor->restorePosition(); -} -} - - -shell_exec('stty '.$sttyMode); - -return $fullChoice; -} - -private function mostRecentlyEnteredValue(string $entered): string -{ - -if (!str_contains($entered, ',')) { -return $entered; -} - -$choices = explode(',', $entered); -if ('' !== $lastChoice = trim($choices[\count($choices) - 1])) { -return $lastChoice; -} - -return $entered; -} - - - - - - - - - -private function getHiddenResponse(OutputInterface $output, $inputStream, bool $trimmable = true): string -{ -if ('\\' === \DIRECTORY_SEPARATOR) { -$exe = __DIR__.'/../Resources/bin/hiddeninput.exe'; - - -if ('phar:' === substr(__FILE__, 0, 5)) { -$tmpExe = sys_get_temp_dir().'/hiddeninput.exe'; -copy($exe, $tmpExe); -$exe = $tmpExe; -} - -$sExec = shell_exec('"'.$exe.'"'); -$value = $trimmable ? rtrim($sExec) : $sExec; -$output->writeln(''); - -if (isset($tmpExe)) { -unlink($tmpExe); -} - -return $value; -} - -if (self::$stty && Terminal::hasSttyAvailable()) { -$sttyMode = shell_exec('stty -g'); -shell_exec('stty -echo'); -} elseif ($this->isInteractiveInput($inputStream)) { -throw new RuntimeException('Unable to hide the response.'); -} - -$value = fgets($inputStream, 4096); - -if (self::$stty && Terminal::hasSttyAvailable()) { -shell_exec('stty '.$sttyMode); -} - -if (false === $value) { -throw new MissingInputException('Aborted.'); -} -if ($trimmable) { -$value = trim($value); -} -$output->writeln(''); - -return $value; -} - - - - - - - - - - -private function validateAttempts(callable $interviewer, OutputInterface $output, Question $question) -{ -$error = null; -$attempts = $question->getMaxAttempts(); - -while (null === $attempts || $attempts--) { -if (null !== $error) { -$this->writeError($output, $error); -} - -try { -return $question->getValidator()($interviewer()); -} catch (RuntimeException $e) { -throw $e; -} catch (\Exception $error) { -} -} - -throw $error; -} - -private function isInteractiveInput($inputStream): bool -{ -if ('php://stdin' !== (stream_get_meta_data($inputStream)['uri'] ?? null)) { -return false; -} - -if (null !== self::$stdinIsInteractive) { -return self::$stdinIsInteractive; -} - -if (\function_exists('stream_isatty')) { -return self::$stdinIsInteractive = @stream_isatty(fopen('php://stdin', 'r')); -} - -if (\function_exists('posix_isatty')) { -return self::$stdinIsInteractive = @posix_isatty(fopen('php://stdin', 'r')); -} - -if (!\function_exists('exec')) { -return self::$stdinIsInteractive = true; -} - -exec('stty 2> /dev/null', $output, $status); - -return self::$stdinIsInteractive = 1 !== $status; -} - - - - - - - - - -private function readInput($inputStream, Question $question) -{ -if (!$question->isMultiline()) { -$cp = $this->setIOCodepage(); -$ret = fgets($inputStream, 4096); - -return $this->resetIOCodepage($cp, $ret); -} - -$multiLineStreamReader = $this->cloneInputStream($inputStream); -if (null === $multiLineStreamReader) { -return false; -} - -$ret = ''; -$cp = $this->setIOCodepage(); -while (false !== ($char = fgetc($multiLineStreamReader))) { -if (\PHP_EOL === "{$ret}{$char}") { -break; -} -$ret .= $char; -} - -return $this->resetIOCodepage($cp, $ret); -} - - - - - - -private function setIOCodepage(): int -{ -if (\function_exists('sapi_windows_cp_set')) { -$cp = sapi_windows_cp_get(); -sapi_windows_cp_set(sapi_windows_cp_get('oem')); - -return $cp; -} - -return 0; -} - - - - - - - - -private function resetIOCodepage(int $cp, $input) -{ -if (0 !== $cp) { -sapi_windows_cp_set($cp); - -if (false !== $input && '' !== $input) { -$input = sapi_windows_cp_conv(sapi_windows_cp_get('oem'), $cp, $input); -} -} - -return $input; -} - - - - - - - - - -private function cloneInputStream($inputStream) -{ -$streamMetaData = stream_get_meta_data($inputStream); -$seekable = $streamMetaData['seekable'] ?? false; -$mode = $streamMetaData['mode'] ?? 'rb'; -$uri = $streamMetaData['uri'] ?? null; - -if (null === $uri) { -return null; -} - -$cloneStream = fopen($uri, $mode); - - - -if (true === $seekable && !\in_array($mode, ['r', 'rb', 'rt'])) { -$offset = ftell($inputStream); -rewind($inputStream); -stream_copy_to_stream($inputStream, $cloneStream); -fseek($inputStream, $offset); -fseek($cloneStream, $offset); -} - -return $cloneStream; -} -} diff --git a/composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php deleted file mode 100644 index 3453b25b2..000000000 --- a/composer/vendor/symfony/console/Helper/SymfonyQuestionHelper.php +++ /dev/null @@ -1,109 +0,0 @@ -getQuestion()); -$default = $question->getDefault(); - -if ($question->isMultiline()) { -$text .= sprintf(' (press %s to continue)', $this->getEofShortcut()); -} - -switch (true) { -case null === $default: -$text = sprintf(' %s:', $text); - -break; - -case $question instanceof ConfirmationQuestion: -$text = sprintf(' %s (yes/no) [%s]:', $text, $default ? 'yes' : 'no'); - -break; - -case $question instanceof ChoiceQuestion && $question->isMultiselect(): -$choices = $question->getChoices(); -$default = explode(',', $default); - -foreach ($default as $key => $value) { -$default[$key] = $choices[trim($value)]; -} - -$text = sprintf(' %s [%s]:', $text, OutputFormatter::escape(implode(', ', $default))); - -break; - -case $question instanceof ChoiceQuestion: -$choices = $question->getChoices(); -$text = sprintf(' %s [%s]:', $text, OutputFormatter::escape($choices[$default] ?? $default)); - -break; - -default: -$text = sprintf(' %s [%s]:', $text, OutputFormatter::escape($default)); -} - -$output->writeln($text); - -$prompt = ' > '; - -if ($question instanceof ChoiceQuestion) { -$output->writeln($this->formatChoiceQuestionChoices($question, 'comment')); - -$prompt = $question->getPrompt(); -} - -$output->write($prompt); -} - - - - -protected function writeError(OutputInterface $output, \Exception $error) -{ -if ($output instanceof SymfonyStyle) { -$output->newLine(); -$output->error($error->getMessage()); - -return; -} - -parent::writeError($output, $error); -} - -private function getEofShortcut(): string -{ -if ('Windows' === \PHP_OS_FAMILY) { -return 'Ctrl+Z then Enter'; -} - -return 'Ctrl+D'; -} -} diff --git a/composer/vendor/symfony/console/Helper/Table.php b/composer/vendor/symfony/console/Helper/Table.php deleted file mode 100644 index d920c646d..000000000 --- a/composer/vendor/symfony/console/Helper/Table.php +++ /dev/null @@ -1,915 +0,0 @@ -output = $output; - -if (!self::$styles) { -self::$styles = self::initStyles(); -} - -$this->setStyle('default'); -} - - - - -public static function setStyleDefinition(string $name, TableStyle $style) -{ -if (!self::$styles) { -self::$styles = self::initStyles(); -} - -self::$styles[$name] = $style; -} - - - - - - -public static function getStyleDefinition(string $name) -{ -if (!self::$styles) { -self::$styles = self::initStyles(); -} - -if (isset(self::$styles[$name])) { -return self::$styles[$name]; -} - -throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); -} - - - - - - - - -public function setStyle($name) -{ -$this->style = $this->resolveStyle($name); - -return $this; -} - - - - - - -public function getStyle() -{ -return $this->style; -} - - - - - - - - -public function setColumnStyle(int $columnIndex, $name) -{ -$this->columnStyles[$columnIndex] = $this->resolveStyle($name); - -return $this; -} - - - - - - - - -public function getColumnStyle(int $columnIndex) -{ -return $this->columnStyles[$columnIndex] ?? $this->getStyle(); -} - - - - - - -public function setColumnWidth(int $columnIndex, int $width) -{ -$this->columnWidths[$columnIndex] = $width; - -return $this; -} - - - - - - -public function setColumnWidths(array $widths) -{ -$this->columnWidths = []; -foreach ($widths as $index => $width) { -$this->setColumnWidth($index, $width); -} - -return $this; -} - - - - - - - - - -public function setColumnMaxWidth(int $columnIndex, int $width): self -{ -if (!$this->output->getFormatter() instanceof WrappableOutputFormatterInterface) { -throw new \LogicException(sprintf('Setting a maximum column width is only supported when using a "%s" formatter, got "%s".', WrappableOutputFormatterInterface::class, get_debug_type($this->output->getFormatter()))); -} - -$this->columnMaxWidths[$columnIndex] = $width; - -return $this; -} - - - - -public function setHeaders(array $headers) -{ -$headers = array_values($headers); -if (!empty($headers) && !\is_array($headers[0])) { -$headers = [$headers]; -} - -$this->headers = $headers; - -return $this; -} - -public function setRows(array $rows) -{ -$this->rows = []; - -return $this->addRows($rows); -} - - - - -public function addRows(array $rows) -{ -foreach ($rows as $row) { -$this->addRow($row); -} - -return $this; -} - - - - -public function addRow($row) -{ -if ($row instanceof TableSeparator) { -$this->rows[] = $row; - -return $this; -} - -if (!\is_array($row)) { -throw new InvalidArgumentException('A row must be an array or a TableSeparator instance.'); -} - -$this->rows[] = array_values($row); - -return $this; -} - - - - - - -public function appendRow($row): self -{ -if (!$this->output instanceof ConsoleSectionOutput) { -throw new RuntimeException(sprintf('Output should be an instance of "%s" when calling "%s".', ConsoleSectionOutput::class, __METHOD__)); -} - -if ($this->rendered) { -$this->output->clear($this->calculateRowCount()); -} - -$this->addRow($row); -$this->render(); - -return $this; -} - - - - -public function setRow($column, array $row) -{ -$this->rows[$column] = $row; - -return $this; -} - - - - -public function setHeaderTitle(?string $title): self -{ -$this->headerTitle = $title; - -return $this; -} - - - - -public function setFooterTitle(?string $title): self -{ -$this->footerTitle = $title; - -return $this; -} - - - - -public function setHorizontal(bool $horizontal = true): self -{ -$this->horizontal = $horizontal; - -return $this; -} - - - - - - - - - - - - - - -public function render() -{ -$divider = new TableSeparator(); -if ($this->horizontal) { -$rows = []; -foreach ($this->headers[0] ?? [] as $i => $header) { -$rows[$i] = [$header]; -foreach ($this->rows as $row) { -if ($row instanceof TableSeparator) { -continue; -} -if (isset($row[$i])) { -$rows[$i][] = $row[$i]; -} elseif ($rows[$i][0] instanceof TableCell && $rows[$i][0]->getColspan() >= 2) { - -} else { -$rows[$i][] = null; -} -} -} -} else { -$rows = array_merge($this->headers, [$divider], $this->rows); -} - -$this->calculateNumberOfColumns($rows); - -$rowGroups = $this->buildTableRows($rows); -$this->calculateColumnsWidth($rowGroups); - -$isHeader = !$this->horizontal; -$isFirstRow = $this->horizontal; -$hasTitle = (bool) $this->headerTitle; - -foreach ($rowGroups as $rowGroup) { -$isHeaderSeparatorRendered = false; - -foreach ($rowGroup as $row) { -if ($divider === $row) { -$isHeader = false; -$isFirstRow = true; - -continue; -} - -if ($row instanceof TableSeparator) { -$this->renderRowSeparator(); - -continue; -} - -if (!$row) { -continue; -} - -if ($isHeader && !$isHeaderSeparatorRendered) { -$this->renderRowSeparator( -$isHeader ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, -$hasTitle ? $this->headerTitle : null, -$hasTitle ? $this->style->getHeaderTitleFormat() : null -); -$hasTitle = false; -$isHeaderSeparatorRendered = true; -} - -if ($isFirstRow) { -$this->renderRowSeparator( -$isHeader ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, -$hasTitle ? $this->headerTitle : null, -$hasTitle ? $this->style->getHeaderTitleFormat() : null -); -$isFirstRow = false; -$hasTitle = false; -} - -if ($this->horizontal) { -$this->renderRow($row, $this->style->getCellRowFormat(), $this->style->getCellHeaderFormat()); -} else { -$this->renderRow($row, $isHeader ? $this->style->getCellHeaderFormat() : $this->style->getCellRowFormat()); -} -} -} -$this->renderRowSeparator(self::SEPARATOR_BOTTOM, $this->footerTitle, $this->style->getFooterTitleFormat()); - -$this->cleanup(); -$this->rendered = true; -} - - - - - - - - -private function renderRowSeparator(int $type = self::SEPARATOR_MID, string $title = null, string $titleFormat = null) -{ -if (0 === $count = $this->numberOfColumns) { -return; -} - -$borders = $this->style->getBorderChars(); -if (!$borders[0] && !$borders[2] && !$this->style->getCrossingChar()) { -return; -} - -$crossings = $this->style->getCrossingChars(); -if (self::SEPARATOR_MID === $type) { -[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[2], $crossings[8], $crossings[0], $crossings[4]]; -} elseif (self::SEPARATOR_TOP === $type) { -[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[1], $crossings[2], $crossings[3]]; -} elseif (self::SEPARATOR_TOP_BOTTOM === $type) { -[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[9], $crossings[10], $crossings[11]]; -} else { -[$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[7], $crossings[6], $crossings[5]]; -} - -$markup = $leftChar; -for ($column = 0; $column < $count; ++$column) { -$markup .= str_repeat($horizontal, $this->effectiveColumnWidths[$column]); -$markup .= $column === $count - 1 ? $rightChar : $midChar; -} - -if (null !== $title) { -$titleLength = Helper::width(Helper::removeDecoration($formatter = $this->output->getFormatter(), $formattedTitle = sprintf($titleFormat, $title))); -$markupLength = Helper::width($markup); -if ($titleLength > $limit = $markupLength - 4) { -$titleLength = $limit; -$formatLength = Helper::width(Helper::removeDecoration($formatter, sprintf($titleFormat, ''))); -$formattedTitle = sprintf($titleFormat, Helper::substr($title, 0, $limit - $formatLength - 3).'...'); -} - -$titleStart = intdiv($markupLength - $titleLength, 2); -if (false === mb_detect_encoding($markup, null, true)) { -$markup = substr_replace($markup, $formattedTitle, $titleStart, $titleLength); -} else { -$markup = mb_substr($markup, 0, $titleStart).$formattedTitle.mb_substr($markup, $titleStart + $titleLength); -} -} - -$this->output->writeln(sprintf($this->style->getBorderFormat(), $markup)); -} - - - - -private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE): string -{ -$borders = $this->style->getBorderChars(); - -return sprintf($this->style->getBorderFormat(), self::BORDER_OUTSIDE === $type ? $borders[1] : $borders[3]); -} - - - - - - - - -private function renderRow(array $row, string $cellFormat, string $firstCellFormat = null) -{ -$rowContent = $this->renderColumnSeparator(self::BORDER_OUTSIDE); -$columns = $this->getRowColumns($row); -$last = \count($columns) - 1; -foreach ($columns as $i => $column) { -if ($firstCellFormat && 0 === $i) { -$rowContent .= $this->renderCell($row, $column, $firstCellFormat); -} else { -$rowContent .= $this->renderCell($row, $column, $cellFormat); -} -$rowContent .= $this->renderColumnSeparator($last === $i ? self::BORDER_OUTSIDE : self::BORDER_INSIDE); -} -$this->output->writeln($rowContent); -} - - - - -private function renderCell(array $row, int $column, string $cellFormat): string -{ -$cell = $row[$column] ?? ''; -$width = $this->effectiveColumnWidths[$column]; -if ($cell instanceof TableCell && $cell->getColspan() > 1) { - -foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) { -$width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn]; -} -} - - -if (false !== $encoding = mb_detect_encoding($cell, null, true)) { -$width += \strlen($cell) - mb_strwidth($cell, $encoding); -} - -$style = $this->getColumnStyle($column); - -if ($cell instanceof TableSeparator) { -return sprintf($style->getBorderFormat(), str_repeat($style->getBorderChars()[2], $width)); -} - -$width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter(), $cell)); -$content = sprintf($style->getCellRowContentFormat(), $cell); - -$padType = $style->getPadType(); -if ($cell instanceof TableCell && $cell->getStyle() instanceof TableCellStyle) { -$isNotStyledByTag = !preg_match('/^<(\w+|(\w+=[\w,]+;?)*)>.+<\/(\w+|(\w+=\w+;?)*)?>$/', $cell); -if ($isNotStyledByTag) { -$cellFormat = $cell->getStyle()->getCellFormat(); -if (!\is_string($cellFormat)) { -$tag = http_build_query($cell->getStyle()->getTagOptions(), '', ';'); -$cellFormat = '<'.$tag.'>%s'; -} - -if (strstr($content, '')) { -$content = str_replace('', '', $content); -$width -= 3; -} -if (strstr($content, '')) { -$content = str_replace('', '', $content); -$width -= \strlen(''); -} -} - -$padType = $cell->getStyle()->getPadByAlign(); -} - -return sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $padType)); -} - - - - -private function calculateNumberOfColumns(array $rows) -{ -$columns = [0]; -foreach ($rows as $row) { -if ($row instanceof TableSeparator) { -continue; -} - -$columns[] = $this->getNumberOfColumns($row); -} - -$this->numberOfColumns = max($columns); -} - -private function buildTableRows(array $rows): TableRows -{ - -$formatter = $this->output->getFormatter(); -$unmergedRows = []; -for ($rowKey = 0; $rowKey < \count($rows); ++$rowKey) { -$rows = $this->fillNextRows($rows, $rowKey); - - -foreach ($rows[$rowKey] as $column => $cell) { -$colspan = $cell instanceof TableCell ? $cell->getColspan() : 1; - -if (isset($this->columnMaxWidths[$column]) && Helper::width(Helper::removeDecoration($formatter, $cell)) > $this->columnMaxWidths[$column]) { -$cell = $formatter->formatAndWrap($cell, $this->columnMaxWidths[$column] * $colspan); -} -if (!strstr($cell ?? '', "\n")) { -continue; -} -$escaped = implode("\n", array_map([OutputFormatter::class, 'escapeTrailingBackslash'], explode("\n", $cell))); -$cell = $cell instanceof TableCell ? new TableCell($escaped, ['colspan' => $cell->getColspan()]) : $escaped; -$lines = explode("\n", str_replace("\n", "\n", $cell)); -foreach ($lines as $lineKey => $line) { -if ($colspan > 1) { -$line = new TableCell($line, ['colspan' => $colspan]); -} -if (0 === $lineKey) { -$rows[$rowKey][$column] = $line; -} else { -if (!\array_key_exists($rowKey, $unmergedRows) || !\array_key_exists($lineKey, $unmergedRows[$rowKey])) { -$unmergedRows[$rowKey][$lineKey] = $this->copyRow($rows, $rowKey); -} -$unmergedRows[$rowKey][$lineKey][$column] = $line; -} -} -} -} - -return new TableRows(function () use ($rows, $unmergedRows): \Traversable { -foreach ($rows as $rowKey => $row) { -$rowGroup = [$row instanceof TableSeparator ? $row : $this->fillCells($row)]; - -if (isset($unmergedRows[$rowKey])) { -foreach ($unmergedRows[$rowKey] as $row) { -$rowGroup[] = $row instanceof TableSeparator ? $row : $this->fillCells($row); -} -} -yield $rowGroup; -} -}); -} - -private function calculateRowCount(): int -{ -$numberOfRows = \count(iterator_to_array($this->buildTableRows(array_merge($this->headers, [new TableSeparator()], $this->rows)))); - -if ($this->headers) { -++$numberOfRows; -} - -if (\count($this->rows) > 0) { -++$numberOfRows; -} - -return $numberOfRows; -} - - - - - - -private function fillNextRows(array $rows, int $line): array -{ -$unmergedRows = []; -foreach ($rows[$line] as $column => $cell) { -if (null !== $cell && !$cell instanceof TableCell && !\is_scalar($cell) && !(\is_object($cell) && method_exists($cell, '__toString'))) { -throw new InvalidArgumentException(sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', get_debug_type($cell))); -} -if ($cell instanceof TableCell && $cell->getRowspan() > 1) { -$nbLines = $cell->getRowspan() - 1; -$lines = [$cell]; -if (strstr($cell, "\n")) { -$lines = explode("\n", str_replace("\n", "\n", $cell)); -$nbLines = \count($lines) > $nbLines ? substr_count($cell, "\n") : $nbLines; - -$rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); -unset($lines[0]); -} - - -$unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, []), $unmergedRows); -foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { -$value = $lines[$unmergedRowKey - $line] ?? ''; -$unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); -if ($nbLines === $unmergedRowKey - $line) { -break; -} -} -} -} - -foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { - -if (isset($rows[$unmergedRowKey]) && \is_array($rows[$unmergedRowKey]) && ($this->getNumberOfColumns($rows[$unmergedRowKey]) + $this->getNumberOfColumns($unmergedRows[$unmergedRowKey]) <= $this->numberOfColumns)) { -foreach ($unmergedRow as $cellKey => $cell) { - -array_splice($rows[$unmergedRowKey], $cellKey, 0, [$cell]); -} -} else { -$row = $this->copyRow($rows, $unmergedRowKey - 1); -foreach ($unmergedRow as $column => $cell) { -if (!empty($cell)) { -$row[$column] = $unmergedRow[$column]; -} -} -array_splice($rows, $unmergedRowKey, 0, [$row]); -} -} - -return $rows; -} - - - - -private function fillCells(iterable $row) -{ -$newRow = []; - -foreach ($row as $column => $cell) { -$newRow[] = $cell; -if ($cell instanceof TableCell && $cell->getColspan() > 1) { -foreach (range($column + 1, $column + $cell->getColspan() - 1) as $position) { - -$newRow[] = ''; -} -} -} - -return $newRow ?: $row; -} - -private function copyRow(array $rows, int $line): array -{ -$row = $rows[$line]; -foreach ($row as $cellKey => $cellValue) { -$row[$cellKey] = ''; -if ($cellValue instanceof TableCell) { -$row[$cellKey] = new TableCell('', ['colspan' => $cellValue->getColspan()]); -} -} - -return $row; -} - - - - -private function getNumberOfColumns(array $row): int -{ -$columns = \count($row); -foreach ($row as $column) { -$columns += $column instanceof TableCell ? ($column->getColspan() - 1) : 0; -} - -return $columns; -} - - - - -private function getRowColumns(array $row): array -{ -$columns = range(0, $this->numberOfColumns - 1); -foreach ($row as $cellKey => $cell) { -if ($cell instanceof TableCell && $cell->getColspan() > 1) { - -$columns = array_diff($columns, range($cellKey + 1, $cellKey + $cell->getColspan() - 1)); -} -} - -return $columns; -} - - - - -private function calculateColumnsWidth(iterable $groups) -{ -for ($column = 0; $column < $this->numberOfColumns; ++$column) { -$lengths = []; -foreach ($groups as $group) { -foreach ($group as $row) { -if ($row instanceof TableSeparator) { -continue; -} - -foreach ($row as $i => $cell) { -if ($cell instanceof TableCell) { -$textContent = Helper::removeDecoration($this->output->getFormatter(), $cell); -$textLength = Helper::width($textContent); -if ($textLength > 0) { -$contentColumns = str_split($textContent, ceil($textLength / $cell->getColspan())); -foreach ($contentColumns as $position => $content) { -$row[$i + $position] = $content; -} -} -} -} - -$lengths[] = $this->getCellWidth($row, $column); -} -} - -$this->effectiveColumnWidths[$column] = max($lengths) + Helper::width($this->style->getCellRowContentFormat()) - 2; -} -} - -private function getColumnSeparatorWidth(): int -{ -return Helper::width(sprintf($this->style->getBorderFormat(), $this->style->getBorderChars()[3])); -} - -private function getCellWidth(array $row, int $column): int -{ -$cellWidth = 0; - -if (isset($row[$column])) { -$cell = $row[$column]; -$cellWidth = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $cell)); -} - -$columnWidth = $this->columnWidths[$column] ?? 0; -$cellWidth = max($cellWidth, $columnWidth); - -return isset($this->columnMaxWidths[$column]) ? min($this->columnMaxWidths[$column], $cellWidth) : $cellWidth; -} - - - - -private function cleanup() -{ -$this->effectiveColumnWidths = []; -$this->numberOfColumns = null; -} - - - - -private static function initStyles(): array -{ -$borderless = new TableStyle(); -$borderless -->setHorizontalBorderChars('=') -->setVerticalBorderChars(' ') -->setDefaultCrossingChar(' ') -; - -$compact = new TableStyle(); -$compact -->setHorizontalBorderChars('') -->setVerticalBorderChars('') -->setDefaultCrossingChar('') -->setCellRowContentFormat('%s ') -; - -$styleGuide = new TableStyle(); -$styleGuide -->setHorizontalBorderChars('-') -->setVerticalBorderChars(' ') -->setDefaultCrossingChar(' ') -->setCellHeaderFormat('%s') -; - -$box = (new TableStyle()) -->setHorizontalBorderChars('─') -->setVerticalBorderChars('│') -->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├') -; - -$boxDouble = (new TableStyle()) -->setHorizontalBorderChars('═', '─') -->setVerticalBorderChars('║', '│') -->setCrossingChars('┼', '╔', '╤', '╗', '╢', '╝', '╧', '╚', '╟', '╠', '╪', '╣') -; - -return [ -'default' => new TableStyle(), -'borderless' => $borderless, -'compact' => $compact, -'symfony-style-guide' => $styleGuide, -'box' => $box, -'box-double' => $boxDouble, -]; -} - -private function resolveStyle($name): TableStyle -{ -if ($name instanceof TableStyle) { -return $name; -} - -if (isset(self::$styles[$name])) { -return self::$styles[$name]; -} - -throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); -} -} diff --git a/composer/vendor/symfony/console/Helper/TableCell.php b/composer/vendor/symfony/console/Helper/TableCell.php deleted file mode 100644 index f3144be6c..000000000 --- a/composer/vendor/symfony/console/Helper/TableCell.php +++ /dev/null @@ -1,78 +0,0 @@ - 1, -'colspan' => 1, -'style' => null, -]; - -public function __construct(string $value = '', array $options = []) -{ -$this->value = $value; - - -if ($diff = array_diff(array_keys($options), array_keys($this->options))) { -throw new InvalidArgumentException(sprintf('The TableCell does not support the following options: \'%s\'.', implode('\', \'', $diff))); -} - -if (isset($options['style']) && !$options['style'] instanceof TableCellStyle) { -throw new InvalidArgumentException('The style option must be an instance of "TableCellStyle".'); -} - -$this->options = array_merge($this->options, $options); -} - - - - - - -public function __toString() -{ -return $this->value; -} - - - - - - -public function getColspan() -{ -return (int) $this->options['colspan']; -} - - - - - - -public function getRowspan() -{ -return (int) $this->options['rowspan']; -} - -public function getStyle(): ?TableCellStyle -{ -return $this->options['style']; -} -} diff --git a/composer/vendor/symfony/console/Helper/TableCellStyle.php b/composer/vendor/symfony/console/Helper/TableCellStyle.php deleted file mode 100644 index d584484e8..000000000 --- a/composer/vendor/symfony/console/Helper/TableCellStyle.php +++ /dev/null @@ -1,89 +0,0 @@ - \STR_PAD_RIGHT, -'center' => \STR_PAD_BOTH, -'right' => \STR_PAD_LEFT, -]; - -private $options = [ -'fg' => 'default', -'bg' => 'default', -'options' => null, -'align' => self::DEFAULT_ALIGN, -'cellFormat' => null, -]; - -public function __construct(array $options = []) -{ -if ($diff = array_diff(array_keys($options), array_keys($this->options))) { -throw new InvalidArgumentException(sprintf('The TableCellStyle does not support the following options: \'%s\'.', implode('\', \'', $diff))); -} - -if (isset($options['align']) && !\array_key_exists($options['align'], self::ALIGN_MAP)) { -throw new InvalidArgumentException(sprintf('Wrong align value. Value must be following: \'%s\'.', implode('\', \'', array_keys(self::ALIGN_MAP)))); -} - -$this->options = array_merge($this->options, $options); -} - -public function getOptions(): array -{ -return $this->options; -} - - - - - - -public function getTagOptions() -{ -return array_filter( -$this->getOptions(), -function ($key) { -return \in_array($key, self::TAG_OPTIONS) && isset($this->options[$key]); -}, -\ARRAY_FILTER_USE_KEY -); -} - - - - -public function getPadByAlign() -{ -return self::ALIGN_MAP[$this->getOptions()['align']]; -} - -public function getCellFormat(): ?string -{ -return $this->getOptions()['cellFormat']; -} -} diff --git a/composer/vendor/symfony/console/Helper/TableRows.php b/composer/vendor/symfony/console/Helper/TableRows.php deleted file mode 100644 index 997358e2b..000000000 --- a/composer/vendor/symfony/console/Helper/TableRows.php +++ /dev/null @@ -1,30 +0,0 @@ -generator = $generator; -} - -public function getIterator(): \Traversable -{ -return ($this->generator)(); -} -} diff --git a/composer/vendor/symfony/console/Helper/TableSeparator.php b/composer/vendor/symfony/console/Helper/TableSeparator.php deleted file mode 100644 index 80c80f8fd..000000000 --- a/composer/vendor/symfony/console/Helper/TableSeparator.php +++ /dev/null @@ -1,25 +0,0 @@ - %s '; -private $footerTitleFormat = ' %s '; -private $cellHeaderFormat = '%s'; -private $cellRowFormat = '%s'; -private $cellRowContentFormat = ' %s '; -private $borderFormat = '%s'; -private $padType = \STR_PAD_RIGHT; - - - - - - -public function setPaddingChar(string $paddingChar) -{ -if (!$paddingChar) { -throw new LogicException('The padding char must not be empty.'); -} - -$this->paddingChar = $paddingChar; - -return $this; -} - - - - - - -public function getPaddingChar() -{ -return $this->paddingChar; -} - - - - - - - - - - - - - - - - - -public function setHorizontalBorderChars(string $outside, string $inside = null): self -{ -$this->horizontalOutsideBorderChar = $outside; -$this->horizontalInsideBorderChar = $inside ?? $outside; - -return $this; -} - - - - - - - - - - - - - - - - - - -public function setVerticalBorderChars(string $outside, string $inside = null): self -{ -$this->verticalOutsideBorderChar = $outside; -$this->verticalInsideBorderChar = $inside ?? $outside; - -return $this; -} - - - - - - -public function getBorderChars(): array -{ -return [ -$this->horizontalOutsideBorderChar, -$this->verticalOutsideBorderChar, -$this->horizontalInsideBorderChar, -$this->verticalInsideBorderChar, -]; -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -public function setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, string $topLeftBottom = null, string $topMidBottom = null, string $topRightBottom = null): self -{ -$this->crossingChar = $cross; -$this->crossingTopLeftChar = $topLeft; -$this->crossingTopMidChar = $topMid; -$this->crossingTopRightChar = $topRight; -$this->crossingMidRightChar = $midRight; -$this->crossingBottomRightChar = $bottomRight; -$this->crossingBottomMidChar = $bottomMid; -$this->crossingBottomLeftChar = $bottomLeft; -$this->crossingMidLeftChar = $midLeft; -$this->crossingTopLeftBottomChar = $topLeftBottom ?? $midLeft; -$this->crossingTopMidBottomChar = $topMidBottom ?? $cross; -$this->crossingTopRightBottomChar = $topRightBottom ?? $midRight; - -return $this; -} - - - - - - -public function setDefaultCrossingChar(string $char): self -{ -return $this->setCrossingChars($char, $char, $char, $char, $char, $char, $char, $char, $char); -} - - - - - - -public function getCrossingChar() -{ -return $this->crossingChar; -} - - - - - - -public function getCrossingChars(): array -{ -return [ -$this->crossingChar, -$this->crossingTopLeftChar, -$this->crossingTopMidChar, -$this->crossingTopRightChar, -$this->crossingMidRightChar, -$this->crossingBottomRightChar, -$this->crossingBottomMidChar, -$this->crossingBottomLeftChar, -$this->crossingMidLeftChar, -$this->crossingTopLeftBottomChar, -$this->crossingTopMidBottomChar, -$this->crossingTopRightBottomChar, -]; -} - - - - - - -public function setCellHeaderFormat(string $cellHeaderFormat) -{ -$this->cellHeaderFormat = $cellHeaderFormat; - -return $this; -} - - - - - - -public function getCellHeaderFormat() -{ -return $this->cellHeaderFormat; -} - - - - - - -public function setCellRowFormat(string $cellRowFormat) -{ -$this->cellRowFormat = $cellRowFormat; - -return $this; -} - - - - - - -public function getCellRowFormat() -{ -return $this->cellRowFormat; -} - - - - - - -public function setCellRowContentFormat(string $cellRowContentFormat) -{ -$this->cellRowContentFormat = $cellRowContentFormat; - -return $this; -} - - - - - - -public function getCellRowContentFormat() -{ -return $this->cellRowContentFormat; -} - - - - - - -public function setBorderFormat(string $borderFormat) -{ -$this->borderFormat = $borderFormat; - -return $this; -} - - - - - - -public function getBorderFormat() -{ -return $this->borderFormat; -} - - - - - - -public function setPadType(int $padType) -{ -if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], true)) { -throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).'); -} - -$this->padType = $padType; - -return $this; -} - - - - - - -public function getPadType() -{ -return $this->padType; -} - -public function getHeaderTitleFormat(): string -{ -return $this->headerTitleFormat; -} - - - - -public function setHeaderTitleFormat(string $format): self -{ -$this->headerTitleFormat = $format; - -return $this; -} - -public function getFooterTitleFormat(): string -{ -return $this->footerTitleFormat; -} - - - - -public function setFooterTitleFormat(string $format): self -{ -$this->footerTitleFormat = $format; - -return $this; -} -} diff --git a/composer/vendor/symfony/console/Input/ArgvInput.php b/composer/vendor/symfony/console/Input/ArgvInput.php deleted file mode 100644 index 9ba84bfbd..000000000 --- a/composer/vendor/symfony/console/Input/ArgvInput.php +++ /dev/null @@ -1,378 +0,0 @@ -tokens = $argv; - -parent::__construct($definition); -} - -protected function setTokens(array $tokens) -{ -$this->tokens = $tokens; -} - - - - -protected function parse() -{ -$parseOptions = true; -$this->parsed = $this->tokens; -while (null !== $token = array_shift($this->parsed)) { -$parseOptions = $this->parseToken($token, $parseOptions); -} -} - -protected function parseToken(string $token, bool $parseOptions): bool -{ -if ($parseOptions && '' == $token) { -$this->parseArgument($token); -} elseif ($parseOptions && '--' == $token) { -return false; -} elseif ($parseOptions && str_starts_with($token, '--')) { -$this->parseLongOption($token); -} elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { -$this->parseShortOption($token); -} else { -$this->parseArgument($token); -} - -return $parseOptions; -} - - - - -private function parseShortOption(string $token) -{ -$name = substr($token, 1); - -if (\strlen($name) > 1) { -if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) { - -$this->addShortOption($name[0], substr($name, 1)); -} else { -$this->parseShortOptionSet($name); -} -} else { -$this->addShortOption($name, null); -} -} - - - - - - -private function parseShortOptionSet(string $name) -{ -$len = \strlen($name); -for ($i = 0; $i < $len; ++$i) { -if (!$this->definition->hasShortcut($name[$i])) { -$encoding = mb_detect_encoding($name, null, true); -throw new RuntimeException(sprintf('The "-%s" option does not exist.', false === $encoding ? $name[$i] : mb_substr($name, $i, 1, $encoding))); -} - -$option = $this->definition->getOptionForShortcut($name[$i]); -if ($option->acceptValue()) { -$this->addLongOption($option->getName(), $i === $len - 1 ? null : substr($name, $i + 1)); - -break; -} else { -$this->addLongOption($option->getName(), null); -} -} -} - - - - -private function parseLongOption(string $token) -{ -$name = substr($token, 2); - -if (false !== $pos = strpos($name, '=')) { -if ('' === $value = substr($name, $pos + 1)) { -array_unshift($this->parsed, $value); -} -$this->addLongOption(substr($name, 0, $pos), $value); -} else { -$this->addLongOption($name, null); -} -} - - - - - - -private function parseArgument(string $token) -{ -$c = \count($this->arguments); - - -if ($this->definition->hasArgument($c)) { -$arg = $this->definition->getArgument($c); -$this->arguments[$arg->getName()] = $arg->isArray() ? [$token] : $token; - - -} elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { -$arg = $this->definition->getArgument($c - 1); -$this->arguments[$arg->getName()][] = $token; - - -} else { -$all = $this->definition->getArguments(); -$symfonyCommandName = null; -if (($inputArgument = $all[$key = array_key_first($all)] ?? null) && 'command' === $inputArgument->getName()) { -$symfonyCommandName = $this->arguments['command'] ?? null; -unset($all[$key]); -} - -if (\count($all)) { -if ($symfonyCommandName) { -$message = sprintf('Too many arguments to "%s" command, expected arguments "%s".', $symfonyCommandName, implode('" "', array_keys($all))); -} else { -$message = sprintf('Too many arguments, expected arguments "%s".', implode('" "', array_keys($all))); -} -} elseif ($symfonyCommandName) { -$message = sprintf('No arguments expected for "%s" command, got "%s".', $symfonyCommandName, $token); -} else { -$message = sprintf('No arguments expected, got "%s".', $token); -} - -throw new RuntimeException($message); -} -} - - - - - - -private function addShortOption(string $shortcut, $value) -{ -if (!$this->definition->hasShortcut($shortcut)) { -throw new RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut)); -} - -$this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); -} - - - - - - -private function addLongOption(string $name, $value) -{ -if (!$this->definition->hasOption($name)) { -if (!$this->definition->hasNegation($name)) { -throw new RuntimeException(sprintf('The "--%s" option does not exist.', $name)); -} - -$optionName = $this->definition->negationToName($name); -if (null !== $value) { -throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); -} -$this->options[$optionName] = false; - -return; -} - -$option = $this->definition->getOption($name); - -if (null !== $value && !$option->acceptValue()) { -throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); -} - -if (\in_array($value, ['', null], true) && $option->acceptValue() && \count($this->parsed)) { - - -$next = array_shift($this->parsed); -if ((isset($next[0]) && '-' !== $next[0]) || \in_array($next, ['', null], true)) { -$value = $next; -} else { -array_unshift($this->parsed, $next); -} -} - -if (null === $value) { -if ($option->isValueRequired()) { -throw new RuntimeException(sprintf('The "--%s" option requires a value.', $name)); -} - -if (!$option->isArray() && !$option->isValueOptional()) { -$value = true; -} -} - -if ($option->isArray()) { -$this->options[$name][] = $value; -} else { -$this->options[$name] = $value; -} -} - - - - -public function getFirstArgument() -{ -$isOption = false; -foreach ($this->tokens as $i => $token) { -if ($token && '-' === $token[0]) { -if (str_contains($token, '=') || !isset($this->tokens[$i + 1])) { -continue; -} - - - -$name = '-' === $token[1] ? substr($token, 2) : substr($token, -1); -if (!isset($this->options[$name]) && !$this->definition->hasShortcut($name)) { - -} elseif ((isset($this->options[$name]) || isset($this->options[$name = $this->definition->shortcutToName($name)])) && $this->tokens[$i + 1] === $this->options[$name]) { -$isOption = true; -} - -continue; -} - -if ($isOption) { -$isOption = false; -continue; -} - -return $token; -} - -return null; -} - - - - -public function hasParameterOption($values, bool $onlyParams = false) -{ -$values = (array) $values; - -foreach ($this->tokens as $token) { -if ($onlyParams && '--' === $token) { -return false; -} -foreach ($values as $value) { - - - -$leading = str_starts_with($value, '--') ? $value.'=' : $value; -if ($token === $value || '' !== $leading && str_starts_with($token, $leading)) { -return true; -} -} -} - -return false; -} - - - - -public function getParameterOption($values, $default = false, bool $onlyParams = false) -{ -$values = (array) $values; -$tokens = $this->tokens; - -while (0 < \count($tokens)) { -$token = array_shift($tokens); -if ($onlyParams && '--' === $token) { -return $default; -} - -foreach ($values as $value) { -if ($token === $value) { -return array_shift($tokens); -} - - - -$leading = str_starts_with($value, '--') ? $value.'=' : $value; -if ('' !== $leading && str_starts_with($token, $leading)) { -return substr($token, \strlen($leading)); -} -} -} - -return $default; -} - - - - - - -public function __toString() -{ -$tokens = array_map(function ($token) { -if (preg_match('{^(-[^=]+=)(.+)}', $token, $match)) { -return $match[1].$this->escapeToken($match[2]); -} - -if ($token && '-' !== $token[0]) { -return $this->escapeToken($token); -} - -return $token; -}, $this->tokens); - -return implode(' ', $tokens); -} -} diff --git a/composer/vendor/symfony/console/Input/ArrayInput.php b/composer/vendor/symfony/console/Input/ArrayInput.php deleted file mode 100644 index 1f5086c69..000000000 --- a/composer/vendor/symfony/console/Input/ArrayInput.php +++ /dev/null @@ -1,210 +0,0 @@ -parameters = $parameters; - -parent::__construct($definition); -} - - - - -public function getFirstArgument() -{ -foreach ($this->parameters as $param => $value) { -if ($param && \is_string($param) && '-' === $param[0]) { -continue; -} - -return $value; -} - -return null; -} - - - - -public function hasParameterOption($values, bool $onlyParams = false) -{ -$values = (array) $values; - -foreach ($this->parameters as $k => $v) { -if (!\is_int($k)) { -$v = $k; -} - -if ($onlyParams && '--' === $v) { -return false; -} - -if (\in_array($v, $values)) { -return true; -} -} - -return false; -} - - - - -public function getParameterOption($values, $default = false, bool $onlyParams = false) -{ -$values = (array) $values; - -foreach ($this->parameters as $k => $v) { -if ($onlyParams && ('--' === $k || (\is_int($k) && '--' === $v))) { -return $default; -} - -if (\is_int($k)) { -if (\in_array($v, $values)) { -return true; -} -} elseif (\in_array($k, $values)) { -return $v; -} -} - -return $default; -} - - - - - - -public function __toString() -{ -$params = []; -foreach ($this->parameters as $param => $val) { -if ($param && \is_string($param) && '-' === $param[0]) { -$glue = ('-' === $param[1]) ? '=' : ' '; -if (\is_array($val)) { -foreach ($val as $v) { -$params[] = $param.('' != $v ? $glue.$this->escapeToken($v) : ''); -} -} else { -$params[] = $param.('' != $val ? $glue.$this->escapeToken($val) : ''); -} -} else { -$params[] = \is_array($val) ? implode(' ', array_map([$this, 'escapeToken'], $val)) : $this->escapeToken($val); -} -} - -return implode(' ', $params); -} - - - - -protected function parse() -{ -foreach ($this->parameters as $key => $value) { -if ('--' === $key) { -return; -} -if (str_starts_with($key, '--')) { -$this->addLongOption(substr($key, 2), $value); -} elseif (str_starts_with($key, '-')) { -$this->addShortOption(substr($key, 1), $value); -} else { -$this->addArgument($key, $value); -} -} -} - - - - - - -private function addShortOption(string $shortcut, $value) -{ -if (!$this->definition->hasShortcut($shortcut)) { -throw new InvalidOptionException(sprintf('The "-%s" option does not exist.', $shortcut)); -} - -$this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); -} - - - - - - - -private function addLongOption(string $name, $value) -{ -if (!$this->definition->hasOption($name)) { -if (!$this->definition->hasNegation($name)) { -throw new InvalidOptionException(sprintf('The "--%s" option does not exist.', $name)); -} - -$optionName = $this->definition->negationToName($name); -$this->options[$optionName] = false; - -return; -} - -$option = $this->definition->getOption($name); - -if (null === $value) { -if ($option->isValueRequired()) { -throw new InvalidOptionException(sprintf('The "--%s" option requires a value.', $name)); -} - -if (!$option->isValueOptional()) { -$value = true; -} -} - -$this->options[$name] = $value; -} - - - - - - - - - -private function addArgument($name, $value) -{ -if (!$this->definition->hasArgument($name)) { -throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); -} - -$this->arguments[$name] = $value; -} -} diff --git a/composer/vendor/symfony/console/Input/Input.php b/composer/vendor/symfony/console/Input/Input.php deleted file mode 100644 index 432338ff2..000000000 --- a/composer/vendor/symfony/console/Input/Input.php +++ /dev/null @@ -1,213 +0,0 @@ -definition = new InputDefinition(); -} else { -$this->bind($definition); -$this->validate(); -} -} - - - - -public function bind(InputDefinition $definition) -{ -$this->arguments = []; -$this->options = []; -$this->definition = $definition; - -$this->parse(); -} - - - - -abstract protected function parse(); - - - - -public function validate() -{ -$definition = $this->definition; -$givenArguments = $this->arguments; - -$missingArguments = array_filter(array_keys($definition->getArguments()), function ($argument) use ($definition, $givenArguments) { -return !\array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired(); -}); - -if (\count($missingArguments) > 0) { -throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments))); -} -} - - - - -public function isInteractive() -{ -return $this->interactive; -} - - - - -public function setInteractive(bool $interactive) -{ -$this->interactive = $interactive; -} - - - - -public function getArguments() -{ -return array_merge($this->definition->getArgumentDefaults(), $this->arguments); -} - - - - -public function getArgument(string $name) -{ -if (!$this->definition->hasArgument($name)) { -throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); -} - -return $this->arguments[$name] ?? $this->definition->getArgument($name)->getDefault(); -} - - - - -public function setArgument(string $name, $value) -{ -if (!$this->definition->hasArgument($name)) { -throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); -} - -$this->arguments[$name] = $value; -} - - - - -public function hasArgument(string $name) -{ -return $this->definition->hasArgument($name); -} - - - - -public function getOptions() -{ -return array_merge($this->definition->getOptionDefaults(), $this->options); -} - - - - -public function getOption(string $name) -{ -if ($this->definition->hasNegation($name)) { -if (null === $value = $this->getOption($this->definition->negationToName($name))) { -return $value; -} - -return !$value; -} - -if (!$this->definition->hasOption($name)) { -throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); -} - -return \array_key_exists($name, $this->options) ? $this->options[$name] : $this->definition->getOption($name)->getDefault(); -} - - - - -public function setOption(string $name, $value) -{ -if ($this->definition->hasNegation($name)) { -$this->options[$this->definition->negationToName($name)] = !$value; - -return; -} elseif (!$this->definition->hasOption($name)) { -throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); -} - -$this->options[$name] = $value; -} - - - - -public function hasOption(string $name) -{ -return $this->definition->hasOption($name) || $this->definition->hasNegation($name); -} - - - - - - -public function escapeToken(string $token) -{ -return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token); -} - - - - -public function setStream($stream) -{ -$this->stream = $stream; -} - - - - -public function getStream() -{ -return $this->stream; -} -} diff --git a/composer/vendor/symfony/console/Input/InputArgument.php b/composer/vendor/symfony/console/Input/InputArgument.php deleted file mode 100644 index fa1a3de08..000000000 --- a/composer/vendor/symfony/console/Input/InputArgument.php +++ /dev/null @@ -1,129 +0,0 @@ - 7 || $mode < 1) { -throw new InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode)); -} - -$this->name = $name; -$this->mode = $mode; -$this->description = $description; - -$this->setDefault($default); -} - - - - - - -public function getName() -{ -return $this->name; -} - - - - - - -public function isRequired() -{ -return self::REQUIRED === (self::REQUIRED & $this->mode); -} - - - - - - -public function isArray() -{ -return self::IS_ARRAY === (self::IS_ARRAY & $this->mode); -} - - - - - - - - -public function setDefault($default = null) -{ -if ($this->isRequired() && null !== $default) { -throw new LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.'); -} - -if ($this->isArray()) { -if (null === $default) { -$default = []; -} elseif (!\is_array($default)) { -throw new LogicException('A default value for an array argument must be an array.'); -} -} - -$this->default = $default; -} - - - - - - -public function getDefault() -{ -return $this->default; -} - - - - - - -public function getDescription() -{ -return $this->description; -} -} diff --git a/composer/vendor/symfony/console/Input/InputAwareInterface.php b/composer/vendor/symfony/console/Input/InputAwareInterface.php deleted file mode 100644 index 730fe8d2e..000000000 --- a/composer/vendor/symfony/console/Input/InputAwareInterface.php +++ /dev/null @@ -1,26 +0,0 @@ -setDefinition($definition); -} - - - - -public function setDefinition(array $definition) -{ -$arguments = []; -$options = []; -foreach ($definition as $item) { -if ($item instanceof InputOption) { -$options[] = $item; -} else { -$arguments[] = $item; -} -} - -$this->setArguments($arguments); -$this->setOptions($options); -} - - - - - - -public function setArguments(array $arguments = []) -{ -$this->arguments = []; -$this->requiredCount = 0; -$this->lastOptionalArgument = null; -$this->lastArrayArgument = null; -$this->addArguments($arguments); -} - - - - - - -public function addArguments(?array $arguments = []) -{ -if (null !== $arguments) { -foreach ($arguments as $argument) { -$this->addArgument($argument); -} -} -} - - - - -public function addArgument(InputArgument $argument) -{ -if (isset($this->arguments[$argument->getName()])) { -throw new LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName())); -} - -if (null !== $this->lastArrayArgument) { -throw new LogicException(sprintf('Cannot add a required argument "%s" after an array argument "%s".', $argument->getName(), $this->lastArrayArgument->getName())); -} - -if ($argument->isRequired() && null !== $this->lastOptionalArgument) { -throw new LogicException(sprintf('Cannot add a required argument "%s" after an optional one "%s".', $argument->getName(), $this->lastOptionalArgument->getName())); -} - -if ($argument->isArray()) { -$this->lastArrayArgument = $argument; -} - -if ($argument->isRequired()) { -++$this->requiredCount; -} else { -$this->lastOptionalArgument = $argument; -} - -$this->arguments[$argument->getName()] = $argument; -} - - - - - - - - - - -public function getArgument($name) -{ -if (!$this->hasArgument($name)) { -throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); -} - -$arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; - -return $arguments[$name]; -} - - - - - - - - -public function hasArgument($name) -{ -$arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; - -return isset($arguments[$name]); -} - - - - - - -public function getArguments() -{ -return $this->arguments; -} - - - - - - -public function getArgumentCount() -{ -return null !== $this->lastArrayArgument ? \PHP_INT_MAX : \count($this->arguments); -} - - - - - - -public function getArgumentRequiredCount() -{ -return $this->requiredCount; -} - - - - -public function getArgumentDefaults() -{ -$values = []; -foreach ($this->arguments as $argument) { -$values[$argument->getName()] = $argument->getDefault(); -} - -return $values; -} - - - - - - -public function setOptions(array $options = []) -{ -$this->options = []; -$this->shortcuts = []; -$this->negations = []; -$this->addOptions($options); -} - - - - - - -public function addOptions(array $options = []) -{ -foreach ($options as $option) { -$this->addOption($option); -} -} - - - - -public function addOption(InputOption $option) -{ -if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) { -throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); -} -if (isset($this->negations[$option->getName()])) { -throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); -} - -if ($option->getShortcut()) { -foreach (explode('|', $option->getShortcut()) as $shortcut) { -if (isset($this->shortcuts[$shortcut]) && !$option->equals($this->options[$this->shortcuts[$shortcut]])) { -throw new LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut)); -} -} -} - -$this->options[$option->getName()] = $option; -if ($option->getShortcut()) { -foreach (explode('|', $option->getShortcut()) as $shortcut) { -$this->shortcuts[$shortcut] = $option->getName(); -} -} - -if ($option->isNegatable()) { -$negatedName = 'no-'.$option->getName(); -if (isset($this->options[$negatedName])) { -throw new LogicException(sprintf('An option named "%s" already exists.', $negatedName)); -} -$this->negations[$negatedName] = $option->getName(); -} -} - - - - - - - - -public function getOption(string $name) -{ -if (!$this->hasOption($name)) { -throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name)); -} - -return $this->options[$name]; -} - - - - - - - - - -public function hasOption(string $name) -{ -return isset($this->options[$name]); -} - - - - - - -public function getOptions() -{ -return $this->options; -} - - - - - - -public function hasShortcut(string $name) -{ -return isset($this->shortcuts[$name]); -} - - - - -public function hasNegation(string $name): bool -{ -return isset($this->negations[$name]); -} - - - - - - -public function getOptionForShortcut(string $shortcut) -{ -return $this->getOption($this->shortcutToName($shortcut)); -} - - - - -public function getOptionDefaults() -{ -$values = []; -foreach ($this->options as $option) { -$values[$option->getName()] = $option->getDefault(); -} - -return $values; -} - - - - - - - - -public function shortcutToName(string $shortcut): string -{ -if (!isset($this->shortcuts[$shortcut])) { -throw new InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut)); -} - -return $this->shortcuts[$shortcut]; -} - - - - - - - - -public function negationToName(string $negation): string -{ -if (!isset($this->negations[$negation])) { -throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $negation)); -} - -return $this->negations[$negation]; -} - - - - - - -public function getSynopsis(bool $short = false) -{ -$elements = []; - -if ($short && $this->getOptions()) { -$elements[] = '[options]'; -} elseif (!$short) { -foreach ($this->getOptions() as $option) { -$value = ''; -if ($option->acceptValue()) { -$value = sprintf( -' %s%s%s', -$option->isValueOptional() ? '[' : '', -strtoupper($option->getName()), -$option->isValueOptional() ? ']' : '' -); -} - -$shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; -$negation = $option->isNegatable() ? sprintf('|--no-%s', $option->getName()) : ''; -$elements[] = sprintf('[%s--%s%s%s]', $shortcut, $option->getName(), $value, $negation); -} -} - -if (\count($elements) && $this->getArguments()) { -$elements[] = '[--]'; -} - -$tail = ''; -foreach ($this->getArguments() as $argument) { -$element = '<'.$argument->getName().'>'; -if ($argument->isArray()) { -$element .= '...'; -} - -if (!$argument->isRequired()) { -$element = '['.$element; -$tail .= ']'; -} - -$elements[] = $element; -} - -return implode(' ', $elements).$tail; -} -} diff --git a/composer/vendor/symfony/console/Input/InputInterface.php b/composer/vendor/symfony/console/Input/InputInterface.php deleted file mode 100644 index c94fdb757..000000000 --- a/composer/vendor/symfony/console/Input/InputInterface.php +++ /dev/null @@ -1,151 +0,0 @@ -= (self::VALUE_NEGATABLE << 1) || $mode < 1) { -throw new InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode)); -} - -$this->name = $name; -$this->shortcut = $shortcut; -$this->mode = $mode; -$this->description = $description; - -if ($this->isArray() && !$this->acceptValue()) { -throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.'); -} -if ($this->isNegatable() && $this->acceptValue()) { -throw new InvalidArgumentException('Impossible to have an option mode VALUE_NEGATABLE if the option also accepts a value.'); -} - -$this->setDefault($default); -} - - - - - - -public function getShortcut() -{ -return $this->shortcut; -} - - - - - - -public function getName() -{ -return $this->name; -} - - - - - - -public function acceptValue() -{ -return $this->isValueRequired() || $this->isValueOptional(); -} - - - - - - -public function isValueRequired() -{ -return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode); -} - - - - - - -public function isValueOptional() -{ -return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode); -} - - - - - - -public function isArray() -{ -return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode); -} - -public function isNegatable(): bool -{ -return self::VALUE_NEGATABLE === (self::VALUE_NEGATABLE & $this->mode); -} - - - - -public function setDefault($default = null) -{ -if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) { -throw new LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.'); -} - -if ($this->isArray()) { -if (null === $default) { -$default = []; -} elseif (!\is_array($default)) { -throw new LogicException('A default value for an array option must be an array.'); -} -} - -$this->default = $this->acceptValue() || $this->isNegatable() ? $default : false; -} - - - - - - -public function getDefault() -{ -return $this->default; -} - - - - - - -public function getDescription() -{ -return $this->description; -} - - - - - - -public function equals(self $option) -{ -return $option->getName() === $this->getName() -&& $option->getShortcut() === $this->getShortcut() -&& $option->getDefault() === $this->getDefault() -&& $option->isNegatable() === $this->isNegatable() -&& $option->isArray() === $this->isArray() -&& $option->isValueRequired() === $this->isValueRequired() -&& $option->isValueOptional() === $this->isValueOptional() -; -} -} diff --git a/composer/vendor/symfony/console/Input/StreamableInputInterface.php b/composer/vendor/symfony/console/Input/StreamableInputInterface.php deleted file mode 100644 index e1b806c55..000000000 --- a/composer/vendor/symfony/console/Input/StreamableInputInterface.php +++ /dev/null @@ -1,37 +0,0 @@ -setTokens($this->tokenize($input)); -} - - - - - - -private function tokenize(string $input): array -{ -$tokens = []; -$length = \strlen($input); -$cursor = 0; -$token = null; -while ($cursor < $length) { -if ('\\' === $input[$cursor]) { -$token .= $input[++$cursor] ?? ''; -++$cursor; -continue; -} - -if (preg_match('/\s+/A', $input, $match, 0, $cursor)) { -if (null !== $token) { -$tokens[] = $token; -$token = null; -} -} elseif (preg_match('/([^="\'\s]+?)(=?)('.self::REGEX_QUOTED_STRING.'+)/A', $input, $match, 0, $cursor)) { -$token .= $match[1].$match[2].stripcslashes(str_replace(['"\'', '\'"', '\'\'', '""'], '', substr($match[3], 1, -1))); -} elseif (preg_match('/'.self::REGEX_QUOTED_STRING.'/A', $input, $match, 0, $cursor)) { -$token .= stripcslashes(substr($match[0], 1, -1)); -} elseif (preg_match('/'.self::REGEX_UNQUOTED_STRING.'/A', $input, $match, 0, $cursor)) { -$token .= $match[1]; -} else { - -throw new InvalidArgumentException(sprintf('Unable to parse input near "... %s ...".', substr($input, $cursor, 10))); -} - -$cursor += \strlen($match[0]); -} - -if (null !== $token) { -$tokens[] = $token; -} - -return $tokens; -} -} diff --git a/composer/vendor/symfony/console/LICENSE b/composer/vendor/symfony/console/LICENSE deleted file mode 100644 index 3622370ec..000000000 --- a/composer/vendor/symfony/console/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2004-2023 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/composer/vendor/symfony/console/Logger/ConsoleLogger.php b/composer/vendor/symfony/console/Logger/ConsoleLogger.php deleted file mode 100644 index 26a133858..000000000 --- a/composer/vendor/symfony/console/Logger/ConsoleLogger.php +++ /dev/null @@ -1,126 +0,0 @@ - OutputInterface::VERBOSITY_NORMAL, -LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, -LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, -LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, -LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, -LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE, -LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE, -LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG, -]; -private $formatLevelMap = [ -LogLevel::EMERGENCY => self::ERROR, -LogLevel::ALERT => self::ERROR, -LogLevel::CRITICAL => self::ERROR, -LogLevel::ERROR => self::ERROR, -LogLevel::WARNING => self::INFO, -LogLevel::NOTICE => self::INFO, -LogLevel::INFO => self::INFO, -LogLevel::DEBUG => self::INFO, -]; -private $errored = false; - -public function __construct(OutputInterface $output, array $verbosityLevelMap = [], array $formatLevelMap = []) -{ -$this->output = $output; -$this->verbosityLevelMap = $verbosityLevelMap + $this->verbosityLevelMap; -$this->formatLevelMap = $formatLevelMap + $this->formatLevelMap; -} - - - - - - -public function log($level, $message, array $context = []) -{ -if (!isset($this->verbosityLevelMap[$level])) { -throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level)); -} - -$output = $this->output; - - -if (self::ERROR === $this->formatLevelMap[$level]) { -if ($this->output instanceof ConsoleOutputInterface) { -$output = $output->getErrorOutput(); -} -$this->errored = true; -} - - - -if ($output->getVerbosity() >= $this->verbosityLevelMap[$level]) { -$output->writeln(sprintf('<%1$s>[%2$s] %3$s', $this->formatLevelMap[$level], $level, $this->interpolate($message, $context)), $this->verbosityLevelMap[$level]); -} -} - - - - - - -public function hasErrored() -{ -return $this->errored; -} - - - - - - -private function interpolate(string $message, array $context): string -{ -if (!str_contains($message, '{')) { -return $message; -} - -$replacements = []; -foreach ($context as $key => $val) { -if (null === $val || \is_scalar($val) || (\is_object($val) && method_exists($val, '__toString'))) { -$replacements["{{$key}}"] = $val; -} elseif ($val instanceof \DateTimeInterface) { -$replacements["{{$key}}"] = $val->format(\DateTime::RFC3339); -} elseif (\is_object($val)) { -$replacements["{{$key}}"] = '[object '.\get_class($val).']'; -} else { -$replacements["{{$key}}"] = '['.\gettype($val).']'; -} -} - -return strtr($message, $replacements); -} -} diff --git a/composer/vendor/symfony/console/Output/BufferedOutput.php b/composer/vendor/symfony/console/Output/BufferedOutput.php deleted file mode 100644 index da18c1107..000000000 --- a/composer/vendor/symfony/console/Output/BufferedOutput.php +++ /dev/null @@ -1,45 +0,0 @@ -buffer; -$this->buffer = ''; - -return $content; -} - - - - -protected function doWrite(string $message, bool $newline) -{ -$this->buffer .= $message; - -if ($newline) { -$this->buffer .= \PHP_EOL; -} -} -} diff --git a/composer/vendor/symfony/console/Output/ConsoleOutput.php b/composer/vendor/symfony/console/Output/ConsoleOutput.php deleted file mode 100644 index 354b32063..000000000 --- a/composer/vendor/symfony/console/Output/ConsoleOutput.php +++ /dev/null @@ -1,172 +0,0 @@ -openOutputStream(), $verbosity, $decorated, $formatter); - -if (null === $formatter) { - -$this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated); - -return; -} - -$actualDecorated = $this->isDecorated(); -$this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated, $this->getFormatter()); - -if (null === $decorated) { -$this->setDecorated($actualDecorated && $this->stderr->isDecorated()); -} -} - - - - -public function section(): ConsoleSectionOutput -{ -return new ConsoleSectionOutput($this->getStream(), $this->consoleSectionOutputs, $this->getVerbosity(), $this->isDecorated(), $this->getFormatter()); -} - - - - -public function setDecorated(bool $decorated) -{ -parent::setDecorated($decorated); -$this->stderr->setDecorated($decorated); -} - - - - -public function setFormatter(OutputFormatterInterface $formatter) -{ -parent::setFormatter($formatter); -$this->stderr->setFormatter($formatter); -} - - - - -public function setVerbosity(int $level) -{ -parent::setVerbosity($level); -$this->stderr->setVerbosity($level); -} - - - - -public function getErrorOutput() -{ -return $this->stderr; -} - - - - -public function setErrorOutput(OutputInterface $error) -{ -$this->stderr = $error; -} - - - - - - - -protected function hasStdoutSupport() -{ -return false === $this->isRunningOS400(); -} - - - - - - - -protected function hasStderrSupport() -{ -return false === $this->isRunningOS400(); -} - - - - - -private function isRunningOS400(): bool -{ -$checks = [ -\function_exists('php_uname') ? php_uname('s') : '', -getenv('OSTYPE'), -\PHP_OS, -]; - -return false !== stripos(implode(';', $checks), 'OS400'); -} - - - - -private function openOutputStream() -{ -if (!$this->hasStdoutSupport()) { -return fopen('php://output', 'w'); -} - - -return \defined('STDOUT') ? \STDOUT : (@fopen('php://stdout', 'w') ?: fopen('php://output', 'w')); -} - - - - -private function openErrorStream() -{ -if (!$this->hasStderrSupport()) { -return fopen('php://output', 'w'); -} - - -return \defined('STDERR') ? \STDERR : (@fopen('php://stderr', 'w') ?: fopen('php://output', 'w')); -} -} diff --git a/composer/vendor/symfony/console/Output/ConsoleOutputInterface.php b/composer/vendor/symfony/console/Output/ConsoleOutputInterface.php deleted file mode 100644 index d39a07642..000000000 --- a/composer/vendor/symfony/console/Output/ConsoleOutputInterface.php +++ /dev/null @@ -1,32 +0,0 @@ -sections = &$sections; -$this->terminal = new Terminal(); -} - - - - - - -public function clear(int $lines = null) -{ -if (empty($this->content) || !$this->isDecorated()) { -return; -} - -if ($lines) { -array_splice($this->content, -($lines * 2)); -} else { -$lines = $this->lines; -$this->content = []; -} - -$this->lines -= $lines; - -parent::doWrite($this->popStreamContentUntilCurrentSection($lines), false); -} - - - - - - -public function overwrite($message) -{ -$this->clear(); -$this->writeln($message); -} - -public function getContent(): string -{ -return implode('', $this->content); -} - - - - -public function addContent(string $input) -{ -foreach (explode(\PHP_EOL, $input) as $lineContent) { -$this->lines += ceil($this->getDisplayLength($lineContent) / $this->terminal->getWidth()) ?: 1; -$this->content[] = $lineContent; -$this->content[] = \PHP_EOL; -} -} - - - - -protected function doWrite(string $message, bool $newline) -{ -if (!$this->isDecorated()) { -parent::doWrite($message, $newline); - -return; -} - -$erasedContent = $this->popStreamContentUntilCurrentSection(); - -$this->addContent($message); - -parent::doWrite($message, true); -parent::doWrite($erasedContent, false); -} - - - - - -private function popStreamContentUntilCurrentSection(int $numberOfLinesToClearFromCurrentSection = 0): string -{ -$numberOfLinesToClear = $numberOfLinesToClearFromCurrentSection; -$erasedContent = []; - -foreach ($this->sections as $section) { -if ($section === $this) { -break; -} - -$numberOfLinesToClear += $section->lines; -$erasedContent[] = $section->getContent(); -} - -if ($numberOfLinesToClear > 0) { - -parent::doWrite(sprintf("\x1b[%dA", $numberOfLinesToClear), false); - -parent::doWrite("\x1b[0J", false); -} - -return implode('', array_reverse($erasedContent)); -} - -private function getDisplayLength(string $text): int -{ -return Helper::width(Helper::removeDecoration($this->getFormatter(), str_replace("\t", ' ', $text))); -} -} diff --git a/composer/vendor/symfony/console/Output/NullOutput.php b/composer/vendor/symfony/console/Output/NullOutput.php deleted file mode 100644 index 4f9f721c7..000000000 --- a/composer/vendor/symfony/console/Output/NullOutput.php +++ /dev/null @@ -1,128 +0,0 @@ -formatter) { -return $this->formatter; -} - -return $this->formatter = new NullOutputFormatter(); -} - - - - -public function setDecorated(bool $decorated) -{ - -} - - - - -public function isDecorated() -{ -return false; -} - - - - -public function setVerbosity(int $level) -{ - -} - - - - -public function getVerbosity() -{ -return self::VERBOSITY_QUIET; -} - - - - -public function isQuiet() -{ -return true; -} - - - - -public function isVerbose() -{ -return false; -} - - - - -public function isVeryVerbose() -{ -return false; -} - - - - -public function isDebug() -{ -return false; -} - - - - -public function writeln($messages, int $options = self::OUTPUT_NORMAL) -{ - -} - - - - -public function write($messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) -{ - -} -} diff --git a/composer/vendor/symfony/console/Output/Output.php b/composer/vendor/symfony/console/Output/Output.php deleted file mode 100644 index 8be0b7167..000000000 --- a/composer/vendor/symfony/console/Output/Output.php +++ /dev/null @@ -1,174 +0,0 @@ -verbosity = $verbosity ?? self::VERBOSITY_NORMAL; -$this->formatter = $formatter ?? new OutputFormatter(); -$this->formatter->setDecorated($decorated); -} - - - - -public function setFormatter(OutputFormatterInterface $formatter) -{ -$this->formatter = $formatter; -} - - - - -public function getFormatter() -{ -return $this->formatter; -} - - - - -public function setDecorated(bool $decorated) -{ -$this->formatter->setDecorated($decorated); -} - - - - -public function isDecorated() -{ -return $this->formatter->isDecorated(); -} - - - - -public function setVerbosity(int $level) -{ -$this->verbosity = $level; -} - - - - -public function getVerbosity() -{ -return $this->verbosity; -} - - - - -public function isQuiet() -{ -return self::VERBOSITY_QUIET === $this->verbosity; -} - - - - -public function isVerbose() -{ -return self::VERBOSITY_VERBOSE <= $this->verbosity; -} - - - - -public function isVeryVerbose() -{ -return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; -} - - - - -public function isDebug() -{ -return self::VERBOSITY_DEBUG <= $this->verbosity; -} - - - - -public function writeln($messages, int $options = self::OUTPUT_NORMAL) -{ -$this->write($messages, true, $options); -} - - - - -public function write($messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) -{ -if (!is_iterable($messages)) { -$messages = [$messages]; -} - -$types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN; -$type = $types & $options ?: self::OUTPUT_NORMAL; - -$verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG; -$verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL; - -if ($verbosity > $this->getVerbosity()) { -return; -} - -foreach ($messages as $message) { -switch ($type) { -case OutputInterface::OUTPUT_NORMAL: -$message = $this->formatter->format($message); -break; -case OutputInterface::OUTPUT_RAW: -break; -case OutputInterface::OUTPUT_PLAIN: -$message = strip_tags($this->formatter->format($message)); -break; -} - -$this->doWrite($message ?? '', $newline); -} -} - - - - -abstract protected function doWrite(string $message, bool $newline); -} diff --git a/composer/vendor/symfony/console/Output/OutputInterface.php b/composer/vendor/symfony/console/Output/OutputInterface.php deleted file mode 100644 index 09b6470cf..000000000 --- a/composer/vendor/symfony/console/Output/OutputInterface.php +++ /dev/null @@ -1,110 +0,0 @@ -stream = $stream; - -if (null === $decorated) { -$decorated = $this->hasColorSupport(); -} - -parent::__construct($verbosity, $decorated, $formatter); -} - - - - - - -public function getStream() -{ -return $this->stream; -} - - - - -protected function doWrite(string $message, bool $newline) -{ -if ($newline) { -$message .= \PHP_EOL; -} - -@fwrite($this->stream, $message); - -fflush($this->stream); -} - - - - - - - - - - - - - - -protected function hasColorSupport() -{ - -if (isset($_SERVER['NO_COLOR']) || false !== getenv('NO_COLOR')) { -return false; -} - -if ('Hyper' === getenv('TERM_PROGRAM')) { -return true; -} - -if (\DIRECTORY_SEPARATOR === '\\') { -return (\function_exists('sapi_windows_vt100_support') -&& @sapi_windows_vt100_support($this->stream)) -|| false !== getenv('ANSICON') -|| 'ON' === getenv('ConEmuANSI') -|| 'xterm' === getenv('TERM'); -} - -return stream_isatty($this->stream); -} -} diff --git a/composer/vendor/symfony/console/Output/TrimmedBufferOutput.php b/composer/vendor/symfony/console/Output/TrimmedBufferOutput.php deleted file mode 100644 index 1caa084d9..000000000 --- a/composer/vendor/symfony/console/Output/TrimmedBufferOutput.php +++ /dev/null @@ -1,63 +0,0 @@ -maxLength = $maxLength; -} - - - - - - -public function fetch() -{ -$content = $this->buffer; -$this->buffer = ''; - -return $content; -} - - - - -protected function doWrite(string $message, bool $newline) -{ -$this->buffer .= $message; - -if ($newline) { -$this->buffer .= \PHP_EOL; -} - -$this->buffer = substr($this->buffer, 0 - $this->maxLength); -} -} diff --git a/composer/vendor/symfony/console/Question/ChoiceQuestion.php b/composer/vendor/symfony/console/Question/ChoiceQuestion.php deleted file mode 100644 index f41765c30..000000000 --- a/composer/vendor/symfony/console/Question/ChoiceQuestion.php +++ /dev/null @@ -1,183 +0,0 @@ - '; -private $errorMessage = 'Value "%s" is invalid'; - - - - - - -public function __construct(string $question, array $choices, $default = null) -{ -if (!$choices) { -throw new \LogicException('Choice question must have at least 1 choice available.'); -} - -parent::__construct($question, $default); - -$this->choices = $choices; -$this->setValidator($this->getDefaultValidator()); -$this->setAutocompleterValues($choices); -} - - - - - - -public function getChoices() -{ -return $this->choices; -} - - - - - - - - -public function setMultiselect(bool $multiselect) -{ -$this->multiselect = $multiselect; -$this->setValidator($this->getDefaultValidator()); - -return $this; -} - - - - - - -public function isMultiselect() -{ -return $this->multiselect; -} - - - - - - -public function getPrompt() -{ -return $this->prompt; -} - - - - - - -public function setPrompt(string $prompt) -{ -$this->prompt = $prompt; - -return $this; -} - - - - - - - - -public function setErrorMessage(string $errorMessage) -{ -$this->errorMessage = $errorMessage; -$this->setValidator($this->getDefaultValidator()); - -return $this; -} - -private function getDefaultValidator(): callable -{ -$choices = $this->choices; -$errorMessage = $this->errorMessage; -$multiselect = $this->multiselect; -$isAssoc = $this->isAssoc($choices); - -return function ($selected) use ($choices, $errorMessage, $multiselect, $isAssoc) { -if ($multiselect) { - -if (!preg_match('/^[^,]+(?:,[^,]+)*$/', (string) $selected, $matches)) { -throw new InvalidArgumentException(sprintf($errorMessage, $selected)); -} - -$selectedChoices = explode(',', (string) $selected); -} else { -$selectedChoices = [$selected]; -} - -if ($this->isTrimmable()) { -foreach ($selectedChoices as $k => $v) { -$selectedChoices[$k] = trim((string) $v); -} -} - -$multiselectChoices = []; -foreach ($selectedChoices as $value) { -$results = []; -foreach ($choices as $key => $choice) { -if ($choice === $value) { -$results[] = $key; -} -} - -if (\count($results) > 1) { -throw new InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of "%s".', implode('" or "', $results))); -} - -$result = array_search($value, $choices); - -if (!$isAssoc) { -if (false !== $result) { -$result = $choices[$result]; -} elseif (isset($choices[$value])) { -$result = $choices[$value]; -} -} elseif (false === $result && isset($choices[$value])) { -$result = $value; -} - -if (false === $result) { -throw new InvalidArgumentException(sprintf($errorMessage, $value)); -} - - -$multiselectChoices[] = $isAssoc ? (string) $result : $result; -} - -if ($multiselect) { -return $multiselectChoices; -} - -return current($multiselectChoices); -}; -} -} diff --git a/composer/vendor/symfony/console/Question/ConfirmationQuestion.php b/composer/vendor/symfony/console/Question/ConfirmationQuestion.php deleted file mode 100644 index 2d02f80f0..000000000 --- a/composer/vendor/symfony/console/Question/ConfirmationQuestion.php +++ /dev/null @@ -1,57 +0,0 @@ -trueAnswerRegex = $trueAnswerRegex; -$this->setNormalizer($this->getDefaultNormalizer()); -} - - - - -private function getDefaultNormalizer(): callable -{ -$default = $this->getDefault(); -$regex = $this->trueAnswerRegex; - -return function ($answer) use ($default, $regex) { -if (\is_bool($answer)) { -return $answer; -} - -$answerIsTrue = (bool) preg_match($regex, $answer); -if (false === $default) { -return $answer && $answerIsTrue; -} - -return '' === $answer || $answerIsTrue; -}; -} -} diff --git a/composer/vendor/symfony/console/Question/Question.php b/composer/vendor/symfony/console/Question/Question.php deleted file mode 100644 index 2e3012dd3..000000000 --- a/composer/vendor/symfony/console/Question/Question.php +++ /dev/null @@ -1,299 +0,0 @@ -question = $question; -$this->default = $default; -} - - - - - - -public function getQuestion() -{ -return $this->question; -} - - - - - - -public function getDefault() -{ -return $this->default; -} - - - - -public function isMultiline(): bool -{ -return $this->multiline; -} - - - - - - -public function setMultiline(bool $multiline): self -{ -$this->multiline = $multiline; - -return $this; -} - - - - - - -public function isHidden() -{ -return $this->hidden; -} - - - - - - - - -public function setHidden(bool $hidden) -{ -if ($this->autocompleterCallback) { -throw new LogicException('A hidden question cannot use the autocompleter.'); -} - -$this->hidden = $hidden; - -return $this; -} - - - - - - -public function isHiddenFallback() -{ -return $this->hiddenFallback; -} - - - - - - -public function setHiddenFallback(bool $fallback) -{ -$this->hiddenFallback = $fallback; - -return $this; -} - - - - - - -public function getAutocompleterValues() -{ -$callback = $this->getAutocompleterCallback(); - -return $callback ? $callback('') : null; -} - - - - - - - - -public function setAutocompleterValues(?iterable $values) -{ -if (\is_array($values)) { -$values = $this->isAssoc($values) ? array_merge(array_keys($values), array_values($values)) : array_values($values); - -$callback = static function () use ($values) { -return $values; -}; -} elseif ($values instanceof \Traversable) { -$valueCache = null; -$callback = static function () use ($values, &$valueCache) { -return $valueCache ?? $valueCache = iterator_to_array($values, false); -}; -} else { -$callback = null; -} - -return $this->setAutocompleterCallback($callback); -} - - - - -public function getAutocompleterCallback(): ?callable -{ -return $this->autocompleterCallback; -} - - - - - - - - -public function setAutocompleterCallback(callable $callback = null): self -{ -if ($this->hidden && null !== $callback) { -throw new LogicException('A hidden question cannot use the autocompleter.'); -} - -$this->autocompleterCallback = $callback; - -return $this; -} - - - - - - -public function setValidator(callable $validator = null) -{ -$this->validator = $validator; - -return $this; -} - - - - - - -public function getValidator() -{ -return $this->validator; -} - - - - - - - - - - -public function setMaxAttempts(?int $attempts) -{ -if (null !== $attempts && $attempts < 1) { -throw new InvalidArgumentException('Maximum number of attempts must be a positive value.'); -} - -$this->attempts = $attempts; - -return $this; -} - - - - - - - - -public function getMaxAttempts() -{ -return $this->attempts; -} - - - - - - - - -public function setNormalizer(callable $normalizer) -{ -$this->normalizer = $normalizer; - -return $this; -} - - - - - - - - -public function getNormalizer() -{ -return $this->normalizer; -} - -protected function isAssoc(array $array) -{ -return (bool) \count(array_filter(array_keys($array), 'is_string')); -} - -public function isTrimmable(): bool -{ -return $this->trimmable; -} - - - - -public function setTrimmable(bool $trimmable): self -{ -$this->trimmable = $trimmable; - -return $this; -} -} diff --git a/composer/vendor/symfony/console/Resources/bin/hiddeninput.exe b/composer/vendor/symfony/console/Resources/bin/hiddeninput.exe deleted file mode 100644 index c8cf65e8d819e6e525121cf6b21f1c2429746038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 J0sQ~1{4brj`U(I5 diff --git a/composer/vendor/symfony/console/Resources/completion.bash b/composer/vendor/symfony/console/Resources/completion.bash deleted file mode 100644 index 64b87ccf7..000000000 --- a/composer/vendor/symfony/console/Resources/completion.bash +++ /dev/null @@ -1,84 +0,0 @@ -# This file is part of the Symfony package. -# -# (c) Fabien Potencier -# -# For the full copyright and license information, please view -# https://symfony.com/doc/current/contributing/code/license.html - -_sf_{{ COMMAND_NAME }}() { - # Use newline as only separator to allow space in completion values - IFS=$'\n' - local sf_cmd="${COMP_WORDS[0]}" - - # for an alias, get the real script behind it - sf_cmd_type=$(type -t $sf_cmd) - if [[ $sf_cmd_type == "alias" ]]; then - sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") - elif [[ $sf_cmd_type == "file" ]]; then - sf_cmd=$(type -p $sf_cmd) - fi - - if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then - return 1 - fi - - local cur prev words cword - _get_comp_words_by_ref -n := cur prev words cword - - local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-S{{ VERSION }}") - for w in ${words[@]}; do - w=$(printf -- '%b' "$w") - # remove quotes from typed values - quote="${w:0:1}" - if [ "$quote" == \' ]; then - w="${w%\'}" - w="${w#\'}" - elif [ "$quote" == \" ]; then - w="${w%\"}" - w="${w#\"}" - fi - # empty values are ignored - if [ ! -z "$w" ]; then - completecmd+=("-i$w") - fi - done - - local sfcomplete - if sfcomplete=$(${completecmd[@]} 2>&1); then - local quote suggestions - quote=${cur:0:1} - - # Use single quotes by default if suggestions contains backslash (FQCN) - if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then - quote=\' - fi - - if [ "$quote" == \' ]; then - # single quotes: no additional escaping (does not accept ' in values) - suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) - elif [ "$quote" == \" ]; then - # double quotes: double escaping for \ $ ` " - suggestions=$(for s in $sfcomplete; do - s=${s//\\/\\\\} - s=${s//\$/\\\$} - s=${s//\`/\\\`} - s=${s//\"/\\\"} - printf $'%q%q%q\n' "$quote" "$s" "$quote"; - done) - else - # no quotes: double escaping - suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done) - fi - COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur"))) - __ltrim_colon_completions "$cur" - else - if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then - >&2 echo - >&2 echo $sfcomplete - fi - - return 1 - fi -} - -complete -F _sf_{{ COMMAND_NAME }} {{ COMMAND_NAME }} diff --git a/composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php b/composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php deleted file mode 100644 index ee9419e38..000000000 --- a/composer/vendor/symfony/console/SignalRegistry/SignalRegistry.php +++ /dev/null @@ -1,65 +0,0 @@ -signalHandlers[$signal])) { -$previousCallback = pcntl_signal_get_handler($signal); - -if (\is_callable($previousCallback)) { -$this->signalHandlers[$signal][] = $previousCallback; -} -} - -$this->signalHandlers[$signal][] = $signalHandler; - -pcntl_signal($signal, [$this, 'handle']); -} - -public static function isSupported(): bool -{ -if (!\function_exists('pcntl_signal')) { -return false; -} - -if (\in_array('pcntl_signal', explode(',', \ini_get('disable_functions')))) { -return false; -} - -return true; -} - - - - -public function handle(int $signal): void -{ -$count = \count($this->signalHandlers[$signal]); - -foreach ($this->signalHandlers[$signal] as $i => $signalHandler) { -$hasNext = $i !== $count - 1; -$signalHandler($signal, $hasNext); -} -} -} diff --git a/composer/vendor/symfony/console/SingleCommandApplication.php b/composer/vendor/symfony/console/SingleCommandApplication.php deleted file mode 100644 index 765bc9743..000000000 --- a/composer/vendor/symfony/console/SingleCommandApplication.php +++ /dev/null @@ -1,72 +0,0 @@ -version = $version; - -return $this; -} - - - - - - -public function setAutoExit(bool $autoExit): self -{ -$this->autoExit = $autoExit; - -return $this; -} - -public function run(InputInterface $input = null, OutputInterface $output = null): int -{ -if ($this->running) { -return parent::run($input, $output); -} - - -$application = new Application($this->getName() ?: 'UNKNOWN', $this->version); -$application->setAutoExit($this->autoExit); - -$this->setName($_SERVER['argv'][0]); -$application->add($this); -$application->setDefaultCommand($this->getName(), true); - -$this->running = true; -try { -$ret = $application->run($input, $output); -} finally { -$this->running = false; -} - -return $ret ?? 1; -} -} diff --git a/composer/vendor/symfony/console/Style/OutputStyle.php b/composer/vendor/symfony/console/Style/OutputStyle.php deleted file mode 100644 index ebb7659aa..000000000 --- a/composer/vendor/symfony/console/Style/OutputStyle.php +++ /dev/null @@ -1,153 +0,0 @@ -output = $output; -} - - - - -public function newLine(int $count = 1) -{ -$this->output->write(str_repeat(\PHP_EOL, $count)); -} - - - - -public function createProgressBar(int $max = 0) -{ -return new ProgressBar($this->output, $max); -} - - - - -public function write($messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) -{ -$this->output->write($messages, $newline, $type); -} - - - - -public function writeln($messages, int $type = self::OUTPUT_NORMAL) -{ -$this->output->writeln($messages, $type); -} - - - - -public function setVerbosity(int $level) -{ -$this->output->setVerbosity($level); -} - - - - -public function getVerbosity() -{ -return $this->output->getVerbosity(); -} - - - - -public function setDecorated(bool $decorated) -{ -$this->output->setDecorated($decorated); -} - - - - -public function isDecorated() -{ -return $this->output->isDecorated(); -} - - - - -public function setFormatter(OutputFormatterInterface $formatter) -{ -$this->output->setFormatter($formatter); -} - - - - -public function getFormatter() -{ -return $this->output->getFormatter(); -} - - - - -public function isQuiet() -{ -return $this->output->isQuiet(); -} - - - - -public function isVerbose() -{ -return $this->output->isVerbose(); -} - - - - -public function isVeryVerbose() -{ -return $this->output->isVeryVerbose(); -} - - - - -public function isDebug() -{ -return $this->output->isDebug(); -} - -protected function getErrorOutput() -{ -if (!$this->output instanceof ConsoleOutputInterface) { -return $this->output; -} - -return $this->output->getErrorOutput(); -} -} diff --git a/composer/vendor/symfony/console/Style/StyleInterface.php b/composer/vendor/symfony/console/Style/StyleInterface.php deleted file mode 100644 index b9e112b4f..000000000 --- a/composer/vendor/symfony/console/Style/StyleInterface.php +++ /dev/null @@ -1,132 +0,0 @@ -input = $input; -$this->bufferedOutput = new TrimmedBufferOutput(\DIRECTORY_SEPARATOR === '\\' ? 4 : 2, $output->getVerbosity(), false, clone $output->getFormatter()); - -$width = (new Terminal())->getWidth() ?: self::MAX_LINE_LENGTH; -$this->lineLength = min($width - (int) (\DIRECTORY_SEPARATOR === '\\'), self::MAX_LINE_LENGTH); - -parent::__construct($this->output = $output); -} - - - - - - -public function block($messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = true) -{ -$messages = \is_array($messages) ? array_values($messages) : [$messages]; - -$this->autoPrependBlock(); -$this->writeln($this->createBlock($messages, $type, $style, $prefix, $padding, $escape)); -$this->newLine(); -} - - - - -public function title(string $message) -{ -$this->autoPrependBlock(); -$this->writeln([ -sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), -sprintf('%s', str_repeat('=', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), -]); -$this->newLine(); -} - - - - -public function section(string $message) -{ -$this->autoPrependBlock(); -$this->writeln([ -sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), -sprintf('%s', str_repeat('-', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), -]); -$this->newLine(); -} - - - - -public function listing(array $elements) -{ -$this->autoPrependText(); -$elements = array_map(function ($element) { -return sprintf(' * %s', $element); -}, $elements); - -$this->writeln($elements); -$this->newLine(); -} - - - - -public function text($message) -{ -$this->autoPrependText(); - -$messages = \is_array($message) ? array_values($message) : [$message]; -foreach ($messages as $message) { -$this->writeln(sprintf(' %s', $message)); -} -} - - - - - - -public function comment($message) -{ -$this->block($message, null, null, ' // ', false, false); -} - - - - -public function success($message) -{ -$this->block($message, 'OK', 'fg=black;bg=green', ' ', true); -} - - - - -public function error($message) -{ -$this->block($message, 'ERROR', 'fg=white;bg=red', ' ', true); -} - - - - -public function warning($message) -{ -$this->block($message, 'WARNING', 'fg=black;bg=yellow', ' ', true); -} - - - - -public function note($message) -{ -$this->block($message, 'NOTE', 'fg=yellow', ' ! '); -} - - - - - - -public function info($message) -{ -$this->block($message, 'INFO', 'fg=green', ' ', true); -} - - - - -public function caution($message) -{ -$this->block($message, 'CAUTION', 'fg=white;bg=red', ' ! ', true); -} - - - - -public function table(array $headers, array $rows) -{ -$this->createTable() -->setHeaders($headers) -->setRows($rows) -->render() -; - -$this->newLine(); -} - - - - -public function horizontalTable(array $headers, array $rows) -{ -$this->createTable() -->setHorizontal(true) -->setHeaders($headers) -->setRows($rows) -->render() -; - -$this->newLine(); -} - - - - - - - - - - - -public function definitionList(...$list) -{ -$headers = []; -$row = []; -foreach ($list as $value) { -if ($value instanceof TableSeparator) { -$headers[] = $value; -$row[] = $value; -continue; -} -if (\is_string($value)) { -$headers[] = new TableCell($value, ['colspan' => 2]); -$row[] = null; -continue; -} -if (!\is_array($value)) { -throw new InvalidArgumentException('Value should be an array, string, or an instance of TableSeparator.'); -} -$headers[] = key($value); -$row[] = current($value); -} - -$this->horizontalTable($headers, [$row]); -} - - - - -public function ask(string $question, string $default = null, callable $validator = null) -{ -$question = new Question($question, $default); -$question->setValidator($validator); - -return $this->askQuestion($question); -} - - - - -public function askHidden(string $question, callable $validator = null) -{ -$question = new Question($question); - -$question->setHidden(true); -$question->setValidator($validator); - -return $this->askQuestion($question); -} - - - - -public function confirm(string $question, bool $default = true) -{ -return $this->askQuestion(new ConfirmationQuestion($question, $default)); -} - - - - -public function choice(string $question, array $choices, $default = null) -{ -if (null !== $default) { -$values = array_flip($choices); -$default = $values[$default] ?? $default; -} - -return $this->askQuestion(new ChoiceQuestion($question, $choices, $default)); -} - - - - -public function progressStart(int $max = 0) -{ -$this->progressBar = $this->createProgressBar($max); -$this->progressBar->start(); -} - - - - -public function progressAdvance(int $step = 1) -{ -$this->getProgressBar()->advance($step); -} - - - - -public function progressFinish() -{ -$this->getProgressBar()->finish(); -$this->newLine(2); -$this->progressBar = null; -} - - - - -public function createProgressBar(int $max = 0) -{ -$progressBar = parent::createProgressBar($max); - -if ('\\' !== \DIRECTORY_SEPARATOR || 'Hyper' === getenv('TERM_PROGRAM')) { -$progressBar->setEmptyBarCharacter('░'); -$progressBar->setProgressCharacter(''); -$progressBar->setBarCharacter('▓'); -} - -return $progressBar; -} - - - - -public function progressIterate(iterable $iterable, int $max = null): iterable -{ -yield from $this->createProgressBar()->iterate($iterable, $max); - -$this->newLine(2); -} - - - - -public function askQuestion(Question $question) -{ -if ($this->input->isInteractive()) { -$this->autoPrependBlock(); -} - -if (!$this->questionHelper) { -$this->questionHelper = new SymfonyQuestionHelper(); -} - -$answer = $this->questionHelper->ask($this->input, $this, $question); - -if ($this->input->isInteractive()) { -$this->newLine(); -$this->bufferedOutput->write("\n"); -} - -return $answer; -} - - - - -public function writeln($messages, int $type = self::OUTPUT_NORMAL) -{ -if (!is_iterable($messages)) { -$messages = [$messages]; -} - -foreach ($messages as $message) { -parent::writeln($message, $type); -$this->writeBuffer($message, true, $type); -} -} - - - - -public function write($messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) -{ -if (!is_iterable($messages)) { -$messages = [$messages]; -} - -foreach ($messages as $message) { -parent::write($message, $newline, $type); -$this->writeBuffer($message, $newline, $type); -} -} - - - - -public function newLine(int $count = 1) -{ -parent::newLine($count); -$this->bufferedOutput->write(str_repeat("\n", $count)); -} - - - - - - -public function getErrorStyle() -{ -return new self($this->input, $this->getErrorOutput()); -} - -public function createTable(): Table -{ -$output = $this->output instanceof ConsoleOutputInterface ? $this->output->section() : $this->output; -$style = clone Table::getStyleDefinition('symfony-style-guide'); -$style->setCellHeaderFormat('%s'); - -return (new Table($output))->setStyle($style); -} - -private function getProgressBar(): ProgressBar -{ -if (!$this->progressBar) { -throw new RuntimeException('The ProgressBar is not started.'); -} - -return $this->progressBar; -} - -private function autoPrependBlock(): void -{ -$chars = substr(str_replace(\PHP_EOL, "\n", $this->bufferedOutput->fetch()), -2); - -if (!isset($chars[0])) { -$this->newLine(); - -return; -} - -$this->newLine(2 - substr_count($chars, "\n")); -} - -private function autoPrependText(): void -{ -$fetched = $this->bufferedOutput->fetch(); - -if (!str_ends_with($fetched, "\n")) { -$this->newLine(); -} -} - -private function writeBuffer(string $message, bool $newLine, int $type): void -{ - -$this->bufferedOutput->write($message, $newLine, $type); -} - -private function createBlock(iterable $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = false): array -{ -$indentLength = 0; -$prefixLength = Helper::width(Helper::removeDecoration($this->getFormatter(), $prefix)); -$lines = []; - -if (null !== $type) { -$type = sprintf('[%s] ', $type); -$indentLength = \strlen($type); -$lineIndentation = str_repeat(' ', $indentLength); -} - - -foreach ($messages as $key => $message) { -if ($escape) { -$message = OutputFormatter::escape($message); -} - -$decorationLength = Helper::width($message) - Helper::width(Helper::removeDecoration($this->getFormatter(), $message)); -$messageLineLength = min($this->lineLength - $prefixLength - $indentLength + $decorationLength, $this->lineLength); -$messageLines = explode(\PHP_EOL, wordwrap($message, $messageLineLength, \PHP_EOL, true)); -foreach ($messageLines as $messageLine) { -$lines[] = $messageLine; -} - -if (\count($messages) > 1 && $key < \count($messages) - 1) { -$lines[] = ''; -} -} - -$firstLineIndex = 0; -if ($padding && $this->isDecorated()) { -$firstLineIndex = 1; -array_unshift($lines, ''); -$lines[] = ''; -} - -foreach ($lines as $i => &$line) { -if (null !== $type) { -$line = $firstLineIndex === $i ? $type.$line : $lineIndentation.$line; -} - -$line = $prefix.$line; -$line .= str_repeat(' ', max($this->lineLength - Helper::width(Helper::removeDecoration($this->getFormatter(), $line)), 0)); - -if ($style) { -$line = sprintf('<%s>%s', $style, $line); -} -} - -return $lines; -} -} diff --git a/composer/vendor/symfony/console/Terminal.php b/composer/vendor/symfony/console/Terminal.php deleted file mode 100644 index f9d26a38d..000000000 --- a/composer/vendor/symfony/console/Terminal.php +++ /dev/null @@ -1,172 +0,0 @@ -&1', $output, $exitcode); - -return self::$stty = 0 === $exitcode; -} - -private static function initDimensions() -{ -if ('\\' === \DIRECTORY_SEPARATOR) { -if (preg_match('/^(\d+)x(\d+)(?: \((\d+)x(\d+)\))?$/', trim(getenv('ANSICON')), $matches)) { - - -self::$width = (int) $matches[1]; -self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; -} elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { - - -self::initDimensionsUsingStty(); -} elseif (null !== $dimensions = self::getConsoleMode()) { - -self::$width = (int) $dimensions[0]; -self::$height = (int) $dimensions[1]; -} -} else { -self::initDimensionsUsingStty(); -} -} - - - - -private static function hasVt100Support(): bool -{ -return \function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(fopen('php://stdout', 'w')); -} - - - - -private static function initDimensionsUsingStty() -{ -if ($sttyString = self::getSttyColumns()) { -if (preg_match('/rows.(\d+);.columns.(\d+);/i', $sttyString, $matches)) { - -self::$width = (int) $matches[2]; -self::$height = (int) $matches[1]; -} elseif (preg_match('/;.(\d+).rows;.(\d+).columns/i', $sttyString, $matches)) { - -self::$width = (int) $matches[2]; -self::$height = (int) $matches[1]; -} -} -} - - - - - - -private static function getConsoleMode(): ?array -{ -$info = self::readFromProcess('mode CON'); - -if (null === $info || !preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { -return null; -} - -return [(int) $matches[2], (int) $matches[1]]; -} - - - - -private static function getSttyColumns(): ?string -{ -return self::readFromProcess('stty -a | grep columns'); -} - -private static function readFromProcess(string $command): ?string -{ -if (!\function_exists('proc_open')) { -return null; -} - -$descriptorspec = [ -1 => ['pipe', 'w'], -2 => ['pipe', 'w'], -]; - -$process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true]); -if (!\is_resource($process)) { -return null; -} - -$info = stream_get_contents($pipes[1]); -fclose($pipes[1]); -fclose($pipes[2]); -proc_close($process); - -return $info; -} -} diff --git a/composer/vendor/symfony/console/Tester/ApplicationTester.php b/composer/vendor/symfony/console/Tester/ApplicationTester.php deleted file mode 100644 index f82017508..000000000 --- a/composer/vendor/symfony/console/Tester/ApplicationTester.php +++ /dev/null @@ -1,85 +0,0 @@ -application = $application; -} - - - - - - - - - - - - - -public function run(array $input, array $options = []) -{ -$prevShellVerbosity = getenv('SHELL_VERBOSITY'); - -try { -$this->input = new ArrayInput($input); -if (isset($options['interactive'])) { -$this->input->setInteractive($options['interactive']); -} - -if ($this->inputs) { -$this->input->setStream(self::createStream($this->inputs)); -} - -$this->initOutput($options); - -return $this->statusCode = $this->application->run($this->input, $this->output); -} finally { - - -if (false === $prevShellVerbosity) { -if (\function_exists('putenv')) { -@putenv('SHELL_VERBOSITY'); -} -unset($_ENV['SHELL_VERBOSITY']); -unset($_SERVER['SHELL_VERBOSITY']); -} else { -if (\function_exists('putenv')) { -@putenv('SHELL_VERBOSITY='.$prevShellVerbosity); -} -$_ENV['SHELL_VERBOSITY'] = $prevShellVerbosity; -$_SERVER['SHELL_VERBOSITY'] = $prevShellVerbosity; -} -} -} -} diff --git a/composer/vendor/symfony/console/Tester/CommandCompletionTester.php b/composer/vendor/symfony/console/Tester/CommandCompletionTester.php deleted file mode 100644 index 85d68522b..000000000 --- a/composer/vendor/symfony/console/Tester/CommandCompletionTester.php +++ /dev/null @@ -1,56 +0,0 @@ -command = $command; -} - - - - -public function complete(array $input): array -{ -$currentIndex = \count($input); -if ('' === end($input)) { -array_pop($input); -} -array_unshift($input, $this->command->getName()); - -$completionInput = CompletionInput::fromTokens($input, $currentIndex); -$completionInput->bind($this->command->getDefinition()); -$suggestions = new CompletionSuggestions(); - -$this->command->complete($completionInput, $suggestions); - -$options = []; -foreach ($suggestions->getOptionSuggestions() as $option) { -$options[] = '--'.$option->getName(); -} - -return array_map('strval', array_merge($options, $suggestions->getValueSuggestions())); -} -} diff --git a/composer/vendor/symfony/console/Tester/CommandTester.php b/composer/vendor/symfony/console/Tester/CommandTester.php deleted file mode 100644 index 926b45b96..000000000 --- a/composer/vendor/symfony/console/Tester/CommandTester.php +++ /dev/null @@ -1,76 +0,0 @@ -command = $command; -} - - - - - - - - - - - - - - - - -public function execute(array $input, array $options = []) -{ - - -if (!isset($input['command']) -&& (null !== $application = $this->command->getApplication()) -&& $application->getDefinition()->hasArgument('command') -) { -$input = array_merge(['command' => $this->command->getName()], $input); -} - -$this->input = new ArrayInput($input); - -$this->input->setStream(self::createStream($this->inputs)); - -if (isset($options['interactive'])) { -$this->input->setInteractive($options['interactive']); -} - -if (!isset($options['decorated'])) { -$options['decorated'] = false; -} - -$this->initOutput($options); - -return $this->statusCode = $this->command->run($this->input, $this->output); -} -} diff --git a/composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php b/composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php deleted file mode 100644 index 5a31054e9..000000000 --- a/composer/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php +++ /dev/null @@ -1,55 +0,0 @@ -toString(); -} - - - - -protected function additionalFailureDescription($other): string -{ -$mapping = [ -Command::FAILURE => 'Command failed.', -Command::INVALID => 'Command was invalid.', -]; - -return $mapping[$other] ?? sprintf('Command returned exit status %d.', $other); -} -} diff --git a/composer/vendor/symfony/console/Tester/TesterTrait.php b/composer/vendor/symfony/console/Tester/TesterTrait.php deleted file mode 100644 index b318ce209..000000000 --- a/composer/vendor/symfony/console/Tester/TesterTrait.php +++ /dev/null @@ -1,197 +0,0 @@ -output) { -throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); -} - -rewind($this->output->getStream()); - -$display = stream_get_contents($this->output->getStream()); - -if ($normalize) { -$display = str_replace(\PHP_EOL, "\n", $display); -} - -return $display; -} - - - - - - - - -public function getErrorOutput(bool $normalize = false) -{ -if (!$this->captureStreamsIndependently) { -throw new \LogicException('The error output is not available when the tester is run without "capture_stderr_separately" option set.'); -} - -rewind($this->output->getErrorOutput()->getStream()); - -$display = stream_get_contents($this->output->getErrorOutput()->getStream()); - -if ($normalize) { -$display = str_replace(\PHP_EOL, "\n", $display); -} - -return $display; -} - - - - - - -public function getInput() -{ -return $this->input; -} - - - - - - -public function getOutput() -{ -return $this->output; -} - - - - - - - - -public function getStatusCode() -{ -if (null === $this->statusCode) { -throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the status code?'); -} - -return $this->statusCode; -} - -public function assertCommandIsSuccessful(string $message = ''): void -{ -Assert::assertThat($this->statusCode, new CommandIsSuccessful(), $message); -} - - - - - - - - - -public function setInputs(array $inputs) -{ -$this->inputs = $inputs; - -return $this; -} - - - - - - - - - - -private function initOutput(array $options) -{ -$this->captureStreamsIndependently = \array_key_exists('capture_stderr_separately', $options) && $options['capture_stderr_separately']; -if (!$this->captureStreamsIndependently) { -$this->output = new StreamOutput(fopen('php://memory', 'w', false)); -if (isset($options['decorated'])) { -$this->output->setDecorated($options['decorated']); -} -if (isset($options['verbosity'])) { -$this->output->setVerbosity($options['verbosity']); -} -} else { -$this->output = new ConsoleOutput( -$options['verbosity'] ?? ConsoleOutput::VERBOSITY_NORMAL, -$options['decorated'] ?? null -); - -$errorOutput = new StreamOutput(fopen('php://memory', 'w', false)); -$errorOutput->setFormatter($this->output->getFormatter()); -$errorOutput->setVerbosity($this->output->getVerbosity()); -$errorOutput->setDecorated($this->output->isDecorated()); - -$reflectedOutput = new \ReflectionObject($this->output); -$strErrProperty = $reflectedOutput->getProperty('stderr'); -$strErrProperty->setAccessible(true); -$strErrProperty->setValue($this->output, $errorOutput); - -$reflectedParent = $reflectedOutput->getParentClass(); -$streamProperty = $reflectedParent->getProperty('stream'); -$streamProperty->setAccessible(true); -$streamProperty->setValue($this->output, fopen('php://memory', 'w', false)); -} -} - - - - -private static function createStream(array $inputs) -{ -$stream = fopen('php://memory', 'r+', false); - -foreach ($inputs as $input) { -fwrite($stream, $input.\PHP_EOL); -} - -rewind($stream); - -return $stream; -} -} diff --git a/composer/vendor/symfony/deprecation-contracts/LICENSE b/composer/vendor/symfony/deprecation-contracts/LICENSE deleted file mode 100644 index 3bbb6272b..000000000 --- a/composer/vendor/symfony/deprecation-contracts/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2020-2022 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/composer/vendor/symfony/deprecation-contracts/function.php b/composer/vendor/symfony/deprecation-contracts/function.php deleted file mode 100644 index 6d79f5a83..000000000 --- a/composer/vendor/symfony/deprecation-contracts/function.php +++ /dev/null @@ -1,27 +0,0 @@ -path = $path; - -parent::__construct($message, $code, $previous); -} - - - - -public function getPath() -{ -return $this->path; -} -} diff --git a/composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php b/composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php deleted file mode 100644 index 86be832d7..000000000 --- a/composer/vendor/symfony/filesystem/Exception/IOExceptionInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -mkdir(\dirname($targetFile)); - -$doCopy = true; -if (!$overwriteNewerFiles && null === parse_url($originFile, \PHP_URL_HOST) && is_file($targetFile)) { -$doCopy = filemtime($originFile) > filemtime($targetFile); -} - -if ($doCopy) { - -if (!$source = self::box('fopen', $originFile, 'r')) { -throw new IOException(sprintf('Failed to copy "%s" to "%s" because source file could not be opened for reading: ', $originFile, $targetFile).self::$lastError, 0, null, $originFile); -} - - -if (!$target = self::box('fopen', $targetFile, 'w', false, stream_context_create(['ftp' => ['overwrite' => true]]))) { -throw new IOException(sprintf('Failed to copy "%s" to "%s" because target file could not be opened for writing: ', $originFile, $targetFile).self::$lastError, 0, null, $originFile); -} - -$bytesCopied = stream_copy_to_stream($source, $target); -fclose($source); -fclose($target); -unset($source, $target); - -if (!is_file($targetFile)) { -throw new IOException(sprintf('Failed to copy "%s" to "%s".', $originFile, $targetFile), 0, null, $originFile); -} - -if ($originIsLocal) { - -self::box('chmod', $targetFile, fileperms($targetFile) | (fileperms($originFile) & 0111)); - -if ($bytesCopied !== $bytesOrigin = filesize($originFile)) { -throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s" (%g of %g bytes copied).', $originFile, $targetFile, $bytesCopied, $bytesOrigin), 0, null, $originFile); -} -} -} -} - - - - - - - - -public function mkdir($dirs, int $mode = 0777) -{ -foreach ($this->toIterable($dirs) as $dir) { -if (is_dir($dir)) { -continue; -} - -if (!self::box('mkdir', $dir, $mode, true) && !is_dir($dir)) { -throw new IOException(sprintf('Failed to create "%s": ', $dir).self::$lastError, 0, null, $dir); -} -} -} - - - - - - - - -public function exists($files) -{ -$maxPathLength = \PHP_MAXPATHLEN - 2; - -foreach ($this->toIterable($files) as $file) { -if (\strlen($file) > $maxPathLength) { -throw new IOException(sprintf('Could not check if file exist because path length exceeds %d characters.', $maxPathLength), 0, null, $file); -} - -if (!file_exists($file)) { -return false; -} -} - -return true; -} - - - - - - - - - - -public function touch($files, int $time = null, int $atime = null) -{ -foreach ($this->toIterable($files) as $file) { -if (!($time ? self::box('touch', $file, $time, $atime) : self::box('touch', $file))) { -throw new IOException(sprintf('Failed to touch "%s": ', $file).self::$lastError, 0, null, $file); -} -} -} - - - - - - - - -public function remove($files) -{ -if ($files instanceof \Traversable) { -$files = iterator_to_array($files, false); -} elseif (!\is_array($files)) { -$files = [$files]; -} - -self::doRemove($files, false); -} - -private static function doRemove(array $files, bool $isRecursive): void -{ -$files = array_reverse($files); -foreach ($files as $file) { -if (is_link($file)) { - -if (!(self::box('unlink', $file) || '\\' !== \DIRECTORY_SEPARATOR || self::box('rmdir', $file)) && file_exists($file)) { -throw new IOException(sprintf('Failed to remove symlink "%s": ', $file).self::$lastError); -} -} elseif (is_dir($file)) { -if (!$isRecursive) { -$tmpName = \dirname(realpath($file)).'/.'.strrev(strtr(base64_encode(random_bytes(2)), '/=', '-.')); - -if (file_exists($tmpName)) { -try { -self::doRemove([$tmpName], true); -} catch (IOException $e) { -} -} - -if (!file_exists($tmpName) && self::box('rename', $file, $tmpName)) { -$origFile = $file; -$file = $tmpName; -} else { -$origFile = null; -} -} - -$files = new \FilesystemIterator($file, \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS); -self::doRemove(iterator_to_array($files, true), true); - -if (!self::box('rmdir', $file) && file_exists($file) && !$isRecursive) { -$lastError = self::$lastError; - -if (null !== $origFile && self::box('rename', $file, $origFile)) { -$file = $origFile; -} - -throw new IOException(sprintf('Failed to remove directory "%s": ', $file).$lastError); -} -} elseif (!self::box('unlink', $file) && (str_contains(self::$lastError, 'Permission denied') || file_exists($file))) { -throw new IOException(sprintf('Failed to remove file "%s": ', $file).self::$lastError); -} -} -} - - - - - - - - - - - -public function chmod($files, int $mode, int $umask = 0000, bool $recursive = false) -{ -foreach ($this->toIterable($files) as $file) { -if ((\PHP_VERSION_ID < 80000 || \is_int($mode)) && !self::box('chmod', $file, $mode & ~$umask)) { -throw new IOException(sprintf('Failed to chmod file "%s": ', $file).self::$lastError, 0, null, $file); -} -if ($recursive && is_dir($file) && !is_link($file)) { -$this->chmod(new \FilesystemIterator($file), $mode, $umask, true); -} -} -} - - - - - - - - - - -public function chown($files, $user, bool $recursive = false) -{ -foreach ($this->toIterable($files) as $file) { -if ($recursive && is_dir($file) && !is_link($file)) { -$this->chown(new \FilesystemIterator($file), $user, true); -} -if (is_link($file) && \function_exists('lchown')) { -if (!self::box('lchown', $file, $user)) { -throw new IOException(sprintf('Failed to chown file "%s": ', $file).self::$lastError, 0, null, $file); -} -} else { -if (!self::box('chown', $file, $user)) { -throw new IOException(sprintf('Failed to chown file "%s": ', $file).self::$lastError, 0, null, $file); -} -} -} -} - - - - - - - - - - -public function chgrp($files, $group, bool $recursive = false) -{ -foreach ($this->toIterable($files) as $file) { -if ($recursive && is_dir($file) && !is_link($file)) { -$this->chgrp(new \FilesystemIterator($file), $group, true); -} -if (is_link($file) && \function_exists('lchgrp')) { -if (!self::box('lchgrp', $file, $group)) { -throw new IOException(sprintf('Failed to chgrp file "%s": ', $file).self::$lastError, 0, null, $file); -} -} else { -if (!self::box('chgrp', $file, $group)) { -throw new IOException(sprintf('Failed to chgrp file "%s": ', $file).self::$lastError, 0, null, $file); -} -} -} -} - - - - - - - -public function rename(string $origin, string $target, bool $overwrite = false) -{ - -if (!$overwrite && $this->isReadable($target)) { -throw new IOException(sprintf('Cannot rename because the target "%s" already exists.', $target), 0, null, $target); -} - -if (!self::box('rename', $origin, $target)) { -if (is_dir($origin)) { - -$this->mirror($origin, $target, null, ['override' => $overwrite, 'delete' => $overwrite]); -$this->remove($origin); - -return; -} -throw new IOException(sprintf('Cannot rename "%s" to "%s": ', $origin, $target).self::$lastError, 0, null, $target); -} -} - - - - - - -private function isReadable(string $filename): bool -{ -$maxPathLength = \PHP_MAXPATHLEN - 2; - -if (\strlen($filename) > $maxPathLength) { -throw new IOException(sprintf('Could not check if file is readable because path length exceeds %d characters.', $maxPathLength), 0, null, $filename); -} - -return is_readable($filename); -} - - - - - - -public function symlink(string $originDir, string $targetDir, bool $copyOnWindows = false) -{ -self::assertFunctionExists('symlink'); - -if ('\\' === \DIRECTORY_SEPARATOR) { -$originDir = strtr($originDir, '/', '\\'); -$targetDir = strtr($targetDir, '/', '\\'); - -if ($copyOnWindows) { -$this->mirror($originDir, $targetDir); - -return; -} -} - -$this->mkdir(\dirname($targetDir)); - -if (is_link($targetDir)) { -if (readlink($targetDir) === $originDir) { -return; -} -$this->remove($targetDir); -} - -if (!self::box('symlink', $originDir, $targetDir)) { -$this->linkException($originDir, $targetDir, 'symbolic'); -} -} - - - - - - - - - -public function hardlink(string $originFile, $targetFiles) -{ -self::assertFunctionExists('link'); - -if (!$this->exists($originFile)) { -throw new FileNotFoundException(null, 0, null, $originFile); -} - -if (!is_file($originFile)) { -throw new FileNotFoundException(sprintf('Origin file "%s" is not a file.', $originFile)); -} - -foreach ($this->toIterable($targetFiles) as $targetFile) { -if (is_file($targetFile)) { -if (fileinode($originFile) === fileinode($targetFile)) { -continue; -} -$this->remove($targetFile); -} - -if (!self::box('link', $originFile, $targetFile)) { -$this->linkException($originFile, $targetFile, 'hard'); -} -} -} - - - - -private function linkException(string $origin, string $target, string $linkType) -{ -if (self::$lastError) { -if ('\\' === \DIRECTORY_SEPARATOR && str_contains(self::$lastError, 'error code(1314)')) { -throw new IOException(sprintf('Unable to create "%s" link due to error code 1314: \'A required privilege is not held by the client\'. Do you have the required Administrator-rights?', $linkType), 0, null, $target); -} -} -throw new IOException(sprintf('Failed to create "%s" link from "%s" to "%s": ', $linkType, $origin, $target).self::$lastError, 0, null, $target); -} - - - - - - - - - - - - - - -public function readlink(string $path, bool $canonicalize = false) -{ -if (!$canonicalize && !is_link($path)) { -return null; -} - -if ($canonicalize) { -if (!$this->exists($path)) { -return null; -} - -if ('\\' === \DIRECTORY_SEPARATOR && \PHP_VERSION_ID < 70410) { -$path = readlink($path); -} - -return realpath($path); -} - -if ('\\' === \DIRECTORY_SEPARATOR && \PHP_VERSION_ID < 70400) { -return realpath($path); -} - -return readlink($path); -} - - - - - - -public function makePathRelative(string $endPath, string $startPath) -{ -if (!$this->isAbsolutePath($startPath)) { -throw new InvalidArgumentException(sprintf('The start path "%s" is not absolute.', $startPath)); -} - -if (!$this->isAbsolutePath($endPath)) { -throw new InvalidArgumentException(sprintf('The end path "%s" is not absolute.', $endPath)); -} - - -if ('\\' === \DIRECTORY_SEPARATOR) { -$endPath = str_replace('\\', '/', $endPath); -$startPath = str_replace('\\', '/', $startPath); -} - -$splitDriveLetter = function ($path) { -return (\strlen($path) > 2 && ':' === $path[1] && '/' === $path[2] && ctype_alpha($path[0])) -? [substr($path, 2), strtoupper($path[0])] -: [$path, null]; -}; - -$splitPath = function ($path) { -$result = []; - -foreach (explode('/', trim($path, '/')) as $segment) { -if ('..' === $segment) { -array_pop($result); -} elseif ('.' !== $segment && '' !== $segment) { -$result[] = $segment; -} -} - -return $result; -}; - -[$endPath, $endDriveLetter] = $splitDriveLetter($endPath); -[$startPath, $startDriveLetter] = $splitDriveLetter($startPath); - -$startPathArr = $splitPath($startPath); -$endPathArr = $splitPath($endPath); - -if ($endDriveLetter && $startDriveLetter && $endDriveLetter != $startDriveLetter) { - -return $endDriveLetter.':/'.($endPathArr ? implode('/', $endPathArr).'/' : ''); -} - - -$index = 0; -while (isset($startPathArr[$index]) && isset($endPathArr[$index]) && $startPathArr[$index] === $endPathArr[$index]) { -++$index; -} - - -if (1 === \count($startPathArr) && '' === $startPathArr[0]) { -$depth = 0; -} else { -$depth = \count($startPathArr) - $index; -} - - -$traverser = str_repeat('../', $depth); - -$endPathRemainder = implode('/', \array_slice($endPathArr, $index)); - - -$relativePath = $traverser.('' !== $endPathRemainder ? $endPathRemainder.'/' : ''); - -return '' === $relativePath ? './' : $relativePath; -} - - - - - - - - - - - - - - - - - - -public function mirror(string $originDir, string $targetDir, \Traversable $iterator = null, array $options = []) -{ -$targetDir = rtrim($targetDir, '/\\'); -$originDir = rtrim($originDir, '/\\'); -$originDirLen = \strlen($originDir); - -if (!$this->exists($originDir)) { -throw new IOException(sprintf('The origin directory specified "%s" was not found.', $originDir), 0, null, $originDir); -} - - -if ($this->exists($targetDir) && isset($options['delete']) && $options['delete']) { -$deleteIterator = $iterator; -if (null === $deleteIterator) { -$flags = \FilesystemIterator::SKIP_DOTS; -$deleteIterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($targetDir, $flags), \RecursiveIteratorIterator::CHILD_FIRST); -} -$targetDirLen = \strlen($targetDir); -foreach ($deleteIterator as $file) { -$origin = $originDir.substr($file->getPathname(), $targetDirLen); -if (!$this->exists($origin)) { -$this->remove($file); -} -} -} - -$copyOnWindows = $options['copy_on_windows'] ?? false; - -if (null === $iterator) { -$flags = $copyOnWindows ? \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS : \FilesystemIterator::SKIP_DOTS; -$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($originDir, $flags), \RecursiveIteratorIterator::SELF_FIRST); -} - -$this->mkdir($targetDir); -$filesCreatedWhileMirroring = []; - -foreach ($iterator as $file) { -if ($file->getPathname() === $targetDir || $file->getRealPath() === $targetDir || isset($filesCreatedWhileMirroring[$file->getRealPath()])) { -continue; -} - -$target = $targetDir.substr($file->getPathname(), $originDirLen); -$filesCreatedWhileMirroring[$target] = true; - -if (!$copyOnWindows && is_link($file)) { -$this->symlink($file->getLinkTarget(), $target); -} elseif (is_dir($file)) { -$this->mkdir($target); -} elseif (is_file($file)) { -$this->copy($file, $target, $options['override'] ?? false); -} else { -throw new IOException(sprintf('Unable to guess "%s" file type.', $file), 0, null, $file); -} -} -} - - - - - - -public function isAbsolutePath(string $file) -{ -return '' !== $file && (strspn($file, '/\\', 0, 1) -|| (\strlen($file) > 3 && ctype_alpha($file[0]) -&& ':' === $file[1] -&& strspn($file, '/\\', 2, 1) -) -|| null !== parse_url($file, \PHP_URL_SCHEME) -); -} - - - - - - - - - - -public function tempnam(string $dir, string $prefix) -{ -$suffix = \func_num_args() > 2 ? func_get_arg(2) : ''; -[$scheme, $hierarchy] = $this->getSchemeAndHierarchy($dir); - - -if ((null === $scheme || 'file' === $scheme || 'gs' === $scheme) && '' === $suffix) { - -if ($tmpFile = self::box('tempnam', $hierarchy, $prefix)) { -if (null !== $scheme && 'gs' !== $scheme) { -return $scheme.'://'.$tmpFile; -} - -return $tmpFile; -} - -throw new IOException('A temporary file could not be created: '.self::$lastError); -} - - -for ($i = 0; $i < 10; ++$i) { - -$tmpFile = $dir.'/'.$prefix.uniqid(mt_rand(), true).$suffix; - - - -if (!$handle = self::box('fopen', $tmpFile, 'x+')) { -continue; -} - - -self::box('fclose', $handle); - -return $tmpFile; -} - -throw new IOException('A temporary file could not be created: '.self::$lastError); -} - - - - - - - - -public function dumpFile(string $filename, $content) -{ -if (\is_array($content)) { -throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be string or resource, array given.', __METHOD__)); -} - -$dir = \dirname($filename); - -if (!is_dir($dir)) { -$this->mkdir($dir); -} - - - -$tmpFile = $this->tempnam($dir, basename($filename)); - -try { -if (false === self::box('file_put_contents', $tmpFile, $content)) { -throw new IOException(sprintf('Failed to write file "%s": ', $filename).self::$lastError, 0, null, $filename); -} - -self::box('chmod', $tmpFile, file_exists($filename) ? fileperms($filename) : 0666 & ~umask()); - -$this->rename($tmpFile, $filename, true); -} finally { -if (file_exists($tmpFile)) { -self::box('unlink', $tmpFile); -} -} -} - - - - - - - - - -public function appendToFile(string $filename, $content) -{ -if (\is_array($content)) { -throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be string or resource, array given.', __METHOD__)); -} - -$dir = \dirname($filename); - -if (!is_dir($dir)) { -$this->mkdir($dir); -} - -$lock = \func_num_args() > 2 && func_get_arg(2); - -if (false === self::box('file_put_contents', $filename, $content, \FILE_APPEND | ($lock ? \LOCK_EX : 0))) { -throw new IOException(sprintf('Failed to write file "%s": ', $filename).self::$lastError, 0, null, $filename); -} -} - -private function toIterable($files): iterable -{ -return is_iterable($files) ? $files : [$files]; -} - - - - -private function getSchemeAndHierarchy(string $filename): array -{ -$components = explode('://', $filename, 2); - -return 2 === \count($components) ? [$components[0], $components[1]] : [null, $components[0]]; -} - -private static function assertFunctionExists(string $func): void -{ -if (!\function_exists($func)) { -throw new IOException(sprintf('Unable to perform filesystem operation because the "%s()" function has been disabled.', $func)); -} -} - - - - - - -private static function box(string $func, ...$args) -{ -self::assertFunctionExists($func); - -self::$lastError = null; -set_error_handler(__CLASS__.'::handleError'); -try { -return $func(...$args); -} finally { -restore_error_handler(); -} -} - - - - -public static function handleError(int $type, string $msg) -{ -self::$lastError = $msg; -} -} diff --git a/composer/vendor/symfony/filesystem/LICENSE b/composer/vendor/symfony/filesystem/LICENSE deleted file mode 100644 index 3622370ec..000000000 --- a/composer/vendor/symfony/filesystem/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2004-2023 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/composer/vendor/symfony/filesystem/Path.php b/composer/vendor/symfony/filesystem/Path.php deleted file mode 100644 index 71f6fde8e..000000000 --- a/composer/vendor/symfony/filesystem/Path.php +++ /dev/null @@ -1,819 +0,0 @@ - self::CLEANUP_THRESHOLD) { -self::$buffer = \array_slice(self::$buffer, -self::CLEANUP_SIZE, null, true); -self::$bufferSize = self::CLEANUP_SIZE; -} - -return $canonicalPath; -} - - - - - - - - - - - - -public static function normalize(string $path): string -{ -return str_replace('\\', '/', $path); -} - - - - - - - - - - - - - - - - - - - - - - - - -public static function getDirectory(string $path): string -{ -if ('' === $path) { -return ''; -} - -$path = self::canonicalize($path); - - -if (false !== $schemeSeparatorPosition = strpos($path, '://')) { -$scheme = substr($path, 0, $schemeSeparatorPosition + 3); -$path = substr($path, $schemeSeparatorPosition + 3); -} else { -$scheme = ''; -} - -if (false === $dirSeparatorPosition = strrpos($path, '/')) { -return ''; -} - - -if (0 === $dirSeparatorPosition) { -return $scheme.'/'; -} - - -if (2 === $dirSeparatorPosition && ctype_alpha($path[0]) && ':' === $path[1]) { -return $scheme.substr($path, 0, 3); -} - -return $scheme.substr($path, 0, $dirSeparatorPosition); -} - - - - - - - - - - - - - - - -public static function getHomeDirectory(): string -{ - -if (getenv('HOME')) { -return self::canonicalize(getenv('HOME')); -} - - -if (getenv('HOMEDRIVE') && getenv('HOMEPATH')) { -return self::canonicalize(getenv('HOMEDRIVE').getenv('HOMEPATH')); -} - -throw new RuntimeException("Cannot find the home directory path: Your environment or operating system isn't supported."); -} - - - - - - - - - -public static function getRoot(string $path): string -{ -if ('' === $path) { -return ''; -} - - -if (false !== $schemeSeparatorPosition = strpos($path, '://')) { -$scheme = substr($path, 0, $schemeSeparatorPosition + 3); -$path = substr($path, $schemeSeparatorPosition + 3); -} else { -$scheme = ''; -} - -$firstCharacter = $path[0]; - - -if ('/' === $firstCharacter || '\\' === $firstCharacter) { -return $scheme.'/'; -} - -$length = \strlen($path); - - -if ($length > 1 && ':' === $path[1] && ctype_alpha($firstCharacter)) { - -if (2 === $length) { -return $scheme.$path.'/'; -} - - -if ('/' === $path[2] || '\\' === $path[2]) { -return $scheme.$firstCharacter.$path[1].'/'; -} -} - -return ''; -} - - - - - - - -public static function getFilenameWithoutExtension(string $path, string $extension = null): string -{ -if ('' === $path) { -return ''; -} - -if (null !== $extension) { - -return rtrim(basename($path, $extension), '.'); -} - -return pathinfo($path, \PATHINFO_FILENAME); -} - - - - - - -public static function getExtension(string $path, bool $forceLowerCase = false): string -{ -if ('' === $path) { -return ''; -} - -$extension = pathinfo($path, \PATHINFO_EXTENSION); - -if ($forceLowerCase) { -$extension = self::toLower($extension); -} - -return $extension; -} - - - - - - - - - - - - -public static function hasExtension(string $path, $extensions = null, bool $ignoreCase = false): bool -{ -if ('' === $path) { -return false; -} - -$actualExtension = self::getExtension($path, $ignoreCase); - - -if ([] === $extensions || null === $extensions) { -return '' !== $actualExtension; -} - -if (\is_string($extensions)) { -$extensions = [$extensions]; -} - -foreach ($extensions as $key => $extension) { -if ($ignoreCase) { -$extension = self::toLower($extension); -} - - -$extensions[$key] = ltrim($extension, '.'); -} - -return \in_array($actualExtension, $extensions, true); -} - - - - - - - - - -public static function changeExtension(string $path, string $extension): string -{ -if ('' === $path) { -return ''; -} - -$actualExtension = self::getExtension($path); -$extension = ltrim($extension, '.'); - - -if ('/' === substr($path, -1)) { -return $path; -} - - -if (empty($actualExtension)) { -return $path.('.' === substr($path, -1) ? '' : '.').$extension; -} - -return substr($path, 0, -\strlen($actualExtension)).$extension; -} - -public static function isAbsolute(string $path): bool -{ -if ('' === $path) { -return false; -} - - -if (false !== $schemeSeparatorPosition = strpos($path, '://')) { -$path = substr($path, $schemeSeparatorPosition + 3); -} - -$firstCharacter = $path[0]; - - -if ('/' === $firstCharacter || '\\' === $firstCharacter) { -return true; -} - - -if (\strlen($path) > 1 && ctype_alpha($firstCharacter) && ':' === $path[1]) { - -if (2 === \strlen($path)) { -return true; -} - - -if ('/' === $path[2] || '\\' === $path[2]) { -return true; -} -} - -return false; -} - -public static function isRelative(string $path): bool -{ -return !self::isAbsolute($path); -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -public static function makeAbsolute(string $path, string $basePath): string -{ -if ('' === $basePath) { -throw new InvalidArgumentException(sprintf('The base path must be a non-empty string. Got: "%s".', $basePath)); -} - -if (!self::isAbsolute($basePath)) { -throw new InvalidArgumentException(sprintf('The base path "%s" is not an absolute path.', $basePath)); -} - -if (self::isAbsolute($path)) { -return self::canonicalize($path); -} - -if (false !== $schemeSeparatorPosition = strpos($basePath, '://')) { -$scheme = substr($basePath, 0, $schemeSeparatorPosition + 3); -$basePath = substr($basePath, $schemeSeparatorPosition + 3); -} else { -$scheme = ''; -} - -return $scheme.self::canonicalize(rtrim($basePath, '/\\').'/'.$path); -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -public static function makeRelative(string $path, string $basePath): string -{ -$path = self::canonicalize($path); -$basePath = self::canonicalize($basePath); - -[$root, $relativePath] = self::split($path); -[$baseRoot, $relativeBasePath] = self::split($basePath); - - - - -if ('' === $root && '' !== $baseRoot) { - -if ('' === $relativeBasePath) { -$relativePath = ltrim($relativePath, './\\'); -} - -return $relativePath; -} - - - -if ('' !== $root && '' === $baseRoot) { -throw new InvalidArgumentException(sprintf('The absolute path "%s" cannot be made relative to the relative path "%s". You should provide an absolute base path instead.', $path, $basePath)); -} - - -if ($baseRoot && $root !== $baseRoot) { -throw new InvalidArgumentException(sprintf('The path "%s" cannot be made relative to "%s", because they have different roots ("%s" and "%s").', $path, $basePath, $root, $baseRoot)); -} - -if ('' === $relativeBasePath) { -return $relativePath; -} - - -$parts = explode('/', $relativePath); -$baseParts = explode('/', $relativeBasePath); -$dotDotPrefix = ''; - - - -$match = true; - -foreach ($baseParts as $index => $basePart) { -if ($match && isset($parts[$index]) && $basePart === $parts[$index]) { -unset($parts[$index]); - -continue; -} - -$match = false; -$dotDotPrefix .= '../'; -} - -return rtrim($dotDotPrefix.implode('/', $parts), '/'); -} - - - - -public static function isLocal(string $path): bool -{ -return '' !== $path && false === strpos($path, '://'); -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -public static function getLongestCommonBasePath(string ...$paths): ?string -{ -[$bpRoot, $basePath] = self::split(self::canonicalize(reset($paths))); - -for (next($paths); null !== key($paths) && '' !== $basePath; next($paths)) { -[$root, $path] = self::split(self::canonicalize(current($paths))); - - - -if ($root !== $bpRoot) { -return null; -} - - -while (true) { -if ('.' === $basePath) { - -$basePath = ''; - - -continue 2; -} - - - -if (0 === strpos($path.'/', $basePath.'/')) { - -continue 2; -} - -$basePath = \dirname($basePath); -} -} - -return $bpRoot.$basePath; -} - - - - -public static function join(string ...$paths): string -{ -$finalPath = null; -$wasScheme = false; - -foreach ($paths as $path) { -if ('' === $path) { -continue; -} - -if (null === $finalPath) { - -$finalPath = $path; -$wasScheme = (false !== strpos($path, '://')); -continue; -} - - -if (!\in_array(substr($finalPath, -1), ['/', '\\'])) { -$finalPath .= '/'; -} - - -$finalPath .= $wasScheme ? $path : ltrim($path, '/'); -$wasScheme = false; -} - -if (null === $finalPath) { -return ''; -} - -return self::canonicalize($finalPath); -} - - - - - - - - - - - - - - - - - - - - - -public static function isBasePath(string $basePath, string $ofPath): bool -{ -$basePath = self::canonicalize($basePath); -$ofPath = self::canonicalize($ofPath); - - - - - - -return 0 === strpos($ofPath.'/', rtrim($basePath, '/').'/'); -} - - - - -private static function findCanonicalParts(string $root, string $pathWithoutRoot): array -{ -$parts = explode('/', $pathWithoutRoot); - -$canonicalParts = []; - - -foreach ($parts as $part) { -if ('.' === $part || '' === $part) { -continue; -} - - - -if ('..' === $part && \count($canonicalParts) > 0 && '..' !== $canonicalParts[\count($canonicalParts) - 1]) { -array_pop($canonicalParts); - -continue; -} - - -if ('..' !== $part || '' === $root) { -$canonicalParts[] = $part; -} -} - -return $canonicalParts; -} - - - - - - - - - - - - - - - - - - -private static function split(string $path): array -{ -if ('' === $path) { -return ['', '']; -} - - -if (false !== $schemeSeparatorPosition = strpos($path, '://')) { -$root = substr($path, 0, $schemeSeparatorPosition + 3); -$path = substr($path, $schemeSeparatorPosition + 3); -} else { -$root = ''; -} - -$length = \strlen($path); - - -if (0 === strpos($path, '/')) { -$root .= '/'; -$path = $length > 1 ? substr($path, 1) : ''; -} elseif ($length > 1 && ctype_alpha($path[0]) && ':' === $path[1]) { -if (2 === $length) { - -$root .= $path.'/'; -$path = ''; -} elseif ('/' === $path[2]) { - -$root .= substr($path, 0, 3); -$path = $length > 3 ? substr($path, 3) : ''; -} -} - -return [$root, $path]; -} - -private static function toLower(string $string): string -{ -if (false !== $encoding = mb_detect_encoding($string, null, true)) { -return mb_strtolower($string, $encoding); -} - -return strtolower($string); -} - -private function __construct() -{ -} -} diff --git a/composer/vendor/symfony/finder/Comparator/Comparator.php b/composer/vendor/symfony/finder/Comparator/Comparator.php deleted file mode 100644 index b3f93cea7..000000000 --- a/composer/vendor/symfony/finder/Comparator/Comparator.php +++ /dev/null @@ -1,117 +0,0 @@ -target = $target; -$this->doSetOperator($operator); -} - - - - - - -public function getTarget() -{ -if (null === $this->target) { -trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); -} - -return $this->target; -} - - - - -public function setTarget(string $target) -{ -trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the target via the constructor instead.', __METHOD__); - -$this->target = $target; -} - - - - - - -public function getOperator() -{ -return $this->operator; -} - - - - - - - - -public function setOperator(string $operator) -{ -trigger_deprecation('symfony/finder', '5.4', '"%s" is deprecated. Set the operator via the constructor instead.', __METHOD__); - -$this->doSetOperator('' === $operator ? '==' : $operator); -} - - - - - - - - -public function test($test) -{ -if (null === $this->target) { -trigger_deprecation('symfony/finder', '5.4', 'Calling "%s" without initializing the target is deprecated.', __METHOD__); -} - -switch ($this->operator) { -case '>': -return $test > $this->target; -case '>=': -return $test >= $this->target; -case '<': -return $test < $this->target; -case '<=': -return $test <= $this->target; -case '!=': -return $test != $this->target; -} - -return $test == $this->target; -} - -private function doSetOperator(string $operator): void -{ -if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) { -throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator)); -} - -$this->operator = $operator; -} -} diff --git a/composer/vendor/symfony/finder/Comparator/DateComparator.php b/composer/vendor/symfony/finder/Comparator/DateComparator.php deleted file mode 100644 index c35ba1513..000000000 --- a/composer/vendor/symfony/finder/Comparator/DateComparator.php +++ /dev/null @@ -1,50 +0,0 @@ -]=?|after|since|before|until)?\s*(.+?)\s*$#i', $test, $matches)) { -throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a date test.', $test)); -} - -try { -$date = new \DateTime($matches[2]); -$target = $date->format('U'); -} catch (\Exception $e) { -throw new \InvalidArgumentException(sprintf('"%s" is not a valid date.', $matches[2])); -} - -$operator = $matches[1] ?? '=='; -if ('since' === $operator || 'after' === $operator) { -$operator = '>'; -} - -if ('until' === $operator || 'before' === $operator) { -$operator = '<'; -} - -parent::__construct($target, $operator); -} -} diff --git a/composer/vendor/symfony/finder/Comparator/NumberComparator.php b/composer/vendor/symfony/finder/Comparator/NumberComparator.php deleted file mode 100644 index 798912f9d..000000000 --- a/composer/vendor/symfony/finder/Comparator/NumberComparator.php +++ /dev/null @@ -1,78 +0,0 @@ -]=?)?\s*([0-9\.]+)\s*([kmg]i?)?\s*$#i', $test, $matches)) { -throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a number test.', $test ?? 'null')); -} - -$target = $matches[2]; -if (!is_numeric($target)) { -throw new \InvalidArgumentException(sprintf('Invalid number "%s".', $target)); -} -if (isset($matches[3])) { - -switch (strtolower($matches[3])) { -case 'k': -$target *= 1000; -break; -case 'ki': -$target *= 1024; -break; -case 'm': -$target *= 1000000; -break; -case 'mi': -$target *= 1024 * 1024; -break; -case 'g': -$target *= 1000000000; -break; -case 'gi': -$target *= 1024 * 1024 * 1024; -break; -} -} - -parent::__construct($target, $matches[1] ?: '=='); -} -} diff --git a/composer/vendor/symfony/finder/Exception/AccessDeniedException.php b/composer/vendor/symfony/finder/Exception/AccessDeniedException.php deleted file mode 100644 index 4812f5a50..000000000 --- a/composer/vendor/symfony/finder/Exception/AccessDeniedException.php +++ /dev/null @@ -1,19 +0,0 @@ -ignore = static::IGNORE_VCS_FILES | static::IGNORE_DOT_FILES; -} - - - - - - -public static function create() -{ -return new static(); -} - - - - - - -public function directories() -{ -$this->mode = Iterator\FileTypeFilterIterator::ONLY_DIRECTORIES; - -return $this; -} - - - - - - -public function files() -{ -$this->mode = Iterator\FileTypeFilterIterator::ONLY_FILES; - -return $this; -} - - - - - - - - - - - - - - - - - -public function depth($levels) -{ -foreach ((array) $levels as $level) { -$this->depths[] = new Comparator\NumberComparator($level); -} - -return $this; -} - - - - - - - - - - - - - - - - - - - - -public function date($dates) -{ -foreach ((array) $dates as $date) { -$this->dates[] = new Comparator\DateComparator($date); -} - -return $this; -} - - - - - - - - - - - - - - - - - -public function name($patterns) -{ -$this->names = array_merge($this->names, (array) $patterns); - -return $this; -} - - - - - - - - - - -public function notName($patterns) -{ -$this->notNames = array_merge($this->notNames, (array) $patterns); - -return $this; -} - - - - - - - - - - - - - - - - -public function contains($patterns) -{ -$this->contains = array_merge($this->contains, (array) $patterns); - -return $this; -} - - - - - - - - - - - - - - - - -public function notContains($patterns) -{ -$this->notContains = array_merge($this->notContains, (array) $patterns); - -return $this; -} - - - - - - - - - - - - - - - - - - -public function path($patterns) -{ -$this->paths = array_merge($this->paths, (array) $patterns); - -return $this; -} - - - - - - - - - - - - - - - - - - -public function notPath($patterns) -{ -$this->notPaths = array_merge($this->notPaths, (array) $patterns); - -return $this; -} - - - - - - - - - - - - - - - - -public function size($sizes) -{ -foreach ((array) $sizes as $size) { -$this->sizes[] = new Comparator\NumberComparator($size); -} - -return $this; -} - - - - - - - - - - - - - - -public function exclude($dirs) -{ -$this->exclude = array_merge($this->exclude, (array) $dirs); - -return $this; -} - - - - - - - - - - -public function ignoreDotFiles(bool $ignoreDotFiles) -{ -if ($ignoreDotFiles) { -$this->ignore |= static::IGNORE_DOT_FILES; -} else { -$this->ignore &= ~static::IGNORE_DOT_FILES; -} - -return $this; -} - - - - - - - - - - -public function ignoreVCS(bool $ignoreVCS) -{ -if ($ignoreVCS) { -$this->ignore |= static::IGNORE_VCS_FILES; -} else { -$this->ignore &= ~static::IGNORE_VCS_FILES; -} - -return $this; -} - - - - - - - - -public function ignoreVCSIgnored(bool $ignoreVCSIgnored) -{ -if ($ignoreVCSIgnored) { -$this->ignore |= static::IGNORE_VCS_IGNORED_FILES; -} else { -$this->ignore &= ~static::IGNORE_VCS_IGNORED_FILES; -} - -return $this; -} - - - - - - - - -public static function addVCSPattern($pattern) -{ -foreach ((array) $pattern as $p) { -self::$vcsPatterns[] = $p; -} - -self::$vcsPatterns = array_unique(self::$vcsPatterns); -} - - - - - - - - - - - - -public function sort(\Closure $closure) -{ -$this->sort = $closure; - -return $this; -} - - - - - - - - - - -public function sortByName(bool $useNaturalSort = false) -{ -$this->sort = $useNaturalSort ? Iterator\SortableIterator::SORT_BY_NAME_NATURAL : Iterator\SortableIterator::SORT_BY_NAME; - -return $this; -} - - - - - - - - - - -public function sortByType() -{ -$this->sort = Iterator\SortableIterator::SORT_BY_TYPE; - -return $this; -} - - - - - - - - - - - - -public function sortByAccessedTime() -{ -$this->sort = Iterator\SortableIterator::SORT_BY_ACCESSED_TIME; - -return $this; -} - - - - - - -public function reverseSorting() -{ -$this->reverseSorting = true; - -return $this; -} - - - - - - - - - - - - - - -public function sortByChangedTime() -{ -$this->sort = Iterator\SortableIterator::SORT_BY_CHANGED_TIME; - -return $this; -} - - - - - - - - - - - - -public function sortByModifiedTime() -{ -$this->sort = Iterator\SortableIterator::SORT_BY_MODIFIED_TIME; - -return $this; -} - - - - - - - - - - - -public function filter(\Closure $closure) -{ -$this->filters[] = $closure; - -return $this; -} - - - - - - -public function followLinks() -{ -$this->followLinks = true; - -return $this; -} - - - - - - - - -public function ignoreUnreadableDirs(bool $ignore = true) -{ -$this->ignoreUnreadableDirs = $ignore; - -return $this; -} - - - - - - - - - - -public function in($dirs) -{ -$resolvedDirs = []; - -foreach ((array) $dirs as $dir) { -if (is_dir($dir)) { -$resolvedDirs[] = [$this->normalizeDir($dir)]; -} elseif ($glob = glob($dir, (\defined('GLOB_BRACE') ? \GLOB_BRACE : 0) | \GLOB_ONLYDIR | \GLOB_NOSORT)) { -sort($glob); -$resolvedDirs[] = array_map([$this, 'normalizeDir'], $glob); -} else { -throw new DirectoryNotFoundException(sprintf('The "%s" directory does not exist.', $dir)); -} -} - -$this->dirs = array_merge($this->dirs, ...$resolvedDirs); - -return $this; -} - - - - - - - - - - -#[\ReturnTypeWillChange] -public function getIterator() -{ -if (0 === \count($this->dirs) && 0 === \count($this->iterators)) { -throw new \LogicException('You must call one of in() or append() methods before iterating over a Finder.'); -} - -if (1 === \count($this->dirs) && 0 === \count($this->iterators)) { -$iterator = $this->searchInDirectory($this->dirs[0]); - -if ($this->sort || $this->reverseSorting) { -$iterator = (new Iterator\SortableIterator($iterator, $this->sort, $this->reverseSorting))->getIterator(); -} - -return $iterator; -} - -$iterator = new \AppendIterator(); -foreach ($this->dirs as $dir) { -$iterator->append(new \IteratorIterator(new LazyIterator(function () use ($dir) { -return $this->searchInDirectory($dir); -}))); -} - -foreach ($this->iterators as $it) { -$iterator->append($it); -} - -if ($this->sort || $this->reverseSorting) { -$iterator = (new Iterator\SortableIterator($iterator, $this->sort, $this->reverseSorting))->getIterator(); -} - -return $iterator; -} - - - - - - - - - - -public function append(iterable $iterator) -{ -if ($iterator instanceof \IteratorAggregate) { -$this->iterators[] = $iterator->getIterator(); -} elseif ($iterator instanceof \Iterator) { -$this->iterators[] = $iterator; -} elseif (is_iterable($iterator)) { -$it = new \ArrayIterator(); -foreach ($iterator as $file) { -$file = $file instanceof \SplFileInfo ? $file : new \SplFileInfo($file); -$it[$file->getPathname()] = $file; -} -$this->iterators[] = $it; -} else { -throw new \InvalidArgumentException('Finder::append() method wrong argument type.'); -} - -return $this; -} - - - - - - -public function hasResults() -{ -foreach ($this->getIterator() as $_) { -return true; -} - -return false; -} - - - - - - -#[\ReturnTypeWillChange] -public function count() -{ -return iterator_count($this->getIterator()); -} - -private function searchInDirectory(string $dir): \Iterator -{ -$exclude = $this->exclude; -$notPaths = $this->notPaths; - -if (static::IGNORE_VCS_FILES === (static::IGNORE_VCS_FILES & $this->ignore)) { -$exclude = array_merge($exclude, self::$vcsPatterns); -} - -if (static::IGNORE_DOT_FILES === (static::IGNORE_DOT_FILES & $this->ignore)) { -$notPaths[] = '#(^|/)\..+(/|$)#'; -} - -$minDepth = 0; -$maxDepth = \PHP_INT_MAX; - -foreach ($this->depths as $comparator) { -switch ($comparator->getOperator()) { -case '>': -$minDepth = $comparator->getTarget() + 1; -break; -case '>=': -$minDepth = $comparator->getTarget(); -break; -case '<': -$maxDepth = $comparator->getTarget() - 1; -break; -case '<=': -$maxDepth = $comparator->getTarget(); -break; -default: -$minDepth = $maxDepth = $comparator->getTarget(); -} -} - -$flags = \RecursiveDirectoryIterator::SKIP_DOTS; - -if ($this->followLinks) { -$flags |= \RecursiveDirectoryIterator::FOLLOW_SYMLINKS; -} - -$iterator = new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs); - -if ($exclude) { -$iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $exclude); -} - -$iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST); - -if ($minDepth > 0 || $maxDepth < \PHP_INT_MAX) { -$iterator = new Iterator\DepthRangeFilterIterator($iterator, $minDepth, $maxDepth); -} - -if ($this->mode) { -$iterator = new Iterator\FileTypeFilterIterator($iterator, $this->mode); -} - -if ($this->names || $this->notNames) { -$iterator = new Iterator\FilenameFilterIterator($iterator, $this->names, $this->notNames); -} - -if ($this->contains || $this->notContains) { -$iterator = new Iterator\FilecontentFilterIterator($iterator, $this->contains, $this->notContains); -} - -if ($this->sizes) { -$iterator = new Iterator\SizeRangeFilterIterator($iterator, $this->sizes); -} - -if ($this->dates) { -$iterator = new Iterator\DateRangeFilterIterator($iterator, $this->dates); -} - -if ($this->filters) { -$iterator = new Iterator\CustomFilterIterator($iterator, $this->filters); -} - -if ($this->paths || $notPaths) { -$iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $notPaths); -} - -if (static::IGNORE_VCS_IGNORED_FILES === (static::IGNORE_VCS_IGNORED_FILES & $this->ignore)) { -$iterator = new Iterator\VcsIgnoredFilterIterator($iterator, $dir); -} - -return $iterator; -} - - - - - - -private function normalizeDir(string $dir): string -{ -if ('/' === $dir) { -return $dir; -} - -$dir = rtrim($dir, '/'.\DIRECTORY_SEPARATOR); - -if (preg_match('#^(ssh2\.)?s?ftp://#', $dir)) { -$dir .= '/'; -} - -return $dir; -} -} diff --git a/composer/vendor/symfony/finder/Gitignore.php b/composer/vendor/symfony/finder/Gitignore.php deleted file mode 100644 index a1fabf2b2..000000000 --- a/composer/vendor/symfony/finder/Gitignore.php +++ /dev/null @@ -1,93 +0,0 @@ -filters = $filters; - -parent::__construct($iterator); -} - - - - - - -#[\ReturnTypeWillChange] -public function accept() -{ -$fileinfo = $this->current(); - -foreach ($this->filters as $filter) { -if (false === $filter($fileinfo)) { -return false; -} -} - -return true; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php deleted file mode 100644 index f7dfb987c..000000000 --- a/composer/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php +++ /dev/null @@ -1,61 +0,0 @@ -comparators = $comparators; - -parent::__construct($iterator); -} - - - - - - -#[\ReturnTypeWillChange] -public function accept() -{ -$fileinfo = $this->current(); - -if (!file_exists($fileinfo->getPathname())) { -return false; -} - -$filedate = $fileinfo->getMTime(); -foreach ($this->comparators as $compare) { -if (!$compare->test($filedate)) { -return false; -} -} - -return true; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php deleted file mode 100644 index e04ca2f8d..000000000 --- a/composer/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php +++ /dev/null @@ -1,51 +0,0 @@ -minDepth = $minDepth; -$iterator->setMaxDepth(\PHP_INT_MAX === $maxDepth ? -1 : $maxDepth); - -parent::__construct($iterator); -} - - - - - - -#[\ReturnTypeWillChange] -public function accept() -{ -return $this->getInnerIterator()->getDepth() >= $this->minDepth; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php b/composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php deleted file mode 100644 index 3067d588d..000000000 --- a/composer/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php +++ /dev/null @@ -1,96 +0,0 @@ -iterator = $iterator; -$this->isRecursive = $iterator instanceof \RecursiveIterator; -$patterns = []; -foreach ($directories as $directory) { -$directory = rtrim($directory, '/'); -if (!$this->isRecursive || str_contains($directory, '/')) { -$patterns[] = preg_quote($directory, '#'); -} else { -$this->excludedDirs[$directory] = true; -} -} -if ($patterns) { -$this->excludedPattern = '#(?:^|/)(?:'.implode('|', $patterns).')(?:/|$)#'; -} - -parent::__construct($iterator); -} - - - - - - -#[\ReturnTypeWillChange] -public function accept() -{ -if ($this->isRecursive && isset($this->excludedDirs[$this->getFilename()]) && $this->isDir()) { -return false; -} - -if ($this->excludedPattern) { -$path = $this->isDir() ? $this->current()->getRelativePathname() : $this->current()->getRelativePath(); -$path = str_replace('\\', '/', $path); - -return !preg_match($this->excludedPattern, $path); -} - -return true; -} - - - - -#[\ReturnTypeWillChange] -public function hasChildren() -{ -return $this->isRecursive && $this->iterator->hasChildren(); -} - - - - -#[\ReturnTypeWillChange] -public function getChildren() -{ -$children = new self($this->iterator->getChildren(), []); -$children->excludedDirs = $this->excludedDirs; -$children->excludedPattern = $this->excludedPattern; - -return $children; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php deleted file mode 100644 index c12dc5452..000000000 --- a/composer/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php +++ /dev/null @@ -1,56 +0,0 @@ -mode = $mode; - -parent::__construct($iterator); -} - - - - - - -#[\ReturnTypeWillChange] -public function accept() -{ -$fileinfo = $this->current(); -if (self::ONLY_DIRECTORIES === (self::ONLY_DIRECTORIES & $this->mode) && $fileinfo->isFile()) { -return false; -} elseif (self::ONLY_FILES === (self::ONLY_FILES & $this->mode) && $fileinfo->isDir()) { -return false; -} - -return true; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php b/composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php deleted file mode 100644 index 5abcc8b63..000000000 --- a/composer/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php +++ /dev/null @@ -1,61 +0,0 @@ -matchRegexps && !$this->noMatchRegexps) { -return true; -} - -$fileinfo = $this->current(); - -if ($fileinfo->isDir() || !$fileinfo->isReadable()) { -return false; -} - -$content = $fileinfo->getContents(); -if (!$content) { -return false; -} - -return $this->isAccepted($content); -} - - - - - - - - -protected function toRegex(string $str) -{ -return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php b/composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php deleted file mode 100644 index 9de88c73e..000000000 --- a/composer/vendor/symfony/finder/Iterator/FilenameFilterIterator.php +++ /dev/null @@ -1,50 +0,0 @@ -isAccepted($this->current()->getFilename()); -} - - - - - - - - - - - -protected function toRegex(string $str) -{ -return $this->isRegex($str) ? $str : Glob::toRegex($str); -} -} diff --git a/composer/vendor/symfony/finder/Iterator/LazyIterator.php b/composer/vendor/symfony/finder/Iterator/LazyIterator.php deleted file mode 100644 index d6cbc5d68..000000000 --- a/composer/vendor/symfony/finder/Iterator/LazyIterator.php +++ /dev/null @@ -1,32 +0,0 @@ -iteratorFactory = $iteratorFactory; -} - -public function getIterator(): \Traversable -{ -yield from ($this->iteratorFactory)(); -} -} diff --git a/composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php b/composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php deleted file mode 100644 index d9f72858e..000000000 --- a/composer/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php +++ /dev/null @@ -1,117 +0,0 @@ -matchRegexps[] = $this->toRegex($pattern); -} - -foreach ($noMatchPatterns as $pattern) { -$this->noMatchRegexps[] = $this->toRegex($pattern); -} - -parent::__construct($iterator); -} - - - - - - - - - - -protected function isAccepted(string $string) -{ - -foreach ($this->noMatchRegexps as $regex) { -if (preg_match($regex, $string)) { -return false; -} -} - - -if ($this->matchRegexps) { -foreach ($this->matchRegexps as $regex) { -if (preg_match($regex, $string)) { -return true; -} -} - -return false; -} - - -return true; -} - - - - - - -protected function isRegex(string $str) -{ -$availableModifiers = 'imsxuADU'; - -if (\PHP_VERSION_ID >= 80200) { -$availableModifiers .= 'n'; -} - -if (preg_match('/^(.{3,}?)['.$availableModifiers.']*$/', $str, $m)) { -$start = substr($m[1], 0, 1); -$end = substr($m[1], -1); - -if ($start === $end) { -return !preg_match('/[*?[:alnum:] \\\\]/', $start); -} - -foreach ([['{', '}'], ['(', ')'], ['[', ']'], ['<', '>']] as $delimiters) { -if ($start === $delimiters[0] && $end === $delimiters[1]) { -return true; -} -} -} - -return false; -} - - - - - - -abstract protected function toRegex(string $str); -} diff --git a/composer/vendor/symfony/finder/Iterator/PathFilterIterator.php b/composer/vendor/symfony/finder/Iterator/PathFilterIterator.php deleted file mode 100644 index bdb3b4832..000000000 --- a/composer/vendor/symfony/finder/Iterator/PathFilterIterator.php +++ /dev/null @@ -1,59 +0,0 @@ -current()->getRelativePathname(); - -if ('\\' === \DIRECTORY_SEPARATOR) { -$filename = str_replace('\\', '/', $filename); -} - -return $this->isAccepted($filename); -} - - - - - - - - - - - - - - - -protected function toRegex(string $str) -{ -return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php b/composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php deleted file mode 100644 index 48fc80a2b..000000000 --- a/composer/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php +++ /dev/null @@ -1,168 +0,0 @@ -ignoreUnreadableDirs = $ignoreUnreadableDirs; -$this->rootPath = $path; -if ('/' !== \DIRECTORY_SEPARATOR && !($flags & self::UNIX_PATHS)) { -$this->directorySeparator = \DIRECTORY_SEPARATOR; -} -} - - - - - - -#[\ReturnTypeWillChange] -public function current() -{ - - -if (null === $subPathname = $this->subPath) { -$subPathname = $this->subPath = $this->getSubPath(); -} -if ('' !== $subPathname) { -$subPathname .= $this->directorySeparator; -} -$subPathname .= $this->getFilename(); - -if ('/' !== $basePath = $this->rootPath) { -$basePath .= $this->directorySeparator; -} - -return new SplFileInfo($basePath.$subPathname, $this->subPath, $subPathname); -} - - - - - - -#[\ReturnTypeWillChange] -public function hasChildren($allowLinks = false) -{ -$hasChildren = parent::hasChildren($allowLinks); - -if (!$hasChildren || !$this->ignoreUnreadableDirs) { -return $hasChildren; -} - -try { -parent::getChildren(); - -return true; -} catch (\UnexpectedValueException $e) { - -return false; -} -} - - - - - - -#[\ReturnTypeWillChange] -public function getChildren() -{ -try { -$children = parent::getChildren(); - -if ($children instanceof self) { - -$children->ignoreUnreadableDirs = $this->ignoreUnreadableDirs; - - -$children->rewindable = &$this->rewindable; -$children->rootPath = $this->rootPath; -} - -return $children; -} catch (\UnexpectedValueException $e) { -throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e); -} -} - - - - - - -#[\ReturnTypeWillChange] -public function rewind() -{ -if (false === $this->isRewindable()) { -return; -} - -parent::rewind(); -} - - - - - - -public function isRewindable() -{ -if (null !== $this->rewindable) { -return $this->rewindable; -} - -if (false !== $stream = @opendir($this->getPath())) { -$infos = stream_get_meta_data($stream); -closedir($stream); - -if ($infos['seekable']) { -return $this->rewindable = true; -} -} - -return $this->rewindable = false; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php b/composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php deleted file mode 100644 index 644b0a24f..000000000 --- a/composer/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php +++ /dev/null @@ -1,60 +0,0 @@ -comparators = $comparators; - -parent::__construct($iterator); -} - - - - - - -#[\ReturnTypeWillChange] -public function accept() -{ -$fileinfo = $this->current(); -if (!$fileinfo->isFile()) { -return true; -} - -$filesize = $fileinfo->getSize(); -foreach ($this->comparators as $compare) { -if (!$compare->test($filesize)) { -return false; -} -} - -return true; -} -} diff --git a/composer/vendor/symfony/finder/Iterator/SortableIterator.php b/composer/vendor/symfony/finder/Iterator/SortableIterator.php deleted file mode 100644 index 73bd223da..000000000 --- a/composer/vendor/symfony/finder/Iterator/SortableIterator.php +++ /dev/null @@ -1,104 +0,0 @@ -iterator = $iterator; -$order = $reverseOrder ? -1 : 1; - -if (self::SORT_BY_NAME === $sort) { -$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { -return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); -}; -} elseif (self::SORT_BY_NAME_NATURAL === $sort) { -$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { -return $order * strnatcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); -}; -} elseif (self::SORT_BY_TYPE === $sort) { -$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { -if ($a->isDir() && $b->isFile()) { -return -$order; -} elseif ($a->isFile() && $b->isDir()) { -return $order; -} - -return $order * strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); -}; -} elseif (self::SORT_BY_ACCESSED_TIME === $sort) { -$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { -return $order * ($a->getATime() - $b->getATime()); -}; -} elseif (self::SORT_BY_CHANGED_TIME === $sort) { -$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { -return $order * ($a->getCTime() - $b->getCTime()); -}; -} elseif (self::SORT_BY_MODIFIED_TIME === $sort) { -$this->sort = static function (\SplFileInfo $a, \SplFileInfo $b) use ($order) { -return $order * ($a->getMTime() - $b->getMTime()); -}; -} elseif (self::SORT_BY_NONE === $sort) { -$this->sort = $order; -} elseif (\is_callable($sort)) { -$this->sort = $reverseOrder ? static function (\SplFileInfo $a, \SplFileInfo $b) use ($sort) { return -$sort($a, $b); } : $sort; -} else { -throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.'); -} -} - - - - -#[\ReturnTypeWillChange] -public function getIterator() -{ -if (1 === $this->sort) { -return $this->iterator; -} - -$array = iterator_to_array($this->iterator, true); - -if (-1 === $this->sort) { -$array = array_reverse($array); -} else { -uasort($array, $this->sort); -} - -return new \ArrayIterator($array); -} -} diff --git a/composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php b/composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php deleted file mode 100644 index ac05f5e11..000000000 --- a/composer/vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php +++ /dev/null @@ -1,151 +0,0 @@ -baseDir = $this->normalizePath($baseDir); - -parent::__construct($iterator); -} - -public function accept(): bool -{ -$file = $this->current(); - -$fileRealPath = $this->normalizePath($file->getRealPath()); - -return !$this->isIgnored($fileRealPath); -} - -private function isIgnored(string $fileRealPath): bool -{ -if (is_dir($fileRealPath) && !str_ends_with($fileRealPath, '/')) { -$fileRealPath .= '/'; -} - -if (isset($this->ignoredPathsCache[$fileRealPath])) { -return $this->ignoredPathsCache[$fileRealPath]; -} - -$ignored = false; - -foreach ($this->parentsDirectoryDownward($fileRealPath) as $parentDirectory) { -if ($this->isIgnored($parentDirectory)) { - -break; -} - -$fileRelativePath = substr($fileRealPath, \strlen($parentDirectory) + 1); - -if (null === $regexps = $this->readGitignoreFile("{$parentDirectory}/.gitignore")) { -continue; -} - -[$exclusionRegex, $inclusionRegex] = $regexps; - -if (preg_match($exclusionRegex, $fileRelativePath)) { -$ignored = true; - -continue; -} - -if (preg_match($inclusionRegex, $fileRelativePath)) { -$ignored = false; -} -} - -return $this->ignoredPathsCache[$fileRealPath] = $ignored; -} - - - - -private function parentsDirectoryDownward(string $fileRealPath): array -{ -$parentDirectories = []; - -$parentDirectory = $fileRealPath; - -while (true) { -$newParentDirectory = \dirname($parentDirectory); - - -if ($newParentDirectory === $parentDirectory) { -break; -} - -$parentDirectory = $newParentDirectory; - -if (0 !== strpos($parentDirectory, $this->baseDir)) { -break; -} - -$parentDirectories[] = $parentDirectory; -} - -return array_reverse($parentDirectories); -} - - - - -private function readGitignoreFile(string $path): ?array -{ -if (\array_key_exists($path, $this->gitignoreFilesCache)) { -return $this->gitignoreFilesCache[$path]; -} - -if (!file_exists($path)) { -return $this->gitignoreFilesCache[$path] = null; -} - -if (!is_file($path) || !is_readable($path)) { -throw new \RuntimeException("The \"ignoreVCSIgnored\" option cannot be used by the Finder as the \"{$path}\" file is not readable."); -} - -$gitignoreFileContent = file_get_contents($path); - -return $this->gitignoreFilesCache[$path] = [ -Gitignore::toRegex($gitignoreFileContent), -Gitignore::toRegexMatchingNegatedPatterns($gitignoreFileContent), -]; -} - -private function normalizePath(string $path): string -{ -if ('\\' === \DIRECTORY_SEPARATOR) { -return str_replace('\\', '/', $path); -} - -return $path; -} -} diff --git a/composer/vendor/symfony/finder/LICENSE b/composer/vendor/symfony/finder/LICENSE deleted file mode 100644 index 3622370ec..000000000 --- a/composer/vendor/symfony/finder/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2004-2023 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/composer/vendor/symfony/finder/SplFileInfo.php b/composer/vendor/symfony/finder/SplFileInfo.php deleted file mode 100644 index 7768bd0f6..000000000 --- a/composer/vendor/symfony/finder/SplFileInfo.php +++ /dev/null @@ -1,88 +0,0 @@ -relativePath = $relativePath; -$this->relativePathname = $relativePathname; -} - - - - - - - - -public function getRelativePath() -{ -return $this->relativePath; -} - - - - - - - - -public function getRelativePathname() -{ -return $this->relativePathname; -} - -public function getFilenameWithoutExtension(): string -{ -$filename = $this->getFilename(); - -return pathinfo($filename, \PATHINFO_FILENAME); -} - - - - - - - - -public function getContents() -{ -set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); -try { -$content = file_get_contents($this->getPathname()); -} finally { -restore_error_handler(); -} -if (false === $content) { -throw new \RuntimeException($error); -} - -return $content; -} -} diff --git a/composer/vendor/symfony/polyfill-ctype/Ctype.php b/composer/vendor/symfony/polyfill-ctype/Ctype.php deleted file mode 100644 index b52d290f8..000000000 --- a/composer/vendor/symfony/polyfill-ctype/Ctype.php +++ /dev/null @@ -1,232 +0,0 @@ - 255) { -return (string) $int; -} - -if (\PHP_VERSION_ID >= 80100) { -@trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED); -} - -if ($int < 0) { -$int += 256; -} - -return \chr($int); -} -} diff --git a/composer/vendor/symfony/polyfill-ctype/LICENSE b/composer/vendor/symfony/polyfill-ctype/LICENSE deleted file mode 100644 index e5a36a180..000000000 --- a/composer/vendor/symfony/polyfill-ctype/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2018-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/composer/vendor/symfony/polyfill-ctype/bootstrap.php b/composer/vendor/symfony/polyfill-ctype/bootstrap.php deleted file mode 100644 index 5f1f758bd..000000000 --- a/composer/vendor/symfony/polyfill-ctype/bootstrap.php +++ /dev/null @@ -1,50 +0,0 @@ -= 80000) { -return require __DIR__.'/bootstrap80.php'; -} - -if (!function_exists('ctype_alnum')) { -function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } -} -if (!function_exists('ctype_alpha')) { -function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } -} -if (!function_exists('ctype_cntrl')) { -function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } -} -if (!function_exists('ctype_digit')) { -function ctype_digit($text) { return p\Ctype::ctype_digit($text); } -} -if (!function_exists('ctype_graph')) { -function ctype_graph($text) { return p\Ctype::ctype_graph($text); } -} -if (!function_exists('ctype_lower')) { -function ctype_lower($text) { return p\Ctype::ctype_lower($text); } -} -if (!function_exists('ctype_print')) { -function ctype_print($text) { return p\Ctype::ctype_print($text); } -} -if (!function_exists('ctype_punct')) { -function ctype_punct($text) { return p\Ctype::ctype_punct($text); } -} -if (!function_exists('ctype_space')) { -function ctype_space($text) { return p\Ctype::ctype_space($text); } -} -if (!function_exists('ctype_upper')) { -function ctype_upper($text) { return p\Ctype::ctype_upper($text); } -} -if (!function_exists('ctype_xdigit')) { -function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } -} diff --git a/composer/vendor/symfony/polyfill-ctype/bootstrap80.php b/composer/vendor/symfony/polyfill-ctype/bootstrap80.php deleted file mode 100644 index dea0a8614..000000000 --- a/composer/vendor/symfony/polyfill-ctype/bootstrap80.php +++ /dev/null @@ -1,46 +0,0 @@ -= 8.32 : (float) \PCRE_VERSION >= 10.39) ? '\X' : Grapheme::GRAPHEME_CLUSTER_RX); - - - - - - - - - - - - - - - - - - - -final class Grapheme -{ - - -public const GRAPHEME_CLUSTER_RX = '(?:\r\n|(?:[ -~\x{200C}\x{200D}]|[ᆨ-ᇹ]+|[ᄀ-ᅟ]*(?:[가개갸걔거게겨계고과괘괴교구궈궤귀규그긔기까깨꺄꺠꺼께껴꼐꼬꽈꽤꾀꾜꾸꿔꿰뀌뀨끄끠끼나내냐냬너네녀녜노놔놰뇌뇨누눠눼뉘뉴느늬니다대댜댸더데뎌뎨도돠돼되됴두둬뒈뒤듀드듸디따때땨떄떠떼뗘뗴또똬뙈뙤뚀뚜뚸뛔뛰뜌뜨띄띠라래랴럐러레려례로롸뢔뢰료루뤄뤠뤼류르릐리마매먀먜머메며몌모뫄뫠뫼묘무뭐뭬뮈뮤므믜미바배뱌뱨버베벼볘보봐봬뵈뵤부붜붸뷔뷰브븨비빠빼뺘뺴뻐뻬뼈뼤뽀뽜뽸뾔뾰뿌뿨쀄쀠쀼쁘쁴삐사새샤섀서세셔셰소솨쇄쇠쇼수숴쉐쉬슈스싀시싸쌔쌰썌써쎄쎠쎼쏘쏴쐐쐬쑈쑤쒀쒜쒸쓔쓰씌씨아애야얘어에여예오와왜외요우워웨위유으의이자재쟈쟤저제져졔조좌좨죄죠주줘줴쥐쥬즈즤지짜째쨔쨰쩌쩨쪄쪠쪼쫘쫴쬐쬬쭈쭤쮀쮜쮸쯔쯰찌차채챠챼처체쳐쳬초촤쵀최쵸추춰췌취츄츠츼치카캐캬컈커케켜켸코콰쾌쾨쿄쿠쿼퀘퀴큐크킈키타태탸턔터테텨톄토톼퇘퇴툐투퉈퉤튀튜트틔티파패퍄퍠퍼페펴폐포퐈퐤푀표푸풔풰퓌퓨프픠피하해햐햬허헤혀혜호화홰회효후훠훼휘휴흐희히]?[ᅠ-ᆢ]+|[가-힣])[ᆨ-ᇹ]*|[ᄀ-ᅟ]+|[^\p{Cc}\p{Cf}\p{Zl}\p{Zp}])[\p{Mn}\p{Me}\x{09BE}\x{09D7}\x{0B3E}\x{0B57}\x{0BBE}\x{0BD7}\x{0CC2}\x{0CD5}\x{0CD6}\x{0D3E}\x{0D57}\x{0DCF}\x{0DDF}\x{200C}\x{200D}\x{1D165}\x{1D16E}-\x{1D172}]*|[\p{Cc}\p{Cf}\p{Zl}\p{Zp}])'; - -private const CASE_FOLD = [ -['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], -['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], -]; - -public static function grapheme_extract($s, $size, $type = \GRAPHEME_EXTR_COUNT, $start = 0, &$next = 0) -{ -if (0 > $start) { -$start = \strlen($s) + $start; -} - -if (!\is_scalar($s)) { -$hasError = false; -set_error_handler(function () use (&$hasError) { $hasError = true; }); -$next = substr($s, $start); -restore_error_handler(); -if ($hasError) { -substr($s, $start); -$s = ''; -} else { -$s = $next; -} -} else { -$s = substr($s, $start); -} -$size = (int) $size; -$type = (int) $type; -$start = (int) $start; - -if (\GRAPHEME_EXTR_COUNT !== $type && \GRAPHEME_EXTR_MAXBYTES !== $type && \GRAPHEME_EXTR_MAXCHARS !== $type) { -if (80000 > \PHP_VERSION_ID) { -return false; -} - -throw new \ValueError('grapheme_extract(): Argument #3 ($type) must be one of GRAPHEME_EXTR_COUNT, GRAPHEME_EXTR_MAXBYTES, or GRAPHEME_EXTR_MAXCHARS'); -} - -if (!isset($s[0]) || 0 > $size || 0 > $start) { -return false; -} -if (0 === $size) { -return ''; -} - -$next = $start; - -$s = preg_split('/('.SYMFONY_GRAPHEME_CLUSTER_RX.')/u', "\r\n".$s, $size + 1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE); - -if (!isset($s[1])) { -return false; -} - -$i = 1; -$ret = ''; - -do { -if (\GRAPHEME_EXTR_COUNT === $type) { ---$size; -} elseif (\GRAPHEME_EXTR_MAXBYTES === $type) { -$size -= \strlen($s[$i]); -} else { -$size -= iconv_strlen($s[$i], 'UTF-8//IGNORE'); -} - -if ($size >= 0) { -$ret .= $s[$i]; -} -} while (isset($s[++$i]) && $size > 0); - -$next += \strlen($ret); - -return $ret; -} - -public static function grapheme_strlen($s) -{ -preg_replace('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', '', $s, -1, $len); - -return 0 === $len && '' !== $s ? null : $len; -} - -public static function grapheme_substr($s, $start, $len = null) -{ -if (null === $len) { -$len = 2147483647; -} - -preg_match_all('/'.SYMFONY_GRAPHEME_CLUSTER_RX.'/u', $s, $s); - -$slen = \count($s[0]); -$start = (int) $start; - -if (0 > $start) { -$start += $slen; -} -if (0 > $start) { -if (\PHP_VERSION_ID < 80000) { -return false; -} - -$start = 0; -} -if ($start >= $slen) { -return \PHP_VERSION_ID >= 80000 ? '' : false; -} - -$rem = $slen - $start; - -if (0 > $len) { -$len += $rem; -} -if (0 === $len) { -return ''; -} -if (0 > $len) { -return \PHP_VERSION_ID >= 80000 ? '' : false; -} -if ($len > $rem) { -$len = $rem; -} - -return implode('', \array_slice($s[0], $start, $len)); -} - -public static function grapheme_strpos($s, $needle, $offset = 0) -{ -return self::grapheme_position($s, $needle, $offset, 0); -} - -public static function grapheme_stripos($s, $needle, $offset = 0) -{ -return self::grapheme_position($s, $needle, $offset, 1); -} - -public static function grapheme_strrpos($s, $needle, $offset = 0) -{ -return self::grapheme_position($s, $needle, $offset, 2); -} - -public static function grapheme_strripos($s, $needle, $offset = 0) -{ -return self::grapheme_position($s, $needle, $offset, 3); -} - -public static function grapheme_stristr($s, $needle, $beforeNeedle = false) -{ -return mb_stristr($s, $needle, $beforeNeedle, 'UTF-8'); -} - -public static function grapheme_strstr($s, $needle, $beforeNeedle = false) -{ -return mb_strstr($s, $needle, $beforeNeedle, 'UTF-8'); -} - -private static function grapheme_position($s, $needle, $offset, $mode) -{ -$needle = (string) $needle; -if (80000 > \PHP_VERSION_ID && !preg_match('/./us', $needle)) { -return false; -} -$s = (string) $s; -if (!preg_match('/./us', $s)) { -return false; -} -if ($offset > 0) { -$s = self::grapheme_substr($s, $offset); -} elseif ($offset < 0) { -if (2 > $mode) { -$offset += self::grapheme_strlen($s); -$s = self::grapheme_substr($s, $offset); -if (0 > $offset) { -$offset = 0; -} -} elseif (0 > $offset += self::grapheme_strlen($needle)) { -$s = self::grapheme_substr($s, 0, $offset); -$offset = 0; -} else { -$offset = 0; -} -} - - - - -$caseInsensitive = $mode & 1; -$reverse = $mode & 2; -if ($caseInsensitive) { - - - -$mode = \defined('MB_CASE_FOLD_SIMPLE') ? \MB_CASE_FOLD_SIMPLE : \MB_CASE_LOWER; -$s = mb_convert_case($s, $mode, 'UTF-8'); -$needle = mb_convert_case($needle, $mode, 'UTF-8'); - -if (!\defined('MB_CASE_FOLD_SIMPLE')) { -$s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); -$needle = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $needle); -} -} -if ($reverse) { -$needlePos = strrpos($s, $needle); -} else { -$needlePos = strpos($s, $needle); -} - -return false !== $needlePos ? self::grapheme_strlen(substr($s, 0, $needlePos)) + $offset : false; -} -} diff --git a/composer/vendor/symfony/polyfill-intl-grapheme/LICENSE b/composer/vendor/symfony/polyfill-intl-grapheme/LICENSE deleted file mode 100644 index 2a2f86774..000000000 --- a/composer/vendor/symfony/polyfill-intl-grapheme/LICENSE +++ /dev/null @@ -1,21 +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/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php b/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php deleted file mode 100644 index 880c8a2ed..000000000 --- a/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap.php +++ /dev/null @@ -1,58 +0,0 @@ -= 80000) { -return require __DIR__.'/bootstrap80.php'; -} - -if (!defined('GRAPHEME_EXTR_COUNT')) { -define('GRAPHEME_EXTR_COUNT', 0); -} -if (!defined('GRAPHEME_EXTR_MAXBYTES')) { -define('GRAPHEME_EXTR_MAXBYTES', 1); -} -if (!defined('GRAPHEME_EXTR_MAXCHARS')) { -define('GRAPHEME_EXTR_MAXCHARS', 2); -} - -if (!function_exists('grapheme_extract')) { -function grapheme_extract($haystack, $size, $type = 0, $start = 0, &$next = 0) { return p\Grapheme::grapheme_extract($haystack, $size, $type, $start, $next); } -} -if (!function_exists('grapheme_stripos')) { -function grapheme_stripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_stripos($haystack, $needle, $offset); } -} -if (!function_exists('grapheme_stristr')) { -function grapheme_stristr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_stristr($haystack, $needle, $beforeNeedle); } -} -if (!function_exists('grapheme_strlen')) { -function grapheme_strlen($input) { return p\Grapheme::grapheme_strlen($input); } -} -if (!function_exists('grapheme_strpos')) { -function grapheme_strpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strpos($haystack, $needle, $offset); } -} -if (!function_exists('grapheme_strripos')) { -function grapheme_strripos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strripos($haystack, $needle, $offset); } -} -if (!function_exists('grapheme_strrpos')) { -function grapheme_strrpos($haystack, $needle, $offset = 0) { return p\Grapheme::grapheme_strrpos($haystack, $needle, $offset); } -} -if (!function_exists('grapheme_strstr')) { -function grapheme_strstr($haystack, $needle, $beforeNeedle = false) { return p\Grapheme::grapheme_strstr($haystack, $needle, $beforeNeedle); } -} -if (!function_exists('grapheme_substr')) { -function grapheme_substr($string, $offset, $length = null) { return p\Grapheme::grapheme_substr($string, $offset, $length); } -} diff --git a/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php b/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php deleted file mode 100644 index cde24b878..000000000 --- a/composer/vendor/symfony/polyfill-intl-grapheme/bootstrap80.php +++ /dev/null @@ -1,50 +0,0 @@ - 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(string $s, int $form = self::FORM_C) -{ -if (!\in_array($form, [self::NFD, self::NFKD, self::NFC, self::NFKC])) { -return false; -} -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(string $s, int $form = self::FORM_C) -{ -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; -} - -if (80000 > \PHP_VERSION_ID) { -return false; -} - -throw new \ValueError('normalizer_normalize(): Argument #2 ($form) must be a a valid normalization form'); -} - -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 & (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") { - - -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) { - - -$ucls = $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 { - - -$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 = []; -$i = 0; -$len = \strlen($s); - -while ($i < $len) { -if ($s[$i] < "\x80") { - - -if ($c) { -ksort($c); -$result .= implode('', $c); -$c = []; -} - -$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) { - - -if ($uchr !== $j = $compatMap[$uchr] ?? ($decompMap[$uchr] ?? $uchr)) { -$uchr = $j; - -$j = \strlen($uchr); -$ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"]; - -if ($ulen != $j) { - - -$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])) { - - -if (!isset($c[$combClass[$uchr]])) { -$c[$combClass[$uchr]] = ''; -} -$c[$combClass[$uchr]] .= $uchr; -continue; -} -} else { - - -$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 = []; -} - -$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/composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php deleted file mode 100644 index 27a7e850c..000000000 --- a/composer/vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php +++ /dev/null @@ -1,17 +0,0 @@ - 'À', -'Á' => 'Á', -'Â' => 'Â', -'Ã' => 'Ã', -'Ä' => 'Ä', -'Å' => 'Å', -'Ç' => 'Ç', -'È' => 'È', -'É' => 'É', -'Ê' => 'Ê', -'Ë' => 'Ë', -'Ì' => 'Ì', -'Í' => 'Í', -'Î' => 'Î', -'Ï' => 'Ï', -'Ñ' => 'Ñ', -'Ò' => 'Ò', -'Ó' => 'Ó', -'Ô' => 'Ô', -'Õ' => 'Õ', -'Ö' => 'Ö', -'Ù' => 'Ù', -'Ú' => 'Ú', -'Û' => 'Û', -'Ü' => 'Ü', -'Ý' => 'Ý', -'à' => 'à', -'á' => 'á', -'â' => 'â', -'ã' => 'ã', -'ä' => 'ä', -'å' => 'å', -'ç' => 'ç', -'è' => 'è', -'é' => 'é', -'ê' => 'ê', -'ë' => 'ë', -'ì' => 'ì', -'í' => 'í', -'î' => 'î', -'ï' => 'ï', -'ñ' => 'ñ', -'ò' => 'ò', -'ó' => 'ó', -'ô' => 'ô', -'õ' => 'õ', -'ö' => 'ö', -'ù' => 'ù', -'ú' => 'ú', -'û' => 'û', -'ü' => 'ü', -'ý' => 'ý', -'ÿ' => 'ÿ', -'Ā' => 'Ā', -'ā' => 'ā', -'Ă' => 'Ă', -'ă' => 'ă', -'Ą' => 'Ą', -'ą' => 'ą', -'Ć' => 'Ć', -'ć' => 'ć', -'Ĉ' => 'Ĉ', -'ĉ' => 'ĉ', -'Ċ' => 'Ċ', -'ċ' => 'ċ', -'Č' => 'Č', -'č' => 'č', -'Ď' => 'Ď', -'ď' => 'ď', -'Ē' => 'Ē', -'ē' => 'ē', -'Ĕ' => 'Ĕ', -'ĕ' => 'ĕ', -'Ė' => 'Ė', -'ė' => 'ė', -'Ę' => 'Ę', -'ę' => 'ę', -'Ě' => 'Ě', -'ě' => 'ě', -'Ĝ' => 'Ĝ', -'ĝ' => 'ĝ', -'Ğ' => 'Ğ', -'ğ' => 'ğ', -'Ġ' => 'Ġ', -'ġ' => 'ġ', -'Ģ' => 'Ģ', -'ģ' => 'ģ', -'Ĥ' => 'Ĥ', -'ĥ' => 'ĥ', -'Ĩ' => 'Ĩ', -'ĩ' => 'ĩ', -'Ī' => 'Ī', -'ī' => 'ī', -'Ĭ' => 'Ĭ', -'ĭ' => 'ĭ', -'Į' => 'Į', -'į' => 'į', -'İ' => 'İ', -'Ĵ' => 'Ĵ', -'ĵ' => 'ĵ', -'Ķ' => 'Ķ', -'ķ' => 'ķ', -'Ĺ' => 'Ĺ', -'ĺ' => 'ĺ', -'Ļ' => 'Ļ', -'ļ' => 'ļ', -'Ľ' => 'Ľ', -'ľ' => 'ľ', -'Ń' => 'Ń', -'ń' => 'ń', -'Ņ' => 'Ņ', -'ņ' => 'ņ', -'Ň' => 'Ň', -'ň' => 'ň', -'Ō' => 'Ō', -'ō' => 'ō', -'Ŏ' => 'Ŏ', -'ŏ' => 'ŏ', -'Ő' => 'Ő', -'ő' => 'ő', -'Ŕ' => 'Ŕ', -'ŕ' => 'ŕ', -'Ŗ' => 'Ŗ', -'ŗ' => 'ŗ', -'Ř' => 'Ř', -'ř' => 'ř', -'Ś' => 'Ś', -'ś' => 'ś', -'Ŝ' => 'Ŝ', -'ŝ' => 'ŝ', -'Ş' => 'Ş', -'ş' => 'ş', -'Š' => 'Š', -'š' => 'š', -'Ţ' => 'Ţ', -'ţ' => 'ţ', -'Ť' => 'Ť', -'ť' => 'ť', -'Ũ' => 'Ũ', -'ũ' => 'ũ', -'Ū' => 'Ū', -'ū' => 'ū', -'Ŭ' => 'Ŭ', -'ŭ' => 'ŭ', -'Ů' => 'Ů', -'ů' => 'ů', -'Ű' => 'Ű', -'ű' => 'ű', -'Ų' => 'Ų', -'ų' => 'ų', -'Ŵ' => 'Ŵ', -'ŵ' => 'ŵ', -'Ŷ' => 'Ŷ', -'ŷ' => 'ŷ', -'Ÿ' => 'Ÿ', -'Ź' => 'Ź', -'ź' => 'ź', -'Ż' => 'Ż', -'ż' => 'ż', -'Ž' => 'Ž', -'ž' => 'ž', -'Ơ' => 'Ơ', -'ơ' => 'ơ', -'Ư' => 'Ư', -'ư' => 'ư', -'Ǎ' => 'Ǎ', -'ǎ' => 'ǎ', -'Ǐ' => 'Ǐ', -'ǐ' => 'ǐ', -'Ǒ' => 'Ǒ', -'ǒ' => 'ǒ', -'Ǔ' => 'Ǔ', -'ǔ' => 'ǔ', -'Ǖ' => 'Ǖ', -'ǖ' => 'ǖ', -'Ǘ' => 'Ǘ', -'ǘ' => 'ǘ', -'Ǚ' => 'Ǚ', -'ǚ' => 'ǚ', -'Ǜ' => 'Ǜ', -'ǜ' => 'ǜ', -'Ǟ' => 'Ǟ', -'ǟ' => 'ǟ', -'Ǡ' => 'Ǡ', -'ǡ' => 'ǡ', -'Ǣ' => 'Ǣ', -'ǣ' => 'ǣ', -'Ǧ' => 'Ǧ', -'ǧ' => 'ǧ', -'Ǩ' => 'Ǩ', -'ǩ' => 'ǩ', -'Ǫ' => 'Ǫ', -'ǫ' => 'ǫ', -'Ǭ' => 'Ǭ', -'ǭ' => 'ǭ', -'Ǯ' => 'Ǯ', -'ǯ' => 'ǯ', -'ǰ' => 'ǰ', -'Ǵ' => 'Ǵ', -'ǵ' => 'ǵ', -'Ǹ' => 'Ǹ', -'ǹ' => 'ǹ', -'Ǻ' => 'Ǻ', -'ǻ' => 'ǻ', -'Ǽ' => 'Ǽ', -'ǽ' => 'ǽ', -'Ǿ' => 'Ǿ', -'ǿ' => 'ǿ', -'Ȁ' => 'Ȁ', -'ȁ' => 'ȁ', -'Ȃ' => 'Ȃ', -'ȃ' => 'ȃ', -'Ȅ' => 'Ȅ', -'ȅ' => 'ȅ', -'Ȇ' => 'Ȇ', -'ȇ' => 'ȇ', -'Ȉ' => 'Ȉ', -'ȉ' => 'ȉ', -'Ȋ' => 'Ȋ', -'ȋ' => 'ȋ', -'Ȍ' => 'Ȍ', -'ȍ' => 'ȍ', -'Ȏ' => 'Ȏ', -'ȏ' => 'ȏ', -'Ȑ' => 'Ȑ', -'ȑ' => 'ȑ', -'Ȓ' => 'Ȓ', -'ȓ' => 'ȓ', -'Ȕ' => 'Ȕ', -'ȕ' => 'ȕ', -'Ȗ' => 'Ȗ', -'ȗ' => 'ȗ', -'Ș' => 'Ș', -'ș' => 'ș', -'Ț' => 'Ț', -'ț' => 'ț', -'Ȟ' => 'Ȟ', -'ȟ' => 'ȟ', -'Ȧ' => 'Ȧ', -'ȧ' => 'ȧ', -'Ȩ' => 'Ȩ', -'ȩ' => 'ȩ', -'Ȫ' => 'Ȫ', -'ȫ' => 'ȫ', -'Ȭ' => 'Ȭ', -'ȭ' => 'ȭ', -'Ȯ' => 'Ȯ', -'ȯ' => 'ȯ', -'Ȱ' => 'Ȱ', -'ȱ' => 'ȱ', -'Ȳ' => 'Ȳ', -'ȳ' => 'ȳ', -'΅' => '΅', -'Ά' => 'Ά', -'Έ' => 'Έ', -'Ή' => 'Ή', -'Ί' => 'Ί', -'Ό' => 'Ό', -'Ύ' => 'Ύ', -'Ώ' => 'Ώ', -'ΐ' => 'ΐ', -'Ϊ' => 'Ϊ', -'Ϋ' => 'Ϋ', -'ά' => 'ά', -'έ' => 'έ', -'ή' => 'ή', -'ί' => 'ί', -'ΰ' => 'ΰ', -'ϊ' => 'ϊ', -'ϋ' => 'ϋ', -'ό' => 'ό', -'ύ' => 'ύ', -'ώ' => 'ώ', -'ϓ' => 'ϓ', -'ϔ' => 'ϔ', -'Ѐ' => 'Ѐ', -'Ё' => 'Ё', -'Ѓ' => 'Ѓ', -'Ї' => 'Ї', -'Ќ' => 'Ќ', -'Ѝ' => 'Ѝ', -'Ў' => 'Ў', -'Й' => 'Й', -'й' => 'й', -'ѐ' => 'ѐ', -'ё' => 'ё', -'ѓ' => 'ѓ', -'ї' => 'ї', -'ќ' => 'ќ', -'ѝ' => 'ѝ', -'ў' => 'ў', -'Ѷ' => 'Ѷ', -'ѷ' => 'ѷ', -'Ӂ' => 'Ӂ', -'ӂ' => 'ӂ', -'Ӑ' => 'Ӑ', -'ӑ' => 'ӑ', -'Ӓ' => 'Ӓ', -'ӓ' => 'ӓ', -'Ӗ' => 'Ӗ', -'ӗ' => 'ӗ', -'Ӛ' => 'Ӛ', -'ӛ' => 'ӛ', -'Ӝ' => 'Ӝ', -'ӝ' => 'ӝ', -'Ӟ' => 'Ӟ', -'ӟ' => 'ӟ', -'Ӣ' => 'Ӣ', -'ӣ' => 'ӣ', -'Ӥ' => 'Ӥ', -'ӥ' => 'ӥ', -'Ӧ' => 'Ӧ', -'ӧ' => 'ӧ', -'Ӫ' => 'Ӫ', -'ӫ' => 'ӫ', -'Ӭ' => 'Ӭ', -'ӭ' => 'ӭ', -'Ӯ' => 'Ӯ', -'ӯ' => 'ӯ', -'Ӱ' => 'Ӱ', -'ӱ' => 'ӱ', -'Ӳ' => 'Ӳ', -'ӳ' => 'ӳ', -'Ӵ' => 'Ӵ', -'ӵ' => 'ӵ', -'Ӹ' => 'Ӹ', -'ӹ' => 'ӹ', -'آ' => 'آ', -'أ' => 'أ', -'ؤ' => 'ؤ', -'إ' => 'إ', -'ئ' => 'ئ', -'ۀ' => 'ۀ', -'ۂ' => 'ۂ', -'ۓ' => 'ۓ', -'ऩ' => 'ऩ', -'ऱ' => 'ऱ', -'ऴ' => 'ऴ', -'ো' => 'ো', -'ৌ' => 'ৌ', -'ୈ' => 'ୈ', -'ୋ' => 'ୋ', -'ୌ' => 'ୌ', -'ஔ' => 'ஔ', -'ொ' => 'ொ', -'ோ' => 'ோ', -'ௌ' => 'ௌ', -'ై' => 'ై', -'ೀ' => 'ೀ', -'ೇ' => 'ೇ', -'ೈ' => 'ೈ', -'ೊ' => 'ೊ', -'ೋ' => 'ೋ', -'ൊ' => 'ൊ', -'ോ' => 'ോ', -'ൌ' => 'ൌ', -'ේ' => 'ේ', -'ො' => 'ො', -'ෝ' => 'ෝ', -'ෞ' => 'ෞ', -'ဦ' => 'ဦ', -'ᬆ' => 'ᬆ', -'ᬈ' => 'ᬈ', -'ᬊ' => 'ᬊ', -'ᬌ' => 'ᬌ', -'ᬎ' => 'ᬎ', -'ᬒ' => 'ᬒ', -'ᬻ' => 'ᬻ', -'ᬽ' => 'ᬽ', -'ᭀ' => 'ᭀ', -'ᭁ' => 'ᭁ', -'ᭃ' => 'ᭃ', -'Ḁ' => 'Ḁ', -'ḁ' => 'ḁ', -'Ḃ' => 'Ḃ', -'ḃ' => 'ḃ', -'Ḅ' => 'Ḅ', -'ḅ' => 'ḅ', -'Ḇ' => 'Ḇ', -'ḇ' => 'ḇ', -'Ḉ' => 'Ḉ', -'ḉ' => 'ḉ', -'Ḋ' => 'Ḋ', -'ḋ' => 'ḋ', -'Ḍ' => 'Ḍ', -'ḍ' => 'ḍ', -'Ḏ' => 'Ḏ', -'ḏ' => 'ḏ', -'Ḑ' => 'Ḑ', -'ḑ' => 'ḑ', -'Ḓ' => 'Ḓ', -'ḓ' => 'ḓ', -'Ḕ' => 'Ḕ', -'ḕ' => 'ḕ', -'Ḗ' => 'Ḗ', -'ḗ' => 'ḗ', -'Ḙ' => 'Ḙ', -'ḙ' => 'ḙ', -'Ḛ' => 'Ḛ', -'ḛ' => 'ḛ', -'Ḝ' => 'Ḝ', -'ḝ' => 'ḝ', -'Ḟ' => 'Ḟ', -'ḟ' => 'ḟ', -'Ḡ' => 'Ḡ', -'ḡ' => 'ḡ', -'Ḣ' => 'Ḣ', -'ḣ' => 'ḣ', -'Ḥ' => 'Ḥ', -'ḥ' => 'ḥ', -'Ḧ' => 'Ḧ', -'ḧ' => 'ḧ', -'Ḩ' => 'Ḩ', -'ḩ' => 'ḩ', -'Ḫ' => 'Ḫ', -'ḫ' => 'ḫ', -'Ḭ' => 'Ḭ', -'ḭ' => 'ḭ', -'Ḯ' => 'Ḯ', -'ḯ' => 'ḯ', -'Ḱ' => 'Ḱ', -'ḱ' => 'ḱ', -'Ḳ' => 'Ḳ', -'ḳ' => 'ḳ', -'Ḵ' => 'Ḵ', -'ḵ' => 'ḵ', -'Ḷ' => 'Ḷ', -'ḷ' => 'ḷ', -'Ḹ' => 'Ḹ', -'ḹ' => 'ḹ', -'Ḻ' => 'Ḻ', -'ḻ' => 'ḻ', -'Ḽ' => 'Ḽ', -'ḽ' => 'ḽ', -'Ḿ' => 'Ḿ', -'ḿ' => 'ḿ', -'Ṁ' => 'Ṁ', -'ṁ' => 'ṁ', -'Ṃ' => 'Ṃ', -'ṃ' => 'ṃ', -'Ṅ' => 'Ṅ', -'ṅ' => 'ṅ', -'Ṇ' => 'Ṇ', -'ṇ' => 'ṇ', -'Ṉ' => 'Ṉ', -'ṉ' => 'ṉ', -'Ṋ' => 'Ṋ', -'ṋ' => 'ṋ', -'Ṍ' => 'Ṍ', -'ṍ' => 'ṍ', -'Ṏ' => 'Ṏ', -'ṏ' => 'ṏ', -'Ṑ' => 'Ṑ', -'ṑ' => 'ṑ', -'Ṓ' => 'Ṓ', -'ṓ' => 'ṓ', -'Ṕ' => 'Ṕ', -'ṕ' => 'ṕ', -'Ṗ' => 'Ṗ', -'ṗ' => 'ṗ', -'Ṙ' => 'Ṙ', -'ṙ' => 'ṙ', -'Ṛ' => 'Ṛ', -'ṛ' => 'ṛ', -'Ṝ' => 'Ṝ', -'ṝ' => 'ṝ', -'Ṟ' => 'Ṟ', -'ṟ' => 'ṟ', -'Ṡ' => 'Ṡ', -'ṡ' => 'ṡ', -'Ṣ' => 'Ṣ', -'ṣ' => 'ṣ', -'Ṥ' => 'Ṥ', -'ṥ' => 'ṥ', -'Ṧ' => 'Ṧ', -'ṧ' => 'ṧ', -'Ṩ' => 'Ṩ', -'ṩ' => 'ṩ', -'Ṫ' => 'Ṫ', -'ṫ' => 'ṫ', -'Ṭ' => 'Ṭ', -'ṭ' => 'ṭ', -'Ṯ' => 'Ṯ', -'ṯ' => 'ṯ', -'Ṱ' => 'Ṱ', -'ṱ' => 'ṱ', -'Ṳ' => 'Ṳ', -'ṳ' => 'ṳ', -'Ṵ' => 'Ṵ', -'ṵ' => 'ṵ', -'Ṷ' => 'Ṷ', -'ṷ' => 'ṷ', -'Ṹ' => 'Ṹ', -'ṹ' => 'ṹ', -'Ṻ' => 'Ṻ', -'ṻ' => 'ṻ', -'Ṽ' => 'Ṽ', -'ṽ' => 'ṽ', -'Ṿ' => 'Ṿ', -'ṿ' => 'ṿ', -'Ẁ' => 'Ẁ', -'ẁ' => 'ẁ', -'Ẃ' => 'Ẃ', -'ẃ' => 'ẃ', -'Ẅ' => 'Ẅ', -'ẅ' => 'ẅ', -'Ẇ' => 'Ẇ', -'ẇ' => 'ẇ', -'Ẉ' => 'Ẉ', -'ẉ' => 'ẉ', -'Ẋ' => 'Ẋ', -'ẋ' => 'ẋ', -'Ẍ' => 'Ẍ', -'ẍ' => 'ẍ', -'Ẏ' => 'Ẏ', -'ẏ' => 'ẏ', -'Ẑ' => 'Ẑ', -'ẑ' => 'ẑ', -'Ẓ' => 'Ẓ', -'ẓ' => 'ẓ', -'Ẕ' => 'Ẕ', -'ẕ' => 'ẕ', -'ẖ' => 'ẖ', -'ẗ' => 'ẗ', -'ẘ' => 'ẘ', -'ẙ' => 'ẙ', -'ẛ' => 'ẛ', -'Ạ' => 'Ạ', -'ạ' => 'ạ', -'Ả' => 'Ả', -'ả' => 'ả', -'Ấ' => 'Ấ', -'ấ' => 'ấ', -'Ầ' => 'Ầ', -'ầ' => 'ầ', -'Ẩ' => 'Ẩ', -'ẩ' => 'ẩ', -'Ẫ' => 'Ẫ', -'ẫ' => 'ẫ', -'Ậ' => 'Ậ', -'ậ' => 'ậ', -'Ắ' => 'Ắ', -'ắ' => 'ắ', -'Ằ' => 'Ằ', -'ằ' => 'ằ', -'Ẳ' => 'Ẳ', -'ẳ' => 'ẳ', -'Ẵ' => 'Ẵ', -'ẵ' => 'ẵ', -'Ặ' => 'Ặ', -'ặ' => 'ặ', -'Ẹ' => 'Ẹ', -'ẹ' => 'ẹ', -'Ẻ' => 'Ẻ', -'ẻ' => 'ẻ', -'Ẽ' => 'Ẽ', -'ẽ' => 'ẽ', -'Ế' => 'Ế', -'ế' => 'ế', -'Ề' => 'Ề', -'ề' => 'ề', -'Ể' => 'Ể', -'ể' => 'ể', -'Ễ' => 'Ễ', -'ễ' => 'ễ', -'Ệ' => 'Ệ', -'ệ' => 'ệ', -'Ỉ' => 'Ỉ', -'ỉ' => 'ỉ', -'Ị' => 'Ị', -'ị' => 'ị', -'Ọ' => 'Ọ', -'ọ' => 'ọ', -'Ỏ' => 'Ỏ', -'ỏ' => 'ỏ', -'Ố' => 'Ố', -'ố' => 'ố', -'Ồ' => 'Ồ', -'ồ' => 'ồ', -'Ổ' => 'Ổ', -'ổ' => 'ổ', -'Ỗ' => 'Ỗ', -'ỗ' => 'ỗ', -'Ộ' => 'Ộ', -'ộ' => 'ộ', -'Ớ' => 'Ớ', -'ớ' => 'ớ', -'Ờ' => 'Ờ', -'ờ' => 'ờ', -'Ở' => 'Ở', -'ở' => 'ở', -'Ỡ' => 'Ỡ', -'ỡ' => 'ỡ', -'Ợ' => 'Ợ', -'ợ' => 'ợ', -'Ụ' => 'Ụ', -'ụ' => 'ụ', -'Ủ' => 'Ủ', -'ủ' => 'ủ', -'Ứ' => 'Ứ', -'ứ' => 'ứ', -'Ừ' => 'Ừ', -'ừ' => 'ừ', -'Ử' => 'Ử', -'ử' => 'ử', -'Ữ' => 'Ữ', -'ữ' => 'ữ', -'Ự' => 'Ự', -'ự' => 'ự', -'Ỳ' => 'Ỳ', -'ỳ' => 'ỳ', -'Ỵ' => 'Ỵ', -'ỵ' => 'ỵ', -'Ỷ' => 'Ỷ', -'ỷ' => 'ỷ', -'Ỹ' => 'Ỹ', -'ỹ' => 'ỹ', -'ἀ' => 'ἀ', -'ἁ' => 'ἁ', -'ἂ' => 'ἂ', -'ἃ' => 'ἃ', -'ἄ' => 'ἄ', -'ἅ' => 'ἅ', -'ἆ' => 'ἆ', -'ἇ' => 'ἇ', -'Ἀ' => 'Ἀ', -'Ἁ' => 'Ἁ', -'Ἂ' => 'Ἂ', -'Ἃ' => 'Ἃ', -'Ἄ' => 'Ἄ', -'Ἅ' => 'Ἅ', -'Ἆ' => 'Ἆ', -'Ἇ' => 'Ἇ', -'ἐ' => 'ἐ', -'ἑ' => 'ἑ', -'ἒ' => 'ἒ', -'ἓ' => 'ἓ', -'ἔ' => 'ἔ', -'ἕ' => 'ἕ', -'Ἐ' => 'Ἐ', -'Ἑ' => 'Ἑ', -'Ἒ' => 'Ἒ', -'Ἓ' => 'Ἓ', -'Ἔ' => 'Ἔ', -'Ἕ' => 'Ἕ', -'ἠ' => 'ἠ', -'ἡ' => 'ἡ', -'ἢ' => 'ἢ', -'ἣ' => 'ἣ', -'ἤ' => 'ἤ', -'ἥ' => 'ἥ', -'ἦ' => 'ἦ', -'ἧ' => 'ἧ', -'Ἠ' => 'Ἠ', -'Ἡ' => 'Ἡ', -'Ἢ' => 'Ἢ', -'Ἣ' => 'Ἣ', -'Ἤ' => 'Ἤ', -'Ἥ' => 'Ἥ', -'Ἦ' => 'Ἦ', -'Ἧ' => 'Ἧ', -'ἰ' => 'ἰ', -'ἱ' => 'ἱ', -'ἲ' => 'ἲ', -'ἳ' => 'ἳ', -'ἴ' => 'ἴ', -'ἵ' => 'ἵ', -'ἶ' => 'ἶ', -'ἷ' => 'ἷ', -'Ἰ' => 'Ἰ', -'Ἱ' => 'Ἱ', -'Ἲ' => 'Ἲ', -'Ἳ' => 'Ἳ', -'Ἴ' => 'Ἴ', -'Ἵ' => 'Ἵ', -'Ἶ' => 'Ἶ', -'Ἷ' => 'Ἷ', -'ὀ' => 'ὀ', -'ὁ' => 'ὁ', -'ὂ' => 'ὂ', -'ὃ' => 'ὃ', -'ὄ' => 'ὄ', -'ὅ' => 'ὅ', -'Ὀ' => 'Ὀ', -'Ὁ' => 'Ὁ', -'Ὂ' => 'Ὂ', -'Ὃ' => 'Ὃ', -'Ὄ' => 'Ὄ', -'Ὅ' => 'Ὅ', -'ὐ' => 'ὐ', -'ὑ' => 'ὑ', -'ὒ' => 'ὒ', -'ὓ' => 'ὓ', -'ὔ' => 'ὔ', -'ὕ' => 'ὕ', -'ὖ' => 'ὖ', -'ὗ' => 'ὗ', -'Ὑ' => 'Ὑ', -'Ὓ' => 'Ὓ', -'Ὕ' => 'Ὕ', -'Ὗ' => 'Ὗ', -'ὠ' => 'ὠ', -'ὡ' => 'ὡ', -'ὢ' => 'ὢ', -'ὣ' => 'ὣ', -'ὤ' => 'ὤ', -'ὥ' => 'ὥ', -'ὦ' => 'ὦ', -'ὧ' => 'ὧ', -'Ὠ' => 'Ὠ', -'Ὡ' => 'Ὡ', -'Ὢ' => 'Ὢ', -'Ὣ' => 'Ὣ', -'Ὤ' => 'Ὤ', -'Ὥ' => 'Ὥ', -'Ὦ' => 'Ὦ', -'Ὧ' => 'Ὧ', -'ὰ' => 'ὰ', -'ὲ' => 'ὲ', -'ὴ' => 'ὴ', -'ὶ' => 'ὶ', -'ὸ' => 'ὸ', -'ὺ' => 'ὺ', -'ὼ' => 'ὼ', -'ᾀ' => 'ᾀ', -'ᾁ' => 'ᾁ', -'ᾂ' => 'ᾂ', -'ᾃ' => 'ᾃ', -'ᾄ' => 'ᾄ', -'ᾅ' => 'ᾅ', -'ᾆ' => 'ᾆ', -'ᾇ' => 'ᾇ', -'ᾈ' => 'ᾈ', -'ᾉ' => 'ᾉ', -'ᾊ' => 'ᾊ', -'ᾋ' => 'ᾋ', -'ᾌ' => 'ᾌ', -'ᾍ' => 'ᾍ', -'ᾎ' => 'ᾎ', -'ᾏ' => 'ᾏ', -'ᾐ' => 'ᾐ', -'ᾑ' => 'ᾑ', -'ᾒ' => 'ᾒ', -'ᾓ' => 'ᾓ', -'ᾔ' => 'ᾔ', -'ᾕ' => 'ᾕ', -'ᾖ' => 'ᾖ', -'ᾗ' => 'ᾗ', -'ᾘ' => 'ᾘ', -'ᾙ' => 'ᾙ', -'ᾚ' => 'ᾚ', -'ᾛ' => 'ᾛ', -'ᾜ' => 'ᾜ', -'ᾝ' => 'ᾝ', -'ᾞ' => 'ᾞ', -'ᾟ' => 'ᾟ', -'ᾠ' => 'ᾠ', -'ᾡ' => 'ᾡ', -'ᾢ' => 'ᾢ', -'ᾣ' => 'ᾣ', -'ᾤ' => 'ᾤ', -'ᾥ' => 'ᾥ', -'ᾦ' => 'ᾦ', -'ᾧ' => 'ᾧ', -'ᾨ' => 'ᾨ', -'ᾩ' => 'ᾩ', -'ᾪ' => 'ᾪ', -'ᾫ' => 'ᾫ', -'ᾬ' => 'ᾬ', -'ᾭ' => 'ᾭ', -'ᾮ' => 'ᾮ', -'ᾯ' => 'ᾯ', -'ᾰ' => 'ᾰ', -'ᾱ' => 'ᾱ', -'ᾲ' => 'ᾲ', -'ᾳ' => 'ᾳ', -'ᾴ' => 'ᾴ', -'ᾶ' => 'ᾶ', -'ᾷ' => 'ᾷ', -'Ᾰ' => 'Ᾰ', -'Ᾱ' => 'Ᾱ', -'Ὰ' => 'Ὰ', -'ᾼ' => 'ᾼ', -'῁' => '῁', -'ῂ' => 'ῂ', -'ῃ' => 'ῃ', -'ῄ' => 'ῄ', -'ῆ' => 'ῆ', -'ῇ' => 'ῇ', -'Ὲ' => 'Ὲ', -'Ὴ' => 'Ὴ', -'ῌ' => 'ῌ', -'῍' => '῍', -'῎' => '῎', -'῏' => '῏', -'ῐ' => 'ῐ', -'ῑ' => 'ῑ', -'ῒ' => 'ῒ', -'ῖ' => 'ῖ', -'ῗ' => 'ῗ', -'Ῐ' => 'Ῐ', -'Ῑ' => 'Ῑ', -'Ὶ' => 'Ὶ', -'῝' => '῝', -'῞' => '῞', -'῟' => '῟', -'ῠ' => 'ῠ', -'ῡ' => 'ῡ', -'ῢ' => 'ῢ', -'ῤ' => 'ῤ', -'ῥ' => 'ῥ', -'ῦ' => 'ῦ', -'ῧ' => 'ῧ', -'Ῠ' => 'Ῠ', -'Ῡ' => 'Ῡ', -'Ὺ' => 'Ὺ', -'Ῥ' => 'Ῥ', -'῭' => '῭', -'ῲ' => 'ῲ', -'ῳ' => 'ῳ', -'ῴ' => 'ῴ', -'ῶ' => 'ῶ', -'ῷ' => 'ῷ', -'Ὸ' => 'Ὸ', -'Ὼ' => 'Ὼ', -'ῼ' => 'ῼ', -'↚' => '↚', -'↛' => '↛', -'↮' => '↮', -'⇍' => '⇍', -'⇎' => '⇎', -'⇏' => '⇏', -'∄' => '∄', -'∉' => '∉', -'∌' => '∌', -'∤' => '∤', -'∦' => '∦', -'≁' => '≁', -'≄' => '≄', -'≇' => '≇', -'≉' => '≉', -'≠' => '≠', -'≢' => '≢', -'≭' => '≭', -'≮' => '≮', -'≯' => '≯', -'≰' => '≰', -'≱' => '≱', -'≴' => '≴', -'≵' => '≵', -'≸' => '≸', -'≹' => '≹', -'⊀' => '⊀', -'⊁' => '⊁', -'⊄' => '⊄', -'⊅' => '⊅', -'⊈' => '⊈', -'⊉' => '⊉', -'⊬' => '⊬', -'⊭' => '⊭', -'⊮' => '⊮', -'⊯' => '⊯', -'⋠' => '⋠', -'⋡' => '⋡', -'⋢' => '⋢', -'⋣' => '⋣', -'⋪' => '⋪', -'⋫' => '⋫', -'⋬' => '⋬', -'⋭' => '⋭', -'が' => 'が', -'ぎ' => 'ぎ', -'ぐ' => 'ぐ', -'げ' => 'げ', -'ご' => 'ご', -'ざ' => 'ざ', -'じ' => 'じ', -'ず' => 'ず', -'ぜ' => 'ぜ', -'ぞ' => 'ぞ', -'だ' => 'だ', -'ぢ' => 'ぢ', -'づ' => 'づ', -'で' => 'で', -'ど' => 'ど', -'ば' => 'ば', -'ぱ' => 'ぱ', -'び' => 'び', -'ぴ' => 'ぴ', -'ぶ' => 'ぶ', -'ぷ' => 'ぷ', -'べ' => 'べ', -'ぺ' => 'ぺ', -'ぼ' => 'ぼ', -'ぽ' => 'ぽ', -'ゔ' => 'ゔ', -'ゞ' => 'ゞ', -'ガ' => 'ガ', -'ギ' => 'ギ', -'グ' => 'グ', -'ゲ' => 'ゲ', -'ゴ' => 'ゴ', -'ザ' => 'ザ', -'ジ' => 'ジ', -'ズ' => 'ズ', -'ゼ' => 'ゼ', -'ゾ' => 'ゾ', -'ダ' => 'ダ', -'ヂ' => 'ヂ', -'ヅ' => 'ヅ', -'デ' => 'デ', -'ド' => 'ド', -'バ' => 'バ', -'パ' => 'パ', -'ビ' => 'ビ', -'ピ' => 'ピ', -'ブ' => 'ブ', -'プ' => 'プ', -'ベ' => 'ベ', -'ペ' => 'ペ', -'ボ' => 'ボ', -'ポ' => 'ポ', -'ヴ' => 'ヴ', -'ヷ' => 'ヷ', -'ヸ' => 'ヸ', -'ヹ' => 'ヹ', -'ヺ' => 'ヺ', -'ヾ' => 'ヾ', -'𑂚' => '𑂚', -'𑂜' => '𑂜', -'𑂫' => '𑂫', -'𑄮' => '𑄮', -'𑄯' => '𑄯', -'𑍋' => '𑍋', -'𑍌' => '𑍌', -'𑒻' => '𑒻', -'𑒼' => '𑒼', -'𑒾' => '𑒾', -'𑖺' => '𑖺', -'𑖻' => '𑖻', -'𑤸' => '𑤸', -); diff --git a/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php deleted file mode 100644 index c09566e4c..000000000 --- a/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php +++ /dev/null @@ -1,2065 +0,0 @@ - 'À', -'Á' => 'Á', -'Â' => 'Â', -'Ã' => 'Ã', -'Ä' => 'Ä', -'Å' => 'Å', -'Ç' => 'Ç', -'È' => 'È', -'É' => 'É', -'Ê' => 'Ê', -'Ë' => 'Ë', -'Ì' => 'Ì', -'Í' => 'Í', -'Î' => 'Î', -'Ï' => 'Ï', -'Ñ' => 'Ñ', -'Ò' => 'Ò', -'Ó' => 'Ó', -'Ô' => 'Ô', -'Õ' => 'Õ', -'Ö' => 'Ö', -'Ù' => 'Ù', -'Ú' => 'Ú', -'Û' => 'Û', -'Ü' => 'Ü', -'Ý' => 'Ý', -'à' => 'à', -'á' => 'á', -'â' => 'â', -'ã' => 'ã', -'ä' => 'ä', -'å' => 'å', -'ç' => 'ç', -'è' => 'è', -'é' => 'é', -'ê' => 'ê', -'ë' => 'ë', -'ì' => 'ì', -'í' => 'í', -'î' => 'î', -'ï' => 'ï', -'ñ' => 'ñ', -'ò' => 'ò', -'ó' => 'ó', -'ô' => 'ô', -'õ' => 'õ', -'ö' => 'ö', -'ù' => 'ù', -'ú' => 'ú', -'û' => 'û', -'ü' => 'ü', -'ý' => 'ý', -'ÿ' => 'ÿ', -'Ā' => 'Ā', -'ā' => 'ā', -'Ă' => 'Ă', -'ă' => 'ă', -'Ą' => 'Ą', -'ą' => 'ą', -'Ć' => 'Ć', -'ć' => 'ć', -'Ĉ' => 'Ĉ', -'ĉ' => 'ĉ', -'Ċ' => 'Ċ', -'ċ' => 'ċ', -'Č' => 'Č', -'č' => 'č', -'Ď' => 'Ď', -'ď' => 'ď', -'Ē' => 'Ē', -'ē' => 'ē', -'Ĕ' => 'Ĕ', -'ĕ' => 'ĕ', -'Ė' => 'Ė', -'ė' => 'ė', -'Ę' => 'Ę', -'ę' => 'ę', -'Ě' => 'Ě', -'ě' => 'ě', -'Ĝ' => 'Ĝ', -'ĝ' => 'ĝ', -'Ğ' => 'Ğ', -'ğ' => 'ğ', -'Ġ' => 'Ġ', -'ġ' => 'ġ', -'Ģ' => 'Ģ', -'ģ' => 'ģ', -'Ĥ' => 'Ĥ', -'ĥ' => 'ĥ', -'Ĩ' => 'Ĩ', -'ĩ' => 'ĩ', -'Ī' => 'Ī', -'ī' => 'ī', -'Ĭ' => 'Ĭ', -'ĭ' => 'ĭ', -'Į' => 'Į', -'į' => 'į', -'İ' => 'İ', -'Ĵ' => 'Ĵ', -'ĵ' => 'ĵ', -'Ķ' => 'Ķ', -'ķ' => 'ķ', -'Ĺ' => 'Ĺ', -'ĺ' => 'ĺ', -'Ļ' => 'Ļ', -'ļ' => 'ļ', -'Ľ' => 'Ľ', -'ľ' => 'ľ', -'Ń' => 'Ń', -'ń' => 'ń', -'Ņ' => 'Ņ', -'ņ' => 'ņ', -'Ň' => 'Ň', -'ň' => 'ň', -'Ō' => 'Ō', -'ō' => 'ō', -'Ŏ' => 'Ŏ', -'ŏ' => 'ŏ', -'Ő' => 'Ő', -'ő' => 'ő', -'Ŕ' => 'Ŕ', -'ŕ' => 'ŕ', -'Ŗ' => 'Ŗ', -'ŗ' => 'ŗ', -'Ř' => 'Ř', -'ř' => 'ř', -'Ś' => 'Ś', -'ś' => 'ś', -'Ŝ' => 'Ŝ', -'ŝ' => 'ŝ', -'Ş' => 'Ş', -'ş' => 'ş', -'Š' => 'Š', -'š' => 'š', -'Ţ' => 'Ţ', -'ţ' => 'ţ', -'Ť' => 'Ť', -'ť' => 'ť', -'Ũ' => 'Ũ', -'ũ' => 'ũ', -'Ū' => 'Ū', -'ū' => 'ū', -'Ŭ' => 'Ŭ', -'ŭ' => 'ŭ', -'Ů' => 'Ů', -'ů' => 'ů', -'Ű' => 'Ű', -'ű' => 'ű', -'Ų' => 'Ų', -'ų' => 'ų', -'Ŵ' => 'Ŵ', -'ŵ' => 'ŵ', -'Ŷ' => 'Ŷ', -'ŷ' => 'ŷ', -'Ÿ' => 'Ÿ', -'Ź' => 'Ź', -'ź' => 'ź', -'Ż' => 'Ż', -'ż' => 'ż', -'Ž' => 'Ž', -'ž' => 'ž', -'Ơ' => 'Ơ', -'ơ' => 'ơ', -'Ư' => 'Ư', -'ư' => 'ư', -'Ǎ' => 'Ǎ', -'ǎ' => 'ǎ', -'Ǐ' => 'Ǐ', -'ǐ' => 'ǐ', -'Ǒ' => 'Ǒ', -'ǒ' => 'ǒ', -'Ǔ' => 'Ǔ', -'ǔ' => 'ǔ', -'Ǖ' => 'Ǖ', -'ǖ' => 'ǖ', -'Ǘ' => 'Ǘ', -'ǘ' => 'ǘ', -'Ǚ' => 'Ǚ', -'ǚ' => 'ǚ', -'Ǜ' => 'Ǜ', -'ǜ' => 'ǜ', -'Ǟ' => 'Ǟ', -'ǟ' => 'ǟ', -'Ǡ' => 'Ǡ', -'ǡ' => 'ǡ', -'Ǣ' => 'Ǣ', -'ǣ' => 'ǣ', -'Ǧ' => 'Ǧ', -'ǧ' => 'ǧ', -'Ǩ' => 'Ǩ', -'ǩ' => 'ǩ', -'Ǫ' => 'Ǫ', -'ǫ' => 'ǫ', -'Ǭ' => 'Ǭ', -'ǭ' => 'ǭ', -'Ǯ' => 'Ǯ', -'ǯ' => 'ǯ', -'ǰ' => 'ǰ', -'Ǵ' => 'Ǵ', -'ǵ' => 'ǵ', -'Ǹ' => 'Ǹ', -'ǹ' => 'ǹ', -'Ǻ' => 'Ǻ', -'ǻ' => 'ǻ', -'Ǽ' => 'Ǽ', -'ǽ' => 'ǽ', -'Ǿ' => 'Ǿ', -'ǿ' => 'ǿ', -'Ȁ' => 'Ȁ', -'ȁ' => 'ȁ', -'Ȃ' => 'Ȃ', -'ȃ' => 'ȃ', -'Ȅ' => 'Ȅ', -'ȅ' => 'ȅ', -'Ȇ' => 'Ȇ', -'ȇ' => 'ȇ', -'Ȉ' => 'Ȉ', -'ȉ' => 'ȉ', -'Ȋ' => 'Ȋ', -'ȋ' => 'ȋ', -'Ȍ' => 'Ȍ', -'ȍ' => 'ȍ', -'Ȏ' => 'Ȏ', -'ȏ' => 'ȏ', -'Ȑ' => 'Ȑ', -'ȑ' => 'ȑ', -'Ȓ' => 'Ȓ', -'ȓ' => 'ȓ', -'Ȕ' => 'Ȕ', -'ȕ' => 'ȕ', -'Ȗ' => 'Ȗ', -'ȗ' => 'ȗ', -'Ș' => 'Ș', -'ș' => 'ș', -'Ț' => 'Ț', -'ț' => 'ț', -'Ȟ' => 'Ȟ', -'ȟ' => 'ȟ', -'Ȧ' => 'Ȧ', -'ȧ' => 'ȧ', -'Ȩ' => 'Ȩ', -'ȩ' => 'ȩ', -'Ȫ' => 'Ȫ', -'ȫ' => 'ȫ', -'Ȭ' => 'Ȭ', -'ȭ' => 'ȭ', -'Ȯ' => 'Ȯ', -'ȯ' => 'ȯ', -'Ȱ' => 'Ȱ', -'ȱ' => 'ȱ', -'Ȳ' => 'Ȳ', -'ȳ' => 'ȳ', -'̀' => '̀', -'́' => '́', -'̓' => '̓', -'̈́' => '̈́', -'ʹ' => 'ʹ', -';' => ';', -'΅' => '΅', -'Ά' => 'Ά', -'·' => '·', -'Έ' => 'Έ', -'Ή' => 'Ή', -'Ί' => 'Ί', -'Ό' => 'Ό', -'Ύ' => 'Ύ', -'Ώ' => 'Ώ', -'ΐ' => 'ΐ', -'Ϊ' => 'Ϊ', -'Ϋ' => 'Ϋ', -'ά' => 'ά', -'έ' => 'έ', -'ή' => 'ή', -'ί' => 'ί', -'ΰ' => 'ΰ', -'ϊ' => 'ϊ', -'ϋ' => 'ϋ', -'ό' => 'ό', -'ύ' => 'ύ', -'ώ' => 'ώ', -'ϓ' => 'ϓ', -'ϔ' => 'ϔ', -'Ѐ' => 'Ѐ', -'Ё' => 'Ё', -'Ѓ' => 'Ѓ', -'Ї' => 'Ї', -'Ќ' => 'Ќ', -'Ѝ' => 'Ѝ', -'Ў' => 'Ў', -'Й' => 'Й', -'й' => 'й', -'ѐ' => 'ѐ', -'ё' => 'ё', -'ѓ' => 'ѓ', -'ї' => 'ї', -'ќ' => 'ќ', -'ѝ' => 'ѝ', -'ў' => 'ў', -'Ѷ' => 'Ѷ', -'ѷ' => 'ѷ', -'Ӂ' => 'Ӂ', -'ӂ' => 'ӂ', -'Ӑ' => 'Ӑ', -'ӑ' => 'ӑ', -'Ӓ' => 'Ӓ', -'ӓ' => 'ӓ', -'Ӗ' => 'Ӗ', -'ӗ' => 'ӗ', -'Ӛ' => 'Ӛ', -'ӛ' => 'ӛ', -'Ӝ' => 'Ӝ', -'ӝ' => 'ӝ', -'Ӟ' => 'Ӟ', -'ӟ' => 'ӟ', -'Ӣ' => 'Ӣ', -'ӣ' => 'ӣ', -'Ӥ' => 'Ӥ', -'ӥ' => 'ӥ', -'Ӧ' => 'Ӧ', -'ӧ' => 'ӧ', -'Ӫ' => 'Ӫ', -'ӫ' => 'ӫ', -'Ӭ' => 'Ӭ', -'ӭ' => 'ӭ', -'Ӯ' => 'Ӯ', -'ӯ' => 'ӯ', -'Ӱ' => 'Ӱ', -'ӱ' => 'ӱ', -'Ӳ' => 'Ӳ', -'ӳ' => 'ӳ', -'Ӵ' => 'Ӵ', -'ӵ' => 'ӵ', -'Ӹ' => 'Ӹ', -'ӹ' => 'ӹ', -'آ' => 'آ', -'أ' => 'أ', -'ؤ' => 'ؤ', -'إ' => 'إ', -'ئ' => 'ئ', -'ۀ' => 'ۀ', -'ۂ' => 'ۂ', -'ۓ' => 'ۓ', -'ऩ' => 'ऩ', -'ऱ' => 'ऱ', -'ऴ' => 'ऴ', -'क़' => 'क़', -'ख़' => 'ख़', -'ग़' => 'ग़', -'ज़' => 'ज़', -'ड़' => 'ड़', -'ढ़' => 'ढ़', -'फ़' => 'फ़', -'य़' => 'य़', -'ো' => 'ো', -'ৌ' => 'ৌ', -'ড়' => 'ড়', -'ঢ়' => 'ঢ়', -'য়' => 'য়', -'ਲ਼' => 'ਲ਼', -'ਸ਼' => 'ਸ਼', -'ਖ਼' => 'ਖ਼', -'ਗ਼' => 'ਗ਼', -'ਜ਼' => 'ਜ਼', -'ਫ਼' => 'ਫ਼', -'ୈ' => 'ୈ', -'ୋ' => 'ୋ', -'ୌ' => 'ୌ', -'ଡ଼' => 'ଡ଼', -'ଢ଼' => 'ଢ଼', -'ஔ' => 'ஔ', -'ொ' => 'ொ', -'ோ' => 'ோ', -'ௌ' => 'ௌ', -'ై' => 'ై', -'ೀ' => 'ೀ', -'ೇ' => 'ೇ', -'ೈ' => 'ೈ', -'ೊ' => 'ೊ', -'ೋ' => 'ೋ', -'ൊ' => 'ൊ', -'ോ' => 'ോ', -'ൌ' => 'ൌ', -'ේ' => 'ේ', -'ො' => 'ො', -'ෝ' => 'ෝ', -'ෞ' => 'ෞ', -'གྷ' => 'གྷ', -'ཌྷ' => 'ཌྷ', -'དྷ' => 'དྷ', -'བྷ' => 'བྷ', -'ཛྷ' => 'ཛྷ', -'ཀྵ' => 'ཀྵ', -'ཱི' => 'ཱི', -'ཱུ' => 'ཱུ', -'ྲྀ' => 'ྲྀ', -'ླྀ' => 'ླྀ', -'ཱྀ' => 'ཱྀ', -'ྒྷ' => 'ྒྷ', -'ྜྷ' => 'ྜྷ', -'ྡྷ' => 'ྡྷ', -'ྦྷ' => 'ྦྷ', -'ྫྷ' => 'ྫྷ', -'ྐྵ' => 'ྐྵ', -'ဦ' => 'ဦ', -'ᬆ' => 'ᬆ', -'ᬈ' => 'ᬈ', -'ᬊ' => 'ᬊ', -'ᬌ' => 'ᬌ', -'ᬎ' => 'ᬎ', -'ᬒ' => 'ᬒ', -'ᬻ' => 'ᬻ', -'ᬽ' => 'ᬽ', -'ᭀ' => 'ᭀ', -'ᭁ' => 'ᭁ', -'ᭃ' => 'ᭃ', -'Ḁ' => 'Ḁ', -'ḁ' => 'ḁ', -'Ḃ' => 'Ḃ', -'ḃ' => 'ḃ', -'Ḅ' => 'Ḅ', -'ḅ' => 'ḅ', -'Ḇ' => 'Ḇ', -'ḇ' => 'ḇ', -'Ḉ' => 'Ḉ', -'ḉ' => 'ḉ', -'Ḋ' => 'Ḋ', -'ḋ' => 'ḋ', -'Ḍ' => 'Ḍ', -'ḍ' => 'ḍ', -'Ḏ' => 'Ḏ', -'ḏ' => 'ḏ', -'Ḑ' => 'Ḑ', -'ḑ' => 'ḑ', -'Ḓ' => 'Ḓ', -'ḓ' => 'ḓ', -'Ḕ' => 'Ḕ', -'ḕ' => 'ḕ', -'Ḗ' => 'Ḗ', -'ḗ' => 'ḗ', -'Ḙ' => 'Ḙ', -'ḙ' => 'ḙ', -'Ḛ' => 'Ḛ', -'ḛ' => 'ḛ', -'Ḝ' => 'Ḝ', -'ḝ' => 'ḝ', -'Ḟ' => 'Ḟ', -'ḟ' => 'ḟ', -'Ḡ' => 'Ḡ', -'ḡ' => 'ḡ', -'Ḣ' => 'Ḣ', -'ḣ' => 'ḣ', -'Ḥ' => 'Ḥ', -'ḥ' => 'ḥ', -'Ḧ' => 'Ḧ', -'ḧ' => 'ḧ', -'Ḩ' => 'Ḩ', -'ḩ' => 'ḩ', -'Ḫ' => 'Ḫ', -'ḫ' => 'ḫ', -'Ḭ' => 'Ḭ', -'ḭ' => 'ḭ', -'Ḯ' => 'Ḯ', -'ḯ' => 'ḯ', -'Ḱ' => 'Ḱ', -'ḱ' => 'ḱ', -'Ḳ' => 'Ḳ', -'ḳ' => 'ḳ', -'Ḵ' => 'Ḵ', -'ḵ' => 'ḵ', -'Ḷ' => 'Ḷ', -'ḷ' => 'ḷ', -'Ḹ' => 'Ḹ', -'ḹ' => 'ḹ', -'Ḻ' => 'Ḻ', -'ḻ' => 'ḻ', -'Ḽ' => 'Ḽ', -'ḽ' => 'ḽ', -'Ḿ' => 'Ḿ', -'ḿ' => 'ḿ', -'Ṁ' => 'Ṁ', -'ṁ' => 'ṁ', -'Ṃ' => 'Ṃ', -'ṃ' => 'ṃ', -'Ṅ' => 'Ṅ', -'ṅ' => 'ṅ', -'Ṇ' => 'Ṇ', -'ṇ' => 'ṇ', -'Ṉ' => 'Ṉ', -'ṉ' => 'ṉ', -'Ṋ' => 'Ṋ', -'ṋ' => 'ṋ', -'Ṍ' => 'Ṍ', -'ṍ' => 'ṍ', -'Ṏ' => 'Ṏ', -'ṏ' => 'ṏ', -'Ṑ' => 'Ṑ', -'ṑ' => 'ṑ', -'Ṓ' => 'Ṓ', -'ṓ' => 'ṓ', -'Ṕ' => 'Ṕ', -'ṕ' => 'ṕ', -'Ṗ' => 'Ṗ', -'ṗ' => 'ṗ', -'Ṙ' => 'Ṙ', -'ṙ' => 'ṙ', -'Ṛ' => 'Ṛ', -'ṛ' => 'ṛ', -'Ṝ' => 'Ṝ', -'ṝ' => 'ṝ', -'Ṟ' => 'Ṟ', -'ṟ' => 'ṟ', -'Ṡ' => 'Ṡ', -'ṡ' => 'ṡ', -'Ṣ' => 'Ṣ', -'ṣ' => 'ṣ', -'Ṥ' => 'Ṥ', -'ṥ' => 'ṥ', -'Ṧ' => 'Ṧ', -'ṧ' => 'ṧ', -'Ṩ' => 'Ṩ', -'ṩ' => 'ṩ', -'Ṫ' => 'Ṫ', -'ṫ' => 'ṫ', -'Ṭ' => 'Ṭ', -'ṭ' => 'ṭ', -'Ṯ' => 'Ṯ', -'ṯ' => 'ṯ', -'Ṱ' => 'Ṱ', -'ṱ' => 'ṱ', -'Ṳ' => 'Ṳ', -'ṳ' => 'ṳ', -'Ṵ' => 'Ṵ', -'ṵ' => 'ṵ', -'Ṷ' => 'Ṷ', -'ṷ' => 'ṷ', -'Ṹ' => 'Ṹ', -'ṹ' => 'ṹ', -'Ṻ' => 'Ṻ', -'ṻ' => 'ṻ', -'Ṽ' => 'Ṽ', -'ṽ' => 'ṽ', -'Ṿ' => 'Ṿ', -'ṿ' => 'ṿ', -'Ẁ' => 'Ẁ', -'ẁ' => 'ẁ', -'Ẃ' => 'Ẃ', -'ẃ' => 'ẃ', -'Ẅ' => 'Ẅ', -'ẅ' => 'ẅ', -'Ẇ' => 'Ẇ', -'ẇ' => 'ẇ', -'Ẉ' => 'Ẉ', -'ẉ' => 'ẉ', -'Ẋ' => 'Ẋ', -'ẋ' => 'ẋ', -'Ẍ' => 'Ẍ', -'ẍ' => 'ẍ', -'Ẏ' => 'Ẏ', -'ẏ' => 'ẏ', -'Ẑ' => 'Ẑ', -'ẑ' => 'ẑ', -'Ẓ' => 'Ẓ', -'ẓ' => 'ẓ', -'Ẕ' => 'Ẕ', -'ẕ' => 'ẕ', -'ẖ' => 'ẖ', -'ẗ' => 'ẗ', -'ẘ' => 'ẘ', -'ẙ' => 'ẙ', -'ẛ' => 'ẛ', -'Ạ' => 'Ạ', -'ạ' => 'ạ', -'Ả' => 'Ả', -'ả' => 'ả', -'Ấ' => 'Ấ', -'ấ' => 'ấ', -'Ầ' => 'Ầ', -'ầ' => 'ầ', -'Ẩ' => 'Ẩ', -'ẩ' => 'ẩ', -'Ẫ' => 'Ẫ', -'ẫ' => 'ẫ', -'Ậ' => 'Ậ', -'ậ' => 'ậ', -'Ắ' => 'Ắ', -'ắ' => 'ắ', -'Ằ' => 'Ằ', -'ằ' => 'ằ', -'Ẳ' => 'Ẳ', -'ẳ' => 'ẳ', -'Ẵ' => 'Ẵ', -'ẵ' => 'ẵ', -'Ặ' => 'Ặ', -'ặ' => 'ặ', -'Ẹ' => 'Ẹ', -'ẹ' => 'ẹ', -'Ẻ' => 'Ẻ', -'ẻ' => 'ẻ', -'Ẽ' => 'Ẽ', -'ẽ' => 'ẽ', -'Ế' => 'Ế', -'ế' => 'ế', -'Ề' => 'Ề', -'ề' => 'ề', -'Ể' => 'Ể', -'ể' => 'ể', -'Ễ' => 'Ễ', -'ễ' => 'ễ', -'Ệ' => 'Ệ', -'ệ' => 'ệ', -'Ỉ' => 'Ỉ', -'ỉ' => 'ỉ', -'Ị' => 'Ị', -'ị' => 'ị', -'Ọ' => 'Ọ', -'ọ' => 'ọ', -'Ỏ' => 'Ỏ', -'ỏ' => 'ỏ', -'Ố' => 'Ố', -'ố' => 'ố', -'Ồ' => 'Ồ', -'ồ' => 'ồ', -'Ổ' => 'Ổ', -'ổ' => 'ổ', -'Ỗ' => 'Ỗ', -'ỗ' => 'ỗ', -'Ộ' => 'Ộ', -'ộ' => 'ộ', -'Ớ' => 'Ớ', -'ớ' => 'ớ', -'Ờ' => 'Ờ', -'ờ' => 'ờ', -'Ở' => 'Ở', -'ở' => 'ở', -'Ỡ' => 'Ỡ', -'ỡ' => 'ỡ', -'Ợ' => 'Ợ', -'ợ' => 'ợ', -'Ụ' => 'Ụ', -'ụ' => 'ụ', -'Ủ' => 'Ủ', -'ủ' => 'ủ', -'Ứ' => 'Ứ', -'ứ' => 'ứ', -'Ừ' => 'Ừ', -'ừ' => 'ừ', -'Ử' => 'Ử', -'ử' => 'ử', -'Ữ' => 'Ữ', -'ữ' => 'ữ', -'Ự' => 'Ự', -'ự' => 'ự', -'Ỳ' => 'Ỳ', -'ỳ' => 'ỳ', -'Ỵ' => 'Ỵ', -'ỵ' => 'ỵ', -'Ỷ' => 'Ỷ', -'ỷ' => 'ỷ', -'Ỹ' => 'Ỹ', -'ỹ' => 'ỹ', -'ἀ' => 'ἀ', -'ἁ' => 'ἁ', -'ἂ' => 'ἂ', -'ἃ' => 'ἃ', -'ἄ' => 'ἄ', -'ἅ' => 'ἅ', -'ἆ' => 'ἆ', -'ἇ' => 'ἇ', -'Ἀ' => 'Ἀ', -'Ἁ' => 'Ἁ', -'Ἂ' => 'Ἂ', -'Ἃ' => 'Ἃ', -'Ἄ' => 'Ἄ', -'Ἅ' => 'Ἅ', -'Ἆ' => 'Ἆ', -'Ἇ' => 'Ἇ', -'ἐ' => 'ἐ', -'ἑ' => 'ἑ', -'ἒ' => 'ἒ', -'ἓ' => 'ἓ', -'ἔ' => 'ἔ', -'ἕ' => 'ἕ', -'Ἐ' => 'Ἐ', -'Ἑ' => 'Ἑ', -'Ἒ' => 'Ἒ', -'Ἓ' => 'Ἓ', -'Ἔ' => 'Ἔ', -'Ἕ' => 'Ἕ', -'ἠ' => 'ἠ', -'ἡ' => 'ἡ', -'ἢ' => 'ἢ', -'ἣ' => 'ἣ', -'ἤ' => 'ἤ', -'ἥ' => 'ἥ', -'ἦ' => 'ἦ', -'ἧ' => 'ἧ', -'Ἠ' => 'Ἠ', -'Ἡ' => 'Ἡ', -'Ἢ' => 'Ἢ', -'Ἣ' => 'Ἣ', -'Ἤ' => 'Ἤ', -'Ἥ' => 'Ἥ', -'Ἦ' => 'Ἦ', -'Ἧ' => 'Ἧ', -'ἰ' => 'ἰ', -'ἱ' => 'ἱ', -'ἲ' => 'ἲ', -'ἳ' => 'ἳ', -'ἴ' => 'ἴ', -'ἵ' => 'ἵ', -'ἶ' => 'ἶ', -'ἷ' => 'ἷ', -'Ἰ' => 'Ἰ', -'Ἱ' => 'Ἱ', -'Ἲ' => 'Ἲ', -'Ἳ' => 'Ἳ', -'Ἴ' => 'Ἴ', -'Ἵ' => 'Ἵ', -'Ἶ' => 'Ἶ', -'Ἷ' => 'Ἷ', -'ὀ' => 'ὀ', -'ὁ' => 'ὁ', -'ὂ' => 'ὂ', -'ὃ' => 'ὃ', -'ὄ' => 'ὄ', -'ὅ' => 'ὅ', -'Ὀ' => 'Ὀ', -'Ὁ' => 'Ὁ', -'Ὂ' => 'Ὂ', -'Ὃ' => 'Ὃ', -'Ὄ' => 'Ὄ', -'Ὅ' => 'Ὅ', -'ὐ' => 'ὐ', -'ὑ' => 'ὑ', -'ὒ' => 'ὒ', -'ὓ' => 'ὓ', -'ὔ' => 'ὔ', -'ὕ' => 'ὕ', -'ὖ' => 'ὖ', -'ὗ' => 'ὗ', -'Ὑ' => 'Ὑ', -'Ὓ' => 'Ὓ', -'Ὕ' => 'Ὕ', -'Ὗ' => 'Ὗ', -'ὠ' => 'ὠ', -'ὡ' => 'ὡ', -'ὢ' => 'ὢ', -'ὣ' => 'ὣ', -'ὤ' => 'ὤ', -'ὥ' => 'ὥ', -'ὦ' => 'ὦ', -'ὧ' => 'ὧ', -'Ὠ' => 'Ὠ', -'Ὡ' => 'Ὡ', -'Ὢ' => 'Ὢ', -'Ὣ' => 'Ὣ', -'Ὤ' => 'Ὤ', -'Ὥ' => 'Ὥ', -'Ὦ' => 'Ὦ', -'Ὧ' => 'Ὧ', -'ὰ' => 'ὰ', -'ά' => 'ά', -'ὲ' => 'ὲ', -'έ' => 'έ', -'ὴ' => 'ὴ', -'ή' => 'ή', -'ὶ' => 'ὶ', -'ί' => 'ί', -'ὸ' => 'ὸ', -'ό' => 'ό', -'ὺ' => 'ὺ', -'ύ' => 'ύ', -'ὼ' => 'ὼ', -'ώ' => 'ώ', -'ᾀ' => 'ᾀ', -'ᾁ' => 'ᾁ', -'ᾂ' => 'ᾂ', -'ᾃ' => 'ᾃ', -'ᾄ' => 'ᾄ', -'ᾅ' => 'ᾅ', -'ᾆ' => 'ᾆ', -'ᾇ' => 'ᾇ', -'ᾈ' => 'ᾈ', -'ᾉ' => 'ᾉ', -'ᾊ' => 'ᾊ', -'ᾋ' => 'ᾋ', -'ᾌ' => 'ᾌ', -'ᾍ' => 'ᾍ', -'ᾎ' => 'ᾎ', -'ᾏ' => 'ᾏ', -'ᾐ' => 'ᾐ', -'ᾑ' => 'ᾑ', -'ᾒ' => 'ᾒ', -'ᾓ' => 'ᾓ', -'ᾔ' => 'ᾔ', -'ᾕ' => 'ᾕ', -'ᾖ' => 'ᾖ', -'ᾗ' => 'ᾗ', -'ᾘ' => 'ᾘ', -'ᾙ' => 'ᾙ', -'ᾚ' => 'ᾚ', -'ᾛ' => 'ᾛ', -'ᾜ' => 'ᾜ', -'ᾝ' => 'ᾝ', -'ᾞ' => 'ᾞ', -'ᾟ' => 'ᾟ', -'ᾠ' => 'ᾠ', -'ᾡ' => 'ᾡ', -'ᾢ' => 'ᾢ', -'ᾣ' => 'ᾣ', -'ᾤ' => 'ᾤ', -'ᾥ' => 'ᾥ', -'ᾦ' => 'ᾦ', -'ᾧ' => 'ᾧ', -'ᾨ' => 'ᾨ', -'ᾩ' => 'ᾩ', -'ᾪ' => 'ᾪ', -'ᾫ' => 'ᾫ', -'ᾬ' => 'ᾬ', -'ᾭ' => 'ᾭ', -'ᾮ' => 'ᾮ', -'ᾯ' => 'ᾯ', -'ᾰ' => 'ᾰ', -'ᾱ' => 'ᾱ', -'ᾲ' => 'ᾲ', -'ᾳ' => 'ᾳ', -'ᾴ' => 'ᾴ', -'ᾶ' => 'ᾶ', -'ᾷ' => 'ᾷ', -'Ᾰ' => 'Ᾰ', -'Ᾱ' => 'Ᾱ', -'Ὰ' => 'Ὰ', -'Ά' => 'Ά', -'ᾼ' => 'ᾼ', -'ι' => 'ι', -'῁' => '῁', -'ῂ' => 'ῂ', -'ῃ' => 'ῃ', -'ῄ' => 'ῄ', -'ῆ' => 'ῆ', -'ῇ' => 'ῇ', -'Ὲ' => 'Ὲ', -'Έ' => 'Έ', -'Ὴ' => 'Ὴ', -'Ή' => 'Ή', -'ῌ' => 'ῌ', -'῍' => '῍', -'῎' => '῎', -'῏' => '῏', -'ῐ' => 'ῐ', -'ῑ' => 'ῑ', -'ῒ' => 'ῒ', -'ΐ' => 'ΐ', -'ῖ' => 'ῖ', -'ῗ' => 'ῗ', -'Ῐ' => 'Ῐ', -'Ῑ' => 'Ῑ', -'Ὶ' => 'Ὶ', -'Ί' => 'Ί', -'῝' => '῝', -'῞' => '῞', -'῟' => '῟', -'ῠ' => 'ῠ', -'ῡ' => 'ῡ', -'ῢ' => 'ῢ', -'ΰ' => 'ΰ', -'ῤ' => 'ῤ', -'ῥ' => 'ῥ', -'ῦ' => 'ῦ', -'ῧ' => 'ῧ', -'Ῠ' => 'Ῠ', -'Ῡ' => 'Ῡ', -'Ὺ' => 'Ὺ', -'Ύ' => 'Ύ', -'Ῥ' => 'Ῥ', -'῭' => '῭', -'΅' => '΅', -'`' => '`', -'ῲ' => 'ῲ', -'ῳ' => 'ῳ', -'ῴ' => 'ῴ', -'ῶ' => 'ῶ', -'ῷ' => 'ῷ', -'Ὸ' => 'Ὸ', -'Ό' => 'Ό', -'Ὼ' => 'Ὼ', -'Ώ' => 'Ώ', -'ῼ' => 'ῼ', -'´' => '´', -' ' => ' ', -' ' => ' ', -'Ω' => 'Ω', -'K' => 'K', -'Å' => 'Å', -'↚' => '↚', -'↛' => '↛', -'↮' => '↮', -'⇍' => '⇍', -'⇎' => '⇎', -'⇏' => '⇏', -'∄' => '∄', -'∉' => '∉', -'∌' => '∌', -'∤' => '∤', -'∦' => '∦', -'≁' => '≁', -'≄' => '≄', -'≇' => '≇', -'≉' => '≉', -'≠' => '≠', -'≢' => '≢', -'≭' => '≭', -'≮' => '≮', -'≯' => '≯', -'≰' => '≰', -'≱' => '≱', -'≴' => '≴', -'≵' => '≵', -'≸' => '≸', -'≹' => '≹', -'⊀' => '⊀', -'⊁' => '⊁', -'⊄' => '⊄', -'⊅' => '⊅', -'⊈' => '⊈', -'⊉' => '⊉', -'⊬' => '⊬', -'⊭' => '⊭', -'⊮' => '⊮', -'⊯' => '⊯', -'⋠' => '⋠', -'⋡' => '⋡', -'⋢' => '⋢', -'⋣' => '⋣', -'⋪' => '⋪', -'⋫' => '⋫', -'⋬' => '⋬', -'⋭' => '⋭', -'〈' => '〈', -'〉' => '〉', -'⫝̸' => '⫝̸', -'が' => 'が', -'ぎ' => 'ぎ', -'ぐ' => 'ぐ', -'げ' => 'げ', -'ご' => 'ご', -'ざ' => 'ざ', -'じ' => 'じ', -'ず' => 'ず', -'ぜ' => 'ぜ', -'ぞ' => 'ぞ', -'だ' => 'だ', -'ぢ' => 'ぢ', -'づ' => 'づ', -'で' => 'で', -'ど' => 'ど', -'ば' => 'ば', -'ぱ' => 'ぱ', -'び' => 'び', -'ぴ' => 'ぴ', -'ぶ' => 'ぶ', -'ぷ' => 'ぷ', -'べ' => 'べ', -'ぺ' => 'ぺ', -'ぼ' => 'ぼ', -'ぽ' => 'ぽ', -'ゔ' => 'ゔ', -'ゞ' => 'ゞ', -'ガ' => 'ガ', -'ギ' => 'ギ', -'グ' => 'グ', -'ゲ' => 'ゲ', -'ゴ' => 'ゴ', -'ザ' => 'ザ', -'ジ' => 'ジ', -'ズ' => 'ズ', -'ゼ' => 'ゼ', -'ゾ' => 'ゾ', -'ダ' => 'ダ', -'ヂ' => 'ヂ', -'ヅ' => 'ヅ', -'デ' => 'デ', -'ド' => 'ド', -'バ' => 'バ', -'パ' => 'パ', -'ビ' => 'ビ', -'ピ' => 'ピ', -'ブ' => 'ブ', -'プ' => 'プ', -'ベ' => 'ベ', -'ペ' => 'ペ', -'ボ' => 'ボ', -'ポ' => 'ポ', -'ヴ' => 'ヴ', -'ヷ' => 'ヷ', -'ヸ' => 'ヸ', -'ヹ' => 'ヹ', -'ヺ' => 'ヺ', -'ヾ' => 'ヾ', -'豈' => '豈', -'更' => '更', -'車' => '車', -'賈' => '賈', -'滑' => '滑', -'串' => '串', -'句' => '句', -'龜' => '龜', -'龜' => '龜', -'契' => '契', -'金' => '金', -'喇' => '喇', -'奈' => '奈', -'懶' => '懶', -'癩' => '癩', -'羅' => '羅', -'蘿' => '蘿', -'螺' => '螺', -'裸' => '裸', -'邏' => '邏', -'樂' => '樂', -'洛' => '洛', -'烙' => '烙', -'珞' => '珞', -'落' => '落', -'酪' => '酪', -'駱' => '駱', -'亂' => '亂', -'卵' => '卵', -'欄' => '欄', -'爛' => '爛', -'蘭' => '蘭', -'鸞' => '鸞', -'嵐' => '嵐', -'濫' => '濫', -'藍' => '藍', -'襤' => '襤', -'拉' => '拉', -'臘' => '臘', -'蠟' => '蠟', -'廊' => '廊', -'朗' => '朗', -'浪' => '浪', -'狼' => '狼', -'郎' => '郎', -'來' => '來', -'冷' => '冷', -'勞' => '勞', -'擄' => '擄', -'櫓' => '櫓', -'爐' => '爐', -'盧' => '盧', -'老' => '老', -'蘆' => '蘆', -'虜' => '虜', -'路' => '路', -'露' => '露', -'魯' => '魯', -'鷺' => '鷺', -'碌' => '碌', -'祿' => '祿', -'綠' => '綠', -'菉' => '菉', -'錄' => '錄', -'鹿' => '鹿', -'論' => '論', -'壟' => '壟', -'弄' => '弄', -'籠' => '籠', -'聾' => '聾', -'牢' => '牢', -'磊' => '磊', -'賂' => '賂', -'雷' => '雷', -'壘' => '壘', -'屢' => '屢', -'樓' => '樓', -'淚' => '淚', -'漏' => '漏', -'累' => '累', -'縷' => '縷', -'陋' => '陋', -'勒' => '勒', -'肋' => '肋', -'凜' => '凜', -'凌' => '凌', -'稜' => '稜', -'綾' => '綾', -'菱' => '菱', -'陵' => '陵', -'讀' => '讀', -'拏' => '拏', -'樂' => '樂', -'諾' => '諾', -'丹' => '丹', -'寧' => '寧', -'怒' => '怒', -'率' => '率', -'異' => '異', -'北' => '北', -'磻' => '磻', -'便' => '便', -'復' => '復', -'不' => '不', -'泌' => '泌', -'數' => '數', -'索' => '索', -'參' => '參', -'塞' => '塞', -'省' => '省', -'葉' => '葉', -'說' => '說', -'殺' => '殺', -'辰' => '辰', -'沈' => '沈', -'拾' => '拾', -'若' => '若', -'掠' => '掠', -'略' => '略', -'亮' => '亮', -'兩' => '兩', -'凉' => '凉', -'梁' => '梁', -'糧' => '糧', -'良' => '良', -'諒' => '諒', -'量' => '量', -'勵' => '勵', -'呂' => '呂', -'女' => '女', -'廬' => '廬', -'旅' => '旅', -'濾' => '濾', -'礪' => '礪', -'閭' => '閭', -'驪' => '驪', -'麗' => '麗', -'黎' => '黎', -'力' => '力', -'曆' => '曆', -'歷' => '歷', -'轢' => '轢', -'年' => '年', -'憐' => '憐', -'戀' => '戀', -'撚' => '撚', -'漣' => '漣', -'煉' => '煉', -'璉' => '璉', -'秊' => '秊', -'練' => '練', -'聯' => '聯', -'輦' => '輦', -'蓮' => '蓮', -'連' => '連', -'鍊' => '鍊', -'列' => '列', -'劣' => '劣', -'咽' => '咽', -'烈' => '烈', -'裂' => '裂', -'說' => '說', -'廉' => '廉', -'念' => '念', -'捻' => '捻', -'殮' => '殮', -'簾' => '簾', -'獵' => '獵', -'令' => '令', -'囹' => '囹', -'寧' => '寧', -'嶺' => '嶺', -'怜' => '怜', -'玲' => '玲', -'瑩' => '瑩', -'羚' => '羚', -'聆' => '聆', -'鈴' => '鈴', -'零' => '零', -'靈' => '靈', -'領' => '領', -'例' => '例', -'禮' => '禮', -'醴' => '醴', -'隸' => '隸', -'惡' => '惡', -'了' => '了', -'僚' => '僚', -'寮' => '寮', -'尿' => '尿', -'料' => '料', -'樂' => '樂', -'燎' => '燎', -'療' => '療', -'蓼' => '蓼', -'遼' => '遼', -'龍' => '龍', -'暈' => '暈', -'阮' => '阮', -'劉' => '劉', -'杻' => '杻', -'柳' => '柳', -'流' => '流', -'溜' => '溜', -'琉' => '琉', -'留' => '留', -'硫' => '硫', -'紐' => '紐', -'類' => '類', -'六' => '六', -'戮' => '戮', -'陸' => '陸', -'倫' => '倫', -'崙' => '崙', -'淪' => '淪', -'輪' => '輪', -'律' => '律', -'慄' => '慄', -'栗' => '栗', -'率' => '率', -'隆' => '隆', -'利' => '利', -'吏' => '吏', -'履' => '履', -'易' => '易', -'李' => '李', -'梨' => '梨', -'泥' => '泥', -'理' => '理', -'痢' => '痢', -'罹' => '罹', -'裏' => '裏', -'裡' => '裡', -'里' => '里', -'離' => '離', -'匿' => '匿', -'溺' => '溺', -'吝' => '吝', -'燐' => '燐', -'璘' => '璘', -'藺' => '藺', -'隣' => '隣', -'鱗' => '鱗', -'麟' => '麟', -'林' => '林', -'淋' => '淋', -'臨' => '臨', -'立' => '立', -'笠' => '笠', -'粒' => '粒', -'狀' => '狀', -'炙' => '炙', -'識' => '識', -'什' => '什', -'茶' => '茶', -'刺' => '刺', -'切' => '切', -'度' => '度', -'拓' => '拓', -'糖' => '糖', -'宅' => '宅', -'洞' => '洞', -'暴' => '暴', -'輻' => '輻', -'行' => '行', -'降' => '降', -'見' => '見', -'廓' => '廓', -'兀' => '兀', -'嗀' => '嗀', -'塚' => '塚', -'晴' => '晴', -'凞' => '凞', -'猪' => '猪', -'益' => '益', -'礼' => '礼', -'神' => '神', -'祥' => '祥', -'福' => '福', -'靖' => '靖', -'精' => '精', -'羽' => '羽', -'蘒' => '蘒', -'諸' => '諸', -'逸' => '逸', -'都' => '都', -'飯' => '飯', -'飼' => '飼', -'館' => '館', -'鶴' => '鶴', -'郞' => '郞', -'隷' => '隷', -'侮' => '侮', -'僧' => '僧', -'免' => '免', -'勉' => '勉', -'勤' => '勤', -'卑' => '卑', -'喝' => '喝', -'嘆' => '嘆', -'器' => '器', -'塀' => '塀', -'墨' => '墨', -'層' => '層', -'屮' => '屮', -'悔' => '悔', -'慨' => '慨', -'憎' => '憎', -'懲' => '懲', -'敏' => '敏', -'既' => '既', -'暑' => '暑', -'梅' => '梅', -'海' => '海', -'渚' => '渚', -'漢' => '漢', -'煮' => '煮', -'爫' => '爫', -'琢' => '琢', -'碑' => '碑', -'社' => '社', -'祉' => '祉', -'祈' => '祈', -'祐' => '祐', -'祖' => '祖', -'祝' => '祝', -'禍' => '禍', -'禎' => '禎', -'穀' => '穀', -'突' => '突', -'節' => '節', -'練' => '練', -'縉' => '縉', -'繁' => '繁', -'署' => '署', -'者' => '者', -'臭' => '臭', -'艹' => '艹', -'艹' => '艹', -'著' => '著', -'褐' => '褐', -'視' => '視', -'謁' => '謁', -'謹' => '謹', -'賓' => '賓', -'贈' => '贈', -'辶' => '辶', -'逸' => '逸', -'難' => '難', -'響' => '響', -'頻' => '頻', -'恵' => '恵', -'𤋮' => '𤋮', -'舘' => '舘', -'並' => '並', -'况' => '况', -'全' => '全', -'侀' => '侀', -'充' => '充', -'冀' => '冀', -'勇' => '勇', -'勺' => '勺', -'喝' => '喝', -'啕' => '啕', -'喙' => '喙', -'嗢' => '嗢', -'塚' => '塚', -'墳' => '墳', -'奄' => '奄', -'奔' => '奔', -'婢' => '婢', -'嬨' => '嬨', -'廒' => '廒', -'廙' => '廙', -'彩' => '彩', -'徭' => '徭', -'惘' => '惘', -'慎' => '慎', -'愈' => '愈', -'憎' => '憎', -'慠' => '慠', -'懲' => '懲', -'戴' => '戴', -'揄' => '揄', -'搜' => '搜', -'摒' => '摒', -'敖' => '敖', -'晴' => '晴', -'朗' => '朗', -'望' => '望', -'杖' => '杖', -'歹' => '歹', -'殺' => '殺', -'流' => '流', -'滛' => '滛', -'滋' => '滋', -'漢' => '漢', -'瀞' => '瀞', -'煮' => '煮', -'瞧' => '瞧', -'爵' => '爵', -'犯' => '犯', -'猪' => '猪', -'瑱' => '瑱', -'甆' => '甆', -'画' => '画', -'瘝' => '瘝', -'瘟' => '瘟', -'益' => '益', -'盛' => '盛', -'直' => '直', -'睊' => '睊', -'着' => '着', -'磌' => '磌', -'窱' => '窱', -'節' => '節', -'类' => '类', -'絛' => '絛', -'練' => '練', -'缾' => '缾', -'者' => '者', -'荒' => '荒', -'華' => '華', -'蝹' => '蝹', -'襁' => '襁', -'覆' => '覆', -'視' => '視', -'調' => '調', -'諸' => '諸', -'請' => '請', -'謁' => '謁', -'諾' => '諾', -'諭' => '諭', -'謹' => '謹', -'變' => '變', -'贈' => '贈', -'輸' => '輸', -'遲' => '遲', -'醙' => '醙', -'鉶' => '鉶', -'陼' => '陼', -'難' => '難', -'靖' => '靖', -'韛' => '韛', -'響' => '響', -'頋' => '頋', -'頻' => '頻', -'鬒' => '鬒', -'龜' => '龜', -'𢡊' => '𢡊', -'𢡄' => '𢡄', -'𣏕' => '𣏕', -'㮝' => '㮝', -'䀘' => '䀘', -'䀹' => '䀹', -'𥉉' => '𥉉', -'𥳐' => '𥳐', -'𧻓' => '𧻓', -'齃' => '齃', -'龎' => '龎', -'יִ' => 'יִ', -'ײַ' => 'ײַ', -'שׁ' => 'שׁ', -'שׂ' => 'שׂ', -'שּׁ' => 'שּׁ', -'שּׂ' => 'שּׂ', -'אַ' => 'אַ', -'אָ' => 'אָ', -'אּ' => 'אּ', -'בּ' => 'בּ', -'גּ' => 'גּ', -'דּ' => 'דּ', -'הּ' => 'הּ', -'וּ' => 'וּ', -'זּ' => 'זּ', -'טּ' => 'טּ', -'יּ' => 'יּ', -'ךּ' => 'ךּ', -'כּ' => 'כּ', -'לּ' => 'לּ', -'מּ' => 'מּ', -'נּ' => 'נּ', -'סּ' => 'סּ', -'ףּ' => 'ףּ', -'פּ' => 'פּ', -'צּ' => 'צּ', -'קּ' => 'קּ', -'רּ' => 'רּ', -'שּ' => 'שּ', -'תּ' => 'תּ', -'וֹ' => 'וֹ', -'בֿ' => 'בֿ', -'כֿ' => 'כֿ', -'פֿ' => 'פֿ', -'𑂚' => '𑂚', -'𑂜' => '𑂜', -'𑂫' => '𑂫', -'𑄮' => '𑄮', -'𑄯' => '𑄯', -'𑍋' => '𑍋', -'𑍌' => '𑍌', -'𑒻' => '𑒻', -'𑒼' => '𑒼', -'𑒾' => '𑒾', -'𑖺' => '𑖺', -'𑖻' => '𑖻', -'𑤸' => '𑤸', -'𝅗𝅥' => '𝅗𝅥', -'𝅘𝅥' => '𝅘𝅥', -'𝅘𝅥𝅮' => '𝅘𝅥𝅮', -'𝅘𝅥𝅯' => '𝅘𝅥𝅯', -'𝅘𝅥𝅰' => '𝅘𝅥𝅰', -'𝅘𝅥𝅱' => '𝅘𝅥𝅱', -'𝅘𝅥𝅲' => '𝅘𝅥𝅲', -'𝆹𝅥' => '𝆹𝅥', -'𝆺𝅥' => '𝆺𝅥', -'𝆹𝅥𝅮' => '𝆹𝅥𝅮', -'𝆺𝅥𝅮' => '𝆺𝅥𝅮', -'𝆹𝅥𝅯' => '𝆹𝅥𝅯', -'𝆺𝅥𝅯' => '𝆺𝅥𝅯', -'丽' => '丽', -'丸' => '丸', -'乁' => '乁', -'𠄢' => '𠄢', -'你' => '你', -'侮' => '侮', -'侻' => '侻', -'倂' => '倂', -'偺' => '偺', -'備' => '備', -'僧' => '僧', -'像' => '像', -'㒞' => '㒞', -'𠘺' => '𠘺', -'免' => '免', -'兔' => '兔', -'兤' => '兤', -'具' => '具', -'𠔜' => '𠔜', -'㒹' => '㒹', -'內' => '內', -'再' => '再', -'𠕋' => '𠕋', -'冗' => '冗', -'冤' => '冤', -'仌' => '仌', -'冬' => '冬', -'况' => '况', -'𩇟' => '𩇟', -'凵' => '凵', -'刃' => '刃', -'㓟' => '㓟', -'刻' => '刻', -'剆' => '剆', -'割' => '割', -'剷' => '剷', -'㔕' => '㔕', -'勇' => '勇', -'勉' => '勉', -'勤' => '勤', -'勺' => '勺', -'包' => '包', -'匆' => '匆', -'北' => '北', -'卉' => '卉', -'卑' => '卑', -'博' => '博', -'即' => '即', -'卽' => '卽', -'卿' => '卿', -'卿' => '卿', -'卿' => '卿', -'𠨬' => '𠨬', -'灰' => '灰', -'及' => '及', -'叟' => '叟', -'𠭣' => '𠭣', -'叫' => '叫', -'叱' => '叱', -'吆' => '吆', -'咞' => '咞', -'吸' => '吸', -'呈' => '呈', -'周' => '周', -'咢' => '咢', -'哶' => '哶', -'唐' => '唐', -'啓' => '啓', -'啣' => '啣', -'善' => '善', -'善' => '善', -'喙' => '喙', -'喫' => '喫', -'喳' => '喳', -'嗂' => '嗂', -'圖' => '圖', -'嘆' => '嘆', -'圗' => '圗', -'噑' => '噑', -'噴' => '噴', -'切' => '切', -'壮' => '壮', -'城' => '城', -'埴' => '埴', -'堍' => '堍', -'型' => '型', -'堲' => '堲', -'報' => '報', -'墬' => '墬', -'𡓤' => '𡓤', -'売' => '売', -'壷' => '壷', -'夆' => '夆', -'多' => '多', -'夢' => '夢', -'奢' => '奢', -'𡚨' => '𡚨', -'𡛪' => '𡛪', -'姬' => '姬', -'娛' => '娛', -'娧' => '娧', -'姘' => '姘', -'婦' => '婦', -'㛮' => '㛮', -'㛼' => '㛼', -'嬈' => '嬈', -'嬾' => '嬾', -'嬾' => '嬾', -'𡧈' => '𡧈', -'寃' => '寃', -'寘' => '寘', -'寧' => '寧', -'寳' => '寳', -'𡬘' => '𡬘', -'寿' => '寿', -'将' => '将', -'当' => '当', -'尢' => '尢', -'㞁' => '㞁', -'屠' => '屠', -'屮' => '屮', -'峀' => '峀', -'岍' => '岍', -'𡷤' => '𡷤', -'嵃' => '嵃', -'𡷦' => '𡷦', -'嵮' => '嵮', -'嵫' => '嵫', -'嵼' => '嵼', -'巡' => '巡', -'巢' => '巢', -'㠯' => '㠯', -'巽' => '巽', -'帨' => '帨', -'帽' => '帽', -'幩' => '幩', -'㡢' => '㡢', -'𢆃' => '𢆃', -'㡼' => '㡼', -'庰' => '庰', -'庳' => '庳', -'庶' => '庶', -'廊' => '廊', -'𪎒' => '𪎒', -'廾' => '廾', -'𢌱' => '𢌱', -'𢌱' => '𢌱', -'舁' => '舁', -'弢' => '弢', -'弢' => '弢', -'㣇' => '㣇', -'𣊸' => '𣊸', -'𦇚' => '𦇚', -'形' => '形', -'彫' => '彫', -'㣣' => '㣣', -'徚' => '徚', -'忍' => '忍', -'志' => '志', -'忹' => '忹', -'悁' => '悁', -'㤺' => '㤺', -'㤜' => '㤜', -'悔' => '悔', -'𢛔' => '𢛔', -'惇' => '惇', -'慈' => '慈', -'慌' => '慌', -'慎' => '慎', -'慌' => '慌', -'慺' => '慺', -'憎' => '憎', -'憲' => '憲', -'憤' => '憤', -'憯' => '憯', -'懞' => '懞', -'懲' => '懲', -'懶' => '懶', -'成' => '成', -'戛' => '戛', -'扝' => '扝', -'抱' => '抱', -'拔' => '拔', -'捐' => '捐', -'𢬌' => '𢬌', -'挽' => '挽', -'拼' => '拼', -'捨' => '捨', -'掃' => '掃', -'揤' => '揤', -'𢯱' => '𢯱', -'搢' => '搢', -'揅' => '揅', -'掩' => '掩', -'㨮' => '㨮', -'摩' => '摩', -'摾' => '摾', -'撝' => '撝', -'摷' => '摷', -'㩬' => '㩬', -'敏' => '敏', -'敬' => '敬', -'𣀊' => '𣀊', -'旣' => '旣', -'書' => '書', -'晉' => '晉', -'㬙' => '㬙', -'暑' => '暑', -'㬈' => '㬈', -'㫤' => '㫤', -'冒' => '冒', -'冕' => '冕', -'最' => '最', -'暜' => '暜', -'肭' => '肭', -'䏙' => '䏙', -'朗' => '朗', -'望' => '望', -'朡' => '朡', -'杞' => '杞', -'杓' => '杓', -'𣏃' => '𣏃', -'㭉' => '㭉', -'柺' => '柺', -'枅' => '枅', -'桒' => '桒', -'梅' => '梅', -'𣑭' => '𣑭', -'梎' => '梎', -'栟' => '栟', -'椔' => '椔', -'㮝' => '㮝', -'楂' => '楂', -'榣' => '榣', -'槪' => '槪', -'檨' => '檨', -'𣚣' => '𣚣', -'櫛' => '櫛', -'㰘' => '㰘', -'次' => '次', -'𣢧' => '𣢧', -'歔' => '歔', -'㱎' => '㱎', -'歲' => '歲', -'殟' => '殟', -'殺' => '殺', -'殻' => '殻', -'𣪍' => '𣪍', -'𡴋' => '𡴋', -'𣫺' => '𣫺', -'汎' => '汎', -'𣲼' => '𣲼', -'沿' => '沿', -'泍' => '泍', -'汧' => '汧', -'洖' => '洖', -'派' => '派', -'海' => '海', -'流' => '流', -'浩' => '浩', -'浸' => '浸', -'涅' => '涅', -'𣴞' => '𣴞', -'洴' => '洴', -'港' => '港', -'湮' => '湮', -'㴳' => '㴳', -'滋' => '滋', -'滇' => '滇', -'𣻑' => '𣻑', -'淹' => '淹', -'潮' => '潮', -'𣽞' => '𣽞', -'𣾎' => '𣾎', -'濆' => '濆', -'瀹' => '瀹', -'瀞' => '瀞', -'瀛' => '瀛', -'㶖' => '㶖', -'灊' => '灊', -'災' => '災', -'灷' => '灷', -'炭' => '炭', -'𠔥' => '𠔥', -'煅' => '煅', -'𤉣' => '𤉣', -'熜' => '熜', -'𤎫' => '𤎫', -'爨' => '爨', -'爵' => '爵', -'牐' => '牐', -'𤘈' => '𤘈', -'犀' => '犀', -'犕' => '犕', -'𤜵' => '𤜵', -'𤠔' => '𤠔', -'獺' => '獺', -'王' => '王', -'㺬' => '㺬', -'玥' => '玥', -'㺸' => '㺸', -'㺸' => '㺸', -'瑇' => '瑇', -'瑜' => '瑜', -'瑱' => '瑱', -'璅' => '璅', -'瓊' => '瓊', -'㼛' => '㼛', -'甤' => '甤', -'𤰶' => '𤰶', -'甾' => '甾', -'𤲒' => '𤲒', -'異' => '異', -'𢆟' => '𢆟', -'瘐' => '瘐', -'𤾡' => '𤾡', -'𤾸' => '𤾸', -'𥁄' => '𥁄', -'㿼' => '㿼', -'䀈' => '䀈', -'直' => '直', -'𥃳' => '𥃳', -'𥃲' => '𥃲', -'𥄙' => '𥄙', -'𥄳' => '𥄳', -'眞' => '眞', -'真' => '真', -'真' => '真', -'睊' => '睊', -'䀹' => '䀹', -'瞋' => '瞋', -'䁆' => '䁆', -'䂖' => '䂖', -'𥐝' => '𥐝', -'硎' => '硎', -'碌' => '碌', -'磌' => '磌', -'䃣' => '䃣', -'𥘦' => '𥘦', -'祖' => '祖', -'𥚚' => '𥚚', -'𥛅' => '𥛅', -'福' => '福', -'秫' => '秫', -'䄯' => '䄯', -'穀' => '穀', -'穊' => '穊', -'穏' => '穏', -'𥥼' => '𥥼', -'𥪧' => '𥪧', -'𥪧' => '𥪧', -'竮' => '竮', -'䈂' => '䈂', -'𥮫' => '𥮫', -'篆' => '篆', -'築' => '築', -'䈧' => '䈧', -'𥲀' => '𥲀', -'糒' => '糒', -'䊠' => '䊠', -'糨' => '糨', -'糣' => '糣', -'紀' => '紀', -'𥾆' => '𥾆', -'絣' => '絣', -'䌁' => '䌁', -'緇' => '緇', -'縂' => '縂', -'繅' => '繅', -'䌴' => '䌴', -'𦈨' => '𦈨', -'𦉇' => '𦉇', -'䍙' => '䍙', -'𦋙' => '𦋙', -'罺' => '罺', -'𦌾' => '𦌾', -'羕' => '羕', -'翺' => '翺', -'者' => '者', -'𦓚' => '𦓚', -'𦔣' => '𦔣', -'聠' => '聠', -'𦖨' => '𦖨', -'聰' => '聰', -'𣍟' => '𣍟', -'䏕' => '䏕', -'育' => '育', -'脃' => '脃', -'䐋' => '䐋', -'脾' => '脾', -'媵' => '媵', -'𦞧' => '𦞧', -'𦞵' => '𦞵', -'𣎓' => '𣎓', -'𣎜' => '𣎜', -'舁' => '舁', -'舄' => '舄', -'辞' => '辞', -'䑫' => '䑫', -'芑' => '芑', -'芋' => '芋', -'芝' => '芝', -'劳' => '劳', -'花' => '花', -'芳' => '芳', -'芽' => '芽', -'苦' => '苦', -'𦬼' => '𦬼', -'若' => '若', -'茝' => '茝', -'荣' => '荣', -'莭' => '莭', -'茣' => '茣', -'莽' => '莽', -'菧' => '菧', -'著' => '著', -'荓' => '荓', -'菊' => '菊', -'菌' => '菌', -'菜' => '菜', -'𦰶' => '𦰶', -'𦵫' => '𦵫', -'𦳕' => '𦳕', -'䔫' => '䔫', -'蓱' => '蓱', -'蓳' => '蓳', -'蔖' => '蔖', -'𧏊' => '𧏊', -'蕤' => '蕤', -'𦼬' => '𦼬', -'䕝' => '䕝', -'䕡' => '䕡', -'𦾱' => '𦾱', -'𧃒' => '𧃒', -'䕫' => '䕫', -'虐' => '虐', -'虜' => '虜', -'虧' => '虧', -'虩' => '虩', -'蚩' => '蚩', -'蚈' => '蚈', -'蜎' => '蜎', -'蛢' => '蛢', -'蝹' => '蝹', -'蜨' => '蜨', -'蝫' => '蝫', -'螆' => '螆', -'䗗' => '䗗', -'蟡' => '蟡', -'蠁' => '蠁', -'䗹' => '䗹', -'衠' => '衠', -'衣' => '衣', -'𧙧' => '𧙧', -'裗' => '裗', -'裞' => '裞', -'䘵' => '䘵', -'裺' => '裺', -'㒻' => '㒻', -'𧢮' => '𧢮', -'𧥦' => '𧥦', -'䚾' => '䚾', -'䛇' => '䛇', -'誠' => '誠', -'諭' => '諭', -'變' => '變', -'豕' => '豕', -'𧲨' => '𧲨', -'貫' => '貫', -'賁' => '賁', -'贛' => '贛', -'起' => '起', -'𧼯' => '𧼯', -'𠠄' => '𠠄', -'跋' => '跋', -'趼' => '趼', -'跰' => '跰', -'𠣞' => '𠣞', -'軔' => '軔', -'輸' => '輸', -'𨗒' => '𨗒', -'𨗭' => '𨗭', -'邔' => '邔', -'郱' => '郱', -'鄑' => '鄑', -'𨜮' => '𨜮', -'鄛' => '鄛', -'鈸' => '鈸', -'鋗' => '鋗', -'鋘' => '鋘', -'鉼' => '鉼', -'鏹' => '鏹', -'鐕' => '鐕', -'𨯺' => '𨯺', -'開' => '開', -'䦕' => '䦕', -'閷' => '閷', -'𨵷' => '𨵷', -'䧦' => '䧦', -'雃' => '雃', -'嶲' => '嶲', -'霣' => '霣', -'𩅅' => '𩅅', -'𩈚' => '𩈚', -'䩮' => '䩮', -'䩶' => '䩶', -'韠' => '韠', -'𩐊' => '𩐊', -'䪲' => '䪲', -'𩒖' => '𩒖', -'頋' => '頋', -'頋' => '頋', -'頩' => '頩', -'𩖶' => '𩖶', -'飢' => '飢', -'䬳' => '䬳', -'餩' => '餩', -'馧' => '馧', -'駂' => '駂', -'駾' => '駾', -'䯎' => '䯎', -'𩬰' => '𩬰', -'鬒' => '鬒', -'鱀' => '鱀', -'鳽' => '鳽', -'䳎' => '䳎', -'䳭' => '䳭', -'鵧' => '鵧', -'𪃎' => '𪃎', -'䳸' => '䳸', -'𪄅' => '𪄅', -'𪈎' => '𪈎', -'𪊑' => '𪊑', -'麻' => '麻', -'䵖' => '䵖', -'黹' => '黹', -'黾' => '黾', -'鼅' => '鼅', -'鼏' => '鼏', -'鼖' => '鼖', -'鼻' => '鼻', -'𪘀' => '𪘀', -); diff --git a/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php deleted file mode 100644 index 9f4065683..000000000 --- a/composer/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/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php b/composer/vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php deleted file mode 100644 index e35a5f06c..000000000 --- a/composer/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', -'ij' => 'ij', -'Ŀ' => 'L·', -'ŀ' => 'l·', -'ʼn' => 'ʼn', -'ſ' => 's', -'DŽ' => 'DŽ', -'Dž' => 'Dž', -'dž' => 'dž', -'LJ' => 'LJ', -'Lj' => 'Lj', -'lj' => 'lj', -'NJ' => 'NJ', -'Nj' => 'Nj', -'nj' => 'nj', -'DZ' => 'DZ', -'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' => 'ff', -'fi' => 'fi', -'fl' => 'fl', -'ffi' => 'ffi', -'ffl' => 'ffl', -'ſt' => 'st', -'st' => 'st', -'ﬓ' => 'մն', -'ﬔ' => 'մե', -'ﬕ' => 'մի', -'ﬖ' => 'վն', -'ﬗ' => 'մխ', -'ﬠ' => 'ע', -'ﬡ' => 'א', -'ﬢ' => 'ד', -'ﬣ' => 'ה', -'ﬤ' => 'כ', -'ﬥ' => 'ל', -'ﬦ' => 'ם', -'ﬧ' => 'ר', -'ﬨ' => 'ת', -'﬩' => '+', -'ﭏ' => 'אל', -'ﭐ' => 'ٱ', -'ﭑ' => 'ٱ', -'ﭒ' => 'ٻ', -'ﭓ' => 'ٻ', -'ﭔ' => 'ٻ', -'ﭕ' => 'ٻ', -'ﭖ' => 'پ', -'ﭗ' => 'پ', -'ﭘ' => 'پ', -'ﭙ' => 'پ', -'ﭚ' => 'ڀ', -'ﭛ' => 'ڀ', -'ﭜ' => 'ڀ', -'ﭝ' => 'ڀ', -'ﭞ' => 'ٺ', -'ﭟ' => 'ٺ', -'ﭠ' => 'ٺ', -'ﭡ' => 'ٺ', -'ﭢ' => 'ٿ', -'ﭣ' => 'ٿ', -'ﭤ' => 'ٿ', -'ﭥ' => 'ٿ', -'ﭦ' => 'ٹ', -'ﭧ' => 'ٹ', -'ﭨ' => 'ٹ', -'ﭩ' => 'ٹ', -'ﭪ' => 'ڤ', -'ﭫ' => 'ڤ', -'ﭬ' => 'ڤ', -'ﭭ' => 'ڤ', -'ﭮ' => 'ڦ', -'ﭯ' => 'ڦ', -'ﭰ' => 'ڦ', -'ﭱ' => 'ڦ', -'ﭲ' => 'ڄ', -'ﭳ' => 'ڄ', -'ﭴ' => 'ڄ', -'ﭵ' => 'ڄ', -'ﭶ' => 'ڃ', -'ﭷ' => 'ڃ', -'ﭸ' => 'ڃ', -'ﭹ' => 'ڃ', -'ﭺ' => 'چ', -'ﭻ' => 'چ', -'ﭼ' => 'چ', -'ﭽ' => 'چ', -'ﭾ' => 'ڇ', -'ﭿ' => 'ڇ', -'ﮀ' => 'ڇ', -'ﮁ' => 'ڇ', -'ﮂ' => 'ڍ', -'ﮃ' => 'ڍ', -'ﮄ' => 'ڌ', -'ﮅ' => 'ڌ', -'ﮆ' => 'ڎ', -'ﮇ' => 'ڎ', -'ﮈ' => 'ڈ', -'ﮉ' => 'ڈ', -'ﮊ' => 'ژ', -'ﮋ' => 'ژ', -'ﮌ' => 'ڑ', -'ﮍ' => 'ڑ', -'ﮎ' => 'ک', -'ﮏ' => 'ک', -'ﮐ' => 'ک', -'ﮑ' => 'ک', -'ﮒ' => 'گ', -'ﮓ' => 'گ', -'ﮔ' => 'گ', -'ﮕ' => 'گ', -'ﮖ' => 'ڳ', -'ﮗ' => 'ڳ', -'ﮘ' => 'ڳ', -'ﮙ' => 'ڳ', -'ﮚ' => 'ڱ', -'ﮛ' => 'ڱ', -'ﮜ' => 'ڱ', -'ﮝ' => 'ڱ', -'ﮞ' => 'ں', -'ﮟ' => 'ں', -'ﮠ' => 'ڻ', -'ﮡ' => 'ڻ', -'ﮢ' => 'ڻ', -'ﮣ' => 'ڻ', -'ﮤ' => 'ۀ', -'ﮥ' => 'ۀ', -'ﮦ' => 'ہ', -'ﮧ' => 'ہ', -'ﮨ' => 'ہ', -'ﮩ' => 'ہ', -'ﮪ' => 'ھ', -'ﮫ' => 'ھ', -'ﮬ' => 'ھ', -'ﮭ' => 'ھ', -'ﮮ' => 'ے', -'ﮯ' => 'ے', -'ﮰ' => 'ۓ', -'ﮱ' => 'ۓ', -'ﯓ' => 'ڭ', -'ﯔ' => 'ڭ', -'ﯕ' => 'ڭ', -'ﯖ' => 'ڭ', -'ﯗ' => 'ۇ', -'ﯘ' => 'ۇ', -'ﯙ' => 'ۆ', -'ﯚ' => 'ۆ', -'ﯛ' => 'ۈ', -'ﯜ' => 'ۈ', -'ﯝ' => 'ۇٴ', -'ﯞ' => 'ۋ', -'ﯟ' => 'ۋ', -'ﯠ' => 'ۅ', -'ﯡ' => 'ۅ', -'ﯢ' => 'ۉ', -'ﯣ' => 'ۉ', -'ﯤ' => 'ې', -'ﯥ' => 'ې', -'ﯦ' => 'ې', -'ﯧ' => 'ې', -'ﯨ' => 'ى', -'ﯩ' => 'ى', -'ﯪ' => 'ئا', -'ﯫ' => 'ئا', -'ﯬ' => 'ئە', -'ﯭ' => 'ئە', -'ﯮ' => 'ئو', -'ﯯ' => 'ئو', -'ﯰ' => 'ئۇ', -'ﯱ' => 'ئۇ', -'ﯲ' => 'ئۆ', -'ﯳ' => 'ئۆ', -'ﯴ' => 'ئۈ', -'ﯵ' => 'ئۈ', -'ﯶ' => 'ئې', -'ﯷ' => 'ئې', -'ﯸ' => 'ئې', -'ﯹ' => 'ئى', -'ﯺ' => 'ئى', -'ﯻ' => 'ئى', -'ﯼ' => 'ی', -'ﯽ' => 'ی', -'ﯾ' => 'ی', -'ﯿ' => 'ی', -'ﰀ' => 'ئج', -'ﰁ' => 'ئح', -'ﰂ' => 'ئم', -'ﰃ' => 'ئى', -'ﰄ' => 'ئي', -'ﰅ' => 'بج', -'ﰆ' => 'بح', -'ﰇ' => 'بخ', -'ﰈ' => 'بم', -'ﰉ' => 'بى', -'ﰊ' => 'بي', -'ﰋ' => 'تج', -'ﰌ' => 'تح', -'ﰍ' => 'تخ', -'ﰎ' => 'تم', -'ﰏ' => 'تى', -'ﰐ' => 'تي', -'ﰑ' => 'ثج', -'ﰒ' => 'ثم', -'ﰓ' => 'ثى', -'ﰔ' => 'ثي', -'ﰕ' => 'جح', -'ﰖ' => 'جم', -'ﰗ' => 'حج', -'ﰘ' => 'حم', -'ﰙ' => 'خج', -'ﰚ' => 'خح', -'ﰛ' => 'خم', -'ﰜ' => 'سج', -'ﰝ' => 'سح', -'ﰞ' => 'سخ', -'ﰟ' => 'سم', -'ﰠ' => 'صح', -'ﰡ' => 'صم', -'ﰢ' => 'ضج', -'ﰣ' => 'ضح', -'ﰤ' => 'ضخ', -'ﰥ' => 'ضم', -'ﰦ' => 'طح', -'ﰧ' => 'طم', -'ﰨ' => 'ظم', -'ﰩ' => 'عج', -'ﰪ' => 'عم', -'ﰫ' => 'غج', -'ﰬ' => 'غم', -'ﰭ' => 'فج', -'ﰮ' => 'فح', -'ﰯ' => 'فخ', -'ﰰ' => 'فم', -'ﰱ' => 'فى', -'ﰲ' => 'في', -'ﰳ' => 'قح', -'ﰴ' => 'قم', -'ﰵ' => 'قى', -'ﰶ' => 'قي', -'ﰷ' => 'كا', -'ﰸ' => 'كج', -'ﰹ' => 'كح', -'ﰺ' => 'كخ', -'ﰻ' => 'كل', -'ﰼ' => 'كم', -'ﰽ' => 'كى', -'ﰾ' => 'كي', -'ﰿ' => 'لج', -'ﱀ' => 'لح', -'ﱁ' => 'لخ', -'ﱂ' => 'لم', -'ﱃ' => 'لى', -'ﱄ' => 'لي', -'ﱅ' => 'مج', -'ﱆ' => 'مح', -'ﱇ' => 'مخ', -'ﱈ' => 'مم', -'ﱉ' => 'مى', -'ﱊ' => 'مي', -'ﱋ' => 'نج', -'ﱌ' => 'نح', -'ﱍ' => 'نخ', -'ﱎ' => 'نم', -'ﱏ' => 'نى', -'ﱐ' => 'ني', -'ﱑ' => 'هج', -'ﱒ' => 'هم', -'ﱓ' => 'هى', -'ﱔ' => 'هي', -'ﱕ' => 'يج', -'ﱖ' => 'يح', -'ﱗ' => 'يخ', -'ﱘ' => 'يم', -'ﱙ' => 'يى', -'ﱚ' => 'يي', -'ﱛ' => 'ذٰ', -'ﱜ' => 'رٰ', -'ﱝ' => 'ىٰ', -'ﱞ' => ' ٌّ', -'ﱟ' => ' ٍّ', -'ﱠ' => ' َّ', -'ﱡ' => ' ُّ', -'ﱢ' => ' ِّ', -'ﱣ' => ' ّٰ', -'ﱤ' => 'ئر', -'ﱥ' => 'ئز', -'ﱦ' => 'ئم', -'ﱧ' => 'ئن', -'ﱨ' => 'ئى', -'ﱩ' => 'ئي', -'ﱪ' => 'بر', -'ﱫ' => 'بز', -'ﱬ' => 'بم', -'ﱭ' => 'بن', -'ﱮ' => 'بى', -'ﱯ' => 'بي', -'ﱰ' => 'تر', -'ﱱ' => 'تز', -'ﱲ' => 'تم', -'ﱳ' => 'تن', -'ﱴ' => 'تى', -'ﱵ' => 'تي', -'ﱶ' => 'ثر', -'ﱷ' => 'ثز', -'ﱸ' => 'ثم', -'ﱹ' => 'ثن', -'ﱺ' => 'ثى', -'ﱻ' => 'ثي', -'ﱼ' => 'فى', -'ﱽ' => 'في', -'ﱾ' => 'قى', -'ﱿ' => 'قي', -'ﲀ' => 'كا', -'ﲁ' => 'كل', -'ﲂ' => 'كم', -'ﲃ' => 'كى', -'ﲄ' => 'كي', -'ﲅ' => 'لم', -'ﲆ' => 'لى', -'ﲇ' => 'لي', -'ﲈ' => 'ما', -'ﲉ' => 'مم', -'ﲊ' => 'نر', -'ﲋ' => 'نز', -'ﲌ' => 'نم', -'ﲍ' => 'نن', -'ﲎ' => 'نى', -'ﲏ' => 'ني', -'ﲐ' => 'ىٰ', -'ﲑ' => 'ير', -'ﲒ' => 'يز', -'ﲓ' => 'يم', -'ﲔ' => 'ين', -'ﲕ' => 'يى', -'ﲖ' => 'يي', -'ﲗ' => 'ئج', -'ﲘ' => 'ئح', -'ﲙ' => 'ئخ', -'ﲚ' => 'ئم', -'ﲛ' => 'ئه', -'ﲜ' => 'بج', -'ﲝ' => 'بح', -'ﲞ' => 'بخ', -'ﲟ' => 'بم', -'ﲠ' => 'به', -'ﲡ' => 'تج', -'ﲢ' => 'تح', -'ﲣ' => 'تخ', -'ﲤ' => 'تم', -'ﲥ' => 'ته', -'ﲦ' => 'ثم', -'ﲧ' => 'جح', -'ﲨ' => 'جم', -'ﲩ' => 'حج', -'ﲪ' => 'حم', -'ﲫ' => 'خج', -'ﲬ' => 'خم', -'ﲭ' => 'سج', -'ﲮ' => 'سح', -'ﲯ' => 'سخ', -'ﲰ' => 'سم', -'ﲱ' => 'صح', -'ﲲ' => 'صخ', -'ﲳ' => 'صم', -'ﲴ' => 'ضج', -'ﲵ' => 'ضح', -'ﲶ' => 'ضخ', -'ﲷ' => 'ضم', -'ﲸ' => 'طح', -'ﲹ' => 'ظم', -'ﲺ' => 'عج', -'ﲻ' => 'عم', -'ﲼ' => 'غج', -'ﲽ' => 'غم', -'ﲾ' => 'فج', -'ﲿ' => 'فح', -'ﳀ' => 'فخ', -'ﳁ' => 'فم', -'ﳂ' => 'قح', -'ﳃ' => 'قم', -'ﳄ' => 'كج', -'ﳅ' => 'كح', -'ﳆ' => 'كخ', -'ﳇ' => 'كل', -'ﳈ' => 'كم', -'ﳉ' => 'لج', -'ﳊ' => 'لح', -'ﳋ' => 'لخ', -'ﳌ' => 'لم', -'ﳍ' => 'له', -'ﳎ' => 'مج', -'ﳏ' => 'مح', -'ﳐ' => 'مخ', -'ﳑ' => 'مم', -'ﳒ' => 'نج', -'ﳓ' => 'نح', -'ﳔ' => 'نخ', -'ﳕ' => 'نم', -'ﳖ' => 'نه', -'ﳗ' => 'هج', -'ﳘ' => 'هم', -'ﳙ' => 'هٰ', -'ﳚ' => 'يج', -'ﳛ' => 'يح', -'ﳜ' => 'يخ', -'ﳝ' => 'يم', -'ﳞ' => 'يه', -'ﳟ' => 'ئم', -'ﳠ' => 'ئه', -'ﳡ' => 'بم', -'ﳢ' => 'به', -'ﳣ' => 'تم', -'ﳤ' => 'ته', -'ﳥ' => 'ثم', -'ﳦ' => 'ثه', -'ﳧ' => 'سم', -'ﳨ' => 'سه', -'ﳩ' => 'شم', -'ﳪ' => 'شه', -'ﳫ' => 'كل', -'ﳬ' => 'كم', -'ﳭ' => 'لم', -'ﳮ' => 'نم', -'ﳯ' => 'نه', -'ﳰ' => 'يم', -'ﳱ' => 'يه', -'ﳲ' => 'ـَّ', -'ﳳ' => 'ـُّ', -'ﳴ' => 'ـِّ', -'ﳵ' => 'طى', -'ﳶ' => 'طي', -'ﳷ' => 'عى', -'ﳸ' => 'عي', -'ﳹ' => 'غى', -'ﳺ' => 'غي', -'ﳻ' => 'سى', -'ﳼ' => 'سي', -'ﳽ' => 'شى', -'ﳾ' => 'شي', -'ﳿ' => 'حى', -'ﴀ' => 'حي', -'ﴁ' => 'جى', -'ﴂ' => 'جي', -'ﴃ' => 'خى', -'ﴄ' => 'خي', -'ﴅ' => 'صى', -'ﴆ' => 'صي', -'ﴇ' => 'ضى', -'ﴈ' => 'ضي', -'ﴉ' => 'شج', -'ﴊ' => 'شح', -'ﴋ' => 'شخ', -'ﴌ' => 'شم', -'ﴍ' => 'شر', -'ﴎ' => 'سر', -'ﴏ' => 'صر', -'ﴐ' => 'ضر', -'ﴑ' => 'طى', -'ﴒ' => 'طي', -'ﴓ' => 'عى', -'ﴔ' => 'عي', -'ﴕ' => 'غى', -'ﴖ' => 'غي', -'ﴗ' => 'سى', -'ﴘ' => 'سي', -'ﴙ' => 'شى', -'ﴚ' => 'شي', -'ﴛ' => 'حى', -'ﴜ' => 'حي', -'ﴝ' => 'جى', -'ﴞ' => 'جي', -'ﴟ' => 'خى', -'ﴠ' => 'خي', -'ﴡ' => 'صى', -'ﴢ' => 'صي', -'ﴣ' => 'ضى', -'ﴤ' => 'ضي', -'ﴥ' => 'شج', -'ﴦ' => 'شح', -'ﴧ' => 'شخ', -'ﴨ' => 'شم', -'ﴩ' => 'شر', -'ﴪ' => 'سر', -'ﴫ' => 'صر', -'ﴬ' => 'ضر', -'ﴭ' => 'شج', -'ﴮ' => 'شح', -'ﴯ' => 'شخ', -'ﴰ' => 'شم', -'ﴱ' => 'سه', -'ﴲ' => 'شه', -'ﴳ' => 'طم', -'ﴴ' => 'سج', -'ﴵ' => 'سح', -'ﴶ' => 'سخ', -'ﴷ' => 'شج', -'ﴸ' => 'شح', -'ﴹ' => 'شخ', -'ﴺ' => 'طم', -'ﴻ' => 'ظم', -'ﴼ' => 'اً', -'ﴽ' => 'اً', -'ﵐ' => 'تجم', -'ﵑ' => 'تحج', -'ﵒ' => 'تحج', -'ﵓ' => 'تحم', -'ﵔ' => 'تخم', -'ﵕ' => 'تمج', -'ﵖ' => 'تمح', -'ﵗ' => 'تمخ', -'ﵘ' => 'جمح', -'ﵙ' => 'جمح', -'ﵚ' => 'حمي', -'ﵛ' => 'حمى', -'ﵜ' => 'سحج', -'ﵝ' => 'سجح', -'ﵞ' => 'سجى', -'ﵟ' => 'سمح', -'ﵠ' => 'سمح', -'ﵡ' => 'سمج', -'ﵢ' => 'سمم', -'ﵣ' => 'سمم', -'ﵤ' => 'صحح', -'ﵥ' => 'صحح', -'ﵦ' => 'صمم', -'ﵧ' => 'شحم', -'ﵨ' => 'شحم', -'ﵩ' => 'شجي', -'ﵪ' => 'شمخ', -'ﵫ' => 'شمخ', -'ﵬ' => 'شمم', -'ﵭ' => 'شمم', -'ﵮ' => 'ضحى', -'ﵯ' => 'ضخم', -'ﵰ' => 'ضخم', -'ﵱ' => 'طمح', -'ﵲ' => 'طمح', -'ﵳ' => 'طمم', -'ﵴ' => 'طمي', -'ﵵ' => 'عجم', -'ﵶ' => 'عمم', -'ﵷ' => 'عمم', -'ﵸ' => 'عمى', -'ﵹ' => 'غمم', -'ﵺ' => 'غمي', -'ﵻ' => 'غمى', -'ﵼ' => 'فخم', -'ﵽ' => 'فخم', -'ﵾ' => 'قمح', -'ﵿ' => 'قمم', -'ﶀ' => 'لحم', -'ﶁ' => 'لحي', -'ﶂ' => 'لحى', -'ﶃ' => 'لجج', -'ﶄ' => 'لجج', -'ﶅ' => 'لخم', -'ﶆ' => 'لخم', -'ﶇ' => 'لمح', -'ﶈ' => 'لمح', -'ﶉ' => 'محج', -'ﶊ' => 'محم', -'ﶋ' => 'محي', -'ﶌ' => 'مجح', -'ﶍ' => 'مجم', -'ﶎ' => 'مخج', -'ﶏ' => 'مخم', -'ﶒ' => 'مجخ', -'ﶓ' => 'همج', -'ﶔ' => 'همم', -'ﶕ' => 'نحم', -'ﶖ' => 'نحى', -'ﶗ' => 'نجم', -'ﶘ' => 'نجم', -'ﶙ' => 'نجى', -'ﶚ' => 'نمي', -'ﶛ' => 'نمى', -'ﶜ' => 'يمم', -'ﶝ' => 'يمم', -'ﶞ' => 'بخي', -'ﶟ' => 'تجي', -'ﶠ' => 'تجى', -'ﶡ' => 'تخي', -'ﶢ' => 'تخى', -'ﶣ' => 'تمي', -'ﶤ' => 'تمى', -'ﶥ' => 'جمي', -'ﶦ' => 'جحى', -'ﶧ' => 'جمى', -'ﶨ' => 'سخى', -'ﶩ' => 'صحي', -'ﶪ' => 'شحي', -'ﶫ' => 'ضحي', -'ﶬ' => 'لجي', -'ﶭ' => 'لمي', -'ﶮ' => 'يحي', -'ﶯ' => 'يجي', -'ﶰ' => 'يمي', -'ﶱ' => 'ممي', -'ﶲ' => 'قمي', -'ﶳ' => 'نحي', -'ﶴ' => 'قمح', -'ﶵ' => 'لحم', -'ﶶ' => 'عمي', -'ﶷ' => 'كمي', -'ﶸ' => 'نجح', -'ﶹ' => 'مخي', -'ﶺ' => 'لجم', -'ﶻ' => 'كمم', -'ﶼ' => 'لجم', -'ﶽ' => 'نجح', -'ﶾ' => 'جحي', -'ﶿ' => 'حجي', -'ﷀ' => 'مجي', -'ﷁ' => 'فمي', -'ﷂ' => 'بحي', -'ﷃ' => 'كمم', -'ﷄ' => 'عجم', -'ﷅ' => 'صمم', -'ﷆ' => 'سخي', -'ﷇ' => 'نجي', -'ﷰ' => 'صلے', -'ﷱ' => 'قلے', -'ﷲ' => 'الله', -'ﷳ' => 'اكبر', -'ﷴ' => 'محمد', -'ﷵ' => 'صلعم', -'ﷶ' => 'رسول', -'ﷷ' => 'عليه', -'ﷸ' => 'وسلم', -'ﷹ' => 'صلى', -'ﷺ' => 'صلى الله عليه وسلم', -'ﷻ' => 'جل جلاله', -'﷼' => 'ریال', -'︐' => ',', -'︑' => '、', -'︒' => '。', -'︓' => ':', -'︔' => ';', -'︕' => '!', -'︖' => '?', -'︗' => '〖', -'︘' => '〗', -'︙' => '...', -'︰' => '..', -'︱' => '—', -'︲' => '–', -'︳' => '_', -'︴' => '_', -'︵' => '(', -'︶' => ')', -'︷' => '{', -'︸' => '}', -'︹' => '〔', -'︺' => '〕', -'︻' => '【', -'︼' => '】', -'︽' => '《', -'︾' => '》', -'︿' => '〈', -'﹀' => '〉', -'﹁' => '「', -'﹂' => '」', -'﹃' => '『', -'﹄' => '』', -'﹇' => '[', -'﹈' => ']', -'﹉' => ' ̅', -'﹊' => ' ̅', -'﹋' => ' ̅', -'﹌' => ' ̅', -'﹍' => '_', -'﹎' => '_', -'﹏' => '_', -'﹐' => ',', -'﹑' => '、', -'﹒' => '.', -'﹔' => ';', -'﹕' => ':', -'﹖' => '?', -'﹗' => '!', -'﹘' => '—', -'﹙' => '(', -'﹚' => ')', -'﹛' => '{', -'﹜' => '}', -'﹝' => '〔', -'﹞' => '〕', -'﹟' => '#', -'﹠' => '&', -'﹡' => '*', -'﹢' => '+', -'﹣' => '-', -'﹤' => '<', -'﹥' => '>', -'﹦' => '=', -'﹨' => '\\', -'﹩' => '$', -'﹪' => '%', -'﹫' => '@', -'ﹰ' => ' ً', -'ﹱ' => 'ـً', -'ﹲ' => ' ٌ', -'ﹴ' => ' ٍ', -'ﹶ' => ' َ', -'ﹷ' => 'ـَ', -'ﹸ' => ' ُ', -'ﹹ' => 'ـُ', -'ﹺ' => ' ِ', -'ﹻ' => 'ـِ', -'ﹼ' => ' ّ', -'ﹽ' => 'ـّ', -'ﹾ' => ' ْ', -'ﹿ' => 'ـْ', -'ﺀ' => 'ء', -'ﺁ' => 'آ', -'ﺂ' => 'آ', -'ﺃ' => 'أ', -'ﺄ' => 'أ', -'ﺅ' => 'ؤ', -'ﺆ' => 'ؤ', -'ﺇ' => 'إ', -'ﺈ' => 'إ', -'ﺉ' => 'ئ', -'ﺊ' => 'ئ', -'ﺋ' => 'ئ', -'ﺌ' => 'ئ', -'ﺍ' => 'ا', -'ﺎ' => 'ا', -'ﺏ' => 'ب', -'ﺐ' => 'ب', -'ﺑ' => 'ب', -'ﺒ' => 'ب', -'ﺓ' => 'ة', -'ﺔ' => 'ة', -'ﺕ' => 'ت', -'ﺖ' => 'ت', -'ﺗ' => 'ت', -'ﺘ' => 'ت', -'ﺙ' => 'ث', -'ﺚ' => 'ث', -'ﺛ' => 'ث', -'ﺜ' => 'ث', -'ﺝ' => 'ج', -'ﺞ' => 'ج', -'ﺟ' => 'ج', -'ﺠ' => 'ج', -'ﺡ' => 'ح', -'ﺢ' => 'ح', -'ﺣ' => 'ح', -'ﺤ' => 'ح', -'ﺥ' => 'خ', -'ﺦ' => 'خ', -'ﺧ' => 'خ', -'ﺨ' => 'خ', -'ﺩ' => 'د', -'ﺪ' => 'د', -'ﺫ' => 'ذ', -'ﺬ' => 'ذ', -'ﺭ' => 'ر', -'ﺮ' => 'ر', -'ﺯ' => 'ز', -'ﺰ' => 'ز', -'ﺱ' => 'س', -'ﺲ' => 'س', -'ﺳ' => 'س', -'ﺴ' => 'س', -'ﺵ' => 'ش', -'ﺶ' => 'ش', -'ﺷ' => 'ش', -'ﺸ' => 'ش', -'ﺹ' => 'ص', -'ﺺ' => 'ص', -'ﺻ' => 'ص', -'ﺼ' => 'ص', -'ﺽ' => 'ض', -'ﺾ' => 'ض', -'ﺿ' => 'ض', -'ﻀ' => 'ض', -'ﻁ' => 'ط', -'ﻂ' => 'ط', -'ﻃ' => 'ط', -'ﻄ' => 'ط', -'ﻅ' => 'ظ', -'ﻆ' => 'ظ', -'ﻇ' => 'ظ', -'ﻈ' => 'ظ', -'ﻉ' => 'ع', -'ﻊ' => 'ع', -'ﻋ' => 'ع', -'ﻌ' => 'ع', -'ﻍ' => 'غ', -'ﻎ' => 'غ', -'ﻏ' => 'غ', -'ﻐ' => 'غ', -'ﻑ' => 'ف', -'ﻒ' => 'ف', -'ﻓ' => 'ف', -'ﻔ' => 'ف', -'ﻕ' => 'ق', -'ﻖ' => 'ق', -'ﻗ' => 'ق', -'ﻘ' => 'ق', -'ﻙ' => 'ك', -'ﻚ' => 'ك', -'ﻛ' => 'ك', -'ﻜ' => 'ك', -'ﻝ' => 'ل', -'ﻞ' => 'ل', -'ﻟ' => 'ل', -'ﻠ' => 'ل', -'ﻡ' => 'م', -'ﻢ' => 'م', -'ﻣ' => 'م', -'ﻤ' => 'م', -'ﻥ' => 'ن', -'ﻦ' => 'ن', -'ﻧ' => 'ن', -'ﻨ' => 'ن', -'ﻩ' => 'ه', -'ﻪ' => 'ه', -'ﻫ' => 'ه', -'ﻬ' => 'ه', -'ﻭ' => 'و', -'ﻮ' => 'و', -'ﻯ' => 'ى', -'ﻰ' => 'ى', -'ﻱ' => 'ي', -'ﻲ' => 'ي', -'ﻳ' => 'ي', -'ﻴ' => 'ي', -'ﻵ' => 'لآ', -'ﻶ' => 'لآ', -'ﻷ' => 'لأ', -'ﻸ' => 'لأ', -'ﻹ' => 'لإ', -'ﻺ' => 'لإ', -'ﻻ' => 'لا', -'ﻼ' => 'لا', -'!' => '!', -'"' => '"', -'#' => '#', -'$' => '$', -'%' => '%', -'&' => '&', -''' => '\'', -'(' => '(', -')' => ')', -'*' => '*', -'+' => '+', -',' => ',', -'-' => '-', -'.' => '.', -'/' => '/', -'0' => '0', -'1' => '1', -'2' => '2', -'3' => '3', -'4' => '4', -'5' => '5', -'6' => '6', -'7' => '7', -'8' => '8', -'9' => '9', -':' => ':', -';' => ';', -'<' => '<', -'=' => '=', -'>' => '>', -'?' => '?', -'@' => '@', -'A' => 'A', -'B' => 'B', -'C' => 'C', -'D' => 'D', -'E' => 'E', -'F' => 'F', -'G' => 'G', -'H' => 'H', -'I' => 'I', -'J' => 'J', -'K' => 'K', -'L' => 'L', -'M' => 'M', -'N' => 'N', -'O' => 'O', -'P' => 'P', -'Q' => 'Q', -'R' => 'R', -'S' => 'S', -'T' => 'T', -'U' => 'U', -'V' => 'V', -'W' => 'W', -'X' => 'X', -'Y' => 'Y', -'Z' => 'Z', -'[' => '[', -'\' => '\\', -']' => ']', -'^' => '^', -'_' => '_', -'`' => '`', -'a' => 'a', -'b' => 'b', -'c' => 'c', -'d' => 'd', -'e' => 'e', -'f' => 'f', -'g' => 'g', -'h' => 'h', -'i' => 'i', -'j' => 'j', -'k' => 'k', -'l' => 'l', -'m' => 'm', -'n' => 'n', -'o' => 'o', -'p' => 'p', -'q' => 'q', -'r' => 'r', -'s' => 's', -'t' => 't', -'u' => 'u', -'v' => 'v', -'w' => 'w', -'x' => 'x', -'y' => 'y', -'z' => '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/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php b/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php deleted file mode 100644 index 3df89cc71..000000000 --- a/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap.php +++ /dev/null @@ -1,23 +0,0 @@ -= 80000) { -return require __DIR__.'/bootstrap80.php'; -} - -if (!function_exists('normalizer_is_normalized')) { -function normalizer_is_normalized($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::isNormalized($string, $form); } -} -if (!function_exists('normalizer_normalize')) { -function normalizer_normalize($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::normalize($string, $form); } -} diff --git a/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php b/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php deleted file mode 100644 index 606aed37b..000000000 --- a/composer/vendor/symfony/polyfill-intl-normalizer/bootstrap80.php +++ /dev/null @@ -1,19 +0,0 @@ - \PHP_VERSION_ID && !$convmap)) { -return false; -} - -if (null !== $encoding && !\is_scalar($encoding)) { -trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); - -return ''; -} - -$s = (string) $s; -if ('' === $s) { -return ''; -} - -$encoding = self::getEncoding($encoding); - -if ('UTF-8' === $encoding) { -$encoding = null; -if (!preg_match('//u', $s)) { -$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); -} -} else { -$s = iconv($encoding, 'UTF-8//IGNORE', $s); -} - -$cnt = floor(\count($convmap) / 4) * 4; - -for ($i = 0; $i < $cnt; $i += 4) { - -$convmap[$i] += $convmap[$i + 2]; -$convmap[$i + 1] += $convmap[$i + 2]; -} - -$s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { -$c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; -for ($i = 0; $i < $cnt; $i += 4) { -if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { -return self::mb_chr($c - $convmap[$i + 2]); -} -} - -return $m[0]; -}, $s); - -if (null === $encoding) { -return $s; -} - -return iconv('UTF-8', $encoding.'//IGNORE', $s); -} - -public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) -{ -if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { -trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); - -return null; -} - -if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { -return false; -} - -if (null !== $encoding && !\is_scalar($encoding)) { -trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); - -return null; -} - -if (null !== $is_hex && !\is_scalar($is_hex)) { -trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING); - -return null; -} - -$s = (string) $s; -if ('' === $s) { -return ''; -} - -$encoding = self::getEncoding($encoding); - -if ('UTF-8' === $encoding) { -$encoding = null; -if (!preg_match('//u', $s)) { -$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); -} -} else { -$s = iconv($encoding, 'UTF-8//IGNORE', $s); -} - -static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; - -$cnt = floor(\count($convmap) / 4) * 4; -$i = 0; -$len = \strlen($s); -$result = ''; - -while ($i < $len) { -$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; -$uchr = substr($s, $i, $ulen); -$i += $ulen; -$c = self::mb_ord($uchr); - -for ($j = 0; $j < $cnt; $j += 4) { -if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { -$cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; -$result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; -continue 2; -} -} -$result .= $uchr; -} - -if (null === $encoding) { -return $result; -} - -return iconv('UTF-8', $encoding.'//IGNORE', $result); -} - -public static function mb_convert_case($s, $mode, $encoding = null) -{ -$s = (string) $s; -if ('' === $s) { -return ''; -} - -$encoding = self::getEncoding($encoding); - -if ('UTF-8' === $encoding) { -$encoding = null; -if (!preg_match('//u', $s)) { -$s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); -} -} else { -$s = iconv($encoding, 'UTF-8//IGNORE', $s); -} - -if (\MB_CASE_TITLE == $mode) { -static $titleRegexp = null; -if (null === $titleRegexp) { -$titleRegexp = self::getData('titleCaseRegexp'); -} -$s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s); -} else { -if (\MB_CASE_UPPER == $mode) { -static $upper = null; -if (null === $upper) { -$upper = self::getData('upperCase'); -} -$map = $upper; -} else { -if (self::MB_CASE_FOLD === $mode) { -$s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); -} - -static $lower = null; -if (null === $lower) { -$lower = self::getData('lowerCase'); -} -$map = $lower; -} - -static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; - -$i = 0; -$len = \strlen($s); - -while ($i < $len) { -$ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; -$uchr = substr($s, $i, $ulen); -$i += $ulen; - -if (isset($map[$uchr])) { -$uchr = $map[$uchr]; -$nlen = \strlen($uchr); - -if ($nlen == $ulen) { -$nlen = $i; -do { -$s[--$nlen] = $uchr[--$ulen]; -} while ($ulen); -} else { -$s = substr_replace($s, $uchr, $i - $ulen, $ulen); -$len += $nlen - $ulen; -$i += $nlen - $ulen; -} -} -} -} - -if (null === $encoding) { -return $s; -} - -return iconv('UTF-8', $encoding.'//IGNORE', $s); -} - -public static function mb_internal_encoding($encoding = null) -{ -if (null === $encoding) { -return self::$internalEncoding; -} - -$normalizedEncoding = self::getEncoding($encoding); - -if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) { -self::$internalEncoding = $normalizedEncoding; - -return true; -} - -if (80000 > \PHP_VERSION_ID) { -return false; -} - -throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding)); -} - -public static function mb_language($lang = null) -{ -if (null === $lang) { -return self::$language; -} - -switch ($normalizedLang = strtolower($lang)) { -case 'uni': -case 'neutral': -self::$language = $normalizedLang; - -return true; -} - -if (80000 > \PHP_VERSION_ID) { -return false; -} - -throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang)); -} - -public static function mb_list_encodings() -{ -return ['UTF-8']; -} - -public static function mb_encoding_aliases($encoding) -{ -switch (strtoupper($encoding)) { -case 'UTF8': -case 'UTF-8': -return ['utf8']; -} - -return false; -} - -public static function mb_check_encoding($var = null, $encoding = null) -{ -if (null === $encoding) { -if (null === $var) { -return false; -} -$encoding = self::$internalEncoding; -} - -return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var); -} - -public static function mb_detect_encoding($str, $encodingList = null, $strict = false) -{ -if (null === $encodingList) { -$encodingList = self::$encodingList; -} else { -if (!\is_array($encodingList)) { -$encodingList = array_map('trim', explode(',', $encodingList)); -} -$encodingList = array_map('strtoupper', $encodingList); -} - -foreach ($encodingList as $enc) { -switch ($enc) { -case 'ASCII': -if (!preg_match('/[\x80-\xFF]/', $str)) { -return $enc; -} -break; - -case 'UTF8': -case 'UTF-8': -if (preg_match('//u', $str)) { -return 'UTF-8'; -} -break; - -default: -if (0 === strncmp($enc, 'ISO-8859-', 9)) { -return $enc; -} -} -} - -return false; -} - -public static function mb_detect_order($encodingList = null) -{ -if (null === $encodingList) { -return self::$encodingList; -} - -if (!\is_array($encodingList)) { -$encodingList = array_map('trim', explode(',', $encodingList)); -} -$encodingList = array_map('strtoupper', $encodingList); - -foreach ($encodingList as $enc) { -switch ($enc) { -default: -if (strncmp($enc, 'ISO-8859-', 9)) { -return false; -} - -case 'ASCII': -case 'UTF8': -case 'UTF-8': -} -} - -self::$encodingList = $encodingList; - -return true; -} - -public static function mb_strlen($s, $encoding = null) -{ -$encoding = self::getEncoding($encoding); -if ('CP850' === $encoding || 'ASCII' === $encoding) { -return \strlen($s); -} - -return @iconv_strlen($s, $encoding); -} - -public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) -{ -$encoding = self::getEncoding($encoding); -if ('CP850' === $encoding || 'ASCII' === $encoding) { -return strpos($haystack, $needle, $offset); -} - -$needle = (string) $needle; -if ('' === $needle) { -if (80000 > \PHP_VERSION_ID) { -trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING); - -return false; -} - -return 0; -} - -return iconv_strpos($haystack, $needle, $offset, $encoding); -} - -public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) -{ -$encoding = self::getEncoding($encoding); -if ('CP850' === $encoding || 'ASCII' === $encoding) { -return strrpos($haystack, $needle, $offset); -} - -if ($offset != (int) $offset) { -$offset = 0; -} elseif ($offset = (int) $offset) { -if ($offset < 0) { -if (0 > $offset += self::mb_strlen($needle)) { -$haystack = self::mb_substr($haystack, 0, $offset, $encoding); -} -$offset = 0; -} else { -$haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); -} -} - -$pos = '' !== $needle || 80000 > \PHP_VERSION_ID -? iconv_strrpos($haystack, $needle, $encoding) -: self::mb_strlen($haystack, $encoding); - -return false !== $pos ? $offset + $pos : false; -} - -public static function mb_str_split($string, $split_length = 1, $encoding = null) -{ -if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { -trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); - -return null; -} - -if (1 > $split_length = (int) $split_length) { -if (80000 > \PHP_VERSION_ID) { -trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); - -return false; -} - -throw new \ValueError('Argument #2 ($length) must be greater than 0'); -} - -if (null === $encoding) { -$encoding = mb_internal_encoding(); -} - -if ('UTF-8' === $encoding = self::getEncoding($encoding)) { -$rx = '/('; -while (65535 < $split_length) { -$rx .= '.{65535}'; -$split_length -= 65535; -} -$rx .= '.{'.$split_length.'})/us'; - -return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); -} - -$result = []; -$length = mb_strlen($string, $encoding); - -for ($i = 0; $i < $length; $i += $split_length) { -$result[] = mb_substr($string, $i, $split_length, $encoding); -} - -return $result; -} - -public static function mb_strtolower($s, $encoding = null) -{ -return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding); -} - -public static function mb_strtoupper($s, $encoding = null) -{ -return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding); -} - -public static function mb_substitute_character($c = null) -{ -if (null === $c) { -return 'none'; -} -if (0 === strcasecmp($c, 'none')) { -return true; -} -if (80000 > \PHP_VERSION_ID) { -return false; -} -if (\is_int($c) || 'long' === $c || 'entity' === $c) { -return false; -} - -throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint'); -} - -public static function mb_substr($s, $start, $length = null, $encoding = null) -{ -$encoding = self::getEncoding($encoding); -if ('CP850' === $encoding || 'ASCII' === $encoding) { -return (string) substr($s, $start, null === $length ? 2147483647 : $length); -} - -if ($start < 0) { -$start = iconv_strlen($s, $encoding) + $start; -if ($start < 0) { -$start = 0; -} -} - -if (null === $length) { -$length = 2147483647; -} elseif ($length < 0) { -$length = iconv_strlen($s, $encoding) + $length - $start; -if ($length < 0) { -return ''; -} -} - -return (string) iconv_substr($s, $start, $length, $encoding); -} - -public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) -{ -$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); -$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); - -return self::mb_strpos($haystack, $needle, $offset, $encoding); -} - -public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) -{ -$pos = self::mb_stripos($haystack, $needle, 0, $encoding); - -return self::getSubpart($pos, $part, $haystack, $encoding); -} - -public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) -{ -$encoding = self::getEncoding($encoding); -if ('CP850' === $encoding || 'ASCII' === $encoding) { -$pos = strrpos($haystack, $needle); -} else { -$needle = self::mb_substr($needle, 0, 1, $encoding); -$pos = iconv_strrpos($haystack, $needle, $encoding); -} - -return self::getSubpart($pos, $part, $haystack, $encoding); -} - -public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) -{ -$needle = self::mb_substr($needle, 0, 1, $encoding); -$pos = self::mb_strripos($haystack, $needle, $encoding); - -return self::getSubpart($pos, $part, $haystack, $encoding); -} - -public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) -{ -$haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); -$needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); - -return self::mb_strrpos($haystack, $needle, $offset, $encoding); -} - -public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) -{ -$pos = strpos($haystack, $needle); -if (false === $pos) { -return false; -} -if ($part) { -return substr($haystack, 0, $pos); -} - -return substr($haystack, $pos); -} - -public static function mb_get_info($type = 'all') -{ -$info = [ -'internal_encoding' => self::$internalEncoding, -'http_output' => 'pass', -'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', -'func_overload' => 0, -'func_overload_list' => 'no overload', -'mail_charset' => 'UTF-8', -'mail_header_encoding' => 'BASE64', -'mail_body_encoding' => 'BASE64', -'illegal_chars' => 0, -'encoding_translation' => 'Off', -'language' => self::$language, -'detect_order' => self::$encodingList, -'substitute_character' => 'none', -'strict_detection' => 'Off', -]; - -if ('all' === $type) { -return $info; -} -if (isset($info[$type])) { -return $info[$type]; -} - -return false; -} - -public static function mb_http_input($type = '') -{ -return false; -} - -public static function mb_http_output($encoding = null) -{ -return null !== $encoding ? 'pass' === $encoding : 'pass'; -} - -public static function mb_strwidth($s, $encoding = null) -{ -$encoding = self::getEncoding($encoding); - -if ('UTF-8' !== $encoding) { -$s = iconv($encoding, 'UTF-8//IGNORE', $s); -} - -$s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); - -return ($wide << 1) + iconv_strlen($s, 'UTF-8'); -} - -public static function mb_substr_count($haystack, $needle, $encoding = null) -{ -return substr_count($haystack, $needle); -} - -public static function mb_output_handler($contents, $status) -{ -return $contents; -} - -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 = self::getEncoding($encoding)) { -$s = mb_convert_encoding($s, $encoding, 'UTF-8'); -} - -return $s; -} - -public static function mb_ord($s, $encoding = null) -{ -if ('UTF-8' !== $encoding = self::getEncoding($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; -} - -private static function getSubpart($pos, $part, $haystack, $encoding) -{ -if (false === $pos) { -return false; -} -if ($part) { -return self::mb_substr($haystack, 0, $pos, $encoding); -} - -return self::mb_substr($haystack, $pos, null, $encoding); -} - -private static function html_encoding_callback(array $m) -{ -$i = 1; -$entities = ''; -$m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8')); - -while (isset($m[$i])) { -if (0x80 > $m[$i]) { -$entities .= \chr($m[$i++]); -continue; -} -if (0xF0 <= $m[$i]) { -$c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; -} elseif (0xE0 <= $m[$i]) { -$c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; -} else { -$c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; -} - -$entities .= '&#'.$c.';'; -} - -return $entities; -} - -private static function title_case(array $s) -{ -return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8'); -} - -private static function getData($file) -{ -if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { -return require $file; -} - -return false; -} - -private static function getEncoding($encoding) -{ -if (null === $encoding) { -return self::$internalEncoding; -} - -if ('UTF-8' === $encoding) { -return 'UTF-8'; -} - -$encoding = strtoupper($encoding); - -if ('8BIT' === $encoding || 'BINARY' === $encoding) { -return 'CP850'; -} - -if ('UTF8' === $encoding) { -return 'UTF-8'; -} - -return $encoding; -} -} diff --git a/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php deleted file mode 100644 index 29985d433..000000000 --- a/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +++ /dev/null @@ -1,1397 +0,0 @@ - 'a', -'B' => 'b', -'C' => 'c', -'D' => 'd', -'E' => 'e', -'F' => 'f', -'G' => 'g', -'H' => 'h', -'I' => 'i', -'J' => 'j', -'K' => 'k', -'L' => 'l', -'M' => 'm', -'N' => 'n', -'O' => 'o', -'P' => 'p', -'Q' => 'q', -'R' => 'r', -'S' => 's', -'T' => 't', -'U' => 'u', -'V' => 'v', -'W' => 'w', -'X' => 'x', -'Y' => 'y', -'Z' => 'z', -'À' => 'à', -'Á' => 'á', -'Â' => 'â', -'Ã' => 'ã', -'Ä' => 'ä', -'Å' => 'å', -'Æ' => 'æ', -'Ç' => 'ç', -'È' => 'è', -'É' => 'é', -'Ê' => 'ê', -'Ë' => 'ë', -'Ì' => 'ì', -'Í' => 'í', -'Î' => 'î', -'Ï' => 'ï', -'Ð' => 'ð', -'Ñ' => 'ñ', -'Ò' => 'ò', -'Ó' => 'ó', -'Ô' => 'ô', -'Õ' => 'õ', -'Ö' => 'ö', -'Ø' => 'ø', -'Ù' => 'ù', -'Ú' => 'ú', -'Û' => 'û', -'Ü' => 'ü', -'Ý' => 'ý', -'Þ' => 'þ', -'Ā' => 'ā', -'Ă' => 'ă', -'Ą' => 'ą', -'Ć' => 'ć', -'Ĉ' => 'ĉ', -'Ċ' => 'ċ', -'Č' => 'č', -'Ď' => 'ď', -'Đ' => 'đ', -'Ē' => 'ē', -'Ĕ' => 'ĕ', -'Ė' => 'ė', -'Ę' => 'ę', -'Ě' => 'ě', -'Ĝ' => 'ĝ', -'Ğ' => 'ğ', -'Ġ' => 'ġ', -'Ģ' => 'ģ', -'Ĥ' => 'ĥ', -'Ħ' => 'ħ', -'Ĩ' => 'ĩ', -'Ī' => 'ī', -'Ĭ' => 'ĭ', -'Į' => 'į', -'İ' => 'i̇', -'IJ' => 'ij', -'Ĵ' => 'ĵ', -'Ķ' => 'ķ', -'Ĺ' => 'ĺ', -'Ļ' => 'ļ', -'Ľ' => 'ľ', -'Ŀ' => 'ŀ', -'Ł' => 'ł', -'Ń' => 'ń', -'Ņ' => 'ņ', -'Ň' => 'ň', -'Ŋ' => 'ŋ', -'Ō' => 'ō', -'Ŏ' => 'ŏ', -'Ő' => 'ő', -'Œ' => 'œ', -'Ŕ' => 'ŕ', -'Ŗ' => 'ŗ', -'Ř' => 'ř', -'Ś' => 'ś', -'Ŝ' => 'ŝ', -'Ş' => 'ş', -'Š' => 'š', -'Ţ' => 'ţ', -'Ť' => 'ť', -'Ŧ' => 'ŧ', -'Ũ' => 'ũ', -'Ū' => 'ū', -'Ŭ' => 'ŭ', -'Ů' => 'ů', -'Ű' => 'ű', -'Ų' => 'ų', -'Ŵ' => 'ŵ', -'Ŷ' => 'ŷ', -'Ÿ' => 'ÿ', -'Ź' => 'ź', -'Ż' => 'ż', -'Ž' => 'ž', -'Ɓ' => 'ɓ', -'Ƃ' => 'ƃ', -'Ƅ' => 'ƅ', -'Ɔ' => 'ɔ', -'Ƈ' => 'ƈ', -'Ɖ' => 'ɖ', -'Ɗ' => 'ɗ', -'Ƌ' => 'ƌ', -'Ǝ' => 'ǝ', -'Ə' => 'ə', -'Ɛ' => 'ɛ', -'Ƒ' => 'ƒ', -'Ɠ' => 'ɠ', -'Ɣ' => 'ɣ', -'Ɩ' => 'ɩ', -'Ɨ' => 'ɨ', -'Ƙ' => 'ƙ', -'Ɯ' => 'ɯ', -'Ɲ' => 'ɲ', -'Ɵ' => 'ɵ', -'Ơ' => 'ơ', -'Ƣ' => 'ƣ', -'Ƥ' => 'ƥ', -'Ʀ' => 'ʀ', -'Ƨ' => 'ƨ', -'Ʃ' => 'ʃ', -'Ƭ' => 'ƭ', -'Ʈ' => 'ʈ', -'Ư' => 'ư', -'Ʊ' => 'ʊ', -'Ʋ' => 'ʋ', -'Ƴ' => 'ƴ', -'Ƶ' => 'ƶ', -'Ʒ' => 'ʒ', -'Ƹ' => 'ƹ', -'Ƽ' => 'ƽ', -'DŽ' => 'dž', -'Dž' => 'dž', -'LJ' => 'lj', -'Lj' => 'lj', -'NJ' => 'nj', -'Nj' => 'nj', -'Ǎ' => 'ǎ', -'Ǐ' => 'ǐ', -'Ǒ' => 'ǒ', -'Ǔ' => 'ǔ', -'Ǖ' => 'ǖ', -'Ǘ' => 'ǘ', -'Ǚ' => 'ǚ', -'Ǜ' => 'ǜ', -'Ǟ' => 'ǟ', -'Ǡ' => 'ǡ', -'Ǣ' => 'ǣ', -'Ǥ' => 'ǥ', -'Ǧ' => 'ǧ', -'Ǩ' => 'ǩ', -'Ǫ' => 'ǫ', -'Ǭ' => 'ǭ', -'Ǯ' => 'ǯ', -'DZ' => 'dz', -'Dz' => 'dz', -'Ǵ' => 'ǵ', -'Ƕ' => 'ƕ', -'Ƿ' => 'ƿ', -'Ǹ' => 'ǹ', -'Ǻ' => 'ǻ', -'Ǽ' => 'ǽ', -'Ǿ' => 'ǿ', -'Ȁ' => 'ȁ', -'Ȃ' => 'ȃ', -'Ȅ' => 'ȅ', -'Ȇ' => 'ȇ', -'Ȉ' => 'ȉ', -'Ȋ' => 'ȋ', -'Ȍ' => 'ȍ', -'Ȏ' => 'ȏ', -'Ȑ' => 'ȑ', -'Ȓ' => 'ȓ', -'Ȕ' => 'ȕ', -'Ȗ' => 'ȗ', -'Ș' => 'ș', -'Ț' => 'ț', -'Ȝ' => 'ȝ', -'Ȟ' => 'ȟ', -'Ƞ' => 'ƞ', -'Ȣ' => 'ȣ', -'Ȥ' => 'ȥ', -'Ȧ' => 'ȧ', -'Ȩ' => 'ȩ', -'Ȫ' => 'ȫ', -'Ȭ' => 'ȭ', -'Ȯ' => 'ȯ', -'Ȱ' => 'ȱ', -'Ȳ' => 'ȳ', -'Ⱥ' => 'ⱥ', -'Ȼ' => 'ȼ', -'Ƚ' => 'ƚ', -'Ⱦ' => 'ⱦ', -'Ɂ' => 'ɂ', -'Ƀ' => 'ƀ', -'Ʉ' => 'ʉ', -'Ʌ' => 'ʌ', -'Ɇ' => 'ɇ', -'Ɉ' => 'ɉ', -'Ɋ' => 'ɋ', -'Ɍ' => 'ɍ', -'Ɏ' => 'ɏ', -'Ͱ' => 'ͱ', -'Ͳ' => 'ͳ', -'Ͷ' => 'ͷ', -'Ϳ' => 'ϳ', -'Ά' => 'ά', -'Έ' => 'έ', -'Ή' => 'ή', -'Ί' => 'ί', -'Ό' => 'ό', -'Ύ' => 'ύ', -'Ώ' => 'ώ', -'Α' => 'α', -'Β' => 'β', -'Γ' => 'γ', -'Δ' => 'δ', -'Ε' => 'ε', -'Ζ' => 'ζ', -'Η' => 'η', -'Θ' => 'θ', -'Ι' => 'ι', -'Κ' => 'κ', -'Λ' => 'λ', -'Μ' => 'μ', -'Ν' => 'ν', -'Ξ' => 'ξ', -'Ο' => 'ο', -'Π' => 'π', -'Ρ' => 'ρ', -'Σ' => 'σ', -'Τ' => 'τ', -'Υ' => 'υ', -'Φ' => 'φ', -'Χ' => 'χ', -'Ψ' => 'ψ', -'Ω' => 'ω', -'Ϊ' => 'ϊ', -'Ϋ' => 'ϋ', -'Ϗ' => 'ϗ', -'Ϙ' => 'ϙ', -'Ϛ' => 'ϛ', -'Ϝ' => 'ϝ', -'Ϟ' => 'ϟ', -'Ϡ' => 'ϡ', -'Ϣ' => 'ϣ', -'Ϥ' => 'ϥ', -'Ϧ' => 'ϧ', -'Ϩ' => 'ϩ', -'Ϫ' => 'ϫ', -'Ϭ' => 'ϭ', -'Ϯ' => 'ϯ', -'ϴ' => 'θ', -'Ϸ' => 'ϸ', -'Ϲ' => 'ϲ', -'Ϻ' => 'ϻ', -'Ͻ' => 'ͻ', -'Ͼ' => 'ͼ', -'Ͽ' => 'ͽ', -'Ѐ' => 'ѐ', -'Ё' => 'ё', -'Ђ' => 'ђ', -'Ѓ' => 'ѓ', -'Є' => 'є', -'Ѕ' => 'ѕ', -'І' => 'і', -'Ї' => 'ї', -'Ј' => 'ј', -'Љ' => 'љ', -'Њ' => 'њ', -'Ћ' => 'ћ', -'Ќ' => 'ќ', -'Ѝ' => 'ѝ', -'Ў' => 'ў', -'Џ' => 'џ', -'А' => 'а', -'Б' => 'б', -'В' => 'в', -'Г' => 'г', -'Д' => 'д', -'Е' => 'е', -'Ж' => 'ж', -'З' => 'з', -'И' => 'и', -'Й' => 'й', -'К' => 'к', -'Л' => 'л', -'М' => 'м', -'Н' => 'н', -'О' => 'о', -'П' => 'п', -'Р' => 'р', -'С' => 'с', -'Т' => 'т', -'У' => 'у', -'Ф' => 'ф', -'Х' => 'х', -'Ц' => 'ц', -'Ч' => 'ч', -'Ш' => 'ш', -'Щ' => 'щ', -'Ъ' => 'ъ', -'Ы' => 'ы', -'Ь' => 'ь', -'Э' => 'э', -'Ю' => 'ю', -'Я' => 'я', -'Ѡ' => 'ѡ', -'Ѣ' => 'ѣ', -'Ѥ' => 'ѥ', -'Ѧ' => 'ѧ', -'Ѩ' => 'ѩ', -'Ѫ' => 'ѫ', -'Ѭ' => 'ѭ', -'Ѯ' => 'ѯ', -'Ѱ' => 'ѱ', -'Ѳ' => 'ѳ', -'Ѵ' => 'ѵ', -'Ѷ' => 'ѷ', -'Ѹ' => 'ѹ', -'Ѻ' => 'ѻ', -'Ѽ' => 'ѽ', -'Ѿ' => 'ѿ', -'Ҁ' => 'ҁ', -'Ҋ' => 'ҋ', -'Ҍ' => 'ҍ', -'Ҏ' => 'ҏ', -'Ґ' => 'ґ', -'Ғ' => 'ғ', -'Ҕ' => 'ҕ', -'Җ' => 'җ', -'Ҙ' => 'ҙ', -'Қ' => 'қ', -'Ҝ' => 'ҝ', -'Ҟ' => 'ҟ', -'Ҡ' => 'ҡ', -'Ң' => 'ң', -'Ҥ' => 'ҥ', -'Ҧ' => 'ҧ', -'Ҩ' => 'ҩ', -'Ҫ' => 'ҫ', -'Ҭ' => 'ҭ', -'Ү' => 'ү', -'Ұ' => 'ұ', -'Ҳ' => 'ҳ', -'Ҵ' => 'ҵ', -'Ҷ' => 'ҷ', -'Ҹ' => 'ҹ', -'Һ' => 'һ', -'Ҽ' => 'ҽ', -'Ҿ' => 'ҿ', -'Ӏ' => 'ӏ', -'Ӂ' => 'ӂ', -'Ӄ' => 'ӄ', -'Ӆ' => 'ӆ', -'Ӈ' => 'ӈ', -'Ӊ' => 'ӊ', -'Ӌ' => 'ӌ', -'Ӎ' => 'ӎ', -'Ӑ' => 'ӑ', -'Ӓ' => 'ӓ', -'Ӕ' => 'ӕ', -'Ӗ' => 'ӗ', -'Ә' => 'ә', -'Ӛ' => 'ӛ', -'Ӝ' => 'ӝ', -'Ӟ' => 'ӟ', -'Ӡ' => 'ӡ', -'Ӣ' => 'ӣ', -'Ӥ' => 'ӥ', -'Ӧ' => 'ӧ', -'Ө' => 'ө', -'Ӫ' => 'ӫ', -'Ӭ' => 'ӭ', -'Ӯ' => 'ӯ', -'Ӱ' => 'ӱ', -'Ӳ' => 'ӳ', -'Ӵ' => 'ӵ', -'Ӷ' => 'ӷ', -'Ӹ' => 'ӹ', -'Ӻ' => 'ӻ', -'Ӽ' => 'ӽ', -'Ӿ' => 'ӿ', -'Ԁ' => 'ԁ', -'Ԃ' => 'ԃ', -'Ԅ' => 'ԅ', -'Ԇ' => 'ԇ', -'Ԉ' => 'ԉ', -'Ԋ' => 'ԋ', -'Ԍ' => 'ԍ', -'Ԏ' => 'ԏ', -'Ԑ' => 'ԑ', -'Ԓ' => 'ԓ', -'Ԕ' => 'ԕ', -'Ԗ' => 'ԗ', -'Ԙ' => 'ԙ', -'Ԛ' => 'ԛ', -'Ԝ' => 'ԝ', -'Ԟ' => 'ԟ', -'Ԡ' => 'ԡ', -'Ԣ' => 'ԣ', -'Ԥ' => 'ԥ', -'Ԧ' => 'ԧ', -'Ԩ' => 'ԩ', -'Ԫ' => 'ԫ', -'Ԭ' => 'ԭ', -'Ԯ' => 'ԯ', -'Ա' => 'ա', -'Բ' => 'բ', -'Գ' => 'գ', -'Դ' => 'դ', -'Ե' => 'ե', -'Զ' => 'զ', -'Է' => 'է', -'Ը' => 'ը', -'Թ' => 'թ', -'Ժ' => 'ժ', -'Ի' => 'ի', -'Լ' => 'լ', -'Խ' => 'խ', -'Ծ' => 'ծ', -'Կ' => 'կ', -'Հ' => 'հ', -'Ձ' => 'ձ', -'Ղ' => 'ղ', -'Ճ' => 'ճ', -'Մ' => 'մ', -'Յ' => 'յ', -'Ն' => 'ն', -'Շ' => 'շ', -'Ո' => 'ո', -'Չ' => 'չ', -'Պ' => 'պ', -'Ջ' => 'ջ', -'Ռ' => 'ռ', -'Ս' => 'ս', -'Վ' => 'վ', -'Տ' => 'տ', -'Ր' => 'ր', -'Ց' => 'ց', -'Ւ' => 'ւ', -'Փ' => 'փ', -'Ք' => 'ք', -'Օ' => 'օ', -'Ֆ' => 'ֆ', -'Ⴀ' => 'ⴀ', -'Ⴁ' => 'ⴁ', -'Ⴂ' => 'ⴂ', -'Ⴃ' => 'ⴃ', -'Ⴄ' => 'ⴄ', -'Ⴅ' => 'ⴅ', -'Ⴆ' => 'ⴆ', -'Ⴇ' => 'ⴇ', -'Ⴈ' => 'ⴈ', -'Ⴉ' => 'ⴉ', -'Ⴊ' => 'ⴊ', -'Ⴋ' => 'ⴋ', -'Ⴌ' => 'ⴌ', -'Ⴍ' => 'ⴍ', -'Ⴎ' => 'ⴎ', -'Ⴏ' => 'ⴏ', -'Ⴐ' => 'ⴐ', -'Ⴑ' => 'ⴑ', -'Ⴒ' => 'ⴒ', -'Ⴓ' => 'ⴓ', -'Ⴔ' => 'ⴔ', -'Ⴕ' => 'ⴕ', -'Ⴖ' => 'ⴖ', -'Ⴗ' => 'ⴗ', -'Ⴘ' => 'ⴘ', -'Ⴙ' => 'ⴙ', -'Ⴚ' => 'ⴚ', -'Ⴛ' => 'ⴛ', -'Ⴜ' => 'ⴜ', -'Ⴝ' => 'ⴝ', -'Ⴞ' => 'ⴞ', -'Ⴟ' => 'ⴟ', -'Ⴠ' => 'ⴠ', -'Ⴡ' => 'ⴡ', -'Ⴢ' => 'ⴢ', -'Ⴣ' => 'ⴣ', -'Ⴤ' => 'ⴤ', -'Ⴥ' => 'ⴥ', -'Ⴧ' => 'ⴧ', -'Ⴭ' => 'ⴭ', -'Ꭰ' => 'ꭰ', -'Ꭱ' => 'ꭱ', -'Ꭲ' => 'ꭲ', -'Ꭳ' => 'ꭳ', -'Ꭴ' => 'ꭴ', -'Ꭵ' => 'ꭵ', -'Ꭶ' => 'ꭶ', -'Ꭷ' => 'ꭷ', -'Ꭸ' => 'ꭸ', -'Ꭹ' => 'ꭹ', -'Ꭺ' => 'ꭺ', -'Ꭻ' => 'ꭻ', -'Ꭼ' => 'ꭼ', -'Ꭽ' => 'ꭽ', -'Ꭾ' => 'ꭾ', -'Ꭿ' => 'ꭿ', -'Ꮀ' => 'ꮀ', -'Ꮁ' => 'ꮁ', -'Ꮂ' => 'ꮂ', -'Ꮃ' => 'ꮃ', -'Ꮄ' => 'ꮄ', -'Ꮅ' => 'ꮅ', -'Ꮆ' => 'ꮆ', -'Ꮇ' => 'ꮇ', -'Ꮈ' => 'ꮈ', -'Ꮉ' => 'ꮉ', -'Ꮊ' => 'ꮊ', -'Ꮋ' => 'ꮋ', -'Ꮌ' => 'ꮌ', -'Ꮍ' => 'ꮍ', -'Ꮎ' => 'ꮎ', -'Ꮏ' => 'ꮏ', -'Ꮐ' => 'ꮐ', -'Ꮑ' => 'ꮑ', -'Ꮒ' => 'ꮒ', -'Ꮓ' => 'ꮓ', -'Ꮔ' => 'ꮔ', -'Ꮕ' => 'ꮕ', -'Ꮖ' => 'ꮖ', -'Ꮗ' => 'ꮗ', -'Ꮘ' => 'ꮘ', -'Ꮙ' => 'ꮙ', -'Ꮚ' => 'ꮚ', -'Ꮛ' => 'ꮛ', -'Ꮜ' => 'ꮜ', -'Ꮝ' => 'ꮝ', -'Ꮞ' => 'ꮞ', -'Ꮟ' => 'ꮟ', -'Ꮠ' => 'ꮠ', -'Ꮡ' => 'ꮡ', -'Ꮢ' => 'ꮢ', -'Ꮣ' => 'ꮣ', -'Ꮤ' => 'ꮤ', -'Ꮥ' => 'ꮥ', -'Ꮦ' => 'ꮦ', -'Ꮧ' => 'ꮧ', -'Ꮨ' => 'ꮨ', -'Ꮩ' => 'ꮩ', -'Ꮪ' => 'ꮪ', -'Ꮫ' => 'ꮫ', -'Ꮬ' => 'ꮬ', -'Ꮭ' => 'ꮭ', -'Ꮮ' => 'ꮮ', -'Ꮯ' => 'ꮯ', -'Ꮰ' => 'ꮰ', -'Ꮱ' => 'ꮱ', -'Ꮲ' => 'ꮲ', -'Ꮳ' => 'ꮳ', -'Ꮴ' => 'ꮴ', -'Ꮵ' => 'ꮵ', -'Ꮶ' => 'ꮶ', -'Ꮷ' => 'ꮷ', -'Ꮸ' => 'ꮸ', -'Ꮹ' => 'ꮹ', -'Ꮺ' => 'ꮺ', -'Ꮻ' => 'ꮻ', -'Ꮼ' => 'ꮼ', -'Ꮽ' => 'ꮽ', -'Ꮾ' => 'ꮾ', -'Ꮿ' => 'ꮿ', -'Ᏸ' => 'ᏸ', -'Ᏹ' => 'ᏹ', -'Ᏺ' => 'ᏺ', -'Ᏻ' => 'ᏻ', -'Ᏼ' => 'ᏼ', -'Ᏽ' => 'ᏽ', -'Ა' => 'ა', -'Ბ' => 'ბ', -'Გ' => 'გ', -'Დ' => 'დ', -'Ე' => 'ე', -'Ვ' => 'ვ', -'Ზ' => 'ზ', -'Თ' => 'თ', -'Ი' => 'ი', -'Კ' => 'კ', -'Ლ' => 'ლ', -'Მ' => 'მ', -'Ნ' => 'ნ', -'Ო' => 'ო', -'Პ' => 'პ', -'Ჟ' => 'ჟ', -'Რ' => 'რ', -'Ს' => 'ს', -'Ტ' => 'ტ', -'Უ' => 'უ', -'Ფ' => 'ფ', -'Ქ' => 'ქ', -'Ღ' => 'ღ', -'Ყ' => 'ყ', -'Შ' => 'შ', -'Ჩ' => 'ჩ', -'Ც' => 'ც', -'Ძ' => 'ძ', -'Წ' => 'წ', -'Ჭ' => 'ჭ', -'Ხ' => 'ხ', -'Ჯ' => 'ჯ', -'Ჰ' => 'ჰ', -'Ჱ' => 'ჱ', -'Ჲ' => 'ჲ', -'Ჳ' => 'ჳ', -'Ჴ' => 'ჴ', -'Ჵ' => 'ჵ', -'Ჶ' => 'ჶ', -'Ჷ' => 'ჷ', -'Ჸ' => 'ჸ', -'Ჹ' => 'ჹ', -'Ჺ' => 'ჺ', -'Ჽ' => 'ჽ', -'Ჾ' => 'ჾ', -'Ჿ' => 'ჿ', -'Ḁ' => 'ḁ', -'Ḃ' => 'ḃ', -'Ḅ' => 'ḅ', -'Ḇ' => 'ḇ', -'Ḉ' => 'ḉ', -'Ḋ' => 'ḋ', -'Ḍ' => 'ḍ', -'Ḏ' => 'ḏ', -'Ḑ' => 'ḑ', -'Ḓ' => 'ḓ', -'Ḕ' => 'ḕ', -'Ḗ' => 'ḗ', -'Ḙ' => 'ḙ', -'Ḛ' => 'ḛ', -'Ḝ' => 'ḝ', -'Ḟ' => 'ḟ', -'Ḡ' => 'ḡ', -'Ḣ' => 'ḣ', -'Ḥ' => 'ḥ', -'Ḧ' => 'ḧ', -'Ḩ' => 'ḩ', -'Ḫ' => 'ḫ', -'Ḭ' => 'ḭ', -'Ḯ' => 'ḯ', -'Ḱ' => 'ḱ', -'Ḳ' => 'ḳ', -'Ḵ' => 'ḵ', -'Ḷ' => 'ḷ', -'Ḹ' => 'ḹ', -'Ḻ' => 'ḻ', -'Ḽ' => 'ḽ', -'Ḿ' => 'ḿ', -'Ṁ' => 'ṁ', -'Ṃ' => 'ṃ', -'Ṅ' => 'ṅ', -'Ṇ' => 'ṇ', -'Ṉ' => 'ṉ', -'Ṋ' => 'ṋ', -'Ṍ' => 'ṍ', -'Ṏ' => 'ṏ', -'Ṑ' => 'ṑ', -'Ṓ' => 'ṓ', -'Ṕ' => 'ṕ', -'Ṗ' => 'ṗ', -'Ṙ' => 'ṙ', -'Ṛ' => 'ṛ', -'Ṝ' => 'ṝ', -'Ṟ' => 'ṟ', -'Ṡ' => 'ṡ', -'Ṣ' => 'ṣ', -'Ṥ' => 'ṥ', -'Ṧ' => 'ṧ', -'Ṩ' => 'ṩ', -'Ṫ' => 'ṫ', -'Ṭ' => 'ṭ', -'Ṯ' => 'ṯ', -'Ṱ' => 'ṱ', -'Ṳ' => 'ṳ', -'Ṵ' => 'ṵ', -'Ṷ' => 'ṷ', -'Ṹ' => 'ṹ', -'Ṻ' => 'ṻ', -'Ṽ' => 'ṽ', -'Ṿ' => 'ṿ', -'Ẁ' => 'ẁ', -'Ẃ' => 'ẃ', -'Ẅ' => 'ẅ', -'Ẇ' => 'ẇ', -'Ẉ' => 'ẉ', -'Ẋ' => 'ẋ', -'Ẍ' => 'ẍ', -'Ẏ' => 'ẏ', -'Ẑ' => 'ẑ', -'Ẓ' => 'ẓ', -'Ẕ' => 'ẕ', -'ẞ' => 'ß', -'Ạ' => 'ạ', -'Ả' => 'ả', -'Ấ' => 'ấ', -'Ầ' => 'ầ', -'Ẩ' => 'ẩ', -'Ẫ' => 'ẫ', -'Ậ' => 'ậ', -'Ắ' => 'ắ', -'Ằ' => 'ằ', -'Ẳ' => 'ẳ', -'Ẵ' => 'ẵ', -'Ặ' => 'ặ', -'Ẹ' => 'ẹ', -'Ẻ' => 'ẻ', -'Ẽ' => 'ẽ', -'Ế' => 'ế', -'Ề' => 'ề', -'Ể' => 'ể', -'Ễ' => 'ễ', -'Ệ' => 'ệ', -'Ỉ' => 'ỉ', -'Ị' => 'ị', -'Ọ' => 'ọ', -'Ỏ' => 'ỏ', -'Ố' => 'ố', -'Ồ' => 'ồ', -'Ổ' => 'ổ', -'Ỗ' => 'ỗ', -'Ộ' => 'ộ', -'Ớ' => 'ớ', -'Ờ' => 'ờ', -'Ở' => 'ở', -'Ỡ' => 'ỡ', -'Ợ' => 'ợ', -'Ụ' => 'ụ', -'Ủ' => 'ủ', -'Ứ' => 'ứ', -'Ừ' => 'ừ', -'Ử' => 'ử', -'Ữ' => 'ữ', -'Ự' => 'ự', -'Ỳ' => 'ỳ', -'Ỵ' => 'ỵ', -'Ỷ' => 'ỷ', -'Ỹ' => 'ỹ', -'Ỻ' => 'ỻ', -'Ỽ' => 'ỽ', -'Ỿ' => 'ỿ', -'Ἀ' => 'ἀ', -'Ἁ' => 'ἁ', -'Ἂ' => 'ἂ', -'Ἃ' => 'ἃ', -'Ἄ' => 'ἄ', -'Ἅ' => 'ἅ', -'Ἆ' => 'ἆ', -'Ἇ' => 'ἇ', -'Ἐ' => 'ἐ', -'Ἑ' => 'ἑ', -'Ἒ' => 'ἒ', -'Ἓ' => 'ἓ', -'Ἔ' => 'ἔ', -'Ἕ' => 'ἕ', -'Ἠ' => 'ἠ', -'Ἡ' => 'ἡ', -'Ἢ' => 'ἢ', -'Ἣ' => 'ἣ', -'Ἤ' => 'ἤ', -'Ἥ' => 'ἥ', -'Ἦ' => 'ἦ', -'Ἧ' => 'ἧ', -'Ἰ' => 'ἰ', -'Ἱ' => 'ἱ', -'Ἲ' => 'ἲ', -'Ἳ' => 'ἳ', -'Ἴ' => 'ἴ', -'Ἵ' => 'ἵ', -'Ἶ' => 'ἶ', -'Ἷ' => 'ἷ', -'Ὀ' => 'ὀ', -'Ὁ' => 'ὁ', -'Ὂ' => 'ὂ', -'Ὃ' => 'ὃ', -'Ὄ' => 'ὄ', -'Ὅ' => 'ὅ', -'Ὑ' => 'ὑ', -'Ὓ' => 'ὓ', -'Ὕ' => 'ὕ', -'Ὗ' => 'ὗ', -'Ὠ' => 'ὠ', -'Ὡ' => 'ὡ', -'Ὢ' => 'ὢ', -'Ὣ' => 'ὣ', -'Ὤ' => 'ὤ', -'Ὥ' => 'ὥ', -'Ὦ' => 'ὦ', -'Ὧ' => 'ὧ', -'ᾈ' => 'ᾀ', -'ᾉ' => 'ᾁ', -'ᾊ' => 'ᾂ', -'ᾋ' => 'ᾃ', -'ᾌ' => 'ᾄ', -'ᾍ' => 'ᾅ', -'ᾎ' => 'ᾆ', -'ᾏ' => 'ᾇ', -'ᾘ' => 'ᾐ', -'ᾙ' => 'ᾑ', -'ᾚ' => 'ᾒ', -'ᾛ' => 'ᾓ', -'ᾜ' => 'ᾔ', -'ᾝ' => 'ᾕ', -'ᾞ' => 'ᾖ', -'ᾟ' => 'ᾗ', -'ᾨ' => 'ᾠ', -'ᾩ' => 'ᾡ', -'ᾪ' => 'ᾢ', -'ᾫ' => 'ᾣ', -'ᾬ' => 'ᾤ', -'ᾭ' => 'ᾥ', -'ᾮ' => 'ᾦ', -'ᾯ' => 'ᾧ', -'Ᾰ' => 'ᾰ', -'Ᾱ' => 'ᾱ', -'Ὰ' => 'ὰ', -'Ά' => 'ά', -'ᾼ' => 'ᾳ', -'Ὲ' => 'ὲ', -'Έ' => 'έ', -'Ὴ' => 'ὴ', -'Ή' => 'ή', -'ῌ' => 'ῃ', -'Ῐ' => 'ῐ', -'Ῑ' => 'ῑ', -'Ὶ' => 'ὶ', -'Ί' => 'ί', -'Ῠ' => 'ῠ', -'Ῡ' => 'ῡ', -'Ὺ' => 'ὺ', -'Ύ' => 'ύ', -'Ῥ' => 'ῥ', -'Ὸ' => 'ὸ', -'Ό' => 'ό', -'Ὼ' => 'ὼ', -'Ώ' => 'ώ', -'ῼ' => 'ῳ', -'Ω' => 'ω', -'K' => 'k', -'Å' => 'å', -'Ⅎ' => 'ⅎ', -'Ⅰ' => 'ⅰ', -'Ⅱ' => 'ⅱ', -'Ⅲ' => 'ⅲ', -'Ⅳ' => 'ⅳ', -'Ⅴ' => 'ⅴ', -'Ⅵ' => 'ⅵ', -'Ⅶ' => 'ⅶ', -'Ⅷ' => 'ⅷ', -'Ⅸ' => 'ⅸ', -'Ⅹ' => 'ⅹ', -'Ⅺ' => 'ⅺ', -'Ⅻ' => 'ⅻ', -'Ⅼ' => 'ⅼ', -'Ⅽ' => 'ⅽ', -'Ⅾ' => 'ⅾ', -'Ⅿ' => 'ⅿ', -'Ↄ' => 'ↄ', -'Ⓐ' => 'ⓐ', -'Ⓑ' => 'ⓑ', -'Ⓒ' => 'ⓒ', -'Ⓓ' => 'ⓓ', -'Ⓔ' => 'ⓔ', -'Ⓕ' => 'ⓕ', -'Ⓖ' => 'ⓖ', -'Ⓗ' => 'ⓗ', -'Ⓘ' => 'ⓘ', -'Ⓙ' => 'ⓙ', -'Ⓚ' => 'ⓚ', -'Ⓛ' => 'ⓛ', -'Ⓜ' => 'ⓜ', -'Ⓝ' => 'ⓝ', -'Ⓞ' => 'ⓞ', -'Ⓟ' => 'ⓟ', -'Ⓠ' => 'ⓠ', -'Ⓡ' => 'ⓡ', -'Ⓢ' => 'ⓢ', -'Ⓣ' => 'ⓣ', -'Ⓤ' => 'ⓤ', -'Ⓥ' => 'ⓥ', -'Ⓦ' => 'ⓦ', -'Ⓧ' => 'ⓧ', -'Ⓨ' => 'ⓨ', -'Ⓩ' => 'ⓩ', -'Ⰰ' => 'ⰰ', -'Ⰱ' => 'ⰱ', -'Ⰲ' => 'ⰲ', -'Ⰳ' => 'ⰳ', -'Ⰴ' => 'ⰴ', -'Ⰵ' => 'ⰵ', -'Ⰶ' => 'ⰶ', -'Ⰷ' => 'ⰷ', -'Ⰸ' => 'ⰸ', -'Ⰹ' => 'ⰹ', -'Ⰺ' => 'ⰺ', -'Ⰻ' => 'ⰻ', -'Ⰼ' => 'ⰼ', -'Ⰽ' => 'ⰽ', -'Ⰾ' => 'ⰾ', -'Ⰿ' => 'ⰿ', -'Ⱀ' => 'ⱀ', -'Ⱁ' => 'ⱁ', -'Ⱂ' => 'ⱂ', -'Ⱃ' => 'ⱃ', -'Ⱄ' => 'ⱄ', -'Ⱅ' => 'ⱅ', -'Ⱆ' => 'ⱆ', -'Ⱇ' => 'ⱇ', -'Ⱈ' => 'ⱈ', -'Ⱉ' => 'ⱉ', -'Ⱊ' => 'ⱊ', -'Ⱋ' => 'ⱋ', -'Ⱌ' => 'ⱌ', -'Ⱍ' => 'ⱍ', -'Ⱎ' => 'ⱎ', -'Ⱏ' => 'ⱏ', -'Ⱐ' => 'ⱐ', -'Ⱑ' => 'ⱑ', -'Ⱒ' => 'ⱒ', -'Ⱓ' => 'ⱓ', -'Ⱔ' => 'ⱔ', -'Ⱕ' => 'ⱕ', -'Ⱖ' => 'ⱖ', -'Ⱗ' => 'ⱗ', -'Ⱘ' => 'ⱘ', -'Ⱙ' => 'ⱙ', -'Ⱚ' => 'ⱚ', -'Ⱛ' => 'ⱛ', -'Ⱜ' => 'ⱜ', -'Ⱝ' => 'ⱝ', -'Ⱞ' => 'ⱞ', -'Ⱡ' => 'ⱡ', -'Ɫ' => 'ɫ', -'Ᵽ' => 'ᵽ', -'Ɽ' => 'ɽ', -'Ⱨ' => 'ⱨ', -'Ⱪ' => 'ⱪ', -'Ⱬ' => 'ⱬ', -'Ɑ' => 'ɑ', -'Ɱ' => 'ɱ', -'Ɐ' => 'ɐ', -'Ɒ' => 'ɒ', -'Ⱳ' => 'ⱳ', -'Ⱶ' => 'ⱶ', -'Ȿ' => 'ȿ', -'Ɀ' => 'ɀ', -'Ⲁ' => 'ⲁ', -'Ⲃ' => 'ⲃ', -'Ⲅ' => 'ⲅ', -'Ⲇ' => 'ⲇ', -'Ⲉ' => 'ⲉ', -'Ⲋ' => 'ⲋ', -'Ⲍ' => 'ⲍ', -'Ⲏ' => 'ⲏ', -'Ⲑ' => 'ⲑ', -'Ⲓ' => 'ⲓ', -'Ⲕ' => 'ⲕ', -'Ⲗ' => 'ⲗ', -'Ⲙ' => 'ⲙ', -'Ⲛ' => 'ⲛ', -'Ⲝ' => 'ⲝ', -'Ⲟ' => 'ⲟ', -'Ⲡ' => 'ⲡ', -'Ⲣ' => 'ⲣ', -'Ⲥ' => 'ⲥ', -'Ⲧ' => 'ⲧ', -'Ⲩ' => 'ⲩ', -'Ⲫ' => 'ⲫ', -'Ⲭ' => 'ⲭ', -'Ⲯ' => 'ⲯ', -'Ⲱ' => 'ⲱ', -'Ⲳ' => 'ⲳ', -'Ⲵ' => 'ⲵ', -'Ⲷ' => 'ⲷ', -'Ⲹ' => 'ⲹ', -'Ⲻ' => 'ⲻ', -'Ⲽ' => 'ⲽ', -'Ⲿ' => 'ⲿ', -'Ⳁ' => 'ⳁ', -'Ⳃ' => 'ⳃ', -'Ⳅ' => 'ⳅ', -'Ⳇ' => 'ⳇ', -'Ⳉ' => 'ⳉ', -'Ⳋ' => 'ⳋ', -'Ⳍ' => 'ⳍ', -'Ⳏ' => 'ⳏ', -'Ⳑ' => 'ⳑ', -'Ⳓ' => 'ⳓ', -'Ⳕ' => 'ⳕ', -'Ⳗ' => 'ⳗ', -'Ⳙ' => 'ⳙ', -'Ⳛ' => 'ⳛ', -'Ⳝ' => 'ⳝ', -'Ⳟ' => 'ⳟ', -'Ⳡ' => 'ⳡ', -'Ⳣ' => 'ⳣ', -'Ⳬ' => 'ⳬ', -'Ⳮ' => 'ⳮ', -'Ⳳ' => 'ⳳ', -'Ꙁ' => 'ꙁ', -'Ꙃ' => 'ꙃ', -'Ꙅ' => 'ꙅ', -'Ꙇ' => 'ꙇ', -'Ꙉ' => 'ꙉ', -'Ꙋ' => 'ꙋ', -'Ꙍ' => 'ꙍ', -'Ꙏ' => 'ꙏ', -'Ꙑ' => 'ꙑ', -'Ꙓ' => 'ꙓ', -'Ꙕ' => 'ꙕ', -'Ꙗ' => 'ꙗ', -'Ꙙ' => 'ꙙ', -'Ꙛ' => 'ꙛ', -'Ꙝ' => 'ꙝ', -'Ꙟ' => 'ꙟ', -'Ꙡ' => 'ꙡ', -'Ꙣ' => 'ꙣ', -'Ꙥ' => 'ꙥ', -'Ꙧ' => 'ꙧ', -'Ꙩ' => 'ꙩ', -'Ꙫ' => 'ꙫ', -'Ꙭ' => 'ꙭ', -'Ꚁ' => 'ꚁ', -'Ꚃ' => 'ꚃ', -'Ꚅ' => 'ꚅ', -'Ꚇ' => 'ꚇ', -'Ꚉ' => 'ꚉ', -'Ꚋ' => 'ꚋ', -'Ꚍ' => 'ꚍ', -'Ꚏ' => 'ꚏ', -'Ꚑ' => 'ꚑ', -'Ꚓ' => 'ꚓ', -'Ꚕ' => 'ꚕ', -'Ꚗ' => 'ꚗ', -'Ꚙ' => 'ꚙ', -'Ꚛ' => 'ꚛ', -'Ꜣ' => 'ꜣ', -'Ꜥ' => 'ꜥ', -'Ꜧ' => 'ꜧ', -'Ꜩ' => 'ꜩ', -'Ꜫ' => 'ꜫ', -'Ꜭ' => 'ꜭ', -'Ꜯ' => 'ꜯ', -'Ꜳ' => 'ꜳ', -'Ꜵ' => 'ꜵ', -'Ꜷ' => 'ꜷ', -'Ꜹ' => 'ꜹ', -'Ꜻ' => 'ꜻ', -'Ꜽ' => 'ꜽ', -'Ꜿ' => 'ꜿ', -'Ꝁ' => 'ꝁ', -'Ꝃ' => 'ꝃ', -'Ꝅ' => 'ꝅ', -'Ꝇ' => 'ꝇ', -'Ꝉ' => 'ꝉ', -'Ꝋ' => 'ꝋ', -'Ꝍ' => 'ꝍ', -'Ꝏ' => 'ꝏ', -'Ꝑ' => 'ꝑ', -'Ꝓ' => 'ꝓ', -'Ꝕ' => 'ꝕ', -'Ꝗ' => 'ꝗ', -'Ꝙ' => 'ꝙ', -'Ꝛ' => 'ꝛ', -'Ꝝ' => 'ꝝ', -'Ꝟ' => 'ꝟ', -'Ꝡ' => 'ꝡ', -'Ꝣ' => 'ꝣ', -'Ꝥ' => 'ꝥ', -'Ꝧ' => 'ꝧ', -'Ꝩ' => 'ꝩ', -'Ꝫ' => 'ꝫ', -'Ꝭ' => 'ꝭ', -'Ꝯ' => 'ꝯ', -'Ꝺ' => 'ꝺ', -'Ꝼ' => 'ꝼ', -'Ᵹ' => 'ᵹ', -'Ꝿ' => 'ꝿ', -'Ꞁ' => 'ꞁ', -'Ꞃ' => 'ꞃ', -'Ꞅ' => 'ꞅ', -'Ꞇ' => 'ꞇ', -'Ꞌ' => 'ꞌ', -'Ɥ' => 'ɥ', -'Ꞑ' => 'ꞑ', -'Ꞓ' => 'ꞓ', -'Ꞗ' => 'ꞗ', -'Ꞙ' => 'ꞙ', -'Ꞛ' => 'ꞛ', -'Ꞝ' => 'ꞝ', -'Ꞟ' => 'ꞟ', -'Ꞡ' => 'ꞡ', -'Ꞣ' => 'ꞣ', -'Ꞥ' => 'ꞥ', -'Ꞧ' => 'ꞧ', -'Ꞩ' => 'ꞩ', -'Ɦ' => 'ɦ', -'Ɜ' => 'ɜ', -'Ɡ' => 'ɡ', -'Ɬ' => 'ɬ', -'Ɪ' => 'ɪ', -'Ʞ' => 'ʞ', -'Ʇ' => 'ʇ', -'Ʝ' => 'ʝ', -'Ꭓ' => 'ꭓ', -'Ꞵ' => 'ꞵ', -'Ꞷ' => 'ꞷ', -'Ꞹ' => 'ꞹ', -'Ꞻ' => 'ꞻ', -'Ꞽ' => 'ꞽ', -'Ꞿ' => 'ꞿ', -'Ꟃ' => 'ꟃ', -'Ꞔ' => 'ꞔ', -'Ʂ' => 'ʂ', -'Ᶎ' => 'ᶎ', -'Ꟈ' => 'ꟈ', -'Ꟊ' => 'ꟊ', -'Ꟶ' => 'ꟶ', -'A' => 'a', -'B' => 'b', -'C' => 'c', -'D' => 'd', -'E' => 'e', -'F' => 'f', -'G' => 'g', -'H' => 'h', -'I' => 'i', -'J' => 'j', -'K' => 'k', -'L' => 'l', -'M' => 'm', -'N' => 'n', -'O' => 'o', -'P' => 'p', -'Q' => 'q', -'R' => 'r', -'S' => 's', -'T' => 't', -'U' => 'u', -'V' => 'v', -'W' => 'w', -'X' => 'x', -'Y' => 'y', -'Z' => 'z', -'𐐀' => '𐐨', -'𐐁' => '𐐩', -'𐐂' => '𐐪', -'𐐃' => '𐐫', -'𐐄' => '𐐬', -'𐐅' => '𐐭', -'𐐆' => '𐐮', -'𐐇' => '𐐯', -'𐐈' => '𐐰', -'𐐉' => '𐐱', -'𐐊' => '𐐲', -'𐐋' => '𐐳', -'𐐌' => '𐐴', -'𐐍' => '𐐵', -'𐐎' => '𐐶', -'𐐏' => '𐐷', -'𐐐' => '𐐸', -'𐐑' => '𐐹', -'𐐒' => '𐐺', -'𐐓' => '𐐻', -'𐐔' => '𐐼', -'𐐕' => '𐐽', -'𐐖' => '𐐾', -'𐐗' => '𐐿', -'𐐘' => '𐑀', -'𐐙' => '𐑁', -'𐐚' => '𐑂', -'𐐛' => '𐑃', -'𐐜' => '𐑄', -'𐐝' => '𐑅', -'𐐞' => '𐑆', -'𐐟' => '𐑇', -'𐐠' => '𐑈', -'𐐡' => '𐑉', -'𐐢' => '𐑊', -'𐐣' => '𐑋', -'𐐤' => '𐑌', -'𐐥' => '𐑍', -'𐐦' => '𐑎', -'𐐧' => '𐑏', -'𐒰' => '𐓘', -'𐒱' => '𐓙', -'𐒲' => '𐓚', -'𐒳' => '𐓛', -'𐒴' => '𐓜', -'𐒵' => '𐓝', -'𐒶' => '𐓞', -'𐒷' => '𐓟', -'𐒸' => '𐓠', -'𐒹' => '𐓡', -'𐒺' => '𐓢', -'𐒻' => '𐓣', -'𐒼' => '𐓤', -'𐒽' => '𐓥', -'𐒾' => '𐓦', -'𐒿' => '𐓧', -'𐓀' => '𐓨', -'𐓁' => '𐓩', -'𐓂' => '𐓪', -'𐓃' => '𐓫', -'𐓄' => '𐓬', -'𐓅' => '𐓭', -'𐓆' => '𐓮', -'𐓇' => '𐓯', -'𐓈' => '𐓰', -'𐓉' => '𐓱', -'𐓊' => '𐓲', -'𐓋' => '𐓳', -'𐓌' => '𐓴', -'𐓍' => '𐓵', -'𐓎' => '𐓶', -'𐓏' => '𐓷', -'𐓐' => '𐓸', -'𐓑' => '𐓹', -'𐓒' => '𐓺', -'𐓓' => '𐓻', -'𐲀' => '𐳀', -'𐲁' => '𐳁', -'𐲂' => '𐳂', -'𐲃' => '𐳃', -'𐲄' => '𐳄', -'𐲅' => '𐳅', -'𐲆' => '𐳆', -'𐲇' => '𐳇', -'𐲈' => '𐳈', -'𐲉' => '𐳉', -'𐲊' => '𐳊', -'𐲋' => '𐳋', -'𐲌' => '𐳌', -'𐲍' => '𐳍', -'𐲎' => '𐳎', -'𐲏' => '𐳏', -'𐲐' => '𐳐', -'𐲑' => '𐳑', -'𐲒' => '𐳒', -'𐲓' => '𐳓', -'𐲔' => '𐳔', -'𐲕' => '𐳕', -'𐲖' => '𐳖', -'𐲗' => '𐳗', -'𐲘' => '𐳘', -'𐲙' => '𐳙', -'𐲚' => '𐳚', -'𐲛' => '𐳛', -'𐲜' => '𐳜', -'𐲝' => '𐳝', -'𐲞' => '𐳞', -'𐲟' => '𐳟', -'𐲠' => '𐳠', -'𐲡' => '𐳡', -'𐲢' => '𐳢', -'𐲣' => '𐳣', -'𐲤' => '𐳤', -'𐲥' => '𐳥', -'𐲦' => '𐳦', -'𐲧' => '𐳧', -'𐲨' => '𐳨', -'𐲩' => '𐳩', -'𐲪' => '𐳪', -'𐲫' => '𐳫', -'𐲬' => '𐳬', -'𐲭' => '𐳭', -'𐲮' => '𐳮', -'𐲯' => '𐳯', -'𐲰' => '𐳰', -'𐲱' => '𐳱', -'𐲲' => '𐳲', -'𑢠' => '𑣀', -'𑢡' => '𑣁', -'𑢢' => '𑣂', -'𑢣' => '𑣃', -'𑢤' => '𑣄', -'𑢥' => '𑣅', -'𑢦' => '𑣆', -'𑢧' => '𑣇', -'𑢨' => '𑣈', -'𑢩' => '𑣉', -'𑢪' => '𑣊', -'𑢫' => '𑣋', -'𑢬' => '𑣌', -'𑢭' => '𑣍', -'𑢮' => '𑣎', -'𑢯' => '𑣏', -'𑢰' => '𑣐', -'𑢱' => '𑣑', -'𑢲' => '𑣒', -'𑢳' => '𑣓', -'𑢴' => '𑣔', -'𑢵' => '𑣕', -'𑢶' => '𑣖', -'𑢷' => '𑣗', -'𑢸' => '𑣘', -'𑢹' => '𑣙', -'𑢺' => '𑣚', -'𑢻' => '𑣛', -'𑢼' => '𑣜', -'𑢽' => '𑣝', -'𑢾' => '𑣞', -'𑢿' => '𑣟', -'𖹀' => '𖹠', -'𖹁' => '𖹡', -'𖹂' => '𖹢', -'𖹃' => '𖹣', -'𖹄' => '𖹤', -'𖹅' => '𖹥', -'𖹆' => '𖹦', -'𖹇' => '𖹧', -'𖹈' => '𖹨', -'𖹉' => '𖹩', -'𖹊' => '𖹪', -'𖹋' => '𖹫', -'𖹌' => '𖹬', -'𖹍' => '𖹭', -'𖹎' => '𖹮', -'𖹏' => '𖹯', -'𖹐' => '𖹰', -'𖹑' => '𖹱', -'𖹒' => '𖹲', -'𖹓' => '𖹳', -'𖹔' => '𖹴', -'𖹕' => '𖹵', -'𖹖' => '𖹶', -'𖹗' => '𖹷', -'𖹘' => '𖹸', -'𖹙' => '𖹹', -'𖹚' => '𖹺', -'𖹛' => '𖹻', -'𖹜' => '𖹼', -'𖹝' => '𖹽', -'𖹞' => '𖹾', -'𖹟' => '𖹿', -'𞤀' => '𞤢', -'𞤁' => '𞤣', -'𞤂' => '𞤤', -'𞤃' => '𞤥', -'𞤄' => '𞤦', -'𞤅' => '𞤧', -'𞤆' => '𞤨', -'𞤇' => '𞤩', -'𞤈' => '𞤪', -'𞤉' => '𞤫', -'𞤊' => '𞤬', -'𞤋' => '𞤭', -'𞤌' => '𞤮', -'𞤍' => '𞤯', -'𞤎' => '𞤰', -'𞤏' => '𞤱', -'𞤐' => '𞤲', -'𞤑' => '𞤳', -'𞤒' => '𞤴', -'𞤓' => '𞤵', -'𞤔' => '𞤶', -'𞤕' => '𞤷', -'𞤖' => '𞤸', -'𞤗' => '𞤹', -'𞤘' => '𞤺', -'𞤙' => '𞤻', -'𞤚' => '𞤼', -'𞤛' => '𞤽', -'𞤜' => '𞤾', -'𞤝' => '𞤿', -'𞤞' => '𞥀', -'𞤟' => '𞥁', -'𞤠' => '𞥂', -'𞤡' => '𞥃', -); diff --git a/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php deleted file mode 100644 index 6615e1697..000000000 --- a/composer/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +++ /dev/null @@ -1,5 +0,0 @@ - 'A', -'b' => 'B', -'c' => 'C', -'d' => 'D', -'e' => 'E', -'f' => 'F', -'g' => 'G', -'h' => 'H', -'i' => 'I', -'j' => 'J', -'k' => 'K', -'l' => 'L', -'m' => 'M', -'n' => 'N', -'o' => 'O', -'p' => 'P', -'q' => 'Q', -'r' => 'R', -'s' => 'S', -'t' => 'T', -'u' => 'U', -'v' => 'V', -'w' => 'W', -'x' => 'X', -'y' => 'Y', -'z' => 'Z', -'µ' => 'Μ', -'à' => 'À', -'á' => 'Á', -'â' => 'Â', -'ã' => 'Ã', -'ä' => 'Ä', -'å' => 'Å', -'æ' => 'Æ', -'ç' => 'Ç', -'è' => 'È', -'é' => 'É', -'ê' => 'Ê', -'ë' => 'Ë', -'ì' => 'Ì', -'í' => 'Í', -'î' => 'Î', -'ï' => 'Ï', -'ð' => 'Ð', -'ñ' => 'Ñ', -'ò' => 'Ò', -'ó' => 'Ó', -'ô' => 'Ô', -'õ' => 'Õ', -'ö' => 'Ö', -'ø' => 'Ø', -'ù' => 'Ù', -'ú' => 'Ú', -'û' => 'Û', -'ü' => 'Ü', -'ý' => 'Ý', -'þ' => 'Þ', -'ÿ' => 'Ÿ', -'ā' => 'Ā', -'ă' => 'Ă', -'ą' => 'Ą', -'ć' => 'Ć', -'ĉ' => 'Ĉ', -'ċ' => 'Ċ', -'č' => 'Č', -'ď' => 'Ď', -'đ' => 'Đ', -'ē' => 'Ē', -'ĕ' => 'Ĕ', -'ė' => 'Ė', -'ę' => 'Ę', -'ě' => 'Ě', -'ĝ' => 'Ĝ', -'ğ' => 'Ğ', -'ġ' => 'Ġ', -'ģ' => 'Ģ', -'ĥ' => 'Ĥ', -'ħ' => 'Ħ', -'ĩ' => 'Ĩ', -'ī' => 'Ī', -'ĭ' => 'Ĭ', -'į' => 'Į', -'ı' => 'I', -'ij' => 'IJ', -'ĵ' => 'Ĵ', -'ķ' => 'Ķ', -'ĺ' => 'Ĺ', -'ļ' => 'Ļ', -'ľ' => 'Ľ', -'ŀ' => 'Ŀ', -'ł' => 'Ł', -'ń' => 'Ń', -'ņ' => 'Ņ', -'ň' => 'Ň', -'ŋ' => 'Ŋ', -'ō' => 'Ō', -'ŏ' => 'Ŏ', -'ő' => 'Ő', -'œ' => 'Œ', -'ŕ' => 'Ŕ', -'ŗ' => 'Ŗ', -'ř' => 'Ř', -'ś' => 'Ś', -'ŝ' => 'Ŝ', -'ş' => 'Ş', -'š' => 'Š', -'ţ' => 'Ţ', -'ť' => 'Ť', -'ŧ' => 'Ŧ', -'ũ' => 'Ũ', -'ū' => 'Ū', -'ŭ' => 'Ŭ', -'ů' => 'Ů', -'ű' => 'Ű', -'ų' => 'Ų', -'ŵ' => 'Ŵ', -'ŷ' => 'Ŷ', -'ź' => 'Ź', -'ż' => 'Ż', -'ž' => 'Ž', -'ſ' => 'S', -'ƀ' => 'Ƀ', -'ƃ' => 'Ƃ', -'ƅ' => 'Ƅ', -'ƈ' => 'Ƈ', -'ƌ' => 'Ƌ', -'ƒ' => 'Ƒ', -'ƕ' => 'Ƕ', -'ƙ' => 'Ƙ', -'ƚ' => 'Ƚ', -'ƞ' => 'Ƞ', -'ơ' => 'Ơ', -'ƣ' => 'Ƣ', -'ƥ' => 'Ƥ', -'ƨ' => 'Ƨ', -'ƭ' => 'Ƭ', -'ư' => 'Ư', -'ƴ' => 'Ƴ', -'ƶ' => 'Ƶ', -'ƹ' => 'Ƹ', -'ƽ' => 'Ƽ', -'ƿ' => 'Ƿ', -'Dž' => 'DŽ', -'dž' => 'DŽ', -'Lj' => 'LJ', -'lj' => 'LJ', -'Nj' => 'NJ', -'nj' => 'NJ', -'ǎ' => 'Ǎ', -'ǐ' => 'Ǐ', -'ǒ' => 'Ǒ', -'ǔ' => 'Ǔ', -'ǖ' => 'Ǖ', -'ǘ' => 'Ǘ', -'ǚ' => 'Ǚ', -'ǜ' => 'Ǜ', -'ǝ' => 'Ǝ', -'ǟ' => 'Ǟ', -'ǡ' => 'Ǡ', -'ǣ' => 'Ǣ', -'ǥ' => 'Ǥ', -'ǧ' => 'Ǧ', -'ǩ' => 'Ǩ', -'ǫ' => 'Ǫ', -'ǭ' => 'Ǭ', -'ǯ' => 'Ǯ', -'Dz' => 'DZ', -'dz' => 'DZ', -'ǵ' => 'Ǵ', -'ǹ' => 'Ǹ', -'ǻ' => 'Ǻ', -'ǽ' => 'Ǽ', -'ǿ' => 'Ǿ', -'ȁ' => 'Ȁ', -'ȃ' => 'Ȃ', -'ȅ' => 'Ȅ', -'ȇ' => 'Ȇ', -'ȉ' => 'Ȉ', -'ȋ' => 'Ȋ', -'ȍ' => 'Ȍ', -'ȏ' => 'Ȏ', -'ȑ' => 'Ȑ', -'ȓ' => 'Ȓ', -'ȕ' => 'Ȕ', -'ȗ' => 'Ȗ', -'ș' => 'Ș', -'ț' => 'Ț', -'ȝ' => 'Ȝ', -'ȟ' => 'Ȟ', -'ȣ' => 'Ȣ', -'ȥ' => 'Ȥ', -'ȧ' => 'Ȧ', -'ȩ' => 'Ȩ', -'ȫ' => 'Ȫ', -'ȭ' => 'Ȭ', -'ȯ' => 'Ȯ', -'ȱ' => 'Ȱ', -'ȳ' => 'Ȳ', -'ȼ' => 'Ȼ', -'ȿ' => 'Ȿ', -'ɀ' => 'Ɀ', -'ɂ' => 'Ɂ', -'ɇ' => 'Ɇ', -'ɉ' => 'Ɉ', -'ɋ' => 'Ɋ', -'ɍ' => 'Ɍ', -'ɏ' => 'Ɏ', -'ɐ' => 'Ɐ', -'ɑ' => 'Ɑ', -'ɒ' => 'Ɒ', -'ɓ' => 'Ɓ', -'ɔ' => 'Ɔ', -'ɖ' => 'Ɖ', -'ɗ' => 'Ɗ', -'ə' => 'Ə', -'ɛ' => 'Ɛ', -'ɜ' => 'Ɜ', -'ɠ' => 'Ɠ', -'ɡ' => 'Ɡ', -'ɣ' => 'Ɣ', -'ɥ' => 'Ɥ', -'ɦ' => 'Ɦ', -'ɨ' => 'Ɨ', -'ɩ' => 'Ɩ', -'ɪ' => 'Ɪ', -'ɫ' => 'Ɫ', -'ɬ' => 'Ɬ', -'ɯ' => 'Ɯ', -'ɱ' => 'Ɱ', -'ɲ' => 'Ɲ', -'ɵ' => 'Ɵ', -'ɽ' => 'Ɽ', -'ʀ' => 'Ʀ', -'ʂ' => 'Ʂ', -'ʃ' => 'Ʃ', -'ʇ' => 'Ʇ', -'ʈ' => 'Ʈ', -'ʉ' => 'Ʉ', -'ʊ' => 'Ʊ', -'ʋ' => 'Ʋ', -'ʌ' => 'Ʌ', -'ʒ' => 'Ʒ', -'ʝ' => 'Ʝ', -'ʞ' => 'Ʞ', -'ͅ' => 'Ι', -'ͱ' => 'Ͱ', -'ͳ' => 'Ͳ', -'ͷ' => 'Ͷ', -'ͻ' => 'Ͻ', -'ͼ' => 'Ͼ', -'ͽ' => 'Ͽ', -'ά' => 'Ά', -'έ' => 'Έ', -'ή' => 'Ή', -'ί' => 'Ί', -'α' => 'Α', -'β' => 'Β', -'γ' => 'Γ', -'δ' => 'Δ', -'ε' => 'Ε', -'ζ' => 'Ζ', -'η' => 'Η', -'θ' => 'Θ', -'ι' => 'Ι', -'κ' => 'Κ', -'λ' => 'Λ', -'μ' => 'Μ', -'ν' => 'Ν', -'ξ' => 'Ξ', -'ο' => 'Ο', -'π' => 'Π', -'ρ' => 'Ρ', -'ς' => 'Σ', -'σ' => 'Σ', -'τ' => 'Τ', -'υ' => 'Υ', -'φ' => 'Φ', -'χ' => 'Χ', -'ψ' => 'Ψ', -'ω' => 'Ω', -'ϊ' => 'Ϊ', -'ϋ' => 'Ϋ', -'ό' => 'Ό', -'ύ' => 'Ύ', -'ώ' => 'Ώ', -'ϐ' => 'Β', -'ϑ' => 'Θ', -'ϕ' => 'Φ', -'ϖ' => 'Π', -'ϗ' => 'Ϗ', -'ϙ' => 'Ϙ', -'ϛ' => 'Ϛ', -'ϝ' => 'Ϝ', -'ϟ' => 'Ϟ', -'ϡ' => 'Ϡ', -'ϣ' => 'Ϣ', -'ϥ' => 'Ϥ', -'ϧ' => 'Ϧ', -'ϩ' => 'Ϩ', -'ϫ' => 'Ϫ', -'ϭ' => 'Ϭ', -'ϯ' => 'Ϯ', -'ϰ' => 'Κ', -'ϱ' => 'Ρ', -'ϲ' => 'Ϲ', -'ϳ' => 'Ϳ', -'ϵ' => 'Ε', -'ϸ' => 'Ϸ', -'ϻ' => 'Ϻ', -'а' => 'А', -'б' => 'Б', -'в' => 'В', -'г' => 'Г', -'д' => 'Д', -'е' => 'Е', -'ж' => 'Ж', -'з' => 'З', -'и' => 'И', -'й' => 'Й', -'к' => 'К', -'л' => 'Л', -'м' => 'М', -'н' => 'Н', -'о' => 'О', -'п' => 'П', -'р' => 'Р', -'с' => 'С', -'т' => 'Т', -'у' => 'У', -'ф' => 'Ф', -'х' => 'Х', -'ц' => 'Ц', -'ч' => 'Ч', -'ш' => 'Ш', -'щ' => 'Щ', -'ъ' => 'Ъ', -'ы' => 'Ы', -'ь' => 'Ь', -'э' => 'Э', -'ю' => 'Ю', -'я' => 'Я', -'ѐ' => 'Ѐ', -'ё' => 'Ё', -'ђ' => 'Ђ', -'ѓ' => 'Ѓ', -'є' => 'Є', -'ѕ' => 'Ѕ', -'і' => 'І', -'ї' => 'Ї', -'ј' => 'Ј', -'љ' => 'Љ', -'њ' => 'Њ', -'ћ' => 'Ћ', -'ќ' => 'Ќ', -'ѝ' => 'Ѝ', -'ў' => 'Ў', -'џ' => 'Џ', -'ѡ' => 'Ѡ', -'ѣ' => 'Ѣ', -'ѥ' => 'Ѥ', -'ѧ' => 'Ѧ', -'ѩ' => 'Ѩ', -'ѫ' => 'Ѫ', -'ѭ' => 'Ѭ', -'ѯ' => 'Ѯ', -'ѱ' => 'Ѱ', -'ѳ' => 'Ѳ', -'ѵ' => 'Ѵ', -'ѷ' => 'Ѷ', -'ѹ' => 'Ѹ', -'ѻ' => 'Ѻ', -'ѽ' => 'Ѽ', -'ѿ' => 'Ѿ', -'ҁ' => 'Ҁ', -'ҋ' => 'Ҋ', -'ҍ' => 'Ҍ', -'ҏ' => 'Ҏ', -'ґ' => 'Ґ', -'ғ' => 'Ғ', -'ҕ' => 'Ҕ', -'җ' => 'Җ', -'ҙ' => 'Ҙ', -'қ' => 'Қ', -'ҝ' => 'Ҝ', -'ҟ' => 'Ҟ', -'ҡ' => 'Ҡ', -'ң' => 'Ң', -'ҥ' => 'Ҥ', -'ҧ' => 'Ҧ', -'ҩ' => 'Ҩ', -'ҫ' => 'Ҫ', -'ҭ' => 'Ҭ', -'ү' => 'Ү', -'ұ' => 'Ұ', -'ҳ' => 'Ҳ', -'ҵ' => 'Ҵ', -'ҷ' => 'Ҷ', -'ҹ' => 'Ҹ', -'һ' => 'Һ', -'ҽ' => 'Ҽ', -'ҿ' => 'Ҿ', -'ӂ' => 'Ӂ', -'ӄ' => 'Ӄ', -'ӆ' => 'Ӆ', -'ӈ' => 'Ӈ', -'ӊ' => 'Ӊ', -'ӌ' => 'Ӌ', -'ӎ' => 'Ӎ', -'ӏ' => 'Ӏ', -'ӑ' => 'Ӑ', -'ӓ' => 'Ӓ', -'ӕ' => 'Ӕ', -'ӗ' => 'Ӗ', -'ә' => 'Ә', -'ӛ' => 'Ӛ', -'ӝ' => 'Ӝ', -'ӟ' => 'Ӟ', -'ӡ' => 'Ӡ', -'ӣ' => 'Ӣ', -'ӥ' => 'Ӥ', -'ӧ' => 'Ӧ', -'ө' => 'Ө', -'ӫ' => 'Ӫ', -'ӭ' => 'Ӭ', -'ӯ' => 'Ӯ', -'ӱ' => 'Ӱ', -'ӳ' => 'Ӳ', -'ӵ' => 'Ӵ', -'ӷ' => 'Ӷ', -'ӹ' => 'Ӹ', -'ӻ' => 'Ӻ', -'ӽ' => 'Ӽ', -'ӿ' => 'Ӿ', -'ԁ' => 'Ԁ', -'ԃ' => 'Ԃ', -'ԅ' => 'Ԅ', -'ԇ' => 'Ԇ', -'ԉ' => 'Ԉ', -'ԋ' => 'Ԋ', -'ԍ' => 'Ԍ', -'ԏ' => 'Ԏ', -'ԑ' => 'Ԑ', -'ԓ' => 'Ԓ', -'ԕ' => 'Ԕ', -'ԗ' => 'Ԗ', -'ԙ' => 'Ԙ', -'ԛ' => 'Ԛ', -'ԝ' => 'Ԝ', -'ԟ' => 'Ԟ', -'ԡ' => 'Ԡ', -'ԣ' => 'Ԣ', -'ԥ' => 'Ԥ', -'ԧ' => 'Ԧ', -'ԩ' => 'Ԩ', -'ԫ' => 'Ԫ', -'ԭ' => 'Ԭ', -'ԯ' => 'Ԯ', -'ա' => 'Ա', -'բ' => 'Բ', -'գ' => 'Գ', -'դ' => 'Դ', -'ե' => 'Ե', -'զ' => 'Զ', -'է' => 'Է', -'ը' => 'Ը', -'թ' => 'Թ', -'ժ' => 'Ժ', -'ի' => 'Ի', -'լ' => 'Լ', -'խ' => 'Խ', -'ծ' => 'Ծ', -'կ' => 'Կ', -'հ' => 'Հ', -'ձ' => 'Ձ', -'ղ' => 'Ղ', -'ճ' => 'Ճ', -'մ' => 'Մ', -'յ' => 'Յ', -'ն' => 'Ն', -'շ' => 'Շ', -'ո' => 'Ո', -'չ' => 'Չ', -'պ' => 'Պ', -'ջ' => 'Ջ', -'ռ' => 'Ռ', -'ս' => 'Ս', -'վ' => 'Վ', -'տ' => 'Տ', -'ր' => 'Ր', -'ց' => 'Ց', -'ւ' => 'Ւ', -'փ' => 'Փ', -'ք' => 'Ք', -'օ' => 'Օ', -'ֆ' => 'Ֆ', -'ა' => 'Ა', -'ბ' => 'Ბ', -'გ' => 'Გ', -'დ' => 'Დ', -'ე' => 'Ე', -'ვ' => 'Ვ', -'ზ' => 'Ზ', -'თ' => 'Თ', -'ი' => 'Ი', -'კ' => 'Კ', -'ლ' => 'Ლ', -'მ' => 'Მ', -'ნ' => 'Ნ', -'ო' => 'Ო', -'პ' => 'Პ', -'ჟ' => 'Ჟ', -'რ' => 'Რ', -'ს' => 'Ს', -'ტ' => 'Ტ', -'უ' => 'Უ', -'ფ' => 'Ფ', -'ქ' => 'Ქ', -'ღ' => 'Ღ', -'ყ' => 'Ყ', -'შ' => 'Შ', -'ჩ' => 'Ჩ', -'ც' => 'Ც', -'ძ' => 'Ძ', -'წ' => 'Წ', -'ჭ' => 'Ჭ', -'ხ' => 'Ხ', -'ჯ' => 'Ჯ', -'ჰ' => 'Ჰ', -'ჱ' => 'Ჱ', -'ჲ' => 'Ჲ', -'ჳ' => 'Ჳ', -'ჴ' => 'Ჴ', -'ჵ' => 'Ჵ', -'ჶ' => 'Ჶ', -'ჷ' => 'Ჷ', -'ჸ' => 'Ჸ', -'ჹ' => 'Ჹ', -'ჺ' => 'Ჺ', -'ჽ' => 'Ჽ', -'ჾ' => 'Ჾ', -'ჿ' => 'Ჿ', -'ᏸ' => 'Ᏸ', -'ᏹ' => 'Ᏹ', -'ᏺ' => 'Ᏺ', -'ᏻ' => 'Ᏻ', -'ᏼ' => 'Ᏼ', -'ᏽ' => 'Ᏽ', -'ᲀ' => 'В', -'ᲁ' => 'Д', -'ᲂ' => 'О', -'ᲃ' => 'С', -'ᲄ' => 'Т', -'ᲅ' => 'Т', -'ᲆ' => 'Ъ', -'ᲇ' => 'Ѣ', -'ᲈ' => 'Ꙋ', -'ᵹ' => 'Ᵹ', -'ᵽ' => 'Ᵽ', -'ᶎ' => 'Ᶎ', -'ḁ' => 'Ḁ', -'ḃ' => 'Ḃ', -'ḅ' => 'Ḅ', -'ḇ' => 'Ḇ', -'ḉ' => 'Ḉ', -'ḋ' => 'Ḋ', -'ḍ' => 'Ḍ', -'ḏ' => 'Ḏ', -'ḑ' => 'Ḑ', -'ḓ' => 'Ḓ', -'ḕ' => 'Ḕ', -'ḗ' => 'Ḗ', -'ḙ' => 'Ḙ', -'ḛ' => 'Ḛ', -'ḝ' => 'Ḝ', -'ḟ' => 'Ḟ', -'ḡ' => 'Ḡ', -'ḣ' => 'Ḣ', -'ḥ' => 'Ḥ', -'ḧ' => 'Ḧ', -'ḩ' => 'Ḩ', -'ḫ' => 'Ḫ', -'ḭ' => 'Ḭ', -'ḯ' => 'Ḯ', -'ḱ' => 'Ḱ', -'ḳ' => 'Ḳ', -'ḵ' => 'Ḵ', -'ḷ' => 'Ḷ', -'ḹ' => 'Ḹ', -'ḻ' => 'Ḻ', -'ḽ' => 'Ḽ', -'ḿ' => 'Ḿ', -'ṁ' => 'Ṁ', -'ṃ' => 'Ṃ', -'ṅ' => 'Ṅ', -'ṇ' => 'Ṇ', -'ṉ' => 'Ṉ', -'ṋ' => 'Ṋ', -'ṍ' => 'Ṍ', -'ṏ' => 'Ṏ', -'ṑ' => 'Ṑ', -'ṓ' => 'Ṓ', -'ṕ' => 'Ṕ', -'ṗ' => 'Ṗ', -'ṙ' => 'Ṙ', -'ṛ' => 'Ṛ', -'ṝ' => 'Ṝ', -'ṟ' => 'Ṟ', -'ṡ' => 'Ṡ', -'ṣ' => 'Ṣ', -'ṥ' => 'Ṥ', -'ṧ' => 'Ṧ', -'ṩ' => 'Ṩ', -'ṫ' => 'Ṫ', -'ṭ' => 'Ṭ', -'ṯ' => 'Ṯ', -'ṱ' => 'Ṱ', -'ṳ' => 'Ṳ', -'ṵ' => 'Ṵ', -'ṷ' => 'Ṷ', -'ṹ' => 'Ṹ', -'ṻ' => 'Ṻ', -'ṽ' => 'Ṽ', -'ṿ' => 'Ṿ', -'ẁ' => 'Ẁ', -'ẃ' => 'Ẃ', -'ẅ' => 'Ẅ', -'ẇ' => 'Ẇ', -'ẉ' => 'Ẉ', -'ẋ' => 'Ẋ', -'ẍ' => 'Ẍ', -'ẏ' => 'Ẏ', -'ẑ' => 'Ẑ', -'ẓ' => 'Ẓ', -'ẕ' => 'Ẕ', -'ẛ' => 'Ṡ', -'ạ' => 'Ạ', -'ả' => 'Ả', -'ấ' => 'Ấ', -'ầ' => 'Ầ', -'ẩ' => 'Ẩ', -'ẫ' => 'Ẫ', -'ậ' => 'Ậ', -'ắ' => 'Ắ', -'ằ' => 'Ằ', -'ẳ' => 'Ẳ', -'ẵ' => 'Ẵ', -'ặ' => 'Ặ', -'ẹ' => 'Ẹ', -'ẻ' => 'Ẻ', -'ẽ' => 'Ẽ', -'ế' => 'Ế', -'ề' => 'Ề', -'ể' => 'Ể', -'ễ' => 'Ễ', -'ệ' => 'Ệ', -'ỉ' => 'Ỉ', -'ị' => 'Ị', -'ọ' => 'Ọ', -'ỏ' => 'Ỏ', -'ố' => 'Ố', -'ồ' => 'Ồ', -'ổ' => 'Ổ', -'ỗ' => 'Ỗ', -'ộ' => 'Ộ', -'ớ' => 'Ớ', -'ờ' => 'Ờ', -'ở' => 'Ở', -'ỡ' => 'Ỡ', -'ợ' => 'Ợ', -'ụ' => 'Ụ', -'ủ' => 'Ủ', -'ứ' => 'Ứ', -'ừ' => 'Ừ', -'ử' => 'Ử', -'ữ' => 'Ữ', -'ự' => 'Ự', -'ỳ' => 'Ỳ', -'ỵ' => 'Ỵ', -'ỷ' => 'Ỷ', -'ỹ' => 'Ỹ', -'ỻ' => 'Ỻ', -'ỽ' => 'Ỽ', -'ỿ' => 'Ỿ', -'ἀ' => 'Ἀ', -'ἁ' => 'Ἁ', -'ἂ' => 'Ἂ', -'ἃ' => 'Ἃ', -'ἄ' => 'Ἄ', -'ἅ' => 'Ἅ', -'ἆ' => 'Ἆ', -'ἇ' => 'Ἇ', -'ἐ' => 'Ἐ', -'ἑ' => 'Ἑ', -'ἒ' => 'Ἒ', -'ἓ' => 'Ἓ', -'ἔ' => 'Ἔ', -'ἕ' => 'Ἕ', -'ἠ' => 'Ἠ', -'ἡ' => 'Ἡ', -'ἢ' => 'Ἢ', -'ἣ' => 'Ἣ', -'ἤ' => 'Ἤ', -'ἥ' => 'Ἥ', -'ἦ' => 'Ἦ', -'ἧ' => 'Ἧ', -'ἰ' => 'Ἰ', -'ἱ' => 'Ἱ', -'ἲ' => 'Ἲ', -'ἳ' => 'Ἳ', -'ἴ' => 'Ἴ', -'ἵ' => 'Ἵ', -'ἶ' => 'Ἶ', -'ἷ' => 'Ἷ', -'ὀ' => 'Ὀ', -'ὁ' => 'Ὁ', -'ὂ' => 'Ὂ', -'ὃ' => 'Ὃ', -'ὄ' => 'Ὄ', -'ὅ' => 'Ὅ', -'ὑ' => 'Ὑ', -'ὓ' => 'Ὓ', -'ὕ' => 'Ὕ', -'ὗ' => 'Ὗ', -'ὠ' => 'Ὠ', -'ὡ' => 'Ὡ', -'ὢ' => 'Ὢ', -'ὣ' => 'Ὣ', -'ὤ' => 'Ὤ', -'ὥ' => 'Ὥ', -'ὦ' => 'Ὦ', -'ὧ' => 'Ὧ', -'ὰ' => 'Ὰ', -'ά' => 'Ά', -'ὲ' => 'Ὲ', -'έ' => 'Έ', -'ὴ' => 'Ὴ', -'ή' => 'Ή', -'ὶ' => 'Ὶ', -'ί' => 'Ί', -'ὸ' => 'Ὸ', -'ό' => 'Ό', -'ὺ' => 'Ὺ', -'ύ' => 'Ύ', -'ὼ' => 'Ὼ', -'ώ' => 'Ώ', -'ᾀ' => 'ἈΙ', -'ᾁ' => 'ἉΙ', -'ᾂ' => 'ἊΙ', -'ᾃ' => 'ἋΙ', -'ᾄ' => 'ἌΙ', -'ᾅ' => 'ἍΙ', -'ᾆ' => 'ἎΙ', -'ᾇ' => 'ἏΙ', -'ᾐ' => 'ἨΙ', -'ᾑ' => 'ἩΙ', -'ᾒ' => 'ἪΙ', -'ᾓ' => 'ἫΙ', -'ᾔ' => 'ἬΙ', -'ᾕ' => 'ἭΙ', -'ᾖ' => 'ἮΙ', -'ᾗ' => 'ἯΙ', -'ᾠ' => 'ὨΙ', -'ᾡ' => 'ὩΙ', -'ᾢ' => 'ὪΙ', -'ᾣ' => 'ὫΙ', -'ᾤ' => 'ὬΙ', -'ᾥ' => 'ὭΙ', -'ᾦ' => 'ὮΙ', -'ᾧ' => 'ὯΙ', -'ᾰ' => 'Ᾰ', -'ᾱ' => 'Ᾱ', -'ᾳ' => 'ΑΙ', -'ι' => 'Ι', -'ῃ' => 'ΗΙ', -'ῐ' => 'Ῐ', -'ῑ' => 'Ῑ', -'ῠ' => 'Ῠ', -'ῡ' => 'Ῡ', -'ῥ' => 'Ῥ', -'ῳ' => 'ΩΙ', -'ⅎ' => 'Ⅎ', -'ⅰ' => 'Ⅰ', -'ⅱ' => 'Ⅱ', -'ⅲ' => 'Ⅲ', -'ⅳ' => 'Ⅳ', -'ⅴ' => 'Ⅴ', -'ⅵ' => 'Ⅵ', -'ⅶ' => 'Ⅶ', -'ⅷ' => 'Ⅷ', -'ⅸ' => 'Ⅸ', -'ⅹ' => 'Ⅹ', -'ⅺ' => 'Ⅺ', -'ⅻ' => 'Ⅻ', -'ⅼ' => 'Ⅼ', -'ⅽ' => 'Ⅽ', -'ⅾ' => 'Ⅾ', -'ⅿ' => 'Ⅿ', -'ↄ' => 'Ↄ', -'ⓐ' => 'Ⓐ', -'ⓑ' => 'Ⓑ', -'ⓒ' => 'Ⓒ', -'ⓓ' => 'Ⓓ', -'ⓔ' => 'Ⓔ', -'ⓕ' => 'Ⓕ', -'ⓖ' => 'Ⓖ', -'ⓗ' => 'Ⓗ', -'ⓘ' => 'Ⓘ', -'ⓙ' => 'Ⓙ', -'ⓚ' => 'Ⓚ', -'ⓛ' => 'Ⓛ', -'ⓜ' => 'Ⓜ', -'ⓝ' => 'Ⓝ', -'ⓞ' => 'Ⓞ', -'ⓟ' => 'Ⓟ', -'ⓠ' => 'Ⓠ', -'ⓡ' => 'Ⓡ', -'ⓢ' => 'Ⓢ', -'ⓣ' => 'Ⓣ', -'ⓤ' => 'Ⓤ', -'ⓥ' => 'Ⓥ', -'ⓦ' => 'Ⓦ', -'ⓧ' => 'Ⓧ', -'ⓨ' => 'Ⓨ', -'ⓩ' => 'Ⓩ', -'ⰰ' => 'Ⰰ', -'ⰱ' => 'Ⰱ', -'ⰲ' => 'Ⰲ', -'ⰳ' => 'Ⰳ', -'ⰴ' => 'Ⰴ', -'ⰵ' => 'Ⰵ', -'ⰶ' => 'Ⰶ', -'ⰷ' => 'Ⰷ', -'ⰸ' => 'Ⰸ', -'ⰹ' => 'Ⰹ', -'ⰺ' => 'Ⰺ', -'ⰻ' => 'Ⰻ', -'ⰼ' => 'Ⰼ', -'ⰽ' => 'Ⰽ', -'ⰾ' => 'Ⰾ', -'ⰿ' => 'Ⰿ', -'ⱀ' => 'Ⱀ', -'ⱁ' => 'Ⱁ', -'ⱂ' => 'Ⱂ', -'ⱃ' => 'Ⱃ', -'ⱄ' => 'Ⱄ', -'ⱅ' => 'Ⱅ', -'ⱆ' => 'Ⱆ', -'ⱇ' => 'Ⱇ', -'ⱈ' => 'Ⱈ', -'ⱉ' => 'Ⱉ', -'ⱊ' => 'Ⱊ', -'ⱋ' => 'Ⱋ', -'ⱌ' => 'Ⱌ', -'ⱍ' => 'Ⱍ', -'ⱎ' => 'Ⱎ', -'ⱏ' => 'Ⱏ', -'ⱐ' => 'Ⱐ', -'ⱑ' => 'Ⱑ', -'ⱒ' => 'Ⱒ', -'ⱓ' => 'Ⱓ', -'ⱔ' => 'Ⱔ', -'ⱕ' => 'Ⱕ', -'ⱖ' => 'Ⱖ', -'ⱗ' => 'Ⱗ', -'ⱘ' => 'Ⱘ', -'ⱙ' => 'Ⱙ', -'ⱚ' => 'Ⱚ', -'ⱛ' => 'Ⱛ', -'ⱜ' => 'Ⱜ', -'ⱝ' => 'Ⱝ', -'ⱞ' => 'Ⱞ', -'ⱡ' => 'Ⱡ', -'ⱥ' => 'Ⱥ', -'ⱦ' => 'Ⱦ', -'ⱨ' => 'Ⱨ', -'ⱪ' => 'Ⱪ', -'ⱬ' => 'Ⱬ', -'ⱳ' => 'Ⱳ', -'ⱶ' => 'Ⱶ', -'ⲁ' => 'Ⲁ', -'ⲃ' => 'Ⲃ', -'ⲅ' => 'Ⲅ', -'ⲇ' => 'Ⲇ', -'ⲉ' => 'Ⲉ', -'ⲋ' => 'Ⲋ', -'ⲍ' => 'Ⲍ', -'ⲏ' => 'Ⲏ', -'ⲑ' => 'Ⲑ', -'ⲓ' => 'Ⲓ', -'ⲕ' => 'Ⲕ', -'ⲗ' => 'Ⲗ', -'ⲙ' => 'Ⲙ', -'ⲛ' => 'Ⲛ', -'ⲝ' => 'Ⲝ', -'ⲟ' => 'Ⲟ', -'ⲡ' => 'Ⲡ', -'ⲣ' => 'Ⲣ', -'ⲥ' => 'Ⲥ', -'ⲧ' => 'Ⲧ', -'ⲩ' => 'Ⲩ', -'ⲫ' => 'Ⲫ', -'ⲭ' => 'Ⲭ', -'ⲯ' => 'Ⲯ', -'ⲱ' => 'Ⲱ', -'ⲳ' => 'Ⲳ', -'ⲵ' => 'Ⲵ', -'ⲷ' => 'Ⲷ', -'ⲹ' => 'Ⲹ', -'ⲻ' => 'Ⲻ', -'ⲽ' => 'Ⲽ', -'ⲿ' => 'Ⲿ', -'ⳁ' => 'Ⳁ', -'ⳃ' => 'Ⳃ', -'ⳅ' => 'Ⳅ', -'ⳇ' => 'Ⳇ', -'ⳉ' => 'Ⳉ', -'ⳋ' => 'Ⳋ', -'ⳍ' => 'Ⳍ', -'ⳏ' => 'Ⳏ', -'ⳑ' => 'Ⳑ', -'ⳓ' => 'Ⳓ', -'ⳕ' => 'Ⳕ', -'ⳗ' => 'Ⳗ', -'ⳙ' => 'Ⳙ', -'ⳛ' => 'Ⳛ', -'ⳝ' => 'Ⳝ', -'ⳟ' => 'Ⳟ', -'ⳡ' => 'Ⳡ', -'ⳣ' => 'Ⳣ', -'ⳬ' => 'Ⳬ', -'ⳮ' => 'Ⳮ', -'ⳳ' => 'Ⳳ', -'ⴀ' => 'Ⴀ', -'ⴁ' => 'Ⴁ', -'ⴂ' => 'Ⴂ', -'ⴃ' => 'Ⴃ', -'ⴄ' => 'Ⴄ', -'ⴅ' => 'Ⴅ', -'ⴆ' => 'Ⴆ', -'ⴇ' => 'Ⴇ', -'ⴈ' => 'Ⴈ', -'ⴉ' => 'Ⴉ', -'ⴊ' => 'Ⴊ', -'ⴋ' => 'Ⴋ', -'ⴌ' => 'Ⴌ', -'ⴍ' => 'Ⴍ', -'ⴎ' => 'Ⴎ', -'ⴏ' => 'Ⴏ', -'ⴐ' => 'Ⴐ', -'ⴑ' => 'Ⴑ', -'ⴒ' => 'Ⴒ', -'ⴓ' => 'Ⴓ', -'ⴔ' => 'Ⴔ', -'ⴕ' => 'Ⴕ', -'ⴖ' => 'Ⴖ', -'ⴗ' => 'Ⴗ', -'ⴘ' => 'Ⴘ', -'ⴙ' => 'Ⴙ', -'ⴚ' => 'Ⴚ', -'ⴛ' => 'Ⴛ', -'ⴜ' => 'Ⴜ', -'ⴝ' => 'Ⴝ', -'ⴞ' => 'Ⴞ', -'ⴟ' => 'Ⴟ', -'ⴠ' => 'Ⴠ', -'ⴡ' => 'Ⴡ', -'ⴢ' => 'Ⴢ', -'ⴣ' => 'Ⴣ', -'ⴤ' => 'Ⴤ', -'ⴥ' => 'Ⴥ', -'ⴧ' => 'Ⴧ', -'ⴭ' => 'Ⴭ', -'ꙁ' => 'Ꙁ', -'ꙃ' => 'Ꙃ', -'ꙅ' => 'Ꙅ', -'ꙇ' => 'Ꙇ', -'ꙉ' => 'Ꙉ', -'ꙋ' => 'Ꙋ', -'ꙍ' => 'Ꙍ', -'ꙏ' => 'Ꙏ', -'ꙑ' => 'Ꙑ', -'ꙓ' => 'Ꙓ', -'ꙕ' => 'Ꙕ', -'ꙗ' => 'Ꙗ', -'ꙙ' => 'Ꙙ', -'ꙛ' => 'Ꙛ', -'ꙝ' => 'Ꙝ', -'ꙟ' => 'Ꙟ', -'ꙡ' => 'Ꙡ', -'ꙣ' => 'Ꙣ', -'ꙥ' => 'Ꙥ', -'ꙧ' => 'Ꙧ', -'ꙩ' => 'Ꙩ', -'ꙫ' => 'Ꙫ', -'ꙭ' => 'Ꙭ', -'ꚁ' => 'Ꚁ', -'ꚃ' => 'Ꚃ', -'ꚅ' => 'Ꚅ', -'ꚇ' => 'Ꚇ', -'ꚉ' => 'Ꚉ', -'ꚋ' => 'Ꚋ', -'ꚍ' => 'Ꚍ', -'ꚏ' => 'Ꚏ', -'ꚑ' => 'Ꚑ', -'ꚓ' => 'Ꚓ', -'ꚕ' => 'Ꚕ', -'ꚗ' => 'Ꚗ', -'ꚙ' => 'Ꚙ', -'ꚛ' => 'Ꚛ', -'ꜣ' => 'Ꜣ', -'ꜥ' => 'Ꜥ', -'ꜧ' => 'Ꜧ', -'ꜩ' => 'Ꜩ', -'ꜫ' => 'Ꜫ', -'ꜭ' => 'Ꜭ', -'ꜯ' => 'Ꜯ', -'ꜳ' => 'Ꜳ', -'ꜵ' => 'Ꜵ', -'ꜷ' => 'Ꜷ', -'ꜹ' => 'Ꜹ', -'ꜻ' => 'Ꜻ', -'ꜽ' => 'Ꜽ', -'ꜿ' => 'Ꜿ', -'ꝁ' => 'Ꝁ', -'ꝃ' => 'Ꝃ', -'ꝅ' => 'Ꝅ', -'ꝇ' => 'Ꝇ', -'ꝉ' => 'Ꝉ', -'ꝋ' => 'Ꝋ', -'ꝍ' => 'Ꝍ', -'ꝏ' => 'Ꝏ', -'ꝑ' => 'Ꝑ', -'ꝓ' => 'Ꝓ', -'ꝕ' => 'Ꝕ', -'ꝗ' => 'Ꝗ', -'ꝙ' => 'Ꝙ', -'ꝛ' => 'Ꝛ', -'ꝝ' => 'Ꝝ', -'ꝟ' => 'Ꝟ', -'ꝡ' => 'Ꝡ', -'ꝣ' => 'Ꝣ', -'ꝥ' => 'Ꝥ', -'ꝧ' => 'Ꝧ', -'ꝩ' => 'Ꝩ', -'ꝫ' => 'Ꝫ', -'ꝭ' => 'Ꝭ', -'ꝯ' => 'Ꝯ', -'ꝺ' => 'Ꝺ', -'ꝼ' => 'Ꝼ', -'ꝿ' => 'Ꝿ', -'ꞁ' => 'Ꞁ', -'ꞃ' => 'Ꞃ', -'ꞅ' => 'Ꞅ', -'ꞇ' => 'Ꞇ', -'ꞌ' => 'Ꞌ', -'ꞑ' => 'Ꞑ', -'ꞓ' => 'Ꞓ', -'ꞔ' => 'Ꞔ', -'ꞗ' => 'Ꞗ', -'ꞙ' => 'Ꞙ', -'ꞛ' => 'Ꞛ', -'ꞝ' => 'Ꞝ', -'ꞟ' => 'Ꞟ', -'ꞡ' => 'Ꞡ', -'ꞣ' => 'Ꞣ', -'ꞥ' => 'Ꞥ', -'ꞧ' => 'Ꞧ', -'ꞩ' => 'Ꞩ', -'ꞵ' => 'Ꞵ', -'ꞷ' => 'Ꞷ', -'ꞹ' => 'Ꞹ', -'ꞻ' => 'Ꞻ', -'ꞽ' => 'Ꞽ', -'ꞿ' => 'Ꞿ', -'ꟃ' => 'Ꟃ', -'ꟈ' => 'Ꟈ', -'ꟊ' => 'Ꟊ', -'ꟶ' => 'Ꟶ', -'ꭓ' => 'Ꭓ', -'ꭰ' => 'Ꭰ', -'ꭱ' => 'Ꭱ', -'ꭲ' => 'Ꭲ', -'ꭳ' => 'Ꭳ', -'ꭴ' => 'Ꭴ', -'ꭵ' => 'Ꭵ', -'ꭶ' => 'Ꭶ', -'ꭷ' => 'Ꭷ', -'ꭸ' => 'Ꭸ', -'ꭹ' => 'Ꭹ', -'ꭺ' => 'Ꭺ', -'ꭻ' => 'Ꭻ', -'ꭼ' => 'Ꭼ', -'ꭽ' => 'Ꭽ', -'ꭾ' => 'Ꭾ', -'ꭿ' => 'Ꭿ', -'ꮀ' => 'Ꮀ', -'ꮁ' => 'Ꮁ', -'ꮂ' => 'Ꮂ', -'ꮃ' => 'Ꮃ', -'ꮄ' => 'Ꮄ', -'ꮅ' => 'Ꮅ', -'ꮆ' => 'Ꮆ', -'ꮇ' => 'Ꮇ', -'ꮈ' => 'Ꮈ', -'ꮉ' => 'Ꮉ', -'ꮊ' => 'Ꮊ', -'ꮋ' => 'Ꮋ', -'ꮌ' => 'Ꮌ', -'ꮍ' => 'Ꮍ', -'ꮎ' => 'Ꮎ', -'ꮏ' => 'Ꮏ', -'ꮐ' => 'Ꮐ', -'ꮑ' => 'Ꮑ', -'ꮒ' => 'Ꮒ', -'ꮓ' => 'Ꮓ', -'ꮔ' => 'Ꮔ', -'ꮕ' => 'Ꮕ', -'ꮖ' => 'Ꮖ', -'ꮗ' => 'Ꮗ', -'ꮘ' => 'Ꮘ', -'ꮙ' => 'Ꮙ', -'ꮚ' => 'Ꮚ', -'ꮛ' => 'Ꮛ', -'ꮜ' => 'Ꮜ', -'ꮝ' => 'Ꮝ', -'ꮞ' => 'Ꮞ', -'ꮟ' => 'Ꮟ', -'ꮠ' => 'Ꮠ', -'ꮡ' => 'Ꮡ', -'ꮢ' => 'Ꮢ', -'ꮣ' => 'Ꮣ', -'ꮤ' => 'Ꮤ', -'ꮥ' => 'Ꮥ', -'ꮦ' => 'Ꮦ', -'ꮧ' => 'Ꮧ', -'ꮨ' => 'Ꮨ', -'ꮩ' => 'Ꮩ', -'ꮪ' => 'Ꮪ', -'ꮫ' => 'Ꮫ', -'ꮬ' => 'Ꮬ', -'ꮭ' => 'Ꮭ', -'ꮮ' => 'Ꮮ', -'ꮯ' => 'Ꮯ', -'ꮰ' => 'Ꮰ', -'ꮱ' => 'Ꮱ', -'ꮲ' => 'Ꮲ', -'ꮳ' => 'Ꮳ', -'ꮴ' => 'Ꮴ', -'ꮵ' => 'Ꮵ', -'ꮶ' => 'Ꮶ', -'ꮷ' => 'Ꮷ', -'ꮸ' => 'Ꮸ', -'ꮹ' => 'Ꮹ', -'ꮺ' => 'Ꮺ', -'ꮻ' => 'Ꮻ', -'ꮼ' => 'Ꮼ', -'ꮽ' => 'Ꮽ', -'ꮾ' => 'Ꮾ', -'ꮿ' => 'Ꮿ', -'a' => 'A', -'b' => 'B', -'c' => 'C', -'d' => 'D', -'e' => 'E', -'f' => 'F', -'g' => 'G', -'h' => 'H', -'i' => 'I', -'j' => 'J', -'k' => 'K', -'l' => 'L', -'m' => 'M', -'n' => 'N', -'o' => 'O', -'p' => 'P', -'q' => 'Q', -'r' => 'R', -'s' => 'S', -'t' => 'T', -'u' => 'U', -'v' => 'V', -'w' => 'W', -'x' => 'X', -'y' => 'Y', -'z' => 'Z', -'𐐨' => '𐐀', -'𐐩' => '𐐁', -'𐐪' => '𐐂', -'𐐫' => '𐐃', -'𐐬' => '𐐄', -'𐐭' => '𐐅', -'𐐮' => '𐐆', -'𐐯' => '𐐇', -'𐐰' => '𐐈', -'𐐱' => '𐐉', -'𐐲' => '𐐊', -'𐐳' => '𐐋', -'𐐴' => '𐐌', -'𐐵' => '𐐍', -'𐐶' => '𐐎', -'𐐷' => '𐐏', -'𐐸' => '𐐐', -'𐐹' => '𐐑', -'𐐺' => '𐐒', -'𐐻' => '𐐓', -'𐐼' => '𐐔', -'𐐽' => '𐐕', -'𐐾' => '𐐖', -'𐐿' => '𐐗', -'𐑀' => '𐐘', -'𐑁' => '𐐙', -'𐑂' => '𐐚', -'𐑃' => '𐐛', -'𐑄' => '𐐜', -'𐑅' => '𐐝', -'𐑆' => '𐐞', -'𐑇' => '𐐟', -'𐑈' => '𐐠', -'𐑉' => '𐐡', -'𐑊' => '𐐢', -'𐑋' => '𐐣', -'𐑌' => '𐐤', -'𐑍' => '𐐥', -'𐑎' => '𐐦', -'𐑏' => '𐐧', -'𐓘' => '𐒰', -'𐓙' => '𐒱', -'𐓚' => '𐒲', -'𐓛' => '𐒳', -'𐓜' => '𐒴', -'𐓝' => '𐒵', -'𐓞' => '𐒶', -'𐓟' => '𐒷', -'𐓠' => '𐒸', -'𐓡' => '𐒹', -'𐓢' => '𐒺', -'𐓣' => '𐒻', -'𐓤' => '𐒼', -'𐓥' => '𐒽', -'𐓦' => '𐒾', -'𐓧' => '𐒿', -'𐓨' => '𐓀', -'𐓩' => '𐓁', -'𐓪' => '𐓂', -'𐓫' => '𐓃', -'𐓬' => '𐓄', -'𐓭' => '𐓅', -'𐓮' => '𐓆', -'𐓯' => '𐓇', -'𐓰' => '𐓈', -'𐓱' => '𐓉', -'𐓲' => '𐓊', -'𐓳' => '𐓋', -'𐓴' => '𐓌', -'𐓵' => '𐓍', -'𐓶' => '𐓎', -'𐓷' => '𐓏', -'𐓸' => '𐓐', -'𐓹' => '𐓑', -'𐓺' => '𐓒', -'𐓻' => '𐓓', -'𐳀' => '𐲀', -'𐳁' => '𐲁', -'𐳂' => '𐲂', -'𐳃' => '𐲃', -'𐳄' => '𐲄', -'𐳅' => '𐲅', -'𐳆' => '𐲆', -'𐳇' => '𐲇', -'𐳈' => '𐲈', -'𐳉' => '𐲉', -'𐳊' => '𐲊', -'𐳋' => '𐲋', -'𐳌' => '𐲌', -'𐳍' => '𐲍', -'𐳎' => '𐲎', -'𐳏' => '𐲏', -'𐳐' => '𐲐', -'𐳑' => '𐲑', -'𐳒' => '𐲒', -'𐳓' => '𐲓', -'𐳔' => '𐲔', -'𐳕' => '𐲕', -'𐳖' => '𐲖', -'𐳗' => '𐲗', -'𐳘' => '𐲘', -'𐳙' => '𐲙', -'𐳚' => '𐲚', -'𐳛' => '𐲛', -'𐳜' => '𐲜', -'𐳝' => '𐲝', -'𐳞' => '𐲞', -'𐳟' => '𐲟', -'𐳠' => '𐲠', -'𐳡' => '𐲡', -'𐳢' => '𐲢', -'𐳣' => '𐲣', -'𐳤' => '𐲤', -'𐳥' => '𐲥', -'𐳦' => '𐲦', -'𐳧' => '𐲧', -'𐳨' => '𐲨', -'𐳩' => '𐲩', -'𐳪' => '𐲪', -'𐳫' => '𐲫', -'𐳬' => '𐲬', -'𐳭' => '𐲭', -'𐳮' => '𐲮', -'𐳯' => '𐲯', -'𐳰' => '𐲰', -'𐳱' => '𐲱', -'𐳲' => '𐲲', -'𑣀' => '𑢠', -'𑣁' => '𑢡', -'𑣂' => '𑢢', -'𑣃' => '𑢣', -'𑣄' => '𑢤', -'𑣅' => '𑢥', -'𑣆' => '𑢦', -'𑣇' => '𑢧', -'𑣈' => '𑢨', -'𑣉' => '𑢩', -'𑣊' => '𑢪', -'𑣋' => '𑢫', -'𑣌' => '𑢬', -'𑣍' => '𑢭', -'𑣎' => '𑢮', -'𑣏' => '𑢯', -'𑣐' => '𑢰', -'𑣑' => '𑢱', -'𑣒' => '𑢲', -'𑣓' => '𑢳', -'𑣔' => '𑢴', -'𑣕' => '𑢵', -'𑣖' => '𑢶', -'𑣗' => '𑢷', -'𑣘' => '𑢸', -'𑣙' => '𑢹', -'𑣚' => '𑢺', -'𑣛' => '𑢻', -'𑣜' => '𑢼', -'𑣝' => '𑢽', -'𑣞' => '𑢾', -'𑣟' => '𑢿', -'𖹠' => '𖹀', -'𖹡' => '𖹁', -'𖹢' => '𖹂', -'𖹣' => '𖹃', -'𖹤' => '𖹄', -'𖹥' => '𖹅', -'𖹦' => '𖹆', -'𖹧' => '𖹇', -'𖹨' => '𖹈', -'𖹩' => '𖹉', -'𖹪' => '𖹊', -'𖹫' => '𖹋', -'𖹬' => '𖹌', -'𖹭' => '𖹍', -'𖹮' => '𖹎', -'𖹯' => '𖹏', -'𖹰' => '𖹐', -'𖹱' => '𖹑', -'𖹲' => '𖹒', -'𖹳' => '𖹓', -'𖹴' => '𖹔', -'𖹵' => '𖹕', -'𖹶' => '𖹖', -'𖹷' => '𖹗', -'𖹸' => '𖹘', -'𖹹' => '𖹙', -'𖹺' => '𖹚', -'𖹻' => '𖹛', -'𖹼' => '𖹜', -'𖹽' => '𖹝', -'𖹾' => '𖹞', -'𖹿' => '𖹟', -'𞤢' => '𞤀', -'𞤣' => '𞤁', -'𞤤' => '𞤂', -'𞤥' => '𞤃', -'𞤦' => '𞤄', -'𞤧' => '𞤅', -'𞤨' => '𞤆', -'𞤩' => '𞤇', -'𞤪' => '𞤈', -'𞤫' => '𞤉', -'𞤬' => '𞤊', -'𞤭' => '𞤋', -'𞤮' => '𞤌', -'𞤯' => '𞤍', -'𞤰' => '𞤎', -'𞤱' => '𞤏', -'𞤲' => '𞤐', -'𞤳' => '𞤑', -'𞤴' => '𞤒', -'𞤵' => '𞤓', -'𞤶' => '𞤔', -'𞤷' => '𞤕', -'𞤸' => '𞤖', -'𞤹' => '𞤗', -'𞤺' => '𞤘', -'𞤻' => '𞤙', -'𞤼' => '𞤚', -'𞤽' => '𞤛', -'𞤾' => '𞤜', -'𞤿' => '𞤝', -'𞥀' => '𞤞', -'𞥁' => '𞤟', -'𞥂' => '𞤠', -'𞥃' => '𞤡', -'ß' => 'SS', -'ff' => 'FF', -'fi' => 'FI', -'fl' => 'FL', -'ffi' => 'FFI', -'ffl' => 'FFL', -'ſt' => 'ST', -'st' => 'ST', -'և' => 'ԵՒ', -'ﬓ' => 'ՄՆ', -'ﬔ' => 'ՄԵ', -'ﬕ' => 'ՄԻ', -'ﬖ' => 'ՎՆ', -'ﬗ' => 'ՄԽ', -'ʼn' => 'ʼN', -'ΐ' => 'Ϊ́', -'ΰ' => 'Ϋ́', -'ǰ' => 'J̌', -'ẖ' => 'H̱', -'ẗ' => 'T̈', -'ẘ' => 'W̊', -'ẙ' => 'Y̊', -'ẚ' => 'Aʾ', -'ὐ' => 'Υ̓', -'ὒ' => 'Υ̓̀', -'ὔ' => 'Υ̓́', -'ὖ' => 'Υ̓͂', -'ᾶ' => 'Α͂', -'ῆ' => 'Η͂', -'ῒ' => 'Ϊ̀', -'ΐ' => 'Ϊ́', -'ῖ' => 'Ι͂', -'ῗ' => 'Ϊ͂', -'ῢ' => 'Ϋ̀', -'ΰ' => 'Ϋ́', -'ῤ' => 'Ρ̓', -'ῦ' => 'Υ͂', -'ῧ' => 'Ϋ͂', -'ῶ' => 'Ω͂', -'ᾈ' => 'ἈΙ', -'ᾉ' => 'ἉΙ', -'ᾊ' => 'ἊΙ', -'ᾋ' => 'ἋΙ', -'ᾌ' => 'ἌΙ', -'ᾍ' => 'ἍΙ', -'ᾎ' => 'ἎΙ', -'ᾏ' => 'ἏΙ', -'ᾘ' => 'ἨΙ', -'ᾙ' => 'ἩΙ', -'ᾚ' => 'ἪΙ', -'ᾛ' => 'ἫΙ', -'ᾜ' => 'ἬΙ', -'ᾝ' => 'ἭΙ', -'ᾞ' => 'ἮΙ', -'ᾟ' => 'ἯΙ', -'ᾨ' => 'ὨΙ', -'ᾩ' => 'ὩΙ', -'ᾪ' => 'ὪΙ', -'ᾫ' => 'ὫΙ', -'ᾬ' => 'ὬΙ', -'ᾭ' => 'ὭΙ', -'ᾮ' => 'ὮΙ', -'ᾯ' => 'ὯΙ', -'ᾼ' => 'ΑΙ', -'ῌ' => 'ΗΙ', -'ῼ' => 'ΩΙ', -'ᾲ' => 'ᾺΙ', -'ᾴ' => 'ΆΙ', -'ῂ' => 'ῊΙ', -'ῄ' => 'ΉΙ', -'ῲ' => 'ῺΙ', -'ῴ' => 'ΏΙ', -'ᾷ' => 'Α͂Ι', -'ῇ' => 'Η͂Ι', -'ῷ' => 'Ω͂Ι', -); diff --git a/composer/vendor/symfony/polyfill-mbstring/bootstrap.php b/composer/vendor/symfony/polyfill-mbstring/bootstrap.php deleted file mode 100644 index 66ecf572f..000000000 --- a/composer/vendor/symfony/polyfill-mbstring/bootstrap.php +++ /dev/null @@ -1,147 +0,0 @@ -= 80000) { -return require __DIR__.'/bootstrap80.php'; -} - -if (!function_exists('mb_convert_encoding')) { -function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } -} -if (!function_exists('mb_decode_mimeheader')) { -function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } -} -if (!function_exists('mb_encode_mimeheader')) { -function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } -} -if (!function_exists('mb_decode_numericentity')) { -function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } -} -if (!function_exists('mb_encode_numericentity')) { -function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } -} -if (!function_exists('mb_convert_case')) { -function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } -} -if (!function_exists('mb_internal_encoding')) { -function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } -} -if (!function_exists('mb_language')) { -function mb_language($language = null) { return p\Mbstring::mb_language($language); } -} -if (!function_exists('mb_list_encodings')) { -function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } -} -if (!function_exists('mb_encoding_aliases')) { -function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } -} -if (!function_exists('mb_check_encoding')) { -function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } -} -if (!function_exists('mb_detect_encoding')) { -function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } -} -if (!function_exists('mb_detect_order')) { -function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } -} -if (!function_exists('mb_parse_str')) { -function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; } -} -if (!function_exists('mb_strlen')) { -function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } -} -if (!function_exists('mb_strpos')) { -function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_strtolower')) { -function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } -} -if (!function_exists('mb_strtoupper')) { -function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } -} -if (!function_exists('mb_substitute_character')) { -function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } -} -if (!function_exists('mb_substr')) { -function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } -} -if (!function_exists('mb_stripos')) { -function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_stristr')) { -function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_strrchr')) { -function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_strrichr')) { -function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_strripos')) { -function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_strrpos')) { -function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } -} -if (!function_exists('mb_strstr')) { -function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } -} -if (!function_exists('mb_get_info')) { -function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } -} -if (!function_exists('mb_http_output')) { -function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } -} -if (!function_exists('mb_strwidth')) { -function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } -} -if (!function_exists('mb_substr_count')) { -function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } -} -if (!function_exists('mb_output_handler')) { -function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } -} -if (!function_exists('mb_http_input')) { -function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); } -} - -if (!function_exists('mb_convert_variables')) { -function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); } -} - -if (!function_exists('mb_ord')) { -function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } -} -if (!function_exists('mb_chr')) { -function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } -} -if (!function_exists('mb_scrub')) { -function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } -} -if (!function_exists('mb_str_split')) { -function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } -} - -if (extension_loaded('mbstring')) { -return; -} - -if (!defined('MB_CASE_UPPER')) { -define('MB_CASE_UPPER', 0); -} -if (!defined('MB_CASE_LOWER')) { -define('MB_CASE_LOWER', 1); -} -if (!defined('MB_CASE_TITLE')) { -define('MB_CASE_TITLE', 2); -} diff --git a/composer/vendor/symfony/polyfill-mbstring/bootstrap80.php b/composer/vendor/symfony/polyfill-mbstring/bootstrap80.php deleted file mode 100644 index 5d2344bed..000000000 --- a/composer/vendor/symfony/polyfill-mbstring/bootstrap80.php +++ /dev/null @@ -1,143 +0,0 @@ -= 70300) { -return; -} - -if (!function_exists('is_countable')) { -function is_countable($value) { return is_array($value) || $value instanceof Countable || $value instanceof ResourceBundle || $value instanceof SimpleXmlElement; } -} -if (!function_exists('hrtime')) { -require_once __DIR__.'/Php73.php'; -p\Php73::$startAt = (int) microtime(true); -function hrtime($as_number = false) { return p\Php73::hrtime($as_number); } -} -if (!function_exists('array_key_first')) { -function array_key_first(array $array) { foreach ($array as $key => $value) { return $key; } } -} -if (!function_exists('array_key_last')) { -function array_key_last(array $array) { return key(array_slice($array, -1, 1, true)); } -} diff --git a/composer/vendor/symfony/polyfill-php80/LICENSE b/composer/vendor/symfony/polyfill-php80/LICENSE deleted file mode 100644 index a0815467c..000000000 --- a/composer/vendor/symfony/polyfill-php80/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2020 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/composer/vendor/symfony/polyfill-php80/Php80.php b/composer/vendor/symfony/polyfill-php80/Php80.php deleted file mode 100644 index 41a6d0d5f..000000000 --- a/composer/vendor/symfony/polyfill-php80/Php80.php +++ /dev/null @@ -1,115 +0,0 @@ -id = $id; -$this->text = $text; -$this->line = $line; -$this->pos = $position; -} - -public function getTokenName(): ?string -{ -if ('UNKNOWN' === $name = token_name($this->id)) { -$name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text; -} - -return $name; -} - - - - -public function is($kind): bool -{ -foreach ((array) $kind as $value) { -if (\in_array($value, [$this->id, $this->text], true)) { -return true; -} -} - -return false; -} - -public function isIgnorable(): bool -{ -return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true); -} - -public function __toString(): string -{ -return (string) $this->text; -} - - - - -public static function tokenize(string $code, int $flags = 0): array -{ -$line = 1; -$position = 0; -$tokens = token_get_all($code, $flags); -foreach ($tokens as $index => $token) { -if (\is_string($token)) { -$id = \ord($token); -$text = $token; -} else { -[$id, $text, $line] = $token; -} -$tokens[$index] = new static($id, $text, $line, $position); -$position += \strlen($text); -} - -return $tokens; -} -} diff --git a/composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php deleted file mode 100644 index c780615a4..000000000 --- a/composer/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +++ /dev/null @@ -1,31 +0,0 @@ -flags = $flags; -} -} diff --git a/composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php b/composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php deleted file mode 100644 index 59fe3d0a1..000000000 --- a/composer/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +++ /dev/null @@ -1,16 +0,0 @@ -= 80000) { -return; -} - -if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) { -define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN); -} - -if (!function_exists('fdiv')) { -function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); } -} -if (!function_exists('preg_last_error_msg')) { -function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } -} -if (!function_exists('str_contains')) { -function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } -} -if (!function_exists('str_starts_with')) { -function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } -} -if (!function_exists('str_ends_with')) { -function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } -} -if (!function_exists('get_debug_type')) { -function get_debug_type($value): string { return p\Php80::get_debug_type($value); } -} -if (!function_exists('get_resource_id')) { -function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); } -} diff --git a/composer/vendor/symfony/polyfill-php81/LICENSE b/composer/vendor/symfony/polyfill-php81/LICENSE deleted file mode 100644 index 6205914f9..000000000 --- a/composer/vendor/symfony/polyfill-php81/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2021 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/composer/vendor/symfony/polyfill-php81/Php81.php b/composer/vendor/symfony/polyfill-php81/Php81.php deleted file mode 100644 index 1b222330d..000000000 --- a/composer/vendor/symfony/polyfill-php81/Php81.php +++ /dev/null @@ -1,37 +0,0 @@ - $v) { -if ($k !== ++$nextKey) { -return false; -} -} - -return true; -} -} diff --git a/composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php b/composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php deleted file mode 100644 index 8bf85d40a..000000000 --- a/composer/vendor/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php +++ /dev/null @@ -1,20 +0,0 @@ -= 80100) { -return; -} - -if (defined('MYSQLI_REFRESH_SLAVE') && !defined('MYSQLI_REFRESH_REPLICA')) { -define('MYSQLI_REFRESH_REPLICA', 64); -} - -if (!function_exists('array_is_list')) { -function array_is_list(array $array): bool { return p\Php81::array_is_list($array); } -} - -if (!function_exists('enum_exists')) { -function enum_exists(string $enum, bool $autoload = true): bool { return $autoload && class_exists($enum) && false; } -} diff --git a/composer/vendor/symfony/process/Exception/ExceptionInterface.php b/composer/vendor/symfony/process/Exception/ExceptionInterface.php deleted file mode 100644 index 244e473d4..000000000 --- a/composer/vendor/symfony/process/Exception/ExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -isSuccessful()) { -throw new InvalidArgumentException('Expected a failed process, but the given process was successful.'); -} - -$error = sprintf('The command "%s" failed.'."\n\nExit Code: %s(%s)\n\nWorking directory: %s", -$process->getCommandLine(), -$process->getExitCode(), -$process->getExitCodeText(), -$process->getWorkingDirectory() -); - -if (!$process->isOutputDisabled()) { -$error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", -$process->getOutput(), -$process->getErrorOutput() -); -} - -parent::__construct($error); - -$this->process = $process; -} - -public function getProcess() -{ -return $this->process; -} -} diff --git a/composer/vendor/symfony/process/Exception/ProcessSignaledException.php b/composer/vendor/symfony/process/Exception/ProcessSignaledException.php deleted file mode 100644 index 49ecdaa6a..000000000 --- a/composer/vendor/symfony/process/Exception/ProcessSignaledException.php +++ /dev/null @@ -1,41 +0,0 @@ -process = $process; - -parent::__construct(sprintf('The process has been signaled with signal "%s".', $process->getTermSignal())); -} - -public function getProcess(): Process -{ -return $this->process; -} - -public function getSignal(): int -{ -return $this->getProcess()->getTermSignal(); -} -} diff --git a/composer/vendor/symfony/process/Exception/ProcessTimedOutException.php b/composer/vendor/symfony/process/Exception/ProcessTimedOutException.php deleted file mode 100644 index eb182832f..000000000 --- a/composer/vendor/symfony/process/Exception/ProcessTimedOutException.php +++ /dev/null @@ -1,69 +0,0 @@ -process = $process; -$this->timeoutType = $timeoutType; - -parent::__construct(sprintf( -'The process "%s" exceeded the timeout of %s seconds.', -$process->getCommandLine(), -$this->getExceededTimeout() -)); -} - -public function getProcess() -{ -return $this->process; -} - -public function isGeneralTimeout() -{ -return self::TYPE_GENERAL === $this->timeoutType; -} - -public function isIdleTimeout() -{ -return self::TYPE_IDLE === $this->timeoutType; -} - -public function getExceededTimeout() -{ -switch ($this->timeoutType) { -case self::TYPE_GENERAL: -return $this->process->getTimeout(); - -case self::TYPE_IDLE: -return $this->process->getIdleTimeout(); - -default: -throw new \LogicException(sprintf('Unknown timeout type "%d".', $this->timeoutType)); -} -} -} diff --git a/composer/vendor/symfony/process/Exception/RuntimeException.php b/composer/vendor/symfony/process/Exception/RuntimeException.php deleted file mode 100644 index aa4ebcbeb..000000000 --- a/composer/vendor/symfony/process/Exception/RuntimeException.php +++ /dev/null @@ -1,21 +0,0 @@ -suffixes = $suffixes; -} - - - - -public function addSuffix(string $suffix) -{ -$this->suffixes[] = $suffix; -} - - - - - - - - - - -public function find(string $name, string $default = null, array $extraDirs = []) -{ -if (\ini_get('open_basedir')) { -$searchPath = array_merge(explode(\PATH_SEPARATOR, \ini_get('open_basedir')), $extraDirs); -$dirs = []; -foreach ($searchPath as $path) { - -if (@is_dir($path)) { -$dirs[] = $path; -} else { -if (basename($path) == $name && @is_executable($path)) { -return $path; -} -} -} -} else { -$dirs = array_merge( -explode(\PATH_SEPARATOR, getenv('PATH') ?: getenv('Path')), -$extraDirs -); -} - -$suffixes = ['']; -if ('\\' === \DIRECTORY_SEPARATOR) { -$pathExt = getenv('PATHEXT'); -$suffixes = array_merge($pathExt ? explode(\PATH_SEPARATOR, $pathExt) : $this->suffixes, $suffixes); -} -foreach ($suffixes as $suffix) { -foreach ($dirs as $dir) { -if (@is_file($file = $dir.\DIRECTORY_SEPARATOR.$name.$suffix) && ('\\' === \DIRECTORY_SEPARATOR || @is_executable($file))) { -return $file; -} -} -} - -return $default; -} -} diff --git a/composer/vendor/symfony/process/InputStream.php b/composer/vendor/symfony/process/InputStream.php deleted file mode 100644 index 1abeab1a6..000000000 --- a/composer/vendor/symfony/process/InputStream.php +++ /dev/null @@ -1,96 +0,0 @@ -onEmpty = $onEmpty; -} - - - - - - - -public function write($input) -{ -if (null === $input) { -return; -} -if ($this->isClosed()) { -throw new RuntimeException(sprintf('"%s" is closed.', static::class)); -} -$this->input[] = ProcessUtils::validateInput(__METHOD__, $input); -} - - - - -public function close() -{ -$this->open = false; -} - - - - -public function isClosed() -{ -return !$this->open; -} - - - - -#[\ReturnTypeWillChange] -public function getIterator() -{ -$this->open = true; - -while ($this->open || $this->input) { -if (!$this->input) { -yield ''; -continue; -} -$current = array_shift($this->input); - -if ($current instanceof \Iterator) { -yield from $current; -} else { -yield $current; -} -if (!$this->input && $this->open && null !== $onEmpty = $this->onEmpty) { -$this->write($onEmpty($this)); -} -} -} -} diff --git a/composer/vendor/symfony/process/LICENSE b/composer/vendor/symfony/process/LICENSE deleted file mode 100644 index 3622370ec..000000000 --- a/composer/vendor/symfony/process/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) 2004-2023 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/composer/vendor/symfony/process/PhpExecutableFinder.php b/composer/vendor/symfony/process/PhpExecutableFinder.php deleted file mode 100644 index 8f2359c61..000000000 --- a/composer/vendor/symfony/process/PhpExecutableFinder.php +++ /dev/null @@ -1,103 +0,0 @@ -executableFinder = new ExecutableFinder(); -} - - - - - - -public function find(bool $includeArgs = true) -{ -if ($php = getenv('PHP_BINARY')) { -if (!is_executable($php)) { -$command = '\\' === \DIRECTORY_SEPARATOR ? 'where' : 'command -v'; -if ($php = strtok(exec($command.' '.escapeshellarg($php)), \PHP_EOL)) { -if (!is_executable($php)) { -return false; -} -} else { -return false; -} -} - -if (@is_dir($php)) { -return false; -} - -return $php; -} - -$args = $this->findArguments(); -$args = $includeArgs && $args ? ' '.implode(' ', $args) : ''; - - -if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cgi-fcgi', 'cli', 'cli-server', 'phpdbg'], true)) { -return \PHP_BINARY.$args; -} - -if ($php = getenv('PHP_PATH')) { -if (!@is_executable($php) || @is_dir($php)) { -return false; -} - -return $php; -} - -if ($php = getenv('PHP_PEAR_PHP_BIN')) { -if (@is_executable($php) && !@is_dir($php)) { -return $php; -} -} - -if (@is_executable($php = \PHP_BINDIR.('\\' === \DIRECTORY_SEPARATOR ? '\\php.exe' : '/php')) && !@is_dir($php)) { -return $php; -} - -$dirs = [\PHP_BINDIR]; -if ('\\' === \DIRECTORY_SEPARATOR) { -$dirs[] = 'C:\xampp\php\\'; -} - -return $this->executableFinder->find('php', false, $dirs); -} - - - - - - -public function findArguments() -{ -$arguments = []; -if ('phpdbg' === \PHP_SAPI) { -$arguments[] = '-qrr'; -} - -return $arguments; -} -} diff --git a/composer/vendor/symfony/process/PhpProcess.php b/composer/vendor/symfony/process/PhpProcess.php deleted file mode 100644 index 488c59346..000000000 --- a/composer/vendor/symfony/process/PhpProcess.php +++ /dev/null @@ -1,72 +0,0 @@ -find(false); -$php = false === $php ? null : array_merge([$php], $executableFinder->findArguments()); -} -if ('phpdbg' === \PHP_SAPI) { -$file = tempnam(sys_get_temp_dir(), 'dbg'); -file_put_contents($file, $script); -register_shutdown_function('unlink', $file); -$php[] = $file; -$script = null; -} - -parent::__construct($php, $cwd, $env, $script, $timeout); -} - - - - -public static function fromShellCommandline(string $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) -{ -throw new LogicException(sprintf('The "%s()" method cannot be called when using "%s".', __METHOD__, self::class)); -} - - - - -public function start(callable $callback = null, array $env = []) -{ -if (null === $this->getCommandLine()) { -throw new RuntimeException('Unable to find the PHP executable.'); -} - -parent::start($callback, $env); -} -} diff --git a/composer/vendor/symfony/process/Pipes/AbstractPipes.php b/composer/vendor/symfony/process/Pipes/AbstractPipes.php deleted file mode 100644 index cb09c389f..000000000 --- a/composer/vendor/symfony/process/Pipes/AbstractPipes.php +++ /dev/null @@ -1,180 +0,0 @@ -input = $input; -} elseif (\is_string($input)) { -$this->inputBuffer = $input; -} else { -$this->inputBuffer = (string) $input; -} -} - - - - -public function close() -{ -foreach ($this->pipes as $pipe) { -if (\is_resource($pipe)) { -fclose($pipe); -} -} -$this->pipes = []; -} - - - - -protected function hasSystemCallBeenInterrupted(): bool -{ -$lastError = $this->lastError; -$this->lastError = null; - - -return null !== $lastError && false !== stripos($lastError, 'interrupted system call'); -} - - - - -protected function unblock() -{ -if (!$this->blocked) { -return; -} - -foreach ($this->pipes as $pipe) { -stream_set_blocking($pipe, 0); -} -if (\is_resource($this->input)) { -stream_set_blocking($this->input, 0); -} - -$this->blocked = false; -} - - - - - - -protected function write(): ?array -{ -if (!isset($this->pipes[0])) { -return null; -} -$input = $this->input; - -if ($input instanceof \Iterator) { -if (!$input->valid()) { -$input = null; -} elseif (\is_resource($input = $input->current())) { -stream_set_blocking($input, 0); -} elseif (!isset($this->inputBuffer[0])) { -if (!\is_string($input)) { -if (!\is_scalar($input)) { -throw new InvalidArgumentException(sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', get_debug_type($this->input), get_debug_type($input))); -} -$input = (string) $input; -} -$this->inputBuffer = $input; -$this->input->next(); -$input = null; -} else { -$input = null; -} -} - -$r = $e = []; -$w = [$this->pipes[0]]; - - -if (false === @stream_select($r, $w, $e, 0, 0)) { -return null; -} - -foreach ($w as $stdin) { -if (isset($this->inputBuffer[0])) { -$written = fwrite($stdin, $this->inputBuffer); -$this->inputBuffer = substr($this->inputBuffer, $written); -if (isset($this->inputBuffer[0])) { -return [$this->pipes[0]]; -} -} - -if ($input) { -while (true) { -$data = fread($input, self::CHUNK_SIZE); -if (!isset($data[0])) { -break; -} -$written = fwrite($stdin, $data); -$data = substr($data, $written); -if (isset($data[0])) { -$this->inputBuffer = $data; - -return [$this->pipes[0]]; -} -} -if (feof($input)) { -if ($this->input instanceof \Iterator) { -$this->input->next(); -} else { -$this->input = null; -} -} -} -} - - -if (!isset($this->inputBuffer[0]) && !($this->input instanceof \Iterator ? $this->input->valid() : $this->input)) { -$this->input = null; -fclose($this->pipes[0]); -unset($this->pipes[0]); -} elseif (!$w) { -return [$this->pipes[0]]; -} - -return null; -} - - - - -public function handleError(int $type, string $msg) -{ -$this->lastError = $msg; -} -} diff --git a/composer/vendor/symfony/process/Pipes/PipesInterface.php b/composer/vendor/symfony/process/Pipes/PipesInterface.php deleted file mode 100644 index d547e2249..000000000 --- a/composer/vendor/symfony/process/Pipes/PipesInterface.php +++ /dev/null @@ -1,61 +0,0 @@ -ttyMode = $ttyMode; -$this->ptyMode = $ptyMode; -$this->haveReadSupport = $haveReadSupport; - -parent::__construct($input); -} - -public function __sleep(): array -{ -throw new \BadMethodCallException('Cannot serialize '.__CLASS__); -} - -public function __wakeup() -{ -throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -} - -public function __destruct() -{ -$this->close(); -} - - - - -public function getDescriptors(): array -{ -if (!$this->haveReadSupport) { -$nullstream = fopen('/dev/null', 'c'); - -return [ -['pipe', 'r'], -$nullstream, -$nullstream, -]; -} - -if ($this->ttyMode) { -return [ -['file', '/dev/tty', 'r'], -['file', '/dev/tty', 'w'], -['file', '/dev/tty', 'w'], -]; -} - -if ($this->ptyMode && Process::isPtySupported()) { -return [ -['pty'], -['pty'], -['pty'], -]; -} - -return [ -['pipe', 'r'], -['pipe', 'w'], -['pipe', 'w'], -]; -} - - - - -public function getFiles(): array -{ -return []; -} - - - - -public function readAndWrite(bool $blocking, bool $close = false): array -{ -$this->unblock(); -$w = $this->write(); - -$read = $e = []; -$r = $this->pipes; -unset($r[0]); - - -set_error_handler([$this, 'handleError']); -if (($r || $w) && false === stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) { -restore_error_handler(); - - -if (!$this->hasSystemCallBeenInterrupted()) { -$this->pipes = []; -} - -return $read; -} -restore_error_handler(); - -foreach ($r as $pipe) { - - -$read[$type = array_search($pipe, $this->pipes, true)] = ''; - -do { -$data = @fread($pipe, self::CHUNK_SIZE); -$read[$type] .= $data; -} while (isset($data[0]) && ($close || isset($data[self::CHUNK_SIZE - 1]))); - -if (!isset($read[$type][0])) { -unset($read[$type]); -} - -if ($close && feof($pipe)) { -fclose($pipe); -unset($this->pipes[$type]); -} -} - -return $read; -} - - - - -public function haveReadSupport(): bool -{ -return $this->haveReadSupport; -} - - - - -public function areOpen(): bool -{ -return (bool) $this->pipes; -} -} diff --git a/composer/vendor/symfony/process/Pipes/WindowsPipes.php b/composer/vendor/symfony/process/Pipes/WindowsPipes.php deleted file mode 100644 index bf2da33c1..000000000 --- a/composer/vendor/symfony/process/Pipes/WindowsPipes.php +++ /dev/null @@ -1,204 +0,0 @@ - 0, -Process::STDERR => 0, -]; -private $haveReadSupport; - -public function __construct($input, bool $haveReadSupport) -{ -$this->haveReadSupport = $haveReadSupport; - -if ($this->haveReadSupport) { - - - - -$pipes = [ -Process::STDOUT => Process::OUT, -Process::STDERR => Process::ERR, -]; -$tmpDir = sys_get_temp_dir(); -$lastError = 'unknown reason'; -set_error_handler(function ($type, $msg) use (&$lastError) { $lastError = $msg; }); -for ($i = 0;; ++$i) { -foreach ($pipes as $pipe => $name) { -$file = sprintf('%s\\sf_proc_%02X.%s', $tmpDir, $i, $name); - -if (!$h = fopen($file.'.lock', 'w')) { -if (file_exists($file.'.lock')) { -continue 2; -} -restore_error_handler(); -throw new RuntimeException('A temporary file could not be opened to write the process output: '.$lastError); -} -if (!flock($h, \LOCK_EX | \LOCK_NB)) { -continue 2; -} -if (isset($this->lockHandles[$pipe])) { -flock($this->lockHandles[$pipe], \LOCK_UN); -fclose($this->lockHandles[$pipe]); -} -$this->lockHandles[$pipe] = $h; - -if (!($h = fopen($file, 'w')) || !fclose($h) || !$h = fopen($file, 'r')) { -flock($this->lockHandles[$pipe], \LOCK_UN); -fclose($this->lockHandles[$pipe]); -unset($this->lockHandles[$pipe]); -continue 2; -} -$this->fileHandles[$pipe] = $h; -$this->files[$pipe] = $file; -} -break; -} -restore_error_handler(); -} - -parent::__construct($input); -} - -public function __sleep(): array -{ -throw new \BadMethodCallException('Cannot serialize '.__CLASS__); -} - -public function __wakeup() -{ -throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -} - -public function __destruct() -{ -$this->close(); -} - - - - -public function getDescriptors(): array -{ -if (!$this->haveReadSupport) { -$nullstream = fopen('NUL', 'c'); - -return [ -['pipe', 'r'], -$nullstream, -$nullstream, -]; -} - - - - -return [ -['pipe', 'r'], -['file', 'NUL', 'w'], -['file', 'NUL', 'w'], -]; -} - - - - -public function getFiles(): array -{ -return $this->files; -} - - - - -public function readAndWrite(bool $blocking, bool $close = false): array -{ -$this->unblock(); -$w = $this->write(); -$read = $r = $e = []; - -if ($blocking) { -if ($w) { -@stream_select($r, $w, $e, 0, Process::TIMEOUT_PRECISION * 1E6); -} elseif ($this->fileHandles) { -usleep(Process::TIMEOUT_PRECISION * 1E6); -} -} -foreach ($this->fileHandles as $type => $fileHandle) { -$data = stream_get_contents($fileHandle, -1, $this->readBytes[$type]); - -if (isset($data[0])) { -$this->readBytes[$type] += \strlen($data); -$read[$type] = $data; -} -if ($close) { -ftruncate($fileHandle, 0); -fclose($fileHandle); -flock($this->lockHandles[$type], \LOCK_UN); -fclose($this->lockHandles[$type]); -unset($this->fileHandles[$type], $this->lockHandles[$type]); -} -} - -return $read; -} - - - - -public function haveReadSupport(): bool -{ -return $this->haveReadSupport; -} - - - - -public function areOpen(): bool -{ -return $this->pipes && $this->fileHandles; -} - - - - -public function close() -{ -parent::close(); -foreach ($this->fileHandles as $type => $handle) { -ftruncate($handle, 0); -fclose($handle); -flock($this->lockHandles[$type], \LOCK_UN); -fclose($this->lockHandles[$type]); -} -$this->fileHandles = $this->lockHandles = []; -} -} diff --git a/composer/vendor/symfony/process/Process.php b/composer/vendor/symfony/process/Process.php deleted file mode 100644 index bbe1db70b..000000000 --- a/composer/vendor/symfony/process/Process.php +++ /dev/null @@ -1,1652 +0,0 @@ - true, 'bypass_shell' => true]; - -private $useFileHandles = false; - -private $processPipes; - -private $latestSignal; - -private static $sigchild; - - - - - - -public static $exitCodes = [ -0 => 'OK', -1 => 'General error', -2 => 'Misuse of shell builtins', - -126 => 'Invoked command cannot execute', -127 => 'Command not found', -128 => 'Invalid exit argument', - - -129 => 'Hangup', -130 => 'Interrupt', -131 => 'Quit and dump core', -132 => 'Illegal instruction', -133 => 'Trace/breakpoint trap', -134 => 'Process aborted', -135 => 'Bus error: "access to undefined portion of memory object"', -136 => 'Floating point exception: "erroneous arithmetic operation"', -137 => 'Kill (terminate immediately)', -138 => 'User-defined 1', -139 => 'Segmentation violation', -140 => 'User-defined 2', -141 => 'Write to pipe with no one reading', -142 => 'Signal raised by alarm', -143 => 'Termination (request to terminate)', - -145 => 'Child process terminated, stopped (or continued*)', -146 => 'Continue if stopped', -147 => 'Stop executing temporarily', -148 => 'Terminal stop signal', -149 => 'Background process attempting to read from tty ("in")', -150 => 'Background process attempting to write to tty ("out")', -151 => 'Urgent data available on socket', -152 => 'CPU time limit exceeded', -153 => 'File size limit exceeded', -154 => 'Signal raised by timer counting virtual time: "virtual timer expired"', -155 => 'Profiling timer expired', - -157 => 'Pollable event', - -159 => 'Bad syscall', -]; - - - - - - - - - - -public function __construct(array $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) -{ -if (!\function_exists('proc_open')) { -throw new LogicException('The Process class relies on proc_open, which is not available on your PHP installation.'); -} - -$this->commandline = $command; -$this->cwd = $cwd; - - - - - -if (null === $this->cwd && (\defined('ZEND_THREAD_SAFE') || '\\' === \DIRECTORY_SEPARATOR)) { -$this->cwd = getcwd(); -} -if (null !== $env) { -$this->setEnv($env); -} - -$this->setInput($input); -$this->setTimeout($timeout); -$this->useFileHandles = '\\' === \DIRECTORY_SEPARATOR; -$this->pty = false; -} - - - - - - - - - - - - - - - - - - - - - - - - -public static function fromShellCommandline(string $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60) -{ -$process = new static([], $cwd, $env, $input, $timeout); -$process->commandline = $command; - -return $process; -} - - - - -public function __sleep() -{ -throw new \BadMethodCallException('Cannot serialize '.__CLASS__); -} - -public function __wakeup() -{ -throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -} - -public function __destruct() -{ -if ($this->options['create_new_console'] ?? false) { -$this->processPipes->close(); -} else { -$this->stop(0); -} -} - -public function __clone() -{ -$this->resetProcessData(); -} - - - - - - - - - - - - - - - - - - - - - - - - -public function run(callable $callback = null, array $env = []): int -{ -$this->start($callback, $env); - -return $this->wait(); -} - - - - - - - - - - - - - -public function mustRun(callable $callback = null, array $env = []): self -{ -if (0 !== $this->run($callback, $env)) { -throw new ProcessFailedException($this); -} - -return $this; -} - - - - - - - - - - - - - - - - - - - - -public function start(callable $callback = null, array $env = []) -{ -if ($this->isRunning()) { -throw new RuntimeException('Process is already running.'); -} - -$this->resetProcessData(); -$this->starttime = $this->lastOutputTime = microtime(true); -$this->callback = $this->buildCallback($callback); -$this->hasCallback = null !== $callback; -$descriptors = $this->getDescriptors(); - -if ($this->env) { -$env += '\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($this->env, $env, 'strcasecmp') : $this->env; -} - -$env += '\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($this->getDefaultEnv(), $env, 'strcasecmp') : $this->getDefaultEnv(); - -if (\is_array($commandline = $this->commandline)) { -$commandline = implode(' ', array_map([$this, 'escapeArgument'], $commandline)); - -if ('\\' !== \DIRECTORY_SEPARATOR) { - -$commandline = 'exec '.$commandline; -} -} else { -$commandline = $this->replacePlaceholders($commandline, $env); -} - -if ('\\' === \DIRECTORY_SEPARATOR) { -$commandline = $this->prepareWindowsCommandLine($commandline, $env); -} elseif (!$this->useFileHandles && $this->isSigchildEnabled()) { - -$descriptors[3] = ['pipe', 'w']; - - -$commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; -$commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; - - - -$ptsWorkaround = fopen(__FILE__, 'r'); -} - -$envPairs = []; -foreach ($env as $k => $v) { -if (false !== $v && false === \in_array($k, ['argc', 'argv', 'ARGC', 'ARGV'], true)) { -$envPairs[] = $k.'='.$v; -} -} - -if (!is_dir($this->cwd)) { -throw new RuntimeException(sprintf('The provided cwd "%s" does not exist.', $this->cwd)); -} - -$this->process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $this->options); - -if (!\is_resource($this->process)) { -throw new RuntimeException('Unable to launch a new process.'); -} -$this->status = self::STATUS_STARTED; - -if (isset($descriptors[3])) { -$this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); -} - -if ($this->tty) { -return; -} - -$this->updateStatus(false); -$this->checkTimeout(); -} - - - - - - - - - - - - - - - - - - -public function restart(callable $callback = null, array $env = []): self -{ -if ($this->isRunning()) { -throw new RuntimeException('Process is already running.'); -} - -$process = clone $this; -$process->start($callback, $env); - -return $process; -} - - - - - - - - - - - - - - - - -public function wait(callable $callback = null) -{ -$this->requireProcessIsStarted(__FUNCTION__); - -$this->updateStatus(false); - -if (null !== $callback) { -if (!$this->processPipes->haveReadSupport()) { -$this->stop(0); -throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::wait".'); -} -$this->callback = $this->buildCallback($callback); -} - -do { -$this->checkTimeout(); -$running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); -$this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); -} while ($running); - -while ($this->isRunning()) { -$this->checkTimeout(); -usleep(1000); -} - -if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) { -throw new ProcessSignaledException($this); -} - -return $this->exitcode; -} - - - - - - - - - - - - -public function waitUntil(callable $callback): bool -{ -$this->requireProcessIsStarted(__FUNCTION__); -$this->updateStatus(false); - -if (!$this->processPipes->haveReadSupport()) { -$this->stop(0); -throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::waitUntil".'); -} -$callback = $this->buildCallback($callback); - -$ready = false; -while (true) { -$this->checkTimeout(); -$running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); -$output = $this->processPipes->readAndWrite($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); - -foreach ($output as $type => $data) { -if (3 !== $type) { -$ready = $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data) || $ready; -} elseif (!isset($this->fallbackStatus['signaled'])) { -$this->fallbackStatus['exitcode'] = (int) $data; -} -} -if ($ready) { -return true; -} -if (!$running) { -return false; -} - -usleep(1000); -} -} - - - - - - -public function getPid() -{ -return $this->isRunning() ? $this->processInformation['pid'] : null; -} - - - - - - - - - - - - -public function signal(int $signal) -{ -$this->doSignal($signal, true); - -return $this; -} - - - - - - - - - -public function disableOutput() -{ -if ($this->isRunning()) { -throw new RuntimeException('Disabling output while the process is running is not possible.'); -} -if (null !== $this->idleTimeout) { -throw new LogicException('Output cannot be disabled while an idle timeout is set.'); -} - -$this->outputDisabled = true; - -return $this; -} - - - - - - - - -public function enableOutput() -{ -if ($this->isRunning()) { -throw new RuntimeException('Enabling output while the process is running is not possible.'); -} - -$this->outputDisabled = false; - -return $this; -} - - - - - - -public function isOutputDisabled() -{ -return $this->outputDisabled; -} - - - - - - - - - -public function getOutput() -{ -$this->readPipesForOutput(__FUNCTION__); - -if (false === $ret = stream_get_contents($this->stdout, -1, 0)) { -return ''; -} - -return $ret; -} - - - - - - - - - - - - -public function getIncrementalOutput() -{ -$this->readPipesForOutput(__FUNCTION__); - -$latest = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); -$this->incrementalOutputOffset = ftell($this->stdout); - -if (false === $latest) { -return ''; -} - -return $latest; -} - - - - - - - - - - - -#[\ReturnTypeWillChange] -public function getIterator(int $flags = 0) -{ -$this->readPipesForOutput(__FUNCTION__, false); - -$clearOutput = !(self::ITER_KEEP_OUTPUT & $flags); -$blocking = !(self::ITER_NON_BLOCKING & $flags); -$yieldOut = !(self::ITER_SKIP_OUT & $flags); -$yieldErr = !(self::ITER_SKIP_ERR & $flags); - -while (null !== $this->callback || ($yieldOut && !feof($this->stdout)) || ($yieldErr && !feof($this->stderr))) { -if ($yieldOut) { -$out = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); - -if (isset($out[0])) { -if ($clearOutput) { -$this->clearOutput(); -} else { -$this->incrementalOutputOffset = ftell($this->stdout); -} - -yield self::OUT => $out; -} -} - -if ($yieldErr) { -$err = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); - -if (isset($err[0])) { -if ($clearOutput) { -$this->clearErrorOutput(); -} else { -$this->incrementalErrorOutputOffset = ftell($this->stderr); -} - -yield self::ERR => $err; -} -} - -if (!$blocking && !isset($out[0]) && !isset($err[0])) { -yield self::OUT => ''; -} - -$this->checkTimeout(); -$this->readPipesForOutput(__FUNCTION__, $blocking); -} -} - - - - - - -public function clearOutput() -{ -ftruncate($this->stdout, 0); -fseek($this->stdout, 0); -$this->incrementalOutputOffset = 0; - -return $this; -} - - - - - - - - - -public function getErrorOutput() -{ -$this->readPipesForOutput(__FUNCTION__); - -if (false === $ret = stream_get_contents($this->stderr, -1, 0)) { -return ''; -} - -return $ret; -} - - - - - - - - - - - - - -public function getIncrementalErrorOutput() -{ -$this->readPipesForOutput(__FUNCTION__); - -$latest = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); -$this->incrementalErrorOutputOffset = ftell($this->stderr); - -if (false === $latest) { -return ''; -} - -return $latest; -} - - - - - - -public function clearErrorOutput() -{ -ftruncate($this->stderr, 0); -fseek($this->stderr, 0); -$this->incrementalErrorOutputOffset = 0; - -return $this; -} - - - - - - -public function getExitCode() -{ -$this->updateStatus(false); - -return $this->exitcode; -} - - - - - - - - - - - - -public function getExitCodeText() -{ -if (null === $exitcode = $this->getExitCode()) { -return null; -} - -return self::$exitCodes[$exitcode] ?? 'Unknown error'; -} - - - - - - -public function isSuccessful() -{ -return 0 === $this->getExitCode(); -} - - - - - - - - - - -public function hasBeenSignaled() -{ -$this->requireProcessIsTerminated(__FUNCTION__); - -return $this->processInformation['signaled']; -} - - - - - - - - - - - -public function getTermSignal() -{ -$this->requireProcessIsTerminated(__FUNCTION__); - -if ($this->isSigchildEnabled() && -1 === $this->processInformation['termsig']) { -throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal cannot be retrieved.'); -} - -return $this->processInformation['termsig']; -} - - - - - - - - - - -public function hasBeenStopped() -{ -$this->requireProcessIsTerminated(__FUNCTION__); - -return $this->processInformation['stopped']; -} - - - - - - - - - - -public function getStopSignal() -{ -$this->requireProcessIsTerminated(__FUNCTION__); - -return $this->processInformation['stopsig']; -} - - - - - - -public function isRunning() -{ -if (self::STATUS_STARTED !== $this->status) { -return false; -} - -$this->updateStatus(false); - -return $this->processInformation['running']; -} - - - - - - -public function isStarted() -{ -return self::STATUS_READY != $this->status; -} - - - - - - -public function isTerminated() -{ -$this->updateStatus(false); - -return self::STATUS_TERMINATED == $this->status; -} - - - - - - - - -public function getStatus() -{ -$this->updateStatus(false); - -return $this->status; -} - - - - - - - - - -public function stop(float $timeout = 10, int $signal = null) -{ -$timeoutMicro = microtime(true) + $timeout; -if ($this->isRunning()) { - -$this->doSignal(15, false); -do { -usleep(1000); -} while ($this->isRunning() && microtime(true) < $timeoutMicro); - -if ($this->isRunning()) { - - -$this->doSignal($signal ?: 9, false); -} -} - -if ($this->isRunning()) { -if (isset($this->fallbackStatus['pid'])) { -unset($this->fallbackStatus['pid']); - -return $this->stop(0, $signal); -} -$this->close(); -} - -return $this->exitcode; -} - - - - - - -public function addOutput(string $line) -{ -$this->lastOutputTime = microtime(true); - -fseek($this->stdout, 0, \SEEK_END); -fwrite($this->stdout, $line); -fseek($this->stdout, $this->incrementalOutputOffset); -} - - - - - - -public function addErrorOutput(string $line) -{ -$this->lastOutputTime = microtime(true); - -fseek($this->stderr, 0, \SEEK_END); -fwrite($this->stderr, $line); -fseek($this->stderr, $this->incrementalErrorOutputOffset); -} - - - - -public function getLastOutputTime(): ?float -{ -return $this->lastOutputTime; -} - - - - - - -public function getCommandLine() -{ -return \is_array($this->commandline) ? implode(' ', array_map([$this, 'escapeArgument'], $this->commandline)) : $this->commandline; -} - - - - - - -public function getTimeout() -{ -return $this->timeout; -} - - - - - - -public function getIdleTimeout() -{ -return $this->idleTimeout; -} - - - - - - - - - - -public function setTimeout(?float $timeout) -{ -$this->timeout = $this->validateTimeout($timeout); - -return $this; -} - - - - - - - - - - - -public function setIdleTimeout(?float $timeout) -{ -if (null !== $timeout && $this->outputDisabled) { -throw new LogicException('Idle timeout cannot be set while the output is disabled.'); -} - -$this->idleTimeout = $this->validateTimeout($timeout); - -return $this; -} - - - - - - - - -public function setTty(bool $tty) -{ -if ('\\' === \DIRECTORY_SEPARATOR && $tty) { -throw new RuntimeException('TTY mode is not supported on Windows platform.'); -} - -if ($tty && !self::isTtySupported()) { -throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.'); -} - -$this->tty = $tty; - -return $this; -} - - - - - - -public function isTty() -{ -return $this->tty; -} - - - - - - -public function setPty(bool $bool) -{ -$this->pty = $bool; - -return $this; -} - - - - - - -public function isPty() -{ -return $this->pty; -} - - - - - - -public function getWorkingDirectory() -{ -if (null === $this->cwd) { - - -return getcwd() ?: null; -} - -return $this->cwd; -} - - - - - - -public function setWorkingDirectory(string $cwd) -{ -$this->cwd = $cwd; - -return $this; -} - - - - - - -public function getEnv() -{ -return $this->env; -} - - - - - - - - -public function setEnv(array $env) -{ -$this->env = $env; - -return $this; -} - - - - - - -public function getInput() -{ -return $this->input; -} - - - - - - - - - - - - -public function setInput($input) -{ -if ($this->isRunning()) { -throw new LogicException('Input cannot be set while the process is running.'); -} - -$this->input = ProcessUtils::validateInput(__METHOD__, $input); - -return $this; -} - - - - - - - - - -public function checkTimeout() -{ -if (self::STATUS_STARTED !== $this->status) { -return; -} - -if (null !== $this->timeout && $this->timeout < microtime(true) - $this->starttime) { -$this->stop(0); - -throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL); -} - -if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) { -$this->stop(0); - -throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE); -} -} - - - - -public function getStartTime(): float -{ -if (!$this->isStarted()) { -throw new LogicException('Start time is only available after process start.'); -} - -return $this->starttime; -} - - - - - - - - - -public function setOptions(array $options) -{ -if ($this->isRunning()) { -throw new RuntimeException('Setting options while the process is running is not possible.'); -} - -$defaultOptions = $this->options; -$existingOptions = ['blocking_pipes', 'create_process_group', 'create_new_console']; - -foreach ($options as $key => $value) { -if (!\in_array($key, $existingOptions)) { -$this->options = $defaultOptions; -throw new LogicException(sprintf('Invalid option "%s" passed to "%s()". Supported options are "%s".', $key, __METHOD__, implode('", "', $existingOptions))); -} -$this->options[$key] = $value; -} -} - - - - -public static function isTtySupported(): bool -{ -static $isTtySupported; - -if (null === $isTtySupported) { -$isTtySupported = (bool) @proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); -} - -return $isTtySupported; -} - - - - - - -public static function isPtySupported() -{ -static $result; - -if (null !== $result) { -return $result; -} - -if ('\\' === \DIRECTORY_SEPARATOR) { -return $result = false; -} - -return $result = (bool) @proc_open('echo 1 >/dev/null', [['pty'], ['pty'], ['pty']], $pipes); -} - - - - -private function getDescriptors(): array -{ -if ($this->input instanceof \Iterator) { -$this->input->rewind(); -} -if ('\\' === \DIRECTORY_SEPARATOR) { -$this->processPipes = new WindowsPipes($this->input, !$this->outputDisabled || $this->hasCallback); -} else { -$this->processPipes = new UnixPipes($this->isTty(), $this->isPty(), $this->input, !$this->outputDisabled || $this->hasCallback); -} - -return $this->processPipes->getDescriptors(); -} - - - - - - - - - - - -protected function buildCallback(callable $callback = null) -{ -if ($this->outputDisabled) { -return function ($type, $data) use ($callback): bool { -return null !== $callback && $callback($type, $data); -}; -} - -$out = self::OUT; - -return function ($type, $data) use ($callback, $out): bool { -if ($out == $type) { -$this->addOutput($data); -} else { -$this->addErrorOutput($data); -} - -return null !== $callback && $callback($type, $data); -}; -} - - - - - - -protected function updateStatus(bool $blocking) -{ -if (self::STATUS_STARTED !== $this->status) { -return; -} - -$this->processInformation = proc_get_status($this->process); -$running = $this->processInformation['running']; - -$this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running); - -if ($this->fallbackStatus && $this->isSigchildEnabled()) { -$this->processInformation = $this->fallbackStatus + $this->processInformation; -} - -if (!$running) { -$this->close(); -} -} - - - - - - -protected function isSigchildEnabled() -{ -if (null !== self::$sigchild) { -return self::$sigchild; -} - -if (!\function_exists('phpinfo')) { -return self::$sigchild = false; -} - -ob_start(); -phpinfo(\INFO_GENERAL); - -return self::$sigchild = str_contains(ob_get_clean(), '--enable-sigchild'); -} - - - - - - - - - -private function readPipesForOutput(string $caller, bool $blocking = false) -{ -if ($this->outputDisabled) { -throw new LogicException('Output has been disabled.'); -} - -$this->requireProcessIsStarted($caller); - -$this->updateStatus($blocking); -} - - - - - - -private function validateTimeout(?float $timeout): ?float -{ -$timeout = (float) $timeout; - -if (0.0 === $timeout) { -$timeout = null; -} elseif ($timeout < 0) { -throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); -} - -return $timeout; -} - - - - - - - -private function readPipes(bool $blocking, bool $close) -{ -$result = $this->processPipes->readAndWrite($blocking, $close); - -$callback = $this->callback; -foreach ($result as $type => $data) { -if (3 !== $type) { -$callback(self::STDOUT === $type ? self::OUT : self::ERR, $data); -} elseif (!isset($this->fallbackStatus['signaled'])) { -$this->fallbackStatus['exitcode'] = (int) $data; -} -} -} - - - - - - -private function close(): int -{ -$this->processPipes->close(); -if (\is_resource($this->process)) { -proc_close($this->process); -} -$this->exitcode = $this->processInformation['exitcode']; -$this->status = self::STATUS_TERMINATED; - -if (-1 === $this->exitcode) { -if ($this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) { - -$this->exitcode = 128 + $this->processInformation['termsig']; -} elseif ($this->isSigchildEnabled()) { -$this->processInformation['signaled'] = true; -$this->processInformation['termsig'] = -1; -} -} - - - - -$this->callback = null; - -return $this->exitcode; -} - - - - -private function resetProcessData() -{ -$this->starttime = null; -$this->callback = null; -$this->exitcode = null; -$this->fallbackStatus = []; -$this->processInformation = null; -$this->stdout = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+'); -$this->stderr = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+'); -$this->process = null; -$this->latestSignal = null; -$this->status = self::STATUS_READY; -$this->incrementalOutputOffset = 0; -$this->incrementalErrorOutputOffset = 0; -} - - - - - - - - - - - -private function doSignal(int $signal, bool $throwException): bool -{ -if (null === $pid = $this->getPid()) { -if ($throwException) { -throw new LogicException('Cannot send signal on a non running process.'); -} - -return false; -} - -if ('\\' === \DIRECTORY_SEPARATOR) { -exec(sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode); -if ($exitCode && $this->isRunning()) { -if ($throwException) { -throw new RuntimeException(sprintf('Unable to kill the process (%s).', implode(' ', $output))); -} - -return false; -} -} else { -if (!$this->isSigchildEnabled()) { -$ok = @proc_terminate($this->process, $signal); -} elseif (\function_exists('posix_kill')) { -$ok = @posix_kill($pid, $signal); -} elseif ($ok = proc_open(sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) { -$ok = false === fgets($pipes[2]); -} -if (!$ok) { -if ($throwException) { -throw new RuntimeException(sprintf('Error while sending signal "%s".', $signal)); -} - -return false; -} -} - -$this->latestSignal = $signal; -$this->fallbackStatus['signaled'] = true; -$this->fallbackStatus['exitcode'] = -1; -$this->fallbackStatus['termsig'] = $this->latestSignal; - -return true; -} - -private function prepareWindowsCommandLine(string $cmd, array &$env): string -{ -$uid = uniqid('', true); -$varCount = 0; -$varCache = []; -$cmd = preg_replace_callback( -'/"(?:( - [^"%!^]*+ - (?: - (?: !LF! | "(?:\^[%!^])?+" ) - [^"%!^]*+ - )++ - ) | [^"]*+ )"/x', -function ($m) use (&$env, &$varCache, &$varCount, $uid) { -if (!isset($m[1])) { -return $m[0]; -} -if (isset($varCache[$m[0]])) { -return $varCache[$m[0]]; -} -if (str_contains($value = $m[1], "\0")) { -$value = str_replace("\0", '?', $value); -} -if (false === strpbrk($value, "\"%!\n")) { -return '"'.$value.'"'; -} - -$value = str_replace(['!LF!', '"^!"', '"^%"', '"^^"', '""'], ["\n", '!', '%', '^', '"'], $value); -$value = '"'.preg_replace('/(\\\\*)"/', '$1$1\\"', $value).'"'; -$var = $uid.++$varCount; - -$env[$var] = $value; - -return $varCache[$m[0]] = '!'.$var.'!'; -}, -$cmd -); - -$cmd = 'cmd /V:ON /E:ON /D /C ('.str_replace("\n", ' ', $cmd).')'; -foreach ($this->processPipes->getFiles() as $offset => $filename) { -$cmd .= ' '.$offset.'>"'.$filename.'"'; -} - -return $cmd; -} - - - - - - -private function requireProcessIsStarted(string $functionName) -{ -if (!$this->isStarted()) { -throw new LogicException(sprintf('Process must be started before calling "%s()".', $functionName)); -} -} - - - - - - -private function requireProcessIsTerminated(string $functionName) -{ -if (!$this->isTerminated()) { -throw new LogicException(sprintf('Process must be terminated before calling "%s()".', $functionName)); -} -} - - - - -private function escapeArgument(?string $argument): string -{ -if ('' === $argument || null === $argument) { -return '""'; -} -if ('\\' !== \DIRECTORY_SEPARATOR) { -return "'".str_replace("'", "'\\''", $argument)."'"; -} -if (str_contains($argument, "\0")) { -$argument = str_replace("\0", '?', $argument); -} -if (!preg_match('/[\/()%!^"<>&|\s]/', $argument)) { -return $argument; -} -$argument = preg_replace('/(\\\\+)$/', '$1$1', $argument); - -return '"'.str_replace(['"', '^', '%', '!', "\n"], ['""', '"^^"', '"^%"', '"^!"', '!LF!'], $argument).'"'; -} - -private function replacePlaceholders(string $commandline, array $env) -{ -return preg_replace_callback('/"\$\{:([_a-zA-Z]++[_a-zA-Z0-9]*+)\}"/', function ($matches) use ($commandline, $env) { -if (!isset($env[$matches[1]]) || false === $env[$matches[1]]) { -throw new InvalidArgumentException(sprintf('Command line is missing a value for parameter "%s": ', $matches[1]).$commandline); -} - -return $this->escapeArgument($env[$matches[1]]); -}, $commandline); -} - -private function getDefaultEnv(): array -{ -$env = getenv(); -$env = ('\\' === \DIRECTORY_SEPARATOR ? array_intersect_ukey($env, $_SERVER, 'strcasecmp') : array_intersect_key($env, $_SERVER)) ?: $env; - -return $_ENV + ('\\' === \DIRECTORY_SEPARATOR ? array_diff_ukey($env, $_ENV, 'strcasecmp') : $env); -} -} diff --git a/composer/vendor/symfony/process/ProcessUtils.php b/composer/vendor/symfony/process/ProcessUtils.php deleted file mode 100644 index 9f2c7ec29..000000000 --- a/composer/vendor/symfony/process/ProcessUtils.php +++ /dev/null @@ -1,69 +0,0 @@ -getIterator($input::ITER_SKIP_ERR); -} -if ($input instanceof \Iterator) { -return $input; -} -if ($input instanceof \Traversable) { -return new \IteratorIterator($input); -} - -throw new InvalidArgumentException(sprintf('"%s" only accepts strings, Traversable objects or stream resources.', $caller)); -} - -return $input; -} -} diff --git a/composer/vendor/symfony/service-contracts/Attribute/Required.php b/composer/vendor/symfony/service-contracts/Attribute/Required.php deleted file mode 100644 index 19038315b..000000000 --- a/composer/vendor/symfony/service-contracts/Attribute/Required.php +++ /dev/null @@ -1,25 +0,0 @@ -factories = $factories; -} - - - - - - -public function has(string $id) -{ -return isset($this->factories[$id]); -} - - - - - - -public function get(string $id) -{ -if (!isset($this->factories[$id])) { -throw $this->createNotFoundException($id); -} - -if (isset($this->loading[$id])) { -$ids = array_values($this->loading); -$ids = \array_slice($this->loading, array_search($id, $ids)); -$ids[] = $id; - -throw $this->createCircularReferenceException($id, $ids); -} - -$this->loading[$id] = $id; -try { -return $this->factories[$id]($this); -} finally { -unset($this->loading[$id]); -} -} - - - - -public function getProvidedServices(): array -{ -if (null === $this->providedTypes) { -$this->providedTypes = []; - -foreach ($this->factories as $name => $factory) { -if (!\is_callable($factory)) { -$this->providedTypes[$name] = '?'; -} else { -$type = (new \ReflectionFunction($factory))->getReturnType(); - -$this->providedTypes[$name] = $type ? ($type->allowsNull() ? '?' : '').($type instanceof \ReflectionNamedType ? $type->getName() : $type) : '?'; -} -} -} - -return $this->providedTypes; -} - -private function createNotFoundException(string $id): NotFoundExceptionInterface -{ -if (!$alternatives = array_keys($this->factories)) { -$message = 'is empty...'; -} else { -$last = array_pop($alternatives); -if ($alternatives) { -$message = sprintf('only knows about the "%s" and "%s" services.', implode('", "', $alternatives), $last); -} else { -$message = sprintf('only knows about the "%s" service.', $last); -} -} - -if ($this->loading) { -$message = sprintf('The service "%s" has a dependency on a non-existent service "%s". This locator %s', end($this->loading), $id, $message); -} else { -$message = sprintf('Service "%s" not found: the current service locator %s', $id, $message); -} - -return new class($message) extends \InvalidArgumentException implements NotFoundExceptionInterface { -}; -} - -private function createCircularReferenceException(string $id, array $path): ContainerExceptionInterface -{ -return new class(sprintf('Circular reference detected for service "%s", path: "%s".', $id, implode(' -> ', $path))) extends \RuntimeException implements ContainerExceptionInterface { -}; -} -} diff --git a/composer/vendor/symfony/service-contracts/ServiceProviderInterface.php b/composer/vendor/symfony/service-contracts/ServiceProviderInterface.php deleted file mode 100644 index 41a07faac..000000000 --- a/composer/vendor/symfony/service-contracts/ServiceProviderInterface.php +++ /dev/null @@ -1,36 +0,0 @@ -= 80000) { -foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { -if (self::class !== $method->getDeclaringClass()->name) { -continue; -} - -if (!$attribute = $method->getAttributes(SubscribedService::class)[0] ?? null) { -continue; -} - -if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { -throw new \LogicException(sprintf('Cannot use "%s" on method "%s::%s()" (can only be used on non-static, non-abstract methods with no parameters).', SubscribedService::class, self::class, $method->name)); -} - -if (!$returnType = $method->getReturnType()) { -throw new \LogicException(sprintf('Cannot use "%s" on methods without a return type in "%s::%s()".', SubscribedService::class, $method->name, self::class)); -} - -$serviceId = $returnType instanceof \ReflectionNamedType ? $returnType->getName() : (string) $returnType; - -if ($returnType->allowsNull()) { -$serviceId = '?'.$serviceId; -} - -$services[$attribute->newInstance()->key ?? self::class.'::'.$method->name] = $serviceId; -$attributeOptIn = true; -} -} - -if (!$attributeOptIn) { -foreach ((new \ReflectionClass(self::class))->getMethods() as $method) { -if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) { -continue; -} - -if (self::class !== $method->getDeclaringClass()->name) { -continue; -} - -if (!($returnType = $method->getReturnType()) instanceof \ReflectionNamedType) { -continue; -} - -if ($returnType->isBuiltin()) { -continue; -} - -if (\PHP_VERSION_ID >= 80000) { -trigger_deprecation('symfony/service-contracts', '2.5', 'Using "%s" in "%s" without using the "%s" attribute on any method is deprecated.', ServiceSubscriberTrait::class, self::class, SubscribedService::class); -} - -$services[self::class.'::'.$method->name] = '?'.($returnType instanceof \ReflectionNamedType ? $returnType->getName() : $returnType); -} -} - -return $services; -} - - - - - - -public function setContainer(ContainerInterface $container) -{ -$this->container = $container; - -if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) { -return parent::setContainer($container); -} - -return null; -} -} diff --git a/composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php b/composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php deleted file mode 100644 index c84d445bd..000000000 --- a/composer/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php +++ /dev/null @@ -1,95 +0,0 @@ -getServiceLocator([ -'foo' => function () { return 'bar'; }, -'bar' => function () { return 'baz'; }, -function () { return 'dummy'; }, -]); - -$this->assertTrue($locator->has('foo')); -$this->assertTrue($locator->has('bar')); -$this->assertFalse($locator->has('dummy')); -} - -public function testGet() -{ -$locator = $this->getServiceLocator([ -'foo' => function () { return 'bar'; }, -'bar' => function () { return 'baz'; }, -]); - -$this->assertSame('bar', $locator->get('foo')); -$this->assertSame('baz', $locator->get('bar')); -} - -public function testGetDoesNotMemoize() -{ -$i = 0; -$locator = $this->getServiceLocator([ -'foo' => function () use (&$i) { -++$i; - -return 'bar'; -}, -]); - -$this->assertSame('bar', $locator->get('foo')); -$this->assertSame('bar', $locator->get('foo')); -$this->assertSame(2, $i); -} - -public function testThrowsOnUndefinedInternalService() -{ -if (!$this->getExpectedException()) { -$this->expectException(\Psr\Container\NotFoundExceptionInterface::class); -$this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.'); -} -$locator = $this->getServiceLocator([ -'foo' => function () use (&$locator) { return $locator->get('bar'); }, -]); - -$locator->get('foo'); -} - -public function testThrowsOnCircularReference() -{ -$this->expectException(\Psr\Container\ContainerExceptionInterface::class); -$this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".'); -$locator = $this->getServiceLocator([ -'foo' => function () use (&$locator) { return $locator->get('bar'); }, -'bar' => function () use (&$locator) { return $locator->get('baz'); }, -'baz' => function () use (&$locator) { return $locator->get('bar'); }, -]); - -$locator->get('foo'); -} -} diff --git a/composer/vendor/symfony/string/AbstractString.php b/composer/vendor/symfony/string/AbstractString.php deleted file mode 100644 index 7a47197f1..000000000 --- a/composer/vendor/symfony/string/AbstractString.php +++ /dev/null @@ -1,795 +0,0 @@ - $v) { -if ($v instanceof self) { -$values[$k] = $v->__toString(); -} elseif (\is_array($v) && $values[$k] !== $v = static::unwrap($v)) { -$values[$k] = $v; -} -} - -return $values; -} - - - - - - -public static function wrap(array $values): array -{ -$i = 0; -$keys = null; - -foreach ($values as $k => $v) { -if (\is_string($k) && '' !== $k && $k !== $j = (string) new static($k)) { -$keys = $keys ?? array_keys($values); -$keys[$i] = $j; -} - -if (\is_string($v)) { -$values[$k] = new static($v); -} elseif (\is_array($v) && $values[$k] !== $v = static::wrap($v)) { -$values[$k] = $v; -} - -++$i; -} - -return null !== $keys ? array_combine($keys, $values) : $values; -} - - - - - - -public function after($needle, bool $includeNeedle = false, int $offset = 0): self -{ -$str = clone $this; -$i = \PHP_INT_MAX; - -foreach ((array) $needle as $n) { -$n = (string) $n; -$j = $this->indexOf($n, $offset); - -if (null !== $j && $j < $i) { -$i = $j; -$str->string = $n; -} -} - -if (\PHP_INT_MAX === $i) { -return $str; -} - -if (!$includeNeedle) { -$i += $str->length(); -} - -return $this->slice($i); -} - - - - - - -public function afterLast($needle, bool $includeNeedle = false, int $offset = 0): self -{ -$str = clone $this; -$i = null; - -foreach ((array) $needle as $n) { -$n = (string) $n; -$j = $this->indexOfLast($n, $offset); - -if (null !== $j && $j >= $i) { -$i = $offset = $j; -$str->string = $n; -} -} - -if (null === $i) { -return $str; -} - -if (!$includeNeedle) { -$i += $str->length(); -} - -return $this->slice($i); -} - - - - -abstract public function append(string ...$suffix): self; - - - - - - -public function before($needle, bool $includeNeedle = false, int $offset = 0): self -{ -$str = clone $this; -$i = \PHP_INT_MAX; - -foreach ((array) $needle as $n) { -$n = (string) $n; -$j = $this->indexOf($n, $offset); - -if (null !== $j && $j < $i) { -$i = $j; -$str->string = $n; -} -} - -if (\PHP_INT_MAX === $i) { -return $str; -} - -if ($includeNeedle) { -$i += $str->length(); -} - -return $this->slice(0, $i); -} - - - - - - -public function beforeLast($needle, bool $includeNeedle = false, int $offset = 0): self -{ -$str = clone $this; -$i = null; - -foreach ((array) $needle as $n) { -$n = (string) $n; -$j = $this->indexOfLast($n, $offset); - -if (null !== $j && $j >= $i) { -$i = $offset = $j; -$str->string = $n; -} -} - -if (null === $i) { -return $str; -} - -if ($includeNeedle) { -$i += $str->length(); -} - -return $this->slice(0, $i); -} - - - - -public function bytesAt(int $offset): array -{ -$str = $this->slice($offset, 1); - -return '' === $str->string ? [] : array_values(unpack('C*', $str->string)); -} - - - - -abstract public function camel(): self; - - - - -abstract public function chunk(int $length = 1): array; - - - - -public function collapseWhitespace(): self -{ -$str = clone $this; -$str->string = trim(preg_replace("/(?:[ \n\r\t\x0C]{2,}+|[\n\r\t\x0C])/", ' ', $str->string), " \n\r\t\x0C"); - -return $str; -} - - - - -public function containsAny($needle): bool -{ -return null !== $this->indexOf($needle); -} - - - - -public function endsWith($suffix): bool -{ -if (!\is_array($suffix) && !$suffix instanceof \Traversable) { -throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); -} - -foreach ($suffix as $s) { -if ($this->endsWith((string) $s)) { -return true; -} -} - -return false; -} - - - - -public function ensureEnd(string $suffix): self -{ -if (!$this->endsWith($suffix)) { -return $this->append($suffix); -} - -$suffix = preg_quote($suffix); -$regex = '{('.$suffix.')(?:'.$suffix.')++$}D'; - -return $this->replaceMatches($regex.($this->ignoreCase ? 'i' : ''), '$1'); -} - - - - -public function ensureStart(string $prefix): self -{ -$prefix = new static($prefix); - -if (!$this->startsWith($prefix)) { -return $this->prepend($prefix); -} - -$str = clone $this; -$i = $prefixLen = $prefix->length(); - -while ($this->indexOf($prefix, $i) === $i) { -$str = $str->slice($prefixLen); -$i += $prefixLen; -} - -return $str; -} - - - - -public function equalsTo($string): bool -{ -if (!\is_array($string) && !$string instanceof \Traversable) { -throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); -} - -foreach ($string as $s) { -if ($this->equalsTo((string) $s)) { -return true; -} -} - -return false; -} - - - - -abstract public function folded(): self; - - - - -public function ignoreCase(): self -{ -$str = clone $this; -$str->ignoreCase = true; - -return $str; -} - - - - -public function indexOf($needle, int $offset = 0): ?int -{ -if (!\is_array($needle) && !$needle instanceof \Traversable) { -throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); -} - -$i = \PHP_INT_MAX; - -foreach ($needle as $n) { -$j = $this->indexOf((string) $n, $offset); - -if (null !== $j && $j < $i) { -$i = $j; -} -} - -return \PHP_INT_MAX === $i ? null : $i; -} - - - - -public function indexOfLast($needle, int $offset = 0): ?int -{ -if (!\is_array($needle) && !$needle instanceof \Traversable) { -throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); -} - -$i = null; - -foreach ($needle as $n) { -$j = $this->indexOfLast((string) $n, $offset); - -if (null !== $j && $j >= $i) { -$i = $offset = $j; -} -} - -return $i; -} - -public function isEmpty(): bool -{ -return '' === $this->string; -} - - - - -abstract public function join(array $strings, string $lastGlue = null): self; - -public function jsonSerialize(): string -{ -return $this->string; -} - -abstract public function length(): int; - - - - -abstract public function lower(): self; - - - - - - - - -abstract public function match(string $regexp, int $flags = 0, int $offset = 0): array; - - - - -abstract public function padBoth(int $length, string $padStr = ' '): self; - - - - -abstract public function padEnd(int $length, string $padStr = ' '): self; - - - - -abstract public function padStart(int $length, string $padStr = ' '): self; - - - - -abstract public function prepend(string ...$prefix): self; - - - - -public function repeat(int $multiplier): self -{ -if (0 > $multiplier) { -throw new InvalidArgumentException(sprintf('Multiplier must be positive, %d given.', $multiplier)); -} - -$str = clone $this; -$str->string = str_repeat($str->string, $multiplier); - -return $str; -} - - - - -abstract public function replace(string $from, string $to): self; - - - - - - -abstract public function replaceMatches(string $fromRegexp, $to): self; - - - - -abstract public function reverse(): self; - - - - -abstract public function slice(int $start = 0, int $length = null): self; - - - - -abstract public function snake(): self; - - - - -abstract public function splice(string $replacement, int $start = 0, int $length = null): self; - - - - -public function split(string $delimiter, int $limit = null, int $flags = null): array -{ -if (null === $flags) { -throw new \TypeError('Split behavior when $flags is null must be implemented by child classes.'); -} - -if ($this->ignoreCase) { -$delimiter .= 'i'; -} - -set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); - -try { -if (false === $chunks = preg_split($delimiter, $this->string, $limit, $flags)) { -$lastError = preg_last_error(); - -foreach (get_defined_constants(true)['pcre'] as $k => $v) { -if ($lastError === $v && '_ERROR' === substr($k, -6)) { -throw new RuntimeException('Splitting failed with '.$k.'.'); -} -} - -throw new RuntimeException('Splitting failed with unknown error code.'); -} -} finally { -restore_error_handler(); -} - -$str = clone $this; - -if (self::PREG_SPLIT_OFFSET_CAPTURE & $flags) { -foreach ($chunks as &$chunk) { -$str->string = $chunk[0]; -$chunk[0] = clone $str; -} -} else { -foreach ($chunks as &$chunk) { -$str->string = $chunk; -$chunk = clone $str; -} -} - -return $chunks; -} - - - - -public function startsWith($prefix): bool -{ -if (!\is_array($prefix) && !$prefix instanceof \Traversable) { -throw new \TypeError(sprintf('Method "%s()" must be overridden by class "%s" to deal with non-iterable values.', __FUNCTION__, static::class)); -} - -foreach ($prefix as $prefix) { -if ($this->startsWith((string) $prefix)) { -return true; -} -} - -return false; -} - - - - -abstract public function title(bool $allWords = false): self; - -public function toByteString(string $toEncoding = null): ByteString -{ -$b = new ByteString(); - -$toEncoding = \in_array($toEncoding, ['utf8', 'utf-8', 'UTF8'], true) ? 'UTF-8' : $toEncoding; - -if (null === $toEncoding || $toEncoding === $fromEncoding = $this instanceof AbstractUnicodeString || preg_match('//u', $b->string) ? 'UTF-8' : 'Windows-1252') { -$b->string = $this->string; - -return $b; -} - -set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); - -try { -try { -$b->string = mb_convert_encoding($this->string, $toEncoding, 'UTF-8'); -} catch (InvalidArgumentException $e) { -if (!\function_exists('iconv')) { -throw $e; -} - -$b->string = iconv('UTF-8', $toEncoding, $this->string); -} -} finally { -restore_error_handler(); -} - -return $b; -} - -public function toCodePointString(): CodePointString -{ -return new CodePointString($this->string); -} - -public function toString(): string -{ -return $this->string; -} - -public function toUnicodeString(): UnicodeString -{ -return new UnicodeString($this->string); -} - - - - -abstract public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; - - - - -abstract public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; - - - - - - -public function trimPrefix($prefix): self -{ -if (\is_array($prefix) || $prefix instanceof \Traversable) { -foreach ($prefix as $s) { -$t = $this->trimPrefix($s); - -if ($t->string !== $this->string) { -return $t; -} -} - -return clone $this; -} - -$str = clone $this; - -if ($prefix instanceof self) { -$prefix = $prefix->string; -} else { -$prefix = (string) $prefix; -} - -if ('' !== $prefix && \strlen($this->string) >= \strlen($prefix) && 0 === substr_compare($this->string, $prefix, 0, \strlen($prefix), $this->ignoreCase)) { -$str->string = substr($this->string, \strlen($prefix)); -} - -return $str; -} - - - - -abstract public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): self; - - - - - - -public function trimSuffix($suffix): self -{ -if (\is_array($suffix) || $suffix instanceof \Traversable) { -foreach ($suffix as $s) { -$t = $this->trimSuffix($s); - -if ($t->string !== $this->string) { -return $t; -} -} - -return clone $this; -} - -$str = clone $this; - -if ($suffix instanceof self) { -$suffix = $suffix->string; -} else { -$suffix = (string) $suffix; -} - -if ('' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase)) { -$str->string = substr($this->string, 0, -\strlen($suffix)); -} - -return $str; -} - - - - -public function truncate(int $length, string $ellipsis = '', bool $cut = true): self -{ -$stringLength = $this->length(); - -if ($stringLength <= $length) { -return clone $this; -} - -$ellipsisLength = '' !== $ellipsis ? (new static($ellipsis))->length() : 0; - -if ($length < $ellipsisLength) { -$ellipsisLength = 0; -} - -if (!$cut) { -if (null === $length = $this->indexOf([' ', "\r", "\n", "\t"], ($length ?: 1) - 1)) { -return clone $this; -} - -$length += $ellipsisLength; -} - -$str = $this->slice(0, $length - $ellipsisLength); - -return $ellipsisLength ? $str->trimEnd()->append($ellipsis) : $str; -} - - - - -abstract public function upper(): self; - - - - -abstract public function width(bool $ignoreAnsiDecoration = true): int; - - - - -public function wordwrap(int $width = 75, string $break = "\n", bool $cut = false): self -{ -$lines = '' !== $break ? $this->split($break) : [clone $this]; -$chars = []; -$mask = ''; - -if (1 === \count($lines) && '' === $lines[0]->string) { -return $lines[0]; -} - -foreach ($lines as $i => $line) { -if ($i) { -$chars[] = $break; -$mask .= '#'; -} - -foreach ($line->chunk() as $char) { -$chars[] = $char->string; -$mask .= ' ' === $char->string ? ' ' : '?'; -} -} - -$string = ''; -$j = 0; -$b = $i = -1; -$mask = wordwrap($mask, $width, '#', $cut); - -while (false !== $b = strpos($mask, '#', $b + 1)) { -for (++$i; $i < $b; ++$i) { -$string .= $chars[$j]; -unset($chars[$j++]); -} - -if ($break === $chars[$j] || ' ' === $chars[$j]) { -unset($chars[$j++]); -} - -$string .= $break; -} - -$str = clone $this; -$str->string = $string.implode('', $chars); - -return $str; -} - -public function __sleep(): array -{ -return ['string']; -} - -public function __clone() -{ -$this->ignoreCase = false; -} - -public function __toString(): string -{ -return $this->string; -} -} diff --git a/composer/vendor/symfony/string/AbstractUnicodeString.php b/composer/vendor/symfony/string/AbstractUnicodeString.php deleted file mode 100644 index 9ab84ac87..000000000 --- a/composer/vendor/symfony/string/AbstractUnicodeString.php +++ /dev/null @@ -1,623 +0,0 @@ ->', '<', '>', '-', '-', '-', '-', '-', '-', '-', '-', '-', '||', '/', '[', ']', '*', ',', '.', '<', '>', '<<', '>>', '[', ']', '[', ']', '[', ']', ',', '.', '[', ']', '<<', '>>', '<', '>', ',', '[', ']', '((', '))', '.', ',', '*', '/', '-', '/', '\\', '|', '||', '<<', '>>', '((', '))']; - -private static $transliterators = []; -private static $tableZero; -private static $tableWide; - - - - -public static function fromCodePoints(int ...$codes): self -{ -$string = ''; - -foreach ($codes as $code) { -if (0x80 > $code %= 0x200000) { -$string .= \chr($code); -} elseif (0x800 > $code) { -$string .= \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); -} elseif (0x10000 > $code) { -$string .= \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); -} else { -$string .= \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); -} -} - -return new static($string); -} - - - - - - - - -public function ascii(array $rules = []): self -{ -$str = clone $this; -$s = $str->string; -$str->string = ''; - -array_unshift($rules, 'nfd'); -$rules[] = 'latin-ascii'; - -if (\function_exists('transliterator_transliterate')) { -$rules[] = 'any-latin/bgn'; -} - -$rules[] = 'nfkd'; -$rules[] = '[:nonspacing mark:] remove'; - -while (\strlen($s) - 1 > $i = strspn($s, self::ASCII)) { -if (0 < --$i) { -$str->string .= substr($s, 0, $i); -$s = substr($s, $i); -} - -if (!$rule = array_shift($rules)) { -$rules = []; -} - -if ($rule instanceof \Transliterator) { -$s = $rule->transliterate($s); -} elseif ($rule instanceof \Closure) { -$s = $rule($s); -} elseif ($rule) { -if ('nfd' === $rule = strtolower($rule)) { -normalizer_is_normalized($s, self::NFD) ?: $s = normalizer_normalize($s, self::NFD); -} elseif ('nfkd' === $rule) { -normalizer_is_normalized($s, self::NFKD) ?: $s = normalizer_normalize($s, self::NFKD); -} elseif ('[:nonspacing mark:] remove' === $rule) { -$s = preg_replace('/\p{Mn}++/u', '', $s); -} elseif ('latin-ascii' === $rule) { -$s = str_replace(self::TRANSLIT_FROM, self::TRANSLIT_TO, $s); -} elseif ('de-ascii' === $rule) { -$s = preg_replace("/([AUO])\u{0308}(?=\p{Ll})/u", '$1e', $s); -$s = str_replace(["a\u{0308}", "o\u{0308}", "u\u{0308}", "A\u{0308}", "O\u{0308}", "U\u{0308}"], ['ae', 'oe', 'ue', 'AE', 'OE', 'UE'], $s); -} elseif (\function_exists('transliterator_transliterate')) { -if (null === $transliterator = self::$transliterators[$rule] ?? self::$transliterators[$rule] = \Transliterator::create($rule)) { -if ('any-latin/bgn' === $rule) { -$rule = 'any-latin'; -$transliterator = self::$transliterators[$rule] ?? self::$transliterators[$rule] = \Transliterator::create($rule); -} - -if (null === $transliterator) { -throw new InvalidArgumentException(sprintf('Unknown transliteration rule "%s".', $rule)); -} - -self::$transliterators['any-latin/bgn'] = $transliterator; -} - -$s = $transliterator->transliterate($s); -} -} elseif (!\function_exists('iconv')) { -$s = preg_replace('/[^\x00-\x7F]/u', '?', $s); -} else { -$s = @preg_replace_callback('/[^\x00-\x7F]/u', static function ($c) { -$c = (string) iconv('UTF-8', 'ASCII//TRANSLIT', $c[0]); - -if ('' === $c && '' === iconv('UTF-8', 'ASCII//TRANSLIT', '²')) { -throw new \LogicException(sprintf('"%s" requires a translit-able iconv implementation, try installing "gnu-libiconv" if you\'re using Alpine Linux.', static::class)); -} - -return 1 < \strlen($c) ? ltrim($c, '\'`"^~') : ('' !== $c ? $c : '?'); -}, $s); -} -} - -$str->string .= $s; - -return $str; -} - -public function camel(): parent -{ -$str = clone $this; -$str->string = str_replace(' ', '', preg_replace_callback('/\b.(?![A-Z]{2,})/u', static function ($m) use (&$i) { -return 1 === ++$i ? ('İ' === $m[0] ? 'i̇' : mb_strtolower($m[0], 'UTF-8')) : mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); -}, preg_replace('/[^\pL0-9]++/u', ' ', $this->string))); - -return $str; -} - - - - -public function codePointsAt(int $offset): array -{ -$str = $this->slice($offset, 1); - -if ('' === $str->string) { -return []; -} - -$codePoints = []; - -foreach (preg_split('//u', $str->string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { -$codePoints[] = mb_ord($c, 'UTF-8'); -} - -return $codePoints; -} - -public function folded(bool $compat = true): parent -{ -$str = clone $this; - -if (!$compat || \PHP_VERSION_ID < 70300 || !\defined('Normalizer::NFKC_CF')) { -$str->string = normalizer_normalize($str->string, $compat ? \Normalizer::NFKC : \Normalizer::NFC); -$str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $this->string), 'UTF-8'); -} else { -$str->string = normalizer_normalize($str->string, \Normalizer::NFKC_CF); -} - -return $str; -} - -public function join(array $strings, string $lastGlue = null): parent -{ -$str = clone $this; - -$tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; -$str->string = implode($this->string, $strings).$tail; - -if (!preg_match('//u', $str->string)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -return $str; -} - -public function lower(): parent -{ -$str = clone $this; -$str->string = mb_strtolower(str_replace('İ', 'i̇', $str->string), 'UTF-8'); - -return $str; -} - -public function match(string $regexp, int $flags = 0, int $offset = 0): array -{ -$match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; - -if ($this->ignoreCase) { -$regexp .= 'i'; -} - -set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); - -try { -if (false === $match($regexp.'u', $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { -$lastError = preg_last_error(); - -foreach (get_defined_constants(true)['pcre'] as $k => $v) { -if ($lastError === $v && '_ERROR' === substr($k, -6)) { -throw new RuntimeException('Matching failed with '.$k.'.'); -} -} - -throw new RuntimeException('Matching failed with unknown error code.'); -} -} finally { -restore_error_handler(); -} - -return $matches; -} - - - - -public function normalize(int $form = self::NFC): self -{ -if (!\in_array($form, [self::NFC, self::NFD, self::NFKC, self::NFKD])) { -throw new InvalidArgumentException('Unsupported normalization form.'); -} - -$str = clone $this; -normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); - -return $str; -} - -public function padBoth(int $length, string $padStr = ' '): parent -{ -if ('' === $padStr || !preg_match('//u', $padStr)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -$pad = clone $this; -$pad->string = $padStr; - -return $this->pad($length, $pad, \STR_PAD_BOTH); -} - -public function padEnd(int $length, string $padStr = ' '): parent -{ -if ('' === $padStr || !preg_match('//u', $padStr)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -$pad = clone $this; -$pad->string = $padStr; - -return $this->pad($length, $pad, \STR_PAD_RIGHT); -} - -public function padStart(int $length, string $padStr = ' '): parent -{ -if ('' === $padStr || !preg_match('//u', $padStr)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -$pad = clone $this; -$pad->string = $padStr; - -return $this->pad($length, $pad, \STR_PAD_LEFT); -} - -public function replaceMatches(string $fromRegexp, $to): parent -{ -if ($this->ignoreCase) { -$fromRegexp .= 'i'; -} - -if (\is_array($to) || $to instanceof \Closure) { -if (!\is_callable($to)) { -throw new \TypeError(sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); -} - -$replace = 'preg_replace_callback'; -$to = static function (array $m) use ($to): string { -$to = $to($m); - -if ('' !== $to && (!\is_string($to) || !preg_match('//u', $to))) { -throw new InvalidArgumentException('Replace callback must return a valid UTF-8 string.'); -} - -return $to; -}; -} elseif ('' !== $to && !preg_match('//u', $to)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} else { -$replace = 'preg_replace'; -} - -set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); - -try { -if (null === $string = $replace($fromRegexp.'u', $to, $this->string)) { -$lastError = preg_last_error(); - -foreach (get_defined_constants(true)['pcre'] as $k => $v) { -if ($lastError === $v && '_ERROR' === substr($k, -6)) { -throw new RuntimeException('Matching failed with '.$k.'.'); -} -} - -throw new RuntimeException('Matching failed with unknown error code.'); -} -} finally { -restore_error_handler(); -} - -$str = clone $this; -$str->string = $string; - -return $str; -} - -public function reverse(): parent -{ -$str = clone $this; -$str->string = implode('', array_reverse(preg_split('/(\X)/u', $str->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY))); - -return $str; -} - -public function snake(): parent -{ -$str = $this->camel(); -$str->string = mb_strtolower(preg_replace(['/(\p{Lu}+)(\p{Lu}\p{Ll})/u', '/([\p{Ll}0-9])(\p{Lu})/u'], '\1_\2', $str->string), 'UTF-8'); - -return $str; -} - -public function title(bool $allWords = false): parent -{ -$str = clone $this; - -$limit = $allWords ? -1 : 1; - -$str->string = preg_replace_callback('/\b./u', static function (array $m): string { -return mb_convert_case($m[0], \MB_CASE_TITLE, 'UTF-8'); -}, $str->string, $limit); - -return $str; -} - -public function trim(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent -{ -if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { -throw new InvalidArgumentException('Invalid UTF-8 chars.'); -} -$chars = preg_quote($chars); - -$str = clone $this; -$str->string = preg_replace("{^[$chars]++|[$chars]++$}uD", '', $str->string); - -return $str; -} - -public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent -{ -if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { -throw new InvalidArgumentException('Invalid UTF-8 chars.'); -} -$chars = preg_quote($chars); - -$str = clone $this; -$str->string = preg_replace("{[$chars]++$}uD", '', $str->string); - -return $str; -} - -public function trimPrefix($prefix): parent -{ -if (!$this->ignoreCase) { -return parent::trimPrefix($prefix); -} - -$str = clone $this; - -if ($prefix instanceof \Traversable) { -$prefix = iterator_to_array($prefix, false); -} elseif ($prefix instanceof parent) { -$prefix = $prefix->string; -} - -$prefix = implode('|', array_map('preg_quote', (array) $prefix)); -$str->string = preg_replace("{^(?:$prefix)}iuD", '', $this->string); - -return $str; -} - -public function trimStart(string $chars = " \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}"): parent -{ -if (" \t\n\r\0\x0B\x0C\u{A0}\u{FEFF}" !== $chars && !preg_match('//u', $chars)) { -throw new InvalidArgumentException('Invalid UTF-8 chars.'); -} -$chars = preg_quote($chars); - -$str = clone $this; -$str->string = preg_replace("{^[$chars]++}uD", '', $str->string); - -return $str; -} - -public function trimSuffix($suffix): parent -{ -if (!$this->ignoreCase) { -return parent::trimSuffix($suffix); -} - -$str = clone $this; - -if ($suffix instanceof \Traversable) { -$suffix = iterator_to_array($suffix, false); -} elseif ($suffix instanceof parent) { -$suffix = $suffix->string; -} - -$suffix = implode('|', array_map('preg_quote', (array) $suffix)); -$str->string = preg_replace("{(?:$suffix)$}iuD", '', $this->string); - -return $str; -} - -public function upper(): parent -{ -$str = clone $this; -$str->string = mb_strtoupper($str->string, 'UTF-8'); - -if (\PHP_VERSION_ID < 70300) { -$str->string = str_replace(self::UPPER_FROM, self::UPPER_TO, $str->string); -} - -return $str; -} - -public function width(bool $ignoreAnsiDecoration = true): int -{ -$width = 0; -$s = str_replace(["\x00", "\x05", "\x07"], '', $this->string); - -if (false !== strpos($s, "\r")) { -$s = str_replace(["\r\n", "\r"], "\n", $s); -} - -if (!$ignoreAnsiDecoration) { -$s = preg_replace('/[\p{Cc}\x7F]++/u', '', $s); -} - -foreach (explode("\n", $s) as $s) { -if ($ignoreAnsiDecoration) { -$s = preg_replace('/(?:\x1B(?: - \[ [\x30-\x3F]*+ [\x20-\x2F]*+ [\x40-\x7E] - | [P\]X^_] .*? \x1B\\\\ - | [\x41-\x7E] - )|[\p{Cc}\x7F]++)/xu', '', $s); -} - -$lineWidth = $this->wcswidth($s); - -if ($lineWidth > $width) { -$width = $lineWidth; -} -} - -return $width; -} - - - - -private function pad(int $len, self $pad, int $type): parent -{ -$sLen = $this->length(); - -if ($len <= $sLen) { -return clone $this; -} - -$padLen = $pad->length(); -$freeLen = $len - $sLen; -$len = $freeLen % $padLen; - -switch ($type) { -case \STR_PAD_RIGHT: -return $this->append(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - -case \STR_PAD_LEFT: -return $this->prepend(str_repeat($pad->string, intdiv($freeLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - -case \STR_PAD_BOTH: -$freeLen /= 2; - -$rightLen = ceil($freeLen); -$len = $rightLen % $padLen; -$str = $this->append(str_repeat($pad->string, intdiv($rightLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - -$leftLen = floor($freeLen); -$len = $leftLen % $padLen; - -return $str->prepend(str_repeat($pad->string, intdiv($leftLen, $padLen)).($len ? $pad->slice(0, $len) : '')); - -default: -throw new InvalidArgumentException('Invalid padding type.'); -} -} - - - - -private function wcswidth(string $string): int -{ -$width = 0; - -foreach (preg_split('//u', $string, -1, \PREG_SPLIT_NO_EMPTY) as $c) { -$codePoint = mb_ord($c, 'UTF-8'); - -if (0 === $codePoint -|| 0x034F === $codePoint -|| (0x200B <= $codePoint && 0x200F >= $codePoint) -|| 0x2028 === $codePoint -|| 0x2029 === $codePoint -|| (0x202A <= $codePoint && 0x202E >= $codePoint) -|| (0x2060 <= $codePoint && 0x2063 >= $codePoint) -) { -continue; -} - - -if (32 > $codePoint -|| (0x07F <= $codePoint && 0x0A0 > $codePoint) -) { -return -1; -} - -if (null === self::$tableZero) { -self::$tableZero = require __DIR__.'/Resources/data/wcswidth_table_zero.php'; -} - -if ($codePoint >= self::$tableZero[0][0] && $codePoint <= self::$tableZero[$ubound = \count(self::$tableZero) - 1][1]) { -$lbound = 0; -while ($ubound >= $lbound) { -$mid = floor(($lbound + $ubound) / 2); - -if ($codePoint > self::$tableZero[$mid][1]) { -$lbound = $mid + 1; -} elseif ($codePoint < self::$tableZero[$mid][0]) { -$ubound = $mid - 1; -} else { -continue 2; -} -} -} - -if (null === self::$tableWide) { -self::$tableWide = require __DIR__.'/Resources/data/wcswidth_table_wide.php'; -} - -if ($codePoint >= self::$tableWide[0][0] && $codePoint <= self::$tableWide[$ubound = \count(self::$tableWide) - 1][1]) { -$lbound = 0; -while ($ubound >= $lbound) { -$mid = floor(($lbound + $ubound) / 2); - -if ($codePoint > self::$tableWide[$mid][1]) { -$lbound = $mid + 1; -} elseif ($codePoint < self::$tableWide[$mid][0]) { -$ubound = $mid - 1; -} else { -$width += 2; - -continue 2; -} -} -} - -++$width; -} - -return $width; -} -} diff --git a/composer/vendor/symfony/string/ByteString.php b/composer/vendor/symfony/string/ByteString.php deleted file mode 100644 index f4f6d6ff3..000000000 --- a/composer/vendor/symfony/string/ByteString.php +++ /dev/null @@ -1,509 +0,0 @@ -string = $string; -} - - - - - - - - - - - -public static function fromRandom(int $length = 16, string $alphabet = null): self -{ -if ($length <= 0) { -throw new InvalidArgumentException(sprintf('A strictly positive length is expected, "%d" given.', $length)); -} - -$alphabet = $alphabet ?? self::ALPHABET_ALPHANUMERIC; -$alphabetSize = \strlen($alphabet); -$bits = (int) ceil(log($alphabetSize, 2.0)); -if ($bits <= 0 || $bits > 56) { -throw new InvalidArgumentException('The length of the alphabet must in the [2^1, 2^56] range.'); -} - -$ret = ''; -while ($length > 0) { -$urandomLength = (int) ceil(2 * $length * $bits / 8.0); -$data = random_bytes($urandomLength); -$unpackedData = 0; -$unpackedBits = 0; -for ($i = 0; $i < $urandomLength && $length > 0; ++$i) { - -$unpackedData = ($unpackedData << 8) | \ord($data[$i]); -$unpackedBits += 8; - - - -for (; $unpackedBits >= $bits && $length > 0; $unpackedBits -= $bits) { -$index = ($unpackedData & ((1 << $bits) - 1)); -$unpackedData >>= $bits; - - - -if ($index < $alphabetSize) { -$ret .= $alphabet[$index]; ---$length; -} -} -} -} - -return new static($ret); -} - -public function bytesAt(int $offset): array -{ -$str = $this->string[$offset] ?? ''; - -return '' === $str ? [] : [\ord($str)]; -} - -public function append(string ...$suffix): parent -{ -$str = clone $this; -$str->string .= 1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix); - -return $str; -} - -public function camel(): parent -{ -$str = clone $this; - -$parts = explode(' ', trim(ucwords(preg_replace('/[^a-zA-Z0-9\x7f-\xff]++/', ' ', $this->string)))); -$parts[0] = 1 !== \strlen($parts[0]) && ctype_upper($parts[0]) ? $parts[0] : lcfirst($parts[0]); -$str->string = implode('', $parts); - -return $str; -} - -public function chunk(int $length = 1): array -{ -if (1 > $length) { -throw new InvalidArgumentException('The chunk length must be greater than zero.'); -} - -if ('' === $this->string) { -return []; -} - -$str = clone $this; -$chunks = []; - -foreach (str_split($this->string, $length) as $chunk) { -$str->string = $chunk; -$chunks[] = clone $str; -} - -return $chunks; -} - -public function endsWith($suffix): bool -{ -if ($suffix instanceof parent) { -$suffix = $suffix->string; -} elseif (\is_array($suffix) || $suffix instanceof \Traversable) { -return parent::endsWith($suffix); -} else { -$suffix = (string) $suffix; -} - -return '' !== $suffix && \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix), null, $this->ignoreCase); -} - -public function equalsTo($string): bool -{ -if ($string instanceof parent) { -$string = $string->string; -} elseif (\is_array($string) || $string instanceof \Traversable) { -return parent::equalsTo($string); -} else { -$string = (string) $string; -} - -if ('' !== $string && $this->ignoreCase) { -return 0 === strcasecmp($string, $this->string); -} - -return $string === $this->string; -} - -public function folded(): parent -{ -$str = clone $this; -$str->string = strtolower($str->string); - -return $str; -} - -public function indexOf($needle, int $offset = 0): ?int -{ -if ($needle instanceof parent) { -$needle = $needle->string; -} elseif (\is_array($needle) || $needle instanceof \Traversable) { -return parent::indexOf($needle, $offset); -} else { -$needle = (string) $needle; -} - -if ('' === $needle) { -return null; -} - -$i = $this->ignoreCase ? stripos($this->string, $needle, $offset) : strpos($this->string, $needle, $offset); - -return false === $i ? null : $i; -} - -public function indexOfLast($needle, int $offset = 0): ?int -{ -if ($needle instanceof parent) { -$needle = $needle->string; -} elseif (\is_array($needle) || $needle instanceof \Traversable) { -return parent::indexOfLast($needle, $offset); -} else { -$needle = (string) $needle; -} - -if ('' === $needle) { -return null; -} - -$i = $this->ignoreCase ? strripos($this->string, $needle, $offset) : strrpos($this->string, $needle, $offset); - -return false === $i ? null : $i; -} - -public function isUtf8(): bool -{ -return '' === $this->string || preg_match('//u', $this->string); -} - -public function join(array $strings, string $lastGlue = null): parent -{ -$str = clone $this; - -$tail = null !== $lastGlue && 1 < \count($strings) ? $lastGlue.array_pop($strings) : ''; -$str->string = implode($this->string, $strings).$tail; - -return $str; -} - -public function length(): int -{ -return \strlen($this->string); -} - -public function lower(): parent -{ -$str = clone $this; -$str->string = strtolower($str->string); - -return $str; -} - -public function match(string $regexp, int $flags = 0, int $offset = 0): array -{ -$match = ((\PREG_PATTERN_ORDER | \PREG_SET_ORDER) & $flags) ? 'preg_match_all' : 'preg_match'; - -if ($this->ignoreCase) { -$regexp .= 'i'; -} - -set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); - -try { -if (false === $match($regexp, $this->string, $matches, $flags | \PREG_UNMATCHED_AS_NULL, $offset)) { -$lastError = preg_last_error(); - -foreach (get_defined_constants(true)['pcre'] as $k => $v) { -if ($lastError === $v && '_ERROR' === substr($k, -6)) { -throw new RuntimeException('Matching failed with '.$k.'.'); -} -} - -throw new RuntimeException('Matching failed with unknown error code.'); -} -} finally { -restore_error_handler(); -} - -return $matches; -} - -public function padBoth(int $length, string $padStr = ' '): parent -{ -$str = clone $this; -$str->string = str_pad($this->string, $length, $padStr, \STR_PAD_BOTH); - -return $str; -} - -public function padEnd(int $length, string $padStr = ' '): parent -{ -$str = clone $this; -$str->string = str_pad($this->string, $length, $padStr, \STR_PAD_RIGHT); - -return $str; -} - -public function padStart(int $length, string $padStr = ' '): parent -{ -$str = clone $this; -$str->string = str_pad($this->string, $length, $padStr, \STR_PAD_LEFT); - -return $str; -} - -public function prepend(string ...$prefix): parent -{ -$str = clone $this; -$str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$str->string; - -return $str; -} - -public function replace(string $from, string $to): parent -{ -$str = clone $this; - -if ('' !== $from) { -$str->string = $this->ignoreCase ? str_ireplace($from, $to, $this->string) : str_replace($from, $to, $this->string); -} - -return $str; -} - -public function replaceMatches(string $fromRegexp, $to): parent -{ -if ($this->ignoreCase) { -$fromRegexp .= 'i'; -} - -if (\is_array($to)) { -if (!\is_callable($to)) { -throw new \TypeError(sprintf('Argument 2 passed to "%s::replaceMatches()" must be callable, array given.', static::class)); -} - -$replace = 'preg_replace_callback'; -} else { -$replace = $to instanceof \Closure ? 'preg_replace_callback' : 'preg_replace'; -} - -set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); - -try { -if (null === $string = $replace($fromRegexp, $to, $this->string)) { -$lastError = preg_last_error(); - -foreach (get_defined_constants(true)['pcre'] as $k => $v) { -if ($lastError === $v && '_ERROR' === substr($k, -6)) { -throw new RuntimeException('Matching failed with '.$k.'.'); -} -} - -throw new RuntimeException('Matching failed with unknown error code.'); -} -} finally { -restore_error_handler(); -} - -$str = clone $this; -$str->string = $string; - -return $str; -} - -public function reverse(): parent -{ -$str = clone $this; -$str->string = strrev($str->string); - -return $str; -} - -public function slice(int $start = 0, int $length = null): parent -{ -$str = clone $this; -$str->string = (string) substr($this->string, $start, $length ?? \PHP_INT_MAX); - -return $str; -} - -public function snake(): parent -{ -$str = $this->camel(); -$str->string = strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], '\1_\2', $str->string)); - -return $str; -} - -public function splice(string $replacement, int $start = 0, int $length = null): parent -{ -$str = clone $this; -$str->string = substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); - -return $str; -} - -public function split(string $delimiter, int $limit = null, int $flags = null): array -{ -if (1 > $limit = $limit ?? \PHP_INT_MAX) { -throw new InvalidArgumentException('Split limit must be a positive integer.'); -} - -if ('' === $delimiter) { -throw new InvalidArgumentException('Split delimiter is empty.'); -} - -if (null !== $flags) { -return parent::split($delimiter, $limit, $flags); -} - -$str = clone $this; -$chunks = $this->ignoreCase -? preg_split('{'.preg_quote($delimiter).'}iD', $this->string, $limit) -: explode($delimiter, $this->string, $limit); - -foreach ($chunks as &$chunk) { -$str->string = $chunk; -$chunk = clone $str; -} - -return $chunks; -} - -public function startsWith($prefix): bool -{ -if ($prefix instanceof parent) { -$prefix = $prefix->string; -} elseif (!\is_string($prefix)) { -return parent::startsWith($prefix); -} - -return '' !== $prefix && 0 === ($this->ignoreCase ? strncasecmp($this->string, $prefix, \strlen($prefix)) : strncmp($this->string, $prefix, \strlen($prefix))); -} - -public function title(bool $allWords = false): parent -{ -$str = clone $this; -$str->string = $allWords ? ucwords($str->string) : ucfirst($str->string); - -return $str; -} - -public function toUnicodeString(string $fromEncoding = null): UnicodeString -{ -return new UnicodeString($this->toCodePointString($fromEncoding)->string); -} - -public function toCodePointString(string $fromEncoding = null): CodePointString -{ -$u = new CodePointString(); - -if (\in_array($fromEncoding, [null, 'utf8', 'utf-8', 'UTF8', 'UTF-8'], true) && preg_match('//u', $this->string)) { -$u->string = $this->string; - -return $u; -} - -set_error_handler(static function ($t, $m) { throw new InvalidArgumentException($m); }); - -try { -try { -$validEncoding = false !== mb_detect_encoding($this->string, $fromEncoding ?? 'Windows-1252', true); -} catch (InvalidArgumentException $e) { -if (!\function_exists('iconv')) { -throw $e; -} - -$u->string = iconv($fromEncoding ?? 'Windows-1252', 'UTF-8', $this->string); - -return $u; -} -} finally { -restore_error_handler(); -} - -if (!$validEncoding) { -throw new InvalidArgumentException(sprintf('Invalid "%s" string.', $fromEncoding ?? 'Windows-1252')); -} - -$u->string = mb_convert_encoding($this->string, 'UTF-8', $fromEncoding ?? 'Windows-1252'); - -return $u; -} - -public function trim(string $chars = " \t\n\r\0\x0B\x0C"): parent -{ -$str = clone $this; -$str->string = trim($str->string, $chars); - -return $str; -} - -public function trimEnd(string $chars = " \t\n\r\0\x0B\x0C"): parent -{ -$str = clone $this; -$str->string = rtrim($str->string, $chars); - -return $str; -} - -public function trimStart(string $chars = " \t\n\r\0\x0B\x0C"): parent -{ -$str = clone $this; -$str->string = ltrim($str->string, $chars); - -return $str; -} - -public function upper(): parent -{ -$str = clone $this; -$str->string = strtoupper($str->string); - -return $str; -} - -public function width(bool $ignoreAnsiDecoration = true): int -{ -$string = preg_match('//u', $this->string) ? $this->string : preg_replace('/[\x80-\xFF]/', '?', $this->string); - -return (new CodePointString($string))->width($ignoreAnsiDecoration); -} -} diff --git a/composer/vendor/symfony/string/CodePointString.php b/composer/vendor/symfony/string/CodePointString.php deleted file mode 100644 index 49669ba94..000000000 --- a/composer/vendor/symfony/string/CodePointString.php +++ /dev/null @@ -1,270 +0,0 @@ -string = $string; -} - -public function append(string ...$suffix): AbstractString -{ -$str = clone $this; -$str->string .= 1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix); - -if (!preg_match('//u', $str->string)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -return $str; -} - -public function chunk(int $length = 1): array -{ -if (1 > $length) { -throw new InvalidArgumentException('The chunk length must be greater than zero.'); -} - -if ('' === $this->string) { -return []; -} - -$rx = '/('; -while (65535 < $length) { -$rx .= '.{65535}'; -$length -= 65535; -} -$rx .= '.{'.$length.'})/us'; - -$str = clone $this; -$chunks = []; - -foreach (preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { -$str->string = $chunk; -$chunks[] = clone $str; -} - -return $chunks; -} - -public function codePointsAt(int $offset): array -{ -$str = $offset ? $this->slice($offset, 1) : $this; - -return '' === $str->string ? [] : [mb_ord($str->string, 'UTF-8')]; -} - -public function endsWith($suffix): bool -{ -if ($suffix instanceof AbstractString) { -$suffix = $suffix->string; -} elseif (\is_array($suffix) || $suffix instanceof \Traversable) { -return parent::endsWith($suffix); -} else { -$suffix = (string) $suffix; -} - -if ('' === $suffix || !preg_match('//u', $suffix)) { -return false; -} - -if ($this->ignoreCase) { -return preg_match('{'.preg_quote($suffix).'$}iuD', $this->string); -} - -return \strlen($this->string) >= \strlen($suffix) && 0 === substr_compare($this->string, $suffix, -\strlen($suffix)); -} - -public function equalsTo($string): bool -{ -if ($string instanceof AbstractString) { -$string = $string->string; -} elseif (\is_array($string) || $string instanceof \Traversable) { -return parent::equalsTo($string); -} else { -$string = (string) $string; -} - -if ('' !== $string && $this->ignoreCase) { -return \strlen($string) === \strlen($this->string) && 0 === mb_stripos($this->string, $string, 0, 'UTF-8'); -} - -return $string === $this->string; -} - -public function indexOf($needle, int $offset = 0): ?int -{ -if ($needle instanceof AbstractString) { -$needle = $needle->string; -} elseif (\is_array($needle) || $needle instanceof \Traversable) { -return parent::indexOf($needle, $offset); -} else { -$needle = (string) $needle; -} - -if ('' === $needle) { -return null; -} - -$i = $this->ignoreCase ? mb_stripos($this->string, $needle, $offset, 'UTF-8') : mb_strpos($this->string, $needle, $offset, 'UTF-8'); - -return false === $i ? null : $i; -} - -public function indexOfLast($needle, int $offset = 0): ?int -{ -if ($needle instanceof AbstractString) { -$needle = $needle->string; -} elseif (\is_array($needle) || $needle instanceof \Traversable) { -return parent::indexOfLast($needle, $offset); -} else { -$needle = (string) $needle; -} - -if ('' === $needle) { -return null; -} - -$i = $this->ignoreCase ? mb_strripos($this->string, $needle, $offset, 'UTF-8') : mb_strrpos($this->string, $needle, $offset, 'UTF-8'); - -return false === $i ? null : $i; -} - -public function length(): int -{ -return mb_strlen($this->string, 'UTF-8'); -} - -public function prepend(string ...$prefix): AbstractString -{ -$str = clone $this; -$str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$this->string; - -if (!preg_match('//u', $str->string)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -return $str; -} - -public function replace(string $from, string $to): AbstractString -{ -$str = clone $this; - -if ('' === $from || !preg_match('//u', $from)) { -return $str; -} - -if ('' !== $to && !preg_match('//u', $to)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -if ($this->ignoreCase) { -$str->string = implode($to, preg_split('{'.preg_quote($from).'}iuD', $this->string)); -} else { -$str->string = str_replace($from, $to, $this->string); -} - -return $str; -} - -public function slice(int $start = 0, int $length = null): AbstractString -{ -$str = clone $this; -$str->string = mb_substr($this->string, $start, $length, 'UTF-8'); - -return $str; -} - -public function splice(string $replacement, int $start = 0, int $length = null): AbstractString -{ -if (!preg_match('//u', $replacement)) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -$str = clone $this; -$start = $start ? \strlen(mb_substr($this->string, 0, $start, 'UTF-8')) : 0; -$length = $length ? \strlen(mb_substr($this->string, $start, $length, 'UTF-8')) : $length; -$str->string = substr_replace($this->string, $replacement, $start, $length ?? \PHP_INT_MAX); - -return $str; -} - -public function split(string $delimiter, int $limit = null, int $flags = null): array -{ -if (1 > $limit = $limit ?? \PHP_INT_MAX) { -throw new InvalidArgumentException('Split limit must be a positive integer.'); -} - -if ('' === $delimiter) { -throw new InvalidArgumentException('Split delimiter is empty.'); -} - -if (null !== $flags) { -return parent::split($delimiter.'u', $limit, $flags); -} - -if (!preg_match('//u', $delimiter)) { -throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); -} - -$str = clone $this; -$chunks = $this->ignoreCase -? preg_split('{'.preg_quote($delimiter).'}iuD', $this->string, $limit) -: explode($delimiter, $this->string, $limit); - -foreach ($chunks as &$chunk) { -$str->string = $chunk; -$chunk = clone $str; -} - -return $chunks; -} - -public function startsWith($prefix): bool -{ -if ($prefix instanceof AbstractString) { -$prefix = $prefix->string; -} elseif (\is_array($prefix) || $prefix instanceof \Traversable) { -return parent::startsWith($prefix); -} else { -$prefix = (string) $prefix; -} - -if ('' === $prefix || !preg_match('//u', $prefix)) { -return false; -} - -if ($this->ignoreCase) { -return 0 === mb_stripos($this->string, $prefix, 0, 'UTF-8'); -} - -return 0 === strncmp($this->string, $prefix, \strlen($prefix)); -} -} diff --git a/composer/vendor/symfony/string/Exception/ExceptionInterface.php b/composer/vendor/symfony/string/Exception/ExceptionInterface.php deleted file mode 100644 index f0744b41a..000000000 --- a/composer/vendor/symfony/string/Exception/ExceptionInterface.php +++ /dev/null @@ -1,16 +0,0 @@ -isInflectedWord($plural)) { -return [$plural]; -} - -foreach (self::SINGULARIZE_REGEXP as $rule) { -[$regexp, $replace] = $rule; - -if (1 === preg_match($regexp, $plural)) { -return [preg_replace($regexp, $replace, $plural)]; -} -} - -return [$plural]; -} - - - - -public function pluralize(string $singular): array -{ -if ($this->isInflectedWord($singular)) { -return [$singular]; -} - -foreach (self::PLURALIZE_REGEXP as $rule) { -[$regexp, $replace] = $rule; - -if (1 === preg_match($regexp, $singular)) { -return [preg_replace($regexp, $replace, $singular)]; -} -} - -return [$singular.'s']; -} - -private function isInflectedWord(string $word): bool -{ -return 1 === preg_match(self::UNINFLECTED, $word); -} -} diff --git a/composer/vendor/symfony/string/Inflector/InflectorInterface.php b/composer/vendor/symfony/string/Inflector/InflectorInterface.php deleted file mode 100644 index 8cbac46d5..000000000 --- a/composer/vendor/symfony/string/Inflector/InflectorInterface.php +++ /dev/null @@ -1,33 +0,0 @@ -= \count($callback))) { -throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a callable or a [Closure, method] lazy-callable, "%s" given.', __METHOD__, get_debug_type($callback))); -} - -$lazyString = new static(); -$lazyString->value = static function () use (&$callback, &$arguments, &$value): string { -if (null !== $arguments) { -if (!\is_callable($callback)) { -$callback[0] = $callback[0](); -$callback[1] = $callback[1] ?? '__invoke'; -} -$value = $callback(...$arguments); -$callback = self::getPrettyName($callback); -$arguments = null; -} - -return $value ?? ''; -}; - -return $lazyString; -} - - - - - - -public static function fromStringable($value): self -{ -if (!self::isStringable($value)) { -throw new \TypeError(sprintf('Argument 1 passed to "%s()" must be a scalar or a stringable object, "%s" given.', __METHOD__, get_debug_type($value))); -} - -if (\is_object($value)) { -return static::fromCallable([$value, '__toString']); -} - -$lazyString = new static(); -$lazyString->value = (string) $value; - -return $lazyString; -} - - - - -final public static function isStringable($value): bool -{ -return \is_string($value) || $value instanceof self || (\is_object($value) ? method_exists($value, '__toString') : \is_scalar($value)); -} - - - - - - - - -final public static function resolve($value): string -{ -return $value; -} - - - - -public function __toString() -{ -if (\is_string($this->value)) { -return $this->value; -} - -try { -return $this->value = ($this->value)(); -} catch (\Throwable $e) { -if (\TypeError::class === \get_class($e) && __FILE__ === $e->getFile()) { -$type = explode(', ', $e->getMessage()); -$type = substr(array_pop($type), 0, -\strlen(' returned')); -$r = new \ReflectionFunction($this->value); -$callback = $r->getStaticVariables()['callback']; - -$e = new \TypeError(sprintf('Return value of %s() passed to %s::fromCallable() must be of the type string, %s returned.', $callback, static::class, $type)); -} - -if (\PHP_VERSION_ID < 70400) { - -return trigger_error($e, \E_USER_ERROR); -} - -throw $e; -} -} - -public function __sleep(): array -{ -$this->__toString(); - -return ['value']; -} - -public function jsonSerialize(): string -{ -return $this->__toString(); -} - -private function __construct() -{ -} - -private static function getPrettyName(callable $callback): string -{ -if (\is_string($callback)) { -return $callback; -} - -if (\is_array($callback)) { -$class = \is_object($callback[0]) ? get_debug_type($callback[0]) : $callback[0]; -$method = $callback[1]; -} elseif ($callback instanceof \Closure) { -$r = new \ReflectionFunction($callback); - -if (false !== strpos($r->name, '{closure}') || !$class = \PHP_VERSION_ID >= 80111 ? $r->getClosureCalledClass() : $r->getClosureScopeClass()) { -return $r->name; -} - -$class = $class->name; -$method = $r->name; -} else { -$class = get_debug_type($callback); -$method = '__invoke'; -} - -return $class.'::'.$method; -} -} diff --git a/composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php b/composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php deleted file mode 100644 index 8c1f2e111..000000000 --- a/composer/vendor/symfony/string/Resources/data/wcswidth_table_wide.php +++ /dev/null @@ -1,1143 +0,0 @@ - 'Amharic-Latin', -'ar' => 'Arabic-Latin', -'az' => 'Azerbaijani-Latin', -'be' => 'Belarusian-Latin', -'bg' => 'Bulgarian-Latin', -'bn' => 'Bengali-Latin', -'de' => 'de-ASCII', -'el' => 'Greek-Latin', -'fa' => 'Persian-Latin', -'he' => 'Hebrew-Latin', -'hy' => 'Armenian-Latin', -'ka' => 'Georgian-Latin', -'kk' => 'Kazakh-Latin', -'ky' => 'Kirghiz-Latin', -'ko' => 'Korean-Latin', -'mk' => 'Macedonian-Latin', -'mn' => 'Mongolian-Latin', -'or' => 'Oriya-Latin', -'ps' => 'Pashto-Latin', -'ru' => 'Russian-Latin', -'sr' => 'Serbian-Latin', -'sr_Cyrl' => 'Serbian-Latin', -'th' => 'Thai-Latin', -'tk' => 'Turkmen-Latin', -'uk' => 'Ukrainian-Latin', -'uz' => 'Uzbek-Latin', -'zh' => 'Han-Latin', -]; - -private $defaultLocale; -private $symbolsMap = [ -'en' => ['@' => 'at', '&' => 'and'], -]; - - - - - - -private $transliterators = []; - - - - -public function __construct(string $defaultLocale = null, $symbolsMap = null) -{ -if (null !== $symbolsMap && !\is_array($symbolsMap) && !$symbolsMap instanceof \Closure) { -throw new \TypeError(sprintf('Argument 2 passed to "%s()" must be array, Closure or null, "%s" given.', __METHOD__, \gettype($symbolsMap))); -} - -$this->defaultLocale = $defaultLocale; -$this->symbolsMap = $symbolsMap ?? $this->symbolsMap; -} - - - - -public function setLocale($locale) -{ -$this->defaultLocale = $locale; -} - - - - -public function getLocale() -{ -return $this->defaultLocale; -} - - - - -public function slug(string $string, string $separator = '-', string $locale = null): AbstractUnicodeString -{ -$locale = $locale ?? $this->defaultLocale; - -$transliterator = []; -if ($locale && ('de' === $locale || 0 === strpos($locale, 'de_'))) { - -$transliterator = ['de-ASCII']; -} elseif (\function_exists('transliterator_transliterate') && $locale) { -$transliterator = (array) $this->createTransliterator($locale); -} - -if ($this->symbolsMap instanceof \Closure) { - - -$symbolsMap = $this->symbolsMap; -array_unshift($transliterator, static function ($s) use ($symbolsMap, $locale) { -return $symbolsMap($s, $locale); -}); -} - -$unicodeString = (new UnicodeString($string))->ascii($transliterator); - -if (\is_array($this->symbolsMap)) { -$map = null; -if (isset($this->symbolsMap[$locale])) { -$map = $this->symbolsMap[$locale]; -} else { -$parent = self::getParentLocale($locale); -if ($parent && isset($this->symbolsMap[$parent])) { -$map = $this->symbolsMap[$parent]; -} -} -if ($map) { -foreach ($map as $char => $replace) { -$unicodeString = $unicodeString->replace($char, ' '.$replace.' '); -} -} -} - -return $unicodeString -->replaceMatches('/[^A-Za-z0-9]++/', $separator) -->trim($separator) -; -} - -private function createTransliterator(string $locale): ?\Transliterator -{ -if (\array_key_exists($locale, $this->transliterators)) { -return $this->transliterators[$locale]; -} - - -if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$locale] ?? null) { -return $this->transliterators[$locale] = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); -} - - -if (!$parent = self::getParentLocale($locale)) { -return $this->transliterators[$locale] = null; -} - - -if ($id = self::LOCALE_TO_TRANSLITERATOR_ID[$parent] ?? null) { -$transliterator = \Transliterator::create($id.'/BGN') ?? \Transliterator::create($id); -} - -return $this->transliterators[$locale] = $this->transliterators[$parent] = $transliterator ?? null; -} - -private static function getParentLocale(?string $locale): ?string -{ -if (!$locale) { -return null; -} -if (false === $str = strrchr($locale, '_')) { - -return null; -} - -return substr($locale, 0, -\strlen($str)); -} -} diff --git a/composer/vendor/symfony/string/Slugger/SluggerInterface.php b/composer/vendor/symfony/string/Slugger/SluggerInterface.php deleted file mode 100644 index 47dae83b0..000000000 --- a/composer/vendor/symfony/string/Slugger/SluggerInterface.php +++ /dev/null @@ -1,27 +0,0 @@ -string = normalizer_is_normalized($string) ? $string : normalizer_normalize($string); - -if (false === $this->string) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} -} - -public function append(string ...$suffix): AbstractString -{ -$str = clone $this; -$str->string = $this->string.(1 >= \count($suffix) ? ($suffix[0] ?? '') : implode('', $suffix)); -normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - -if (false === $str->string) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -return $str; -} - -public function chunk(int $length = 1): array -{ -if (1 > $length) { -throw new InvalidArgumentException('The chunk length must be greater than zero.'); -} - -if ('' === $this->string) { -return []; -} - -$rx = '/('; -while (65535 < $length) { -$rx .= '\X{65535}'; -$length -= 65535; -} -$rx .= '\X{'.$length.'})/u'; - -$str = clone $this; -$chunks = []; - -foreach (preg_split($rx, $this->string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY) as $chunk) { -$str->string = $chunk; -$chunks[] = clone $str; -} - -return $chunks; -} - -public function endsWith($suffix): bool -{ -if ($suffix instanceof AbstractString) { -$suffix = $suffix->string; -} elseif (\is_array($suffix) || $suffix instanceof \Traversable) { -return parent::endsWith($suffix); -} else { -$suffix = (string) $suffix; -} - -$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; -normalizer_is_normalized($suffix, $form) ?: $suffix = normalizer_normalize($suffix, $form); - -if ('' === $suffix || false === $suffix) { -return false; -} - -if ($this->ignoreCase) { -return 0 === mb_stripos(grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)), $suffix, 0, 'UTF-8'); -} - -return $suffix === grapheme_extract($this->string, \strlen($suffix), \GRAPHEME_EXTR_MAXBYTES, \strlen($this->string) - \strlen($suffix)); -} - -public function equalsTo($string): bool -{ -if ($string instanceof AbstractString) { -$string = $string->string; -} elseif (\is_array($string) || $string instanceof \Traversable) { -return parent::equalsTo($string); -} else { -$string = (string) $string; -} - -$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; -normalizer_is_normalized($string, $form) ?: $string = normalizer_normalize($string, $form); - -if ('' !== $string && false !== $string && $this->ignoreCase) { -return \strlen($string) === \strlen($this->string) && 0 === mb_stripos($this->string, $string, 0, 'UTF-8'); -} - -return $string === $this->string; -} - -public function indexOf($needle, int $offset = 0): ?int -{ -if ($needle instanceof AbstractString) { -$needle = $needle->string; -} elseif (\is_array($needle) || $needle instanceof \Traversable) { -return parent::indexOf($needle, $offset); -} else { -$needle = (string) $needle; -} - -$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; -normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); - -if ('' === $needle || false === $needle) { -return null; -} - -try { -$i = $this->ignoreCase ? grapheme_stripos($this->string, $needle, $offset) : grapheme_strpos($this->string, $needle, $offset); -} catch (\ValueError $e) { -return null; -} - -return false === $i ? null : $i; -} - -public function indexOfLast($needle, int $offset = 0): ?int -{ -if ($needle instanceof AbstractString) { -$needle = $needle->string; -} elseif (\is_array($needle) || $needle instanceof \Traversable) { -return parent::indexOfLast($needle, $offset); -} else { -$needle = (string) $needle; -} - -$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; -normalizer_is_normalized($needle, $form) ?: $needle = normalizer_normalize($needle, $form); - -if ('' === $needle || false === $needle) { -return null; -} - -$string = $this->string; - -if (0 > $offset) { - -if (0 > $offset += grapheme_strlen($needle)) { -$string = grapheme_substr($string, 0, $offset); -} -$offset = 0; -} - -$i = $this->ignoreCase ? grapheme_strripos($string, $needle, $offset) : grapheme_strrpos($string, $needle, $offset); - -return false === $i ? null : $i; -} - -public function join(array $strings, string $lastGlue = null): AbstractString -{ -$str = parent::join($strings, $lastGlue); -normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - -return $str; -} - -public function length(): int -{ -return grapheme_strlen($this->string); -} - - - - -public function normalize(int $form = self::NFC): parent -{ -$str = clone $this; - -if (\in_array($form, [self::NFC, self::NFKC], true)) { -normalizer_is_normalized($str->string, $form) ?: $str->string = normalizer_normalize($str->string, $form); -} elseif (!\in_array($form, [self::NFD, self::NFKD], true)) { -throw new InvalidArgumentException('Unsupported normalization form.'); -} elseif (!normalizer_is_normalized($str->string, $form)) { -$str->string = normalizer_normalize($str->string, $form); -$str->ignoreCase = null; -} - -return $str; -} - -public function prepend(string ...$prefix): AbstractString -{ -$str = clone $this; -$str->string = (1 >= \count($prefix) ? ($prefix[0] ?? '') : implode('', $prefix)).$this->string; -normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - -if (false === $str->string) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -return $str; -} - -public function replace(string $from, string $to): AbstractString -{ -$str = clone $this; -normalizer_is_normalized($from) ?: $from = normalizer_normalize($from); - -if ('' !== $from && false !== $from) { -$tail = $str->string; -$result = ''; -$indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; - -while ('' !== $tail && false !== $i = $indexOf($tail, $from)) { -$slice = grapheme_substr($tail, 0, $i); -$result .= $slice.$to; -$tail = substr($tail, \strlen($slice) + \strlen($from)); -} - -$str->string = $result.$tail; -normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - -if (false === $str->string) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} -} - -return $str; -} - -public function replaceMatches(string $fromRegexp, $to): AbstractString -{ -$str = parent::replaceMatches($fromRegexp, $to); -normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - -return $str; -} - -public function slice(int $start = 0, int $length = null): AbstractString -{ -$str = clone $this; - -if (\PHP_VERSION_ID < 80000 && 0 > $start && grapheme_strlen($this->string) < -$start) { -$start = 0; -} -$str->string = (string) grapheme_substr($this->string, $start, $length ?? 2147483647); - -return $str; -} - -public function splice(string $replacement, int $start = 0, int $length = null): AbstractString -{ -$str = clone $this; - -if (\PHP_VERSION_ID < 80000 && 0 > $start && grapheme_strlen($this->string) < -$start) { -$start = 0; -} -$start = $start ? \strlen(grapheme_substr($this->string, 0, $start)) : 0; -$length = $length ? \strlen(grapheme_substr($this->string, $start, $length ?? 2147483647)) : $length; -$str->string = substr_replace($this->string, $replacement, $start, $length ?? 2147483647); -normalizer_is_normalized($str->string) ?: $str->string = normalizer_normalize($str->string); - -if (false === $str->string) { -throw new InvalidArgumentException('Invalid UTF-8 string.'); -} - -return $str; -} - -public function split(string $delimiter, int $limit = null, int $flags = null): array -{ -if (1 > $limit = $limit ?? 2147483647) { -throw new InvalidArgumentException('Split limit must be a positive integer.'); -} - -if ('' === $delimiter) { -throw new InvalidArgumentException('Split delimiter is empty.'); -} - -if (null !== $flags) { -return parent::split($delimiter.'u', $limit, $flags); -} - -normalizer_is_normalized($delimiter) ?: $delimiter = normalizer_normalize($delimiter); - -if (false === $delimiter) { -throw new InvalidArgumentException('Split delimiter is not a valid UTF-8 string.'); -} - -$str = clone $this; -$tail = $this->string; -$chunks = []; -$indexOf = $this->ignoreCase ? 'grapheme_stripos' : 'grapheme_strpos'; - -while (1 < $limit && false !== $i = $indexOf($tail, $delimiter)) { -$str->string = grapheme_substr($tail, 0, $i); -$chunks[] = clone $str; -$tail = substr($tail, \strlen($str->string) + \strlen($delimiter)); ---$limit; -} - -$str->string = $tail; -$chunks[] = clone $str; - -return $chunks; -} - -public function startsWith($prefix): bool -{ -if ($prefix instanceof AbstractString) { -$prefix = $prefix->string; -} elseif (\is_array($prefix) || $prefix instanceof \Traversable) { -return parent::startsWith($prefix); -} else { -$prefix = (string) $prefix; -} - -$form = null === $this->ignoreCase ? \Normalizer::NFD : \Normalizer::NFC; -normalizer_is_normalized($prefix, $form) ?: $prefix = normalizer_normalize($prefix, $form); - -if ('' === $prefix || false === $prefix) { -return false; -} - -if ($this->ignoreCase) { -return 0 === mb_stripos(grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES), $prefix, 0, 'UTF-8'); -} - -return $prefix === grapheme_extract($this->string, \strlen($prefix), \GRAPHEME_EXTR_MAXBYTES); -} - -public function __wakeup() -{ -if (!\is_string($this->string)) { -throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); -} - -normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); -} - -public function __clone() -{ -if (null === $this->ignoreCase) { -normalizer_is_normalized($this->string) ?: $this->string = normalizer_normalize($this->string); -} - -$this->ignoreCase = false; -} -} From a827677d8799600d13bf1aee45f8a54630108809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Thu, 16 Feb 2023 23:34:14 +0100 Subject: [PATCH 04/11] cleanup --- src/Composer/ComposerFile.php | 25 ++++------- src/Composer/ComposerFiles.php | 19 +-------- src/Composer/InstalledJsonFile.php | 51 ----------------------- src/Configuration/Configuration.php | 17 -------- tests/Composer/ComposerFileAssertions.php | 27 ------------ tests/Composer/ComposerFileTest.php | 25 ++--------- tests/Composer/ComposerFilesTest.php | 21 +++------- tests/Composer/InstalledJsonFileTest.php | 20 --------- 8 files changed, 18 insertions(+), 187 deletions(-) delete mode 100644 src/Composer/InstalledJsonFile.php delete mode 100644 tests/Composer/ComposerFileAssertions.php delete mode 100644 tests/Composer/InstalledJsonFileTest.php diff --git a/src/Composer/ComposerFile.php b/src/Composer/ComposerFile.php index f75a5f754..65cd2a33d 100644 --- a/src/Composer/ComposerFile.php +++ b/src/Composer/ComposerFile.php @@ -15,21 +15,18 @@ namespace KevinGH\Box\Composer; use Webmozart\Assert\Assert; -use function is_array; -use function is_string; -class ComposerFile +final class ComposerFile { - private ?string $path; - private string $contents; - private array $decodedContents; + private $path; + private $contents; - final public static function createEmpty(): self + public static function createEmpty(): self { return new self(null, []); } - public function __construct(?string $path, array|string $contents) + public function __construct(?string $path, array $contents) { Assert::nullOrNotEmpty($path); @@ -38,22 +35,16 @@ public function __construct(?string $path, array|string $contents) } $this->path = $path; - $this->contents = is_string($contents) ? $contents : ''; - $this->decodedContents = is_array($contents) ? $contents : []; + $this->contents = $contents; } - final public function getPath(): ?string + public function getPath(): ?string { return $this->path; } - final public function getContents(): string + public function getDecodedContents(): array { return $this->contents; } - - final public function getDecodedContents(): array - { - return $this->decodedContents; - } } diff --git a/src/Composer/ComposerFiles.php b/src/Composer/ComposerFiles.php index f6126e4a6..79a36ab14 100644 --- a/src/Composer/ComposerFiles.php +++ b/src/Composer/ComposerFiles.php @@ -26,7 +26,6 @@ public static function createEmpty(): self ComposerFile::createEmpty(), ComposerFile::createEmpty(), ComposerFile::createEmpty(), - ComposerFile::createEmpty(), ); } @@ -34,7 +33,6 @@ public function __construct( private readonly ComposerFile $composerJson, private readonly ComposerFile $composerLock, private readonly ComposerFile $installedJson, - private readonly ComposerFile $installedPhp, ) { } @@ -53,11 +51,6 @@ public function getInstalledJson(): ComposerFile return $this->installedJson; } - public function getInstalledPhp(): ComposerFile - { - return $this->installedPhp; - } - /** * @return list */ @@ -67,19 +60,9 @@ public function getPaths(): array array_filter( array_map( static fn (ComposerFile $file): ?string => $file->getPath(), - [ - $this->composerJson, - $this->composerLock, - $this->installedJson, - $this->installedPhp, - ], + [$this->composerJson, $this->composerLock, $this->installedJson], ), ), ); } - - public function excludeDevPackagesFromInstalledFiles(): self - { - return $this; - } } diff --git a/src/Composer/InstalledJsonFile.php b/src/Composer/InstalledJsonFile.php deleted file mode 100644 index 0ddfae7a0..000000000 --- a/src/Composer/InstalledJsonFile.php +++ /dev/null @@ -1,51 +0,0 @@ - - * Théo Fidry - * - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - -namespace KevinGH\Box\Composer; - -use Webmozart\Assert\Assert; -use function array_filter; -use function array_values; -use function in_array; -use function is_array; -use function is_string; - -final class InstalledJsonFile extends ComposerFile -{ - public function excludeDevPackages(): self - { - $path = $this->getPath(); - $decodedContents = $this->getDecodedContents(); - - if ($decodedContents['dev'] === false) { - // Nothing to do. - return $this; - } - - $devPackageNames = $decodedContents['dev-package-names']; - - $newDecodedContents = [ - 'packages' => array_values( - array_filter( - $decodedContents['packages'], - static fn (array $package) => !in_array($package['name'], $devPackageNames, true), - ), - ), - 'dev' => false, - 'dev-package-names' => [], - ]; - - return new self($path, $newDecodedContents); - } -} diff --git a/src/Configuration/Configuration.php b/src/Configuration/Configuration.php index 85563a0ca..fb9884a6d 100644 --- a/src/Configuration/Configuration.php +++ b/src/Configuration/Configuration.php @@ -60,7 +60,6 @@ use function dirname; use function explode; use function file_exists; -use function file_get_contents; use function getcwd; use function implode; use function in_array; @@ -269,10 +268,6 @@ public static function create(?string $file, stdClass $raw): self $excludeDevPackages = self::retrieveExcludeDevFiles($raw, $dumpAutoload, $logger); - if ($excludeDevPackages) { - $composerFiles = $composerFiles->excludeDevPackagesFromInstalledFiles(); - } - $devPackages = ComposerConfiguration::retrieveDevPackages( $basePath, $composerFiles->getComposerJson()->getDecodedContents(), @@ -1835,22 +1830,10 @@ private static function retrieveComposerFiles(string $basePath): ComposerFiles return new ComposerFile($file, $contents); }; - $installedPhpPath = canonicalize($basePath.'/vendor/composer/installed.php'); - - $installedPhp = false === file_exists($installedPhpPath) - || false === is_file($installedPhpPath) - || false === is_readable($installedPhpPath) - ? ComposerFile::createEmpty() - : new ComposerFile( - $installedPhpPath, - file_get_contents($installedPhpPath), - ); - return new ComposerFiles( $retrieveFileAndContents(canonicalize($basePath.'/composer.json')), $retrieveFileAndContents(canonicalize($basePath.'/composer.lock')), $retrieveFileAndContents(canonicalize($basePath.'/vendor/composer/installed.json')), - $installedPhp, ); } diff --git a/tests/Composer/ComposerFileAssertions.php b/tests/Composer/ComposerFileAssertions.php deleted file mode 100644 index e9f659fc2..000000000 --- a/tests/Composer/ComposerFileAssertions.php +++ /dev/null @@ -1,27 +0,0 @@ -getPath()); - Assert::assertSame($expectedContents, $actual->getContents()); - Assert::assertSame($expectedDecodedContents, $actual->getDecodedContents()); - } -} diff --git a/tests/Composer/ComposerFileTest.php b/tests/Composer/ComposerFileTest.php index 50909e2ee..8248922b6 100644 --- a/tests/Composer/ComposerFileTest.php +++ b/tests/Composer/ComposerFileTest.php @@ -28,24 +28,15 @@ class ComposerFileTest extends TestCase /** * @dataProvider validInstantiatorsProvider */ - public function test_it_can_be_created( - Closure $create, - ?string $expectedPath, - string $expectedContents, - array $expectedDecodedContents, - ): void + public function test_it_can_be_created(Closure $create, ?string $expectedPath, array $expectedContents): void { /** @var ComposerFile $actual */ $actual = $create(); self::assertInstanceOf(ComposerFile::class, $actual); - ComposerFileAssertions::assertStateIs( - $actual, - $expectedPath, - $expectedContents, - $expectedDecodedContents, - ); + self::assertSame($expectedPath, $actual->getPath()); + self::assertSame($expectedContents, $actual->getDecodedContents()); } /** @@ -67,30 +58,20 @@ public static function validInstantiatorsProvider(): iterable yield [ static fn (): ComposerFile => new ComposerFile(null, []), null, - '', [], ]; yield [ static fn (): ComposerFile => ComposerFile::createEmpty(), null, - '', [], ]; yield [ static fn (): ComposerFile => new ComposerFile('path/to/foo', ['foo' => 'bar']), 'path/to/foo', - '', ['foo' => 'bar'], ]; - - yield [ - static fn (): ComposerFile => new ComposerFile('path/to/foo', 'foo'), - 'path/to/foo', - 'foo', - [], - ]; } public static function invalidInstantiatorsProvider(): iterable diff --git a/tests/Composer/ComposerFilesTest.php b/tests/Composer/ComposerFilesTest.php index 9def8d485..7c8db9e57 100644 --- a/tests/Composer/ComposerFilesTest.php +++ b/tests/Composer/ComposerFilesTest.php @@ -32,7 +32,6 @@ public function test_it_can_be_created( ComposerFile $expectedComposerJson, ComposerFile $expectedComposerLock, ComposerFile $expectedInstalledJson, - ComposerFile $expectedInstalledPhp, array $expectedPaths, ): void { /** @var ComposerFiles $actual */ @@ -43,7 +42,6 @@ public function test_it_can_be_created( self::assertEquals($expectedComposerJson, $actual->getComposerJson()); self::assertEquals($expectedComposerLock, $actual->getComposerLock()); self::assertEquals($expectedInstalledJson, $actual->getInstalledJson()); - self::assertEquals($expectedInstalledPhp, $actual->getInstalledPhp()); self::assertSame($expectedPaths, $actual->getPaths()); } @@ -53,20 +51,17 @@ public static function validInstantiatorsProvider(): iterable yield (static function (): array { $json = new ComposerFile('path/to/composer.json', ['name' => 'composer.json']); $lock = new ComposerFile('path/to/composer.lock', ['name' => 'composer.lock']); - $installedJson = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); - $installedPhp = new ComposerFile('path/to/installed.php', ['name' => 'installed.php']); + $installed = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); return [ - static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installedJson, $installedPhp), + static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installed), $json, $lock, - $installedJson, - $installedPhp, + $installed, [ 'path/to/composer.json', 'path/to/composer.lock', 'path/to/installed.json', - 'path/to/installed.php', ], ]; })(); @@ -74,19 +69,16 @@ public static function validInstantiatorsProvider(): iterable yield (static function (): array { $json = new ComposerFile('path/to/composer.json', ['name' => 'composer.json']); $lock = ComposerFile::createEmpty(); - $installedJson = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); - $installedPhp = new ComposerFile('path/to/installed.php', ['name' => 'installed.php']); + $installed = new ComposerFile('path/to/installed.json', ['name' => 'installed.json']); return [ - static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installedJson, $installedPhp), + static fn (): ComposerFiles => new ComposerFiles($json, $lock, $installed), $json, $lock, - $installedJson, - $installedPhp, + $installed, [ 'path/to/composer.json', 'path/to/installed.json', - 'path/to/installed.php', ], ]; })(); @@ -96,7 +88,6 @@ public static function validInstantiatorsProvider(): iterable ComposerFile::createEmpty(), ComposerFile::createEmpty(), ComposerFile::createEmpty(), - ComposerFile::createEmpty(), [], ])(); } diff --git a/tests/Composer/InstalledJsonFileTest.php b/tests/Composer/InstalledJsonFileTest.php deleted file mode 100644 index c765c2d62..000000000 --- a/tests/Composer/InstalledJsonFileTest.php +++ /dev/null @@ -1,20 +0,0 @@ - Date: Thu, 16 Feb 2023 23:42:56 +0100 Subject: [PATCH 05/11] fix --- .github/workflows/e2e-tests.yaml | 1 + Makefile | 2 +- .../vendor/composer/installed.php | 37 ++++++++++++++++--- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/.github/workflows/e2e-tests.yaml b/.github/workflows/e2e-tests.yaml index b6a019740..954a2b095 100644 --- a/.github/workflows/e2e-tests.yaml +++ b/.github/workflows/e2e-tests.yaml @@ -55,6 +55,7 @@ jobs: - e2e_phpstorm_stubs - e2e_dockerfile - e2e_dockerfile_no_extension + - e2e_installed_dev php: [ '8.1', '8.2', '8.3' ] tools: - 'composer:2.2' diff --git a/Makefile b/Makefile index 0ba00e5ca..0dbe239ca 100644 --- a/Makefile +++ b/Makefile @@ -250,7 +250,7 @@ _infection_ci: $(INFECTION_BIN) $(COVERAGE_XML_DIR) $(COVERAGE_JUNIT) vendor #--------------------------------------------------------------------------- .PHONY: test_e2e -test_e2e: e2e_scoper_alias e2e_scoper_expose_symbols e2e_php_settings_checker e2e_symfony e2e_composer_installed_versions e2e_phpstorm_stubs e2e_dockerfile e2e_dockerfile_no_extension +test_e2e: e2e_scoper_alias e2e_scoper_expose_symbols e2e_php_settings_checker e2e_symfony e2e_composer_installed_versions e2e_phpstorm_stubs e2e_dockerfile e2e_dockerfile_no_extension e2e_installed_dev .PHONY: blackfire diff --git a/res/requirement-checker/vendor/composer/installed.php b/res/requirement-checker/vendor/composer/installed.php index 1f4d0ffe7..c7954c2ba 100644 --- a/res/requirement-checker/vendor/composer/installed.php +++ b/res/requirement-checker/vendor/composer/installed.php @@ -1,5 +1,32 @@ - array('name' => 'humbug/requirement-checker', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ce244bb2d6c3e030748d4b5e5f23c618a5d0d85e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \true), 'versions' => array('composer/semver' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/instantiator' => array('pretty_version' => '1.4.1', 'version' => '1.4.1.0', 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/instantiator', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/composer-normalize' => array('pretty_version' => '2.29.0', 'version' => '2.29.0.0', 'reference' => 'fad0e99b16c625817a5bfd910e4d7e31999c53b2', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../ergebnis/composer-normalize', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-normalizer' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '2039eb11131a243b9204bf51219baa08935e6b1d', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-normalizer', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-printer' => array('pretty_version' => '3.3.0', 'version' => '3.3.0.0', 'reference' => '18920367473b099633f644f0ca6dc8794345148f', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-printer', 'aliases' => array(), 'dev_requirement' => \true), 'ergebnis/json-schema-validator' => array('pretty_version' => '2.0.0', 'version' => '2.0.0.0', 'reference' => 'dacd8a47c1cc2c426ec71e952da3609ebe901fac', 'type' => 'library', 'install_path' => __DIR__ . '/../ergebnis/json-schema-validator', 'aliases' => array(), 'dev_requirement' => \true), 'fidry/makefile' => array('pretty_version' => '0.2.1', 'version' => '0.2.1.0', 'reference' => '50abe0df37018458b1ab355e56063618d5ba8d10', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/makefile', 'aliases' => array(), 'dev_requirement' => \true), 'humbug/requirement-checker' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ce244bb2d6c3e030748d4b5e5f23c618a5d0d85e', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'justinrainbow/json-schema' => array('pretty_version' => '5.2.12', 'version' => '5.2.12.0', 'reference' => 'ad87d5a5ca981228e0e205c2bc7dfb8e24559b60', 'type' => 'library', 'install_path' => __DIR__ . '/../justinrainbow/json-schema', 'aliases' => array(), 'dev_requirement' => \true), 'localheinz/diff' => array('pretty_version' => '1.1.1', 'version' => '1.1.1.0', 'reference' => '851bb20ea8358c86f677f5f111c4ab031b1c764c', 'type' => 'library', 'install_path' => __DIR__ . '/../localheinz/diff', 'aliases' => array(), 'dev_requirement' => \true), 'myclabs/deep-copy' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614', 'type' => 'library', 'install_path' => __DIR__ . '/../myclabs/deep-copy', 'aliases' => array(), 'dev_requirement' => \true), 'nikic/php-parser' => array('pretty_version' => 'v4.14.0', 'version' => '4.14.0.0', 'reference' => '34bea19b6e03d8153165d8f30bba4c3be86184c1', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \true), 'phar-io/manifest' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/manifest', 'aliases' => array(), 'dev_requirement' => \true), 'phar-io/version' => array('pretty_version' => '3.2.1', 'version' => '3.2.1.0', 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74', 'type' => 'library', 'install_path' => __DIR__ . '/../phar-io/version', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/reflection-common' => array('pretty_version' => '2.2.0', 'version' => '2.2.0.0', 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/reflection-docblock' => array('pretty_version' => '5.3.0', 'version' => '5.3.0.0', 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock', 'aliases' => array(), 'dev_requirement' => \true), 'phpdocumentor/type-resolver' => array('pretty_version' => '1.6.1', 'version' => '1.6.1.0', 'reference' => '77a32518733312af16a44300404e945338981de3', 'type' => 'library', 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver', 'aliases' => array(), 'dev_requirement' => \true), 'phpspec/prophecy' => array('pretty_version' => 'v1.15.0', 'version' => '1.15.0.0', 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13', 'type' => 'library', 'install_path' => __DIR__ . '/../phpspec/prophecy', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-code-coverage' => array('pretty_version' => '9.2.15', 'version' => '9.2.15.0', 'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-file-iterator' => array('pretty_version' => '3.0.6', 'version' => '3.0.6.0', 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-invoker' => array('pretty_version' => '3.1.1', 'version' => '3.1.1.0', 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-invoker', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-text-template' => array('pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-text-template', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/php-timer' => array('pretty_version' => '5.0.3', 'version' => '5.0.3.0', 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/php-timer', 'aliases' => array(), 'dev_requirement' => \true), 'phpunit/phpunit' => array('pretty_version' => '9.5.21', 'version' => '9.5.21.0', 'reference' => '0e32b76be457de00e83213528f6bb37e2a38fcb1', 'type' => 'library', 'install_path' => __DIR__ . '/../phpunit/phpunit', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/cli-parser' => array('pretty_version' => '1.0.1', 'version' => '1.0.1.0', 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/cli-parser', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/code-unit' => array('pretty_version' => '1.0.8', 'version' => '1.0.8.0', 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/code-unit-reverse-lookup' => array('pretty_version' => '2.0.3', 'version' => '2.0.3.0', 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/comparator' => array('pretty_version' => '4.0.6', 'version' => '4.0.6.0', 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/comparator', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/complexity' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/complexity', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/diff' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/environment' => array('pretty_version' => '5.1.4', 'version' => '5.1.4.0', 'reference' => '1b5dff7bb151a4db11d49d90e5408e4e938270f7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/environment', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/exporter' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/exporter', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/global-state' => array('pretty_version' => '5.0.5', 'version' => '5.0.5.0', 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/global-state', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/lines-of-code' => array('pretty_version' => '1.0.3', 'version' => '1.0.3.0', 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/lines-of-code', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/object-enumerator' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-enumerator', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/object-reflector' => array('pretty_version' => '2.0.4', 'version' => '2.0.4.0', 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/object-reflector', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/recursion-context' => array('pretty_version' => '4.0.4', 'version' => '4.0.4.0', 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/recursion-context', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/resource-operations' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/resource-operations', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/type' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'b233b84bc4465aff7b57cf1c4bc75c86d00d6dad', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/type', 'aliases' => array(), 'dev_requirement' => \true), 'sebastian/version' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'c6c1022351a901512170118436c764e473f6de8c', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/version', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '5bbc823adecdae860bb64756d639ecfec17b050a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-php80' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php80', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/polyfill-php81' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '707403074c8ea6e2edaf8794b0157a0bfa52157a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php81', 'aliases' => array(), 'dev_requirement' => \true), 'symfony/yaml' => array('pretty_version' => 'v6.2.5', 'version' => '6.2.5.0', 'reference' => '2bbfbdacc8a15574f8440c4838ce0d7bb6c86b19', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \true), 'thecodingmachine/safe' => array('pretty_version' => 'v2.4.0', 'version' => '2.4.0.0', 'reference' => 'e788f3d09dcd36f806350aedb77eac348fafadd3', 'type' => 'library', 'install_path' => __DIR__ . '/../thecodingmachine/safe', 'aliases' => array(), 'dev_requirement' => \true), 'theseer/tokenizer' => array('pretty_version' => '1.2.1', 'version' => '1.2.1.0', 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e', 'type' => 'library', 'install_path' => __DIR__ . '/../theseer/tokenizer', 'aliases' => array(), 'dev_requirement' => \true), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \true))); + array( + 'name' => 'humbug/requirement-checker', + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => NULL, + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => false, + ), + 'versions' => array( + 'composer/semver' => array( + 'pretty_version' => '3.3.2', + 'version' => '3.3.2.0', + 'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', + 'type' => 'library', + 'install_path' => __DIR__ . '/./semver', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'humbug/requirement-checker' => array( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'reference' => NULL, + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + ), +); From a145b46f4f93b11af1aca00a8511c94f7a41fcdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Fri, 17 Feb 2023 00:03:07 +0100 Subject: [PATCH 06/11] fix unit tests --- tests/Composer/ComposerOrchestratorComposer22Test.php | 10 ---------- tests/Composer/ComposerOrchestratorComposer23Test.php | 10 ---------- tests/Composer/ComposerOrchestratorComposer24Test.php | 10 ---------- 3 files changed, 30 deletions(-) diff --git a/tests/Composer/ComposerOrchestratorComposer22Test.php b/tests/Composer/ComposerOrchestratorComposer22Test.php index 8f3e7dab9..465d189c9 100644 --- a/tests/Composer/ComposerOrchestratorComposer22Test.php +++ b/tests/Composer/ComposerOrchestratorComposer22Test.php @@ -343,16 +343,6 @@ public function test_it_can_dump_the_autoloader_with_a_composer_json_lock_and_in 'composer.json', 'composer.lock', 'vendor/autoload.php', - 'vendor/beberlei/assert/composer.json', - 'vendor/beberlei/assert/lib/Assert/Assert.php', - 'vendor/beberlei/assert/lib/Assert/Assertion.php', - 'vendor/beberlei/assert/lib/Assert/AssertionChain.php', - 'vendor/beberlei/assert/lib/Assert/AssertionFailedException.php', - 'vendor/beberlei/assert/lib/Assert/functions.php', - 'vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php', - 'vendor/beberlei/assert/lib/Assert/LazyAssertion.php', - 'vendor/beberlei/assert/lib/Assert/LazyAssertionException.php', - 'vendor/beberlei/assert/LICENSE', 'vendor/composer/autoload_classmap.php', 'vendor/composer/autoload_namespaces.php', 'vendor/composer/autoload_psr4.php', diff --git a/tests/Composer/ComposerOrchestratorComposer23Test.php b/tests/Composer/ComposerOrchestratorComposer23Test.php index 65cc51304..3a26e3704 100644 --- a/tests/Composer/ComposerOrchestratorComposer23Test.php +++ b/tests/Composer/ComposerOrchestratorComposer23Test.php @@ -353,16 +353,6 @@ public function test_it_can_dump_the_autoloader_with_a_composer_json_lock_and_in 'composer.json', 'composer.lock', 'vendor/autoload.php', - 'vendor/beberlei/assert/composer.json', - 'vendor/beberlei/assert/lib/Assert/Assert.php', - 'vendor/beberlei/assert/lib/Assert/Assertion.php', - 'vendor/beberlei/assert/lib/Assert/AssertionChain.php', - 'vendor/beberlei/assert/lib/Assert/AssertionFailedException.php', - 'vendor/beberlei/assert/lib/Assert/functions.php', - 'vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php', - 'vendor/beberlei/assert/lib/Assert/LazyAssertion.php', - 'vendor/beberlei/assert/lib/Assert/LazyAssertionException.php', - 'vendor/beberlei/assert/LICENSE', 'vendor/composer/autoload_classmap.php', 'vendor/composer/autoload_namespaces.php', 'vendor/composer/autoload_psr4.php', diff --git a/tests/Composer/ComposerOrchestratorComposer24Test.php b/tests/Composer/ComposerOrchestratorComposer24Test.php index 036163ee8..e25fbc138 100644 --- a/tests/Composer/ComposerOrchestratorComposer24Test.php +++ b/tests/Composer/ComposerOrchestratorComposer24Test.php @@ -377,16 +377,6 @@ public function test_it_can_dump_the_autoloader_with_a_composer_json_lock_and_in 'composer.json', 'composer.lock', 'vendor/autoload.php', - 'vendor/beberlei/assert/composer.json', - 'vendor/beberlei/assert/lib/Assert/Assert.php', - 'vendor/beberlei/assert/lib/Assert/Assertion.php', - 'vendor/beberlei/assert/lib/Assert/AssertionChain.php', - 'vendor/beberlei/assert/lib/Assert/AssertionFailedException.php', - 'vendor/beberlei/assert/lib/Assert/functions.php', - 'vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php', - 'vendor/beberlei/assert/lib/Assert/LazyAssertion.php', - 'vendor/beberlei/assert/lib/Assert/LazyAssertionException.php', - 'vendor/beberlei/assert/LICENSE', 'vendor/composer/autoload_classmap.php', 'vendor/composer/autoload_namespaces.php', 'vendor/composer/autoload_psr4.php', From 2f1f75461f6bee36661a8862409e3e7d6178fe34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Fri, 17 Feb 2023 00:15:00 +0100 Subject: [PATCH 07/11] fix --- tests/Console/Command/CompileTest.php | 29 +++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/tests/Console/Command/CompileTest.php b/tests/Console/Command/CompileTest.php index 1928560c8..6cffb56cd 100644 --- a/tests/Console/Command/CompileTest.php +++ b/tests/Console/Command/CompileTest.php @@ -85,7 +85,7 @@ class CompileTest extends FileSystemTestCase { use RequiresPharReadonlyOff; - private const NUMBER_OF_FILES = 48; + private const NUMBER_OF_FILES = 50; private const BOX_FILES = [ '/.box/', @@ -138,6 +138,8 @@ class CompileTest extends FileSystemTestCase '/vendor/autoload.php', '/vendor/composer/', '/vendor/composer/ClassLoader.php', + '/vendor/composer/InstalledVersions.php', + '/vendor/composer/installed.php', '/vendor/composer/LICENSE', '/vendor/composer/autoload_classmap.php', '/vendor/composer/autoload_namespaces.php', @@ -633,7 +635,7 @@ public function test_it_can_build_a_phar_with_complete_mapping(): void No recommendation found. No warning found. - // PHAR: 13 files (100B) + // PHAR: 15 files (100B) // You can inspect the generated PHAR with the "info" command. // Memory usage: 5.00MB (peak: 10.00MB), time: 0.00s @@ -698,7 +700,9 @@ public function test_it_can_build_a_phar_with_complete_mapping(): void '/vendor/autoload.php', '/vendor/composer/', '/vendor/composer/ClassLoader.php', + '/vendor/composer/InstalledVersions.php', '/vendor/composer/LICENSE', + '/vendor/composer/installed.php', '/vendor/composer/autoload_classmap.php', '/vendor/composer/autoload_namespaces.php', '/vendor/composer/autoload_psr4.php', @@ -794,7 +798,7 @@ public function test_it_can_build_a_phar_file_in_verbose_mode(): void $shebang = sprintf('#!%s', (new PhpExecutableFinder())->find()); - $expectedNumberOfClasses = 1; + $expectedNumberOfClasses = 4; $expectedNumberOfFiles = self::NUMBER_OF_FILES; dump_file( @@ -873,6 +877,9 @@ public function test_it_can_build_a_phar_file_in_verbose_mode(): void 'rand' => {$rand}, ) ? Dumping the Composer autoloader + > '/usr/local/bin/composer' 'install' '--no-dev' '--no-scripts' '--no-plugins' + Composer install output + > '/usr/local/bin/composer' 'dump-autoload' '--classmap-authoritative' '--no-dev' Generating optimized autoload files (authoritative) Generated optimized autoload files (authoritative) containing {$expectedNumberOfClasses} classes @@ -902,6 +909,7 @@ public function test_it_can_build_a_phar_file_in_verbose_mode(): void $expected, ExitCode::SUCCESS, self::createComposerPathNormalizer(), + self::createComposerInstallNoDevNormalizer(), ); } @@ -915,7 +923,7 @@ public function test_it_can_build_a_phar_file_in_very_verbose_mode(): void $shebang = sprintf('#!%s', (new PhpExecutableFinder())->find()); - $expectedNumberOfClasses = 1; + $expectedNumberOfClasses = 4; $expectedNumberOfFiles = self::NUMBER_OF_FILES; dump_file( @@ -998,6 +1006,9 @@ public function test_it_can_build_a_phar_file_in_very_verbose_mode(): void 'rand' => {$rand}, ) ? Dumping the Composer autoloader + > '/usr/local/bin/composer' 'install' '--no-dev' '--no-scripts' '--no-plugins' '-v' + Composer install output + > '/usr/local/bin/composer' 'dump-autoload' '--classmap-authoritative' '--no-dev' '-v' Generating optimized autoload files (authoritative) Generated optimized autoload files (authoritative) containing {$expectedNumberOfClasses} classes @@ -1033,6 +1044,7 @@ public function test_it_can_build_a_phar_file_in_very_verbose_mode(): void $expected, ExitCode::SUCCESS, self::createComposerPathNormalizer(), + self::createComposerInstallNoDevNormalizer(), ); } @@ -3042,6 +3054,15 @@ private static function createComposerPathNormalizer(): callable ); } + private static function createComposerInstallNoDevNormalizer(): callable + { + return static fn (string $output): string => preg_replace( + '/No composer\.lock file present\.[\s\S]*Generating autoload files/', + 'Composer install output', + $output, + ); + } + private function retrievePharFiles(Phar $phar, ?Traversable $traversable = null): array { $root = 'phar://'.str_replace('\\', '/', realpath($phar->getPath())).'/'; From 22b4a32ae8a93ecf843041c44212f6a01107a838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Fri, 17 Feb 2023 00:18:40 +0100 Subject: [PATCH 08/11] fix --- Makefile.e2e | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/Makefile.e2e b/Makefile.e2e index 34f0cfcfc..5efeb45a2 100644 --- a/Makefile.e2e +++ b/Makefile.e2e @@ -54,10 +54,10 @@ E2E_DOCKERFILE_NOT_EXT_IMAGE_TAG := local_box_e2e_dockerfile_no_ext:latest # TODO: see https://github.com/box-project/box/issues/839 E2E_DOCKERFILE_NO_EXT_DOCKERFILE := Dockerfile -E2E_COMPOSER_INSTALLED_DIR = fixtures/build/dir017 -E2E_COMPOSER_INSTALLED_OUTPUT_DIR = dist/dir017 -E2E_COMPOSER_INSTALLED_EXPECTED_OUTPUT := $(E2E_COMPOSER_INSTALLED_DIR)/expected-output -E2E_COMPOSER_INSTALLED_ACTUAL_OUTPUT := $(E2E_COMPOSER_INSTALLED_OUTPUT_DIR)/actual-output +E2E_COMPOSER_INSTALLED_DEV_DIR = fixtures/build/dir017 +E2E_COMPOSER_INSTALLED_DEV_OUTPUT_DIR = dist/dir017 +E2E_COMPOSER_INSTALLED_DEV_EXPECTED_OUTPUT := $(E2E_COMPOSER_INSTALLED_DEV_DIR)/expected-output +E2E_COMPOSER_INSTALLED_DEV_ACTUAL_OUTPUT := $(E2E_COMPOSER_INSTALLED_DEV_OUTPUT_DIR)/actual-output ifeq ($(OS),Darwin) SED = sed -i '' @@ -220,15 +220,15 @@ _e2e_dockerfile_no_extension: .PHONY: e2e_installed_dev -e2e_installed_dev: $(SCOPED_BOX_BIN) $(E2E_COMPOSER_INSTALLED_DIR)/vendor +e2e_installed_dev: $(SCOPED_BOX_BIN) $(E2E_COMPOSER_INSTALLED_DEV_DIR)/vendor @# Packages an app with dev composer plugins - $(SCOPED_BOX) compile --working-dir=$(E2E_COMPOSER_INSTALLED_DIR) --no-parallel --ansi + $(SCOPED_BOX) compile --working-dir=$(E2E_COMPOSER_INSTALLED_DEV_DIR) --no-parallel --ansi - @mkdir -p $(E2E_COMPOSER_INSTALLED_OUTPUT_DIR) - php $(E2E_COMPOSER_INSTALLED_DIR)/index.phar > $(E2E_COMPOSER_INSTALLED_ACTUAL_OUTPUT) - mv -vf $(E2E_COMPOSER_INSTALLED_DIR)/index.phar $(E2E_COMPOSER_INSTALLED_OUTPUT_DIR)/index.phar + @mkdir -p $(E2E_COMPOSER_INSTALLED_DEV_OUTPUT_DIR) + php $(E2E_COMPOSER_INSTALLED_DEV_DIR)/index.phar > $(E2E_COMPOSER_INSTALLED_DEV_ACTUAL_OUTPUT) + mv -vf $(E2E_COMPOSER_INSTALLED_DEV_DIR)/index.phar $(E2E_COMPOSER_INSTALLED_DEV_OUTPUT_DIR)/index.phar - $(DIFF) $(E2E_COMPOSER_INSTALLED_EXPECTED_OUTPUT) $(E2E_COMPOSER_INSTALLED_ACTUAL_OUTPUT) + $(DIFF) $(E2E_COMPOSER_INSTALLED_DEV_EXPECTED_OUTPUT) $(E2E_COMPOSER_INSTALLED_DEV_ACTUAL_OUTPUT) # @@ -279,6 +279,13 @@ $(E2E_DOCKERFILE_NO_EXT_PHAR): $(SCOPED_BOX_BIN) $(E2E_DOCKERFILE_NO_EXT_DIR)/in $(SCOPED_BOX) compile --ansi --working-dir=$(E2E_DOCKERFILE_NO_EXT_DIR) touch -c $@ +$(E2E_COMPOSER_INSTALLED_DEV_DIR)/vendor: $(E2E_COMPOSER_INSTALLED_DEV_DIR)/composer.lock + composer install --ansi --working-dir=$(E2E_COMPOSER_INSTALLED_DEV_DIR) + touch -c $@ +$(E2E_COMPOSER_INSTALLED_DEV_DIR)/composer.lock: $(E2E_COMPOSER_INSTALLED_DEV_DIR)/composer.json + @echo "$(ERROR_COLOR)$(@) is not up to date. You may want to run the following command:$(NO_COLOR)" + @echo "$$ composer update --lock --working-dir=$(E2E_COMPOSER_INSTALLED_DEV_DIR) && touch -c $(@)" + .PHONY: docker_images docker_images: ./.docker/build From 2ee5243c56b1434df91b56f56c02b99539926054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Fri, 17 Feb 2023 09:17:01 +0100 Subject: [PATCH 09/11] debug --- src/Composer/ComposerOrchestrator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Composer/ComposerOrchestrator.php b/src/Composer/ComposerOrchestrator.php index f8b659581..ab2f72397 100644 --- a/src/Composer/ComposerOrchestrator.php +++ b/src/Composer/ComposerOrchestrator.php @@ -150,7 +150,7 @@ private static function removeDevInstallPackages(string $composerExecutable, boo return; } - $composerCommand = [$composerExecutable, 'install', '--no-dev', '--no-scripts', '--no-plugins']; + $composerCommand = [$composerExecutable, 'install', '--no-dev', '--no-scripts', '--no-plugins', '-vvv']; if (null !== $verbosity = self::retrieveSubProcessVerbosity($logger->getIO())) { $composerCommand[] = $verbosity; From 4122ad6f0fd6c7d1a744613df020228d40922535 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Fri, 17 Feb 2023 09:32:03 +0100 Subject: [PATCH 10/11] verbose --- Makefile.e2e | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.e2e b/Makefile.e2e index 5efeb45a2..ced384f3c 100644 --- a/Makefile.e2e +++ b/Makefile.e2e @@ -222,7 +222,7 @@ _e2e_dockerfile_no_extension: .PHONY: e2e_installed_dev e2e_installed_dev: $(SCOPED_BOX_BIN) $(E2E_COMPOSER_INSTALLED_DEV_DIR)/vendor @# Packages an app with dev composer plugins - $(SCOPED_BOX) compile --working-dir=$(E2E_COMPOSER_INSTALLED_DEV_DIR) --no-parallel --ansi + $(SCOPED_BOX) compile --working-dir=$(E2E_COMPOSER_INSTALLED_DEV_DIR) --no-parallel --ansi -vvv @mkdir -p $(E2E_COMPOSER_INSTALLED_DEV_OUTPUT_DIR) php $(E2E_COMPOSER_INSTALLED_DEV_DIR)/index.phar > $(E2E_COMPOSER_INSTALLED_DEV_ACTUAL_OUTPUT) From 05bb2f5a856b6c038583a8ae3e6af11a36c941ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Fri, 17 Feb 2023 10:44:31 +0100 Subject: [PATCH 11/11] remove debug --- Makefile.e2e | 2 +- src/Composer/ComposerOrchestrator.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.e2e b/Makefile.e2e index ced384f3c..5efeb45a2 100644 --- a/Makefile.e2e +++ b/Makefile.e2e @@ -222,7 +222,7 @@ _e2e_dockerfile_no_extension: .PHONY: e2e_installed_dev e2e_installed_dev: $(SCOPED_BOX_BIN) $(E2E_COMPOSER_INSTALLED_DEV_DIR)/vendor @# Packages an app with dev composer plugins - $(SCOPED_BOX) compile --working-dir=$(E2E_COMPOSER_INSTALLED_DEV_DIR) --no-parallel --ansi -vvv + $(SCOPED_BOX) compile --working-dir=$(E2E_COMPOSER_INSTALLED_DEV_DIR) --no-parallel --ansi @mkdir -p $(E2E_COMPOSER_INSTALLED_DEV_OUTPUT_DIR) php $(E2E_COMPOSER_INSTALLED_DEV_DIR)/index.phar > $(E2E_COMPOSER_INSTALLED_DEV_ACTUAL_OUTPUT) diff --git a/src/Composer/ComposerOrchestrator.php b/src/Composer/ComposerOrchestrator.php index ab2f72397..f8b659581 100644 --- a/src/Composer/ComposerOrchestrator.php +++ b/src/Composer/ComposerOrchestrator.php @@ -150,7 +150,7 @@ private static function removeDevInstallPackages(string $composerExecutable, boo return; } - $composerCommand = [$composerExecutable, 'install', '--no-dev', '--no-scripts', '--no-plugins', '-vvv']; + $composerCommand = [$composerExecutable, 'install', '--no-dev', '--no-scripts', '--no-plugins']; if (null !== $verbosity = self::retrieveSubProcessVerbosity($logger->getIO())) { $composerCommand[] = $verbosity;

    2. >jVvrrY|9n1w|1JtyqqM-F4wXceT(^J(TR?3 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%0D@5C|x>W=e#a8ucji>XMU`z)#y%$01 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 z zdwcX|=jqGykKX=xw)67h?%ubX&#RaH{?6cDr?av9cJ%K2#>e}Y{ck^g^ZDrH_GhPq zo$<$;pS(W*?1#_CFMj#v$>`blKYz0R==S69zP)V!{L9|a+DG3He*SEu{ln2WXYW2g z?O&eV==Z+;e*L?x*LyEN`(%CG{pICHFaPrN>%qOV^_O3L_H;a2*<5>k`(*#K_3>X$ zUfkUo4EHwfw(ng&+WhF#AAY&}#oZe}{CKo~@AQ)w3nd+U2&jmICo z`RbSc_Qz*~!RGe)cBj2_w)gh-qw(J5N8fK>?0vDlIqrPC`S!;fFPYde0KKs(Jwzdd42xT&JR0hZ+|#Hd-`JM$rpPcKfk>FlZ)VeRuTu_OleJ0N32);YxDek zJfepxe*7b%{PjrzHod=7ubbpxwBXKZ%K&G+9L9M+IIv&TcVUWuwX=uJ*Y4ecEPplc z!aMQ zTN+j}Wz>1JgF;mmBbUBH=Jwa)kC5W)=I z2`(PNU5+i{DUg}zg?uBC$sG^o(X3F~7B-mv57Ap!tUhP8y*@%><#yB_4`%R|Sfk!f z8E{Dv9OMfPyfmawOoN#CX0(0k^%A4piSmoOT;Ot}o zY4XUf7IQTsw=rJZjk0P~Btvz3HaaQpE-{*O;QkcL)CkeJUoRMIpoQl&f#CimAy&XHDoTwNh)dfto-3I7OMQI z`j3<6YD~)YN;De}$25r3GTn4srHfhNR~}Y};{nVVieU$Ofi_h5tqm`G?St0aRyVz7 zwYG}oc@SU!>`e-%i4{xw$FR?`iNVACBG+*bTXL_pIvhwiM25BG@X_Yh+V0Er>5JWG zhdbN5`|0!i>eeUSchz9+La)7sz(}`!7V8AqzfO>ixAeHAb?(^hn+sh-H+z;t)uap^ zMYG%i3nwXH-Wy|y9EywschH1Q+i_bi{xq>Yt89k)U-&&%>&m@> zMy%=>7oRegX?+_#bZVzgU!85Fxq4jgLGxdAMANov)WjY@3I)xt+;}_D4ktI9shs6T zhh8HswWng~)lcQh(BIE45q-MDSlsf=X#?fzHHQ}GZ%8;|UlQz-465P4st-(a72Tb2$q>8s%1zz zDsGV0f>oJ}QR*Iiw z72N!=toxA_izbalqX${>8lDw+$~S*xO$5`;YQfK}XdNA}UfnxwM7`+Yny3scq8X

  2. >jVvrrY|9n1w|1JtyqqM-F4wXceT(^J(TR?3 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%0D@5C|x>W=e#a8ucji>XMU`z)#y%$01 zSh{g_pwsAdLChA8ateF&Xlv##AygVNC0KmB*2Xz10vqZUz1K3z6&G_dkH{@d^cJ(8 z3l_cMIY%J(`$9OQH>eQ!$Cd`2Q~FSThi`WkV|2UL=F@Gd%PT9c^$4+ad0h+YH9BI- zZILeQcu&zS>eWQ_cCC#U$(F6Pa?XcCP zUU4uYI-E^s`m~<(dhQz5T4J8B#?KB^dXM^b1kHC9gg%o(E3HDn0zy&Sv6D zlWje%-Xb11yZEK8j{RaKqTS10u6ZBI&FMsNB3(;*51~U9bEt&x^-=s9ec2AaW`_D7 z-<#F$zK*?P9eiEgqwNCrA-eStEA>pEhQ0rluX~PfNsw~#@*@~Tsm111; zXq9d~Nmgb^$%9u3defe*u~#;4c2L~hS+TCnTK;kYL{6698fD;K z#wO;P*t1>q?YS^1)>)xwA6)jsS)y*nvo9?BY4A10fnRn!KAa8T;hK<{REthwG|D=8 z@q13q;T6oH3>zO;oV_&RH0CZfYt@pv4#(fwVZlJ`dhZ#?icIOi}Rrn!3QawO# z9oU}}nLVk4*D)mBi&k$WE-)6W2mwmtbX*-;WKC3sI)=w?Q?)?KeL6o;Y6+V;&j$=L)H457Jx<{ zIY5mP1wh|1sP2DD;kqk)jT6JRc>?D?h(OUd=Rx;Y=$?LcZ+ON(^R`p(vo|Q>c0Ckn z@)Nz^x^&zd$Yz9C%y(X=yGounPoRYLyfEL=IcC3gLP~6|1YHu7di$%l?7F`gS$cMJ zQLomWlz5qTUsDn{n1W}+b7)1E_DU`u^03~GGNseWB*Zx7TY*RrhW&<5qS5tOPuK@H z$9xkl)Do6JMc!w0F?>p2Mui@a9(+aRQr6sm5Zcl*EJ=B(PDzAQ|HusvoJfosBHmy1 zNJ?FDudH*um<67KghV0o)S2DASqy9^qvKP`cszN-Z|*e@t?4KU{`J)An4FyCFgmB} z(O+GUK6v!oDG^6V&5vd(@6BX5@dxv>=?G;-3xHUWGU3B*V`%|ZkxIc%%+0D&l5qwbRm&;tM8^CwVg;ALwG6}p}4y1hA8s}Gka!;n4>5@-ULJxg_|UU zv|*Td=$?<~yS!%^`&QF8=R?ZodGZj4I7W2E&at$XROLzJ$@n<0O4j}H==Jd8bn)%* z6q!I%$UNY%iDZn5mojmL#jVubz0iz%X0O3Rd~6t&-_g=S)Kbp=rr8-Ri4uvka*5tV z`N0P9S`=4d7d0gD$}iwO~BBwbWXOp8_oO zo;A8^$`Gs>gw#3kUYzl?6!usv;6vj-wd%UT^8DUx%!?uv*(r?9Fi9L%qP^BINWRIy zLLu73)q^1&kX8tXC=|2#9pQ&)s4er0^lR@>$fX$5fl=>CN*&LuEpGSf)!){N?s?Dv z7klUR5mt*Rv-3tM!PmxY!~Zq|5d2PkX;6I?dny%geDY2WrbL=XWOmoh-+GH*&v{*M zc*afh8=@KITd0CTb+MG}OI=AJD5`lJ1yh;`<7nv4E9aUXY zV#U(Vt?(&mVUyx~;4G=3S%Gviu{HHJvlGsUR3yuf?E9?}snEvhukd%7Q0K9VfGO|c z38|)T+`!x}@sjU8aVe$4#WOhco4UEyn{sboesNNFX{+5V*9zt|D`cUTW;ux__Q1eq znVTVKlfv{zwzD@hHF3HA;!Rfi*bZ_^z1k!Ji^}o&CDLZ(Wcp>)7H=DKf-VnOX2);> z#E|7)eygdL%Pa7jI~UvFbfSJOI}`&J4HwpEhBs=z%#;VGAb_z_fv)DzoG#@7&K-%6T}enfp5LqaYONKQR`n9w=be~5N3WX>R` zEv|5Xh^|wfj-ek_o~U0wF$cTD{V((slFaHf6)Jikrc3!q)uB}z<)~-D*G3S~$$A>6-H+t!qy$CrX$Mw) zNH6-$L4+$|*BDkSw|sU}!mgh6PqH{-3qPh+z&fz@W*2r+78((}R$x)#-Tl&$eLqOMA zg(W)AVT9{T^b=(NCNQ98+i&> z*D@@S1@*#LYeyU!ZB6gbLh0@cv@D|$>KYU^{RE-u-v}=|C2z?syjkaHqi$sQRmPhf zYscnJYGHk^H=C4PktR1g$ajQoGPZ?l`9c;qE4H!GxEO8q*+kle`$dDZ=Jv$K4?S$c z3K5YHOsh(mgC%Tky51-6NV}Y+stD)~8^zW@=t@7|d=UQY70jIr?$E#OX>>|1`Ch91g}EA9Eq> zTZI*MyL^LbYSWI>XxlH^aW*sKzVp-SY(x(X^CiR)qETcvIvZ`DP`b)7-GH60RMQGz z#U(GzPh5$0*{(Sb z5oHzwMPC|*DVr8vOlb1)PnNazm!w$}gG$#pKR-s(&D?1~y*|Qrr;WW)cd5JSUvwl^ zQNIBnD)lq0pus`w1GhUG;Upe2|=BND4ZF)W6Sa4wQ7djmh&tvc*jk{slH$QhDcMRJ33q`$* z5CCco!&d02V}E^YSMN&g-x}EeQjzSzmkum??`7_fU5gj&=M)(QWFf%9KmFUuB4c&% z^@FbUM&eArKvIverbk=#L~9960!cWegX2Jn_}R6trM#siWP3|LlH>Hu^&Ujk`kNMj>@cWyo&(emZTM`av9j^sc-EHi(hn~F0 zn)zXa(8Ca9Qw>=)Tk%Z8r;YnuLO><-+KP514QpKz6fr;F4V_z;=*-t;r^uGj(U;4X zscw@eyq%ty?pUZYKl{%*!$Mf^6j|uHO`Z_%pU)ZCDTz3e09Qd%)wlzzJx>NT-L}k{ z1g(V%Hf@y0q=&uI;Ook2oQ@q0!wzFWo>a=d+XM_ZyHC${9>#6@mO8@R0E(aACSah5 z-)#bh-%vgaw+VwC8Zt1p^OSb3_+6>D2^hrqVowMe;cP779Ak(cm~+tKikX+8o+D-{ zsGj6I`1>axX{d`rBAv+*%q%Y5=HZI&heT1!p!4LxrZQ;&ieKWt#^XaxkD>V)>La}3 zaP{C%2P6ysgo(67fojf(LNRuA#7Ls#T{<_z%1r6NX2qG6-`~=TUX|Pk4E!ViJ=Z&= z&MR^XL)WK`k2qSBuq6t7odvH)i{rQION-sf!AP088X#(*2jP?_M`2+5RP3X5Al zH4~e<)+g!NJ5;XE;#vS2zPSU`C{X}R$VL6+ffT>-(2I6B{mrA?EKnartVn78@q;g= z6s;P5NqR7yr)AMm@~*C&?!UyhOK7kcem0Z{s0|Ff9H>HIqf5K*D}&25r-WFfQEO<1 zB*LgG>J`H+N;@@!iDcUe(YbwOfY!t&XLCoiSRL6YP-Wl2!A|IG*pZvdS^1G(+jB7cj2^QJ3%wh%RL2lHir3SJL1q%G4X4Q2ObyOl@W}w&i#M976}! zr)B|Xlq35mx$8fw+<3{LVO|2y$m8gXUpiSNkzg{C$s!kz?7N*f^7RmnNuZzmrAz)Q z%JesPhgMwl?|@|UzF&ITUy(8+)iH64mdCsWk>gwbL`(-jx{&x-*XLuUEZEOhFwWzGpI*L}bifQI|x05wV!0HfyG zIEjc(j8Ez`pnNT$ZfBjGC11B(7=LY1IF7|D?nWq={7VVT{n|{ju6@y8m9^hoFr~c2 zzDtB|=b*ER&hny?+VD!Meme)XaOLVt|0>D!H+SE%*;bI^ODz6(w4rnVQYn_IbUKza z3_YNbUlqN4`1~5|j;qsAt`yNMK5;vf1>0Qz|7K>gzsW^L%RP`z#>@-+STak>z9GY_ ziLWh-YsN^*LohlnHpBa~nkg`z9pS&mW6Q501)_4t-6-|vquHB$pL>s-lJRhR&H+E= zZSIo(z?L9J&jLP5>!=rI@@ zEcmZ}m|psFz9i|F&%3CH^}DG0l~2+4Bg%KxuW)>x*Ur0N( zK5J%=6#EQ~!AECr(!sob@NH<%Cxk0f3hEJ32jfM19HcZu)3aCO$w&vt`MOu28n7?le?ekw2?mk`eYBwQl^aN{Cu#L*emooV zl~-5KT!xi>ugZqa`rT_zci_a%T1jX&u7Ov)>A(?t^>k?t*gsuT!e37>e);T#zaFiZ zO5AXprZ7n>f-uMRrYVfM890Q}eJw_w><+iC?;`g$; z>O8IDK=q_~^F@12b{cLZ6}IOAlDNw|k`<82_AtW|E`iX+!aC66Qq+12ZQ6K_LRY5N z>y@;1EbgDUD^>+u?jZXO%F;=LHFU^5PUJUOQ%37e_h8vQy1zG*CR)tRA1MSS=bmH` z#qKV<_qDMT85kf+W1<0vHAHa~B^1!_LYylEJW;^9*u5-pMakk}0aGbKY5iUl^3-e=5<1+EgwY42zi}d%05QpOdXuRw3mk1C~YlxDI@DJvBF4fWfbv+QELG- z#@B%r?3NYMT#7o|C}4Ck*k}9i!;!Ry>qPMM(xjP5=*W{B1h^#<-i)1d`q8uTPotCN z8As>Yjc!Lr^U>l6Peqlzg!jVPqh`@KR>qq# zuy!c-SZ57*Z#RVptqZqe`C+<5!;jMC+r}UrhZZBpU0x=JD9@M!eN`sG!g?8|4z<(Y zo~Syg(ybD8&OtisxPmXy$^TY@U=~RV7uFGp{EFSuF%&N}UHvjx`DCb|F`a_c!9{yt z)b??-dR^gf2Px-o&n*{X2}4ZR5`Np2-Kj8SM>*Q=Nw90$L(#j4d?t^@v2w7MvQ51c z&kllNI#0)SqiEAOjuhwgUR|Vw1@<~^u@vY~@-kkJ5(=L}zYFi3V-tx-sraKPma+n6 z(U&AyJ{!J& zMV^gd*BtDx(?cWQ;mP=P6hYRb(Lw=>pU2JH#8703!gZ<{;qq-`<*t`B4+5C$s6G-5vmJZ_Q`JuY| zw-MdgVRl7?2DTv;*%T$OO~pPhMS?mYj-;ju`F$R$3%pDne&p-VvJMnphNDG#u^m=| zw8f4!p+L>`FUmi>7@sc26Yiu6x!SHRn>W=`?DdlSQ_@~B^Pluc<_BP+wLnkxI!6bz@CFWN)rt=Et@Ml{Xo8?+D)n)}*2d0ga`R>tXjm{CR zU5j#~28os?jksnVD?<3a8=s7_)T`d=q(GwU-+26%?(6wxbV?~bq=2=w^%Ii3()3bZ z#BFHgVlJkq(;rd8Px5kN{1mU%87oZm3^8SajQsh8Z#H_3{dk18mJ?C;9toK_oA?=E z*^Fqv>kXubKl=mUYxjG-A)}<;NT>K+b;g+c6~#QQHd-}#9Hp>h)|RGuW=tL35H6W83PfXimN9F25y!Fz5_ z<)^rD{_MJ;HQ#MaUrU-XRV<%M@4C5L$_G?RpA;1gX4*ngFnVSLQ@I&Ro-Im%#i@P*@^#=BIi|CRT*aKbS69>+iJc0tIA9*+0k9TQP%XViW<4FJUBs3$I z!5)?Xh@Y+8#~p2Am^O!SV}mq`d`&z>#9%*;8NB%7dEQ1NBUbcLDGGXqH63AHl!s+) z2`6R2M-WLF?%!yynC{l!M#XEq4hmO)Ya(BNAL1GQWr}eS5XgZbTxW6+Auj!G42cog ziWE8C|DEm^pk!c!bz^Mw?+0rmb@lV8fH#DuGt!B5(;B6m44*henF4!|g^CJw-e`C? zFjQU1?=9!)#x+9m+5(9mPr$Eg^9?qd6<}Bg9=7~J8p&Q&fvfPSFDWy zLPOI%qPO8o9j8Qo@XNjhWAw5|)bS=GgCrz38Pq(mNiPfX^35Z~?4YiE!oI6SG|efm z!O}70rsJD&FtUNQxo^UXTy?vnYr=r~fLk|Ojj)>=uZwUG42tm7kH|DXcMlpS3sve8sMg00~??e}9XaV1K^QU#tHEscok*7dNBf7*RE(JVHQ7~Qv zXG}E#&GocBl$sWEvZ<_pHyt? zFo`>l-9GT1&QB@lP3XH~7JCA&D26x6=l^iKaiho=yKPMfi&ur@6(zLmixK86P-*z5jfHbRqycf+Hjlz48V#dvyyL3&^- z;9c-L96QZ$Sa1$LP2Ly>+P);IhG!NSU`%;XCxguzv#L%(wDg5LY(ql5X3ASIppJnI z9C%;CAt4Br27eI)yo5;7DJ6ZLHkU;yy;^15MWFZW{FF{k0I6rgbGWDJ6U#lBy@-pm zhK6l3X6dCN^d4Vv0~osfD_8#DWn_53eajvR%bbVXkQh{LyedE#>ZoPEih?EqC}_Wm zf<~y|p=3+J=J=iQmdEkz8TauA>FL4=sq(7X+J3knCu?ElRvT>QUB{^uY4mUF?0oS) z4H|ph4xZH#$?ueQc(_q7n4;xT`Ml%njI&;6u+dz!`ozjF>HPhu9MS`7KU#oI#uV@s z<5KxZ=CS{i&Op?O-wYHvACaHAl25RLM+>9wSFjTR@{~#Mcp2) zYcZRY!pMQfFf3D6S?wDiK&GF)5 zg+@?{__RA4zZugd!Umd2sdi)m_D@&6FI7G2x98MfbY}eJ&h%vTa_gsaI_6N9!$)KT z7L=^f@a<#;`-AylP5JyQiF3X_oxU2LmhdamdNR^6Xz-k}@DLln9iCo{fcLsg+y@k| z3Np><8pJ!%V-uyga((qXD-!D9(;y}cy1JmXQV7wZ2~vqt>atmma~QHWuqL$_pFi}X zUCtALfTkW8y|f?i^}Y(~{otV(Z}VLRZ^8Kbj%#l(X6$@|LS{B>PRz?oK5?g36^ zP^Wye7#dyzyQ`n-psUfAT)2JMt)`ZhzIDe3C~%fWP>Oh1BamifO8`pa( z5rNX#BdJpN0Iq6b>+ViK&1hJHLO#7E6H;UKDwAhxd*ul<@gyR2I2(>-xBFMCW8@A9 z8#=VyfdS%pL<=2NBi7i2SMW5YD#7w*FrCOAUW)r#{14=Z2s)x{by=I3N)GJU|*K$W)dk>P(RVVkfFQU?;&ycNB6 z@T3xOlzBY~$-D9JG-^cLw6knlU)HeseB3}(QxiW6^)tq%^W$AVB3!gEor>0tb5>EK zyOkCHilA!1BLi|1t^1Hg7+1QZvzH3V)_L?|$&Dqv!nJ(oX`f?4`(@C#juW4kRaw6F zF{Ks&_3H9)w4l+<1{DsJ(xqkRlq_yW0n?B*=H>GVZsR?ihF1uuraD;waxgbfhUe7E zOMAo-0S$?!fO;8nkZ_EM?Oa(gmfkaZgW=V*pNEGh@RoCQ3xjN;>V1+nCPTCD|ViXC_-$x-?xz^@<*bvkF! z=ULKnH2xhy)bqF*xeiR${yP9zklqcuby#u!Q!vzz_^a1d7gTEI_S}y-wcuBWoYCI8 zwoKKRH!}Ij)2ZAWn1m+^>XWs^Q#sZ-E*(sj;kMV&+#q|V4Dv%R)G!1|I*7zWxiEZ_o9ee{&%IYvQ~=fFDcmcYF61< zV=Un~SFhbQHUG3e+y)6qJBb@I7@in!LXFYaygZkoTBb#5Pr%7JPuBP#nlV2_Wz=4t zAA(0zfWb$4wArua@?l2Ga>OyzjVNq1rIe7K@wru_ogaJAboYzFn9jstZC4A*N{k|L z_M6e;mImSo-@MAq6?UlnnGW(Jrk}4DfZahl9cX>jVUt*T8R<}636XWcJ`nvVHKt?U?E-&k>0ZQ0bh42!vjde5R|#LzuVx_?9lhy55v5q5ibESX0$-|$}@ z+9caoS3+C$0GOlnfj_&Hwx8|D@>8=c)<$BThWT#(EEsKaA%^MP!dR`(bEY+BQ+ZE8 zMe}E-kwJTN*r=30vr6ZcBdR68TIbGa!Ic1nbDH$SP6p8r(R(l=F;!mBf@$auQ+j#m zlmQwmOmEoiGGMOrL28oeq4p)}6wB_%D2Qu{uWO35X_x_~%aKgHRR(5_8;1jpu9m!O zy8e6YjGNHN0HO+LgeYJ!+I6{THnNkcZNEn9a&+Z&x|g)%Fs20B$qk8{v=aCpJ4|VX zYxgxfk_X3hv^x!ITHobqshj1VW%qzDDLBu3SU%c?Syfu^;O+F{^kiqc_yz~ZCNaR9 zmWsyo`C@#U-xoz){PNq;?A3HWUc7%gdN(?i$}y)ni}TSK%cOHk-krTYrnBSpOol1u zs8HG@zz;%8irSDPx+5AZ5xsC;_DlVRR9_DssK(H7_jh!N1hF657+$3yv>^!uJj`&uPk?ED)Gma{_FWNSscuMQ zHalPhUW&ErjlZA`v&{~xu&EhW;4IJsEF87eSwks+Sk9pZe8Q?A{!xb==9lf=ua~Whd*gswm0byMqUV&+-PrdRn5Qt4=OxFu*VUScl*V!*{bemL6*I z{(}=f&_)+UrPg+10~qa2PU#?ba9I>Gh@|u)qlJcSqBVPwH}m}qr$65l2_F(10kI$U zyd|h_J4BodcX+fvWd!d(FstJ5qlC-vaqUhG%Ztfn=uLa1H?^vm(rYZEBIWB2+k32< znLkkU)pg*#Mmv%h<70@7U{>zwO?e#3BXj6+dZL**FYZ>L2+2l=r>C^LhMKrj<-N6E z>D5%sgBu8=Rg1u}hKqwG&6|-`){+Ve`cCMr4KoG>VdC@Bo@FwQ`@73a-@3f1t9{chZ|ITtD>%L9;e6vtZf|TSH`HW# zQh+^O-v}^MvtlGLZ#`{iW1t{R1#<^jYozv5>#Z-N#q1l~P=nT3GP|lHtPQB)gjLp= zVB!i#3NFvQuM|d`d(Mr$b%F?Q` zT#I9zVB@?i^&NXn1QdvM7yPbZ`ckZ~+d^@*>UlNgOmkL7#eNd1?FIESFCn(t>{3H+!Q_U?nnX&3e}? zZ^;}nnMmiGMh!}l(JEBPc6ZKVykCSPk3z=iSrNmOX_C~+x6$~(VNQbIj;4F*!jvl? z=<_95h=GDS@FC2lrL<9W}&-$fxJ6*C;7sU1ZZepnKVZ?cvN22Vjv?5iz zxll)6fPR!6x@=Azl|3>5f5uiex2=D?XG70P7+xwTe=k{h;k}Ipt}{_&~lZA3`SR5B&05*78DL4id7WBRqtvjPo_mp z`4O^ri#Z%^^O|$7hOzp>!l(dyETn>YEKJ*YFJkG@1 zD~>gjwk}r*X?Z>Bv5tDRcxN`8b%SNQCgw2A*6{==$-{c>`NjG9bhempPNtLhXVVKI z4PkVu2NlFWG}+V(x(`WO1hsM( z2N0lrF*VRAG(V@5Vw;mWU1vR-NsZ*uQp#_z-5So?oUypxCm}6_7H4_jzPMJ-be>9=Krn}}+CY28Doed`^Vdu&>)8Wf_!td$n4|J;$QlyDt zEnXhZMk71zhu3k>h<%f~MC&qdczrS9E9q(S&0AS; z7%@I0i+nx}MEZxdrx&=DS0|j?Zzj{(=wyHNX7m#ss~DdQ7t>j5QdxA9u!cwMVme4+ z2ku|Y$MQ*JRDfnj)L|}&U3rHAem*k#>89Yw%Ws6wJ>Gnn!jNUv^jRaIFGOKR>B$2M z!J#cN|Lt*P3i^2T|%&)SMcxWhU6de`H zmq!tpBAF!#Utgmg3gjz1qpecIH#B3rH@NeBGWzM9bZK-lSWJHyO$Ptv=l?QTAD$9b z*pfG$(DLhIa5|oh2A|)#%iCM3+a|&kAz3T#!RPfC-_u!_*F!pnLVvNpi*Wk+XS$5! z&dZlS)4w~8r{IrtI=tJ zJ~=rZX_>IwUuYMEyb%nDr8@W7{V*W#H>)|HU;xit$0lh9FR# zfO&V1-&2W77I$}WjXt`Sh#JO*jbo6Tw@3TGe_EIsrS3SS2eih>g;QB)x}>{?Gc0;r;*Iy#K#HyZ=AF|JS=O?tTB&%a`-t z|4Xibj8p`7MZC%}0u(XZjYs8}h)cV9j~(r@5yD=4PF9r9C#EcnayXkA3@)950Ug3$4w=JS_xDsATNuB>e(oB zB*cs%Fdw`Yd64@fC+d0-8guqZgLiOm@Y%h==g!EijV6?4KR7CT*Z@w0I%+Lu;uC~% zlg_}0Las9RaveY%U~`^dae+Uh=5tzgt0HheQrTdw8W*$ii!d*Op|1xzMXEzFGo-M~ zci25@S(F`nQTK1Sdl;07lehWBX=#=%&EekxdoT0tYz zlY%8URa}K={IzBaQ1Yr!?Yf6!(g=4bMD;T5W}?(>;E}vT0O<}`61L6RZ1^4~Nvjpo z=eXdiya-}V<_x@}T)E_u$u;!`_r)FlekT-Kb7E&~kujXa>=9|2m0@p*NyxQ3Wf9PKq)@q{u~;ralal!-568p8O5;uqJ@x@L5b z(f+O3Y#IVq`tH&6^pvKaGzXyI7JsE1VTOxgkC4s9oWkU_L$uN!GKBIp{sXI4^x#j& z^Tn5p$%6qP(5&~>`@!PvXgnLdru12Z2}Pvu$#i#earTNL(iDUnP?Q=IX7%z_)z?tv zfM(C**W+V`S~)d@89z5G19^RdvPL&_BA3ba0OM5@T3@>wNXG9job5>eM4NmNFMKqeydJ*+pX+eic+7`%qD4gN z(U7JR_4>qjnOzmyJ|Z&PC8V?{hZNU+mQGr6d_WLAav zXq{Xv?$NAdLD9`hcQ-64;@@&ZNmdr>Ii4@xEvisCuv zP$Pd)s%Idj;1H z!tg<)AALrjFxJ0V8?w&Eu@-tSFpH|5z`MdMD zg5Z=o28NVR1xWC4Gu0&*N=BHtI?c2i#p+FqhlcssbfKdXdx=z$PT_U6QLn_Ttv43D zPHD2F=kDNN)iISKRXq#*60-eh6DaaFdUZFV(;gDRkc!k1UeTd7Bf zQf+GtR`r(1R#t?xO-#~_siYR2nXljK>-2zgmC=(MB6RDvIrLC% zI96kD4KvTmmWJKQ$!z%S<)iUqy2~CDPWM$No0Uoj@6TS-E-c=6F`dv+RQfidxclg( z+`xjPjBh9sKYut3^V-V*IYf@;gApz8V(-8uklCJ`Uo0pOG5yaHhTU_Q07FNg0Z0B^ z1<=9bJ+UY-kAGYOo5RuU3_C=nYV@<%s2|ZO?6>3Bd5#iV#y*W1u49eyS?%eZX7H26 z>kK-X_apM`X#3sKkK@JL^6lv;WM+xrf1J)vex&=nr7XpbXhHw+_WstR!`=PA9UW}# zZSHTb0ghl=Gy4s7qR3P3f4rs0V9P7WRBfMmk7ZzOmsUDhRD2i~=FSn0YS3h2|#tVE*noR$A8Q zqtn+L8)f(1Mfma4bBeAd(s@ z5%=xI_sG9BoBpV;>v4$%?6Tw?8LS0(F@S*DnBcvej!&|oj?j`kMr2^Hd?9x1yYb25 zt!kh!DtYtg!8#bLW{(n2@KlehQ9s@vd|`~DRn(upVFCpzFXfSGT30k*eD=NLtA*Hs zH3!w{OCGjfBLHs*MFU2KQb0hPWhZMNG4szL%nIX6>hZKp-WouWSzDfGB?SXf5qydt|LZEMHFye*1V}!ck>o}Q$=DKLK(=M!%~Mn@pe(4O>mUicJ-0Cb_w)VO zm$9#BZeZWS_r4K%&Rlgs*xl39)ooF=RvscFBO)UrBO~7#R4d5_ zPA<8-*0_I)GZzoVKWxZHi=K`~7sJ(+l@l~SK3Z<~&sT=3KDfWg@iMN4D<6OI$%l8t zUgoQM&sDXvO{AzP%V9erfKwqNKKzc6StJod=)u;DK1nBV0o1BAi0;F%6wa)pII|=# z-aP2tME|xaMu(iHEwZ9-6)Xx$)Kz-1dB58`?mzrscz;E{AUq27JqfU?Cj)87jN{cp zmkk*uz{25R58Ckc9rPk20!);+hAd?|i6#Nh=a~TCyOO4#(>882995zuhQcyZgs}4u zFdTyMO=L-=SVpOA0{Y)YO|2gw!@kFI2r(M=YX*t-)$KH^Kqi1nxsZ-VzFTo@p2sIC z-HIkeEyGozZCtDgZHur?=o|968t7X1);~WMp_}W%2AT5P-mnwwHGFG#N;<;$4 z10zK2s^rA5hMN%IuU@FCBn`Ay)UkSD-Y_u{z`B5`M?@B?7(P+|g6->xybak&mQz!S z%cz8KB`#yrQ~;7JT&6M8WdMXn7}PEgN~lJKAk;L!{iYi5!pREx4BFkGc>x(uW`GhF z++GEO>d z=vrv+F25JJ9|mJB=G&hWm@u|$ZrsIV@uXsTE1QRi(F)PD0h?L!27{H|XG17o?NfwY zXfI$6cTyuy6W4Cxghpbxt*(BzvHNIyZ*%`84B_49YtL34=MokC7>1BTRu7o{#&X~4 z>JwJkH#K9K&6-D8YG22XrvahhY+MBjQ#J1I>R`M)EW$Ev0FO5wy?A;>@LiWPjlsBO zr}dQwXcchc={69cI^#7$)X;a_x^Kq3j;ICXsT2)2v|Qu?TRtEz!`0eGx&&Eay+?0S zw)_;VMveoCW5g&AJqoFqRX{z${SfRT6?YvhP?I5D>%8GT=?d#`R9#@@xL0H1UO%w5 zcVwEVE@r|kj(>NDr{d!HL(pmaQ`BEEU7tA*Q_e=+S%>%11!1W}(FRJnAS(MsLs4o9 ziI=hFojH*qMbwR5Q!og2!5x5%rIPK0=dB(BSO!m8^rBzZ)g7Nz(!>6s)f-a3u}2lN z0m%X6b-l=@rZp*2>@d5uj)xwB;;b^bB?dTy#-9-Or!H|< z<7h2ANIvm)$J%Cko80!Kzuy;`4J2%U_+f2!;PpfVTQ%SoFM>A_WfcOnu6u$tQF?Yp z1r~Vh4pV;4V*~!OF=i1W||8sFK#@VxKxq~524EeY>vgN0sxo6!Wb|iSNDS3V_ z!DNS6qYk;7b~t8OSz4ysMxK-IdHURKen_H(h7l=i7Z+z;#GS)sU3Y-hPLe&==Y-L? z*Q;u-yM(xqRQtP9Mx|%yx#bo`dY+ZD@8-4W9l$yf6q(Yh1v3<5;rCdimHWdsU!4S` zeo{Lk*LN;=%N=#~L~$gaOFh7(t!W?%g;-}S_A?$*or0u*r6R^FcS7_>#mcRRJXdaL z5OHN`ppG~kD#P`l-0G0&EZmAQTdRaMU9-xq6Xvv}jz3ic!;K_2jxzTk1T5kdq~-`o zoH@7xisuELH3Z3%Lp87NG;%7$&QnHl#>EB_;~8KRMeHd_L5rqe!HXUN#9(d#Rq)H? z9WgUx(vO&5S}(<~)=!_N8+b;6jxk9WNc==6i)3Ln?hv;uA0ay{UW;H>t$mp_lOvw> z^QU>mnu(F>HSe-UG8VSuj%G2d7EYrKH<;F}aL9+!e8!i-B$U|7_K;4z_M{d~D0|a= zz+>tVhKubkAQHA#omW4ZGrTaDd}R0<57ER-p9DP_LbCgU(!LD_?jyUuATPMQ(K5R_ zGDuh*{W_sc#e)*I6t{=-XjJD;2|r}|E|b0-(t=o*i?2mV}`y>8mgjIE!H+G+pI!f za#ca$PKX7W4>@U+_pGo*jd(5);*O;#Mv?B8(F@O0Fsc%l3Z!vaC=(tQVmJICxqW=X z0Og8$;$q25FP@Zu^te&~nBl{_Kb!MJB%@vyF2rCn6_aKCQ~NECPqU&O+cGyo|OC?R-w zBY`L>n5GHp79y&MBja_lk9Lg7B~al9#iJ`9au>%fR1*yaw}0Y*st%*eyk!UsFg%!c zt_cc?*+gUo-k=~1j`&5Z^3p?`Nz_CycCs9l7`@DCGWzKg#eGvdMM}Ts<{7cqAVs*k z7H2sU0WvS+BZZ&g{Zr~~MvJ!0{gfJ!89hq{Bx&SkZm*3y8)hlL@s4@uD%?7T8*Qdm zKy>SFMMm$$L-9)E)F!x9RtzXjCeaH3na+Urbi(Sm9>m9UkCWyQ6BRUvUje`4S0Elr z0@N#+j_rfi6gZ)hgus&VDXloQo5N{E@p22O5-h)M%4Qb{&irvbsGsFpd^OG8M_7>LZ>yiUOF!`*50U9 zsWh}kZZuL_heE`u4cLRCz&u|dxTq~E5V)o9zWiyCPyIbd&5SEt;WWyH;A70&rJU~*T?kZ8krFHSFThNQRLADpbf z#vLr3jJus`rPIaSA*KrJ$r2)ikNRiB)U=%ePcM25>fG-`tZ|Q%wDH%%hN3(x?GFAm z+rqp)JadgyE3#(3FL+sA1x~huM+oIV!{*>t)$hfx z;y}Eb>Q|^D=jCRpXHMPQgYLR0m!V3E2AK^k&PYu-Dvu+lu*tsX;Tb-0ftGQzQkeh1 zA=yb0>0U}JCM!hL&5oQ^f7~5NI*ZF)F!reXrrK$ZPD`)_F+yauFH*3<{moosI9>CcALY+qAfnvYjp>$Fj)NV}#|U88jHeYP^FC z32?2J6L-KPEnpZ?E9CS~5(9GESkSfKfv9q@S)#lcd?ZZcFdmCG8&o_!MH-6aP z*xEz(5Sxa?2zSGoE(MACZL^P<(_Y#W8^?l;1i=!|YrL-};8Ba16c^7nzT0@lqG#2c z>a0}o@y3(27ti(&ZOP1WU;t4;wz?XX*99_ki!+2+C$GlO4G%d)3w&{F<5B;tPjS1W zaSfD+g_Nyn7}@0dvBxC|7z;x{jl*SfYc(;AlPigmHp3vP-`RsgA!J71QRM`V3MNT{ zy6VUn6O1j4F@k2SRhIf*RFOkM1#zTm&J)rM93OZX-ZI%V)Hg%|-tnMaK|AhLOhJGR45RoBHu*Ojfmq{_A0^TM1^56|G zpj~u#3|@8f`YxchylqHf?CZioj6>MGj(;MFMC|of9Kt4v;{k)#=E!3o!g_Lkbiry4YXE{njNN$|M8?1g8o&5MV|v zw1=_D%qx~jA*2IK?xy7u>Q5@1=|C{s(vi{LIq0MEpjGm(Jwpky8L7Ud<9iFrtE5ZY zOasRoO;Q%w3q_0Owx7cM!{+P1U8>G6MwcNR)5yV4oZzt0M-~@=(Gw`_sE`!K42yIj z9TcZQeKJcD7GRKN#7|7>!891Jghmoz0zI-zXnr>LPC5a@+CxnuBP#Vq-RbSeLI*H83`I zSvyEpYAB*>XI)SQgBHu1+@`r#ss;U0HGi_^x-6{ux*3Eei|}#=hzZZEPfZ30YR$}b&#-Ak;y*@trcrGjYtdYNa+pP zyzZdVR1)@d0AD_@U97J`k#>vGi1kHOP)#XB@e_ayDWYlIRCfGTZpkxeM(iSD{aP}0 zCgs0Sd$B-qdTdF*x&<%@6WS6{XS}P$uuQr`Q!bxum-(zI3+3`P++I_<(KJyHZWzlw z`1*nn9WM^($L+t};F4~KG;w~5DnNpyKUufHA}$t%i6B$WhdOz%3Iwg1zOagv|xWrGjA17P6 zC>CK7zf07M$AUln4RD2Dp%e-z$X$|`4RF)q0AAC*ahvhuxERVUTi8xXxBrcXaL)@c zkL1bhEELEjiaCFzouqSP;tb4olnH2ZaR;IWFE(HH$Bpwbd`1_D#1mb3X~|;Gv8}Nj z8?CcGZhc1FQe$bU#DLkc95e15vQu22LmxM8Q|&F{E;kM{#JxICAT`4+b`V?M5)>A( zNYzytDl7~ABc^2@Rge4a*VSP2oLBXr3FP11MOK_wO=`0HYg>ogkM_2oZR~FxKHgsc zW@Gno^ZDA-4cuz=<(G}72>3u^$!rxHhHPx|qS`#Gl%QJSD{cxl|LcGMA7pQ9G%y(l zO&CVwAyxKPuVFiKO1BOLnF}$N<%ZUi#BZLmWT~0jB}#GX+tSIX1?!LopxM!b1rC?% zpnu-De|++wec9?gJUML-mb?8GBhl^O`zsH#Ne`#2JYICp?F|zocSKVR;nlPWSHs12 z=8-rkr$yTdApqw2dkJfJ-qoQR3%j_I%S2d%J)m&XQMjr|Ic-Q~eel374JpT8RjvyW zhaFIH5Ee|;hNw`P`_|#A2K_K0q(~fWLBYijZ_;8js9nb2RRL*Arq+NhgDJsUpzzd* zivVEHHQ`JG_PuKGrrWMGd6dsM8Vm@9mOr4^F|3(RFc&5TMp8eUR!w-3&UV~cwscQr zCKpk#LDvwiet5aiXyfJw!<*t^(;(Nz+M8DQjQcn0&+;YVhXUgv^dK1w&iiYY^hLbD z|J_CpQc=Q@7KTr$LWOu>%sj1R^ZQpP#>vY3m<7RJ=E?GRSQ@(;5xEe%$Y$y1hn0T= zvIB&|C)^3D~qF~7x6+}flyxu`(Y(bH4o60>?M6~k~H5+b*2YFMb2 zuNRJt7i!}jc7cX^F)LMAdNCJ^z}@kiK5kzp8L+@nXqgLFwrCOG#l?2d#HcSj_eL&v0-H~pHBx~N(9QaBqV$0@!CzUY=$|8t7;&u>xBw` z)u2zVh7_|VmCmem%_wwOQ)D88wOCYl8W2Ttm>TMq$;7fn^pJnxZ1ddeH1QpczF+Y9r0ADcB2xp^#xk@nsK@M!W14<_taLG z*V$5kRc$WkHWN{2&$SW801ZnI&4!mxb>Ns13|bkK7t$mTx2vrc>kxbpMQ zs{HusMgr}&-Yz=1^8z<~k55iVSQ6!k5?Bh~KIlOF038|+gEYC=Fj`RGvy(>di9?eX z&~sTOnV&(D6%Tt|sYe@iN^I+pc1(bDxI$O}v9AmL z7VbV%rdGqU6|Mpk>rSh;&O|1>L^v~OYkR%|CD>t-Anf;el}cYY@`#GpQ%P~Ggf#AN z`s5cInt|k`o&}afV85%aIe`|uI$}{i+Y*#}qgX#~O-1#B$(|R#7x^)lx-W}E!NJ$y zO+bk(7dujfEmWjbbP}rcR0vUTM2C=XSmn7fubM<>%wvh-7qWo?%MGX2L!ZGN zDo{aqkBS{G6!%0enhm7FX^rMSq6K7g+cZvCWJliZ(L=QS;{}5&EzQRWG_ss%!#7bG!D*UF$(NgF%h9jp^TSi=(eIeLCT%TVf!T)$Djr z4&8MnCo#f1h81!;owh~{ZaL|5#`?X#3#2Nh}5!CozSvtM5f5O7|;p> z!z^dy;p}pU)6~f9Mb~@;W4d-PApOLU`6q0DbY~${6i`6FJf`oV=peY&__D!o{pEV8KY25wv-NI|7%I>fOnIScGGOq3S{g`eMlnPV^U#KpgIJC!vE zydGy+T@{3sg;KyimTr@2a>iZ#QJaFRh#*{Prn004vA|@zzdy=j1gqq7N8QZ@>V$-! zg>g^vMA7U8ie$w|ia>su{8y=d0#%0-6(`<7KpYb+9H%czYN_yWUKDv)TD?crrY0LM zYqUk+Z{N=G&4R+HeTgw(s!H4>bE&t{agNuBzqJ zT3hhS0F)4lsd8?Cghgbe=ASDKxTZgnM$zQA9bTz3toG$Oj;Y@E(S{z>?TvAS$3C%t z^YS65q?8nwMtI7QN%Xl$+It5d*%)DG_GsYk2RzBE*<`2~C?j&2_rJvPdk?CZ?u|CF zSEk>xv@b%)Im=?%kxMl}ZM_kqe#`*{Ye!)6=^#%zQfx(T@@76~;%NHppjl@!4mIM1 z(Nlt%WRi;cSLg4=`krksjb&aXx7Wu$lA<%_H~9HzlPHwuvYxCK4=z1V#+| zX4J?*b0jBZ;G$gLY*f8B-9f*{qnM4$YP5_j^{vasXxythe=2eDY#4?o=1LgmAU&34 z$P^9|q##MZ=?Duc6Ok)&VA(-z>7-0RXI+r}2hyqRUm#G=CppPe9*doI` zBPNaDoYbh=Dd*np_)1(i36^Q7*k;i0L6$W2}V>7>pliUzUO01bBmXA)i|XkzI| z`2Of6m@}7eW|ZWEZhN>b>5?4AE$nnaO8Dw2wzfe$a%dEtfRdPb5&sRTEDoxZ>fO?S zc`(4fMsA>g|_ek5WID^UF;??y<{`zAmgT3Sw=|#&wC9@EwTNqNw9Ivwfa6);)9U(=c z%}MEx7H+v35*={3s;NjmaazO^Q9b?HOgi4Ej0R7F!)C0S7swQcx&WxOGiw;d`jka; z3W%iY;*p=|tdMYZS#3;8f}*qILNU!tTP4|9RxWFNB5pyYZ87BDk~^>b96Ve)U~i+sHV};B~wGOjY)So zYCB@IGn*J}r4Sf z!pHhprzG(S2V?9z=LEKlX9ww!fZQ-I_IFWhxY4N~f?)ayWw%F%BOC}CKDY-Y@&wB8 zf?S!($32CAqGT1Gy@K?VdI$2a8d=F&^M#AO(0*escbp0B+l(d;d`LdHZjux)dTV#y=en8 z^<}pw-=jC%#7zCkQJ?qdOzO|n6HXw!FIn0qX6jEI(UvGrCFw2VdQDD5oYFwnj$+Ou ztNR2}0qjSo`r?9XWE z4S^$@z5UbbdAEZU89MG1oCz(QnE-M##&Uffh~zCQ58^F$^H27wzl?D;XblWg+o*=^ z)0!o!n*dlnjF9GO@g=J_Us53U>Y7!3|^Op zX-d^7K_O%)8I4lsi_57Ia5>1Vl0VHWCL@w+$+N6dI@X2gK~}tG>VY!?EXQvV|A2fZG%I7LeaP6L-^QsQaT*KFd*b>};soA#AIIw#mg!dfwkZ z*>#kxbOJz=vK|ZL@?c;%!_8ZEo6W2(IidZ}NSQm|CKQ=g5yo%)#AzOoVSoMaJ)y4U zChp~mF6{E^TF$m5t~t+bkan`%Z$#}z4hoKiA+MCRR$`#sdWh(KlRch;|07a~24mLl zf(Ny!66T{xPmlR=uQVV4c+d9Yj507KdFZR=a+9}h2k>)mIzT6Wnj@+c@4rB?Xyvd{ zt$Ek&C8J0<;{heO6KB~dHf`hs0uRa=LT&tX8r^2J?_wGuAM~jdn@3ly+c5Vq#vCe< z<}40%F1@DZU{33B&5JggYodqsTji&c1h9rF@@Oif;Y>^s7?y-Fs*LqwbETaRD(dA~3iF>fSfhYuX@FFfs5D$v!yy9}ZxVI#R zfltca&uyjYBy7Ba*88mAzra2nqEgQHu({Ee2MS7ILbT!@vx$y4!k!Lxx;YkA+;3l) zy8ZgOH#Gz@QcZ^*ZUuDa?zHmvxOr}#%4WZfaU{tFY(_@g2$Nbg)wd8BpEiB|`?WG1 z7c&9#yI8{eHrbR8(cPXT9xrBWI6Hh@U8YxkxwnYpFIIfhf*?t2$qq(Ryi>t$syfM2 zs3Fot{+Q0?{HgkilIObqO5T7AWI{O{^QdG}#)Q~g>;L=y0LhpQ3C(5mzm=Lbc7E5~ z)nHdI=TetVz4iFK^FN&g0~3cy5&YlFNq~DiG?&e-#@_fs!rG6K_m?@6}Yx_=)I)cRXQ(fOZt35>lS zMin=V9ugzF0mtJl%Z_qYzmIb_XvgMqBuEU}d{#XZN1As-W#U52vL8}H*{OJ`!DYwZjU0EiZUjKjMDB9|0|>J@I6$bF%&%t@N6L(&?~ zo(x^x{JM*+btw@|XgAU`womt!)ogMY(*xX?5j)U9ss#hOcjzvra42PbWXV;f$-ARbd!G+5yQlD2OjPkcYtD9{ZmvMAvP3MQ>^1fsT z(`&p!8JjP&YiKio;$(>gT^~{3)dPUHq)V$1nCq}{OH?@!PJ8D zWNXMYC14venPmRM(Qq6EXb)FA-67pwjXh{PecXw%-tR!DBQZ^{(;9S^x9ov{;WETL z&Wyul{{lIi<@q*lAa(&U!f`*tQM=iL&!yXWF*^QS1CM}P<6K#6e!aK7b-1~O`<^!+ zAHLXs^7-NBQ=EC(z|9(8HV*3EA|f)$!RFwv&?HYw%PR z0VE_?dKkEy3WxY7EkWt-1925Ps!D;9%tHbEL>!|OlbnllTR8t;b*k zDbfI<7j<2RZB6Jh+bN^WgnyDNvfaIkI?vzML69|_g8_D2ddNxXv_`y;-ZO_`MXnQu zFG56P_Ch4!X9kvvQv4gq9Q<}%jLzi_C$-14Jg?y}!T%}G=>h-_mc`302<8fH@(Mp9 zVNFrFamjRFythgvsV7o4;EgN(0*o040EA>ImTZ^e9VfnCDJR*>z1a*u%8V@aDuLM| zuj)L;G?WU23|o3%y`#|%odlX|sRuZ|O}NQtl%!NY<8gqN(kkPeGM)N+s&5e*u>Kct{#SGdKjQpH9 z*OlZj^_lpj#ym3~_a9HapxMYZ*Azlq=g} z)X5l_5&?S)8@rFT_cr%m9_qJ^#(i*}s%1h3nytAz!VOLnXFkHQ#oKa#xDSRqePowI zJ}~49;YA{hI>pVE?bncnJP3|#v3k#v;1Stn4|+F&y%0lpm~@s870I(*b5olE*CHlf zeaf)!CYNqBmfpBqn2|5H<8;XCat|;E1 zMYqmVO|_ct1fAEcvM3R8ylAxXI*TH@)%Sw22vVRJrLd@}{!u&>;M!pL1O*~-tR=u$TSeb%ea2Tucf2BGSQs3nmPORjZR}fm&BkwH4#J*{HsF2*_A(Gqz&m z&&K$)#U|U3!^q7z#kxzhL1*Jx=OffYX(2W5BK;DQN(von(2E`yX6OvGxXc>{mMGs& zD{@i2P!UvAO&Ro(sHUP9MFmAc5`7{mO3pSY6tapLBW43rPNcL1-NqW1uliePGzu^V zXSJca@#N}qXzB#bIuqJL5}{fPUQ6)f`dNQC9+-HbECkW202(e-`&xCUxDXvq4E8_- zp?)d1W#1m`;S@;+W?vHJh!~hQ4D^Hbi}5-%X|a)QnL^axOc7*msY{}ulzf$9i?3!5 z=d#A!q1+ym27n=~i)5a3QIvo-BFiEVOAc=Fu1hasCn!g1QCKVtJ2y2;O$^f?$qGH488Po8jm7`JQQL(7I)3D$> zxjn!|&k4}D6EAskrxBAh?DzRX1Xif<|h&yezV6Xm$p(myIh3pP+|z$e<&r zlQs3R<~MG|^`NvBDy~QaDQ&<}YbW1k$B<#U+!*LR8U{S726VY3G3+RMl>lK6z{?p2 z`vYzF-|iTy3S6~F0TJKG8oYB3Ah*OvYv&z}L2~kuJ{aQ`vg1@yFWC51kqVxXby77W z5JaR{dHQiK3|p{t)rDE^xWyayxX66z>3?>=x+pr0@)#&*evNmWL;5xQvX-H-3uwM_ zy8>6a%AP??0J00l*SAvk;JC5=m7ah2eZlt8pi}l&S5{Q08>;YzCM}UxS2ynjq8^ z%;%pb$W_z&;rx~C|FkZ;+-DI3T#|CCM@kZ!8C5r3c_$`;Q}#`(*hFkfygZkvS0kA{ z53Lj`t*K686RH_qqO20w^lQfAwsq{zN)2e{x~7SsrQ;C~gVTVDqe-jSbY^q)GbycE zc{nz=*u-vfOrIlFc8AKJNeyQ3Y?VXzn)$*e&cV#-%F5tF`IwMytXv1H%*g-*h0vA3 zXpw3q7N#g`*yMUPUzgNO6Ms#vYO`-SI=+TXECtJYs~U}}174gf|HQ`r+{gOr?euFs zxaKrj1-CG)dO#%H{%?|eai7yOg-vd)##o+QNo?1NK*v~F^m8~e@t{2y|HN%VBM{cBI${4)^@9168@XjV-U z>F}${2yh=&>_vM2ZyAq-7?t)6jp97pi460scrza<(1P1I(v5i0<#AWhS+^}oiY9I* z%y;;LQpDTc{1pNyp~rvsiD1;v@~nH_r87gFL(x=d0ds&a^n!$GKgv~YiEBwd$9SDhxg^4%u$l`A=CKV(Gp{Iy!VD4Wt+ThS%V7iVMMhB|8IKdE zK+_3ymIfAG(V`qqutx$42WcG1P?H&;xgdY|?m2=gp=KEv>T|#$860U3`rM zUm%eVO|8{c9C-i+c`nl01NJCMAYP4I?mCm=MEk-8y9t~t*1^FKGRd zw&df@17&=(KU(O;6*R{>K>Wwulkq?nXLtSX^nT0*P3s87QRracQ+Zxh2IQ-) zVxzyNsJXx)Oz7$YDyJtMnppG+qKo^3%NUGOjmKkE;VLBgIvaP)Ii+Me?2t%gYG$^ zBuv7+hBv7GrLtSx@XqPQ<9-`?mBvSGWQZ-AH#qZ^v_ILw}-ijghvks zH4`%-w^gNX7X9~qd^Sp^wpIOg4eb>ha^a|oPrFg(4+4T(im#AJs2mrf@h9i4i(<8M z@Corfo~0Lp#4o z<>AHIp;hKxnKa1gB0+KXrVhmwW{8Y)sS z=8iz0(z*Wf0;6~_$6z&hQ+1wK=OWl?7f*63UN9GuDrrcVC`wTfHPW8w%`??pZ83F* z2zf9{b~z8EDIV?i80alY;KuQjZVyS1;M#D~#+b*ot_~L?B0~ydGy;1vcxq{kGTK$0 zJl>#oVH4a%fSj0R=Mk>`K0^{R?ZLekb1{lJQH{?&67|n#TD2h=u70Wkvw2XCI>>5E zMS8L;E&-qm%qH0zGcTW>jg-WgD5Jr`*apeWOgF{l=oNPZI6Fe*Nu={E8pT|5^q5zo z<1Dgl)|coCaN5hdrsdR8f{p#YMA}CO4MFUh_*2&yb5zOv2oKwdkT%aB@bWaVTpS4^ zphAvrO8|rKs)P;GhN09cxwOBj!ulypcT1X zz_jE2>FhFy^+_ZnYU%;2AtuvGuHIA?}zP{*panomXOS2w_ z5YJYWB?yDQ<}nkzx?$)LbhrT;%m6{&9S#pa&s&#`A*QCmmAP?I4RCM?_o(8$2+UBy z)chDwIS;bTu#iow&W{lm5q{*pTe3=+;Yip^>xi3o2b+3G*9!GFB)F&)?7{Zy^sRAn zXiI_h@11Z$w88pO8-&h+#{64dMc#$>DQ~>w5-iSLoQC+9|F!hx!9nNttJlw;{`BR- zzjP7q^#Bojb&>TktxrlPVoa-s_SZNQZ?a6_sB!ay;mu{9nh1aiBkYMJe!Q15lfO>Z zmzVPtsUCT3mv})I`$PK2%n_AC0WgJ0aADkqg>we8W8=AC-C%*kN6O?LS@x)+>+Wxb z438El1;?waiJ}JDhbnEf*Ttr>q=BS+AAkB$K$`Hj84a&-?{4GuqXrfbx#81sTfL%P zyTk=j)$SK1Q&0ypi8o$@bfPdEY1G+3DU}FgNs)<6petJ3gU6&LFzxeIla^BRC*e_} zp{J6DHD+rQvjLM~(KcDBMmisHx??aRLf!qzNGvV$?5g^v5 z4-aw%y#tI(+#nwH2yKb!ZI;nh1G#;$y4#zLbcJ79QuuV6tg-%V)0`TNm*jwr7TROD z;CmwmBtubv_gj(_T!L;f7MS57y$Y??R=D=N)$3rRp09?aSt$JjB!DT8XSN~N)%G2T zvXvq$#F5jw#pQCp4F??a5Iy|saqA3I>Tf9+_hesU_^9I9=qMY6v&fP%Jl9VNBeZ?}9ko{gue7>xxQ>Y=a+BFLb0UF?@MKIoBpL(Vgj)8{# zP={&12FS!`)_Cor;tu4$YC@t=v0Uz9TL=qn^m`e3w3unuJ>+jK`IDZ}?+)92+#o<^{RFk# zNZzxwF!QT~AFRj6GU)XHJaOEE-{rbX29z!|CuN!x@<47A~rL zR=ugtUcl4@9#uc`c$mVxa_mK;E9xvI4KzU0s-Zp(-KoAG&U+CarV{hT0^r4mh-Tdm zLcNq@QJdzkyb61SQW_fR_^Z>{37v7>)QJS&0$m;NJBb2uux|ZECc`MAV^&cB!;?Y( zT*Vx45~ln?P^xhnnoT*prxy=})t6`<*J>zs^WD!v%zzTEmVR)9*=ky?mlDvrZ6$qfsn6Fxxz??j}SwqlaXA)N&* zSt9Dds$VYV!?)?=O6WG{q;)A16X0$Ug;D^NU=Q+lcDVTYHLea>9&HP)PN&NNq1G8z zI%xkC2x+pqfCB1PCskj369CE?d>;%~AV$&lvdkfrVPmP3g|Idfi(#plP-(m%N(tY8 zndD|(4xdriixxvHf^U)2EVfj$PGf}st^%((ahfzH0m}pB=bgxt*bNgQ;ykqn2Zi{f zGytiYp?ATqdnQE5$Nhj3s7Lt+5(qSJe|`)^YTBD47IfCpK$gX{j0ZsEzASvOIkQ#D z8P-qZpsUr@jUVZ2 zUqUyPPRv6&Y+Y)Y*szSCa&(c=)h@Cvn$>w`T6T;9Wg04C`!!N^K});? z?eKyZE=Z;}%5>EuDWzni@&pQ`X1ycs?$AR?Pj?D&!sixR{=Gi+!M5sI!am{O2!|A^ zq~b_>4@+|b%(|1%0yK~c8TYXLdMF#^xGav?s9Ae#o2A}EX$pa=XiS*Su>lsHSph-O zh+bkwvk>vGC9`9!5b=}|LGEr6=(!SNRVY$Nz_ynNlBrl{t@7-ZpA!B;4-N>j zTv=Y`|EZ)|O>Jm{eyy&?o>KlTE03y!WWahndOR(tRSdaBeKCz&vfg(}Oyidd6u26H zyp>W=19&uoH5s4tX9?xhCwCfmKl|)6eGcccFPV;y{67bC=o+a*YP1>*$D}r5Hsn-d z3q%DDxW0wWV>d|jZm=SUd(?i+C)3%L!z7+`@s<#Y*=9)6#ri2kJ|wYQgVA|dau@Wj2n3jJ9-8 zsua#xcpSwqhPXm_2cm5n2o{y&Nvcey2U`A`pXdOIri43{Xzk5CHsXe??@rI)_HE&_ zhjZ`KPjLWU50R%Ht%)Zwu7Vu5w43XVERtXXV*kE-0>5>&AqllTrtUx|9wThaU_f6p z?vMWdd$>cUiB0;!WfN|5`NlgQQvX{>3!Rh%K6Ljm0nTGgQCZuJ-Zs;j7ltFKbIb9v&RL`|NlL z{~jOzWS-q!`XYRMfX`3=R(|&rk}noIf}<3DnHSgE9lR73j)OIhE*l323mB90$#QFY z(x?tGtZ=aZc8hWXEg%=iXo7!Q#Qet$#_yuV|HSrY6`e%9snmhG0%?VPoPd zj?rqO&uskO0dw`Dg#8Px^VewGj~&e4tw)gUFUYBS?~`ldNaSpDM=TM=>ugPIq90`yxXUJB<*S7);9qx zPOPu|i!~`0P*Z!bW5zM@4v!fy^bW+&kaR4Ut-;Co919;ilwdfJ5amQ8#>gt|#BktX zI2@59-!V?nzcSUy_jIAm32XD;e7|N3WKC4U?og@w{>no*as<=^IBs~DT_QT@@fbFa z>Fu&Qr0k3iZ_SOb5C&rb;+Q3FO<=(O9*@ISu!dkVgb?)_=e#hW53CLv!|rG-p(R)8 zeSUb?jxiIk_}|f;$3&J4x%shw{XXb>B435wg<-J2ggKC|^!fKj4kwxY1H@9Vz*F$1k6D|DB!OIMyw9bEPD+ocN*q2?ILatS!$3HRC%+5N#|ci z9h?%LcTc8>mbq;TY7SF}+T0xR^g{#Z`(!N}_jIcPD;rJ`V5W!5jZH7O$0D|k!(zob zW|xddwn7^A^A@BM?>C?r!zrjYIBbOj7dUVVOAaB`!;5~eL-EDEN<&|=0?0aMyjyM~ z1hXE6Xme2UY+e)VIHik|S3d8UPD{zR0z3}3&$w5o!A&?HFu{2fu!lHXlr6F?>FKk$ zHsTC&DT5Nirog56#RDzaIO-mERZ}sGY=+V6#-WS#=IK$B9li~K`schS5Y94*_6v_% z=5Isam00aqxK-#bB9bI&D_om&0@D(;@xIfM8#X>0Q{9KljOy9Ltv=2oP{-*&?`k8@ z#C`aI_0{~X&R>ICs&F9HMt|EA6jtbpe~jAjZ;iL76y5f~B_T0nXpUgq5%reO?{|C0 z{fA3S;x)X#BERhIPSCSkou5h6A}5GdkUWD4mP9E&?VeDHV>5Jb1J{H3@ili1t2{va zH127Ejz=VQFiNRP1l7on38pX{qGm@I_Ck;Mk*$Qa(^<6Occ=8z+hz_REL&DCX;#d^ZhkR z$wr0qE@dH=tuRIveKsLN+OLM*gNJeJ@{%qje#w3mgG-?L`mizF!**T9+v- z>cOwxRqgSpdK9*^SknUZBnJp}CVF<&DT-fV4ugPf{Ak=7GV6IEHK@Wx#hrJt$Az@W z{HKL%eRCv<`+^#%E*p+D-S|=|Di;v9vt|zn*|xb^^Yq#FqqS#yubPL4M#svE*&vo! z&-PPa0}SW6MT;|qg$vq*+GfN;CUPFDRG)1KK}!#^(k>iLEX^9Ejc#vTH9m~T!gu_5 zQqbR}Cq+!^KB>SGw;Z=PBepRurRnl5`&NkqoP`Xsyfhv@XncMbpA>D;$);SMa+i3x zf;E#i*2+e2e7^Dm;+|iYK^e(b;rxv~LTpjhxwhtf2-xq`BnQ8a_2F6uA499CC^YWp z)$@mwXQ^Nv!iWlGDu4Gh2Uu>aK#GjIC2~ZP`O(Wrj8#LJ1{;cZZQJRJdy8c~~%Pfm2}} znlVsvyO!vKVOr1E+Cf9V=aLSYCJ?uc+-6V+5noa!YQ7WfEOnTr zNbF`bEKXh6N`XpFGM)-;=Fy&7!!1hAuam($v~x(9PoaYzRaFlLA+GO2NDlxX_QiKl zJI;RZ>{7RvddOVV?_I~hu17Zb>`xP@X>OWn{@4HhKmYIl{%51{vOkuMHucxGLY#r* z5s_rwDkZLNN ziDes-_`rM*&09Kl%;QXy?Wvz=QEuSYLPmH-aM4w~+ehAt-U-+c&ZT^muBEJO*ph?W z=@mOBsV(C7%rfEf+(tP)^0(Pw9$j){8ridwe7UQuvaeV|pS`UV!7ieL{Higpyv>q6 z>E9HoLwi?g1QGG--xT6!XFbae6(<`Vp80vhj|{8k*^ptl0(ue<5>!_T<&^m*mmVG? z9q|(mL4$I`Biq8dGQ7BwHY7HU)(lW8buuU=tD2!G+nY3;)^rHiFiDirGmkB?ANy#w zgT<~TOId1z>0w<*8`-fV!3`ICRYf(WZ*o(*Kz^q_P@3<}q&p}q@Trg{zRX$uKl$mm zrI#Ldnax^{5z*DAaT2|gMS(NHUUb!Y(C{lAR76X54!gr`ta?N*_F02-vO&QjqCUsomk=fc)b%yYz&+xkx5NvRw(iw6_?MI~Wl$ChS zWU}U_tu!RQ=+;z`q0EJ=qpiXjXpKlsU@~SQ|Fv8hcAyT<1T_>niOUn*{ifgT$Y6eT zCNb4Ze;!51E~T#!>65K}=cIM^P(g>+K7L>QJ&#eZ&y^wYXkJxEPc(pj%Y7Cc7;rgE@WOJI7mmai#=IIh`XtjWI)*;wA$4g?pfr? z!%V(5@&G=srL0< z0*>uOAxX%uwxa$f+bWxJ5&MFmeCB-d|J54 zVrCrF^Le?yQ#iHHs@-Zd9`y9WZ)8ma@;fjkzl1&pVTD}#n%?`x5V4!_gB1yLdIgq67qYh)S}b2F1plLfmB=r0NbEpB#`1EB}f_e6A3Se&)y`Z3Jw&i zA*}Ef>(cglpZdG4xAXNXBKH!>I3|c&bLARQodO-u21t)Wr#v`Ho1-x-Dp%^a8%z8= z+IYIT)!2FQ=-K9aFe&(FW%mLwDv91S*~rbubq6p z#`o(d-{AYk+VJ-4uliq|4nO_$+t%aiyYnZX{&IBV^x)l6 z{^i-(VDrb*jqanLzv-QQvhns}^Ua%`?c&SraM>t%KHT{qXM7)2-(ppMSk^ak>5Y=jz_t zjlcZ({TKK4@4mY?c=CPq;V0jJ|7`T_)0OXb?rq#|_3nPO{(0+N@1wPo&u)Kl(m&n! z zdwcX|=jqGykKX=xw)67h?%ubX&#RaH{?6cDr?av9cJ%K2#>e}Y{ck^g^ZDrH_GhPq zo$<$;pS(W*?1#_CFMj#v$>`blKYz0R==S69zP)V!{L9|a+DG3He*SEu{ln2WXYW2g z?O&eV==Z+;e*L?x*LyEN`(%CG{pICHFaPrN>%qOV^_O3L_H;a2*<5>k`(*#K_3>X$ zUfkUo4EHwfw(ng&+WhF#AAY&}#oZe}{CKo~@AQ)w3nd+U2&jmICo z`RbSc_Qz*~!RGe)cBj2_w)gh-qw(J5N8fK>?0vDlIqrPC`S!;fFPYde0KKs(Jwzdd42xT&JR0hZ+|#Hd-`JM$rpPcKfk>FlZ)VeRuTu_OleJ0N32);YxDek zJfepxe*7b%{PjrzHod=7ubbpxwBXKZ%K&G+9L9M+IIv&TcVUWuwX=uJ*Y4ecEPplc z!aMQ zTN+j}Wz>1JgF;mmBbUBH=Jwa)kC5W)=I z2`(PNU5+i{DUg}zg?uBC$sG^o(X3F~7B-mv57Ap!tUhP8y*@%><#yB_4`%R|Sfk!f z8E{Dv9OMfPyfmawOoN#CX0(0k^%A4piSmoOT;Ot}o zY4XUf7IQTsw=rJZjk0P~Btvz3HaaQpE-{*O;QkcL)CkeJUoRMIpoQl&f#CimAy&XHDoTwNh)dfto-3I7OMQI z`j3<6YD~)YN;De}$25r3GTn4srHfhNR~}Y};{nVVieU$Ofi_h5tqm`G?St0aRyVz7 zwYG}oc@SU!>`e-%i4{xw$FR?`iNVACBG+*bTXL_pIvhwiM25BG@X_Yh+V0Er>5JWG zhdbN5`|0!i>eeUSchz9+La)7sz(}`!7V8AqzfO>ixAeHAb?(^hn+sh-H+z;t)uap^ zMYG%i3nwXH-Wy|y9EywschH1Q+i_bi{xq>Yt89k)U-&&%>&m@> zMy%=>7oRegX?+_#bZVzgU!85Fxq4jgLGxdAMANov)WjY@3I)xt+;}_D4ktI9shs6T zhh8HswWng~)lcQh(BIE45q-MDSlsf=X#?fzHHQ}GZ%8;|UlQz-465P4st-(a72Tb2$q>8s%1zz zDsGV0f>oJ}QR*Iiw z72N!=toxA_izbalqX${>8lDw+$~S*xO$5`;YQfK}XdNA}UfnxwM7`+Yny3scq8X