friendica/bin/composer.phar

93940 lines
1.9 MiB
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view
* the license that is located at the bottom of this file.
*/
// Avoid APC causing random fatal errors per https://github.com/composer/composer/issues/264
if (extension_loaded('apc') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN) && filter_var(ini_get('apc.cache_by_default'), FILTER_VALIDATE_BOOLEAN)) {
if (version_compare(phpversion('apc'), '3.0.12', '>=')) {
ini_set('apc.cache_by_default', 0);
} else {
fwrite(STDERR, 'Warning: APC <= 3.0.12 may cause fatal errors when running composer commands.'.PHP_EOL);
fwrite(STDERR, 'Update APC, or set apc.enable_cli or apc.cache_by_default to 0 in your php.ini.'.PHP_EOL);
}
}
Phar::mapPhar('composer.phar');
require 'phar://composer.phar/bin/composer';
__HALT_COMPILER(); ?>
<EFBFBD>û composer.phar+src/Composer/Autoload/AutoloadGenerator.php3k¼àVb3ky[£¤+src/Composer/Autoload/ClassMapGenerator.phpÖ¼àVbÖß †"¤src/Composer/Cache.phpä¼àVbäxwܤ%src/Composer/Command/AboutCommand.phpؼàVbØö÷;‡¤'src/Composer/Command/ArchiveCommand.phpä¼àVbäÕ­¤$src/Composer/Command/BaseCommand.phpÚ ¼àVbÚ ÝˆË¤.src/Composer/Command/BaseDependencyCommand.php\¼àVb\{<7B>9d¤1src/Composer/Command/CheckPlatformReqsCommand.php}¼àVb}0Û¤*src/Composer/Command/ClearCacheCommand.php½¼àVb½°&src/Composer/Command/ConfigCommand.php»Q¼àVb»Q^¼ÿȤ-src/Composer/Command/CreateProjectCommand.phpe;¼àVbe;'˜À¤'src/Composer/Command/DependsCommand.phpø¼àVbøªeá¤(src/Composer/Command/DiagnoseCommand.php]P¼àVb]PMTõj¤,src/Composer/Command/DumpAutoloadCommand.phpã ¼àVbã © ]†¤$src/Composer/Command/ExecCommand.php ¼àVb ?ìç¤$src/Composer/Command/FundCommand.php+
¼àVb+
ð`ó¤&src/Composer/Command/GlobalCommand.phpÅ ¼àVbÅ ©O:ü¤$src/Composer/Command/HomeCommand.phpú¼àVbúÏ9mU¤$src/Composer/Command/InitCommand.php:U¼àVb:UˆŠ»â¤'src/Composer/Command/InstallCommand.php"¼àVb"®ò¤<C3B2>¤(src/Composer/Command/LicensesCommand.phpò¼àVbò´È¤(src/Composer/Command/OutdatedCommand.php ¼àVb ا)src/Composer/Command/ProhibitsCommand.php¼àVb_¤éS¤&src/Composer/Command/RemoveCommand.phpß¼àVbßì:/|¤'src/Composer/Command/RequireCommand.php¨)¼àVb¨)µDàÿ¤)src/Composer/Command/RunScriptCommand.php±¼àVb±™Ò-Ť+src/Composer/Command/ScriptAliasCommand.php¯¼àVb¯?=Ѥ&src/Composer/Command/SearchCommand.phpT ¼àVbT ±¤*src/Composer/Command/SelfUpdateCommand.php”D¼àVb”D š¤$src/Composer/Command/ShowCommand.phpp¼àVbp¼¨ìÛ¤&src/Composer/Command/StatusCommand.php%¼àVb%ŽÞÚ¤(src/Composer/Command/SuggestsCommand.php
¼àVb
y°ø¤&src/Composer/Command/UpdateCommand.phpë#¼àVbë#3<&¤(src/Composer/Command/ValidateCommand.phpe¼àVbeï
²¤src/Composer/Composer.php} ¼àVb} <00>š§ó¤src/Composer/Config.phpø$¼àVbø$öÙú¤-src/Composer/Config/ConfigSourceInterface.php¼àVb³ [/¤(src/Composer/Config/JsonConfigSource.php²¼àVb²Gd=ž¤$src/Composer/Console/Application.php[8¼àVb[8,&MŠ¤,src/Composer/Console/HtmlOutputFormatter.php0¼àVb0^КҤ-src/Composer/DependencyResolver/Decisions.php6¼àVb6à• ž¤1src/Composer/DependencyResolver/DefaultPolicy.php¼àVbÞ ¼¤/src/Composer/DependencyResolver/GenericRule.php´¼àVb´n±ðã¤>src/Composer/DependencyResolver/Operation/InstallOperation.phpC¼àVbC´\õ*¤Isrc/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php÷¼àVb÷ïÎà÷¤Ksrc/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.phpý¼àVbý3#†¤@src/Composer/DependencyResolver/Operation/OperationInterface.phpÓ¼àVbÓÙâ&ä¤=src/Composer/DependencyResolver/Operation/SolverOperation.php¹¼àVb¹&¢e
¤@src/Composer/DependencyResolver/Operation/UninstallOperation.phpI¼àVbIFûÂɤ=src/Composer/DependencyResolver/Operation/UpdateOperation.php'¼àVb'Qúɯ¤3src/Composer/DependencyResolver/PolicyInterface.php­¼àVb­Ÿ(src/Composer/DependencyResolver/Pool.phpü"¼àVbü"lžƒÆ¤+src/Composer/DependencyResolver/Problem.php÷¼àVb÷KŽX¤+src/Composer/DependencyResolver/Request.phpƒ¼àVbƒåVP„¤(src/Composer/DependencyResolver/Rule.php:¼àVb:=$¨¤1src/Composer/DependencyResolver/Rule2Literals.php¼àVb NS¤+src/Composer/DependencyResolver/RuleSet.php¨
¼àVb¨
XÏé¤4src/Composer/DependencyResolver/RuleSetGenerator.phpƒ¼àVbƒùc¤3src/Composer/DependencyResolver/RuleSetIterator.php¼àVbCü$¤2src/Composer/DependencyResolver/RuleWatchChain.phpi¼àVbihïš,¤2src/Composer/DependencyResolver/RuleWatchGraph.phpÞ¼àVbÞã˜3¼¤1src/Composer/DependencyResolver/RuleWatchNode.php¼àVb7§¹!¤*src/Composer/DependencyResolver/Solver.phpF:¼àVbF:“‰¨¤6src/Composer/DependencyResolver/SolverBugException.php™¼àVb™Xg6¤;src/Composer/DependencyResolver/SolverProblemsException.phpk¼àVbktÍP¤/src/Composer/DependencyResolver/Transaction.phpÔ¼àVbÔ<>^G¤-src/Composer/Downloader/ArchiveDownloader.phpÁ ¼àVbÁ ÖÞw7¤1src/Composer/Downloader/ChangeReportInterface.php̼àVb̯ਿ¤+src/Composer/Downloader/DownloadManager.php_¼àVb_ óøþ¤/src/Composer/Downloader/DownloaderInterface.phpʼàVbÊgs!l¤3src/Composer/Downloader/DvcsDownloaderInterface.phpѼàVbÑ&Áœ¿¤*src/Composer/Downloader/FileDownloader.php>¼àVb>tÀU˜¤/src/Composer/Downloader/FilesystemException.php
¼àVb
.-‹¤,src/Composer/Downloader/FossilDownloader.php‰ ¼àVb‰ È¢ñç¤)src/Composer/Downloader/GitDownloader.php7¼àVb7âh#Ȥ*src/Composer/Downloader/GzipDownloader.phpó¼àVbóÍy†¤(src/Composer/Downloader/HgDownloader.php ¼àVb ß`šö¤*src/Composer/Downloader/PathDownloader.phpJ¼àVbJ)4פ0src/Composer/Downloader/PearPackageExtractor.phpq¼àVbqy5+¤.src/Composer/Downloader/PerforceDownloader.phpž¼àVbžÖüñ9¤*src/Composer/Downloader/PharDownloader.phpä¼àVbäB"2(¤)src/Composer/Downloader/RarDownloader.phpŸ¼àVbŸ)src/Composer/Downloader/SvnDownloader.phpN¼àVbN â—?¤)src/Composer/Downloader/TarDownloader.phpâ¼àVbâ+«r¤.src/Composer/Downloader/TransportException.php=¼àVb=ZÎÈÞ¤9src/Composer/Downloader/VcsCapableDownloaderInterface.phpÔ¼àVbÔ`§ôö¤)src/Composer/Downloader/VcsDownloader.php˜¼àVb˜öŸ†>¤(src/Composer/Downloader/XzDownloader.php§¼àVb§W$;á¤)src/Composer/Downloader/ZipDownloader.phpx¼àVbxMÚH¤&src/Composer/EventDispatcher/Event.php ¼àVb ±™jï¤0src/Composer/EventDispatcher/EventDispatcher.phpL7¼àVbL7+[¸Œ¤9src/Composer/EventDispatcher/EventSubscriberInterface.php©¼àVb©9src/Composer/EventDispatcher/ScriptExecutionException.phpv¼àVbvwZ8S¤)src/Composer/Exception/NoSslException.phpf¼àVbfËíM<C3AD>¤src/Composer/Factory.php#>¼àVb#>^¡4¤src/Composer/IO/BaseIO.php™¼àVb™Y…% ¤src/Composer/IO/BufferIO.php½¼àVb½*Äx‡¤src/Composer/IO/ConsoleIO.php¼àVbˆ<>ͤsrc/Composer/IO/IOInterface.phpì¼àVbìÕ<>¤src/Composer/IO/NullIO.phpÀ¼àVbÀF`sʤsrc/Composer/Installer.phpD£¼àVbD£{¶Ï¤*src/Composer/Installer/BinaryInstaller.php¼àVba·Á¤2src/Composer/Installer/BinaryPresenceInterface.php˼àVbËÀ5š¨¤.src/Composer/Installer/InstallationManager.php*¼àVb*Í–…ª¤)src/Composer/Installer/InstallerEvent.php¼àVblÔzi¤*src/Composer/Installer/InstallerEvents.phpÞ¼àVbÞìŸ@G¤-src/Composer/Installer/InstallerInterface.phpã¼àVbã^ƒ“ʤ+src/Composer/Installer/LibraryInstaller.php"¼àVb"?¦@¬¤/src/Composer/Installer/MetapackageInstaller.phpʼàVbÊÙti·¤(src/Composer/Installer/NoopInstaller.php+¼àVb+À·M}¤'src/Composer/Installer/PackageEvent.phpe¼àVbe¤(src/Composer/Installer/PackageEvents.php¸¼àVb¸dbØs¤.src/Composer/Installer/PearBinaryInstaller.phpø ¼àVbø *ë•k¤(src/Composer/Installer/PearInstaller.php¢¼àVb¢È‚¶Ñ¤*src/Composer/Installer/PluginInstaller.php¡¼àVb¡¤õÏܤ+src/Composer/Installer/ProjectInstaller.php¼àVb*0@P¤4src/Composer/Installer/SuggestedPackagesReporter.php:¼àVb:´UV¤src/Composer/Json/JsonFile.phpJ¼àVbJ.¾Š\¤#src/Composer/Json/JsonFormatter.phpW¼àVbWuübŒ¤%src/Composer/Json/JsonManipulator.phpv4¼àVbv4­¤-src/Composer/Json/JsonValidationException.php\¼àVb\.Xóܤ%src/Composer/Package/AliasPackage.phpí¼àVbí˜J¸7src/Composer/Package/Archiver/ArchivableFilesFilter.php ¼àVb yY+¦¤7src/Composer/Package/Archiver/ArchivableFilesFinder.phpæ¼àVbæU`Ƥ0src/Composer/Package/Archiver/ArchiveManager.phpÕ ¼àVbÕ q^Z<>¤3src/Composer/Package/Archiver/ArchiverInterface.php¼àVbñ´> ¤3src/Composer/Package/Archiver/BaseExcludeFilter.php¼àVbv,ÝФ7src/Composer/Package/Archiver/ComposerExcludeFilter.php¼àVbSZ0¤2src/Composer/Package/Archiver/GitExcludeFilter.phpr¼àVbr3Mh¤1src/Composer/Package/Archiver/HgExcludeFilter.php
¼àVb
&ðm(¤.src/Composer/Package/Archiver/PharArchiver.php8¼àVb8Fx'M¤-src/Composer/Package/Archiver/ZipArchiver.phpX¼àVbX¤k<C2A4>$src/Composer/Package/BasePackage.php¼àVbr—F«¤*src/Composer/Package/Comparer/Comparer.php½¼àVb½¡fK}¤(src/Composer/Package/CompletePackage.php¦¼àVb¦p[Ö¤1src/Composer/Package/CompletePackageInterface.php¼àVbΫ>¤+src/Composer/Package/Dumper/ArrayDumper.phpb ¼àVbb s•°¤src/Composer/Package/Link.phpˆ¼àVbˆå¶Y«¤7src/Composer/Package/LinkConstraint/EmptyConstraint.php¼àVbé~‹¤?src/Composer/Package/LinkConstraint/LinkConstraintInterface.phpd¼àVbd¤ôLn¤7src/Composer/Package/LinkConstraint/MultiConstraint.php¼àVbób`ý¤:src/Composer/Package/LinkConstraint/SpecificConstraint.phpi¼àVbiÞ”š%¤9src/Composer/Package/LinkConstraint/VersionConstraint.phpX¼àVbX}`y¤+src/Composer/Package/Loader/ArrayLoader.phpô¼àVbôh°ª¤7src/Composer/Package/Loader/InvalidPackageException.phpE¼àVbExb¾¤*src/Composer/Package/Loader/JsonLoader.phpù¼àVbù!~ˆ/src/Composer/Package/Loader/LoaderInterface.php²¼àVb²¦}úΤ1src/Composer/Package/Loader/RootPackageLoader.phpƼàVbÆ™£ã›¤5src/Composer/Package/Loader/ValidatingArrayLoader.phpâA¼àVbâA‘ɘ¤src/Composer/Package/Locker.php#¼àVb#»ÀÎí¤ src/Composer/Package/Package.phpɼàVbÉ<63>)src/Composer/Package/PackageInterface.php\¼àVb\xåp¨¤)src/Composer/Package/RootAliasPackage.php ¼àVb _€ø¤$src/Composer/Package/RootPackage.php¼àVbŽÎ_¤-src/Composer/Package/RootPackageInterface.php¹¼àVb¹"maV¤/src/Composer/Package/Version/VersionGuesser.phpÏ#¼àVbÏ#@»å'¤.src/Composer/Package/Version/VersionParser.php¥¼àVb¥ô´à¤0src/Composer/Package/Version/VersionSelector.phpš¼àVbšô¥×¥¤-src/Composer/Plugin/Capability/Capability.phpW¼àVbWæ_¨1¤2src/Composer/Plugin/Capability/CommandProvider.php—¼àVb—ûOâ>¤src/Composer/Plugin/Capable.php¼àVbÆq$src/Composer/Plugin/CommandEvent.phpâ¼àVbâ³ÆÇW¤$src/Composer/Plugin/PluginEvents.phpö¼àVböá1=z¤'src/Composer/Plugin/PluginInterface.phpô¼àVbô)'*ؤ%src/Composer/Plugin/PluginManager.php¨$¼àVb¨$3 :<3A>¤*src/Composer/Plugin/PreCommandRunEvent.phpõ¼àVbõ:ðd¤,src/Composer/Plugin/PreFileDownloadEvent.php`¼àVb`9-Τ4src/Composer/Question/StrictConfirmationQuestion.php¼àVb'.³è¤+src/Composer/Repository/ArrayRepository.php©¼àVb©Â’/Ƥ.src/Composer/Repository/ArtifactRepository.phpí¼àVbíq9OS¤*src/Composer/Repository/BaseRepository.phpU¼àVbU{<Ÿ¤.src/Composer/Repository/ComposerRepository.php5U¼àVb5U¾øU&¤/src/Composer/Repository/CompositeRepository.php;¼àVb;¤¯S¤;src/Composer/Repository/ConfigurableRepositoryInterface.php…¼àVb…±Ÿ_¤0src/Composer/Repository/FilesystemRepository.phpo¼àVboå輞¤4src/Composer/Repository/InstalledArrayRepository.php£¼àVb£/ö~>¤9src/Composer/Repository/InstalledFilesystemRepository.php£¼àVb£V
•_¤8src/Composer/Repository/InstalledRepositoryInterface.php‡¼àVb‡£9p¤6src/Composer/Repository/InvalidRepositoryException.phpn¼àVbnà“똤-src/Composer/Repository/PackageRepository.phpi¼àVbi–¤*src/Composer/Repository/PathRepository.php¬¼àVb¬ÐU2src/Composer/Repository/Pear/BaseChannelReader.phpH¼àVbH ÁÚ‹¤,src/Composer/Repository/Pear/ChannelInfo.phpļàVbÄ:T*ɤ.src/Composer/Repository/Pear/ChannelReader.phpë¼àVbëåÄLi¤4src/Composer/Repository/Pear/ChannelRest10Reader.php® ¼àVb® ™ÖÛú¤4src/Composer/Repository/Pear/ChannelRest11Reader.php& ¼àVb& òUb¤5src/Composer/Repository/Pear/DependencyConstraint.phpq¼àVbq9/src/Composer/Repository/Pear/DependencyInfo.phpq¼àVbqfºTò¤8src/Composer/Repository/Pear/PackageDependencyParser.phpƒ¼àVbƒð<>“w¤,src/Composer/Repository/Pear/PackageInfo.php°¼àVb°Ÿ ¸ ¤,src/Composer/Repository/Pear/ReleaseInfo.php¼àVbo“ŠÃ¤*src/Composer/Repository/PearRepository.php¥¼àVb¥ç|5¤.src/Composer/Repository/PlatformRepository.php)!¼àVb)!À(‡ß¤-src/Composer/Repository/RepositoryFactory.phpa¼àVbalÂéÔ¤/src/Composer/Repository/RepositoryInterface.phpÛ¼àVbÛâÁ¤-src/Composer/Repository/RepositoryManager.phpM ¼àVbM <(;Œ¤7src/Composer/Repository/RepositorySecurityException.phpo¼àVbopÕ«ª¤/src/Composer/Repository/Vcs/BitbucketDriver.php~ ¼àVb~ Ebºå¤,src/Composer/Repository/Vcs/FossilDriver.php´¼àVb´Å†K¤2src/Composer/Repository/Vcs/GitBitbucketDriver.phpë¼àVb뜴½X¤)src/Composer/Repository/Vcs/GitDriver.php¼àVbÂGîŤ,src/Composer/Repository/Vcs/GitHubDriver.phpƒ4¼àVbƒ4:0G¤,src/Composer/Repository/Vcs/GitLabDriver.php}*¼àVb}*d<>er¤1src/Composer/Repository/Vcs/HgBitbucketDriver.phpå¼àVbå@)‰L¤(src/Composer/Repository/Vcs/HgDriver.php)¼àVb)Nÿü¤.src/Composer/Repository/Vcs/PerforceDriver.phpù ¼àVbù &½tÙ¤)src/Composer/Repository/Vcs/SvnDriver.phpž¼àVbžâ]ј¤)src/Composer/Repository/Vcs/VcsDriver.phpæ
¼àVbæ
eׯ-¤2src/Composer/Repository/Vcs/VcsDriverInterface.php÷¼àVb÷ÇX[‰¤)src/Composer/Repository/VcsRepository.phpŽ-¼àVbŽ-÷ï ì¤1src/Composer/Repository/VersionCacheInterface.php”¼àVb”A?Rï¤3src/Composer/Repository/WritableArrayRepository.php ¼àVb ¤3¶¢¤7src/Composer/Repository/WritableRepositoryInterface.php‰¼àVb‰/sï¤$src/Composer/Script/CommandEvent.phpW¼àVbW£VZt¤src/Composer/Script/Event.phpº¼àVbºò<>»¤¤$src/Composer/Script/PackageEvent.phpœ¼àVbœ§ÿÉ ¤$src/Composer/Script/ScriptEvents.phpP¼àVbP<>¶¤ src/Composer/SelfUpdate/Keys.phpœ¼àVbœzeƒŽ¤$src/Composer/SelfUpdate/Versions.phpH¼àVbHc lB¤ src/Composer/Util/AuthHelper.php˼àVbË>zx¤src/Composer/Util/Bitbucket.php%¼àVb%N,vÕ¤$src/Composer/Util/ComposerMirror.php±¼àVb±­½øؤ%src/Composer/Util/ConfigValidator.phpà¼àVb௺`—¤"src/Composer/Util/ErrorHandler.php¼àVbÂV<C382> src/Composer/Util/Filesystem.php`/¼àVb`/ÓJ‰w¤src/Composer/Util/Git.phpø0¼àVbø0Zð\ ¤src/Composer/Util/GitHub.phpz ¼àVbz  !Ò¤src/Composer/Util/GitLab.phpó¼àVbó^src/Composer/Util/Hg.php¼¼àVb¼ƒ]src/Composer/Util/IniHelper.phph¼àVbh;F$src/Composer/Util/NoProxyPattern.phpr¼àVbrœ´#src/Composer/Util/PackageSorter.phpܼàVbÜwˆÔâ¤src/Composer/Util/Perforce.php¶2¼àVb¶2ßÑvT¤src/Composer/Util/Platform.phpû¼àVbûñ®<C3B1>%src/Composer/Util/ProcessExecutor.php‡ ¼àVb‡ X<>§3¤&src/Composer/Util/RemoteFilesystem.phpRr¼àVbRr๖¤src/Composer/Util/Silencer.phpè¼àVbè¿5ѳ¤!src/Composer/Util/SpdxLicense.php¼àVb¾7
ñ¤*src/Composer/Util/StreamContextFactory.phpú¼àVbú0Kšy¤src/Composer/Util/Svn.php'¼àVb'ôS,,¤src/Composer/Util/TlsHelper.phpH
¼àVbH
ÌÚ¤src/Composer/Util/Url.phpž¼àVbžqµkQ¤src/Composer/Util/Zip.php¯¼àVb¯ti¸Î¤src/Composer/XdebugHandler.phpð¼àVbðzÓf~¤src/bootstrap.php¹¼àVb¹I}œ¤%src/Composer/Autoload/ClassLoader.php¡4¼àVb¡4Þs…|¤#res/composer-repository-schema.jsonð¼àVbð<00>GÐà¤res/composer-schema.jsonM<6E>¼àVbM<62>U|Û¤6vendor/composer/spdx-licenses/res/spdx-exceptions.json¸ ¼àVb¸ Â4DC¤4vendor/composer/spdx-licenses/res/spdx-licenses.json¾¼àVb¾eÇõ̤4vendor/symfony/console/Resources/bin/hiddeninput.exe$¼àVb$<>¥v¤Dvendor/symfony/polyfill-mbstring/Resources/mb_convert_variables.php8?¼àVb?òï ¤&vendor/symfony/console/Application.php+X¼àVb+X«­yX¤*vendor/symfony/console/Command/Command.phpä"¼àVbä"<00>¤Ê¤.vendor/symfony/console/Command/HelpCommand.phpؼàVbئÚ-:¤.vendor/symfony/console/Command/ListCommand.phpZ¼àVbZ»w(vendor/symfony/console/ConsoleEvents.phpé¼àVbéRÛÔe¤<vendor/symfony/console/Descriptor/ApplicationDescription.phpϼàVbÏ<ŽUî¤0vendor/symfony/console/Descriptor/Descriptor.php<68>¼àVb<56>¿N•¤9vendor/symfony/console/Descriptor/DescriptorInterface.phpü¼àVbü±Qµ¤4vendor/symfony/console/Descriptor/JsonDescriptor.phpÜ ¼àVbÜ <>ɤ8vendor/symfony/console/Descriptor/MarkdownDescriptor.php¶¼àVb¶·Ô;ݤ4vendor/symfony/console/Descriptor/TextDescriptor.php·¼àVb·c“q€¤3vendor/symfony/console/Descriptor/XmlDescriptor.php¼àVbb{<¤4vendor/symfony/console/Event/ConsoleCommandEvent.php°¼àVb°!Ȥ-vendor/symfony/console/Event/ConsoleEvent.phpżàVbÅÒxÛ\¤6vendor/symfony/console/Event/ConsoleExceptionEvent.php¼àVbá2é¤6vendor/symfony/console/Event/ConsoleTerminateEvent.phpz¼àVbz³,îL¤=vendor/symfony/console/Exception/CommandNotFoundException.phpÔ¼àVbÔÈ÷ L¤7vendor/symfony/console/Exception/ExceptionInterface.phpf¼àVbf¡ABª¤=vendor/symfony/console/Exception/InvalidArgumentException.php¦¼àVb¦Ö̽Z¤;vendor/symfony/console/Exception/InvalidOptionException.php¦¼àVb¦Ë×3vendor/symfony/console/Exception/LogicException.php¼àVbÍO\e¤5vendor/symfony/console/Exception/RuntimeException.php¼àVbÙí,6¤4vendor/symfony/console/Formatter/OutputFormatter.php3¼àVb3àפ=vendor/symfony/console/Formatter/OutputFormatterInterface.phpŒ¼àVbŒòññÀ¤9vendor/symfony/console/Formatter/OutputFormatterStyle.phpF¼àVbF𦴤Bvendor/symfony/console/Formatter/OutputFormatterStyleInterface.php„¼àVb„÷½>vendor/symfony/console/Formatter/OutputFormatterStyleStack.php@¼àVb@G¨ýU¤6vendor/symfony/console/Helper/DebugFormatterHelper.phpy¼àVbyÌ8ÆФ2vendor/symfony/console/Helper/DescriptorHelper.phpw¼àVbw.vendor/symfony/console/Helper/DialogHelper.phpð¼àVbðÔÈ1vendor/symfony/console/Helper/FormatterHelper.phpd¼àVbd§×,¸¤(vendor/symfony/console/Helper/Helper.php©¼àVb©Õ'ƒ±¤1vendor/symfony/console/Helper/HelperInterface.phpå¼àVb加¤+vendor/symfony/console/Helper/HelperSet.phpʼàVbÊáÏW"¤2vendor/symfony/console/Helper/InputAwareHelper.phpc¼àVbcÌøƒ¤/vendor/symfony/console/Helper/ProcessHelper.phpÓ ¼àVbÓ ©w-vendor/symfony/console/Helper/ProgressBar.phpc%¼àVbc%C&w¤0vendor/symfony/console/Helper/ProgressHelper.phpY¼àVbYR!<21>3vendor/symfony/console/Helper/ProgressIndicator.phpM¼àVbMü<>‡¤0vendor/symfony/console/Helper/QuestionHelper.php[¼àVb[¯6}ñ¤7vendor/symfony/console/Helper/SymfonyQuestionHelper.php•
¼àVb•
]~R¤'vendor/symfony/console/Helper/Table.php¼*¼àVb¼*fêý!¤+vendor/symfony/console/Helper/TableCell.php€¼àVb€‹ƒ[¤-vendor/symfony/console/Helper/TableHelper.php ¼àVb uô™¤0vendor/symfony/console/Helper/TableSeparator.phpʼàVbÊaz¤,vendor/symfony/console/Helper/TableStyle.php
¼àVb
_ÍI"¤*vendor/symfony/console/Input/ArgvInput.php¼àVbªèB-¤+vendor/symfony/console/Input/ArrayInput.php) ¼àVb) ¥Ñ&vendor/symfony/console/Input/Input.php£ ¼àVb£ f¡?¤.vendor/symfony/console/Input/InputArgument.php¼àVbD £¤4vendor/symfony/console/Input/InputAwareInterface.php˜¼àVb˜­O°¤0vendor/symfony/console/Input/InputDefinition.php†¼àVb†¤U)¤¤/vendor/symfony/console/Input/InputInterface.php£¼àVb£ÆBŒ'¤,vendor/symfony/console/Input/InputOption.php ¼àVb \¢Ü=¤,vendor/symfony/console/Input/StringInput.php™¼àVb™{Šœþ¤vendor/symfony/console/LICENSE)¼àVb)NUN½¤/vendor/symfony/console/Logger/ConsoleLogger.php- ¼àVb- ghT¤0vendor/symfony/console/Output/BufferedOutput.php_¼àVb_ >P¤/vendor/symfony/console/Output/ConsoleOutput.php±¼àVb±nì!f¤8vendor/symfony/console/Output/ConsoleOutputInterface.phpà¼àVbà‡†Æʤ,vendor/symfony/console/Output/NullOutput.phpɼàVbÉ™0ïf¤(vendor/symfony/console/Output/Output.php˜ ¼àVb˜ 0p¤1vendor/symfony/console/Output/OutputInterface.php¼àVbì.vendor/symfony/console/Output/StreamOutput.php¼àVb.¡îî¤2vendor/symfony/console/Question/ChoiceQuestion.phpv
¼àVbv
²WP¤8vendor/symfony/console/Question/ConfirmationQuestion.phpè¼àVbè/Ô<>¤,vendor/symfony/console/Question/Question.phpÎ ¼àVbÎ lF¤ vendor/symfony/console/Shell.phpã¼àVbã‰ÁŽå¤,vendor/symfony/console/Style/OutputStyle.php\¼àVb\wפ¤/vendor/symfony/console/Style/StyleInterface.phpϼàVbÏ&nÅѤ-vendor/symfony/console/Style/SymfonyStyle.phpÛ¼àVbÛ§ðcä¤3vendor/symfony/console/Tester/ApplicationTester.phpϼàVbÏsž9i¤/vendor/symfony/console/Tester/CommandTester.php¨¼àVb¨<œ•¤(vendor/symfony/debug/BufferingLogger.phpt¼àVbt=hܤvendor/symfony/debug/Debug.php+¼àVb+.À=©¤)vendor/symfony/debug/DebugClassLoader.php°¼àVb°^æ*ñ¤%vendor/symfony/debug/ErrorHandler.phpýG¼àVbýG¿zL¤9vendor/symfony/debug/Exception/ClassNotFoundException.php¼àVbi‰æô¤8vendor/symfony/debug/Exception/ContextErrorException.php˜¼àVb˜-
d2¤1vendor/symfony/debug/Exception/DummyException.php¼àVb®+Ãê¤6vendor/symfony/debug/Exception/FatalErrorException.php ¼àVb 4ç$¤¤6vendor/symfony/debug/Exception/FatalThrowableError.phpW¼àVbW?àèK¤3vendor/symfony/debug/Exception/FlattenException.php»¼àVb»+a&¤7vendor/symfony/debug/Exception/OutOfMemoryException.php~¼àVb~ë¨oâ¤=vendor/symfony/debug/Exception/UndefinedFunctionException.phpš¼àVbš<00>ñJÀ¤;vendor/symfony/debug/Exception/UndefinedMethodException.php˜¼àVb˜nöêؤ)vendor/symfony/debug/ExceptionHandler.php$3¼àVb$3×£¤Ivendor/symfony/debug/FatalErrorHandler/ClassNotFoundFatalErrorHandler.php5¼àVb5ŠÁ*V¤Evendor/symfony/debug/FatalErrorHandler/FatalErrorHandlerInterface.php¼àVbĹBV¤Mvendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.phpx¼àVbx~ò"¤Kvendor/symfony/debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.phpN¼àVbN'€³ˆ¤vendor/symfony/debug/LICENSE)¼àVb)NUN½¤:vendor/symfony/filesystem/Exception/ExceptionInterface.phpi¼àVbi$ ÿ›¤=vendor/symfony/filesystem/Exception/FileNotFoundException.php¼¼àVb¼pí\¶¤3vendor/symfony/filesystem/Exception/IOException.php‡¼àVb‡€ü#Ѥ<vendor/symfony/filesystem/Exception/IOExceptionInterface.php¦¼àVb¦jÙwM¤(vendor/symfony/filesystem/Filesystem.phpM4¼àVbM4ãz_¤!vendor/symfony/filesystem/LICENSE)¼àVb)NUN½¤)vendor/symfony/filesystem/LockHandler.phpò¼àVbò~3ŸZ¤1vendor/symfony/finder/Adapter/AbstractAdapter.php\ ¼àVb\ hˆ5vendor/symfony/finder/Adapter/AbstractFindAdapter.phpƒ¼àVbƒkM Þ¤2vendor/symfony/finder/Adapter/AdapterInterface.php¼àVbMþ¤0vendor/symfony/finder/Adapter/BsdFindAdapter.php2¼àVb2ƒ€D)¤0vendor/symfony/finder/Adapter/GnuFindAdapter.php¼àVb¦äàO¤,vendor/symfony/finder/Adapter/PhpAdapter.phpô¼àVbôÞdè;¤/vendor/symfony/finder/Comparator/Comparator.php<68>¼àVb<56>¾üœµ¤3vendor/symfony/finder/Comparator/DateComparator.php#¼àVb#°Τ5vendor/symfony/finder/Comparator/NumberComparator.php{¼àVb{€ÚùY¤9vendor/symfony/finder/Exception/AccessDeniedException.php„¼àVb„½¾sœ¤;vendor/symfony/finder/Exception/AdapterFailureException.php¬¼àVb¬w6vendor/symfony/finder/Exception/ExceptionInterface.php„¼àVb„Gz-¤Avendor/symfony/finder/Exception/OperationNotPermitedException.php)¼àVb)x§e¤@vendor/symfony/finder/Exception/ShellCommandFailureException.phpº¼àVbº˜þ˜¤/vendor/symfony/finder/Expression/Expression.php¼àVbi¥:Ť)vendor/symfony/finder/Expression/Glob.phpf¼àVbfDÞcj¤*vendor/symfony/finder/Expression/Regex.php¼àVb§;M)¤3vendor/symfony/finder/Expression/ValueInterface.phpͼàVbÍ\p4†¤ vendor/symfony/finder/Finder.phpc.¼àVbc.:ˆ5g¤vendor/symfony/finder/Glob.phpL¼àVbLjÍ9פ7vendor/symfony/finder/Iterator/CustomFilterIterator.php]¼àVb]ÎoÅƤ:vendor/symfony/finder/Iterator/DateRangeFilterIterator.phpx¼àVbxô;vendor/symfony/finder/Iterator/DepthRangeFilterIterator.phpî¼àVbîüÍ<C3BC>Avendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.phpí¼àVbínõH¤4vendor/symfony/finder/Iterator/FilePathsIterator.php#¼àVb#G?T½¤9vendor/symfony/finder/Iterator/FileTypeFilterIterator.phpZ¼àVbZ(&ø¤<vendor/symfony/finder/Iterator/FilecontentFilterIterator.php5¼àVb5ší¤9vendor/symfony/finder/Iterator/FilenameFilterIterator.phpr¼àVbrt1vendor/symfony/finder/Iterator/FilterIterator.php¼àVbÂ<1C>㯤=vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php*¼àVb*Œž<C592>¤5vendor/symfony/finder/Iterator/PathFilterIterator.phpмàVbÐ=vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php ¼àVb O}Cä¤:vendor/symfony/finder/Iterator/SizeRangeFilterIterator.phpe¼àVbeŸ’áé¤3vendor/symfony/finder/Iterator/SortableIterator.php+¼àVb+õÝË ¤vendor/symfony/finder/LICENSE)¼àVb)NUN½¤'vendor/symfony/finder/Shell/Command.php> ¼àVb> _~u ¤%vendor/symfony/finder/Shell/Shell.phpq¼àVbq·ÓŠ0¤%vendor/symfony/finder/SplFileInfo.php¼àVbþíù¤'vendor/symfony/polyfill-ctype/Ctype.phpH ¼àVbH ³<>Õݤ%vendor/symfony/polyfill-ctype/LICENSE)¼àVb)´`e0¤+vendor/symfony/polyfill-ctype/bootstrap.phpú¼àVbú|p:¤(vendor/symfony/polyfill-mbstring/LICENSE)¼àVb)“\ª¤-vendor/symfony/polyfill-mbstring/Mbstring.php~G¼àVb~Gúì¡T¤@vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php÷T¼àVb÷Tß2ª?¤Fvendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.phpã¼àVbãöy_•¤@vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.phpîU¼àVbîU`þ8Q¤.vendor/symfony/polyfill-mbstring/bootstrap.php¼àVbþJ¾¤7vendor/symfony/process/Exception/ExceptionInterface.phpf¼àVbf]ö>T¤=vendor/symfony/process/Exception/InvalidArgumentException.php¨¼àVb¨ÐÀ+_¤3vendor/symfony/process/Exception/LogicException.php”¼àVb” ³ãñ¤;vendor/symfony/process/Exception/ProcessFailedException.phpx¼àVbx¨Ìzy¤=vendor/symfony/process/Exception/ProcessTimedOutException.php¼àVb«¤5vendor/symfony/process/Exception/RuntimeException.php˜¼àVb˜¢Ø:¤+vendor/symfony/process/ExecutableFinder.phpœ¼àVbœçÁ̤vendor/symfony/process/LICENSE)¼àVb)NUN½¤.vendor/symfony/process/PhpExecutableFinder.phpͼàVbÍí0ã¤%vendor/symfony/process/PhpProcess.phpù¼àVbùc¶ßĤ.vendor/symfony/process/Pipes/AbstractPipes.php¸¼àVb¸xÓ,§¤/vendor/symfony/process/Pipes/PipesInterface.phpD¼àVbDvØ*vendor/symfony/process/Pipes/UnixPipes.php7¼àVb7bÜp„¤-vendor/symfony/process/Pipes/WindowsPipes.phpi ¼àVbi Ó
 Ä¤"vendor/symfony/process/Process.php R¼àVb R×Ó¥¹¤)vendor/symfony/process/ProcessBuilder.phpá
¼àVbá
ñ6I•¤'vendor/symfony/process/ProcessUtils.phpJ¼àVbJ{ñC¤vendor/seld/jsonlint/LICENSE"¼àVb"aƒsy¤@vendor/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.phpk¼àVbkZù¶Ã¤5vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php62¼àVb6228ˤ0vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php#¼àVb#Úá@,¤;vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php%¼àVb%`a„|¤4vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php>¼àVb>ÿqŸŸ¤(vendor/justinrainbow/json-schema/LICENSE ¼àVb ºç©¤.vendor/justinrainbow/json-schema/demo/demo.phpñ¼àVbñfNvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php¡ ¼àVb¡ †wÌl¤Tvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.phpƒ
¼àVbƒ
ž¸=š¤Jvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.phpÁ ¼àVbÁ PFF¤Svendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php¼¼àVb¼ÿ Qœ¤Nvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php\¼àVb\_}ý¤Gvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.phpà ¼àVbà ë_”¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.phps¼àVbsd Þ¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.phpƒ ¼àVbƒ e<> ¨¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php·¼àVb·%l¬ö¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php& ¼àVb& 78÷¬¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.phpz¼àVbzùfÅ~¤Xvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.phpa¼àVba qäYvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php—¼àVb—4~¾ ¤\vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php‰¼àVb‰“µ+j¤Nvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php¼àVbª%}¤Svendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php,"¼àVb,"‰-¤Fvendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.phpè¼àVbè{N¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.phpI¼àVbI%|°¤Vvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php•¼àVb•àG¤Tvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.phpl¼àVblA!LפTvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.phpl¼àVblè2÷þ¤]vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.phpu¼àVbu=hç¤Wvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.phpw¼àVbwN-ò[¤Svendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.phpÞ¼àVbÞ\¸
¤Wvendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.phpo¼àVbopíÛù¤Nvendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php…¼àVb…%…—¤^vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php€¼àVb€u-#1¤Rvendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.phpj¼àVbjå><3E>¤Qvendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.phpf¼àVbf¬¤„þ¤Kvendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.phpþ¼àVbþM<>„õ¤;vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php ¼àVb f4÷³¤Avendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php“ ¼àVb“ &zß^¤Jvendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php¼àVboŠ+}¤Tvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.phpá¼àVbá[þA<C3BE>¤Gvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php£¼àVb£Ç’ô¦¤Rvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php ¼àVb £Á¤Rvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php,¼àVb,1•5þ¤Xvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php®¼àVb®ÿ‹Áå¤Cvendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php ¼àVb æDvendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php@¼àVb@5Î3¤Hvendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.phpƒ¼àVbƒJ€¤Ivendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php…¼àVb…íæ=vendor/justinrainbow/json-schema/src/JsonSchema/Validator.phps¼àVbsßÁ‘#¤%vendor/composer/spdx-licenses/LICENSE¼àVbBhí¤2vendor/composer/spdx-licenses/src/SpdxLicenses.php{¼àVb{ž “¤vendor/composer/semver/LICENSE¼àVbBhí¤)vendor/composer/semver/src/Comparator.php¼àVbwlƒï¤<vendor/composer/semver/src/Constraint/AbstractConstraint.phpê¼àVbêM äˤ4vendor/composer/semver/src/Constraint/Constraint.phpŠ ¼àVbŠ Ò <09>
¤=vendor/composer/semver/src/Constraint/ConstraintInterface.phpß¼àVbß0C,‡¤9vendor/composer/semver/src/Constraint/EmptyConstraint.phpä¼àVbäïõ‚³¤9vendor/composer/semver/src/Constraint/MultiConstraint.php,¼àVb,%vendor/composer/semver/src/Semver.php¼àVb YûÀ¤,vendor/composer/semver/src/VersionParser.phpw-¼àVbw-Î=ð­¤!vendor/composer/ca-bundle/LICENSE¼àVb*!^`¤*vendor/composer/ca-bundle/src/CaBundle.php•$¼àVb•$ÛnÓ¤&vendor/composer/xdebug-handler/LICENSE)¼àVb)#Ô;^¤0vendor/composer/xdebug-handler/src/PhpConfig.php´¼àVb´*D¤.vendor/composer/xdebug-handler/src/Process.phpk ¼àVbk ŽUÿߤ-vendor/composer/xdebug-handler/src/Status.php
¼àVb
$Ÿv-¤4vendor/composer/xdebug-handler/src/XdebugHandler.php‡%¼àVb‡%¾L3¤vendor/psr/log/LICENSE=¼àVb=p±ŽO¤)vendor/psr/log/Psr/Log/AbstractLogger.php;¼àVb;ñ>3[¤3vendor/psr/log/Psr/Log/InvalidArgumentException.php`¼àVb` ˆX1¤#vendor/psr/log/Psr/Log/LogLevel.phpû¼àVbûjðñ8¤/vendor/psr/log/Psr/Log/LoggerAwareInterface.php|¼àVb|$£ˆ¤+vendor/psr/log/Psr/Log/LoggerAwareTrait.php§¼àVb§T½úB¤*vendor/psr/log/Psr/Log/LoggerInterface.phpȼàVbÈšx¤&vendor/psr/log/Psr/Log/LoggerTrait.phpk¼àVbk£}‰’¤%vendor/psr/log/Psr/Log/NullLogger.phpŸ¼àVbŸ<00>Xóª¤)vendor/psr/log/Psr/Log/Test/DummyTest.phpp¼àVbpΤ3vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php ¼àVb $/Ò¤*vendor/psr/log/Psr/Log/Test/TestLogger.php<¼àVb<þ(åI¤vendor/autoload.php¼àVb„¤'vendor/composer/autoload_namespaces.phpd¼àVbdZ¡¦H¤!vendor/composer/autoload_psr4.php÷¼àVb÷Å*š¤%vendor/composer/autoload_classmap.phpd¼àVbdZ¡¦H¤"vendor/composer/autoload_files.php¼àVb¥ ®¤!vendor/composer/autoload_real.phpL¼àVbLå<>1“¤#vendor/composer/autoload_static.php§
¼àVb§
²´©ë¤vendor/composer/ClassLoader.php¦¼àVb¦MIŒ¤(vendor/composer/ca-bundle/res/cacert.pemÁ,¼àVbÁ,½_~Ž¤ bin/composer¼àVbÉ€¤LICENSE.¼àVb. Õ¤<?php
namespace Composer\Autoload;
use Composer\Config;
use Composer\EventDispatcher\EventDispatcher;
use Composer\Installer\InstallationManager;
use Composer\IO\IOInterface;
use Composer\Package\AliasPackage;
use Composer\Package\PackageInterface;
use Composer\Repository\InstalledRepositoryInterface;
use Composer\Util\Filesystem;
use Composer\Script\ScriptEvents;
use Composer\Util\PackageSorter;
class AutoloadGenerator
{
private $eventDispatcher;
private $io;
private $devMode = false;
private $classMapAuthoritative = false;
private $apcu = false;
private $runScripts = false;
public function __construct(EventDispatcher $eventDispatcher, IOInterface $io = null)
{
$this->eventDispatcher = $eventDispatcher;
$this->io = $io;
}
public function setDevMode($devMode = true)
{
$this->devMode = (bool) $devMode;
}
public function setClassMapAuthoritative($classMapAuthoritative)
{
$this->classMapAuthoritative = (bool) $classMapAuthoritative;
}
public function setApcu($apcu)
{
$this->apcu = (bool) $apcu;
}
public function setRunScripts($runScripts = true)
{
$this->runScripts = (bool) $runScripts;
}
public function dump(Config $config, InstalledRepositoryInterface $localRepo, PackageInterface $mainPackage, InstallationManager $installationManager, $targetDir, $scanPsrPackages = false, $suffix = '')
{
if ($this->classMapAuthoritative) {
$scanPsrPackages = true;
}
if ($this->runScripts) {
$this->eventDispatcher->dispatchScript(ScriptEvents::PRE_AUTOLOAD_DUMP, $this->devMode, array(), array(
'optimize' => (bool) $scanPsrPackages,
));
}
$filesystem = new Filesystem();
$filesystem->ensureDirectoryExists($config->get('vendor-dir'));
$basePath = $filesystem->normalizePath(realpath(realpath(getcwd())));
$vendorPath = $filesystem->normalizePath(realpath(realpath($config->get('vendor-dir'))));
$useGlobalIncludePath = (bool) $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);
$vendorPathCode52 = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathCode);
$vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true);
$appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true);
$appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode);
$namespacesFile = <<<EOF
<?php
// autoload_namespaces.php @generated by Composer
\$vendorDir = $vendorPathCode52;
\$baseDir = $appBaseDirCode;
return array(
EOF;
$psr4File = <<<EOF
<?php
// autoload_psr4.php @generated by Composer
\$vendorDir = $vendorPathCode52;
\$baseDir = $appBaseDirCode;
return array(
EOF;
$packageMap = $this->buildPackageMap($installationManager, $mainPackage, $localRepo->getCanonicalPackages());
$autoloads = $this->parseAutoloads($packageMap, $mainPackage, $this->devMode === false);
foreach ($autoloads['psr-0'] as $namespace => $paths) {
$exportedPaths = array();
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 = array();
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";
$classmapFile = <<<EOF
<?php
// autoload_classmap.php @generated by Composer
\$vendorDir = $vendorPathCode52;
\$baseDir = $appBaseDirCode;
return array(
EOF;
$targetDirLoader = null;
$mainAutoload = $mainPackage->getAutoload();
if ($mainPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) {
$levels = substr_count($filesystem->normalizePath($mainPackage->getTargetDir()), '/') + 1;
$prefixes = implode(', ', array_map(function ($prefix) {
return var_export($prefix, true);
}, array_keys($mainAutoload['psr-0'])));
$baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true);
$targetDirLoader = <<<EOF
public static function autoload(\$class)
{
\$dir = $baseDirFromTargetDirCode . '/';
\$prefixes = array($prefixes);
foreach (\$prefixes as \$prefix) {
if (0 !== strpos(\$class, \$prefix)) {
continue;
}
\$path = \$dir . implode('/', array_slice(explode('\\\\', \$class), $levels)).'.php';
if (!\$path = stream_resolve_include_path(\$path)) {
return false;
}
require \$path;
return true;
}
}
EOF;
}
$excluded = null;
if (!empty($autoloads['exclude-from-classmap'])) {
$excluded = $autoloads['exclude-from-classmap'];
}
$classMap = array();
$ambiguousClasses = array();
$scannedFiles = array();
foreach ($autoloads['classmap'] as $dir) {
$classMap = $this->addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $excluded, null, null, $classMap, $ambiguousClasses, $scannedFiles);
}
if ($scanPsrPackages) {
$namespacesToScan = array();
foreach (array('psr-4', 'psr-0') as $psrType) {
foreach ($autoloads[$psrType] as $namespace => $paths) {
$namespacesToScan[$namespace][] = array('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;
}
$classMap = $this->addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $excluded, $namespace, $group['type'], $classMap, $ambiguousClasses, $scannedFiles);
}
}
}
}
foreach ($ambiguousClasses as $className => $ambigiousPaths) {
$cleanPath = str_replace(array('$vendorDir . \'', '$baseDir . \'', "',\n"), array($vendorPath, $basePath, ''), $classMap[$className]);
$this->io->writeError(
'<warning>Warning: Ambiguous class resolution, "'.$className.'"'.
' was found '. (count($ambigiousPaths) + 1) .'x: in "'.$cleanPath.'" and "'. implode('", "', $ambigiousPaths) .'", the first will be used.</warning>'
);
}
ksort($classMap);
foreach ($classMap as $class => $code) {
$classmapFile .= ' '.var_export($class, true).' => '.$code;
}
$classmapFile .= ");\n";
if (!$suffix) {
if (!$config->get('autoloader-suffix') && is_readable($vendorPath.'/autoload.php')) {
$content = file_get_contents($vendorPath.'/autoload.php');
if (preg_match('{ComposerAutoloaderInit([^:\s]+)::}', $content, $match)) {
$suffix = $match[1];
}
}
if (!$suffix) {
$suffix = $config->get('autoloader-suffix') ?: md5(uniqid('', true));
}
}
$this->filePutContentsIfModified($targetDir.'/autoload_namespaces.php', $namespacesFile);
$this->filePutContentsIfModified($targetDir.'/autoload_psr4.php', $psr4File);
$this->filePutContentsIfModified($targetDir.'/autoload_classmap.php', $classmapFile);
$includePathFilePath = $targetDir.'/include_paths.php';
if ($includePathFileContents = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) {
$this->filePutContentsIfModified($includePathFilePath, $includePathFileContents);
} elseif (file_exists($includePathFilePath)) {
unlink($includePathFilePath);
}
$includeFilesFilePath = $targetDir.'/autoload_files.php';
if ($includeFilesFileContents = $this->getIncludeFilesFile($autoloads['files'], $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) {
$this->filePutContentsIfModified($includeFilesFilePath, $includeFilesFileContents);
} elseif (file_exists($includeFilesFilePath)) {
unlink($includeFilesFilePath);
}
$this->filePutContentsIfModified($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath, $staticPhpVersion));
$this->filePutContentsIfModified($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix));
$this->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion));
$this->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php');
$this->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE');
if ($this->runScripts) {
$this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP, $this->devMode, array(), array(
'optimize' => (bool) $scanPsrPackages,
));
}
return count($classMap);
}
private function filePutContentsIfModified($path, $content)
{
$currentContent = @file_get_contents($path);
if (!$currentContent || ($currentContent != $content)) {
return file_put_contents($path, $content);
}
return 0;
}
private function addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $excluded, $namespaceFilter, $autoloadType, array $classMap, array &$ambiguousClasses, array &$scannedFiles)
{
foreach ($this->generateClassMap($dir, $excluded, $namespaceFilter, $autoloadType, true, $scannedFiles) as $class => $path) {
$pathCode = $this->getPathCode($filesystem, $basePath, $vendorPath, $path).",\n";
if (!isset($classMap[$class])) {
$classMap[$class] = $pathCode;
} elseif ($this->io && $classMap[$class] !== $pathCode && !preg_match('{/(test|fixture|example|stub)s?/}i', strtr($classMap[$class].' '.$path, '\\', '/'))) {
$ambiguousClasses[$class][] = $path;
}
}
return $classMap;
}
private function generateClassMap($dir, $excluded, $namespaceFilter, $autoloadType, $showAmbiguousWarning, array &$scannedFiles)
{
if ($excluded) {
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]);
}
}
}
$excluded = $excluded ? '{(' . implode('|', $excluded) . ')}' : null;
}
return ClassMapGenerator::createMap($dir, $excluded, $showAmbiguousWarning ? $this->io : null, $namespaceFilter, $autoloadType, $scannedFiles);
}
public function buildPackageMap(InstallationManager $installationManager, PackageInterface $mainPackage, array $packages)
{
$packageMap = array(array($mainPackage, ''));
foreach ($packages as $package) {
if ($package instanceof AliasPackage) {
continue;
}
$this->validatePackage($package);
$packageMap[] = array(
$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 $mainPackage, $filterOutRequireDevPackages = false)
{
$mainPackageMap = array_shift($packageMap);
if ($filterOutRequireDevPackages) {
$packageMap = $this->filterPackageMap($packageMap, $mainPackage);
}
$sortedPackageMap = $this->sortPackageMap($packageMap);
$sortedPackageMap[] = $mainPackageMap;
array_unshift($packageMap, $mainPackageMap);
$psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $mainPackage);
$psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $mainPackage);
$classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $mainPackage);
$files = $this->parseAutoloadsType($sortedPackageMap, 'files', $mainPackage);
$exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $mainPackage);
krsort($psr0);
krsort($psr4);
return array(
'psr-0' => $psr0,
'psr-4' => $psr4,
'classmap' => $classmap,
'files' => $files,
'exclude-from-classmap' => $exclude,
);
}
public function createLoader(array $autoloads)
{
$loader = new ClassLoader();
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'];
}
$scannedFiles = array();
foreach ($autoloads['classmap'] as $dir) {
try {
$loader->addClassMap($this->generateClassMap($dir, $excluded, null, null, false, $scannedFiles));
} catch (\RuntimeException $e) {
$this->io->writeError('<warning>'.$e->getMessage().'</warning>');
}
}
}
return $loader;
}
protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode)
{
$includePaths = array();
foreach ($packageMap as $item) {
list($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;
}
$includePathsCode = '';
foreach ($includePaths as $path) {
$includePathsCode .= " " . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n";
}
return <<<EOF
<?php
// include_paths.php @generated by Composer
\$vendorDir = $vendorPathCode;
\$baseDir = $appBaseDirCode;
return array(
$includePathsCode);
EOF;
}
protected function getIncludeFilesFile(array $files, Filesystem $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode)
{
$filesCode = '';
foreach ($files as $fileIdentifier => $functionFile) {
$filesCode .= ' ' . var_export($fileIdentifier, true) . ' => '
. $this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile) . ",\n";
}
if (!$filesCode) {
return false;
}
return <<<EOF
<?php
// autoload_files.php @generated by Composer
\$vendorDir = $vendorPathCode;
\$baseDir = $appBaseDirCode;
return array(
$filesCode);
EOF;
}
protected function getPathCode(Filesystem $filesystem, $basePath, $vendorPath, $path)
{
if (!$filesystem->isAbsolutePath($path)) {
$path = $basePath . '/' . $path;
}
$path = $filesystem->normalizePath($path);
$baseDir = '';
if (strpos($path.'/', $vendorPath.'/') === 0) {
$path = substr($path, strlen($vendorPath));
$baseDir = '$vendorDir';
if ($path !== false) {
$baseDir .= " . ";
}
} 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 . (($path !== false) ? var_export($path, true) : "");
}
protected function getAutoloadFile($vendorPathToTargetDirCode, $suffix)
{
$lastChar = $vendorPathToTargetDirCode[strlen($vendorPathToTargetDirCode) - 1];
if ("'" === $lastChar || '"' === $lastChar) {
$vendorPathToTargetDirCode = substr($vendorPathToTargetDirCode, 0, -1).'/autoload_real.php'.$lastChar;
} else {
$vendorPathToTargetDirCode .= " . '/autoload_real.php'";
}
return <<<AUTOLOAD
<?php
// autoload.php @generated by Composer
require_once $vendorPathToTargetDirCode;
return ComposerAutoloaderInit$suffix::getLoader();
AUTOLOAD;
}
protected function getAutoloadRealFile($useClassMap, $useIncludePath, $targetDirLoader, $useIncludeFiles, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion = 70000)
{
$file = <<<HEADER
<?php
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit$suffix
{
private static \$loader;
public static function loadClassLoader(\$class)
{
if ('Composer\\Autoload\\ClassLoader' === \$class) {
require __DIR__ . '/ClassLoader.php';
}
}
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader()
{
if (null !== self::\$loader) {
return self::\$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit$suffix', 'loadClassLoader'), true, $prependAutoloader);
self::\$loader = \$loader = new \\Composer\\Autoload\\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit$suf