Cyr-To-Lat - Version 4.6.0

Version Description

(10.02.2020) = * Add compatibility with Polylang * Add confirmation popup before mass conversion of slugs * Improve selection of posts and tags for conversion to avoid selection of excessive items for mass conversion * Fix bug with redirection from the old slug to a new one after background slug conversion * Fix js to run in old browsers like IE

Download this release

Release Info

Developer mihdan
Plugin Icon 128x128 Cyr-To-Lat
Version 4.6.0
Comparing to
See all releases

Code changes from version 4.5.1 to 4.6.0

Files changed (235) hide show
  1. .phpcs.cache +0 -1
  2. classes/background-processes/class-conversion-process.php +3 -2
  3. classes/background-processes/class-post-conversion-process.php +8 -6
  4. classes/background-processes/class-term-conversion-process.php +12 -0
  5. classes/class-converter.php +37 -49
  6. classes/class-main.php +97 -2
  7. classes/class-requirements.php +7 -5
  8. classes/class-settings.php +70 -53
  9. classes/class-wp-cli.php +5 -0
  10. css/cyr-to-lat-admin.css +22 -1
  11. cyr-to-lat.php +9 -8
  12. dist/js/settings/app.js +2 -0
  13. languages/cyr2lat-ru_RU.mo +0 -0
  14. languages/cyr2lat-ru_RU.po +88 -58
  15. languages/cyr2lat-sv.mo +0 -0
  16. languages/cyr2lat-uk.mo +0 -0
  17. languages/en_US.pot +115 -56
  18. lib/polyfill-mbstring/README.md +13 -0
  19. lib/polyfill-mbstring/composer.json +34 -0
  20. readme.txt +11 -1
  21. vendor/10up/wp_mock/.gitmodules +0 -1
  22. vendor/10up/wp_mock/CONTRIBUTING.md +0 -26
  23. vendor/10up/wp_mock/LICENSE.md +0 -368
  24. vendor/10up/wp_mock/behat.yml +0 -9
  25. vendor/10up/wp_mock/bootstrap.php.dist +0 -5
  26. vendor/10up/wp_mock/features/bootstrap/FeatureContext.php +0 -88
  27. vendor/10up/wp_mock/features/bootstrap/FunctionsContext.php +0 -127
  28. vendor/10up/wp_mock/features/bootstrap/HooksContext.php +0 -235
  29. vendor/10up/wp_mock/features/function-mocks.feature +0 -48
  30. vendor/10up/wp_mock/features/hooks.feature +0 -228
  31. vendor/10up/wp_mock/php/WP_Mock.php +0 -543
  32. vendor/10up/wp_mock/php/WP_Mock/API/constant-mocks.php +0 -72
  33. vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/themes/vip/plugins/vip-init.php +0 -0
  34. vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/wp-includes/class-http.php +0 -0
  35. vendor/10up/wp_mock/php/WP_Mock/API/function-mocks.php +0 -161
  36. vendor/10up/wp_mock/php/WP_Mock/Action.php +0 -77
  37. vendor/10up/wp_mock/php/WP_Mock/DeprecatedListener.php +0 -119
  38. vendor/10up/wp_mock/php/WP_Mock/EventManager.php +0 -124
  39. vendor/10up/wp_mock/php/WP_Mock/Filter.php +0 -76
  40. vendor/10up/wp_mock/php/WP_Mock/Functions.php +0 -295
  41. vendor/10up/wp_mock/php/WP_Mock/Handler.php +0 -110
  42. vendor/10up/wp_mock/php/WP_Mock/Hook.php +0 -88
  43. vendor/10up/wp_mock/php/WP_Mock/HookedCallback.php +0 -107
  44. vendor/10up/wp_mock/php/WP_Mock/InvokedFilterValue.php +0 -25
  45. vendor/10up/wp_mock/php/WP_Mock/Loader.php +0 -149
  46. vendor/10up/wp_mock/php/WP_Mock/Matcher/FuzzyObject.php +0 -101
  47. vendor/10up/wp_mock/php/WP_Mock/ReturnSequence.php +0 -39
  48. vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/ExpectationsMet.php +0 -40
  49. vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/IsEqualHtml.php +0 -21
  50. vendor/10up/wp_mock/php/WP_Mock/Tools/TestCase.php +0 -319
  51. vendor/10up/wp_mock/phpdoc.xml +0 -16
  52. vendor/10up/wp_mock/phpunit.xml.dist +0 -22
  53. vendor/antecedent/patchwork/.scrutinizer.yml +0 -48
  54. vendor/antecedent/patchwork/LICENSE +0 -21
  55. vendor/antecedent/patchwork/Patchwork.php +0 -149
  56. vendor/autoload.php +1 -1
  57. vendor/composer/ClassLoader.php +32 -0
  58. vendor/composer/InstalledVersions.php +96 -608
  59. vendor/composer/autoload_classmap.php +0 -623
  60. vendor/composer/autoload_files.php +0 -13
  61. vendor/composer/autoload_namespaces.php +0 -5
  62. vendor/composer/autoload_psr4.php +0 -24
  63. vendor/composer/autoload_real.php +8 -8
  64. vendor/composer/autoload_static.php +4 -816
  65. vendor/composer/installed.json +2 -4084
  66. vendor/composer/installed.php +6 -583
  67. vendor/composer/installers/composer.json +112 -0
  68. vendor/composer/installers/src/Composer/Installers/AglInstaller.php +21 -0
  69. vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php +9 -0
  70. vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php +11 -0
  71. vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php +49 -0
  72. vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php +9 -0
  73. vendor/composer/installers/src/Composer/Installers/BaseInstaller.php +137 -0
  74. vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php +126 -0
  75. vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php +9 -0
  76. vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +72 -0
  77. vendor/composer/installers/src/Composer/Installers/ChefInstaller.php +11 -0
  78. vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php +9 -0
  79. vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php +10 -0
  80. vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php +34 -0
  81. vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php +11 -0
  82. vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php +13 -0
  83. vendor/composer/installers/src/Composer/Installers/CraftInstaller.php +35 -0
  84. vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php +21 -0
  85. vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php +10 -0
  86. vendor/composer/installers/src/Composer/Installers/DframeInstaller.php +10 -0
  87. vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php +50 -0
  88. vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php +16 -0
  89. vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php +22 -0
  90. vendor/composer/installers/src/Composer/Installers/ElggInstaller.php +9 -0
  91. vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php +12 -0
  92. vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php +29 -0
  93. vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php +10 -0
  94. vendor/composer/installers/src/Composer/Installers/FuelInstaller.php +11 -0
  95. vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php +9 -0
  96. vendor/composer/installers/src/Composer/Installers/GravInstaller.php +30 -0
  97. vendor/composer/installers/src/Composer/Installers/HuradInstaller.php +25 -0
  98. vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php +11 -0
  99. vendor/composer/installers/src/Composer/Installers/Installer.php +280 -0
  100. vendor/composer/installers/src/Composer/Installers/ItopInstaller.php +9 -0
  101. vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php +15 -0
  102. vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php +18 -0
  103. vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php +11 -0
  104. vendor/composer/installers/src/Composer/Installers/KnownInstaller.php +11 -0
  105. vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php +10 -0
  106. vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php +9 -0
  107. vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php +27 -0
  108. vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php +9 -0
  109. vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php +10 -0
  110. vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php +10 -0
  111. vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php +9 -0
  112. vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php +16 -0
  113. vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php +11 -0
  114. vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php +37 -0
  115. vendor/composer/installers/src/Composer/Installers/MakoInstaller.php +9 -0
  116. vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php +23 -0
  117. vendor/composer/installers/src/Composer/Installers/MauticInstaller.php +25 -0
  118. vendor/composer/installers/src/Composer/Installers/MayaInstaller.php +33 -0
  119. vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php +51 -0
  120. vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php +119 -0
  121. vendor/composer/installers/src/Composer/Installers/ModxInstaller.php +12 -0
  122. vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php +58 -0
  123. vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php +47 -0
  124. vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php +24 -0
  125. vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php +14 -0
  126. vendor/composer/installers/src/Composer/Installers/OxidInstaller.php +59 -0
  127. vendor/composer/installers/src/Composer/Installers/PPIInstaller.php +9 -0
  128. vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php +11 -0
  129. vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php +11 -0
  130. vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php +21 -0
  131. vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php +32 -0
  132. vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php +29 -0
  133. vendor/composer/installers/src/Composer/Installers/Plugin.php +27 -0
  134. vendor/composer/installers/src/Composer/Installers/PortoInstaller.php +9 -0
  135. vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php +10 -0
  136. vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php +11 -0
  137. vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php +63 -0
  138. vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php +24 -0
  139. vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php +10 -0
  140. vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php +10 -0
  141. vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php +10 -0
  142. vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php +22 -0
  143. vendor/composer/installers/src/Composer/Installers/SMFInstaller.php +10 -0
  144. vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php +60 -0
  145. vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php +35 -0
  146. vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php +25 -0
  147. vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php +49 -0
  148. vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php +9 -0
  149. vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php +26 -0
  150. vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php +16 -0
  151. vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php +38 -0
  152. vendor/composer/installers/src/Composer/Installers/TaoInstaller.php +12 -0
  153. vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php +12 -0
  154. vendor/composer/installers/src/Composer/Installers/TuskInstaller.php +14 -0
  155. vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php +9 -0
  156. vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php +10 -0
  157. vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php +49 -0
  158. vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php +21 -0
  159. vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php +9 -0
  160. vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php +12 -0
  161. vendor/composer/installers/src/Composer/Installers/YawikInstaller.php +32 -0
  162. vendor/composer/installers/src/Composer/Installers/ZendInstaller.php +11 -0
  163. vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php +10 -0
  164. vendor/composer/installers/src/bootstrap.php +13 -0
  165. vendor/doctrine/instantiator/.scrutinizer.yml +0 -46
  166. vendor/doctrine/instantiator/.travis.install.sh +0 -14
  167. vendor/doctrine/instantiator/CONTRIBUTING.md +0 -35
  168. vendor/doctrine/instantiator/LICENSE +0 -19
  169. vendor/doctrine/instantiator/phpmd.xml.dist +0 -27
  170. vendor/doctrine/instantiator/phpunit.xml.dist +0 -22
  171. vendor/guzzlehttp/guzzle/.php_cs +0 -23
  172. vendor/guzzlehttp/guzzle/Dockerfile +0 -18
  173. vendor/guzzlehttp/guzzle/LICENSE +0 -19
  174. vendor/guzzlehttp/guzzle/UPGRADING.md +0 -1203
  175. vendor/guzzlehttp/promises/.php_cs.dist +0 -88
  176. vendor/guzzlehttp/promises/LICENSE +0 -19
  177. vendor/guzzlehttp/promises/phpstan-baseline.neon +0 -7
  178. vendor/guzzlehttp/promises/phpstan.neon.dist +0 -10
  179. vendor/guzzlehttp/promises/psalm.xml +0 -15
  180. vendor/guzzlehttp/psr7/LICENSE +0 -19
  181. vendor/hamcrest/hamcrest-php/.gush.yml +0 -7
  182. vendor/hamcrest/hamcrest-php/CHANGES.txt +0 -173
  183. vendor/hamcrest/hamcrest-php/LICENSE.txt +0 -27
  184. vendor/hamcrest/hamcrest-php/generator/FactoryCall.php +0 -41
  185. vendor/hamcrest/hamcrest-php/generator/FactoryClass.php +0 -71
  186. vendor/hamcrest/hamcrest-php/generator/FactoryFile.php +0 -121
  187. vendor/hamcrest/hamcrest-php/generator/FactoryGenerator.php +0 -124
  188. vendor/hamcrest/hamcrest-php/generator/FactoryMethod.php +0 -231
  189. vendor/hamcrest/hamcrest-php/generator/FactoryParameter.php +0 -131
  190. vendor/hamcrest/hamcrest-php/generator/GlobalFunctionFile.php +0 -42
  191. vendor/hamcrest/hamcrest-php/generator/StaticMethodFile.php +0 -38
  192. vendor/hamcrest/hamcrest-php/generator/parts/file_header.txt +0 -7
  193. vendor/hamcrest/hamcrest-php/generator/parts/functions_footer.txt +0 -0
  194. vendor/hamcrest/hamcrest-php/generator/parts/functions_header.txt +0 -24
  195. vendor/hamcrest/hamcrest-php/generator/parts/functions_imports.txt +0 -0
  196. vendor/hamcrest/hamcrest-php/generator/parts/matchers_footer.txt +0 -1
  197. vendor/hamcrest/hamcrest-php/generator/parts/matchers_header.txt +0 -7
  198. vendor/hamcrest/hamcrest-php/generator/parts/matchers_imports.txt +0 -2
  199. vendor/hamcrest/hamcrest-php/generator/run.php +0 -37
  200. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php +0 -882
  201. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php +0 -118
  202. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php +0 -63
  203. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php +0 -59
  204. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php +0 -57
  205. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php +0 -75
  206. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php +0 -80
  207. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php +0 -73
  208. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php +0 -69
  209. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php +0 -75
  210. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php +0 -10
  211. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php +0 -132
  212. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php +0 -30
  213. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php +0 -71
  214. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php +0 -47
  215. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php +0 -59
  216. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php +0 -58
  217. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php +0 -78
  218. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php +0 -68
  219. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php +0 -56
  220. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php +0 -56
  221. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php +0 -57
  222. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php +0 -45
  223. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php +0 -93
  224. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php +0 -44
  225. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php +0 -38
  226. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php +0 -67
  227. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php +0 -44
  228. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php +0 -56
  229. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php +0 -51
  230. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php +0 -71
  231. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php +0 -95
  232. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php +0 -43
  233. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php +0 -70
  234. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php +0 -25
  235. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php +0 -9
.phpcs.cache DELETED
@@ -1 +0,0 @@
1
- {"config":{"phpVersion":70033,"phpExtensions":"25b54755e960a66bca8abdd593feffae","tabWidth":4,"encoding":"utf-8","recordErrors":true,"annotations":true,"configData":{"installed_paths":"vendor\/phpcompatibility\/php-compatibility,vendor\/phpcompatibility\/phpcompatibility-paragonie,vendor\/phpcompatibility\/phpcompatibility-wp,vendor\/wp-coding-standards\/wpcs","testVersion":"5.6-","minimum_supported_wp_version":"5.1"},"codeHash":"65dd9046d872e9e232515bf57a1dc55c","rulesetHash":"74009a863ae4785386cc97164a8ffd49"},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/cyr-to-lat.php":{"hash":"16d0d38fb5f962d9e84c5eb82528374b33188","errors":{"19":{"4":[{"message":"Expected \"Squiz Pty Ltd <products@squiz.net>\" for author tag","source":"Squiz.Commenting.FileComment.IncorrectAuthor","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":true},{"message":"The tag in position 2 should be the @subpackage tag","source":"Squiz.Commenting.FileComment.SubpackageTagOrder","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"20":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"28":{"1":[{"message":"There must be no blank line following an inline comment","source":"Squiz.Commenting.InlineComment.SpacingAfter","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":true}]},"34":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"39":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"44":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"49":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"54":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"59":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"64":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"69":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"74":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"79":{"1":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":3}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":10}},"Multiple statements on same line":{"values":{"no":16}},"Control structure defined inline":{"values":{"no":3}},"Space before operator":{"values":{"1":2}},"Space after operator":{"values":{"1":4}},"Constant name case":{"values":{"upper":9}},"Spacing before string concat":{"values":{"1":1}},"Spacing after string concat":{"values":{"1":1}},"Assigning new by reference":{"values":{"no":2}},"Object instantiation with parenthesis":{"values":{"yes":2}},"Space between classname and parenthesis":{"values":[2]},"Spacing before object operator":{"values":[1]},"Spacing after object operator":{"values":[1]}},"errorCount":23,"warningCount":1,"fixableCount":12,"numTokens":430},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-admin-notices.php":{"hash":"f010bb07a24c170ab8b886793516c4d433188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"92":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"22":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"29":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"28":{"38":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"38":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"39":{"12":[{"message":"Type hint \"string\" missing for $message","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $class","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $options","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"73":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"45":{"5":[{"message":"Expected \/\/end add_notice()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"40":{"28":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"49":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"66":{"5":[{"message":"Expected \/\/end show_notices()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"73":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"75":{"15":[{"message":"Type hint \"array\" missing for $notice","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"91":{"5":[{"message":"Expected \/\/end is_page_allowed()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"13":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":67}},"PHP short open tag used":{"values":{"no":13}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":25}},"Multiple statements on same line":{"values":{"no":13}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Space after operator":{"values":{"1":14}},"Short array syntax used":{"values":{"yes":4}},"Function has doc comment":{"values":{"yes":4}},"Function opening brace placement":{"values":{"same line":4}},"Single line array - comma after last item":{"values":{"no":1}},"Spacing before object operator":{"values":[4]},"Spacing after object operator":{"values":[4]},"Multi-line array - comma after last item":{"values":{"yes":1}},"Control structure defined inline":{"values":{"no":5}},"Space before operator":{"values":{"1":6}},"PHP constant case":{"values":{"lower":4}},"Spacing after cast statement":{"values":{"1":1}},"PHP type case":{"values":{"lower":1}}},"errorCount":17,"warningCount":2,"fixableCount":10,"numTokens":543},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-acf.php":{"hash":"b7dbc11af2c4260cba1d51160b87cf3d33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"58":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"27":{"12":[{"message":"Type hint \"Settings\" missing for $settings","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"31":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"35":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"38":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"37":{"62":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"42":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"57":{"5":[{"message":"Expected \/\/end enqueue_script()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"49":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"54":{"19":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":36}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":9}},"Multiple statements on same line":{"values":{"no":9}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":3}},"Function opening brace placement":{"values":{"same line":3}},"Spacing before object operator":{"values":[4]},"Spacing after object operator":{"values":[4]},"Space after operator":{"values":{"1":4}},"Single line array - comma after last item":{"values":{"no":2}},"Short array syntax used":{"values":{"yes":3}},"Spacing before string concat":{"values":{"1":1}},"Spacing after string concat":{"values":{"1":1}},"PHP constant case":{"values":{"lower":1}}},"errorCount":11,"warningCount":1,"fixableCount":7,"numTokens":293},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/background-processes\/class-conversion-process.php":{"hash":"fe09f83c1ee9bef2995729c06240b88c33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"103":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"36":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"41":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"52":{"5":[{"message":"Expected \/\/end task()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"56":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"61":{"5":[{"message":"Expected \/\/end complete()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"66":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"77":{"5":[{"message":"Expected \/\/end is_process_completed()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"85":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"88":{"5":[{"message":"Expected \/\/end is_process_running()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"95":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"96":{"15":[{"message":"Type hint \"string\" missing for $message","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"102":{"5":[{"message":"Expected \/\/end log()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":75}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":27}},"Multiple statements on same line":{"values":{"no":15}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":6}},"Function opening brace placement":{"values":{"same line":6}},"Spacing before object operator":{"values":[8]},"Spacing after object operator":{"values":[8]},"Space after operator":{"values":{"1":3}},"Adjacent assignments aligned":{"values":{"yes":1}},"PHP constant case":{"values":{"lower":3}},"Spacing before string concat":{"values":{"1":4}},"Spacing after string concat":{"values":{"1":4}},"Control structure defined inline":{"values":{"no":2}},"Space before operator":{"values":{"1":1}}},"errorCount":14,"warningCount":1,"fixableCount":7,"numTokens":527},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-wp-cli.php":{"hash":"b27299a55796b193f3c13af19b4ba84733188","errors":{"7":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false},{"message":"Missing @author tag in file comment","source":"Squiz.Commenting.FileComment.MissingAuthorTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"6":{"4":[{"message":"The tag in position 2 should be the @subpackage tag","source":"Squiz.Commenting.FileComment.SubpackageTagOrder","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"89":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"38":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"50":{"8":[{"message":"Parameter tags must be defined first in a doc comment","source":"Generic.Commenting.DocComment.ParamNotFirst","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":false}]},"52":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"53":{"12":[{"message":"Type hint \"array\" missing for $args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $assoc_args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"41":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}],"59":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"79":{"5":[{"message":"Expected \/\/end regenerate()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"55":{"9":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"62":{"19":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"88":{"5":[{"message":"Expected \/\/end make_progress_bar()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"19":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":57}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":20}},"Multiple statements on same line":{"values":{"no":19}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":3}},"Function opening brace placement":{"values":{"same line":3}},"Spacing before object operator":{"values":[8]},"Spacing after object operator":{"values":[8]},"Space after operator":{"values":{"1":9}},"Short array syntax used":{"values":{"yes":3}},"Control structure defined inline":{"values":{"no":2}},"Space before operator":{"values":{"1":2}},"Adjacent assignments aligned":{"values":{"yes":2}}},"errorCount":16,"warningCount":2,"fixableCount":8,"numTokens":572},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/background-processes\/class-term-conversion-process.php":{"hash":"30c280f4ec14fa14a58a76fc2fc2e6cc33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"110":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"43":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"48":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"57":{"15":[{"message":"Type hint \"stdClass\" missing for $term","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"75":{"5":[{"message":"Expected \/\/end task()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"63":{"31":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"65":{"34":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"69":{"42":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}],"94":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"79":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"84":{"5":[{"message":"Expected \/\/end complete()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"109":{"5":[{"message":"Expected \/\/end filter_term_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"92":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"105":{"81":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":75}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":25}},"Multiple statements on same line":{"values":{"no":25}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":4}},"Function opening brace placement":{"values":{"same line":4}},"Spacing before object operator":{"values":[21]},"Spacing after object operator":{"values":[21]},"Space after operator":{"values":{"1":16,"newline":1}},"Adjacent assignments aligned":{"values":{"yes":2}},"Single line array - comma after last item":{"values":{"no":4}},"Short array syntax used":{"values":{"yes":6}},"Control structure defined inline":{"values":{"no":2}},"Space before operator":{"values":{"1":4}},"Spacing before string concat":{"values":{"1":4}},"Spacing after string concat":{"values":{"1":4}},"PHP constant case":{"values":{"lower":3}},"Multi-line array - comma after last item":{"values":{"yes":1}}},"errorCount":15,"warningCount":1,"fixableCount":11,"numTokens":709},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/background-processes\/class-post-conversion-process.php":{"hash":"575cb31b50d78aa140067bebbeec931433188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"210":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"43":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"48":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"57":{"15":[{"message":"Type hint \"stdClass\" missing for $post","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"82":{"5":[{"message":"Expected \/\/end task()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"63":{"31":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"65":{"34":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"70":{"42":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}],"99":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"88":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"89":{"15":[{"message":"Type hint \"int\" missing for $post_id","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"87":{"8":[{"message":"Expected \"integer\" but found \"int\" for parameter type","source":"Squiz.Commenting.FunctionComment.IncorrectParamVarName","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"108":{"5":[{"message":"Expected \/\/end rename_attachment()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"114":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"115":{"15":[{"message":"Type hint \"int\" missing for $post_id","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"113":{"8":[{"message":"Expected \"integer\" but found \"int\" for parameter type","source":"Squiz.Commenting.FunctionComment.IncorrectParamVarName","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"131":{"5":[{"message":"Expected \/\/end rename_thumbnails()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"137":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"138":{"15":[{"message":"Type hint \"int\" missing for $attachment_id","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"136":{"8":[{"message":"Expected \"integer\" but found \"int\" for parameter type","source":"Squiz.Commenting.FunctionComment.IncorrectParamVarName","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"152":{"5":[{"message":"Expected \/\/end update_attachment_metadata()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"161":{"15":[{"message":"Type hint \"string\" missing for $file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"166":{"5":[{"message":"Expected \/\/end get_transliterated_file()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"175":{"8":[{"message":"Expected \"boolean|null\" but found \"bool|null\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"177":{"15":[{"message":"Type hint \"string\" missing for $file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $new_file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"189":{"5":[{"message":"Expected \/\/end rename_file()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"193":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"198":{"5":[{"message":"Expected \/\/end complete()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"209":{"5":[{"message":"Expected \/\/end filter_post_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":160}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":51}},"Multiple statements on same line":{"values":{"no":53}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":9}},"Function opening brace placement":{"values":{"same line":9}},"Spacing before object operator":{"values":[38]},"Spacing after object operator":{"values":[38]},"Space after operator":{"values":{"1":34}},"Adjacent assignments aligned":{"values":{"yes":7}},"Single line array - comma after last item":{"values":{"no":4}},"Short array syntax used":{"values":{"yes":4}},"Control structure defined inline":{"values":{"no":12}},"Space before operator":{"values":{"1":6}},"Spacing before string concat":{"values":{"1":21}},"Spacing after string concat":{"values":{"1":21}},"PHP constant case":{"values":{"lower":5}}},"errorCount":31,"warningCount":1,"fixableCount":18,"numTokens":1604},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-converter.php":{"hash":"c9557a1c97fbbde50d578055cda47a3033188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"287":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"83":{"12":[{"message":"Type hint \"Main\" missing for $main","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Settings\" missing for $settings","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Post_Conversion_Process\" missing for $process_all_posts","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Term_Conversion_Process\" missing for $process_all_terms","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"Admin_Notices\" missing for $admin_notices","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"92":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"96":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"100":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"98":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"99":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"104":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"140":{"5":[{"message":"Expected \/\/end conversion_notices()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"110":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"144":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"151":{"5":[{"message":"Expected \/\/end start_conversion()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"155":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"166":{"5":[{"message":"Expected \/\/end process_handler()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"172":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"173":{"12":[{"message":"Type hint \"array\" missing for $args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"53":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"176":{"5":[{"message":"Expected \/\/end convert_existing_slugs()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"182":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"183":{"15":[{"message":"Type hint \"array\" missing for $args","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"61":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"234":{"5":[{"message":"Expected \/\/end convert_existing_post_slugs()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"186":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"188":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"190":{"21":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"192":{"30":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"205":{"16":[{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false},{"message":"Variable \"$regexp\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false},{"message":"Variable \"$all_posts_sql\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false}]},"238":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"273":{"5":[{"message":"Expected \/\/end convert_existing_term_slugs()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"245":{"17":[{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false},{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false}]},"279":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"280":{"15":[{"message":"Type hint \"string\" missing for $message","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"286":{"5":[{"message":"Expected \/\/end log()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"13":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":226}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":59}},"Multiple statements on same line":{"values":{"no":59}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Constant name case":{"values":{"upper":2}},"Space after operator":{"values":{"1":36,"newline":1}},"Function has doc comment":{"values":{"yes":9}},"Function opening brace placement":{"values":{"same line":9}},"Spacing before object operator":{"values":[61]},"Spacing after object operator":{"values":[61]},"Adjacent assignments aligned":{"values":{"yes":3}},"Single line array - comma after last item":{"values":{"no":6}},"Short array syntax used":{"values":{"yes":9}},"Control structure defined inline":{"values":{"no":15}},"Space before operator":{"values":{"1":11}},"Spacing before string concat":{"values":{"1":11}},"Spacing after string concat":{"values":{"1":10,"newline":1}},"PHP constant case":{"values":{"lower":1}},"Multi-line array - comma after last item":{"values":{"yes":1}},"Spacing after cast statement":{"values":{"1":2}},"PHP type case":{"values":{"lower":2}}},"errorCount":41,"warningCount":2,"fixableCount":19,"numTokens":1811},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-requirements.php":{"hash":"0aac6da5549aea3fe4f18ccfad6437d533188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"235":{"5":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"46":{"16":[{"message":"Type hint \"Admin_Notices\" missing for $admin_notices","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"WP_Filesystem_Direct\" missing for $wp_filesystem","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"68":{"9":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"52":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"56":{"17":[{"message":"File is being conditionally included; use \"include_once\" instead","source":"PEAR.Files.IncludingFile.UseIncludeOnce","listener":"PHP_CodeSniffer\\Standards\\PEAR\\Sniffs\\Files\\IncludingFileSniff","severity":0,"fixable":true}]},"58":{"13":[{"message":"There must be no blank line following an inline comment","source":"Squiz.Commenting.InlineComment.SpacingAfter","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":true}]},"73":{"12":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"84":{"9":[{"message":"Expected \/\/end are_requirements_met()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"80":{"43":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"88":{"10":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"103":{"9":[{"message":"Expected \/\/end deactivate_plugin()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"108":{"12":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"121":{"9":[{"message":"Expected \/\/end is_php_version_required()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"112":{"17":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"126":{"12":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"169":{"9":[{"message":"Expected \/\/end is_max_input_vars_required()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"150":{"21":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"154":{"21":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"157":{"21":[{"message":"Single line block comment not allowed; use inline (\"\/\/ text\") comment instead","source":"Squiz.Commenting.BlockComment.SingleLine","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true}]},"173":{"10":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"209":{"9":[{"message":"Expected \/\/end try_to_fix_max_input_vars()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"202":{"18":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"203":{"32":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"218":{"9":[{"message":"Expected \/\/end get_user_ini_filename()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"222":{"10":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"234":{"9":[{"message":"Expected \/\/end ask_to_increase_max_input_vars()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"232":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":186}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":58}},"Multiple statements on same line":{"values":{"no":58}},"Control structure defined inline":{"values":{"no":18}},"Space before operator":{"values":{"1":15}},"Space after operator":{"values":{"1":46}},"Spacing before string concat":{"values":{"1":5}},"Spacing after string concat":{"values":{"1":5}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":8}},"Function opening brace placement":{"values":{"same line":8}},"PHP constant case":{"values":{"lower":9}},"Spacing before object operator":{"values":[36]},"Spacing after object operator":{"values":[36]},"Assigning new by reference":{"values":{"no":2}},"Object instantiation with parenthesis":{"values":{"yes":2}},"Space between classname and parenthesis":{"values":[2]},"Single line array - comma after last item":{"values":{"no":4}},"Short array syntax used":{"values":{"yes":5}},"Adjacent assignments aligned":{"values":{"yes":6}},"Closure opening brace placement":{"values":{"same line":2}},"Spacing after cast statement":{"values":{"1":1}},"PHP type case":{"values":{"lower":1}}},"errorCount":29,"warningCount":1,"fixableCount":23,"numTokens":1711},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-main.php":{"hash":"0a502575997c4ba7233236ee1ca2ce4733188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"401":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"91":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"95":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"111":{"5":[{"message":"Expected \/\/end init()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"99":{"17":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"115":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"120":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"117":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"118":{"43":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"119":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"131":{"12":[{"message":"Type hint \"string\" missing for $title","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $raw_title","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $context","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"172":{"5":[{"message":"Expected \/\/end sanitize_title()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"162":{"60":[{"message":"Variable \"$wpdb\" not allowed in double quoted string; use concatenation instead","source":"Squiz.Strings.DoubleQuoteUsage.ContainsVar","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Strings\\DoubleQuoteUsageSniff","severity":0,"fixable":false}]},"179":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"181":{"15":[{"message":"Type hint \"string\" missing for $title","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"195":{"5":[{"message":"Expected \/\/end is_wc_attribute_taxonomy()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"205":{"12":[{"message":"Type hint \"string\" missing for $filename","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $filename_raw","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"217":{"5":[{"message":"Expected \/\/end sanitize_filename()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"226":{"13":[{"message":"Type hint \"string\" missing for $string","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"238":{"5":[{"message":"Expected \/\/end fix_mac_string()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"230":{"16":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"248":{"15":[{"message":"Type hint \"string\" missing for $string","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $table","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"265":{"5":[{"message":"Expected \/\/end split_chinese_string()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"274":{"5":[{"message":"Expected \/\/end get_filtered_table()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"283":{"12":[{"message":"Type hint \"string\" missing for $string","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"296":{"5":[{"message":"Expected \/\/end transliterate()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"303":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"313":{"5":[{"message":"Expected \/\/end is_classic_editor_plugin_active()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"310":{"9":[{"message":"There must be no blank line following an inline comment","source":"Squiz.Commenting.InlineComment.SpacingAfter","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":true}]},"321":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"343":{"5":[{"message":"Expected \/\/end is_gutenberg_editor_active()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"337":{"36":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"353":{"12":[{"message":"Type hint \"array\" missing for $data","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $postarr","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}],"59":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"373":{"5":[{"message":"Expected \/\/end sanitize_post_name()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"367":{"47":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"378":{"12":[{"message":"Tag value for @see tag indented incorrectly; expected 4 spaces but found 1","source":"Generic.Commenting.DocComment.TagValueIndent","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":true}]},"381":{"8":[{"message":"Parameter tags must be defined first in a doc comment","source":"Generic.Commenting.DocComment.ParamNotFirst","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":false},{"message":"Parameter comment must start with a capital letter","source":"Squiz.Commenting.FunctionComment.ParamCommentNotCapital","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"386":{"12":[{"message":"Type hint \"string\" missing for $format","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"382":{"8":[{"message":"Parameter comment must start with a capital letter","source":"Squiz.Commenting.FunctionComment.ParamCommentNotCapital","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"400":{"5":[{"message":"Expected \/\/end prepare_in()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":323}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":113}},"Multiple statements on same line":{"values":{"no":88}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":14}},"Function opening brace placement":{"values":{"same line":14}},"Spacing before object operator":{"values":[37]},"Spacing after object operator":{"values":[37]},"Space after operator":{"values":{"1":78,"newline":1}},"Adjacent assignments aligned":{"values":{"yes":9}},"Assigning new by reference":{"values":{"no":7}},"Object instantiation with parenthesis":{"values":{"yes":7}},"Space between classname and parenthesis":{"values":[7]},"Control structure defined inline":{"values":{"no":29}},"Space before operator":{"values":{"1":33,"newline":2}},"Single line array - comma after last item":{"values":{"no":5}},"Short array syntax used":{"values":{"yes":7}},"PHP constant case":{"values":{"lower":14}},"Spacing before string concat":{"values":{"1":3}},"Spacing after string concat":{"values":{"1":3}},"Spacing after cast statement":{"values":{"1":2}},"PHP type case":{"values":{"lower":2}}},"errorCount":49,"warningCount":1,"fixableCount":28,"numTokens":2697},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-settings.php":{"hash":"4d578d7810bfbad6cb1818d057503fb333188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"768":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"73":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"80":{"5":[{"message":"Expected \/\/end __construct()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"79":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"84":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"90":{"5":[{"message":"Expected \/\/end init()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"94":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"110":{"5":[{"message":"Expected \/\/end init_hooks()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"98":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"103":{"35":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"104":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"105":{"39":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"107":{"63":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"109":{"46":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"125":{"12":[{"message":"Type hint \"array\" missing for $actions","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $plugin_file","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"array\" missing for $plugin_data","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false},{"message":"Type hint \"string\" missing for $context","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"134":{"5":[{"message":"Expected \/\/end add_settings_link()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"126":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"138":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"182":{"5":[{"message":"Expected \/\/end init_locales()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"144":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"145":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"148":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"151":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"154":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"157":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"160":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"163":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"166":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"169":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"172":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"175":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"178":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"193":{"5":[{"message":"Expected \/\/end get_current_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"197":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"218":{"5":[{"message":"Expected \/\/end init_form_fields()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"203":{"30":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"208":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"226":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"238":{"5":[{"message":"Expected \/\/end init_settings()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"251":{"5":[{"message":"Expected \/\/end get_form_fields()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"250":{"27":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"260":{"15":[{"message":"Type hint \"array\" missing for $field","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"266":{"5":[{"message":"Expected \/\/end set_defaults()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"270":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"279":{"5":[{"message":"Expected \/\/end add_settings_page()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"277":{"24":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"283":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"342":{"5":[{"message":"Expected \/\/end settings_page()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"346":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"360":{"5":[{"message":"Expected \/\/end setup_sections()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"356":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"366":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"367":{"12":[{"message":"Type hint \"array\" missing for $arguments","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"372":{"5":[{"message":"Expected \/\/end section_callback()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"376":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"399":{"5":[{"message":"Expected \/\/end setup_fields()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"393":{"17":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"405":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"406":{"12":[{"message":"Type hint \"array\" missing for $arguments","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"582":{"5":[{"message":"Expected \/\/end field_callback()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"439":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"462":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"463":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"464":{"46":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"466":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"467":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"468":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"469":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"470":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"471":{"50":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"473":{"44":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"496":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"497":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"498":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"499":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"529":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"530":{"45":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"531":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"532":{"51":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"592":{"12":[{"message":"Type hint \"string\" missing for $key","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"608":{"5":[{"message":"Expected \/\/end get_option()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"617":{"15":[{"message":"Type hint \"array\" missing for $field","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"619":{"5":[{"message":"Expected \/\/end get_field_default()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"626":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"627":{"12":[{"message":"Type hint \"string\" missing for $key","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"634":{"5":[{"message":"Expected \/\/end set_option()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"645":{"12":[{"message":"Type hint \"string\" missing for $option","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"669":{"5":[{"message":"Expected \/\/end pre_update_option_filter()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"673":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"693":{"5":[{"message":"Expected \/\/end admin_enqueue_scripts()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"682":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"690":{"13":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"697":{"6":[{"message":"Missing @return tag in function comment","source":"Squiz.Commenting.FunctionComment.MissingReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"704":{"5":[{"message":"Expected \/\/end load_plugin_textdomain()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"720":{"5":[{"message":"Expected \/\/end get_table()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"725":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"731":{"5":[{"message":"Expected \/\/end is_chinese_locale()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"728":{"28":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"742":{"15":[{"message":"Type hint \"array\" missing for $table","source":"Squiz.Commenting.FunctionComment.TypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"756":{"5":[{"message":"Expected \/\/end transpose_chinese_table()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"747":{"29":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"761":{"8":[{"message":"Expected \"boolean\" but found \"bool\" for function return type","source":"Squiz.Commenting.FunctionComment.InvalidReturn","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":true}]},"767":{"5":[{"message":"Expected \/\/end is_options_screen()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"15":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":671}},"PHP short open tag used":{"values":{"no":53}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":196}},"Multiple statements on same line":{"values":{"no":139}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Constant name case":{"values":{"upper":4}},"Space after operator":{"values":{"1":156,"newline":1}},"Short array syntax used":{"values":{"yes":51}},"Function has doc comment":{"values":{"yes":26}},"Function opening brace placement":{"values":{"same line":26}},"Single line array - comma after last item":{"values":{"no":13}},"Spacing before object operator":{"values":[72]},"Spacing after object operator":{"values":[72]},"Spacing before string concat":{"values":{"1":18}},"Spacing after string concat":{"values":{"1":16,"newline":2}},"Multi-line array - comma after last item":{"values":{"yes":22}},"Control structure defined inline":{"values":{"no":40}},"Space before operator":{"values":{"1":43}},"PHP constant case":{"values":{"lower":10}},"Adjacent assignments aligned":{"values":{"yes":5}}},"errorCount":107,"warningCount":2,"fixableCount":80,"numTokens":5301},"\/home\/runner\/work\/cyr2lat\/cyr2lat\/classes\/class-conversion-tables.php":{"hash":"789faca9a24f86a4633a1899259a582b33188","errors":{"6":{"2":[{"message":"Missing @subpackage tag in file comment","source":"Squiz.Commenting.FileComment.MissingSubpackageTag","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FileCommentSniff","severity":0,"fixable":false}]},"1226":{"1":[{"message":"Expected \/\/end class","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"24":{"8":[{"message":"Parameter tags must be defined first in a doc comment","source":"Generic.Commenting.DocComment.ParamNotFirst","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Commenting\\DocCommentSniff","severity":0,"fixable":false}]},"28":{"19":[{"message":"Type hint \"string\" missing for $locale","source":"Squiz.Commenting.FunctionComment.ScalarTypeHintMissing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\FunctionCommentSniff","severity":0,"fixable":false}]},"1198":{"5":[{"message":"Expected \/\/end get()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"32":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"101":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"172":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"248":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"315":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"381":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"436":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"520":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"563":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"667":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"714":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"1119":{"26":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]},"1225":{"5":[{"message":"Expected \/\/end get_fix_table_for_mac()","source":"Squiz.Commenting.ClosingDeclarationComment.Missing","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClosingDeclarationCommentSniff","severity":0,"fixable":true}]},"1207":{"9":[{"message":"Block comments must be started with \/*","source":"Squiz.Commenting.BlockComment.WrongStart","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\BlockCommentSniff","severity":0,"fixable":true},{"message":"Inline doc block comments are not allowed; use \"\/* Comment *\/\" or \"\/\/ Comment\" instead","source":"Squiz.Commenting.InlineComment.DocBlock","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\InlineCommentSniff","severity":0,"fixable":false}]},"1219":{"16":[{"message":"Short array syntax is not allowed","source":"Generic.Arrays.DisallowShortArraySyntax.Found","listener":"PHP_CodeSniffer\\Standards\\Generic\\Sniffs\\Arrays\\DisallowShortArraySyntaxSniff","severity":0,"fixable":true}]}},"warnings":{"1":{"1":[{"message":"The \"WordPress.WP.TimezoneChange\" sniff has been deprecated. Use the \"WordPress.DateTime.RestrictedFunctions\" sniff instead. Please update your custom ruleset.","source":"WordPress.WP.TimezoneChange.DeprecatedSniff","listener":"WordPressCS\\WordPress\\Sniffs\\WP\\TimezoneChangeSniff","severity":0,"fixable":false}]},"15":{"4":[{"message":"@class tag is not allowed in class comment","source":"Squiz.Commenting.ClassComment.TagNotAllowed","listener":"PHP_CodeSniffer\\Standards\\Squiz\\Sniffs\\Commenting\\ClassCommentSniff","severity":0,"fixable":false}]}},"metrics":{"File has doc comment":{"values":{"yes":1}},"Line indent":{"values":{"tabs":1204}},"PHP short open tag used":{"values":{"no":1}},"PHP closing tag at end of PHP-only file":{"values":{"no":1}},"EOL char":{"values":{"\\n":1}},"Newline at EOF":{"values":{"yes":1}},"PHP keyword case":{"values":{"lower":42}},"Multiple statements on same line":{"values":{"no":27}},"Class has doc comment":{"values":{"yes":1}},"Class opening brace placement":{"values":{"same line":1}},"Function has doc comment":{"values":{"yes":2}},"Function opening brace placement":{"values":{"same line":2}},"Control structure defined inline":{"values":{"no":4}},"Space after operator":{"values":{"1":1112}},"Multi-line array - comma after last item":{"values":{"yes":13}},"Short array syntax used":{"values":{"yes":13}},"Space before operator":{"values":{"1":3}},"Spacing before object operator":{"values":[3]},"Spacing after object operator":{"values":[3]}},"errorCount":21,"warningCount":2,"fixableCount":17,"numTokens":9463}}
 
classes/background-processes/class-conversion-process.php CHANGED
@@ -92,12 +92,13 @@ class Conversion_Process extends WP_Background_Process {
92
  * Log
93
  *
94
  * @param string $message Message to log.
 
 
95
  */
96
  protected function log( $message ) {
97
  if ( defined( 'WP_DEBUG_LOG' ) && constant( 'WP_DEBUG_LOG' ) ) {
98
- // @phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_error_log
99
  error_log( 'Cyr To Lat: ' . $message );
100
- // @phpcs:enable WordPress.PHP.DevelopmentFunctions.error_log_error_log
101
  }
102
  }
103
  }
92
  * Log
93
  *
94
  * @param string $message Message to log.
95
+ *
96
+ * @noinspection ForgottenDebugOutputInspection
97
  */
98
  protected function log( $message ) {
99
  if ( defined( 'WP_DEBUG_LOG' ) && constant( 'WP_DEBUG_LOG' ) ) {
100
+ // @phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
101
  error_log( 'Cyr To Lat: ' . $message );
 
102
  }
103
  }
104
  }
classes/background-processes/class-post-conversion-process.php CHANGED
@@ -53,23 +53,24 @@ class Post_Conversion_Process extends Conversion_Process {
53
  * @param stdClass $post Queue item to iterate over.
54
  *
55
  * @return mixed
 
56
  */
57
  protected function task( $post ) {
58
  global $wpdb;
59
 
60
- $this->post = $post;
61
- $post_name = urldecode( $post->post_name );
62
 
63
  add_filter( 'locale', [ $this, 'filter_post_locale' ] );
64
- $transliterated_name = $this->main->transliterate( $post_name );
65
  remove_filter( 'locale', [ $this, 'filter_post_locale' ] );
66
 
67
- if ( $transliterated_name !== $post_name ) {
68
- update_post_meta( $post->ID, '_wp_old_slug', $post_name );
69
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery
70
  $wpdb->update( $wpdb->posts, [ 'post_name' => rawurlencode( $transliterated_name ) ], [ 'ID' => $post->ID ] );
71
 
72
- $this->log( __( 'Post slug converted:', 'cyr2lat' ) . ' ' . $post_name . ' => ' . $transliterated_name );
73
 
74
  if ( 'attachment' === $post->post_type ) {
75
  $this->rename_attachment( $post->ID );
@@ -203,6 +204,7 @@ class Post_Conversion_Process extends Conversion_Process {
203
  * @return string
204
  */
205
  public function filter_post_locale() {
 
206
  $wpml_post_language_details = apply_filters( 'wpml_post_language_details', false, $this->post->ID );
207
 
208
  return isset( $wpml_post_language_details['locale'] ) ? $wpml_post_language_details['locale'] : $this->locale;
53
  * @param stdClass $post Queue item to iterate over.
54
  *
55
  * @return mixed
56
+ * @noinspection PhpParameterNameChangedDuringInheritanceInspection
57
  */
58
  protected function task( $post ) {
59
  global $wpdb;
60
 
61
+ $this->post = $post;
62
+ $decoded_post_name = urldecode( $post->post_name );
63
 
64
  add_filter( 'locale', [ $this, 'filter_post_locale' ] );
65
+ $transliterated_name = $this->main->transliterate( $decoded_post_name );
66
  remove_filter( 'locale', [ $this, 'filter_post_locale' ] );
67
 
68
+ if ( $transliterated_name !== $decoded_post_name ) {
69
+ update_post_meta( $post->ID, '_wp_old_slug', $post->post_name );
70
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery
71
  $wpdb->update( $wpdb->posts, [ 'post_name' => rawurlencode( $transliterated_name ) ], [ 'ID' => $post->ID ] );
72
 
73
+ $this->log( __( 'Post slug converted:', 'cyr2lat' ) . ' ' . $decoded_post_name . ' => ' . $transliterated_name );
74
 
75
  if ( 'attachment' === $post->post_type ) {
76
  $this->rename_attachment( $post->ID );
204
  * @return string
205
  */
206
  public function filter_post_locale() {
207
+ // This is common filter for WPML and Polylang, since Polylang supports wpml_post_language_details filter.
208
  $wpml_post_language_details = apply_filters( 'wpml_post_language_details', false, $this->post->ID );
209
 
210
  return isset( $wpml_post_language_details['locale'] ) ? $wpml_post_language_details['locale'] : $this->locale;
classes/background-processes/class-term-conversion-process.php CHANGED
@@ -53,6 +53,7 @@ class Term_Conversion_Process extends Conversion_Process {
53
  * @param stdClass $term Queue item to iterate over.
54
  *
55
  * @return mixed
 
56
  */
57
  protected function task( $term ) {
58
  global $wpdb;
@@ -89,6 +90,17 @@ class Term_Conversion_Process extends Conversion_Process {
89
  * @return string
90
  */
91
  public function filter_term_locale() {
 
 
 
 
 
 
 
 
 
 
 
92
  $args = [
93
  'element_type' => $this->term->taxonomy,
94
  'element_id' => $this->term->term_taxonomy_id,
53
  * @param stdClass $term Queue item to iterate over.
54
  *
55
  * @return mixed
56
+ * @noinspection PhpParameterNameChangedDuringInheritanceInspection
57
  */
58
  protected function task( $term ) {
59
  global $wpdb;
90
  * @return string
91
  */
92
  public function filter_term_locale() {
93
+ // Polylang filter.
94
+ if ( class_exists( 'Polylang' ) ) {
95
+ $pll_pll_get_term_language = pll_get_term_language( $this->term->term_taxonomy_id );
96
+ if ( false !== $pll_pll_get_term_language ) {
97
+ return $pll_pll_get_term_language;
98
+ }
99
+
100
+ return $this->locale;
101
+ }
102
+
103
+ // WPML filter.
104
  $args = [
105
  'element_type' => $this->term->taxonomy,
106
  'element_id' => $this->term->term_taxonomy_id,
classes/class-converter.php CHANGED
@@ -20,14 +20,14 @@ class Converter {
20
  const QUERY_ARG = 'cyr-to-lat-convert';
21
 
22
  /**
23
- * Regex of prohibited chars in slugs
24
- * [^A-Za-z0-9[.apostrophe.][.underscore.][.period.][.hyphen.]]+
25
- * So, allowed chars are A-Za-z0-9[.apostrophe.][.underscore.][.period.][.hyphen.]
26
- * % is not allowed in the slug, but could present if slug is url_encoded
27
  *
28
  * @link https://dev.mysql.com/doc/refman/5.6/en/regexp.html
29
  */
30
- const PROHIBITED_CHARS_REGEX = "[^A-Za-z0-9'_\.\-]+";
31
 
32
  /**
33
  * Plugin main class.
@@ -36,13 +36,6 @@ class Converter {
36
  */
37
  private $main;
38
 
39
- /**
40
- * Plugin settings.
41
- *
42
- * @var Settings
43
- */
44
- private $settings;
45
-
46
  /**
47
  * Background process to convert posts.
48
  *
@@ -69,20 +62,18 @@ class Converter {
69
  *
70
  * @var string
71
  */
72
- private $option_group = '';
73
 
74
  /**
75
  * Converter constructor.
76
  *
77
  * @param Main $main Plugin main class.
78
- * @param Settings $settings Plugin settings.
79
  * @param Post_Conversion_Process $process_all_posts Post conversion process.
80
  * @param Term_Conversion_Process $process_all_terms Term conversion process.
81
  * @param Admin_Notices $admin_notices Admin notices.
82
  */
83
- public function __construct( $main, $settings, $process_all_posts, $process_all_terms, $admin_notices ) {
84
  $this->main = $main;
85
- $this->settings = $settings;
86
  $this->option_group = Settings::OPTION_GROUP;
87
  $this->process_all_posts = $process_all_posts;
88
  $this->process_all_terms = $process_all_terms;
@@ -143,7 +134,7 @@ class Converter {
143
  * Check if we have to start conversion and start it.
144
  */
145
  public function start_conversion() {
146
- if ( ! isset( $_POST['cyr2lat-convert'] ) ) {
147
  return;
148
  }
149
  check_admin_referer( $this->option_group . '-options' );
@@ -154,7 +145,7 @@ class Converter {
154
  * Process handler.
155
  */
156
  public function process_handler() {
157
- if ( ! isset( $_GET[ self::QUERY_ARG ] ) || ! isset( $_GET['_wpnonce'] ) ) {
158
  return;
159
  }
160
 
@@ -192,17 +183,17 @@ class Converter {
192
  'post_status' => [ 'publish', 'future', 'private' ],
193
  ];
194
 
195
- $args = wp_parse_args( $args, $defaults );
196
 
197
- $regexp = $wpdb->prepare( '%s', self::PROHIBITED_CHARS_REGEX );
198
 
199
  $post_sql =
200
- 'post_status IN (' . $this->main->prepare_in( $args['post_status'] ) . ')' .
201
- ' AND post_type IN (' . $this->main->prepare_in( $args['post_type'] ) . ')';
202
  $media_sql = "post_status = 'inherit' AND post_type = 'attachment'";
203
  $all_posts_sql = '(' . $post_sql . ') OR (' . $media_sql . ')';
204
 
205
- $sql = "SELECT ID, post_name, post_type FROM $wpdb->posts WHERE post_name REGEXP($regexp) AND ($all_posts_sql)";
206
 
207
  // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
208
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery
@@ -218,19 +209,17 @@ class Converter {
218
  return;
219
  }
220
 
221
- if ( $posts ) {
222
- foreach ( (array) $posts as $post ) {
223
- $this->process_all_posts->push_to_queue( $post );
224
- }
225
 
226
- $this->log( __( 'Post slugs conversion started.', 'cyr2lat' ) );
227
- $this->admin_notices->add_notice(
228
- __( 'Cyr To Lat started conversion of existing post slugs.', 'cyr2lat' ),
229
- 'notice notice-info is-dismissible'
230
- );
231
 
232
- $this->process_all_posts->save()->dispatch();
233
- }
234
  }
235
 
236
  /**
@@ -243,8 +232,8 @@ class Converter {
243
  $terms = $wpdb->get_results(
244
  $wpdb->prepare(
245
  "SELECT t.term_id, slug, tt.taxonomy, tt.term_taxonomy_id FROM $wpdb->terms t, $wpdb->term_taxonomy tt
246
- WHERE t.slug REGEXP(%s) AND tt.term_id = t.term_id",
247
- self::PROHIBITED_CHARS_REGEX
248
  )
249
  );
250
 
@@ -257,31 +246,30 @@ class Converter {
257
  return;
258
  }
259
 
260
- if ( $terms ) {
261
- foreach ( (array) $terms as $term ) {
262
- $this->process_all_terms->push_to_queue( $term );
263
- }
264
 
265
- $this->log( __( 'Term slugs conversion started.', 'cyr2lat' ) );
266
- $this->admin_notices->add_notice(
267
- __( 'Cyr To Lat started conversion of existing term slugs.', 'cyr2lat' ),
268
- 'notice notice-info is-dismissible'
269
- );
270
 
271
- $this->process_all_terms->save()->dispatch();
272
- }
273
  }
274
 
275
  /**
276
  * Log.
277
  *
278
  * @param string $message Message to log.
 
 
279
  */
280
  protected function log( $message ) {
281
  if ( defined( 'WP_DEBUG_LOG' ) && constant( 'WP_DEBUG_LOG' ) ) {
282
- // @phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_error_log
283
  error_log( 'Cyr To Lat: ' . $message );
284
- // @phpcs:enable WordPress.PHP.DevelopmentFunctions.error_log_error_log
285
  }
286
  }
287
  }
20
  const QUERY_ARG = 'cyr-to-lat-convert';
21
 
22
  /**
23
+ * Regex of allowed chars in lower-cased slugs.
24
+ *
25
+ * Allowed chars are a-z, 0-9, [.apostrophe.], [.hyphen.], [.period.], [.underscore.],
26
+ * or any url-encoded character in the range \x20-x7F.
27
  *
28
  * @link https://dev.mysql.com/doc/refman/5.6/en/regexp.html
29
  */
30
+ const ALLOWED_CHARS_REGEX = "^([a-z0-9\'-._]|%[2-7][0-F])+$";
31
 
32
  /**
33
  * Plugin main class.
36
  */
37
  private $main;
38
 
 
 
 
 
 
 
 
39
  /**
40
  * Background process to convert posts.
41
  *
62
  *
63
  * @var string
64
  */
65
+ private $option_group;
66
 
67
  /**
68
  * Converter constructor.
69
  *
70
  * @param Main $main Plugin main class.
 
71
  * @param Post_Conversion_Process $process_all_posts Post conversion process.
72
  * @param Term_Conversion_Process $process_all_terms Term conversion process.
73
  * @param Admin_Notices $admin_notices Admin notices.
74
  */
75
+ public function __construct( $main, $process_all_posts, $process_all_terms, $admin_notices ) {
76
  $this->main = $main;
 
77
  $this->option_group = Settings::OPTION_GROUP;
78
  $this->process_all_posts = $process_all_posts;
79
  $this->process_all_terms = $process_all_terms;
134
  * Check if we have to start conversion and start it.
135
  */
136
  public function start_conversion() {
137
+ if ( ! isset( $_POST['ctl-convert'] ) ) {
138
  return;
139
  }
140
  check_admin_referer( $this->option_group . '-options' );
145
  * Process handler.
146
  */
147
  public function process_handler() {
148
+ if ( ! isset( $_GET[ self::QUERY_ARG ], $_GET['_wpnonce'] ) ) {
149
  return;
150
  }
151
 
183
  'post_status' => [ 'publish', 'future', 'private' ],
184
  ];
185
 
186
+ $parsed_args = wp_parse_args( $args, $defaults );
187
 
188
+ $regexp = $wpdb->prepare( '%s', self::ALLOWED_CHARS_REGEX );
189
 
190
  $post_sql =
191
+ 'post_status IN (' . $this->main->prepare_in( $parsed_args['post_status'] ) . ')' .
192
+ ' AND post_type IN (' . $this->main->prepare_in( $parsed_args['post_type'] ) . ')';
193
  $media_sql = "post_status = 'inherit' AND post_type = 'attachment'";
194
  $all_posts_sql = '(' . $post_sql . ') OR (' . $media_sql . ')';
195
 
196
+ $sql = "SELECT ID, post_name, post_type FROM $wpdb->posts WHERE LOWER(post_name) NOT REGEXP($regexp) AND ($all_posts_sql)";
197
 
198
  // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
199
  // phpcs:ignore WordPress.DB.DirectDatabaseQuery
209
  return;
210
  }
211
 
212
+ foreach ( (array) $posts as $post ) {
213
+ $this->process_all_posts->push_to_queue( $post );
214
+ }
 
215
 
216
+ $this->log( __( 'Post slugs conversion started.', 'cyr2lat' ) );
217
+ $this->admin_notices->add_notice(
218
+ __( 'Cyr To Lat started conversion of existing post slugs.', 'cyr2lat' ),
219
+ 'notice notice-info is-dismissible'
220
+ );
221
 
222
+ $this->process_all_posts->save()->dispatch();
 
223
  }
224
 
225
  /**
232
  $terms = $wpdb->get_results(
233
  $wpdb->prepare(
234
  "SELECT t.term_id, slug, tt.taxonomy, tt.term_taxonomy_id FROM $wpdb->terms t, $wpdb->term_taxonomy tt
235
+ WHERE LOWER(t.slug) NOT REGEXP(%s) AND tt.term_id = t.term_id",
236
+ self::ALLOWED_CHARS_REGEX
237
  )
238
  );
239
 
246
  return;
247
  }
248
 
249
+ foreach ( (array) $terms as $term ) {
250
+ $this->process_all_terms->push_to_queue( $term );
251
+ }
 
252
 
253
+ $this->log( __( 'Term slugs conversion started.', 'cyr2lat' ) );
254
+ $this->admin_notices->add_notice(
255
+ __( 'Cyr To Lat started conversion of existing term slugs.', 'cyr2lat' ),
256
+ 'notice notice-info is-dismissible'
257
+ );
258
 
259
+ $this->process_all_terms->save()->dispatch();
 
260
  }
261
 
262
  /**
263
  * Log.
264
  *
265
  * @param string $message Message to log.
266
+ *
267
+ * @noinspection ForgottenDebugOutputInspection
268
  */
269
  protected function log( $message ) {
270
  if ( defined( 'WP_DEBUG_LOG' ) && constant( 'WP_DEBUG_LOG' ) ) {
271
+ // @phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
272
  error_log( 'Cyr To Lat: ' . $message );
 
273
  }
274
  }
275
  }
classes/class-main.php CHANGED
@@ -65,6 +65,13 @@ class Main {
65
  */
66
  protected $acf;
67
 
 
 
 
 
 
 
 
68
  /**
69
  * Main constructor.
70
  */
@@ -75,7 +82,6 @@ class Main {
75
  $this->admin_notices = new Admin_Notices();
76
  $this->converter = new Converter(
77
  $this,
78
- $this->settings,
79
  $this->process_all_posts,
80
  $this->process_all_terms,
81
  $this->admin_notices
@@ -92,6 +98,8 @@ class Main {
92
 
93
  /**
94
  * Init class.
 
 
95
  */
96
  public function init() {
97
  if ( defined( 'WP_CLI' ) && constant( 'WP_CLI' ) ) {
@@ -117,6 +125,10 @@ class Main {
117
  add_filter( 'sanitize_title', [ $this, 'sanitize_title' ], 9, 3 );
118
  add_filter( 'sanitize_file_name', [ $this, 'sanitize_filename' ], 10, 2 );
119
  add_filter( 'wp_insert_post_data', [ $this, 'sanitize_post_name' ], 10, 2 );
 
 
 
 
120
  }
121
 
122
  /**
@@ -127,6 +139,7 @@ class Main {
127
  * @param string $context The context for which the title is being sanitized.
128
  *
129
  * @return string
 
130
  */
131
  public function sanitize_title( $title, $raw_title = '', $context = '' ) {
132
  global $wpdb;
@@ -201,6 +214,7 @@ class Main {
201
  * @param string $filename_raw The filename prior to sanitization.
202
  *
203
  * @return string
 
204
  */
205
  public function sanitize_filename( $filename, $filename_raw ) {
206
  $pre = apply_filters( 'ctl_pre_sanitize_filename', false, $filename );
@@ -289,7 +303,7 @@ class Main {
289
 
290
  if ( function_exists( 'iconv' ) ) {
291
  $new_string = iconv( 'UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string );
292
- $string = $new_string ? $new_string : $string;
293
  }
294
 
295
  return $string;
@@ -301,6 +315,7 @@ class Main {
301
  * @link https://kagg.eu/how-to-catch-gutenberg/
302
  *
303
  * @return bool
 
304
  */
305
  private function is_classic_editor_plugin_active() {
306
  // @codeCoverageIgnoreStart
@@ -349,6 +364,7 @@ class Main {
349
  * @param array $postarr An array of sanitized, but otherwise unmodified post data.
350
  *
351
  * @return mixed
 
352
  */
353
  public function sanitize_post_name( $data, $postarr = [] ) {
354
  global $current_screen;
@@ -372,6 +388,85 @@ class Main {
372
  return $data;
373
  }
374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
  /**
376
  * Changes array of items into string of items, separated by comma and sql-escaped
377
  *
65
  */
66
  protected $acf;
67
 
68
+ /**
69
+ * Polylang locale.
70
+ *
71
+ * @var string
72
+ */
73
+ private $pll_locale = false;
74
+
75
  /**
76
  * Main constructor.
77
  */
82
  $this->admin_notices = new Admin_Notices();
83
  $this->converter = new Converter(
84
  $this,
 
85
  $this->process_all_posts,
86
  $this->process_all_terms,
87
  $this->admin_notices
98
 
99
  /**
100
  * Init class.
101
+ *
102
+ * @noinspection PhpUndefinedClassInspection
103
  */
104
  public function init() {
105
  if ( defined( 'WP_CLI' ) && constant( 'WP_CLI' ) ) {
125
  add_filter( 'sanitize_title', [ $this, 'sanitize_title' ], 9, 3 );
126
  add_filter( 'sanitize_file_name', [ $this, 'sanitize_filename' ], 10, 2 );
127
  add_filter( 'wp_insert_post_data', [ $this, 'sanitize_post_name' ], 10, 2 );
128
+
129
+ if ( class_exists( 'Polylang' ) ) {
130
+ add_filter( 'locale', [ $this, 'pll_locale_filter' ] );
131
+ }
132
  }
133
 
134
  /**
139
  * @param string $context The context for which the title is being sanitized.
140
  *
141
  * @return string
142
+ * @noinspection PhpUnusedParameterInspection
143
  */
144
  public function sanitize_title( $title, $raw_title = '', $context = '' ) {
145
  global $wpdb;
214
  * @param string $filename_raw The filename prior to sanitization.
215
  *
216
  * @return string
217
+ * @noinspection PhpUnusedParameterInspection
218
  */
219
  public function sanitize_filename( $filename, $filename_raw ) {
220
  $pre = apply_filters( 'ctl_pre_sanitize_filename', false, $filename );
303
 
304
  if ( function_exists( 'iconv' ) ) {
305
  $new_string = iconv( 'UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string );
306
+ return $new_string ?: $string;
307
  }
308
 
309
  return $string;
315
  * @link https://kagg.eu/how-to-catch-gutenberg/
316
  *
317
  * @return bool
318
+ * @noinspection PhpIncludeInspection
319
  */
320
  private function is_classic_editor_plugin_active() {
321
  // @codeCoverageIgnoreStart
364
  * @param array $postarr An array of sanitized, but otherwise unmodified post data.
365
  *
366
  * @return mixed
367
+ * @noinspection PhpUnusedParameterInspection
368
  */
369
  public function sanitize_post_name( $data, $postarr = [] ) {
370
  global $current_screen;
388
  return $data;
389
  }
390
 
391
+ /**
392
+ * Locale filter for Polylang.
393
+ *
394
+ * @param string $locale Locale.
395
+ *
396
+ * @return string
397
+ */
398
+ public function pll_locale_filter( $locale ) {
399
+ if ( $this->pll_locale ) {
400
+ return $this->pll_locale;
401
+ }
402
+
403
+ if ( defined( 'REST_REQUEST' ) && constant( 'REST_REQUEST' ) ) {
404
+ $rest_server = rest_get_server();
405
+ $data = json_decode( $rest_server::get_raw_data(), false );
406
+ if ( isset( $data->lang ) ) {
407
+ $this->pll_locale = $data->lang;
408
+
409
+ return $this->pll_locale;
410
+ }
411
+
412
+ return $locale;
413
+ }
414
+
415
+ if ( ! is_admin() ) {
416
+ return $locale;
417
+ }
418
+
419
+ $pll_get_post_language = false;
420
+
421
+ // phpcs:disable WordPress.Security.NonceVerification.Missing
422
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
423
+ if ( isset( $_POST['post_ID'] ) ) {
424
+ $pll_get_post_language = pll_get_post_language(
425
+ (int) filter_input( INPUT_POST, 'post_ID', FILTER_SANITIZE_STRING )
426
+ );
427
+ }
428
+ if ( isset( $_POST['pll_post_id'] ) ) {
429
+ $pll_get_post_language = pll_get_post_language(
430
+ (int) filter_input( INPUT_POST, 'pll_post_id', FILTER_SANITIZE_STRING )
431
+ );
432
+ }
433
+ if ( isset( $_GET['post'] ) ) {
434
+ $pll_get_post_language = pll_get_post_language(
435
+ (int) filter_input( INPUT_GET, 'post', FILTER_SANITIZE_STRING )
436
+ );
437
+ }
438
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
439
+ // phpcs:enable WordPress.Security.NonceVerification.Missing
440
+
441
+ if ( false !== $pll_get_post_language ) {
442
+ $this->pll_locale = $pll_get_post_language;
443
+
444
+ return $this->pll_locale;
445
+ }
446
+
447
+ $pll_get_term_language = false;
448
+
449
+ // phpcs:disable WordPress.Security.NonceVerification.Missing
450
+ if ( isset( $_POST['term_lang_choice'] ) ) {
451
+ $pll_get_language = PLL()->model->get_language(
452
+ filter_input( INPUT_POST, 'term_lang_choice', FILTER_SANITIZE_STRING )
453
+ );
454
+
455
+ if ( $pll_get_language ) {
456
+ $pll_get_term_language = $pll_get_language->slug;
457
+ }
458
+ }
459
+ // phpcs:enable WordPress.Security.NonceVerification.Missing
460
+
461
+ if ( false !== $pll_get_term_language ) {
462
+ $this->pll_locale = $pll_get_term_language;
463
+
464
+ return $this->pll_locale;
465
+ }
466
+
467
+ return $locale;
468
+ }
469
+
470
  /**
471
  * Changes array of items into string of items, separated by comma and sql-escaped
472
  *
classes/class-requirements.php CHANGED
@@ -42,6 +42,8 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
42
  *
43
  * @param Admin_Notices $admin_notices Admin notices.
44
  * @param WP_Filesystem_Direct $wp_filesystem File system.
 
 
45
  */
46
  public function __construct( $admin_notices = null, $wp_filesystem = null ) {
47
  $this->admin_notices = $admin_notices;
@@ -106,6 +108,7 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
106
  * Check php version.
107
  *
108
  * @return bool
 
109
  */
110
  private function is_php_version_required() {
111
  if ( version_compare( constant( 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION' ), phpversion(), '>' ) ) {
@@ -143,7 +146,7 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
143
 
144
  if ( constant( 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) > ini_get( 'max_input_vars' ) ) {
145
  $mtime = $this->wp_filesystem->mtime( $this->get_user_ini_filename() );
146
- $ini_ttl = intval( ini_get( 'user_ini.cache_ttl' ) );
147
  $time_left = ( $mtime + $ini_ttl ) - time();
148
 
149
  if ( 0 < $time_left ) {
@@ -176,12 +179,11 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
176
 
177
  $content = $this->wp_filesystem->get_contents( $user_ini_filename );
178
 
179
- $content = str_replace( "\r\n", "\n", $content );
180
- $content = str_replace( "\r", "\n", $content );
181
  $content_arr = explode( "\n", $content );
182
 
183
  array_map(
184
- function ( $line ) use ( &$value ) {
185
  if ( preg_match( '/(?<![; ])\s*?(max_input_vars).*?=\D*?(\d+)/i', $line, $matches ) ) {
186
  $value = (int) $matches[2];
187
  }
@@ -195,7 +197,7 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
195
 
196
  $content_arr = array_filter(
197
  $content_arr,
198
- function ( $line ) {
199
  return false === strpos( $line, 'max_input_vars' );
200
  }
201
  );
42
  *
43
  * @param Admin_Notices $admin_notices Admin notices.
44
  * @param WP_Filesystem_Direct $wp_filesystem File system.
45
+ *
46
+ * @noinspection PhpIncludeInspection
47
  */
48
  public function __construct( $admin_notices = null, $wp_filesystem = null ) {
49
  $this->admin_notices = $admin_notices;
108
  * Check php version.
109
  *
110
  * @return bool
111
+ * @noinspection ConstantCanBeUsedInspection
112
  */
113
  private function is_php_version_required() {
114
  if ( version_compare( constant( 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION' ), phpversion(), '>' ) ) {
146
 
147
  if ( constant( 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) > ini_get( 'max_input_vars' ) ) {
148
  $mtime = $this->wp_filesystem->mtime( $this->get_user_ini_filename() );
149
+ $ini_ttl = (int) ini_get( 'user_ini.cache_ttl' );
150
  $time_left = ( $mtime + $ini_ttl ) - time();
151
 
152
  if ( 0 < $time_left ) {
179
 
180
  $content = $this->wp_filesystem->get_contents( $user_ini_filename );
181
 
182
+ $content = str_replace( [ "\r\n", "\r" ], "\n", $content );
 
183
  $content_arr = explode( "\n", $content );
184
 
185
  array_map(
186
+ static function ( $line ) use ( &$value ) {
187
  if ( preg_match( '/(?<![; ])\s*?(max_input_vars).*?=\D*?(\d+)/i', $line, $matches ) ) {
188
  $value = (int) $matches[2];
189
  }
197
 
198
  $content_arr = array_filter(
199
  $content_arr,
200
+ static function ( $line ) {
201
  return false === strpos( $line, 'max_input_vars' );
202
  }
203
  );
classes/class-settings.php CHANGED
@@ -18,52 +18,47 @@ class Settings {
18
 
19
  /**
20
  * Admin screen id.
21
- *
22
- * @var string
23
  */
24
  const SCREEN_ID = 'settings_page_cyr-to-lat';
25
 
26
  /**
27
  * Option group.
28
- *
29
- * @var string
30
  */
31
  const OPTION_GROUP = 'cyr_to_lat_group';
32
 
33
  /**
34
  * Option page.
35
- *
36
- * @var string
37
  */
38
  const PAGE = 'cyr-to-lat';
39
 
40
  /**
41
  * Plugin options name.
42
- *
43
- * @var string
44
  */
45
  const OPTION_NAME = 'cyr_to_lat_settings';
46
 
47
  /**
48
- * Form fields.
49
- *
50
- * @var array
51
  */
52
- public $form_fields;
53
 
54
  /**
55
- * Plugin options.
 
 
 
 
 
56
  *
57
  * @var array
58
  */
59
- public $settings;
60
 
61
  /**
62
  * Plugin options.
63
  *
64
  * @var array
65
  */
66
- private $options;
67
 
68
  /**
69
  * Served locales.
@@ -107,6 +102,7 @@ class Settings {
107
  add_filter( 'pre_update_option_' . self::OPTION_NAME, [ $this, 'pre_update_option_filter' ], 10, 3 );
108
 
109
  add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
 
110
  }
111
 
112
  /**
@@ -121,6 +117,7 @@ class Settings {
121
  * 'recently_activated', 'upgrade', 'mustuse', 'dropins', and 'search'.
122
  *
123
  * @return array|mixed Plugin links
 
124
  */
125
  public function add_settings_link( $actions, $plugin_file, $plugin_data, $context ) {
126
  $ctl_actions = [
@@ -189,7 +186,7 @@ class Settings {
189
  private function get_current_locale() {
190
  $current_locale = get_locale();
191
 
192
- return in_array( $current_locale, array_keys( $this->locales ), true ) ? $current_locale : 'iso9';
193
  }
194
 
195
  /**
@@ -304,31 +301,15 @@ class Settings {
304
  </form>
305
 
306
  <form id="ctl-convert-existing-slugs" action="" method="post">
 
307
  <?php
308
  wp_nonce_field( self::OPTION_GROUP . '-options' );
309
- submit_button( __( 'Convert Existing Slugs', 'cyr2lat' ), 'secondary', 'cyr2lat-convert' );
310
  ?>
311
  </form>
312
 
313
- <div id="donate">
314
  <h2>
315
- <?php echo esc_html( __( 'Donate', 'cyr2lat' ) ); ?>
316
- </h2>
317
- <p>
318
- <?php echo esc_html( __( 'Would you like to support the advancement of this plugin?', 'cyr2lat' ) ); ?>
319
- </p>
320
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
321
- <input type="hidden" name="cmd" value="_s-xclick">
322
- <input type="hidden" name="hosted_button_id" value="BENCPARA8S224">
323
- <input
324
- type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif"
325
- name="submit" alt="PayPal - The safer, easier way to pay online!">
326
- <img
327
- alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1"
328
- height="1">
329
- </form>
330
-
331
- <h2 id="appreciation">
332
  <?php echo esc_html( __( 'Your appreciation', 'cyr2lat' ) ); ?>
333
  </h2>
334
  <a
@@ -381,9 +362,6 @@ class Settings {
381
 
382
  register_setting( self::OPTION_GROUP, self::OPTION_NAME );
383
 
384
- // Get current settings.
385
- $this->options = get_option( self::OPTION_NAME );
386
-
387
  foreach ( $this->form_fields as $key => $field ) {
388
  $field['field_id'] = $key;
389
 
@@ -508,10 +486,8 @@ class Settings {
508
  $options_markup = '';
509
  foreach ( $arguments['options'] as $key => $label ) {
510
  $selected = '';
511
- if ( is_array( $value ) ) {
512
- if ( in_array( $key, $value, true ) ) {
513
- $selected = selected( $key, $key, false );
514
- }
515
  }
516
  $options_markup .= sprintf(
517
  '<option value="%s" %s>%s</option>',
@@ -600,7 +576,7 @@ class Settings {
600
  $this->settings[ $key ] = isset( $form_fields[ $key ] ) ? $this->get_field_default( $form_fields[ $key ] ) : '';
601
  }
602
 
603
- if ( ! is_null( $empty_value ) && '' === $this->settings[ $key ] ) {
604
  $this->settings[ $key ] = $empty_value;
605
  }
606
 
@@ -641,6 +617,7 @@ class Settings {
641
  * @param string $option Option name.
642
  *
643
  * @return mixed
 
644
  */
645
  public function pre_update_option_filter( $value, $old_value, $option ) {
646
  if ( $value === $old_value ) {
@@ -654,14 +631,10 @@ class Settings {
654
 
655
  $form_fields = $this->get_form_fields();
656
  foreach ( $form_fields as $key => $form_field ) {
657
- switch ( $form_field['type'] ) {
658
- case 'checkbox':
659
- $form_field_value = isset( $value[ $key ] ) ? $value[ $key ] : 'no';
660
- $form_field_value = '1' === $form_field_value || 'yes' === $form_field_value ? 'yes' : 'no';
661
- $value[ $key ] = $form_field_value;
662
- break;
663
- default:
664
- break;
665
  }
666
  }
667
 
@@ -677,21 +650,65 @@ class Settings {
677
  }
678
 
679
  wp_enqueue_script(
680
- 'cyr-to-lat-settings',
681
  constant( 'CYR_TO_LAT_URL' ) . '/dist/js/settings/app.js',
682
  [],
683
  constant( 'CYR_TO_LAT_VERSION' ),
684
  true
685
  );
686
 
 
 
 
 
 
 
 
 
 
687
  wp_enqueue_style(
688
- 'cyr-to-lat-admin',
689
  constant( 'CYR_TO_LAT_URL' ) . '/css/cyr-to-lat-admin.css',
690
  [],
691
  constant( 'CYR_TO_LAT_VERSION' )
692
  );
693
  }
694
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
695
  /**
696
  * Load plugin text domain.
697
  */
18
 
19
  /**
20
  * Admin screen id.
 
 
21
  */
22
  const SCREEN_ID = 'settings_page_cyr-to-lat';
23
 
24
  /**
25
  * Option group.
 
 
26
  */
27
  const OPTION_GROUP = 'cyr_to_lat_group';
28
 
29
  /**
30
  * Option page.
 
 
31
  */
32
  const PAGE = 'cyr-to-lat';
33
 
34
  /**
35
  * Plugin options name.
 
 
36
  */
37
  const OPTION_NAME = 'cyr_to_lat_settings';
38
 
39
  /**
40
+ * Script handle.
 
 
41
  */
42
+ const HANDLE = 'cyr-to-lat-settings';
43
 
44
  /**
45
+ * Script localization object.
46
+ */
47
+ const OBJECT = 'Cyr2LatSettingsObject';
48
+
49
+ /**
50
+ * Form fields.
51
  *
52
  * @var array
53
  */
54
+ public $form_fields;
55
 
56
  /**
57
  * Plugin options.
58
  *
59
  * @var array
60
  */
61
+ public $settings;
62
 
63
  /**
64
  * Served locales.
102
  add_filter( 'pre_update_option_' . self::OPTION_NAME, [ $this, 'pre_update_option_filter' ], 10, 3 );
103
 
104
  add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] );
105
+ add_action( 'in_admin_header', [ $this, 'in_admin_header' ] );
106
  }
107
 
108
  /**
117
  * 'recently_activated', 'upgrade', 'mustuse', 'dropins', and 'search'.
118
  *
119
  * @return array|mixed Plugin links
120
+ * @noinspection PhpUnusedParameterInspection
121
  */
122
  public function add_settings_link( $actions, $plugin_file, $plugin_data, $context ) {
123
  $ctl_actions = [
186
  private function get_current_locale() {
187
  $current_locale = get_locale();
188
 
189
+ return array_key_exists( $current_locale, $this->locales ) ? $current_locale : 'iso9';
190
  }
191
 
192
  /**
301
  </form>
302
 
303
  <form id="ctl-convert-existing-slugs" action="" method="post">
304
+ <input type="hidden" name="ctl-convert" />
305
  <?php
306
  wp_nonce_field( self::OPTION_GROUP . '-options' );
307
+ submit_button( __( 'Convert Existing Slugs', 'cyr2lat' ), 'secondary', 'ctl-convert-button' );
308
  ?>
309
  </form>
310
 
311
+ <div id="appreciation">
312
  <h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  <?php echo esc_html( __( 'Your appreciation', 'cyr2lat' ) ); ?>
314
  </h2>
315
  <a
362
 
363
  register_setting( self::OPTION_GROUP, self::OPTION_NAME );
364
 
 
 
 
365
  foreach ( $this->form_fields as $key => $field ) {
366
  $field['field_id'] = $key;
367
 
486
  $options_markup = '';
487
  foreach ( $arguments['options'] as $key => $label ) {
488
  $selected = '';
489
+ if ( is_array( $value ) && in_array( $key, $value, true ) ) {
490
+ $selected = selected( $key, $key, false );
 
 
491
  }
492
  $options_markup .= sprintf(
493
  '<option value="%s" %s>%s</option>',
576
  $this->settings[ $key ] = isset( $form_fields[ $key ] ) ? $this->get_field_default( $form_fields[ $key ] ) : '';
577
  }
578
 
579
+ if ( '' === $this->settings[ $key ] && ! is_null( $empty_value ) ) {
580
  $this->settings[ $key ] = $empty_value;
581
  }
582
 
617
  * @param string $option Option name.
618
  *
619
  * @return mixed
620
+ * @noinspection PhpUnusedParameterInspection
621
  */
622
  public function pre_update_option_filter( $value, $old_value, $option ) {
623
  if ( $value === $old_value ) {
631
 
632
  $form_fields = $this->get_form_fields();
633
  foreach ( $form_fields as $key => $form_field ) {
634
+ if ( 'checkbox' === $form_field['type'] ) {
635
+ $form_field_value = isset( $value[ $key ] ) ? $value[ $key ] : 'no';
636
+ $form_field_value = '1' === $form_field_value || 'yes' === $form_field_value ? 'yes' : 'no';
637
+ $value[ $key ] = $form_field_value;
 
 
 
 
638
  }
639
  }
640
 
650
  }
651
 
652
  wp_enqueue_script(
653
+ self::HANDLE,
654
  constant( 'CYR_TO_LAT_URL' ) . '/dist/js/settings/app.js',
655
  [],
656
  constant( 'CYR_TO_LAT_VERSION' ),
657
  true
658
  );
659
 
660
+ wp_localize_script(
661
+ self::HANDLE,
662
+ self::OBJECT,
663
+ [
664
+ 'optionsSaveSuccessMessage' => __( 'Options saved.', 'cyr2lat' ),
665
+ 'optionsSaveErrorMessage' => __( 'Error saving options.', 'cyr2lat' ),
666
+ ]
667
+ );
668
+
669
  wp_enqueue_style(
670
+ self::HANDLE,
671
  constant( 'CYR_TO_LAT_URL' ) . '/css/cyr-to-lat-admin.css',
672
  [],
673
  constant( 'CYR_TO_LAT_VERSION' )
674
  );
675
  }
676
 
677
+ /**
678
+ * Output convert confirmation popup.
679
+ */
680
+ public function in_admin_header() {
681
+ if ( ! $this->is_options_screen() ) {
682
+ return;
683
+ }
684
+
685
+ ?>
686
+ <div id="ctl-confirm-popup">
687
+ <div id="ctl-confirm-content">
688
+ <p>
689
+ <strong><?php esc_html_e( 'Important:', 'cyr2lat' ); ?></strong>
690
+ <?php
691
+ esc_html_e(
692
+ 'This operation is irreversible. Please make sure that you have made backup copy of your database.',
693
+ 'cyr2lat'
694
+ );
695
+ ?>
696
+ </p>
697
+ <p><?php esc_html_e( 'Are you sure to continue?', 'cyr2lat' ); ?></p>
698
+ <div id="ctl-confirm-buttons">
699
+ <input
700
+ type="button" id="ctl-confirm-ok" class="button button-primary"
701
+ value="<?php esc_html_e( 'OK', 'cyr2lat' ); ?>">
702
+ <button
703
+ type="button" id="ctl-confirm-cancel" class="button button-secondary">
704
+ <?php esc_html_e( 'Cancel', 'cyr2lat' ); ?>
705
+ </button>
706
+ </div>
707
+ </div>
708
+ </div>
709
+ <?php
710
+ }
711
+
712
  /**
713
  * Load plugin text domain.
714
  */
classes/class-wp-cli.php CHANGED
@@ -6,6 +6,9 @@
6
  * @link https://github.com/mihdan/wp-rocket-cli/blob/master/command.php
7
  */
8
 
 
 
 
9
  namespace Cyr_To_Lat;
10
 
11
  use cli\progress\Bar;
@@ -49,6 +52,8 @@ class WP_CLI extends WP_CLI_Command {
49
  *
50
  * @param array $args Arguments.
51
  * @param array $assoc_args Arguments in associative array.
 
 
52
  */
53
  public function regenerate( $args = [], $assoc_args = [] ) {
54
 
6
  * @link https://github.com/mihdan/wp-rocket-cli/blob/master/command.php
7
  */
8
 
9
+ // phpcs:ignore Generic.Commenting.DocComment.MissingShort
10
+ /** @noinspection PhpUndefinedClassInspection */
11
+
12
  namespace Cyr_To_Lat;
13
 
14
  use cli\progress\Bar;
52
  *
53
  * @param array $args Arguments.
54
  * @param array $assoc_args Arguments in associative array.
55
+ *
56
+ * @noinspection PhpUnusedParameterInspection
57
  */
58
  public function regenerate( $args = [], $assoc_args = [] ) {
59
 
css/cyr-to-lat-admin.css CHANGED
@@ -132,10 +132,31 @@ body.js #ctl-options .ctl-table {
132
  outline: none;
133
  }
134
 
135
- #donate {
136
  clear: both;
137
  }
138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  @media screen and (max-width: 767px) {
140
  .ctl-table-cell label {
141
  width: 2.2em;
132
  outline: none;
133
  }
134
 
135
+ #appreciation {
136
  clear: both;
137
  }
138
 
139
+ #ctl-confirm-popup {
140
+ display: none;
141
+ position: fixed;
142
+ left: 0;
143
+ right: 0;
144
+ top: 0;
145
+ bottom: 0;
146
+ background: rgba(241,241,241,0.8);
147
+ z-index: 9999;
148
+ }
149
+
150
+ #ctl-confirm-content {
151
+ display: block;
152
+ position: fixed;
153
+ left: 50%;
154
+ top: 50%;
155
+ transform: translate(-50%, -50%);
156
+ background: #fff;
157
+ padding: 20px;
158
+ }
159
+
160
  @media screen and (max-width: 767px) {
161
  .ctl-table-cell label {
162
  width: 2.2em;
cyr-to-lat.php CHANGED
@@ -9,8 +9,8 @@
9
  * Author URI: https://profiles.wordpress.org/sergeybiryukov/
10
  * Requires at least: 5.1
11
  * Tested up to: 5.6
12
- * Version: 4.5.1
13
- * Stable tag: 4.5.1
14
  *
15
  * Text Domain: cyr2lat
16
  * Domain Path: /languages/
@@ -21,11 +21,11 @@
21
 
22
  namespace Cyr_To_Lat;
23
 
24
- // @codeCoverageIgnoreStart
25
  if ( ! defined( 'ABSPATH' ) ) {
26
- exit; // Exit if accessed directly.
 
 
27
  }
28
- // @codeCoverageIgnoreEnd
29
 
30
  if ( defined( 'CYR_TO_LAT_VERSION' ) ) {
31
  return;
@@ -34,12 +34,12 @@ if ( defined( 'CYR_TO_LAT_VERSION' ) ) {
34
  /**
35
  * Plugin version.
36
  */
37
- define( 'CYR_TO_LAT_VERSION', '4.5.1' );
38
 
39
  /**
40
  * Path to the plugin dir.
41
  */
42
- define( 'CYR_TO_LAT_PATH', dirname( __FILE__ ) );
43
 
44
  /**
45
  * Plugin dir url.
@@ -87,5 +87,6 @@ if ( ! $cyr_to_lat_requirements->are_requirements_met() ) {
87
  return;
88
  }
89
 
90
- $cyr_to_lat_plugin = new Main();
91
 
 
9
  * Author URI: https://profiles.wordpress.org/sergeybiryukov/
10
  * Requires at least: 5.1
11
  * Tested up to: 5.6
12
+ * Version: 4.6.0
13
+ * Stable tag: 4.6.0
14
  *
15
  * Text Domain: cyr2lat
16
  * Domain Path: /languages/
21
 
22
  namespace Cyr_To_Lat;
23
 
 
24
  if ( ! defined( 'ABSPATH' ) ) {
25
+ // @codeCoverageIgnoreStart
26
+ exit;
27
+ // @codeCoverageIgnoreEnd
28
  }
 
29
 
30
  if ( defined( 'CYR_TO_LAT_VERSION' ) ) {
31
  return;
34
  /**
35
  * Plugin version.
36
  */
37
+ define( 'CYR_TO_LAT_VERSION', '4.6.0' );
38
 
39
  /**
40
  * Path to the plugin dir.
41
  */
42
+ define( 'CYR_TO_LAT_PATH', __DIR__ );
43
 
44
  /**
45
  * Plugin dir url.
87
  return;
88
  }
89
 
90
+ global $cyr_to_lat_plugin;
91
 
92
+ $cyr_to_lat_plugin = new Main();
dist/js/settings/app.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ !function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=0)}([function(t,e,n){n(1),t.exports=n(2)},function(t,e){var n=function(t){function e(){this.fetch=!1,this.DOMException=t.DOMException}return e.prototype=t,new e}("undefined"!=typeof self?self:this);!function(t){!function(e){var n="URLSearchParams"in t,r="Symbol"in t&&"iterator"in Symbol,i="FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),o="FormData"in t,s="ArrayBuffer"in t;if(s)var a=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function l(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function c(t){return"string"!=typeof t&&(t=String(t)),t}function h(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return r&&(e[Symbol.iterator]=function(){return e}),e}function d(t){this.map={},t instanceof d?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function p(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function f(t){return new Promise((function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}}))}function y(t){var e=new FileReader,n=f(e);return e.readAsArrayBuffer(t),n}function b(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function v(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:i&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:o&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():s&&i&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=b(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(t)||u(t))?this._bodyArrayBuffer=b(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},i&&(this.blob=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?p(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(y)}),this.text=function(){var t,e,n,r=p(this);if(r)return r;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,n=f(e),e.readAsText(t),n;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),r=0;r<e.length;r++)n[r]=String.fromCharCode(e[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},o&&(this.formData=function(){return this.text().then(S)}),this.json=function(){return this.text().then(JSON.parse)},this}d.prototype.append=function(t,e){t=l(t),e=c(e);var n=this.map[t];this.map[t]=n?n+", "+e:e},d.prototype.delete=function(t){delete this.map[l(t)]},d.prototype.get=function(t){return t=l(t),this.has(t)?this.map[t]:null},d.prototype.has=function(t){return this.map.hasOwnProperty(l(t))},d.prototype.set=function(t,e){this.map[l(t)]=c(e)},d.prototype.forEach=function(t,e){for(var n in this.map)this.map.hasOwnProperty(n)&&t.call(e,this.map[n],n,this)},d.prototype.keys=function(){var t=[];return this.forEach((function(e,n){t.push(n)})),h(t)},d.prototype.values=function(){var t=[];return this.forEach((function(e){t.push(e)})),h(t)},d.prototype.entries=function(){var t=[];return this.forEach((function(e,n){t.push([n,e])})),h(t)},r&&(d.prototype[Symbol.iterator]=d.prototype.entries);var m=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function E(t,e){var n,r,i=(e=e||{}).body;if(t instanceof E){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new d(t.headers)),this.method=t.method,this.mode=t.mode,this.signal=t.signal,i||null==t._bodyInit||(i=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"same-origin",!e.headers&&this.headers||(this.headers=new d(e.headers)),this.method=(n=e.method||this.method||"GET",r=n.toUpperCase(),m.indexOf(r)>-1?r:n),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function S(t){var e=new FormData;return t.trim().split("&").forEach((function(t){if(t){var n=t.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(i))}})),e}function L(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new d(e.headers),this.url=e.url||"",this._initBody(t)}E.prototype.clone=function(){return new E(this,{body:this._bodyInit})},v.call(E.prototype),v.call(L.prototype),L.prototype.clone=function(){return new L(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new d(this.headers),url:this.url})},L.error=function(){var t=new L(null,{status:0,statusText:""});return t.type="error",t};var T=[301,302,303,307,308];L.redirect=function(t,e){if(-1===T.indexOf(e))throw new RangeError("Invalid status code");return new L(null,{status:e,headers:{location:t}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function _(t,n){return new Promise((function(r,o){var s=new E(t,n);if(s.signal&&s.signal.aborted)return o(new e.DOMException("Aborted","AbortError"));var a=new XMLHttpRequest;function u(){a.abort()}a.onload=function(){var t,e,n={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||"",e=new d,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(t){var n=t.split(":"),r=n.shift().trim();if(r){var i=n.join(":").trim();e.append(r,i)}})),e)};n.url="responseURL"in a?a.responseURL:n.headers.get("X-Request-URL");var i="response"in a?a.response:a.responseText;r(new L(i,n))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.onabort=function(){o(new e.DOMException("Aborted","AbortError"))},a.open(s.method,s.url,!0),"include"===s.credentials?a.withCredentials=!0:"omit"===s.credentials&&(a.withCredentials=!1),"responseType"in a&&i&&(a.responseType="blob"),s.headers.forEach((function(t,e){a.setRequestHeader(e,t)})),s.signal&&(s.signal.addEventListener("abort",u),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener("abort",u)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}_.polyfill=!0,t.fetch||(t.fetch=_,t.Headers=d,t.Request=E,t.Response=L),e.Headers=d,e.Request=E,e.Response=L,e.fetch=_}({})}(n),delete n.fetch.polyfill,(e=n.fetch).default=n.fetch,e.fetch=n.fetch,e.Headers=n.Headers,e.Request=n.Request,e.Response=n.Response,t.exports=e},function(t,e,n){"use strict";var r,i=n(3),o=(r=i)&&r.__esModule?r:{default:r};document.addEventListener("DOMContentLoaded",(function(){new o.default}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();function i(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var o=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.OPTIONS_FORM_SELECTOR="#ctl-options",this.HEADER_SELECTOR=this.OPTIONS_FORM_SELECTOR+" h2",this.TABLE_SELECTOR=this.OPTIONS_FORM_SELECTOR+" table",this.SUBMIT_SELECTOR=this.OPTIONS_FORM_SELECTOR+" #submit",this.CONVERT_FORM_SELECTOR="#ctl-convert-existing-slugs",this.CONVERT_BUTTON_SELECTOR="#ctl-convert-button",this.CONFIRM_POPUP_SELECTOR="#ctl-confirm-popup",this.CONFIRM_OK_SELECTOR="#ctl-confirm-ok",this.CONFIRM_CANCEL_SELECTOR="#ctl-confirm-cancel",this.CURRENT_STUB_ID="ctl-current",this.CURRENT_NAV_TAB_CLASS="nav-tab-current",this.ACTIVE_NAV_TAB_CLASS="nav-tab-active",this.ACTIVE_TABLE_CLASS="active",this.EDIT_LABEL_ID="ctl-edit-label",this.EDIT_LABEL_ERROR_CLASS="ctl-edit-label-error",this.plusButton='<button type="button" aria-haspopup="true" aria-expanded="false" class="components-button block-editor-inserter__toggle has-icon" aria-label="Добавить блок"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 24 24" role="img" aria-hidden="true" focusable="false"><path d="M10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6zM10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6z"></path></svg></button>',this.PLUS_CLASS="ctl-plus",this.optionsForm=document.querySelector(this.OPTIONS_FORM_SELECTOR),this.tablesData=this.getTablesData(),this.submitButton=document.querySelector(this.SUBMIT_SELECTOR),this.confirmPopup=document.querySelector(this.CONFIRM_POPUP_SELECTOR),this.optionsSaveSuccessMessage=Cyr2LatSettingsObject.optionsSaveSuccessMessage,this.optionsSaveErrorMessage=Cyr2LatSettingsObject.optionsSaveErrorMessage,this.addWrapper(),this.addMessageLines(),this.addEditLabelInput(),this.hideTables(),this.bindEvents(),this.setSubmitStatus()}return r(t,[{key:"getHeaders",value:function(){return[].concat(i(document.querySelectorAll(this.HEADER_SELECTOR)))}},{key:"getActiveHeader",value:function(){return document.querySelector(this.HEADER_SELECTOR+"."+this.ACTIVE_NAV_TAB_CLASS)}},{key:"getActiveIndex",value:function(){return this.getActiveHeader().dataset.index}},{key:"getTables",value:function(){return[].concat(i(document.querySelectorAll(this.TABLE_SELECTOR)))}},{key:"getActiveTable",value:function(){return document.querySelector(this.TABLE_SELECTOR+"."+this.ACTIVE_TABLE_CLASS)}},{key:"getInputs",value:function(){return[].concat(i(document.querySelectorAll(this.OPTIONS_FORM_SELECTOR+" input")))}},{key:"getLabels",value:function(){return[].concat(i(document.querySelectorAll(this.OPTIONS_FORM_SELECTOR+" label")))}},{key:"getPlusButtons",value:function(){return[].concat(i(document.querySelectorAll(this.OPTIONS_FORM_SELECTOR+" ."+this.PLUS_CLASS)))}},{key:"isActiveTableChanged",value:function(){var t=this.getActiveIndex();return JSON.stringify(this.getActiveTableData())!==JSON.stringify(this.tablesData[t])}},{key:"setSubmitStatus",value:function(){this.submitButton.disabled=!this.isActiveTableChanged()}},{key:"saveActiveTable",value:function(){var t=this;if(this.isActiveTableChanged()){var e=this.getActiveTable(),n=document.createElement("form");return n.action=this.optionsForm.getAttribute("action"),n.method=this.optionsForm.method,n.appendChild(e.cloneNode(!0)),[].concat(i(e.querySelectorAll("input"))).map((function(t){return n.querySelector("#"+t.id).value=t.value})),[].concat(i(this.optionsForm.querySelectorAll('input[type="hidden"]'))).map((function(t){return n.appendChild(t.cloneNode(!0))})),document.body.appendChild(n),fetch(this.optionsForm.getAttribute("action"),{method:n.method,body:new URLSearchParams([].concat(i(new FormData(n))))}).then((function(e){return e.ok?(t.showMessage(t.successMessage,t.optionsSaveSuccessMessage),t.tablesData=t.getTablesData()):t.showMessage(t.errorMessage,t.optionsSaveErrorMessage),e.json()})).finally((function(){n.parentNode.removeChild(n),t.setSubmitStatus()}))}}},{key:"getTableData",value:function(t){var e=this,n=[].concat(i(t.querySelectorAll("input"))),r={};return n.forEach((function(t){var n=document.querySelector(e.OPTIONS_FORM_SELECTOR+' label[for="'+t.id+'"]');r[n.innerHTML]=t.value})),r}},{key:"getTablesData",value:function(){var t=this;return this.getTables().map((function(e){return t.getTableData(e)}))}},{key:"getActiveTableData",value:function(){return this.getTableData(this.getActiveTable())}},{key:"addWrapper",value:function(){this.wrapper=document.createElement("ul"),this.wrapper.classList.add("nav-tab-wrapper"),this.optionsForm.insertBefore(this.wrapper,this.optionsForm.firstChild)}},{key:"addMessageLine",value:function(t){var e=document.createElement("div");return e.id=t,this.optionsForm.insertBefore(e,this.optionsForm.firstChild),e}},{key:"addMessageLines",value:function(){this.successMessage=this.addMessageLine("ctl-success"),this.errorMessage=this.addMessageLine("ctl-error")}},{key:"addEditLabelInput",value:function(){this.editLabelInput=document.createElement("input"),this.editLabelInput.id=this.EDIT_LABEL_ID,this.editLabelInput.style.display="none",document.body.appendChild(this.editLabelInput)}},{key:"hideEditLabelInput",value:function(){this.editLabelInput.style.display="none",this.editLabelInput.classList.remove(this.EDIT_LABEL_ERROR_CLASS),document.body.appendChild(this.editLabelInput)}},{key:"getLastCell",value:function(){return document.querySelector(this.OPTIONS_FORM_SELECTOR+" ."+this.ACTIVE_TABLE_CLASS+" ."+this.PLUS_CLASS).previousElementSibling}},{key:"addCell",value:function(){var t=this.getLastCell();t.parentElement.insertBefore(t.cloneNode(!0),t.nextElementSibling);var e=(t=this.getLastCell()).querySelector("label"),n=t.querySelector("input"),r=n.id.split("-"),i=r[0]+"-"+(parseInt(r[1])+1);e.htmlFor=i,e.innerHTML="",n.id=i,n.value="",n.setAttribute("value",""),this.replaceName(n,""),this.bindEvents(),this.editLabel(e)}},{key:"hideTables",value:function(){var t=this,e=0;this.getTables().map((function(n,r){n.classList.add("ctl-table"),t.CURRENT_STUB_ID===n.previousElementSibling.id&&(e=r,n.classList.add(t.ACTIVE_TABLE_CLASS));var i=document.createElement("div");return i.classList.add(t.PLUS_CLASS),i.innerHTML=t.plusButton,n.querySelector("td").appendChild(i),null})),this.getHeaders().map((function(n,r){return n.classList.add("nav-tab"),n.dataset.index=r,t.wrapper.appendChild(n),r===e&&(n.classList.add(t.CURRENT_NAV_TAB_CLASS),n.classList.add(t.ACTIVE_NAV_TAB_CLASS)),null}))}},{key:"bindEvents",value:function(){var t=this;this.getHeaders().map((function(e,n,r){return e.onclick=function(e){e.preventDefault();var n=e.target.dataset.index;if(n===t.getActiveIndex())return!1;t.saveActiveTable(),r.map((function(e){return e.classList.remove(t.ACTIVE_NAV_TAB_CLASS)})),r[n].classList.add(t.ACTIVE_NAV_TAB_CLASS);var i=t.getTables();return i.map((function(e){return e.classList.remove(t.ACTIVE_TABLE_CLASS)})),i[n].classList.add(t.ACTIVE_TABLE_CLASS),t.setSubmitStatus(),!1},null})),this.getInputs().map((function(e){return e.oninput=function(){t.setSubmitStatus()},null})),this.getLabels().map((function(e){return e.onclick=function(e){return e.preventDefault(),t.editLabel(e.target),!1},null})),this.editLabelInput.onblur=function(){t.saveLabel()},this.editLabelInput.onkeyup=function(e){"Escape"===e.key&&t.saveLabel(!0),"Enter"===e.key&&t.saveLabel()},this.getPlusButtons().map((function(e){return e.onclick=function(e){return e.preventDefault(),t.addCell(e.target),!1},null})),this.submitButton.onclick=function(e){return e.preventDefault(),t.saveActiveTable(),!1},document.querySelector(this.CONVERT_BUTTON_SELECTOR).onclick=function(e){return e.preventDefault(),t.confirmPopup.style.display="block",!1},this.confirmPopup.onclick=function(){t.hideConfirmPopup()},document.querySelector(this.CONFIRM_OK_SELECTOR).onclick=function(e){e.stopPropagation(),t.hideConfirmPopup(),document.querySelector(t.CONVERT_FORM_SELECTOR).submit()},document.querySelector(this.CONFIRM_CANCEL_SELECTOR).onclick=function(e){e.stopPropagation(),t.hideConfirmPopup()}}},{key:"hideConfirmPopup",value:function(){this.confirmPopup.style.display="none"}},{key:"editLabel",value:function(t){t.parentNode.appendChild(this.editLabelInput),this.editLabelInput.value=t.innerHTML,this.editLabelInput.classList.remove(this.EDIT_LABEL_ERROR_CLASS),this.editLabelInput.style.display="block",this.editLabelInput.focus()}},{key:"isUniqueLabel",value:function(t){return[].concat(i(this.getActiveTable().querySelectorAll("label"))).reduce((function(e,n){return e&&n.innerHTML!==t}),!0)}},{key:"saveLabel",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if("none"!==this.editLabelInput.style.display){var e=this.editLabelInput.value.trim();if(""===e){var n=document.getElementById(this.EDIT_LABEL_ID).parentElement;return this.hideEditLabelInput(),n.parentNode.removeChild(n),void this.setSubmitStatus()}var r=this.editLabelInput.parentNode.querySelector("label");if(t||e===r.innerHTML)this.hideEditLabelInput();else if(this.isUniqueLabel(e)){var i=this.editLabelInput.parentNode.querySelector("input");this.hideEditLabelInput(),r.innerHTML=e,this.replaceName(i,e),this.setSubmitStatus()}else this.editLabelInput.classList.add(this.EDIT_LABEL_ERROR_CLASS)}}},{key:"replaceName",value:function(t,e){t.name=t.name.replace(/(.+\[.+])\[.*]/g,"$1["+e+"]")}},{key:"clearMessage",value:function(t){t.innerHTML="",t.classList.remove("active")}},{key:"clearMessages",value:function(){this.clearMessage(this.successMessage),this.clearMessage(this.errorMessage),clearTimeout(this.msgTimer)}},{key:"showMessage",value:function(t,e){var n=this;t.innerHTML=e,t.classList.add("active"),this.msgTimer=setTimeout((function(){n.clearMessages()}),5e3)}}]),t}();e.default=o}]);
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nyb3NzLWZldGNoL2Rpc3QvYnJvd3Nlci1wb255ZmlsbC5qcyIsIndlYnBhY2s6Ly8vLi9qcy9zZXR0aW5ncy9hcHAuanMiLCJ3ZWJwYWNrOi8vLy4vanMvc2V0dGluZ3Mvc2V0dGluZ3MuanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJfX3NlbGZfXyIsInJvb3QiLCJGIiwidGhpcyIsImZldGNoIiwiRE9NRXhjZXB0aW9uIiwic2VsZiIsInN1cHBvcnQiLCJCbG9iIiwiZSIsInZpZXdDbGFzc2VzIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsIm9iaiIsImluZGV4T2YiLCJ0b1N0cmluZyIsIm5vcm1hbGl6ZU5hbWUiLCJTdHJpbmciLCJ0ZXN0IiwiVHlwZUVycm9yIiwidG9Mb3dlckNhc2UiLCJub3JtYWxpemVWYWx1ZSIsIml0ZXJhdG9yRm9yIiwiaXRlbXMiLCJpdGVyYXRvciIsIm5leHQiLCJzaGlmdCIsImRvbmUiLCJ1bmRlZmluZWQiLCJIZWFkZXJzIiwiaGVhZGVycyIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJoZWFkZXIiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiY29uc3VtZWQiLCJib2R5IiwiYm9keVVzZWQiLCJQcm9taXNlIiwicmVqZWN0IiwiZmlsZVJlYWRlclJlYWR5IiwicmVhZGVyIiwicmVzb2x2ZSIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsInJlYWRCbG9iQXNBcnJheUJ1ZmZlciIsImJsb2IiLCJGaWxlUmVhZGVyIiwicHJvbWlzZSIsInJlYWRBc0FycmF5QnVmZmVyIiwiYnVmZmVyQ2xvbmUiLCJidWYiLCJzbGljZSIsInZpZXciLCJVaW50OEFycmF5IiwiYnl0ZUxlbmd0aCIsInNldCIsImJ1ZmZlciIsIkJvZHkiLCJfaW5pdEJvZHkiLCJfYm9keUluaXQiLCJfYm9keVRleHQiLCJpc1Byb3RvdHlwZU9mIiwiX2JvZHlCbG9iIiwiRm9ybURhdGEiLCJfYm9keUZvcm1EYXRhIiwiVVJMU2VhcmNoUGFyYW1zIiwiRGF0YVZpZXciLCJfYm9keUFycmF5QnVmZmVyIiwidHlwZSIsInJlamVjdGVkIiwiRXJyb3IiLCJhcnJheUJ1ZmZlciIsInRoZW4iLCJ0ZXh0IiwicmVhZEFzVGV4dCIsImNoYXJzIiwibGVuZ3RoIiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsInJlYWRBcnJheUJ1ZmZlckFzVGV4dCIsImZvcm1EYXRhIiwiZGVjb2RlIiwianNvbiIsIkpTT04iLCJwYXJzZSIsIm9sZFZhbHVlIiwiaGFzIiwiY2FsbGJhY2siLCJ0aGlzQXJnIiwia2V5cyIsInB1c2giLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibWV0aG9kcyIsIlJlcXVlc3QiLCJpbnB1dCIsIm9wdGlvbnMiLCJtZXRob2QiLCJ1cGNhc2VkIiwidXJsIiwiY3JlZGVudGlhbHMiLCJzaWduYWwiLCJ0b1VwcGVyQ2FzZSIsInJlZmVycmVyIiwiZm9ybSIsInRyaW0iLCJzcGxpdCIsImJ5dGVzIiwicmVwbGFjZSIsImRlY29kZVVSSUNvbXBvbmVudCIsIlJlc3BvbnNlIiwiYm9keUluaXQiLCJzdGF0dXMiLCJvayIsInN0YXR1c1RleHQiLCJjbG9uZSIsInJlc3BvbnNlIiwicmVkaXJlY3RTdGF0dXNlcyIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwiZXJyIiwibWVzc2FnZSIsInN0YWNrIiwiY29uc3RydWN0b3IiLCJpbml0IiwicmVxdWVzdCIsImFib3J0ZWQiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsImFib3J0WGhyIiwiYWJvcnQiLCJyYXdIZWFkZXJzIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwibGluZSIsInBhcnRzIiwicmVzcG9uc2VVUkwiLCJyZXNwb25zZVRleHQiLCJvbnRpbWVvdXQiLCJvbmFib3J0Iiwib3BlbiIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJkZWZhdWx0IiwiZG9jdW1lbnQiLCJTZXR0aW5ncyIsIk9QVElPTlNfRk9STV9TRUxFQ1RPUiIsIkhFQURFUl9TRUxFQ1RPUiIsIlRBQkxFX1NFTEVDVE9SIiwiU1VCTUlUX1NFTEVDVE9SIiwiQ09OVkVSVF9GT1JNX1NFTEVDVE9SIiwiQ09OVkVSVF9CVVRUT05fU0VMRUNUT1IiLCJDT05GSVJNX1BPUFVQX1NFTEVDVE9SIiwiQ09ORklSTV9PS19TRUxFQ1RPUiIsIkNPTkZJUk1fQ0FOQ0VMX1NFTEVDVE9SIiwiQ1VSUkVOVF9TVFVCX0lEIiwiQ1VSUkVOVF9OQVZfVEFCX0NMQVNTIiwiQUNUSVZFX05BVl9UQUJfQ0xBU1MiLCJBQ1RJVkVfVEFCTEVfQ0xBU1MiLCJFRElUX0xBQkVMX0lEIiwiRURJVF9MQUJFTF9FUlJPUl9DTEFTUyIsInBsdXNCdXR0b24iLCJQTFVTX0NMQVNTIiwib3B0aW9uc0Zvcm0iLCJxdWVyeVNlbGVjdG9yIiwidGFibGVzRGF0YSIsImdldFRhYmxlc0RhdGEiLCJzdWJtaXRCdXR0b24iLCJjb25maXJtUG9wdXAiLCJvcHRpb25zU2F2ZVN1Y2Nlc3NNZXNzYWdlIiwiQ3lyMkxhdFNldHRpbmdzT2JqZWN0Iiwib3B0aW9uc1NhdmVFcnJvck1lc3NhZ2UiLCJhZGRXcmFwcGVyIiwiYWRkTWVzc2FnZUxpbmVzIiwiYWRkRWRpdExhYmVsSW5wdXQiLCJoaWRlVGFibGVzIiwiYmluZEV2ZW50cyIsInNldFN1Ym1pdFN0YXR1cyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJnZXRBY3RpdmVIZWFkZXIiLCJkYXRhc2V0IiwiaW5kZXgiLCJhY3RpdmVJbmRleCIsImdldEFjdGl2ZUluZGV4Iiwic3RyaW5naWZ5IiwiZ2V0QWN0aXZlVGFibGVEYXRhIiwiZGlzYWJsZWQiLCJpc0FjdGl2ZVRhYmxlQ2hhbmdlZCIsImFjdGl2ZVRhYmxlIiwiZ2V0QWN0aXZlVGFibGUiLCJhY3RpdmVGb3JtIiwiY3JlYXRlRWxlbWVudCIsImFjdGlvbiIsImdldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiY2xvbmVOb2RlIiwiYWN0aXZlSW5wdXRzIiwiaWQiLCJoaWRkZW5JbnB1dHMiLCJzaG93TWVzc2FnZSIsInN1Y2Nlc3NNZXNzYWdlIiwiZXJyb3JNZXNzYWdlIiwiZmluYWxseSIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInRhYmxlIiwiaW5wdXRzIiwiZGF0YSIsImxhYmVsIiwiaW5uZXJIVE1MIiwiZ2V0VGFibGVzIiwiZ2V0VGFibGVEYXRhIiwid3JhcHBlciIsImNsYXNzTGlzdCIsImFkZCIsImluc2VydEJlZm9yZSIsImZpcnN0Q2hpbGQiLCJhZGRNZXNzYWdlTGluZSIsImVkaXRMYWJlbElucHV0Iiwic3R5bGUiLCJkaXNwbGF5IiwicmVtb3ZlIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsImxhc3RDZWxsIiwiZ2V0TGFzdENlbGwiLCJwYXJlbnRFbGVtZW50IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaWRBcnIiLCJuZXdJZCIsInBhcnNlSW50IiwiaHRtbEZvciIsInNldEF0dHJpYnV0ZSIsInJlcGxhY2VOYW1lIiwiZWRpdExhYmVsIiwiY3VycmVudEluZGV4IiwicGx1cyIsImdldEhlYWRlcnMiLCJvbmNsaWNrIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInRhcmdldCIsInNhdmVBY3RpdmVUYWJsZSIsImFIZWFkZXIiLCJ0YWJsZXMiLCJnZXRJbnB1dHMiLCJvbmlucHV0IiwiZ2V0TGFiZWxzIiwib25ibHVyIiwic2F2ZUxhYmVsIiwib25rZXl1cCIsImdldFBsdXNCdXR0b25zIiwiYWRkQ2VsbCIsImhpZGVDb25maXJtUG9wdXAiLCJzdG9wUHJvcGFnYXRpb24iLCJzdWJtaXQiLCJmb2N1cyIsIm5ld1ZhbHVlIiwicmVkdWNlIiwiYWNjIiwiY2FuY2VsIiwiZWRpdGVkQ2VsbCIsImdldEVsZW1lbnRCeUlkIiwiaGlkZUVkaXRMYWJlbElucHV0IiwiaXNVbmlxdWVMYWJlbCIsImNsZWFyTWVzc2FnZSIsImNsZWFyVGltZW91dCIsIm1zZ1RpbWVyIiwiZWwiLCJzZXRUaW1lb3V0IiwiY2xlYXJNZXNzYWdlcyJdLCJtYXBwaW5ncyI6ImFBQ0UsSUFBSUEsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFPRixFQUFpQkUsR0FBVUMsUUFHbkMsSUFBSUMsRUFBU0osRUFBaUJFLEdBQVksQ0FDekNHLEVBQUdILEVBQ0hJLEdBQUcsRUFDSEgsUUFBUyxJQVVWLE9BTkFJLEVBQVFMLEdBQVVNLEtBQUtKLEVBQU9ELFFBQVNDLEVBQVFBLEVBQU9ELFFBQVNGLEdBRy9ERyxFQUFPRSxHQUFJLEVBR0pGLEVBQU9ELFFBS2ZGLEVBQW9CUSxFQUFJRixFQUd4Qk4sRUFBb0JTLEVBQUlWLEVBR3hCQyxFQUFvQlUsRUFBSSxTQUFTUixFQUFTUyxFQUFNQyxHQUMzQ1osRUFBb0JhLEVBQUVYLEVBQVNTLElBQ2xDRyxPQUFPQyxlQUFlYixFQUFTUyxFQUFNLENBQUVLLFlBQVksRUFBTUMsSUFBS0wsS0FLaEVaLEVBQW9Ca0IsRUFBSSxTQUFTaEIsR0FDWCxvQkFBWGlCLFFBQTBCQSxPQUFPQyxhQUMxQ04sT0FBT0MsZUFBZWIsRUFBU2lCLE9BQU9DLFlBQWEsQ0FBRUMsTUFBTyxXQUU3RFAsT0FBT0MsZUFBZWIsRUFBUyxhQUFjLENBQUVtQixPQUFPLEtBUXZEckIsRUFBb0JzQixFQUFJLFNBQVNELEVBQU9FLEdBRXZDLEdBRFUsRUFBUEEsSUFBVUYsRUFBUXJCLEVBQW9CcUIsSUFDL0IsRUFBUEUsRUFBVSxPQUFPRixFQUNwQixHQUFXLEVBQVBFLEdBQThCLGlCQUFWRixHQUFzQkEsR0FBU0EsRUFBTUcsV0FBWSxPQUFPSCxFQUNoRixJQUFJSSxFQUFLWCxPQUFPWSxPQUFPLE1BR3ZCLEdBRkExQixFQUFvQmtCLEVBQUVPLEdBQ3RCWCxPQUFPQyxlQUFlVSxFQUFJLFVBQVcsQ0FBRVQsWUFBWSxFQUFNSyxNQUFPQSxJQUN0RCxFQUFQRSxHQUE0QixpQkFBVEYsRUFBbUIsSUFBSSxJQUFJTSxLQUFPTixFQUFPckIsRUFBb0JVLEVBQUVlLEVBQUlFLEVBQUssU0FBU0EsR0FBTyxPQUFPTixFQUFNTSxJQUFRQyxLQUFLLEtBQU1ELElBQzlJLE9BQU9GLEdBSVJ6QixFQUFvQjZCLEVBQUksU0FBUzFCLEdBQ2hDLElBQUlTLEVBQVNULEdBQVVBLEVBQU9xQixXQUM3QixXQUF3QixPQUFPckIsRUFBZ0IsU0FDL0MsV0FBOEIsT0FBT0EsR0FFdEMsT0FEQUgsRUFBb0JVLEVBQUVFLEVBQVEsSUFBS0EsR0FDNUJBLEdBSVJaLEVBQW9CYSxFQUFJLFNBQVNpQixFQUFRQyxHQUFZLE9BQU9qQixPQUFPa0IsVUFBVUMsZUFBZTFCLEtBQUt1QixFQUFRQyxJQUd6Ry9CLEVBQW9Ca0MsRUFBSSxHQUlqQmxDLEVBQW9CQSxFQUFvQm1DLEVBQUksRyxxRENsRnJELElBQUlDLEVBQVcsU0FBV0MsR0FDMUIsU0FBU0MsSUFDVEMsS0FBS0MsT0FBUSxFQUNiRCxLQUFLRSxhQUFlSixFQUFLSSxhQUd6QixPQURBSCxFQUFFTixVQUFZSyxFQUNQLElBQUlDLEVBTkksQ0FPSSxvQkFBVEksS0FBdUJBLEtBQU9ILE9BQ3hDLFNBQVVHLElBRVEsU0FBVXhDLEdBRTFCLElBQUl5QyxFQUNZLG9CQUFxQkQsRUFEakNDLEVBRVEsV0FBWUQsR0FBUSxhQUFjdkIsT0FGMUN3QixFQUlBLGVBQWdCRCxHQUNoQixTQUFVQSxHQUNWLFdBQ0UsSUFFRSxPQURBLElBQUlFLE1BQ0csRUFDUCxNQUFPQyxHQUNQLE9BQU8sR0FMWCxHQU5BRixFQWNRLGFBQWNELEVBZHRCQyxFQWVXLGdCQUFpQkQsRUFPaEMsR0FBSUMsRUFDRixJQUFJRyxFQUFjLENBQ2hCLHFCQUNBLHNCQUNBLDZCQUNBLHNCQUNBLHVCQUNBLHNCQUNBLHVCQUNBLHdCQUNBLHlCQUdFQyxFQUNGQyxZQUFZQyxRQUNaLFNBQVNDLEdBQ1AsT0FBT0EsR0FBT0osRUFBWUssUUFBUXJDLE9BQU9rQixVQUFVb0IsU0FBUzdDLEtBQUsyQyxLQUFTLEdBSWhGLFNBQVNHLEVBQWMxQyxHQUlyQixHQUhvQixpQkFBVEEsSUFDVEEsRUFBTzJDLE9BQU8zQyxJQUVaLDRCQUE0QjRDLEtBQUs1QyxHQUNuQyxNQUFNLElBQUk2QyxVQUFVLDBDQUV0QixPQUFPN0MsRUFBSzhDLGNBR2QsU0FBU0MsRUFBZXJDLEdBSXRCLE1BSHFCLGlCQUFWQSxJQUNUQSxFQUFRaUMsT0FBT2pDLElBRVZBLEVBSVQsU0FBU3NDLEVBQVlDLEdBQ25CLElBQUlDLEVBQVcsQ0FDYkMsS0FBTSxXQUNKLElBQUl6QyxFQUFRdUMsRUFBTUcsUUFDbEIsTUFBTyxDQUFDQyxVQUFnQkMsSUFBVjVDLEVBQXFCQSxNQUFPQSxLQVU5QyxPQU5Jc0IsSUFDRmtCLEVBQVMxQyxPQUFPMEMsVUFBWSxXQUMxQixPQUFPQSxJQUlKQSxFQUdULFNBQVNLLEVBQVFDLEdBQ2Y1QixLQUFLNkIsSUFBTSxHQUVQRCxhQUFtQkQsRUFDckJDLEVBQVFFLFNBQVEsU0FBU2hELEVBQU9WLEdBQzlCNEIsS0FBSytCLE9BQU8zRCxFQUFNVSxLQUNqQmtCLE1BQ01nQyxNQUFNQyxRQUFRTCxHQUN2QkEsRUFBUUUsU0FBUSxTQUFTSSxHQUN2QmxDLEtBQUsrQixPQUFPRyxFQUFPLEdBQUlBLEVBQU8sTUFDN0JsQyxNQUNNNEIsR0FDVHJELE9BQU80RCxvQkFBb0JQLEdBQVNFLFNBQVEsU0FBUzFELEdBQ25ENEIsS0FBSytCLE9BQU8zRCxFQUFNd0QsRUFBUXhELE1BQ3pCNEIsTUFnRVAsU0FBU29DLEVBQVNDLEdBQ2hCLEdBQUlBLEVBQUtDLFNBQ1AsT0FBT0MsUUFBUUMsT0FBTyxJQUFJdkIsVUFBVSxpQkFFdENvQixFQUFLQyxVQUFXLEVBR2xCLFNBQVNHLEVBQWdCQyxHQUN2QixPQUFPLElBQUlILFNBQVEsU0FBU0ksRUFBU0gsR0FDbkNFLEVBQU9FLE9BQVMsV0FDZEQsRUFBUUQsRUFBT0csU0FFakJILEVBQU9JLFFBQVUsV0FDZk4sRUFBT0UsRUFBT0ssV0FLcEIsU0FBU0MsRUFBc0JDLEdBQzdCLElBQUlQLEVBQVMsSUFBSVEsV0FDYkMsRUFBVVYsRUFBZ0JDLEdBRTlCLE9BREFBLEVBQU9VLGtCQUFrQkgsR0FDbEJFLEVBb0JULFNBQVNFLEVBQVlDLEdBQ25CLEdBQUlBLEVBQUlDLE1BQ04sT0FBT0QsRUFBSUMsTUFBTSxHQUVqQixJQUFJQyxFQUFPLElBQUlDLFdBQVdILEVBQUlJLFlBRTlCLE9BREFGLEVBQUtHLElBQUksSUFBSUYsV0FBV0gsSUFDakJFLEVBQUtJLE9BSWhCLFNBQVNDLElBMEZQLE9BekZBN0QsS0FBS3NDLFVBQVcsRUFFaEJ0QyxLQUFLOEQsVUFBWSxTQUFTekIsR0FoTTVCLElBQW9CMUIsRUFpTWhCWCxLQUFLK0QsVUFBWTFCLEVBQ1pBLEVBRXNCLGlCQUFUQSxFQUNoQnJDLEtBQUtnRSxVQUFZM0IsRUFDUmpDLEdBQWdCQyxLQUFLWixVQUFVd0UsY0FBYzVCLEdBQ3REckMsS0FBS2tFLFVBQVk3QixFQUNSakMsR0FBb0IrRCxTQUFTMUUsVUFBVXdFLGNBQWM1QixHQUM5RHJDLEtBQUtvRSxjQUFnQi9CLEVBQ1pqQyxHQUF3QmlFLGdCQUFnQjVFLFVBQVV3RSxjQUFjNUIsR0FDekVyQyxLQUFLZ0UsVUFBWTNCLEVBQUt4QixXQUNiVCxHQUF1QkEsS0E1TWxCTyxFQTRNNkMwQixJQTNNakRpQyxTQUFTN0UsVUFBVXdFLGNBQWN0RCxLQTRNM0NYLEtBQUt1RSxpQkFBbUJsQixFQUFZaEIsRUFBS3VCLFFBRXpDNUQsS0FBSytELFVBQVksSUFBSTFELEtBQUssQ0FBQ0wsS0FBS3VFLG9CQUN2Qm5FLElBQXdCSyxZQUFZaEIsVUFBVXdFLGNBQWM1QixJQUFTN0IsRUFBa0I2QixJQUNoR3JDLEtBQUt1RSxpQkFBbUJsQixFQUFZaEIsR0FFcENyQyxLQUFLZ0UsVUFBWTNCLEVBQU85RCxPQUFPa0IsVUFBVW9CLFNBQVM3QyxLQUFLcUUsR0FoQnZEckMsS0FBS2dFLFVBQVksR0FtQmRoRSxLQUFLNEIsUUFBUWxELElBQUksa0JBQ0EsaUJBQVQyRCxFQUNUckMsS0FBSzRCLFFBQVErQixJQUFJLGVBQWdCLDRCQUN4QjNELEtBQUtrRSxXQUFhbEUsS0FBS2tFLFVBQVVNLEtBQzFDeEUsS0FBSzRCLFFBQVErQixJQUFJLGVBQWdCM0QsS0FBS2tFLFVBQVVNLE1BQ3ZDcEUsR0FBd0JpRSxnQkFBZ0I1RSxVQUFVd0UsY0FBYzVCLElBQ3pFckMsS0FBSzRCLFFBQVErQixJQUFJLGVBQWdCLHFEQUtuQ3ZELElBQ0ZKLEtBQUtpRCxLQUFPLFdBQ1YsSUFBSXdCLEVBQVdyQyxFQUFTcEMsTUFDeEIsR0FBSXlFLEVBQ0YsT0FBT0EsRUFHVCxHQUFJekUsS0FBS2tFLFVBQ1AsT0FBTzNCLFFBQVFJLFFBQVEzQyxLQUFLa0UsV0FDdkIsR0FBSWxFLEtBQUt1RSxpQkFDZCxPQUFPaEMsUUFBUUksUUFBUSxJQUFJdEMsS0FBSyxDQUFDTCxLQUFLdUUsb0JBQ2pDLEdBQUl2RSxLQUFLb0UsY0FDZCxNQUFNLElBQUlNLE1BQU0sd0NBRWhCLE9BQU9uQyxRQUFRSSxRQUFRLElBQUl0QyxLQUFLLENBQUNMLEtBQUtnRSxjQUkxQ2hFLEtBQUsyRSxZQUFjLFdBQ2pCLE9BQUkzRSxLQUFLdUUsaUJBQ0FuQyxFQUFTcEMsT0FBU3VDLFFBQVFJLFFBQVEzQyxLQUFLdUUsa0JBRXZDdkUsS0FBS2lELE9BQU8yQixLQUFLNUIsS0FLOUJoRCxLQUFLNkUsS0FBTyxXQUNWLElBM0ZvQjVCLEVBQ2xCUCxFQUNBUyxFQXlGRXNCLEVBQVdyQyxFQUFTcEMsTUFDeEIsR0FBSXlFLEVBQ0YsT0FBT0EsRUFHVCxHQUFJekUsS0FBS2tFLFVBQ1AsT0FqR2tCakIsRUFpR0lqRCxLQUFLa0UsVUFoRzNCeEIsRUFBUyxJQUFJUSxXQUNiQyxFQUFVVixFQUFnQkMsR0FDOUJBLEVBQU9vQyxXQUFXN0IsR0FDWEUsRUE4RkUsR0FBSW5ELEtBQUt1RSxpQkFDZCxPQUFPaEMsUUFBUUksUUE1RnJCLFNBQStCVyxHQUk3QixJQUhBLElBQUlFLEVBQU8sSUFBSUMsV0FBV0gsR0FDdEJ5QixFQUFRLElBQUkvQyxNQUFNd0IsRUFBS3dCLFFBRWxCbkgsRUFBSSxFQUFHQSxFQUFJMkYsRUFBS3dCLE9BQVFuSCxJQUMvQmtILEVBQU1sSCxHQUFLa0QsT0FBT2tFLGFBQWF6QixFQUFLM0YsSUFFdEMsT0FBT2tILEVBQU1HLEtBQUssSUFxRlNDLENBQXNCbkYsS0FBS3VFLG1CQUM3QyxHQUFJdkUsS0FBS29FLGNBQ2QsTUFBTSxJQUFJTSxNQUFNLHdDQUVoQixPQUFPbkMsUUFBUUksUUFBUTNDLEtBQUtnRSxZQUk1QjVELElBQ0ZKLEtBQUtvRixTQUFXLFdBQ2QsT0FBT3BGLEtBQUs2RSxPQUFPRCxLQUFLUyxLQUk1QnJGLEtBQUtzRixLQUFPLFdBQ1YsT0FBT3RGLEtBQUs2RSxPQUFPRCxLQUFLVyxLQUFLQyxRQUd4QnhGLEtBMU1UMkIsRUFBUWxDLFVBQVVzQyxPQUFTLFNBQVMzRCxFQUFNVSxHQUN4Q1YsRUFBTzBDLEVBQWMxQyxHQUNyQlUsRUFBUXFDLEVBQWVyQyxHQUN2QixJQUFJMkcsRUFBV3pGLEtBQUs2QixJQUFJekQsR0FDeEI0QixLQUFLNkIsSUFBSXpELEdBQVFxSCxFQUFXQSxFQUFXLEtBQU8zRyxFQUFRQSxHQUd4RDZDLEVBQVFsQyxVQUFrQixPQUFJLFNBQVNyQixVQUM5QjRCLEtBQUs2QixJQUFJZixFQUFjMUMsS0FHaEN1RCxFQUFRbEMsVUFBVWYsSUFBTSxTQUFTTixHQUUvQixPQURBQSxFQUFPMEMsRUFBYzFDLEdBQ2Q0QixLQUFLMEYsSUFBSXRILEdBQVE0QixLQUFLNkIsSUFBSXpELEdBQVEsTUFHM0N1RCxFQUFRbEMsVUFBVWlHLElBQU0sU0FBU3RILEdBQy9CLE9BQU80QixLQUFLNkIsSUFBSW5DLGVBQWVvQixFQUFjMUMsS0FHL0N1RCxFQUFRbEMsVUFBVWtFLElBQU0sU0FBU3ZGLEVBQU1VLEdBQ3JDa0IsS0FBSzZCLElBQUlmLEVBQWMxQyxJQUFTK0MsRUFBZXJDLElBR2pENkMsRUFBUWxDLFVBQVVxQyxRQUFVLFNBQVM2RCxFQUFVQyxHQUM3QyxJQUFLLElBQUl4SCxLQUFRNEIsS0FBSzZCLElBQ2hCN0IsS0FBSzZCLElBQUluQyxlQUFldEIsSUFDMUJ1SCxFQUFTM0gsS0FBSzRILEVBQVM1RixLQUFLNkIsSUFBSXpELEdBQU9BLEVBQU00QixPQUtuRDJCLEVBQVFsQyxVQUFVb0csS0FBTyxXQUN2QixJQUFJeEUsRUFBUSxHQUlaLE9BSEFyQixLQUFLOEIsU0FBUSxTQUFTaEQsRUFBT1YsR0FDM0JpRCxFQUFNeUUsS0FBSzFILE1BRU5nRCxFQUFZQyxJQUdyQk0sRUFBUWxDLFVBQVVzRyxPQUFTLFdBQ3pCLElBQUkxRSxFQUFRLEdBSVosT0FIQXJCLEtBQUs4QixTQUFRLFNBQVNoRCxHQUNwQnVDLEVBQU15RSxLQUFLaEgsTUFFTnNDLEVBQVlDLElBR3JCTSxFQUFRbEMsVUFBVXVHLFFBQVUsV0FDMUIsSUFBSTNFLEVBQVEsR0FJWixPQUhBckIsS0FBSzhCLFNBQVEsU0FBU2hELEVBQU9WLEdBQzNCaUQsRUFBTXlFLEtBQUssQ0FBQzFILEVBQU1VLE9BRWJzQyxFQUFZQyxJQUdqQmpCLElBQ0Z1QixFQUFRbEMsVUFBVWIsT0FBTzBDLFVBQVlLLEVBQVFsQyxVQUFVdUcsU0FxSnpELElBQUlDLEVBQVUsQ0FBQyxTQUFVLE1BQU8sT0FBUSxVQUFXLE9BQVEsT0FPM0QsU0FBU0MsRUFBUUMsRUFBT0MsR0FFdEIsSUFQdUJDLEVBQ25CQyxFQU1BakUsR0FESitELEVBQVVBLEdBQVcsSUFDRi9ELEtBRW5CLEdBQUk4RCxhQUFpQkQsRUFBUyxDQUM1QixHQUFJQyxFQUFNN0QsU0FDUixNQUFNLElBQUlyQixVQUFVLGdCQUV0QmpCLEtBQUt1RyxJQUFNSixFQUFNSSxJQUNqQnZHLEtBQUt3RyxZQUFjTCxFQUFNSyxZQUNwQkosRUFBUXhFLFVBQ1g1QixLQUFLNEIsUUFBVSxJQUFJRCxFQUFRd0UsRUFBTXZFLFVBRW5DNUIsS0FBS3FHLE9BQVNGLEVBQU1FLE9BQ3BCckcsS0FBS2hCLEtBQU9tSCxFQUFNbkgsS0FDbEJnQixLQUFLeUcsT0FBU04sRUFBTU0sT0FDZnBFLEdBQTJCLE1BQW5COEQsRUFBTXBDLFlBQ2pCMUIsRUFBTzhELEVBQU1wQyxVQUNib0MsRUFBTTdELFVBQVcsUUFHbkJ0QyxLQUFLdUcsSUFBTXhGLE9BQU9vRixHQVlwQixHQVRBbkcsS0FBS3dHLFlBQWNKLEVBQVFJLGFBQWV4RyxLQUFLd0csYUFBZSxlQUMxREosRUFBUXhFLFNBQVk1QixLQUFLNEIsVUFDM0I1QixLQUFLNEIsUUFBVSxJQUFJRCxFQUFReUUsRUFBUXhFLFVBRXJDNUIsS0FBS3FHLFFBakNrQkEsRUFpQ09ELEVBQVFDLFFBQVVyRyxLQUFLcUcsUUFBVSxNQWhDM0RDLEVBQVVELEVBQU9LLGNBQ2RULEVBQVFyRixRQUFRMEYsSUFBWSxFQUFJQSxFQUFVRCxHQWdDakRyRyxLQUFLaEIsS0FBT29ILEVBQVFwSCxNQUFRZ0IsS0FBS2hCLE1BQVEsS0FDekNnQixLQUFLeUcsT0FBU0wsRUFBUUssUUFBVXpHLEtBQUt5RyxPQUNyQ3pHLEtBQUsyRyxTQUFXLE1BRUssUUFBaEIzRyxLQUFLcUcsUUFBb0MsU0FBaEJyRyxLQUFLcUcsU0FBc0JoRSxFQUN2RCxNQUFNLElBQUlwQixVQUFVLDZDQUV0QmpCLEtBQUs4RCxVQUFVekIsR0FPakIsU0FBU2dELEVBQU9oRCxHQUNkLElBQUl1RSxFQUFPLElBQUl6QyxTQVlmLE9BWEE5QixFQUNHd0UsT0FDQUMsTUFBTSxLQUNOaEYsU0FBUSxTQUFTaUYsR0FDaEIsR0FBSUEsRUFBTyxDQUNULElBQUlELEVBQVFDLEVBQU1ELE1BQU0sS0FDcEIxSSxFQUFPMEksRUFBTXRGLFFBQVF3RixRQUFRLE1BQU8sS0FDcENsSSxFQUFRZ0ksRUFBTTVCLEtBQUssS0FBSzhCLFFBQVEsTUFBTyxLQUMzQ0osRUFBSzdFLE9BQU9rRixtQkFBbUI3SSxHQUFPNkksbUJBQW1CbkksUUFHeEQ4SCxFQXFCVCxTQUFTTSxFQUFTQyxFQUFVZixHQUNyQkEsSUFDSEEsRUFBVSxJQUdacEcsS0FBS3dFLEtBQU8sVUFDWnhFLEtBQUtvSCxZQUE0QjFGLElBQW5CMEUsRUFBUWdCLE9BQXVCLElBQU1oQixFQUFRZ0IsT0FDM0RwSCxLQUFLcUgsR0FBS3JILEtBQUtvSCxRQUFVLEtBQU9wSCxLQUFLb0gsT0FBUyxJQUM5Q3BILEtBQUtzSCxXQUFhLGVBQWdCbEIsRUFBVUEsRUFBUWtCLFdBQWEsS0FDakV0SCxLQUFLNEIsUUFBVSxJQUFJRCxFQUFReUUsRUFBUXhFLFNBQ25DNUIsS0FBS3VHLElBQU1ILEVBQVFHLEtBQU8sR0FDMUJ2RyxLQUFLOEQsVUFBVXFELEdBakRqQmpCLEVBQVF6RyxVQUFVOEgsTUFBUSxXQUN4QixPQUFPLElBQUlyQixFQUFRbEcsS0FBTSxDQUFDcUMsS0FBTXJDLEtBQUsrRCxhQW1DdkNGLEVBQUs3RixLQUFLa0ksRUFBUXpHLFdBZ0JsQm9FLEVBQUs3RixLQUFLa0osRUFBU3pILFdBRW5CeUgsRUFBU3pILFVBQVU4SCxNQUFRLFdBQ3pCLE9BQU8sSUFBSUwsRUFBU2xILEtBQUsrRCxVQUFXLENBQ2xDcUQsT0FBUXBILEtBQUtvSCxPQUNiRSxXQUFZdEgsS0FBS3NILFdBQ2pCMUYsUUFBUyxJQUFJRCxFQUFRM0IsS0FBSzRCLFNBQzFCMkUsSUFBS3ZHLEtBQUt1RyxPQUlkVyxFQUFTbkUsTUFBUSxXQUNmLElBQUl5RSxFQUFXLElBQUlOLEVBQVMsS0FBTSxDQUFDRSxPQUFRLEVBQUdFLFdBQVksS0FFMUQsT0FEQUUsRUFBU2hELEtBQU8sUUFDVGdELEdBR1QsSUFBSUMsRUFBbUIsQ0FBQyxJQUFLLElBQUssSUFBSyxJQUFLLEtBRTVDUCxFQUFTUSxTQUFXLFNBQVNuQixFQUFLYSxHQUNoQyxJQUEwQyxJQUF0Q0ssRUFBaUI3RyxRQUFRd0csR0FDM0IsTUFBTSxJQUFJTyxXQUFXLHVCQUd2QixPQUFPLElBQUlULEVBQVMsS0FBTSxDQUFDRSxPQUFRQSxFQUFReEYsUUFBUyxDQUFDZ0csU0FBVXJCLE1BR2pFNUksRUFBUXVDLGFBQWVDLEVBQUtELGFBQzVCLElBQ0UsSUFBSXZDLEVBQVF1QyxhQUNaLE1BQU8ySCxHQUNQbEssRUFBUXVDLGFBQWUsU0FBUzRILEVBQVMxSixHQUN2QzRCLEtBQUs4SCxRQUFVQSxFQUNmOUgsS0FBSzVCLEtBQU9BLEVBQ1osSUFBSTJFLEVBQVEyQixNQUFNb0QsR0FDbEI5SCxLQUFLK0gsTUFBUWhGLEVBQU1nRixPQUVyQnBLLEVBQVF1QyxhQUFhVCxVQUFZbEIsT0FBT1ksT0FBT3VGLE1BQU1qRixXQUNyRDlCLEVBQVF1QyxhQUFhVCxVQUFVdUksWUFBY3JLLEVBQVF1QyxhQUd2RCxTQUFTRCxFQUFNa0csRUFBTzhCLEdBQ3BCLE9BQU8sSUFBSTFGLFNBQVEsU0FBU0ksRUFBU0gsR0FDbkMsSUFBSTBGLEVBQVUsSUFBSWhDLEVBQVFDLEVBQU84QixHQUVqQyxHQUFJQyxFQUFRekIsUUFBVXlCLEVBQVF6QixPQUFPMEIsUUFDbkMsT0FBTzNGLEVBQU8sSUFBSTdFLEVBQVF1QyxhQUFhLFVBQVcsZUFHcEQsSUFBSWtJLEVBQU0sSUFBSUMsZUFFZCxTQUFTQyxJQUNQRixFQUFJRyxRQUdOSCxFQUFJeEYsT0FBUyxXQUNYLElBeEZnQjRGLEVBQ2hCNUcsRUF1Rkl3RSxFQUFVLENBQ1pnQixPQUFRZ0IsRUFBSWhCLE9BQ1pFLFdBQVljLEVBQUlkLFdBQ2hCMUYsU0EzRmM0RyxFQTJGUUosRUFBSUsseUJBQTJCLEdBMUZ2RDdHLEVBQVUsSUFBSUQsRUFHUTZHLEVBQVd4QixRQUFRLGVBQWdCLEtBQ3pDRixNQUFNLFNBQVNoRixTQUFRLFNBQVM0RyxHQUNsRCxJQUFJQyxFQUFRRCxFQUFLNUIsTUFBTSxLQUNuQjFILEVBQU11SixFQUFNbkgsUUFBUXFGLE9BQ3hCLEdBQUl6SCxFQUFLLENBQ1AsSUFBSU4sRUFBUTZKLEVBQU16RCxLQUFLLEtBQUsyQixPQUM1QmpGLEVBQVFHLE9BQU8zQyxFQUFLTixPQUdqQjhDLElBZ0ZId0UsRUFBUUcsSUFBTSxnQkFBaUI2QixFQUFNQSxFQUFJUSxZQUFjeEMsRUFBUXhFLFFBQVFsRCxJQUFJLGlCQUMzRSxJQUFJMkQsRUFBTyxhQUFjK0YsRUFBTUEsRUFBSVosU0FBV1ksRUFBSVMsYUFDbERsRyxFQUFRLElBQUl1RSxFQUFTN0UsRUFBTStELEtBRzdCZ0MsRUFBSXRGLFFBQVUsV0FDWk4sRUFBTyxJQUFJdkIsVUFBVSw0QkFHdkJtSCxFQUFJVSxVQUFZLFdBQ2R0RyxFQUFPLElBQUl2QixVQUFVLDRCQUd2Qm1ILEVBQUlXLFFBQVUsV0FDWnZHLEVBQU8sSUFBSTdFLEVBQVF1QyxhQUFhLFVBQVcsZ0JBRzdDa0ksRUFBSVksS0FBS2QsRUFBUTdCLE9BQVE2QixFQUFRM0IsS0FBSyxHQUVWLFlBQXhCMkIsRUFBUTFCLFlBQ1Y0QixFQUFJYSxpQkFBa0IsRUFDVyxTQUF4QmYsRUFBUTFCLGNBQ2pCNEIsRUFBSWEsaUJBQWtCLEdBR3BCLGlCQUFrQmIsR0FBT2hJLElBQzNCZ0ksRUFBSWMsYUFBZSxRQUdyQmhCLEVBQVF0RyxRQUFRRSxTQUFRLFNBQVNoRCxFQUFPVixHQUN0Q2dLLEVBQUllLGlCQUFpQi9LLEVBQU1VLE1BR3pCb0osRUFBUXpCLFNBQ1Z5QixFQUFRekIsT0FBTzJDLGlCQUFpQixRQUFTZCxHQUV6Q0YsRUFBSWlCLG1CQUFxQixXQUVBLElBQW5CakIsRUFBSWtCLFlBQ05wQixFQUFRekIsT0FBTzhDLG9CQUFvQixRQUFTakIsS0FLbERGLEVBQUlvQixVQUFrQyxJQUF0QnRCLEVBQVFuRSxVQUE0QixLQUFPbUUsRUFBUW5FLGNBSXZFOUQsRUFBTXdKLFVBQVcsRUFFWnRKLEVBQUtGLFFBQ1JFLEVBQUtGLE1BQVFBLEVBQ2JFLEVBQUt3QixRQUFVQSxFQUNmeEIsRUFBSytGLFFBQVVBLEVBQ2YvRixFQUFLK0csU0FBV0EsR0FHbEJ2SixFQUFRZ0UsUUFBVUEsRUFDbEJoRSxFQUFRdUksUUFBVUEsRUFDbEJ2SSxFQUFRdUosU0FBV0EsRUFDbkJ2SixFQUFRc0MsTUFBUUEsRUExZ0JELENBOGdCZixJQWhoQkYsQ0FpaEJHSixVQUNJQSxFQUFTSSxNQUFNd0osVUFDdEI5TCxFQUFVa0MsRUFBU0ksT0FDWHlKLFFBQVU3SixFQUFTSSxNQUMzQnRDLEVBQVFzQyxNQUFRSixFQUFTSSxNQUN6QnRDLEVBQVFnRSxRQUFVOUIsRUFBUzhCLFFBQzNCaEUsRUFBUXVJLFFBQVVyRyxFQUFTcUcsUUFDM0J2SSxFQUFRdUosU0FBV3JILEVBQVNxSCxTQUM1QnRKLEVBQU9ELFFBQVVBLEcsNkJDOWhCakIsSSxFQUFBLE8sb0NBRUFnTSxTQUFTUCxpQkFBa0Isb0JBQW9CLFdBQzlDLElBQUlRLGMsbWNDQUNBLEUsV0FJTCxjLDRGQUFjLFNBQ2I1SixLQUFLNkosc0JBQXdCLGVBQzdCN0osS0FBSzhKLGdCQUFrQjlKLEtBQUs2SixzQkFBd0IsTUFDcEQ3SixLQUFLK0osZUFBaUIvSixLQUFLNkosc0JBQXdCLFNBQ25EN0osS0FBS2dLLGdCQUFrQmhLLEtBQUs2SixzQkFBd0IsV0FDcEQ3SixLQUFLaUssc0JBQXdCLDhCQUM3QmpLLEtBQUtrSyx3QkFBMEIsc0JBQy9CbEssS0FBS21LLHVCQUF5QixxQkFDOUJuSyxLQUFLb0ssb0JBQXNCLGtCQUMzQnBLLEtBQUtxSyx3QkFBMEIsc0JBQy9CckssS0FBS3NLLGdCQUFrQixjQUN2QnRLLEtBQUt1SyxzQkFBd0Isa0JBQzdCdkssS0FBS3dLLHFCQUF1QixpQkFDNUJ4SyxLQUFLeUssbUJBQXFCLFNBQzFCekssS0FBSzBLLGNBQWdCLGlCQUNyQjFLLEtBQUsySyx1QkFBeUIsdUJBQzlCM0ssS0FBSzRLLFdBQ0osc2tCQU1ENUssS0FBSzZLLFdBQWEsV0FFbEI3SyxLQUFLOEssWUFBY25CLFNBQVNvQixjQUFlL0ssS0FBSzZKLHVCQUNoRDdKLEtBQUtnTCxXQUFhaEwsS0FBS2lMLGdCQUN2QmpMLEtBQUtrTCxhQUFldkIsU0FBU29CLGNBQWUvSyxLQUFLZ0ssaUJBQ2pEaEssS0FBS21MLGFBQWV4QixTQUFTb0IsY0FDNUIvSyxLQUFLbUssd0JBSU5uSyxLQUFLb0wsMEJBQ0pDLHNCQUFzQkQsMEJBQ3ZCcEwsS0FBS3NMLHdCQUNKRCxzQkFBc0JDLHdCQUV2QnRMLEtBQUt1TCxhQUNMdkwsS0FBS3dMLGtCQUNMeEwsS0FBS3lMLG9CQUNMekwsS0FBSzBMLGFBQ0wxTCxLQUFLMkwsYUFDTDNMLEtBQUs0TCxrQiwrQ0FTTCxrQkFBWWpDLFNBQVNrQyxpQkFBa0I3TCxLQUFLOEoscUIsd0NBUzVDLE9BQU9ILFNBQVNvQixjQUNmL0ssS0FBSzhKLGdCQUFrQixJQUFNOUosS0FBS3dLLHdCLHVDQVVuQyxPQUFPeEssS0FBSzhMLGtCQUFrQkMsUUFBUUMsUSxrQ0FTdEMsa0JBQVlyQyxTQUFTa0MsaUJBQWtCN0wsS0FBSytKLG9CLHVDQVM1QyxPQUFPSixTQUFTb0IsY0FDZi9LLEtBQUsrSixlQUFpQixJQUFNL0osS0FBS3lLLHNCLGtDQVVsQyxrQkFDSWQsU0FBU2tDLGlCQUNYN0wsS0FBSzZKLHNCQUF3QixjLGtDQVcvQixrQkFDSUYsU0FBU2tDLGlCQUNYN0wsS0FBSzZKLHNCQUF3QixjLHVDQVcvQixrQkFDSUYsU0FBU2tDLGlCQUNYN0wsS0FBSzZKLHNCQUF3QixLQUFPN0osS0FBSzZLLGdCLDZDQVczQyxJQUFNb0IsRUFBY2pNLEtBQUtrTSxpQkFFekIsT0FDQzNHLEtBQUs0RyxVQUFXbk0sS0FBS29NLHdCQUNyQjdHLEtBQUs0RyxVQUFXbk0sS0FBS2dMLFdBQVlpQixNLHdDQVFsQ2pNLEtBQUtrTCxhQUFhbUIsVUFBYXJNLEtBQUtzTSx5Qix3Q0FNbkIsV0FDakIsR0FBT3RNLEtBQUtzTSx1QkFBWixDQUlBLElBQU1DLEVBQWN2TSxLQUFLd00saUJBRW5CQyxFQUFhOUMsU0FBUytDLGNBQWUsUUFtQjNDLE9BbEJBRCxFQUFXRSxPQUFTM00sS0FBSzhLLFlBQVk4QixhQUFjLFVBQ25ESCxFQUFXcEcsT0FBU3JHLEtBQUs4SyxZQUFZekUsT0FDckNvRyxFQUFXSSxZQUFhTixFQUFZTyxXQUFXLElBRTFCQyxHQUFmQSxTQUFvQlIsRUFBWVYsaUJBQWtCLFdBQzNDaEssS0FBSyxTQUFFc0UsR0FDbkIsT0FBU3NHLEVBQVcxQixjQUFlLElBQU01RSxFQUFNNkcsSUFBS2xPLE1BQ25EcUgsRUFBTXJILFNBR2FtTyxHQUFmQSxTQUNGak4sS0FBSzhLLFlBQVllLGlCQUFrQiwwQkFFMUJoSyxLQUFLLFNBQUVzRSxHQUNuQixPQUFPc0csRUFBV0ksWUFBYTFHLEVBQU0yRyxXQUFXLE9BRWpEbkQsU0FBU3RILEtBQUt3SyxZQUFhSixHQUVwQnhNLE1BQU9ELEtBQUs4SyxZQUFZOEIsYUFBYyxVQUFZLENBQ3hEdkcsT0FBUW9HLEVBQVdwRyxPQUNuQmhFLEtBQU0sSUFBSWdDLGdCQUFKLFlBQTBCLElBQUlGLFNBQVVzSSxRQUU3QzdILE1BQU0sU0FBRTRDLEdBY1IsT0FiS0EsRUFBU0gsSUFDYixFQUFLNkYsWUFDSixFQUFLQyxlQUNMLEVBQUsvQiwyQkFFTixFQUFLSixXQUFhLEVBQUtDLGlCQUV2QixFQUFLaUMsWUFDSixFQUFLRSxhQUNMLEVBQUs5Qix5QkFJQTlELEVBQVNsQyxVQUVoQitILFNBQVMsV0FDVFosRUFBV2EsV0FBV0MsWUFBYWQsR0FDbkMsRUFBS2Isd0IsbUNBVU00QixHQUFRLFdBQ2ZDLEVBQVNBLEdBQVRBLFNBQWNELEVBQU0zQixpQkFBa0IsV0FFdEM2QixFQUFPLEdBU2IsT0FSQUQsRUFBTzNMLFNBQVMsU0FBRXFFLEdBQ2pCLElBQU13SCxFQUFRaEUsU0FBU29CLGNBQ3RCLEVBQUtsQixzQkFBd0IsZUFBaUIxRCxFQUFNNkcsR0FBSyxNQUcxRFUsRUFBTUMsRUFBTUMsV0FBY3pILEVBQU1ySCxTQUcxQjRPLEksc0NBUVEsV0FDZixPQUFPMU4sS0FBSzZOLFlBQVloTSxLQUFLLFNBQUUyTCxHQUM5QixPQUFPLEVBQUtNLGFBQWNOLFEsMkNBVTNCLE9BQU94TixLQUFLOE4sYUFBYzlOLEtBQUt3TSxvQixtQ0FPL0J4TSxLQUFLK04sUUFBVXBFLFNBQVMrQyxjQUFlLE1BQ3ZDMU0sS0FBSytOLFFBQVFDLFVBQVVDLElBQUssbUJBQzVCak8sS0FBSzhLLFlBQVlvRCxhQUNoQmxPLEtBQUsrTixRQUNML04sS0FBSzhLLFlBQVlxRCxjLHFDQVVIbkIsR0FDZixJQUFNbEYsRUFBVTZCLFNBQVMrQyxjQUFlLE9BSXhDLE9BSEE1RSxFQUFRa0YsR0FBS0EsRUFDYmhOLEtBQUs4SyxZQUFZb0QsYUFBY3BHLEVBQVM5SCxLQUFLOEssWUFBWXFELFlBRWxEckcsSSx3Q0FPUDlILEtBQUttTixlQUFpQm5OLEtBQUtvTyxlQUFnQixlQUMzQ3BPLEtBQUtvTixhQUFlcE4sS0FBS29PLGVBQWdCLGUsMENBT3pDcE8sS0FBS3FPLGVBQWlCMUUsU0FBUytDLGNBQWUsU0FDOUMxTSxLQUFLcU8sZUFBZXJCLEdBQUtoTixLQUFLMEssY0FDOUIxSyxLQUFLcU8sZUFBZUMsTUFBTUMsUUFBVSxPQUNwQzVFLFNBQVN0SCxLQUFLd0ssWUFBYTdNLEtBQUtxTyxrQiwyQ0FPaENyTyxLQUFLcU8sZUFBZUMsTUFBTUMsUUFBVSxPQUNwQ3ZPLEtBQUtxTyxlQUFlTCxVQUFVUSxPQUFReE8sS0FBSzJLLHdCQUMzQ2hCLFNBQVN0SCxLQUFLd0ssWUFBYTdNLEtBQUtxTyxrQixvQ0FTaEMsT0FBTzFFLFNBQVNvQixjQUNmL0ssS0FBSzZKLHNCQUNKLEtBQ0E3SixLQUFLeUssbUJBQ0wsS0FDQXpLLEtBQUs2SyxZQUNMNEQseUIsZ0NBT0YsSUFBSUMsRUFBVzFPLEtBQUsyTyxjQUNwQkQsRUFBU0UsY0FBY1YsYUFDdEJRLEVBQVM1QixXQUFXLEdBQ3BCNEIsRUFBU0csb0JBSVYsSUFBTWxCLEdBRE5lLEVBQVcxTyxLQUFLMk8sZUFDTzVELGNBQWUsU0FDaEM1RSxFQUFRdUksRUFBUzNELGNBQWUsU0FFaEMrRCxFQUFRM0ksRUFBTTZHLEdBQUdsRyxNQUFPLEtBQ3hCaUksRUFBUUQsRUFBTyxHQUFNLEtBQVFFLFNBQVVGLEVBQU8sSUFBUSxHQUU1RG5CLEVBQU1zQixRQUFVRixFQUNoQnBCLEVBQU1DLFVBQVksR0FFbEJ6SCxFQUFNNkcsR0FBSytCLEVBQ1g1SSxFQUFNckgsTUFBUSxHQUNkcUgsRUFBTStJLGFBQWMsUUFBUyxJQUM3QmxQLEtBQUttUCxZQUFhaEosRUFBTyxJQUV6Qm5HLEtBQUsyTCxhQUVMM0wsS0FBS29QLFVBQVd6QixLLG1DQU9KLFdBQ1IwQixFQUFlLEVBRW5CclAsS0FBSzZOLFlBQVloTSxLQUFLLFNBQUUyTCxFQUFPeEIsR0FDOUJ3QixFQUFNUSxVQUFVQyxJQUFLLGFBRWhCLEVBQUszRCxrQkFBb0JrRCxFQUFNaUIsdUJBQXVCekIsS0FDMURxQyxFQUFlckQsRUFDZndCLEVBQU1RLFVBQVVDLElBQUssRUFBS3hELHFCQUczQixJQUFNNkUsRUFBTzNGLFNBQVMrQyxjQUFlLE9BS3JDLE9BSkE0QyxFQUFLdEIsVUFBVUMsSUFBSyxFQUFLcEQsWUFDekJ5RSxFQUFLMUIsVUFBWSxFQUFLaEQsV0FDdEI0QyxFQUFNekMsY0FBZSxNQUFPOEIsWUFBYXlDLEdBRWxDLFFBR1J0UCxLQUFLdVAsYUFBYTFOLEtBQUssU0FBRUssRUFBUThKLEdBVWhDLE9BVEE5SixFQUFPOEwsVUFBVUMsSUFBSyxXQUN0Qi9MLEVBQU82SixRQUFRQyxNQUFRQSxFQUV2QixFQUFLK0IsUUFBUWxCLFlBQWEzSyxHQUNyQjhKLElBQVVxRCxJQUNkbk4sRUFBTzhMLFVBQVVDLElBQUssRUFBSzFELHVCQUMzQnJJLEVBQU84TCxVQUFVQyxJQUFLLEVBQUt6RCx1QkFHckIsVSxtQ0FPSSxXQUNaeEssS0FBS3VQLGFBQWExTixLQUFLLFNBQUVLLEVBQVFyRSxFQUFHK0QsR0ErQm5DLE9BOUJBTSxFQUFPc04sUUFBVSxTQUFFQyxHQUNsQkEsRUFBTUMsaUJBRU4sSUFBTTFELEVBQVF5RCxFQUFNRSxPQUFPNUQsUUFBUUMsTUFHbkMsR0FBS0EsSUFGZSxFQUFLRSxpQkFHeEIsT0FBTyxFQUdSLEVBQUswRCxrQkFFTGhPLEVBQVFDLEtBQUssU0FBRWdPLEdBQ2QsT0FBT0EsRUFBUTdCLFVBQVVRLE9BQ3hCLEVBQUtoRSx5QkFHUDVJLEVBQVNvSyxHQUFRZ0MsVUFBVUMsSUFBSyxFQUFLekQsc0JBRXJDLElBQU1zRixFQUFTLEVBQUtqQyxZQVFwQixPQVBBaUMsRUFBT2pPLEtBQUssU0FBRTJMLEdBQ2IsT0FBT0EsRUFBTVEsVUFBVVEsT0FBUSxFQUFLL0QsdUJBRXJDcUYsRUFBUTlELEdBQVFnQyxVQUFVQyxJQUFLLEVBQUt4RCxvQkFFcEMsRUFBS21CLG1CQUVFLEdBR0QsUUFHUjVMLEtBQUsrUCxZQUFZbE8sS0FBSyxTQUFFc0UsR0FLdkIsT0FKQUEsRUFBTTZKLFFBQVUsV0FDZixFQUFLcEUsbUJBR0MsUUFHUjVMLEtBQUtpUSxZQUFZcE8sS0FBSyxTQUFFOEwsR0FPdkIsT0FOQUEsRUFBTTZCLFFBQVUsU0FBRUMsR0FHakIsT0FGQUEsRUFBTUMsaUJBQ04sRUFBS04sVUFBV0ssRUFBTUUsU0FDZixHQUdELFFBR1IzUCxLQUFLcU8sZUFBZTZCLE9BQVMsV0FDNUIsRUFBS0MsYUFHTm5RLEtBQUtxTyxlQUFlK0IsUUFBVSxTQUFFOVAsR0FDMUIsV0FBYUEsRUFBRWxCLEtBQ25CLEVBQUsrUSxXQUFXLEdBR1osVUFBWTdQLEVBQUVsQixLQUNsQixFQUFLK1EsYUFJUG5RLEtBQUtxUSxpQkFBaUJ4TyxLQUFLLFNBQUV5TixHQU81QixPQU5BQSxFQUFLRSxRQUFVLFNBQUVDLEdBR2hCLE9BRkFBLEVBQU1DLGlCQUNOLEVBQUtZLFFBQVNiLEVBQU1FLFNBQ2IsR0FHRCxRQUdSM1AsS0FBS2tMLGFBQWFzRSxRQUFVLFNBQUVDLEdBRzdCLE9BRkFBLEVBQU1DLGlCQUNOLEVBQUtFLG1CQUNFLEdBR1JqRyxTQUFTb0IsY0FBZS9LLEtBQUtrSyx5QkFBMEJzRixRQUFVLFNBQ2hFQyxHQUlBLE9BRkFBLEVBQU1DLGlCQUNOLEVBQUt2RSxhQUFhbUQsTUFBTUMsUUFBVSxTQUMzQixHQUdSdk8sS0FBS21MLGFBQWFxRSxRQUFVLFdBQzNCLEVBQUtlLG9CQUdONUcsU0FBU29CLGNBQWUvSyxLQUFLb0sscUJBQXNCb0YsUUFBVSxTQUM1REMsR0FFQUEsRUFBTWUsa0JBQ04sRUFBS0QsbUJBQ0w1RyxTQUFTb0IsY0FBZSxFQUFLZCx1QkFBd0J3RyxVQUd0RDlHLFNBQVNvQixjQUFlL0ssS0FBS3FLLHlCQUEwQm1GLFFBQVUsU0FDaEVDLEdBRUFBLEVBQU1lLGtCQUNOLEVBQUtELHNCLHlDQVFOdlEsS0FBS21MLGFBQWFtRCxNQUFNQyxRQUFVLFMsZ0NBUXhCWixHQUNWQSxFQUFNTCxXQUFXVCxZQUFhN00sS0FBS3FPLGdCQUNuQ3JPLEtBQUtxTyxlQUFldlAsTUFBUTZPLEVBQU1DLFVBRWxDNU4sS0FBS3FPLGVBQWVMLFVBQVVRLE9BQVF4TyxLQUFLMkssd0JBQzNDM0ssS0FBS3FPLGVBQWVDLE1BQU1DLFFBQVUsUUFDcEN2TyxLQUFLcU8sZUFBZXFDLFUsb0NBU05DLEdBQ2QsTUFBTyxZQUFLM1EsS0FBS3dNLGlCQUFpQlgsaUJBQWtCLFdBQVkrRSxRQUMvRCxTQUFFQyxFQUFLbEQsR0FDTixPQUFPa0QsR0FBT2xELEVBQU1DLFlBQWMrQyxLQUVuQyxLLGtDQVMwQixJQUFqQkcsRUFBaUIsd0RBQzNCLEdBQUssU0FBVzlRLEtBQUtxTyxlQUFlQyxNQUFNQyxRQUExQyxDQUlBLElBQU1vQyxFQUFXM1EsS0FBS3FPLGVBQWV2UCxNQUFNK0gsT0FFM0MsR0FBSyxLQUFPOEosRUFBVyxDQUN0QixJQUFNSSxFQUFhcEgsU0FBU3FILGVBQWdCaFIsS0FBSzBLLGVBQy9Da0UsY0FLRixPQUpBNU8sS0FBS2lSLHFCQUNMRixFQUFXekQsV0FBV0MsWUFBYXdELFFBQ25DL1EsS0FBSzRMLGtCQUtOLElBQU0rQixFQUFRM04sS0FBS3FPLGVBQWVmLFdBQVd2QyxjQUFlLFNBQzVELEdBQUsrRixHQUFVSCxJQUFhaEQsRUFBTUMsVUFDakM1TixLQUFLaVIsMEJBS04sR0FBT2pSLEtBQUtrUixjQUFlUCxHQUEzQixDQU1BLElBQU14SyxFQUFRbkcsS0FBS3FPLGVBQWVmLFdBQVd2QyxjQUFlLFNBRTVEL0ssS0FBS2lSLHFCQUVMdEQsRUFBTUMsVUFBWStDLEVBQ2xCM1EsS0FBS21QLFlBQWFoSixFQUFPd0ssR0FFekIzUSxLQUFLNEwsdUJBWko1TCxLQUFLcU8sZUFBZUwsVUFBVUMsSUFBS2pPLEtBQUsySywyQixrQ0FxQjdCeEUsRUFBT3dLLEdBRW5CeEssRUFBTS9ILEtBQU8rSCxFQUFNL0gsS0FBSzRJLFFBQ3ZCLGtCQUNBLE1BQVEySixFQUFXLE8sbUNBU1A3SSxHQUNiQSxFQUFROEYsVUFBWSxHQUNwQjlGLEVBQVFrRyxVQUFVUSxPQUFRLFksc0NBTzFCeE8sS0FBS21SLGFBQWNuUixLQUFLbU4sZ0JBQ3hCbk4sS0FBS21SLGFBQWNuUixLQUFLb04sY0FDeEJnRSxhQUFjcFIsS0FBS3FSLFksa0NBU1BDLEVBQUl4SixHQUFVLFdBQzFCd0osRUFBRzFELFVBQVk5RixFQUNmd0osRUFBR3RELFVBQVVDLElBQUssVUFFbEJqTyxLQUFLcVIsU0FBV0UsWUFBWSxXQUMzQixFQUFLQyxrQkFDSCxTLGVBSVU1SCIsImZpbGUiOiJqcy9zZXR0aW5ncy9hcHAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4iLCJ2YXIgX19zZWxmX18gPSAoZnVuY3Rpb24gKHJvb3QpIHtcbmZ1bmN0aW9uIEYoKSB7XG50aGlzLmZldGNoID0gZmFsc2U7XG50aGlzLkRPTUV4Y2VwdGlvbiA9IHJvb3QuRE9NRXhjZXB0aW9uXG59XG5GLnByb3RvdHlwZSA9IHJvb3Q7XG5yZXR1cm4gbmV3IEYoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKTtcbihmdW5jdGlvbihzZWxmKSB7XG5cbnZhciBpcnJlbGV2YW50ID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG5cbiAgdmFyIHN1cHBvcnQgPSB7XG4gICAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBzZWxmLFxuICAgIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBzZWxmICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICAgIGJsb2I6XG4gICAgICAnRmlsZVJlYWRlcicgaW4gc2VsZiAmJlxuICAgICAgJ0Jsb2InIGluIHNlbGYgJiZcbiAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBuZXcgQmxvYigpO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSkoKSxcbiAgICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBzZWxmLFxuICAgIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIHNlbGZcbiAgfTtcblxuICBmdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgICBdO1xuXG4gICAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSk7XG4gICAgfVxuICAgIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+XS9pLnRlc3QobmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lJylcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG4gIGZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gICAgdmFyIGl0ZXJhdG9yID0ge1xuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KCk7XG4gICAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZXJhdG9yXG4gIH1cblxuICBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgICB0aGlzLm1hcCA9IHt9O1xuXG4gICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKTtcbiAgICAgIH0sIHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXTtcbiAgICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZTtcbiAgfTtcblxuICBIZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldO1xuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbiAgfTtcblxuICBIZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gIH07XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKTtcbiAgfTtcblxuICBIZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIGl0ZW1zLnB1c2gobmFtZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBpdGVtcyA9IFtdO1xuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgaXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9O1xuXG4gIEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXRlbXMgPSBbXTtcbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9O1xuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXM7XG4gIH1cblxuICBmdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gICAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgICB9XG4gICAgYm9keS5ib2R5VXNlZCA9IHRydWU7XG4gIH1cblxuICBmdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpO1xuICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcbiAgICByZXR1cm4gcHJvbWlzZVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcik7XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYik7XG4gICAgcmV0dXJuIHByb21pc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG4gICAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gY2hhcnMuam9pbignJylcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICAgIGlmIChidWYuc2xpY2UpIHtcbiAgICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aCk7XG4gICAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKTtcbiAgICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIEJvZHkoKSB7XG4gICAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHk7XG4gICAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSAnJztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keTtcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5O1xuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHk7XG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKTtcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcik7XG4gICAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pO1xuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpO1xuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIHJldHVybiBjb25zdW1lZCh0aGlzKSB8fCBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpO1xuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddO1xuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2RcbiAgfVxuXG4gIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keTtcblxuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgICAgfVxuICAgICAgdGhpcy51cmwgPSBpbnB1dC51cmw7XG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHM7XG4gICAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kO1xuICAgICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZTtcbiAgICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsO1xuICAgICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXQ7XG4gICAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpO1xuICAgIH1cblxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJztcbiAgICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKTtcbiAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGw7XG4gICAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbDtcbiAgICB0aGlzLnJlZmVycmVyID0gbnVsbDtcblxuICAgIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgICB9XG4gICAgdGhpcy5faW5pdEJvZHkoYm9keSk7XG4gIH1cblxuICBSZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxuICB9O1xuXG4gIGZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gICAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKTtcbiAgICBib2R5XG4gICAgICAudHJpbSgpXG4gICAgICAuc3BsaXQoJyYnKVxuICAgICAgLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKTtcbiAgICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJyk7XG4gICAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpO1xuICAgICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHJldHVybiBmb3JtXG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICAgIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKTtcbiAgICAvLyBSZXBsYWNlIGluc3RhbmNlcyBvZiBcXHJcXG4gYW5kIFxcbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2Ugb3IgaG9yaXpvbnRhbCB0YWIgd2l0aCBhIHNwYWNlXG4gICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKTtcbiAgICBwcmVQcm9jZXNzZWRIZWFkZXJzLnNwbGl0KC9cXHI/XFxuLykuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6Jyk7XG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKCk7XG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKCk7XG4gICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBoZWFkZXJzXG4gIH1cblxuICBCb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpO1xuXG4gIGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuXG4gICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnO1xuICAgIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzO1xuICAgIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDA7XG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gJ3N0YXR1c1RleHQnIGluIG9wdGlvbnMgPyBvcHRpb25zLnN0YXR1c1RleHQgOiAnT0snO1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJztcbiAgICB0aGlzLl9pbml0Qm9keShib2R5SW5pdCk7XG4gIH1cblxuICBCb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKTtcblxuICBSZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICAgIHVybDogdGhpcy51cmxcbiAgICB9KVxuICB9O1xuXG4gIFJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSk7XG4gICAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcic7XG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH07XG5cbiAgdmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdO1xuXG4gIFJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG4gIH07XG5cbiAgZXhwb3J0cy5ET01FeGNlcHRpb24gPSBzZWxmLkRPTUV4Y2VwdGlvbjtcbiAgdHJ5IHtcbiAgICBuZXcgZXhwb3J0cy5ET01FeGNlcHRpb24oKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXhwb3J0cy5ET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrO1xuICAgIH07XG4gICAgZXhwb3J0cy5ET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuICAgIGV4cG9ydHMuRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGV4cG9ydHMuRE9NRXhjZXB0aW9uO1xuICB9XG5cbiAgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KTtcblxuICAgICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChuZXcgZXhwb3J0cy5ET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfVxuXG4gICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbiAgICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgICB4aHIuYWJvcnQoKTtcbiAgICAgIH1cblxuICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAnJylcbiAgICAgICAgfTtcbiAgICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKTtcbiAgICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHQ7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKTtcbiAgICAgIH07XG5cbiAgICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpO1xuICAgICAgfTtcblxuICAgICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKTtcbiAgICAgIH07XG5cbiAgICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgZXhwb3J0cy5ET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKTtcbiAgICAgIH07XG5cbiAgICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LnVybCwgdHJ1ZSk7XG5cbiAgICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIgJiYgc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYic7XG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocik7XG5cbiAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdCk7XG4gICAgfSlcbiAgfVxuXG4gIGZldGNoLnBvbHlmaWxsID0gdHJ1ZTtcblxuICBpZiAoIXNlbGYuZmV0Y2gpIHtcbiAgICBzZWxmLmZldGNoID0gZmV0Y2g7XG4gICAgc2VsZi5IZWFkZXJzID0gSGVhZGVycztcbiAgICBzZWxmLlJlcXVlc3QgPSBSZXF1ZXN0O1xuICAgIHNlbGYuUmVzcG9uc2UgPSBSZXNwb25zZTtcbiAgfVxuXG4gIGV4cG9ydHMuSGVhZGVycyA9IEhlYWRlcnM7XG4gIGV4cG9ydHMuUmVxdWVzdCA9IFJlcXVlc3Q7XG4gIGV4cG9ydHMuUmVzcG9uc2UgPSBSZXNwb25zZTtcbiAgZXhwb3J0cy5mZXRjaCA9IGZldGNoO1xuXG4gIHJldHVybiBleHBvcnRzO1xuXG59KHt9KSk7XG59KShfX3NlbGZfXyk7XG5kZWxldGUgX19zZWxmX18uZmV0Y2gucG9seWZpbGxcbmV4cG9ydHMgPSBfX3NlbGZfXy5mZXRjaCAvLyBUbyBlbmFibGU6IGltcG9ydCBmZXRjaCBmcm9tICdjcm9zcy1mZXRjaCdcbmV4cG9ydHMuZGVmYXVsdCA9IF9fc2VsZl9fLmZldGNoIC8vIEZvciBUeXBlU2NyaXB0IGNvbnN1bWVycyB3aXRob3V0IGVzTW9kdWxlSW50ZXJvcC5cbmV4cG9ydHMuZmV0Y2ggPSBfX3NlbGZfXy5mZXRjaCAvLyBUbyBlbmFibGU6IGltcG9ydCB7ZmV0Y2h9IGZyb20gJ2Nyb3NzLWZldGNoJ1xuZXhwb3J0cy5IZWFkZXJzID0gX19zZWxmX18uSGVhZGVyc1xuZXhwb3J0cy5SZXF1ZXN0ID0gX19zZWxmX18uUmVxdWVzdFxuZXhwb3J0cy5SZXNwb25zZSA9IF9fc2VsZl9fLlJlc3BvbnNlXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNcbiIsIi8qKlxuICogQGZpbGUgU2V0dGluZ3MgQXBwbGljYXRpb24uXG4gKi9cbmltcG9ydCBTZXR0aW5ncyBmcm9tICcuL3NldHRpbmdzJztcblxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG5cdG5ldyBTZXR0aW5ncygpO1xufSApO1xuIiwiLyoqXG4gKiBAZmlsZSBjbGFzcyBTZXR0aW5ncy5cbiAqL1xuXG4vKiBnbG9iYWwgQ3lyMkxhdFNldHRpbmdzT2JqZWN0ICovXG5cbmNsYXNzIFNldHRpbmdzIHtcblx0LyoqXG5cdCAqIENsYXNzIGNvbnN0cnVjdG9yLlxuXHQgKi9cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5PUFRJT05TX0ZPUk1fU0VMRUNUT1IgPSAnI2N0bC1vcHRpb25zJztcblx0XHR0aGlzLkhFQURFUl9TRUxFQ1RPUiA9IHRoaXMuT1BUSU9OU19GT1JNX1NFTEVDVE9SICsgJyBoMic7XG5cdFx0dGhpcy5UQUJMRV9TRUxFQ1RPUiA9IHRoaXMuT1BUSU9OU19GT1JNX1NFTEVDVE9SICsgJyB0YWJsZSc7XG5cdFx0dGhpcy5TVUJNSVRfU0VMRUNUT1IgPSB0aGlzLk9QVElPTlNfRk9STV9TRUxFQ1RPUiArICcgI3N1Ym1pdCc7XG5cdFx0dGhpcy5DT05WRVJUX0ZPUk1fU0VMRUNUT1IgPSAnI2N0bC1jb252ZXJ0LWV4aXN0aW5nLXNsdWdzJztcblx0XHR0aGlzLkNPTlZFUlRfQlVUVE9OX1NFTEVDVE9SID0gJyNjdGwtY29udmVydC1idXR0b24nO1xuXHRcdHRoaXMuQ09ORklSTV9QT1BVUF9TRUxFQ1RPUiA9ICcjY3RsLWNvbmZpcm0tcG9wdXAnO1xuXHRcdHRoaXMuQ09ORklSTV9PS19TRUxFQ1RPUiA9ICcjY3RsLWNvbmZpcm0tb2snO1xuXHRcdHRoaXMuQ09ORklSTV9DQU5DRUxfU0VMRUNUT1IgPSAnI2N0bC1jb25maXJtLWNhbmNlbCc7XG5cdFx0dGhpcy5DVVJSRU5UX1NUVUJfSUQgPSAnY3RsLWN1cnJlbnQnO1xuXHRcdHRoaXMuQ1VSUkVOVF9OQVZfVEFCX0NMQVNTID0gJ25hdi10YWItY3VycmVudCc7XG5cdFx0dGhpcy5BQ1RJVkVfTkFWX1RBQl9DTEFTUyA9ICduYXYtdGFiLWFjdGl2ZSc7XG5cdFx0dGhpcy5BQ1RJVkVfVEFCTEVfQ0xBU1MgPSAnYWN0aXZlJztcblx0XHR0aGlzLkVESVRfTEFCRUxfSUQgPSAnY3RsLWVkaXQtbGFiZWwnO1xuXHRcdHRoaXMuRURJVF9MQUJFTF9FUlJPUl9DTEFTUyA9ICdjdGwtZWRpdC1sYWJlbC1lcnJvcic7XG5cdFx0dGhpcy5wbHVzQnV0dG9uID1cblx0XHRcdCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIGNsYXNzPVwiY29tcG9uZW50cy1idXR0b24gYmxvY2stZWRpdG9yLWluc2VydGVyX190b2dnbGUgaGFzLWljb25cIiBhcmlhLWxhYmVsPVwi0JTQvtCx0LDQstC40YLRjCDQsdC70L7QulwiPicgK1xuXHRcdFx0Jzxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCItMiAtMiAyNCAyNFwiIHJvbGU9XCJpbWdcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPicgK1xuXHRcdFx0JzxwYXRoIGQ9XCJNMTAgMWMtNSAwLTkgNC05IDlzNCA5IDkgOSA5LTQgOS05LTQtOS05LTl6bTAgMTZjLTMuOSAwLTctMy4xLTctN3MzLjEtNyA3LTcgNyAzLjEgNyA3LTMuMSA3LTcgN3ptMS0xMUg5djNINnYyaDN2M2gydi0zaDNWOWgtM1Y2ek0xMCAxYy01IDAtOSA0LTkgOXM0IDkgOSA5IDktNCA5LTktNC05LTktOXptMCAxNmMtMy45IDAtNy0zLjEtNy03czMuMS03IDctNyA3IDMuMSA3IDctMy4xIDctNyA3em0xLTExSDl2M0g2djJoM3YzaDJ2LTNoM1Y5aC0zVjZ6XCI+JyArXG5cdFx0XHQnPC9wYXRoPicgK1xuXHRcdFx0Jzwvc3ZnPicgK1xuXHRcdFx0JzwvYnV0dG9uPic7XG5cdFx0dGhpcy5QTFVTX0NMQVNTID0gJ2N0bC1wbHVzJztcblxuXHRcdHRoaXMub3B0aW9uc0Zvcm0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCB0aGlzLk9QVElPTlNfRk9STV9TRUxFQ1RPUiApO1xuXHRcdHRoaXMudGFibGVzRGF0YSA9IHRoaXMuZ2V0VGFibGVzRGF0YSgpO1xuXHRcdHRoaXMuc3VibWl0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggdGhpcy5TVUJNSVRfU0VMRUNUT1IgKTtcblx0XHR0aGlzLmNvbmZpcm1Qb3B1cCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG5cdFx0XHR0aGlzLkNPTkZJUk1fUE9QVVBfU0VMRUNUT1Jcblx0XHQpO1xuXG5cdFx0Ly8gQ29weSB0byBjbGFzcyBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgZXNsaW50IG1hcmtzIHNvbWUgcHJvcGVydGllcyBvZiBnbG9iYWwgb2JqZWN0IGFzIHVucmVzb2x2ZWQuXG5cdFx0dGhpcy5vcHRpb25zU2F2ZVN1Y2Nlc3NNZXNzYWdlID1cblx0XHRcdEN5cjJMYXRTZXR0aW5nc09iamVjdC5vcHRpb25zU2F2ZVN1Y2Nlc3NNZXNzYWdlO1xuXHRcdHRoaXMub3B0aW9uc1NhdmVFcnJvck1lc3NhZ2UgPVxuXHRcdFx0Q3lyMkxhdFNldHRpbmdzT2JqZWN0Lm9wdGlvbnNTYXZlRXJyb3JNZXNzYWdlO1xuXG5cdFx0dGhpcy5hZGRXcmFwcGVyKCk7XG5cdFx0dGhpcy5hZGRNZXNzYWdlTGluZXMoKTtcblx0XHR0aGlzLmFkZEVkaXRMYWJlbElucHV0KCk7XG5cdFx0dGhpcy5oaWRlVGFibGVzKCk7XG5cdFx0dGhpcy5iaW5kRXZlbnRzKCk7XG5cdFx0dGhpcy5zZXRTdWJtaXRTdGF0dXMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgaGVhZGVycy5cblx0ICpcblx0ICogQHJldHVybiB7KltdfSBIZWFkZXJzLlxuXHQgKi9cblx0Z2V0SGVhZGVycygpIHtcblx0XHRyZXR1cm4gWyAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCB0aGlzLkhFQURFUl9TRUxFQ1RPUiApIF07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjdGl2ZSBoZWFkZXIuXG5cdCAqXG5cdCAqIEByZXR1cm4ge0VsZW1lbnR9IEFjdGl2ZSBoZWFkZXIuXG5cdCAqL1xuXHRnZXRBY3RpdmVIZWFkZXIoKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG5cdFx0XHR0aGlzLkhFQURFUl9TRUxFQ1RPUiArICcuJyArIHRoaXMuQUNUSVZFX05BVl9UQUJfQ0xBU1Ncblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY3RpdmUgaW5kZXguXG5cdCAqXG5cdCAqIEByZXR1cm4geyp9IEFjdGl2ZSBpbmRleC5cblx0ICovXG5cdGdldEFjdGl2ZUluZGV4KCkge1xuXHRcdHJldHVybiB0aGlzLmdldEFjdGl2ZUhlYWRlcigpLmRhdGFzZXQuaW5kZXg7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRhYmxlcy5cblx0ICpcblx0ICogQHJldHVybiB7KltdfSBUYWJsZXMuXG5cdCAqL1xuXHRnZXRUYWJsZXMoKSB7XG5cdFx0cmV0dXJuIFsgLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCggdGhpcy5UQUJMRV9TRUxFQ1RPUiApIF07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGFjdGl2ZSB0YWJsZS5cblx0ICpcblx0ICogQHJldHVybiB7RWxlbWVudH0gQWN0aXZlIHRhYmxlLlxuXHQgKi9cblx0Z2V0QWN0aXZlVGFibGUoKSB7XG5cdFx0cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG5cdFx0XHR0aGlzLlRBQkxFX1NFTEVDVE9SICsgJy4nICsgdGhpcy5BQ1RJVkVfVEFCTEVfQ0xBU1Ncblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBpbnB1dHMuXG5cdCAqXG5cdCAqIEByZXR1cm4geypbXX0gSW5wdXRzLlxuXHQgKi9cblx0Z2V0SW5wdXRzKCkge1xuXHRcdHJldHVybiBbXG5cdFx0XHQuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuXHRcdFx0XHR0aGlzLk9QVElPTlNfRk9STV9TRUxFQ1RPUiArICcgaW5wdXQnXG5cdFx0XHQpLFxuXHRcdF07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGxhYmVscy5cblx0ICpcblx0ICogQHJldHVybiB7KltdfSBMYWJlbHMuXG5cdCAqL1xuXHRnZXRMYWJlbHMoKSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG5cdFx0XHRcdHRoaXMuT1BUSU9OU19GT1JNX1NFTEVDVE9SICsgJyBsYWJlbCdcblx0XHRcdCksXG5cdFx0XTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgcGx1cyBidXR0b25zLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHsqW119IFBsdXMgYnV0dG9ucy5cblx0ICovXG5cdGdldFBsdXNCdXR0b25zKCkge1xuXHRcdHJldHVybiBbXG5cdFx0XHQuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuXHRcdFx0XHR0aGlzLk9QVElPTlNfRk9STV9TRUxFQ1RPUiArICcgLicgKyB0aGlzLlBMVVNfQ0xBU1Ncblx0XHRcdCksXG5cdFx0XTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBvZiBhY3RpdmUgdGFibGUgd2FzIGNoYW5nZWQuXG5cdCAqXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IElmIGFjdGl2ZSB0YWJsZSB3YXMgY2hhbmdlZC5cblx0ICovXG5cdGlzQWN0aXZlVGFibGVDaGFuZ2VkKCkge1xuXHRcdGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5nZXRBY3RpdmVJbmRleCgpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdEpTT04uc3RyaW5naWZ5KCB0aGlzLmdldEFjdGl2ZVRhYmxlRGF0YSgpICkgIT09XG5cdFx0XHRKU09OLnN0cmluZ2lmeSggdGhpcy50YWJsZXNEYXRhWyBhY3RpdmVJbmRleCBdIClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldCBzdGF0dXMgb2Ygc3VibWl0IGJ1dHRvbi5cblx0ICovXG5cdHNldFN1Ym1pdFN0YXR1cygpIHtcblx0XHR0aGlzLnN1Ym1pdEJ1dHRvbi5kaXNhYmxlZCA9ICEgdGhpcy5pc0FjdGl2ZVRhYmxlQ2hhbmdlZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmUgYWN0aXZlIHRhYmxlLlxuXHQgKi9cblx0c2F2ZUFjdGl2ZVRhYmxlKCkge1xuXHRcdGlmICggISB0aGlzLmlzQWN0aXZlVGFibGVDaGFuZ2VkKCkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgYWN0aXZlVGFibGUgPSB0aGlzLmdldEFjdGl2ZVRhYmxlKCk7XG5cblx0XHRjb25zdCBhY3RpdmVGb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2Zvcm0nICk7XG5cdFx0YWN0aXZlRm9ybS5hY3Rpb24gPSB0aGlzLm9wdGlvbnNGb3JtLmdldEF0dHJpYnV0ZSggJ2FjdGlvbicgKTtcblx0XHRhY3RpdmVGb3JtLm1ldGhvZCA9IHRoaXMub3B0aW9uc0Zvcm0ubWV0aG9kO1xuXHRcdGFjdGl2ZUZvcm0uYXBwZW5kQ2hpbGQoIGFjdGl2ZVRhYmxlLmNsb25lTm9kZSggdHJ1ZSApICk7XG5cblx0XHRjb25zdCBhY3RpdmVJbnB1dHMgPSBbIC4uLmFjdGl2ZVRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoICdpbnB1dCcgKSBdO1xuXHRcdGFjdGl2ZUlucHV0cy5tYXAoICggaW5wdXQgKSA9PiB7XG5cdFx0XHRyZXR1cm4gKCBhY3RpdmVGb3JtLnF1ZXJ5U2VsZWN0b3IoICcjJyArIGlucHV0LmlkICkudmFsdWUgPVxuXHRcdFx0XHRpbnB1dC52YWx1ZSApO1xuXHRcdH0gKTtcblxuXHRcdGNvbnN0IGhpZGRlbklucHV0cyA9IFtcblx0XHRcdC4uLnRoaXMub3B0aW9uc0Zvcm0ucXVlcnlTZWxlY3RvckFsbCggJ2lucHV0W3R5cGU9XCJoaWRkZW5cIl0nICksXG5cdFx0XTtcblx0XHRoaWRkZW5JbnB1dHMubWFwKCAoIGlucHV0ICkgPT4ge1xuXHRcdFx0cmV0dXJuIGFjdGl2ZUZvcm0uYXBwZW5kQ2hpbGQoIGlucHV0LmNsb25lTm9kZSggdHJ1ZSApICk7XG5cdFx0fSApO1xuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoIGFjdGl2ZUZvcm0gKTtcblxuXHRcdHJldHVybiBmZXRjaCggdGhpcy5vcHRpb25zRm9ybS5nZXRBdHRyaWJ1dGUoICdhY3Rpb24nICksIHtcblx0XHRcdG1ldGhvZDogYWN0aXZlRm9ybS5tZXRob2QsXG5cdFx0XHRib2R5OiBuZXcgVVJMU2VhcmNoUGFyYW1zKCBbIC4uLm5ldyBGb3JtRGF0YSggYWN0aXZlRm9ybSApIF0gKSxcblx0XHR9IClcblx0XHRcdC50aGVuKCAoIHJlc3BvbnNlICkgPT4ge1xuXHRcdFx0XHRpZiAoIHJlc3BvbnNlLm9rICkge1xuXHRcdFx0XHRcdHRoaXMuc2hvd01lc3NhZ2UoXG5cdFx0XHRcdFx0XHR0aGlzLnN1Y2Nlc3NNZXNzYWdlLFxuXHRcdFx0XHRcdFx0dGhpcy5vcHRpb25zU2F2ZVN1Y2Nlc3NNZXNzYWdlXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR0aGlzLnRhYmxlc0RhdGEgPSB0aGlzLmdldFRhYmxlc0RhdGEoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnNob3dNZXNzYWdlKFxuXHRcdFx0XHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UsXG5cdFx0XHRcdFx0XHR0aGlzLm9wdGlvbnNTYXZlRXJyb3JNZXNzYWdlXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiByZXNwb25zZS5qc29uKCk7XG5cdFx0XHR9IClcblx0XHRcdC5maW5hbGx5KCAoKSA9PiB7XG5cdFx0XHRcdGFjdGl2ZUZvcm0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggYWN0aXZlRm9ybSApO1xuXHRcdFx0XHR0aGlzLnNldFN1Ym1pdFN0YXR1cygpO1xuXHRcdFx0fSApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0YWJsZSBkYXRhLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0VsZW1lbnR9IHRhYmxlIFRhYmxlLlxuXHQgKiBAcmV0dXJuIHt7fVtdfSBUYWJsZSBkYXRhLlxuXHQgKi9cblx0Z2V0VGFibGVEYXRhKCB0YWJsZSApIHtcblx0XHRjb25zdCBpbnB1dHMgPSBbIC4uLnRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoICdpbnB1dCcgKSBdO1xuXG5cdFx0Y29uc3QgZGF0YSA9IHt9O1xuXHRcdGlucHV0cy5mb3JFYWNoKCAoIGlucHV0ICkgPT4ge1xuXHRcdFx0Y29uc3QgbGFiZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuXHRcdFx0XHR0aGlzLk9QVElPTlNfRk9STV9TRUxFQ1RPUiArICcgbGFiZWxbZm9yPVwiJyArIGlucHV0LmlkICsgJ1wiXSdcblx0XHRcdCk7XG5cblx0XHRcdGRhdGFbIGxhYmVsLmlubmVySFRNTCBdID0gaW5wdXQudmFsdWU7XG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIGRhdGE7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IGRhdGEgZnJvbSBhbGwgdGFibGVzLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHt7fVtdW119IERhdGEgZnJvbSBhbGwgdGFibGVzLlxuXHQgKi9cblx0Z2V0VGFibGVzRGF0YSgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRUYWJsZXMoKS5tYXAoICggdGFibGUgKSA9PiB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRUYWJsZURhdGEoIHRhYmxlICk7XG5cdFx0fSApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhY3RpdmUgdGFibGUgZGF0YS5cblx0ICpcblx0ICogQHJldHVybiB7e31bXX0gQWN0aXZlIHRhYmxlIGRhdGEuXG5cdCAqL1xuXHRnZXRBY3RpdmVUYWJsZURhdGEoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0VGFibGVEYXRhKCB0aGlzLmdldEFjdGl2ZVRhYmxlKCkgKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgd3JhcHBlci5cblx0ICovXG5cdGFkZFdyYXBwZXIoKSB7XG5cdFx0dGhpcy53cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ3VsJyApO1xuXHRcdHRoaXMud3JhcHBlci5jbGFzc0xpc3QuYWRkKCAnbmF2LXRhYi13cmFwcGVyJyApO1xuXHRcdHRoaXMub3B0aW9uc0Zvcm0uaW5zZXJ0QmVmb3JlKFxuXHRcdFx0dGhpcy53cmFwcGVyLFxuXHRcdFx0dGhpcy5vcHRpb25zRm9ybS5maXJzdENoaWxkXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgbWVzc2FnZSBsaW5lLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWQgTWVzc2FnZSBpZC5cblx0ICogQHJldHVybiB7SFRNTERpdkVsZW1lbnR9IE1lc3NhZ2UgbGluZS5cblx0ICovXG5cdGFkZE1lc3NhZ2VMaW5lKCBpZCApIHtcblx0XHRjb25zdCBtZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2RpdicgKTtcblx0XHRtZXNzYWdlLmlkID0gaWQ7XG5cdFx0dGhpcy5vcHRpb25zRm9ybS5pbnNlcnRCZWZvcmUoIG1lc3NhZ2UsIHRoaXMub3B0aW9uc0Zvcm0uZmlyc3RDaGlsZCApO1xuXG5cdFx0cmV0dXJuIG1lc3NhZ2U7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHN1Y2Nlc3MgYW5kIGVycm9yIG1lc3NhZ2UgbGluZXMuXG5cdCAqL1xuXHRhZGRNZXNzYWdlTGluZXMoKSB7XG5cdFx0dGhpcy5zdWNjZXNzTWVzc2FnZSA9IHRoaXMuYWRkTWVzc2FnZUxpbmUoICdjdGwtc3VjY2VzcycgKTtcblx0XHR0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMuYWRkTWVzc2FnZUxpbmUoICdjdGwtZXJyb3InICk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGVkaXQgbGFiZWwgaW5wdXQuXG5cdCAqL1xuXHRhZGRFZGl0TGFiZWxJbnB1dCgpIHtcblx0XHR0aGlzLmVkaXRMYWJlbElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2lucHV0JyApO1xuXHRcdHRoaXMuZWRpdExhYmVsSW5wdXQuaWQgPSB0aGlzLkVESVRfTEFCRUxfSUQ7XG5cdFx0dGhpcy5lZGl0TGFiZWxJbnB1dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoIHRoaXMuZWRpdExhYmVsSW5wdXQgKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIaWRlIGVkaXQgbGFiZWwgaW5wdXQuXG5cdCAqL1xuXHRoaWRlRWRpdExhYmVsSW5wdXQoKSB7XG5cdFx0dGhpcy5lZGl0TGFiZWxJbnB1dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXHRcdHRoaXMuZWRpdExhYmVsSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSggdGhpcy5FRElUX0xBQkVMX0VSUk9SX0NMQVNTICk7XG5cdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCggdGhpcy5lZGl0TGFiZWxJbnB1dCApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBsYXN0IGNlbGwgaW4gYWN0aXZlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHtFbGVtZW50fSBMYXN0IGNlbGwuXG5cdCAqL1xuXHRnZXRMYXN0Q2VsbCgpIHtcblx0XHRyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcihcblx0XHRcdHRoaXMuT1BUSU9OU19GT1JNX1NFTEVDVE9SICtcblx0XHRcdFx0JyAuJyArXG5cdFx0XHRcdHRoaXMuQUNUSVZFX1RBQkxFX0NMQVNTICtcblx0XHRcdFx0JyAuJyArXG5cdFx0XHRcdHRoaXMuUExVU19DTEFTU1xuXHRcdCkucHJldmlvdXNFbGVtZW50U2libGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgbmV3IGNlbGwgdG8gdGhlIGFjdGl2ZSB0YWJsZS5cblx0ICovXG5cdGFkZENlbGwoKSB7XG5cdFx0bGV0IGxhc3RDZWxsID0gdGhpcy5nZXRMYXN0Q2VsbCgpO1xuXHRcdGxhc3RDZWxsLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxuXHRcdFx0bGFzdENlbGwuY2xvbmVOb2RlKCB0cnVlICksXG5cdFx0XHRsYXN0Q2VsbC5uZXh0RWxlbWVudFNpYmxpbmdcblx0XHQpO1xuXG5cdFx0bGFzdENlbGwgPSB0aGlzLmdldExhc3RDZWxsKCk7XG5cdFx0Y29uc3QgbGFiZWwgPSBsYXN0Q2VsbC5xdWVyeVNlbGVjdG9yKCAnbGFiZWwnICk7XG5cdFx0Y29uc3QgaW5wdXQgPSBsYXN0Q2VsbC5xdWVyeVNlbGVjdG9yKCAnaW5wdXQnICk7XG5cblx0XHRjb25zdCBpZEFyciA9IGlucHV0LmlkLnNwbGl0KCAnLScgKTtcblx0XHRjb25zdCBuZXdJZCA9IGlkQXJyWyAwIF0gKyAnLScgKyAoIHBhcnNlSW50KCBpZEFyclsgMSBdICkgKyAxICk7XG5cblx0XHRsYWJlbC5odG1sRm9yID0gbmV3SWQ7XG5cdFx0bGFiZWwuaW5uZXJIVE1MID0gJyc7XG5cblx0XHRpbnB1dC5pZCA9IG5ld0lkO1xuXHRcdGlucHV0LnZhbHVlID0gJyc7XG5cdFx0aW5wdXQuc2V0QXR0cmlidXRlKCAndmFsdWUnLCAnJyApO1xuXHRcdHRoaXMucmVwbGFjZU5hbWUoIGlucHV0LCAnJyApO1xuXG5cdFx0dGhpcy5iaW5kRXZlbnRzKCk7XG5cblx0XHR0aGlzLmVkaXRMYWJlbCggbGFiZWwgKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIaWRlIGNvbnZlcnNpb24gdGFibGVzIGV4Y2VwdCB0aGUgZmlyc3Qgb25lLlxuXHQgKiBDcmVhdGUgbmF2aWdhdGlvbiB0YWJzLlxuXHQgKi9cblx0aGlkZVRhYmxlcygpIHtcblx0XHRsZXQgY3VycmVudEluZGV4ID0gMDtcblxuXHRcdHRoaXMuZ2V0VGFibGVzKCkubWFwKCAoIHRhYmxlLCBpbmRleCApID0+IHtcblx0XHRcdHRhYmxlLmNsYXNzTGlzdC5hZGQoICdjdGwtdGFibGUnICk7XG5cblx0XHRcdGlmICggdGhpcy5DVVJSRU5UX1NUVUJfSUQgPT09IHRhYmxlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcuaWQgKSB7XG5cdFx0XHRcdGN1cnJlbnRJbmRleCA9IGluZGV4O1xuXHRcdFx0XHR0YWJsZS5jbGFzc0xpc3QuYWRkKCB0aGlzLkFDVElWRV9UQUJMRV9DTEFTUyApO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBwbHVzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2RpdicgKTtcblx0XHRcdHBsdXMuY2xhc3NMaXN0LmFkZCggdGhpcy5QTFVTX0NMQVNTICk7XG5cdFx0XHRwbHVzLmlubmVySFRNTCA9IHRoaXMucGx1c0J1dHRvbjtcblx0XHRcdHRhYmxlLnF1ZXJ5U2VsZWN0b3IoICd0ZCcgKS5hcHBlbmRDaGlsZCggcGx1cyApO1xuXG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9ICk7XG5cblx0XHR0aGlzLmdldEhlYWRlcnMoKS5tYXAoICggaGVhZGVyLCBpbmRleCApID0+IHtcblx0XHRcdGhlYWRlci5jbGFzc0xpc3QuYWRkKCAnbmF2LXRhYicgKTtcblx0XHRcdGhlYWRlci5kYXRhc2V0LmluZGV4ID0gaW5kZXg7XG5cblx0XHRcdHRoaXMud3JhcHBlci5hcHBlbmRDaGlsZCggaGVhZGVyICk7XG5cdFx0XHRpZiAoIGluZGV4ID09PSBjdXJyZW50SW5kZXggKSB7XG5cdFx0XHRcdGhlYWRlci5jbGFzc0xpc3QuYWRkKCB0aGlzLkNVUlJFTlRfTkFWX1RBQl9DTEFTUyApO1xuXHRcdFx0XHRoZWFkZXIuY2xhc3NMaXN0LmFkZCggdGhpcy5BQ1RJVkVfTkFWX1RBQl9DTEFTUyApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9ICk7XG5cdH1cblxuXHQvKipcblx0ICogQmluZCBldmVudHMgdG8gbWV0aG9kcy5cblx0ICovXG5cdGJpbmRFdmVudHMoKSB7XG5cdFx0dGhpcy5nZXRIZWFkZXJzKCkubWFwKCAoIGhlYWRlciwgaSwgaGVhZGVycyApID0+IHtcblx0XHRcdGhlYWRlci5vbmNsaWNrID0gKCBldmVudCApID0+IHtcblx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuXHRcdFx0XHRjb25zdCBpbmRleCA9IGV2ZW50LnRhcmdldC5kYXRhc2V0LmluZGV4O1xuXHRcdFx0XHRjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuZ2V0QWN0aXZlSW5kZXgoKTtcblxuXHRcdFx0XHRpZiAoIGluZGV4ID09PSBhY3RpdmVJbmRleCApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLnNhdmVBY3RpdmVUYWJsZSgpO1xuXG5cdFx0XHRcdGhlYWRlcnMubWFwKCAoIGFIZWFkZXIgKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGFIZWFkZXIuY2xhc3NMaXN0LnJlbW92ZShcblx0XHRcdFx0XHRcdHRoaXMuQUNUSVZFX05BVl9UQUJfQ0xBU1Ncblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHRcdGhlYWRlcnNbIGluZGV4IF0uY2xhc3NMaXN0LmFkZCggdGhpcy5BQ1RJVkVfTkFWX1RBQl9DTEFTUyApO1xuXG5cdFx0XHRcdGNvbnN0IHRhYmxlcyA9IHRoaXMuZ2V0VGFibGVzKCk7XG5cdFx0XHRcdHRhYmxlcy5tYXAoICggdGFibGUgKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRhYmxlLmNsYXNzTGlzdC5yZW1vdmUoIHRoaXMuQUNUSVZFX1RBQkxFX0NMQVNTICk7XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0dGFibGVzWyBpbmRleCBdLmNsYXNzTGlzdC5hZGQoIHRoaXMuQUNUSVZFX1RBQkxFX0NMQVNTICk7XG5cblx0XHRcdFx0dGhpcy5zZXRTdWJtaXRTdGF0dXMoKTtcblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9ICk7XG5cblx0XHR0aGlzLmdldElucHV0cygpLm1hcCggKCBpbnB1dCApID0+IHtcblx0XHRcdGlucHV0Lm9uaW5wdXQgPSAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuc2V0U3VibWl0U3RhdHVzKCk7XG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9ICk7XG5cblx0XHR0aGlzLmdldExhYmVscygpLm1hcCggKCBsYWJlbCApID0+IHtcblx0XHRcdGxhYmVsLm9uY2xpY2sgPSAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHR0aGlzLmVkaXRMYWJlbCggZXZlbnQudGFyZ2V0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH0gKTtcblxuXHRcdHRoaXMuZWRpdExhYmVsSW5wdXQub25ibHVyID0gKCkgPT4ge1xuXHRcdFx0dGhpcy5zYXZlTGFiZWwoKTtcblx0XHR9O1xuXG5cdFx0dGhpcy5lZGl0TGFiZWxJbnB1dC5vbmtleXVwID0gKCBlICkgPT4ge1xuXHRcdFx0aWYgKCAnRXNjYXBlJyA9PT0gZS5rZXkgKSB7XG5cdFx0XHRcdHRoaXMuc2F2ZUxhYmVsKCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICggJ0VudGVyJyA9PT0gZS5rZXkgKSB7XG5cdFx0XHRcdHRoaXMuc2F2ZUxhYmVsKCk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMuZ2V0UGx1c0J1dHRvbnMoKS5tYXAoICggcGx1cyApID0+IHtcblx0XHRcdHBsdXMub25jbGljayA9ICggZXZlbnQgKSA9PiB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdHRoaXMuYWRkQ2VsbCggZXZlbnQudGFyZ2V0ICk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH07XG5cblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH0gKTtcblxuXHRcdHRoaXMuc3VibWl0QnV0dG9uLm9uY2xpY2sgPSAoIGV2ZW50ICkgPT4ge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMuc2F2ZUFjdGl2ZVRhYmxlKCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fTtcblxuXHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIHRoaXMuQ09OVkVSVF9CVVRUT05fU0VMRUNUT1IgKS5vbmNsaWNrID0gKFxuXHRcdFx0ZXZlbnRcblx0XHQpID0+IHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLmNvbmZpcm1Qb3B1cC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9O1xuXG5cdFx0dGhpcy5jb25maXJtUG9wdXAub25jbGljayA9ICgpID0+IHtcblx0XHRcdHRoaXMuaGlkZUNvbmZpcm1Qb3B1cCgpO1xuXHRcdH07XG5cblx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCB0aGlzLkNPTkZJUk1fT0tfU0VMRUNUT1IgKS5vbmNsaWNrID0gKFxuXHRcdFx0ZXZlbnRcblx0XHQpID0+IHtcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0dGhpcy5oaWRlQ29uZmlybVBvcHVwKCk7XG5cdFx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCB0aGlzLkNPTlZFUlRfRk9STV9TRUxFQ1RPUiApLnN1Ym1pdCgpO1xuXHRcdH07XG5cblx0XHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCB0aGlzLkNPTkZJUk1fQ0FOQ0VMX1NFTEVDVE9SICkub25jbGljayA9IChcblx0XHRcdGV2ZW50XG5cdFx0KSA9PiB7XG5cdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdHRoaXMuaGlkZUNvbmZpcm1Qb3B1cCgpO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogSGlkZSBjb25maXJtYXRpb24gcG9wdXAuXG5cdCAqL1xuXHRoaWRlQ29uZmlybVBvcHVwKCkge1xuXHRcdHRoaXMuY29uZmlybVBvcHVwLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cdH1cblxuXHQvKipcblx0ICogRWRpdCBsYWJlbC5cblx0ICpcblx0ICogQHBhcmFtIHtFbGVtZW50fSBsYWJlbCBMYWJlbCB0byBlZGl0LlxuXHQgKi9cblx0ZWRpdExhYmVsKCBsYWJlbCApIHtcblx0XHRsYWJlbC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKCB0aGlzLmVkaXRMYWJlbElucHV0ICk7XG5cdFx0dGhpcy5lZGl0TGFiZWxJbnB1dC52YWx1ZSA9IGxhYmVsLmlubmVySFRNTDtcblxuXHRcdHRoaXMuZWRpdExhYmVsSW5wdXQuY2xhc3NMaXN0LnJlbW92ZSggdGhpcy5FRElUX0xBQkVMX0VSUk9SX0NMQVNTICk7XG5cdFx0dGhpcy5lZGl0TGFiZWxJbnB1dC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblx0XHR0aGlzLmVkaXRMYWJlbElucHV0LmZvY3VzKCk7XG5cdH1cblxuXHQvKipcblx0ICogSXMgbmV3IHZhbHVlIG9mIGVkaXRlZCBsYWJlbCB1bmlxdWUgaW4gYWN0aXZlIHRhYmxlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUgTmV3IFZhbHVlIGZyb20gZWRpdGVkIGxhYmVsLlxuXHQgKiBAcmV0dXJuIHsqfSBJZiBuZXcgdmFsdWUgb2YgZWRpdGVkIGxhYmVsIGlzIHVuaXF1ZSBpbiBhY3RpdmUgdGFibGUuXG5cdCAqL1xuXHRpc1VuaXF1ZUxhYmVsKCBuZXdWYWx1ZSApIHtcblx0XHRyZXR1cm4gWyAuLi50aGlzLmdldEFjdGl2ZVRhYmxlKCkucXVlcnlTZWxlY3RvckFsbCggJ2xhYmVsJyApIF0ucmVkdWNlKFxuXHRcdFx0KCBhY2MsIGxhYmVsICkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYWNjICYmIGxhYmVsLmlubmVySFRNTCAhPT0gbmV3VmFsdWU7XG5cdFx0XHR9LFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZSBtb2RpZmllZCBsYWJlbC5cblx0ICpcblx0ICogQHBhcmFtIHtib29sZWFufSBjYW5jZWwgQ2FuY2VsLlxuXHQgKi9cblx0c2F2ZUxhYmVsKCBjYW5jZWwgPSBmYWxzZSApIHtcblx0XHRpZiAoICdub25lJyA9PT0gdGhpcy5lZGl0TGFiZWxJbnB1dC5zdHlsZS5kaXNwbGF5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5lZGl0TGFiZWxJbnB1dC52YWx1ZS50cmltKCk7XG5cblx0XHRpZiAoICcnID09PSBuZXdWYWx1ZSApIHtcblx0XHRcdGNvbnN0IGVkaXRlZENlbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggdGhpcy5FRElUX0xBQkVMX0lEIClcblx0XHRcdFx0LnBhcmVudEVsZW1lbnQ7XG5cdFx0XHR0aGlzLmhpZGVFZGl0TGFiZWxJbnB1dCgpO1xuXHRcdFx0ZWRpdGVkQ2VsbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBlZGl0ZWRDZWxsICk7XG5cdFx0XHR0aGlzLnNldFN1Ym1pdFN0YXR1cygpO1xuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgbGFiZWwgPSB0aGlzLmVkaXRMYWJlbElucHV0LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvciggJ2xhYmVsJyApO1xuXHRcdGlmICggY2FuY2VsIHx8IG5ld1ZhbHVlID09PSBsYWJlbC5pbm5lckhUTUwgKSB7XG5cdFx0XHR0aGlzLmhpZGVFZGl0TGFiZWxJbnB1dCgpO1xuXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCAhIHRoaXMuaXNVbmlxdWVMYWJlbCggbmV3VmFsdWUgKSApIHtcblx0XHRcdHRoaXMuZWRpdExhYmVsSW5wdXQuY2xhc3NMaXN0LmFkZCggdGhpcy5FRElUX0xBQkVMX0VSUk9SX0NMQVNTICk7XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBpbnB1dCA9IHRoaXMuZWRpdExhYmVsSW5wdXQucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCAnaW5wdXQnICk7XG5cblx0XHR0aGlzLmhpZGVFZGl0TGFiZWxJbnB1dCgpO1xuXG5cdFx0bGFiZWwuaW5uZXJIVE1MID0gbmV3VmFsdWU7XG5cdFx0dGhpcy5yZXBsYWNlTmFtZSggaW5wdXQsIG5ld1ZhbHVlICk7XG5cblx0XHR0aGlzLnNldFN1Ym1pdFN0YXR1cygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlcGxhY2UgaW5wdXQgbmFtZSBhY2NvcmRpbmcgdG8gdGhlIG5ldyBsYWJlbCB2YWx1ZS5cblx0ICpcblx0ICogQHBhcmFtIHtFbGVtZW50fSBpbnB1dCBJbnB1dFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUgTmV3IGxhYmVsIHZhbHVlXG5cdCAqL1xuXHRyZXBsYWNlTmFtZSggaW5wdXQsIG5ld1ZhbHVlICkge1xuXHRcdC8vIG5vaW5zcGVjdGlvbiBKU1VucmVzb2x2ZWRWYXJpYWJsZVxuXHRcdGlucHV0Lm5hbWUgPSBpbnB1dC5uYW1lLnJlcGxhY2UoXG5cdFx0XHQvKC4rXFxbLitdKVxcWy4qXS9nLFxuXHRcdFx0JyQxWycgKyBuZXdWYWx1ZSArICddJ1xuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgbWVzc2FnZS5cblx0ICpcblx0ICogQHBhcmFtIHtIVE1MRGl2RWxlbWVudH0gbWVzc2FnZSBNZXNzYWdlLlxuXHQgKi9cblx0Y2xlYXJNZXNzYWdlKCBtZXNzYWdlICkge1xuXHRcdG1lc3NhZ2UuaW5uZXJIVE1MID0gJyc7XG5cdFx0bWVzc2FnZS5jbGFzc0xpc3QucmVtb3ZlKCAnYWN0aXZlJyApO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFyIG1lc3NhZ2VzLlxuXHQgKi9cblx0Y2xlYXJNZXNzYWdlcygpIHtcblx0XHR0aGlzLmNsZWFyTWVzc2FnZSggdGhpcy5zdWNjZXNzTWVzc2FnZSApO1xuXHRcdHRoaXMuY2xlYXJNZXNzYWdlKCB0aGlzLmVycm9yTWVzc2FnZSApO1xuXHRcdGNsZWFyVGltZW91dCggdGhpcy5tc2dUaW1lciApO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3cgbWVzc2FnZS5cblx0ICpcblx0ICogQHBhcmFtIHtIVE1MRGl2RWxlbWVudH0gZWwgRWxlbWVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgTWVzc2FnZS5cblx0ICovXG5cdHNob3dNZXNzYWdlKCBlbCwgbWVzc2FnZSApIHtcblx0XHRlbC5pbm5lckhUTUwgPSBtZXNzYWdlO1xuXHRcdGVsLmNsYXNzTGlzdC5hZGQoICdhY3RpdmUnICk7XG5cblx0XHR0aGlzLm1zZ1RpbWVyID0gc2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0dGhpcy5jbGVhck1lc3NhZ2VzKCk7XG5cdFx0fSwgNTAwMCApO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNldHRpbmdzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
languages/cyr2lat-ru_RU.mo CHANGED
Binary file
languages/cyr2lat-ru_RU.po CHANGED
@@ -1,19 +1,19 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Cyr To Lat\n"
4
- "POT-Creation-Date: 2020-05-19 22:53+0300\n"
5
- "PO-Revision-Date: 2020-05-19 22:55+0300\n"
6
  "Last-Translator: KAGG Design <info@kagg.eu>\n"
7
  "Language-Team: KAGG Design\n"
8
  "Language: ru_RU\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 2.3.1\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
  "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
16
- "X-Poedit-KeywordsList: __;esc_html__;esc_attr__\n"
17
  "X-Poedit-Flags-xgettext: --add-comments\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: .git\n"
@@ -28,85 +28,85 @@ msgstr ""
28
  "X-Poedit-SearchPathExcluded-9: tests\n"
29
  "X-Poedit-SearchPathExcluded-10: vendor\n"
30
 
31
- #: classes/background-processes/class-post-conversion-process.php:72
32
  msgid "Post slug converted:"
33
  msgstr "Ярлык поста сконвертирован:"
34
 
35
- #: classes/background-processes/class-post-conversion-process.php:101
36
  msgid "Attachment file converted:"
37
  msgstr "Файл вложения сконвертирован:"
38
 
39
- #: classes/background-processes/class-post-conversion-process.php:107
40
  msgid "Cannot convert attachment file for attachment id:"
41
  msgstr "Невозможно сконвертировать файл вложения для вложения с id:"
42
 
43
- #: classes/background-processes/class-post-conversion-process.php:125
44
  msgid "Thumbnail file renamed:"
45
  msgstr "Файл миниатюры переименован:"
46
 
47
- #: classes/background-processes/class-post-conversion-process.php:128
48
  msgid "Cannot rename thumbnail file:"
49
  msgstr "Невозможно переименовать файл миниатюры:"
50
 
51
- #: classes/background-processes/class-post-conversion-process.php:197
52
  msgid "Post slugs conversion completed."
53
  msgstr "Конвертация ярлыков постов завершена."
54
 
55
- #: classes/background-processes/class-term-conversion-process.php:71
56
  msgid "Term slug converted:"
57
  msgstr "Ярлык термина сконвертирован:"
58
 
59
- #: classes/background-processes/class-term-conversion-process.php:83
60
  msgid "Term slugs conversion completed."
61
  msgstr "Конвертация ярлыков терминов завершена."
62
 
63
- #: classes/class-converter.php:115
64
  msgid "Cyr To Lat converts existing post slugs in the background process."
65
  msgstr "Cyr To Lat конвертирует существующие ярлыки постов в фоновом процессе."
66
 
67
- #: classes/class-converter.php:122
68
  msgid "Cyr To Lat converts existing term slugs in the background process."
69
  msgstr ""
70
  "Cyr To Lat конвертирует существующие ярлыки терминов в фоновом процессе."
71
 
72
- #: classes/class-converter.php:129
73
  msgid "Cyr To Lat completed conversion of existing post slugs."
74
  msgstr "Cyr To Lat завершил конвертацию существующих ярлыков постов."
75
 
76
- #: classes/class-converter.php:136
77
  msgid "Cyr To Lat completed conversion of existing term slugs."
78
  msgstr "Cyr To Lat завершил конвертацию существующих ярлыков терминов."
79
 
80
- #: classes/class-converter.php:214
81
  msgid "Cyr To Lat has not found existing post slugs for conversion."
82
  msgstr "Cyr To Lat не нашёл существующих ярлыков постов для конвертации."
83
 
84
- #: classes/class-converter.php:226
85
  msgid "Post slugs conversion started."
86
  msgstr "Начата конвертация ярлыков постов."
87
 
88
- #: classes/class-converter.php:228
89
  msgid "Cyr To Lat started conversion of existing post slugs."
90
  msgstr "Cyr To Lat начал конвертацию существующих ярлыков постов."
91
 
92
- #: classes/class-converter.php:253
93
  msgid "Cyr To Lat has not found existing term slugs for conversion."
94
  msgstr "Cyr To Lat не нашёл существующих ярлыков терминов для конвертации."
95
 
96
- #: classes/class-converter.php:265
97
  msgid "Term slugs conversion started."
98
  msgstr "Начата конвертация ярлыков терминов."
99
 
100
- #: classes/class-converter.php:267
101
  msgid "Cyr To Lat started conversion of existing term slugs."
102
  msgstr "Cyr To Lat начал конвертацию существующих ярлыков терминов."
103
 
104
- #: classes/class-requirements.php:99
105
  msgid "Cyr To Lat plugin has been deactivated."
106
  msgstr "Плагин Cyr To Lat был деактивирован."
107
 
108
  #. translators: 1: Current PHP version number, 2: Cyr To Lat version, 3: Minimum required PHP version number
109
- #: classes/class-requirements.php:113
110
  #, php-format
111
  msgid ""
112
  "Your server is running PHP version %1$s but Cyr To Lat %2$s requires at "
@@ -115,12 +115,12 @@ msgstr ""
115
  "На сервере установлен PHP версии %1$s, однако для Cyr To Lat %2$s требуется "
116
  "хотя бы %3$s."
117
 
118
- #: classes/class-requirements.php:134
119
  msgid "Unable to get filesystem access."
120
  msgstr "Невозможно получить доступ к файловой системе."
121
 
122
  #. translators: 1: max_input_vars value, 2: Cyr To Lat version, 3: Minimum required max_input_vars
123
- #: classes/class-requirements.php:151
124
  #, php-format
125
  msgid ""
126
  "Your server is running PHP with max_input_vars=%1$d but Cyr To Lat %2$s "
@@ -130,22 +130,22 @@ msgstr ""
130
  "требуется хотя бы %3$d."
131
 
132
  #. translators: 1: .user.ini filename
133
- #: classes/class-requirements.php:155
134
  #, php-format
135
  msgid "We have updated settings in %s."
136
  msgstr "Мы обновили настройки в %s."
137
 
138
  #. translators: 1: Wait time in seconds
139
- #: classes/class-requirements.php:158
140
  #, php-format
141
  msgid "Please try again in %d s."
142
  msgstr "Пожалуйста, попробуйте снова через %d сек."
143
 
144
- #: classes/class-requirements.php:224
145
  msgid "Please increase max input vars limit up to 1500."
146
  msgstr "Пожалуйста, увеличьте лимит max input vars до 1500."
147
 
148
- #: classes/class-requirements.php:227
149
  msgid ""
150
  "See: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" "
151
  "target=\"_blank\">Increasing max input vars limit.</a>"
@@ -153,101 +153,131 @@ msgstr ""
153
  "См.: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" "
154
  "target=\"_blank\">Увеличение лимита max input vars.</a>"
155
 
156
- #: classes/class-settings.php:129
157
  msgid "View Cyr To Lat settings"
158
  msgstr "Посмотреть настройки Cyr To Lat"
159
 
160
- #: classes/class-settings.php:130
161
  msgid "Settings"
162
  msgstr "Настройки"
163
 
164
- #: classes/class-settings.php:146
165
  msgid "ISO9 Table"
166
  msgstr "Таблица ISO9"
167
 
168
- #: classes/class-settings.php:149
169
  msgid "bel Table"
170
  msgstr "Таблица bel"
171
 
172
- #: classes/class-settings.php:152
173
  msgid "uk Table"
174
  msgstr "Таблица uk"
175
 
176
- #: classes/class-settings.php:155
177
  msgid "bg_BG Table"
178
  msgstr "Таблица bg_BG"
179
 
180
- #: classes/class-settings.php:158
181
  msgid "mk_MK Table"
182
  msgstr "Таблица mk_MK"
183
 
184
- #: classes/class-settings.php:161
185
  msgid "sr_RS Table"
186
  msgstr "Таблица sr_RS"
187
 
188
- #: classes/class-settings.php:164
189
  msgid "el Table"
190
  msgstr "Таблица el"
191
 
192
- #: classes/class-settings.php:167
193
  msgid "hy Table"
194
  msgstr "Таблица hy"
195
 
196
- #: classes/class-settings.php:170
197
  msgid "ka_GE Table"
198
  msgstr "Таблица ka_GE"
199
 
200
- #: classes/class-settings.php:173
201
  msgid "kk Table"
202
  msgstr "Таблица kk"
203
 
204
- #: classes/class-settings.php:176
205
  msgid "he_IL Table"
206
  msgstr "Таблица he_IL"
207
 
208
- #: classes/class-settings.php:179
209
  msgid "zh_CN Table"
210
  msgstr "Таблица zh_CN"
211
 
212
- #: classes/class-settings.php:206
213
  msgid "(current)"
214
  msgstr "(текущая)"
215
 
216
- #: classes/class-settings.php:273 classes/class-settings.php:274
217
  msgid "Cyr To Lat"
218
  msgstr "Cyr To Lat"
219
 
220
  #. Admin panel title.
221
- #: classes/class-settings.php:294
222
  msgid "Cyr To Lat Plugin Options"
223
  msgstr "Опции плагина Cyr To Lat"
224
 
225
- #: classes/class-settings.php:309
226
  msgid "Convert Existing Slugs"
227
  msgstr "Конвертировать существующие ярлыки"
228
 
229
- #: classes/class-settings.php:315
230
- msgid "Donate"
231
- msgstr "Пожертвовать"
232
-
233
- #: classes/class-settings.php:318
234
- msgid "Would you like to support the advancement of this plugin?"
235
- msgstr "Хотите поддержать развитие этого плагина?"
236
-
237
- #: classes/class-settings.php:332
238
  msgid "Your appreciation"
239
  msgstr "Ваша оценка"
240
 
241
- #: classes/class-settings.php:337
242
  msgid "Leave a ★★★★★ plugin review on WordPress.org"
243
  msgstr "Оставьте ★★★★★ обзор плагина на WordPress.org"
244
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  #. translators: %d: cron interval
246
  #: lib/wp-background-processing/class-wp-background-process.php:399
247
  #, php-format
248
  msgid "Every %d Minutes"
249
  msgstr "Каждые %d минут"
250
 
 
 
 
 
 
 
251
  #~ msgid "Please try again."
252
  #~ msgstr "Пожалуйста, попробуйте снова."
253
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Cyr To Lat\n"
4
+ "POT-Creation-Date: 2021-02-10 14:55+0200\n"
5
+ "PO-Revision-Date: 2021-02-10 14:57+0200\n"
6
  "Last-Translator: KAGG Design <info@kagg.eu>\n"
7
  "Language-Team: KAGG Design\n"
8
  "Language: ru_RU\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.4.2\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
15
  "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
16
+ "X-Poedit-KeywordsList: __;esc_html__;esc_attr__;esc_html_e\n"
17
  "X-Poedit-Flags-xgettext: --add-comments\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
  "X-Poedit-SearchPathExcluded-0: .git\n"
28
  "X-Poedit-SearchPathExcluded-9: tests\n"
29
  "X-Poedit-SearchPathExcluded-10: vendor\n"
30
 
31
+ #: classes/background-processes/class-post-conversion-process.php:73
32
  msgid "Post slug converted:"
33
  msgstr "Ярлык поста сконвертирован:"
34
 
35
+ #: classes/background-processes/class-post-conversion-process.php:102
36
  msgid "Attachment file converted:"
37
  msgstr "Файл вложения сконвертирован:"
38
 
39
+ #: classes/background-processes/class-post-conversion-process.php:108
40
  msgid "Cannot convert attachment file for attachment id:"
41
  msgstr "Невозможно сконвертировать файл вложения для вложения с id:"
42
 
43
+ #: classes/background-processes/class-post-conversion-process.php:126
44
  msgid "Thumbnail file renamed:"
45
  msgstr "Файл миниатюры переименован:"
46
 
47
+ #: classes/background-processes/class-post-conversion-process.php:129
48
  msgid "Cannot rename thumbnail file:"
49
  msgstr "Невозможно переименовать файл миниатюры:"
50
 
51
+ #: classes/background-processes/class-post-conversion-process.php:198
52
  msgid "Post slugs conversion completed."
53
  msgstr "Конвертация ярлыков постов завершена."
54
 
55
+ #: classes/background-processes/class-term-conversion-process.php:72
56
  msgid "Term slug converted:"
57
  msgstr "Ярлык термина сконвертирован:"
58
 
59
+ #: classes/background-processes/class-term-conversion-process.php:84
60
  msgid "Term slugs conversion completed."
61
  msgstr "Конвертация ярлыков терминов завершена."
62
 
63
+ #: classes/class-converter.php:106
64
  msgid "Cyr To Lat converts existing post slugs in the background process."
65
  msgstr "Cyr To Lat конвертирует существующие ярлыки постов в фоновом процессе."
66
 
67
+ #: classes/class-converter.php:113
68
  msgid "Cyr To Lat converts existing term slugs in the background process."
69
  msgstr ""
70
  "Cyr To Lat конвертирует существующие ярлыки терминов в фоновом процессе."
71
 
72
+ #: classes/class-converter.php:120
73
  msgid "Cyr To Lat completed conversion of existing post slugs."
74
  msgstr "Cyr To Lat завершил конвертацию существующих ярлыков постов."
75
 
76
+ #: classes/class-converter.php:127
77
  msgid "Cyr To Lat completed conversion of existing term slugs."
78
  msgstr "Cyr To Lat завершил конвертацию существующих ярлыков терминов."
79
 
80
+ #: classes/class-converter.php:205
81
  msgid "Cyr To Lat has not found existing post slugs for conversion."
82
  msgstr "Cyr To Lat не нашёл существующих ярлыков постов для конвертации."
83
 
84
+ #: classes/class-converter.php:216
85
  msgid "Post slugs conversion started."
86
  msgstr "Начата конвертация ярлыков постов."
87
 
88
+ #: classes/class-converter.php:218
89
  msgid "Cyr To Lat started conversion of existing post slugs."
90
  msgstr "Cyr To Lat начал конвертацию существующих ярлыков постов."
91
 
92
+ #: classes/class-converter.php:242
93
  msgid "Cyr To Lat has not found existing term slugs for conversion."
94
  msgstr "Cyr To Lat не нашёл существующих ярлыков терминов для конвертации."
95
 
96
+ #: classes/class-converter.php:253
97
  msgid "Term slugs conversion started."
98
  msgstr "Начата конвертация ярлыков терминов."
99
 
100
+ #: classes/class-converter.php:255
101
  msgid "Cyr To Lat started conversion of existing term slugs."
102
  msgstr "Cyr To Lat начал конвертацию существующих ярлыков терминов."
103
 
104
+ #: classes/class-requirements.php:101
105
  msgid "Cyr To Lat plugin has been deactivated."
106
  msgstr "Плагин Cyr To Lat был деактивирован."
107
 
108
  #. translators: 1: Current PHP version number, 2: Cyr To Lat version, 3: Minimum required PHP version number
109
+ #: classes/class-requirements.php:116
110
  #, php-format
111
  msgid ""
112
  "Your server is running PHP version %1$s but Cyr To Lat %2$s requires at "
115
  "На сервере установлен PHP версии %1$s, однако для Cyr To Lat %2$s требуется "
116
  "хотя бы %3$s."
117
 
118
+ #: classes/class-requirements.php:137
119
  msgid "Unable to get filesystem access."
120
  msgstr "Невозможно получить доступ к файловой системе."
121
 
122
  #. translators: 1: max_input_vars value, 2: Cyr To Lat version, 3: Minimum required max_input_vars
123
+ #: classes/class-requirements.php:154
124
  #, php-format
125
  msgid ""
126
  "Your server is running PHP with max_input_vars=%1$d but Cyr To Lat %2$s "
130
  "требуется хотя бы %3$d."
131
 
132
  #. translators: 1: .user.ini filename
133
+ #: classes/class-requirements.php:158
134
  #, php-format
135
  msgid "We have updated settings in %s."
136
  msgstr "Мы обновили настройки в %s."
137
 
138
  #. translators: 1: Wait time in seconds
139
+ #: classes/class-requirements.php:161
140
  #, php-format
141
  msgid "Please try again in %d s."
142
  msgstr "Пожалуйста, попробуйте снова через %d сек."
143
 
144
+ #: classes/class-requirements.php:226
145
  msgid "Please increase max input vars limit up to 1500."
146
  msgstr "Пожалуйста, увеличьте лимит max input vars до 1500."
147
 
148
+ #: classes/class-requirements.php:229
149
  msgid ""
150
  "See: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" "
151
  "target=\"_blank\">Increasing max input vars limit.</a>"
153
  "См.: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" "
154
  "target=\"_blank\">Увеличение лимита max input vars.</a>"
155
 
156
+ #: classes/class-settings.php:126
157
  msgid "View Cyr To Lat settings"
158
  msgstr "Посмотреть настройки Cyr To Lat"
159
 
160
+ #: classes/class-settings.php:127
161
  msgid "Settings"
162
  msgstr "Настройки"
163
 
164
+ #: classes/class-settings.php:143
165
  msgid "ISO9 Table"
166
  msgstr "Таблица ISO9"
167
 
168
+ #: classes/class-settings.php:146
169
  msgid "bel Table"
170
  msgstr "Таблица bel"
171
 
172
+ #: classes/class-settings.php:149
173
  msgid "uk Table"
174
  msgstr "Таблица uk"
175
 
176
+ #: classes/class-settings.php:152
177
  msgid "bg_BG Table"
178
  msgstr "Таблица bg_BG"
179
 
180
+ #: classes/class-settings.php:155
181
  msgid "mk_MK Table"
182
  msgstr "Таблица mk_MK"
183
 
184
+ #: classes/class-settings.php:158
185
  msgid "sr_RS Table"
186
  msgstr "Таблица sr_RS"
187
 
188
+ #: classes/class-settings.php:161
189
  msgid "el Table"
190
  msgstr "Таблица el"
191
 
192
+ #: classes/class-settings.php:164
193
  msgid "hy Table"
194
  msgstr "Таблица hy"
195
 
196
+ #: classes/class-settings.php:167
197
  msgid "ka_GE Table"
198
  msgstr "Таблица ka_GE"
199
 
200
+ #: classes/class-settings.php:170
201
  msgid "kk Table"
202
  msgstr "Таблица kk"
203
 
204
+ #: classes/class-settings.php:173
205
  msgid "he_IL Table"
206
  msgstr "Таблица he_IL"
207
 
208
+ #: classes/class-settings.php:176
209
  msgid "zh_CN Table"
210
  msgstr "Таблица zh_CN"
211
 
212
+ #: classes/class-settings.php:203
213
  msgid "(current)"
214
  msgstr "(текущая)"
215
 
216
+ #: classes/class-settings.php:270 classes/class-settings.php:271
217
  msgid "Cyr To Lat"
218
  msgstr "Cyr To Lat"
219
 
220
  #. Admin panel title.
221
+ #: classes/class-settings.php:291
222
  msgid "Cyr To Lat Plugin Options"
223
  msgstr "Опции плагина Cyr To Lat"
224
 
225
+ #: classes/class-settings.php:307
226
  msgid "Convert Existing Slugs"
227
  msgstr "Конвертировать существующие ярлыки"
228
 
229
+ #: classes/class-settings.php:313
 
 
 
 
 
 
 
 
230
  msgid "Your appreciation"
231
  msgstr "Ваша оценка"
232
 
233
+ #: classes/class-settings.php:318
234
  msgid "Leave a ★★★★★ plugin review on WordPress.org"
235
  msgstr "Оставьте ★★★★★ обзор плагина на WordPress.org"
236
 
237
+ #: classes/class-settings.php:664
238
+ msgid "Options saved."
239
+ msgstr "Настройки сохранены."
240
+
241
+ #: classes/class-settings.php:665
242
+ msgid "Error saving options."
243
+ msgstr "Ошибка сохранения настроек."
244
+
245
+ #: classes/class-settings.php:689
246
+ msgid "Important:"
247
+ msgstr "Важно:"
248
+
249
+ #: classes/class-settings.php:692
250
+ msgid ""
251
+ "This operation is irreversible. Please make sure that you have made backup "
252
+ "copy of your database."
253
+ msgstr ""
254
+ "Эта операция необратима. Пожалуйста, убедитесь, что вы сделали копию базы "
255
+ "данных."
256
+
257
+ #: classes/class-settings.php:697
258
+ msgid "Are you sure to continue?"
259
+ msgstr "Вы уверены, что хотите продолжить?"
260
+
261
+ #: classes/class-settings.php:701
262
+ msgid "OK"
263
+ msgstr "OK"
264
+
265
+ #: classes/class-settings.php:704
266
+ msgid "Cancel"
267
+ msgstr "Отмена"
268
+
269
  #. translators: %d: cron interval
270
  #: lib/wp-background-processing/class-wp-background-process.php:399
271
  #, php-format
272
  msgid "Every %d Minutes"
273
  msgstr "Каждые %d минут"
274
 
275
+ #~ msgid "Donate"
276
+ #~ msgstr "Пожертвовать"
277
+
278
+ #~ msgid "Would you like to support the advancement of this plugin?"
279
+ #~ msgstr "Хотите поддержать развитие этого плагина?"
280
+
281
  #~ msgid "Please try again."
282
  #~ msgstr "Пожалуйста, попробуйте снова."
283
 
languages/cyr2lat-sv.mo CHANGED
Binary file
languages/cyr2lat-uk.mo CHANGED
Binary file
languages/en_US.pot CHANGED
@@ -2,7 +2,7 @@
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Cyr To Lat\n"
5
- "POT-Creation-Date: 2019-12-28 01:01+0200\n"
6
  "PO-Revision-Date: 2019-01-25 19:18+0200\n"
7
  "Last-Translator: KAGG Design <info@kagg.eu>\n"
8
  "Language-Team: KAGG Design\n"
@@ -10,7 +10,7 @@ msgstr ""
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Poedit 2.2.4\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
16
  "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
@@ -22,82 +22,96 @@ msgstr ""
22
  "X-Poedit-SearchPathExcluded-1: dist\n"
23
  "X-Poedit-SearchPathExcluded-2: src\n"
24
 
25
- #. phpcs:enable
26
- #: classes/background-processes/class-post-conversion-process.php:71
27
  msgid "Post slug converted:"
28
  msgstr ""
29
 
30
- #: classes/background-processes/class-post-conversion-process.php:83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  msgid "Post slugs conversion completed."
32
  msgstr ""
33
 
34
- #. phpcs:enable
35
- #: classes/background-processes/class-term-conversion-process.php:70
36
  msgid "Term slug converted:"
37
  msgstr ""
38
 
39
- #: classes/background-processes/class-term-conversion-process.php:82
40
  msgid "Term slugs conversion completed."
41
  msgstr ""
42
 
43
- #: classes/class-converter.php:119
44
  msgid "Cyr To Lat converts existing post slugs in the background process."
45
  msgstr ""
46
 
47
- #: classes/class-converter.php:126
48
  msgid "Cyr To Lat converts existing term slugs in the background process."
49
  msgstr ""
50
 
51
- #: classes/class-converter.php:133
52
  msgid "Cyr To Lat completed conversion of existing post slugs."
53
  msgstr ""
54
 
55
- #: classes/class-converter.php:140
56
  msgid "Cyr To Lat completed conversion of existing term slugs."
57
  msgstr ""
58
 
59
- #: classes/class-converter.php:206
 
 
 
 
60
  msgid "Post slugs conversion started."
61
  msgstr ""
62
 
63
- #: classes/class-converter.php:208
64
  msgid "Cyr To Lat started conversion of existing post slugs."
65
  msgstr ""
66
 
67
- #: classes/class-converter.php:215
68
- msgid "Cyr To Lat has not found existing post slugs for conversion."
69
  msgstr ""
70
 
71
- #: classes/class-converter.php:234
72
  msgid "Term slugs conversion started."
73
  msgstr ""
74
 
75
- #: classes/class-converter.php:236
76
  msgid "Cyr To Lat started conversion of existing term slugs."
77
  msgstr ""
78
 
79
- #: classes/class-converter.php:243
80
- msgid "Cyr To Lat has not found existing term slugs for conversion."
81
- msgstr ""
82
-
83
- #: classes/class-requirements.php:53
84
- msgid "Unable to get filesystem access."
85
- msgstr ""
86
-
87
- #: classes/class-requirements.php:91
88
  msgid "Cyr To Lat plugin has been deactivated."
89
  msgstr ""
90
 
91
  #. translators: 1: Current PHP version number, 2: Cyr To Lat version, 3: Minimum required PHP version number
92
- #: classes/class-requirements.php:105
93
  #, php-format
94
  msgid ""
95
  "Your server is running PHP version %1$s but Cyr To Lat %2$s requires at "
96
  "least %3$s."
97
  msgstr ""
98
 
 
 
 
 
99
  #. translators: 1: max_input_vars value, 2: Cyr To Lat version, 3: Minimum required max_input_vars
100
- #: classes/class-requirements.php:127
101
  #, php-format
102
  msgid ""
103
  "Your server is running PHP with max_input_vars=%1$d but Cyr To Lat %2$s "
@@ -105,96 +119,126 @@ msgid ""
105
  msgstr ""
106
 
107
  #. translators: 1: .user.ini filename
108
- #: classes/class-requirements.php:131
109
  #, php-format
110
  msgid "We have updated settings in %s."
111
  msgstr ""
112
 
113
  #. translators: 1: Wait time in seconds
114
- #: classes/class-requirements.php:141
115
  #, php-format
116
  msgid "Please try again in %d s."
117
  msgstr ""
118
 
119
- #: classes/class-requirements.php:143
120
- msgid "Please try again."
121
  msgstr ""
122
 
123
- #: classes/class-settings.php:122
 
 
 
 
 
 
124
  msgid "View Cyr To Lat settings"
125
  msgstr ""
126
 
127
- #: classes/class-settings.php:123
128
  msgid "Settings"
129
  msgstr ""
130
 
131
- #: classes/class-settings.php:135 classes/class-settings.php:361
 
132
  msgid "ISO9 Table"
133
  msgstr ""
134
 
135
- #: classes/class-settings.php:144 classes/class-settings.php:367
 
136
  msgid "bel Table"
137
  msgstr ""
138
 
139
- #: classes/class-settings.php:153 classes/class-settings.php:373
 
140
  msgid "uk Table"
141
  msgstr ""
142
 
143
- #: classes/class-settings.php:162 classes/class-settings.php:379
 
144
  msgid "bg_BG Table"
145
  msgstr ""
146
 
147
- #: classes/class-settings.php:171 classes/class-settings.php:385
 
148
  msgid "mk_MK Table"
149
  msgstr ""
150
 
151
- #: classes/class-settings.php:180 classes/class-settings.php:391
 
152
  msgid "sr_RS Table"
153
  msgstr ""
154
 
155
- #: classes/class-settings.php:189 classes/class-settings.php:397
 
 
 
 
 
 
 
 
 
 
 
156
  msgid "ka_GE Table"
157
  msgstr ""
158
 
159
- #: classes/class-settings.php:198 classes/class-settings.php:403
 
160
  msgid "kk Table"
161
  msgstr ""
162
 
163
- #: classes/class-settings.php:207 classes/class-settings.php:409
 
164
  msgid "he_IL Table"
165
  msgstr ""
166
 
167
- #: classes/class-settings.php:216 classes/class-settings.php:415
 
168
  msgid "zh_CN Table"
169
  msgstr ""
170
 
171
- #: classes/class-settings.php:280 classes/class-settings.php:281
 
 
 
 
172
  msgid "Cyr To Lat"
173
  msgstr ""
174
 
175
  #. Admin panel title.
176
- #: classes/class-settings.php:301
177
  msgid "Cyr To Lat Plugin Options"
178
  msgstr ""
179
 
180
- #: classes/class-settings.php:316
181
  msgid "Convert Existing Slugs"
182
  msgstr ""
183
 
184
- #: classes/class-settings.php:322
185
- msgid "Donate"
186
  msgstr ""
187
 
188
- #: classes/class-settings.php:325
189
- msgid "Would you like to support the advancement of this plugin?"
190
  msgstr ""
191
 
192
- #: classes/class-settings.php:339
193
- msgid "Your appreciation"
194
  msgstr ""
195
 
196
- #: classes/class-settings.php:344
197
- msgid "Leave a ★★★★★ plugin review on WordPress.org"
198
  msgstr ""
199
 
200
  #. translators: %d: cron interval
@@ -202,3 +246,18 @@ msgstr ""
202
  #, php-format
203
  msgid "Every %d Minutes"
204
  msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Cyr To Lat\n"
5
+ "POT-Creation-Date: 2021-02-10 14:57+0200\n"
6
  "PO-Revision-Date: 2019-01-25 19:18+0200\n"
7
  "Last-Translator: KAGG Design <info@kagg.eu>\n"
8
  "Language-Team: KAGG Design\n"
10
  "MIME-Version: 1.0\n"
11
  "Content-Type: text/plain; charset=UTF-8\n"
12
  "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 2.4.2\n"
14
  "X-Poedit-Basepath: ..\n"
15
  "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
16
  "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
22
  "X-Poedit-SearchPathExcluded-1: dist\n"
23
  "X-Poedit-SearchPathExcluded-2: src\n"
24
 
25
+ #: classes/background-processes/class-post-conversion-process.php:73
 
26
  msgid "Post slug converted:"
27
  msgstr ""
28
 
29
+ #: classes/background-processes/class-post-conversion-process.php:102
30
+ msgid "Attachment file converted:"
31
+ msgstr ""
32
+
33
+ #: classes/background-processes/class-post-conversion-process.php:108
34
+ msgid "Cannot convert attachment file for attachment id:"
35
+ msgstr ""
36
+
37
+ #: classes/background-processes/class-post-conversion-process.php:126
38
+ msgid "Thumbnail file renamed:"
39
+ msgstr ""
40
+
41
+ #: classes/background-processes/class-post-conversion-process.php:129
42
+ msgid "Cannot rename thumbnail file:"
43
+ msgstr ""
44
+
45
+ #: classes/background-processes/class-post-conversion-process.php:198
46
  msgid "Post slugs conversion completed."
47
  msgstr ""
48
 
49
+ #: classes/background-processes/class-term-conversion-process.php:72
 
50
  msgid "Term slug converted:"
51
  msgstr ""
52
 
53
+ #: classes/background-processes/class-term-conversion-process.php:84
54
  msgid "Term slugs conversion completed."
55
  msgstr ""
56
 
57
+ #: classes/class-converter.php:106
58
  msgid "Cyr To Lat converts existing post slugs in the background process."
59
  msgstr ""
60
 
61
+ #: classes/class-converter.php:113
62
  msgid "Cyr To Lat converts existing term slugs in the background process."
63
  msgstr ""
64
 
65
+ #: classes/class-converter.php:120
66
  msgid "Cyr To Lat completed conversion of existing post slugs."
67
  msgstr ""
68
 
69
+ #: classes/class-converter.php:127
70
  msgid "Cyr To Lat completed conversion of existing term slugs."
71
  msgstr ""
72
 
73
+ #: classes/class-converter.php:205
74
+ msgid "Cyr To Lat has not found existing post slugs for conversion."
75
+ msgstr ""
76
+
77
+ #: classes/class-converter.php:216
78
  msgid "Post slugs conversion started."
79
  msgstr ""
80
 
81
+ #: classes/class-converter.php:218
82
  msgid "Cyr To Lat started conversion of existing post slugs."
83
  msgstr ""
84
 
85
+ #: classes/class-converter.php:242
86
+ msgid "Cyr To Lat has not found existing term slugs for conversion."
87
  msgstr ""
88
 
89
+ #: classes/class-converter.php:253
90
  msgid "Term slugs conversion started."
91
  msgstr ""
92
 
93
+ #: classes/class-converter.php:255
94
  msgid "Cyr To Lat started conversion of existing term slugs."
95
  msgstr ""
96
 
97
+ #: classes/class-requirements.php:101
 
 
 
 
 
 
 
 
98
  msgid "Cyr To Lat plugin has been deactivated."
99
  msgstr ""
100
 
101
  #. translators: 1: Current PHP version number, 2: Cyr To Lat version, 3: Minimum required PHP version number
102
+ #: classes/class-requirements.php:116
103
  #, php-format
104
  msgid ""
105
  "Your server is running PHP version %1$s but Cyr To Lat %2$s requires at "
106
  "least %3$s."
107
  msgstr ""
108
 
109
+ #: classes/class-requirements.php:137
110
+ msgid "Unable to get filesystem access."
111
+ msgstr ""
112
+
113
  #. translators: 1: max_input_vars value, 2: Cyr To Lat version, 3: Minimum required max_input_vars
114
+ #: classes/class-requirements.php:154
115
  #, php-format
116
  msgid ""
117
  "Your server is running PHP with max_input_vars=%1$d but Cyr To Lat %2$s "
119
  msgstr ""
120
 
121
  #. translators: 1: .user.ini filename
122
+ #: classes/class-requirements.php:158
123
  #, php-format
124
  msgid "We have updated settings in %s."
125
  msgstr ""
126
 
127
  #. translators: 1: Wait time in seconds
128
+ #: classes/class-requirements.php:161
129
  #, php-format
130
  msgid "Please try again in %d s."
131
  msgstr ""
132
 
133
+ #: classes/class-requirements.php:226
134
+ msgid "Please increase max input vars limit up to 1500."
135
  msgstr ""
136
 
137
+ #: classes/class-requirements.php:229
138
+ msgid ""
139
+ "See: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit"
140
+ "\" target=\"_blank\">Increasing max input vars limit.</a>"
141
+ msgstr ""
142
+
143
+ #: classes/class-settings.php:126
144
  msgid "View Cyr To Lat settings"
145
  msgstr ""
146
 
147
+ #: classes/class-settings.php:127
148
  msgid "Settings"
149
  msgstr ""
150
 
151
+ #: classes/class-settings.php:143
152
+ #: tests/phpunit/tests/class-test-settings.php:125
153
  msgid "ISO9 Table"
154
  msgstr ""
155
 
156
+ #: classes/class-settings.php:146
157
+ #: tests/phpunit/tests/class-test-settings.php:128
158
  msgid "bel Table"
159
  msgstr ""
160
 
161
+ #: classes/class-settings.php:149
162
+ #: tests/phpunit/tests/class-test-settings.php:131
163
  msgid "uk Table"
164
  msgstr ""
165
 
166
+ #: classes/class-settings.php:152
167
+ #: tests/phpunit/tests/class-test-settings.php:134
168
  msgid "bg_BG Table"
169
  msgstr ""
170
 
171
+ #: classes/class-settings.php:155
172
+ #: tests/phpunit/tests/class-test-settings.php:137
173
  msgid "mk_MK Table"
174
  msgstr ""
175
 
176
+ #: classes/class-settings.php:158
177
+ #: tests/phpunit/tests/class-test-settings.php:140
178
  msgid "sr_RS Table"
179
  msgstr ""
180
 
181
+ #: classes/class-settings.php:161
182
+ #: tests/phpunit/tests/class-test-settings.php:143
183
+ msgid "el Table"
184
+ msgstr ""
185
+
186
+ #: classes/class-settings.php:164
187
+ #: tests/phpunit/tests/class-test-settings.php:146
188
+ msgid "hy Table"
189
+ msgstr ""
190
+
191
+ #: classes/class-settings.php:167
192
+ #: tests/phpunit/tests/class-test-settings.php:149
193
  msgid "ka_GE Table"
194
  msgstr ""
195
 
196
+ #: classes/class-settings.php:170
197
+ #: tests/phpunit/tests/class-test-settings.php:152
198
  msgid "kk Table"
199
  msgstr ""
200
 
201
+ #: classes/class-settings.php:173
202
+ #: tests/phpunit/tests/class-test-settings.php:155
203
  msgid "he_IL Table"
204
  msgstr ""
205
 
206
+ #: classes/class-settings.php:176
207
+ #: tests/phpunit/tests/class-test-settings.php:158
208
  msgid "zh_CN Table"
209
  msgstr ""
210
 
211
+ #: classes/class-settings.php:203
212
+ msgid "(current)"
213
+ msgstr ""
214
+
215
+ #: classes/class-settings.php:270 classes/class-settings.php:271
216
  msgid "Cyr To Lat"
217
  msgstr ""
218
 
219
  #. Admin panel title.
220
+ #: classes/class-settings.php:291
221
  msgid "Cyr To Lat Plugin Options"
222
  msgstr ""
223
 
224
+ #: classes/class-settings.php:307
225
  msgid "Convert Existing Slugs"
226
  msgstr ""
227
 
228
+ #: classes/class-settings.php:313
229
+ msgid "Your appreciation"
230
  msgstr ""
231
 
232
+ #: classes/class-settings.php:318
233
+ msgid "Leave a ★★★★★ plugin review on WordPress.org"
234
  msgstr ""
235
 
236
+ #: classes/class-settings.php:664
237
+ msgid "Options saved."
238
  msgstr ""
239
 
240
+ #: classes/class-settings.php:665
241
+ msgid "Error saving options."
242
  msgstr ""
243
 
244
  #. translators: %d: cron interval
246
  #, php-format
247
  msgid "Every %d Minutes"
248
  msgstr ""
249
+
250
+ #: tests/phpunit/tests/class-test-settings.php:476
251
+ #: tests/phpunit/tests/class-test-settings.php:490
252
+ #: tests/phpunit/tests/class-test-settings.php:499
253
+ #: tests/phpunit/tests/class-test-settings.php:508
254
+ #: tests/phpunit/tests/class-test-settings.php:517
255
+ #: tests/phpunit/tests/class-test-settings.php:526
256
+ #: tests/phpunit/tests/class-test-settings.php:535
257
+ #: tests/phpunit/tests/class-test-settings.php:544
258
+ #: tests/phpunit/tests/class-test-settings.php:553
259
+ #: tests/phpunit/tests/class-test-settings.php:562
260
+ #: tests/phpunit/tests/class-test-settings.php:571
261
+ #: tests/phpunit/tests/class-test-settings.php:580
262
+ msgid "<br>(current)"
263
+ msgstr ""
lib/polyfill-mbstring/README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Symfony Polyfill / Mbstring
2
+ ===========================
3
+
4
+ This component provides a partial, native PHP implementation for the
5
+ [Mbstring](http://php.net/mbstring) extension.
6
+
7
+ More information can be found in the
8
+ [main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
9
+
10
+ License
11
+ =======
12
+
13
+ This library is released under the [MIT license](LICENSE).
lib/polyfill-mbstring/composer.json ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "symfony/polyfill-mbstring",
3
+ "type": "library",
4
+ "description": "Symfony polyfill for the Mbstring extension",
5
+ "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
6
+ "homepage": "https://symfony.com",
7
+ "license": "MIT",
8
+ "authors": [
9
+ {
10
+ "name": "Nicolas Grekas",
11
+ "email": "p@tchwork.com"
12
+ },
13
+ {
14
+ "name": "Symfony Community",
15
+ "homepage": "https://symfony.com/contributors"
16
+ }
17
+ ],
18
+ "require": {
19
+ "php": ">=5.3.3"
20
+ },
21
+ "autoload": {
22
+ "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
23
+ "files": [ "bootstrap.php" ]
24
+ },
25
+ "suggest": {
26
+ "ext-mbstring": "For best performance"
27
+ },
28
+ "minimum-stability": "dev",
29
+ "extra": {
30
+ "branch-alias": {
31
+ "dev-master": "1.13-dev"
32
+ }
33
+ }
34
+ }
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: SergeyBiryukov, mihdan, karevn, webvitaly, kaggdesign
3
  Tags: cyrillic, belorussian, ukrainian, bulgarian, macedonian, georgian, kazakh, latin, l10n, russian, cyr-to-lat, cyr2lat, rustolat, slugs, translations, transliteration
4
  Requires at least: 5.1
5
  Tested up to: 5.6
6
- Stable tag: 4.5.1
7
  Requires PHP: 5.6.20
8
 
9
  Converts Cyrillic characters in post, page and term slugs to Latin characters.
@@ -99,6 +99,16 @@ Yes you can!
99
 
100
  == Changelog ==
101
 
 
 
 
 
 
 
 
 
 
 
102
  = 4.5.1 (07.12.2020) =
103
  * Tested up to WordPress 5.6
104
  * Tested on PHP 5.6 - 8.0
3
  Tags: cyrillic, belorussian, ukrainian, bulgarian, macedonian, georgian, kazakh, latin, l10n, russian, cyr-to-lat, cyr2lat, rustolat, slugs, translations, transliteration
4
  Requires at least: 5.1
5
  Tested up to: 5.6
6
+ Stable tag: 4.6.0
7
  Requires PHP: 5.6.20
8
 
9
  Converts Cyrillic characters in post, page and term slugs to Latin characters.
99
 
100
  == Changelog ==
101
 
102
+ = 4.6.0 (10.02.2020) =
103
+ * Add compatibility with Polylang
104
+ * Add confirmation popup before mass conversion of slugs
105
+ * Improve selection of posts and tags for conversion to avoid selection of excessive items for mass conversion
106
+ * Fix bug with redirection from the old slug to a new one after background slug conversion
107
+ * Fix js to run in old browsers like IE
108
+
109
+ = 4.5.2 (08.12.2020) =
110
+ * Fix bug with the deployment to wp.org
111
+
112
  = 4.5.1 (07.12.2020) =
113
  * Tested up to WordPress 5.6
114
  * Tested on PHP 5.6 - 8.0
vendor/10up/wp_mock/.gitmodules DELETED
@@ -1 +0,0 @@
1
-
 
vendor/10up/wp_mock/CONTRIBUTING.md DELETED
@@ -1,26 +0,0 @@
1
- # Contributing
2
-
3
- Contributions are **welcome** and will be fully **credited**.
4
-
5
- We accept contributions via Pull Requests on [Github](https://github.com/10up/wp_mock)
6
-
7
- ## Branches
8
-
9
- * We try to follow [SemVer](http://semver.org/) in WP Mock
10
- * The current minor version lives on the **master** branch. Until a new minor (or major) version is released, the master branch will be aliased to appear as the dev package of the current minor version in Packagist (e.g. if the current minor version is `1.0`, master will be aliased to `1.0.x-dev`).
11
- * The development release lives on the **dev** branch. Until it is officially released, the dev branch will be aliased to appear as the dev package of the next minor version in Packagist (e.g. if the next minor version is `1.2`, the dev branch will be aliased to `1.2.x-dev`).
12
- * Old minor versions will live in their own version branch (e.g. if the current minor version is `1.2`, the `1.1` major version will live in a `1.1` branch
13
-
14
- ## Pull Requests
15
-
16
- * New features must be submitted against the **dev** branch
17
- * Bug fixes should be submitted against the branch in which the bug exists. If the bug exists in multiple releases, please submit the Pull Request against the most recent branch and make a note of which other major versions need the fix (e.g. if the bug exists in all versions, submit against dev; if it no longer exists in dev, submit against master). Please do not open multiple pull requests for the same fix against different branches.
18
- * If you're not sure whether a feature idea would be something we'd be interested in, please open an issue before you start working on it. We'd be happy to discuss your idea with you.
19
-
20
- ## Tests
21
-
22
- We know. We're kind of working on it. Want to start writing them for us? :D
23
-
24
- ## Thanks
25
-
26
- **You're awesome** - Thanks for being interested in contributing your time and code to this project!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/LICENSE.md DELETED
@@ -1,368 +0,0 @@
1
- WP_Mock - WordPress API Mocking Framework
2
-
3
- Copyright 2013-2017 by the contributors
4
-
5
- This program is free software; you can redistribute it and/or modify
6
- it under the terms of the GNU General Public License as published by
7
- the Free Software Foundation; either version 2 of the License, or
8
- (at your option) any later version.
9
-
10
- This program is distributed in the hope that it will be useful,
11
- but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- GNU General Public License for more details.
14
-
15
- You should have received a copy of the GNU General Public License
16
- along with this program; if not, write to the Free Software
17
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
-
19
- This program incorporates work covered by the following copyright and
20
- permission notices:
21
-
22
- WordPress - Web publishing software
23
-
24
- Copyright 2003-2017 by the contributors
25
-
26
- WordPress is released under the GPL
27
-
28
- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
29
-
30
- GNU GENERAL PUBLIC LICENSE
31
- Version 2, June 1991
32
-
33
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
34
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
35
- Everyone is permitted to copy and distribute verbatim copies
36
- of this license document, but changing it is not allowed.
37
-
38
- Preamble
39
-
40
- The licenses for most software are designed to take away your
41
- freedom to share and change it. By contrast, the GNU General Public
42
- License is intended to guarantee your freedom to share and change free
43
- software--to make sure the software is free for all its users. This
44
- General Public License applies to most of the Free Software
45
- Foundation's software and to any other program whose authors commit to
46
- using it. (Some other Free Software Foundation software is covered by
47
- the GNU Lesser General Public License instead.) You can apply it to
48
- your programs, too.
49
-
50
- When we speak of free software, we are referring to freedom, not
51
- price. Our General Public Licenses are designed to make sure that you
52
- have the freedom to distribute copies of free software (and charge for
53
- this service if you wish), that you receive source code or can get it
54
- if you want it, that you can change the software or use pieces of it
55
- in new free programs; and that you know you can do these things.
56
-
57
- To protect your rights, we need to make restrictions that forbid
58
- anyone to deny you these rights or to ask you to surrender the rights.
59
- These restrictions translate to certain responsibilities for you if you
60
- distribute copies of the software, or if you modify it.
61
-
62
- For example, if you distribute copies of such a program, whether
63
- gratis or for a fee, you must give the recipients all the rights that
64
- you have. You must make sure that they, too, receive or can get the
65
- source code. And you must show them these terms so they know their
66
- rights.
67
-
68
- We protect your rights with two steps: (1) copyright the software, and
69
- (2) offer you this license which gives you legal permission to copy,
70
- distribute and/or modify the software.
71
-
72
- Also, for each author's protection and ours, we want to make certain
73
- that everyone understands that there is no warranty for this free
74
- software. If the software is modified by someone else and passed on, we
75
- want its recipients to know that what they have is not the original, so
76
- that any problems introduced by others will not reflect on the original
77
- authors' reputations.
78
-
79
- Finally, any free program is threatened constantly by software
80
- patents. We wish to avoid the danger that redistributors of a free
81
- program will individually obtain patent licenses, in effect making the
82
- program proprietary. To prevent this, we have made it clear that any
83
- patent must be licensed for everyone's free use or not licensed at all.
84
-
85
- The precise terms and conditions for copying, distribution and
86
- modification follow.
87
-
88
- GNU GENERAL PUBLIC LICENSE
89
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
90
-
91
- 0. This License applies to any program or other work which contains
92
- a notice placed by the copyright holder saying it may be distributed
93
- under the terms of this General Public License. The "Program", below,
94
- refers to any such program or work, and a "work based on the Program"
95
- means either the Program or any derivative work under copyright law:
96
- that is to say, a work containing the Program or a portion of it,
97
- either verbatim or with modifications and/or translated into another
98
- language. (Hereinafter, translation is included without limitation in
99
- the term "modification".) Each licensee is addressed as "you".
100
-
101
- Activities other than copying, distribution and modification are not
102
- covered by this License; they are outside its scope. The act of
103
- running the Program is not restricted, and the output from the Program
104
- is covered only if its contents constitute a work based on the
105
- Program (independent of having been made by running the Program).
106
- Whether that is true depends on what the Program does.
107
-
108
- 1. You may copy and distribute verbatim copies of the Program's
109
- source code as you receive it, in any medium, provided that you
110
- conspicuously and appropriately publish on each copy an appropriate
111
- copyright notice and disclaimer of warranty; keep intact all the
112
- notices that refer to this License and to the absence of any warranty;
113
- and give any other recipients of the Program a copy of this License
114
- along with the Program.
115
-
116
- You may charge a fee for the physical act of transferring a copy, and
117
- you may at your option offer warranty protection in exchange for a fee.
118
-
119
- 2. You may modify your copy or copies of the Program or any portion
120
- of it, thus forming a work based on the Program, and copy and
121
- distribute such modifications or work under the terms of Section 1
122
- above, provided that you also meet all of these conditions:
123
-
124
- a) You must cause the modified files to carry prominent notices
125
- stating that you changed the files and the date of any change.
126
-
127
- b) You must cause any work that you distribute or publish, that in
128
- whole or in part contains or is derived from the Program or any
129
- part thereof, to be licensed as a whole at no charge to all third
130
- parties under the terms of this License.
131
-
132
- c) If the modified program normally reads commands interactively
133
- when run, you must cause it, when started running for such
134
- interactive use in the most ordinary way, to print or display an
135
- announcement including an appropriate copyright notice and a
136
- notice that there is no warranty (or else, saying that you provide
137
- a warranty) and that users may redistribute the program under
138
- these conditions, and telling the user how to view a copy of this
139
- License. (Exception: if the Program itself is interactive but
140
- does not normally print such an announcement, your work based on
141
- the Program is not required to print an announcement.)
142
-
143
- These requirements apply to the modified work as a whole. If
144
- identifiable sections of that work are not derived from the Program,
145
- and can be reasonably considered independent and separate works in
146
- themselves, then this License, and its terms, do not apply to those
147
- sections when you distribute them as separate works. But when you
148
- distribute the same sections as part of a whole which is a work based
149
- on the Program, the distribution of the whole must be on the terms of
150
- this License, whose permissions for other licensees extend to the
151
- entire whole, and thus to each and every part regardless of who wrote it.
152
-
153
- Thus, it is not the intent of this section to claim rights or contest
154
- your rights to work written entirely by you; rather, the intent is to
155
- exercise the right to control the distribution of derivative or
156
- collective works based on the Program.
157
-
158
- In addition, mere aggregation of another work not based on the Program
159
- with the Program (or with a work based on the Program) on a volume of
160
- a storage or distribution medium does not bring the other work under
161
- the scope of this License.
162
-
163
- 3. You may copy and distribute the Program (or a work based on it,
164
- under Section 2) in object code or executable form under the terms of
165
- Sections 1 and 2 above provided that you also do one of the following:
166
-
167
- a) Accompany it with the complete corresponding machine-readable
168
- source code, which must be distributed under the terms of Sections
169
- 1 and 2 above on a medium customarily used for software interchange; or,
170
-
171
- b) Accompany it with a written offer, valid for at least three
172
- years, to give any third party, for a charge no more than your
173
- cost of physically performing source distribution, a complete
174
- machine-readable copy of the corresponding source code, to be
175
- distributed under the terms of Sections 1 and 2 above on a medium
176
- customarily used for software interchange; or,
177
-
178
- c) Accompany it with the information you received as to the offer
179
- to distribute corresponding source code. (This alternative is
180
- allowed only for noncommercial distribution and only if you
181
- received the program in object code or executable form with such
182
- an offer, in accord with Subsection b above.)
183
-
184
- The source code for a work means the preferred form of the work for
185
- making modifications to it. For an executable work, complete source
186
- code means all the source code for all modules it contains, plus any
187
- associated interface definition files, plus the scripts used to
188
- control compilation and installation of the executable. However, as a
189
- special exception, the source code distributed need not include
190
- anything that is normally distributed (in either source or binary
191
- form) with the major components (compiler, kernel, and so on) of the
192
- operating system on which the executable runs, unless that component
193
- itself accompanies the executable.
194
-
195
- If distribution of executable or object code is made by offering
196
- access to copy from a designated place, then offering equivalent
197
- access to copy the source code from the same place counts as
198
- distribution of the source code, even though third parties are not
199
- compelled to copy the source along with the object code.
200
-
201
- 4. You may not copy, modify, sublicense, or distribute the Program
202
- except as expressly provided under this License. Any attempt
203
- otherwise to copy, modify, sublicense or distribute the Program is
204
- void, and will automatically terminate your rights under this License.
205
- However, parties who have received copies, or rights, from you under
206
- this License will not have their licenses terminated so long as such
207
- parties remain in full compliance.
208
-
209
- 5. You are not required to accept this License, since you have not
210
- signed it. However, nothing else grants you permission to modify or
211
- distribute the Program or its derivative works. These actions are
212
- prohibited by law if you do not accept this License. Therefore, by
213
- modifying or distributing the Program (or any work based on the
214
- Program), you indicate your acceptance of this License to do so, and
215
- all its terms and conditions for copying, distributing or modifying
216
- the Program or works based on it.
217
-
218
- 6. Each time you redistribute the Program (or any work based on the
219
- Program), the recipient automatically receives a license from the
220
- original licensor to copy, distribute or modify the Program subject to
221
- these terms and conditions. You may not impose any further
222
- restrictions on the recipients' exercise of the rights granted herein.
223
- You are not responsible for enforcing compliance by third parties to
224
- this License.
225
-
226
- 7. If, as a consequence of a court judgment or allegation of patent
227
- infringement or for any other reason (not limited to patent issues),
228
- conditions are imposed on you (whether by court order, agreement or
229
- otherwise) that contradict the conditions of this License, they do not
230
- excuse you from the conditions of this License. If you cannot
231
- distribute so as to satisfy simultaneously your obligations under this
232
- License and any other pertinent obligations, then as a consequence you
233
- may not distribute the Program at all. For example, if a patent
234
- license would not permit royalty-free redistribution of the Program by
235
- all those who receive copies directly or indirectly through you, then
236
- the only way you could satisfy both it and this License would be to
237
- refrain entirely from distribution of the Program.
238
-
239
- If any portion of this section is held invalid or unenforceable under
240
- any particular circumstance, the balance of the section is intended to
241
- apply and the section as a whole is intended to apply in other
242
- circumstances.
243
-
244
- It is not the purpose of this section to induce you to infringe any
245
- patents or other property right claims or to contest validity of any
246
- such claims; this section has the sole purpose of protecting the
247
- integrity of the free software distribution system, which is
248
- implemented by public license practices. Many people have made
249
- generous contributions to the wide range of software distributed
250
- through that system in reliance on consistent application of that
251
- system; it is up to the author/donor to decide if he or she is willing
252
- to distribute software through any other system and a licensee cannot
253
- impose that choice.
254
-
255
- This section is intended to make thoroughly clear what is believed to
256
- be a consequence of the rest of this License.
257
-
258
- 8. If the distribution and/or use of the Program is restricted in
259
- certain countries either by patents or by copyrighted interfaces, the
260
- original copyright holder who places the Program under this License
261
- may add an explicit geographical distribution limitation excluding
262
- those countries, so that distribution is permitted only in or among
263
- countries not thus excluded. In such case, this License incorporates
264
- the limitation as if written in the body of this License.
265
-
266
- 9. The Free Software Foundation may publish revised and/or new versions
267
- of the General Public License from time to time. Such new versions will
268
- be similar in spirit to the present version, but may differ in detail to
269
- address new problems or concerns.
270
-
271
- Each version is given a distinguishing version number. If the Program
272
- specifies a version number of this License which applies to it and "any
273
- later version", you have the option of following the terms and conditions
274
- either of that version or of any later version published by the Free
275
- Software Foundation. If the Program does not specify a version number of
276
- this License, you may choose any version ever published by the Free Software
277
- Foundation.
278
-
279
- 10. If you wish to incorporate parts of the Program into other free
280
- programs whose distribution conditions are different, write to the author
281
- to ask for permission. For software which is copyrighted by the Free
282
- Software Foundation, write to the Free Software Foundation; we sometimes
283
- make exceptions for this. Our decision will be guided by the two goals
284
- of preserving the free status of all derivatives of our free software and
285
- of promoting the sharing and reuse of software generally.
286
-
287
- NO WARRANTY
288
-
289
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
290
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
291
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
292
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
293
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
294
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
295
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
296
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
297
- REPAIR OR CORRECTION.
298
-
299
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
300
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
301
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
302
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
303
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
304
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
305
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
306
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
307
- POSSIBILITY OF SUCH DAMAGES.
308
-
309
- END OF TERMS AND CONDITIONS
310
-
311
- How to Apply These Terms to Your New Programs
312
-
313
- If you develop a new program, and you want it to be of the greatest
314
- possible use to the public, the best way to achieve this is to make it
315
- free software which everyone can redistribute and change under these terms.
316
-
317
- To do so, attach the following notices to the program. It is safest
318
- to attach them to the start of each source file to most effectively
319
- convey the exclusion of warranty; and each file should have at least
320
- the "copyright" line and a pointer to where the full notice is found.
321
-
322
- <one line to give the program's name and a brief idea of what it does.>
323
- Copyright (C) <year> <name of author>
324
-
325
- This program is free software; you can redistribute it and/or modify
326
- it under the terms of the GNU General Public License as published by
327
- the Free Software Foundation; either version 2 of the License, or
328
- (at your option) any later version.
329
-
330
- This program is distributed in the hope that it will be useful,
331
- but WITHOUT ANY WARRANTY; without even the implied warranty of
332
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
333
- GNU General Public License for more details.
334
-
335
- You should have received a copy of the GNU General Public License along
336
- with this program; if not, write to the Free Software Foundation, Inc.,
337
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
338
-
339
- Also add information on how to contact you by electronic and paper mail.
340
-
341
- If the program is interactive, make it output a short notice like this
342
- when it starts in an interactive mode:
343
-
344
- Gnomovision version 69, Copyright (C) year name of author
345
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
346
- This is free software, and you are welcome to redistribute it
347
- under certain conditions; type `show c' for details.
348
-
349
- The hypothetical commands `show w' and `show c' should show the appropriate
350
- parts of the General Public License. Of course, the commands you use may
351
- be called something other than `show w' and `show c'; they could even be
352
- mouse-clicks or menu items--whatever suits your program.
353
-
354
- You should also get your employer (if you work as a programmer) or your
355
- school, if any, to sign a "copyright disclaimer" for the program, if
356
- necessary. Here is a sample; alter the names:
357
-
358
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
359
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
360
-
361
- <signature of Ty Coon>, 1 April 1989
362
- Ty Coon, President of Vice
363
-
364
- This General Public License does not permit incorporating your program into
365
- proprietary programs. If your program is a subroutine library, you may
366
- consider it more useful to permit linking proprietary applications with the
367
- library. If this is what you want to do, use the GNU Lesser General
368
- Public License instead of this License.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/behat.yml DELETED
@@ -1,9 +0,0 @@
1
- default:
2
- suites:
3
- default:
4
- contexts:
5
- - FeatureContext
6
- - HooksContext
7
- - FunctionsContext
8
- formatters:
9
- progress: true
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/bootstrap.php.dist DELETED
@@ -1,5 +0,0 @@
1
- <?php
2
-
3
- require_once __DIR__ . '/vendor/autoload.php';
4
-
5
- WP_Mock::setUsePatchwork( false );
 
 
 
 
 
vendor/10up/wp_mock/features/bootstrap/FeatureContext.php DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
-
3
- use Behat\Behat\Context\Context;
4
- use Behat\Behat\Context\SnippetAcceptingContext;
5
- use Behat\Behat\Hook\Scope\AfterScenarioScope;
6
- use Behat\Behat\Hook\Scope\BeforeScenarioScope;
7
-
8
- /**
9
- * Defines application features from the specific context.
10
- */
11
- class FeatureContext implements Context, SnippetAcceptingContext {
12
-
13
- /**
14
- * Initializes context.
15
- *
16
- * Every scenario gets its own context instance.
17
- * You can also pass arbitrary arguments to the
18
- * context constructor through behat.yml.
19
- */
20
- public function __construct() {
21
- }
22
-
23
- /**
24
- * @BeforeScenario
25
- */
26
- public function setUpWpMock( BeforeScenarioScope $scope ) {
27
- WP_Mock::setUp();
28
- }
29
-
30
- /**
31
- * @AfterScenario
32
- */
33
- public function tearDownWpMock( AfterScenarioScope $scope ) {
34
- WP_Mock::tearDown();
35
- }
36
-
37
- /**
38
- * @BeforeScenario @strictmode
39
- */
40
- public function ensureStrictModeOn() {
41
- self::forceStrictModeOn();
42
- }
43
-
44
- public static function forceStrictModeOn() {
45
- $property = new ReflectionProperty( 'WP_Mock', '__strict_mode' );
46
- $property->setAccessible( true );
47
- $property->setValue( true );
48
- }
49
-
50
- /**
51
- * @AfterScenario @strictmode
52
- */
53
- public function ensureStrictModeOff() {
54
- self::forceStrictModeOff();
55
- }
56
-
57
- public static function forceStrictModeOff() {
58
- $property = new ReflectionProperty( 'WP_Mock', '__strict_mode' );
59
- $property->setAccessible( true );
60
- $property->setValue( false );
61
- }
62
-
63
- /**
64
- * @Then tearDown should not fail
65
- */
66
- public function teardownShouldNotFail() {
67
- WP_Mock::tearDown();
68
- }
69
-
70
- /**
71
- * @When I do nothing
72
- */
73
- public function iDoNothing() {
74
- // Move along...
75
- }
76
-
77
- /**
78
- * @Then tearDown should fail
79
- */
80
- public function teardownShouldFail() {
81
- try {
82
- $this->teardownShouldNotFail();
83
- throw new \PHPUnit\Framework\ExpectationFailedException( 'WP_Mock Teardown should have failed!' );
84
- } catch ( \Mockery\Exception\InvalidCountException $e ) {
85
- // Move along
86
- }
87
- }
88
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/features/bootstrap/FunctionsContext.php DELETED
@@ -1,127 +0,0 @@
1
- <?php
2
-
3
- use Behat\Behat\Context\Context;
4
- use Behat\Gherkin\Node\TableNode;
5
- use Mockery\Exception\NoMatchingExpectationException;
6
-
7
- class FunctionsContext implements Context {
8
-
9
- /**
10
- * @Given function :function does not exist
11
- */
12
- public function functionDoesNotExist( $function ) {
13
- \PHPUnit\Framework\Assert::assertFalse( function_exists( $function ) );
14
- }
15
-
16
- /**
17
- * @Given I mock passthru function :function with args:
18
- */
19
- public function iMockPassthruFunctionWithArgs( $function, TableNode $args ) {
20
- WP_Mock::passthruFunction( $function, array(
21
- 'args' => $args->getRow( 0 ),
22
- ) );
23
- }
24
-
25
- /**
26
- * @Given I mock function :function to return :value
27
- */
28
- public function iMockFunctionToReturn( $function, $value ) {
29
- WP_Mock::userFunction( $function, array( 'return' => $value ) );
30
- }
31
-
32
- /**
33
- * @Given I alias :alias to :function
34
- */
35
- public function iAliasTo( $alias, $function ) {
36
- WP_Mock::alias( $alias, $function );
37
- }
38
-
39
- /**
40
- * @Given I mock function :function to echo input
41
- */
42
- public function iMockFunctionWpMockTestToEcho( $function ) {
43
- WP_Mock::echoFunction( $function );
44
- }
45
-
46
- /**
47
- * @Given strict mode is on
48
- */
49
- public function strictModeIsOn() {
50
- FeatureContext::forceStrictModeOn();
51
- \PHPUnit\Framework\Assert::assertTrue( WP_Mock::strictMode() );
52
- }
53
-
54
- /**
55
- * @Given strict mode is off
56
- */
57
- public function strictModeIsOff() {
58
- FeatureContext::forceStrictModeOff();
59
- \PHPUnit\Framework\Assert::assertFalse( WP_Mock::strictMode() );
60
- }
61
-
62
- /**
63
- * @When I mock function :function
64
- */
65
- public function iMockFunction( $function ) {
66
- WP_Mock::userFunction( $function );
67
- }
68
-
69
- /**
70
- * @When I tear down the test
71
- */
72
- public function iTearDownTheTest() {
73
- WP_Mock::tearDown();
74
- }
75
-
76
- /**
77
- * @Then function :function should exist
78
- */
79
- public function functionShouldExist( $function ) {
80
- \PHPUnit\Framework\Assert::assertTrue( function_exists( $function ) );
81
- }
82
-
83
- /**
84
- * @Then I expect :return when I run :function with args:
85
- */
86
- public function iExpectWhenIRunWithArgs( $return, $function, TableNode $args ) {
87
- \PHPUnit\Framework\Assert::assertEquals( $return, call_user_func_array( $function, $args->getRow( 0 ) ) );
88
- }
89
-
90
- /**
91
- * @Then I expect :return when I run :function
92
- */
93
- public function iExcpectWhenIRun( $return, $function ) {
94
- $this->iExpectWhenIRunWithArgs( $return, $function, new TableNode( array( array() ) ) );
95
- }
96
-
97
- /**
98
- * @Then I expect an error when I run :function with args:
99
- */
100
- public function iExpectAnErrorWhenIRunWithArgs( $function, TableNode $args ) {
101
- try {
102
- $this->iExpectWhenIRunWithArgs( null, $function, $args );
103
- } catch ( NoMatchingExpectationException $e ) {
104
- // Move along...
105
- } catch ( \PHPUnit\Framework\ExpectationFailedException $e ) {
106
- // Move along...
107
- }
108
- }
109
-
110
- /**
111
- * @Then I expect function :function to echo :input
112
- */
113
- public function iExpectFunctionToEcho( $function, $input ) {
114
- ob_start();
115
- $function( $input );
116
- $output = trim( ob_get_clean() );
117
- \PHPUnit\Framework\Assert::assertEquals( trim( $input ), $output );
118
- }
119
-
120
- /**
121
- * @Then Nothing happens when I run function :function
122
- */
123
- public function iRunFunction( $function ) {
124
- $function();
125
- }
126
-
127
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/features/bootstrap/HooksContext.php DELETED
@@ -1,235 +0,0 @@
1
- <?php
2
-
3
- use Behat\Behat\Context\Context;
4
- use Behat\Behat\Hook\Scope\AfterScenarioScope;
5
- use Behat\Behat\Hook\Scope\BeforeScenarioScope;
6
- use Behat\Gherkin\Node\TableNode;
7
-
8
- class HooksContext implements Context {
9
-
10
- private $filterResults = array();
11
-
12
- /**
13
- * @BeforeScenario
14
- */
15
- public function setUpWpMock( BeforeScenarioScope $scope ) {
16
- $this->filterResults = array();
17
- }
18
-
19
- /**
20
- * @AfterScenario
21
- */
22
- public function tearDownWpMock( AfterScenarioScope $scope ) {
23
- $this->filterResults = array();
24
- }
25
-
26
- /**
27
- * @Given I expect the following actions added:
28
- */
29
- public function iExpectTheFollowingActionsAdded( TableNode $table ) {
30
- foreach ( $this->getActionsWithDefaults( $table ) as $action ) {
31
- WP_Mock::expectActionAdded(
32
- $action['action'],
33
- $action['callback'],
34
- $action['priority'],
35
- $action['arguments']
36
- );
37
- }
38
- }
39
-
40
- /**
41
- * @Given I expect the following actions not to be added:
42
- */
43
- public function iExpectTheFollowingActionsNotToBeAdded( TableNode $table ) {
44
- foreach ( $this->getActionsWithDefaults( $table ) as $action ) {
45
- WP_Mock::expectActionNotAdded( $action['action'], $action['callback'] );
46
- }
47
- }
48
-
49
- /**
50
- * @Given I expect the :action action
51
- */
52
- public function iExpectTheAction( $action ) {
53
- $this->iExpectTheActionWith( $action, new TableNode( array() ) );
54
- }
55
-
56
- /**
57
- * @When I expect the :action action with:
58
- */
59
- public function iExpectTheActionWith( $action, TableNode $table ) {
60
- $args = array( $action );
61
- $rows = $table->getRows();
62
- if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
63
- $args = array_merge( $args, $rows[0] );
64
- }
65
- call_user_func_array( array( 'WP_Mock', 'expectAction' ), $args );
66
- }
67
-
68
- /**
69
- * @Given I expect the :filter filter with :value
70
- */
71
- public function iExpectTheFilterWith( $filter, $value ) {
72
- $this->iExpectTheFilterWithValues( $filter, new TableNode( array( array( $value ) ) ) );
73
- }
74
-
75
- /**
76
- * @When I expect the :filter filter with:
77
- */
78
- public function iExpectTheFilterWithValues( $filter, TableNode $table ) {
79
- $args = array( $filter );
80
- $rows = $table->getRows();
81
- if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
82
- $args = array_merge( $args, $rows[0] );
83
- }
84
- call_user_func_array( array( 'WP_Mock', 'expectFilter' ), $args );
85
- }
86
-
87
- /**
88
- * @When I add the following actions:
89
- */
90
- public function iAddTheFollowingActions( TableNode $table ) {
91
- foreach ( $this->getActionsWithDefaults( $table ) as $action ) {
92
- add_action(
93
- $action['action'],
94
- $action['callback'],
95
- $action['priority'],
96
- $action['arguments']
97
- );
98
- }
99
- }
100
-
101
- /**
102
- * @When I do the :action action
103
- */
104
- public function iDoTheAction( $action ) {
105
- $this->iDoTheActionWith( $action, new TableNode( array() ) );
106
- }
107
-
108
- /**
109
- * @When I do the :action action with:
110
- */
111
- public function iDoTheActionWith( $action, TableNode $table ) {
112
- $args = array( $action );
113
- $rows = $table->getRows();
114
- if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
115
- $args = array_merge( $args, $rows[0] );
116
- }
117
- call_user_func_array( 'do_action', $args );
118
- }
119
-
120
- /**
121
- * @Given I expect the following filters added:
122
- */
123
- public function iExpectTheFollowingFiltersAdded( TableNode $table ) {
124
- $filters = $table->getHash();
125
- $defaults = array(
126
- 'filter' => '',
127
- 'callback' => '',
128
- 'priority' => 10,
129
- 'arguments' => 1,
130
- );
131
- foreach ( $filters as $filter ) {
132
- $filter += $defaults;
133
- WP_Mock::expectFilterAdded(
134
- $filter['filter'],
135
- $filter['callback'],
136
- $filter['priority'],
137
- $filter['arguments']
138
- );
139
- }
140
- }
141
-
142
- /**
143
- * @Given I expect the following filters not to be added:
144
- */
145
- public function iExpectTheFollowingFiltersNotToBeAdded( TableNode $table ) {
146
- foreach ( $this->getFiltersWithDefaults( $table ) as $filter ) {
147
- WP_Mock::expectFilterNotAdded( $filter['filter'], $filter['callback'] );
148
- }
149
- }
150
-
151
- /**
152
- * @When I add the following filters:
153
- */
154
- public function iAddTheFollowingFilters( TableNode $table ) {
155
- foreach ( $this->getFiltersWithDefaults( $table ) as $filter ) {
156
- add_filter(
157
- $filter['filter'],
158
- $filter['callback'],
159
- $filter['priority'],
160
- $filter['arguments']
161
- );
162
- }
163
- }
164
-
165
- /**
166
- * @Given I expect filter :filter to respond to :thing with :response
167
- */
168
- public function iExpectFilterToRespondToWith( $filter, $thing, $response ) {
169
- WP_Mock::onFilter( $filter )->with( $thing )->reply( $response );
170
- }
171
-
172
- /**
173
- * @Given I expect filter :filter to respond with :response
174
- */
175
- public function iExpectFilterToRespondWith( $filter, $response ) {
176
- $this->iExpectFilterToRespondToWith( $filter, null, $response );
177
- }
178
-
179
- /**
180
- * @When I apply the filter :filter with :with
181
- */
182
- public function iApplyFilterWith( $filter, $with ) {
183
- $this->iApplyFilterWithData( $filter, new TableNode( array( array( $with ) ) ) );
184
- }
185
-
186
- /**
187
- * @When I apply the filter :filter with:
188
- */
189
- public function iApplyFilterWithData( $filter, TableNode $table ) {
190
- $row = $table->getRow( 0 );
191
- array_unshift( $row, $filter );
192
- $this->filterResults[ $filter ] = call_user_func_array( 'apply_filters', $row );
193
- }
194
-
195
- /**
196
- * @Then The filter :filter should return :value
197
- */
198
- public function theFilterShouldReturn( $filter, $value ) {
199
- \PHPUnit\Framework\Assert::assertArrayHasKey( $filter, $this->filterResults );
200
- \PHPUnit\Framework\Assert::assertEquals( $this->filterResults[ $filter ], $value );
201
- }
202
-
203
- private function getActionsWithDefaults( TableNode $table ) {
204
- $actions = $table->getHash();
205
- $defaults = array(
206
- 'action' => '',
207
- 'callback' => '',
208
- 'priority' => 10,
209
- 'arguments' => 1,
210
- );
211
- foreach ( $actions as &$action ) {
212
- $action += $defaults;
213
- }
214
- unset( $action );
215
-
216
- return $actions;
217
- }
218
-
219
- private function getFiltersWithDefaults( TableNode $table ) {
220
- $filters = $table->getHash();
221
- $defaults = array(
222
- 'filter' => '',
223
- 'callback' => '',
224
- 'priority' => 10,
225
- 'arguments' => 1,
226
- );
227
- foreach ( $filters as &$filter ) {
228
- $filter += $defaults;
229
- }
230
- unset( $filter );
231
-
232
- return $filters;
233
- }
234
-
235
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/features/function-mocks.feature DELETED
@@ -1,48 +0,0 @@
1
- Feature: Function mocking
2
- In order to simulate the WordPress functional API
3
- As a developer
4
- I need to be able to mock WordPress core functions
5
-
6
- Scenario: userFunction creates functions that don't exist
7
- Given function wpMockTest does not exist
8
- When I mock function wpMockTest
9
- Then function wpMockTest should exist
10
-
11
- Scenario: Passthru function returns first argument
12
- Given I mock passthru function wpMockPassthruTest with args:
13
- | foobar | bazbat |
14
- Then I expect foobar when I run wpMockPassthruTest with args:
15
- | foobar | bazbat |
16
-
17
- Scenario: return value works correctly
18
- Given I mock function wpMockTest to return "test value"
19
- Then I expect "test value" when I run wpMockTest
20
-
21
- Scenario: expectations cause error on unexpected use
22
- Given I mock passthru function wpMockTest with args:
23
- | bazbat | foobar |
24
- Then I expect an error when I run wpMockTest with args:
25
- | bimbam | bobeep |
26
-
27
- Scenario: alias uses the provided callback when called
28
- Given I mock function wpMockTest to return "alias test"
29
- And I alias wpAliasTest to wpMockTest
30
- Then I expect "alias test" when I run wpAliasTest
31
-
32
- Scenario: echoFunction echoes the correct output
33
- Given I mock function wpMockTest to echo input
34
- Then I expect function wpMockTest to echo "echo test"
35
-
36
- Scenario: Previously defined functions do not cause failure when called without being expected
37
- Given strict mode is off
38
- And I mock function wpMockStrictTest
39
- And I tear down the test
40
- Then Nothing happens when I run function wpMockStrictTest
41
-
42
- @strictmode
43
- Scenario: Strict mode causes unexpected but previously defined functions to fail
44
- Given strict mode is on
45
- And I mock function wpMockTest
46
- When I tear down the test
47
- Then I expect an error when I run wpMockTest with args:
48
- | |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/features/hooks.feature DELETED
@@ -1,228 +0,0 @@
1
- Feature: Hook mocking
2
- In order to test common WordPress functionality
3
- As a developer
4
- I need to be able to mock actions and filters
5
-
6
- Scenario: expectActionAdded sets up expectation
7
- Given I expect the following actions added:
8
- | action | callback | priority | arguments |
9
- | foobar | bazbat | 10 | 2 |
10
- When I add the following actions:
11
- | action | callback | priority | arguments |
12
- | foobar | bazbat | 10 | 2 |
13
- Then tearDown should not fail
14
-
15
- Scenario: expectActionAdded fails when not met
16
- Given I expect the following actions added:
17
- | action | callback |
18
- | foobar | bazbat |
19
- When I do nothing
20
- Then tearDown should fail
21
-
22
- Scenario: expectActionAdded fails when argument count is different
23
- Given I expect the following actions added:
24
- | action | callback | priority | arguments |
25
- | foobar | bazbat | 10 | 2 |
26
- When I add the following actions:
27
- | action | callback | priority | arguments |
28
- | foobar | bazbat | 10 | 3 |
29
- Then tearDown should fail
30
-
31
- Scenario: expectActionAdded fails when priority is different
32
- Given I expect the following actions added:
33
- | action | callback | priority |
34
- | foobar | bazbat | 10 |
35
- When I add the following actions:
36
- | action | callback | priority |
37
- | foobar | bazbat | 11 |
38
- Then tearDown should fail
39
-
40
- Scenario: expectActionNotAdded fails when action added
41
- Given I expect the following actions not to be added:
42
- | action | callback |
43
- | foobar | bazbat |
44
- When I add the following actions:
45
- | action | callback |
46
- | foobar | bazbat |
47
- Then tearDown should fail
48
-
49
- Scenario: expectActionNotAdded passes when action not added
50
- Given I expect the following actions not to be added:
51
- | action | callback |
52
- | foobar | bazbat |
53
- When I do nothing
54
- Then tearDown should not fail
55
-
56
- Scenario: expectFilterAdded sets up expectation
57
- Given I expect the following filters added:
58
- | filter | callback | priority | arguments |
59
- | foobar | bazbat | 10 | 2 |
60
- When I add the following filters:
61
- | filter | callback | priority | arguments |
62
- | foobar | bazbat | 10 | 2 |
63
- Then tearDown should not fail
64
-
65
- Scenario: expectFilterAdded fails when not met
66
- Given I expect the following filters added:
67
- | filter | callback |
68
- | foobar | bazbat |
69
- When I do nothing
70
- Then tearDown should fail
71
-
72
- Scenario: expectFilterAdded fails when argument count is different
73
- Given I expect the following filters added:
74
- | filter | callback | priority | arguments |
75
- | foobar | bazbat | 10 | 2 |
76
- When I add the following filters:
77
- | filter | callback | priority | arguments |
78
- | foobar | bazbat | 10 | 3 |
79
- Then tearDown should fail
80
-
81
- Scenario: expectFilterAdded fails when priority is different
82
- Given I expect the following filters added:
83
- | filter | callback | priority |
84
- | foobar | bazbat | 10 |
85
- When I add the following filters:
86
- | filter | callback | priority |
87
- | foobar | bazbat | 11 |
88
- Then tearDown should fail
89
-
90
- Scenario: expectAction sets up expectation
91
- Given I expect the "foobar" action
92
- When I do the "foobar" action
93
- Then tearDown should not fail
94
-
95
- Scenario: expectAction fails when unmet
96
- Given I expect the "foobar" action
97
- When I do nothing
98
- Then tearDown should fail
99
-
100
- Scenario: expectAction with extra arguments
101
- Given I expect the "foobar" action with:
102
- | some | extra | data |
103
- When I do the "foobar" action with:
104
- | some | extra | data |
105
- Then tearDown should not fail
106
-
107
- Scenario: action with the wrong arguments fails
108
- Given I expect the "bazbat" action with:
109
- | the correct data |
110
- When I do the "bazbat" action with:
111
- | Invalid information |
112
- Then tearDown should fail
113
-
114
- Scenario: action with extra arguments fails
115
- Given I expect the "bazbat" action with:
116
- | data |
117
- When I do the "bazbat" action with:
118
- | data | plus |
119
- Then tearDown should fail
120
-
121
- Scenario: expectFilter sets up expectation
122
- Given I expect the "foobar" filter with "bazbat"
123
- When I apply the filter "foobar" with "bazbat"
124
- Then tearDown should not fail
125
-
126
- Scenario: expectFilter fails when unmet
127
- Given I expect the "foobar" filter with "bazbat"
128
- When I do nothing
129
- Then tearDown should fail
130
-
131
- Scenario: expectFilter with extra arguments
132
- Given I expect the "foobar" filter with:
133
- | some | extra | data |
134
- When I apply the filter "foobar" with:
135
- | some | extra | data |
136
- Then tearDown should not fail
137
-
138
- Scenario: filter with the wrong arguments fails
139
- Given I expect the "bazbat" filter with:
140
- | the correct data |
141
- When I apply the filter "bazbat" with:
142
- | Invalid information |
143
- Then tearDown should fail
144
-
145
- Scenario: expectFilter fails when called with wrong argument
146
- Given I expect the "foobar" filter with "bazbat"
147
- When I apply the filter "foobar" with "bimbam"
148
- Then tearDown should fail
149
-
150
- Scenario: filter with extra arguments fails
151
- Given I expect the "bazbat" filter with:
152
- | data |
153
- When I apply the filter "bazbat" with:
154
- | data | plus |
155
- Then tearDown should fail
156
-
157
- @strictmode
158
- Scenario: Unexpected action fails in strict mode
159
- Given strict mode is on
160
- When I do nothing
161
- Then I expect an error when I run do_action with args:
162
- | bimbam | bazbat |
163
-
164
- Scenario: unexpected action does not fail tests
165
- Given I do nothing
166
- When I add the following actions:
167
- | action | callback |
168
- | foobar | bazbat |
169
- Then tearDown should not fail
170
-
171
- @strictmode
172
- Scenario: Unexpected filter fails in strict mode
173
- Given strict mode is on
174
- When I do nothing
175
- Then I expect an error when I run apply_filters with args:
176
- | foobar | bazbat |
177
-
178
- Scenario: unexpected filter does not fail tests
179
- Given I do nothing
180
- When I add the following filters:
181
- | filter | callback |
182
- | foobar | bazbat |
183
- Then tearDown should not fail
184
-
185
- @strictmode
186
- Scenario: unexpected action fails in strict mode
187
- Given strict mode is on
188
- When I do nothing
189
- Then I expect an error when I run add_action with args:
190
- | foobar | bazbat |
191
-
192
- @strictmode
193
- Scenario: unexpected action fails in strict mode
194
- Given strict mode is on
195
- When I do nothing
196
- Then I expect an error when I run add_filter with args:
197
- | foobar | bazbat |
198
-
199
- Scenario: filter responder works
200
- Given I expect filter "the_content" to respond to "Test content" with "Responder works"
201
- When I apply the filter "the_content" with "Test content"
202
- Then The filter "the_content" should return "Responder works"
203
-
204
- Scenario: filter returns default value when no filter defined
205
- Given I do nothing
206
- When I apply the filter "the_content" with "Apple"
207
- Then The filter "the_content" should return "Apple"
208
-
209
- Scenario: filter returns default value when unexpected value used
210
- Given I expect filter "the_content" to respond to "Windows" with "OS X"
211
- When I apply the filter "the_content" with "Linux"
212
- Then The filter "the_content" should return "Linux"
213
-
214
- Scenario: expectFilterNotAdded fails when filter added
215
- Given I expect the following filters not to be added:
216
- | filter | callback |
217
- | foobar | bazbat |
218
- When I add the following filters:
219
- | filter | callback |
220
- | foobar | bazbat |
221
- Then tearDown should fail
222
-
223
- Scenario: expectFilterNotAdded passes when filter not added
224
- Given I expect the following filters not to be added:
225
- | filter | callback |
226
- | foobar | bazbat |
227
- When I do nothing
228
- Then tearDown should not fail
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock.php DELETED
@@ -1,543 +0,0 @@
1
- <?php
2
- /**
3
- * WP_Mock
4
- *
5
- * LICENSE
6
- *
7
- * Copyright 2013 10up and other contributors
8
- * http://10up.com
9
- *
10
- * Permission is hereby granted, free of charge, to any person obtaining
11
- * a copy of this software and associated documentation files (the
12
- * "Software"), to deal in the Software without restriction, including
13
- * without limitation the rights to use, copy, modify, merge, publish,
14
- * distribute, sublicense, and/or sell copies of the Software, and to
15
- * permit persons to whom the Software is furnished to do so, subject to
16
- * the following conditions:
17
- *
18
- * The above copyright notice and this permission notice shall be
19
- * included in all copies or substantial portions of the Software.
20
- *
21
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
- *
29
- * @package WP_Mock
30
- * @copyright Copyright (c) 2013 10up (http://10up.com)
31
- * @license MIT License
32
- */
33
-
34
- use WP_Mock\Matcher\FuzzyObject;
35
-
36
- class WP_Mock {
37
- /**
38
- * @var \WP_Mock\EventManager
39
- */
40
- protected static $event_manager;
41
-
42
- /**
43
- * @var \WP_Mock\Functions
44
- */
45
- protected static $function_manager;
46
-
47
- protected static $__bootstrapped = false;
48
-
49
- protected static $__use_patchwork = false;
50
-
51
- protected static $__strict_mode = false;
52
-
53
- protected static $deprecated_listener;
54
-
55
- /**
56
- * @param boolean $use_patchwork
57
- */
58
- public static function setUsePatchwork( $use_patchwork ) {
59
- if ( ! self::$__bootstrapped ) {
60
- self::$__use_patchwork = (bool) $use_patchwork;
61
- }
62
- }
63
-
64
- public static function usingPatchwork() {
65
- return (bool) self::$__use_patchwork;
66
- }
67
-
68
- /**
69
- * Check whether strict mode is turned on
70
- *
71
- * @return bool
72
- */
73
- public static function strictMode() {
74
- return (bool) self::$__strict_mode;
75
- }
76
-
77
- /**
78
- * Turns on strict mode
79
- */
80
- public static function activateStrictMode() {
81
- if ( ! self::$__bootstrapped ) {
82
- self::$__strict_mode = true;
83
- }
84
- }
85
-
86
- /**
87
- * Bootstrap WP_Mock
88
- */
89
- public static function bootstrap() {
90
- if ( ! self::$__bootstrapped ) {
91
- self::$__bootstrapped = true;
92
- static::$deprecated_listener = new \WP_Mock\DeprecatedListener();
93
- require_once __DIR__ . '/WP_Mock/API/function-mocks.php';
94
- require_once __DIR__ . '/WP_Mock/API/constant-mocks.php';
95
- if ( self::usingPatchwork() ) {
96
- $possible_locations = array(
97
- 'vendor',
98
- '../..',
99
- );
100
- $patchwork_path = 'antecedent/patchwork/Patchwork.php';
101
- foreach ( $possible_locations as $loc ) {
102
- $path = __DIR__ . "/../$loc/$patchwork_path";
103
- if ( file_exists( $path ) ) {
104
- break;
105
- }
106
- }
107
- // Will cause a fatal error if patchwork can't be found
108
- require_once( $path );
109
- }
110
- self::setUp();
111
- }
112
- }
113
-
114
- /**
115
- * Make sure Mockery doesn't have anything set up already.
116
- */
117
- public static function setUp() {
118
- if ( self::$__bootstrapped ) {
119
- \Mockery::close();
120
-
121
- self::$event_manager = new \WP_Mock\EventManager();
122
- self::$function_manager = new \WP_Mock\Functions();
123
- } else {
124
- self::bootstrap();
125
- }
126
- }
127
-
128
- /**
129
- * Tear down anything built up inside Mockery when we're ready to do so.
130
- */
131
- public static function tearDown() {
132
- self::$event_manager->flush();
133
- self::$function_manager->flush();
134
-
135
- \Mockery::close();
136
- \WP_Mock\Handler::cleanup();
137
- }
138
-
139
- /**
140
- * Fire a specific (mocked) callback when an apply_filters() call is used.
141
- *
142
- * @param string $filter
143
- *
144
- * @return \WP_Mock\Filter
145
- */
146
- public static function onFilter( $filter ) {
147
- return self::$event_manager->filter( $filter );
148
- }
149
-
150
- /**
151
- * Fire a specific (mocked) callback when a do_action() call is used.
152
- *
153
- * @param string $action
154
- *
155
- * @return \WP_Mock\Action
156
- */
157
- public static function onAction( $action ) {
158
- return self::$event_manager->action( $action );
159
- }
160
-
161
- /**
162
- * Get a filter or action added callback object
163
- *
164
- * @param string $hook
165
- * @param string $type
166
- *
167
- * @return \WP_Mock\HookedCallback
168
- */
169
- public static function onHookAdded( $hook, $type = 'filter' ) {
170
- return self::$event_manager->callback( $hook, $type );
171
- }
172
-
173
- /**
174
- * Get a filter added callback object
175
- *
176
- * @param string $hook
177
- *
178
- * @return \WP_Mock\HookedCallback
179
- */
180
- public static function onFilterAdded( $hook ) {
181
- return self::onHookAdded( $hook, 'filter' );
182
- }
183
-
184
- /**
185
- * Get an action added callback object
186
- *
187
- * @param string $hook
188
- *
189
- * @return \WP_Mock\HookedCallback
190
- */
191
- public static function onActionAdded( $hook ) {
192
- return self::onHookAdded( $hook, 'action' );
193
- }
194
-
195
- /**
196
- * Alert the Event Manager that an action has been invoked.
197
- *
198
- * @param string $action
199
- */
200
- public static function invokeAction( $action ) {
201
- self::$event_manager->called( $action );
202
- }
203
-
204
- public static function addFilter( $hook ) {
205
- self::addHook( $hook, 'filter' );
206
- }
207
-
208
- public static function addAction( $hook ) {
209
- self::addHook( $hook, 'action' );
210
- }
211
-
212
- public static function addHook( $hook, $type = 'filter' ) {
213
- $type_name = "$type::$hook";
214
- self::$event_manager->called( $type_name, 'callback' );
215
- }
216
-
217
- /**
218
- * Set up the expectation that an action will be called during the test.
219
- *
220
- * Mock a WordPress action, regardless of the parameters used. This call merely
221
- * verifies that the action is invoked by the tested method.
222
- *
223
- * @param string $action Action we expect the method to call
224
- */
225
- public static function expectAction( $action ) {
226
- $intercept = \Mockery::mock( 'intercept' );
227
- $intercept->shouldReceive( 'intercepted' )->atLeast()->once();
228
- $args = func_get_args();
229
- $args = count( $args ) > 1 ? array_slice( $args, 1 ) : array( null );
230
-
231
- $mocked_action = self::onAction( $action );
232
- $responder = call_user_func_array( array( $mocked_action, 'with' ), $args );
233
- $responder->perform( array( $intercept, 'intercepted' ) );
234
- }
235
-
236
- /**
237
- * Set up the expectation that a filter will be applied during the test.
238
- *
239
- * Mock a WordPress filter with specific arguments. You need all arguments that you expect
240
- * in order to fulfill the expectation.
241
- *
242
- * @param string $filter
243
- */
244
- public static function expectFilter( $filter ) {
245
- $intercept = \Mockery::mock( 'intercept' );
246
- $intercept->shouldReceive( 'intercepted' )->atLeast()->once()->andReturnUsing( function( $value ) {
247
- return $value;
248
- } );
249
- $args = func_num_args() > 1 ? array_slice( func_get_args(), 1 ) : array( null );
250
-
251
- $mocked_filter = self::onFilter( $filter );
252
- $responder = call_user_func_array( array( $mocked_filter, 'with' ), $args );
253
- $responder->reply( new \WP_Mock\InvokedFilterValue( array( $intercept, 'intercepted' ) ) );
254
- }
255
-
256
- public static function assertActionsCalled() {
257
- if ( ! self::$event_manager->allActionsCalled() ) {
258
- $failed = implode( ', ', self::$event_manager->expectedActions() );
259
- throw new \PHPUnit\Framework\ExpectationFailedException( 'Method failed to invoke actions: ' . $failed, null );
260
- }
261
- }
262
-
263
- /**
264
- * Add an expectation that an action should be added
265
- *
266
- * Really just a wrapper function for expectHookAdded()
267
- *
268
- * @param string $action The action name
269
- * @param callable $callback The callback that should be registered
270
- * @param int $priority The priority it should be registered at
271
- * @param int $args The number of arguments that should be allowed
272
- */
273
- public static function expectActionAdded( $action, $callback, $priority = 10, $args = 1 ) {
274
- self::expectHookAdded( 'action', $action, $callback, $priority, $args );
275
- }
276
-
277
- /**
278
- * Add an expection that an action should not be added. A wrapper
279
- * around the expectHookNotAdded function.
280
- *
281
- * @param string $action The action hook name
282
- * @param callable $callback The action callback
283
- */
284
- public static function expectActionNotAdded( $action, $callback ) {
285
- self::expectHookNotAdded( 'action', $action, $callback );
286
- }
287
-
288
- /**
289
- * Add an expectation that a filter should be added
290
- *
291
- * Really just a wrapper function for expectHookAdded()
292
- *
293
- * @param string $filter The action name
294
- * @param callable $callback The callback that should be registered
295
- * @param int $priority The priority it should be registered at
296
- * @param int $args The number of arguments that should be allowed
297
- */
298
- public static function expectFilterAdded( $filter, $callback, $priority = 10, $args = 1 ) {
299
- self::expectHookAdded( 'filter', $filter, $callback, $priority, $args );
300
- }
301
-
302
- /**
303
- * Adds an expectation that a filter will not be added. A wrapper
304
- * around the expectHookNotAdded function.
305
- *
306
- * @param string $filter The filter hook name
307
- * @param callable $callback The filter callback
308
- */
309
- public static function expectFilterNotAdded( $filter, $callback ) {
310
- self::expectHookNotAdded( 'filter', $filter, $callback );
311
- }
312
-
313
- /**
314
- * Add an expectation that a hook should be added
315
- *
316
- * @param string $type The type of hook being added
317
- * @param string $action The action name
318
- * @param callable $callback The callback that should be registered
319
- * @param int $priority The priority it should be registered at
320
- * @param int $args The number of arguments that should be allowed
321
- */
322
- public static function expectHookAdded( $type, $action, $callback, $priority = 10, $args = 1 ) {
323
- $intercept = \Mockery::mock( 'intercept' );
324
- $intercept->shouldReceive( 'intercepted' )->atLeast()->once();
325
-
326
- /** @var WP_Mock\HookedCallbackResponder $responder */
327
- $responder = self::onHookAdded( $action, $type )
328
- ->with( $callback, $priority, $args );
329
- $responder->perform( array( $intercept, 'intercepted' ) );
330
- }
331
-
332
- /**
333
- * Adds an expectation that a hook should not be added. Based on the
334
- * shouldNotReceive API of Mocker.
335
- *
336
- * @param string $type The hook type, 'action' or 'filter'
337
- * @param string $action The name of the hook
338
- * @param callable $callback The hooks callback handler.
339
- */
340
- public static function expectHookNotAdded( $type, $action, $callback ) {
341
- $intercept = \Mockery::mock( 'intercept' );
342
- $intercept->shouldNotReceive( 'intercepted' );
343
-
344
- /** @var WP_Mock\HookedCallbackResponder $responder */
345
- $responder = self::onHookAdded( $action, $type )
346
- ->with( $callback, 10, 1 );
347
- $responder->perform( array( $intercept, 'intercepted' ) );
348
- }
349
-
350
- public static function assertHooksAdded() {
351
- if ( ! self:: $event_manager->allHooksAdded() ) {
352
- $failed = implode( ', ', self::$event_manager->expectedHooks() );
353
- throw new \PHPUnit\Framework\ExpectationFailedException( 'Method failed to add hooks: ' . $failed, null );
354
- }
355
- }
356
-
357
- /**
358
- * Mock a WordPress API function
359
- *
360
- * This function registers a mock object for a WordPress function and, if
361
- * necessary, dynamically defines the function. Pass the function name as
362
- * the first argument (e.g. wp_remote_get) and pass in details about the
363
- * expectations in the $arguments array. The arguments array has a few
364
- * options for defining expectations about how the WordPress function should
365
- * be used during a test. Currently, it accepts the following settings:
366
- *
367
- * - times: Defines expectations for the number of times a function should
368
- * be called. The default is 0 or more times. To expect the function to be
369
- * called an exact amount of times, set times to a non-negative numeric
370
- * value. To specify that the function should be called a minimum number
371
- * of times, use a string with the minimum followed by '+' (e.g. '3+'
372
- * means 3 or more times). Append a '-' to indicate a maximum number of
373
- * times a function should be called (e.g. '3-' means no more than 3 times)
374
- * To indicate a range, use '-' between two numbers (e.g. '2-5' means at
375
- * least 2 times and no more than 5 times)
376
- * - return: Defines the value (if any) that the function should return. If
377
- * you pass a Closure as the return value, the function will return
378
- * whatever the Closure's return value.
379
- * - return_in_order: Use this if your function will be called multiple
380
- * times in the test but needs to have different return values. Set this to
381
- * an array of return values. Each time the function is called, it will
382
- * return the next value in the sequence until it reaches the last value,
383
- * which will become the return value for all subsequent calls. For
384
- * example, if I am mocking is_single(), I can set return_in_order to
385
- * array( false, true ). The first time is_single() is called it will
386
- * return false. The second and all subsequent times it will return true.
387
- * Setting this value overrides return, so if you set both, return will be
388
- * ignored.
389
- * - return_arg: Use this to specify that the function should return one of
390
- * its arguments. return_arg should be the position of the argument in the
391
- * arguments array, so 0 for the first argument, 1 for the second, etc.
392
- * You can also set this to true, which is equivalent to 0. This will
393
- * override both return and return_in_order.
394
- * - args: Use this to set expectations about what the arguments passed to
395
- * the function should be. This value should always be an array with the
396
- * arguments in order. Like with return, if you use a Closure, its return
397
- * value will be used to validate the argument expectations. WP_Mock has
398
- * several helper functions to make this feature more flexible. The are
399
- * static methods on the \WP_Mock\Functions class. They are:
400
- * - Functions::type( $type ) Expects an argument of a certain type. This
401
- * can be any core PHP data type (string, int, resource, callable, etc.)
402
- * or any class or interface name.
403
- * - Functions::anyOf( $values ) Expects the argument to be any value in
404
- * the $values array
405
- * In addition to these helper functions, you can indicate that the
406
- * argument can be any value of any type by using '*'. So, for example, if
407
- * I am expecting get_post_meta to be called, the args array might look
408
- * something like this:
409
- * array( $post->ID, 'some_meta_key', true )
410
- *
411
- * Returns the Mockery\Expectation object with the function expectations
412
- * added. It is possible to use Mockery methods to add expectations to the
413
- * object returned, which will then be combined with any expectations that
414
- * may have been passed as arguments.
415
- *
416
- * @param string $function_name
417
- * @param array $arguments
418
- *
419
- * @return Mockery\Expectation
420
- */
421
- public static function userFunction( $function_name, $arguments = array() ) {
422
- return self::$function_manager->register( $function_name, $arguments );
423
- }
424
-
425
- /**
426
- * Alias for userFunction
427
- *
428
- * @deprecated since 1.0
429
- *
430
- * @param string $function_name
431
- * @param array $arguments
432
- *
433
- * @return Mockery\Expectation
434
- */
435
- public static function wpFunction( $function_name, $arguments = array() ) {
436
- static::getDeprecatedListener()->logDeprecatedCall( __METHOD__, array( $function_name, $arguments ) );
437
- return self::userFunction( $function_name, $arguments );
438
- }
439
-
440
- /**
441
- * A wrapper for userFunction that will simply set/override the return to be
442
- * a function that echoes the value that its passed. For example, esc_attr_e
443
- * may need to be mocked, and it must echo some value. echoFunction will set
444
- * esc_attr_e to echo the value its passed.
445
- *
446
- * \WP_Mock::echoFunction( 'esc_attr_e' );
447
- * esc_attr_e( 'some_value' ); // echoes (translated) "some_value"
448
- *
449
- * @param string $function_name Function name.
450
- * @param array $arguments Optional. Arguments. Defaults to array().
451
- *
452
- * @return Mockery\Expectation
453
- */
454
- public static function echoFunction( $function_name, $arguments = array() ) {
455
- $arguments = (array) $arguments;
456
- $arguments['return'] = function ( $param ) {
457
- echo $param;
458
- };
459
- return self::$function_manager->register( $function_name, $arguments );
460
- }
461
-
462
- /**
463
- * A wrapper for userFunction that will simply set/override the return to be
464
- * a function that returns the value that its passed. For example, esc_attr
465
- * may need to be mocked, and it must return some value. passthruFunction
466
- * will set esc_attr to return the value its passed.
467
- *
468
- * \WP_Mock::passthruFunction( 'esc_attr' );
469
- * echo esc_attr( 'some_value' ); // echoes "some_value"
470
- *
471
- * @param string $function_name
472
- * @param array $arguments
473
- *
474
- * @return Mockery\Expectation
475
- */
476
- public static function passthruFunction( $function_name, $arguments = array() ) {
477
- $arguments = (array) $arguments;
478
- $arguments['return'] = function ( $param ) {
479
- return $param;
480
- };
481
- return self::$function_manager->register( $function_name, $arguments );
482
- }
483
-
484
- /**
485
- * Alias for passthruFunction
486
- *
487
- * @deprecated since 1.0
488
- *
489
- * @param string $function_name
490
- * @param array $arguments
491
- *
492
- * @return Mockery\Expectation
493
- */
494
- public static function wpPassthruFunction( $function_name, $arguments = array() ) {
495
- static::getDeprecatedListener()->logDeprecatedCall( __METHOD__, array( $function_name, $arguments ) );
496
- return self::passthruFunction( $function_name, $arguments );
497
- }
498
-
499
- /**
500
- * Add a function mock that aliases another callable.
501
- *
502
- * e.g.: WP_Mock::alias( 'wp_hash', 'md5' );
503
- *
504
- * @param string $function_name
505
- * @param callable $alias
506
- * @param array $arguments
507
- *
508
- * @return Mockery\Expectation
509
- */
510
- public static function alias( $function_name, $alias, $arguments = array() ) {
511
- $arguments = (array) $arguments;
512
- if ( is_callable( $alias ) ) {
513
- $arguments['return'] = function () use ( $alias ) {
514
- return call_user_func_array( $alias, func_get_args() );
515
- };
516
- }
517
- return self::$function_manager->register( $function_name, $arguments );
518
- }
519
-
520
- /**
521
- * Generate a fuzzy object match expectation
522
- *
523
- * This will let you fuzzy match objects based on their properties without
524
- * needing to use the identical (===) operator. This is helpful when the
525
- * object being passed to a function is constructed inside the scope of the
526
- * function being tested but where you want to make assertions on more than
527
- * just the type of the object.
528
- *
529
- * @param $thing
530
- *
531
- * @return FuzzyObject
532
- */
533
- public static function fuzzyObject( $thing ) {
534
- return new FuzzyObject( $thing );
535
- }
536
-
537
- /**
538
- * @return \WP_Mock\DeprecatedListener
539
- */
540
- public static function getDeprecatedListener() {
541
- return static::$deprecated_listener;
542
- }
543
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/API/constant-mocks.php DELETED
@@ -1,72 +0,0 @@
1
- <?php
2
- /**
3
- * Certain constants need to be mocked otherwise various WordPress functions will attempt
4
- * to include files that just don't exist.
5
- *
6
- * For example, nearly all uses of the WP_Http API require first including:
7
- * ABSPATH . WPINC . '/class-http.php'
8
- *
9
- * If these constants are not set, and files do not exist at the location they specify,
10
- * functions referencing them will fatally err.
11
- *
12
- * The `! defined` check is used here so that individual test environments can override
13
- * the normal default by setting constants in a bootstrap configuration file.
14
- */
15
-
16
- if ( ! defined( 'WP_CONTENT_DIR' ) ) {
17
- define( 'WP_CONTENT_DIR', __DIR__ . '/dummy-files' );
18
- }
19
-
20
- if ( ! defined( 'ABSPATH' ) ) {
21
- define( 'ABSPATH', '' );
22
- }
23
-
24
- if ( ! defined( 'WPINC' ) ) {
25
- define( 'WPINC', __DIR__ . '/dummy-files/wp-includes' );
26
- }
27
-
28
- /**
29
- * @since 0.71
30
- */
31
- if ( ! defined( 'EZSQL_VERSION' ) ) {
32
- define( 'EZSQL_VERSION', 'WP1.25' );
33
- }
34
-
35
- /**
36
- * HHVM does not support case-insensitive constants.
37
- *
38
- * @since 0.71
39
- * @see http://hhvm.com/blog/3095/getting-wordpress-running-on-hhvm
40
- */
41
- if ( ! defined( 'OBJECT' ) ) {
42
- define( 'OBJECT', 'OBJECT' );
43
- }
44
-
45
- if ( ! defined( 'Object' ) ) {
46
- define( 'Object', 'OBJECT' );
47
- }
48
-
49
- if ( ! defined( 'object' ) ) {
50
- define( 'object', 'OBJECT' );
51
- }
52
-
53
- /**
54
- * @since 2.5.0
55
- */
56
- if ( ! defined( 'OBJECT_K' ) ) {
57
- define( 'OBJECT_K', 'OBJECT_K' );
58
- }
59
-
60
- /**
61
- * @since 0.71
62
- */
63
- if ( ! defined( 'ARRAY_A' ) ) {
64
- define( 'ARRAY_A', 'ARRAY_A' );
65
- }
66
-
67
- /**
68
- * @since 0.71
69
- */
70
- if ( ! defined( 'ARRAY_N' ) ) {
71
- define( 'ARRAY_N', 'ARRAY_N' );
72
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/themes/vip/plugins/vip-init.php DELETED
File without changes
vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/wp-includes/class-http.php DELETED
File without changes
vendor/10up/wp_mock/php/WP_Mock/API/function-mocks.php DELETED
@@ -1,161 +0,0 @@
1
- <?php
2
-
3
- if ( ! function_exists( 'add_action' ) ) {
4
- /**
5
- * Hooks a function on to a specific action.
6
- *
7
- * Actions are the hooks that the WordPress core launches at specific points
8
- * during execution, or when specific events occur. Plugins can specify that
9
- * one or more of its PHP functions are executed at these points, using the
10
- * Action API.
11
- *
12
- * @param string $tag The name of the action to which the $function_to_add is hooked.
13
- * @param callback $function_to_add The name of the function you wish to be called.
14
- * @param int $priority optional. Used to specify the order in which the functions associated with a particular action are executed (default: 10). Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the action.
15
- * @param int $accepted_args optional. The number of arguments the function accept (default 1).
16
- */
17
- function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
18
- \WP_Mock::onActionAdded( $tag )->react( $function_to_add, (int) $priority, (int) $accepted_args );
19
- }
20
- }
21
-
22
- if ( ! function_exists( 'do_action' ) ) {
23
- /**
24
- * Execute functions hooked on a specific action hook.
25
- *
26
- * @param string $tag The name of the action to be executed.
27
- * @param mixed $arg,... Optional additional arguments which are passed on to the functions hooked to the action.
28
- *
29
- * @return null Will return null if $tag does not exist in $wp_filter array
30
- */
31
- function do_action( $tag, $arg = '' ) {
32
- $args = func_get_args();
33
- $args = array_slice( $args, 1 );
34
-
35
- return \WP_Mock::onAction( $tag )->react( $args );
36
- }
37
- }
38
-
39
- if ( ! function_exists( 'add_filter' ) ) {
40
- /**
41
- * Dummy method to prevent filter hooks in constructor from failing.
42
- */
43
- function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
44
- \WP_Mock::onFilterAdded( $tag )->react( $function_to_add, (int) $priority, (int) $accepted_args );
45
- }
46
- }
47
-
48
- if ( ! function_exists( 'apply_filters' ) ) {
49
- /**
50
- * Call the functions added to a filter hook.
51
- *
52
- * @param string $tag The name of the filter hook.
53
- * @param mixed $value The value on which the filters hooked to <tt>$tag</tt> are applied on.
54
- * @param mixed $var,... Additional variables passed to the functions hooked to <tt>$tag</tt>.
55
- *
56
- * @return mixed The filtered value after all hooked functions are applied to it.
57
- */
58
- function apply_filters( $tag, $value ) {
59
- $args = func_get_args();
60
- $args = array_slice( $args, 1 );
61
- $args[0] = $value;
62
-
63
- return \WP_Mock::onFilter( $tag )->apply( $args );
64
- }
65
- }
66
-
67
- if ( ! function_exists( 'esc_html' ) ) {
68
- function esc_html() {
69
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
70
- }
71
- }
72
-
73
- if ( ! function_exists( 'esc_attr' ) ) {
74
- function esc_attr() {
75
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
76
- }
77
- }
78
-
79
- if ( ! function_exists( 'esc_url' ) ) {
80
- function esc_url() {
81
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
82
- }
83
- }
84
-
85
- if ( ! function_exists( 'esc_url_raw' ) ) {
86
- function esc_url_raw() {
87
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
88
- }
89
- }
90
-
91
- if ( ! function_exists( 'esc_js' ) ) {
92
- function esc_js() {
93
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
94
- }
95
- }
96
-
97
- if ( ! function_exists( 'esc_textarea' ) ) {
98
- function esc_textarea() {
99
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
100
- }
101
- }
102
-
103
- if ( ! function_exists( '__' ) ) {
104
- function __() {
105
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
106
- }
107
- }
108
-
109
- if ( ! function_exists( '_e' ) ) {
110
- function _e() {
111
- \WP_Mock\Handler::predefined_echo_function_helper( __FUNCTION__, func_get_args() );
112
- }
113
- }
114
-
115
- if ( ! function_exists( '_x' ) ) {
116
- function _x() {
117
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
118
- }
119
- }
120
-
121
- if ( ! function_exists( 'esc_html__' ) ) {
122
- function esc_html__() {
123
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
124
- }
125
- }
126
-
127
- if ( ! function_exists( 'esc_html_e' ) ) {
128
- function esc_html_e() {
129
- \WP_Mock\Handler::predefined_echo_function_helper( __FUNCTION__, func_get_args() );
130
- }
131
- }
132
-
133
- if ( ! function_exists( 'esc_html_x' ) ) {
134
- function esc_html_x() {
135
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
136
- }
137
- }
138
-
139
- if ( ! function_exists( 'esc_attr__' ) ) {
140
- function esc_attr__() {
141
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
142
- }
143
- }
144
-
145
- if ( ! function_exists( 'esc_attr_e' ) ) {
146
- function esc_attr_e() {
147
- \WP_Mock\Handler::predefined_echo_function_helper( __FUNCTION__, func_get_args() );
148
- }
149
- }
150
-
151
- if ( ! function_exists( 'esc_attr_x' ) ) {
152
- function esc_attr_x() {
153
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
154
- }
155
- }
156
-
157
- if ( ! function_exists( '_n' ) ) {
158
- function _n() {
159
- return \WP_Mock\Handler::predefined_return_function_helper( __FUNCTION__, func_get_args() );
160
- }
161
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Action.php DELETED
@@ -1,77 +0,0 @@
1
- <?php
2
- /**
3
- * Mock WordPress actions by substituting each action with an advanced object
4
- * capable of intercepting calls and returning predictable behavior.
5
- *
6
- * @package WP_Mock
7
- * @subpackage Hooks
8
- */
9
-
10
- namespace WP_Mock;
11
-
12
-
13
- class Action extends Hook {
14
- public function react( $args ) {
15
- \WP_Mock::invokeAction( $this->name );
16
-
17
- $arg_num = count( $args );
18
-
19
- if ( 0 === $arg_num ) {
20
- if ( ! isset( $this->processors['argsnull'] ) ) {
21
- $this->strict_check();
22
-
23
- return;
24
- }
25
-
26
- $this->processors['argsnull']->react();
27
- } else {
28
- $processors = $this->processors;
29
- for ( $i = 0; $i < $arg_num - 1; $i ++ ) {
30
- $arg = $this->safe_offset( $args[ $i ] );
31
-
32
- if ( ! isset( $processors[ $arg ] ) ) {
33
- $this->strict_check();
34
-
35
- return;
36
- }
37
-
38
- $processors = $processors[ $arg ];
39
- }
40
-
41
- $arg = $this->safe_offset( $args[ $arg_num - 1 ] );
42
- if ( ! is_array( $processors ) || ! isset( $processors[ $arg ] ) ) {
43
- $this->strict_check();
44
-
45
- return;
46
- }
47
-
48
- $processors[ $arg ]->react();
49
- }
50
- }
51
-
52
- protected function new_responder() {
53
- return new Action_Responder();
54
- }
55
-
56
- /**
57
- * @return string
58
- */
59
- protected function get_strict_mode_message() {
60
- return sprintf( 'Unexpected use of do_action for action %s', $this->name );
61
- }
62
- }
63
-
64
- class Action_Responder {
65
- /**
66
- * @var mixed
67
- */
68
- protected $callable;
69
-
70
- public function perform( $callable ) {
71
- $this->callable = $callable;
72
- }
73
-
74
- public function react() {
75
- call_user_func( $this->callable );
76
- }
77
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/DeprecatedListener.php DELETED
@@ -1,119 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock;
4
-
5
- use \PHPUnit\Framework\TestCase;
6
-
7
- class DeprecatedListener {
8
-
9
- protected $calls = array();
10
-
11
- /** @var \PHPUnit\Framework\TestCase */
12
- protected $testResult;
13
-
14
- protected $testName;
15
-
16
- /**
17
- * @var \PHPUnit\Framework\TestCase
18
- */
19
- protected $testCase;
20
-
21
- public function logDeprecatedCall( $method, array $args = array() ) {
22
- $this->calls[] = array( $method, $args );
23
- }
24
-
25
- public function reset() {
26
- $this->calls = array();
27
- }
28
-
29
- public function checkCalls() {
30
- if ( empty( $this->calls ) ) {
31
- return;
32
- }
33
- $e = new \PHPUnit\Framework\RiskyTestError( $this->getMessage() );
34
- $this->testResult->addFailure( $this->testCase, $e, 0 );
35
- }
36
-
37
- /**
38
- * @param \PHPUnit\Framework\TestResult $testResult
39
- */
40
- public function setTestResult( $testResult ) {
41
- $this->testResult = $testResult;
42
- }
43
-
44
- /**
45
- * @param mixed $testName
46
- */
47
- public function setTestName( $testName ) {
48
- $this->testName = $testName;
49
- }
50
-
51
- public function setTestCase( \PHPUnit\Framework\TestCase $testCase ) {
52
- $this->testCase = $testCase;
53
- }
54
-
55
- protected function getMessage() {
56
- $maxLength = array_reduce( $this->getDeprecatedMethods(), function ( $carry, $item ) {
57
- return max( $carry, strlen( $item ) );
58
- }, 0 ) + 1;
59
- $message = 'Deprecated WP Mock calls inside ' . $this->testName . ":";
60
- foreach ( $this->getDeprecatedMethodsWithArgs() as $method => $args ) {
61
- $firstRun = true;
62
- $extra = $maxLength - strlen( $method );
63
- foreach ( $args as $arg ) {
64
- $message .= "\n ";
65
- if ( $firstRun ) {
66
- $message .= $method . str_repeat( ' ', $extra );
67
- $firstRun = false;
68
- $extra = $maxLength;
69
- } else {
70
- $message .= str_repeat( ' ', $extra );
71
- }
72
- $message .= $arg;
73
- }
74
- }
75
-
76
- return $message;
77
- }
78
-
79
- protected function getDeprecatedMethods() {
80
- $methods = array();
81
- foreach ( $this->calls as $call ) {
82
- $methods[] = $call[0];
83
- }
84
-
85
- return array_unique( $methods );
86
- }
87
-
88
- protected function getDeprecatedMethodsWithArgs() {
89
- $collection = array();
90
- foreach ( $this->calls as $call ) {
91
- $method = $call[0];
92
- $args = json_encode( array_map( array( $this, 'scalarizeArg' ), $call[1] ) );
93
- if ( empty( $collection[ $method ] ) ) {
94
- $collection[ $method ] = array();
95
- }
96
- $collection[ $method ][] = $args;
97
- }
98
-
99
- return array_map( 'array_unique', $collection );
100
- }
101
-
102
- protected function scalarizeArg( $value ) {
103
- if ( is_scalar( $value ) ) {
104
- return $value;
105
- } elseif ( is_object( $value ) ) {
106
- return '<' . get_class( $value ) . ':' . spl_object_hash( $value ) . '>';
107
- } elseif ( is_array( $value ) ) {
108
- if ( is_callable( $value ) ) {
109
- return '[' . implode( ',', array_map( array( $this, 'scalarizeArg' ), $value ) ) . ']';
110
- } else {
111
- return 'Array([' . count( $value ) . '] ...)';
112
- }
113
- } elseif ( is_resource( $value ) ) {
114
- return 'Resource';
115
- } else {
116
- return 'Unknown Value';
117
- }
118
- }
119
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/EventManager.php DELETED
@@ -1,124 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock;
4
-
5
- class EventManager {
6
- /**
7
- * @var array
8
- */
9
- protected $filters;
10
-
11
- /**
12
- * @var array
13
- */
14
- protected $actions;
15
-
16
- /**
17
- * @var array
18
- */
19
- protected $expected;
20
-
21
- protected $callbacks;
22
-
23
- public function __construct() {
24
- $this->flush();
25
- }
26
-
27
- /**
28
- * Clear internal storage.
29
- */
30
- public function flush() {
31
- $this->filters = array();
32
- $this->actions = array();
33
- $this->expected = array();
34
- }
35
-
36
- /**
37
- * @param string $name Action handler to retrieve
38
- *
39
- * @return Action
40
- */
41
- public function action( $name ) {
42
- if ( ! isset( $this->actions[ $name ] ) ) {
43
- $this->actions[ $name ] = new Action( $name );
44
- $this->expected[] = 'action::' . $name;
45
- }
46
-
47
- return $this->actions[ $name ];
48
- }
49
-
50
- /**
51
- * @param string $name Filter handler to retrieve
52
- *
53
- * @return Filter
54
- */
55
- public function filter( $name ) {
56
- if ( ! isset( $this->filters[ $name ] ) ) {
57
- $this->filters[ $name ] = new Filter( $name );
58
- $this->expected[] = 'filter::' . $name;
59
- }
60
-
61
- return $this->filters[ $name ];
62
- }
63
-
64
- public function callback( $name, $type = 'filter' ) {
65
- $type_name = "$type::$name";
66
- if ( ! isset( $this->callbacks[ $type_name ] ) ) {
67
- $hookedCallback = new HookedCallback( $name );
68
- $hookedCallback->setType( $type );
69
- $this->callbacks[ $type_name ] = $hookedCallback;
70
- $this->expected[] = "callback::$type_name";
71
- }
72
-
73
- return $this->callbacks[ $type_name ];
74
- }
75
-
76
- /**
77
- * Remember that a particular hook has been invoked during operation.
78
- *
79
- * @param string $hook
80
- * @param string $type
81
- */
82
- public function called( $hook, $type = 'action' ) {
83
- $position = array_search( $type . '::' . $hook, $this->expected );
84
- array_splice( $this->expected, $position, 1 );
85
- }
86
-
87
- /**
88
- * Return a list of all the actions we're expecting a test to invoke.
89
- *
90
- * @return array
91
- */
92
- public function expectedActions() {
93
- return array_keys( $this->actions );
94
- }
95
-
96
- public function expectedHooks() {
97
- return array_keys( $this->callbacks );
98
- }
99
-
100
- /**
101
- * Check whether or not all actions have been invoked at least once.
102
- *
103
- * @return bool
104
- */
105
- public function allActionsCalled() {
106
- foreach( $this->expected as $hook ) {
107
- if ( 0 === strpos( $hook, 'action::' ) ) {
108
- return false;
109
- }
110
- }
111
-
112
- return true;
113
- }
114
-
115
- public function allHooksAdded() {
116
- foreach( $this->expected as $hook ) {
117
- if ( 0 === strpos( $hook, 'callback::' ) ) {
118
- return false;
119
- }
120
- }
121
-
122
- return true;
123
- }
124
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Filter.php DELETED
@@ -1,76 +0,0 @@
1
- <?php
2
- /**
3
- * Mock WordPress filters by substituting each filter with an advanced object
4
- * capable of intercepting calls and returning predictable data.
5
- *
6
- * @package WP_Mock
7
- * @subpackage Hooks
8
- */
9
-
10
- namespace WP_Mock;
11
-
12
-
13
- class Filter extends Hook {
14
- /**
15
- * Apply the stored filter.
16
- *
17
- * @param array $args Arguments passed to apply_filters()
18
- *
19
- * @return mixed
20
- */
21
- public function apply( $args ) {
22
- if ( $args[0] === null && count( $args ) === 1 ) {
23
- if ( isset( $this->processors['argsnull'] ) ) {
24
- return $this->processors['argsnull']->send();
25
- }
26
- $this->strict_check();
27
-
28
- return null;
29
- }
30
-
31
- $processors = $this->processors;
32
- foreach ( $args as $arg ) {
33
- $key = $this->safe_offset( $arg );
34
- if ( ! is_array( $processors ) || ! isset( $processors[ $key ] ) ) {
35
- $this->strict_check();
36
-
37
- return $arg;
38
- }
39
-
40
- $processors = $processors[ $key ];
41
- }
42
-
43
- return call_user_func_array( array($processors, 'send'), $args );
44
- }
45
-
46
- protected function new_responder() {
47
- return new Filter_Responder();
48
- }
49
-
50
- /**
51
- * @return string
52
- */
53
- protected function get_strict_mode_message() {
54
- return sprintf( 'Unexpected use of apply_filters for filter %s', $this->name );
55
- }
56
- }
57
-
58
- class Filter_Responder {
59
- /**
60
- * @var mixed
61
- */
62
- protected $value;
63
-
64
- public function reply( $value ) {
65
- $this->value = $value;
66
- }
67
-
68
- public function send() {
69
- if ( $this->value instanceof InvokedFilterValue ) {
70
- return call_user_func_array( $this->value, func_get_args() );
71
- }
72
-
73
- return $this->value;
74
- }
75
- }
76
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Functions.php DELETED
@@ -1,295 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock;
4
-
5
- use Mockery;
6
-
7
- class Functions {
8
-
9
- private $mocked_functions = array();
10
-
11
- private $internal_functions = array();
12
-
13
- private static $wp_mocked_functions = array();
14
-
15
- private $patchwork_functions = array();
16
-
17
- /**
18
- * Constructor for the Functions object
19
- */
20
- public function __construct() {
21
- Handler::cleanup();
22
- $this->flush();
23
- }
24
-
25
- /**
26
- * Emptys the mocked_functions array
27
- */
28
- public function flush() {
29
- $this->mocked_functions = array();
30
- Handler::cleanup();
31
- $this->patchwork_functions = array();
32
- if ( function_exists( 'Patchwork\undoAll' ) ) {
33
- \Patchwork\restoreAll();
34
- }
35
- if ( empty( self::$wp_mocked_functions ) ) {
36
- self::$wp_mocked_functions = array(
37
- 'add_action',
38
- 'do_action',
39
- 'add_filter',
40
- 'apply_filters',
41
- 'esc_attr',
42
- 'esc_html',
43
- 'esc_js',
44
- 'esc_textarea',
45
- 'esc_url',
46
- 'esc_url_raw',
47
- '__',
48
- '_e',
49
- '_x',
50
- 'esc_attr__',
51
- 'esc_attr_e',
52
- 'esc_attr_x',
53
- 'esc_html__',
54
- 'esc_html_e',
55
- 'esc_html_x',
56
- '_n',
57
- );
58
- }
59
- }
60
-
61
- /**
62
- * Registers the function to be mocked and sets up its expectations
63
- *
64
- * @param string $function
65
- * @param array $arguments
66
- *
67
- * @throws \Exception If the function name is invalid
68
- *
69
- * @return Mockery\Expectation
70
- */
71
- public function register( $function, $arguments ) {
72
- $expectation = null;
73
- try {
74
- $this->generate_function( $function );
75
- if ( empty( $this->mocked_functions[$function] ) ) {
76
- $this->mocked_functions[$function] = Mockery::mock( 'wp_api' );
77
- }
78
- $mock = $this->mocked_functions[$function];
79
-
80
- $method = preg_replace( '/\\\\+/', '_', $function );
81
- $expectation = $this->set_up_mock( $mock, $method, $arguments );
82
- Handler::register_handler( $function, array( $mock, $method ) );
83
- } catch ( \Exception $e ) {
84
- throw $e;
85
- }
86
- return $expectation;
87
- }
88
-
89
- /**
90
- * Sets up an argument placeholder that allows it to be any of an enumerated
91
- * list of possibilities
92
- *
93
- * @return \Mockery\Matcher\anyOf
94
- */
95
- public static function anyOf() {
96
- return call_user_func_array( array( '\\Mockery', 'anyOf' ), func_get_args() );
97
- }
98
-
99
- /**
100
- * Sets up an argument placeholder that requires the argument to be of a
101
- * certain type
102
- *
103
- * This may be any type for which there is a "is_*" function, or any class or
104
- * interface.
105
- *
106
- * @param string $expected
107
- *
108
- * @return Mockery\Matcher\Type
109
- */
110
- public static function type( $expected ) {
111
- return Mockery::type( $expected );
112
- }
113
-
114
- /**
115
- * Set up the mock object with an expectation for this test.
116
- *
117
- * @param \Mockery\Mock $mock
118
- * @param string $function
119
- * @param array $arguments
120
- *
121
- * @return Mockery\Expectation
122
- */
123
- protected function set_up_mock( $mock, $function, $arguments ) {
124
- $expectation = $mock->shouldReceive( $function );
125
-
126
- if ( isset( $arguments['times'] ) ) {
127
- $times = $arguments['times'];
128
- if ( is_int( $times ) || preg_match( '/^\d+$/', $times ) ) {
129
- $expectation->times( (int) $times );
130
- } elseif ( preg_match( '/^(\d+)([\-+])$/', $times, $matches ) ) {
131
- $method = '+' === $matches[2] ? 'atLeast' : 'atMost';
132
- $expectation->$method()->times( (int) $matches[1] );
133
- } elseif ( preg_match( '/^(\d+)-(\d+)$/', $times, $matches ) ) {
134
- $num1 = (int) $matches[1];
135
- $num2 = (int) $matches[2];
136
- if ( $num1 === $num2 ) {
137
- $expectation->times( $num1 );
138
- } else {
139
- $expectation->between( min( $num1, $num2 ), max( $num1, $num2 ) );
140
- }
141
- }
142
- }
143
- if ( isset( $arguments['args'] ) ) {
144
- $arguments['args'] = array_map( function ( $argument ) {
145
- if ( $argument instanceof \Closure ) {
146
- return Mockery::on( $argument );
147
- }
148
- if ( $argument === '*' ) {
149
- return Mockery::any();
150
- }
151
- return $argument;
152
- }, (array) $arguments['args'] );
153
- call_user_func_array( array( $expectation, 'with' ), $arguments['args'] );
154
- }
155
- if ( isset( $arguments['return_arg'] ) ) {
156
- $argument_position = true === $arguments['return_arg'] ? 0 : (int) $arguments['return_arg'];
157
- $arguments['return'] = function () use ( $argument_position ) {
158
- if ( $argument_position >= func_num_args() ) {
159
- return null;
160
- }
161
- return func_get_arg( $argument_position );
162
- };
163
- } elseif ( isset( $arguments['return_in_order'] ) ) {
164
- $arguments['return'] = new ReturnSequence();
165
- $arguments['return']->setReturnValues( (array) $arguments['return_in_order'] );
166
- }
167
- if ( isset( $arguments['return'] ) ) {
168
- $return = $arguments['return'];
169
- if ( $return instanceof ReturnSequence ) {
170
- $expectation->andReturnValues( $return->getReturnValues() );
171
- } elseif ( $return instanceof \Closure ) {
172
- $expectation->andReturnUsing( $return );
173
- } else {
174
- $expectation->andReturn( $return );
175
- }
176
- }
177
- return $expectation;
178
- }
179
-
180
- /**
181
- * Dynamically declares a function if it doesn't already exist
182
- *
183
- * This function is namespace-aware.
184
- *
185
- * @param $function_name
186
- */
187
- private function generate_function( $function_name ) {
188
- $function_name = $this->sanitize_function_name( $function_name );
189
-
190
- $this->validate_function_name( $function_name );
191
-
192
- $this->create_function( $function_name ) OR $this->replace_function( $function_name );
193
- }
194
-
195
- /**
196
- * Create a function with WP_Mock
197
- *
198
- * @param string $function_name
199
- *
200
- * @return bool True if this function created the mock, false otherwise
201
- */
202
- private function create_function( $function_name ) {
203
- if ( in_array( $function_name, self::$wp_mocked_functions ) ) {
204
- return true;
205
- }
206
- if ( function_exists( $function_name ) ) {
207
- return false;
208
- }
209
-
210
- $parts = explode( '\\', $function_name );
211
- $name = array_pop( $parts );
212
- $namespace = empty( $parts ) ? '' : 'namespace ' . implode( '\\', $parts ) . ';' . PHP_EOL;
213
-
214
- $declaration = <<<EOF
215
- $namespace
216
- function $name() {
217
- return \\WP_Mock\\Handler::handle_function( '$function_name', func_get_args() );
218
- }
219
- EOF;
220
- eval( $declaration );
221
-
222
- self::$wp_mocked_functions[] = $function_name;
223
-
224
- return true;
225
- }
226
-
227
- /**
228
- * Replace a function with patchwork
229
- *
230
- * @param string $function_name
231
- *
232
- * @return bool
233
- */
234
- private function replace_function( $function_name ) {
235
- if ( in_array( $function_name, $this->patchwork_functions ) ) {
236
- return true;
237
- }
238
- if ( ! function_exists( 'Patchwork\\replace' ) ) {
239
- return true;
240
- }
241
- $this->patchwork_functions[] = $function_name;
242
- \Patchwork\redefine( $function_name, function () use ( $function_name ) {
243
- return Handler::handle_function( $function_name, func_get_args() );
244
- } );
245
- return true;
246
- }
247
-
248
- /**
249
- * Clean the function name to be of a standard shape
250
- *
251
- * @param string $function_name
252
- *
253
- * @return string
254
- */
255
- private function sanitize_function_name( $function_name ) {
256
- $function_name = trim( $function_name, '\\' );
257
- return $function_name;
258
- }
259
-
260
- /**
261
- * Validate the function name for format and other considerations
262
- *
263
- * Validation will fail if the string doesn't match the regex, if it's an
264
- * internal function, or if it is a reserved word in PHP.
265
- *
266
- * @param string $function_name
267
- *
268
- * @throws \InvalidArgumentException
269
- */
270
- private function validate_function_name( $function_name ) {
271
- if ( function_exists( $function_name ) ) {
272
- if ( empty( $this->internal_functions ) ) {
273
- $defined_functions = get_defined_functions();
274
- $this->internal_functions = $defined_functions['internal'];
275
- }
276
- if ( in_array( $function_name, $this->internal_functions ) ) {
277
- throw new \InvalidArgumentException;
278
- }
279
- }
280
-
281
- $parts = explode( '\\', $function_name );
282
- $name = array_pop( $parts );
283
-
284
- if ( ! preg_match( '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $function_name ) ) {
285
- throw new \InvalidArgumentException( 'Function name not properly formatted!' );
286
- }
287
-
288
- $reserved_words = ' __halt_compiler abstract and array as break callable case catch class clone const continue declare default die do echo else elseif empty enddeclare endfor endforeach endif endswitch endwhile eval exit extends final for foreach function global goto if implements include include_once instanceof insteadof interface isset list namespace new or print private protected public require require_once return static switch throw trait try unset use var while xor __CLASS__ __DIR__ __FILE__ __FUNCTION__ __LINE__ __METHOD__ __NAMESPACE__ __TRAIT__ ';
289
- if ( false !== strpos( $reserved_words, " $name " ) ) {
290
- throw new \InvalidArgumentException( 'Function name can not be a reserved word!' );
291
- }
292
- }
293
-
294
- }
295
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Handler.php DELETED
@@ -1,110 +0,0 @@
1
- <?php
2
- /**
3
- * Created by JetBrains PhpStorm.
4
- * User: Eric
5
- * Date: 3/26/13
6
- * Time: 8:56 AM
7
- * To change this template use File | Settings | File Templates.
8
- */
9
-
10
- namespace WP_Mock;
11
-
12
-
13
- class Handler {
14
- /**
15
- * Mocked method handlers registered by the test class.
16
- *
17
- * @var array
18
- */
19
- private static $handlers = array();
20
-
21
- /**
22
- * Overrides any existing handlers to set a new callback.
23
- *
24
- * @param string $function_name
25
- * @param string $callback
26
- */
27
- public static function register_handler( $function_name, $callback ) {
28
- self::$handlers[ $function_name ] = $callback;
29
- }
30
-
31
- /**
32
- * Handle a mocked function call.
33
- *
34
- * @param string $function_name
35
- * @param array $args
36
- *
37
- * @return mixed
38
- */
39
- public static function handle_function( $function_name, $args = array() ) {
40
- if ( self::handler_exists( $function_name ) ) {
41
- $callback = self::$handlers[ $function_name ];
42
-
43
- return call_user_func_array( $callback, $args );
44
- } elseif ( \WP_Mock::strictMode() ) {
45
- throw new \PHPUnit\Framework\ExpectationFailedException(
46
- sprintf( 'No handler found for %s', $function_name )
47
- );
48
- }
49
- }
50
-
51
- /**
52
- * Check if a handler exists
53
- *
54
- * @param string $function_name
55
- *
56
- * @return bool
57
- */
58
- public static function handler_exists( $function_name ) {
59
- return isset( self::$handlers[ $function_name ] );
60
- }
61
-
62
- /**
63
- * Clear all registered handlers.
64
- */
65
- public static function cleanup() {
66
- self::$handlers = array();
67
- }
68
-
69
- /**
70
- * Helper function for common passthru return functions
71
- *
72
- * @param string $function_name
73
- * @param array $args
74
- *
75
- * @return mixed
76
- */
77
- public static function predefined_return_function_helper( $function_name, array $args ) {
78
- $result = self::handle_function( $function_name, $args );
79
- if ( ! self::handler_exists( $function_name ) ) {
80
- $result = isset( $args[0] ) ? $args[0] : $result;
81
- }
82
-
83
- return $result;
84
- }
85
-
86
- /**
87
- * Helper function for common echo functions
88
- *
89
- * @param string $function_name
90
- * @param array $args
91
- *
92
- * @throws \Exception
93
- */
94
- public static function predefined_echo_function_helper( $function_name, array $args ) {
95
- ob_start();
96
- try {
97
- self::handle_function( $function_name, $args );
98
- } catch ( \Exception $exception ) {
99
- ob_end_clean();
100
- throw $exception;
101
- }
102
- $result = ob_get_clean();
103
- if ( ! self::handler_exists( $function_name ) ) {
104
- $result = isset( $args[0] ) ? $args[0] : $result;
105
- }
106
-
107
- echo $result;
108
- }
109
-
110
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Hook.php DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
- /**
3
- * Abstract Hook interface for both actions and filters.
4
- *
5
- * @package WP_Mock
6
- * @subpackage Hooks
7
- */
8
-
9
- namespace WP_Mock;
10
-
11
-
12
- abstract class Hook {
13
- /** @var string Hook name */
14
- protected $name;
15
-
16
- /** @var array Collection of processors */
17
- protected $processors = array();
18
-
19
- public function __construct( $name ) {
20
- $this->name = $name;
21
- }
22
-
23
- protected function safe_offset( $value ) {
24
- if ( is_null( $value ) ) {
25
- return 'null';
26
- } elseif ( is_scalar( $value ) ) {
27
- return $value;
28
- } elseif ( is_object( $value ) ) {
29
- return spl_object_hash( $value );
30
- } elseif ( is_array( $value ) ) {
31
- $return = '';
32
- foreach ( $value as $k => $v ) {
33
- $k = is_numeric( $k ) ? '' : $k;
34
- $return .= $k . $this->safe_offset( $v );
35
- }
36
-
37
- return $return;
38
- }
39
-
40
- return '';
41
- }
42
-
43
- /** @return Action_Responder|Filter_Responder */
44
- public function with() {
45
- $args = func_get_args();
46
- $responder = $this->new_responder();
47
-
48
- if ( $args === array( null ) ) {
49
- $this->processors['argsnull'] = $responder;
50
- } else {
51
- $num_args = count( $args );
52
-
53
- $processors = &$this->processors;
54
- for ( $i = 0; $i < $num_args - 1; $i ++ ) {
55
- $arg = $this->safe_offset( $args[ $i ] );
56
-
57
- if ( ! isset( $processors[ $arg ] ) ) {
58
- $processors[ $arg ] = array();
59
- }
60
-
61
- $processors = &$processors[ $arg ];
62
- }
63
-
64
- $processors[ $this->safe_offset( $args[ $num_args - 1 ] ) ] = $responder;
65
- }
66
-
67
- return $responder;
68
- }
69
-
70
- protected abstract function new_responder();
71
-
72
- /**
73
- * Throw an exception if strict mode is on
74
- *
75
- * @throws \PHPUnit\Framework\ExpectationFailedException
76
- */
77
- protected function strict_check() {
78
- if ( \WP_Mock::strictMode() ) {
79
- throw new \PHPUnit\Framework\ExpectationFailedException( $this->get_strict_mode_message() );
80
- }
81
- }
82
-
83
- /**
84
- * @return string
85
- */
86
- abstract protected function get_strict_mode_message();
87
-
88
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/HookedCallback.php DELETED
@@ -1,107 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock;
4
-
5
- class HookedCallback extends Hook {
6
-
7
- protected $type = 'filter';
8
- protected $callback;
9
-
10
- /**
11
- * @param string $type
12
- */
13
- public function setType( $type ) {
14
- $this->type = $type;
15
- }
16
-
17
- public function react( $callback, $priority, $argument_count ) {
18
- \WP_Mock::addHook( $this->name );
19
-
20
- $safe_callback = $this->safe_offset( $callback );
21
- if (
22
- empty( $this->processors[ $safe_callback ] ) ||
23
- empty( $this->processors[ $safe_callback ][ $priority ] ) ||
24
- empty( $this->processors[ $safe_callback ][ $priority ][ $argument_count ] )
25
- ) {
26
- $this->callback = $callback;
27
- $this->strict_check();
28
-
29
- return null;
30
- }
31
-
32
- return $this->processors[ $this->safe_offset( $callback ) ][ $priority ][ $argument_count ]->react();
33
- }
34
-
35
- protected function new_responder() {
36
- return new HookedCallbackResponder();
37
- }
38
-
39
- protected function safe_offset( $value ) {
40
- if ( $value instanceof \Closure ) {
41
- $value = '__CLOSURE__';
42
- }
43
-
44
- return parent::safe_offset( $value );
45
- }
46
-
47
- /**
48
- * Converts a callable to a string
49
- *
50
- * Closures get returned as 'Closure', objects (those with an __invoke() method get turned into <Class>::__invoke,
51
- * and arrays get turned into <Class>::<method>
52
- *
53
- * @param callable $callback
54
- *
55
- * @return string
56
- */
57
- protected function callback_to_string( $callback ) {
58
- if ( ! is_string( $callback ) ) {
59
- if ( $callback instanceof \Closure ) {
60
- $callback = 'Closure';
61
- } elseif ( is_object( $callback ) ) {
62
- $callback = get_class( $callback ) . '::__invoke';
63
- } else {
64
- $class = $callback[0];
65
- $method = $callback[1];
66
- if ( ! is_string( $class ) ) {
67
- $class = get_class( $class );
68
- }
69
- $callback = "{$class}::$method";
70
- }
71
- }
72
-
73
- return $callback;
74
- }
75
-
76
- /**
77
- * @param $callback
78
- *
79
- * @return string
80
- */
81
- protected function get_strict_mode_message() {
82
- return sprintf(
83
- 'Unexpected use of add_%s for action %s with callback %s',
84
- $this->type,
85
- $this->name,
86
- $this->callback_to_string( $this->callback )
87
- );
88
- }
89
-
90
- }
91
-
92
- class HookedCallbackResponder {
93
-
94
- /**
95
- * @var callable
96
- */
97
- protected $callable;
98
-
99
- public function perform( $callable ) {
100
- $this->callable = $callable;
101
- }
102
-
103
- public function react() {
104
- call_user_func( $this->callable );
105
- }
106
-
107
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/InvokedFilterValue.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock;
4
-
5
- class InvokedFilterValue {
6
-
7
- /**
8
- * @var callable
9
- */
10
- protected $callback;
11
-
12
- /**
13
- * InvokedFilterValue constructor.
14
- *
15
- * @param callable $callable
16
- */
17
- public function __construct( $callable ) {
18
- $this->callback = $callable;
19
- }
20
-
21
- public function __invoke() {
22
- return call_user_func_array( $this->callback, func_get_args() );
23
- }
24
-
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Loader.php DELETED
@@ -1,149 +0,0 @@
1
- <?php
2
- /**
3
- * SplClassLoader implementation that implements the technical interoperability
4
- * standards for PHP 5.3 namespaces and class names.
5
- *
6
- * http://groups.google.com/group/php-standards/web/final-proposal
7
- *
8
- * // Example which loads classes for the Doctrine Common package in the
9
- * // Doctrine\Common namespace.
10
- * $classLoader = new SplClassLoader('Doctrine\Common', '/path/to/doctrine');
11
- * $classLoader->register();
12
- *
13
- * @author Jonathan H. Wage <jonwage@gmail.com>
14
- * @author Roman S. Borschel <roman@code-factory.org>
15
- * @author Matthew Weier O'Phinney <matthew@zend.com>
16
- * @author Kris Wallsmith <kris.wallsmith@gmail.com>
17
- * @author Fabien Potencier <fabien.potencier@symfony-project.org>
18
- */
19
-
20
- namespace WP_Mock;
21
-
22
-
23
- class Loader {
24
- private $_fileExtension = '.php';
25
- private $_namespace;
26
- private $_includePath;
27
- private $_namespaceSeparator = '\\';
28
-
29
- /**
30
- * Creates a new <tt>Loader</tt> that loads classes of the
31
- * specified namespace.
32
- *
33
- * @param string $ns The namespace to use.
34
- */
35
- public function __construct( $ns = 'WP_Mock', $includePath = null ) {
36
- $this->_namespace = $ns;
37
- $this->_includePath = $includePath;
38
- }
39
-
40
- /**
41
- * Sets the namespace separator used by classes in the namespace of this class loader.
42
- *
43
- * @param string $sep The separator to use.
44
- */
45
- public function setNamespaceSeparator( $sep ) {
46
- $this->_namespaceSeparator = $sep;
47
- }
48
-
49
- /**
50
- * Gets the namespace seperator used by classes in the namespace of this class loader.
51
- *
52
- * @return void
53
- */
54
- public function getNamespaceSeparator() {
55
- return $this->_namespaceSeparator;
56
- }
57
-
58
- /**
59
- * Sets the base include path for all class files in the namespace of this class loader.
60
- *
61
- * @param string $includePath
62
- */
63
- public function setIncludePath( $includePath ) {
64
- $this->_includePath = $includePath;
65
- }
66
-
67
- /**
68
- * Gets the base include path for all class files in the namespace of this class loader.
69
- *
70
- * @return string $includePath
71
- */
72
- public function getIncludePath() {
73
- return $this->_includePath;
74
- }
75
-
76
- /**
77
- * Sets the file extension of class files in the namespace of this class loader.
78
- *
79
- * @param string $fileExtension
80
- */
81
- public function setFileExtension( $fileExtension ) {
82
- $this->_fileExtension = $fileExtension;
83
- }
84
-
85
- /**
86
- * Gets the file extension of class files in the namespace of this class loader.
87
- *
88
- * @return string $fileExtension
89
- */
90
- public function getFileExtension() {
91
- return $this->_fileExtension;
92
- }
93
-
94
- /**
95
- * Installs this class loader on the SPL autoload stack.
96
- *
97
- * @param bool $prepend If true, prepend autoloader on the autoload stack
98
- */
99
- public function register( $prepend = false ) {
100
- //spl_autoload_register( array( $this, 'loadClass' ), true, $prepend );
101
- }
102
-
103
- /**
104
- * Uninstalls this class loader from the SPL autoloader stack.
105
- */
106
- public function unregister() {
107
- //spl_autoload_unregister( array( $this, 'loadClass' ) );
108
- }
109
-
110
- /**
111
- * Loads the given class or interface.
112
- *
113
- * @param string $className The name of the class to load.
114
- *
115
- * @return void
116
- */
117
- public function loadClass( $className ) {
118
- return;
119
- if ( $className === 'WP_Mock' ) {
120
- require $this->getFullPath( 'WP_Mock.php' );
121
-
122
- return;
123
- }
124
- if ( null === $this->_namespace
125
- || $this->_namespace . $this->_namespaceSeparator === substr( $className, 0, strlen( $this->_namespace . $this->_namespaceSeparator ) )
126
- ) {
127
- $fileName = '';
128
- $namespace = '';
129
- if ( false !== ( $lastNsPos = strripos( $className, $this->_namespaceSeparator ) ) ) {
130
- $namespace = substr( $className, 0, $lastNsPos );
131
- $className = substr( $className, $lastNsPos + 1 );
132
- $fileName = str_replace( $this->_namespaceSeparator, DIRECTORY_SEPARATOR, $namespace ) . DIRECTORY_SEPARATOR;
133
- }
134
- $fileName .= str_replace( '_', DIRECTORY_SEPARATOR, $className ) . $this->_fileExtension;
135
- require $this->getFullPath( $fileName );
136
- }
137
- }
138
-
139
- /**
140
- * Returns full path for $fileName if _includePath is set, or leaves as-is for PHP's internal search in 'require'.
141
- *
142
- * @param string $fileName relative to include path.
143
- *
144
- * @return string
145
- */
146
- private function getFullPath( $fileName ) {
147
- return ($this->_includePath !== null ? $this->_includePath . DIRECTORY_SEPARATOR : '') . $fileName;
148
- }
149
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Matcher/FuzzyObject.php DELETED
@@ -1,101 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock\Matcher;
4
-
5
- use Mockery\Exception;
6
- use Mockery\Matcher\MatcherAbstract;
7
-
8
- class FuzzyObject extends MatcherAbstract {
9
-
10
- /**
11
- * @param object|array $expected
12
- *
13
- * @throws \Mockery\Exception If a non-object non-array expectation is provided
14
- */
15
- public function __construct( $expected = null ) {
16
- if ( ! is_object( $expected ) ) {
17
- if ( is_array( $expected ) ) {
18
- $expected = (object) $expected;
19
- } else {
20
- throw new Exception( 'FuzzyObject matcher can only match objects!' );
21
- }
22
- }
23
- parent::__construct( $expected );
24
- }
25
-
26
- /**
27
- * Check if the actual value matches the expected.
28
- * Actual passed by reference to preserve reference trail (where applicable)
29
- * back to the original method parameter.
30
- *
31
- * @param mixed $actual
32
- *
33
- * @return bool
34
- */
35
- public function match( &$actual ) {
36
- if ( ! is_object( $actual ) ) {
37
- return false;
38
- }
39
-
40
- if ( ! $this->haveCommonAncestor( $actual, $this->_expected ) ) {
41
- return false;
42
- }
43
-
44
- $expected_properties = get_object_vars( $this->_expected );
45
-
46
- foreach ( $expected_properties as $prop => $value ) {
47
- if ( ! isset( $actual->$prop ) || $value !== $actual->$prop ) {
48
- return false;
49
- }
50
- }
51
-
52
- $actual_keys = array_keys( get_object_vars( $actual ) );
53
- $extra_actual = array_diff( $actual_keys, array_keys( $expected_properties ) );
54
- if ( ! empty( $extra_actual ) ) {
55
- return false;
56
- }
57
-
58
- return true;
59
- }
60
-
61
- /**
62
- * Return a string representation of this Matcher
63
- *
64
- * @return string
65
- */
66
- public function __toString() {
67
- $values = array_values( get_object_vars( $this->_expected ) );
68
- $values = array_map( function ( $value ) {
69
- if ( ! is_scalar( $value ) ) {
70
- if ( is_array( $value ) ) {
71
- $value = 'Array';
72
- } elseif ( is_object( $value ) ) {
73
- $value = get_class( $value );
74
- } elseif ( is_resource( $value ) ) {
75
- $value = get_resource_type( $value );
76
- } else {
77
- $value = 'unknown';
78
- }
79
- }
80
- return $value;
81
- }, $values );
82
- return '<FuzzyObject[' . implode( ', ', $values ) . ']>';
83
- }
84
-
85
- /**
86
- * @param object $object1
87
- * @param object $object2
88
- *
89
- * @return bool
90
- */
91
- protected function haveCommonAncestor( $object1, $object2 ) {
92
- $class1 = get_class( $object1 );
93
- $class2 = get_class( $object2 );
94
- if ( $class1 === $class2 ) {
95
- return true;
96
- }
97
- $inheritance1 = class_parents( $class1 );
98
- $inheritance2 = class_parents( $class2 );
99
- return (bool) array_intersect_assoc( $inheritance1, $inheritance2 );
100
- }
101
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/ReturnSequence.php DELETED
@@ -1,39 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock;
4
-
5
- class ReturnSequence {
6
-
7
- private $return_values = array();
8
-
9
- /**
10
- * Constructor to set up the return sequence object
11
- *
12
- * You can pass arbitrary arguments to the constructor to set to the internal
13
- * $return_values array
14
- */
15
- public function __construct() {
16
- $this->return_values = func_get_args();
17
- }
18
-
19
- /**
20
- * Retrieve the $return_values array
21
- *
22
- * @return array
23
- */
24
- public function getReturnValues() {
25
- return $this->return_values;
26
- }
27
-
28
- /**
29
- * Set the return_values array
30
- *
31
- * Values should be passed in as one array. Keys will be discarded.
32
- *
33
- * @param array $return_values
34
- */
35
- public function setReturnValues( $return_values ) {
36
- $this->return_values = array_values( (array) $return_values );
37
- }
38
-
39
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/ExpectationsMet.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock\Tools\Constraints;
4
-
5
- use PHPUnit\Framework\Constraint\Constraint;
6
- use Mockery;
7
- use Exception;
8
-
9
- class ExpectationsMet extends \PHPUnit\Framework\Constraint\Constraint {
10
-
11
- private $_mockery_message;
12
-
13
- public function matches( $other ) {
14
- try {
15
- Mockery::getContainer()->mockery_verify();
16
- } catch ( Exception $e ) {
17
- $this->_mockery_message = $e->getMessage();
18
- return false;
19
- }
20
- return true;
21
- }
22
-
23
- /**
24
- * Returns a string representation of the object.
25
- *
26
- * @return string
27
- */
28
- public function toString() {
29
- return 'WP Mock expectations are met';
30
- }
31
-
32
- protected function additionalFailureDescription( $other ) {
33
- return str_replace( array( "\r", "\n" ), '', (string) $this->_mockery_message );
34
- }
35
-
36
- protected function failureDescription( $other ) {
37
- return $this->toString();
38
- }
39
-
40
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/IsEqualHtml.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock\Tools\Constraints;
4
-
5
- use PHPUnit\Framework\Constraint\IsEqual;
6
-
7
- class IsEqualHtml extends \PHPUnit\Framework\Constraint\IsEqual {
8
-
9
- private function clean( $thing ) {
10
- $thing = preg_replace( '/\n\s+/', '', $thing );
11
- $thing = preg_replace( '/\s\s+/', ' ', $thing );
12
- return str_replace( array( "\r", "\n", "\t" ), '', $thing );
13
- }
14
-
15
- public function evaluate( $other, $description = '', $returnResult = FALSE ) {
16
- $other = $this->clean( $other );
17
- $this->value = $this->clean( $this->value );
18
- return parent::evaluate( $other, $description, $returnResult );
19
- }
20
-
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/php/WP_Mock/Tools/TestCase.php DELETED
@@ -1,319 +0,0 @@
1
- <?php
2
-
3
- namespace WP_Mock\Tools;
4
-
5
- use PHPUnit\Framework\TestResult;
6
- use Exception;
7
- use Mockery;
8
- use ReflectionMethod;
9
- use Text_Template;
10
- use WP_Mock;
11
- use WP_Mock\Tools\Constraints\ExpectationsMet;
12
- use WP_Mock\Tools\Constraints\IsEqualHtml;
13
-
14
- abstract class TestCase extends \PHPUnit\Framework\TestCase {
15
-
16
- protected $mockedStaticMethods = array();
17
-
18
- /**
19
- * @var array
20
- */
21
- protected $__default_post = array();
22
-
23
- /**
24
- * @var array
25
- */
26
- protected $__default_get = array();
27
-
28
- /**
29
- * @var array
30
- */
31
- protected $__default_request = array();
32
-
33
- /**
34
- * @var bool|callable
35
- */
36
- protected $__contentFilterCallback = false;
37
-
38
- /**
39
- * @var array
40
- */
41
- protected $testFiles = array();
42
-
43
- public function setUp() {
44
- $this->requireFileDependencies();
45
-
46
- WP_Mock::setUp();
47
-
48
- $_GET = (array) $this->__default_get;
49
- $_POST = (array) $this->__default_post;
50
- $_REQUEST = (array) $this->__default_request;
51
-
52
- $this->setUpContentFiltering();
53
-
54
- $this->cleanGlobals();
55
- }
56
-
57
- public function tearDown() {
58
- WP_Mock::tearDown();
59
-
60
- $this->cleanGlobals();
61
-
62
- $this->mockedStaticMethods = array();
63
-
64
- $_GET = array();
65
- $_POST = array();
66
- $_REQUEST = array();
67
- }
68
-
69
- public function assertActionsCalled() {
70
- $actions_not_added = $expected_actions = 0;
71
- try {
72
- WP_Mock::assertActionsCalled();
73
- } catch ( Exception $e ) {
74
- $actions_not_added = 1;
75
- $expected_actions = $e->getMessage();
76
- }
77
- $this->assertEmpty( $actions_not_added, $expected_actions );
78
- }
79
-
80
- public function assertHooksAdded() {
81
- $hooks_not_added = $expected_hooks = 0;
82
- try {
83
- WP_Mock::assertHooksAdded();
84
- } catch ( Exception $e ) {
85
- $hooks_not_added = 1;
86
- $expected_hooks = $e->getMessage();
87
- }
88
- $this->assertEmpty( $hooks_not_added, $expected_hooks );
89
- }
90
-
91
- public function ns( $function ) {
92
- if ( ! is_string( $function ) || false !== strpos( $function, '\\' ) ) {
93
- return $function;
94
- }
95
-
96
- $thisClassName = trim( get_class( $this ), '\\' );
97
-
98
- if ( ! strpos( $thisClassName, '\\' ) ) {
99
- return $function;
100
- }
101
-
102
- // $thisNamespace is constructed by exploding the current class name on
103
- // namespace separators, running array_slice on that array starting at 0
104
- // and ending one element from the end (chops the class name off) and
105
- // imploding that using namespace separators as the glue.
106
- $thisNamespace = implode( '\\', array_slice( explode( '\\', $thisClassName ), 0, - 1 ) );
107
-
108
- return "$thisNamespace\\$function";
109
- }
110
-
111
- public function stripTabsAndNewlines( $content ) {
112
- return str_replace( array( "\t", "\r", "\n" ), '', $content );
113
- }
114
-
115
- public function expectOutputString( $expectedString ) {
116
- if ( is_callable( $this->__contentFilterCallback ) ) {
117
- $expectedString = call_user_func( $this->__contentFilterCallback, $expectedString );
118
- }
119
- parent::expectOutputString( $expectedString );
120
- }
121
-
122
- public function assertCurrentConditionsMet( $message = '' ) {
123
- $this->assertThat( null, new ExpectationsMet, $message );
124
- }
125
-
126
- public function assertConditionsMet( $message = '' ) {
127
- $this->assertCurrentConditionsMet( $message );
128
- }
129
-
130
- public function assertEqualsHTML( $expected, $actual, $message = '' ) {
131
- $constraint = new IsEqualHtml( $expected );
132
- $this->assertThat( $actual, $constraint, $message );
133
- }
134
-
135
- /**
136
- * Nuke the globals from orbit for process isolation
137
- *
138
- * See http://kpayne.me/2012/07/02/phpunit-process-isolation-and-constant-already-defined/
139
- * for more details
140
- *
141
- * {@inheritdoc}
142
- */
143
- protected function prepareTemplate( Text_Template $template ) {
144
- $template->setVar( array(
145
- 'globals' => '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = \'' . $GLOBALS['__PHPUNIT_BOOTSTRAP'] . '\';',
146
- ) );
147
- parent::prepareTemplate( $template );
148
- }
149
-
150
-
151
- /**
152
- * Mock a static method of a class
153
- *
154
- * @param string $class The classname or class::method name
155
- * @param null|string $method The method name. Optional if class::method used for $class
156
- *
157
- * @return \Mockery\Expectation
158
- * @throws Exception
159
- */
160
- protected function mockStaticMethod( $class, $method = null ) {
161
- if ( ! $method ) {
162
- list( $class, $method ) = ( explode( '::', $class ) + array( null, null ) );
163
- }
164
- if ( ! $method ) {
165
- throw new Exception( sprintf( 'Could not mock %s::%s', $class, $method ) );
166
- }
167
- if ( ! WP_Mock::usingPatchwork() || ! function_exists( 'Patchwork\Interceptor\patch' ) ) {
168
- throw new Exception( 'Patchwork is not loaded! Please load patchwork before mocking static methods!' );
169
- }
170
-
171
- $safe_method = "wp_mock_safe_$method";
172
- $signature = md5( "$class::$method" );
173
- if ( ! empty( $this->mockedStaticMethods[ $signature ] ) ) {
174
- $mock = $this->mockedStaticMethods[ $signature ];
175
- } else {
176
-
177
- $rMethod = false;
178
- if ( class_exists( $class ) ) {
179
- $rMethod = new ReflectionMethod( $class, $method );
180
- }
181
- if (
182
- $rMethod &&
183
- (
184
- ! $rMethod->isUserDefined() ||
185
- ! $rMethod->isStatic() ||
186
- $rMethod->isPrivate()
187
- )
188
- ) {
189
- throw new Exception( sprintf( '%s::%s is not a user-defined non-private static method!', $class, $method ) );
190
- }
191
-
192
- /** @var \Mockery\Mock $mock */
193
- $mock = Mockery::mock( $class );
194
- $mock->shouldAllowMockingProtectedMethods();
195
- $this->mockedStaticMethods[ $signature ] = $mock;
196
-
197
- \Patchwork\redefine( "$class::$method", function () use ( $mock, $safe_method ) {
198
- return call_user_func_array( array( $mock, $safe_method ), func_get_args() );
199
- }, ! ( $rMethod ) );
200
- }
201
- $expectation = $mock->shouldReceive( $safe_method );
202
-
203
- return $expectation;
204
- }
205
-
206
- /**
207
- * @param array|object $data The post data to add to the post
208
- *
209
- * @return \WP_Post
210
- */
211
- protected function mockPost( $data ) {
212
- /** @var \WP_Post $post */
213
- $post = \Mockery::mock( 'WP_Post' );
214
- $data = array_merge( array(
215
- 'ID' => 0,
216
- 'post_author' => 0,
217
- 'post_type' => '',
218
- 'post_title' => '',
219
- 'post_date' => '',
220
- 'post_date_gmt' => '',
221
- 'post_content' => '',
222
- 'post_excerpt' => '',
223
- 'post_status' => '',
224
- 'comment_status' => '',
225
- 'ping_status' => '',
226
- 'post_password' => '',
227
- 'post_parent' => 0,
228
- 'post_modified' => '',
229
- 'post_modified_gmt' => '',
230
- 'comment_count' => 0,
231
- 'menu_order' => 0,
232
- ), (array) $data );
233
- array_walk( $data, function ( $value, $prop ) use ( $post ) {
234
- $post->$prop = $value;
235
- } );
236
-
237
- return $post;
238
- }
239
-
240
- /**
241
- * @param array $query_vars
242
- *
243
- * @return \WP
244
- */
245
- protected function mockWp( array $query_vars = array() ) {
246
- /** @var \WP $wp */
247
- $wp = \Mockery::mock( 'WP' );
248
- $wp->query_vars = $query_vars;
249
-
250
- return $wp;
251
- }
252
-
253
- protected function cleanGlobals() {
254
- $common_globals = array(
255
- 'post',
256
- 'wp_query',
257
- );
258
- foreach ( $common_globals as $var ) {
259
- if ( isset( $GLOBALS[ $var ] ) ) {
260
- unset( $GLOBALS[ $var ] );
261
- }
262
- }
263
-
264
- }
265
-
266
- /**
267
- * Require any testFiles that are defined in a subclass
268
- *
269
- * This will only work if the WP_MOCK_INCLUDE_DIR is defined to point to the root directory you want to include
270
- * files from.
271
- */
272
- protected function requireFileDependencies() {
273
- if ( ! empty( $this->testFiles ) && defined( 'WP_MOCK_INCLUDE_DIR' ) ) {
274
- foreach ( $this->testFiles as $file ) {
275
- if ( file_exists( WP_MOCK_INCLUDE_DIR . $file ) ) {
276
- require_once( WP_MOCK_INCLUDE_DIR . $file );
277
- }
278
- }
279
- }
280
- }
281
-
282
- protected function setUpContentFiltering() {
283
- $this->__contentFilterCallback = false;
284
-
285
- $annotations = $this->getAnnotations();
286
- if (
287
- ! isset( $annotations['stripTabsAndNewlinesFromOutput'] ) ||
288
- $annotations['stripTabsAndNewlinesFromOutput'][0] !== 'disabled' ||
289
- (
290
- is_numeric( $annotations['stripTabsAndNewlinesFromOutput'][0] ) &&
291
- (int) $annotations['stripTabsAndNewlinesFromOutput'][0] !== 0
292
- )
293
- ) {
294
- $this->__contentFilterCallback = array( $this, 'stripTabsAndNewlines' );
295
- $this->setOutputCallback( $this->__contentFilterCallback );
296
- }
297
- }
298
-
299
- public function run( \PHPUnit\Framework\TestResult $result = null ) {
300
- if ( $result === null ) {
301
- $result = $this->createResult();
302
- }
303
-
304
- WP_Mock::getDeprecatedListener()->setTestResult( $result );
305
- WP_Mock::getDeprecatedListener()->setTestCase($this);
306
-
307
- return parent::run( $result );
308
- }
309
-
310
- /**
311
- * @after
312
- */
313
- public function checkDeprecatedCalls() {
314
- WP_Mock::getDeprecatedListener()->checkCalls();
315
- WP_Mock::getDeprecatedListener()->reset();
316
- }
317
-
318
- }
319
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/phpdoc.xml DELETED
@@ -1,16 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" ?>
2
- <phpdoc>
3
- <parser>
4
- <package>WP_Mock</package>
5
- <target>docs</target>
6
- <encoding>utf-8</encoding>
7
- </parser>
8
- <transformer>
9
- <target>docs</target>
10
- </transformer>
11
- <files>
12
- <directory>WP_Mock</directory>
13
- <ignore>tests/*</ignore>
14
- <ignore>vendor/*</ignore>
15
- </files>
16
- </phpdoc>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/10up/wp_mock/phpunit.xml.dist DELETED
@@ -1,22 +0,0 @@
1
- <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
- xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.6/phpunit.xsd"
3
- bootstrap="./bootstrap.php.dist"
4
- backupGlobals="false"
5
- beStrictAboutCoversAnnotation="true"
6
- beStrictAboutOutputDuringTests="true"
7
- beStrictAboutTestsThatDoNotTestAnything="true"
8
- beStrictAboutTodoAnnotatedTests="true"
9
- colors="true"
10
- verbose="true">
11
- <testsuites>
12
- <testsuite>
13
- <directory suffix="Test.php">./tests/</directory>
14
- </testsuite>
15
- </testsuites>
16
-
17
- <filter>
18
- <whitelist processUncoveredFilesFromWhitelist="true">
19
- <directory suffix=".php">php</directory>
20
- </whitelist>
21
- </filter>
22
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/antecedent/patchwork/.scrutinizer.yml DELETED
@@ -1,48 +0,0 @@
1
- ---
2
- checks:
3
- php:
4
- code_rating: true
5
- duplication: true
6
- filter:
7
- excluded_paths:
8
- - "tests/"
9
- - "vendor/"
10
- coding_style:
11
- php:
12
- indentation:
13
- general:
14
- use_tabs: false
15
- spaces:
16
- around_operators:
17
- concatenation: true
18
- negation: false
19
- build:
20
- cache:
21
- directories:
22
- - vendor/
23
- nodes:
24
- php54:
25
- environment:
26
- php: 5.4
27
- php55:
28
- environment:
29
- php: 5.5
30
- php56:
31
- environment:
32
- php: 5.6
33
- php70:
34
- environment:
35
- php: 7.0
36
- php71:
37
- environment:
38
- php: 7.1
39
- php72:
40
- environment:
41
- php: 7.2
42
- php73:
43
- environment:
44
- php: 7.3
45
- tests:
46
- override:
47
- - idle_timeout: 4800
48
- command: "./vendor/bin/phpunit tests"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/antecedent/patchwork/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License
2
-
3
- Copyright (c) 2010-2018 Ignas Rudaitis
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/antecedent/patchwork/Patchwork.php DELETED
@@ -1,149 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * @author Ignas Rudaitis <ignas.rudaitis@gmail.com>
5
- * @copyright 2010-2018 Ignas Rudaitis
6
- * @license http://www.opensource.org/licenses/mit-license.html
7
- */
8
- namespace Patchwork;
9
-
10
- if (function_exists('Patchwork\replace')) {
11
- return;
12
- }
13
-
14
- require_once __DIR__ . '/src/Exceptions.php';
15
- require_once __DIR__ . '/src/CallRerouting.php';
16
- require_once __DIR__ . '/src/CodeManipulation.php';
17
- require_once __DIR__ . '/src/Utils.php';
18
- require_once __DIR__ . '/src/Stack.php';
19
- require_once __DIR__ . '/src/Config.php';
20
-
21
- function redefine($subject, callable $content)
22
- {
23
- $handle = null;
24
- foreach (array_slice(func_get_args(), 1) as $content) {
25
- $handle = CallRerouting\connect($subject, $content, $handle);
26
- }
27
- $handle->silence();
28
- return $handle;
29
- }
30
-
31
- function relay(array $args = null)
32
- {
33
- return CallRerouting\relay($args);
34
- }
35
-
36
- function fallBack()
37
- {
38
- throw new Exceptions\NoResult;
39
- }
40
-
41
- function restore(CallRerouting\Handle $handle)
42
- {
43
- $handle->expire();
44
- }
45
-
46
- function restoreAll()
47
- {
48
- CallRerouting\disconnectAll();
49
- }
50
-
51
- function silence(CallRerouting\Handle $handle)
52
- {
53
- $handle->silence();
54
- }
55
-
56
- function assertEventuallyDefined(CallRerouting\Handle $handle)
57
- {
58
- $handle->unsilence();
59
- }
60
-
61
- function getClass()
62
- {
63
- return Stack\top('class');
64
- }
65
-
66
- function getCalledClass()
67
- {
68
- return Stack\topCalledClass();
69
- }
70
-
71
- function getFunction()
72
- {
73
- return Stack\top('function');
74
- }
75
-
76
- function getMethod()
77
- {
78
- return getClass() . '::' . getFunction();
79
- }
80
-
81
- function configure()
82
- {
83
- Config\locate();
84
- }
85
-
86
- function hasMissed($callable)
87
- {
88
- return Utils\callableWasMissed($callable);
89
- }
90
-
91
- function always($value)
92
- {
93
- return function() use ($value) {
94
- return $value;
95
- };
96
- }
97
-
98
- Utils\alias('Patchwork', [
99
- 'redefine' => ['replace', 'replaceLater'],
100
- 'relay' => 'callOriginal',
101
- 'fallBack' => 'pass',
102
- 'restore' => 'undo',
103
- 'restoreAll' => 'undoAll',
104
- ]);
105
-
106
- configure();
107
-
108
- Utils\markMissedCallables();
109
-
110
- if (Utils\runningOnHHVM()) {
111
- # no preprocessor needed on HHVM;
112
- # just let Patchwork become a wrapper for fb_intercept()
113
- spl_autoload_register('Patchwork\CallRerouting\deployQueue');
114
- return;
115
- }
116
-
117
- CodeManipulation\Stream::wrap();
118
-
119
- CodeManipulation\register([
120
- CodeManipulation\Actions\CodeManipulation\propagateThroughEval(),
121
- CodeManipulation\Actions\CallRerouting\injectCallInterceptionCode(),
122
- CodeManipulation\Actions\RedefinitionOfInternals\spliceNamedFunctionCalls(),
123
- CodeManipulation\Actions\RedefinitionOfInternals\spliceDynamicCalls(),
124
- CodeManipulation\Actions\RedefinitionOfNew\spliceAllInstantiations,
125
- CodeManipulation\Actions\RedefinitionOfNew\publicizeConstructors,
126
- CodeManipulation\Actions\ConflictPrevention\preventImportingOtherCopiesOfPatchwork(),
127
- ]);
128
-
129
- CodeManipulation\onImport([
130
- CodeManipulation\Actions\CallRerouting\markPreprocessedFiles(),
131
- ]);
132
-
133
- Utils\clearOpcodeCaches();
134
-
135
- register_shutdown_function('Patchwork\Utils\clearOpcodeCaches');
136
-
137
- CallRerouting\createStubsForInternals();
138
- CallRerouting\connectDefaultInternals();
139
-
140
- require __DIR__ . '/src/Redefinitions/LanguageConstructs.php';
141
-
142
- CodeManipulation\register([
143
- CodeManipulation\Actions\RedefinitionOfLanguageConstructs\spliceAllConfiguredLanguageConstructs(),
144
- CodeManipulation\Actions\CallRerouting\injectQueueDeploymentCode(),
145
- ]);
146
-
147
- if (Utils\wasRunAsConsoleApp()) {
148
- require __DIR__ . '/src/Console.php';
149
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit754f340405ab0e2a93b757c18525c113::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -42,6 +42,8 @@ namespace Composer\Autoload;
42
  */
43
  class ClassLoader
44
  {
 
 
45
  // PSR-4
46
  private $prefixLengthsPsr4 = array();
47
  private $prefixDirsPsr4 = array();
@@ -57,6 +59,13 @@ class ClassLoader
57
  private $missingClasses = array();
58
  private $apcuPrefix;
59
 
 
 
 
 
 
 
 
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
@@ -300,6 +309,15 @@ class ClassLoader
300
  public function register($prepend = false)
301
  {
302
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  /**
@@ -308,6 +326,10 @@ class ClassLoader
308
  public function unregister()
309
  {
310
  spl_autoload_unregister(array($this, 'loadClass'));
 
 
 
 
311
  }
312
 
313
  /**
@@ -367,6 +389,16 @@ class ClassLoader
367
  return $file;
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
370
  private function findFileWithExtension($class, $ext)
371
  {
372
  // PSR-4 lookup
42
  */
43
  class ClassLoader
44
  {
45
+ private $vendorDir;
46
+
47
  // PSR-4
48
  private $prefixLengthsPsr4 = array();
49
  private $prefixDirsPsr4 = array();
59
  private $missingClasses = array();
60
  private $apcuPrefix;
61
 
62
+ private static $registeredLoaders = array();
63
+
64
+ public function __construct($vendorDir = null)
65
+ {
66
+ $this->vendorDir = $vendorDir;
67
+ }
68
+
69
  public function getPrefixes()
70
  {
71
  if (!empty($this->prefixesPsr0)) {
309
  public function register($prepend = false)
310
  {
311
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
+
313
+ if (null === $this->vendorDir) {
314
+ //no-op
315
+ } elseif ($prepend) {
316
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
317
+ } else {
318
+ unset(self::$registeredLoaders[$this->vendorDir]);
319
+ self::$registeredLoaders[$this->vendorDir] = $this;
320
+ }
321
  }
322
 
323
  /**
326
  public function unregister()
327
  {
328
  spl_autoload_unregister(array($this, 'loadClass'));
329
+
330
+ if (null !== $this->vendorDir) {
331
+ unset(self::$registeredLoaders[$this->vendorDir]);
332
+ }
333
  }
334
 
335
  /**
389
  return $file;
390
  }
391
 
392
+ /**
393
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
394
+ *
395
+ * @return self[]
396
+ */
397
+ public static function getRegisteredLoaders()
398
+ {
399
+ return self::$registeredLoaders;
400
+ }
401
+
402
  private function findFileWithExtension($class, $ext)
403
  {
404
  // PSR-4 lookup
vendor/composer/InstalledVersions.php CHANGED
@@ -12,6 +12,7 @@
12
 
13
  namespace Composer;
14
 
 
15
  use Composer\Semver\VersionParser;
16
 
17
 
@@ -24,34 +25,16 @@ class InstalledVersions
24
  private static $installed = array (
25
  'root' =>
26
  array (
27
- 'pretty_version' => '4.5.1',
28
- 'version' => '4.5.1.0',
29
  'aliases' =>
30
  array (
31
  ),
32
- 'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
33
  'name' => 'mihdan/cyr2lat',
34
  ),
35
  'versions' =>
36
  array (
37
- '10up/wp_mock' =>
38
- array (
39
- 'pretty_version' => '0.3.0',
40
- 'version' => '0.3.0.0',
41
- 'aliases' =>
42
- array (
43
- ),
44
- 'reference' => '64956557e98ee4c8c56cd1e396e822adb4673714',
45
- ),
46
- 'antecedent/patchwork' =>
47
- array (
48
- 'pretty_version' => '2.1.12',
49
- 'version' => '2.1.12.0',
50
- 'aliases' =>
51
- array (
52
- ),
53
- 'reference' => 'b98e046dd4c0acc34a0846604f06f6111654d9ea',
54
- ),
55
  'composer/installers' =>
56
  array (
57
  'pretty_version' => 'v1.9.0',
@@ -61,321 +44,14 @@ private static $installed = array (
61
  ),
62
  'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
63
  ),
64
- 'cordoval/hamcrest-php' =>
65
- array (
66
- 'replaced' =>
67
- array (
68
- 0 => '*',
69
- ),
70
- ),
71
- 'davedevelopment/hamcrest-php' =>
72
- array (
73
- 'replaced' =>
74
- array (
75
- 0 => '*',
76
- ),
77
- ),
78
- 'doctrine/instantiator' =>
79
- array (
80
- 'pretty_version' => '1.0.5',
81
- 'version' => '1.0.5.0',
82
- 'aliases' =>
83
- array (
84
- ),
85
- 'reference' => '8e884e78f9f0eb1329e445619e04456e64d8051d',
86
- ),
87
- 'guzzlehttp/guzzle' =>
88
- array (
89
- 'pretty_version' => '6.5.5',
90
- 'version' => '6.5.5.0',
91
- 'aliases' =>
92
- array (
93
- ),
94
- 'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
95
- ),
96
- 'guzzlehttp/promises' =>
97
- array (
98
- 'pretty_version' => '1.4.0',
99
- 'version' => '1.4.0.0',
100
- 'aliases' =>
101
- array (
102
- ),
103
- 'reference' => '60d379c243457e073cff02bc323a2a86cb355631',
104
- ),
105
- 'guzzlehttp/psr7' =>
106
- array (
107
- 'pretty_version' => '1.7.0',
108
- 'version' => '1.7.0.0',
109
- 'aliases' =>
110
- array (
111
- ),
112
- 'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3',
113
- ),
114
- 'hamcrest/hamcrest-php' =>
115
- array (
116
- 'pretty_version' => 'v2.0.1',
117
- 'version' => '2.0.1.0',
118
- 'aliases' =>
119
- array (
120
- ),
121
- 'reference' => '8c3d0a3f6af734494ad8f6fbbee0ba92422859f3',
122
- ),
123
- 'kodova/hamcrest-php' =>
124
- array (
125
- 'replaced' =>
126
- array (
127
- 0 => '*',
128
- ),
129
- ),
130
- 'lucatume/args' =>
131
- array (
132
- 'pretty_version' => '1.0.1.1',
133
- 'version' => '1.0.1.1',
134
- 'aliases' =>
135
- array (
136
- ),
137
- 'reference' => '9ab69f5c995813b2dfbb067100ada500ee2893e8',
138
- ),
139
- 'lucatume/function-mocker' =>
140
- array (
141
- 'pretty_version' => 'dev-test-on-windows',
142
- 'version' => 'dev-test-on-windows',
143
- 'aliases' =>
144
- array (
145
- ),
146
- 'reference' => '0383729be9af2f1dba5e553b29c899f10aba8932',
147
- ),
148
  'mihdan/cyr2lat' =>
149
  array (
150
- 'pretty_version' => '4.5.1',
151
- 'version' => '4.5.1.0',
152
- 'aliases' =>
153
- array (
154
- ),
155
- 'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
156
- ),
157
- 'mockery/mockery' =>
158
- array (
159
- 'pretty_version' => '1.3.3',
160
- 'version' => '1.3.3.0',
161
- 'aliases' =>
162
- array (
163
- ),
164
- 'reference' => '60fa2f67f6e4d3634bb4a45ff3171fa52215800d',
165
- ),
166
- 'myclabs/deep-copy' =>
167
- array (
168
- 'pretty_version' => '1.7.0',
169
- 'version' => '1.7.0.0',
170
- 'aliases' =>
171
- array (
172
- ),
173
- 'reference' => '3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e',
174
- ),
175
- 'paragonie/random_compat' =>
176
- array (
177
- 'pretty_version' => 'v9.99.100',
178
- 'version' => '9.99.100.0',
179
- 'aliases' =>
180
- array (
181
- ),
182
- 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
183
- ),
184
- 'phar-io/manifest' =>
185
- array (
186
- 'pretty_version' => '1.0.1',
187
- 'version' => '1.0.1.0',
188
- 'aliases' =>
189
- array (
190
- ),
191
- 'reference' => '2df402786ab5368a0169091f61a7c1e0eb6852d0',
192
- ),
193
- 'phar-io/version' =>
194
- array (
195
- 'pretty_version' => '1.0.1',
196
- 'version' => '1.0.1.0',
197
- 'aliases' =>
198
- array (
199
- ),
200
- 'reference' => 'a70c0ced4be299a63d32fa96d9281d03e94041df',
201
- ),
202
- 'php-coveralls/php-coveralls' =>
203
- array (
204
- 'pretty_version' => 'v2.4.2',
205
- 'version' => '2.4.2.0',
206
- 'aliases' =>
207
- array (
208
- ),
209
- 'reference' => '8a33ae229da63a0bd22dadae1512af663ce5e559',
210
- ),
211
- 'phpcompatibility/php-compatibility' =>
212
- array (
213
- 'pretty_version' => '9.3.5',
214
- 'version' => '9.3.5.0',
215
- 'aliases' =>
216
- array (
217
- ),
218
- 'reference' => '9fb324479acf6f39452e0655d2429cc0d3914243',
219
- ),
220
- 'phpcompatibility/phpcompatibility-paragonie' =>
221
- array (
222
- 'pretty_version' => '1.3.0',
223
- 'version' => '1.3.0.0',
224
- 'aliases' =>
225
- array (
226
- ),
227
- 'reference' => 'b862bc32f7e860d0b164b199bd995e690b4b191c',
228
- ),
229
- 'phpcompatibility/phpcompatibility-wp' =>
230
- array (
231
- 'pretty_version' => '2.1.0',
232
- 'version' => '2.1.0.0',
233
- 'aliases' =>
234
- array (
235
- ),
236
- 'reference' => '41bef18ba688af638b7310666db28e1ea9158b2f',
237
- ),
238
- 'phpdocumentor/reflection-common' =>
239
- array (
240
- 'pretty_version' => '1.0.1',
241
- 'version' => '1.0.1.0',
242
- 'aliases' =>
243
- array (
244
- ),
245
- 'reference' => '21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6',
246
- ),
247
- 'phpdocumentor/reflection-docblock' =>
248
- array (
249
- 'pretty_version' => '4.3.4',
250
- 'version' => '4.3.4.0',
251
- 'aliases' =>
252
- array (
253
- ),
254
- 'reference' => 'da3fd972d6bafd628114f7e7e036f45944b62e9c',
255
- ),
256
- 'phpdocumentor/type-resolver' =>
257
- array (
258
- 'pretty_version' => '0.5.1',
259
- 'version' => '0.5.1.0',
260
- 'aliases' =>
261
- array (
262
- ),
263
- 'reference' => 'cf842904952e64e703800d094cdf34e715a8a3ae',
264
- ),
265
- 'phpspec/prophecy' =>
266
- array (
267
- 'pretty_version' => 'v1.10.3',
268
- 'version' => '1.10.3.0',
269
- 'aliases' =>
270
- array (
271
- ),
272
- 'reference' => '451c3cd1418cf640de218914901e51b064abb093',
273
- ),
274
- 'phpunit/php-code-coverage' =>
275
- array (
276
- 'pretty_version' => '5.3.2',
277
- 'version' => '5.3.2.0',
278
- 'aliases' =>
279
- array (
280
- ),
281
- 'reference' => 'c89677919c5dd6d3b3852f230a663118762218ac',
282
- ),
283
- 'phpunit/php-file-iterator' =>
284
- array (
285
- 'pretty_version' => '1.4.5',
286
- 'version' => '1.4.5.0',
287
  'aliases' =>
288
  array (
289
  ),
290
- 'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4',
291
- ),
292
- 'phpunit/php-text-template' =>
293
- array (
294
- 'pretty_version' => '1.2.1',
295
- 'version' => '1.2.1.0',
296
- 'aliases' =>
297
- array (
298
- ),
299
- 'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
300
- ),
301
- 'phpunit/php-timer' =>
302
- array (
303
- 'pretty_version' => '1.0.9',
304
- 'version' => '1.0.9.0',
305
- 'aliases' =>
306
- array (
307
- ),
308
- 'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f',
309
- ),
310
- 'phpunit/php-token-stream' =>
311
- array (
312
- 'pretty_version' => '2.0.2',
313
- 'version' => '2.0.2.0',
314
- 'aliases' =>
315
- array (
316
- ),
317
- 'reference' => '791198a2c6254db10131eecfe8c06670700904db',
318
- ),
319
- 'phpunit/phpunit' =>
320
- array (
321
- 'pretty_version' => '6.5.14',
322
- 'version' => '6.5.14.0',
323
- 'aliases' =>
324
- array (
325
- ),
326
- 'reference' => 'bac23fe7ff13dbdb461481f706f0e9fe746334b7',
327
- ),
328
- 'phpunit/phpunit-mock-objects' =>
329
- array (
330
- 'pretty_version' => '5.0.10',
331
- 'version' => '5.0.10.0',
332
- 'aliases' =>
333
- array (
334
- ),
335
- 'reference' => 'cd1cf05c553ecfec36b170070573e540b67d3f1f',
336
- ),
337
- 'psr/http-message' =>
338
- array (
339
- 'pretty_version' => '1.0.1',
340
- 'version' => '1.0.1.0',
341
- 'aliases' =>
342
- array (
343
- ),
344
- 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
345
- ),
346
- 'psr/http-message-implementation' =>
347
- array (
348
- 'provided' =>
349
- array (
350
- 0 => '1.0',
351
- ),
352
- ),
353
- 'psr/log' =>
354
- array (
355
- 'pretty_version' => '1.1.3',
356
- 'version' => '1.1.3.0',
357
- 'aliases' =>
358
- array (
359
- ),
360
- 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
361
- ),
362
- 'ralouphie/getallheaders' =>
363
- array (
364
- 'pretty_version' => '3.0.3',
365
- 'version' => '3.0.3.0',
366
- 'aliases' =>
367
- array (
368
- ),
369
- 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
370
- ),
371
- 'roave/security-advisories' =>
372
- array (
373
- 'pretty_version' => 'dev-master',
374
- 'version' => 'dev-master',
375
- 'aliases' =>
376
- array (
377
- ),
378
- 'reference' => '676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6',
379
  ),
380
  'roundcube/plugin-installer' =>
381
  array (
@@ -384,105 +60,6 @@ private static $installed = array (
384
  0 => '*',
385
  ),
386
  ),
387
- 'sebastian/code-unit-reverse-lookup' =>
388
- array (
389
- 'pretty_version' => '1.0.2',
390
- 'version' => '1.0.2.0',
391
- 'aliases' =>
392
- array (
393
- ),
394
- 'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619',
395
- ),
396
- 'sebastian/comparator' =>
397
- array (
398
- 'pretty_version' => '2.1.3',
399
- 'version' => '2.1.3.0',
400
- 'aliases' =>
401
- array (
402
- ),
403
- 'reference' => '34369daee48eafb2651bea869b4b15d75ccc35f9',
404
- ),
405
- 'sebastian/diff' =>
406
- array (
407
- 'pretty_version' => '2.0.1',
408
- 'version' => '2.0.1.0',
409
- 'aliases' =>
410
- array (
411
- ),
412
- 'reference' => '347c1d8b49c5c3ee30c7040ea6fc446790e6bddd',
413
- ),
414
- 'sebastian/environment' =>
415
- array (
416
- 'pretty_version' => '3.1.0',
417
- 'version' => '3.1.0.0',
418
- 'aliases' =>
419
- array (
420
- ),
421
- 'reference' => 'cd0871b3975fb7fc44d11314fd1ee20925fce4f5',
422
- ),
423
- 'sebastian/exporter' =>
424
- array (
425
- 'pretty_version' => '3.1.3',
426
- 'version' => '3.1.3.0',
427
- 'aliases' =>
428
- array (
429
- ),
430
- 'reference' => '6b853149eab67d4da22291d36f5b0631c0fd856e',
431
- ),
432
- 'sebastian/global-state' =>
433
- array (
434
- 'pretty_version' => '2.0.0',
435
- 'version' => '2.0.0.0',
436
- 'aliases' =>
437
- array (
438
- ),
439
- 'reference' => 'e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4',
440
- ),
441
- 'sebastian/object-enumerator' =>
442
- array (
443
- 'pretty_version' => '3.0.4',
444
- 'version' => '3.0.4.0',
445
- 'aliases' =>
446
- array (
447
- ),
448
- 'reference' => 'e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2',
449
- ),
450
- 'sebastian/object-reflector' =>
451
- array (
452
- 'pretty_version' => '1.1.2',
453
- 'version' => '1.1.2.0',
454
- 'aliases' =>
455
- array (
456
- ),
457
- 'reference' => '9b8772b9cbd456ab45d4a598d2dd1a1bced6363d',
458
- ),
459
- 'sebastian/recursion-context' =>
460
- array (
461
- 'pretty_version' => '3.0.1',
462
- 'version' => '3.0.1.0',
463
- 'aliases' =>
464
- array (
465
- ),
466
- 'reference' => '367dcba38d6e1977be014dc4b22f47a484dac7fb',
467
- ),
468
- 'sebastian/resource-operations' =>
469
- array (
470
- 'pretty_version' => '1.0.0',
471
- 'version' => '1.0.0.0',
472
- 'aliases' =>
473
- array (
474
- ),
475
- 'reference' => 'ce990bb21759f94aeafd30209e8cfcdfa8bc3f52',
476
- ),
477
- 'sebastian/version' =>
478
- array (
479
- 'pretty_version' => '2.0.1',
480
- 'version' => '2.0.1.0',
481
- 'aliases' =>
482
- array (
483
- ),
484
- 'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
485
- ),
486
  'shama/baton' =>
487
  array (
488
  'replaced' =>
@@ -490,161 +67,10 @@ private static $installed = array (
490
  0 => '*',
491
  ),
492
  ),
493
- 'squizlabs/php_codesniffer' =>
494
- array (
495
- 'pretty_version' => '3.5.8',
496
- 'version' => '3.5.8.0',
497
- 'aliases' =>
498
- array (
499
- ),
500
- 'reference' => '9d583721a7157ee997f235f327de038e7ea6dac4',
501
- ),
502
- 'symfony/config' =>
503
- array (
504
- 'pretty_version' => 'v3.3.6',
505
- 'version' => '3.3.6.0',
506
- 'aliases' =>
507
- array (
508
- ),
509
- 'reference' => '54ee12b0dd60f294132cabae6f5da9573d2e5297',
510
- ),
511
- 'symfony/console' =>
512
- array (
513
- 'pretty_version' => 'v3.3.6',
514
- 'version' => '3.3.6.0',
515
- 'aliases' =>
516
- array (
517
- ),
518
- 'reference' => 'b0878233cb5c4391347e5495089c7af11b8e6201',
519
- ),
520
- 'symfony/debug' =>
521
- array (
522
- 'pretty_version' => 'v3.3.6',
523
- 'version' => '3.3.6.0',
524
- 'aliases' =>
525
- array (
526
- ),
527
- 'reference' => '7c13ae8ce1e2adbbd574fc39de7be498e1284e13',
528
- ),
529
- 'symfony/filesystem' =>
530
- array (
531
- 'pretty_version' => 'v3.3.6',
532
- 'version' => '3.3.6.0',
533
- 'aliases' =>
534
- array (
535
- ),
536
- 'reference' => '427987eb4eed764c3b6e38d52a0f87989e010676',
537
- ),
538
- 'symfony/polyfill-ctype' =>
539
- array (
540
- 'pretty_version' => 'v1.19.0',
541
- 'version' => '1.19.0.0',
542
- 'aliases' =>
543
- array (
544
- ),
545
- 'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b',
546
- ),
547
- 'symfony/polyfill-intl-idn' =>
548
- array (
549
- 'pretty_version' => 'v1.19.0',
550
- 'version' => '1.19.0.0',
551
- 'aliases' =>
552
- array (
553
- ),
554
- 'reference' => '4ad5115c0f5d5172a9fe8147675ec6de266d8826',
555
- ),
556
- 'symfony/polyfill-intl-normalizer' =>
557
- array (
558
- 'pretty_version' => 'v1.19.0',
559
- 'version' => '1.19.0.0',
560
- 'aliases' =>
561
- array (
562
- ),
563
- 'reference' => '8db0ae7936b42feb370840cf24de1a144fb0ef27',
564
- ),
565
- 'symfony/polyfill-mbstring' =>
566
- array (
567
- 'pretty_version' => 'v1.13.1',
568
- 'version' => '1.13.1.0',
569
- 'aliases' =>
570
- array (
571
- ),
572
- 'reference' => '7b4aab9743c30be783b73de055d24a39cf4b954f',
573
- ),
574
- 'symfony/polyfill-php70' =>
575
- array (
576
- 'pretty_version' => 'v1.19.0',
577
- 'version' => '1.19.0.0',
578
- 'aliases' =>
579
- array (
580
- ),
581
- 'reference' => '3fe414077251a81a1b15b1c709faf5c2fbae3d4e',
582
- ),
583
- 'symfony/polyfill-php72' =>
584
- array (
585
- 'pretty_version' => 'v1.19.0',
586
- 'version' => '1.19.0.0',
587
- 'aliases' =>
588
- array (
589
- ),
590
- 'reference' => 'beecef6b463b06954638f02378f52496cb84bacc',
591
- ),
592
- 'symfony/stopwatch' =>
593
- array (
594
- 'pretty_version' => 'v3.3.6',
595
- 'version' => '3.3.6.0',
596
- 'aliases' =>
597
- array (
598
- ),
599
- 'reference' => '602a15299dc01556013b07167d4f5d3a60e90d15',
600
- ),
601
- 'symfony/yaml' =>
602
- array (
603
- 'pretty_version' => 'v3.3.6',
604
- 'version' => '3.3.6.0',
605
- 'aliases' =>
606
- array (
607
- ),
608
- 'reference' => 'ddc23324e6cfe066f3dd34a37ff494fa80b617ed',
609
- ),
610
- 'theseer/tokenizer' =>
611
- array (
612
- 'pretty_version' => '1.1.3',
613
- 'version' => '1.1.3.0',
614
- 'aliases' =>
615
- array (
616
- ),
617
- 'reference' => '11336f6f84e16a720dae9d8e6ed5019efa85a0f9',
618
- ),
619
- 'webmozart/assert' =>
620
- array (
621
- 'pretty_version' => '1.9.1',
622
- 'version' => '1.9.1.0',
623
- 'aliases' =>
624
- array (
625
- ),
626
- 'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
627
- ),
628
- 'wp-coding-standards/wpcs' =>
629
- array (
630
- 'pretty_version' => '2.3.0',
631
- 'version' => '2.3.0.0',
632
- 'aliases' =>
633
- array (
634
- ),
635
- 'reference' => '7da1894633f168fe244afc6de00d141f27517b62',
636
- ),
637
- 'xrstf/composer-php52' =>
638
- array (
639
- 'pretty_version' => 'v1.0.20',
640
- 'version' => '1.0.20.0',
641
- 'aliases' =>
642
- array (
643
- ),
644
- 'reference' => 'bd41459d5e27df8d33057842b32377c39e97a5a8',
645
- ),
646
  ),
647
  );
 
 
648
 
649
 
650
 
@@ -654,7 +80,17 @@ private static $installed = array (
654
 
655
  public static function getInstalledPackages()
656
  {
657
- return array_keys(self::$installed['versions']);
 
 
 
 
 
 
 
 
 
 
658
  }
659
 
660
 
@@ -667,7 +103,13 @@ return array_keys(self::$installed['versions']);
667
 
668
  public static function isInstalled($packageName)
669
  {
670
- return isset(self::$installed['versions'][$packageName]);
 
 
 
 
 
 
671
  }
672
 
673
 
@@ -702,42 +144,50 @@ return $provided->matches($constraint);
702
 
703
  public static function getVersionRanges($packageName)
704
  {
705
- if (!isset(self::$installed['versions'][$packageName])) {
706
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 
707
  }
708
 
709
  $ranges = array();
710
- if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
711
- $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
712
  }
713
- if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
714
- $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
715
  }
716
- if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
717
- $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
718
  }
719
- if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
720
- $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
721
  }
722
 
723
  return implode(' || ', $ranges);
724
  }
725
 
 
 
 
726
 
727
 
728
 
729
 
730
  public static function getVersion($packageName)
731
  {
732
- if (!isset(self::$installed['versions'][$packageName])) {
733
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 
734
  }
735
 
736
- if (!isset(self::$installed['versions'][$packageName]['version'])) {
737
  return null;
738
  }
739
 
740
- return self::$installed['versions'][$packageName]['version'];
 
 
 
741
  }
742
 
743
 
@@ -746,15 +196,19 @@ return self::$installed['versions'][$packageName]['version'];
746
 
747
  public static function getPrettyVersion($packageName)
748
  {
749
- if (!isset(self::$installed['versions'][$packageName])) {
750
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 
751
  }
752
 
753
- if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
754
  return null;
755
  }
756
 
757
- return self::$installed['versions'][$packageName]['pretty_version'];
 
 
 
758
  }
759
 
760
 
@@ -763,15 +217,19 @@ return self::$installed['versions'][$packageName]['pretty_version'];
763
 
764
  public static function getReference($packageName)
765
  {
766
- if (!isset(self::$installed['versions'][$packageName])) {
767
- throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
 
768
  }
769
 
770
- if (!isset(self::$installed['versions'][$packageName]['reference'])) {
771
  return null;
772
  }
773
 
774
- return self::$installed['versions'][$packageName]['reference'];
 
 
 
775
  }
776
 
777
 
@@ -780,7 +238,9 @@ return self::$installed['versions'][$packageName]['reference'];
780
 
781
  public static function getRootPackage()
782
  {
783
- return self::$installed['root'];
 
 
784
  }
785
 
786
 
@@ -815,5 +275,33 @@ return self::$installed;
815
  public static function reload($data)
816
  {
817
  self::$installed = $data;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
818
  }
819
  }
12
 
13
  namespace Composer;
14
 
15
+ use Composer\Autoload\ClassLoader;
16
  use Composer\Semver\VersionParser;
17
 
18
 
25
  private static $installed = array (
26
  'root' =>
27
  array (
28
+ 'pretty_version' => '4.6.0',
29
+ 'version' => '4.6.0.0',
30
  'aliases' =>
31
  array (
32
  ),
33
+ 'reference' => 'ca38d58218d3a657bace3ae74192ad7ef28de1ff',
34
  'name' => 'mihdan/cyr2lat',
35
  ),
36
  'versions' =>
37
  array (
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  'composer/installers' =>
39
  array (
40
  'pretty_version' => 'v1.9.0',
44
  ),
45
  'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
46
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  'mihdan/cyr2lat' =>
48
  array (
49
+ 'pretty_version' => '4.6.0',
50
+ 'version' => '4.6.0.0',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  'aliases' =>
52
  array (
53
  ),
54
+ 'reference' => 'ca38d58218d3a657bace3ae74192ad7ef28de1ff',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  ),
56
  'roundcube/plugin-installer' =>
57
  array (
60
  0 => '*',
61
  ),
62
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  'shama/baton' =>
64
  array (
65
  'replaced' =>
67
  0 => '*',
68
  ),
69
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  ),
71
  );
72
+ private static $canGetVendors;
73
+ private static $installedByVendor = array();
74
 
75
 
76
 
80
 
81
  public static function getInstalledPackages()
82
  {
83
+ $packages = array();
84
+ foreach (self::getInstalled() as $installed) {
85
+ $packages[] = array_keys($installed['versions']);
86
+ }
87
+
88
+
89
+ if (1 === \count($packages)) {
90
+ return $packages[0];
91
+ }
92
+
93
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
94
  }
95
 
96
 
103
 
104
  public static function isInstalled($packageName)
105
  {
106
+ foreach (self::getInstalled() as $installed) {
107
+ if (isset($installed['versions'][$packageName])) {
108
+ return true;
109
+ }
110
+ }
111
+
112
+ return false;
113
  }
114
 
115
 
144
 
145
  public static function getVersionRanges($packageName)
146
  {
147
+ foreach (self::getInstalled() as $installed) {
148
+ if (!isset($installed['versions'][$packageName])) {
149
+ continue;
150
  }
151
 
152
  $ranges = array();
153
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
154
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
155
  }
156
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
157
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
158
  }
159
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
160
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
161
  }
162
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
163
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
164
  }
165
 
166
  return implode(' || ', $ranges);
167
  }
168
 
169
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
170
+ }
171
+
172
 
173
 
174
 
175
 
176
  public static function getVersion($packageName)
177
  {
178
+ foreach (self::getInstalled() as $installed) {
179
+ if (!isset($installed['versions'][$packageName])) {
180
+ continue;
181
  }
182
 
183
+ if (!isset($installed['versions'][$packageName]['version'])) {
184
  return null;
185
  }
186
 
187
+ return $installed['versions'][$packageName]['version'];
188
+ }
189
+
190
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
191
  }
192
 
193
 
196
 
197
  public static function getPrettyVersion($packageName)
198
  {
199
+ foreach (self::getInstalled() as $installed) {
200
+ if (!isset($installed['versions'][$packageName])) {
201
+ continue;
202
  }
203
 
204
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
205
  return null;
206
  }
207
 
208
+ return $installed['versions'][$packageName]['pretty_version'];
209
+ }
210
+
211
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
212
  }
213
 
214
 
217
 
218
  public static function getReference($packageName)
219
  {
220
+ foreach (self::getInstalled() as $installed) {
221
+ if (!isset($installed['versions'][$packageName])) {
222
+ continue;
223
  }
224
 
225
+ if (!isset($installed['versions'][$packageName]['reference'])) {
226
  return null;
227
  }
228
 
229
+ return $installed['versions'][$packageName]['reference'];
230
+ }
231
+
232
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
233
  }
234
 
235
 
238
 
239
  public static function getRootPackage()
240
  {
241
+ $installed = self::getInstalled();
242
+
243
+ return $installed[0]['root'];
244
  }
245
 
246
 
275
  public static function reload($data)
276
  {
277
  self::$installed = $data;
278
+ self::$installedByVendor = array();
279
+ }
280
+
281
+
282
+
283
+
284
+ private static function getInstalled()
285
+ {
286
+ if (null === self::$canGetVendors) {
287
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
288
+ }
289
+
290
+ $installed = array();
291
+
292
+ if (self::$canGetVendors) {
293
+
294
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
295
+ if (isset(self::$installedByVendor[$vendorDir])) {
296
+ $installed[] = self::$installedByVendor[$vendorDir];
297
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
298
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
299
+ }
300
+ }
301
+ }
302
+
303
+ $installed[] = self::$installed;
304
+
305
+ return $installed;
306
  }
307
  }
vendor/composer/autoload_classmap.php CHANGED
@@ -6,15 +6,12 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
10
- 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
11
  'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
12
  'Cyr_To_Lat\\ACF' => $baseDir . '/classes/class-acf.php',
13
  'Cyr_To_Lat\\Admin_Notices' => $baseDir . '/classes/class-admin-notices.php',
14
  'Cyr_To_Lat\\Conversion_Process' => $baseDir . '/classes/background-processes/class-conversion-process.php',
15
  'Cyr_To_Lat\\Conversion_Tables' => $baseDir . '/classes/class-conversion-tables.php',
16
  'Cyr_To_Lat\\Converter' => $baseDir . '/classes/class-converter.php',
17
- 'Cyr_To_Lat\\Cyr_To_Lat_TestCase' => $baseDir . '/tests/phpunit/classes/class-cyr-to-lat-testcase.php',
18
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => $baseDir . '/lib/wp-background-processing/class-wp-async-request.php',
19
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => $baseDir . '/lib/wp-background-processing/class-wp-background-process.php',
20
  'Cyr_To_Lat\\Main' => $baseDir . '/classes/class-main.php',
@@ -24,624 +21,4 @@ return array(
24
  'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => $baseDir . '/lib/polyfill-mbstring/Mbstring.php',
25
  'Cyr_To_Lat\\Term_Conversion_Process' => $baseDir . '/classes/background-processes/class-term-conversion-process.php',
26
  'Cyr_To_Lat\\WP_CLI' => $baseDir . '/classes/class-wp-cli.php',
27
- 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
28
- 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
29
- 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
30
- 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
31
- 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
32
- 'Hamcrest\\Arrays\\IsArray' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php',
33
- 'Hamcrest\\Arrays\\IsArrayContaining' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php',
34
- 'Hamcrest\\Arrays\\IsArrayContainingInAnyOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php',
35
- 'Hamcrest\\Arrays\\IsArrayContainingInOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php',
36
- 'Hamcrest\\Arrays\\IsArrayContainingKey' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php',
37
- 'Hamcrest\\Arrays\\IsArrayContainingKeyValuePair' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php',
38
- 'Hamcrest\\Arrays\\IsArrayWithSize' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php',
39
- 'Hamcrest\\Arrays\\MatchingOnce' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php',
40
- 'Hamcrest\\Arrays\\SeriesMatchingOnce' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php',
41
- 'Hamcrest\\AssertionError' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php',
42
- 'Hamcrest\\BaseDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php',
43
- 'Hamcrest\\BaseMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php',
44
- 'Hamcrest\\Collection\\IsEmptyTraversable' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php',
45
- 'Hamcrest\\Collection\\IsTraversableWithSize' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php',
46
- 'Hamcrest\\Core\\AllOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php',
47
- 'Hamcrest\\Core\\AnyOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php',
48
- 'Hamcrest\\Core\\CombinableMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php',
49
- 'Hamcrest\\Core\\DescribedAs' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php',
50
- 'Hamcrest\\Core\\Every' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php',
51
- 'Hamcrest\\Core\\HasToString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php',
52
- 'Hamcrest\\Core\\Is' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php',
53
- 'Hamcrest\\Core\\IsAnything' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php',
54
- 'Hamcrest\\Core\\IsCollectionContaining' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php',
55
- 'Hamcrest\\Core\\IsEqual' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php',
56
- 'Hamcrest\\Core\\IsIdentical' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php',
57
- 'Hamcrest\\Core\\IsInstanceOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php',
58
- 'Hamcrest\\Core\\IsNot' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php',
59
- 'Hamcrest\\Core\\IsNull' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php',
60
- 'Hamcrest\\Core\\IsSame' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php',
61
- 'Hamcrest\\Core\\IsTypeOf' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php',
62
- 'Hamcrest\\Core\\Set' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php',
63
- 'Hamcrest\\Core\\ShortcutCombination' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php',
64
- 'Hamcrest\\Description' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php',
65
- 'Hamcrest\\DiagnosingMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php',
66
- 'Hamcrest\\FeatureMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php',
67
- 'Hamcrest\\Internal\\SelfDescribingValue' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php',
68
- 'Hamcrest\\Matcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php',
69
- 'Hamcrest\\MatcherAssert' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php',
70
- 'Hamcrest\\Matchers' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php',
71
- 'Hamcrest\\NullDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php',
72
- 'Hamcrest\\Number\\IsCloseTo' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php',
73
- 'Hamcrest\\Number\\OrderingComparison' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php',
74
- 'Hamcrest\\SelfDescribing' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php',
75
- 'Hamcrest\\StringDescription' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php',
76
- 'Hamcrest\\Text\\IsEmptyString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php',
77
- 'Hamcrest\\Text\\IsEqualIgnoringCase' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php',
78
- 'Hamcrest\\Text\\IsEqualIgnoringWhiteSpace' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php',
79
- 'Hamcrest\\Text\\MatchesPattern' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php',
80
- 'Hamcrest\\Text\\StringContains' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php',
81
- 'Hamcrest\\Text\\StringContainsIgnoringCase' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php',
82
- 'Hamcrest\\Text\\StringContainsInOrder' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php',
83
- 'Hamcrest\\Text\\StringEndsWith' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php',
84
- 'Hamcrest\\Text\\StringStartsWith' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php',
85
- 'Hamcrest\\Text\\SubstringMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php',
86
- 'Hamcrest\\TypeSafeDiagnosingMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php',
87
- 'Hamcrest\\TypeSafeMatcher' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php',
88
- 'Hamcrest\\Type\\IsArray' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php',
89
- 'Hamcrest\\Type\\IsBoolean' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php',
90
- 'Hamcrest\\Type\\IsCallable' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php',
91
- 'Hamcrest\\Type\\IsDouble' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php',
92
- 'Hamcrest\\Type\\IsInteger' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php',
93
- 'Hamcrest\\Type\\IsNumeric' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php',
94
- 'Hamcrest\\Type\\IsObject' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php',
95
- 'Hamcrest\\Type\\IsResource' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php',
96
- 'Hamcrest\\Type\\IsScalar' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php',
97
- 'Hamcrest\\Type\\IsString' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php',
98
- 'Hamcrest\\Util' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php',
99
- 'Hamcrest\\Xml\\HasXPath' => $vendorDir . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php',
100
- 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
101
- 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
102
- 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
103
- 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
104
- 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
105
- 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
106
- 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
107
- 'PHPUnit\\Framework\\Constraint\\ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
108
- 'PHPUnit\\Framework\\Constraint\\Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
109
- 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
110
- 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
111
- 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
112
- 'PHPUnit\\Framework\\Constraint\\Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
113
- 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
114
- 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
115
- 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
116
- 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
117
- 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
118
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
119
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
120
- 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
121
- 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
122
- 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
123
- 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
124
- 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
125
- 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
126
- 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
127
- 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
128
- 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
129
- 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
130
- 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
131
- 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
132
- 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
133
- 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
134
- 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
135
- 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
136
- 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
137
- 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
138
- 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
139
- 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
140
- 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
141
- 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
142
- 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
143
- 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
144
- 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
145
- 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
146
- 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
147
- 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
148
- 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
149
- 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
150
- 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
151
- 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
152
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
153
- 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
154
- 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
155
- 'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
156
- 'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
157
- 'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
158
- 'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
159
- 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
160
- 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
161
- 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
162
- 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
163
- 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
164
- 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
165
- 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
166
- 'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
167
- 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
168
- 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
169
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
170
- 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
171
- 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
172
- 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
173
- 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
174
- 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
175
- 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
176
- 'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Generator.php',
177
- 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
178
- 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
179
- 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
180
- 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
181
- 'PHPUnit\\Framework\\MockObject\\Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invokable.php',
182
- 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher.php',
183
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
184
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
185
- 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
186
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
187
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
188
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
189
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
190
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
191
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
192
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
193
- 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
194
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
195
- 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
196
- 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
197
- 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
198
- 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
199
- 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub.php',
200
- 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
201
- 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
202
- 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
203
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
204
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
205
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
206
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
207
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
208
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
209
- 'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
210
- 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
211
- 'PHPUnit\\Framework\\RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
212
- 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
213
- 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
214
- 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
215
- 'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
216
- 'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
217
- 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
218
- 'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
219
- 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
220
- 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
221
- 'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
222
- 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
223
- 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
224
- 'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
225
- 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
226
- 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
227
- 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
228
- 'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
229
- 'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
230
- 'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
231
- 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
232
- 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
233
- 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
234
- 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
235
- 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
236
- 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
237
- 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
238
- 'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
239
- 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
240
- 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
241
- 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
242
- 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
243
- 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
244
- 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
245
- 'PHPUnit\\Util\\Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
246
- 'PHPUnit\\Util\\ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
247
- 'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
248
- 'PHPUnit\\Util\\Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
249
- 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
250
- 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
251
- 'PHPUnit\\Util\\Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
252
- 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
253
- 'PHPUnit\\Util\\InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
254
- 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
255
- 'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
256
- 'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
257
- 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
258
- 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
259
- 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
260
- 'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
261
- 'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
262
- 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
263
- 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
264
- 'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
265
- 'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
266
- 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
267
- 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
268
- 'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
269
- 'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
270
- 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
271
- 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
272
- 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockObject.php',
273
- 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
274
- 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
275
- 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
276
- 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
277
- 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
278
- 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
279
- 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
280
- 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
281
- 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
282
- 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
283
- 'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
284
- 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
285
- 'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
286
- 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
287
- 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
288
- 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
289
- 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
290
- 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
291
- 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
292
- 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
293
- 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
294
- 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
295
- 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
296
- 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
297
- 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
298
- 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
299
- 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
300
- 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
301
- 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
302
- 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
303
- 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
304
- 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
305
- 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
306
- 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
307
- 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
308
- 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
309
- 'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
310
- 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
311
- 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
312
- 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
313
- 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
314
- 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
315
- 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
316
- 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
317
- 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
318
- 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
319
- 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
320
- 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
321
- 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
322
- 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
323
- 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
324
- 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
325
- 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
326
- 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
327
- 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
328
- 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
329
- 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
330
- 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
331
- 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
332
- 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
333
- 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
334
- 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
335
- 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
336
- 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
337
- 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
338
- 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
339
- 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
340
- 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
341
- 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
342
- 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
343
- 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
344
- 'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
345
- 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
346
- 'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
347
- 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
348
- 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
349
- 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
350
- 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
351
- 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
352
- 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
353
- 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
354
- 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
355
- 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
356
- 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
357
- 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
358
- 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
359
- 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
360
- 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
361
- 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
362
- 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
363
- 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
364
- 'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
365
- 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
366
- 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
367
- 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
368
- 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
369
- 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
370
- 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
371
- 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
372
- 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
373
- 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
374
- 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
375
- 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
376
- 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
377
- 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
378
- 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
379
- 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
380
- 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
381
- 'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
382
- 'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
383
- 'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
384
- 'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
385
- 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
386
- 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
387
- 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
388
- 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
389
- 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
390
- 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
391
- 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
392
- 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
393
- 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
394
- 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
395
- 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
396
- 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
397
- 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
398
- 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
399
- 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
400
- 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
401
- 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
402
- 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
403
- 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
404
- 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
405
- 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
406
- 'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
407
- 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
408
- 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
409
- 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
410
- 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
411
- 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
412
- 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
413
- 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
414
- 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
415
- 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
416
- 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
417
- 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
418
- 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
419
- 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
420
- 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
421
- 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
422
- 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
423
- 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
424
- 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
425
- 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
426
- 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
427
- 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
428
- 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
429
- 'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
430
- 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
431
- 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
432
- 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
433
- 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
434
- 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
435
- 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
436
- 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
437
- 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
438
- 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
439
- 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
440
- 'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
441
- 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
442
- 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php',
443
- 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
444
- 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
445
- 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
446
- 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
447
- 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
448
- 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
449
- 'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
450
- 'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
451
- 'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
452
- 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
453
- 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
454
- 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
455
- 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
456
- 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
457
- 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
458
- 'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
459
- 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
460
- 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
461
- 'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
462
- 'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
463
- 'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
464
- 'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
465
- 'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
466
- 'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
467
- 'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
468
- 'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
469
- 'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
470
- 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
471
- 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
472
- 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
473
- 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
474
- 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
475
- 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
476
- 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
477
- 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php',
478
- 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
479
- 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php',
480
- 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
481
- 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php',
482
- 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php',
483
- 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
484
- 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php',
485
- 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php',
486
- 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
487
- 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php',
488
- 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php',
489
- 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php',
490
- 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php',
491
- 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php',
492
- 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php',
493
- 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php',
494
- 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php',
495
- 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php',
496
- 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php',
497
- 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
498
- 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
499
- 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
500
- 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php',
501
- 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php',
502
- 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php',
503
- 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php',
504
- 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php',
505
- 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
506
- 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
507
- 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php',
508
- 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
509
- 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php',
510
- 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
511
- 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
512
- 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
513
- 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
514
- 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
515
- 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
516
- 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
517
- 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php',
518
- 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php',
519
- 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
520
- 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php',
521
- 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php',
522
- 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php',
523
- 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/AbstractVersionConstraint.php',
524
- 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/AndVersionConstraintGroup.php',
525
- 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/AnyVersionConstraint.php',
526
- 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/ExactVersionConstraint.php',
527
- 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/Exception.php',
528
- 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
529
- 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/InvalidVersionException.php',
530
- 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/OrVersionConstraintGroup.php',
531
- 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
532
- 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
533
- 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
534
- 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
535
- 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php',
536
- 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/VersionConstraint.php',
537
- 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
538
- 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
539
- 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
540
- 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
541
- 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
542
- 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
543
- 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
544
- 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
545
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
546
- 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
547
- 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
548
- 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
549
- 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
550
- 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
551
- 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php',
552
- 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php',
553
- 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php',
554
- 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php',
555
- 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php',
556
- 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
557
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
558
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
559
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
560
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
561
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
562
- 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
563
- 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
564
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
565
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
566
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
567
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
568
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
569
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
570
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
571
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
572
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
573
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
574
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
575
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
576
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
577
- 'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
578
- 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
579
- 'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php',
580
- 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
581
- 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
582
- 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
583
- 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
584
- 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
585
- 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
586
- 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
587
- 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
588
- 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
589
- 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
590
- 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
591
- 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
592
- 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
593
- 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
594
- 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
595
- 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
596
- 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
597
- 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
598
- 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
599
- 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
600
- 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
601
- 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
602
- 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
603
- 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
604
- 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
605
- 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
606
- 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
607
- 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
608
- 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
609
- 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
610
- 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
611
- 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
612
- 'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php',
613
- 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
614
- 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
615
- 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
616
- 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
617
- 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php',
618
- 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
619
- 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php',
620
- 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
621
- 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
622
- 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
623
- 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
624
- 'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php',
625
- 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php',
626
- 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
627
- 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
628
- 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
629
- 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
630
- 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
631
- 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
632
- 'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
633
- 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
634
- 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
635
- 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
636
- 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php',
637
- 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php',
638
- 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php',
639
- 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
640
- 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
641
- 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
642
- 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
643
- 'WP_CLI' => $baseDir . '/tests/phpunit/stubs/class-wp-cli.php',
644
- 'WP_CLI_Command' => $baseDir . '/tests/phpunit/stubs/class-wp-cli-command.php',
645
- 'WP_Mock' => $vendorDir . '/10up/wp_mock/php/WP_Mock.php',
646
- 'cli\\progress\\Bar' => $baseDir . '/tests/phpunit/stubs/class-bar.php',
647
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
9
  'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
  'Cyr_To_Lat\\ACF' => $baseDir . '/classes/class-acf.php',
11
  'Cyr_To_Lat\\Admin_Notices' => $baseDir . '/classes/class-admin-notices.php',
12
  'Cyr_To_Lat\\Conversion_Process' => $baseDir . '/classes/background-processes/class-conversion-process.php',
13
  'Cyr_To_Lat\\Conversion_Tables' => $baseDir . '/classes/class-conversion-tables.php',
14
  'Cyr_To_Lat\\Converter' => $baseDir . '/classes/class-converter.php',
 
15
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => $baseDir . '/lib/wp-background-processing/class-wp-async-request.php',
16
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => $baseDir . '/lib/wp-background-processing/class-wp-background-process.php',
17
  'Cyr_To_Lat\\Main' => $baseDir . '/classes/class-main.php',
21
  'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => $baseDir . '/lib/polyfill-mbstring/Mbstring.php',
22
  'Cyr_To_Lat\\Term_Conversion_Process' => $baseDir . '/classes/background-processes/class-term-conversion-process.php',
23
  'Cyr_To_Lat\\WP_CLI' => $baseDir . '/classes/class-wp-cli.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  );
vendor/composer/autoload_files.php CHANGED
@@ -6,18 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
10
- '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
11
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
12
- '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
13
- '023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
14
- 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
15
- 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
16
- 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
17
- 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
18
- '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
19
- '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
20
- 'c9c849c9bb3823996cf7bfc9113fa087' => $vendorDir . '/lucatume/function-mocker/src/shims.php',
21
- 'c9175f6b4293b67ed66f5797215938f2' => $vendorDir . '/lucatume/function-mocker/src/functions.php',
22
  '344a0f93a05b8ca362c22e39586db500' => $baseDir . '/lib/polyfill-mbstring/bootstrap.php',
23
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  '344a0f93a05b8ca362c22e39586db500' => $baseDir . '/lib/polyfill-mbstring/bootstrap.php',
10
  );
vendor/composer/autoload_namespaces.php CHANGED
@@ -6,9 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'xrstf\\Composer52' => array($vendorDir . '/xrstf/composer-php52/lib'),
10
- 'tad_' => array($vendorDir . '/lucatume/args/src'),
11
- 'tad\\FunctionMocker' => array($vendorDir . '/lucatume/function-mocker/src'),
12
- 'Mockery' => array($vendorDir . '/mockery/mockery/library'),
13
- 'Arg' => array($vendorDir . '/lucatume/args/src'),
14
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
9
  );
vendor/composer/autoload_psr4.php CHANGED
@@ -6,29 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
10
- 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
11
- 'WP_Mock\\' => array($vendorDir . '/10up/wp_mock/php/WP_Mock'),
12
- 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
13
- 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'),
14
- 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
15
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
16
- 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
17
- 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
18
- 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
19
- 'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'),
20
- 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'),
21
- 'Symfony\\Component\\Debug\\' => array($vendorDir . '/symfony/debug'),
22
- 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
23
- 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'),
24
- 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
25
- 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
26
- 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
27
- 'PhpCoveralls\\' => array($vendorDir . '/php-coveralls/php-coveralls/src'),
28
- 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'),
29
- 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'),
30
- 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'),
31
- 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
32
- 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
33
  'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
34
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
10
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903', 'loadClassLoader'), true, true);
26
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInit7b83804bec66524f8ede823838ffb903::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -51,19 +51,19 @@ class ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
- $includeFiles = Composer\Autoload\ComposerStaticInit7b83804bec66524f8ede823838ffb903::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
- composerRequire7b83804bec66524f8ede823838ffb903($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
- function composerRequire7b83804bec66524f8ede823838ffb903($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit754f340405ab0e2a93b757c18525c113
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInit754f340405ab0e2a93b757c18525c113', 'loadClassLoader'), true, true);
26
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
27
+ spl_autoload_unregister(array('ComposerAutoloaderInit754f340405ab0e2a93b757c18525c113', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInit754f340405ab0e2a93b757c18525c113::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
+ $includeFiles = Composer\Autoload\ComposerStaticInit754f340405ab0e2a93b757c18525c113::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
+ composerRequire754f340405ab0e2a93b757c18525c113($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
+ function composerRequire754f340405ab0e2a93b757c18525c113($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,68 +4,13 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit7b83804bec66524f8ede823838ffb903
8
  {
9
  public static $files = array (
10
- '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
11
- '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
12
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
13
- '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
14
- '023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php',
15
- 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
16
- 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
17
- 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
18
- 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
19
- '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
20
- '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
21
- 'c9c849c9bb3823996cf7bfc9113fa087' => __DIR__ . '/..' . '/lucatume/function-mocker/src/shims.php',
22
- 'c9175f6b4293b67ed66f5797215938f2' => __DIR__ . '/..' . '/lucatume/function-mocker/src/functions.php',
23
  '344a0f93a05b8ca362c22e39586db500' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/bootstrap.php',
24
  );
25
 
26
  public static $prefixLengthsPsr4 = array (
27
- 'p' =>
28
- array (
29
- 'phpDocumentor\\Reflection\\' => 25,
30
- ),
31
- 'W' =>
32
- array (
33
- 'Webmozart\\Assert\\' => 17,
34
- 'WP_Mock\\' => 8,
35
- ),
36
- 'S' =>
37
- array (
38
- 'Symfony\\Polyfill\\Php72\\' => 23,
39
- 'Symfony\\Polyfill\\Php70\\' => 23,
40
- 'Symfony\\Polyfill\\Mbstring\\' => 26,
41
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
42
- 'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
43
- 'Symfony\\Polyfill\\Ctype\\' => 23,
44
- 'Symfony\\Component\\Yaml\\' => 23,
45
- 'Symfony\\Component\\Stopwatch\\' => 28,
46
- 'Symfony\\Component\\Filesystem\\' => 29,
47
- 'Symfony\\Component\\Debug\\' => 24,
48
- 'Symfony\\Component\\Console\\' => 26,
49
- 'Symfony\\Component\\Config\\' => 25,
50
- ),
51
- 'P' =>
52
- array (
53
- 'Psr\\Log\\' => 8,
54
- 'Psr\\Http\\Message\\' => 17,
55
- 'Prophecy\\' => 9,
56
- 'PhpCoveralls\\' => 13,
57
- ),
58
- 'G' =>
59
- array (
60
- 'GuzzleHttp\\Psr7\\' => 16,
61
- 'GuzzleHttp\\Promise\\' => 19,
62
- 'GuzzleHttp\\' => 11,
63
- ),
64
- 'D' =>
65
- array (
66
- 'Doctrine\\Instantiator\\' => 22,
67
- 'DeepCopy\\' => 9,
68
- ),
69
  'C' =>
70
  array (
71
  'Composer\\Installers\\' => 20,
@@ -73,155 +18,19 @@ class ComposerStaticInit7b83804bec66524f8ede823838ffb903
73
  );
74
 
75
  public static $prefixDirsPsr4 = array (
76
- 'phpDocumentor\\Reflection\\' =>
77
- array (
78
- 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
79
- 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
80
- 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
81
- ),
82
- 'Webmozart\\Assert\\' =>
83
- array (
84
- 0 => __DIR__ . '/..' . '/webmozart/assert/src',
85
- ),
86
- 'WP_Mock\\' =>
87
- array (
88
- 0 => __DIR__ . '/..' . '/10up/wp_mock/php/WP_Mock',
89
- ),
90
- 'Symfony\\Polyfill\\Php72\\' =>
91
- array (
92
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
93
- ),
94
- 'Symfony\\Polyfill\\Php70\\' =>
95
- array (
96
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php70',
97
- ),
98
- 'Symfony\\Polyfill\\Mbstring\\' =>
99
- array (
100
- 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
101
- ),
102
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
103
- array (
104
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
105
- ),
106
- 'Symfony\\Polyfill\\Intl\\Idn\\' =>
107
- array (
108
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
109
- ),
110
- 'Symfony\\Polyfill\\Ctype\\' =>
111
- array (
112
- 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
113
- ),
114
- 'Symfony\\Component\\Yaml\\' =>
115
- array (
116
- 0 => __DIR__ . '/..' . '/symfony/yaml',
117
- ),
118
- 'Symfony\\Component\\Stopwatch\\' =>
119
- array (
120
- 0 => __DIR__ . '/..' . '/symfony/stopwatch',
121
- ),
122
- 'Symfony\\Component\\Filesystem\\' =>
123
- array (
124
- 0 => __DIR__ . '/..' . '/symfony/filesystem',
125
- ),
126
- 'Symfony\\Component\\Debug\\' =>
127
- array (
128
- 0 => __DIR__ . '/..' . '/symfony/debug',
129
- ),
130
- 'Symfony\\Component\\Console\\' =>
131
- array (
132
- 0 => __DIR__ . '/..' . '/symfony/console',
133
- ),
134
- 'Symfony\\Component\\Config\\' =>
135
- array (
136
- 0 => __DIR__ . '/..' . '/symfony/config',
137
- ),
138
- 'Psr\\Log\\' =>
139
- array (
140
- 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
141
- ),
142
- 'Psr\\Http\\Message\\' =>
143
- array (
144
- 0 => __DIR__ . '/..' . '/psr/http-message/src',
145
- ),
146
- 'Prophecy\\' =>
147
- array (
148
- 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
149
- ),
150
- 'PhpCoveralls\\' =>
151
- array (
152
- 0 => __DIR__ . '/..' . '/php-coveralls/php-coveralls/src',
153
- ),
154
- 'GuzzleHttp\\Psr7\\' =>
155
- array (
156
- 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
157
- ),
158
- 'GuzzleHttp\\Promise\\' =>
159
- array (
160
- 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src',
161
- ),
162
- 'GuzzleHttp\\' =>
163
- array (
164
- 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src',
165
- ),
166
- 'Doctrine\\Instantiator\\' =>
167
- array (
168
- 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
169
- ),
170
- 'DeepCopy\\' =>
171
- array (
172
- 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
173
- ),
174
  'Composer\\Installers\\' =>
175
  array (
176
  0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
177
  ),
178
  );
179
 
180
- public static $prefixesPsr0 = array (
181
- 'x' =>
182
- array (
183
- 'xrstf\\Composer52' =>
184
- array (
185
- 0 => __DIR__ . '/..' . '/xrstf/composer-php52/lib',
186
- ),
187
- ),
188
- 't' =>
189
- array (
190
- 'tad_' =>
191
- array (
192
- 0 => __DIR__ . '/..' . '/lucatume/args/src',
193
- ),
194
- 'tad\\FunctionMocker' =>
195
- array (
196
- 0 => __DIR__ . '/..' . '/lucatume/function-mocker/src',
197
- ),
198
- ),
199
- 'M' =>
200
- array (
201
- 'Mockery' =>
202
- array (
203
- 0 => __DIR__ . '/..' . '/mockery/mockery/library',
204
- ),
205
- ),
206
- 'A' =>
207
- array (
208
- 'Arg' =>
209
- array (
210
- 0 => __DIR__ . '/..' . '/lucatume/args/src',
211
- ),
212
- ),
213
- );
214
-
215
  public static $classMap = array (
216
- 'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
217
- 'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
218
  'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
219
  'Cyr_To_Lat\\ACF' => __DIR__ . '/../..' . '/classes/class-acf.php',
220
  'Cyr_To_Lat\\Admin_Notices' => __DIR__ . '/../..' . '/classes/class-admin-notices.php',
221
  'Cyr_To_Lat\\Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-conversion-process.php',
222
  'Cyr_To_Lat\\Conversion_Tables' => __DIR__ . '/../..' . '/classes/class-conversion-tables.php',
223
  'Cyr_To_Lat\\Converter' => __DIR__ . '/../..' . '/classes/class-converter.php',
224
- 'Cyr_To_Lat\\Cyr_To_Lat_TestCase' => __DIR__ . '/../..' . '/tests/phpunit/classes/class-cyr-to-lat-testcase.php',
225
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-async-request.php',
226
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-background-process.php',
227
  'Cyr_To_Lat\\Main' => __DIR__ . '/../..' . '/classes/class-main.php',
@@ -231,635 +40,14 @@ class ComposerStaticInit7b83804bec66524f8ede823838ffb903
231
  'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/Mbstring.php',
232
  'Cyr_To_Lat\\Term_Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-term-conversion-process.php',
233
  'Cyr_To_Lat\\WP_CLI' => __DIR__ . '/../..' . '/classes/class-wp-cli.php',
234
- 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
235
- 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php',
236
- 'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
237
- 'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
238
- 'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
239
- 'Hamcrest\\Arrays\\IsArray' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php',
240
- 'Hamcrest\\Arrays\\IsArrayContaining' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php',
241
- 'Hamcrest\\Arrays\\IsArrayContainingInAnyOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php',
242
- 'Hamcrest\\Arrays\\IsArrayContainingInOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php',
243
- 'Hamcrest\\Arrays\\IsArrayContainingKey' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php',
244
- 'Hamcrest\\Arrays\\IsArrayContainingKeyValuePair' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php',
245
- 'Hamcrest\\Arrays\\IsArrayWithSize' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php',
246
- 'Hamcrest\\Arrays\\MatchingOnce' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php',
247
- 'Hamcrest\\Arrays\\SeriesMatchingOnce' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php',
248
- 'Hamcrest\\AssertionError' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php',
249
- 'Hamcrest\\BaseDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php',
250
- 'Hamcrest\\BaseMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php',
251
- 'Hamcrest\\Collection\\IsEmptyTraversable' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php',
252
- 'Hamcrest\\Collection\\IsTraversableWithSize' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php',
253
- 'Hamcrest\\Core\\AllOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php',
254
- 'Hamcrest\\Core\\AnyOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php',
255
- 'Hamcrest\\Core\\CombinableMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php',
256
- 'Hamcrest\\Core\\DescribedAs' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php',
257
- 'Hamcrest\\Core\\Every' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php',
258
- 'Hamcrest\\Core\\HasToString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php',
259
- 'Hamcrest\\Core\\Is' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php',
260
- 'Hamcrest\\Core\\IsAnything' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php',
261
- 'Hamcrest\\Core\\IsCollectionContaining' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php',
262
- 'Hamcrest\\Core\\IsEqual' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php',
263
- 'Hamcrest\\Core\\IsIdentical' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php',
264
- 'Hamcrest\\Core\\IsInstanceOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php',
265
- 'Hamcrest\\Core\\IsNot' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php',
266
- 'Hamcrest\\Core\\IsNull' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php',
267
- 'Hamcrest\\Core\\IsSame' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php',
268
- 'Hamcrest\\Core\\IsTypeOf' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php',
269
- 'Hamcrest\\Core\\Set' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php',
270
- 'Hamcrest\\Core\\ShortcutCombination' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php',
271
- 'Hamcrest\\Description' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php',
272
- 'Hamcrest\\DiagnosingMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php',
273
- 'Hamcrest\\FeatureMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php',
274
- 'Hamcrest\\Internal\\SelfDescribingValue' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php',
275
- 'Hamcrest\\Matcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php',
276
- 'Hamcrest\\MatcherAssert' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php',
277
- 'Hamcrest\\Matchers' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php',
278
- 'Hamcrest\\NullDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php',
279
- 'Hamcrest\\Number\\IsCloseTo' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php',
280
- 'Hamcrest\\Number\\OrderingComparison' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php',
281
- 'Hamcrest\\SelfDescribing' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php',
282
- 'Hamcrest\\StringDescription' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php',
283
- 'Hamcrest\\Text\\IsEmptyString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php',
284
- 'Hamcrest\\Text\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php',
285
- 'Hamcrest\\Text\\IsEqualIgnoringWhiteSpace' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php',
286
- 'Hamcrest\\Text\\MatchesPattern' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php',
287
- 'Hamcrest\\Text\\StringContains' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php',
288
- 'Hamcrest\\Text\\StringContainsIgnoringCase' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php',
289
- 'Hamcrest\\Text\\StringContainsInOrder' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php',
290
- 'Hamcrest\\Text\\StringEndsWith' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php',
291
- 'Hamcrest\\Text\\StringStartsWith' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php',
292
- 'Hamcrest\\Text\\SubstringMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php',
293
- 'Hamcrest\\TypeSafeDiagnosingMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php',
294
- 'Hamcrest\\TypeSafeMatcher' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php',
295
- 'Hamcrest\\Type\\IsArray' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php',
296
- 'Hamcrest\\Type\\IsBoolean' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php',
297
- 'Hamcrest\\Type\\IsCallable' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php',
298
- 'Hamcrest\\Type\\IsDouble' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php',
299
- 'Hamcrest\\Type\\IsInteger' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php',
300
- 'Hamcrest\\Type\\IsNumeric' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php',
301
- 'Hamcrest\\Type\\IsObject' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php',
302
- 'Hamcrest\\Type\\IsResource' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php',
303
- 'Hamcrest\\Type\\IsScalar' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php',
304
- 'Hamcrest\\Type\\IsString' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php',
305
- 'Hamcrest\\Util' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php',
306
- 'Hamcrest\\Xml\\HasXPath' => __DIR__ . '/..' . '/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php',
307
- 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
308
- 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
309
- 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
310
- 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
311
- 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
312
- 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
313
- 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
314
- 'PHPUnit\\Framework\\Constraint\\ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
315
- 'PHPUnit\\Framework\\Constraint\\Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
316
- 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
317
- 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
318
- 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
319
- 'PHPUnit\\Framework\\Constraint\\Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
320
- 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
321
- 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
322
- 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
323
- 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
324
- 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
325
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
326
- 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
327
- 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
328
- 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
329
- 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
330
- 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
331
- 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
332
- 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
333
- 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
334
- 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
335
- 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
336
- 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
337
- 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
338
- 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
339
- 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
340
- 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
341
- 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
342
- 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
343
- 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
344
- 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
345
- 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
346
- 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
347
- 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
348
- 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
349
- 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
350
- 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
351
- 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
352
- 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
353
- 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
354
- 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
355
- 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
356
- 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
357
- 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
358
- 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
359
- 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
360
- 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
361
- 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
362
- 'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
363
- 'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
364
- 'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
365
- 'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
366
- 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
367
- 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
368
- 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
369
- 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
370
- 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
371
- 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
372
- 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
373
- 'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
374
- 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
375
- 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
376
- 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
377
- 'PHPUnit\\Framework\\MockObject\\Builder\\Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
378
- 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
379
- 'PHPUnit\\Framework\\MockObject\\Builder\\NamespaceMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/NamespaceMatch.php',
380
- 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
381
- 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
382
- 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
383
- 'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Generator.php',
384
- 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/Invocation.php',
385
- 'PHPUnit\\Framework\\MockObject\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
386
- 'PHPUnit\\Framework\\MockObject\\Invocation\\ObjectInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/ObjectInvocation.php',
387
- 'PHPUnit\\Framework\\MockObject\\Invocation\\StaticInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/StaticInvocation.php',
388
- 'PHPUnit\\Framework\\MockObject\\Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invokable.php',
389
- 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher.php',
390
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
391
- 'PHPUnit\\Framework\\MockObject\\Matcher\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
392
- 'PHPUnit\\Framework\\MockObject\\Matcher\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
393
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
394
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
395
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
396
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
397
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
398
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
399
- 'PHPUnit\\Framework\\MockObject\\Matcher\\InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
400
- 'PHPUnit\\Framework\\MockObject\\Matcher\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
401
- 'PHPUnit\\Framework\\MockObject\\Matcher\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
402
- 'PHPUnit\\Framework\\MockObject\\Matcher\\StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
403
- 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
404
- 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/ForwardCompatibility/MockObject.php',
405
- 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
406
- 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub.php',
407
- 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
408
- 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
409
- 'PHPUnit\\Framework\\MockObject\\Stub\\MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
410
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
411
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
412
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
413
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
414
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnStub.php',
415
- 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
416
- 'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
417
- 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
418
- 'PHPUnit\\Framework\\RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
419
- 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
420
- 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
421
- 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
422
- 'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
423
- 'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
424
- 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
425
- 'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
426
- 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
427
- 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
428
- 'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
429
- 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
430
- 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
431
- 'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
432
- 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
433
- 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
434
- 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
435
- 'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
436
- 'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
437
- 'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
438
- 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
439
- 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
440
- 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
441
- 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
442
- 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
443
- 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
444
- 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
445
- 'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
446
- 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
447
- 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
448
- 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
449
- 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
450
- 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
451
- 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
452
- 'PHPUnit\\Util\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
453
- 'PHPUnit\\Util\\ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
454
- 'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
455
- 'PHPUnit\\Util\\Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
456
- 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
457
- 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
458
- 'PHPUnit\\Util\\Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
459
- 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
460
- 'PHPUnit\\Util\\InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
461
- 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
462
- 'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
463
- 'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
464
- 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
465
- 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
466
- 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
467
- 'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
468
- 'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
469
- 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
470
- 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
471
- 'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
472
- 'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
473
- 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
474
- 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
475
- 'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
476
- 'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
477
- 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
478
- 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
479
- 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockObject.php',
480
- 'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
481
- 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
482
- 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
483
- 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
484
- 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
485
- 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
486
- 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
487
- 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
488
- 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
489
- 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
490
- 'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
491
- 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
492
- 'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
493
- 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
494
- 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
495
- 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
496
- 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
497
- 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
498
- 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
499
- 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
500
- 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
501
- 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
502
- 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
503
- 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
504
- 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
505
- 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
506
- 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
507
- 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
508
- 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
509
- 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
510
- 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
511
- 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
512
- 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
513
- 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
514
- 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
515
- 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
516
- 'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
517
- 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
518
- 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
519
- 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
520
- 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
521
- 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
522
- 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
523
- 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
524
- 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
525
- 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
526
- 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
527
- 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
528
- 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
529
- 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
530
- 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
531
- 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
532
- 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
533
- 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
534
- 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
535
- 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
536
- 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
537
- 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
538
- 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
539
- 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
540
- 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
541
- 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
542
- 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
543
- 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
544
- 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
545
- 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
546
- 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
547
- 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
548
- 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
549
- 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
550
- 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
551
- 'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
552
- 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
553
- 'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
554
- 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
555
- 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
556
- 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
557
- 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
558
- 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
559
- 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
560
- 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
561
- 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
562
- 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
563
- 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
564
- 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
565
- 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
566
- 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
567
- 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
568
- 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
569
- 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
570
- 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
571
- 'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
572
- 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
573
- 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
574
- 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
575
- 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
576
- 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
577
- 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
578
- 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
579
- 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
580
- 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
581
- 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
582
- 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
583
- 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
584
- 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
585
- 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
586
- 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
587
- 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
588
- 'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
589
- 'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
590
- 'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
591
- 'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
592
- 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
593
- 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
594
- 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
595
- 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
596
- 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
597
- 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
598
- 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
599
- 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
600
- 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
601
- 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
602
- 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
603
- 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
604
- 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
605
- 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
606
- 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
607
- 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
608
- 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
609
- 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
610
- 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
611
- 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
612
- 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
613
- 'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
614
- 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
615
- 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
616
- 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
617
- 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
618
- 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
619
- 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
620
- 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
621
- 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
622
- 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
623
- 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
624
- 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
625
- 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
626
- 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
627
- 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
628
- 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
629
- 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
630
- 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
631
- 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
632
- 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
633
- 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
634
- 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
635
- 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
636
- 'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
637
- 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
638
- 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
639
- 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
640
- 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
641
- 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
642
- 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
643
- 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
644
- 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
645
- 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
646
- 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
647
- 'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
648
- 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
649
- 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php',
650
- 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
651
- 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
652
- 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
653
- 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
654
- 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
655
- 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
656
- 'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
657
- 'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
658
- 'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
659
- 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
660
- 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
661
- 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
662
- 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
663
- 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
664
- 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
665
- 'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
666
- 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
667
- 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
668
- 'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
669
- 'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
670
- 'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
671
- 'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
672
- 'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
673
- 'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
674
- 'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
675
- 'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
676
- 'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
677
- 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
678
- 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
679
- 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
680
- 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
681
- 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
682
- 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
683
- 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
684
- 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php',
685
- 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
686
- 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php',
687
- 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
688
- 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php',
689
- 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php',
690
- 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
691
- 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php',
692
- 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php',
693
- 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
694
- 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php',
695
- 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php',
696
- 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php',
697
- 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php',
698
- 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php',
699
- 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php',
700
- 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php',
701
- 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php',
702
- 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php',
703
- 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php',
704
- 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
705
- 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
706
- 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
707
- 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php',
708
- 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php',
709
- 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php',
710
- 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php',
711
- 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php',
712
- 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
713
- 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
714
- 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php',
715
- 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
716
- 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php',
717
- 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
718
- 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
719
- 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
720
- 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
721
- 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
722
- 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
723
- 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
724
- 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php',
725
- 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php',
726
- 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
727
- 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php',
728
- 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php',
729
- 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php',
730
- 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AbstractVersionConstraint.php',
731
- 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/AndVersionConstraintGroup.php',
732
- 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AnyVersionConstraint.php',
733
- 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/ExactVersionConstraint.php',
734
- 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/Exception.php',
735
- 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
736
- 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/InvalidVersionException.php',
737
- 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/OrVersionConstraintGroup.php',
738
- 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
739
- 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
740
- 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
741
- 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
742
- 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php',
743
- 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraint.php',
744
- 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
745
- 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
746
- 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
747
- 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
748
- 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
749
- 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
750
- 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
751
- 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
752
- 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
753
- 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
754
- 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
755
- 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
756
- 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
757
- 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
758
- 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php',
759
- 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php',
760
- 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php',
761
- 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php',
762
- 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php',
763
- 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
764
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
765
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
766
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
767
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
768
- 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
769
- 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
770
- 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
771
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
772
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
773
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
774
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
775
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
776
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
777
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
778
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
779
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
780
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
781
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
782
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
783
- 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
784
- 'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
785
- 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
786
- 'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php',
787
- 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
788
- 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
789
- 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
790
- 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
791
- 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
792
- 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
793
- 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
794
- 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
795
- 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
796
- 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
797
- 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
798
- 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
799
- 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
800
- 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
801
- 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
802
- 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
803
- 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
804
- 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
805
- 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
806
- 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
807
- 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
808
- 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
809
- 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
810
- 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
811
- 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
812
- 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
813
- 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
814
- 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
815
- 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
816
- 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
817
- 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
818
- 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
819
- 'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php',
820
- 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
821
- 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
822
- 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
823
- 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
824
- 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php',
825
- 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
826
- 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php',
827
- 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
828
- 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
829
- 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
830
- 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
831
- 'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php',
832
- 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php',
833
- 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
834
- 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
835
- 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
836
- 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
837
- 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
838
- 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
839
- 'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
840
- 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
841
- 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
842
- 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
843
- 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php',
844
- 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php',
845
- 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php',
846
- 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
847
- 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
848
- 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
849
- 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
850
- 'WP_CLI' => __DIR__ . '/../..' . '/tests/phpunit/stubs/class-wp-cli.php',
851
- 'WP_CLI_Command' => __DIR__ . '/../..' . '/tests/phpunit/stubs/class-wp-cli-command.php',
852
- 'WP_Mock' => __DIR__ . '/..' . '/10up/wp_mock/php/WP_Mock.php',
853
- 'cli\\progress\\Bar' => __DIR__ . '/../..' . '/tests/phpunit/stubs/class-bar.php',
854
  );
855
 
856
  public static function getInitializer(ClassLoader $loader)
857
  {
858
  return \Closure::bind(function () use ($loader) {
859
- $loader->prefixLengthsPsr4 = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$prefixLengthsPsr4;
860
- $loader->prefixDirsPsr4 = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$prefixDirsPsr4;
861
- $loader->prefixesPsr0 = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$prefixesPsr0;
862
- $loader->classMap = ComposerStaticInit7b83804bec66524f8ede823838ffb903::$classMap;
863
 
864
  }, null, ClassLoader::class);
865
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit754f340405ab0e2a93b757c18525c113
8
  {
9
  public static $files = array (
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  '344a0f93a05b8ca362c22e39586db500' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/bootstrap.php',
11
  );
12
 
13
  public static $prefixLengthsPsr4 = array (
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  'C' =>
15
  array (
16
  'Composer\\Installers\\' => 20,
18
  );
19
 
20
  public static $prefixDirsPsr4 = array (
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  'Composer\\Installers\\' =>
22
  array (
23
  0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
24
  ),
25
  );
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  public static $classMap = array (
 
 
28
  'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
29
  'Cyr_To_Lat\\ACF' => __DIR__ . '/../..' . '/classes/class-acf.php',
30
  'Cyr_To_Lat\\Admin_Notices' => __DIR__ . '/../..' . '/classes/class-admin-notices.php',
31
  'Cyr_To_Lat\\Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-conversion-process.php',
32
  'Cyr_To_Lat\\Conversion_Tables' => __DIR__ . '/../..' . '/classes/class-conversion-tables.php',
33
  'Cyr_To_Lat\\Converter' => __DIR__ . '/../..' . '/classes/class-converter.php',
 
34
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-async-request.php',
35
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-background-process.php',
36
  'Cyr_To_Lat\\Main' => __DIR__ . '/../..' . '/classes/class-main.php',
40
  'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/Mbstring.php',
41
  'Cyr_To_Lat\\Term_Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-term-conversion-process.php',
42
  'Cyr_To_Lat\\WP_CLI' => __DIR__ . '/../..' . '/classes/class-wp-cli.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  );
44
 
45
  public static function getInitializer(ClassLoader $loader)
46
  {
47
  return \Closure::bind(function () use ($loader) {
48
+ $loader->prefixLengthsPsr4 = ComposerStaticInit754f340405ab0e2a93b757c18525c113::$prefixLengthsPsr4;
49
+ $loader->prefixDirsPsr4 = ComposerStaticInit754f340405ab0e2a93b757c18525c113::$prefixDirsPsr4;
50
+ $loader->classMap = ComposerStaticInit754f340405ab0e2a93b757c18525c113::$classMap;
 
51
 
52
  }, null, ClassLoader::class);
53
  }
vendor/composer/installed.json CHANGED
@@ -1,104 +1,5 @@
1
  {
2
  "packages": [
3
- {
4
- "name": "10up/wp_mock",
5
- "version": "0.3.0",
6
- "version_normalized": "0.3.0.0",
7
- "source": {
8
- "type": "git",
9
- "url": "https://github.com/10up/wp_mock.git",
10
- "reference": "64956557e98ee4c8c56cd1e396e822adb4673714"
11
- },
12
- "dist": {
13
- "type": "zip",
14
- "url": "https://api.github.com/repos/10up/wp_mock/zipball/64956557e98ee4c8c56cd1e396e822adb4673714",
15
- "reference": "64956557e98ee4c8c56cd1e396e822adb4673714",
16
- "shasum": ""
17
- },
18
- "require": {
19
- "antecedent/patchwork": "^2.1",
20
- "mockery/mockery": "^1.0",
21
- "php": ">=7.0",
22
- "phpunit/phpunit": ">=6.0"
23
- },
24
- "require-dev": {
25
- "behat/behat": "^3.0",
26
- "satooshi/php-coveralls": "^1.0",
27
- "sebastian/comparator": ">=1.2.3"
28
- },
29
- "time": "2017-12-03T19:28:28+00:00",
30
- "type": "library",
31
- "installation-source": "dist",
32
- "autoload": {
33
- "psr-4": {
34
- "WP_Mock\\": "./php/WP_Mock"
35
- },
36
- "classmap": [
37
- "php/WP_Mock.php"
38
- ]
39
- },
40
- "notification-url": "https://packagist.org/downloads/",
41
- "license": [
42
- "GPL-2.0+"
43
- ],
44
- "description": "A mocking library to take the pain out of unit testing for WordPress",
45
- "support": {
46
- "issues": "https://github.com/10up/wp_mock/issues",
47
- "source": "https://github.com/10up/wp_mock/tree/master"
48
- },
49
- "install-path": "../10up/wp_mock"
50
- },
51
- {
52
- "name": "antecedent/patchwork",
53
- "version": "2.1.12",
54
- "version_normalized": "2.1.12.0",
55
- "source": {
56
- "type": "git",
57
- "url": "https://github.com/antecedent/patchwork.git",
58
- "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea"
59
- },
60
- "dist": {
61
- "type": "zip",
62
- "url": "https://api.github.com/repos/antecedent/patchwork/zipball/b98e046dd4c0acc34a0846604f06f6111654d9ea",
63
- "reference": "b98e046dd4c0acc34a0846604f06f6111654d9ea",
64
- "shasum": ""
65
- },
66
- "require": {
67
- "php": ">=5.4.0"
68
- },
69
- "require-dev": {
70
- "phpunit/phpunit": ">=4"
71
- },
72
- "time": "2019-12-22T17:52:09+00:00",
73
- "type": "library",
74
- "installation-source": "dist",
75
- "notification-url": "https://packagist.org/downloads/",
76
- "license": [
77
- "MIT"
78
- ],
79
- "authors": [
80
- {
81
- "name": "Ignas Rudaitis",
82
- "email": "ignas.rudaitis@gmail.com"
83
- }
84
- ],
85
- "description": "Method redefinition (monkey-patching) functionality for PHP.",
86
- "homepage": "http://patchwork2.org/",
87
- "keywords": [
88
- "aop",
89
- "aspect",
90
- "interception",
91
- "monkeypatching",
92
- "redefinition",
93
- "runkit",
94
- "testing"
95
- ],
96
- "support": {
97
- "issues": "https://github.com/antecedent/patchwork/issues",
98
- "source": "https://github.com/antecedent/patchwork/tree/2.1.12"
99
- },
100
- "install-path": "../antecedent/patchwork"
101
- },
102
  {
103
  "name": "composer/installers",
104
  "version": "v1.9.0",
@@ -242,3991 +143,8 @@
242
  }
243
  ],
244
  "install-path": "./installers"
245
- },
246
- {
247
- "name": "doctrine/instantiator",
248
- "version": "1.0.5",
249
- "version_normalized": "1.0.5.0",
250
- "source": {
251
- "type": "git",
252
- "url": "https://github.com/doctrine/instantiator.git",
253
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
254
- },
255
- "dist": {
256
- "type": "zip",
257
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
258
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
259
- "shasum": ""
260
- },
261
- "require": {
262
- "php": ">=5.3,<8.0-DEV"
263
- },
264
- "require-dev": {
265
- "athletic/athletic": "~0.1.8",
266
- "ext-pdo": "*",
267
- "ext-phar": "*",
268
- "phpunit/phpunit": "~4.0",
269
- "squizlabs/php_codesniffer": "~2.0"
270
- },
271
- "time": "2015-06-14T21:17:01+00:00",
272
- "type": "library",
273
- "extra": {
274
- "branch-alias": {
275
- "dev-master": "1.0.x-dev"
276
- }
277
- },
278
- "installation-source": "dist",
279
- "autoload": {
280
- "psr-4": {
281
- "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
282
- }
283
- },
284
- "notification-url": "https://packagist.org/downloads/",
285
- "license": [
286
- "MIT"
287
- ],
288
- "authors": [
289
- {
290
- "name": "Marco Pivetta",
291
- "email": "ocramius@gmail.com",
292
- "homepage": "http://ocramius.github.com/"
293
- }
294
- ],
295
- "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
296
- "homepage": "https://github.com/doctrine/instantiator",
297
- "keywords": [
298
- "constructor",
299
- "instantiate"
300
- ],
301
- "support": {
302
- "issues": "https://github.com/doctrine/instantiator/issues",
303
- "source": "https://github.com/doctrine/instantiator/tree/master"
304
- },
305
- "install-path": "../doctrine/instantiator"
306
- },
307
- {
308
- "name": "guzzlehttp/guzzle",
309
- "version": "6.5.5",
310
- "version_normalized": "6.5.5.0",
311
- "source": {
312
- "type": "git",
313
- "url": "https://github.com/guzzle/guzzle.git",
314
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
315
- },
316
- "dist": {
317
- "type": "zip",
318
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
319
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
320
- "shasum": ""
321
- },
322
- "require": {
323
- "ext-json": "*",
324
- "guzzlehttp/promises": "^1.0",
325
- "guzzlehttp/psr7": "^1.6.1",
326
- "php": ">=5.5",
327
- "symfony/polyfill-intl-idn": "^1.17.0"
328
- },
329
- "require-dev": {
330
- "ext-curl": "*",
331
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
332
- "psr/log": "^1.1"
333
- },
334
- "suggest": {
335
- "psr/log": "Required for using the Log middleware"
336
- },
337
- "time": "2020-06-16T21:01:06+00:00",
338
- "type": "library",
339
- "extra": {
340
- "branch-alias": {
341
- "dev-master": "6.5-dev"
342
- }
343
- },
344
- "installation-source": "dist",
345
- "autoload": {
346
- "psr-4": {
347
- "GuzzleHttp\\": "src/"
348
- },
349
- "files": [
350
- "src/functions_include.php"
351
- ]
352
- },
353
- "notification-url": "https://packagist.org/downloads/",
354
- "license": [
355
- "MIT"
356
- ],
357
- "authors": [
358
- {
359
- "name": "Michael Dowling",
360
- "email": "mtdowling@gmail.com",
361
- "homepage": "https://github.com/mtdowling"
362
- }
363
- ],
364
- "description": "Guzzle is a PHP HTTP client library",
365
- "homepage": "http://guzzlephp.org/",
366
- "keywords": [
367
- "client",
368
- "curl",
369
- "framework",
370
- "http",
371
- "http client",
372
- "rest",
373
- "web service"
374
- ],
375
- "support": {
376
- "issues": "https://github.com/guzzle/guzzle/issues",
377
- "source": "https://github.com/guzzle/guzzle/tree/6.5"
378
- },
379
- "install-path": "../guzzlehttp/guzzle"
380
- },
381
- {
382
- "name": "guzzlehttp/promises",
383
- "version": "1.4.0",
384
- "version_normalized": "1.4.0.0",
385
- "source": {
386
- "type": "git",
387
- "url": "https://github.com/guzzle/promises.git",
388
- "reference": "60d379c243457e073cff02bc323a2a86cb355631"
389
- },
390
- "dist": {
391
- "type": "zip",
392
- "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
393
- "reference": "60d379c243457e073cff02bc323a2a86cb355631",
394
- "shasum": ""
395
- },
396
- "require": {
397
- "php": ">=5.5"
398
- },
399
- "require-dev": {
400
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
401
- },
402
- "time": "2020-09-30T07:37:28+00:00",
403
- "type": "library",
404
- "extra": {
405
- "branch-alias": {
406
- "dev-master": "1.4-dev"
407
- }
408
- },
409
- "installation-source": "dist",
410
- "autoload": {
411
- "psr-4": {
412
- "GuzzleHttp\\Promise\\": "src/"
413
- },
414
- "files": [
415
- "src/functions_include.php"
416
- ]
417
- },
418
- "notification-url": "https://packagist.org/downloads/",
419
- "license": [
420
- "MIT"
421
- ],
422
- "authors": [
423
- {
424
- "name": "Michael Dowling",
425
- "email": "mtdowling@gmail.com",
426
- "homepage": "https://github.com/mtdowling"
427
- }
428
- ],
429
- "description": "Guzzle promises library",
430
- "keywords": [
431
- "promise"
432
- ],
433
- "support": {
434
- "issues": "https://github.com/guzzle/promises/issues",
435
- "source": "https://github.com/guzzle/promises/tree/1.4.0"
436
- },
437
- "install-path": "../guzzlehttp/promises"
438
- },
439
- {
440
- "name": "guzzlehttp/psr7",
441
- "version": "1.7.0",
442
- "version_normalized": "1.7.0.0",
443
- "source": {
444
- "type": "git",
445
- "url": "https://github.com/guzzle/psr7.git",
446
- "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
447
- },
448
- "dist": {
449
- "type": "zip",
450
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
451
- "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
452
- "shasum": ""
453
- },
454
- "require": {
455
- "php": ">=5.4.0",
456
- "psr/http-message": "~1.0",
457
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
458
- },
459
- "provide": {
460
- "psr/http-message-implementation": "1.0"
461
- },
462
- "require-dev": {
463
- "ext-zlib": "*",
464
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
465
- },
466
- "suggest": {
467
- "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
468
- },
469
- "time": "2020-09-30T07:37:11+00:00",
470
- "type": "library",
471
- "extra": {
472
- "branch-alias": {
473
- "dev-master": "1.7-dev"
474
- }
475
- },
476
- "installation-source": "dist",
477
- "autoload": {
478
- "psr-4": {
479
- "GuzzleHttp\\Psr7\\": "src/"
480
- },
481
- "files": [
482
- "src/functions_include.php"
483
- ]
484
- },
485
- "notification-url": "https://packagist.org/downloads/",
486
- "license": [
487
- "MIT"
488
- ],
489
- "authors": [
490
- {
491
- "name": "Michael Dowling",
492
- "email": "mtdowling@gmail.com",
493
- "homepage": "https://github.com/mtdowling"
494
- },
495
- {
496
- "name": "Tobias Schultze",
497
- "homepage": "https://github.com/Tobion"
498
- }
499
- ],
500
- "description": "PSR-7 message implementation that also provides common utility methods",
501
- "keywords": [
502
- "http",
503
- "message",
504
- "psr-7",
505
- "request",
506
- "response",
507
- "stream",
508
- "uri",
509
- "url"
510
- ],
511
- "support": {
512
- "issues": "https://github.com/guzzle/psr7/issues",
513
- "source": "https://github.com/guzzle/psr7/tree/1.7.0"
514
- },
515
- "install-path": "../guzzlehttp/psr7"
516
- },
517
- {
518
- "name": "hamcrest/hamcrest-php",
519
- "version": "v2.0.1",
520
- "version_normalized": "2.0.1.0",
521
- "source": {
522
- "type": "git",
523
- "url": "https://github.com/hamcrest/hamcrest-php.git",
524
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
525
- },
526
- "dist": {
527
- "type": "zip",
528
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
529
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
530
- "shasum": ""
531
- },
532
- "require": {
533
- "php": "^5.3|^7.0|^8.0"
534
- },
535
- "replace": {
536
- "cordoval/hamcrest-php": "*",
537
- "davedevelopment/hamcrest-php": "*",
538
- "kodova/hamcrest-php": "*"
539
- },
540
- "require-dev": {
541
- "phpunit/php-file-iterator": "^1.4 || ^2.0",
542
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
543
- },
544
- "time": "2020-07-09T08:09:16+00:00",
545
- "type": "library",
546
- "extra": {
547
- "branch-alias": {
548
- "dev-master": "2.1-dev"
549
- }
550
- },
551
- "installation-source": "dist",
552
- "autoload": {
553
- "classmap": [
554
- "hamcrest"
555
- ]
556
- },
557
- "notification-url": "https://packagist.org/downloads/",
558
- "license": [
559
- "BSD-3-Clause"
560
- ],
561
- "description": "This is the PHP port of Hamcrest Matchers",
562
- "keywords": [
563
- "test"
564
- ],
565
- "support": {
566
- "issues": "https://github.com/hamcrest/hamcrest-php/issues",
567
- "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
568
- },
569
- "install-path": "../hamcrest/hamcrest-php"
570
- },
571
- {
572
- "name": "lucatume/args",
573
- "version": "1.0.1.1",
574
- "version_normalized": "1.0.1.1",
575
- "source": {
576
- "type": "git",
577
- "url": "https://github.com/lucatume/args.git",
578
- "reference": "9ab69f5c995813b2dfbb067100ada500ee2893e8"
579
- },
580
- "dist": {
581
- "type": "zip",
582
- "url": "https://api.github.com/repos/lucatume/args/zipball/9ab69f5c995813b2dfbb067100ada500ee2893e8",
583
- "reference": "9ab69f5c995813b2dfbb067100ada500ee2893e8",
584
- "shasum": ""
585
- },
586
- "require": {
587
- "xrstf/composer-php52": "1.*"
588
- },
589
- "require-dev": {
590
- "codeception/codeception": "*"
591
- },
592
- "time": "2018-02-11T12:20:29+00:00",
593
- "type": "library",
594
- "installation-source": "dist",
595
- "autoload": {
596
- "psr-0": {
597
- "Arg": "src/",
598
- "tad_": "src/"
599
- }
600
- },
601
- "notification-url": "https://packagist.org/downloads/",
602
- "license": [
603
- "GPL-2.0"
604
- ],
605
- "authors": [
606
- {
607
- "name": "Luca Tumedei",
608
- "email": "luca@theaveragedev.com"
609
- }
610
- ],
611
- "description": "A PHP 5.2 compatible arguments handling library.",
612
- "support": {
613
- "issues": "https://github.com/lucatume/args/issues",
614
- "source": "https://github.com/lucatume/args/tree/master"
615
- },
616
- "install-path": "../lucatume/args"
617
- },
618
- {
619
- "name": "lucatume/function-mocker",
620
- "version": "dev-test-on-windows",
621
- "version_normalized": "dev-test-on-windows",
622
- "source": {
623
- "type": "git",
624
- "url": "git@github.com:kagg-design/function-mocker.git",
625
- "reference": "0383729be9af2f1dba5e553b29c899f10aba8932"
626
- },
627
- "dist": {
628
- "type": "zip",
629
- "url": "https://api.github.com/repos/kagg-design/function-mocker/zipball/0383729be9af2f1dba5e553b29c899f10aba8932",
630
- "reference": "0383729be9af2f1dba5e553b29c899f10aba8932",
631
- "shasum": ""
632
- },
633
- "require": {
634
- "antecedent/patchwork": "^2.0",
635
- "lucatume/args": "^1.0",
636
- "php": ">=5.6.0",
637
- "phpunit/phpunit": ">=5.7"
638
- },
639
- "require-dev": {
640
- "phpunit/phpunit": "^5.7"
641
- },
642
- "time": "2020-12-02T13:38:06+00:00",
643
- "type": "library",
644
- "installation-source": "source",
645
- "autoload": {
646
- "psr-0": {
647
- "tad\\FunctionMocker": "src"
648
- },
649
- "files": [
650
- "src/shims.php",
651
- "src/functions.php"
652
- ]
653
- },
654
- "license": [
655
- "GPL-2.0+"
656
- ],
657
- "authors": [
658
- {
659
- "name": "theAverageDev",
660
- "email": "luca@theaveragedev.com"
661
- }
662
- ],
663
- "description": "Function mocking with Patchwork",
664
- "install-path": "../lucatume/function-mocker"
665
- },
666
- {
667
- "name": "mockery/mockery",
668
- "version": "1.3.3",
669
- "version_normalized": "1.3.3.0",
670
- "source": {
671
- "type": "git",
672
- "url": "https://github.com/mockery/mockery.git",
673
- "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d"
674
- },
675
- "dist": {
676
- "type": "zip",
677
- "url": "https://api.github.com/repos/mockery/mockery/zipball/60fa2f67f6e4d3634bb4a45ff3171fa52215800d",
678
- "reference": "60fa2f67f6e4d3634bb4a45ff3171fa52215800d",
679
- "shasum": ""
680
- },
681
- "require": {
682
- "hamcrest/hamcrest-php": "^2.0.1",
683
- "lib-pcre": ">=7.0",
684
- "php": ">=5.6.0"
685
- },
686
- "require-dev": {
687
- "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3"
688
- },
689
- "time": "2020-08-11T18:10:21+00:00",
690
- "type": "library",
691
- "extra": {
692
- "branch-alias": {
693
- "dev-master": "1.3.x-dev"
694
- }
695
- },
696
- "installation-source": "dist",
697
- "autoload": {
698
- "psr-0": {
699
- "Mockery": "library/"
700
- }
701
- },
702
- "notification-url": "https://packagist.org/downloads/",
703
- "license": [
704
- "BSD-3-Clause"
705
- ],
706
- "authors": [
707
- {
708
- "name": "Pádraic Brady",
709
- "email": "padraic.brady@gmail.com",
710
- "homepage": "http://blog.astrumfutura.com"
711
- },
712
- {
713
- "name": "Dave Marshall",
714
- "email": "dave.marshall@atstsolutions.co.uk",
715
- "homepage": "http://davedevelopment.co.uk"
716
- }
717
- ],
718
- "description": "Mockery is a simple yet flexible PHP mock object framework",
719
- "homepage": "https://github.com/mockery/mockery",
720
- "keywords": [
721
- "BDD",
722
- "TDD",
723
- "library",
724
- "mock",
725
- "mock objects",
726
- "mockery",
727
- "stub",
728
- "test",
729
- "test double",
730
- "testing"
731
- ],
732
- "support": {
733
- "issues": "https://github.com/mockery/mockery/issues",
734
- "source": "https://github.com/mockery/mockery/tree/1.3.3"
735
- },
736
- "install-path": "../mockery/mockery"
737
- },
738
- {
739
- "name": "myclabs/deep-copy",
740
- "version": "1.7.0",
741
- "version_normalized": "1.7.0.0",
742
- "source": {
743
- "type": "git",
744
- "url": "https://github.com/myclabs/DeepCopy.git",
745
- "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
746
- },
747
- "dist": {
748
- "type": "zip",
749
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
750
- "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
751
- "shasum": ""
752
- },
753
- "require": {
754
- "php": "^5.6 || ^7.0"
755
- },
756
- "require-dev": {
757
- "doctrine/collections": "^1.0",
758
- "doctrine/common": "^2.6",
759
- "phpunit/phpunit": "^4.1"
760
- },
761
- "time": "2017-10-19T19:58:43+00:00",
762
- "type": "library",
763
- "installation-source": "dist",
764
- "autoload": {
765
- "psr-4": {
766
- "DeepCopy\\": "src/DeepCopy/"
767
- },
768
- "files": [
769
- "src/DeepCopy/deep_copy.php"
770
- ]
771
- },
772
- "notification-url": "https://packagist.org/downloads/",
773
- "license": [
774
- "MIT"
775
- ],
776
- "description": "Create deep copies (clones) of your objects",
777
- "keywords": [
778
- "clone",
779
- "copy",
780
- "duplicate",
781
- "object",
782
- "object graph"
783
- ],
784
- "support": {
785
- "issues": "https://github.com/myclabs/DeepCopy/issues",
786
- "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
787
- },
788
- "install-path": "../myclabs/deep-copy"
789
- },
790
- {
791
- "name": "paragonie/random_compat",
792
- "version": "v9.99.100",
793
- "version_normalized": "9.99.100.0",
794
- "source": {
795
- "type": "git",
796
- "url": "https://github.com/paragonie/random_compat.git",
797
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
798
- },
799
- "dist": {
800
- "type": "zip",
801
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
802
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
803
- "shasum": ""
804
- },
805
- "require": {
806
- "php": ">= 7"
807
- },
808
- "require-dev": {
809
- "phpunit/phpunit": "4.*|5.*",
810
- "vimeo/psalm": "^1"
811
- },
812
- "suggest": {
813
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
814
- },
815
- "time": "2020-10-15T08:29:30+00:00",
816
- "type": "library",
817
- "installation-source": "dist",
818
- "notification-url": "https://packagist.org/downloads/",
819
- "license": [
820
- "MIT"
821
- ],
822
- "authors": [
823
- {
824
- "name": "Paragon Initiative Enterprises",
825
- "email": "security@paragonie.com",
826
- "homepage": "https://paragonie.com"
827
- }
828
- ],
829
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
830
- "keywords": [
831
- "csprng",
832
- "polyfill",
833
- "pseudorandom",
834
- "random"
835
- ],
836
- "support": {
837
- "email": "info@paragonie.com",
838
- "issues": "https://github.com/paragonie/random_compat/issues",
839
- "source": "https://github.com/paragonie/random_compat"
840
- },
841
- "install-path": "../paragonie/random_compat"
842
- },
843
- {
844
- "name": "phar-io/manifest",
845
- "version": "1.0.1",
846
- "version_normalized": "1.0.1.0",
847
- "source": {
848
- "type": "git",
849
- "url": "https://github.com/phar-io/manifest.git",
850
- "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
851
- },
852
- "dist": {
853
- "type": "zip",
854
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
855
- "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
856
- "shasum": ""
857
- },
858
- "require": {
859
- "ext-dom": "*",
860
- "ext-phar": "*",
861
- "phar-io/version": "^1.0.1",
862
- "php": "^5.6 || ^7.0"
863
- },
864
- "time": "2017-03-05T18:14:27+00:00",
865
- "type": "library",
866
- "extra": {
867
- "branch-alias": {
868
- "dev-master": "1.0.x-dev"
869
- }
870
- },
871
- "installation-source": "dist",
872
- "autoload": {
873
- "classmap": [
874
- "src/"
875
- ]
876
- },
877
- "notification-url": "https://packagist.org/downloads/",
878
- "license": [
879
- "BSD-3-Clause"
880
- ],
881
- "authors": [
882
- {
883
- "name": "Arne Blankerts",
884
- "email": "arne@blankerts.de",
885
- "role": "Developer"
886
- },
887
- {
888
- "name": "Sebastian Heuer",
889
- "email": "sebastian@phpeople.de",
890
- "role": "Developer"
891
- },
892
- {
893
- "name": "Sebastian Bergmann",
894
- "email": "sebastian@phpunit.de",
895
- "role": "Developer"
896
- }
897
- ],
898
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
899
- "support": {
900
- "issues": "https://github.com/phar-io/manifest/issues",
901
- "source": "https://github.com/phar-io/manifest/tree/master"
902
- },
903
- "install-path": "../phar-io/manifest"
904
- },
905
- {
906
- "name": "phar-io/version",
907
- "version": "1.0.1",
908
- "version_normalized": "1.0.1.0",
909
- "source": {
910
- "type": "git",
911
- "url": "https://github.com/phar-io/version.git",
912
- "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
913
- },
914
- "dist": {
915
- "type": "zip",
916
- "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
917
- "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
918
- "shasum": ""
919
- },
920
- "require": {
921
- "php": "^5.6 || ^7.0"
922
- },
923
- "time": "2017-03-05T17:38:23+00:00",
924
- "type": "library",
925
- "installation-source": "dist",
926
- "autoload": {
927
- "classmap": [
928
- "src/"
929
- ]
930
- },
931
- "notification-url": "https://packagist.org/downloads/",
932
- "license": [
933
- "BSD-3-Clause"
934
- ],
935
- "authors": [
936
- {
937
- "name": "Arne Blankerts",
938
- "email": "arne@blankerts.de",
939
- "role": "Developer"
940
- },
941
- {
942
- "name": "Sebastian Heuer",
943
- "email": "sebastian@phpeople.de",
944
- "role": "Developer"
945
- },
946
- {
947
- "name": "Sebastian Bergmann",
948
- "email": "sebastian@phpunit.de",
949
- "role": "Developer"
950
- }
951
- ],
952
- "description": "Library for handling version information and constraints",
953
- "support": {
954
- "issues": "https://github.com/phar-io/version/issues",
955
- "source": "https://github.com/phar-io/version/tree/master"
956
- },
957
- "install-path": "../phar-io/version"
958
- },
959
- {
960
- "name": "php-coveralls/php-coveralls",
961
- "version": "v2.4.2",
962
- "version_normalized": "2.4.2.0",
963
- "source": {
964
- "type": "git",
965
- "url": "https://github.com/php-coveralls/php-coveralls.git",
966
- "reference": "8a33ae229da63a0bd22dadae1512af663ce5e559"
967
- },
968
- "dist": {
969
- "type": "zip",
970
- "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/8a33ae229da63a0bd22dadae1512af663ce5e559",
971
- "reference": "8a33ae229da63a0bd22dadae1512af663ce5e559",
972
- "shasum": ""
973
- },
974
- "require": {
975
- "ext-json": "*",
976
- "ext-simplexml": "*",
977
- "guzzlehttp/guzzle": "^6.0 || ^7.0",
978
- "php": "^5.5 || ^7.0 || ^8.0",
979
- "psr/log": "^1.0",
980
- "symfony/config": "^2.1 || ^3.0 || ^4.0 || ^5.0",
981
- "symfony/console": "^2.1 || ^3.0 || ^4.0 || ^5.0",
982
- "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0 || ^5.0",
983
- "symfony/yaml": "^2.0.5 || ^3.0 || ^4.0 || ^5.0"
984
- },
985
- "require-dev": {
986
- "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0 || ^7.0 || ^8.0 || ^9.0",
987
- "sanmai/phpunit-legacy-adapter": "^6.1 || ^8.0"
988
- },
989
- "suggest": {
990
- "symfony/http-kernel": "Allows Symfony integration"
991
- },
992
- "time": "2020-10-23T16:34:35+00:00",
993
- "bin": [
994
- "bin/php-coveralls"
995
- ],
996
- "type": "library",
997
- "installation-source": "dist",
998
- "autoload": {
999
- "psr-4": {
1000
- "PhpCoveralls\\": "src/"
1001
- }
1002
- },
1003
- "notification-url": "https://packagist.org/downloads/",
1004
- "license": [
1005
- "MIT"
1006
- ],
1007
- "authors": [
1008
- {
1009
- "name": "Kitamura Satoshi",
1010
- "email": "with.no.parachute@gmail.com",
1011
- "homepage": "https://www.facebook.com/satooshi.jp",
1012
- "role": "Original creator"
1013
- },
1014
- {
1015
- "name": "Takashi Matsuo",
1016
- "email": "tmatsuo@google.com"
1017
- },
1018
- {
1019
- "name": "Google Inc"
1020
- },
1021
- {
1022
- "name": "Dariusz Ruminski",
1023
- "email": "dariusz.ruminski@gmail.com",
1024
- "homepage": "https://github.com/keradus"
1025
- },
1026
- {
1027
- "name": "Contributors",
1028
- "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors"
1029
- }
1030
- ],
1031
- "description": "PHP client library for Coveralls API",
1032
- "homepage": "https://github.com/php-coveralls/php-coveralls",
1033
- "keywords": [
1034
- "ci",
1035
- "coverage",
1036
- "github",
1037
- "test"
1038
- ],
1039
- "support": {
1040
- "issues": "https://github.com/php-coveralls/php-coveralls/issues",
1041
- "source": "https://github.com/php-coveralls/php-coveralls/tree/v2.4.2"
1042
- },
1043
- "install-path": "../php-coveralls/php-coveralls"
1044
- },
1045
- {
1046
- "name": "phpcompatibility/php-compatibility",
1047
- "version": "9.3.5",
1048
- "version_normalized": "9.3.5.0",
1049
- "source": {
1050
- "type": "git",
1051
- "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
1052
- "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
1053
- },
1054
- "dist": {
1055
- "type": "zip",
1056
- "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
1057
- "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
1058
- "shasum": ""
1059
- },
1060
- "require": {
1061
- "php": ">=5.3",
1062
- "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
1063
- },
1064
- "conflict": {
1065
- "squizlabs/php_codesniffer": "2.6.2"
1066
- },
1067
- "require-dev": {
1068
- "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
1069
- },
1070
- "suggest": {
1071
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
1072
- "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
1073
- },
1074
- "time": "2019-12-27T09:44:58+00:00",
1075
- "type": "phpcodesniffer-standard",
1076
- "installation-source": "dist",
1077
- "notification-url": "https://packagist.org/downloads/",
1078
- "license": [
1079
- "LGPL-3.0-or-later"
1080
- ],
1081
- "authors": [
1082
- {
1083
- "name": "Wim Godden",
1084
- "homepage": "https://github.com/wimg",
1085
- "role": "lead"
1086
- },
1087
- {
1088
- "name": "Juliette Reinders Folmer",
1089
- "homepage": "https://github.com/jrfnl",
1090
- "role": "lead"
1091
- },
1092
- {
1093
- "name": "Contributors",
1094
- "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
1095
- }
1096
- ],
1097
- "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
1098
- "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
1099
- "keywords": [
1100
- "compatibility",
1101
- "phpcs",
1102
- "standards"
1103
- ],
1104
- "support": {
1105
- "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
1106
- "source": "https://github.com/PHPCompatibility/PHPCompatibility"
1107
- },
1108
- "install-path": "../phpcompatibility/php-compatibility"
1109
- },
1110
- {
1111
- "name": "phpcompatibility/phpcompatibility-paragonie",
1112
- "version": "1.3.0",
1113
- "version_normalized": "1.3.0.0",
1114
- "source": {
1115
- "type": "git",
1116
- "url": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie.git",
1117
- "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c"
1118
- },
1119
- "dist": {
1120
- "type": "zip",
1121
- "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityParagonie/zipball/b862bc32f7e860d0b164b199bd995e690b4b191c",
1122
- "reference": "b862bc32f7e860d0b164b199bd995e690b4b191c",
1123
- "shasum": ""
1124
- },
1125
- "require": {
1126
- "phpcompatibility/php-compatibility": "^9.0"
1127
- },
1128
- "require-dev": {
1129
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5",
1130
- "paragonie/random_compat": "dev-master",
1131
- "paragonie/sodium_compat": "dev-master"
1132
- },
1133
- "suggest": {
1134
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
1135
- "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
1136
- },
1137
- "time": "2019-11-04T15:17:54+00:00",
1138
- "type": "phpcodesniffer-standard",
1139
- "installation-source": "dist",
1140
- "notification-url": "https://packagist.org/downloads/",
1141
- "license": [
1142
- "LGPL-3.0-or-later"
1143
- ],
1144
- "authors": [
1145
- {
1146
- "name": "Wim Godden",
1147
- "role": "lead"
1148
- },
1149
- {
1150
- "name": "Juliette Reinders Folmer",
1151
- "role": "lead"
1152
- }
1153
- ],
1154
- "description": "A set of rulesets for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by the Paragonie polyfill libraries.",
1155
- "homepage": "http://phpcompatibility.com/",
1156
- "keywords": [
1157
- "compatibility",
1158
- "paragonie",
1159
- "phpcs",
1160
- "polyfill",
1161
- "standards"
1162
- ],
1163
- "support": {
1164
- "issues": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie/issues",
1165
- "source": "https://github.com/PHPCompatibility/PHPCompatibilityParagonie"
1166
- },
1167
- "install-path": "../phpcompatibility/phpcompatibility-paragonie"
1168
- },
1169
- {
1170
- "name": "phpcompatibility/phpcompatibility-wp",
1171
- "version": "2.1.0",
1172
- "version_normalized": "2.1.0.0",
1173
- "source": {
1174
- "type": "git",
1175
- "url": "https://github.com/PHPCompatibility/PHPCompatibilityWP.git",
1176
- "reference": "41bef18ba688af638b7310666db28e1ea9158b2f"
1177
- },
1178
- "dist": {
1179
- "type": "zip",
1180
- "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibilityWP/zipball/41bef18ba688af638b7310666db28e1ea9158b2f",
1181
- "reference": "41bef18ba688af638b7310666db28e1ea9158b2f",
1182
- "shasum": ""
1183
- },
1184
- "require": {
1185
- "phpcompatibility/php-compatibility": "^9.0",
1186
- "phpcompatibility/phpcompatibility-paragonie": "^1.0"
1187
- },
1188
- "require-dev": {
1189
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5"
1190
- },
1191
- "suggest": {
1192
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHP_CodeSniffer 'installed_paths' automatically.",
1193
- "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
1194
- },
1195
- "time": "2019-08-28T14:22:28+00:00",
1196
- "type": "phpcodesniffer-standard",
1197
- "installation-source": "dist",
1198
- "license": [
1199
- "LGPL-3.0-or-later"
1200
- ],
1201
- "authors": [
1202
- {
1203
- "name": "Wim Godden",
1204
- "role": "lead"
1205
- },
1206
- {
1207
- "name": "Juliette Reinders Folmer",
1208
- "role": "lead"
1209
- }
1210
- ],
1211
- "description": "A ruleset for PHP_CodeSniffer to check for PHP cross-version compatibility issues in projects, while accounting for polyfills provided by WordPress.",
1212
- "homepage": "http://phpcompatibility.com/",
1213
- "keywords": [
1214
- "compatibility",
1215
- "phpcs",
1216
- "standards",
1217
- "wordpress"
1218
- ],
1219
- "support": {
1220
- "issues": "https://github.com/PHPCompatibility/PHPCompatibilityWP/issues",
1221
- "source": "https://github.com/PHPCompatibility/PHPCompatibilityWP"
1222
- },
1223
- "install-path": "../phpcompatibility/phpcompatibility-wp"
1224
- },
1225
- {
1226
- "name": "phpdocumentor/reflection-common",
1227
- "version": "1.0.1",
1228
- "version_normalized": "1.0.1.0",
1229
- "source": {
1230
- "type": "git",
1231
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
1232
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
1233
- },
1234
- "dist": {
1235
- "type": "zip",
1236
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
1237
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
1238
- "shasum": ""
1239
- },
1240
- "require": {
1241
- "php": ">=5.5"
1242
- },
1243
- "require-dev": {
1244
- "phpunit/phpunit": "^4.6"
1245
- },
1246
- "time": "2017-09-11T18:02:19+00:00",
1247
- "type": "library",
1248
- "extra": {
1249
- "branch-alias": {
1250
- "dev-master": "1.0.x-dev"
1251
- }
1252
- },
1253
- "installation-source": "dist",
1254
- "autoload": {
1255
- "psr-4": {
1256
- "phpDocumentor\\Reflection\\": [
1257
- "src"
1258
- ]
1259
- }
1260
- },
1261
- "notification-url": "https://packagist.org/downloads/",
1262
- "license": [
1263
- "MIT"
1264
- ],
1265
- "authors": [
1266
- {
1267
- "name": "Jaap van Otterdijk",
1268
- "email": "opensource@ijaap.nl"
1269
- }
1270
- ],
1271
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1272
- "homepage": "http://www.phpdoc.org",
1273
- "keywords": [
1274
- "FQSEN",
1275
- "phpDocumentor",
1276
- "phpdoc",
1277
- "reflection",
1278
- "static analysis"
1279
- ],
1280
- "support": {
1281
- "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
1282
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
1283
- },
1284
- "install-path": "../phpdocumentor/reflection-common"
1285
- },
1286
- {
1287
- "name": "phpdocumentor/reflection-docblock",
1288
- "version": "4.3.4",
1289
- "version_normalized": "4.3.4.0",
1290
- "source": {
1291
- "type": "git",
1292
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1293
- "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
1294
- },
1295
- "dist": {
1296
- "type": "zip",
1297
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
1298
- "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
1299
- "shasum": ""
1300
- },
1301
- "require": {
1302
- "php": "^7.0",
1303
- "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
1304
- "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
1305
- "webmozart/assert": "^1.0"
1306
- },
1307
- "require-dev": {
1308
- "doctrine/instantiator": "^1.0.5",
1309
- "mockery/mockery": "^1.0",
1310
- "phpdocumentor/type-resolver": "0.4.*",
1311
- "phpunit/phpunit": "^6.4"
1312
- },
1313
- "time": "2019-12-28T18:55:12+00:00",
1314
- "type": "library",
1315
- "extra": {
1316
- "branch-alias": {
1317
- "dev-master": "4.x-dev"
1318
- }
1319
- },
1320
- "installation-source": "dist",
1321
- "autoload": {
1322
- "psr-4": {
1323
- "phpDocumentor\\Reflection\\": [
1324
- "src/"
1325
- ]
1326
- }
1327
- },
1328
- "notification-url": "https://packagist.org/downloads/",
1329
- "license": [
1330
- "MIT"
1331
- ],
1332
- "authors": [
1333
- {
1334
- "name": "Mike van Riel",
1335
- "email": "me@mikevanriel.com"
1336
- }
1337
- ],
1338
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1339
- "support": {
1340
- "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
1341
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x"
1342
- },
1343
- "install-path": "../phpdocumentor/reflection-docblock"
1344
- },
1345
- {
1346
- "name": "phpdocumentor/type-resolver",
1347
- "version": "0.5.1",
1348
- "version_normalized": "0.5.1.0",
1349
- "source": {
1350
- "type": "git",
1351
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
1352
- "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
1353
- },
1354
- "dist": {
1355
- "type": "zip",
1356
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
1357
- "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
1358
- "shasum": ""
1359
- },
1360
- "require": {
1361
- "php": "^7.0",
1362
- "phpdocumentor/reflection-common": "^1.0"
1363
- },
1364
- "require-dev": {
1365
- "mockery/mockery": "^1.0",
1366
- "phpunit/phpunit": "^6.4"
1367
- },
1368
- "time": "2017-12-30T13:23:38+00:00",
1369
- "type": "library",
1370
- "extra": {
1371
- "branch-alias": {
1372
- "dev-master": "1.0.x-dev"
1373
- }
1374
- },
1375
- "installation-source": "dist",
1376
- "autoload": {
1377
- "psr-4": {
1378
- "phpDocumentor\\Reflection\\": "src"
1379
- }
1380
- },
1381
- "notification-url": "https://packagist.org/downloads/",
1382
- "license": [
1383
- "MIT"
1384
- ],
1385
- "authors": [
1386
- {
1387
- "name": "Mike van Riel",
1388
- "email": "me@mikevanriel.com"
1389
- }
1390
- ],
1391
- "support": {
1392
- "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
1393
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
1394
- },
1395
- "install-path": "../phpdocumentor/type-resolver"
1396
- },
1397
- {
1398
- "name": "phpspec/prophecy",
1399
- "version": "v1.10.3",
1400
- "version_normalized": "1.10.3.0",
1401
- "source": {
1402
- "type": "git",
1403
- "url": "https://github.com/phpspec/prophecy.git",
1404
- "reference": "451c3cd1418cf640de218914901e51b064abb093"
1405
- },
1406
- "dist": {
1407
- "type": "zip",
1408
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
1409
- "reference": "451c3cd1418cf640de218914901e51b064abb093",
1410
- "shasum": ""
1411
- },
1412
- "require": {
1413
- "doctrine/instantiator": "^1.0.2",
1414
- "php": "^5.3|^7.0",
1415
- "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
1416
- "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
1417
- "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
1418
- },
1419
- "require-dev": {
1420
- "phpspec/phpspec": "^2.5 || ^3.2",
1421
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
1422
- },
1423
- "time": "2020-03-05T15:02:03+00:00",
1424
- "type": "library",
1425
- "extra": {
1426
- "branch-alias": {
1427
- "dev-master": "1.10.x-dev"
1428
- }
1429
- },
1430
- "installation-source": "dist",
1431
- "autoload": {
1432
- "psr-4": {
1433
- "Prophecy\\": "src/Prophecy"
1434
- }
1435
- },
1436
- "notification-url": "https://packagist.org/downloads/",
1437
- "license": [
1438
- "MIT"
1439
- ],
1440
- "authors": [
1441
- {
1442
- "name": "Konstantin Kudryashov",
1443
- "email": "ever.zet@gmail.com",
1444
- "homepage": "http://everzet.com"
1445
- },
1446
- {
1447
- "name": "Marcello Duarte",
1448
- "email": "marcello.duarte@gmail.com"
1449
- }
1450
- ],
1451
- "description": "Highly opinionated mocking framework for PHP 5.3+",
1452
- "homepage": "https://github.com/phpspec/prophecy",
1453
- "keywords": [
1454
- "Double",
1455
- "Dummy",
1456
- "fake",
1457
- "mock",
1458
- "spy",
1459
- "stub"
1460
- ],
1461
- "support": {
1462
- "issues": "https://github.com/phpspec/prophecy/issues",
1463
- "source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
1464
- },
1465
- "install-path": "../phpspec/prophecy"
1466
- },
1467
- {
1468
- "name": "phpunit/php-code-coverage",
1469
- "version": "5.3.2",
1470
- "version_normalized": "5.3.2.0",
1471
- "source": {
1472
- "type": "git",
1473
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1474
- "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
1475
- },
1476
- "dist": {
1477
- "type": "zip",
1478
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
1479
- "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
1480
- "shasum": ""
1481
- },
1482
- "require": {
1483
- "ext-dom": "*",
1484
- "ext-xmlwriter": "*",
1485
- "php": "^7.0",
1486
- "phpunit/php-file-iterator": "^1.4.2",
1487
- "phpunit/php-text-template": "^1.2.1",
1488
- "phpunit/php-token-stream": "^2.0.1",
1489
- "sebastian/code-unit-reverse-lookup": "^1.0.1",
1490
- "sebastian/environment": "^3.0",
1491
- "sebastian/version": "^2.0.1",
1492
- "theseer/tokenizer": "^1.1"
1493
- },
1494
- "require-dev": {
1495
- "phpunit/phpunit": "^6.0"
1496
- },
1497
- "suggest": {
1498
- "ext-xdebug": "^2.5.5"
1499
- },
1500
- "time": "2018-04-06T15:36:58+00:00",
1501
- "type": "library",
1502
- "extra": {
1503
- "branch-alias": {
1504
- "dev-master": "5.3.x-dev"
1505
- }
1506
- },
1507
- "installation-source": "dist",
1508
- "autoload": {
1509
- "classmap": [
1510
- "src/"
1511
- ]
1512
- },
1513
- "notification-url": "https://packagist.org/downloads/",
1514
- "license": [
1515
- "BSD-3-Clause"
1516
- ],
1517
- "authors": [
1518
- {
1519
- "name": "Sebastian Bergmann",
1520
- "email": "sebastian@phpunit.de",
1521
- "role": "lead"
1522
- }
1523
- ],
1524
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1525
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1526
- "keywords": [
1527
- "coverage",
1528
- "testing",
1529
- "xunit"
1530
- ],
1531
- "support": {
1532
- "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
1533
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/5.3"
1534
- },
1535
- "install-path": "../phpunit/php-code-coverage"
1536
- },
1537
- {
1538
- "name": "phpunit/php-file-iterator",
1539
- "version": "1.4.5",
1540
- "version_normalized": "1.4.5.0",
1541
- "source": {
1542
- "type": "git",
1543
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1544
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
1545
- },
1546
- "dist": {
1547
- "type": "zip",
1548
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
1549
- "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
1550
- "shasum": ""
1551
- },
1552
- "require": {
1553
- "php": ">=5.3.3"
1554
- },
1555
- "time": "2017-11-27T13:52:08+00:00",
1556
- "type": "library",
1557
- "extra": {
1558
- "branch-alias": {
1559
- "dev-master": "1.4.x-dev"
1560
- }
1561
- },
1562
- "installation-source": "dist",
1563
- "autoload": {
1564
- "classmap": [
1565
- "src/"
1566
- ]
1567
- },
1568
- "notification-url": "https://packagist.org/downloads/",
1569
- "license": [
1570
- "BSD-3-Clause"
1571
- ],
1572
- "authors": [
1573
- {
1574
- "name": "Sebastian Bergmann",
1575
- "email": "sb@sebastian-bergmann.de",
1576
- "role": "lead"
1577
- }
1578
- ],
1579
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1580
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1581
- "keywords": [
1582
- "filesystem",
1583
- "iterator"
1584
- ],
1585
- "support": {
1586
- "irc": "irc://irc.freenode.net/phpunit",
1587
- "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
1588
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
1589
- },
1590
- "install-path": "../phpunit/php-file-iterator"
1591
- },
1592
- {
1593
- "name": "phpunit/php-text-template",
1594
- "version": "1.2.1",
1595
- "version_normalized": "1.2.1.0",
1596
- "source": {
1597
- "type": "git",
1598
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
1599
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
1600
- },
1601
- "dist": {
1602
- "type": "zip",
1603
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1604
- "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1605
- "shasum": ""
1606
- },
1607
- "require": {
1608
- "php": ">=5.3.3"
1609
- },
1610
- "time": "2015-06-21T13:50:34+00:00",
1611
- "type": "library",
1612
- "installation-source": "dist",
1613
- "autoload": {
1614
- "classmap": [
1615
- "src/"
1616
- ]
1617
- },
1618
- "notification-url": "https://packagist.org/downloads/",
1619
- "license": [
1620
- "BSD-3-Clause"
1621
- ],
1622
- "authors": [
1623
- {
1624
- "name": "Sebastian Bergmann",
1625
- "email": "sebastian@phpunit.de",
1626
- "role": "lead"
1627
- }
1628
- ],
1629
- "description": "Simple template engine.",
1630
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1631
- "keywords": [
1632
- "template"
1633
- ],
1634
- "support": {
1635
- "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
1636
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
1637
- },
1638
- "install-path": "../phpunit/php-text-template"
1639
- },
1640
- {
1641
- "name": "phpunit/php-timer",
1642
- "version": "1.0.9",
1643
- "version_normalized": "1.0.9.0",
1644
- "source": {
1645
- "type": "git",
1646
- "url": "https://github.com/sebastianbergmann/php-timer.git",
1647
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
1648
- },
1649
- "dist": {
1650
- "type": "zip",
1651
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1652
- "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1653
- "shasum": ""
1654
- },
1655
- "require": {
1656
- "php": "^5.3.3 || ^7.0"
1657
- },
1658
- "require-dev": {
1659
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1660
- },
1661
- "time": "2017-02-26T11:10:40+00:00",
1662
- "type": "library",
1663
- "extra": {
1664
- "branch-alias": {
1665
- "dev-master": "1.0-dev"
1666
- }
1667
- },
1668
- "installation-source": "dist",
1669
- "autoload": {
1670
- "classmap": [
1671
- "src/"
1672
- ]
1673
- },
1674
- "notification-url": "https://packagist.org/downloads/",
1675
- "license": [
1676
- "BSD-3-Clause"
1677
- ],
1678
- "authors": [
1679
- {
1680
- "name": "Sebastian Bergmann",
1681
- "email": "sb@sebastian-bergmann.de",
1682
- "role": "lead"
1683
- }
1684
- ],
1685
- "description": "Utility class for timing",
1686
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
1687
- "keywords": [
1688
- "timer"
1689
- ],
1690
- "support": {
1691
- "issues": "https://github.com/sebastianbergmann/php-timer/issues",
1692
- "source": "https://github.com/sebastianbergmann/php-timer/tree/master"
1693
- },
1694
- "install-path": "../phpunit/php-timer"
1695
- },
1696
- {
1697
- "name": "phpunit/php-token-stream",
1698
- "version": "2.0.2",
1699
- "version_normalized": "2.0.2.0",
1700
- "source": {
1701
- "type": "git",
1702
- "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1703
- "reference": "791198a2c6254db10131eecfe8c06670700904db"
1704
- },
1705
- "dist": {
1706
- "type": "zip",
1707
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
1708
- "reference": "791198a2c6254db10131eecfe8c06670700904db",
1709
- "shasum": ""
1710
- },
1711
- "require": {
1712
- "ext-tokenizer": "*",
1713
- "php": "^7.0"
1714
- },
1715
- "require-dev": {
1716
- "phpunit/phpunit": "^6.2.4"
1717
- },
1718
- "time": "2017-11-27T05:48:46+00:00",
1719
- "type": "library",
1720
- "extra": {
1721
- "branch-alias": {
1722
- "dev-master": "2.0-dev"
1723
- }
1724
- },
1725
- "installation-source": "dist",
1726
- "autoload": {
1727
- "classmap": [
1728
- "src/"
1729
- ]
1730
- },
1731
- "notification-url": "https://packagist.org/downloads/",
1732
- "license": [
1733
- "BSD-3-Clause"
1734
- ],
1735
- "authors": [
1736
- {
1737
- "name": "Sebastian Bergmann",
1738
- "email": "sebastian@phpunit.de"
1739
- }
1740
- ],
1741
- "description": "Wrapper around PHP's tokenizer extension.",
1742
- "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1743
- "keywords": [
1744
- "tokenizer"
1745
- ],
1746
- "support": {
1747
- "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
1748
- "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
1749
- },
1750
- "abandoned": true,
1751
- "install-path": "../phpunit/php-token-stream"
1752
- },
1753
- {
1754
- "name": "phpunit/phpunit",
1755
- "version": "6.5.14",
1756
- "version_normalized": "6.5.14.0",
1757
- "source": {
1758
- "type": "git",
1759
- "url": "https://github.com/sebastianbergmann/phpunit.git",
1760
- "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7"
1761
- },
1762
- "dist": {
1763
- "type": "zip",
1764
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7",
1765
- "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7",
1766
- "shasum": ""
1767
- },
1768
- "require": {
1769
- "ext-dom": "*",
1770
- "ext-json": "*",
1771
- "ext-libxml": "*",
1772
- "ext-mbstring": "*",
1773
- "ext-xml": "*",
1774
- "myclabs/deep-copy": "^1.6.1",
1775
- "phar-io/manifest": "^1.0.1",
1776
- "phar-io/version": "^1.0",
1777
- "php": "^7.0",
1778
- "phpspec/prophecy": "^1.7",
1779
- "phpunit/php-code-coverage": "^5.3",
1780
- "phpunit/php-file-iterator": "^1.4.3",
1781
- "phpunit/php-text-template": "^1.2.1",
1782
- "phpunit/php-timer": "^1.0.9",
1783
- "phpunit/phpunit-mock-objects": "^5.0.9",
1784
- "sebastian/comparator": "^2.1",
1785
- "sebastian/diff": "^2.0",
1786
- "sebastian/environment": "^3.1",
1787
- "sebastian/exporter": "^3.1",
1788
- "sebastian/global-state": "^2.0",
1789
- "sebastian/object-enumerator": "^3.0.3",
1790
- "sebastian/resource-operations": "^1.0",
1791
- "sebastian/version": "^2.0.1"
1792
- },
1793
- "conflict": {
1794
- "phpdocumentor/reflection-docblock": "3.0.2",
1795
- "phpunit/dbunit": "<3.0"
1796
- },
1797
- "require-dev": {
1798
- "ext-pdo": "*"
1799
- },
1800
- "suggest": {
1801
- "ext-xdebug": "*",
1802
- "phpunit/php-invoker": "^1.1"
1803
- },
1804
- "time": "2019-02-01T05:22:47+00:00",
1805
- "bin": [
1806
- "phpunit"
1807
- ],
1808
- "type": "library",
1809
- "extra": {
1810
- "branch-alias": {
1811
- "dev-master": "6.5.x-dev"
1812
- }
1813
- },
1814
- "installation-source": "dist",
1815
- "autoload": {
1816
- "classmap": [
1817
- "src/"
1818
- ]
1819
- },
1820
- "notification-url": "https://packagist.org/downloads/",
1821
- "license": [
1822
- "BSD-3-Clause"
1823
- ],
1824
- "authors": [
1825
- {
1826
- "name": "Sebastian Bergmann",
1827
- "email": "sebastian@phpunit.de",
1828
- "role": "lead"
1829
- }
1830
- ],
1831
- "description": "The PHP Unit Testing framework.",
1832
- "homepage": "https://phpunit.de/",
1833
- "keywords": [
1834
- "phpunit",
1835
- "testing",
1836
- "xunit"
1837
- ],
1838
- "support": {
1839
- "issues": "https://github.com/sebastianbergmann/phpunit/issues",
1840
- "source": "https://github.com/sebastianbergmann/phpunit/tree/6.5.14"
1841
- },
1842
- "install-path": "../phpunit/phpunit"
1843
- },
1844
- {
1845
- "name": "phpunit/phpunit-mock-objects",
1846
- "version": "5.0.10",
1847
- "version_normalized": "5.0.10.0",
1848
- "source": {
1849
- "type": "git",
1850
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1851
- "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
1852
- },
1853
- "dist": {
1854
- "type": "zip",
1855
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
1856
- "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
1857
- "shasum": ""
1858
- },
1859
- "require": {
1860
- "doctrine/instantiator": "^1.0.5",
1861
- "php": "^7.0",
1862
- "phpunit/php-text-template": "^1.2.1",
1863
- "sebastian/exporter": "^3.1"
1864
- },
1865
- "conflict": {
1866
- "phpunit/phpunit": "<6.0"
1867
- },
1868
- "require-dev": {
1869
- "phpunit/phpunit": "^6.5.11"
1870
- },
1871
- "suggest": {
1872
- "ext-soap": "*"
1873
- },
1874
- "time": "2018-08-09T05:50:03+00:00",
1875
- "type": "library",
1876
- "extra": {
1877
- "branch-alias": {
1878
- "dev-master": "5.0.x-dev"
1879
- }
1880
- },
1881
- "installation-source": "dist",
1882
- "autoload": {
1883
- "classmap": [
1884
- "src/"
1885
- ]
1886
- },
1887
- "notification-url": "https://packagist.org/downloads/",
1888
- "license": [
1889
- "BSD-3-Clause"
1890
- ],
1891
- "authors": [
1892
- {
1893
- "name": "Sebastian Bergmann",
1894
- "email": "sebastian@phpunit.de",
1895
- "role": "lead"
1896
- }
1897
- ],
1898
- "description": "Mock Object library for PHPUnit",
1899
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1900
- "keywords": [
1901
- "mock",
1902
- "xunit"
1903
- ],
1904
- "support": {
1905
- "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
1906
- "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/5.0.10"
1907
- },
1908
- "abandoned": true,
1909
- "install-path": "../phpunit/phpunit-mock-objects"
1910
- },
1911
- {
1912
- "name": "psr/http-message",
1913
- "version": "1.0.1",
1914
- "version_normalized": "1.0.1.0",
1915
- "source": {
1916
- "type": "git",
1917
- "url": "https://github.com/php-fig/http-message.git",
1918
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1919
- },
1920
- "dist": {
1921
- "type": "zip",
1922
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1923
- "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1924
- "shasum": ""
1925
- },
1926
- "require": {
1927
- "php": ">=5.3.0"
1928
- },
1929
- "time": "2016-08-06T14:39:51+00:00",
1930
- "type": "library",
1931
- "extra": {
1932
- "branch-alias": {
1933
- "dev-master": "1.0.x-dev"
1934
- }
1935
- },
1936
- "installation-source": "dist",
1937
- "autoload": {
1938
- "psr-4": {
1939
- "Psr\\Http\\Message\\": "src/"
1940
- }
1941
- },
1942
- "notification-url": "https://packagist.org/downloads/",
1943
- "license": [
1944
- "MIT"
1945
- ],
1946
- "authors": [
1947
- {
1948
- "name": "PHP-FIG",
1949
- "homepage": "http://www.php-fig.org/"
1950
- }
1951
- ],
1952
- "description": "Common interface for HTTP messages",
1953
- "homepage": "https://github.com/php-fig/http-message",
1954
- "keywords": [
1955
- "http",
1956
- "http-message",
1957
- "psr",
1958
- "psr-7",
1959
- "request",
1960
- "response"
1961
- ],
1962
- "support": {
1963
- "source": "https://github.com/php-fig/http-message/tree/master"
1964
- },
1965
- "install-path": "../psr/http-message"
1966
- },
1967
- {
1968
- "name": "psr/log",
1969
- "version": "1.1.3",
1970
- "version_normalized": "1.1.3.0",
1971
- "source": {
1972
- "type": "git",
1973
- "url": "https://github.com/php-fig/log.git",
1974
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
1975
- },
1976
- "dist": {
1977
- "type": "zip",
1978
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
1979
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
1980
- "shasum": ""
1981
- },
1982
- "require": {
1983
- "php": ">=5.3.0"
1984
- },
1985
- "time": "2020-03-23T09:12:05+00:00",
1986
- "type": "library",
1987
- "extra": {
1988
- "branch-alias": {
1989
- "dev-master": "1.1.x-dev"
1990
- }
1991
- },
1992
- "installation-source": "dist",
1993
- "autoload": {
1994
- "psr-4": {
1995
- "Psr\\Log\\": "Psr/Log/"
1996
- }
1997
- },
1998
- "notification-url": "https://packagist.org/downloads/",
1999
- "license": [
2000
- "MIT"
2001
- ],
2002
- "authors": [
2003
- {
2004
- "name": "PHP-FIG",
2005
- "homepage": "http://www.php-fig.org/"
2006
- }
2007
- ],
2008
- "description": "Common interface for logging libraries",
2009
- "homepage": "https://github.com/php-fig/log",
2010
- "keywords": [
2011
- "log",
2012
- "psr",
2013
- "psr-3"
2014
- ],
2015
- "support": {
2016
- "source": "https://github.com/php-fig/log/tree/1.1.3"
2017
- },
2018
- "install-path": "../psr/log"
2019
- },
2020
- {
2021
- "name": "ralouphie/getallheaders",
2022
- "version": "3.0.3",
2023
- "version_normalized": "3.0.3.0",
2024
- "source": {
2025
- "type": "git",
2026
- "url": "https://github.com/ralouphie/getallheaders.git",
2027
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
2028
- },
2029
- "dist": {
2030
- "type": "zip",
2031
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
2032
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
2033
- "shasum": ""
2034
- },
2035
- "require": {
2036
- "php": ">=5.6"
2037
- },
2038
- "require-dev": {
2039
- "php-coveralls/php-coveralls": "^2.1",
2040
- "phpunit/phpunit": "^5 || ^6.5"
2041
- },
2042
- "time": "2019-03-08T08:55:37+00:00",
2043
- "type": "library",
2044
- "installation-source": "dist",
2045
- "autoload": {
2046
- "files": [
2047
- "src/getallheaders.php"
2048
- ]
2049
- },
2050
- "notification-url": "https://packagist.org/downloads/",
2051
- "license": [
2052
- "MIT"
2053
- ],
2054
- "authors": [
2055
- {
2056
- "name": "Ralph Khattar",
2057
- "email": "ralph.khattar@gmail.com"
2058
- }
2059
- ],
2060
- "description": "A polyfill for getallheaders.",
2061
- "support": {
2062
- "issues": "https://github.com/ralouphie/getallheaders/issues",
2063
- "source": "https://github.com/ralouphie/getallheaders/tree/develop"
2064
- },
2065
- "install-path": "../ralouphie/getallheaders"
2066
- },
2067
- {
2068
- "name": "roave/security-advisories",
2069
- "version": "dev-master",
2070
- "version_normalized": "dev-master",
2071
- "source": {
2072
- "type": "git",
2073
- "url": "https://github.com/Roave/SecurityAdvisories.git",
2074
- "reference": "676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6"
2075
- },
2076
- "dist": {
2077
- "type": "zip",
2078
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6",
2079
- "reference": "676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6",
2080
- "shasum": ""
2081
- },
2082
- "conflict": {
2083
- "3f/pygmentize": "<1.2",
2084
- "adodb/adodb-php": "<5.20.12",
2085
- "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
2086
- "amphp/artax": "<1.0.6|>=2,<2.0.6",
2087
- "amphp/http": "<1.0.1",
2088
- "amphp/http-client": ">=4,<4.4",
2089
- "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
2090
- "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
2091
- "aws/aws-sdk-php": ">=3,<3.2.1",
2092
- "bagisto/bagisto": "<0.1.5",
2093
- "barrelstrength/sprout-base-email": "<1.2.7",
2094
- "barrelstrength/sprout-forms": "<3.9",
2095
- "baserproject/basercms": ">=4,<=4.3.6|>=4.4,<4.4.1",
2096
- "bolt/bolt": "<3.7.1",
2097
- "brightlocal/phpwhois": "<=4.2.5",
2098
- "buddypress/buddypress": "<5.1.2",
2099
- "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
2100
- "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7",
2101
- "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
2102
- "cartalyst/sentry": "<=2.1.6",
2103
- "centreon/centreon": "<18.10.8|>=19,<19.4.5",
2104
- "cesnet/simplesamlphp-module-proxystatistics": "<3.1",
2105
- "codeigniter/framework": "<=3.0.6",
2106
- "composer/composer": "<=1-alpha.11",
2107
- "contao-components/mediaelement": ">=2.14.2,<2.21.1",
2108
- "contao/core": ">=2,<3.5.39",
2109
- "contao/core-bundle": ">=4,<4.4.52|>=4.5,<4.9.6|= 4.10.0",
2110
- "contao/listing-bundle": ">=4,<4.4.8",
2111
- "datadog/dd-trace": ">=0.30,<0.30.2",
2112
- "david-garcia/phpwhois": "<=4.3.1",
2113
- "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
2114
- "doctrine/annotations": ">=1,<1.2.7",
2115
- "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
2116
- "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
2117
- "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
2118
- "doctrine/doctrine-bundle": "<1.5.2",
2119
- "doctrine/doctrine-module": "<=0.7.1",
2120
- "doctrine/mongodb-odm": ">=1,<1.0.2",
2121
- "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
2122
- "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
2123
- "dolibarr/dolibarr": "<11.0.4",
2124
- "dompdf/dompdf": ">=0.6,<0.6.2",
2125
- "drupal/core": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
2126
- "drupal/drupal": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
2127
- "endroid/qr-code-bundle": "<3.4.2",
2128
- "enshrined/svg-sanitize": "<0.13.1",
2129
- "erusev/parsedown": "<1.7.2",
2130
- "ezsystems/demobundle": ">=5.4,<5.4.6.1",
2131
- "ezsystems/ez-support-tools": ">=2.2,<2.2.3",
2132
- "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1",
2133
- "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1",
2134
- "ezsystems/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4",
2135
- "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6",
2136
- "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
2137
- "ezsystems/ezplatform-kernel": ">=1,<1.0.2.1",
2138
- "ezsystems/ezplatform-user": ">=1,<1.0.1",
2139
- "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.14.2|>=6,<6.7.9.1|>=6.8,<6.13.6.3|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.7.1",
2140
- "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.2|>=2011,<2017.12.7.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.5.1",
2141
- "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
2142
- "ezsystems/repository-forms": ">=2.3,<2.3.2.1",
2143
- "ezyang/htmlpurifier": "<4.1.1",
2144
- "firebase/php-jwt": "<2",
2145
- "fooman/tcpdf": "<6.2.22",
2146
- "fossar/tcpdf-parser": "<6.2.22",
2147
- "friendsofsymfony/oauth2-php": "<1.3",
2148
- "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
2149
- "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
2150
- "friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
2151
- "fuel/core": "<1.8.1",
2152
- "getgrav/grav": "<1.7-beta.8",
2153
- "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
2154
- "gree/jose": "<=2.2",
2155
- "gregwar/rst": "<1.0.3",
2156
- "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
2157
- "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
2158
- "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
2159
- "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29|>=5.5,<=5.5.44|>=6,<6.18.34|>=7,<7.23.2",
2160
- "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
2161
- "illuminate/view": ">=7,<7.1.2",
2162
- "ivankristianto/phpwhois": "<=4.3",
2163
- "james-heinrich/getid3": "<1.9.9",
2164
- "joomla/session": "<1.3.1",
2165
- "jsmitty12/phpwhois": "<5.1",
2166
- "kazist/phpwhois": "<=4.2.6",
2167
- "kitodo/presentation": "<3.1.2",
2168
- "kreait/firebase-php": ">=3.2,<3.8.1",
2169
- "la-haute-societe/tcpdf": "<6.2.22",
2170
- "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.34|>=7,<7.23.2",
2171
- "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
2172
- "league/commonmark": "<0.18.3",
2173
- "librenms/librenms": "<1.53",
2174
- "livewire/livewire": ">2.2.4,<2.2.6",
2175
- "magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3",
2176
- "magento/magento1ce": "<1.9.4.3",
2177
- "magento/magento1ee": ">=1,<1.14.4.3",
2178
- "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2",
2179
- "marcwillmann/turn": "<0.3.3",
2180
- "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
2181
- "mittwald/typo3_forum": "<1.2.1",
2182
- "monolog/monolog": ">=1.8,<1.12",
2183
- "namshi/jose": "<2.2",
2184
- "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
2185
- "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
2186
- "nystudio107/craft-seomatic": "<3.3",
2187
- "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
2188
- "october/backend": ">=1.0.319,<1.0.470",
2189
- "october/cms": "= 1.0.469|>=1.0.319,<1.0.469",
2190
- "october/october": ">=1.0.319,<1.0.466",
2191
- "october/rain": ">=1.0.319,<1.0.468",
2192
- "onelogin/php-saml": "<2.10.4",
2193
- "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
2194
- "openid/php-openid": "<2.3",
2195
- "openmage/magento-lts": "<19.4.8|>=20,<20.0.4",
2196
- "orchid/platform": ">=9,<9.4.4",
2197
- "oro/crm": ">=1.7,<1.7.4",
2198
- "oro/platform": ">=1.7,<1.7.4",
2199
- "padraic/humbug_get_contents": "<1.1.2",
2200
- "pagarme/pagarme-php": ">=0,<3",
2201
- "paragonie/random_compat": "<2",
2202
- "passbolt/passbolt_api": "<2.11",
2203
- "paypal/merchant-sdk-php": "<3.12",
2204
- "pear/archive_tar": "<1.4.11",
2205
- "personnummer/personnummer": "<3.0.2",
2206
- "phpfastcache/phpfastcache": ">=5,<5.0.13",
2207
- "phpmailer/phpmailer": "<6.1.6",
2208
- "phpmussel/phpmussel": ">=1,<1.6",
2209
- "phpmyadmin/phpmyadmin": "<4.9.6|>=5,<5.0.3",
2210
- "phpoffice/phpexcel": "<1.8.2",
2211
- "phpoffice/phpspreadsheet": "<1.8",
2212
- "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
2213
- "phpwhois/phpwhois": "<=4.2.5",
2214
- "phpxmlrpc/extras": "<0.6.1",
2215
- "pimcore/pimcore": "<6.3",
2216
- "pocketmine/pocketmine-mp": "<3.15.4",
2217
- "prestashop/autoupgrade": ">=4,<4.10.1",
2218
- "prestashop/contactform": ">1.0.1,<4.3",
2219
- "prestashop/gamification": "<2.3.2",
2220
- "prestashop/productcomments": ">=4,<4.2",
2221
- "prestashop/ps_facetedsearch": "<3.4.1",
2222
- "privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2",
2223
- "propel/propel": ">=2-alpha.1,<=2-alpha.7",
2224
- "propel/propel1": ">=1,<=1.7.1",
2225
- "pterodactyl/panel": "<0.7.19|>=1-rc.0,<=1-rc.6",
2226
- "pusher/pusher-php-server": "<2.2.1",
2227
- "rainlab/debugbar-plugin": "<3.1",
2228
- "robrichards/xmlseclibs": "<3.0.4",
2229
- "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
2230
- "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
2231
- "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
2232
- "sensiolabs/connect": "<4.2.3",
2233
- "serluck/phpwhois": "<=4.2.6",
2234
- "shopware/core": "<=6.3.2",
2235
- "shopware/platform": "<=6.3.2",
2236
- "shopware/shopware": "<5.6.9",
2237
- "silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1",
2238
- "silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2",
2239
- "silverstripe/cms": "<4.3.6|>=4.4,<4.4.4",
2240
- "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
2241
- "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
2242
- "silverstripe/framework": "<4.4.7|>=4.5,<4.5.4",
2243
- "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2|>=3.2,<3.2.4",
2244
- "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
2245
- "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
2246
- "silverstripe/subsites": ">=2,<2.1.1",
2247
- "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
2248
- "silverstripe/userforms": "<3",
2249
- "simple-updates/phpwhois": "<=1",
2250
- "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4",
2251
- "simplesamlphp/simplesamlphp": "<1.18.6",
2252
- "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
2253
- "simplito/elliptic-php": "<1.0.6",
2254
- "slim/slim": "<2.6",
2255
- "smarty/smarty": "<3.1.33",
2256
- "socalnick/scn-social-auth": "<1.15.2",
2257
- "spoonity/tcpdf": "<6.2.22",
2258
- "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
2259
- "ssddanbrown/bookstack": "<0.29.2",
2260
- "stormpath/sdk": ">=0,<9.9.99",
2261
- "studio-42/elfinder": "<2.1.49",
2262
- "sulu/sulu": "<1.6.34|>=2,<2.0.10|>=2.1,<2.1.1",
2263
- "swiftmailer/swiftmailer": ">=4,<5.4.5",
2264
- "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
2265
- "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
2266
- "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
2267
- "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
2268
- "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3",
2269
- "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
2270
- "symbiote/silverstripe-versionedfiles": "<=2.0.3",
2271
- "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
2272
- "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
2273
- "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
2274
- "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
2275
- "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
2276
- "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
2277
- "symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
2278
- "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
2279
- "symfony/mime": ">=4.3,<4.3.8",
2280
- "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
2281
- "symfony/polyfill": ">=1,<1.10",
2282
- "symfony/polyfill-php55": ">=1,<1.10",
2283
- "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
2284
- "symfony/routing": ">=2,<2.0.19",
2285
- "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=4.4,<4.4.7|>=5,<5.0.7",
2286
- "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
2287
- "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7",
2288
- "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
2289
- "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
2290
- "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
2291
- "symfony/serializer": ">=2,<2.0.11",
2292
- "symfony/symfony": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
2293
- "symfony/translation": ">=2,<2.0.17",
2294
- "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
2295
- "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
2296
- "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
2297
- "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
2298
- "t3g/svg-sanitizer": "<1.0.3",
2299
- "tecnickcom/tcpdf": "<6.2.22",
2300
- "thelia/backoffice-default-template": ">=2.1,<2.1.2",
2301
- "thelia/thelia": ">=2.1-beta.1,<2.1.3",
2302
- "theonedemon/phpwhois": "<=4.2.5",
2303
- "titon/framework": ">=0,<9.9.99",
2304
- "truckersmp/phpwhois": "<=4.3.1",
2305
- "twig/twig": "<1.38|>=2,<2.7",
2306
- "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
2307
- "typo3/cms-core": ">=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
2308
- "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5",
2309
- "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
2310
- "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
2311
- "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
2312
- "ua-parser/uap-php": "<3.8",
2313
- "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
2314
- "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
2315
- "wallabag/tcpdf": "<6.2.22",
2316
- "willdurand/js-translation-bundle": "<2.1.1",
2317
- "yii2mod/yii2-cms": "<1.9.2",
2318
- "yiisoft/yii": ">=1.1.14,<1.1.15",
2319
- "yiisoft/yii2": "<2.0.38",
2320
- "yiisoft/yii2-bootstrap": "<2.0.4",
2321
- "yiisoft/yii2-dev": "<2.0.15",
2322
- "yiisoft/yii2-elasticsearch": "<2.0.5",
2323
- "yiisoft/yii2-gii": "<2.0.4",
2324
- "yiisoft/yii2-jui": "<2.0.4",
2325
- "yiisoft/yii2-redis": "<2.0.8",
2326
- "yourls/yourls": "<1.7.4",
2327
- "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
2328
- "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
2329
- "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
2330
- "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
2331
- "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
2332
- "zendframework/zend-diactoros": ">=1,<1.8.4",
2333
- "zendframework/zend-feed": ">=1,<2.10.3",
2334
- "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
2335
- "zendframework/zend-http": ">=1,<2.8.1",
2336
- "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
2337
- "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
2338
- "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
2339
- "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
2340
- "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
2341
- "zendframework/zend-validator": ">=2.3,<2.3.6",
2342
- "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
2343
- "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
2344
- "zendframework/zendframework": "<2.5.1",
2345
- "zendframework/zendframework1": "<1.12.20",
2346
- "zendframework/zendopenid": ">=2,<2.0.2",
2347
- "zendframework/zendxml": ">=1,<1.0.1",
2348
- "zetacomponents/mail": "<1.8.2",
2349
- "zf-commons/zfc-user": "<1.2.2",
2350
- "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
2351
- "zfr/zfr-oauth2-server-module": "<0.1.2"
2352
- },
2353
- "time": "2020-12-02T06:02:50+00:00",
2354
- "type": "metapackage",
2355
- "notification-url": "https://packagist.org/downloads/",
2356
- "license": [
2357
- "MIT"
2358
- ],
2359
- "authors": [
2360
- {
2361
- "name": "Marco Pivetta",
2362
- "email": "ocramius@gmail.com",
2363
- "role": "maintainer"
2364
- },
2365
- {
2366
- "name": "Ilya Tribusean",
2367
- "email": "slash3b@gmail.com",
2368
- "role": "maintainer"
2369
- }
2370
- ],
2371
- "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
2372
- "support": {
2373
- "issues": "https://github.com/Roave/SecurityAdvisories/issues",
2374
- "source": "https://github.com/Roave/SecurityAdvisories/tree/latest"
2375
- },
2376
- "funding": [
2377
- {
2378
- "url": "https://github.com/Ocramius",
2379
- "type": "github"
2380
- },
2381
- {
2382
- "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
2383
- "type": "tidelift"
2384
- }
2385
- ],
2386
- "install-path": null
2387
- },
2388
- {
2389
- "name": "sebastian/code-unit-reverse-lookup",
2390
- "version": "1.0.2",
2391
- "version_normalized": "1.0.2.0",
2392
- "source": {
2393
- "type": "git",
2394
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
2395
- "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
2396
- },
2397
- "dist": {
2398
- "type": "zip",
2399
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
2400
- "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
2401
- "shasum": ""
2402
- },
2403
- "require": {
2404
- "php": ">=5.6"
2405
- },
2406
- "require-dev": {
2407
- "phpunit/phpunit": "^8.5"
2408
- },
2409
- "time": "2020-11-30T08:15:22+00:00",
2410
- "type": "library",
2411
- "extra": {
2412
- "branch-alias": {
2413
- "dev-master": "1.0.x-dev"
2414
- }
2415
- },
2416
- "installation-source": "dist",
2417
- "autoload": {
2418
- "classmap": [
2419
- "src/"
2420
- ]
2421
- },
2422
- "notification-url": "https://packagist.org/downloads/",
2423
- "license": [
2424
- "BSD-3-Clause"
2425
- ],
2426
- "authors": [
2427
- {
2428
- "name": "Sebastian Bergmann",
2429
- "email": "sebastian@phpunit.de"
2430
- }
2431
- ],
2432
- "description": "Looks up which function or method a line of code belongs to",
2433
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
2434
- "support": {
2435
- "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
2436
- "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
2437
- },
2438
- "funding": [
2439
- {
2440
- "url": "https://github.com/sebastianbergmann",
2441
- "type": "github"
2442
- }
2443
- ],
2444
- "install-path": "../sebastian/code-unit-reverse-lookup"
2445
- },
2446
- {
2447
- "name": "sebastian/comparator",
2448
- "version": "2.1.3",
2449
- "version_normalized": "2.1.3.0",
2450
- "source": {
2451
- "type": "git",
2452
- "url": "https://github.com/sebastianbergmann/comparator.git",
2453
- "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
2454
- },
2455
- "dist": {
2456
- "type": "zip",
2457
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
2458
- "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
2459
- "shasum": ""
2460
- },
2461
- "require": {
2462
- "php": "^7.0",
2463
- "sebastian/diff": "^2.0 || ^3.0",
2464
- "sebastian/exporter": "^3.1"
2465
- },
2466
- "require-dev": {
2467
- "phpunit/phpunit": "^6.4"
2468
- },
2469
- "time": "2018-02-01T13:46:46+00:00",
2470
- "type": "library",
2471
- "extra": {
2472
- "branch-alias": {
2473
- "dev-master": "2.1.x-dev"
2474
- }
2475
- },
2476
- "installation-source": "dist",
2477
- "autoload": {
2478
- "classmap": [
2479
- "src/"
2480
- ]
2481
- },
2482
- "notification-url": "https://packagist.org/downloads/",
2483
- "license": [
2484
- "BSD-3-Clause"
2485
- ],
2486
- "authors": [
2487
- {
2488
- "name": "Jeff Welch",
2489
- "email": "whatthejeff@gmail.com"
2490
- },
2491
- {
2492
- "name": "Volker Dusch",
2493
- "email": "github@wallbash.com"
2494
- },
2495
- {
2496
- "name": "Bernhard Schussek",
2497
- "email": "bschussek@2bepublished.at"
2498
- },
2499
- {
2500
- "name": "Sebastian Bergmann",
2501
- "email": "sebastian@phpunit.de"
2502
- }
2503
- ],
2504
- "description": "Provides the functionality to compare PHP values for equality",
2505
- "homepage": "https://github.com/sebastianbergmann/comparator",
2506
- "keywords": [
2507
- "comparator",
2508
- "compare",
2509
- "equality"
2510
- ],
2511
- "support": {
2512
- "issues": "https://github.com/sebastianbergmann/comparator/issues",
2513
- "source": "https://github.com/sebastianbergmann/comparator/tree/master"
2514
- },
2515
- "install-path": "../sebastian/comparator"
2516
- },
2517
- {
2518
- "name": "sebastian/diff",
2519
- "version": "2.0.1",
2520
- "version_normalized": "2.0.1.0",
2521
- "source": {
2522
- "type": "git",
2523
- "url": "https://github.com/sebastianbergmann/diff.git",
2524
- "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
2525
- },
2526
- "dist": {
2527
- "type": "zip",
2528
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
2529
- "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
2530
- "shasum": ""
2531
- },
2532
- "require": {
2533
- "php": "^7.0"
2534
- },
2535
- "require-dev": {
2536
- "phpunit/phpunit": "^6.2"
2537
- },
2538
- "time": "2017-08-03T08:09:46+00:00",
2539
- "type": "library",
2540
- "extra": {
2541
- "branch-alias": {
2542
- "dev-master": "2.0-dev"
2543
- }
2544
- },
2545
- "installation-source": "dist",
2546
- "autoload": {
2547
- "classmap": [
2548
- "src/"
2549
- ]
2550
- },
2551
- "notification-url": "https://packagist.org/downloads/",
2552
- "license": [
2553
- "BSD-3-Clause"
2554
- ],
2555
- "authors": [
2556
- {
2557
- "name": "Kore Nordmann",
2558
- "email": "mail@kore-nordmann.de"
2559
- },
2560
- {
2561
- "name": "Sebastian Bergmann",
2562
- "email": "sebastian@phpunit.de"
2563
- }
2564
- ],
2565
- "description": "Diff implementation",
2566
- "homepage": "https://github.com/sebastianbergmann/diff",
2567
- "keywords": [
2568
- "diff"
2569
- ],
2570
- "support": {
2571
- "issues": "https://github.com/sebastianbergmann/diff/issues",
2572
- "source": "https://github.com/sebastianbergmann/diff/tree/master"
2573
- },
2574
- "install-path": "../sebastian/diff"
2575
- },
2576
- {
2577
- "name": "sebastian/environment",
2578
- "version": "3.1.0",
2579
- "version_normalized": "3.1.0.0",
2580
- "source": {
2581
- "type": "git",
2582
- "url": "https://github.com/sebastianbergmann/environment.git",
2583
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
2584
- },
2585
- "dist": {
2586
- "type": "zip",
2587
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
2588
- "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
2589
- "shasum": ""
2590
- },
2591
- "require": {
2592
- "php": "^7.0"
2593
- },
2594
- "require-dev": {
2595
- "phpunit/phpunit": "^6.1"
2596
- },
2597
- "time": "2017-07-01T08:51:00+00:00",
2598
- "type": "library",
2599
- "extra": {
2600
- "branch-alias": {
2601
- "dev-master": "3.1.x-dev"
2602
- }
2603
- },
2604
- "installation-source": "dist",
2605
- "autoload": {
2606
- "classmap": [
2607
- "src/"
2608
- ]
2609
- },
2610
- "notification-url": "https://packagist.org/downloads/",
2611
- "license": [
2612
- "BSD-3-Clause"
2613
- ],
2614
- "authors": [
2615
- {
2616
- "name": "Sebastian Bergmann",
2617
- "email": "sebastian@phpunit.de"
2618
- }
2619
- ],
2620
- "description": "Provides functionality to handle HHVM/PHP environments",
2621
- "homepage": "http://www.github.com/sebastianbergmann/environment",
2622
- "keywords": [
2623
- "Xdebug",
2624
- "environment",
2625
- "hhvm"
2626
- ],
2627
- "support": {
2628
- "issues": "https://github.com/sebastianbergmann/environment/issues",
2629
- "source": "https://github.com/sebastianbergmann/environment/tree/master"
2630
- },
2631
- "install-path": "../sebastian/environment"
2632
- },
2633
- {
2634
- "name": "sebastian/exporter",
2635
- "version": "3.1.3",
2636
- "version_normalized": "3.1.3.0",
2637
- "source": {
2638
- "type": "git",
2639
- "url": "https://github.com/sebastianbergmann/exporter.git",
2640
- "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e"
2641
- },
2642
- "dist": {
2643
- "type": "zip",
2644
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e",
2645
- "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e",
2646
- "shasum": ""
2647
- },
2648
- "require": {
2649
- "php": ">=7.0",
2650
- "sebastian/recursion-context": "^3.0"
2651
- },
2652
- "require-dev": {
2653
- "ext-mbstring": "*",
2654
- "phpunit/phpunit": "^6.0"
2655
- },
2656
- "time": "2020-11-30T07:47:53+00:00",
2657
- "type": "library",
2658
- "extra": {
2659
- "branch-alias": {
2660
- "dev-master": "3.1.x-dev"
2661
- }
2662
- },
2663
- "installation-source": "dist",
2664
- "autoload": {
2665
- "classmap": [
2666
- "src/"
2667
- ]
2668
- },
2669
- "notification-url": "https://packagist.org/downloads/",
2670
- "license": [
2671
- "BSD-3-Clause"
2672
- ],
2673
- "authors": [
2674
- {
2675
- "name": "Sebastian Bergmann",
2676
- "email": "sebastian@phpunit.de"
2677
- },
2678
- {
2679
- "name": "Jeff Welch",
2680
- "email": "whatthejeff@gmail.com"
2681
- },
2682
- {
2683
- "name": "Volker Dusch",
2684
- "email": "github@wallbash.com"
2685
- },
2686
- {
2687
- "name": "Adam Harvey",
2688
- "email": "aharvey@php.net"
2689
- },
2690
- {
2691
- "name": "Bernhard Schussek",
2692
- "email": "bschussek@gmail.com"
2693
- }
2694
- ],
2695
- "description": "Provides the functionality to export PHP variables for visualization",
2696
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
2697
- "keywords": [
2698
- "export",
2699
- "exporter"
2700
- ],
2701
- "support": {
2702
- "issues": "https://github.com/sebastianbergmann/exporter/issues",
2703
- "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3"
2704
- },
2705
- "funding": [
2706
- {
2707
- "url": "https://github.com/sebastianbergmann",
2708
- "type": "github"
2709
- }
2710
- ],
2711
- "install-path": "../sebastian/exporter"
2712
- },
2713
- {
2714
- "name": "sebastian/global-state",
2715
- "version": "2.0.0",
2716
- "version_normalized": "2.0.0.0",
2717
- "source": {
2718
- "type": "git",
2719
- "url": "https://github.com/sebastianbergmann/global-state.git",
2720
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
2721
- },
2722
- "dist": {
2723
- "type": "zip",
2724
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
2725
- "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
2726
- "shasum": ""
2727
- },
2728
- "require": {
2729
- "php": "^7.0"
2730
- },
2731
- "require-dev": {
2732
- "phpunit/phpunit": "^6.0"
2733
- },
2734
- "suggest": {
2735
- "ext-uopz": "*"
2736
- },
2737
- "time": "2017-04-27T15:39:26+00:00",
2738
- "type": "library",
2739
- "extra": {
2740
- "branch-alias": {
2741
- "dev-master": "2.0-dev"
2742
- }
2743
- },
2744
- "installation-source": "dist",
2745
- "autoload": {
2746
- "classmap": [
2747
- "src/"
2748
- ]
2749
- },
2750
- "notification-url": "https://packagist.org/downloads/",
2751
- "license": [
2752
- "BSD-3-Clause"
2753
- ],
2754
- "authors": [
2755
- {
2756
- "name": "Sebastian Bergmann",
2757
- "email": "sebastian@phpunit.de"
2758
- }
2759
- ],
2760
- "description": "Snapshotting of global state",
2761
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
2762
- "keywords": [
2763
- "global state"
2764
- ],
2765
- "support": {
2766
- "issues": "https://github.com/sebastianbergmann/global-state/issues",
2767
- "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0"
2768
- },
2769
- "install-path": "../sebastian/global-state"
2770
- },
2771
- {
2772
- "name": "sebastian/object-enumerator",
2773
- "version": "3.0.4",
2774
- "version_normalized": "3.0.4.0",
2775
- "source": {
2776
- "type": "git",
2777
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
2778
- "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
2779
- },
2780
- "dist": {
2781
- "type": "zip",
2782
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
2783
- "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
2784
- "shasum": ""
2785
- },
2786
- "require": {
2787
- "php": ">=7.0",
2788
- "sebastian/object-reflector": "^1.1.1",
2789
- "sebastian/recursion-context": "^3.0"
2790
- },
2791
- "require-dev": {
2792
- "phpunit/phpunit": "^6.0"
2793
- },
2794
- "time": "2020-11-30T07:40:27+00:00",
2795
- "type": "library",
2796
- "extra": {
2797
- "branch-alias": {
2798
- "dev-master": "3.0.x-dev"
2799
- }
2800
- },
2801
- "installation-source": "dist",
2802
- "autoload": {
2803
- "classmap": [
2804
- "src/"
2805
- ]
2806
- },
2807
- "notification-url": "https://packagist.org/downloads/",
2808
- "license": [
2809
- "BSD-3-Clause"
2810
- ],
2811
- "authors": [
2812
- {
2813
- "name": "Sebastian Bergmann",
2814
- "email": "sebastian@phpunit.de"
2815
- }
2816
- ],
2817
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2818
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2819
- "support": {
2820
- "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
2821
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
2822
- },
2823
- "funding": [
2824
- {
2825
- "url": "https://github.com/sebastianbergmann",
2826
- "type": "github"
2827
- }
2828
- ],
2829
- "install-path": "../sebastian/object-enumerator"
2830
- },
2831
- {
2832
- "name": "sebastian/object-reflector",
2833
- "version": "1.1.2",
2834
- "version_normalized": "1.1.2.0",
2835
- "source": {
2836
- "type": "git",
2837
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
2838
- "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
2839
- },
2840
- "dist": {
2841
- "type": "zip",
2842
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
2843
- "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
2844
- "shasum": ""
2845
- },
2846
- "require": {
2847
- "php": ">=7.0"
2848
- },
2849
- "require-dev": {
2850
- "phpunit/phpunit": "^6.0"
2851
- },
2852
- "time": "2020-11-30T07:37:18+00:00",
2853
- "type": "library",
2854
- "extra": {
2855
- "branch-alias": {
2856
- "dev-master": "1.1-dev"
2857
- }
2858
- },
2859
- "installation-source": "dist",
2860
- "autoload": {
2861
- "classmap": [
2862
- "src/"
2863
- ]
2864
- },
2865
- "notification-url": "https://packagist.org/downloads/",
2866
- "license": [
2867
- "BSD-3-Clause"
2868
- ],
2869
- "authors": [
2870
- {
2871
- "name": "Sebastian Bergmann",
2872
- "email": "sebastian@phpunit.de"
2873
- }
2874
- ],
2875
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
2876
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
2877
- "support": {
2878
- "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
2879
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
2880
- },
2881
- "funding": [
2882
- {
2883
- "url": "https://github.com/sebastianbergmann",
2884
- "type": "github"
2885
- }
2886
- ],
2887
- "install-path": "../sebastian/object-reflector"
2888
- },
2889
- {
2890
- "name": "sebastian/recursion-context",
2891
- "version": "3.0.1",
2892
- "version_normalized": "3.0.1.0",
2893
- "source": {
2894
- "type": "git",
2895
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
2896
- "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
2897
- },
2898
- "dist": {
2899
- "type": "zip",
2900
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
2901
- "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
2902
- "shasum": ""
2903
- },
2904
- "require": {
2905
- "php": ">=7.0"
2906
- },
2907
- "require-dev": {
2908
- "phpunit/phpunit": "^6.0"
2909
- },
2910
- "time": "2020-11-30T07:34:24+00:00",
2911
- "type": "library",
2912
- "extra": {
2913
- "branch-alias": {
2914
- "dev-master": "3.0.x-dev"
2915
- }
2916
- },
2917
- "installation-source": "dist",
2918
- "autoload": {
2919
- "classmap": [
2920
- "src/"
2921
- ]
2922
- },
2923
- "notification-url": "https://packagist.org/downloads/",
2924
- "license": [
2925
- "BSD-3-Clause"
2926
- ],
2927
- "authors": [
2928
- {
2929
- "name": "Sebastian Bergmann",
2930
- "email": "sebastian@phpunit.de"
2931
- },
2932
- {
2933
- "name": "Jeff Welch",
2934
- "email": "whatthejeff@gmail.com"
2935
- },
2936
- {
2937
- "name": "Adam Harvey",
2938
- "email": "aharvey@php.net"
2939
- }
2940
- ],
2941
- "description": "Provides functionality to recursively process PHP variables",
2942
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
2943
- "support": {
2944
- "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
2945
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
2946
- },
2947
- "funding": [
2948
- {
2949
- "url": "https://github.com/sebastianbergmann",
2950
- "type": "github"
2951
- }
2952
- ],
2953
- "install-path": "../sebastian/recursion-context"
2954
- },
2955
- {
2956
- "name": "sebastian/resource-operations",
2957
- "version": "1.0.0",
2958
- "version_normalized": "1.0.0.0",
2959
- "source": {
2960
- "type": "git",
2961
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
2962
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
2963
- },
2964
- "dist": {
2965
- "type": "zip",
2966
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2967
- "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2968
- "shasum": ""
2969
- },
2970
- "require": {
2971
- "php": ">=5.6.0"
2972
- },
2973
- "time": "2015-07-28T20:34:47+00:00",
2974
- "type": "library",
2975
- "extra": {
2976
- "branch-alias": {
2977
- "dev-master": "1.0.x-dev"
2978
- }
2979
- },
2980
- "installation-source": "dist",
2981
- "autoload": {
2982
- "classmap": [
2983
- "src/"
2984
- ]
2985
- },
2986
- "notification-url": "https://packagist.org/downloads/",
2987
- "license": [
2988
- "BSD-3-Clause"
2989
- ],
2990
- "authors": [
2991
- {
2992
- "name": "Sebastian Bergmann",
2993
- "email": "sebastian@phpunit.de"
2994
- }
2995
- ],
2996
- "description": "Provides a list of PHP built-in functions that operate on resources",
2997
- "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2998
- "support": {
2999
- "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
3000
- "source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
3001
- },
3002
- "install-path": "../sebastian/resource-operations"
3003
- },
3004
- {
3005
- "name": "sebastian/version",
3006
- "version": "2.0.1",
3007
- "version_normalized": "2.0.1.0",
3008
- "source": {
3009
- "type": "git",
3010
- "url": "https://github.com/sebastianbergmann/version.git",
3011
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
3012
- },
3013
- "dist": {
3014
- "type": "zip",
3015
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
3016
- "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
3017
- "shasum": ""
3018
- },
3019
- "require": {
3020
- "php": ">=5.6"
3021
- },
3022
- "time": "2016-10-03T07:35:21+00:00",
3023
- "type": "library",
3024
- "extra": {
3025
- "branch-alias": {
3026
- "dev-master": "2.0.x-dev"
3027
- }
3028
- },
3029
- "installation-source": "dist",
3030
- "autoload": {
3031
- "classmap": [
3032
- "src/"
3033
- ]
3034
- },
3035
- "notification-url": "https://packagist.org/downloads/",
3036
- "license": [
3037
- "BSD-3-Clause"
3038
- ],
3039
- "authors": [
3040
- {
3041
- "name": "Sebastian Bergmann",
3042
- "email": "sebastian@phpunit.de",
3043
- "role": "lead"
3044
- }
3045
- ],
3046
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
3047
- "homepage": "https://github.com/sebastianbergmann/version",
3048
- "support": {
3049
- "issues": "https://github.com/sebastianbergmann/version/issues",
3050
- "source": "https://github.com/sebastianbergmann/version/tree/master"
3051
- },
3052
- "install-path": "../sebastian/version"
3053
- },
3054
- {
3055
- "name": "squizlabs/php_codesniffer",
3056
- "version": "3.5.8",
3057
- "version_normalized": "3.5.8.0",
3058
- "source": {
3059
- "type": "git",
3060
- "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
3061
- "reference": "9d583721a7157ee997f235f327de038e7ea6dac4"
3062
- },
3063
- "dist": {
3064
- "type": "zip",
3065
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4",
3066
- "reference": "9d583721a7157ee997f235f327de038e7ea6dac4",
3067
- "shasum": ""
3068
- },
3069
- "require": {
3070
- "ext-simplexml": "*",
3071
- "ext-tokenizer": "*",
3072
- "ext-xmlwriter": "*",
3073
- "php": ">=5.4.0"
3074
- },
3075
- "require-dev": {
3076
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
3077
- },
3078
- "time": "2020-10-23T02:01:07+00:00",
3079
- "bin": [
3080
- "bin/phpcs",
3081
- "bin/phpcbf"
3082
- ],
3083
- "type": "library",
3084
- "extra": {
3085
- "branch-alias": {
3086
- "dev-master": "3.x-dev"
3087
- }
3088
- },
3089
- "installation-source": "dist",
3090
- "notification-url": "https://packagist.org/downloads/",
3091
- "license": [
3092
- "BSD-3-Clause"
3093
- ],
3094
- "authors": [
3095
- {
3096
- "name": "Greg Sherwood",
3097
- "role": "lead"
3098
- }
3099
- ],
3100
- "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
3101
- "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
3102
- "keywords": [
3103
- "phpcs",
3104
- "standards"
3105
- ],
3106
- "support": {
3107
- "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
3108
- "source": "https://github.com/squizlabs/PHP_CodeSniffer",
3109
- "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
3110
- },
3111
- "install-path": "../squizlabs/php_codesniffer"
3112
- },
3113
- {
3114
- "name": "symfony/config",
3115
- "version": "v3.3.6",
3116
- "version_normalized": "3.3.6.0",
3117
- "source": {
3118
- "type": "git",
3119
- "url": "https://github.com/symfony/config.git",
3120
- "reference": "54ee12b0dd60f294132cabae6f5da9573d2e5297"
3121
- },
3122
- "dist": {
3123
- "type": "zip",
3124
- "url": "https://api.github.com/repos/symfony/config/zipball/54ee12b0dd60f294132cabae6f5da9573d2e5297",
3125
- "reference": "54ee12b0dd60f294132cabae6f5da9573d2e5297",
3126
- "shasum": ""
3127
- },
3128
- "require": {
3129
- "php": ">=5.5.9",
3130
- "symfony/filesystem": "~2.8|~3.0"
3131
- },
3132
- "conflict": {
3133
- "symfony/dependency-injection": "<3.3",
3134
- "symfony/finder": "<3.3"
3135
- },
3136
- "require-dev": {
3137
- "symfony/dependency-injection": "~3.3",
3138
- "symfony/finder": "~3.3",
3139
- "symfony/yaml": "~3.0"
3140
- },
3141
- "suggest": {
3142
- "symfony/yaml": "To use the yaml reference dumper"
3143
- },
3144
- "time": "2017-07-19T07:37:29+00:00",
3145
- "type": "library",
3146
- "extra": {
3147
- "branch-alias": {
3148
- "dev-master": "3.3-dev"
3149
- }
3150
- },
3151
- "installation-source": "dist",
3152
- "autoload": {
3153
- "psr-4": {
3154
- "Symfony\\Component\\Config\\": ""
3155
- },
3156
- "exclude-from-classmap": [
3157
- "/Tests/"
3158
- ]
3159
- },
3160
- "notification-url": "https://packagist.org/downloads/",
3161
- "license": [
3162
- "MIT"
3163
- ],
3164
- "authors": [
3165
- {
3166
- "name": "Fabien Potencier",
3167
- "email": "fabien@symfony.com"
3168
- },
3169
- {
3170
- "name": "Symfony Community",
3171
- "homepage": "https://symfony.com/contributors"
3172
- }
3173
- ],
3174
- "description": "Symfony Config Component",
3175
- "homepage": "https://symfony.com",
3176
- "support": {
3177
- "source": "https://github.com/symfony/config/tree/3.3"
3178
- },
3179
- "install-path": "../symfony/config"
3180
- },
3181
- {
3182
- "name": "symfony/console",
3183
- "version": "v3.3.6",
3184
- "version_normalized": "3.3.6.0",
3185
- "source": {
3186
- "type": "git",
3187
- "url": "https://github.com/symfony/console.git",
3188
- "reference": "b0878233cb5c4391347e5495089c7af11b8e6201"
3189
- },
3190
- "dist": {
3191
- "type": "zip",
3192
- "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201",
3193
- "reference": "b0878233cb5c4391347e5495089c7af11b8e6201",
3194
- "shasum": ""
3195
- },
3196
- "require": {
3197
- "php": ">=5.5.9",
3198
- "symfony/debug": "~2.8|~3.0",
3199
- "symfony/polyfill-mbstring": "~1.0"
3200
- },
3201
- "conflict": {
3202
- "symfony/dependency-injection": "<3.3"
3203
- },
3204
- "require-dev": {
3205
- "psr/log": "~1.0",
3206
- "symfony/config": "~3.3",
3207
- "symfony/dependency-injection": "~3.3",
3208
- "symfony/event-dispatcher": "~2.8|~3.0",
3209
- "symfony/filesystem": "~2.8|~3.0",
3210
- "symfony/http-kernel": "~2.8|~3.0",
3211
- "symfony/process": "~2.8|~3.0"
3212
- },
3213
- "suggest": {
3214
- "psr/log": "For using the console logger",
3215
- "symfony/event-dispatcher": "",
3216
- "symfony/filesystem": "",
3217
- "symfony/process": ""
3218
- },
3219
- "time": "2017-07-29T21:27:59+00:00",
3220
- "type": "library",
3221
- "extra": {
3222
- "branch-alias": {
3223
- "dev-master": "3.3-dev"
3224
- }
3225
- },
3226
- "installation-source": "dist",
3227
- "autoload": {
3228
- "psr-4": {
3229
- "Symfony\\Component\\Console\\": ""
3230
- },
3231
- "exclude-from-classmap": [
3232
- "/Tests/"
3233
- ]
3234
- },
3235
- "notification-url": "https://packagist.org/downloads/",
3236
- "license": [
3237
- "MIT"
3238
- ],
3239
- "authors": [
3240
- {
3241
- "name": "Fabien Potencier",
3242
- "email": "fabien@symfony.com"
3243
- },
3244
- {
3245
- "name": "Symfony Community",
3246
- "homepage": "https://symfony.com/contributors"
3247
- }
3248
- ],
3249
- "description": "Symfony Console Component",
3250
- "homepage": "https://symfony.com",
3251
- "support": {
3252
- "source": "https://github.com/symfony/console/tree/3.3"
3253
- },
3254
- "install-path": "../symfony/console"
3255
- },
3256
- {
3257
- "name": "symfony/debug",
3258
- "version": "v3.3.6",
3259
- "version_normalized": "3.3.6.0",
3260
- "source": {
3261
- "type": "git",
3262
- "url": "https://github.com/symfony/debug.git",
3263
- "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13"
3264
- },
3265
- "dist": {
3266
- "type": "zip",
3267
- "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
3268
- "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13",
3269
- "shasum": ""
3270
- },
3271
- "require": {
3272
- "php": ">=5.5.9",
3273
- "psr/log": "~1.0"
3274
- },
3275
- "conflict": {
3276
- "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
3277
- },
3278
- "require-dev": {
3279
- "symfony/http-kernel": "~2.8|~3.0"
3280
- },
3281
- "time": "2017-07-28T15:27:31+00:00",
3282
- "type": "library",
3283
- "extra": {
3284
- "branch-alias": {
3285
- "dev-master": "3.3-dev"
3286
- }
3287
- },
3288
- "installation-source": "dist",
3289
- "autoload": {
3290
- "psr-4": {
3291
- "Symfony\\Component\\Debug\\": ""
3292
- },
3293
- "exclude-from-classmap": [
3294
- "/Tests/"
3295
- ]
3296
- },
3297
- "notification-url": "https://packagist.org/downloads/",
3298
- "license": [
3299
- "MIT"
3300
- ],
3301
- "authors": [
3302
- {
3303
- "name": "Fabien Potencier",
3304
- "email": "fabien@symfony.com"
3305
- },
3306
- {
3307
- "name": "Symfony Community",
3308
- "homepage": "https://symfony.com/contributors"
3309
- }
3310
- ],
3311
- "description": "Symfony Debug Component",
3312
- "homepage": "https://symfony.com",
3313
- "support": {
3314
- "source": "https://github.com/symfony/debug/tree/3.3"
3315
- },
3316
- "install-path": "../symfony/debug"
3317
- },
3318
- {
3319
- "name": "symfony/filesystem",
3320
- "version": "v3.3.6",
3321
- "version_normalized": "3.3.6.0",
3322
- "source": {
3323
- "type": "git",
3324
- "url": "https://github.com/symfony/filesystem.git",
3325
- "reference": "427987eb4eed764c3b6e38d52a0f87989e010676"
3326
- },
3327
- "dist": {
3328
- "type": "zip",
3329
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/427987eb4eed764c3b6e38d52a0f87989e010676",
3330
- "reference": "427987eb4eed764c3b6e38d52a0f87989e010676",
3331
- "shasum": ""
3332
- },
3333
- "require": {
3334
- "php": ">=5.5.9"
3335
- },
3336
- "time": "2017-07-11T07:17:58+00:00",
3337
- "type": "library",
3338
- "extra": {
3339
- "branch-alias": {
3340
- "dev-master": "3.3-dev"
3341
- }
3342
- },
3343
- "installation-source": "dist",
3344
- "autoload": {
3345
- "psr-4": {
3346
- "Symfony\\Component\\Filesystem\\": ""
3347
- },
3348
- "exclude-from-classmap": [
3349
- "/Tests/"
3350
- ]
3351
- },
3352
- "notification-url": "https://packagist.org/downloads/",
3353
- "license": [
3354
- "MIT"
3355
- ],
3356
- "authors": [
3357
- {
3358
- "name": "Fabien Potencier",
3359
- "email": "fabien@symfony.com"
3360
- },
3361
- {
3362
- "name": "Symfony Community",
3363
- "homepage": "https://symfony.com/contributors"
3364
- }
3365
- ],
3366
- "description": "Symfony Filesystem Component",
3367
- "homepage": "https://symfony.com",
3368
- "support": {
3369
- "source": "https://github.com/symfony/filesystem/tree/3.3"
3370
- },
3371
- "install-path": "../symfony/filesystem"
3372
- },
3373
- {
3374
- "name": "symfony/polyfill-ctype",
3375
- "version": "v1.19.0",
3376
- "version_normalized": "1.19.0.0",
3377
- "source": {
3378
- "type": "git",
3379
- "url": "https://github.com/symfony/polyfill-ctype.git",
3380
- "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
3381
- },
3382
- "dist": {
3383
- "type": "zip",
3384
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
3385
- "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
3386
- "shasum": ""
3387
- },
3388
- "require": {
3389
- "php": ">=5.3.3"
3390
- },
3391
- "suggest": {
3392
- "ext-ctype": "For best performance"
3393
- },
3394
- "time": "2020-10-23T09:01:57+00:00",
3395
- "type": "library",
3396
- "extra": {
3397
- "branch-alias": {
3398
- "dev-main": "1.19-dev"
3399
- },
3400
- "thanks": {
3401
- "name": "symfony/polyfill",
3402
- "url": "https://github.com/symfony/polyfill"
3403
- }
3404
- },
3405
- "installation-source": "dist",
3406
- "autoload": {
3407
- "psr-4": {
3408
- "Symfony\\Polyfill\\Ctype\\": ""
3409
- },
3410
- "files": [
3411
- "bootstrap.php"
3412
- ]
3413
- },
3414
- "notification-url": "https://packagist.org/downloads/",
3415
- "license": [
3416
- "MIT"
3417
- ],
3418
- "authors": [
3419
- {
3420
- "name": "Gert de Pagter",
3421
- "email": "BackEndTea@gmail.com"
3422
- },
3423
- {
3424
- "name": "Symfony Community",
3425
- "homepage": "https://symfony.com/contributors"
3426
- }
3427
- ],
3428
- "description": "Symfony polyfill for ctype functions",
3429
- "homepage": "https://symfony.com",
3430
- "keywords": [
3431
- "compatibility",
3432
- "ctype",
3433
- "polyfill",
3434
- "portable"
3435
- ],
3436
- "support": {
3437
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
3438
- },
3439
- "funding": [
3440
- {
3441
- "url": "https://symfony.com/sponsor",
3442
- "type": "custom"
3443
- },
3444
- {
3445
- "url": "https://github.com/fabpot",
3446
- "type": "github"
3447
- },
3448
- {
3449
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3450
- "type": "tidelift"
3451
- }
3452
- ],
3453
- "install-path": "../symfony/polyfill-ctype"
3454
- },
3455
- {
3456
- "name": "symfony/polyfill-intl-idn",
3457
- "version": "v1.19.0",
3458
- "version_normalized": "1.19.0.0",
3459
- "source": {
3460
- "type": "git",
3461
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
3462
- "reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826"
3463
- },
3464
- "dist": {
3465
- "type": "zip",
3466
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/4ad5115c0f5d5172a9fe8147675ec6de266d8826",
3467
- "reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826",
3468
- "shasum": ""
3469
- },
3470
- "require": {
3471
- "php": ">=5.3.3",
3472
- "symfony/polyfill-intl-normalizer": "^1.10",
3473
- "symfony/polyfill-php70": "^1.10",
3474
- "symfony/polyfill-php72": "^1.10"
3475
- },
3476
- "suggest": {
3477
- "ext-intl": "For best performance"
3478
- },
3479
- "time": "2020-10-21T09:57:48+00:00",
3480
- "type": "library",
3481
- "extra": {
3482
- "branch-alias": {
3483
- "dev-main": "1.19-dev"
3484
- },
3485
- "thanks": {
3486
- "name": "symfony/polyfill",
3487
- "url": "https://github.com/symfony/polyfill"
3488
- }
3489
- },
3490
- "installation-source": "dist",
3491
- "autoload": {
3492
- "psr-4": {
3493
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
3494
- },
3495
- "files": [
3496
- "bootstrap.php"
3497
- ]
3498
- },
3499
- "notification-url": "https://packagist.org/downloads/",
3500
- "license": [
3501
- "MIT"
3502
- ],
3503
- "authors": [
3504
- {
3505
- "name": "Laurent Bassin",
3506
- "email": "laurent@bassin.info"
3507
- },
3508
- {
3509
- "name": "Trevor Rowbotham",
3510
- "email": "trevor.rowbotham@pm.me"
3511
- },
3512
- {
3513
- "name": "Symfony Community",
3514
- "homepage": "https://symfony.com/contributors"
3515
- }
3516
- ],
3517
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
3518
- "homepage": "https://symfony.com",
3519
- "keywords": [
3520
- "compatibility",
3521
- "idn",
3522
- "intl",
3523
- "polyfill",
3524
- "portable",
3525
- "shim"
3526
- ],
3527
- "support": {
3528
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.19.0"
3529
- },
3530
- "funding": [
3531
- {
3532
- "url": "https://symfony.com/sponsor",
3533
- "type": "custom"
3534
- },
3535
- {
3536
- "url": "https://github.com/fabpot",
3537
- "type": "github"
3538
- },
3539
- {
3540
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3541
- "type": "tidelift"
3542
- }
3543
- ],
3544
- "install-path": "../symfony/polyfill-intl-idn"
3545
- },
3546
- {
3547
- "name": "symfony/polyfill-intl-normalizer",
3548
- "version": "v1.19.0",
3549
- "version_normalized": "1.19.0.0",
3550
- "source": {
3551
- "type": "git",
3552
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
3553
- "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27"
3554
- },
3555
- "dist": {
3556
- "type": "zip",
3557
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8db0ae7936b42feb370840cf24de1a144fb0ef27",
3558
- "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27",
3559
- "shasum": ""
3560
- },
3561
- "require": {
3562
- "php": ">=5.3.3"
3563
- },
3564
- "suggest": {
3565
- "ext-intl": "For best performance"
3566
- },
3567
- "time": "2020-10-23T09:01:57+00:00",
3568
- "type": "library",
3569
- "extra": {
3570
- "branch-alias": {
3571
- "dev-main": "1.19-dev"
3572
- },
3573
- "thanks": {
3574
- "name": "symfony/polyfill",
3575
- "url": "https://github.com/symfony/polyfill"
3576
- }
3577
- },
3578
- "installation-source": "dist",
3579
- "autoload": {
3580
- "psr-4": {
3581
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
3582
- },
3583
- "files": [
3584
- "bootstrap.php"
3585
- ],
3586
- "classmap": [
3587
- "Resources/stubs"
3588
- ]
3589
- },
3590
- "notification-url": "https://packagist.org/downloads/",
3591
- "license": [
3592
- "MIT"
3593
- ],
3594
- "authors": [
3595
- {
3596
- "name": "Nicolas Grekas",
3597
- "email": "p@tchwork.com"
3598
- },
3599
- {
3600
- "name": "Symfony Community",
3601
- "homepage": "https://symfony.com/contributors"
3602
- }
3603
- ],
3604
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
3605
- "homepage": "https://symfony.com",
3606
- "keywords": [
3607
- "compatibility",
3608
- "intl",
3609
- "normalizer",
3610
- "polyfill",
3611
- "portable",
3612
- "shim"
3613
- ],
3614
- "support": {
3615
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.19.0"
3616
- },
3617
- "funding": [
3618
- {
3619
- "url": "https://symfony.com/sponsor",
3620
- "type": "custom"
3621
- },
3622
- {
3623
- "url": "https://github.com/fabpot",
3624
- "type": "github"
3625
- },
3626
- {
3627
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3628
- "type": "tidelift"
3629
- }
3630
- ],
3631
- "install-path": "../symfony/polyfill-intl-normalizer"
3632
- },
3633
- {
3634
- "name": "symfony/polyfill-mbstring",
3635
- "version": "v1.13.1",
3636
- "version_normalized": "1.13.1.0",
3637
- "source": {
3638
- "type": "git",
3639
- "url": "git@github.com:kagg-design/polyfill-mbstring.git",
3640
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
3641
- },
3642
- "dist": {
3643
- "type": "zip",
3644
- "url": "https://api.github.com/repos/kagg-design/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
3645
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
3646
- "shasum": ""
3647
- },
3648
- "require": {
3649
- "php": ">=5.3.3"
3650
- },
3651
- "suggest": {
3652
- "ext-mbstring": "For best performance"
3653
- },
3654
- "time": "2019-11-27T14:18:11+00:00",
3655
- "type": "library",
3656
- "extra": {
3657
- "branch-alias": {
3658
- "dev-master": "1.13-dev"
3659
- }
3660
- },
3661
- "installation-source": "dist",
3662
- "autoload": {
3663
- "psr-4": {
3664
- "Symfony\\Polyfill\\Mbstring\\": ""
3665
- },
3666
- "files": [
3667
- "bootstrap.php"
3668
- ]
3669
- },
3670
- "license": [
3671
- "MIT"
3672
- ],
3673
- "authors": [
3674
- {
3675
- "name": "Nicolas Grekas",
3676
- "email": "p@tchwork.com"
3677
- },
3678
- {
3679
- "name": "Symfony Community",
3680
- "homepage": "https://symfony.com/contributors"
3681
- }
3682
- ],
3683
- "description": "Symfony polyfill for the Mbstring extension",
3684
- "homepage": "https://symfony.com",
3685
- "keywords": [
3686
- "compatibility",
3687
- "mbstring",
3688
- "polyfill",
3689
- "portable",
3690
- "shim"
3691
- ],
3692
- "install-path": "../symfony/polyfill-mbstring"
3693
- },
3694
- {
3695
- "name": "symfony/polyfill-php70",
3696
- "version": "v1.19.0",
3697
- "version_normalized": "1.19.0.0",
3698
- "source": {
3699
- "type": "git",
3700
- "url": "https://github.com/symfony/polyfill-php70.git",
3701
- "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e"
3702
- },
3703
- "dist": {
3704
- "type": "zip",
3705
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
3706
- "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
3707
- "shasum": ""
3708
- },
3709
- "require": {
3710
- "paragonie/random_compat": "~1.0|~2.0|~9.99",
3711
- "php": ">=5.3.3"
3712
- },
3713
- "time": "2020-10-23T09:01:57+00:00",
3714
- "type": "library",
3715
- "extra": {
3716
- "branch-alias": {
3717
- "dev-main": "1.19-dev"
3718
- },
3719
- "thanks": {
3720
- "name": "symfony/polyfill",
3721
- "url": "https://github.com/symfony/polyfill"
3722
- }
3723
- },
3724
- "installation-source": "dist",
3725
- "autoload": {
3726
- "psr-4": {
3727
- "Symfony\\Polyfill\\Php70\\": ""
3728
- },
3729
- "files": [
3730
- "bootstrap.php"
3731
- ],
3732
- "classmap": [
3733
- "Resources/stubs"
3734
- ]
3735
- },
3736
- "notification-url": "https://packagist.org/downloads/",
3737
- "license": [
3738
- "MIT"
3739
- ],
3740
- "authors": [
3741
- {
3742
- "name": "Nicolas Grekas",
3743
- "email": "p@tchwork.com"
3744
- },
3745
- {
3746
- "name": "Symfony Community",
3747
- "homepage": "https://symfony.com/contributors"
3748
- }
3749
- ],
3750
- "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
3751
- "homepage": "https://symfony.com",
3752
- "keywords": [
3753
- "compatibility",
3754
- "polyfill",
3755
- "portable",
3756
- "shim"
3757
- ],
3758
- "support": {
3759
- "source": "https://github.com/symfony/polyfill-php70/tree/v1.19.0"
3760
- },
3761
- "funding": [
3762
- {
3763
- "url": "https://symfony.com/sponsor",
3764
- "type": "custom"
3765
- },
3766
- {
3767
- "url": "https://github.com/fabpot",
3768
- "type": "github"
3769
- },
3770
- {
3771
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3772
- "type": "tidelift"
3773
- }
3774
- ],
3775
- "install-path": "../symfony/polyfill-php70"
3776
- },
3777
- {
3778
- "name": "symfony/polyfill-php72",
3779
- "version": "v1.19.0",
3780
- "version_normalized": "1.19.0.0",
3781
- "source": {
3782
- "type": "git",
3783
- "url": "https://github.com/symfony/polyfill-php72.git",
3784
- "reference": "beecef6b463b06954638f02378f52496cb84bacc"
3785
- },
3786
- "dist": {
3787
- "type": "zip",
3788
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc",
3789
- "reference": "beecef6b463b06954638f02378f52496cb84bacc",
3790
- "shasum": ""
3791
- },
3792
- "require": {
3793
- "php": ">=5.3.3"
3794
- },
3795
- "time": "2020-10-23T09:01:57+00:00",
3796
- "type": "library",
3797
- "extra": {
3798
- "branch-alias": {
3799
- "dev-main": "1.19-dev"
3800
- },
3801
- "thanks": {
3802
- "name": "symfony/polyfill",
3803
- "url": "https://github.com/symfony/polyfill"
3804
- }
3805
- },
3806
- "installation-source": "dist",
3807
- "autoload": {
3808
- "psr-4": {
3809
- "Symfony\\Polyfill\\Php72\\": ""
3810
- },
3811
- "files": [
3812
- "bootstrap.php"
3813
- ]
3814
- },
3815
- "notification-url": "https://packagist.org/downloads/",
3816
- "license": [
3817
- "MIT"
3818
- ],
3819
- "authors": [
3820
- {
3821
- "name": "Nicolas Grekas",
3822
- "email": "p@tchwork.com"
3823
- },
3824
- {
3825
- "name": "Symfony Community",
3826
- "homepage": "https://symfony.com/contributors"
3827
- }
3828
- ],
3829
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
3830
- "homepage": "https://symfony.com",
3831
- "keywords": [
3832
- "compatibility",
3833
- "polyfill",
3834
- "portable",
3835
- "shim"
3836
- ],
3837
- "support": {
3838
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.19.0"
3839
- },
3840
- "funding": [
3841
- {
3842
- "url": "https://symfony.com/sponsor",
3843
- "type": "custom"
3844
- },
3845
- {
3846
- "url": "https://github.com/fabpot",
3847
- "type": "github"
3848
- },
3849
- {
3850
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
3851
- "type": "tidelift"
3852
- }
3853
- ],
3854
- "install-path": "../symfony/polyfill-php72"
3855
- },
3856
- {
3857
- "name": "symfony/stopwatch",
3858
- "version": "v3.3.6",
3859
- "version_normalized": "3.3.6.0",
3860
- "source": {
3861
- "type": "git",
3862
- "url": "https://github.com/symfony/stopwatch.git",
3863
- "reference": "602a15299dc01556013b07167d4f5d3a60e90d15"
3864
- },
3865
- "dist": {
3866
- "type": "zip",
3867
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/602a15299dc01556013b07167d4f5d3a60e90d15",
3868
- "reference": "602a15299dc01556013b07167d4f5d3a60e90d15",
3869
- "shasum": ""
3870
- },
3871
- "require": {
3872
- "php": ">=5.5.9"
3873
- },
3874
- "time": "2017-04-12T14:14:56+00:00",
3875
- "type": "library",
3876
- "extra": {
3877
- "branch-alias": {
3878
- "dev-master": "3.3-dev"
3879
- }
3880
- },
3881
- "installation-source": "dist",
3882
- "autoload": {
3883
- "psr-4": {
3884
- "Symfony\\Component\\Stopwatch\\": ""
3885
- },
3886
- "exclude-from-classmap": [
3887
- "/Tests/"
3888
- ]
3889
- },
3890
- "notification-url": "https://packagist.org/downloads/",
3891
- "license": [
3892
- "MIT"
3893
- ],
3894
- "authors": [
3895
- {
3896
- "name": "Fabien Potencier",
3897
- "email": "fabien@symfony.com"
3898
- },
3899
- {
3900
- "name": "Symfony Community",
3901
- "homepage": "https://symfony.com/contributors"
3902
- }
3903
- ],
3904
- "description": "Symfony Stopwatch Component",
3905
- "homepage": "https://symfony.com",
3906
- "support": {
3907
- "source": "https://github.com/symfony/stopwatch/tree/master"
3908
- },
3909
- "install-path": "../symfony/stopwatch"
3910
- },
3911
- {
3912
- "name": "symfony/yaml",
3913
- "version": "v3.3.6",
3914
- "version_normalized": "3.3.6.0",
3915
- "source": {
3916
- "type": "git",
3917
- "url": "https://github.com/symfony/yaml.git",
3918
- "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed"
3919
- },
3920
- "dist": {
3921
- "type": "zip",
3922
- "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
3923
- "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
3924
- "shasum": ""
3925
- },
3926
- "require": {
3927
- "php": ">=5.5.9"
3928
- },
3929
- "require-dev": {
3930
- "symfony/console": "~2.8|~3.0"
3931
- },
3932
- "suggest": {
3933
- "symfony/console": "For validating YAML files using the lint command"
3934
- },
3935
- "time": "2017-07-23T12:43:26+00:00",
3936
- "type": "library",
3937
- "extra": {
3938
- "branch-alias": {
3939
- "dev-master": "3.3-dev"
3940
- }
3941
- },
3942
- "installation-source": "dist",
3943
- "autoload": {
3944
- "psr-4": {
3945
- "Symfony\\Component\\Yaml\\": ""
3946
- },
3947
- "exclude-from-classmap": [
3948
- "/Tests/"
3949
- ]
3950
- },
3951
- "notification-url": "https://packagist.org/downloads/",
3952
- "license": [
3953
- "MIT"
3954
- ],
3955
- "authors": [
3956
- {
3957
- "name": "Fabien Potencier",
3958
- "email": "fabien@symfony.com"
3959
- },
3960
- {
3961
- "name": "Symfony Community",
3962
- "homepage": "https://symfony.com/contributors"
3963
- }
3964
- ],
3965
- "description": "Symfony Yaml Component",
3966
- "homepage": "https://symfony.com",
3967
- "support": {
3968
- "source": "https://github.com/symfony/yaml/tree/3.3"
3969
- },
3970
- "install-path": "../symfony/yaml"
3971
- },
3972
- {
3973
- "name": "theseer/tokenizer",
3974
- "version": "1.1.3",
3975
- "version_normalized": "1.1.3.0",
3976
- "source": {
3977
- "type": "git",
3978
- "url": "https://github.com/theseer/tokenizer.git",
3979
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
3980
- },
3981
- "dist": {
3982
- "type": "zip",
3983
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
3984
- "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
3985
- "shasum": ""
3986
- },
3987
- "require": {
3988
- "ext-dom": "*",
3989
- "ext-tokenizer": "*",
3990
- "ext-xmlwriter": "*",
3991
- "php": "^7.0"
3992
- },
3993
- "time": "2019-06-13T22:48:21+00:00",
3994
- "type": "library",
3995
- "installation-source": "dist",
3996
- "autoload": {
3997
- "classmap": [
3998
- "src/"
3999
- ]
4000
- },
4001
- "notification-url": "https://packagist.org/downloads/",
4002
- "license": [
4003
- "BSD-3-Clause"
4004
- ],
4005
- "authors": [
4006
- {
4007
- "name": "Arne Blankerts",
4008
- "email": "arne@blankerts.de",
4009
- "role": "Developer"
4010
- }
4011
- ],
4012
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
4013
- "support": {
4014
- "issues": "https://github.com/theseer/tokenizer/issues",
4015
- "source": "https://github.com/theseer/tokenizer/tree/master"
4016
- },
4017
- "install-path": "../theseer/tokenizer"
4018
- },
4019
- {
4020
- "name": "webmozart/assert",
4021
- "version": "1.9.1",
4022
- "version_normalized": "1.9.1.0",
4023
- "source": {
4024
- "type": "git",
4025
- "url": "https://github.com/webmozart/assert.git",
4026
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
4027
- },
4028
- "dist": {
4029
- "type": "zip",
4030
- "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
4031
- "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
4032
- "shasum": ""
4033
- },
4034
- "require": {
4035
- "php": "^5.3.3 || ^7.0 || ^8.0",
4036
- "symfony/polyfill-ctype": "^1.8"
4037
- },
4038
- "conflict": {
4039
- "phpstan/phpstan": "<0.12.20",
4040
- "vimeo/psalm": "<3.9.1"
4041
- },
4042
- "require-dev": {
4043
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
4044
- },
4045
- "time": "2020-07-08T17:02:28+00:00",
4046
- "type": "library",
4047
- "installation-source": "dist",
4048
- "autoload": {
4049
- "psr-4": {
4050
- "Webmozart\\Assert\\": "src/"
4051
- }
4052
- },
4053
- "notification-url": "https://packagist.org/downloads/",
4054
- "license": [
4055
- "MIT"
4056
- ],
4057
- "authors": [
4058
- {
4059
- "name": "Bernhard Schussek",
4060
- "email": "bschussek@gmail.com"
4061
- }
4062
- ],
4063
- "description": "Assertions to validate method input/output with nice error messages.",
4064
- "keywords": [
4065
- "assert",
4066
- "check",
4067
- "validate"
4068
- ],
4069
- "support": {
4070
- "issues": "https://github.com/webmozart/assert/issues",
4071
- "source": "https://github.com/webmozart/assert/tree/master"
4072
- },
4073
- "install-path": "../webmozart/assert"
4074
- },
4075
- {
4076
- "name": "wp-coding-standards/wpcs",
4077
- "version": "2.3.0",
4078
- "version_normalized": "2.3.0.0",
4079
- "source": {
4080
- "type": "git",
4081
- "url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
4082
- "reference": "7da1894633f168fe244afc6de00d141f27517b62"
4083
- },
4084
- "dist": {
4085
- "type": "zip",
4086
- "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7da1894633f168fe244afc6de00d141f27517b62",
4087
- "reference": "7da1894633f168fe244afc6de00d141f27517b62",
4088
- "shasum": ""
4089
- },
4090
- "require": {
4091
- "php": ">=5.4",
4092
- "squizlabs/php_codesniffer": "^3.3.1"
4093
- },
4094
- "require-dev": {
4095
- "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || ^0.6",
4096
- "phpcompatibility/php-compatibility": "^9.0",
4097
- "phpcsstandards/phpcsdevtools": "^1.0",
4098
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
4099
- },
4100
- "suggest": {
4101
- "dealerdirect/phpcodesniffer-composer-installer": "^0.6 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
4102
- },
4103
- "time": "2020-05-13T23:57:56+00:00",
4104
- "type": "phpcodesniffer-standard",
4105
- "installation-source": "dist",
4106
- "notification-url": "https://packagist.org/downloads/",
4107
- "license": [
4108
- "MIT"
4109
- ],
4110
- "authors": [
4111
- {
4112
- "name": "Contributors",
4113
- "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors"
4114
- }
4115
- ],
4116
- "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
4117
- "keywords": [
4118
- "phpcs",
4119
- "standards",
4120
- "wordpress"
4121
- ],
4122
- "support": {
4123
- "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues",
4124
- "source": "https://github.com/WordPress/WordPress-Coding-Standards",
4125
- "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki"
4126
- },
4127
- "install-path": "../wp-coding-standards/wpcs"
4128
- },
4129
- {
4130
- "name": "xrstf/composer-php52",
4131
- "version": "v1.0.20",
4132
- "version_normalized": "1.0.20.0",
4133
- "source": {
4134
- "type": "git",
4135
- "url": "https://github.com/composer-php52/composer-php52.git",
4136
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
4137
- },
4138
- "dist": {
4139
- "type": "zip",
4140
- "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
4141
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
4142
- "shasum": ""
4143
- },
4144
- "time": "2016-04-16T21:52:24+00:00",
4145
- "type": "library",
4146
- "extra": {
4147
- "branch-alias": {
4148
- "dev-default": "1.x-dev"
4149
- }
4150
- },
4151
- "installation-source": "dist",
4152
- "autoload": {
4153
- "psr-0": {
4154
- "xrstf\\Composer52": "lib/"
4155
- }
4156
- },
4157
- "notification-url": "https://packagist.org/downloads/",
4158
- "license": [
4159
- "MIT"
4160
- ],
4161
- "support": {
4162
- "issues": "https://github.com/composer-php52/composer-php52/issues",
4163
- "source": "https://github.com/composer-php52/composer-php52"
4164
- },
4165
- "install-path": "../xrstf/composer-php52"
4166
  }
4167
  ],
4168
- "dev": true,
4169
- "dev-package-names": [
4170
- "10up/wp_mock",
4171
- "antecedent/patchwork",
4172
- "doctrine/instantiator",
4173
- "guzzlehttp/guzzle",
4174
- "guzzlehttp/promises",
4175
- "guzzlehttp/psr7",
4176
- "hamcrest/hamcrest-php",
4177
- "lucatume/args",
4178
- "lucatume/function-mocker",
4179
- "mockery/mockery",
4180
- "myclabs/deep-copy",
4181
- "paragonie/random_compat",
4182
- "phar-io/manifest",
4183
- "phar-io/version",
4184
- "php-coveralls/php-coveralls",
4185
- "phpcompatibility/php-compatibility",
4186
- "phpcompatibility/phpcompatibility-paragonie",
4187
- "phpcompatibility/phpcompatibility-wp",
4188
- "phpdocumentor/reflection-common",
4189
- "phpdocumentor/reflection-docblock",
4190
- "phpdocumentor/type-resolver",
4191
- "phpspec/prophecy",
4192
- "phpunit/php-code-coverage",
4193
- "phpunit/php-file-iterator",
4194
- "phpunit/php-text-template",
4195
- "phpunit/php-timer",
4196
- "phpunit/php-token-stream",
4197
- "phpunit/phpunit",
4198
- "phpunit/phpunit-mock-objects",
4199
- "psr/http-message",
4200
- "psr/log",
4201
- "ralouphie/getallheaders",
4202
- "roave/security-advisories",
4203
- "sebastian/code-unit-reverse-lookup",
4204
- "sebastian/comparator",
4205
- "sebastian/diff",
4206
- "sebastian/environment",
4207
- "sebastian/exporter",
4208
- "sebastian/global-state",
4209
- "sebastian/object-enumerator",
4210
- "sebastian/object-reflector",
4211
- "sebastian/recursion-context",
4212
- "sebastian/resource-operations",
4213
- "sebastian/version",
4214
- "squizlabs/php_codesniffer",
4215
- "symfony/config",
4216
- "symfony/console",
4217
- "symfony/debug",
4218
- "symfony/filesystem",
4219
- "symfony/polyfill-ctype",
4220
- "symfony/polyfill-intl-idn",
4221
- "symfony/polyfill-intl-normalizer",
4222
- "symfony/polyfill-mbstring",
4223
- "symfony/polyfill-php70",
4224
- "symfony/polyfill-php72",
4225
- "symfony/stopwatch",
4226
- "symfony/yaml",
4227
- "theseer/tokenizer",
4228
- "webmozart/assert",
4229
- "wp-coding-standards/wpcs",
4230
- "xrstf/composer-php52"
4231
- ]
4232
  }
1
  {
2
  "packages": [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  {
4
  "name": "composer/installers",
5
  "version": "v1.9.0",
143
  }
144
  ],
145
  "install-path": "./installers"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  }
147
  ],
148
+ "dev": false,
149
+ "dev-package-names": []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  }
vendor/composer/installed.php CHANGED
@@ -1,34 +1,16 @@
1
  <?php return array (
2
  'root' =>
3
  array (
4
- 'pretty_version' => '4.5.1',
5
- 'version' => '4.5.1.0',
6
  'aliases' =>
7
  array (
8
  ),
9
- 'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
10
  'name' => 'mihdan/cyr2lat',
11
  ),
12
  'versions' =>
13
  array (
14
- '10up/wp_mock' =>
15
- array (
16
- 'pretty_version' => '0.3.0',
17
- 'version' => '0.3.0.0',
18
- 'aliases' =>
19
- array (
20
- ),
21
- 'reference' => '64956557e98ee4c8c56cd1e396e822adb4673714',
22
- ),
23
- 'antecedent/patchwork' =>
24
- array (
25
- 'pretty_version' => '2.1.12',
26
- 'version' => '2.1.12.0',
27
- 'aliases' =>
28
- array (
29
- ),
30
- 'reference' => 'b98e046dd4c0acc34a0846604f06f6111654d9ea',
31
- ),
32
  'composer/installers' =>
33
  array (
34
  'pretty_version' => 'v1.9.0',
@@ -38,321 +20,14 @@
38
  ),
39
  'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
40
  ),
41
- 'cordoval/hamcrest-php' =>
42
- array (
43
- 'replaced' =>
44
- array (
45
- 0 => '*',
46
- ),
47
- ),
48
- 'davedevelopment/hamcrest-php' =>
49
- array (
50
- 'replaced' =>
51
- array (
52
- 0 => '*',
53
- ),
54
- ),
55
- 'doctrine/instantiator' =>
56
- array (
57
- 'pretty_version' => '1.0.5',
58
- 'version' => '1.0.5.0',
59
- 'aliases' =>
60
- array (
61
- ),
62
- 'reference' => '8e884e78f9f0eb1329e445619e04456e64d8051d',
63
- ),
64
- 'guzzlehttp/guzzle' =>
65
- array (
66
- 'pretty_version' => '6.5.5',
67
- 'version' => '6.5.5.0',
68
- 'aliases' =>
69
- array (
70
- ),
71
- 'reference' => '9d4290de1cfd701f38099ef7e183b64b4b7b0c5e',
72
- ),
73
- 'guzzlehttp/promises' =>
74
- array (
75
- 'pretty_version' => '1.4.0',
76
- 'version' => '1.4.0.0',
77
- 'aliases' =>
78
- array (
79
- ),
80
- 'reference' => '60d379c243457e073cff02bc323a2a86cb355631',
81
- ),
82
- 'guzzlehttp/psr7' =>
83
- array (
84
- 'pretty_version' => '1.7.0',
85
- 'version' => '1.7.0.0',
86
- 'aliases' =>
87
- array (
88
- ),
89
- 'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3',
90
- ),
91
- 'hamcrest/hamcrest-php' =>
92
- array (
93
- 'pretty_version' => 'v2.0.1',
94
- 'version' => '2.0.1.0',
95
- 'aliases' =>
96
- array (
97
- ),
98
- 'reference' => '8c3d0a3f6af734494ad8f6fbbee0ba92422859f3',
99
- ),
100
- 'kodova/hamcrest-php' =>
101
- array (
102
- 'replaced' =>
103
- array (
104
- 0 => '*',
105
- ),
106
- ),
107
- 'lucatume/args' =>
108
- array (
109
- 'pretty_version' => '1.0.1.1',
110
- 'version' => '1.0.1.1',
111
- 'aliases' =>
112
- array (
113
- ),
114
- 'reference' => '9ab69f5c995813b2dfbb067100ada500ee2893e8',
115
- ),
116
- 'lucatume/function-mocker' =>
117
- array (
118
- 'pretty_version' => 'dev-test-on-windows',
119
- 'version' => 'dev-test-on-windows',
120
- 'aliases' =>
121
- array (
122
- ),
123
- 'reference' => '0383729be9af2f1dba5e553b29c899f10aba8932',
124
- ),
125
  'mihdan/cyr2lat' =>
126
  array (
127
- 'pretty_version' => '4.5.1',
128
- 'version' => '4.5.1.0',
129
- 'aliases' =>
130
- array (
131
- ),
132
- 'reference' => 'dcdc4ea6ae257051707db82563043d9d32bfff65',
133
- ),
134
- 'mockery/mockery' =>
135
- array (
136
- 'pretty_version' => '1.3.3',
137
- 'version' => '1.3.3.0',
138
- 'aliases' =>
139
- array (
140
- ),
141
- 'reference' => '60fa2f67f6e4d3634bb4a45ff3171fa52215800d',
142
- ),
143
- 'myclabs/deep-copy' =>
144
- array (
145
- 'pretty_version' => '1.7.0',
146
- 'version' => '1.7.0.0',
147
- 'aliases' =>
148
- array (
149
- ),
150
- 'reference' => '3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e',
151
- ),
152
- 'paragonie/random_compat' =>
153
- array (
154
- 'pretty_version' => 'v9.99.100',
155
- 'version' => '9.99.100.0',
156
- 'aliases' =>
157
- array (
158
- ),
159
- 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
160
- ),
161
- 'phar-io/manifest' =>
162
- array (
163
- 'pretty_version' => '1.0.1',
164
- 'version' => '1.0.1.0',
165
- 'aliases' =>
166
- array (
167
- ),
168
- 'reference' => '2df402786ab5368a0169091f61a7c1e0eb6852d0',
169
- ),
170
- 'phar-io/version' =>
171
- array (
172
- 'pretty_version' => '1.0.1',
173
- 'version' => '1.0.1.0',
174
- 'aliases' =>
175
- array (
176
- ),
177
- 'reference' => 'a70c0ced4be299a63d32fa96d9281d03e94041df',
178
- ),
179
- 'php-coveralls/php-coveralls' =>
180
- array (
181
- 'pretty_version' => 'v2.4.2',
182
- 'version' => '2.4.2.0',
183
- 'aliases' =>
184
- array (
185
- ),
186
- 'reference' => '8a33ae229da63a0bd22dadae1512af663ce5e559',
187
- ),
188
- 'phpcompatibility/php-compatibility' =>
189
- array (
190
- 'pretty_version' => '9.3.5',
191
- 'version' => '9.3.5.0',
192
- 'aliases' =>
193
- array (
194
- ),
195
- 'reference' => '9fb324479acf6f39452e0655d2429cc0d3914243',
196
- ),
197
- 'phpcompatibility/phpcompatibility-paragonie' =>
198
- array (
199
- 'pretty_version' => '1.3.0',
200
- 'version' => '1.3.0.0',
201
- 'aliases' =>
202
- array (
203
- ),
204
- 'reference' => 'b862bc32f7e860d0b164b199bd995e690b4b191c',
205
- ),
206
- 'phpcompatibility/phpcompatibility-wp' =>
207
- array (
208
- 'pretty_version' => '2.1.0',
209
- 'version' => '2.1.0.0',
210
- 'aliases' =>
211
- array (
212
- ),
213
- 'reference' => '41bef18ba688af638b7310666db28e1ea9158b2f',
214
- ),
215
- 'phpdocumentor/reflection-common' =>
216
- array (
217
- 'pretty_version' => '1.0.1',
218
- 'version' => '1.0.1.0',
219
- 'aliases' =>
220
- array (
221
- ),
222
- 'reference' => '21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6',
223
- ),
224
- 'phpdocumentor/reflection-docblock' =>
225
- array (
226
- 'pretty_version' => '4.3.4',
227
- 'version' => '4.3.4.0',
228
- 'aliases' =>
229
- array (
230
- ),
231
- 'reference' => 'da3fd972d6bafd628114f7e7e036f45944b62e9c',
232
- ),
233
- 'phpdocumentor/type-resolver' =>
234
- array (
235
- 'pretty_version' => '0.5.1',
236
- 'version' => '0.5.1.0',
237
  'aliases' =>
238
  array (
239
  ),
240
- 'reference' => 'cf842904952e64e703800d094cdf34e715a8a3ae',
241
- ),
242
- 'phpspec/prophecy' =>
243
- array (
244
- 'pretty_version' => 'v1.10.3',
245
- 'version' => '1.10.3.0',
246
- 'aliases' =>
247
- array (
248
- ),
249
- 'reference' => '451c3cd1418cf640de218914901e51b064abb093',
250
- ),
251
- 'phpunit/php-code-coverage' =>
252
- array (
253
- 'pretty_version' => '5.3.2',
254
- 'version' => '5.3.2.0',
255
- 'aliases' =>
256
- array (
257
- ),
258
- 'reference' => 'c89677919c5dd6d3b3852f230a663118762218ac',
259
- ),
260
- 'phpunit/php-file-iterator' =>
261
- array (
262
- 'pretty_version' => '1.4.5',
263
- 'version' => '1.4.5.0',
264
- 'aliases' =>
265
- array (
266
- ),
267
- 'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4',
268
- ),
269
- 'phpunit/php-text-template' =>
270
- array (
271
- 'pretty_version' => '1.2.1',
272
- 'version' => '1.2.1.0',
273
- 'aliases' =>
274
- array (
275
- ),
276
- 'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
277
- ),
278
- 'phpunit/php-timer' =>
279
- array (
280
- 'pretty_version' => '1.0.9',
281
- 'version' => '1.0.9.0',
282
- 'aliases' =>
283
- array (
284
- ),
285
- 'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f',
286
- ),
287
- 'phpunit/php-token-stream' =>
288
- array (
289
- 'pretty_version' => '2.0.2',
290
- 'version' => '2.0.2.0',
291
- 'aliases' =>
292
- array (
293
- ),
294
- 'reference' => '791198a2c6254db10131eecfe8c06670700904db',
295
- ),
296
- 'phpunit/phpunit' =>
297
- array (
298
- 'pretty_version' => '6.5.14',
299
- 'version' => '6.5.14.0',
300
- 'aliases' =>
301
- array (
302
- ),
303
- 'reference' => 'bac23fe7ff13dbdb461481f706f0e9fe746334b7',
304
- ),
305
- 'phpunit/phpunit-mock-objects' =>
306
- array (
307
- 'pretty_version' => '5.0.10',
308
- 'version' => '5.0.10.0',
309
- 'aliases' =>
310
- array (
311
- ),
312
- 'reference' => 'cd1cf05c553ecfec36b170070573e540b67d3f1f',
313
- ),
314
- 'psr/http-message' =>
315
- array (
316
- 'pretty_version' => '1.0.1',
317
- 'version' => '1.0.1.0',
318
- 'aliases' =>
319
- array (
320
- ),
321
- 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
322
- ),
323
- 'psr/http-message-implementation' =>
324
- array (
325
- 'provided' =>
326
- array (
327
- 0 => '1.0',
328
- ),
329
- ),
330
- 'psr/log' =>
331
- array (
332
- 'pretty_version' => '1.1.3',
333
- 'version' => '1.1.3.0',
334
- 'aliases' =>
335
- array (
336
- ),
337
- 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
338
- ),
339
- 'ralouphie/getallheaders' =>
340
- array (
341
- 'pretty_version' => '3.0.3',
342
- 'version' => '3.0.3.0',
343
- 'aliases' =>
344
- array (
345
- ),
346
- 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
347
- ),
348
- 'roave/security-advisories' =>
349
- array (
350
- 'pretty_version' => 'dev-master',
351
- 'version' => 'dev-master',
352
- 'aliases' =>
353
- array (
354
- ),
355
- 'reference' => '676668eda60bb8a32bd2a4efcb12c96d6e1c4bc6',
356
  ),
357
  'roundcube/plugin-installer' =>
358
  array (
@@ -361,105 +36,6 @@
361
  0 => '*',
362
  ),
363
  ),
364
- 'sebastian/code-unit-reverse-lookup' =>
365
- array (
366
- 'pretty_version' => '1.0.2',
367
- 'version' => '1.0.2.0',
368
- 'aliases' =>
369
- array (
370
- ),
371
- 'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619',
372
- ),
373
- 'sebastian/comparator' =>
374
- array (
375
- 'pretty_version' => '2.1.3',
376
- 'version' => '2.1.3.0',
377
- 'aliases' =>
378
- array (
379
- ),
380
- 'reference' => '34369daee48eafb2651bea869b4b15d75ccc35f9',
381
- ),
382
- 'sebastian/diff' =>
383
- array (
384
- 'pretty_version' => '2.0.1',
385
- 'version' => '2.0.1.0',
386
- 'aliases' =>
387
- array (
388
- ),
389
- 'reference' => '347c1d8b49c5c3ee30c7040ea6fc446790e6bddd',
390
- ),
391
- 'sebastian/environment' =>
392
- array (
393
- 'pretty_version' => '3.1.0',
394
- 'version' => '3.1.0.0',
395
- 'aliases' =>
396
- array (
397
- ),
398
- 'reference' => 'cd0871b3975fb7fc44d11314fd1ee20925fce4f5',
399
- ),
400
- 'sebastian/exporter' =>
401
- array (
402
- 'pretty_version' => '3.1.3',
403
- 'version' => '3.1.3.0',
404
- 'aliases' =>
405
- array (
406
- ),
407
- 'reference' => '6b853149eab67d4da22291d36f5b0631c0fd856e',
408
- ),
409
- 'sebastian/global-state' =>
410
- array (
411
- 'pretty_version' => '2.0.0',
412
- 'version' => '2.0.0.0',
413
- 'aliases' =>
414
- array (
415
- ),
416
- 'reference' => 'e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4',
417
- ),
418
- 'sebastian/object-enumerator' =>
419
- array (
420
- 'pretty_version' => '3.0.4',
421
- 'version' => '3.0.4.0',
422
- 'aliases' =>
423
- array (
424
- ),
425
- 'reference' => 'e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2',
426
- ),
427
- 'sebastian/object-reflector' =>
428
- array (
429
- 'pretty_version' => '1.1.2',
430
- 'version' => '1.1.2.0',
431
- 'aliases' =>
432
- array (
433
- ),
434
- 'reference' => '9b8772b9cbd456ab45d4a598d2dd1a1bced6363d',
435
- ),
436
- 'sebastian/recursion-context' =>
437
- array (
438
- 'pretty_version' => '3.0.1',
439
- 'version' => '3.0.1.0',
440
- 'aliases' =>
441
- array (
442
- ),
443
- 'reference' => '367dcba38d6e1977be014dc4b22f47a484dac7fb',
444
- ),
445
- 'sebastian/resource-operations' =>
446
- array (
447
- 'pretty_version' => '1.0.0',
448
- 'version' => '1.0.0.0',
449
- 'aliases' =>
450
- array (
451
- ),
452
- 'reference' => 'ce990bb21759f94aeafd30209e8cfcdfa8bc3f52',
453
- ),
454
- 'sebastian/version' =>
455
- array (
456
- 'pretty_version' => '2.0.1',
457
- 'version' => '2.0.1.0',
458
- 'aliases' =>
459
- array (
460
- ),
461
- 'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
462
- ),
463
  'shama/baton' =>
464
  array (
465
  'replaced' =>
@@ -467,158 +43,5 @@
467
  0 => '*',
468
  ),
469
  ),
470
- 'squizlabs/php_codesniffer' =>
471
- array (
472
- 'pretty_version' => '3.5.8',
473
- 'version' => '3.5.8.0',
474
- 'aliases' =>
475
- array (
476
- ),
477
- 'reference' => '9d583721a7157ee997f235f327de038e7ea6dac4',
478
- ),
479
- 'symfony/config' =>
480
- array (
481
- 'pretty_version' => 'v3.3.6',
482
- 'version' => '3.3.6.0',
483
- 'aliases' =>
484
- array (
485
- ),
486
- 'reference' => '54ee12b0dd60f294132cabae6f5da9573d2e5297',
487
- ),
488
- 'symfony/console' =>
489
- array (
490
- 'pretty_version' => 'v3.3.6',
491
- 'version' => '3.3.6.0',
492
- 'aliases' =>
493
- array (
494
- ),
495
- 'reference' => 'b0878233cb5c4391347e5495089c7af11b8e6201',
496
- ),
497
- 'symfony/debug' =>
498
- array (
499
- 'pretty_version' => 'v3.3.6',
500
- 'version' => '3.3.6.0',
501
- 'aliases' =>
502
- array (
503
- ),
504
- 'reference' => '7c13ae8ce1e2adbbd574fc39de7be498e1284e13',
505
- ),
506
- 'symfony/filesystem' =>
507
- array (
508
- 'pretty_version' => 'v3.3.6',
509
- 'version' => '3.3.6.0',
510
- 'aliases' =>
511
- array (
512
- ),
513
- 'reference' => '427987eb4eed764c3b6e38d52a0f87989e010676',
514
- ),
515
- 'symfony/polyfill-ctype' =>
516
- array (
517
- 'pretty_version' => 'v1.19.0',
518
- 'version' => '1.19.0.0',
519
- 'aliases' =>
520
- array (
521
- ),
522
- 'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b',
523
- ),
524
- 'symfony/polyfill-intl-idn' =>
525
- array (
526
- 'pretty_version' => 'v1.19.0',
527
- 'version' => '1.19.0.0',
528
- 'aliases' =>
529
- array (
530
- ),
531
- 'reference' => '4ad5115c0f5d5172a9fe8147675ec6de266d8826',
532
- ),
533
- 'symfony/polyfill-intl-normalizer' =>
534
- array (
535
- 'pretty_version' => 'v1.19.0',
536
- 'version' => '1.19.0.0',
537
- 'aliases' =>
538
- array (
539
- ),
540
- 'reference' => '8db0ae7936b42feb370840cf24de1a144fb0ef27',
541
- ),
542
- 'symfony/polyfill-mbstring' =>
543
- array (
544
- 'pretty_version' => 'v1.13.1',
545
- 'version' => '1.13.1.0',
546
- 'aliases' =>
547
- array (
548
- ),
549
- 'reference' => '7b4aab9743c30be783b73de055d24a39cf4b954f',
550
- ),
551
- 'symfony/polyfill-php70' =>
552
- array (
553
- 'pretty_version' => 'v1.19.0',
554
- 'version' => '1.19.0.0',
555
- 'aliases' =>
556
- array (
557
- ),
558
- 'reference' => '3fe414077251a81a1b15b1c709faf5c2fbae3d4e',
559
- ),
560
- 'symfony/polyfill-php72' =>
561
- array (
562
- 'pretty_version' => 'v1.19.0',
563
- 'version' => '1.19.0.0',
564
- 'aliases' =>
565
- array (
566
- ),
567
- 'reference' => 'beecef6b463b06954638f02378f52496cb84bacc',
568
- ),
569
- 'symfony/stopwatch' =>
570
- array (
571
- 'pretty_version' => 'v3.3.6',
572
- 'version' => '3.3.6.0',
573
- 'aliases' =>
574
- array (
575
- ),
576
- 'reference' => '602a15299dc01556013b07167d4f5d3a60e90d15',
577
- ),
578
- 'symfony/yaml' =>
579
- array (
580
- 'pretty_version' => 'v3.3.6',
581
- 'version' => '3.3.6.0',
582
- 'aliases' =>
583
- array (
584
- ),
585
- 'reference' => 'ddc23324e6cfe066f3dd34a37ff494fa80b617ed',
586
- ),
587
- 'theseer/tokenizer' =>
588
- array (
589
- 'pretty_version' => '1.1.3',
590
- 'version' => '1.1.3.0',
591
- 'aliases' =>
592
- array (
593
- ),
594
- 'reference' => '11336f6f84e16a720dae9d8e6ed5019efa85a0f9',
595
- ),
596
- 'webmozart/assert' =>
597
- array (
598
- 'pretty_version' => '1.9.1',
599
- 'version' => '1.9.1.0',
600
- 'aliases' =>
601
- array (
602
- ),
603
- 'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
604
- ),
605
- 'wp-coding-standards/wpcs' =>
606
- array (
607
- 'pretty_version' => '2.3.0',
608
- 'version' => '2.3.0.0',
609
- 'aliases' =>
610
- array (
611
- ),
612
- 'reference' => '7da1894633f168fe244afc6de00d141f27517b62',
613
- ),
614
- 'xrstf/composer-php52' =>
615
- array (
616
- 'pretty_version' => 'v1.0.20',
617
- 'version' => '1.0.20.0',
618
- 'aliases' =>
619
- array (
620
- ),
621
- 'reference' => 'bd41459d5e27df8d33057842b32377c39e97a5a8',
622
- ),
623
  ),
624
  );
1
  <?php return array (
2
  'root' =>
3
  array (
4
+ 'pretty_version' => '4.6.0',
5
+ 'version' => '4.6.0.0',
6
  'aliases' =>
7
  array (
8
  ),
9
+ 'reference' => 'ca38d58218d3a657bace3ae74192ad7ef28de1ff',
10
  'name' => 'mihdan/cyr2lat',
11
  ),
12
  'versions' =>
13
  array (
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  'composer/installers' =>
15
  array (
16
  'pretty_version' => 'v1.9.0',
20
  ),
21
  'reference' => 'b93bcf0fa1fccb0b7d176b0967d969691cd74cca',
22
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  'mihdan/cyr2lat' =>
24
  array (
25
+ 'pretty_version' => '4.6.0',
26
+ 'version' => '4.6.0.0',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  'aliases' =>
28
  array (
29
  ),
30
+ 'reference' => 'ca38d58218d3a657bace3ae74192ad7ef28de1ff',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  ),
32
  'roundcube/plugin-installer' =>
33
  array (
36
  0 => '*',
37
  ),
38
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  'shama/baton' =>
40
  array (
41
  'replaced' =>
43
  0 => '*',
44
  ),
45
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  ),
47
  );
vendor/composer/installers/composer.json ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "composer/installers",
3
+ "type": "composer-plugin",
4
+ "license": "MIT",
5
+ "description": "A multi-framework Composer library installer",
6
+ "keywords": [
7
+ "installer",
8
+ "Aimeos",
9
+ "AGL",
10
+ "AnnotateCms",
11
+ "Attogram",
12
+ "Bitrix",
13
+ "CakePHP",
14
+ "Chef",
15
+ "Cockpit",
16
+ "CodeIgniter",
17
+ "concrete5",
18
+ "Craft",
19
+ "Croogo",
20
+ "DokuWiki",
21
+ "Dolibarr",
22
+ "Drupal",
23
+ "Elgg",
24
+ "Eliasis",
25
+ "ExpressionEngine",
26
+ "eZ Platform",
27
+ "FuelPHP",
28
+ "Grav",
29
+ "Hurad",
30
+ "ImageCMS",
31
+ "iTop",
32
+ "Joomla",
33
+ "Kanboard",
34
+ "Known",
35
+ "Kohana",
36
+ "Lan Management System",
37
+ "Laravel",
38
+ "Lavalite",
39
+ "Lithium",
40
+ "Magento",
41
+ "majima",
42
+ "Mako",
43
+ "MantisBT",
44
+ "Mautic",
45
+ "Maya",
46
+ "MODX",
47
+ "MODX Evo",
48
+ "MediaWiki",
49
+ "OXID",
50
+ "osclass",
51
+ "MODULEWork",
52
+ "Moodle",
53
+ "Piwik",
54
+ "pxcms",
55
+ "phpBB",
56
+ "Plentymarkets",
57
+ "PPI",
58
+ "Puppet",
59
+ "Porto",
60
+ "RadPHP",
61
+ "ReIndex",
62
+ "Roundcube",
63
+ "shopware",
64
+ "SilverStripe",
65
+ "SMF",
66
+ "SyDES",
67
+ "Sylius",
68
+ "symfony",
69
+ "Thelia",
70
+ "TYPO3",
71
+ "WHMCS",
72
+ "WolfCMS",
73
+ "WordPress",
74
+ "YAWIK",
75
+ "Zend",
76
+ "Zikula"
77
+ ],
78
+ "homepage": "https://composer.github.io/installers/",
79
+ "authors": [
80
+ {
81
+ "name": "Kyle Robinson Young",
82
+ "email": "kyle@dontkry.com",
83
+ "homepage": "https://github.com/shama"
84
+ }
85
+ ],
86
+ "autoload": {
87
+ "psr-4": { "Composer\\Installers\\": "src/Composer/Installers" }
88
+ },
89
+ "extra": {
90
+ "class": "Composer\\Installers\\Plugin",
91
+ "branch-alias": {
92
+ "dev-master": "1.0-dev"
93
+ }
94
+ },
95
+ "replace": {
96
+ "shama/baton": "*",
97
+ "roundcube/plugin-installer": "*"
98
+ },
99
+ "require": {
100
+ "composer-plugin-api": "^1.0 || ^2.0"
101
+ },
102
+ "require-dev": {
103
+ "composer/composer": "1.6.* || 2.0.*@dev",
104
+ "composer/semver": "1.0.* || 2.0.*@dev",
105
+ "phpunit/phpunit": "^4.8.36",
106
+ "sebastian/comparator": "^1.2.4",
107
+ "symfony/process": "^2.3"
108
+ },
109
+ "scripts": {
110
+ "test": "phpunit"
111
+ }
112
+ }
vendor/composer/installers/src/Composer/Installers/AglInstaller.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AglInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'More/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format package name to CamelCase
12
+ */
13
+ public function inflectPackageVars($vars)
14
+ {
15
+ $vars['name'] = preg_replace_callback('/(?:^|_|-)(.?)/', function ($matches) {
16
+ return strtoupper($matches[1]);
17
+ }, $vars['name']);
18
+
19
+ return $vars;
20
+ }
21
+ }
vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AimeosInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'ext/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AnnotateCmsInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'addons/modules/{$name}/',
8
+ 'component' => 'addons/components/{$name}/',
9
+ 'service' => 'addons/services/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AsgardInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'Modules/{$name}/',
8
+ 'theme' => 'Themes/{$name}/'
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * For package type asgard-module, cut off a trailing '-plugin' if present.
15
+ *
16
+ * For package type asgard-theme, cut off a trailing '-theme' if present.
17
+ *
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ if ($vars['type'] === 'asgard-module') {
22
+ return $this->inflectPluginVars($vars);
23
+ }
24
+
25
+ if ($vars['type'] === 'asgard-theme') {
26
+ return $this->inflectThemeVars($vars);
27
+ }
28
+
29
+ return $vars;
30
+ }
31
+
32
+ protected function inflectPluginVars($vars)
33
+ {
34
+ $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
35
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
36
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
37
+
38
+ return $vars;
39
+ }
40
+
41
+ protected function inflectThemeVars($vars)
42
+ {
43
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
44
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
45
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
46
+
47
+ return $vars;
48
+ }
49
+ }
vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class AttogramInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/BaseInstaller.php ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\IO\IOInterface;
5
+ use Composer\Composer;
6
+ use Composer\Package\PackageInterface;
7
+
8
+ abstract class BaseInstaller
9
+ {
10
+ protected $locations = array();
11
+ protected $composer;
12
+ protected $package;
13
+ protected $io;
14
+
15
+ /**
16
+ * Initializes base installer.
17
+ *
18
+ * @param PackageInterface $package
19
+ * @param Composer $composer
20
+ * @param IOInterface $io
21
+ */
22
+ public function __construct(PackageInterface $package = null, Composer $composer = null, IOInterface $io = null)
23
+ {
24
+ $this->composer = $composer;
25
+ $this->package = $package;
26
+ $this->io = $io;
27
+ }
28
+
29
+ /**
30
+ * Return the install path based on package type.
31
+ *
32
+ * @param PackageInterface $package
33
+ * @param string $frameworkType
34
+ * @return string
35
+ */
36
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
37
+ {
38
+ $type = $this->package->getType();
39
+
40
+ $prettyName = $this->package->getPrettyName();
41
+ if (strpos($prettyName, '/') !== false) {
42
+ list($vendor, $name) = explode('/', $prettyName);
43
+ } else {
44
+ $vendor = '';
45
+ $name = $prettyName;
46
+ }
47
+
48
+ $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
49
+
50
+ $extra = $package->getExtra();
51
+ if (!empty($extra['installer-name'])) {
52
+ $availableVars['name'] = $extra['installer-name'];
53
+ }
54
+
55
+ if ($this->composer->getPackage()) {
56
+ $extra = $this->composer->getPackage()->getExtra();
57
+ if (!empty($extra['installer-paths'])) {
58
+ $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor);
59
+ if ($customPath !== false) {
60
+ return $this->templatePath($customPath, $availableVars);
61
+ }
62
+ }
63
+ }
64
+
65
+ $packageType = substr($type, strlen($frameworkType) + 1);
66
+ $locations = $this->getLocations();
67
+ if (!isset($locations[$packageType])) {
68
+ throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
69
+ }
70
+
71
+ return $this->templatePath($locations[$packageType], $availableVars);
72
+ }
73
+
74
+ /**
75
+ * For an installer to override to modify the vars per installer.
76
+ *
77
+ * @param array $vars
78
+ * @return array
79
+ */
80
+ public function inflectPackageVars($vars)
81
+ {
82
+ return $vars;
83
+ }
84
+
85
+ /**
86
+ * Gets the installer's locations
87
+ *
88
+ * @return array
89
+ */
90
+ public function getLocations()
91
+ {
92
+ return $this->locations;
93
+ }
94
+
95
+ /**
96
+ * Replace vars in a path
97
+ *
98
+ * @param string $path
99
+ * @param array $vars
100
+ * @return string
101
+ */
102
+ protected function templatePath($path, array $vars = array())
103
+ {
104
+ if (strpos($path, '{') !== false) {
105
+ extract($vars);
106
+ preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
107
+ if (!empty($matches[1])) {
108
+ foreach ($matches[1] as $var) {
109
+ $path = str_replace('{$' . $var . '}', $$var, $path);
110
+ }
111
+ }
112
+ }
113
+
114
+ return $path;
115
+ }
116
+
117
+ /**
118
+ * Search through a passed paths array for a custom install path.
119
+ *
120
+ * @param array $paths
121
+ * @param string $name
122
+ * @param string $type
123
+ * @param string $vendor = NULL
124
+ * @return string
125
+ */
126
+ protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
127
+ {
128
+ foreach ($paths as $path => $names) {
129
+ $names = (array) $names;
130
+ if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
131
+ return $path;
132
+ }
133
+ }
134
+
135
+ return false;
136
+ }
137
+ }
vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ use Composer\Util\Filesystem;
6
+
7
+ /**
8
+ * Installer for Bitrix Framework. Supported types of extensions:
9
+ * - `bitrix-d7-module` — copy the module to directory `bitrix/modules/<vendor>.<name>`.
10
+ * - `bitrix-d7-component` — copy the component to directory `bitrix/components/<vendor>/<name>`.
11
+ * - `bitrix-d7-template` — copy the template to directory `bitrix/templates/<vendor>_<name>`.
12
+ *
13
+ * You can set custom path to directory with Bitrix kernel in `composer.json`:
14
+ *
15
+ * ```json
16
+ * {
17
+ * "extra": {
18
+ * "bitrix-dir": "s1/bitrix"
19
+ * }
20
+ * }
21
+ * ```
22
+ *
23
+ * @author Nik Samokhvalov <nik@samokhvalov.info>
24
+ * @author Denis Kulichkin <onexhovia@gmail.com>
25
+ */
26
+ class BitrixInstaller extends BaseInstaller
27
+ {
28
+ protected $locations = array(
29
+ 'module' => '{$bitrix_dir}/modules/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
30
+ 'component' => '{$bitrix_dir}/components/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
31
+ 'theme' => '{$bitrix_dir}/templates/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
32
+ 'd7-module' => '{$bitrix_dir}/modules/{$vendor}.{$name}/',
33
+ 'd7-component' => '{$bitrix_dir}/components/{$vendor}/{$name}/',
34
+ 'd7-template' => '{$bitrix_dir}/templates/{$vendor}_{$name}/',
35
+ );
36
+
37
+ /**
38
+ * @var array Storage for informations about duplicates at all the time of installation packages.
39
+ */
40
+ private static $checkedDuplicates = array();
41
+
42
+ /**
43
+ * {@inheritdoc}
44
+ */
45
+ public function inflectPackageVars($vars)
46
+ {
47
+ if ($this->composer->getPackage()) {
48
+ $extra = $this->composer->getPackage()->getExtra();
49
+
50
+ if (isset($extra['bitrix-dir'])) {
51
+ $vars['bitrix_dir'] = $extra['bitrix-dir'];
52
+ }
53
+ }
54
+
55
+ if (!isset($vars['bitrix_dir'])) {
56
+ $vars['bitrix_dir'] = 'bitrix';
57
+ }
58
+
59
+ return parent::inflectPackageVars($vars);
60
+ }
61
+
62
+ /**
63
+ * {@inheritdoc}
64
+ */
65
+ protected function templatePath($path, array $vars = array())
66
+ {
67
+ $templatePath = parent::templatePath($path, $vars);
68
+ $this->checkDuplicates($templatePath, $vars);
69
+
70
+ return $templatePath;
71
+ }
72
+
73
+ /**
74
+ * Duplicates search packages.
75
+ *
76
+ * @param string $path
77
+ * @param array $vars
78
+ */
79
+ protected function checkDuplicates($path, array $vars = array())
80
+ {
81
+ $packageType = substr($vars['type'], strlen('bitrix') + 1);
82
+ $localDir = explode('/', $vars['bitrix_dir']);
83
+ array_pop($localDir);
84
+ $localDir[] = 'local';
85
+ $localDir = implode('/', $localDir);
86
+
87
+ $oldPath = str_replace(
88
+ array('{$bitrix_dir}', '{$name}'),
89
+ array($localDir, $vars['name']),
90
+ $this->locations[$packageType]
91
+ );
92
+
93
+ if (in_array($oldPath, static::$checkedDuplicates)) {
94
+ return;
95
+ }
96
+
97
+ if ($oldPath !== $path && file_exists($oldPath) && $this->io && $this->io->isInteractive()) {
98
+
99
+ $this->io->writeError(' <error>Duplication of packages:</error>');
100
+ $this->io->writeError(' <info>Package ' . $oldPath . ' will be called instead package ' . $path . '</info>');
101
+
102
+ while (true) {
103
+ switch ($this->io->ask(' <info>Delete ' . $oldPath . ' [y,n,?]?</info> ', '?')) {
104
+ case 'y':
105
+ $fs = new Filesystem();
106
+ $fs->removeDirectory($oldPath);
107
+ break 2;
108
+
109
+ case 'n':
110
+ break 2;
111
+
112
+ case '?':
113
+ default:
114
+ $this->io->writeError(array(
115
+ ' y - delete package ' . $oldPath . ' and to continue with the installation',
116
+ ' n - don\'t delete and to continue with the installation',
117
+ ));
118
+ $this->io->writeError(' ? - print help');
119
+ break;
120
+ }
121
+ }
122
+ }
123
+
124
+ static::$checkedDuplicates[] = $oldPath;
125
+ }
126
+ }
vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class BonefishInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'package' => 'Packages/{$vendor}/{$name}/'
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\DependencyResolver\Pool;
5
+
6
+ class CakePHPInstaller extends BaseInstaller
7
+ {
8
+ protected $locations = array(
9
+ 'plugin' => 'Plugin/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name to CamelCase
14
+ */
15
+ public function inflectPackageVars($vars)
16
+ {
17
+ if ($this->matchesCakeVersion('>=', '3.0.0')) {
18
+ return $vars;
19
+ }
20
+
21
+ $nameParts = explode('/', $vars['name']);
22
+ foreach ($nameParts as &$value) {
23
+ $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
24
+ $value = str_replace(array('-', '_'), ' ', $value);
25
+ $value = str_replace(' ', '', ucwords($value));
26
+ }
27
+ $vars['name'] = implode('/', $nameParts);
28
+
29
+ return $vars;
30
+ }
31
+
32
+ /**
33
+ * Change the default plugin location when cakephp >= 3.0
34
+ */
35
+ public function getLocations()
36
+ {
37
+ if ($this->matchesCakeVersion('>=', '3.0.0')) {
38
+ $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/';
39
+ }
40
+ return $this->locations;
41
+ }
42
+
43
+ /**
44
+ * Check if CakePHP version matches against a version
45
+ *
46
+ * @param string $matcher
47
+ * @param string $version
48
+ * @return bool
49
+ */
50
+ protected function matchesCakeVersion($matcher, $version)
51
+ {
52
+ if (class_exists('Composer\Semver\Constraint\MultiConstraint')) {
53
+ $multiClass = 'Composer\Semver\Constraint\MultiConstraint';
54
+ $constraintClass = 'Composer\Semver\Constraint\Constraint';
55
+ } else {
56
+ $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint';
57
+ $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint';
58
+ }
59
+
60
+ $repositoryManager = $this->composer->getRepositoryManager();
61
+ if (! $repositoryManager) {
62
+ return false;
63
+ }
64
+
65
+ $repos = $repositoryManager->getLocalRepository();
66
+ if (!$repos) {
67
+ return false;
68
+ }
69
+
70
+ return $repos->findPackage('cakephp/cakephp', new $constraintClass($matcher, $version)) !== null;
71
+ }
72
+ }
vendor/composer/installers/src/Composer/Installers/ChefInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ChefInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'cookbook' => 'Chef/{$vendor}/{$name}/',
8
+ 'role' => 'Chef/roles/{$name}/',
9
+ );
10
+ }
11
+
vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CiviCrmInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'ext' => 'ext/{$name}/'
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ClanCatsFrameworkInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'ship' => 'CCF/orbit/{$name}/',
8
+ 'theme' => 'CCF/app/themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CockpitInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'cockpit/modules/addons/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format module name.
12
+ *
13
+ * Strip `module-` prefix from package name.
14
+ *
15
+ * @param array @vars
16
+ *
17
+ * @return array
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ if ($vars['type'] == 'cockpit-module') {
22
+ return $this->inflectModuleVars($vars);
23
+ }
24
+
25
+ return $vars;
26
+ }
27
+
28
+ public function inflectModuleVars($vars)
29
+ {
30
+ $vars['name'] = ucfirst(preg_replace('/cockpit-/i', '', $vars['name']));
31
+
32
+ return $vars;
33
+ }
34
+ }
vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CodeIgniterInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'application/libraries/{$name}/',
8
+ 'third-party' => 'application/third_party/{$name}/',
9
+ 'module' => 'application/modules/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class Concrete5Installer extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'core' => 'concrete/',
8
+ 'block' => 'application/blocks/{$name}/',
9
+ 'package' => 'packages/{$name}/',
10
+ 'theme' => 'application/themes/{$name}/',
11
+ 'update' => 'updates/{$name}/',
12
+ );
13
+ }
vendor/composer/installers/src/Composer/Installers/CraftInstaller.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Installer for Craft Plugins
6
+ */
7
+ class CraftInstaller extends BaseInstaller
8
+ {
9
+ const NAME_PREFIX = 'craft';
10
+ const NAME_SUFFIX = 'plugin';
11
+
12
+ protected $locations = array(
13
+ 'plugin' => 'craft/plugins/{$name}/',
14
+ );
15
+
16
+ /**
17
+ * Strip `craft-` prefix and/or `-plugin` suffix from package names
18
+ *
19
+ * @param array $vars
20
+ *
21
+ * @return array
22
+ */
23
+ final public function inflectPackageVars($vars)
24
+ {
25
+ return $this->inflectPluginVars($vars);
26
+ }
27
+
28
+ private function inflectPluginVars($vars)
29
+ {
30
+ $vars['name'] = preg_replace('/-' . self::NAME_SUFFIX . '$/i', '', $vars['name']);
31
+ $vars['name'] = preg_replace('/^' . self::NAME_PREFIX . '-/i', '', $vars['name']);
32
+
33
+ return $vars;
34
+ }
35
+ }
vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class CroogoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'Plugin/{$name}/',
8
+ 'theme' => 'View/Themed/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name to CamelCase
13
+ */
14
+ public function inflectPackageVars($vars)
15
+ {
16
+ $vars['name'] = strtolower(str_replace(array('-', '_'), ' ', $vars['name']));
17
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
18
+
19
+ return $vars;
20
+ }
21
+ }
vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class DecibelInstaller extends BaseInstaller
5
+ {
6
+ /** @var array */
7
+ protected $locations = array(
8
+ 'app' => 'app/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/DframeInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class DframeInstaller extends BaseInstaller
6
+ {
7
+ protected $locations = array(
8
+ 'module' => 'modules/{$vendor}/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class DokuWikiInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'lib/plugins/{$name}/',
8
+ 'template' => 'lib/tpl/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * For package type dokuwiki-plugin, cut off a trailing '-plugin',
15
+ * or leading dokuwiki_ if present.
16
+ *
17
+ * For package type dokuwiki-template, cut off a trailing '-template' if present.
18
+ *
19
+ */
20
+ public function inflectPackageVars($vars)
21
+ {
22
+
23
+ if ($vars['type'] === 'dokuwiki-plugin') {
24
+ return $this->inflectPluginVars($vars);
25
+ }
26
+
27
+ if ($vars['type'] === 'dokuwiki-template') {
28
+ return $this->inflectTemplateVars($vars);
29
+ }
30
+
31
+ return $vars;
32
+ }
33
+
34
+ protected function inflectPluginVars($vars)
35
+ {
36
+ $vars['name'] = preg_replace('/-plugin$/', '', $vars['name']);
37
+ $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
38
+
39
+ return $vars;
40
+ }
41
+
42
+ protected function inflectTemplateVars($vars)
43
+ {
44
+ $vars['name'] = preg_replace('/-template$/', '', $vars['name']);
45
+ $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
46
+
47
+ return $vars;
48
+ }
49
+
50
+ }
vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Class DolibarrInstaller
6
+ *
7
+ * @package Composer\Installers
8
+ * @author Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
9
+ */
10
+ class DolibarrInstaller extends BaseInstaller
11
+ {
12
+ //TODO: Add support for scripts and themes
13
+ protected $locations = array(
14
+ 'module' => 'htdocs/custom/{$name}/',
15
+ );
16
+ }
vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class DrupalInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'core' => 'core/',
8
+ 'module' => 'modules/{$name}/',
9
+ 'theme' => 'themes/{$name}/',
10
+ 'library' => 'libraries/{$name}/',
11
+ 'profile' => 'profiles/{$name}/',
12
+ 'database-driver' => 'drivers/lib/Drupal/Driver/Database/{$name}/',
13
+ 'drush' => 'drush/{$name}/',
14
+ 'custom-theme' => 'themes/custom/{$name}/',
15
+ 'custom-module' => 'modules/custom/{$name}/',
16
+ 'custom-profile' => 'profiles/custom/{$name}/',
17
+ 'drupal-multisite' => 'sites/{$name}/',
18
+ 'console' => 'console/{$name}/',
19
+ 'console-language' => 'console/language/{$name}/',
20
+ 'config' => 'config/sync/',
21
+ );
22
+ }
vendor/composer/installers/src/Composer/Installers/ElggInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ElggInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'mod/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class EliasisInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'component' => 'components/{$name}/',
8
+ 'module' => 'modules/{$name}/',
9
+ 'plugin' => 'plugins/{$name}/',
10
+ 'template' => 'templates/{$name}/',
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\Package\PackageInterface;
5
+
6
+ class ExpressionEngineInstaller extends BaseInstaller
7
+ {
8
+
9
+ protected $locations = array();
10
+
11
+ private $ee2Locations = array(
12
+ 'addon' => 'system/expressionengine/third_party/{$name}/',
13
+ 'theme' => 'themes/third_party/{$name}/',
14
+ );
15
+
16
+ private $ee3Locations = array(
17
+ 'addon' => 'system/user/addons/{$name}/',
18
+ 'theme' => 'themes/user/{$name}/',
19
+ );
20
+
21
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
22
+ {
23
+
24
+ $version = "{$frameworkType}Locations";
25
+ $this->locations = $this->$version;
26
+
27
+ return parent::getInstallPath($package, $frameworkType);
28
+ }
29
+ }
vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class EzPlatformInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'meta-assets' => 'web/assets/ezplatform/',
8
+ 'assets' => 'web/assets/ezplatform/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/FuelInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class FuelInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'fuel/app/modules/{$name}/',
8
+ 'package' => 'fuel/packages/{$name}/',
9
+ 'theme' => 'fuel/app/themes/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class FuelphpInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'component' => 'components/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/GravInstaller.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class GravInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'user/plugins/{$name}/',
8
+ 'theme' => 'user/themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name
13
+ *
14
+ * @param array $vars
15
+ *
16
+ * @return array
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ $restrictedWords = implode('|', array_keys($this->locations));
21
+
22
+ $vars['name'] = strtolower($vars['name']);
23
+ $vars['name'] = preg_replace('/^(?:grav-)?(?:(?:'.$restrictedWords.')-)?(.*?)(?:-(?:'.$restrictedWords.'))?$/ui',
24
+ '$1',
25
+ $vars['name']
26
+ );
27
+
28
+ return $vars;
29
+ }
30
+ }
vendor/composer/installers/src/Composer/Installers/HuradInstaller.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class HuradInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ 'theme' => 'plugins/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name to CamelCase
13
+ */
14
+ public function inflectPackageVars($vars)
15
+ {
16
+ $nameParts = explode('/', $vars['name']);
17
+ foreach ($nameParts as &$value) {
18
+ $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
19
+ $value = str_replace(array('-', '_'), ' ', $value);
20
+ $value = str_replace(' ', '', ucwords($value));
21
+ }
22
+ $vars['name'] = implode('/', $nameParts);
23
+ return $vars;
24
+ }
25
+ }
vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ImageCMSInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'template' => 'templates/{$name}/',
8
+ 'module' => 'application/modules/{$name}/',
9
+ 'library' => 'application/libraries/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/Installer.php ADDED
@@ -0,0 +1,280 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ use Composer\Composer;
6
+ use Composer\Installer\BinaryInstaller;
7
+ use Composer\Installer\LibraryInstaller;
8
+ use Composer\IO\IOInterface;
9
+ use Composer\Package\PackageInterface;
10
+ use Composer\Repository\InstalledRepositoryInterface;
11
+ use Composer\Util\Filesystem;
12
+
13
+ class Installer extends LibraryInstaller
14
+ {
15
+
16
+ /**
17
+ * Package types to installer class map
18
+ *
19
+ * @var array
20
+ */
21
+ private $supportedTypes = array(
22
+ 'aimeos' => 'AimeosInstaller',
23
+ 'asgard' => 'AsgardInstaller',
24
+ 'attogram' => 'AttogramInstaller',
25
+ 'agl' => 'AglInstaller',
26
+ 'annotatecms' => 'AnnotateCmsInstaller',
27
+ 'bitrix' => 'BitrixInstaller',
28
+ 'bonefish' => 'BonefishInstaller',
29
+ 'cakephp' => 'CakePHPInstaller',
30
+ 'chef' => 'ChefInstaller',
31
+ 'civicrm' => 'CiviCrmInstaller',
32
+ 'ccframework' => 'ClanCatsFrameworkInstaller',
33
+ 'cockpit' => 'CockpitInstaller',
34
+ 'codeigniter' => 'CodeIgniterInstaller',
35
+ 'concrete5' => 'Concrete5Installer',
36
+ 'craft' => 'CraftInstaller',
37
+ 'croogo' => 'CroogoInstaller',
38
+ 'dframe' => 'DframeInstaller',
39
+ 'dokuwiki' => 'DokuWikiInstaller',
40
+ 'dolibarr' => 'DolibarrInstaller',
41
+ 'decibel' => 'DecibelInstaller',
42
+ 'drupal' => 'DrupalInstaller',
43
+ 'elgg' => 'ElggInstaller',
44
+ 'eliasis' => 'EliasisInstaller',
45
+ 'ee3' => 'ExpressionEngineInstaller',
46
+ 'ee2' => 'ExpressionEngineInstaller',
47
+ 'ezplatform' => 'EzPlatformInstaller',
48
+ 'fuel' => 'FuelInstaller',
49
+ 'fuelphp' => 'FuelphpInstaller',
50
+ 'grav' => 'GravInstaller',
51
+ 'hurad' => 'HuradInstaller',
52
+ 'imagecms' => 'ImageCMSInstaller',
53
+ 'itop' => 'ItopInstaller',
54
+ 'joomla' => 'JoomlaInstaller',
55
+ 'kanboard' => 'KanboardInstaller',
56
+ 'kirby' => 'KirbyInstaller',
57
+ 'known' => 'KnownInstaller',
58
+ 'kodicms' => 'KodiCMSInstaller',
59
+ 'kohana' => 'KohanaInstaller',
60
+ 'lms' => 'LanManagementSystemInstaller',
61
+ 'laravel' => 'LaravelInstaller',
62
+ 'lavalite' => 'LavaLiteInstaller',
63
+ 'lithium' => 'LithiumInstaller',
64
+ 'magento' => 'MagentoInstaller',
65
+ 'majima' => 'MajimaInstaller',
66
+ 'mantisbt' => 'MantisBTInstaller',
67
+ 'mako' => 'MakoInstaller',
68
+ 'maya' => 'MayaInstaller',
69
+ 'mautic' => 'MauticInstaller',
70
+ 'mediawiki' => 'MediaWikiInstaller',
71
+ 'microweber' => 'MicroweberInstaller',
72
+ 'modulework' => 'MODULEWorkInstaller',
73
+ 'modx' => 'ModxInstaller',
74
+ 'modxevo' => 'MODXEvoInstaller',
75
+ 'moodle' => 'MoodleInstaller',
76
+ 'october' => 'OctoberInstaller',
77
+ 'ontowiki' => 'OntoWikiInstaller',
78
+ 'oxid' => 'OxidInstaller',
79
+ 'osclass' => 'OsclassInstaller',
80
+ 'pxcms' => 'PxcmsInstaller',
81
+ 'phpbb' => 'PhpBBInstaller',
82
+ 'pimcore' => 'PimcoreInstaller',
83
+ 'piwik' => 'PiwikInstaller',
84
+ 'plentymarkets'=> 'PlentymarketsInstaller',
85
+ 'ppi' => 'PPIInstaller',
86
+ 'puppet' => 'PuppetInstaller',
87
+ 'radphp' => 'RadPHPInstaller',
88
+ 'phifty' => 'PhiftyInstaller',
89
+ 'porto' => 'PortoInstaller',
90
+ 'redaxo' => 'RedaxoInstaller',
91
+ 'redaxo5' => 'Redaxo5Installer',
92
+ 'reindex' => 'ReIndexInstaller',
93
+ 'roundcube' => 'RoundcubeInstaller',
94
+ 'shopware' => 'ShopwareInstaller',
95
+ 'sitedirect' => 'SiteDirectInstaller',
96
+ 'silverstripe' => 'SilverStripeInstaller',
97
+ 'smf' => 'SMFInstaller',
98
+ 'sydes' => 'SyDESInstaller',
99
+ 'sylius' => 'SyliusInstaller',
100
+ 'symfony1' => 'Symfony1Installer',
101
+ 'tao' => 'TaoInstaller',
102
+ 'thelia' => 'TheliaInstaller',
103
+ 'tusk' => 'TuskInstaller',
104
+ 'typo3-cms' => 'TYPO3CmsInstaller',
105
+ 'typo3-flow' => 'TYPO3FlowInstaller',
106
+ 'userfrosting' => 'UserFrostingInstaller',
107
+ 'vanilla' => 'VanillaInstaller',
108
+ 'whmcs' => 'WHMCSInstaller',
109
+ 'wolfcms' => 'WolfCMSInstaller',
110
+ 'wordpress' => 'WordPressInstaller',
111
+ 'yawik' => 'YawikInstaller',
112
+ 'zend' => 'ZendInstaller',
113
+ 'zikula' => 'ZikulaInstaller',
114
+ 'prestashop' => 'PrestashopInstaller'
115
+ );
116
+
117
+ /**
118
+ * Installer constructor.
119
+ *
120
+ * Disables installers specified in main composer extra installer-disable
121
+ * list
122
+ *
123
+ * @param IOInterface $io
124
+ * @param Composer $composer
125
+ * @param string $type
126
+ * @param Filesystem|null $filesystem
127
+ * @param BinaryInstaller|null $binaryInstaller
128
+ */
129
+ public function __construct(
130
+ IOInterface $io,
131
+ Composer $composer,
132
+ $type = 'library',
133
+ Filesystem $filesystem = null,
134
+ BinaryInstaller $binaryInstaller = null
135
+ ) {
136
+ parent::__construct($io, $composer, $type, $filesystem,
137
+ $binaryInstaller);
138
+ $this->removeDisabledInstallers();
139
+ }
140
+
141
+ /**
142
+ * {@inheritDoc}
143
+ */
144
+ public function getInstallPath(PackageInterface $package)
145
+ {
146
+ $type = $package->getType();
147
+ $frameworkType = $this->findFrameworkType($type);
148
+
149
+ if ($frameworkType === false) {
150
+ throw new \InvalidArgumentException(
151
+ 'Sorry the package type of this package is not yet supported.'
152
+ );
153
+ }
154
+
155
+ $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
156
+ $installer = new $class($package, $this->composer, $this->getIO());
157
+
158
+ return $installer->getInstallPath($package, $frameworkType);
159
+ }
160
+
161
+ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
162
+ {
163
+ parent::uninstall($repo, $package);
164
+ $installPath = $this->getPackageBasePath($package);
165
+ $this->io->write(sprintf('Deleting %s - %s', $installPath, !file_exists($installPath) ? '<comment>deleted</comment>' : '<error>not deleted</error>'));
166
+ }
167
+
168
+ /**
169
+ * {@inheritDoc}
170
+ */
171
+ public function supports($packageType)
172
+ {
173
+ $frameworkType = $this->findFrameworkType($packageType);
174
+
175
+ if ($frameworkType === false) {
176
+ return false;
177
+ }
178
+
179
+ $locationPattern = $this->getLocationPattern($frameworkType);
180
+
181
+ return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1;
182
+ }
183
+
184
+ /**
185
+ * Finds a supported framework type if it exists and returns it
186
+ *
187
+ * @param string $type
188
+ * @return string
189
+ */
190
+ protected function findFrameworkType($type)
191
+ {
192
+ $frameworkType = false;
193
+
194
+ krsort($this->supportedTypes);
195
+
196
+ foreach ($this->supportedTypes as $key => $val) {
197
+ if ($key === substr($type, 0, strlen($key))) {
198
+ $frameworkType = substr($type, 0, strlen($key));
199
+ break;
200
+ }
201
+ }
202
+
203
+ return $frameworkType;
204
+ }
205
+
206
+ /**
207
+ * Get the second part of the regular expression to check for support of a
208
+ * package type
209
+ *
210
+ * @param string $frameworkType
211
+ * @return string
212
+ */
213
+ protected function getLocationPattern($frameworkType)
214
+ {
215
+ $pattern = false;
216
+ if (!empty($this->supportedTypes[$frameworkType])) {
217
+ $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
218
+ /** @var BaseInstaller $framework */
219
+ $framework = new $frameworkClass(null, $this->composer, $this->getIO());
220
+ $locations = array_keys($framework->getLocations());
221
+ $pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
222
+ }
223
+
224
+ return $pattern ? : '(\w+)';
225
+ }
226
+
227
+ /**
228
+ * Get I/O object
229
+ *
230
+ * @return IOInterface
231
+ */
232
+ private function getIO()
233
+ {
234
+ return $this->io;
235
+ }
236
+
237
+ /**
238
+ * Look for installers set to be disabled in composer's extra config and
239
+ * remove them from the list of supported installers.
240
+ *
241
+ * Globals:
242
+ * - true, "all", and "*" - disable all installers.
243
+ * - false - enable all installers (useful with
244
+ * wikimedia/composer-merge-plugin or similar)
245
+ *
246
+ * @return void
247
+ */
248
+ protected function removeDisabledInstallers()
249
+ {
250
+ $extra = $this->composer->getPackage()->getExtra();
251
+
252
+ if (!isset($extra['installer-disable']) || $extra['installer-disable'] === false) {
253
+ // No installers are disabled
254
+ return;
255
+ }
256
+
257
+ // Get installers to disable
258
+ $disable = $extra['installer-disable'];
259
+
260
+ // Ensure $disabled is an array
261
+ if (!is_array($disable)) {
262
+ $disable = array($disable);
263
+ }
264
+
265
+ // Check which installers should be disabled
266
+ $all = array(true, "all", "*");
267
+ $intersect = array_intersect($all, $disable);
268
+ if (!empty($intersect)) {
269
+ // Disable all installers
270
+ $this->supportedTypes = array();
271
+ } else {
272
+ // Disable specified installers
273
+ foreach ($disable as $key => $installer) {
274
+ if (is_string($installer) && key_exists($installer, $this->supportedTypes)) {
275
+ unset($this->supportedTypes[$installer]);
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
vendor/composer/installers/src/Composer/Installers/ItopInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ItopInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'extensions/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class JoomlaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'component' => 'components/{$name}/',
8
+ 'module' => 'modules/{$name}/',
9
+ 'template' => 'templates/{$name}/',
10
+ 'plugin' => 'plugins/{$name}/',
11
+ 'library' => 'libraries/{$name}/',
12
+ );
13
+
14
+ // TODO: Add inflector for mod_ and com_ names
15
+ }
vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ *
6
+ * Installer for kanboard plugins
7
+ *
8
+ * kanboard.net
9
+ *
10
+ * Class KanboardInstaller
11
+ * @package Composer\Installers
12
+ */
13
+ class KanboardInstaller extends BaseInstaller
14
+ {
15
+ protected $locations = array(
16
+ 'plugin' => 'plugins/{$name}/',
17
+ );
18
+ }
vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KirbyInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'site/plugins/{$name}/',
8
+ 'field' => 'site/fields/{$name}/',
9
+ 'tag' => 'site/tags/{$name}/'
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/KnownInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KnownInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'IdnoPlugins/{$name}/',
8
+ 'theme' => 'Themes/{$name}/',
9
+ 'console' => 'ConsolePlugins/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KodiCMSInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'cms/plugins/{$name}/',
8
+ 'media' => 'cms/media/vendor/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class KohanaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class LanManagementSystemInstaller extends BaseInstaller
6
+ {
7
+
8
+ protected $locations = array(
9
+ 'plugin' => 'plugins/{$name}/',
10
+ 'template' => 'templates/{$name}/',
11
+ 'document-template' => 'documents/templates/{$name}/',
12
+ 'userpanel-module' => 'userpanel/modules/{$name}/',
13
+ );
14
+
15
+ /**
16
+ * Format package name to CamelCase
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
21
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
22
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
23
+
24
+ return $vars;
25
+ }
26
+
27
+ }
vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class LaravelInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'libraries/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class LavaLiteInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'package' => 'packages/{$vendor}/{$name}/',
8
+ 'theme' => 'public/themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class LithiumInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'libraries/{$name}/',
8
+ 'source' => 'libraries/_source/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MODULEWorkInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * An installer to handle MODX Evolution specifics when installing packages.
6
+ */
7
+ class MODXEvoInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'snippet' => 'assets/snippets/{$name}/',
11
+ 'plugin' => 'assets/plugins/{$name}/',
12
+ 'module' => 'assets/modules/{$name}/',
13
+ 'template' => 'assets/templates/{$name}/',
14
+ 'lib' => 'assets/lib/{$name}/'
15
+ );
16
+ }
vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MagentoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'theme' => 'app/design/frontend/{$name}/',
8
+ 'skin' => 'skin/frontend/default/{$name}/',
9
+ 'library' => 'lib/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Plugin/theme installer for majima
6
+ * @author David Neustadt
7
+ */
8
+ class MajimaInstaller extends BaseInstaller
9
+ {
10
+ protected $locations = array(
11
+ 'plugin' => 'plugins/{$name}/',
12
+ );
13
+
14
+ /**
15
+ * Transforms the names
16
+ * @param array $vars
17
+ * @return array
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ return $this->correctPluginName($vars);
22
+ }
23
+
24
+ /**
25
+ * Change hyphenated names to camelcase
26
+ * @param array $vars
27
+ * @return array
28
+ */
29
+ private function correctPluginName($vars)
30
+ {
31
+ $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
32
+ return strtoupper($matches[0][1]);
33
+ }, $vars['name']);
34
+ $vars['name'] = ucfirst($camelCasedName);
35
+ return $vars;
36
+ }
37
+ }
vendor/composer/installers/src/Composer/Installers/MakoInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MakoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'package' => 'app/packages/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\DependencyResolver\Pool;
5
+
6
+ class MantisBTInstaller extends BaseInstaller
7
+ {
8
+ protected $locations = array(
9
+ 'plugin' => 'plugins/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name to CamelCase
14
+ */
15
+ public function inflectPackageVars($vars)
16
+ {
17
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
18
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
19
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
20
+
21
+ return $vars;
22
+ }
23
+ }
vendor/composer/installers/src/Composer/Installers/MauticInstaller.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MauticInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name of mautic-plugins to CamelCase
13
+ */
14
+ public function inflectPackageVars($vars)
15
+ {
16
+ if ($vars['type'] == 'mautic-plugin') {
17
+ $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
18
+ return strtoupper($matches[0][1]);
19
+ }, ucfirst($vars['name']));
20
+ }
21
+
22
+ return $vars;
23
+ }
24
+
25
+ }
vendor/composer/installers/src/Composer/Installers/MayaInstaller.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MayaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format package name.
12
+ *
13
+ * For package type maya-module, cut off a trailing '-module' if present.
14
+ *
15
+ */
16
+ public function inflectPackageVars($vars)
17
+ {
18
+ if ($vars['type'] === 'maya-module') {
19
+ return $this->inflectModuleVars($vars);
20
+ }
21
+
22
+ return $vars;
23
+ }
24
+
25
+ protected function inflectModuleVars($vars)
26
+ {
27
+ $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
28
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
29
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
30
+
31
+ return $vars;
32
+ }
33
+ }
vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MediaWikiInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'core' => 'core/',
8
+ 'extension' => 'extensions/{$name}/',
9
+ 'skin' => 'skins/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name.
14
+ *
15
+ * For package type mediawiki-extension, cut off a trailing '-extension' if present and transform
16
+ * to CamelCase keeping existing uppercase chars.
17
+ *
18
+ * For package type mediawiki-skin, cut off a trailing '-skin' if present.
19
+ *
20
+ */
21
+ public function inflectPackageVars($vars)
22
+ {
23
+
24
+ if ($vars['type'] === 'mediawiki-extension') {
25
+ return $this->inflectExtensionVars($vars);
26
+ }
27
+
28
+ if ($vars['type'] === 'mediawiki-skin') {
29
+ return $this->inflectSkinVars($vars);
30
+ }
31
+
32
+ return $vars;
33
+ }
34
+
35
+ protected function inflectExtensionVars($vars)
36
+ {
37
+ $vars['name'] = preg_replace('/-extension$/', '', $vars['name']);
38
+ $vars['name'] = str_replace('-', ' ', $vars['name']);
39
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
40
+
41
+ return $vars;
42
+ }
43
+
44
+ protected function inflectSkinVars($vars)
45
+ {
46
+ $vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
47
+
48
+ return $vars;
49
+ }
50
+
51
+ }
vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MicroweberInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'userfiles/modules/{$install_item_dir}/',
8
+ 'module-skin' => 'userfiles/modules/{$install_item_dir}/templates/',
9
+ 'template' => 'userfiles/templates/{$install_item_dir}/',
10
+ 'element' => 'userfiles/elements/{$install_item_dir}/',
11
+ 'vendor' => 'vendor/{$install_item_dir}/',
12
+ 'components' => 'components/{$install_item_dir}/'
13
+ );
14
+
15
+ /**
16
+ * Format package name.
17
+ *
18
+ * For package type microweber-module, cut off a trailing '-module' if present
19
+ *
20
+ * For package type microweber-template, cut off a trailing '-template' if present.
21
+ *
22
+ */
23
+ public function inflectPackageVars($vars)
24
+ {
25
+
26
+
27
+ if ($this->package->getTargetDir()) {
28
+ $vars['install_item_dir'] = $this->package->getTargetDir();
29
+ } else {
30
+ $vars['install_item_dir'] = $vars['name'];
31
+ if ($vars['type'] === 'microweber-template') {
32
+ return $this->inflectTemplateVars($vars);
33
+ }
34
+ if ($vars['type'] === 'microweber-templates') {
35
+ return $this->inflectTemplatesVars($vars);
36
+ }
37
+ if ($vars['type'] === 'microweber-core') {
38
+ return $this->inflectCoreVars($vars);
39
+ }
40
+ if ($vars['type'] === 'microweber-adapter') {
41
+ return $this->inflectCoreVars($vars);
42
+ }
43
+ if ($vars['type'] === 'microweber-module') {
44
+ return $this->inflectModuleVars($vars);
45
+ }
46
+ if ($vars['type'] === 'microweber-modules') {
47
+ return $this->inflectModulesVars($vars);
48
+ }
49
+ if ($vars['type'] === 'microweber-skin') {
50
+ return $this->inflectSkinVars($vars);
51
+ }
52
+ if ($vars['type'] === 'microweber-element' or $vars['type'] === 'microweber-elements') {
53
+ return $this->inflectElementVars($vars);
54
+ }
55
+ }
56
+
57
+
58
+ return $vars;
59
+ }
60
+
61
+ protected function inflectTemplateVars($vars)
62
+ {
63
+ $vars['install_item_dir'] = preg_replace('/-template$/', '', $vars['install_item_dir']);
64
+ $vars['install_item_dir'] = preg_replace('/template-$/', '', $vars['install_item_dir']);
65
+
66
+ return $vars;
67
+ }
68
+
69
+ protected function inflectTemplatesVars($vars)
70
+ {
71
+ $vars['install_item_dir'] = preg_replace('/-templates$/', '', $vars['install_item_dir']);
72
+ $vars['install_item_dir'] = preg_replace('/templates-$/', '', $vars['install_item_dir']);
73
+
74
+ return $vars;
75
+ }
76
+
77
+ protected function inflectCoreVars($vars)
78
+ {
79
+ $vars['install_item_dir'] = preg_replace('/-providers$/', '', $vars['install_item_dir']);
80
+ $vars['install_item_dir'] = preg_replace('/-provider$/', '', $vars['install_item_dir']);
81
+ $vars['install_item_dir'] = preg_replace('/-adapter$/', '', $vars['install_item_dir']);
82
+
83
+ return $vars;
84
+ }
85
+
86
+ protected function inflectModuleVars($vars)
87
+ {
88
+ $vars['install_item_dir'] = preg_replace('/-module$/', '', $vars['install_item_dir']);
89
+ $vars['install_item_dir'] = preg_replace('/module-$/', '', $vars['install_item_dir']);
90
+
91
+ return $vars;
92
+ }
93
+
94
+ protected function inflectModulesVars($vars)
95
+ {
96
+ $vars['install_item_dir'] = preg_replace('/-modules$/', '', $vars['install_item_dir']);
97
+ $vars['install_item_dir'] = preg_replace('/modules-$/', '', $vars['install_item_dir']);
98
+
99
+ return $vars;
100
+ }
101
+
102
+ protected function inflectSkinVars($vars)
103
+ {
104
+ $vars['install_item_dir'] = preg_replace('/-skin$/', '', $vars['install_item_dir']);
105
+ $vars['install_item_dir'] = preg_replace('/skin-$/', '', $vars['install_item_dir']);
106
+
107
+ return $vars;
108
+ }
109
+
110
+ protected function inflectElementVars($vars)
111
+ {
112
+ $vars['install_item_dir'] = preg_replace('/-elements$/', '', $vars['install_item_dir']);
113
+ $vars['install_item_dir'] = preg_replace('/elements-$/', '', $vars['install_item_dir']);
114
+ $vars['install_item_dir'] = preg_replace('/-element$/', '', $vars['install_item_dir']);
115
+ $vars['install_item_dir'] = preg_replace('/element-$/', '', $vars['install_item_dir']);
116
+
117
+ return $vars;
118
+ }
119
+ }
vendor/composer/installers/src/Composer/Installers/ModxInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * An installer to handle MODX specifics when installing packages.
6
+ */
7
+ class ModxInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'extra' => 'core/packages/{$name}/'
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class MoodleInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'mod' => 'mod/{$name}/',
8
+ 'admin_report' => 'admin/report/{$name}/',
9
+ 'atto' => 'lib/editor/atto/plugins/{$name}/',
10
+ 'tool' => 'admin/tool/{$name}/',
11
+ 'assignment' => 'mod/assignment/type/{$name}/',
12
+ 'assignsubmission' => 'mod/assign/submission/{$name}/',
13
+ 'assignfeedback' => 'mod/assign/feedback/{$name}/',
14
+ 'auth' => 'auth/{$name}/',
15
+ 'availability' => 'availability/condition/{$name}/',
16
+ 'block' => 'blocks/{$name}/',
17
+ 'booktool' => 'mod/book/tool/{$name}/',
18
+ 'cachestore' => 'cache/stores/{$name}/',
19
+ 'cachelock' => 'cache/locks/{$name}/',
20
+ 'calendartype' => 'calendar/type/{$name}/',
21
+ 'format' => 'course/format/{$name}/',
22
+ 'coursereport' => 'course/report/{$name}/',
23
+ 'customcertelement' => 'mod/customcert/element/{$name}/',
24
+ 'datafield' => 'mod/data/field/{$name}/',
25
+ 'datapreset' => 'mod/data/preset/{$name}/',
26
+ 'editor' => 'lib/editor/{$name}/',
27
+ 'enrol' => 'enrol/{$name}/',
28
+ 'filter' => 'filter/{$name}/',
29
+ 'gradeexport' => 'grade/export/{$name}/',
30
+ 'gradeimport' => 'grade/import/{$name}/',
31
+ 'gradereport' => 'grade/report/{$name}/',
32
+ 'gradingform' => 'grade/grading/form/{$name}/',
33
+ 'local' => 'local/{$name}/',
34
+ 'logstore' => 'admin/tool/log/store/{$name}/',
35
+ 'ltisource' => 'mod/lti/source/{$name}/',
36
+ 'ltiservice' => 'mod/lti/service/{$name}/',
37
+ 'message' => 'message/output/{$name}/',
38
+ 'mnetservice' => 'mnet/service/{$name}/',
39
+ 'plagiarism' => 'plagiarism/{$name}/',
40
+ 'portfolio' => 'portfolio/{$name}/',
41
+ 'qbehaviour' => 'question/behaviour/{$name}/',
42
+ 'qformat' => 'question/format/{$name}/',
43
+ 'qtype' => 'question/type/{$name}/',
44
+ 'quizaccess' => 'mod/quiz/accessrule/{$name}/',
45
+ 'quiz' => 'mod/quiz/report/{$name}/',
46
+ 'report' => 'report/{$name}/',
47
+ 'repository' => 'repository/{$name}/',
48
+ 'scormreport' => 'mod/scorm/report/{$name}/',
49
+ 'search' => 'search/engine/{$name}/',
50
+ 'theme' => 'theme/{$name}/',
51
+ 'tinymce' => 'lib/editor/tinymce/plugins/{$name}/',
52
+ 'profilefield' => 'user/profile/field/{$name}/',
53
+ 'webservice' => 'webservice/{$name}/',
54
+ 'workshopallocation' => 'mod/workshop/allocation/{$name}/',
55
+ 'workshopeval' => 'mod/workshop/eval/{$name}/',
56
+ 'workshopform' => 'mod/workshop/form/{$name}/'
57
+ );
58
+ }
vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class OctoberInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ 'plugin' => 'plugins/{$vendor}/{$name}/',
9
+ 'theme' => 'themes/{$name}/'
10
+ );
11
+
12
+ /**
13
+ * Format package name.
14
+ *
15
+ * For package type october-plugin, cut off a trailing '-plugin' if present.
16
+ *
17
+ * For package type october-theme, cut off a trailing '-theme' if present.
18
+ *
19
+ */
20
+ public function inflectPackageVars($vars)
21
+ {
22
+ if ($vars['type'] === 'october-plugin') {
23
+ return $this->inflectPluginVars($vars);
24
+ }
25
+
26
+ if ($vars['type'] === 'october-theme') {
27
+ return $this->inflectThemeVars($vars);
28
+ }
29
+
30
+ return $vars;
31
+ }
32
+
33
+ protected function inflectPluginVars($vars)
34
+ {
35
+ $vars['name'] = preg_replace('/^oc-|-plugin$/', '', $vars['name']);
36
+ $vars['vendor'] = preg_replace('/[^a-z0-9_]/i', '', $vars['vendor']);
37
+
38
+ return $vars;
39
+ }
40
+
41
+ protected function inflectThemeVars($vars)
42
+ {
43
+ $vars['name'] = preg_replace('/^oc-|-theme$/', '', $vars['name']);
44
+
45
+ return $vars;
46
+ }
47
+ }
vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class OntoWikiInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'extensions/{$name}/',
8
+ 'theme' => 'extensions/themes/{$name}/',
9
+ 'translation' => 'extensions/translations/{$name}/',
10
+ );
11
+
12
+ /**
13
+ * Format package name to lower case and remove ".ontowiki" suffix
14
+ */
15
+ public function inflectPackageVars($vars)
16
+ {
17
+ $vars['name'] = strtolower($vars['name']);
18
+ $vars['name'] = preg_replace('/.ontowiki$/', '', $vars['name']);
19
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
20
+ $vars['name'] = preg_replace('/-translation$/', '', $vars['name']);
21
+
22
+ return $vars;
23
+ }
24
+ }
vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+
5
+ class OsclassInstaller extends BaseInstaller
6
+ {
7
+
8
+ protected $locations = array(
9
+ 'plugin' => 'oc-content/plugins/{$name}/',
10
+ 'theme' => 'oc-content/themes/{$name}/',
11
+ 'language' => 'oc-content/languages/{$name}/',
12
+ );
13
+
14
+ }
vendor/composer/installers/src/Composer/Installers/OxidInstaller.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\Package\PackageInterface;
5
+
6
+ class OxidInstaller extends BaseInstaller
7
+ {
8
+ const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/';
9
+
10
+ protected $locations = array(
11
+ 'module' => 'modules/{$name}/',
12
+ 'theme' => 'application/views/{$name}/',
13
+ 'out' => 'out/{$name}/',
14
+ );
15
+
16
+ /**
17
+ * getInstallPath
18
+ *
19
+ * @param PackageInterface $package
20
+ * @param string $frameworkType
21
+ * @return void
22
+ */
23
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
24
+ {
25
+ $installPath = parent::getInstallPath($package, $frameworkType);
26
+ $type = $this->package->getType();
27
+ if ($type === 'oxid-module') {
28
+ $this->prepareVendorDirectory($installPath);
29
+ }
30
+ return $installPath;
31
+ }
32
+
33
+ /**
34
+ * prepareVendorDirectory
35
+ *
36
+ * Makes sure there is a vendormetadata.php file inside
37
+ * the vendor folder if there is a vendor folder.
38
+ *
39
+ * @param string $installPath
40
+ * @return void
41
+ */
42
+ protected function prepareVendorDirectory($installPath)
43
+ {
44
+ $matches = '';
45
+ $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches);
46
+ if (!$hasVendorDirectory) {
47
+ return;
48
+ }
49
+
50
+ $vendorDirectory = $matches['vendor'];
51
+ $vendorPath = getcwd() . '/modules/' . $vendorDirectory;
52
+ if (!file_exists($vendorPath)) {
53
+ mkdir($vendorPath, 0755, true);
54
+ }
55
+
56
+ $vendorMetaDataPath = $vendorPath . '/vendormetadata.php';
57
+ touch($vendorMetaDataPath);
58
+ }
59
+ }
vendor/composer/installers/src/Composer/Installers/PPIInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PPIInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PhiftyInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'bundle' => 'bundles/{$name}/',
8
+ 'library' => 'libraries/{$name}/',
9
+ 'framework' => 'frameworks/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PhpBBInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'extension' => 'ext/{$vendor}/{$name}/',
8
+ 'language' => 'language/{$name}/',
9
+ 'style' => 'styles/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PimcoreInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Format package name to CamelCase
12
+ */
13
+ public function inflectPackageVars($vars)
14
+ {
15
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
16
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
17
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
18
+
19
+ return $vars;
20
+ }
21
+ }
vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Class PiwikInstaller
6
+ *
7
+ * @package Composer\Installers
8
+ */
9
+ class PiwikInstaller extends BaseInstaller
10
+ {
11
+ /**
12
+ * @var array
13
+ */
14
+ protected $locations = array(
15
+ 'plugin' => 'plugins/{$name}/',
16
+ );
17
+
18
+ /**
19
+ * Format package name to CamelCase
20
+ * @param array $vars
21
+ *
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
27
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
28
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
29
+
30
+ return $vars;
31
+ }
32
+ }
vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PlentymarketsInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => '{$name}/'
8
+ );
9
+
10
+ /**
11
+ * Remove hyphen, "plugin" and format to camelcase
12
+ * @param array $vars
13
+ *
14
+ * @return array
15
+ */
16
+ public function inflectPackageVars($vars)
17
+ {
18
+ $vars['name'] = explode("-", $vars['name']);
19
+ foreach ($vars['name'] as $key => $name) {
20
+ $vars['name'][$key] = ucfirst($vars['name'][$key]);
21
+ if (strcasecmp($name, "Plugin") == 0) {
22
+ unset($vars['name'][$key]);
23
+ }
24
+ }
25
+ $vars['name'] = implode("",$vars['name']);
26
+
27
+ return $vars;
28
+ }
29
+ }
vendor/composer/installers/src/Composer/Installers/Plugin.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ use Composer\Composer;
6
+ use Composer\IO\IOInterface;
7
+ use Composer\Plugin\PluginInterface;
8
+
9
+ class Plugin implements PluginInterface
10
+ {
11
+ private $installer;
12
+
13
+ public function activate(Composer $composer, IOInterface $io)
14
+ {
15
+ $this->installer = new Installer($io, $composer);
16
+ $composer->getInstallationManager()->addInstaller($this->installer);
17
+ }
18
+
19
+ public function deactivate(Composer $composer, IOInterface $io)
20
+ {
21
+ $composer->getInstallationManager()->removeInstaller($this->installer);
22
+ }
23
+
24
+ public function uninstall(Composer $composer, IOInterface $io)
25
+ {
26
+ }
27
+ }
vendor/composer/installers/src/Composer/Installers/PortoInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PortoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'container' => 'app/Containers/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PrestashopInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class PuppetInstaller extends BaseInstaller
6
+ {
7
+
8
+ protected $locations = array(
9
+ 'module' => 'modules/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class PxcmsInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'app/Modules/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * @param array $vars
15
+ *
16
+ * @return array
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ if ($vars['type'] === 'pxcms-module') {
21
+ return $this->inflectModuleVars($vars);
22
+ }
23
+
24
+ if ($vars['type'] === 'pxcms-theme') {
25
+ return $this->inflectThemeVars($vars);
26
+ }
27
+
28
+ return $vars;
29
+ }
30
+
31
+ /**
32
+ * For package type pxcms-module, cut off a trailing '-plugin' if present.
33
+ *
34
+ * return string
35
+ */
36
+ protected function inflectModuleVars($vars)
37
+ {
38
+ $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
39
+ $vars['name'] = str_replace('module-', '', $vars['name']); // strip out module-
40
+ $vars['name'] = preg_replace('/-module$/', '', $vars['name']); // strip out -module
41
+ $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
42
+ $vars['name'] = ucwords($vars['name']); // make module name camelcased
43
+
44
+ return $vars;
45
+ }
46
+
47
+
48
+ /**
49
+ * For package type pxcms-module, cut off a trailing '-plugin' if present.
50
+ *
51
+ * return string
52
+ */
53
+ protected function inflectThemeVars($vars)
54
+ {
55
+ $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
56
+ $vars['name'] = str_replace('theme-', '', $vars['name']); // strip out theme-
57
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']); // strip out -theme
58
+ $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
59
+ $vars['name'] = ucwords($vars['name']); // make module name camelcased
60
+
61
+ return $vars;
62
+ }
63
+ }
vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class RadPHPInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'bundle' => 'src/{$name}/'
8
+ );
9
+
10
+ /**
11
+ * Format package name to CamelCase
12
+ */
13
+ public function inflectPackageVars($vars)
14
+ {
15
+ $nameParts = explode('/', $vars['name']);
16
+ foreach ($nameParts as &$value) {
17
+ $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
18
+ $value = str_replace(array('-', '_'), ' ', $value);
19
+ $value = str_replace(' ', '', ucwords($value));
20
+ }
21
+ $vars['name'] = implode('/', $nameParts);
22
+ return $vars;
23
+ }
24
+ }
vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ReIndexInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'theme' => 'themes/{$name}/',
8
+ 'plugin' => 'plugins/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class Redaxo5Installer extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'addon' => 'redaxo/src/addons/{$name}/',
8
+ 'bestyle-plugin' => 'redaxo/src/addons/be_style/plugins/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class RedaxoInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'addon' => 'redaxo/include/addons/{$name}/',
8
+ 'bestyle-plugin' => 'redaxo/include/addons/be_style/plugins/{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class RoundcubeInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ );
9
+
10
+ /**
11
+ * Lowercase name and changes the name to a underscores
12
+ *
13
+ * @param array $vars
14
+ * @return array
15
+ */
16
+ public function inflectPackageVars($vars)
17
+ {
18
+ $vars['name'] = strtolower(str_replace('-', '_', $vars['name']));
19
+
20
+ return $vars;
21
+ }
22
+ }
vendor/composer/installers/src/Composer/Installers/SMFInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class SMFInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'Sources/{$name}/',
8
+ 'theme' => 'Themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Plugin/theme installer for shopware
6
+ * @author Benjamin Boit
7
+ */
8
+ class ShopwareInstaller extends BaseInstaller
9
+ {
10
+ protected $locations = array(
11
+ 'backend-plugin' => 'engine/Shopware/Plugins/Local/Backend/{$name}/',
12
+ 'core-plugin' => 'engine/Shopware/Plugins/Local/Core/{$name}/',
13
+ 'frontend-plugin' => 'engine/Shopware/Plugins/Local/Frontend/{$name}/',
14
+ 'theme' => 'templates/{$name}/',
15
+ 'plugin' => 'custom/plugins/{$name}/',
16
+ 'frontend-theme' => 'themes/Frontend/{$name}/',
17
+ );
18
+
19
+ /**
20
+ * Transforms the names
21
+ * @param array $vars
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ if ($vars['type'] === 'shopware-theme') {
27
+ return $this->correctThemeName($vars);
28
+ }
29
+
30
+ return $this->correctPluginName($vars);
31
+ }
32
+
33
+ /**
34
+ * Changes the name to a camelcased combination of vendor and name
35
+ * @param array $vars
36
+ * @return array
37
+ */
38
+ private function correctPluginName($vars)
39
+ {
40
+ $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
41
+ return strtoupper($matches[0][1]);
42
+ }, $vars['name']);
43
+
44
+ $vars['name'] = ucfirst($vars['vendor']) . ucfirst($camelCasedName);
45
+
46
+ return $vars;
47
+ }
48
+
49
+ /**
50
+ * Changes the name to a underscore separated name
51
+ * @param array $vars
52
+ * @return array
53
+ */
54
+ private function correctThemeName($vars)
55
+ {
56
+ $vars['name'] = str_replace('-', '_', $vars['name']);
57
+
58
+ return $vars;
59
+ }
60
+ }
vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ use Composer\Package\PackageInterface;
5
+
6
+ class SilverStripeInstaller extends BaseInstaller
7
+ {
8
+ protected $locations = array(
9
+ 'module' => '{$name}/',
10
+ 'theme' => 'themes/{$name}/',
11
+ );
12
+
13
+ /**
14
+ * Return the install path based on package type.
15
+ *
16
+ * Relies on built-in BaseInstaller behaviour with one exception: silverstripe/framework
17
+ * must be installed to 'sapphire' and not 'framework' if the version is <3.0.0
18
+ *
19
+ * @param PackageInterface $package
20
+ * @param string $frameworkType
21
+ * @return string
22
+ */
23
+ public function getInstallPath(PackageInterface $package, $frameworkType = '')
24
+ {
25
+ if (
26
+ $package->getName() == 'silverstripe/framework'
27
+ && preg_match('/^\d+\.\d+\.\d+/', $package->getVersion())
28
+ && version_compare($package->getVersion(), '2.999.999') < 0
29
+ ) {
30
+ return $this->templatePath($this->locations['module'], array('name' => 'sapphire'));
31
+ }
32
+
33
+ return parent::getInstallPath($package, $frameworkType);
34
+ }
35
+ }
vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class SiteDirectInstaller extends BaseInstaller
6
+ {
7
+ protected $locations = array(
8
+ 'module' => 'modules/{$vendor}/{$name}/',
9
+ 'plugin' => 'plugins/{$vendor}/{$name}/'
10
+ );
11
+
12
+ public function inflectPackageVars($vars)
13
+ {
14
+ return $this->parseVars($vars);
15
+ }
16
+
17
+ protected function parseVars($vars)
18
+ {
19
+ $vars['vendor'] = strtolower($vars['vendor']) == 'sitedirect' ? 'SiteDirect' : $vars['vendor'];
20
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
21
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
22
+
23
+ return $vars;
24
+ }
25
+ }
vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class SyDESInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'app/modules/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+
11
+ /**
12
+ * Format module name.
13
+ *
14
+ * Strip `sydes-` prefix and a trailing '-theme' or '-module' from package name if present.
15
+ *
16
+ * @param array @vars
17
+ *
18
+ * @return array
19
+ */
20
+ public function inflectPackageVars($vars)
21
+ {
22
+ if ($vars['type'] == 'sydes-module') {
23
+ return $this->inflectModuleVars($vars);
24
+ }
25
+
26
+ if ($vars['type'] === 'sydes-theme') {
27
+ return $this->inflectThemeVars($vars);
28
+ }
29
+
30
+ return $vars;
31
+ }
32
+
33
+ public function inflectModuleVars($vars)
34
+ {
35
+ $vars['name'] = preg_replace('/(^sydes-|-module$)/i', '', $vars['name']);
36
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
37
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
38
+
39
+ return $vars;
40
+ }
41
+
42
+ protected function inflectThemeVars($vars)
43
+ {
44
+ $vars['name'] = preg_replace('/(^sydes-|-theme$)/', '', $vars['name']);
45
+ $vars['name'] = strtolower($vars['name']);
46
+
47
+ return $vars;
48
+ }
49
+ }
vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class SyliusInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'theme' => 'themes/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Plugin installer for symfony 1.x
6
+ *
7
+ * @author Jérôme Tamarelle <jerome@tamarelle.net>
8
+ */
9
+ class Symfony1Installer extends BaseInstaller
10
+ {
11
+ protected $locations = array(
12
+ 'plugin' => 'plugins/{$name}/',
13
+ );
14
+
15
+ /**
16
+ * Format package name to CamelCase
17
+ */
18
+ public function inflectPackageVars($vars)
19
+ {
20
+ $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
21
+ return strtoupper($matches[0][1]);
22
+ }, $vars['name']);
23
+
24
+ return $vars;
25
+ }
26
+ }
vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * Extension installer for TYPO3 CMS
6
+ *
7
+ * @deprecated since 1.0.25, use https://packagist.org/packages/typo3/cms-composer-installers instead
8
+ *
9
+ * @author Sascha Egerer <sascha.egerer@dkd.de>
10
+ */
11
+ class TYPO3CmsInstaller extends BaseInstaller
12
+ {
13
+ protected $locations = array(
14
+ 'extension' => 'typo3conf/ext/{$name}/',
15
+ );
16
+ }
vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * An installer to handle TYPO3 Flow specifics when installing packages.
6
+ */
7
+ class TYPO3FlowInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'package' => 'Packages/Application/{$name}/',
11
+ 'framework' => 'Packages/Framework/{$name}/',
12
+ 'plugin' => 'Packages/Plugins/{$name}/',
13
+ 'site' => 'Packages/Sites/{$name}/',
14
+ 'boilerplate' => 'Packages/Boilerplates/{$name}/',
15
+ 'build' => 'Build/{$name}/',
16
+ );
17
+
18
+ /**
19
+ * Modify the package name to be a TYPO3 Flow style key.
20
+ *
21
+ * @param array $vars
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ $autoload = $this->package->getAutoload();
27
+ if (isset($autoload['psr-0']) && is_array($autoload['psr-0'])) {
28
+ $namespace = key($autoload['psr-0']);
29
+ $vars['name'] = str_replace('\\', '.', $namespace);
30
+ }
31
+ if (isset($autoload['psr-4']) && is_array($autoload['psr-4'])) {
32
+ $namespace = key($autoload['psr-4']);
33
+ $vars['name'] = rtrim(str_replace('\\', '.', $namespace), '.');
34
+ }
35
+
36
+ return $vars;
37
+ }
38
+ }
vendor/composer/installers/src/Composer/Installers/TaoInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ /**
5
+ * An installer to handle TAO extensions.
6
+ */
7
+ class TaoInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'extension' => '{$name}'
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class TheliaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'local/modules/{$name}/',
8
+ 'frontoffice-template' => 'templates/frontOffice/{$name}/',
9
+ 'backoffice-template' => 'templates/backOffice/{$name}/',
10
+ 'email-template' => 'templates/email/{$name}/',
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/TuskInstaller.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+ /**
4
+ * Composer installer for 3rd party Tusk utilities
5
+ * @author Drew Ewing <drew@phenocode.com>
6
+ */
7
+ class TuskInstaller extends BaseInstaller
8
+ {
9
+ protected $locations = array(
10
+ 'task' => '.tusk/tasks/{$name}/',
11
+ 'command' => '.tusk/commands/{$name}/',
12
+ 'asset' => 'assets/tusk/{$name}/',
13
+ );
14
+ }
vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class UserFrostingInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'sprinkle' => 'app/sprinkles/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class VanillaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'plugins/{$name}/',
8
+ 'theme' => 'themes/{$name}/',
9
+ );
10
+ }
vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class VgmcpInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'bundle' => 'src/{$vendor}/{$name}/',
8
+ 'theme' => 'themes/{$name}/'
9
+ );
10
+
11
+ /**
12
+ * Format package name.
13
+ *
14
+ * For package type vgmcp-bundle, cut off a trailing '-bundle' if present.
15
+ *
16
+ * For package type vgmcp-theme, cut off a trailing '-theme' if present.
17
+ *
18
+ */
19
+ public function inflectPackageVars($vars)
20
+ {
21
+ if ($vars['type'] === 'vgmcp-bundle') {
22
+ return $this->inflectPluginVars($vars);
23
+ }
24
+
25
+ if ($vars['type'] === 'vgmcp-theme') {
26
+ return $this->inflectThemeVars($vars);
27
+ }
28
+
29
+ return $vars;
30
+ }
31
+
32
+ protected function inflectPluginVars($vars)
33
+ {
34
+ $vars['name'] = preg_replace('/-bundle$/', '', $vars['name']);
35
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
36
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
37
+
38
+ return $vars;
39
+ }
40
+
41
+ protected function inflectThemeVars($vars)
42
+ {
43
+ $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
44
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
45
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
46
+
47
+ return $vars;
48
+ }
49
+ }
vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Composer\Installers;
4
+
5
+ class WHMCSInstaller extends BaseInstaller
6
+ {
7
+ protected $locations = array(
8
+ 'addons' => 'modules/addons/{$vendor}_{$name}/',
9
+ 'fraud' => 'modules/fraud/{$vendor}_{$name}/',
10
+ 'gateways' => 'modules/gateways/{$vendor}_{$name}/',
11
+ 'notifications' => 'modules/notifications/{$vendor}_{$name}/',
12
+ 'registrars' => 'modules/registrars/{$vendor}_{$name}/',
13
+ 'reports' => 'modules/reports/{$vendor}_{$name}/',
14
+ 'security' => 'modules/security/{$vendor}_{$name}/',
15
+ 'servers' => 'modules/servers/{$vendor}_{$name}/',
16
+ 'social' => 'modules/social/{$vendor}_{$name}/',
17
+ 'support' => 'modules/support/{$vendor}_{$name}/',
18
+ 'templates' => 'templates/{$vendor}_{$name}/',
19
+ 'includes' => 'includes/{$vendor}_{$name}/'
20
+ );
21
+ }
vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class WolfCMSInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'wolf/plugins/{$name}/',
8
+ );
9
+ }
vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class WordPressInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'plugin' => 'wp-content/plugins/{$name}/',
8
+ 'theme' => 'wp-content/themes/{$name}/',
9
+ 'muplugin' => 'wp-content/mu-plugins/{$name}/',
10
+ 'dropin' => 'wp-content/{$name}/',
11
+ );
12
+ }
vendor/composer/installers/src/Composer/Installers/YawikInstaller.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Created by PhpStorm.
4
+ * User: cbleek
5
+ * Date: 25.03.16
6
+ * Time: 20:55
7
+ */
8
+
9
+ namespace Composer\Installers;
10
+
11
+
12
+ class YawikInstaller extends BaseInstaller
13
+ {
14
+ protected $locations = array(
15
+ 'module' => 'module/{$name}/',
16
+ );
17
+
18
+ /**
19
+ * Format package name to CamelCase
20
+ * @param array $vars
21
+ *
22
+ * @return array
23
+ */
24
+ public function inflectPackageVars($vars)
25
+ {
26
+ $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
27
+ $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
28
+ $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
29
+
30
+ return $vars;
31
+ }
32
+ }
vendor/composer/installers/src/Composer/Installers/ZendInstaller.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ZendInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'library' => 'library/{$name}/',
8
+ 'extra' => 'extras/library/{$name}/',
9
+ 'module' => 'module/{$name}/',
10
+ );
11
+ }
vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Composer\Installers;
3
+
4
+ class ZikulaInstaller extends BaseInstaller
5
+ {
6
+ protected $locations = array(
7
+ 'module' => 'modules/{$vendor}-{$name}/',
8
+ 'theme' => 'themes/{$vendor}-{$name}/'
9
+ );
10
+ }
vendor/composer/installers/src/bootstrap.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ function includeIfExists($file)
3
+ {
4
+ if (file_exists($file)) {
5
+ return include $file;
6
+ }
7
+ }
8
+ if ((!$loader = includeIfExists(__DIR__ . '/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__ . '/../../../autoload.php'))) {
9
+ die('You must set up the project dependencies, run the following commands:'.PHP_EOL.
10
+ 'curl -s http://getcomposer.org/installer | php'.PHP_EOL.
11
+ 'php composer.phar install'.PHP_EOL);
12
+ }
13
+ return $loader;
vendor/doctrine/instantiator/.scrutinizer.yml DELETED
@@ -1,46 +0,0 @@
1
- before_commands:
2
- - "composer install --prefer-source"
3
-
4
- tools:
5
- external_code_coverage:
6
- timeout: 600
7
- php_code_coverage:
8
- enabled: true
9
- test_command: ./vendor/bin/phpunit
10
- php_code_sniffer:
11
- enabled: true
12
- config:
13
- standard: PSR2
14
- filter:
15
- paths: ["src/*", "tests/*"]
16
- php_cpd:
17
- enabled: true
18
- excluded_dirs: ["build/*", "tests", "vendor"]
19
- php_cs_fixer:
20
- enabled: true
21
- config:
22
- level: all
23
- filter:
24
- paths: ["src/*", "tests/*"]
25
- php_loc:
26
- enabled: true
27
- excluded_dirs: ["build", "tests", "vendor"]
28
- php_mess_detector:
29
- enabled: true
30
- config:
31
- ruleset: phpmd.xml.dist
32
- design_rules: { eval_expression: false }
33
- filter:
34
- paths: ["src/*"]
35
- php_pdepend:
36
- enabled: true
37
- excluded_dirs: ["build", "tests", "vendor"]
38
- php_analyzer:
39
- enabled: true
40
- filter:
41
- paths: ["src/*", "tests/*"]
42
- php_hhvm:
43
- enabled: true
44
- filter:
45
- paths: ["src/*", "tests/*"]
46
- sensiolabs_security_checker: true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/doctrine/instantiator/.travis.install.sh DELETED
@@ -1,14 +0,0 @@
1
- #!/bin/sh
2
- set -x
3
- if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then
4
- curl -sS https://getcomposer.org/installer > composer-installer.php
5
- hhvm composer-installer.php
6
- hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source
7
- elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then
8
- composer self-update
9
- composer update --prefer-source --no-dev
10
- composer dump-autoload
11
- else
12
- composer self-update
13
- composer update --prefer-source
14
- fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/doctrine/instantiator/CONTRIBUTING.md DELETED
@@ -1,35 +0,0 @@
1
- # Contributing
2
-
3
- * Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
4
- * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
5
- * Any contribution must provide tests for additional introduced conditions
6
- * Any un-confirmed issue needs a failing test case before being accepted
7
- * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
8
-
9
- ## Installation
10
-
11
- To install the project and run the tests, you need to clone it first:
12
-
13
- ```sh
14
- $ git clone git://github.com/doctrine/instantiator.git
15
- ```
16
-
17
- You will then need to run a composer installation:
18
-
19
- ```sh
20
- $ cd Instantiator
21
- $ curl -s https://getcomposer.org/installer | php
22
- $ php composer.phar update
23
- ```
24
-
25
- ## Testing
26
-
27
- The PHPUnit version to be used is the one installed as a dev- dependency via composer:
28
-
29
- ```sh
30
- $ ./vendor/bin/phpunit
31
- ```
32
-
33
- Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement
34
- won't be merged.
35
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/doctrine/instantiator/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2014 Doctrine Project
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of
4
- this software and associated documentation files (the "Software"), to deal in
5
- the Software without restriction, including without limitation the rights to
6
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
- of the Software, and to permit persons to whom the Software is furnished to do
8
- so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/doctrine/instantiator/phpmd.xml.dist DELETED
@@ -1,27 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" ?>
2
- <ruleset
3
- name="Instantiator rules"
4
- xmlns="http://pmd.sf.net/ruleset/1.0.0"
5
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6
- xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
7
- xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
8
- >
9
- <rule ref="rulesets/cleancode.xml">
10
- <!-- static access is used for caching purposes -->
11
- <exclude name="StaticAccess"/>
12
- </rule>
13
- <rule ref="rulesets/codesize.xml"/>
14
- <rule ref="rulesets/controversial.xml"/>
15
- <rule ref="rulesets/design.xml"/>
16
- <rule ref="rulesets/naming.xml"/>
17
- <rule ref="rulesets/unusedcode.xml"/>
18
- <rule
19
- name="NPathComplexity"
20
- message="The {0} {1}() has an NPath complexity of {2}. The configured NPath complexity threshold is {3}."
21
- class="PHP_PMD_Rule_Design_NpathComplexity"
22
- >
23
- <properties>
24
- <property name="minimum" description="The npath reporting threshold" value="10"/>
25
- </properties>
26
- </rule>
27
- </ruleset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/doctrine/instantiator/phpunit.xml.dist DELETED
@@ -1,22 +0,0 @@
1
- <?xml version="1.0"?>
2
- <phpunit
3
- bootstrap="./vendor/autoload.php"
4
- colors="true"
5
- convertErrorsToExceptions="true"
6
- convertNoticesToExceptions="true"
7
- convertWarningsToExceptions="true"
8
- verbose="true"
9
- stopOnFailure="false"
10
- processIsolation="false"
11
- backupGlobals="false"
12
- syntaxCheck="true"
13
- >
14
- <testsuite name="Doctrine\Instantiator tests">
15
- <directory>./tests/DoctrineTest/InstantiatorTest</directory>
16
- </testsuite>
17
- <filter>
18
- <whitelist addUncoveredFilesFromWhitelist="true">
19
- <directory suffix=".php">./src</directory>
20
- </whitelist>
21
- </filter>
22
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/.php_cs DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
-
3
- $config = PhpCsFixer\Config::create()
4
- ->setRiskyAllowed(true)
5
- ->setRules([
6
- '@PSR2' => true,
7
- 'array_syntax' => ['syntax' => 'short'],
8
- 'declare_strict_types' => false,
9
- 'concat_space' => ['spacing'=>'one'],
10
- 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
11
- 'ordered_imports' => true,
12
- // 'phpdoc_align' => ['align'=>'vertical'],
13
- // 'native_function_invocation' => true,
14
- ])
15
- ->setFinder(
16
- PhpCsFixer\Finder::create()
17
- ->in(__DIR__.'/src')
18
- ->in(__DIR__.'/tests')
19
- ->name('*.php')
20
- )
21
- ;
22
-
23
- return $config;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/Dockerfile DELETED
@@ -1,18 +0,0 @@
1
- FROM composer:latest as setup
2
-
3
- RUN mkdir /guzzle
4
-
5
- WORKDIR /guzzle
6
-
7
- RUN set -xe \
8
- && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár <mark.sagikazar@gmail.com>" --no-interaction \
9
- && composer require guzzlehttp/guzzle
10
-
11
-
12
- FROM php:7.3
13
-
14
- RUN mkdir /guzzle
15
-
16
- WORKDIR /guzzle
17
-
18
- COPY --from=setup /guzzle /guzzle
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/UPGRADING.md DELETED
@@ -1,1203 +0,0 @@
1
- Guzzle Upgrade Guide
2
- ====================
3
-
4
- 5.0 to 6.0
5
- ----------
6
-
7
- Guzzle now uses [PSR-7](http://www.php-fig.org/psr/psr-7/) for HTTP messages.
8
- Due to the fact that these messages are immutable, this prompted a refactoring
9
- of Guzzle to use a middleware based system rather than an event system. Any
10
- HTTP message interaction (e.g., `GuzzleHttp\Message\Request`) need to be
11
- updated to work with the new immutable PSR-7 request and response objects. Any
12
- event listeners or subscribers need to be updated to become middleware
13
- functions that wrap handlers (or are injected into a
14
- `GuzzleHttp\HandlerStack`).
15
-
16
- - Removed `GuzzleHttp\BatchResults`
17
- - Removed `GuzzleHttp\Collection`
18
- - Removed `GuzzleHttp\HasDataTrait`
19
- - Removed `GuzzleHttp\ToArrayInterface`
20
- - The `guzzlehttp/streams` dependency has been removed. Stream functionality
21
- is now present in the `GuzzleHttp\Psr7` namespace provided by the
22
- `guzzlehttp/psr7` package.
23
- - Guzzle no longer uses ReactPHP promises and now uses the
24
- `guzzlehttp/promises` library. We use a custom promise library for three
25
- significant reasons:
26
- 1. React promises (at the time of writing this) are recursive. Promise
27
- chaining and promise resolution will eventually blow the stack. Guzzle
28
- promises are not recursive as they use a sort of trampolining technique.
29
- Note: there has been movement in the React project to modify promises to
30
- no longer utilize recursion.
31
- 2. Guzzle needs to have the ability to synchronously block on a promise to
32
- wait for a result. Guzzle promises allows this functionality (and does
33
- not require the use of recursion).
34
- 3. Because we need to be able to wait on a result, doing so using React
35
- promises requires wrapping react promises with RingPHP futures. This
36
- overhead is no longer needed, reducing stack sizes, reducing complexity,
37
- and improving performance.
38
- - `GuzzleHttp\Mimetypes` has been moved to a function in
39
- `GuzzleHttp\Psr7\mimetype_from_extension` and
40
- `GuzzleHttp\Psr7\mimetype_from_filename`.
41
- - `GuzzleHttp\Query` and `GuzzleHttp\QueryParser` have been removed. Query
42
- strings must now be passed into request objects as strings, or provided to
43
- the `query` request option when creating requests with clients. The `query`
44
- option uses PHP's `http_build_query` to convert an array to a string. If you
45
- need a different serialization technique, you will need to pass the query
46
- string in as a string. There are a couple helper functions that will make
47
- working with query strings easier: `GuzzleHttp\Psr7\parse_query` and
48
- `GuzzleHttp\Psr7\build_query`.
49
- - Guzzle no longer has a dependency on RingPHP. Due to the use of a middleware
50
- system based on PSR-7, using RingPHP and it's middleware system as well adds
51
- more complexity than the benefits it provides. All HTTP handlers that were
52
- present in RingPHP have been modified to work directly with PSR-7 messages
53
- and placed in the `GuzzleHttp\Handler` namespace. This significantly reduces
54
- complexity in Guzzle, removes a dependency, and improves performance. RingPHP
55
- will be maintained for Guzzle 5 support, but will no longer be a part of
56
- Guzzle 6.
57
- - As Guzzle now uses a middleware based systems the event system and RingPHP
58
- integration has been removed. Note: while the event system has been removed,
59
- it is possible to add your own type of event system that is powered by the
60
- middleware system.
61
- - Removed the `Event` namespace.
62
- - Removed the `Subscriber` namespace.
63
- - Removed `Transaction` class
64
- - Removed `RequestFsm`
65
- - Removed `RingBridge`
66
- - `GuzzleHttp\Subscriber\Cookie` is now provided by
67
- `GuzzleHttp\Middleware::cookies`
68
- - `GuzzleHttp\Subscriber\HttpError` is now provided by
69
- `GuzzleHttp\Middleware::httpError`
70
- - `GuzzleHttp\Subscriber\History` is now provided by
71
- `GuzzleHttp\Middleware::history`
72
- - `GuzzleHttp\Subscriber\Mock` is now provided by
73
- `GuzzleHttp\Handler\MockHandler`
74
- - `GuzzleHttp\Subscriber\Prepare` is now provided by
75
- `GuzzleHttp\PrepareBodyMiddleware`
76
- - `GuzzleHttp\Subscriber\Redirect` is now provided by
77
- `GuzzleHttp\RedirectMiddleware`
78
- - Guzzle now uses `Psr\Http\Message\UriInterface` (implements in
79
- `GuzzleHttp\Psr7\Uri`) for URI support. `GuzzleHttp\Url` is now gone.
80
- - Static functions in `GuzzleHttp\Utils` have been moved to namespaced
81
- functions under the `GuzzleHttp` namespace. This requires either a Composer
82
- based autoloader or you to include functions.php.
83
- - `GuzzleHttp\ClientInterface::getDefaultOption` has been renamed to
84
- `GuzzleHttp\ClientInterface::getConfig`.
85
- - `GuzzleHttp\ClientInterface::setDefaultOption` has been removed.
86
- - The `json` and `xml` methods of response objects has been removed. With the
87
- migration to strictly adhering to PSR-7 as the interface for Guzzle messages,
88
- adding methods to message interfaces would actually require Guzzle messages
89
- to extend from PSR-7 messages rather then work with them directly.
90
-
91
- ## Migrating to middleware
92
-
93
- The change to PSR-7 unfortunately required significant refactoring to Guzzle
94
- due to the fact that PSR-7 messages are immutable. Guzzle 5 relied on an event
95
- system from plugins. The event system relied on mutability of HTTP messages and
96
- side effects in order to work. With immutable messages, you have to change your
97
- workflow to become more about either returning a value (e.g., functional
98
- middlewares) or setting a value on an object. Guzzle v6 has chosen the
99
- functional middleware approach.
100
-
101
- Instead of using the event system to listen for things like the `before` event,
102
- you now create a stack based middleware function that intercepts a request on
103
- the way in and the promise of the response on the way out. This is a much
104
- simpler and more predictable approach than the event system and works nicely
105
- with PSR-7 middleware. Due to the use of promises, the middleware system is
106
- also asynchronous.
107
-
108
- v5:
109
-
110
- ```php
111
- use GuzzleHttp\Event\BeforeEvent;
112
- $client = new GuzzleHttp\Client();
113
- // Get the emitter and listen to the before event.
114
- $client->getEmitter()->on('before', function (BeforeEvent $e) {
115
- // Guzzle v5 events relied on mutation
116
- $e->getRequest()->setHeader('X-Foo', 'Bar');
117
- });
118
- ```
119
-
120
- v6:
121
-
122
- In v6, you can modify the request before it is sent using the `mapRequest`
123
- middleware. The idiomatic way in v6 to modify the request/response lifecycle is
124
- to setup a handler middleware stack up front and inject the handler into a
125
- client.
126
-
127
- ```php
128
- use GuzzleHttp\Middleware;
129
- // Create a handler stack that has all of the default middlewares attached
130
- $handler = GuzzleHttp\HandlerStack::create();
131
- // Push the handler onto the handler stack
132
- $handler->push(Middleware::mapRequest(function (RequestInterface $request) {
133
- // Notice that we have to return a request object
134
- return $request->withHeader('X-Foo', 'Bar');
135
- }));
136
- // Inject the handler into the client
137
- $client = new GuzzleHttp\Client(['handler' => $handler]);
138
- ```
139
-
140
- ## POST Requests
141
-
142
- This version added the [`form_params`](http://guzzle.readthedocs.org/en/latest/request-options.html#form_params)
143
- and `multipart` request options. `form_params` is an associative array of
144
- strings or array of strings and is used to serialize an
145
- `application/x-www-form-urlencoded` POST request. The
146
- [`multipart`](http://guzzle.readthedocs.org/en/latest/request-options.html#multipart)
147
- option is now used to send a multipart/form-data POST request.
148
-
149
- `GuzzleHttp\Post\PostFile` has been removed. Use the `multipart` option to add
150
- POST files to a multipart/form-data request.
151
-
152
- The `body` option no longer accepts an array to send POST requests. Please use
153
- `multipart` or `form_params` instead.
154
-
155
- The `base_url` option has been renamed to `base_uri`.
156
-
157
- 4.x to 5.0
158
- ----------
159
-
160
- ## Rewritten Adapter Layer
161
-
162
- Guzzle now uses [RingPHP](http://ringphp.readthedocs.org/en/latest) to send
163
- HTTP requests. The `adapter` option in a `GuzzleHttp\Client` constructor
164
- is still supported, but it has now been renamed to `handler`. Instead of
165
- passing a `GuzzleHttp\Adapter\AdapterInterface`, you must now pass a PHP
166
- `callable` that follows the RingPHP specification.
167
-
168
- ## Removed Fluent Interfaces
169
-
170
- [Fluent interfaces were removed](http://ocramius.github.io/blog/fluent-interfaces-are-evil)
171
- from the following classes:
172
-
173
- - `GuzzleHttp\Collection`
174
- - `GuzzleHttp\Url`
175
- - `GuzzleHttp\Query`
176
- - `GuzzleHttp\Post\PostBody`
177
- - `GuzzleHttp\Cookie\SetCookie`
178
-
179
- ## Removed functions.php
180
-
181
- Removed "functions.php", so that Guzzle is truly PSR-4 compliant. The following
182
- functions can be used as replacements.
183
-
184
- - `GuzzleHttp\json_decode` -> `GuzzleHttp\Utils::jsonDecode`
185
- - `GuzzleHttp\get_path` -> `GuzzleHttp\Utils::getPath`
186
- - `GuzzleHttp\Utils::setPath` -> `GuzzleHttp\set_path`
187
- - `GuzzleHttp\Pool::batch` -> `GuzzleHttp\batch`. This function is, however,
188
- deprecated in favor of using `GuzzleHttp\Pool::batch()`.
189
-
190
- The "procedural" global client has been removed with no replacement (e.g.,
191
- `GuzzleHttp\get()`, `GuzzleHttp\post()`, etc.). Use a `GuzzleHttp\Client`
192
- object as a replacement.
193
-
194
- ## `throwImmediately` has been removed
195
-
196
- The concept of "throwImmediately" has been removed from exceptions and error
197
- events. This control mechanism was used to stop a transfer of concurrent
198
- requests from completing. This can now be handled by throwing the exception or
199
- by cancelling a pool of requests or each outstanding future request
200
- individually.
201
-
202
- ## headers event has been removed
203
-
204
- Removed the "headers" event. This event was only useful for changing the
205
- body a response once the headers of the response were known. You can implement
206
- a similar behavior in a number of ways. One example might be to use a
207
- FnStream that has access to the transaction being sent. For example, when the
208
- first byte is written, you could check if the response headers match your
209
- expectations, and if so, change the actual stream body that is being
210
- written to.
211
-
212
- ## Updates to HTTP Messages
213
-
214
- Removed the `asArray` parameter from
215
- `GuzzleHttp\Message\MessageInterface::getHeader`. If you want to get a header
216
- value as an array, then use the newly added `getHeaderAsArray()` method of
217
- `MessageInterface`. This change makes the Guzzle interfaces compatible with
218
- the PSR-7 interfaces.
219
-
220
- 3.x to 4.0
221
- ----------
222
-
223
- ## Overarching changes:
224
-
225
- - Now requires PHP 5.4 or greater.
226
- - No longer requires cURL to send requests.
227
- - Guzzle no longer wraps every exception it throws. Only exceptions that are
228
- recoverable are now wrapped by Guzzle.
229
- - Various namespaces have been removed or renamed.
230
- - No longer requiring the Symfony EventDispatcher. A custom event dispatcher
231
- based on the Symfony EventDispatcher is
232
- now utilized in `GuzzleHttp\Event\EmitterInterface` (resulting in significant
233
- speed and functionality improvements).
234
-
235
- Changes per Guzzle 3.x namespace are described below.
236
-
237
- ## Batch
238
-
239
- The `Guzzle\Batch` namespace has been removed. This is best left to
240
- third-parties to implement on top of Guzzle's core HTTP library.
241
-
242
- ## Cache
243
-
244
- The `Guzzle\Cache` namespace has been removed. (Todo: No suitable replacement
245
- has been implemented yet, but hoping to utilize a PSR cache interface).
246
-
247
- ## Common
248
-
249
- - Removed all of the wrapped exceptions. It's better to use the standard PHP
250
- library for unrecoverable exceptions.
251
- - `FromConfigInterface` has been removed.
252
- - `Guzzle\Common\Version` has been removed. The VERSION constant can be found
253
- at `GuzzleHttp\ClientInterface::VERSION`.
254
-
255
- ### Collection
256
-
257
- - `getAll` has been removed. Use `toArray` to convert a collection to an array.
258
- - `inject` has been removed.
259
- - `keySearch` has been removed.
260
- - `getPath` no longer supports wildcard expressions. Use something better like
261
- JMESPath for this.
262
- - `setPath` now supports appending to an existing array via the `[]` notation.
263
-
264
- ### Events
265
-
266
- Guzzle no longer requires Symfony's EventDispatcher component. Guzzle now uses
267
- `GuzzleHttp\Event\Emitter`.
268
-
269
- - `Symfony\Component\EventDispatcher\EventDispatcherInterface` is replaced by
270
- `GuzzleHttp\Event\EmitterInterface`.
271
- - `Symfony\Component\EventDispatcher\EventDispatcher` is replaced by
272
- `GuzzleHttp\Event\Emitter`.
273
- - `Symfony\Component\EventDispatcher\Event` is replaced by
274
- `GuzzleHttp\Event\Event`, and Guzzle now has an EventInterface in
275
- `GuzzleHttp\Event\EventInterface`.
276
- - `AbstractHasDispatcher` has moved to a trait, `HasEmitterTrait`, and
277
- `HasDispatcherInterface` has moved to `HasEmitterInterface`. Retrieving the
278
- event emitter of a request, client, etc. now uses the `getEmitter` method
279
- rather than the `getDispatcher` method.
280
-
281
- #### Emitter
282
-
283
- - Use the `once()` method to add a listener that automatically removes itself
284
- the first time it is invoked.
285
- - Use the `listeners()` method to retrieve a list of event listeners rather than
286
- the `getListeners()` method.
287
- - Use `emit()` instead of `dispatch()` to emit an event from an emitter.
288
- - Use `attach()` instead of `addSubscriber()` and `detach()` instead of
289
- `removeSubscriber()`.
290
-
291
- ```php
292
- $mock = new Mock();
293
- // 3.x
294
- $request->getEventDispatcher()->addSubscriber($mock);
295
- $request->getEventDispatcher()->removeSubscriber($mock);
296
- // 4.x
297
- $request->getEmitter()->attach($mock);
298
- $request->getEmitter()->detach($mock);
299
- ```
300
-
301
- Use the `on()` method to add a listener rather than the `addListener()` method.
302
-
303
- ```php
304
- // 3.x
305
- $request->getEventDispatcher()->addListener('foo', function (Event $event) { /* ... */ } );
306
- // 4.x
307
- $request->getEmitter()->on('foo', function (Event $event, $name) { /* ... */ } );
308
- ```
309
-
310
- ## Http
311
-
312
- ### General changes
313
-
314
- - The cacert.pem certificate has been moved to `src/cacert.pem`.
315
- - Added the concept of adapters that are used to transfer requests over the
316
- wire.
317
- - Simplified the event system.
318
- - Sending requests in parallel is still possible, but batching is no longer a
319
- concept of the HTTP layer. Instead, you must use the `complete` and `error`
320
- events to asynchronously manage parallel request transfers.
321
- - `Guzzle\Http\Url` has moved to `GuzzleHttp\Url`.
322
- - `Guzzle\Http\QueryString` has moved to `GuzzleHttp\Query`.
323
- - QueryAggregators have been rewritten so that they are simply callable
324
- functions.
325
- - `GuzzleHttp\StaticClient` has been removed. Use the functions provided in
326
- `functions.php` for an easy to use static client instance.
327
- - Exceptions in `GuzzleHttp\Exception` have been updated to all extend from
328
- `GuzzleHttp\Exception\TransferException`.
329
-
330
- ### Client
331
-
332
- Calling methods like `get()`, `post()`, `head()`, etc. no longer create and
333
- return a request, but rather creates a request, sends the request, and returns
334
- the response.
335
-
336
- ```php
337
- // 3.0
338
- $request = $client->get('/');
339
- $response = $request->send();
340
-
341
- // 4.0
342
- $response = $client->get('/');
343
-
344
- // or, to mirror the previous behavior
345
- $request = $client->createRequest('GET', '/');
346
- $response = $client->send($request);
347
- ```
348
-
349
- `GuzzleHttp\ClientInterface` has changed.
350
-
351
- - The `send` method no longer accepts more than one request. Use `sendAll` to
352
- send multiple requests in parallel.
353
- - `setUserAgent()` has been removed. Use a default request option instead. You
354
- could, for example, do something like:
355
- `$client->setConfig('defaults/headers/User-Agent', 'Foo/Bar ' . $client::getDefaultUserAgent())`.
356
- - `setSslVerification()` has been removed. Use default request options instead,
357
- like `$client->setConfig('defaults/verify', true)`.
358
-
359
- `GuzzleHttp\Client` has changed.
360
-
361
- - The constructor now accepts only an associative array. You can include a
362
- `base_url` string or array to use a URI template as the base URL of a client.
363
- You can also specify a `defaults` key that is an associative array of default
364
- request options. You can pass an `adapter` to use a custom adapter,
365
- `batch_adapter` to use a custom adapter for sending requests in parallel, or
366
- a `message_factory` to change the factory used to create HTTP requests and
367
- responses.
368
- - The client no longer emits a `client.create_request` event.
369
- - Creating requests with a client no longer automatically utilize a URI
370
- template. You must pass an array into a creational method (e.g.,
371
- `createRequest`, `get`, `put`, etc.) in order to expand a URI template.
372
-
373
- ### Messages
374
-
375
- Messages no longer have references to their counterparts (i.e., a request no
376
- longer has a reference to it's response, and a response no loger has a
377
- reference to its request). This association is now managed through a
378
- `GuzzleHttp\Adapter\TransactionInterface` object. You can get references to
379
- these transaction objects using request events that are emitted over the
380
- lifecycle of a request.
381
-
382
- #### Requests with a body
383
-
384
- - `GuzzleHttp\Message\EntityEnclosingRequest` and
385
- `GuzzleHttp\Message\EntityEnclosingRequestInterface` have been removed. The
386
- separation between requests that contain a body and requests that do not
387
- contain a body has been removed, and now `GuzzleHttp\Message\RequestInterface`
388
- handles both use cases.
389
- - Any method that previously accepts a `GuzzleHttp\Response` object now accept a
390
- `GuzzleHttp\Message\ResponseInterface`.
391
- - `GuzzleHttp\Message\RequestFactoryInterface` has been renamed to
392
- `GuzzleHttp\Message\MessageFactoryInterface`. This interface is used to create
393
- both requests and responses and is implemented in
394
- `GuzzleHttp\Message\MessageFactory`.
395
- - POST field and file methods have been removed from the request object. You
396
- must now use the methods made available to `GuzzleHttp\Post\PostBodyInterface`
397
- to control the format of a POST body. Requests that are created using a
398
- standard `GuzzleHttp\Message\MessageFactoryInterface` will automatically use
399
- a `GuzzleHttp\Post\PostBody` body if the body was passed as an array or if
400
- the method is POST and no body is provided.
401
-
402
- ```php
403
- $request = $client->createRequest('POST', '/');
404
- $request->getBody()->setField('foo', 'bar');
405
- $request->getBody()->addFile(new PostFile('file_key', fopen('/path/to/content', 'r')));
406
- ```
407
-
408
- #### Headers
409
-
410
- - `GuzzleHttp\Message\Header` has been removed. Header values are now simply
411
- represented by an array of values or as a string. Header values are returned
412
- as a string by default when retrieving a header value from a message. You can
413
- pass an optional argument of `true` to retrieve a header value as an array
414
- of strings instead of a single concatenated string.
415
- - `GuzzleHttp\PostFile` and `GuzzleHttp\PostFileInterface` have been moved to
416
- `GuzzleHttp\Post`. This interface has been simplified and now allows the
417
- addition of arbitrary headers.
418
- - Custom headers like `GuzzleHttp\Message\Header\Link` have been removed. Most
419
- of the custom headers are now handled separately in specific
420
- subscribers/plugins, and `GuzzleHttp\Message\HeaderValues::parseParams()` has
421
- been updated to properly handle headers that contain parameters (like the
422
- `Link` header).
423
-
424
- #### Responses
425
-
426
- - `GuzzleHttp\Message\Response::getInfo()` and
427
- `GuzzleHttp\Message\Response::setInfo()` have been removed. Use the event
428
- system to retrieve this type of information.
429
- - `GuzzleHttp\Message\Response::getRawHeaders()` has been removed.
430
- - `GuzzleHttp\Message\Response::getMessage()` has been removed.
431
- - `GuzzleHttp\Message\Response::calculateAge()` and other cache specific
432
- methods have moved to the CacheSubscriber.
433
- - Header specific helper functions like `getContentMd5()` have been removed.
434
- Just use `getHeader('Content-MD5')` instead.
435
- - `GuzzleHttp\Message\Response::setRequest()` and
436
- `GuzzleHttp\Message\Response::getRequest()` have been removed. Use the event
437
- system to work with request and response objects as a transaction.
438
- - `GuzzleHttp\Message\Response::getRedirectCount()` has been removed. Use the
439
- Redirect subscriber instead.
440
- - `GuzzleHttp\Message\Response::isSuccessful()` and other related methods have
441
- been removed. Use `getStatusCode()` instead.
442
-
443
- #### Streaming responses
444
-
445
- Streaming requests can now be created by a client directly, returning a
446
- `GuzzleHttp\Message\ResponseInterface` object that contains a body stream
447
- referencing an open PHP HTTP stream.
448
-
449
- ```php
450
- // 3.0
451
- use Guzzle\Stream\PhpStreamRequestFactory;
452
- $request = $client->get('/');
453
- $factory = new PhpStreamRequestFactory();
454
- $stream = $factory->fromRequest($request);
455
- $data = $stream->read(1024);
456
-
457
- // 4.0
458
- $response = $client->get('/', ['stream' => true]);
459
- // Read some data off of the stream in the response body
460
- $data = $response->getBody()->read(1024);
461
- ```
462
-
463
- #### Redirects
464
-
465
- The `configureRedirects()` method has been removed in favor of a
466
- `allow_redirects` request option.
467
-
468
- ```php
469
- // Standard redirects with a default of a max of 5 redirects
470
- $request = $client->createRequest('GET', '/', ['allow_redirects' => true]);
471
-
472
- // Strict redirects with a custom number of redirects
473
- $request = $client->createRequest('GET', '/', [
474
- 'allow_redirects' => ['max' => 5, 'strict' => true]
475
- ]);
476
- ```
477
-
478
- #### EntityBody
479
-
480
- EntityBody interfaces and classes have been removed or moved to
481
- `GuzzleHttp\Stream`. All classes and interfaces that once required
482
- `GuzzleHttp\EntityBodyInterface` now require
483
- `GuzzleHttp\Stream\StreamInterface`. Creating a new body for a request no
484
- longer uses `GuzzleHttp\EntityBody::factory` but now uses
485
- `GuzzleHttp\Stream\Stream::factory` or even better:
486
- `GuzzleHttp\Stream\create()`.
487
-
488
- - `Guzzle\Http\EntityBodyInterface` is now `GuzzleHttp\Stream\StreamInterface`
489
- - `Guzzle\Http\EntityBody` is now `GuzzleHttp\Stream\Stream`
490
- - `Guzzle\Http\CachingEntityBody` is now `GuzzleHttp\Stream\CachingStream`
491
- - `Guzzle\Http\ReadLimitEntityBody` is now `GuzzleHttp\Stream\LimitStream`
492
- - `Guzzle\Http\IoEmittyinEntityBody` has been removed.
493
-
494
- #### Request lifecycle events
495
-
496
- Requests previously submitted a large number of requests. The number of events
497
- emitted over the lifecycle of a request has been significantly reduced to make
498
- it easier to understand how to extend the behavior of a request. All events
499
- emitted during the lifecycle of a request now emit a custom
500
- `GuzzleHttp\Event\EventInterface` object that contains context providing
501
- methods and a way in which to modify the transaction at that specific point in
502
- time (e.g., intercept the request and set a response on the transaction).
503
-
504
- - `request.before_send` has been renamed to `before` and now emits a
505
- `GuzzleHttp\Event\BeforeEvent`
506
- - `request.complete` has been renamed to `complete` and now emits a
507
- `GuzzleHttp\Event\CompleteEvent`.
508
- - `request.sent` has been removed. Use `complete`.
509
- - `request.success` has been removed. Use `complete`.
510
- - `error` is now an event that emits a `GuzzleHttp\Event\ErrorEvent`.
511
- - `request.exception` has been removed. Use `error`.
512
- - `request.receive.status_line` has been removed.
513
- - `curl.callback.progress` has been removed. Use a custom `StreamInterface` to
514
- maintain a status update.
515
- - `curl.callback.write` has been removed. Use a custom `StreamInterface` to
516
- intercept writes.
517
- - `curl.callback.read` has been removed. Use a custom `StreamInterface` to
518
- intercept reads.
519
-
520
- `headers` is a new event that is emitted after the response headers of a
521
- request have been received before the body of the response is downloaded. This
522
- event emits a `GuzzleHttp\Event\HeadersEvent`.
523
-
524
- You can intercept a request and inject a response using the `intercept()` event
525
- of a `GuzzleHttp\Event\BeforeEvent`, `GuzzleHttp\Event\CompleteEvent`, and
526
- `GuzzleHttp\Event\ErrorEvent` event.
527
-
528
- See: http://docs.guzzlephp.org/en/latest/events.html
529
-
530
- ## Inflection
531
-
532
- The `Guzzle\Inflection` namespace has been removed. This is not a core concern
533
- of Guzzle.
534
-
535
- ## Iterator
536
-
537
- The `Guzzle\Iterator` namespace has been removed.
538
-
539
- - `Guzzle\Iterator\AppendIterator`, `Guzzle\Iterator\ChunkedIterator`, and
540
- `Guzzle\Iterator\MethodProxyIterator` are nice, but not a core requirement of
541
- Guzzle itself.
542
- - `Guzzle\Iterator\FilterIterator` is no longer needed because an equivalent
543
- class is shipped with PHP 5.4.
544
- - `Guzzle\Iterator\MapIterator` is not really needed when using PHP 5.5 because
545
- it's easier to just wrap an iterator in a generator that maps values.
546
-
547
- For a replacement of these iterators, see https://github.com/nikic/iter
548
-
549
- ## Log
550
-
551
- The LogPlugin has moved to https://github.com/guzzle/log-subscriber. The
552
- `Guzzle\Log` namespace has been removed. Guzzle now relies on
553
- `Psr\Log\LoggerInterface` for all logging. The MessageFormatter class has been
554
- moved to `GuzzleHttp\Subscriber\Log\Formatter`.
555
-
556
- ## Parser
557
-
558
- The `Guzzle\Parser` namespace has been removed. This was previously used to
559
- make it possible to plug in custom parsers for cookies, messages, URI
560
- templates, and URLs; however, this level of complexity is not needed in Guzzle
561
- so it has been removed.
562
-
563
- - Cookie: Cookie parsing logic has been moved to
564
- `GuzzleHttp\Cookie\SetCookie::fromString`.
565
- - Message: Message parsing logic for both requests and responses has been moved
566
- to `GuzzleHttp\Message\MessageFactory::fromMessage`. Message parsing is only
567
- used in debugging or deserializing messages, so it doesn't make sense for
568
- Guzzle as a library to add this level of complexity to parsing messages.
569
- - UriTemplate: URI template parsing has been moved to
570
- `GuzzleHttp\UriTemplate`. The Guzzle library will automatically use the PECL
571
- URI template library if it is installed.
572
- - Url: URL parsing is now performed in `GuzzleHttp\Url::fromString` (previously
573
- it was `Guzzle\Http\Url::factory()`). If custom URL parsing is necessary,
574
- then developers are free to subclass `GuzzleHttp\Url`.
575
-
576
- ## Plugin
577
-
578
- The `Guzzle\Plugin` namespace has been renamed to `GuzzleHttp\Subscriber`.
579
- Several plugins are shipping with the core Guzzle library under this namespace.
580
-
581
- - `GuzzleHttp\Subscriber\Cookie`: Replaces the old CookiePlugin. Cookie jar
582
- code has moved to `GuzzleHttp\Cookie`.
583
- - `GuzzleHttp\Subscriber\History`: Replaces the old HistoryPlugin.
584
- - `GuzzleHttp\Subscriber\HttpError`: Throws errors when a bad HTTP response is
585
- received.
586
- - `GuzzleHttp\Subscriber\Mock`: Replaces the old MockPlugin.
587
- - `GuzzleHttp\Subscriber\Prepare`: Prepares the body of a request just before
588
- sending. This subscriber is attached to all requests by default.
589
- - `GuzzleHttp\Subscriber\Redirect`: Replaces the RedirectPlugin.
590
-
591
- The following plugins have been removed (third-parties are free to re-implement
592
- these if needed):
593
-
594
- - `GuzzleHttp\Plugin\Async` has been removed.
595
- - `GuzzleHttp\Plugin\CurlAuth` has been removed.
596
- - `GuzzleHttp\Plugin\ErrorResponse\ErrorResponsePlugin` has been removed. This
597
- functionality should instead be implemented with event listeners that occur
598
- after normal response parsing occurs in the guzzle/command package.
599
-
600
- The following plugins are not part of the core Guzzle package, but are provided
601
- in separate repositories:
602
-
603
- - `Guzzle\Http\Plugin\BackoffPlugin` has been rewritten to be much simpler
604
- to build custom retry policies using simple functions rather than various
605
- chained classes. See: https://github.com/guzzle/retry-subscriber
606
- - `Guzzle\Http\Plugin\Cache\CachePlugin` has moved to
607
- https://github.com/guzzle/cache-subscriber
608
- - `Guzzle\Http\Plugin\Log\LogPlugin` has moved to
609
- https://github.com/guzzle/log-subscriber
610
- - `Guzzle\Http\Plugin\Md5\Md5Plugin` has moved to
611
- https://github.com/guzzle/message-integrity-subscriber
612
- - `Guzzle\Http\Plugin\Mock\MockPlugin` has moved to
613
- `GuzzleHttp\Subscriber\MockSubscriber`.
614
- - `Guzzle\Http\Plugin\Oauth\OauthPlugin` has moved to
615
- https://github.com/guzzle/oauth-subscriber
616
-
617
- ## Service
618
-
619
- The service description layer of Guzzle has moved into two separate packages:
620
-
621
- - http://github.com/guzzle/command Provides a high level abstraction over web
622
- services by representing web service operations using commands.
623
- - http://github.com/guzzle/guzzle-services Provides an implementation of
624
- guzzle/command that provides request serialization and response parsing using
625
- Guzzle service descriptions.
626
-
627
- ## Stream
628
-
629
- Stream have moved to a separate package available at
630
- https://github.com/guzzle/streams.
631
-
632
- `Guzzle\Stream\StreamInterface` has been given a large update to cleanly take
633
- on the responsibilities of `Guzzle\Http\EntityBody` and
634
- `Guzzle\Http\EntityBodyInterface` now that they have been removed. The number
635
- of methods implemented by the `StreamInterface` has been drastically reduced to
636
- allow developers to more easily extend and decorate stream behavior.
637
-
638
- ## Removed methods from StreamInterface
639
-
640
- - `getStream` and `setStream` have been removed to better encapsulate streams.
641
- - `getMetadata` and `setMetadata` have been removed in favor of
642
- `GuzzleHttp\Stream\MetadataStreamInterface`.
643
- - `getWrapper`, `getWrapperData`, `getStreamType`, and `getUri` have all been
644
- removed. This data is accessible when
645
- using streams that implement `GuzzleHttp\Stream\MetadataStreamInterface`.
646
- - `rewind` has been removed. Use `seek(0)` for a similar behavior.
647
-
648
- ## Renamed methods
649
-
650
- - `detachStream` has been renamed to `detach`.
651
- - `feof` has been renamed to `eof`.
652
- - `ftell` has been renamed to `tell`.
653
- - `readLine` has moved from an instance method to a static class method of
654
- `GuzzleHttp\Stream\Stream`.
655
-
656
- ## Metadata streams
657
-
658
- `GuzzleHttp\Stream\MetadataStreamInterface` has been added to denote streams
659
- that contain additional metadata accessible via `getMetadata()`.
660
- `GuzzleHttp\Stream\StreamInterface::getMetadata` and
661
- `GuzzleHttp\Stream\StreamInterface::setMetadata` have been removed.
662
-
663
- ## StreamRequestFactory
664
-
665
- The entire concept of the StreamRequestFactory has been removed. The way this
666
- was used in Guzzle 3 broke the actual interface of sending streaming requests
667
- (instead of getting back a Response, you got a StreamInterface). Streaming
668
- PHP requests are now implemented through the `GuzzleHttp\Adapter\StreamAdapter`.
669
-
670
- 3.6 to 3.7
671
- ----------
672
-
673
- ### Deprecations
674
-
675
- - You can now enable E_USER_DEPRECATED warnings to see if you are using any deprecated methods.:
676
-
677
- ```php
678
- \Guzzle\Common\Version::$emitWarnings = true;
679
- ```
680
-
681
- The following APIs and options have been marked as deprecated:
682
-
683
- - Marked `Guzzle\Http\Message\Request::isResponseBodyRepeatable()` as deprecated. Use `$request->getResponseBody()->isRepeatable()` instead.
684
- - Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
685
- - Marked `Guzzle\Http\Message\Request::canCache()` as deprecated. Use `Guzzle\Plugin\Cache\DefaultCanCacheStrategy->canCacheRequest()` instead.
686
- - Marked `Guzzle\Http\Message\Request::setIsRedirect()` as deprecated. Use the HistoryPlugin instead.
687
- - Marked `Guzzle\Http\Message\Request::isRedirect()` as deprecated. Use the HistoryPlugin instead.
688
- - Marked `Guzzle\Cache\CacheAdapterFactory::factory()` as deprecated
689
- - Marked `Guzzle\Service\Client::enableMagicMethods()` as deprecated. Magic methods can no longer be disabled on a Guzzle\Service\Client.
690
- - Marked `Guzzle\Parser\Url\UrlParser` as deprecated. Just use PHP's `parse_url()` and percent encode your UTF-8.
691
- - Marked `Guzzle\Common\Collection::inject()` as deprecated.
692
- - Marked `Guzzle\Plugin\CurlAuth\CurlAuthPlugin` as deprecated. Use
693
- `$client->getConfig()->setPath('request.options/auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));` or
694
- `$client->setDefaultOption('auth', array('user', 'pass', 'Basic|Digest|NTLM|Any'));`
695
-
696
- 3.7 introduces `request.options` as a parameter for a client configuration and as an optional argument to all creational
697
- request methods. When paired with a client's configuration settings, these options allow you to specify default settings
698
- for various aspects of a request. Because these options make other previous configuration options redundant, several
699
- configuration options and methods of a client and AbstractCommand have been deprecated.
700
-
701
- - Marked `Guzzle\Service\Client::getDefaultHeaders()` as deprecated. Use `$client->getDefaultOption('headers')`.
702
- - Marked `Guzzle\Service\Client::setDefaultHeaders()` as deprecated. Use `$client->setDefaultOption('headers/{header_name}', 'value')`.
703
- - Marked 'request.params' for `Guzzle\Http\Client` as deprecated. Use `$client->setDefaultOption('params/{param_name}', 'value')`
704
- - Marked 'command.headers', 'command.response_body' and 'command.on_complete' as deprecated for AbstractCommand. These will work through Guzzle 4.0
705
-
706
- $command = $client->getCommand('foo', array(
707
- 'command.headers' => array('Test' => '123'),
708
- 'command.response_body' => '/path/to/file'
709
- ));
710
-
711
- // Should be changed to:
712
-
713
- $command = $client->getCommand('foo', array(
714
- 'command.request_options' => array(
715
- 'headers' => array('Test' => '123'),
716
- 'save_as' => '/path/to/file'
717
- )
718
- ));
719
-
720
- ### Interface changes
721
-
722
- Additions and changes (you will need to update any implementations or subclasses you may have created):
723
-
724
- - Added an `$options` argument to the end of the following methods of `Guzzle\Http\ClientInterface`:
725
- createRequest, head, delete, put, patch, post, options, prepareRequest
726
- - Added an `$options` argument to the end of `Guzzle\Http\Message\Request\RequestFactoryInterface::createRequest()`
727
- - Added an `applyOptions()` method to `Guzzle\Http\Message\Request\RequestFactoryInterface`
728
- - Changed `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $body = null)` to
729
- `Guzzle\Http\ClientInterface::get($uri = null, $headers = null, $options = array())`. You can still pass in a
730
- resource, string, or EntityBody into the $options parameter to specify the download location of the response.
731
- - Changed `Guzzle\Common\Collection::__construct($data)` to no longer accepts a null value for `$data` but a
732
- default `array()`
733
- - Added `Guzzle\Stream\StreamInterface::isRepeatable`
734
- - Made `Guzzle\Http\Client::expandTemplate` and `getUriTemplate` protected methods.
735
-
736
- The following methods were removed from interfaces. All of these methods are still available in the concrete classes
737
- that implement them, but you should update your code to use alternative methods:
738
-
739
- - Removed `Guzzle\Http\ClientInterface::setDefaultHeaders(). Use
740
- `$client->getConfig()->setPath('request.options/headers/{header_name}', 'value')`. or
741
- `$client->getConfig()->setPath('request.options/headers', array('header_name' => 'value'))` or
742
- `$client->setDefaultOption('headers/{header_name}', 'value')`. or
743
- `$client->setDefaultOption('headers', array('header_name' => 'value'))`.
744
- - Removed `Guzzle\Http\ClientInterface::getDefaultHeaders(). Use `$client->getConfig()->getPath('request.options/headers')`.
745
- - Removed `Guzzle\Http\ClientInterface::expandTemplate()`. This is an implementation detail.
746
- - Removed `Guzzle\Http\ClientInterface::setRequestFactory()`. This is an implementation detail.
747
- - Removed `Guzzle\Http\ClientInterface::getCurlMulti()`. This is a very specific implementation detail.
748
- - Removed `Guzzle\Http\Message\RequestInterface::canCache`. Use the CachePlugin.
749
- - Removed `Guzzle\Http\Message\RequestInterface::setIsRedirect`. Use the HistoryPlugin.
750
- - Removed `Guzzle\Http\Message\RequestInterface::isRedirect`. Use the HistoryPlugin.
751
-
752
- ### Cache plugin breaking changes
753
-
754
- - CacheKeyProviderInterface and DefaultCacheKeyProvider are no longer used. All of this logic is handled in a
755
- CacheStorageInterface. These two objects and interface will be removed in a future version.
756
- - Always setting X-cache headers on cached responses
757
- - Default cache TTLs are now handled by the CacheStorageInterface of a CachePlugin
758
- - `CacheStorageInterface::cache($key, Response $response, $ttl = null)` has changed to `cache(RequestInterface
759
- $request, Response $response);`
760
- - `CacheStorageInterface::fetch($key)` has changed to `fetch(RequestInterface $request);`
761
- - `CacheStorageInterface::delete($key)` has changed to `delete(RequestInterface $request);`
762
- - Added `CacheStorageInterface::purge($url)`
763
- - `DefaultRevalidation::__construct(CacheKeyProviderInterface $cacheKey, CacheStorageInterface $cache, CachePlugin
764
- $plugin)` has changed to `DefaultRevalidation::__construct(CacheStorageInterface $cache,
765
- CanCacheStrategyInterface $canCache = null)`
766
- - Added `RevalidationInterface::shouldRevalidate(RequestInterface $request, Response $response)`
767
-
768
- 3.5 to 3.6
769
- ----------
770
-
771
- * Mixed casing of headers are now forced to be a single consistent casing across all values for that header.
772
- * Messages internally use a HeaderCollection object to delegate handling case-insensitive header resolution
773
- * Removed the whole changedHeader() function system of messages because all header changes now go through addHeader().
774
- For example, setHeader() first removes the header using unset on a HeaderCollection and then calls addHeader().
775
- Keeping the Host header and URL host in sync is now handled by overriding the addHeader method in Request.
776
- * Specific header implementations can be created for complex headers. When a message creates a header, it uses a
777
- HeaderFactory which can map specific headers to specific header classes. There is now a Link header and
778
- CacheControl header implementation.
779
- * Moved getLinks() from Response to just be used on a Link header object.
780
-
781
- If you previously relied on Guzzle\Http\Message\Header::raw(), then you will need to update your code to use the
782
- HeaderInterface (e.g. toArray(), getAll(), etc.).
783
-
784
- ### Interface changes
785
-
786
- * Removed from interface: Guzzle\Http\ClientInterface::setUriTemplate
787
- * Removed from interface: Guzzle\Http\ClientInterface::setCurlMulti()
788
- * Removed Guzzle\Http\Message\Request::receivedRequestHeader() and implemented this functionality in
789
- Guzzle\Http\Curl\RequestMediator
790
- * Removed the optional $asString parameter from MessageInterface::getHeader(). Just cast the header to a string.
791
- * Removed the optional $tryChunkedTransfer option from Guzzle\Http\Message\EntityEnclosingRequestInterface
792
- * Removed the $asObjects argument from Guzzle\Http\Message\MessageInterface::getHeaders()
793
-
794
- ### Removed deprecated functions
795
-
796
- * Removed Guzzle\Parser\ParserRegister::get(). Use getParser()
797
- * Removed Guzzle\Parser\ParserRegister::set(). Use registerParser().
798
-
799
- ### Deprecations
800
-
801
- * The ability to case-insensitively search for header values
802
- * Guzzle\Http\Message\Header::hasExactHeader
803
- * Guzzle\Http\Message\Header::raw. Use getAll()
804
- * Deprecated cache control specific methods on Guzzle\Http\Message\AbstractMessage. Use the CacheControl header object
805
- instead.
806
-
807
- ### Other changes
808
-
809
- * All response header helper functions return a string rather than mixing Header objects and strings inconsistently
810
- * Removed cURL blacklist support. This is no longer necessary now that Expect, Accept, etc. are managed by Guzzle
811
- directly via interfaces
812
- * Removed the injecting of a request object onto a response object. The methods to get and set a request still exist
813
- but are a no-op until removed.
814
- * Most classes that used to require a `Guzzle\Service\Command\CommandInterface` typehint now request a
815
- `Guzzle\Service\Command\ArrayCommandInterface`.
816
- * Added `Guzzle\Http\Message\RequestInterface::startResponse()` to the RequestInterface to handle injecting a response
817
- on a request while the request is still being transferred
818
- * `Guzzle\Service\Command\CommandInterface` now extends from ToArrayInterface and ArrayAccess
819
-
820
- 3.3 to 3.4
821
- ----------
822
-
823
- Base URLs of a client now follow the rules of http://tools.ietf.org/html/rfc3986#section-5.2.2 when merging URLs.
824
-
825
- 3.2 to 3.3
826
- ----------
827
-
828
- ### Response::getEtag() quote stripping removed
829
-
830
- `Guzzle\Http\Message\Response::getEtag()` no longer strips quotes around the ETag response header
831
-
832
- ### Removed `Guzzle\Http\Utils`
833
-
834
- The `Guzzle\Http\Utils` class was removed. This class was only used for testing.
835
-
836
- ### Stream wrapper and type
837
-
838
- `Guzzle\Stream\Stream::getWrapper()` and `Guzzle\Stream\Stream::getStreamType()` are no longer converted to lowercase.
839
-
840
- ### curl.emit_io became emit_io
841
-
842
- Emitting IO events from a RequestMediator is now a parameter that must be set in a request's curl options using the
843
- 'emit_io' key. This was previously set under a request's parameters using 'curl.emit_io'
844
-
845
- 3.1 to 3.2
846
- ----------
847
-
848
- ### CurlMulti is no longer reused globally
849
-
850
- Before 3.2, the same CurlMulti object was reused globally for each client. This can cause issue where plugins added
851
- to a single client can pollute requests dispatched from other clients.
852
-
853
- If you still wish to reuse the same CurlMulti object with each client, then you can add a listener to the
854
- ServiceBuilder's `service_builder.create_client` event to inject a custom CurlMulti object into each client as it is
855
- created.
856
-
857
- ```php
858
- $multi = new Guzzle\Http\Curl\CurlMulti();
859
- $builder = Guzzle\Service\Builder\ServiceBuilder::factory('/path/to/config.json');
860
- $builder->addListener('service_builder.create_client', function ($event) use ($multi) {
861
- $event['client']->setCurlMulti($multi);
862
- }
863
- });
864
- ```
865
-
866
- ### No default path
867
-
868
- URLs no longer have a default path value of '/' if no path was specified.
869
-
870
- Before:
871
-
872
- ```php
873
- $request = $client->get('http://www.foo.com');
874
- echo $request->getUrl();
875
- // >> http://www.foo.com/
876
- ```
877
-
878
- After:
879
-
880
- ```php
881
- $request = $client->get('http://www.foo.com');
882
- echo $request->getUrl();
883
- // >> http://www.foo.com
884
- ```
885
-
886
- ### Less verbose BadResponseException
887
-
888
- The exception message for `Guzzle\Http\Exception\BadResponseException` no longer contains the full HTTP request and
889
- response information. You can, however, get access to the request and response object by calling `getRequest()` or
890
- `getResponse()` on the exception object.
891
-
892
- ### Query parameter aggregation
893
-
894
- Multi-valued query parameters are no longer aggregated using a callback function. `Guzzle\Http\Query` now has a
895
- setAggregator() method that accepts a `Guzzle\Http\QueryAggregator\QueryAggregatorInterface` object. This object is
896
- responsible for handling the aggregation of multi-valued query string variables into a flattened hash.
897
-
898
- 2.8 to 3.x
899
- ----------
900
-
901
- ### Guzzle\Service\Inspector
902
-
903
- Change `\Guzzle\Service\Inspector::fromConfig` to `\Guzzle\Common\Collection::fromConfig`
904
-
905
- **Before**
906
-
907
- ```php
908
- use Guzzle\Service\Inspector;
909
-
910
- class YourClient extends \Guzzle\Service\Client
911
- {
912
- public static function factory($config = array())
913
- {
914
- $default = array();
915
- $required = array('base_url', 'username', 'api_key');
916
- $config = Inspector::fromConfig($config, $default, $required);
917
-
918
- $client = new self(
919
- $config->get('base_url'),
920
- $config->get('username'),
921
- $config->get('api_key')
922
- );
923
- $client->setConfig($config);
924
-
925
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
926
-
927
- return $client;
928
- }
929
- ```
930
-
931
- **After**
932
-
933
- ```php
934
- use Guzzle\Common\Collection;
935
-
936
- class YourClient extends \Guzzle\Service\Client
937
- {
938
- public static function factory($config = array())
939
- {
940
- $default = array();
941
- $required = array('base_url', 'username', 'api_key');
942
- $config = Collection::fromConfig($config, $default, $required);
943
-
944
- $client = new self(
945
- $config->get('base_url'),
946
- $config->get('username'),
947
- $config->get('api_key')
948
- );
949
- $client->setConfig($config);
950
-
951
- $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
952
-
953
- return $client;
954
- }
955
- ```
956
-
957
- ### Convert XML Service Descriptions to JSON
958
-
959
- **Before**
960
-
961
- ```xml
962
- <?xml version="1.0" encoding="UTF-8"?>
963
- <client>
964
- <commands>
965
- <!-- Groups -->
966
- <command name="list_groups" method="GET" uri="groups.json">
967
- <doc>Get a list of groups</doc>
968
- </command>
969
- <command name="search_groups" method="GET" uri='search.json?query="{{query}} type:group"'>
970
- <doc>Uses a search query to get a list of groups</doc>
971
- <param name="query" type="string" required="true" />
972
- </command>
973
- <command name="create_group" method="POST" uri="groups.json">
974
- <doc>Create a group</doc>
975
- <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
976
- <param name="Content-Type" location="header" static="application/json"/>
977
- </command>
978
- <command name="delete_group" method="DELETE" uri="groups/{{id}}.json">
979
- <doc>Delete a group by ID</doc>
980
- <param name="id" type="integer" required="true"/>
981
- </command>
982
- <command name="get_group" method="GET" uri="groups/{{id}}.json">
983
- <param name="id" type="integer" required="true"/>
984
- </command>
985
- <command name="update_group" method="PUT" uri="groups/{{id}}.json">
986
- <doc>Update a group</doc>
987
- <param name="id" type="integer" required="true"/>
988
- <param name="data" type="array" location="body" filters="json_encode" doc="Group JSON"/>
989
- <param name="Content-Type" location="header" static="application/json"/>
990
- </command>
991
- </commands>
992
- </client>
993
- ```
994
-
995
- **After**
996
-
997
- ```json
998
- {
999
- "name": "Zendesk REST API v2",
1000
- "apiVersion": "2012-12-31",
1001
- "description":"Provides access to Zendesk views, groups, tickets, ticket fields, and users",
1002
- "operations": {
1003
- "list_groups": {
1004
- "httpMethod":"GET",
1005
- "uri": "groups.json",
1006
- "summary": "Get a list of groups"
1007
- },
1008
- "search_groups":{
1009
- "httpMethod":"GET",
1010
- "uri": "search.json?query=\"{query} type:group\"",
1011
- "summary": "Uses a search query to get a list of groups",
1012
- "parameters":{
1013
- "query":{
1014
- "location": "uri",
1015
- "description":"Zendesk Search Query",
1016
- "type": "string",
1017
- "required": true
1018
- }
1019
- }
1020
- },
1021
- "create_group": {
1022
- "httpMethod":"POST",
1023
- "uri": "groups.json",
1024
- "summary": "Create a group",
1025
- "parameters":{
1026
- "data": {
1027
- "type": "array",
1028
- "location": "body",
1029
- "description":"Group JSON",
1030
- "filters": "json_encode",
1031
- "required": true
1032
- },
1033
- "Content-Type":{
1034
- "type": "string",
1035
- "location":"header",
1036
- "static": "application/json"
1037
- }
1038
- }
1039
- },
1040
- "delete_group": {
1041
- "httpMethod":"DELETE",
1042
- "uri": "groups/{id}.json",
1043
- "summary": "Delete a group",
1044
- "parameters":{
1045
- "id":{
1046
- "location": "uri",
1047
- "description":"Group to delete by ID",
1048
- "type": "integer",
1049
- "required": true
1050
- }
1051
- }
1052
- },
1053
- "get_group": {
1054
- "httpMethod":"GET",
1055
- "uri": "groups/{id}.json",
1056
- "summary": "Get a ticket",
1057
- "parameters":{
1058
- "id":{
1059
- "location": "uri",
1060
- "description":"Group to get by ID",
1061
- "type": "integer",
1062
- "required": true
1063
- }
1064
- }
1065
- },
1066
- "update_group": {
1067
- "httpMethod":"PUT",
1068
- "uri": "groups/{id}.json",
1069
- "summary": "Update a group",
1070
- "parameters":{
1071
- "id": {
1072
- "location": "uri",
1073
- "description":"Group to update by ID",
1074
- "type": "integer",
1075
- "required": true
1076
- },
1077
- "data": {
1078
- "type": "array",
1079
- "location": "body",
1080
- "description":"Group JSON",
1081
- "filters": "json_encode",
1082
- "required": true
1083
- },
1084
- "Content-Type":{
1085
- "type": "string",
1086
- "location":"header",
1087
- "static": "application/json"
1088
- }
1089
- }
1090
- }
1091
- }
1092
- ```
1093
-
1094
- ### Guzzle\Service\Description\ServiceDescription
1095
-
1096
- Commands are now called Operations
1097
-
1098
- **Before**
1099
-
1100
- ```php
1101
- use Guzzle\Service\Description\ServiceDescription;
1102
-
1103
- $sd = new ServiceDescription();
1104
- $sd->getCommands(); // @returns ApiCommandInterface[]
1105
- $sd->hasCommand($name);
1106
- $sd->getCommand($name); // @returns ApiCommandInterface|null
1107
- $sd->addCommand($command); // @param ApiCommandInterface $command
1108
- ```
1109
-
1110
- **After**
1111
-
1112
- ```php
1113
- use Guzzle\Service\Description\ServiceDescription;
1114
-
1115
- $sd = new ServiceDescription();
1116
- $sd->getOperations(); // @returns OperationInterface[]
1117
- $sd->hasOperation($name);
1118
- $sd->getOperation($name); // @returns OperationInterface|null
1119
- $sd->addOperation($operation); // @param OperationInterface $operation
1120
- ```
1121
-
1122
- ### Guzzle\Common\Inflection\Inflector
1123
-
1124
- Namespace is now `Guzzle\Inflection\Inflector`
1125
-
1126
- ### Guzzle\Http\Plugin
1127
-
1128
- Namespace is now `Guzzle\Plugin`. Many other changes occur within this namespace and are detailed in their own sections below.
1129
-
1130
- ### Guzzle\Http\Plugin\LogPlugin and Guzzle\Common\Log
1131
-
1132
- Now `Guzzle\Plugin\Log\LogPlugin` and `Guzzle\Log` respectively.
1133
-
1134
- **Before**
1135
-
1136
- ```php
1137
- use Guzzle\Common\Log\ClosureLogAdapter;
1138
- use Guzzle\Http\Plugin\LogPlugin;
1139
-
1140
- /** @var \Guzzle\Http\Client */
1141
- $client;
1142
-
1143
- // $verbosity is an integer indicating desired message verbosity level
1144
- $client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $verbosity = LogPlugin::LOG_VERBOSE);
1145
- ```
1146
-
1147
- **After**
1148
-
1149
- ```php
1150
- use Guzzle\Log\ClosureLogAdapter;
1151
- use Guzzle\Log\MessageFormatter;
1152
- use Guzzle\Plugin\Log\LogPlugin;
1153
-
1154
- /** @var \Guzzle\Http\Client */
1155
- $client;
1156
-
1157
- // $format is a string indicating desired message format -- @see MessageFormatter
1158
- $client->addSubscriber(new LogPlugin(new ClosureLogAdapter(function($m) { echo $m; }, $format = MessageFormatter::DEBUG_FORMAT);
1159
- ```
1160
-
1161
- ### Guzzle\Http\Plugin\CurlAuthPlugin
1162
-
1163
- Now `Guzzle\Plugin\CurlAuth\CurlAuthPlugin`.
1164
-
1165
- ### Guzzle\Http\Plugin\ExponentialBackoffPlugin
1166
-
1167
- Now `Guzzle\Plugin\Backoff\BackoffPlugin`, and other changes.
1168
-
1169
- **Before**
1170
-
1171
- ```php
1172
- use Guzzle\Http\Plugin\ExponentialBackoffPlugin;
1173
-
1174
- $backoffPlugin = new ExponentialBackoffPlugin($maxRetries, array_merge(
1175
- ExponentialBackoffPlugin::getDefaultFailureCodes(), array(429)
1176
- ));
1177
-
1178
- $client->addSubscriber($backoffPlugin);
1179
- ```
1180
-
1181
- **After**
1182
-
1183
- ```php
1184
- use Guzzle\Plugin\Backoff\BackoffPlugin;
1185
- use Guzzle\Plugin\Backoff\HttpBackoffStrategy;
1186
-
1187
- // Use convenient factory method instead -- see implementation for ideas of what
1188
- // you can do with chaining backoff strategies
1189
- $backoffPlugin = BackoffPlugin::getExponentialBackoff($maxRetries, array_merge(
1190
- HttpBackoffStrategy::getDefaultFailureCodes(), array(429)
1191
- ));
1192
- $client->addSubscriber($backoffPlugin);
1193
- ```
1194
-
1195
- ### Known Issues
1196
-
1197
- #### [BUG] Accept-Encoding header behavior changed unintentionally.
1198
-
1199
- (See #217) (Fixed in 09daeb8c666fb44499a0646d655a8ae36456575e)
1200
-
1201
- In version 2.8 setting the `Accept-Encoding` header would set the CURLOPT_ENCODING option, which permitted cURL to
1202
- properly handle gzip/deflate compressed responses from the server. In versions affected by this bug this does not happen.
1203
- See issue #217 for a workaround, or use a version containing the fix.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/promises/.php_cs.dist DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
-
3
- $config = PhpCsFixer\Config::create()
4
- ->setRiskyAllowed(true)
5
- ->setRules([
6
- '@PSR2' => true,
7
- 'array_syntax' => ['syntax' => 'short'],
8
- 'binary_operator_spaces' => ['operators' => ['=>' => null]],
9
- 'blank_line_after_opening_tag' => true,
10
- 'class_attributes_separation' => ['elements' => ['method']],
11
- 'compact_nullable_typehint' => true,
12
- 'concat_space' => ['spacing' => 'one'],
13
- 'declare_equal_normalize' => ['space' => 'none'],
14
- 'declare_strict_types' => false,
15
- 'dir_constant' => true,
16
- 'final_static_access' => true,
17
- 'fully_qualified_strict_types' => true,
18
- 'function_to_constant' => true,
19
- 'function_typehint_space' => true,
20
- 'header_comment' => false,
21
- 'is_null' => ['use_yoda_style' => false],
22
- 'list_syntax' => ['syntax' => 'short'],
23
- 'lowercase_cast' => true,
24
- 'magic_method_casing' => true,
25
- 'modernize_types_casting' => true,
26
- 'multiline_comment_opening_closing' => true,
27
- //'native_constant_invocation' => true,
28
- 'no_alias_functions' => true,
29
- 'no_alternative_syntax' => true,
30
- 'no_blank_lines_after_phpdoc' => true,
31
- 'no_empty_comment' => true,
32
- 'no_empty_phpdoc' => true,
33
- 'no_extra_blank_lines' => true,
34
- 'no_leading_import_slash' => true,
35
- 'no_leading_namespace_whitespace' => true,
36
- 'no_spaces_around_offset' => true,
37
- 'no_superfluous_phpdoc_tags' => ['allow_mixed' => true],
38
- 'no_trailing_comma_in_singleline_array' => true,
39
- 'no_unneeded_control_parentheses' => true,
40
- 'no_unset_cast' => true,
41
- 'no_unused_imports' => true,
42
- 'no_useless_else' => true,
43
- 'no_useless_return' => true,
44
- 'no_whitespace_in_blank_line' => true,
45
- 'normalize_index_brace' => true,
46
- 'ordered_imports' => true,
47
- 'php_unit_construct' => true,
48
- 'php_unit_dedicate_assert' => ['target' => 'newest'],
49
- 'php_unit_dedicate_assert_internal_type' => ['target' => 'newest'],
50
- 'php_unit_expectation' => ['target' => 'newest'],
51
- 'php_unit_mock' => ['target' => 'newest'],
52
- 'php_unit_mock_short_will_return' => true,
53
- 'php_unit_no_expectation_annotation' => ['target' => 'newest'],
54
- 'php_unit_test_annotation' => ['style' => 'prefix'],
55
- //'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
56
- 'phpdoc_align' => ['align' => 'vertical'],
57
- //'phpdoc_line_span' => ['method' => 'multi', 'property' => 'multi'],
58
- 'phpdoc_no_package' => true,
59
- 'phpdoc_no_useless_inheritdoc' => true,
60
- 'phpdoc_scalar' => true,
61
- 'phpdoc_separation' => true,
62
- 'phpdoc_single_line_var_spacing' => true,
63
- 'phpdoc_trim' => true,
64
- 'phpdoc_trim_consecutive_blank_line_separation' => true,
65
- 'phpdoc_types' => true,
66
- 'phpdoc_types_order' => ['null_adjustment' => 'always_last', 'sort_algorithm' => 'none'],
67
- 'phpdoc_var_without_name' => true,
68
- 'return_assignment' => true,
69
- 'short_scalar_cast' => true,
70
- 'single_trait_insert_per_statement' => true,
71
- 'standardize_not_equals' => true,
72
- //'static_lambda' => true,
73
- 'ternary_to_null_coalescing' => true,
74
- 'trim_array_spaces' => true,
75
- 'visibility_required' => true,
76
- 'yoda_style' => false,
77
- // 'native_function_invocation' => true,
78
- 'braces' => ['allow_single_line_closure'=>true],
79
- ])
80
- ->setFinder(
81
- PhpCsFixer\Finder::create()
82
- ->in(__DIR__.'/src')
83
- ->in(__DIR__.'/tests')
84
- ->name('*.php')
85
- )
86
- ;
87
-
88
- return $config;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/promises/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2015-2016 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/promises/phpstan-baseline.neon DELETED
@@ -1,7 +0,0 @@
1
- parameters:
2
- ignoreErrors:
3
- -
4
- message: "#^Parameter \\#1 \\$function of function register_shutdown_function expects callable\\(\\)\\: void, Closure\\(\\)\\: mixed given\\.$#"
5
- count: 1
6
- path: src/TaskQueue.php
7
-
 
 
 
 
 
 
 
vendor/guzzlehttp/promises/phpstan.neon.dist DELETED
@@ -1,10 +0,0 @@
1
- includes:
2
- - phpstan-baseline.neon
3
-
4
- parameters:
5
- level: 5
6
- paths:
7
- - src
8
-
9
- ignoreErrors:
10
- - "#^Dead catch - Exception is already caught by Throwable above\\.$#"
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/promises/psalm.xml DELETED
@@ -1,15 +0,0 @@
1
- <?xml version="1.0"?>
2
- <psalm
3
- errorLevel="4"
4
- resolveFromConfigFile="true"
5
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6
- xmlns="https://getpsalm.org/schema/config"
7
- xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
8
- >
9
- <projectFiles>
10
- <directory name="src" />
11
- <ignoreFiles>
12
- <directory name="vendor" />
13
- </ignoreFiles>
14
- </projectFiles>
15
- </psalm>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/psr7/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2015 Michael Dowling, https://github.com/mtdowling <mtdowling@gmail.com>
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is
8
- furnished to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in
11
- all copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/.gush.yml DELETED
@@ -1,7 +0,0 @@
1
- adapter: github
2
- issue_tracker: github
3
- meta-header: "Copyright (c) 2009-2015 hamcrest.org"
4
- table-pr:
5
- fixed_tickets: ['Fixed Tickets', '']
6
- license: ['License', MIT]
7
- base: master
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/CHANGES.txt DELETED
@@ -1,173 +0,0 @@
1
- == Version 2.0.1: Released Jul 09 2020 ==
2
-
3
- * Added support for PHP 8
4
-
5
-
6
- == Version 2.0: Released Feb 26 2016 ==
7
-
8
- * Removed automatic loading of global functions
9
-
10
-
11
- == Version 1.1.0: Released Feb 2 2012 ==
12
-
13
- Issues Fixed: 121, 138, 147
14
-
15
- * Added non-empty matchers to complement the emptiness-matching forms.
16
-
17
- - nonEmptyString()
18
- - nonEmptyArray()
19
- - nonEmptyTraversable()
20
-
21
- * Added ability to pass variable arguments to several array-based matcher
22
- factory methods so they work like allOf() et al.
23
-
24
- - anArray()
25
- - arrayContainingInAnyOrder(), containsInAnyOrder()
26
- - arrayContaining(), contains()
27
- - stringContainsInOrder()
28
-
29
- * Matchers that accept an array of matchers now also accept variable arguments.
30
- Any non-matcher arguments are wrapped by IsEqual.
31
-
32
- * Added noneOf() as a shortcut for not(anyOf()).
33
-
34
-
35
- == Version 1.0.0: Released Jan 20 2012 ==
36
-
37
- Issues Fixed: 119, 136, 139, 141, 148, 149, 172
38
-
39
- * Moved hamcrest.php into Hamcrest folder and renamed to Hamcrest.php.
40
- This is more in line with PEAR packaging standards.
41
-
42
- * Renamed callable() to callableValue() for compatibility with PHP 5.4.
43
-
44
- * Added Hamcrest_Text_StringContainsIgnoringCase to assert using stripos().
45
-
46
- assertThat('fOObAr', containsStringIgnoringCase('oba'));
47
- assertThat('fOObAr', containsString('oba')->ignoringCase());
48
-
49
- * Fixed Hamcrest_Core_IsInstanceOf to return false for native types.
50
-
51
- * Moved string-based matchers to Hamcrest_Text package.
52
- StringContains, StringEndsWith, StringStartsWith, and SubstringMatcher
53
-
54
- * Hamcrest.php and Hamcrest_Matchers.php are now built from @factory doctags.
55
- Added @factory doctag to every static factory method.
56
-
57
- * Hamcrest_Matchers and Hamcrest.php now import each matcher as-needed
58
- and Hamcrest.php calls the matchers directly instead of Hamcrest_Matchers.
59
-
60
-
61
- == Version 0.3.0: Released Jul 26 2010 ==
62
-
63
- * Added running count to Hamcrest_MatcherAssert with methods to get and reset it.
64
- This can be used by unit testing frameworks for reporting.
65
-
66
- * Added Hamcrest_Core_HasToString to assert return value of toString() or __toString().
67
-
68
- assertThat($anObject, hasToString('foo'));
69
-
70
- * Added Hamcrest_Type_IsScalar to assert is_scalar().
71
- Matches values of type bool, int, float, double, and string.
72
-
73
- assertThat($count, scalarValue());
74
- assertThat('foo', scalarValue());
75
-
76
- * Added Hamcrest_Collection package.
77
-
78
- - IsEmptyTraversable
79
- - IsTraversableWithSize
80
-
81
- assertThat($iterator, emptyTraversable());
82
- assertThat($iterator, traversableWithSize(5));
83
-
84
- * Added Hamcrest_Xml_HasXPath to assert XPath expressions or the content of nodes in an XML/HTML DOM.
85
-
86
- assertThat($dom, hasXPath('books/book/title'));
87
- assertThat($dom, hasXPath('books/book[contains(title, "Alice")]', 3));
88
- assertThat($dom, hasXPath('books/book/title', 'Alice in Wonderland'));
89
- assertThat($dom, hasXPath('count(books/book)', greaterThan(10)));
90
-
91
- * Added aliases to match the Java API.
92
-
93
- hasEntry() -> hasKeyValuePair()
94
- hasValue() -> hasItemInArray()
95
- contains() -> arrayContaining()
96
- containsInAnyOrder() -> arrayContainingInAnyOrder()
97
-
98
- * Added optional subtype to Hamcrest_TypeSafeMatcher to enforce object class or resource type.
99
-
100
- * Hamcrest_TypeSafeDiagnosingMatcher now extends Hamcrest_TypeSafeMatcher.
101
-
102
-
103
- == Version 0.2.0: Released Jul 14 2010 ==
104
-
105
- Issues Fixed: 109, 111, 114, 115
106
-
107
- * Description::appendValues() and appendValueList() accept Iterator and IteratorAggregate. [111]
108
- BaseDescription::appendValue() handles IteratorAggregate.
109
-
110
- * assertThat() accepts a single boolean parameter and
111
- wraps any non-Matcher third parameter with equalTo().
112
-
113
- * Removed null return value from assertThat(). [114]
114
-
115
- * Fixed wrong variable name in contains(). [109]
116
-
117
- * Added Hamcrest_Core_IsSet to assert isset().
118
-
119
- assertThat(array('foo' => 'bar'), set('foo'));
120
- assertThat(array('foo' => 'bar'), notSet('bar'));
121
-
122
- * Added Hamcrest_Core_IsTypeOf to assert built-in types with gettype(). [115]
123
- Types: array, boolean, double, integer, null, object, resource, and string.
124
- Note that gettype() returns "double" for float values.
125
-
126
- assertThat($count, typeOf('integer'));
127
- assertThat(3.14159, typeOf('double'));
128
- assertThat(array('foo', 'bar'), typeOf('array'));
129
- assertThat(new stdClass(), typeOf('object'));
130
-
131
- * Added type-specific matchers in new Hamcrest_Type package.
132
-
133
- - IsArray
134
- - IsBoolean
135
- - IsDouble (includes float values)
136
- - IsInteger
137
- - IsObject
138
- - IsResource
139
- - IsString
140
-
141
- assertThat($count, integerValue());
142
- assertThat(3.14159, floatValue());
143
- assertThat('foo', stringValue());
144
-
145
- * Added Hamcrest_Type_IsNumeric to assert is_numeric().
146
- Matches values of type int and float/double or strings that are formatted as numbers.
147
-
148
- assertThat(5, numericValue());
149
- assertThat('-5e+3', numericValue());
150
-
151
- * Added Hamcrest_Type_IsCallable to assert is_callable().
152
-
153
- assertThat('preg_match', callable());
154
- assertThat(array('SomeClass', 'SomeMethod'), callable());
155
- assertThat(array($object, 'SomeMethod'), callable());
156
- assertThat($object, callable());
157
- assertThat(function ($x, $y) { return $x + $y; }, callable());
158
-
159
- * Added Hamcrest_Text_MatchesPattern for regex matching with preg_match().
160
-
161
- assertThat('foobar', matchesPattern('/o+b/'));
162
-
163
- * Added aliases:
164
- - atLeast() for greaterThanOrEqualTo()
165
- - atMost() for lessThanOrEqualTo()
166
-
167
-
168
- == Version 0.1.0: Released Jul 7 2010 ==
169
-
170
- * Created PEAR package
171
-
172
- * Core matchers
173
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/LICENSE.txt DELETED
@@ -1,27 +0,0 @@
1
- BSD License
2
-
3
- Copyright (c) 2000-2014, www.hamcrest.org
4
- All rights reserved.
5
-
6
- Redistribution and use in source and binary forms, with or without
7
- modification, are permitted provided that the following conditions are met:
8
-
9
- Redistributions of source code must retain the above copyright notice, this list of
10
- conditions and the following disclaimer. Redistributions in binary form must reproduce
11
- the above copyright notice, this list of conditions and the following disclaimer in
12
- the documentation and/or other materials provided with the distribution.
13
-
14
- Neither the name of Hamcrest nor the names of its contributors may be used to endorse
15
- or promote products derived from this software without specific prior written
16
- permission.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
19
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
21
- SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
23
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
26
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
27
- DAMAGE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/FactoryCall.php DELETED
@@ -1,41 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- class FactoryCall
8
- {
9
- /**
10
- * Hamcrest standard is two spaces for each level of indentation.
11
- *
12
- * @var string
13
- */
14
- const INDENT = ' ';
15
-
16
- /**
17
- * @var FactoryMethod
18
- */
19
- private $method;
20
-
21
- /**
22
- * @var string
23
- */
24
- private $name;
25
-
26
- public function __construct(FactoryMethod $method, $name)
27
- {
28
- $this->method = $method;
29
- $this->name = $name;
30
- }
31
-
32
- public function getMethod()
33
- {
34
- return $this->method;
35
- }
36
-
37
- public function getName()
38
- {
39
- return $this->name;
40
- }
41
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/FactoryClass.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- class FactoryClass
8
- {
9
- /**
10
- * @var string
11
- */
12
- private $file;
13
-
14
- /**
15
- * @var ReflectionClass
16
- */
17
- private $reflector;
18
-
19
- /**
20
- * @var array
21
- */
22
- private $methods;
23
-
24
- public function __construct($file, ReflectionClass $class)
25
- {
26
- $this->file = $file;
27
- $this->reflector = $class;
28
- $this->extractFactoryMethods();
29
- }
30
-
31
- public function extractFactoryMethods()
32
- {
33
- $this->methods = array();
34
- foreach ($this->getPublicStaticMethods() as $method) {
35
- if ($method->isFactory()) {
36
- $this->methods[] = $method;
37
- }
38
- }
39
- }
40
-
41
- public function getPublicStaticMethods()
42
- {
43
- $methods = array();
44
- foreach ($this->reflector->getMethods(ReflectionMethod::IS_STATIC) as $method) {
45
- if ($method->isPublic() && $method->getDeclaringClass() == $this->reflector) {
46
- $methods[] = new FactoryMethod($this, $method);
47
- }
48
- }
49
- return $methods;
50
- }
51
-
52
- public function getFile()
53
- {
54
- return $this->file;
55
- }
56
-
57
- public function getName()
58
- {
59
- return $this->reflector->name;
60
- }
61
-
62
- public function isFactory()
63
- {
64
- return !empty($this->methods);
65
- }
66
-
67
- public function getMethods()
68
- {
69
- return $this->methods;
70
- }
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/FactoryFile.php DELETED
@@ -1,121 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- abstract class FactoryFile
8
- {
9
- /**
10
- * Hamcrest standard is two spaces for each level of indentation.
11
- *
12
- * @var string
13
- */
14
- const INDENT = ' ';
15
-
16
- private $indent;
17
-
18
- private $file;
19
-
20
- private $code;
21
-
22
- public function __construct($file, $indent)
23
- {
24
- $this->file = $file;
25
- $this->indent = $indent;
26
- }
27
-
28
- abstract public function addCall(FactoryCall $call);
29
-
30
- abstract public function build();
31
-
32
- public function addFileHeader()
33
- {
34
- $this->code = '';
35
- $this->addPart('file_header');
36
- }
37
-
38
- public function addPart($name)
39
- {
40
- $this->addCode($this->readPart($name));
41
- }
42
-
43
- public function addCode($code)
44
- {
45
- $this->code .= $code;
46
- }
47
-
48
- public function readPart($name)
49
- {
50
- return file_get_contents(__DIR__ . "/parts/$name.txt");
51
- }
52
-
53
- public function generateFactoryCall(FactoryCall $call)
54
- {
55
- $method = $call->getMethod();
56
- $code = $method->getComment($this->indent) . "\n";
57
- $code .= $this->generateDeclaration($call->getName(), $method);
58
- $code .= $this->generateCall($method);
59
- $code .= $this->generateClosing();
60
- return $code;
61
- }
62
-
63
- public function generateDeclaration($name, FactoryMethod $method)
64
- {
65
- $code = $this->indent . $this->getDeclarationModifiers()
66
- . 'function ' . $name . '('
67
- . $this->generateDeclarationArguments($method)
68
- . ')' . "\n" . $this->indent . '{' . "\n";
69
- return $code;
70
- }
71
-
72
- public function getDeclarationModifiers()
73
- {
74
- return '';
75
- }
76
-
77
- public function generateDeclarationArguments(FactoryMethod $method)
78
- {
79
- if ($method->acceptsVariableArguments()) {
80
- return '/* args... */';
81
- } else {
82
- return $method->getParameterDeclarations();
83
- }
84
- }
85
-
86
- public function generateImport(FactoryMethod $method)
87
- {
88
- return $this->indent . self::INDENT . "require_once '" . $method->getClass()->getFile() . "';" . "\n";
89
- }
90
-
91
- public function generateCall(FactoryMethod $method)
92
- {
93
- $code = '';
94
- if ($method->acceptsVariableArguments()) {
95
- $code .= $this->indent . self::INDENT . '$args = func_get_args();' . "\n";
96
- }
97
-
98
- $code .= $this->indent . self::INDENT . 'return ';
99
- if ($method->acceptsVariableArguments()) {
100
- $code .= 'call_user_func_array(array(\''
101
- . '\\' . $method->getClassName() . '\', \''
102
- . $method->getName() . '\'), $args);' . "\n";
103
- } else {
104
- $code .= '\\' . $method->getClassName() . '::'
105
- . $method->getName() . '('
106
- . $method->getParameterInvocations() . ');' . "\n";
107
- }
108
-
109
- return $code;
110
- }
111
-
112
- public function generateClosing()
113
- {
114
- return $this->indent . '}' . "\n";
115
- }
116
-
117
- public function write()
118
- {
119
- file_put_contents($this->file, $this->code);
120
- }
121
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/FactoryGenerator.php DELETED
@@ -1,124 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- /**
8
- * Controls the process of extracting @factory doctags
9
- * and generating factory method files.
10
- *
11
- * Uses File_Iterator to scan for PHP files.
12
- */
13
- class FactoryGenerator
14
- {
15
- /**
16
- * Path to the Hamcrest PHP files to process.
17
- *
18
- * @var string
19
- */
20
- private $path;
21
-
22
- /**
23
- * @var array of FactoryFile
24
- */
25
- private $factoryFiles;
26
-
27
- public function __construct($path)
28
- {
29
- $this->path = $path;
30
- $this->factoryFiles = array();
31
- }
32
-
33
- public function addFactoryFile(FactoryFile $factoryFile)
34
- {
35
- $this->factoryFiles[] = $factoryFile;
36
- }
37
-
38
- public function generate()
39
- {
40
- $classes = $this->getClassesWithFactoryMethods();
41
- foreach ($classes as $class) {
42
- foreach ($class->getMethods() as $method) {
43
- foreach ($method->getCalls() as $call) {
44
- foreach ($this->factoryFiles as $file) {
45
- $file->addCall($call);
46
- }
47
- }
48
- }
49
- }
50
- }
51
-
52
- public function write()
53
- {
54
- foreach ($this->factoryFiles as $file) {
55
- $file->build();
56
- $file->write();
57
- }
58
- }
59
-
60
- public function getClassesWithFactoryMethods()
61
- {
62
- $classes = array();
63
- $files = $this->getSortedFiles();
64
- foreach ($files as $file) {
65
- $class = $this->getFactoryClass($file);
66
- if ($class !== null) {
67
- $classes[] = $class;
68
- }
69
- }
70
-
71
- return $classes;
72
- }
73
-
74
- public function getSortedFiles()
75
- {
76
- $iter = $this->getFileIterator();
77
- $files = array();
78
- foreach ($iter as $file) {
79
- $files[] = $file;
80
- }
81
- sort($files, SORT_STRING);
82
-
83
- return $files;
84
- }
85
-
86
- private function getFileIterator()
87
- {
88
- $factoryClass = class_exists('File_Iterator_Factory') ? 'File_Iterator_Factory' : 'SebastianBergmann\FileIterator\Factory';
89
-
90
- $factory = new $factoryClass();
91
-
92
- return $factory->getFileIterator($this->path, '.php');
93
- }
94
-
95
- public function getFactoryClass($file)
96
- {
97
- $name = $this->getFactoryClassName($file);
98
- if ($name !== null) {
99
- require_once $file;
100
-
101
- if (class_exists($name)) {
102
- $class = new FactoryClass(substr($file, strpos($file, 'Hamcrest/')), new ReflectionClass($name));
103
- if ($class->isFactory()) {
104
- return $class;
105
- }
106
- }
107
- }
108
-
109
- return null;
110
- }
111
-
112
- public function getFactoryClassName($file)
113
- {
114
- $content = file_get_contents($file);
115
- if (preg_match('/namespace\s+(.+);/', $content, $namespace)
116
- && preg_match('/\n\s*class\s+(\w+)\s+extends\b/', $content, $className)
117
- && preg_match('/@factory\b/', $content)
118
- ) {
119
- return $namespace[1] . '\\' . $className[1];
120
- }
121
-
122
- return null;
123
- }
124
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/FactoryMethod.php DELETED
@@ -1,231 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- /**
8
- * Represents a single static factory method from a {@link Matcher} class.
9
- *
10
- * @todo Search method in file contents for func_get_args() to replace factoryVarArgs.
11
- */
12
- class FactoryMethod
13
- {
14
- /**
15
- * @var FactoryClass
16
- */
17
- private $class;
18
-
19
- /**
20
- * @var ReflectionMethod
21
- */
22
- private $reflector;
23
-
24
- /**
25
- * @var array of string
26
- */
27
- private $comment;
28
-
29
- /**
30
- * @var bool
31
- */
32
- private $isVarArgs;
33
-
34
- /**
35
- * @var array of FactoryCall
36
- */
37
- private $calls;
38
-
39
- /**
40
- * @var array FactoryParameter
41
- */
42
- private $parameters;
43
-
44
- public function __construct(FactoryClass $class, ReflectionMethod $reflector)
45
- {
46
- $this->class = $class;
47
- $this->reflector = $reflector;
48
- $this->extractCommentWithoutLeadingShashesAndStars();
49
- $this->extractFactoryNamesFromComment();
50
- $this->extractParameters();
51
- }
52
-
53
- public function extractCommentWithoutLeadingShashesAndStars()
54
- {
55
- $this->comment = explode("\n", $this->reflector->getDocComment());
56
- foreach ($this->comment as &$line) {
57
- $line = preg_replace('#^\s*(/\\*+|\\*+/|\\*)\s?#', '', $line);
58
- }
59
- $this->trimLeadingBlankLinesFromComment();
60
- $this->trimTrailingBlankLinesFromComment();
61
- }
62
-
63
- public function trimLeadingBlankLinesFromComment()
64
- {
65
- while (count($this->comment) > 0) {
66
- $line = array_shift($this->comment);
67
- if (trim($line) != '') {
68
- array_unshift($this->comment, $line);
69
- break;
70
- }
71
- }
72
- }
73
-
74
- public function trimTrailingBlankLinesFromComment()
75
- {
76
- while (count($this->comment) > 0) {
77
- $line = array_pop($this->comment);
78
- if (trim($line) != '') {
79
- array_push($this->comment, $line);
80
- break;
81
- }
82
- }
83
- }
84
-
85
- public function extractFactoryNamesFromComment()
86
- {
87
- $this->calls = array();
88
- for ($i = 0; $i < count($this->comment); $i++) {
89
- if ($this->extractFactoryNamesFromLine($this->comment[$i])) {
90
- unset($this->comment[$i]);
91
- }
92
- }
93
- $this->trimTrailingBlankLinesFromComment();
94
- }
95
-
96
- public function extractFactoryNamesFromLine($line)
97
- {
98
- if (preg_match('/^\s*@factory(\s+(.+))?$/', $line, $match)) {
99
- $this->createCalls(
100
- $this->extractFactoryNamesFromAnnotation(
101
- isset($match[2]) ? trim($match[2]) : null
102
- )
103
- );
104
- return true;
105
- }
106
- return false;
107
- }
108
-
109
- public function extractFactoryNamesFromAnnotation($value)
110
- {
111
- $primaryName = $this->reflector->getName();
112
- if (empty($value)) {
113
- return array($primaryName);
114
- }
115
- preg_match_all('/(\.{3}|-|[a-zA-Z_][a-zA-Z_0-9]*)/', $value, $match);
116
- $names = $match[0];
117
- if (in_array('...', $names)) {
118
- $this->isVarArgs = true;
119
- }
120
- if (!in_array('-', $names) && !in_array($primaryName, $names)) {
121
- array_unshift($names, $primaryName);
122
- }
123
- return $names;
124
- }
125
-
126
- public function createCalls(array $names)
127
- {
128
- $names = array_unique($names);
129
- foreach ($names as $name) {
130
- if ($name != '-' && $name != '...') {
131
- $this->calls[] = new FactoryCall($this, $name);
132
- }
133
- }
134
- }
135
-
136
- public function extractParameters()
137
- {
138
- $this->parameters = array();
139
- if (!$this->isVarArgs) {
140
- foreach ($this->reflector->getParameters() as $parameter) {
141
- $this->parameters[] = new FactoryParameter($this, $parameter);
142
- }
143
- }
144
- }
145
-
146
- public function getParameterDeclarations()
147
- {
148
- if ($this->isVarArgs || !$this->hasParameters()) {
149
- return '';
150
- }
151
- $params = array();
152
- foreach ($this->parameters as /** @var $parameter FactoryParameter */
153
- $parameter) {
154
- $params[] = $parameter->getDeclaration();
155
- }
156
- return implode(', ', $params);
157
- }
158
-
159
- public function getParameterInvocations()
160
- {
161
- if ($this->isVarArgs) {
162
- return '';
163
- }
164
- $params = array();
165
- foreach ($this->parameters as $parameter) {
166
- $params[] = $parameter->getInvocation();
167
- }
168
- return implode(', ', $params);
169
- }
170
-
171
-
172
- public function getClass()
173
- {
174
- return $this->class;
175
- }
176
-
177
- public function getClassName()
178
- {
179
- return $this->class->getName();
180
- }
181
-
182
- public function getName()
183
- {
184
- return $this->reflector->name;
185
- }
186
-
187
- public function isFactory()
188
- {
189
- return count($this->calls) > 0;
190
- }
191
-
192
- public function getCalls()
193
- {
194
- return $this->calls;
195
- }
196
-
197
- public function acceptsVariableArguments()
198
- {
199
- return $this->isVarArgs;
200
- }
201
-
202
- public function hasParameters()
203
- {
204
- return !empty($this->parameters);
205
- }
206
-
207
- public function getParameters()
208
- {
209
- return $this->parameters;
210
- }
211
-
212
- public function getFullName()
213
- {
214
- return $this->getClassName() . '::' . $this->getName();
215
- }
216
-
217
- public function getCommentText()
218
- {
219
- return implode("\n", $this->comment);
220
- }
221
-
222
- public function getComment($indent = '')
223
- {
224
- $comment = $indent . '/**';
225
- foreach ($this->comment as $line) {
226
- $comment .= "\n" . rtrim($indent . ' * ' . $line);
227
- }
228
- $comment .= "\n" . $indent . ' */';
229
- return $comment;
230
- }
231
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/FactoryParameter.php DELETED
@@ -1,131 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- class FactoryParameter
8
- {
9
- /**
10
- * @var FactoryMethod
11
- */
12
- private $method;
13
-
14
- /**
15
- * @var ReflectionParameter
16
- */
17
- private $reflector;
18
-
19
- public function __construct(FactoryMethod $method, ReflectionParameter $reflector)
20
- {
21
- $this->method = $method;
22
- $this->reflector = $reflector;
23
- }
24
-
25
- /**
26
- * Compute the declaration code.
27
- *
28
- * @return string
29
- */
30
- public function getDeclaration()
31
- {
32
- $code = $this->getTypeCode() . $this->getInvocation();
33
-
34
- if ($this->reflector->isOptional()) {
35
- $default = $this->reflector->getDefaultValue();
36
- if (is_null($default)) {
37
- $default = 'null';
38
- } elseif (is_bool($default)) {
39
- $default = $default ? 'true' : 'false';
40
- } elseif (is_string($default)) {
41
- $default = "'" . $default . "'";
42
- } elseif (is_numeric($default)) {
43
- $default = strval($default);
44
- } elseif (is_array($default)) {
45
- $default = 'array()';
46
- } else {
47
- echo 'Warning: unknown default type for ' . $this->getMethod()->getFullName() . "\n";
48
- var_dump($default);
49
- $default = 'null';
50
- }
51
- $code .= ' = ' . $default;
52
- }
53
- return $code;
54
- }
55
-
56
- /**
57
- * Compute the type code for the paramater.
58
- *
59
- * @return string
60
- */
61
- private function getTypeCode()
62
- {
63
- // Handle PHP 5 separately
64
- if (PHP_VERSION_ID < 70000) {
65
- if ($this->reflector->isArray()) {
66
- return 'array';
67
- }
68
-
69
- $class = $this->reflector->getClass();
70
-
71
- return $class ? sprintf('\\%s ', $class->getName()) : '';
72
- }
73
-
74
- if (!$this->reflector->hasType()) {
75
- return '';
76
- }
77
-
78
- $type = $this->reflector->getType();
79
- $name = self::getQualifiedName($type);
80
-
81
- // PHP 7.1+ supports nullable types via a leading question mark
82
- return (PHP_VERSION_ID >= 70100 && $type->allowsNull()) ? sprintf('?%s ', $name) : sprintf('%s ', $name);
83
- }
84
-
85
- /**
86
- * Compute qualified name for the given type.
87
- *
88
- * This function knows how to prefix class names with a leading slash and
89
- * also how to handle PHP 8's union types.
90
- *
91
- * @param ReflectionType $type
92
- *
93
- * @return string
94
- */
95
- private static function getQualifiedName(ReflectionType $type)
96
- {
97
- // PHP 8 union types can be recursively processed
98
- if ($type instanceof ReflectionUnionType) {
99
- return implode('|', array_map(function (ReflectionType $type) {
100
- // The "self::" call within a Closure is fine here because this
101
- // code will only ever be executed on PHP 7.0+
102
- return self::getQualifiedName($type);
103
- }, $type->getTypes()));
104
- }
105
-
106
- // PHP 7.0 doesn't have named types, but 7.1+ does
107
- $name = $type instanceof ReflectionNamedType ? $type->getName() : (string) $type;
108
-
109
- return $type->isBuiltin() ? $name : sprintf('\\%s', $name);
110
- }
111
-
112
- /**
113
- * Compute the invocation code.
114
- *
115
- * @return string
116
- */
117
- public function getInvocation()
118
- {
119
- return sprintf('$%s', $this->reflector->getName());
120
- }
121
-
122
- /**
123
- * Compute the method name.
124
- *
125
- * @return string
126
- */
127
- public function getMethod()
128
- {
129
- return $this->method;
130
- }
131
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/GlobalFunctionFile.php DELETED
@@ -1,42 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- class GlobalFunctionFile extends FactoryFile
8
- {
9
- /**
10
- * @var string containing function definitions
11
- */
12
- private $functions;
13
-
14
- public function __construct($file)
15
- {
16
- parent::__construct($file, ' ');
17
- $this->functions = '';
18
- }
19
-
20
- public function addCall(FactoryCall $call)
21
- {
22
- $this->functions .= "\n" . $this->generateFactoryCall($call);
23
- }
24
-
25
- public function build()
26
- {
27
- $this->addFileHeader();
28
- $this->addPart('functions_imports');
29
- $this->addPart('functions_header');
30
- $this->addCode($this->functions);
31
- $this->addPart('functions_footer');
32
- }
33
-
34
- public function generateFactoryCall(FactoryCall $call)
35
- {
36
- $code = "if (!function_exists('{$call->getName()}')) {\n";
37
- $code.= parent::generateFactoryCall($call);
38
- $code.= "}\n";
39
-
40
- return $code;
41
- }
42
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/StaticMethodFile.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
-
7
- class StaticMethodFile extends FactoryFile
8
- {
9
- /**
10
- * @var string containing method definitions
11
- */
12
- private $methods;
13
-
14
- public function __construct($file)
15
- {
16
- parent::__construct($file, ' ');
17
- $this->methods = '';
18
- }
19
-
20
- public function addCall(FactoryCall $call)
21
- {
22
- $this->methods .= PHP_EOL . $this->generateFactoryCall($call);
23
- }
24
-
25
- public function getDeclarationModifiers()
26
- {
27
- return 'public static ';
28
- }
29
-
30
- public function build()
31
- {
32
- $this->addFileHeader();
33
- $this->addPart('matchers_imports');
34
- $this->addPart('matchers_header');
35
- $this->addCode($this->methods);
36
- $this->addPart('matchers_footer');
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/parts/file_header.txt DELETED
@@ -1,7 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009-2010 hamcrest.org
5
- */
6
-
7
- // This file is generated from the static method @factory doctags.
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/parts/functions_footer.txt DELETED
File without changes
vendor/hamcrest/hamcrest-php/generator/parts/functions_header.txt DELETED
@@ -1,24 +0,0 @@
1
-
2
- if (!function_exists('assertThat')) {
3
- /**
4
- * Make an assertion and throw {@link Hamcrest_AssertionError} if it fails.
5
- *
6
- * Example:
7
- * <pre>
8
- * //With an identifier
9
- * assertThat("assertion identifier", $apple->flavour(), equalTo("tasty"));
10
- * //Without an identifier
11
- * assertThat($apple->flavour(), equalTo("tasty"));
12
- * //Evaluating a boolean expression
13
- * assertThat("some error", $a > $b);
14
- * </pre>
15
- */
16
- function assertThat()
17
- {
18
- $args = func_get_args();
19
- call_user_func_array(
20
- array('Hamcrest\MatcherAssert', 'assertThat'),
21
- $args
22
- );
23
- }
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/parts/functions_imports.txt DELETED
File without changes
vendor/hamcrest/hamcrest-php/generator/parts/matchers_footer.txt DELETED
@@ -1 +0,0 @@
1
- }
 
vendor/hamcrest/hamcrest-php/generator/parts/matchers_header.txt DELETED
@@ -1,7 +0,0 @@
1
-
2
-
3
- /**
4
- * A series of static factories for all hamcrest matchers.
5
- */
6
- class Matchers
7
- {
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/generator/parts/matchers_imports.txt DELETED
@@ -1,2 +0,0 @@
1
-
2
- namespace Hamcrest;
 
 
vendor/hamcrest/hamcrest-php/generator/run.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009 hamcrest.org
5
- */
6
- require __DIR__ . '/../vendor/autoload.php';
7
-
8
- /*
9
- * Generates the Hamcrest\Matchers factory class and factory functions
10
- * from the @factory doctags in the various matchers.
11
- */
12
-
13
- define('GENERATOR_BASE', __DIR__);
14
- define('HAMCREST_BASE', realpath(dirname(GENERATOR_BASE) . DIRECTORY_SEPARATOR . 'hamcrest'));
15
-
16
- define('GLOBAL_FUNCTIONS_FILE', HAMCREST_BASE . DIRECTORY_SEPARATOR . 'Hamcrest.php');
17
- define('STATIC_MATCHERS_FILE', HAMCREST_BASE . DIRECTORY_SEPARATOR . 'Hamcrest' . DIRECTORY_SEPARATOR . 'Matchers.php');
18
-
19
- set_include_path(
20
- implode(
21
- PATH_SEPARATOR,
22
- array(
23
- GENERATOR_BASE,
24
- HAMCREST_BASE,
25
- get_include_path()
26
- )
27
- )
28
- );
29
-
30
- @unlink(GLOBAL_FUNCTIONS_FILE);
31
- @unlink(STATIC_MATCHERS_FILE);
32
-
33
- $generator = new FactoryGenerator(HAMCREST_BASE . DIRECTORY_SEPARATOR . 'Hamcrest');
34
- $generator->addFactoryFile(new StaticMethodFile(STATIC_MATCHERS_FILE));
35
- $generator->addFactoryFile(new GlobalFunctionFile(GLOBAL_FUNCTIONS_FILE));
36
- $generator->generate();
37
- $generator->write();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php DELETED
@@ -1,882 +0,0 @@
1
- <?php
2
-
3
- /*
4
- Copyright (c) 2009-2010 hamcrest.org
5
- */
6
-
7
- // This file is generated from the static method @factory doctags.
8
-
9
- if (!function_exists('assertThat')) {
10
- /**
11
- * Make an assertion and throw {@link Hamcrest_AssertionError} if it fails.
12
- *
13
- * Example:
14
- * <pre>
15
- * //With an identifier
16
- * assertThat("assertion identifier", $apple->flavour(), equalTo("tasty"));
17
- * //Without an identifier
18
- * assertThat($apple->flavour(), equalTo("tasty"));
19
- * //Evaluating a boolean expression
20
- * assertThat("some error", $a > $b);
21
- * </pre>
22
- */
23
- function assertThat()
24
- {
25
- $args = func_get_args();
26
- call_user_func_array(
27
- array('Hamcrest\MatcherAssert', 'assertThat'),
28
- $args
29
- );
30
- }
31
- }
32
-
33
- if (!function_exists('anArray')) {
34
- /**
35
- * Evaluates to true only if each $matcher[$i] is satisfied by $array[$i].
36
- */
37
- function anArray(/* args... */)
38
- {
39
- $args = func_get_args();
40
- return call_user_func_array(array('\Hamcrest\Arrays\IsArray', 'anArray'), $args);
41
- }
42
- }
43
-
44
- if (!function_exists('hasItemInArray')) {
45
- /**
46
- * Evaluates to true if any item in an array satisfies the given matcher.
47
- *
48
- * @param mixed $item as a {@link Hamcrest\Matcher} or a value.
49
- *
50
- * @return \Hamcrest\Arrays\IsArrayContaining
51
- */
52
- function hasItemInArray($item)
53
- {
54
- return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
55
- }
56
- }
57
-
58
- if (!function_exists('hasValue')) {
59
- /**
60
- * Evaluates to true if any item in an array satisfies the given matcher.
61
- *
62
- * @param mixed $item as a {@link Hamcrest\Matcher} or a value.
63
- *
64
- * @return \Hamcrest\Arrays\IsArrayContaining
65
- */
66
- function hasValue($item)
67
- {
68
- return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
69
- }
70
- }
71
-
72
- if (!function_exists('arrayContainingInAnyOrder')) {
73
- /**
74
- * An array with elements that match the given matchers.
75
- */
76
- function arrayContainingInAnyOrder(/* args... */)
77
- {
78
- $args = func_get_args();
79
- return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
80
- }
81
- }
82
-
83
- if (!function_exists('containsInAnyOrder')) {
84
- /**
85
- * An array with elements that match the given matchers.
86
- */
87
- function containsInAnyOrder(/* args... */)
88
- {
89
- $args = func_get_args();
90
- return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
91
- }
92
- }
93
-
94
- if (!function_exists('arrayContaining')) {
95
- /**
96
- * An array with elements that match the given matchers in the same order.
97
- */
98
- function arrayContaining(/* args... */)
99
- {
100
- $args = func_get_args();
101
- return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
102
- }
103
- }
104
-
105
- if (!function_exists('contains')) {
106
- /**
107
- * An array with elements that match the given matchers in the same order.
108
- */
109
- function contains(/* args... */)
110
- {
111
- $args = func_get_args();
112
- return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
113
- }
114
- }
115
-
116
- if (!function_exists('hasKeyInArray')) {
117
- /**
118
- * Evaluates to true if any key in an array matches the given matcher.
119
- *
120
- * @param mixed $key as a {@link Hamcrest\Matcher} or a value.
121
- *
122
- * @return \Hamcrest\Arrays\IsArrayContainingKey
123
- */
124
- function hasKeyInArray($key)
125
- {
126
- return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
127
- }
128
- }
129
-
130
- if (!function_exists('hasKey')) {
131
- /**
132
- * Evaluates to true if any key in an array matches the given matcher.
133
- *
134
- * @param mixed $key as a {@link Hamcrest\Matcher} or a value.
135
- *
136
- * @return \Hamcrest\Arrays\IsArrayContainingKey
137
- */
138
- function hasKey($key)
139
- {
140
- return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
141
- }
142
- }
143
-
144
- if (!function_exists('hasKeyValuePair')) {
145
- /**
146
- * Test if an array has both an key and value in parity with each other.
147
- */
148
- function hasKeyValuePair($key, $value)
149
- {
150
- return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
151
- }
152
- }
153
-
154
- if (!function_exists('hasEntry')) {
155
- /**
156
- * Test if an array has both an key and value in parity with each other.
157
- */
158
- function hasEntry($key, $value)
159
- {
160
- return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
161
- }
162
- }
163
-
164
- if (!function_exists('arrayWithSize')) {
165
- /**
166
- * Does array size satisfy a given matcher?
167
- *
168
- * @param \Hamcrest\Matcher|int $size as a {@link Hamcrest\Matcher} or a value.
169
- *
170
- * @return \Hamcrest\Arrays\IsArrayWithSize
171
- */
172
- function arrayWithSize($size)
173
- {
174
- return \Hamcrest\Arrays\IsArrayWithSize::arrayWithSize($size);
175
- }
176
- }
177
-
178
- if (!function_exists('emptyArray')) {
179
- /**
180
- * Matches an empty array.
181
- */
182
- function emptyArray()
183
- {
184
- return \Hamcrest\Arrays\IsArrayWithSize::emptyArray();
185
- }
186
- }
187
-
188
- if (!function_exists('nonEmptyArray')) {
189
- /**
190
- * Matches an empty array.
191
- */
192
- function nonEmptyArray()
193
- {
194
- return \Hamcrest\Arrays\IsArrayWithSize::nonEmptyArray();
195
- }
196
- }
197
-
198
- if (!function_exists('emptyTraversable')) {
199
- /**
200
- * Returns true if traversable is empty.
201
- */
202
- function emptyTraversable()
203
- {
204
- return \Hamcrest\Collection\IsEmptyTraversable::emptyTraversable();
205
- }
206
- }
207
-
208
- if (!function_exists('nonEmptyTraversable')) {
209
- /**
210
- * Returns true if traversable is not empty.
211
- */
212
- function nonEmptyTraversable()
213
- {
214
- return \Hamcrest\Collection\IsEmptyTraversable::nonEmptyTraversable();
215
- }
216
- }
217
-
218
- if (!function_exists('traversableWithSize')) {
219
- /**
220
- * Does traversable size satisfy a given matcher?
221
- */
222
- function traversableWithSize($size)
223
- {
224
- return \Hamcrest\Collection\IsTraversableWithSize::traversableWithSize($size);
225
- }
226
- }
227
-
228
- if (!function_exists('allOf')) {
229
- /**
230
- * Evaluates to true only if ALL of the passed in matchers evaluate to true.
231
- */
232
- function allOf(/* args... */)
233
- {
234
- $args = func_get_args();
235
- return call_user_func_array(array('\Hamcrest\Core\AllOf', 'allOf'), $args);
236
- }
237
- }
238
-
239
- if (!function_exists('anyOf')) {
240
- /**
241
- * Evaluates to true if ANY of the passed in matchers evaluate to true.
242
- */
243
- function anyOf(/* args... */)
244
- {
245
- $args = func_get_args();
246
- return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'anyOf'), $args);
247
- }
248
- }
249
-
250
- if (!function_exists('noneOf')) {
251
- /**
252
- * Evaluates to false if ANY of the passed in matchers evaluate to true.
253
- */
254
- function noneOf(/* args... */)
255
- {
256
- $args = func_get_args();
257
- return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'noneOf'), $args);
258
- }
259
- }
260
-
261
- if (!function_exists('both')) {
262
- /**
263
- * This is useful for fluently combining matchers that must both pass.
264
- * For example:
265
- * <pre>
266
- * assertThat($string, both(containsString("a"))->andAlso(containsString("b")));
267
- * </pre>
268
- */
269
- function both(\Hamcrest\Matcher $matcher)
270
- {
271
- return \Hamcrest\Core\CombinableMatcher::both($matcher);
272
- }
273
- }
274
-
275
- if (!function_exists('either')) {
276
- /**
277
- * This is useful for fluently combining matchers where either may pass,
278
- * for example:
279
- * <pre>
280
- * assertThat($string, either(containsString("a"))->orElse(containsString("b")));
281
- * </pre>
282
- */
283
- function either(\Hamcrest\Matcher $matcher)
284
- {
285
- return \Hamcrest\Core\CombinableMatcher::either($matcher);
286
- }
287
- }
288
-
289
- if (!function_exists('describedAs')) {
290
- /**
291
- * Wraps an existing matcher and overrides the description when it fails.
292
- */
293
- function describedAs(/* args... */)
294
- {
295
- $args = func_get_args();
296
- return call_user_func_array(array('\Hamcrest\Core\DescribedAs', 'describedAs'), $args);
297
- }
298
- }
299
-
300
- if (!function_exists('everyItem')) {
301
- /**
302
- * @param Matcher $itemMatcher
303
- * A matcher to apply to every element in an array.
304
- *
305
- * @return \Hamcrest\Core\Every
306
- * Evaluates to TRUE for a collection in which every item matches $itemMatcher
307
- */
308
- function everyItem(\Hamcrest\Matcher $itemMatcher)
309
- {
310
- return \Hamcrest\Core\Every::everyItem($itemMatcher);
311
- }
312
- }
313
-
314
- if (!function_exists('hasToString')) {
315
- /**
316
- * Does array size satisfy a given matcher?
317
- */
318
- function hasToString($matcher)
319
- {
320
- return \Hamcrest\Core\HasToString::hasToString($matcher);
321
- }
322
- }
323
-
324
- if (!function_exists('is')) {
325
- /**
326
- * Decorates another Matcher, retaining the behavior but allowing tests
327
- * to be slightly more expressive.
328
- *
329
- * For example: assertThat($cheese, equalTo($smelly))
330
- * vs. assertThat($cheese, is(equalTo($smelly)))
331
- */
332
- function is($value)
333
- {
334
- return \Hamcrest\Core\Is::is($value);
335
- }
336
- }
337
-
338
- if (!function_exists('anything')) {
339
- /**
340
- * This matcher always evaluates to true.
341
- *
342
- * @param string $description A meaningful string used when describing itself.
343
- *
344
- * @return \Hamcrest\Core\IsAnything
345
- */
346
- function anything($description = 'ANYTHING')
347
- {
348
- return \Hamcrest\Core\IsAnything::anything($description);
349
- }
350
- }
351
-
352
- if (!function_exists('hasItem')) {
353
- /**
354
- * Test if the value is an array containing this matcher.
355
- *
356
- * Example:
357
- * <pre>
358
- * assertThat(array('a', 'b'), hasItem(equalTo('b')));
359
- * //Convenience defaults to equalTo()
360
- * assertThat(array('a', 'b'), hasItem('b'));
361
- * </pre>
362
- */
363
- function hasItem(/* args... */)
364
- {
365
- $args = func_get_args();
366
- return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItem'), $args);
367
- }
368
- }
369
-
370
- if (!function_exists('hasItems')) {
371
- /**
372
- * Test if the value is an array containing elements that match all of these
373
- * matchers.
374
- *
375
- * Example:
376
- * <pre>
377
- * assertThat(array('a', 'b', 'c'), hasItems(equalTo('a'), equalTo('b')));
378
- * </pre>
379
- */
380
- function hasItems(/* args... */)
381
- {
382
- $args = func_get_args();
383
- return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItems'), $args);
384
- }
385
- }
386
-
387
- if (!function_exists('equalTo')) {
388
- /**
389
- * Is the value equal to another value, as tested by the use of the "=="
390
- * comparison operator?
391
- */
392
- function equalTo($item)
393
- {
394
- return \Hamcrest\Core\IsEqual::equalTo($item);
395
- }
396
- }
397
-
398
- if (!function_exists('identicalTo')) {
399
- /**
400
- * Tests of the value is identical to $value as tested by the "===" operator.
401
- */
402
- function identicalTo($value)
403
- {
404
- return \Hamcrest\Core\IsIdentical::identicalTo($value);
405
- }
406
- }
407
-
408
- if (!function_exists('anInstanceOf')) {
409
- /**
410
- * Is the value an instance of a particular type?
411
- * This version assumes no relationship between the required type and
412
- * the signature of the method that sets it up, for example in
413
- * <code>assertThat($anObject, anInstanceOf('Thing'));</code>
414
- */
415
- function anInstanceOf($theClass)
416
- {
417
- return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
418
- }
419
- }
420
-
421
- if (!function_exists('any')) {
422
- /**
423
- * Is the value an instance of a particular type?
424
- * This version assumes no relationship between the required type and
425
- * the signature of the method that sets it up, for example in
426
- * <code>assertThat($anObject, anInstanceOf('Thing'));</code>
427
- */
428
- function any($theClass)
429
- {
430
- return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
431
- }
432
- }
433
-
434
- if (!function_exists('not')) {
435
- /**
436
- * Matches if value does not match $value.
437
- */
438
- function not($value)
439
- {
440
- return \Hamcrest\Core\IsNot::not($value);
441
- }
442
- }
443
-
444
- if (!function_exists('nullValue')) {
445
- /**
446
- * Matches if value is null.
447
- */
448
- function nullValue()
449
- {
450
- return \Hamcrest\Core\IsNull::nullValue();
451
- }
452
- }
453
-
454
- if (!function_exists('notNullValue')) {
455
- /**
456
- * Matches if value is not null.
457
- */
458
- function notNullValue()
459
- {
460
- return \Hamcrest\Core\IsNull::notNullValue();
461
- }
462
- }
463
-
464
- if (!function_exists('sameInstance')) {
465
- /**
466
- * Creates a new instance of IsSame.
467
- *
468
- * @param mixed $object
469
- * The predicate evaluates to true only when the argument is
470
- * this object.
471
- *
472
- * @return \Hamcrest\Core\IsSame
473
- */
474
- function sameInstance($object)
475
- {
476
- return \Hamcrest\Core\IsSame::sameInstance($object);
477
- }
478
- }
479
-
480
- if (!function_exists('typeOf')) {
481
- /**
482
- * Is the value a particular built-in type?
483
- */
484
- function typeOf($theType)
485
- {
486
- return \Hamcrest\Core\IsTypeOf::typeOf($theType);
487
- }
488
- }
489
-
490
- if (!function_exists('set')) {
491
- /**
492
- * Matches if value (class, object, or array) has named $property.
493
- */
494
- function set($property)
495
- {
496
- return \Hamcrest\Core\Set::set($property);
497
- }
498
- }
499
-
500
- if (!function_exists('notSet')) {
501
- /**
502
- * Matches if value (class, object, or array) does not have named $property.
503
- */
504
- function notSet($property)
505
- {
506
- return \Hamcrest\Core\Set::notSet($property);
507
- }
508
- }
509
-
510
- if (!function_exists('closeTo')) {
511
- /**
512
- * Matches if value is a number equal to $value within some range of
513
- * acceptable error $delta.
514
- */
515
- function closeTo($value, $delta)
516
- {
517
- return \Hamcrest\Number\IsCloseTo::closeTo($value, $delta);
518
- }
519
- }
520
-
521
- if (!function_exists('comparesEqualTo')) {
522
- /**
523
- * The value is not > $value, nor < $value.
524
- */
525
- function comparesEqualTo($value)
526
- {
527
- return \Hamcrest\Number\OrderingComparison::comparesEqualTo($value);
528
- }
529
- }
530
-
531
- if (!function_exists('greaterThan')) {
532
- /**
533
- * The value is > $value.
534
- */
535
- function greaterThan($value)
536
- {
537
- return \Hamcrest\Number\OrderingComparison::greaterThan($value);
538
- }
539
- }
540
-
541
- if (!function_exists('greaterThanOrEqualTo')) {
542
- /**
543
- * The value is >= $value.
544
- */
545
- function greaterThanOrEqualTo($value)
546
- {
547
- return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
548
- }
549
- }
550
-
551
- if (!function_exists('atLeast')) {
552
- /**
553
- * The value is >= $value.
554
- */
555
- function atLeast($value)
556
- {
557
- return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
558
- }
559
- }
560
-
561
- if (!function_exists('lessThan')) {
562
- /**
563
- * The value is < $value.
564
- */
565
- function lessThan($value)
566
- {
567
- return \Hamcrest\Number\OrderingComparison::lessThan($value);
568
- }
569
- }
570
-
571
- if (!function_exists('lessThanOrEqualTo')) {
572
- /**
573
- * The value is <= $value.
574
- */
575
- function lessThanOrEqualTo($value)
576
- {
577
- return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
578
- }
579
- }
580
-
581
- if (!function_exists('atMost')) {
582
- /**
583
- * The value is <= $value.
584
- */
585
- function atMost($value)
586
- {
587
- return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
588
- }
589
- }
590
-
591
- if (!function_exists('isEmptyString')) {
592
- /**
593
- * Matches if value is a zero-length string.
594
- */
595
- function isEmptyString()
596
- {
597
- return \Hamcrest\Text\IsEmptyString::isEmptyString();
598
- }
599
- }
600
-
601
- if (!function_exists('emptyString')) {
602
- /**
603
- * Matches if value is a zero-length string.
604
- */
605
- function emptyString()
606
- {
607
- return \Hamcrest\Text\IsEmptyString::isEmptyString();
608
- }
609
- }
610
-
611
- if (!function_exists('isEmptyOrNullString')) {
612
- /**
613
- * Matches if value is null or a zero-length string.
614
- */
615
- function isEmptyOrNullString()
616
- {
617
- return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
618
- }
619
- }
620
-
621
- if (!function_exists('nullOrEmptyString')) {
622
- /**
623
- * Matches if value is null or a zero-length string.
624
- */
625
- function nullOrEmptyString()
626
- {
627
- return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
628
- }
629
- }
630
-
631
- if (!function_exists('isNonEmptyString')) {
632
- /**
633
- * Matches if value is a non-zero-length string.
634
- */
635
- function isNonEmptyString()
636
- {
637
- return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
638
- }
639
- }
640
-
641
- if (!function_exists('nonEmptyString')) {
642
- /**
643
- * Matches if value is a non-zero-length string.
644
- */
645
- function nonEmptyString()
646
- {
647
- return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
648
- }
649
- }
650
-
651
- if (!function_exists('equalToIgnoringCase')) {
652
- /**
653
- * Matches if value is a string equal to $string, regardless of the case.
654
- */
655
- function equalToIgnoringCase($string)
656
- {
657
- return \Hamcrest\Text\IsEqualIgnoringCase::equalToIgnoringCase($string);
658
- }
659
- }
660
-
661
- if (!function_exists('equalToIgnoringWhiteSpace')) {
662
- /**
663
- * Matches if value is a string equal to $string, regardless of whitespace.
664
- */
665
- function equalToIgnoringWhiteSpace($string)
666
- {
667
- return \Hamcrest\Text\IsEqualIgnoringWhiteSpace::equalToIgnoringWhiteSpace($string);
668
- }
669
- }
670
-
671
- if (!function_exists('matchesPattern')) {
672
- /**
673
- * Matches if value is a string that matches regular expression $pattern.
674
- */
675
- function matchesPattern($pattern)
676
- {
677
- return \Hamcrest\Text\MatchesPattern::matchesPattern($pattern);
678
- }
679
- }
680
-
681
- if (!function_exists('containsString')) {
682
- /**
683
- * Matches if value is a string that contains $substring.
684
- */
685
- function containsString($substring)
686
- {
687
- return \Hamcrest\Text\StringContains::containsString($substring);
688
- }
689
- }
690
-
691
- if (!function_exists('containsStringIgnoringCase')) {
692
- /**
693
- * Matches if value is a string that contains $substring regardless of the case.
694
- */
695
- function containsStringIgnoringCase($substring)
696
- {
697
- return \Hamcrest\Text\StringContainsIgnoringCase::containsStringIgnoringCase($substring);
698
- }
699
- }
700
-
701
- if (!function_exists('stringContainsInOrder')) {
702
- /**
703
- * Matches if value contains $substrings in a constrained order.
704
- */
705
- function stringContainsInOrder(/* args... */)
706
- {
707
- $args = func_get_args();
708
- return call_user_func_array(array('\Hamcrest\Text\StringContainsInOrder', 'stringContainsInOrder'), $args);
709
- }
710
- }
711
-
712
- if (!function_exists('endsWith')) {
713
- /**
714
- * Matches if value is a string that ends with $substring.
715
- */
716
- function endsWith($substring)
717
- {
718
- return \Hamcrest\Text\StringEndsWith::endsWith($substring);
719
- }
720
- }
721
-
722
- if (!function_exists('startsWith')) {
723
- /**
724
- * Matches if value is a string that starts with $substring.
725
- */
726
- function startsWith($substring)
727
- {
728
- return \Hamcrest\Text\StringStartsWith::startsWith($substring);
729
- }
730
- }
731
-
732
- if (!function_exists('arrayValue')) {
733
- /**
734
- * Is the value an array?
735
- */
736
- function arrayValue()
737
- {
738
- return \Hamcrest\Type\IsArray::arrayValue();
739
- }
740
- }
741
-
742
- if (!function_exists('booleanValue')) {
743
- /**
744
- * Is the value a boolean?
745
- */
746
- function booleanValue()
747
- {
748
- return \Hamcrest\Type\IsBoolean::booleanValue();
749
- }
750
- }
751
-
752
- if (!function_exists('boolValue')) {
753
- /**
754
- * Is the value a boolean?
755
- */
756
- function boolValue()
757
- {
758
- return \Hamcrest\Type\IsBoolean::booleanValue();
759
- }
760
- }
761
-
762
- if (!function_exists('callableValue')) {
763
- /**
764
- * Is the value callable?
765
- */
766
- function callableValue()
767
- {
768
- return \Hamcrest\Type\IsCallable::callableValue();
769
- }
770
- }
771
-
772
- if (!function_exists('doubleValue')) {
773
- /**
774
- * Is the value a float/double?
775
- */
776
- function doubleValue()
777
- {
778
- return \Hamcrest\Type\IsDouble::doubleValue();
779
- }
780
- }
781
-
782
- if (!function_exists('floatValue')) {
783
- /**
784
- * Is the value a float/double?
785
- */
786
- function floatValue()
787
- {
788
- return \Hamcrest\Type\IsDouble::doubleValue();
789
- }
790
- }
791
-
792
- if (!function_exists('integerValue')) {
793
- /**
794
- * Is the value an integer?
795
- */
796
- function integerValue()
797
- {
798
- return \Hamcrest\Type\IsInteger::integerValue();
799
- }
800
- }
801
-
802
- if (!function_exists('intValue')) {
803
- /**
804
- * Is the value an integer?
805
- */
806
- function intValue()
807
- {
808
- return \Hamcrest\Type\IsInteger::integerValue();
809
- }
810
- }
811
-
812
- if (!function_exists('numericValue')) {
813
- /**
814
- * Is the value a numeric?
815
- */
816
- function numericValue()
817
- {
818
- return \Hamcrest\Type\IsNumeric::numericValue();
819
- }
820
- }
821
-
822
- if (!function_exists('objectValue')) {
823
- /**
824
- * Is the value an object?
825
- */
826
- function objectValue()
827
- {
828
- return \Hamcrest\Type\IsObject::objectValue();
829
- }
830
- }
831
-
832
- if (!function_exists('anObject')) {
833
- /**
834
- * Is the value an object?
835
- */
836
- function anObject()
837
- {
838
- return \Hamcrest\Type\IsObject::objectValue();
839
- }
840
- }
841
-
842
- if (!function_exists('resourceValue')) {
843
- /**
844
- * Is the value a resource?
845
- */
846
- function resourceValue()
847
- {
848
- return \Hamcrest\Type\IsResource::resourceValue();
849
- }
850
- }
851
-
852
- if (!function_exists('scalarValue')) {
853
- /**
854
- * Is the value a scalar (boolean, integer, double, or string)?
855
- */
856
- function scalarValue()
857
- {
858
- return \Hamcrest\Type\IsScalar::scalarValue();
859
- }
860
- }
861
-
862
- if (!function_exists('stringValue')) {
863
- /**
864
- * Is the value a string?
865
- */
866
- function stringValue()
867
- {
868
- return \Hamcrest\Type\IsString::stringValue();
869
- }
870
- }
871
-
872
- if (!function_exists('hasXPath')) {
873
- /**
874
- * Wraps <code>$matcher</code> with {@link Hamcrest\Core\IsEqual)
875
- * if it's not a matcher and the XPath in <code>count()</code>
876
- * if it's an integer.
877
- */
878
- function hasXPath($xpath, $matcher = null)
879
- {
880
- return \Hamcrest\Xml\HasXPath::hasXPath($xpath, $matcher);
881
- }
882
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php DELETED
@@ -1,118 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- // NOTE: This class is not exactly a direct port of Java's since Java handles
9
- // arrays quite differently than PHP
10
-
11
- // TODO: Allow this to take matchers or values within the array
12
- use Hamcrest\Description;
13
- use Hamcrest\TypeSafeMatcher;
14
- use Hamcrest\Util;
15
-
16
- /**
17
- * Matcher for array whose elements satisfy a sequence of matchers.
18
- * The array size must equal the number of element matchers.
19
- */
20
- class IsArray extends TypeSafeMatcher
21
- {
22
-
23
- private $_elementMatchers;
24
-
25
- public function __construct(array $elementMatchers)
26
- {
27
- parent::__construct(self::TYPE_ARRAY);
28
-
29
- Util::checkAllAreMatchers($elementMatchers);
30
-
31
- $this->_elementMatchers = $elementMatchers;
32
- }
33
-
34
- protected function matchesSafely($array)
35
- {
36
- if (array_keys($array) != array_keys($this->_elementMatchers)) {
37
- return false;
38
- }
39
-
40
- /** @var $matcher \Hamcrest\Matcher */
41
- foreach ($this->_elementMatchers as $k => $matcher) {
42
- if (!$matcher->matches($array[$k])) {
43
- return false;
44
- }
45
- }
46
-
47
- return true;
48
- }
49
-
50
- protected function describeMismatchSafely($actual, Description $mismatchDescription)
51
- {
52
- if (count($actual) != count($this->_elementMatchers)) {
53
- $mismatchDescription->appendText('array length was ' . count($actual));
54
-
55
- return;
56
- } elseif (array_keys($actual) != array_keys($this->_elementMatchers)) {
57
- $mismatchDescription->appendText('array keys were ')
58
- ->appendValueList(
59
- $this->descriptionStart(),
60
- $this->descriptionSeparator(),
61
- $this->descriptionEnd(),
62
- array_keys($actual)
63
- )
64
- ;
65
-
66
- return;
67
- }
68
-
69
- /** @var $matcher \Hamcrest\Matcher */
70
- foreach ($this->_elementMatchers as $k => $matcher) {
71
- if (!$matcher->matches($actual[$k])) {
72
- $mismatchDescription->appendText('element ')->appendValue($k)
73
- ->appendText(' was ')->appendValue($actual[$k]);
74
-
75
- return;
76
- }
77
- }
78
- }
79
-
80
- public function describeTo(Description $description)
81
- {
82
- $description->appendList(
83
- $this->descriptionStart(),
84
- $this->descriptionSeparator(),
85
- $this->descriptionEnd(),
86
- $this->_elementMatchers
87
- );
88
- }
89
-
90
- /**
91
- * Evaluates to true only if each $matcher[$i] is satisfied by $array[$i].
92
- *
93
- * @factory ...
94
- */
95
- public static function anArray(/* args... */)
96
- {
97
- $args = func_get_args();
98
-
99
- return new self(Util::createMatcherArray($args));
100
- }
101
-
102
- // -- Protected Methods
103
-
104
- protected function descriptionStart()
105
- {
106
- return '[';
107
- }
108
-
109
- protected function descriptionSeparator()
110
- {
111
- return ', ';
112
- }
113
-
114
- protected function descriptionEnd()
115
- {
116
- return ']';
117
- }
118
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php DELETED
@@ -1,63 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\Matcher;
9
- use Hamcrest\TypeSafeMatcher;
10
- use Hamcrest\Util;
11
-
12
- /**
13
- * Matches if an array contains an item satisfying a nested matcher.
14
- */
15
- class IsArrayContaining extends TypeSafeMatcher
16
- {
17
-
18
- private $_elementMatcher;
19
-
20
- public function __construct(Matcher $elementMatcher)
21
- {
22
- parent::__construct(self::TYPE_ARRAY);
23
-
24
- $this->_elementMatcher = $elementMatcher;
25
- }
26
-
27
- protected function matchesSafely($array)
28
- {
29
- foreach ($array as $element) {
30
- if ($this->_elementMatcher->matches($element)) {
31
- return true;
32
- }
33
- }
34
-
35
- return false;
36
- }
37
-
38
- protected function describeMismatchSafely($array, Description $mismatchDescription)
39
- {
40
- $mismatchDescription->appendText('was ')->appendValue($array);
41
- }
42
-
43
- public function describeTo(Description $description)
44
- {
45
- $description
46
- ->appendText('an array containing ')
47
- ->appendDescriptionOf($this->_elementMatcher)
48
- ;
49
- }
50
-
51
- /**
52
- * Evaluates to true if any item in an array satisfies the given matcher.
53
- *
54
- * @param mixed $item as a {@link Hamcrest\Matcher} or a value.
55
- *
56
- * @return \Hamcrest\Arrays\IsArrayContaining
57
- * @factory hasValue
58
- */
59
- public static function hasItemInArray($item)
60
- {
61
- return new self(Util::wrapValueWithIsEqual($item));
62
- }
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php DELETED
@@ -1,59 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\TypeSafeDiagnosingMatcher;
9
- use Hamcrest\Util;
10
-
11
- /**
12
- * Matches if an array contains a set of items satisfying nested matchers.
13
- */
14
- class IsArrayContainingInAnyOrder extends TypeSafeDiagnosingMatcher
15
- {
16
-
17
- private $_elementMatchers;
18
-
19
- public function __construct(array $elementMatchers)
20
- {
21
- parent::__construct(self::TYPE_ARRAY);
22
-
23
- Util::checkAllAreMatchers($elementMatchers);
24
-
25
- $this->_elementMatchers = $elementMatchers;
26
- }
27
-
28
- protected function matchesSafelyWithDiagnosticDescription($array, Description $mismatchDescription)
29
- {
30
- $matching = new MatchingOnce($this->_elementMatchers, $mismatchDescription);
31
-
32
- foreach ($array as $element) {
33
- if (!$matching->matches($element)) {
34
- return false;
35
- }
36
- }
37
-
38
- return $matching->isFinished($array);
39
- }
40
-
41
- public function describeTo(Description $description)
42
- {
43
- $description->appendList('[', ', ', ']', $this->_elementMatchers)
44
- ->appendText(' in any order')
45
- ;
46
- }
47
-
48
- /**
49
- * An array with elements that match the given matchers.
50
- *
51
- * @factory containsInAnyOrder ...
52
- */
53
- public static function arrayContainingInAnyOrder(/* args... */)
54
- {
55
- $args = func_get_args();
56
-
57
- return new self(Util::createMatcherArray($args));
58
- }
59
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\TypeSafeDiagnosingMatcher;
9
- use Hamcrest\Util;
10
-
11
- /**
12
- * Matches if an array contains a set of items satisfying nested matchers.
13
- */
14
- class IsArrayContainingInOrder extends TypeSafeDiagnosingMatcher
15
- {
16
-
17
- private $_elementMatchers;
18
-
19
- public function __construct(array $elementMatchers)
20
- {
21
- parent::__construct(self::TYPE_ARRAY);
22
-
23
- Util::checkAllAreMatchers($elementMatchers);
24
-
25
- $this->_elementMatchers = $elementMatchers;
26
- }
27
-
28
- protected function matchesSafelyWithDiagnosticDescription($array, Description $mismatchDescription)
29
- {
30
- $series = new SeriesMatchingOnce($this->_elementMatchers, $mismatchDescription);
31
-
32
- foreach ($array as $element) {
33
- if (!$series->matches($element)) {
34
- return false;
35
- }
36
- }
37
-
38
- return $series->isFinished();
39
- }
40
-
41
- public function describeTo(Description $description)
42
- {
43
- $description->appendList('[', ', ', ']', $this->_elementMatchers);
44
- }
45
-
46
- /**
47
- * An array with elements that match the given matchers in the same order.
48
- *
49
- * @factory contains ...
50
- */
51
- public static function arrayContaining(/* args... */)
52
- {
53
- $args = func_get_args();
54
-
55
- return new self(Util::createMatcherArray($args));
56
- }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php DELETED
@@ -1,75 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\Matcher;
9
- use Hamcrest\TypeSafeMatcher;
10
- use Hamcrest\Util;
11
-
12
- /**
13
- * Matches if an array contains the specified key.
14
- */
15
- class IsArrayContainingKey extends TypeSafeMatcher
16
- {
17
-
18
- private $_keyMatcher;
19
-
20
- public function __construct(Matcher $keyMatcher)
21
- {
22
- parent::__construct(self::TYPE_ARRAY);
23
-
24
- $this->_keyMatcher = $keyMatcher;
25
- }
26
-
27
- protected function matchesSafely($array)
28
- {
29
- foreach ($array as $key => $element) {
30
- if ($this->_keyMatcher->matches($key)) {
31
- return true;
32
- }
33
- }
34
-
35
- return false;
36
- }
37
-
38
- protected function describeMismatchSafely($array, Description $mismatchDescription)
39
- {
40
- //Not using appendValueList() so that keys can be shown
41
- $mismatchDescription->appendText('array was ')
42
- ->appendText('[')
43
- ;
44
- $loop = false;
45
- foreach ($array as $key => $value) {
46
- if ($loop) {
47
- $mismatchDescription->appendText(', ');
48
- }
49
- $mismatchDescription->appendValue($key)->appendText(' => ')->appendValue($value);
50
- $loop = true;
51
- }
52
- $mismatchDescription->appendText(']');
53
- }
54
-
55
- public function describeTo(Description $description)
56
- {
57
- $description
58
- ->appendText('array with key ')
59
- ->appendDescriptionOf($this->_keyMatcher)
60
- ;
61
- }
62
-
63
- /**
64
- * Evaluates to true if any key in an array matches the given matcher.
65
- *
66
- * @param mixed $key as a {@link Hamcrest\Matcher} or a value.
67
- *
68
- * @return \Hamcrest\Arrays\IsArrayContainingKey
69
- * @factory hasKey
70
- */
71
- public static function hasKeyInArray($key)
72
- {
73
- return new self(Util::wrapValueWithIsEqual($key));
74
- }
75
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php DELETED
@@ -1,80 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /**
5
- * Tests for the presence of both a key and value inside an array.
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\Matcher;
9
- use Hamcrest\TypeSafeMatcher;
10
- use Hamcrest\Util;
11
-
12
- /**
13
- * @namespace
14
- */
15
-
16
- class IsArrayContainingKeyValuePair extends TypeSafeMatcher
17
- {
18
-
19
- private $_keyMatcher;
20
- private $_valueMatcher;
21
-
22
- public function __construct(Matcher $keyMatcher, Matcher $valueMatcher)
23
- {
24
- parent::__construct(self::TYPE_ARRAY);
25
-
26
- $this->_keyMatcher = $keyMatcher;
27
- $this->_valueMatcher = $valueMatcher;
28
- }
29
-
30
- protected function matchesSafely($array)
31
- {
32
- foreach ($array as $key => $value) {
33
- if ($this->_keyMatcher->matches($key) && $this->_valueMatcher->matches($value)) {
34
- return true;
35
- }
36
- }
37
-
38
- return false;
39
- }
40
-
41
- protected function describeMismatchSafely($array, Description $mismatchDescription)
42
- {
43
- //Not using appendValueList() so that keys can be shown
44
- $mismatchDescription->appendText('array was ')
45
- ->appendText('[')
46
- ;
47
- $loop = false;
48
- foreach ($array as $key => $value) {
49
- if ($loop) {
50
- $mismatchDescription->appendText(', ');
51
- }
52
- $mismatchDescription->appendValue($key)->appendText(' => ')->appendValue($value);
53
- $loop = true;
54
- }
55
- $mismatchDescription->appendText(']');
56
- }
57
-
58
- public function describeTo(Description $description)
59
- {
60
- $description->appendText('array containing [')
61
- ->appendDescriptionOf($this->_keyMatcher)
62
- ->appendText(' => ')
63
- ->appendDescriptionOf($this->_valueMatcher)
64
- ->appendText(']')
65
- ;
66
- }
67
-
68
- /**
69
- * Test if an array has both an key and value in parity with each other.
70
- *
71
- * @factory hasEntry
72
- */
73
- public static function hasKeyValuePair($key, $value)
74
- {
75
- return new self(
76
- Util::wrapValueWithIsEqual($key),
77
- Util::wrapValueWithIsEqual($value)
78
- );
79
- }
80
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php DELETED
@@ -1,73 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Core\DescribedAs;
8
- use Hamcrest\Core\IsNot;
9
- use Hamcrest\FeatureMatcher;
10
- use Hamcrest\Matcher;
11
- use Hamcrest\Util;
12
-
13
- /**
14
- * Matches if array size satisfies a nested matcher.
15
- */
16
- class IsArrayWithSize extends FeatureMatcher
17
- {
18
-
19
- public function __construct(Matcher $sizeMatcher)
20
- {
21
- parent::__construct(
22
- self::TYPE_ARRAY,
23
- null,
24
- $sizeMatcher,
25
- 'an array with size',
26
- 'array size'
27
- );
28
- }
29
-
30
- protected function featureValueOf($array)
31
- {
32
- return count($array);
33
- }
34
-
35
- /**
36
- * Does array size satisfy a given matcher?
37
- *
38
- * @param \Hamcrest\Matcher|int $size as a {@link Hamcrest\Matcher} or a value.
39
- *
40
- * @return \Hamcrest\Arrays\IsArrayWithSize
41
- * @factory
42
- */
43
- public static function arrayWithSize($size)
44
- {
45
- return new self(Util::wrapValueWithIsEqual($size));
46
- }
47
-
48
- /**
49
- * Matches an empty array.
50
- *
51
- * @factory
52
- */
53
- public static function emptyArray()
54
- {
55
- return DescribedAs::describedAs(
56
- 'an empty array',
57
- self::arrayWithSize(0)
58
- );
59
- }
60
-
61
- /**
62
- * Matches an empty array.
63
- *
64
- * @factory
65
- */
66
- public static function nonEmptyArray()
67
- {
68
- return DescribedAs::describedAs(
69
- 'a non-empty array',
70
- self::arrayWithSize(IsNot::not(0))
71
- );
72
- }
73
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php DELETED
@@ -1,69 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- use Hamcrest\Description;
9
-
10
- class MatchingOnce
11
- {
12
-
13
- private $_elementMatchers;
14
- private $_mismatchDescription;
15
-
16
- public function __construct(array $elementMatchers, Description $mismatchDescription)
17
- {
18
- $this->_elementMatchers = $elementMatchers;
19
- $this->_mismatchDescription = $mismatchDescription;
20
- }
21
-
22
- public function matches($item)
23
- {
24
- return $this->_isNotSurplus($item) && $this->_isMatched($item);
25
- }
26
-
27
- public function isFinished($items)
28
- {
29
- if (empty($this->_elementMatchers)) {
30
- return true;
31
- }
32
-
33
- $this->_mismatchDescription
34
- ->appendText('No item matches: ')->appendList('', ', ', '', $this->_elementMatchers)
35
- ->appendText(' in ')->appendValueList('[', ', ', ']', $items)
36
- ;
37
-
38
- return false;
39
- }
40
-
41
- // -- Private Methods
42
-
43
- private function _isNotSurplus($item)
44
- {
45
- if (empty($this->_elementMatchers)) {
46
- $this->_mismatchDescription->appendText('Not matched: ')->appendValue($item);
47
-
48
- return false;
49
- }
50
-
51
- return true;
52
- }
53
-
54
- private function _isMatched($item)
55
- {
56
- /** @var $matcher \Hamcrest\Matcher */
57
- foreach ($this->_elementMatchers as $i => $matcher) {
58
- if ($matcher->matches($item)) {
59
- unset($this->_elementMatchers[$i]);
60
-
61
- return true;
62
- }
63
- }
64
-
65
- $this->_mismatchDescription->appendText('Not matched: ')->appendValue($item);
66
-
67
- return false;
68
- }
69
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php DELETED
@@ -1,75 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Arrays;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- use Hamcrest\Description;
9
- use Hamcrest\Matcher;
10
-
11
- class SeriesMatchingOnce
12
- {
13
-
14
- private $_elementMatchers;
15
- private $_keys;
16
- private $_mismatchDescription;
17
- private $_nextMatchKey;
18
-
19
- public function __construct(array $elementMatchers, Description $mismatchDescription)
20
- {
21
- $this->_elementMatchers = $elementMatchers;
22
- $this->_keys = array_keys($elementMatchers);
23
- $this->_mismatchDescription = $mismatchDescription;
24
- }
25
-
26
- public function matches($item)
27
- {
28
- return $this->_isNotSurplus($item) && $this->_isMatched($item);
29
- }
30
-
31
- public function isFinished()
32
- {
33
- if (!empty($this->_elementMatchers)) {
34
- $nextMatcher = current($this->_elementMatchers);
35
- $this->_mismatchDescription->appendText('No item matched: ')->appendDescriptionOf($nextMatcher);
36
-
37
- return false;
38
- }
39
-
40
- return true;
41
- }
42
-
43
- // -- Private Methods
44
-
45
- private function _isNotSurplus($item)
46
- {
47
- if (empty($this->_elementMatchers)) {
48
- $this->_mismatchDescription->appendText('Not matched: ')->appendValue($item);
49
-
50
- return false;
51
- }
52
-
53
- return true;
54
- }
55
-
56
- private function _isMatched($item)
57
- {
58
- $this->_nextMatchKey = array_shift($this->_keys);
59
- $nextMatcher = array_shift($this->_elementMatchers);
60
-
61
- if (!$nextMatcher->matches($item)) {
62
- $this->_describeMismatch($nextMatcher, $item);
63
-
64
- return false;
65
- }
66
-
67
- return true;
68
- }
69
-
70
- private function _describeMismatch(Matcher $matcher, $item)
71
- {
72
- $this->_mismatchDescription->appendText('item with key ' . $this->_nextMatchKey . ': ');
73
- $matcher->describeMismatch($item, $this->_mismatchDescription);
74
- }
75
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Hamcrest;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- class AssertionError extends \RuntimeException
9
- {
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php DELETED
@@ -1,132 +0,0 @@
1
- <?php
2
- namespace Hamcrest;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Internal\SelfDescribingValue;
8
-
9
- /**
10
- * A {@link Hamcrest\Description} that is stored as a string.
11
- */
12
- abstract class BaseDescription implements Description
13
- {
14
-
15
- public function appendText($text)
16
- {
17
- $this->append($text);
18
-
19
- return $this;
20
- }
21
-
22
- public function appendDescriptionOf(SelfDescribing $value)
23
- {
24
- $value->describeTo($this);
25
-
26
- return $this;
27
- }
28
-
29
- public function appendValue($value)
30
- {
31
- if (is_null($value)) {
32
- $this->append('null');
33
- } elseif (is_string($value)) {
34
- $this->_toPhpSyntax($value);
35
- } elseif (is_float($value)) {
36
- $this->append('<');
37
- $this->append($value);
38
- $this->append('F>');
39
- } elseif (is_bool($value)) {
40
- $this->append('<');
41
- $this->append($value ? 'true' : 'false');
42
- $this->append('>');
43
- } elseif (is_array($value) || $value instanceof \Iterator || $value instanceof \IteratorAggregate) {
44
- $this->appendValueList('[', ', ', ']', $value);
45
- } elseif (is_object($value) && !method_exists($value, '__toString')) {
46
- $this->append('<');
47
- $this->append(get_class($value));
48
- $this->append('>');
49
- } else {
50
- $this->append('<');
51
- $this->append($value);
52
- $this->append('>');
53
- }
54
-
55
- return $this;
56
- }
57
-
58
- public function appendValueList($start, $separator, $end, $values)
59
- {
60
- $list = array();
61
- foreach ($values as $v) {
62
- $list[] = new SelfDescribingValue($v);
63
- }
64
-
65
- $this->appendList($start, $separator, $end, $list);
66
-
67
- return $this;
68
- }
69
-
70
- public function appendList($start, $separator, $end, $values)
71
- {
72
- $this->append($start);
73
-
74
- $separate = false;
75
-
76
- foreach ($values as $value) {
77
- /*if (!($value instanceof Hamcrest\SelfDescribing)) {
78
- $value = new Hamcrest\Internal\SelfDescribingValue($value);
79
- }*/
80
-
81
- if ($separate) {
82
- $this->append($separator);
83
- }
84
-
85
- $this->appendDescriptionOf($value);
86
-
87
- $separate = true;
88
- }
89
-
90
- $this->append($end);
91
-
92
- return $this;
93
- }
94
-
95
- // -- Protected Methods
96
-
97
- /**
98
- * Append the String <var>$str</var> to the description.
99
- */
100
- abstract protected function append($str);
101
-
102
- // -- Private Methods
103
-
104
- private function _toPhpSyntax($value)
105
- {
106
- $str = '"';
107
- for ($i = 0, $len = strlen($value); $i < $len; ++$i) {
108
- switch ($value[$i]) {
109
- case '"':
110
- $str .= '\\"';
111
- break;
112
-
113
- case "\t":
114
- $str .= '\\t';
115
- break;
116
-
117
- case "\r":
118
- $str .= '\\r';
119
- break;
120
-
121
- case "\n":
122
- $str .= '\\n';
123
- break;
124
-
125
- default:
126
- $str .= $value[$i];
127
- }
128
- }
129
- $str .= '"';
130
- $this->append($str);
131
- }
132
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
- namespace Hamcrest;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- /**
9
- * BaseClass for all Matcher implementations.
10
- *
11
- * @see Hamcrest\Matcher
12
- */
13
- abstract class BaseMatcher implements Matcher
14
- {
15
-
16
- public function describeMismatch($item, Description $description)
17
- {
18
- $description->appendText('was ')->appendValue($item);
19
- }
20
-
21
- public function __toString()
22
- {
23
- return StringDescription::toString($this);
24
- }
25
-
26
- public function __invoke()
27
- {
28
- return call_user_func_array(array($this, 'matches'), func_get_args());
29
- }
30
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Collection;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
-
10
- /**
11
- * Matches if traversable is empty or non-empty.
12
- */
13
- class IsEmptyTraversable extends BaseMatcher
14
- {
15
-
16
- private static $_INSTANCE;
17
- private static $_NOT_INSTANCE;
18
-
19
- private $_empty;
20
-
21
- public function __construct($empty = true)
22
- {
23
- $this->_empty = $empty;
24
- }
25
-
26
- public function matches($item)
27
- {
28
- if (!$item instanceof \Traversable) {
29
- return false;
30
- }
31
-
32
- foreach ($item as $value) {
33
- return !$this->_empty;
34
- }
35
-
36
- return $this->_empty;
37
- }
38
-
39
- public function describeTo(Description $description)
40
- {
41
- $description->appendText($this->_empty ? 'an empty traversable' : 'a non-empty traversable');
42
- }
43
-
44
- /**
45
- * Returns true if traversable is empty.
46
- *
47
- * @factory
48
- */
49
- public static function emptyTraversable()
50
- {
51
- if (!self::$_INSTANCE) {
52
- self::$_INSTANCE = new self;
53
- }
54
-
55
- return self::$_INSTANCE;
56
- }
57
-
58
- /**
59
- * Returns true if traversable is not empty.
60
- *
61
- * @factory
62
- */
63
- public static function nonEmptyTraversable()
64
- {
65
- if (!self::$_NOT_INSTANCE) {
66
- self::$_NOT_INSTANCE = new self(false);
67
- }
68
-
69
- return self::$_NOT_INSTANCE;
70
- }
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Collection;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\FeatureMatcher;
8
- use Hamcrest\Matcher;
9
- use Hamcrest\Util;
10
-
11
- /**
12
- * Matches if traversable size satisfies a nested matcher.
13
- */
14
- class IsTraversableWithSize extends FeatureMatcher
15
- {
16
-
17
- public function __construct(Matcher $sizeMatcher)
18
- {
19
- parent::__construct(
20
- self::TYPE_OBJECT,
21
- 'Traversable',
22
- $sizeMatcher,
23
- 'a traversable with size',
24
- 'traversable size'
25
- );
26
- }
27
-
28
- protected function featureValueOf($actual)
29
- {
30
- $size = 0;
31
- foreach ($actual as $value) {
32
- $size++;
33
- }
34
-
35
- return $size;
36
- }
37
-
38
- /**
39
- * Does traversable size satisfy a given matcher?
40
- *
41
- * @factory
42
- */
43
- public static function traversableWithSize($size)
44
- {
45
- return new self(Util::wrapValueWithIsEqual($size));
46
- }
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php DELETED
@@ -1,59 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\DiagnosingMatcher;
9
- use Hamcrest\Util;
10
-
11
- /**
12
- * Calculates the logical conjunction of multiple matchers. Evaluation is
13
- * shortcut, so subsequent matchers are not called if an earlier matcher
14
- * returns <code>false</code>.
15
- */
16
- class AllOf extends DiagnosingMatcher
17
- {
18
-
19
- private $_matchers;
20
-
21
- public function __construct(array $matchers)
22
- {
23
- Util::checkAllAreMatchers($matchers);
24
-
25
- $this->_matchers = $matchers;
26
- }
27
-
28
- public function matchesWithDiagnosticDescription($item, Description $mismatchDescription)
29
- {
30
- /** @var $matcher \Hamcrest\Matcher */
31
- foreach ($this->_matchers as $matcher) {
32
- if (!$matcher->matches($item)) {
33
- $mismatchDescription->appendDescriptionOf($matcher)->appendText(' ');
34
- $matcher->describeMismatch($item, $mismatchDescription);
35
-
36
- return false;
37
- }
38
- }
39
-
40
- return true;
41
- }
42
-
43
- public function describeTo(Description $description)
44
- {
45
- $description->appendList('(', ' and ', ')', $this->_matchers);
46
- }
47
-
48
- /**
49
- * Evaluates to true only if ALL of the passed in matchers evaluate to true.
50
- *
51
- * @factory ...
52
- */
53
- public static function allOf(/* args... */)
54
- {
55
- $args = func_get_args();
56
-
57
- return new self(Util::createMatcherArray($args));
58
- }
59
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php DELETED
@@ -1,58 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\Util;
9
-
10
- /**
11
- * Calculates the logical disjunction of multiple matchers. Evaluation is
12
- * shortcut, so subsequent matchers are not called if an earlier matcher
13
- * returns <code>true</code>.
14
- */
15
- class AnyOf extends ShortcutCombination
16
- {
17
-
18
- public function __construct(array $matchers)
19
- {
20
- parent::__construct($matchers);
21
- }
22
-
23
- public function matches($item)
24
- {
25
- return $this->matchesWithShortcut($item, true);
26
- }
27
-
28
- public function describeTo(Description $description)
29
- {
30
- $this->describeToWithOperator($description, 'or');
31
- }
32
-
33
- /**
34
- * Evaluates to true if ANY of the passed in matchers evaluate to true.
35
- *
36
- * @factory ...
37
- */
38
- public static function anyOf(/* args... */)
39
- {
40
- $args = func_get_args();
41
-
42
- return new self(Util::createMatcherArray($args));
43
- }
44
-
45
- /**
46
- * Evaluates to false if ANY of the passed in matchers evaluate to true.
47
- *
48
- * @factory ...
49
- */
50
- public static function noneOf(/* args... */)
51
- {
52
- $args = func_get_args();
53
-
54
- return IsNot::not(
55
- new self(Util::createMatcherArray($args))
56
- );
57
- }
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php DELETED
@@ -1,78 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- use Hamcrest\BaseMatcher;
9
- use Hamcrest\Description;
10
- use Hamcrest\Matcher;
11
-
12
- class CombinableMatcher extends BaseMatcher
13
- {
14
-
15
- private $_matcher;
16
-
17
- public function __construct(Matcher $matcher)
18
- {
19
- $this->_matcher = $matcher;
20
- }
21
-
22
- public function matches($item)
23
- {
24
- return $this->_matcher->matches($item);
25
- }
26
-
27
- public function describeTo(Description $description)
28
- {
29
- $description->appendDescriptionOf($this->_matcher);
30
- }
31
-
32
- /** Diversion from Hamcrest-Java... Logical "and" not permitted */
33
- public function andAlso(Matcher $other)
34
- {
35
- return new self(new AllOf($this->_templatedListWith($other)));
36
- }
37
-
38
- /** Diversion from Hamcrest-Java... Logical "or" not permitted */
39
- public function orElse(Matcher $other)
40
- {
41
- return new self(new AnyOf($this->_templatedListWith($other)));
42
- }
43
-
44
- /**
45
- * This is useful for fluently combining matchers that must both pass.
46
- * For example:
47
- * <pre>
48
- * assertThat($string, both(containsString("a"))->andAlso(containsString("b")));
49
- * </pre>
50
- *
51
- * @factory
52
- */
53
- public static function both(Matcher $matcher)
54
- {
55
- return new self($matcher);
56
- }
57
-
58
- /**
59
- * This is useful for fluently combining matchers where either may pass,
60
- * for example:
61
- * <pre>
62
- * assertThat($string, either(containsString("a"))->orElse(containsString("b")));
63
- * </pre>
64
- *
65
- * @factory
66
- */
67
- public static function either(Matcher $matcher)
68
- {
69
- return new self($matcher);
70
- }
71
-
72
- // -- Private Methods
73
-
74
- private function _templatedListWith(Matcher $other)
75
- {
76
- return array($this->_matcher, $other);
77
- }
78
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php DELETED
@@ -1,68 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
- use Hamcrest\Matcher;
10
-
11
- /**
12
- * Provides a custom description to another matcher.
13
- */
14
- class DescribedAs extends BaseMatcher
15
- {
16
-
17
- private $_descriptionTemplate;
18
- private $_matcher;
19
- private $_values;
20
-
21
- const ARG_PATTERN = '/%([0-9]+)/';
22
-
23
- public function __construct($descriptionTemplate, Matcher $matcher, array $values)
24
- {
25
- $this->_descriptionTemplate = $descriptionTemplate;
26
- $this->_matcher = $matcher;
27
- $this->_values = $values;
28
- }
29
-
30
- public function matches($item)
31
- {
32
- return $this->_matcher->matches($item);
33
- }
34
-
35
- public function describeTo(Description $description)
36
- {
37
- $textStart = 0;
38
- while (preg_match(self::ARG_PATTERN, $this->_descriptionTemplate, $matches, PREG_OFFSET_CAPTURE, $textStart)) {
39
- $text = $matches[0][0];
40
- $index = $matches[1][0];
41
- $offset = $matches[0][1];
42
-
43
- $description->appendText(substr($this->_descriptionTemplate, $textStart, $offset - $textStart));
44
- $description->appendValue($this->_values[$index]);
45
-
46
- $textStart = $offset + strlen($text);
47
- }
48
-
49
- if ($textStart < strlen($this->_descriptionTemplate)) {
50
- $description->appendText(substr($this->_descriptionTemplate, $textStart));
51
- }
52
- }
53
-
54
- /**
55
- * Wraps an existing matcher and overrides the description when it fails.
56
- *
57
- * @factory ...
58
- */
59
- public static function describedAs(/* $description, Hamcrest\Matcher $matcher, $values... */)
60
- {
61
- $args = func_get_args();
62
- $description = array_shift($args);
63
- $matcher = array_shift($args);
64
- $values = $args;
65
-
66
- return new self($description, $matcher, $values);
67
- }
68
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- use Hamcrest\Description;
9
- use Hamcrest\Matcher;
10
- use Hamcrest\TypeSafeDiagnosingMatcher;
11
-
12
- class Every extends TypeSafeDiagnosingMatcher
13
- {
14
-
15
- private $_matcher;
16
-
17
- public function __construct(Matcher $matcher)
18
- {
19
- parent::__construct(self::TYPE_ARRAY);
20
-
21
- $this->_matcher = $matcher;
22
- }
23
-
24
- protected function matchesSafelyWithDiagnosticDescription($items, Description $mismatchDescription)
25
- {
26
- foreach ($items as $item) {
27
- if (!$this->_matcher->matches($item)) {
28
- $mismatchDescription->appendText('an item ');
29
- $this->_matcher->describeMismatch($item, $mismatchDescription);
30
-
31
- return false;
32
- }
33
- }
34
-
35
- return true;
36
- }
37
-
38
- public function describeTo(Description $description)
39
- {
40
- $description->appendText('every item is ')->appendDescriptionOf($this->_matcher);
41
- }
42
-
43
- /**
44
- * @param Matcher $itemMatcher
45
- * A matcher to apply to every element in an array.
46
- *
47
- * @return \Hamcrest\Core\Every
48
- * Evaluates to TRUE for a collection in which every item matches $itemMatcher
49
- *
50
- * @factory
51
- */
52
- public static function everyItem(Matcher $itemMatcher)
53
- {
54
- return new self($itemMatcher);
55
- }
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\FeatureMatcher;
9
- use Hamcrest\Matcher;
10
- use Hamcrest\Util;
11
-
12
- /**
13
- * Matches if array size satisfies a nested matcher.
14
- */
15
- class HasToString extends FeatureMatcher
16
- {
17
-
18
- public function __construct(Matcher $toStringMatcher)
19
- {
20
- parent::__construct(
21
- self::TYPE_OBJECT,
22
- null,
23
- $toStringMatcher,
24
- 'an object with toString()',
25
- 'toString()'
26
- );
27
- }
28
-
29
- public function matchesSafelyWithDiagnosticDescription($actual, Description $mismatchDescription)
30
- {
31
- if (method_exists($actual, 'toString') || method_exists($actual, '__toString')) {
32
- return parent::matchesSafelyWithDiagnosticDescription($actual, $mismatchDescription);
33
- }
34
-
35
- return false;
36
- }
37
-
38
- protected function featureValueOf($actual)
39
- {
40
- if (method_exists($actual, 'toString')) {
41
- return $actual->toString();
42
- }
43
-
44
- return (string) $actual;
45
- }
46
-
47
- /**
48
- * Does array size satisfy a given matcher?
49
- *
50
- * @factory
51
- */
52
- public static function hasToString($matcher)
53
- {
54
- return new self(Util::wrapValueWithIsEqual($matcher));
55
- }
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
- use Hamcrest\Matcher;
10
- use Hamcrest\Util;
11
-
12
- /**
13
- * Decorates another Matcher, retaining the behavior but allowing tests
14
- * to be slightly more expressive.
15
- *
16
- * For example: assertThat($cheese, equalTo($smelly))
17
- * vs. assertThat($cheese, is(equalTo($smelly)))
18
- */
19
- class Is extends BaseMatcher
20
- {
21
-
22
- private $_matcher;
23
-
24
- public function __construct(Matcher $matcher)
25
- {
26
- $this->_matcher = $matcher;
27
- }
28
-
29
- public function matches($arg)
30
- {
31
- return $this->_matcher->matches($arg);
32
- }
33
-
34
- public function describeTo(Description $description)
35
- {
36
- $description->appendText('is ')->appendDescriptionOf($this->_matcher);
37
- }
38
-
39
- public function describeMismatch($item, Description $mismatchDescription)
40
- {
41
- $this->_matcher->describeMismatch($item, $mismatchDescription);
42
- }
43
-
44
- /**
45
- * Decorates another Matcher, retaining the behavior but allowing tests
46
- * to be slightly more expressive.
47
- *
48
- * For example: assertThat($cheese, equalTo($smelly))
49
- * vs. assertThat($cheese, is(equalTo($smelly)))
50
- *
51
- * @factory
52
- */
53
- public static function is($value)
54
- {
55
- return new self(Util::wrapValueWithIsEqual($value));
56
- }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
-
10
- /**
11
- * A matcher that always returns <code>true</code>.
12
- */
13
- class IsAnything extends BaseMatcher
14
- {
15
-
16
- private $_message;
17
-
18
- public function __construct($message = 'ANYTHING')
19
- {
20
- $this->_message = $message;
21
- }
22
-
23
- public function matches($item)
24
- {
25
- return true;
26
- }
27
-
28
- public function describeTo(Description $description)
29
- {
30
- $description->appendText($this->_message);
31
- }
32
-
33
- /**
34
- * This matcher always evaluates to true.
35
- *
36
- * @param string $description A meaningful string used when describing itself.
37
- *
38
- * @return \Hamcrest\Core\IsAnything
39
- * @factory
40
- */
41
- public static function anything($description = 'ANYTHING')
42
- {
43
- return new self($description);
44
- }
45
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php DELETED
@@ -1,93 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\Matcher;
9
- use Hamcrest\TypeSafeMatcher;
10
- use Hamcrest\Util;
11
-
12
- /**
13
- * Tests if an array contains values that match one or more Matchers.
14
- */
15
- class IsCollectionContaining extends TypeSafeMatcher
16
- {
17
-
18
- private $_elementMatcher;
19
-
20
- public function __construct(Matcher $elementMatcher)
21
- {
22
- parent::__construct(self::TYPE_ARRAY);
23
-
24
- $this->_elementMatcher = $elementMatcher;
25
- }
26
-
27
- protected function matchesSafely($items)
28
- {
29
- foreach ($items as $item) {
30
- if ($this->_elementMatcher->matches($item)) {
31
- return true;
32
- }
33
- }
34
-
35
- return false;
36
- }
37
-
38
- protected function describeMismatchSafely($items, Description $mismatchDescription)
39
- {
40
- $mismatchDescription->appendText('was ')->appendValue($items);
41
- }
42
-
43
- public function describeTo(Description $description)
44
- {
45
- $description
46
- ->appendText('a collection containing ')
47
- ->appendDescriptionOf($this->_elementMatcher)
48
- ;
49
- }
50
-
51
- /**
52
- * Test if the value is an array containing this matcher.
53
- *
54
- * Example:
55
- * <pre>
56
- * assertThat(array('a', 'b'), hasItem(equalTo('b')));
57
- * //Convenience defaults to equalTo()
58
- * assertThat(array('a', 'b'), hasItem('b'));
59
- * </pre>
60
- *
61
- * @factory ...
62
- */
63
- public static function hasItem()
64
- {
65
- $args = func_get_args();
66
- $firstArg = array_shift($args);
67
-
68
- return new self(Util::wrapValueWithIsEqual($firstArg));
69
- }
70
-
71
- /**
72
- * Test if the value is an array containing elements that match all of these
73
- * matchers.
74
- *
75
- * Example:
76
- * <pre>
77
- * assertThat(array('a', 'b', 'c'), hasItems(equalTo('a'), equalTo('b')));
78
- * </pre>
79
- *
80
- * @factory ...
81
- */
82
- public static function hasItems(/* args... */)
83
- {
84
- $args = func_get_args();
85
- $matchers = array();
86
-
87
- foreach ($args as $arg) {
88
- $matchers[] = self::hasItem($arg);
89
- }
90
-
91
- return AllOf::allOf($matchers);
92
- }
93
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php DELETED
@@ -1,44 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
-
10
- /**
11
- * Is the value equal to another value, as tested by the use of the "=="
12
- * comparison operator?
13
- */
14
- class IsEqual extends BaseMatcher
15
- {
16
-
17
- private $_item;
18
-
19
- public function __construct($item)
20
- {
21
- $this->_item = $item;
22
- }
23
-
24
- public function matches($arg)
25
- {
26
- return (($arg == $this->_item) && ($this->_item == $arg));
27
- }
28
-
29
- public function describeTo(Description $description)
30
- {
31
- $description->appendValue($this->_item);
32
- }
33
-
34
- /**
35
- * Is the value equal to another value, as tested by the use of the "=="
36
- * comparison operator?
37
- *
38
- * @factory
39
- */
40
- public static function equalTo($item)
41
- {
42
- return new self($item);
43
- }
44
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
-
9
- /**
10
- * The same as {@link Hamcrest\Core\IsSame} but with slightly different
11
- * semantics.
12
- */
13
- class IsIdentical extends IsSame
14
- {
15
-
16
- private $_value;
17
-
18
- public function __construct($value)
19
- {
20
- parent::__construct($value);
21
- $this->_value = $value;
22
- }
23
-
24
- public function describeTo(Description $description)
25
- {
26
- $description->appendValue($this->_value);
27
- }
28
-
29
- /**
30
- * Tests of the value is identical to $value as tested by the "===" operator.
31
- *
32
- * @factory
33
- */
34
- public static function identicalTo($value)
35
- {
36
- return new self($value);
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\Description;
8
- use Hamcrest\DiagnosingMatcher;
9
-
10
- /**
11
- * Tests whether the value is an instance of a class.
12
- */
13
- class IsInstanceOf extends DiagnosingMatcher
14
- {
15
-
16
- private $_theClass;
17
-
18
- /**
19
- * Creates a new instance of IsInstanceOf
20
- *
21
- * @param string $theClass
22
- * The predicate evaluates to true for instances of this class
23
- * or one of its subclasses.
24
- */
25
- public function __construct($theClass)
26
- {
27
- $this->_theClass = $theClass;
28
- }
29
-
30
- protected function matchesWithDiagnosticDescription($item, Description $mismatchDescription)
31
- {
32
- if (!is_object($item)) {
33
- $mismatchDescription->appendText('was ')->appendValue($item);
34
-
35
- return false;
36
- }
37
-
38
- if (!($item instanceof $this->_theClass)) {
39
- $mismatchDescription->appendText('[' . get_class($item) . '] ')
40
- ->appendValue($item);
41
-
42
- return false;
43
- }
44
-
45
- return true;
46
- }
47
-
48
- public function describeTo(Description $description)
49
- {
50
- $description->appendText('an instance of ')
51
- ->appendText($this->_theClass)
52
- ;
53
- }
54
-
55
- /**
56
- * Is the value an instance of a particular type?
57
- * This version assumes no relationship between the required type and
58
- * the signature of the method that sets it up, for example in
59
- * <code>assertThat($anObject, anInstanceOf('Thing'));</code>
60
- *
61
- * @factory any
62
- */
63
- public static function anInstanceOf($theClass)
64
- {
65
- return new self($theClass);
66
- }
67
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php DELETED
@@ -1,44 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
- use Hamcrest\Matcher;
10
- use Hamcrest\Util;
11
-
12
- /**
13
- * Calculates the logical negation of a matcher.
14
- */
15
- class IsNot extends BaseMatcher
16
- {
17
-
18
- private $_matcher;
19
-
20
- public function __construct(Matcher $matcher)
21
- {
22
- $this->_matcher = $matcher;
23
- }
24
-
25
- public function matches($arg)
26
- {
27
- return !$this->_matcher->matches($arg);
28
- }
29
-
30
- public function describeTo(Description $description)
31
- {
32
- $description->appendText('not ')->appendDescriptionOf($this->_matcher);
33
- }
34
-
35
- /**
36
- * Matches if value does not match $value.
37
- *
38
- * @factory
39
- */
40
- public static function not($value)
41
- {
42
- return new self(Util::wrapValueWithIsEqual($value));
43
- }
44
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php DELETED
@@ -1,56 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
-
10
- /**
11
- * Is the value null?
12
- */
13
- class IsNull extends BaseMatcher
14
- {
15
-
16
- private static $_INSTANCE;
17
- private static $_NOT_INSTANCE;
18
-
19
- public function matches($item)
20
- {
21
- return is_null($item);
22
- }
23
-
24
- public function describeTo(Description $description)
25
- {
26
- $description->appendText('null');
27
- }
28
-
29
- /**
30
- * Matches if value is null.
31
- *
32
- * @factory
33
- */
34
- public static function nullValue()
35
- {
36
- if (!self::$_INSTANCE) {
37
- self::$_INSTANCE = new self();
38
- }
39
-
40
- return self::$_INSTANCE;
41
- }
42
-
43
- /**
44
- * Matches if value is not null.
45
- *
46
- * @factory
47
- */
48
- public static function notNullValue()
49
- {
50
- if (!self::$_NOT_INSTANCE) {
51
- self::$_NOT_INSTANCE = IsNot::not(self::nullValue());
52
- }
53
-
54
- return self::$_NOT_INSTANCE;
55
- }
56
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php DELETED
@@ -1,51 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
-
10
- /**
11
- * Is the value the same object as another value?
12
- * In PHP terms, does $a === $b?
13
- */
14
- class IsSame extends BaseMatcher
15
- {
16
-
17
- private $_object;
18
-
19
- public function __construct($object)
20
- {
21
- $this->_object = $object;
22
- }
23
-
24
- public function matches($object)
25
- {
26
- return ($object === $this->_object) && ($this->_object === $object);
27
- }
28
-
29
- public function describeTo(Description $description)
30
- {
31
- $description->appendText('sameInstance(')
32
- ->appendValue($this->_object)
33
- ->appendText(')')
34
- ;
35
- }
36
-
37
- /**
38
- * Creates a new instance of IsSame.
39
- *
40
- * @param mixed $object
41
- * The predicate evaluates to true only when the argument is
42
- * this object.
43
- *
44
- * @return \Hamcrest\Core\IsSame
45
- * @factory
46
- */
47
- public static function sameInstance($object)
48
- {
49
- return new self($object);
50
- }
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2010 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
-
10
- /**
11
- * Tests whether the value has a built-in type.
12
- */
13
- class IsTypeOf extends BaseMatcher
14
- {
15
-
16
- private $_theType;
17
-
18
- /**
19
- * Creates a new instance of IsTypeOf
20
- *
21
- * @param string $theType
22
- * The predicate evaluates to true for values with this built-in type.
23
- */
24
- public function __construct($theType)
25
- {
26
- $this->_theType = strtolower($theType);
27
- }
28
-
29
- public function matches($item)
30
- {
31
- return strtolower(gettype($item)) == $this->_theType;
32
- }
33
-
34
- public function describeTo(Description $description)
35
- {
36
- $description->appendText(self::getTypeDescription($this->_theType));
37
- }
38
-
39
- public function describeMismatch($item, Description $description)
40
- {
41
- if ($item === null) {
42
- $description->appendText('was null');
43
- } else {
44
- $description->appendText('was ')
45
- ->appendText(self::getTypeDescription(strtolower(gettype($item))))
46
- ->appendText(' ')
47
- ->appendValue($item)
48
- ;
49
- }
50
- }
51
-
52
- public static function getTypeDescription($type)
53
- {
54
- if ($type == 'null') {
55
- return 'null';
56
- }
57
-
58
- return (strpos('aeiou', substr($type, 0, 1)) === false ? 'a ' : 'an ')
59
- . $type;
60
- }
61
-
62
- /**
63
- * Is the value a particular built-in type?
64
- *
65
- * @factory
66
- */
67
- public static function typeOf($theType)
68
- {
69
- return new self($theType);
70
- }
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php DELETED
@@ -1,95 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2010 hamcrest.org
6
- */
7
- use Hamcrest\BaseMatcher;
8
- use Hamcrest\Description;
9
-
10
- /**
11
- * Tests if a value (class, object, or array) has a named property.
12
- *
13
- * For example:
14
- * <pre>
15
- * assertThat(array('a', 'b'), set('b'));
16
- * assertThat($foo, set('bar'));
17
- * assertThat('Server', notSet('defaultPort'));
18
- * </pre>
19
- *
20
- * @todo Replace $property with a matcher and iterate all property names.
21
- */
22
- class Set extends BaseMatcher
23
- {
24
-
25
- private $_property;
26
- private $_not;
27
-
28
- public function __construct($property, $not = false)
29
- {
30
- $this->_property = $property;
31
- $this->_not = $not;
32
- }
33
-
34
- public function matches($item)
35
- {
36
- if ($item === null) {
37
- return false;
38
- }
39
- $property = $this->_property;
40
- if (is_array($item)) {
41
- $result = isset($item[$property]);
42
- } elseif (is_object($item)) {
43
- $result = isset($item->$property);
44
- } elseif (is_string($item)) {
45
- $result = isset($item::$$property);
46
- } else {
47
- throw new \InvalidArgumentException('Must pass an object, array, or class name');
48
- }
49
-
50
- return $this->_not ? !$result : $result;
51
- }
52
-
53
- public function describeTo(Description $description)
54
- {
55
- $description->appendText($this->_not ? 'unset property ' : 'set property ')->appendText($this->_property);
56
- }
57
-
58
- public function describeMismatch($item, Description $description)
59
- {
60
- $value = '';
61
- if (!$this->_not) {
62
- $description->appendText('was not set');
63
- } else {
64
- $property = $this->_property;
65
- if (is_array($item)) {
66
- $value = $item[$property];
67
- } elseif (is_object($item)) {
68
- $value = $item->$property;
69
- } elseif (is_string($item)) {
70
- $value = $item::$$property;
71
- }
72
- parent::describeMismatch($value, $description);
73
- }
74
- }
75
-
76
- /**
77
- * Matches if value (class, object, or array) has named $property.
78
- *
79
- * @factory
80
- */
81
- public static function set($property)
82
- {
83
- return new self($property);
84
- }
85
-
86
- /**
87
- * Matches if value (class, object, or array) does not have named $property.
88
- *
89
- * @factory
90
- */
91
- public static function notSet($property)
92
- {
93
- return new self($property, true);
94
- }
95
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php DELETED
@@ -1,43 +0,0 @@
1
- <?php
2
- namespace Hamcrest\Core;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- use Hamcrest\BaseMatcher;
9
- use Hamcrest\Description;
10
- use Hamcrest\Util;
11
-
12
- abstract class ShortcutCombination extends BaseMatcher
13
- {
14
-
15
- /**
16
- * @var array<\Hamcrest\Matcher>
17
- */
18
- private $_matchers;
19
-
20
- public function __construct(array $matchers)
21
- {
22
- Util::checkAllAreMatchers($matchers);
23
-
24
- $this->_matchers = $matchers;
25
- }
26
-
27
- protected function matchesWithShortcut($item, $shortcut)
28
- {
29
- /** @var $matcher \Hamcrest\Matcher */
30
- foreach ($this->_matchers as $matcher) {
31
- if ($matcher->matches($item) == $shortcut) {
32
- return $shortcut;
33
- }
34
- }
35
-
36
- return !$shortcut;
37
- }
38
-
39
- public function describeToWithOperator(Description $description, $operator)
40
- {
41
- $description->appendList('(', ' ' . $operator . ' ', ')', $this->_matchers);
42
- }
43
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php DELETED
@@ -1,70 +0,0 @@
1
- <?php
2
- namespace Hamcrest;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- /**
9
- * A description of a Matcher. A Matcher will describe itself to a description
10
- * which can later be used for reporting.
11
- *
12
- * @see Hamcrest\Matcher::describeTo()
13
- */
14
- interface Description
15
- {
16
-
17
- /**
18
- * Appends some plain text to the description.
19
- *
20
- * @param string $text
21
- *
22
- * @return \Hamcrest\Description
23
- */
24
- public function appendText($text);
25
-
26
- /**
27
- * Appends the description of a {@link Hamcrest\SelfDescribing} value to
28
- * this description.
29
- *
30
- * @param \Hamcrest\SelfDescribing $value
31
- *
32
- * @return \Hamcrest\Description
33
- */
34
- public function appendDescriptionOf(SelfDescribing $value);
35
-
36
- /**
37
- * Appends an arbitary value to the description.
38
- *
39
- * @param mixed $value
40
- *
41
- * @return \Hamcrest\Description
42
- */
43
- public function appendValue($value);
44
-
45
- /**
46
- * Appends a list of values to the description.
47
- *
48
- * @param string $start
49
- * @param string $separator
50
- * @param string $end
51
- * @param array|\IteratorAggregate|\Iterator $values
52
- *
53
- * @return \Hamcrest\Description
54
- */
55
- public function appendValueList($start, $separator, $end, $values);
56
-
57
- /**
58
- * Appends a list of {@link Hamcrest\SelfDescribing} objects to the
59
- * description.
60
- *
61
- * @param string $start
62
- * @param string $separator
63
- * @param string $end
64
- * @param array|\\IteratorAggregate|\\Iterator $values
65
- * must be instances of {@link Hamcrest\SelfDescribing}
66
- *
67
- * @return \Hamcrest\Description
68
- */
69
- public function appendList($start, $separator, $end, $values);
70
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
- namespace Hamcrest;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- /**
9
- * Official documentation for this class is missing.
10
- */
11
- abstract class DiagnosingMatcher extends BaseMatcher
12
- {
13
-
14
- final public function matches($item)
15
- {
16
- return $this->matchesWithDiagnosticDescription($item, new NullDescription());
17
- }
18
-
19
- public function describeMismatch($item, Description $mismatchDescription)
20
- {
21
- $this->matchesWithDiagnosticDescription($item, $mismatchDescription);
22
- }
23
-
24
- abstract protected function matchesWithDiagnosticDescription($item, Description $mismatchDescription);
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
- namespace Hamcrest;
3
-
4
- /*
5
- Copyright (c) 2009 hamcrest.org
6
- */
7
-
8
- /**
9
- * Supporting cla