Cyr-To-Lat - Version 4.5.1

Version Description

(07.12.2020) = * Tested up to WordPress 5.6 * Tested on PHP 5.6 - 8.0

Download this release

Release Info

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

Code changes from version 4.5.0 to 4.5.1

Files changed (176) hide show
  1. .phpcs.cache +1 -0
  2. cyr-to-lat.php +4 -4
  3. dist/js/settings/app.js +0 -1
  4. languages/cyr2lat-ru_RU.mo +0 -0
  5. languages/cyr2lat-ru_RU.po +66 -42
  6. languages/cyr2lat-sv.mo +0 -0
  7. languages/cyr2lat-uk.mo +0 -0
  8. readme.txt +6 -2
  9. vendor/10up/wp_mock/.gitmodules +1 -0
  10. vendor/10up/wp_mock/CONTRIBUTING.md +26 -0
  11. vendor/10up/wp_mock/LICENSE.md +368 -0
  12. vendor/10up/wp_mock/behat.yml +9 -0
  13. vendor/10up/wp_mock/bootstrap.php.dist +5 -0
  14. vendor/10up/wp_mock/features/bootstrap/FeatureContext.php +88 -0
  15. vendor/10up/wp_mock/features/bootstrap/FunctionsContext.php +127 -0
  16. vendor/10up/wp_mock/features/bootstrap/HooksContext.php +235 -0
  17. vendor/10up/wp_mock/features/function-mocks.feature +48 -0
  18. vendor/10up/wp_mock/features/hooks.feature +228 -0
  19. vendor/10up/wp_mock/php/WP_Mock.php +543 -0
  20. vendor/10up/wp_mock/php/WP_Mock/API/constant-mocks.php +72 -0
  21. vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/themes/vip/plugins/vip-init.php +0 -0
  22. vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/wp-includes/class-http.php +0 -0
  23. vendor/10up/wp_mock/php/WP_Mock/API/function-mocks.php +161 -0
  24. vendor/10up/wp_mock/php/WP_Mock/Action.php +77 -0
  25. vendor/10up/wp_mock/php/WP_Mock/DeprecatedListener.php +119 -0
  26. vendor/10up/wp_mock/php/WP_Mock/EventManager.php +124 -0
  27. vendor/10up/wp_mock/php/WP_Mock/Filter.php +76 -0
  28. vendor/10up/wp_mock/php/WP_Mock/Functions.php +295 -0
  29. vendor/10up/wp_mock/php/WP_Mock/Handler.php +110 -0
  30. vendor/10up/wp_mock/php/WP_Mock/Hook.php +88 -0
  31. vendor/10up/wp_mock/php/WP_Mock/HookedCallback.php +107 -0
  32. vendor/10up/wp_mock/php/WP_Mock/InvokedFilterValue.php +25 -0
  33. vendor/10up/wp_mock/php/WP_Mock/Loader.php +149 -0
  34. vendor/10up/wp_mock/php/WP_Mock/Matcher/FuzzyObject.php +101 -0
  35. vendor/10up/wp_mock/php/WP_Mock/ReturnSequence.php +39 -0
  36. vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/ExpectationsMet.php +40 -0
  37. vendor/10up/wp_mock/php/WP_Mock/Tools/Constraints/IsEqualHtml.php +21 -0
  38. vendor/10up/wp_mock/php/WP_Mock/Tools/TestCase.php +319 -0
  39. vendor/10up/wp_mock/phpdoc.xml +16 -0
  40. vendor/10up/wp_mock/phpunit.xml.dist +22 -0
  41. vendor/antecedent/patchwork/.scrutinizer.yml +48 -0
  42. vendor/antecedent/patchwork/LICENSE +21 -0
  43. vendor/antecedent/patchwork/Patchwork.php +149 -0
  44. vendor/autoload.php +1 -1
  45. vendor/composer/ClassLoader.php +3 -3
  46. vendor/composer/InstalledVersions.php +819 -0
  47. vendor/composer/autoload_classmap.php +624 -0
  48. vendor/composer/autoload_files.php +13 -0
  49. vendor/composer/autoload_namespaces.php +5 -0
  50. vendor/composer/autoload_psr4.php +24 -0
  51. vendor/composer/autoload_real.php +8 -8
  52. vendor/composer/autoload_static.php +817 -4
  53. vendor/composer/installed.json +4232 -126
  54. vendor/composer/installed.php +624 -0
  55. vendor/doctrine/instantiator/.scrutinizer.yml +46 -0
  56. vendor/doctrine/instantiator/.travis.install.sh +14 -0
  57. vendor/doctrine/instantiator/CONTRIBUTING.md +35 -0
  58. vendor/doctrine/instantiator/LICENSE +19 -0
  59. vendor/doctrine/instantiator/phpmd.xml.dist +27 -0
  60. vendor/doctrine/instantiator/phpunit.xml.dist +22 -0
  61. vendor/guzzlehttp/guzzle/.php_cs +23 -0
  62. vendor/guzzlehttp/guzzle/Dockerfile +18 -0
  63. vendor/guzzlehttp/guzzle/LICENSE +19 -0
  64. vendor/guzzlehttp/guzzle/UPGRADING.md +1203 -0
  65. vendor/guzzlehttp/promises/.php_cs.dist +88 -0
  66. vendor/guzzlehttp/promises/LICENSE +19 -0
  67. vendor/guzzlehttp/promises/phpstan-baseline.neon +7 -0
  68. vendor/guzzlehttp/promises/phpstan.neon.dist +10 -0
  69. vendor/guzzlehttp/promises/psalm.xml +15 -0
  70. vendor/guzzlehttp/psr7/LICENSE +19 -0
  71. vendor/hamcrest/hamcrest-php/.gush.yml +7 -0
  72. vendor/hamcrest/hamcrest-php/CHANGES.txt +173 -0
  73. vendor/hamcrest/hamcrest-php/LICENSE.txt +27 -0
  74. vendor/hamcrest/hamcrest-php/generator/FactoryCall.php +41 -0
  75. vendor/hamcrest/hamcrest-php/generator/FactoryClass.php +71 -0
  76. vendor/hamcrest/hamcrest-php/generator/FactoryFile.php +121 -0
  77. vendor/hamcrest/hamcrest-php/generator/FactoryGenerator.php +124 -0
  78. vendor/hamcrest/hamcrest-php/generator/FactoryMethod.php +231 -0
  79. vendor/hamcrest/hamcrest-php/generator/FactoryParameter.php +131 -0
  80. vendor/hamcrest/hamcrest-php/generator/GlobalFunctionFile.php +42 -0
  81. vendor/hamcrest/hamcrest-php/generator/StaticMethodFile.php +38 -0
  82. vendor/hamcrest/hamcrest-php/generator/parts/file_header.txt +7 -0
  83. vendor/hamcrest/hamcrest-php/generator/parts/functions_footer.txt +0 -0
  84. vendor/hamcrest/hamcrest-php/generator/parts/functions_header.txt +24 -0
  85. vendor/hamcrest/hamcrest-php/generator/parts/functions_imports.txt +0 -0
  86. vendor/hamcrest/hamcrest-php/generator/parts/matchers_footer.txt +1 -0
  87. vendor/hamcrest/hamcrest-php/generator/parts/matchers_header.txt +7 -0
  88. vendor/hamcrest/hamcrest-php/generator/parts/matchers_imports.txt +2 -0
  89. vendor/hamcrest/hamcrest-php/generator/run.php +37 -0
  90. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php +882 -0
  91. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArray.php +118 -0
  92. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContaining.php +63 -0
  93. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInAnyOrder.php +59 -0
  94. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingInOrder.php +57 -0
  95. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKey.php +75 -0
  96. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayContainingKeyValuePair.php +80 -0
  97. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/IsArrayWithSize.php +73 -0
  98. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/MatchingOnce.php +69 -0
  99. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Arrays/SeriesMatchingOnce.php +75 -0
  100. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/AssertionError.php +10 -0
  101. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseDescription.php +132 -0
  102. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/BaseMatcher.php +30 -0
  103. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsEmptyTraversable.php +71 -0
  104. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Collection/IsTraversableWithSize.php +47 -0
  105. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AllOf.php +59 -0
  106. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/AnyOf.php +58 -0
  107. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/CombinableMatcher.php +78 -0
  108. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/DescribedAs.php +68 -0
  109. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Every.php +56 -0
  110. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/HasToString.php +56 -0
  111. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Is.php +57 -0
  112. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsAnything.php +45 -0
  113. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsCollectionContaining.php +93 -0
  114. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsEqual.php +44 -0
  115. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsIdentical.php +38 -0
  116. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsInstanceOf.php +67 -0
  117. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNot.php +44 -0
  118. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsNull.php +56 -0
  119. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsSame.php +51 -0
  120. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/IsTypeOf.php +71 -0
  121. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/Set.php +95 -0
  122. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Core/ShortcutCombination.php +43 -0
  123. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Description.php +70 -0
  124. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/DiagnosingMatcher.php +25 -0
  125. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/FeatureMatcher.php +67 -0
  126. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php +27 -0
  127. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php +50 -0
  128. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php +118 -0
  129. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php +713 -0
  130. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php +43 -0
  131. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php +67 -0
  132. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php +132 -0
  133. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php +23 -0
  134. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php +57 -0
  135. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php +85 -0
  136. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php +52 -0
  137. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php +66 -0
  138. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php +40 -0
  139. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php +45 -0
  140. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php +40 -0
  141. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php +66 -0
  142. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php +40 -0
  143. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php +40 -0
  144. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php +45 -0
  145. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php +32 -0
  146. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php +32 -0
  147. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php +37 -0
  148. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php +34 -0
  149. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php +32 -0
  150. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php +54 -0
  151. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php +32 -0
  152. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php +32 -0
  153. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php +34 -0
  154. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php +32 -0
  155. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php +29 -0
  156. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php +107 -0
  157. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php +76 -0
  158. vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php +195 -0
  159. vendor/lucatume/args/codeception.yml +17 -0
  160. vendor/lucatume/function-mocker/cache/003718f94361bf05e7a0149d8c566eda.php +1 -0
  161. vendor/lucatume/function-mocker/cache/248b6c7ab72e92c63d8ea2dc0000ba0c.php +1 -0
  162. vendor/lucatume/function-mocker/cache/35a0eb5e7c644778e349db32d7929a3b.php +2 -0
  163. vendor/lucatume/function-mocker/cache/51a4bafc9ebe4b76b8047ef2c4683321.php +91 -0
  164. vendor/lucatume/function-mocker/cache/539425a502f6acd0d5ae4dbbb111eebc.php +1226 -0
  165. vendor/lucatume/function-mocker/cache/5c160974325c7689e4934dd71fd72c04.php +401 -0
  166. vendor/lucatume/function-mocker/cache/5ef18fdb052a08d48b73f70c53e22f6f.php +287 -0
  167. vendor/lucatume/function-mocker/cache/64c11395d6a993bb4748cbb13c06e511.php +89 -0
  168. vendor/lucatume/function-mocker/cache/7a6bb82a1570d399a0fc0211458a3b75.php +234 -0
  169. vendor/lucatume/function-mocker/cache/7dd6f1c277a6c78d8318bbe76000ada3.php +1 -0
  170. vendor/lucatume/function-mocker/cache/823ab44b7fe7fb35b7976f7a7fbf1e7a.php +210 -0
  171. vendor/lucatume/function-mocker/cache/87c0186bd1f5eef7fac3cc830853843d.php +1 -0
  172. vendor/lucatume/function-mocker/cache/9c9e77b25faadb56dff570646e078dbf.php +1 -0
  173. vendor/lucatume/function-mocker/cache/ac2614677e1a12cb15d55208407c065d.php +1 -0
  174. vendor/lucatume/function-mocker/cache/c0ea46e7b4ef468cd221f627938ffc8a.php +1 -0
  175. vendor/lucatume/function-mocker/cache/c346f2492ecd70e9b3820fc0acea1c22.php +768 -0
  176. vendor/lucatume/function-mocker/cache/d046cd1f76aeed79b57fe7d207f9c445.php +86 -0
.phpcs.cache ADDED
@@ -0,0 +1 @@
 
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}}
cyr-to-lat.php CHANGED
@@ -8,9 +8,9 @@
8
  * Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
9
  * Author URI: https://profiles.wordpress.org/sergeybiryukov/
10
  * Requires at least: 5.1
11
- * Tested up to: 5.4
12
- * Version: 4.5.0
13
- * Stable tag: 4.5.0
14
  *
15
  * Text Domain: cyr2lat
16
  * Domain Path: /languages/
@@ -34,7 +34,7 @@ if ( defined( 'CYR_TO_LAT_VERSION' ) ) {
34
  /**
35
  * Plugin version.
36
  */
37
- define( 'CYR_TO_LAT_VERSION', '4.5.0' );
38
 
39
  /**
40
  * Path to the plugin dir.
8
  * Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
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/
34
  /**
35
  * Plugin version.
36
  */
37
+ define( 'CYR_TO_LAT_VERSION', '4.5.1' );
38
 
39
  /**
40
  * Path to the plugin dir.
dist/js/settings/app.js DELETED
@@ -1 +0,0 @@
1
- !function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){n(1),e.exports=n(2)},function(e,t){!function(e){"use strict";if(!e.fetch){var t="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),i="FormData"in e,s="ArrayBuffer"in e;if(s)var o=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=function(e){return e&&DataView.prototype.isPrototypeOf(e)},u=ArrayBuffer.isView||function(e){return e&&o.indexOf(Object.prototype.toString.call(e))>-1};p.prototype.append=function(e,t){e=d(e),t=h(t);var n=this.map[e];this.map[e]=n?n+","+t:t},p.prototype.delete=function(e){delete this.map[d(e)]},p.prototype.get=function(e){return e=d(e),this.has(e)?this.map[e]:null},p.prototype.has=function(e){return this.map.hasOwnProperty(d(e))},p.prototype.set=function(e,t){this.map[d(e)]=h(t)},p.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},p.prototype.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),f(e)},p.prototype.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),f(e)},p.prototype.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),f(e)},n&&(p.prototype[Symbol.iterator]=p.prototype.entries);var l=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];T.prototype.clone=function(){return new T(this,{body:this._bodyInit})},L.call(T.prototype),L.call(E.prototype),E.prototype.clone=function(){return new E(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},E.error=function(){var e=new E(null,{status:0,statusText:""});return e.type="error",e};var c=[301,302,303,307,308];E.redirect=function(e,t){if(-1===c.indexOf(t))throw new RangeError("Invalid status code");return new E(null,{status:t,headers:{location:e}})},e.Headers=p,e.Request=T,e.Response=E,e.fetch=function(e,t){return new Promise((function(n,i){var s=new T(e,t),o=new XMLHttpRequest;o.onload=function(){var e,t,r={status:o.status,statusText:o.statusText,headers:(e=o.getAllResponseHeaders()||"",t=new p,e.split(/\r?\n/).forEach((function(e){var n=e.split(":"),r=n.shift().trim();if(r){var i=n.join(":").trim();t.append(r,i)}})),t)};r.url="responseURL"in o?o.responseURL:r.headers.get("X-Request-URL");var i="response"in o?o.response:o.responseText;n(new E(i,r))},o.onerror=function(){i(new TypeError("Network request failed"))},o.ontimeout=function(){i(new TypeError("Network request failed"))},o.open(s.method,s.url,!0),"include"===s.credentials&&(o.withCredentials=!0),"responseType"in o&&r&&(o.responseType="blob"),s.headers.forEach((function(e,t){o.setRequestHeader(t,e)})),o.send(void 0===s._bodyInit?null:s._bodyInit)}))},e.fetch.polyfill=!0}function d(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function h(e){return"string"!=typeof e&&(e=String(e)),e}function f(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function p(e){this.map={},e instanceof p?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function y(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function b(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function v(e){var t=new FileReader,n=b(t);return t.readAsArrayBuffer(e),n}function m(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function L(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,e)if("string"==typeof e)this._bodyText=e;else if(r&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(i&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(t&&URLSearchParams.prototype.isPrototypeOf(e))this._bodyText=e.toString();else if(s&&r&&a(e))this._bodyArrayBuffer=m(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!s||!ArrayBuffer.prototype.isPrototypeOf(e)&&!u(e))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=m(e)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):t&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=y(this);if(e)return e;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?y(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(v)}),this.text=function(){var e,t,n,r=y(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,n=b(t),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r<t.length;r++)n[r]=String.fromCharCode(t[r]);return n.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},i&&(this.formData=function(){return this.text().then(S)}),this.json=function(){return this.text().then(JSON.parse)},this}function T(e,t){var n,r,i=(t=t||{}).body;if(e instanceof T){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new p(e.headers)),this.method=e.method,this.mode=e.mode,i||null==e._bodyInit||(i=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new p(t.headers)),this.method=(n=t.method||this.method||"GET",r=n.toUpperCase(),l.indexOf(r)>-1?r:n),this.mode=t.mode||this.mode||null,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(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(i))}})),t}function E(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new p(t.headers),this.url=t.url||"",this._initBody(e)}}("undefined"!=typeof self?self:this)},function(e,t,n){"use strict";var r,i=n(3),s=(r=i)&&r.__esModule?r:{default:r};document.addEventListener("DOMContentLoaded",(function(){new s.default}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var s=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),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.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.addWrapper(),this.addMessageLines(),this.addEditLabelInput(),this.hideTables(),this.bindEvents(),this.setSubmitStatus()}return r(e,[{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 e=this.getActiveIndex();return JSON.stringify(this.getActiveTableData())!==JSON.stringify(this.tablesData[e])}},{key:"setSubmitStatus",value:function(){this.submitButton.disabled=!this.isActiveTableChanged()}},{key:"saveActiveTable",value:function(){var e=this;if(this.isActiveTableChanged()){var t=this.getActiveTable(),n=document.createElement("form");return n.action=this.optionsForm.getAttribute("action"),n.method=this.optionsForm.method,n.appendChild(t.cloneNode(!0)),[].concat(i(t.querySelectorAll("input"))).map((function(e){n.querySelector("#"+e.id).value=e.value})),[].concat(i(this.optionsForm.querySelectorAll('input[type="hidden"]'))).map((function(e){n.appendChild(e.cloneNode(!0))})),document.body.appendChild(n),fetch(this.optionsForm.getAttribute("action"),{method:n.method,body:new URLSearchParams([].concat(i(new FormData(n))))}).then((function(t){return t.ok?(e.showMessage(e.successMessage,"Options saved."),e.tablesData=e.getTablesData()):e.showMessage(e.errorMessage,"Error saving options."),t.json()})).finally((function(){n.remove(),e.setSubmitStatus()}))}}},{key:"getTableData",value:function(e){var t=this,n=[].concat(i(e.querySelectorAll("input"))),r={};return n.forEach((function(e){var n=document.querySelector(t.OPTIONS_FORM_SELECTOR+' label[for="'+e.id+'"]');r[n.innerHTML]=e.value})),r}},{key:"getTablesData",value:function(){var e=this;return this.getTables().map((function(t){return e.getTableData(t)}))}},{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.prepend(this.wrapper)}},{key:"addMessageLine",value:function(e){var t=document.createElement("div");return t.id=e,this.optionsForm.prepend(t),t}},{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 e=this.getLastCell();e.parentElement.insertBefore(e.cloneNode(!0),e.nextElementSibling);var t=(e=this.getLastCell()).querySelector("label"),n=e.querySelector("input"),r=n.id.split("-"),i=r[0]+"-"+(parseInt(r[1])+1);t.htmlFor=i,t.innerHTML="",n.id=i,n.value="",n.setAttribute("value",""),this.replaceName(n,""),this.bindEvents(),this.editLabel(t)}},{key:"hideTables",value:function(){var e=this,t=0;this.getTables().map((function(n,r){n.classList.add("ctl-table"),e.CURRENT_STUB_ID===n.previousElementSibling.id&&(t=r,n.classList.add(e.ACTIVE_TABLE_CLASS));var i=document.createElement("div");i.classList.add(e.PLUS_CLASS),i.innerHTML=e.plusButton,n.querySelector("td").appendChild(i)})),this.getHeaders().map((function(n,r){n.classList.add("nav-tab"),n.dataset.index=r,e.wrapper.appendChild(n),r===t&&n.classList.add(e.CURRENT_NAV_TAB_CLASS,e.ACTIVE_NAV_TAB_CLASS)}))}},{key:"bindEvents",value:function(){var e=this;this.getHeaders().map((function(t,n,r){t.onclick=function(t){t.preventDefault();var n=t.target.dataset.index;if(n===e.getActiveIndex())return!1;e.saveActiveTable(),r.map((function(t){t.classList.remove(e.ACTIVE_NAV_TAB_CLASS)})),r[n].classList.add(e.ACTIVE_NAV_TAB_CLASS);var i=e.getTables();return i.map((function(t){t.classList.remove(e.ACTIVE_TABLE_CLASS)})),i[n].classList.add(e.ACTIVE_TABLE_CLASS),e.setSubmitStatus(),!1}})),this.getInputs().map((function(t){t.oninput=function(){e.setSubmitStatus()}})),this.getLabels().map((function(t){t.onclick=function(t){return t.preventDefault(),e.editLabel(t.target),!1}})),this.editLabelInput.onblur=function(){e.saveLabel()},this.editLabelInput.onkeyup=function(t){"Escape"===t.key&&e.saveLabel(!0),"Enter"===t.key&&e.saveLabel()},this.getPlusButtons().map((function(t){t.onclick=function(t){return t.preventDefault(),e.addCell(t.target),!1}})),document.querySelector(this.SUBMIT_SELECTOR).onclick=function(t){return t.preventDefault(),e.saveActiveTable(),!1}}},{key:"editLabel",value:function(e){e.parentNode.appendChild(this.editLabelInput),this.editLabelInput.value=e.innerHTML,this.editLabelInput.classList.remove(this.EDIT_LABEL_ERROR_CLASS),this.editLabelInput.style.display="block",this.editLabelInput.focus()}},{key:"isUniqueLabel",value:function(e){return[].concat(i(this.getActiveTable().querySelectorAll("label"))).reduce((function(t,n){return t&&n.innerHTML!==e}),!0)}},{key:"saveLabel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if("none"!==this.editLabelInput.style.display){var t=this.editLabelInput.value.trim(),n=this.editLabelInput.parentNode.querySelector("label"),r=this.editLabelInput.parentNode.querySelector("input");if(""===t){var i=document.getElementById(this.EDIT_LABEL_ID).parentElement;return this.hideEditLabelInput(),i.remove(),void this.setSubmitStatus()}e||t===n.innerHTML?this.hideEditLabelInput():this.isUniqueLabel(t)?(this.hideEditLabelInput(),n.innerHTML=t,this.replaceName(r,t),this.setSubmitStatus()):this.editLabelInput.classList.add(this.EDIT_LABEL_ERROR_CLASS)}}},{key:"replaceName",value:function(e,t){e.name=e.name.replace(/(.+\[.+])\[.*]/g,"$1["+t+"]")}},{key:"clearMessage",value:function(e){e.innerHTML="",e.classList.remove("active")}},{key:"clearMessages",value:function(){this.clearMessage(this.successMessage),this.clearMessage(this.errorMessage),clearTimeout(this.msgTimer)}},{key:"showMessage",value:function(e,t){var n=this;e.innerHTML=t,e.classList.add("active"),this.msgTimer=setTimeout((function(){n.clearMessages()}),5e3)}}]),e}();t.default=s}]);
 
languages/cyr2lat-ru_RU.mo CHANGED
Binary file
languages/cyr2lat-ru_RU.po CHANGED
@@ -1,15 +1,15 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Cyr To Lat\n"
4
- "POT-Creation-Date: 2020-04-05 21:15+0300\n"
5
- "PO-Revision-Date: 2020-04-05 21:17+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\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"
@@ -32,7 +32,23 @@ msgstr ""
32
  msgid "Post slug converted:"
33
  msgstr "Ярлык поста сконвертирован:"
34
 
35
- #: classes/background-processes/class-post-conversion-process.php:84
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  msgid "Post slugs conversion completed."
37
  msgstr "Конвертация ярлыков постов завершена."
38
 
@@ -44,47 +60,47 @@ msgstr "Ярлык термина сконвертирован:"
44
  msgid "Term slugs conversion completed."
45
  msgstr "Конвертация ярлыков терминов завершена."
46
 
47
- #: classes/class-converter.php:105
48
  msgid "Cyr To Lat converts existing post slugs in the background process."
49
  msgstr "Cyr To Lat конвертирует существующие ярлыки постов в фоновом процессе."
50
 
51
- #: classes/class-converter.php:112
52
  msgid "Cyr To Lat converts existing term slugs in the background process."
53
  msgstr ""
54
  "Cyr To Lat конвертирует существующие ярлыки терминов в фоновом процессе."
55
 
56
- #: classes/class-converter.php:119
57
  msgid "Cyr To Lat completed conversion of existing post slugs."
58
  msgstr "Cyr To Lat завершил конвертацию существующих ярлыков постов."
59
 
60
- #: classes/class-converter.php:126
61
  msgid "Cyr To Lat completed conversion of existing term slugs."
62
  msgstr "Cyr To Lat завершил конвертацию существующих ярлыков терминов."
63
 
64
- #: classes/class-converter.php:197
 
 
 
 
65
  msgid "Post slugs conversion started."
66
  msgstr "Начата конвертация ярлыков постов."
67
 
68
- #: classes/class-converter.php:199
69
  msgid "Cyr To Lat started conversion of existing post slugs."
70
  msgstr "Cyr To Lat начал конвертацию существующих ярлыков постов."
71
 
72
- #: classes/class-converter.php:206
73
- msgid "Cyr To Lat has not found existing post slugs for conversion."
74
- msgstr "Cyr To Lat не нашёл существующих ярлыков постов для конвертации."
75
 
76
- #: classes/class-converter.php:225
77
  msgid "Term slugs conversion started."
78
  msgstr "Начата конвертация ярлыков терминов."
79
 
80
- #: classes/class-converter.php:227
81
  msgid "Cyr To Lat started conversion of existing term slugs."
82
  msgstr "Cyr To Lat начал конвертацию существующих ярлыков терминов."
83
 
84
- #: classes/class-converter.php:234
85
- msgid "Cyr To Lat has not found existing term slugs for conversion."
86
- msgstr "Cyr To Lat не нашёл существующих ярлыков терминов для конвертации."
87
-
88
  #: classes/class-requirements.php:99
89
  msgid "Cyr To Lat plugin has been deactivated."
90
  msgstr "Плагин Cyr To Lat был деактивирован."
@@ -137,87 +153,95 @@ msgstr ""
137
  "См.: <a href=\"http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit\" "
138
  "target=\"_blank\">Увеличение лимита max input vars.</a>"
139
 
140
- #: classes/class-settings.php:122
141
  msgid "View Cyr To Lat settings"
142
  msgstr "Посмотреть настройки Cyr To Lat"
143
 
144
- #: classes/class-settings.php:123
145
  msgid "Settings"
146
  msgstr "Настройки"
147
 
148
- #: classes/class-settings.php:135
149
  msgid "ISO9 Table"
150
  msgstr "Таблица ISO9"
151
 
152
- #: classes/class-settings.php:144
153
  msgid "bel Table"
154
  msgstr "Таблица bel"
155
 
156
- #: classes/class-settings.php:153
157
  msgid "uk Table"
158
  msgstr "Таблица uk"
159
 
160
- #: classes/class-settings.php:162
161
  msgid "bg_BG Table"
162
  msgstr "Таблица bg_BG"
163
 
164
- #: classes/class-settings.php:171
165
  msgid "mk_MK Table"
166
  msgstr "Таблица mk_MK"
167
 
168
- #: classes/class-settings.php:180
169
  msgid "sr_RS Table"
170
  msgstr "Таблица sr_RS"
171
 
172
- #: classes/class-settings.php:189
 
 
 
 
 
 
 
 
173
  msgid "ka_GE Table"
174
  msgstr "Таблица ka_GE"
175
 
176
- #: classes/class-settings.php:198
177
  msgid "kk Table"
178
  msgstr "Таблица kk"
179
 
180
- #: classes/class-settings.php:207
181
  msgid "he_IL Table"
182
  msgstr "Таблица he_IL"
183
 
184
- #: classes/class-settings.php:216
185
  msgid "zh_CN Table"
186
  msgstr "Таблица zh_CN"
187
 
188
- #: classes/class-settings.php:280 classes/class-settings.php:281
 
 
 
 
189
  msgid "Cyr To Lat"
190
  msgstr "Cyr To Lat"
191
 
192
  #. Admin panel title.
193
- #: classes/class-settings.php:301
194
  msgid "Cyr To Lat Plugin Options"
195
  msgstr "Опции плагина Cyr To Lat"
196
 
197
- #: classes/class-settings.php:316
198
  msgid "Convert Existing Slugs"
199
  msgstr "Конвертировать существующие ярлыки"
200
 
201
- #: classes/class-settings.php:322
202
  msgid "Donate"
203
  msgstr "Пожертвовать"
204
 
205
- #: classes/class-settings.php:325
206
  msgid "Would you like to support the advancement of this plugin?"
207
  msgstr "Хотите поддержать развитие этого плагина?"
208
 
209
- #: classes/class-settings.php:339
210
  msgid "Your appreciation"
211
  msgstr "Ваша оценка"
212
 
213
- #: classes/class-settings.php:344
214
  msgid "Leave a ★★★★★ plugin review on WordPress.org"
215
  msgstr "Оставьте ★★★★★ обзор плагина на WordPress.org"
216
 
217
- #: classes/class-settings.php:363
218
- msgid "(current)"
219
- msgstr "(текущая)"
220
-
221
  #. translators: %d: cron interval
222
  #: lib/wp-background-processing/class-wp-background-process.php:399
223
  #, php-format
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"
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
 
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 был деактивирован."
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
languages/cyr2lat-sv.mo CHANGED
Binary file
languages/cyr2lat-uk.mo CHANGED
Binary file
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  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.4
6
- Stable tag: 4.5.0
7
  Requires PHP: 5.6.20
8
 
9
  Converts Cyrillic characters in post, page and term slugs to Latin characters.
@@ -99,6 +99,10 @@ Yes you can!
99
 
100
  == Changelog ==
101
 
 
 
 
 
102
  = 4.5.0 (18.05.2020) =
103
  * Added Greek and Armenian languages
104
  * Added background conversion of attachments and thumbnails
2
  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
 
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
105
+
106
  = 4.5.0 (18.05.2020) =
107
  * Added Greek and Armenian languages
108
  * Added background conversion of attachments and thumbnails
vendor/10up/wp_mock/.gitmodules ADDED
@@ -0,0 +1 @@
 
1
+
vendor/10up/wp_mock/CONTRIBUTING.md ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,368 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once __DIR__ . '/vendor/autoload.php';
4
+
5
+ WP_Mock::setUsePatchwork( false );
vendor/10up/wp_mock/features/bootstrap/FeatureContext.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,235 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,228 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,543 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
File without changes
vendor/10up/wp_mock/php/WP_Mock/API/dummy-files/wp-includes/class-http.php ADDED
File without changes
vendor/10up/wp_mock/php/WP_Mock/API/function-mocks.php ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,295 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,319 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -37,8 +37,8 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
@@ -60,7 +60,7 @@ class ClassLoader
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
  }
65
 
66
  return array();
vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,819 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Semver\VersionParser;
16
+
17
+
18
+
19
+
20
+
21
+
22
+ class InstalledVersions
23
+ {
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',
58
+ 'version' => '1.9.0.0',
59
+ 'aliases' =>
60
+ 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 (
382
+ 'replaced' =>
383
+ 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' =>
489
+ 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
+
651
+
652
+
653
+
654
+
655
+ public static function getInstalledPackages()
656
+ {
657
+ return array_keys(self::$installed['versions']);
658
+ }
659
+
660
+
661
+
662
+
663
+
664
+
665
+
666
+
667
+
668
+ public static function isInstalled($packageName)
669
+ {
670
+ return isset(self::$installed['versions'][$packageName]);
671
+ }
672
+
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+
686
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
687
+ {
688
+ $constraint = $parser->parseConstraints($constraint);
689
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
690
+
691
+ return $provided->matches($constraint);
692
+ }
693
+
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
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
+
744
+
745
+
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
+
761
+
762
+
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
+
778
+
779
+
780
+
781
+ public static function getRootPackage()
782
+ {
783
+ return self::$installed['root'];
784
+ }
785
+
786
+
787
+
788
+
789
+
790
+
791
+
792
+ public static function getRawData()
793
+ {
794
+ return self::$installed;
795
+ }
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+ public static function reload($data)
816
+ {
817
+ self::$installed = $data;
818
+ }
819
+ }
vendor/composer/autoload_classmap.php CHANGED
@@ -6,11 +6,15 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
9
  'Cyr_To_Lat\\ACF' => $baseDir . '/classes/class-acf.php',
10
  'Cyr_To_Lat\\Admin_Notices' => $baseDir . '/classes/class-admin-notices.php',
11
  'Cyr_To_Lat\\Conversion_Process' => $baseDir . '/classes/background-processes/class-conversion-process.php',
12
  'Cyr_To_Lat\\Conversion_Tables' => $baseDir . '/classes/class-conversion-tables.php',
13
  'Cyr_To_Lat\\Converter' => $baseDir . '/classes/class-converter.php',
 
14
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => $baseDir . '/lib/wp-background-processing/class-wp-async-request.php',
15
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => $baseDir . '/lib/wp-background-processing/class-wp-background-process.php',
16
  'Cyr_To_Lat\\Main' => $baseDir . '/classes/class-main.php',
@@ -20,4 +24,624 @@ return array(
20
  'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => $baseDir . '/lib/polyfill-mbstring/Mbstring.php',
21
  'Cyr_To_Lat\\Term_Conversion_Process' => $baseDir . '/classes/background-processes/class-term-conversion-process.php',
22
  'Cyr_To_Lat\\WP_CLI' => $baseDir . '/classes/class-wp-cli.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  );
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
  '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
  );
vendor/composer/autoload_files.php CHANGED
@@ -6,5 +6,18 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  '344a0f93a05b8ca362c22e39586db500' => $baseDir . '/lib/polyfill-mbstring/bootstrap.php',
10
  );
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
  );
vendor/composer/autoload_namespaces.php CHANGED
@@ -6,4 +6,9 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
9
  );
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
  );
vendor/composer/autoload_psr4.php CHANGED
@@ -6,5 +6,29 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
10
  );
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
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218', '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_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -51,19 +51,19 @@ class ComposerAutoloaderInit460c17ef6a9eaa75f4cb75bec3b19218
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
- $includeFiles = Composer\Autoload\ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
- composerRequire460c17ef6a9eaa75f4cb75bec3b19218($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
- function composerRequire460c17ef6a9eaa75f4cb75bec3b19218($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 ComposerAutoloaderInit7b83804bec66524f8ede823838ffb903
6
  {
7
  private static $loader;
8
 
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
  $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;
vendor/composer/autoload_static.php CHANGED
@@ -4,13 +4,68 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218
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,18 +73,155 @@ class ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218
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
  'Cyr_To_Lat\\ACF' => __DIR__ . '/../..' . '/classes/class-acf.php',
29
  'Cyr_To_Lat\\Admin_Notices' => __DIR__ . '/../..' . '/classes/class-admin-notices.php',
30
  'Cyr_To_Lat\\Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-conversion-process.php',
31
  'Cyr_To_Lat\\Conversion_Tables' => __DIR__ . '/../..' . '/classes/class-conversion-tables.php',
32
  'Cyr_To_Lat\\Converter' => __DIR__ . '/../..' . '/classes/class-converter.php',
 
33
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Async_Request' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-async-request.php',
34
  'Cyr_To_Lat\\KAGG\\WP_Background_Processing\\WP_Background_Process' => __DIR__ . '/../..' . '/lib/wp-background-processing/class-wp-background-process.php',
35
  'Cyr_To_Lat\\Main' => __DIR__ . '/../..' . '/classes/class-main.php',
@@ -39,14 +231,635 @@ class ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218
39
  'Cyr_To_Lat\\Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/Mbstring.php',
40
  'Cyr_To_Lat\\Term_Conversion_Process' => __DIR__ . '/../..' . '/classes/background-processes/class-term-conversion-process.php',
41
  'Cyr_To_Lat\\WP_CLI' => __DIR__ . '/../..' . '/classes/class-wp-cli.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  );
43
 
44
  public static function getInitializer(ClassLoader $loader)
45
  {
46
  return \Closure::bind(function () use ($loader) {
47
- $loader->prefixLengthsPsr4 = ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218::$prefixLengthsPsr4;
48
- $loader->prefixDirsPsr4 = ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218::$prefixDirsPsr4;
49
- $loader->classMap = ComposerStaticInit460c17ef6a9eaa75f4cb75bec3b19218::$classMap;
 
50
 
51
  }, null, ClassLoader::class);
52
  }
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
  );
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
  '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
  }
vendor/composer/installed.json CHANGED
@@ -1,126 +1,4232 @@
1
- [
2
- {
3
- "name": "composer/installers",
4
- "version": "v1.7.0",
5
- "version_normalized": "1.7.0.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/composer/installers.git",
9
- "reference": "141b272484481432cda342727a427dc1e206bfa0"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/composer/installers/zipball/141b272484481432cda342727a427dc1e206bfa0",
14
- "reference": "141b272484481432cda342727a427dc1e206bfa0",
15
- "shasum": ""
16
- },
17
- "require": {
18
- "composer-plugin-api": "^1.0"
19
- },
20
- "replace": {
21
- "roundcube/plugin-installer": "*",
22
- "shama/baton": "*"
23
- },
24
- "require-dev": {
25
- "composer/composer": "1.0.*@dev",
26
- "phpunit/phpunit": "^4.8.36"
27
- },
28
- "time": "2019-08-12T15:00:31+00:00",
29
- "type": "composer-plugin",
30
- "extra": {
31
- "class": "Composer\\Installers\\Plugin",
32
- "branch-alias": {
33
- "dev-master": "1.0-dev"
34
- }
35
- },
36
- "installation-source": "dist",
37
- "autoload": {
38
- "psr-4": {
39
- "Composer\\Installers\\": "src/Composer/Installers"
40
- }
41
- },
42
- "notification-url": "https://packagist.org/downloads/",
43
- "license": [
44
- "MIT"
45
- ],
46
- "authors": [
47
- {
48
- "name": "Kyle Robinson Young",
49
- "email": "kyle@dontkry.com",
50
- "homepage": "https://github.com/shama"
51
- }
52
- ],
53
- "description": "A multi-framework Composer library installer",
54
- "homepage": "https://composer.github.io/installers/",
55
- "keywords": [
56
- "Craft",
57
- "Dolibarr",
58
- "Eliasis",
59
- "Hurad",
60
- "ImageCMS",
61
- "Kanboard",
62
- "Lan Management System",
63
- "MODX Evo",
64
- "Mautic",
65
- "Maya",
66
- "OXID",
67
- "Plentymarkets",
68
- "Porto",
69
- "RadPHP",
70
- "SMF",
71
- "Thelia",
72
- "Whmcs",
73
- "WolfCMS",
74
- "agl",
75
- "aimeos",
76
- "annotatecms",
77
- "attogram",
78
- "bitrix",
79
- "cakephp",
80
- "chef",
81
- "cockpit",
82
- "codeigniter",
83
- "concrete5",
84
- "croogo",
85
- "dokuwiki",
86
- "drupal",
87
- "eZ Platform",
88
- "elgg",
89
- "expressionengine",
90
- "fuelphp",
91
- "grav",
92
- "installer",
93
- "itop",
94
- "joomla",
95
- "known",
96
- "kohana",
97
- "laravel",
98
- "lavalite",
99
- "lithium",
100
- "magento",
101
- "majima",
102
- "mako",
103
- "mediawiki",
104
- "modulework",
105
- "modx",
106
- "moodle",
107
- "osclass",
108
- "phpbb",
109
- "piwik",
110
- "ppi",
111
- "puppet",
112
- "pxcms",
113
- "reindex",
114
- "roundcube",
115
- "shopware",
116
- "silverstripe",
117
- "sydes",
118
- "symfony",
119
- "typo3",
120
- "wordpress",
121
- "yawik",
122
- "zend",
123
- "zikula"
124
- ]
125
- }
126
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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",
105
+ "version_normalized": "1.9.0.0",
106
+ "source": {
107
+ "type": "git",
108
+ "url": "https://github.com/composer/installers.git",
109
+ "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca"
110
+ },
111
+ "dist": {
112
+ "type": "zip",
113
+ "url": "https://api.github.com/repos/composer/installers/zipball/b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
114
+ "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
115
+ "shasum": ""
116
+ },
117
+ "require": {
118
+ "composer-plugin-api": "^1.0 || ^2.0"
119
+ },
120
+ "replace": {
121
+ "roundcube/plugin-installer": "*",
122
+ "shama/baton": "*"
123
+ },
124
+ "require-dev": {
125
+ "composer/composer": "1.6.* || 2.0.*@dev",
126
+ "composer/semver": "1.0.* || 2.0.*@dev",
127
+ "phpunit/phpunit": "^4.8.36",
128
+ "sebastian/comparator": "^1.2.4",
129
+ "symfony/process": "^2.3"
130
+ },
131
+ "time": "2020-04-07T06:57:05+00:00",
132
+ "type": "composer-plugin",
133
+ "extra": {
134
+ "class": "Composer\\Installers\\Plugin",
135
+ "branch-alias": {
136
+ "dev-master": "1.0-dev"
137
+ }
138
+ },
139
+ "installation-source": "dist",
140
+ "autoload": {
141
+ "psr-4": {
142
+ "Composer\\Installers\\": "src/Composer/Installers"
143
+ }
144
+ },
145
+ "notification-url": "https://packagist.org/downloads/",
146
+ "license": [
147
+ "MIT"
148
+ ],
149
+ "authors": [
150
+ {
151
+ "name": "Kyle Robinson Young",
152
+ "email": "kyle@dontkry.com",
153
+ "homepage": "https://github.com/shama"
154
+ }
155
+ ],
156
+ "description": "A multi-framework Composer library installer",
157
+ "homepage": "https://composer.github.io/installers/",
158
+ "keywords": [
159
+ "Craft",
160
+ "Dolibarr",
161
+ "Eliasis",
162
+ "Hurad",
163
+ "ImageCMS",
164
+ "Kanboard",
165
+ "Lan Management System",
166
+ "MODX Evo",
167
+ "MantisBT",
168
+ "Mautic",
169
+ "Maya",
170
+ "OXID",
171
+ "Plentymarkets",
172
+ "Porto",
173
+ "RadPHP",
174
+ "SMF",
175
+ "Thelia",
176
+ "Whmcs",
177
+ "WolfCMS",
178
+ "agl",
179
+ "aimeos",
180
+ "annotatecms",
181
+ "attogram",
182
+ "bitrix",
183
+ "cakephp",
184
+ "chef",
185
+ "cockpit",
186
+ "codeigniter",
187
+ "concrete5",
188
+ "croogo",
189
+ "dokuwiki",
190
+ "drupal",
191
+ "eZ Platform",
192
+ "elgg",
193
+ "expressionengine",
194
+ "fuelphp",
195
+ "grav",
196
+ "installer",
197
+ "itop",
198
+ "joomla",
199
+ "known",
200
+ "kohana",
201
+ "laravel",
202
+ "lavalite",
203
+ "lithium",
204
+ "magento",
205
+ "majima",
206
+ "mako",
207
+ "mediawiki",
208
+ "modulework",
209
+ "modx",
210
+ "moodle",
211
+ "osclass",
212
+ "phpbb",
213
+ "piwik",
214
+ "ppi",
215
+ "puppet",
216
+ "pxcms",
217
+ "reindex",
218
+ "roundcube",
219
+ "shopware",
220
+ "silverstripe",
221
+ "sydes",
222
+ "sylius",
223
+ "symfony",
224
+ "typo3",
225
+ "wordpress",
226
+ "yawik",
227
+ "zend",
228
+ "zikula"
229
+ ],
230
+ "support": {
231
+ "issues": "https://github.com/composer/installers/issues",
232
+ "source": "https://github.com/composer/installers/tree/v1.9.0"
233
+ },
234
+ "funding": [
235
+ {
236
+ "url": "https://packagist.com",
237
+ "type": "custom"
238
+ },
239
+ {
240
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
241
+ "type": "tidelift"
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
+ }
vendor/composer/installed.php ADDED
@@ -0,0 +1,624 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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',
35
+ 'version' => '1.9.0.0',
36
+ 'aliases' =>
37
+ array (
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 (
359
+ 'replaced' =>
360
+ array (
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' =>
466
+ array (
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
+ );
vendor/doctrine/instantiator/.scrutinizer.yml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,1203 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,231 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
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 ADDED
File without changes
vendor/hamcrest/hamcrest-php/generator/parts/functions_header.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
File without changes
vendor/hamcrest/hamcrest-php/generator/parts/matchers_footer.txt ADDED
@@ -0,0 +1 @@
 
1
+ }
vendor/hamcrest/hamcrest-php/generator/parts/matchers_header.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,2 @@
 
 
1
+
2
+ namespace Hamcrest;
vendor/hamcrest/hamcrest-php/generator/run.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,882 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Supporting class for matching a feature of an object. Implement
10
+ * <code>featureValueOf()</code> in a subclass to pull out the feature to be
11
+ * matched against.
12
+ */
13
+ abstract class FeatureMatcher extends TypeSafeDiagnosingMatcher
14
+ {
15
+
16
+ private $_subMatcher;
17
+ private $_featureDescription;
18
+ private $_featureName;
19
+
20
+ /**
21
+ * Constructor.
22
+ *
23
+ * @param string $type
24
+ * @param string $subtype
25
+ * @param \Hamcrest\Matcher $subMatcher The matcher to apply to the feature
26
+ * @param string $featureDescription Descriptive text to use in describeTo
27
+ * @param string $featureName Identifying text for mismatch message
28
+ */
29
+ public function __construct($type, $subtype, Matcher $subMatcher, $featureDescription, $featureName)
30
+ {
31
+ parent::__construct($type, $subtype);
32
+
33
+ $this->_subMatcher = $subMatcher;
34
+ $this->_featureDescription = $featureDescription;
35
+ $this->_featureName = $featureName;
36
+ }
37
+
38
+ /**
39
+ * Implement this to extract the interesting feature.
40
+ *
41
+ * @param mixed $actual the target object
42
+ *
43
+ * @return mixed the feature to be matched
44
+ */
45
+ abstract protected function featureValueOf($actual);
46
+
47
+ public function matchesSafelyWithDiagnosticDescription($actual, Description $mismatchDescription)
48
+ {
49
+ $featureValue = $this->featureValueOf($actual);
50
+
51
+ if (!$this->_subMatcher->matches($featureValue)) {
52
+ $mismatchDescription->appendText($this->_featureName)
53
+ ->appendText(' was ')->appendValue($featureValue);
54
+
55
+ return false;
56
+ }
57
+
58
+ return true;
59
+ }
60
+
61
+ final public function describeTo(Description $description)
62
+ {
63
+ $description->appendText($this->_featureDescription)->appendText(' ')
64
+ ->appendDescriptionOf($this->_subMatcher)
65
+ ;
66
+ }
67
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Internal/SelfDescribingValue.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Internal;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+ use Hamcrest\Description;
8
+ use Hamcrest\SelfDescribing;
9
+
10
+ /**
11
+ * A wrapper around any value so that it describes itself.
12
+ */
13
+ class SelfDescribingValue implements SelfDescribing
14
+ {
15
+
16
+ private $_value;
17
+
18
+ public function __construct($value)
19
+ {
20
+ $this->_value = $value;
21
+ }
22
+
23
+ public function describeTo(Description $description)
24
+ {
25
+ $description->appendValue($this->_value);
26
+ }
27
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matcher.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * A matcher over acceptable values.
10
+ * A matcher is able to describe itself to give feedback when it fails.
11
+ * <p/>
12
+ * Matcher implementations should <b>NOT directly implement this interface</b>.
13
+ * Instead, <b>extend</b> the {@link Hamcrest\BaseMatcher} abstract class,
14
+ * which will ensure that the Matcher API can grow to support
15
+ * new features and remain compatible with all Matcher implementations.
16
+ * <p/>
17
+ * For easy access to common Matcher implementations, use the static factory
18
+ * methods in {@link Hamcrest\CoreMatchers}.
19
+ *
20
+ * @see Hamcrest\CoreMatchers
21
+ * @see Hamcrest\BaseMatcher
22
+ */
23
+ interface Matcher extends SelfDescribing
24
+ {
25
+
26
+ /**
27
+ * Evaluates the matcher for argument <var>$item</var>.
28
+ *
29
+ * @param mixed $item the object against which the matcher is evaluated.
30
+ *
31
+ * @return boolean <code>true</code> if <var>$item</var> matches,
32
+ * otherwise <code>false</code>.
33
+ *
34
+ * @see Hamcrest\BaseMatcher
35
+ */
36
+ public function matches($item);
37
+
38
+ /**
39
+ * Generate a description of why the matcher has not accepted the item.
40
+ * The description will be part of a larger description of why a matching
41
+ * failed, so it should be concise.
42
+ * This method assumes that <code>matches($item)</code> is false, but
43
+ * will not check this.
44
+ *
45
+ * @param mixed $item The item that the Matcher has rejected.
46
+ * @param Description $description
47
+ * @return
48
+ */
49
+ public function describeMismatch($item, Description $description);
50
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/MatcherAssert.php ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ class MatcherAssert
9
+ {
10
+
11
+ /**
12
+ * Number of assertions performed.
13
+ *
14
+ * @var int
15
+ */
16
+ private static $_count = 0;
17
+
18
+ /**
19
+ * Make an assertion and throw {@link Hamcrest\AssertionError} if it fails.
20
+ *
21
+ * The first parameter may optionally be a string identifying the assertion
22
+ * to be included in the failure message.
23
+ *
24
+ * If the third parameter is not a matcher it is passed to
25
+ * {@link Hamcrest\Core\IsEqual#equalTo} to create one.
26
+ *
27
+ * Example:
28
+ * <pre>
29
+ * // With an identifier
30
+ * assertThat("apple flavour", $apple->flavour(), equalTo("tasty"));
31
+ * // Without an identifier
32
+ * assertThat($apple->flavour(), equalTo("tasty"));
33
+ * // Evaluating a boolean expression
34
+ * assertThat("some error", $a > $b);
35
+ * assertThat($a > $b);
36
+ * </pre>
37
+ */
38
+ public static function assertThat(/* $args ... */)
39
+ {
40
+ $args = func_get_args();
41
+ switch (count($args)) {
42
+ case 1:
43
+ self::$_count++;
44
+ if (!$args[0]) {
45
+ throw new AssertionError();
46
+ }
47
+ break;
48
+
49
+ case 2:
50
+ self::$_count++;
51
+ if ($args[1] instanceof Matcher) {
52
+ self::doAssert('', $args[0], $args[1]);
53
+ } elseif (!$args[1]) {
54
+ throw new AssertionError($args[0]);
55
+ }
56
+ break;
57
+
58
+ case 3:
59
+ self::$_count++;
60
+ self::doAssert(
61
+ $args[0],
62
+ $args[1],
63
+ Util::wrapValueWithIsEqual($args[2])
64
+ );
65
+ break;
66
+
67
+ default:
68
+ throw new \InvalidArgumentException('assertThat() requires one to three arguments');
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Returns the number of assertions performed.
74
+ *
75
+ * @return int
76
+ */
77
+ public static function getCount()
78
+ {
79
+ return self::$_count;
80
+ }
81
+
82
+ /**
83
+ * Resets the number of assertions performed to zero.
84
+ */
85
+ public static function resetCount()
86
+ {
87
+ self::$_count = 0;
88
+ }
89
+
90
+ /**
91
+ * Performs the actual assertion logic.
92
+ *
93
+ * If <code>$matcher</code> doesn't match <code>$actual</code>,
94
+ * throws a {@link Hamcrest\AssertionError} with a description
95
+ * of the failure along with the optional <code>$identifier</code>.
96
+ *
97
+ * @param string $identifier added to the message upon failure
98
+ * @param mixed $actual value to compare against <code>$matcher</code>
99
+ * @param \Hamcrest\Matcher $matcher applied to <code>$actual</code>
100
+ * @throws AssertionError
101
+ */
102
+ private static function doAssert($identifier, $actual, Matcher $matcher)
103
+ {
104
+ if (!$matcher->matches($actual)) {
105
+ $description = new StringDescription();
106
+ if (!empty($identifier)) {
107
+ $description->appendText($identifier . PHP_EOL);
108
+ }
109
+ $description->appendText('Expected: ')
110
+ ->appendDescriptionOf($matcher)
111
+ ->appendText(PHP_EOL . ' but: ');
112
+
113
+ $matcher->describeMismatch($actual, $description);
114
+
115
+ throw new AssertionError((string) $description);
116
+ }
117
+ }
118
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Matchers.php ADDED
@@ -0,0 +1,713 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ namespace Hamcrest;
10
+
11
+ /**
12
+ * A series of static factories for all hamcrest matchers.
13
+ */
14
+ class Matchers
15
+ {
16
+
17
+ /**
18
+ * Evaluates to true only if each $matcher[$i] is satisfied by $array[$i].
19
+ */
20
+ public static function anArray(/* args... */)
21
+ {
22
+ $args = func_get_args();
23
+ return call_user_func_array(array('\Hamcrest\Arrays\IsArray', 'anArray'), $args);
24
+ }
25
+
26
+ /**
27
+ * Evaluates to true if any item in an array satisfies the given matcher.
28
+ *
29
+ * @param mixed $item as a {@link Hamcrest\Matcher} or a value.
30
+ *
31
+ * @return \Hamcrest\Arrays\IsArrayContaining
32
+ */
33
+ public static function hasItemInArray($item)
34
+ {
35
+ return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
36
+ }
37
+
38
+ /**
39
+ * Evaluates to true if any item in an array satisfies the given matcher.
40
+ *
41
+ * @param mixed $item as a {@link Hamcrest\Matcher} or a value.
42
+ *
43
+ * @return \Hamcrest\Arrays\IsArrayContaining
44
+ */
45
+ public static function hasValue($item)
46
+ {
47
+ return \Hamcrest\Arrays\IsArrayContaining::hasItemInArray($item);
48
+ }
49
+
50
+ /**
51
+ * An array with elements that match the given matchers.
52
+ */
53
+ public static function arrayContainingInAnyOrder(/* args... */)
54
+ {
55
+ $args = func_get_args();
56
+ return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
57
+ }
58
+
59
+ /**
60
+ * An array with elements that match the given matchers.
61
+ */
62
+ public static function containsInAnyOrder(/* args... */)
63
+ {
64
+ $args = func_get_args();
65
+ return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInAnyOrder', 'arrayContainingInAnyOrder'), $args);
66
+ }
67
+
68
+ /**
69
+ * An array with elements that match the given matchers in the same order.
70
+ */
71
+ public static function arrayContaining(/* args... */)
72
+ {
73
+ $args = func_get_args();
74
+ return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
75
+ }
76
+
77
+ /**
78
+ * An array with elements that match the given matchers in the same order.
79
+ */
80
+ public static function contains(/* args... */)
81
+ {
82
+ $args = func_get_args();
83
+ return call_user_func_array(array('\Hamcrest\Arrays\IsArrayContainingInOrder', 'arrayContaining'), $args);
84
+ }
85
+
86
+ /**
87
+ * Evaluates to true if any key in an array matches the given matcher.
88
+ *
89
+ * @param mixed $key as a {@link Hamcrest\Matcher} or a value.
90
+ *
91
+ * @return \Hamcrest\Arrays\IsArrayContainingKey
92
+ */
93
+ public static function hasKeyInArray($key)
94
+ {
95
+ return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
96
+ }
97
+
98
+ /**
99
+ * Evaluates to true if any key in an array matches the given matcher.
100
+ *
101
+ * @param mixed $key as a {@link Hamcrest\Matcher} or a value.
102
+ *
103
+ * @return \Hamcrest\Arrays\IsArrayContainingKey
104
+ */
105
+ public static function hasKey($key)
106
+ {
107
+ return \Hamcrest\Arrays\IsArrayContainingKey::hasKeyInArray($key);
108
+ }
109
+
110
+ /**
111
+ * Test if an array has both an key and value in parity with each other.
112
+ */
113
+ public static function hasKeyValuePair($key, $value)
114
+ {
115
+ return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
116
+ }
117
+
118
+ /**
119
+ * Test if an array has both an key and value in parity with each other.
120
+ */
121
+ public static function hasEntry($key, $value)
122
+ {
123
+ return \Hamcrest\Arrays\IsArrayContainingKeyValuePair::hasKeyValuePair($key, $value);
124
+ }
125
+
126
+ /**
127
+ * Does array size satisfy a given matcher?
128
+ *
129
+ * @param \Hamcrest\Matcher|int $size as a {@link Hamcrest\Matcher} or a value.
130
+ *
131
+ * @return \Hamcrest\Arrays\IsArrayWithSize
132
+ */
133
+ public static function arrayWithSize($size)
134
+ {
135
+ return \Hamcrest\Arrays\IsArrayWithSize::arrayWithSize($size);
136
+ }
137
+
138
+ /**
139
+ * Matches an empty array.
140
+ */
141
+ public static function emptyArray()
142
+ {
143
+ return \Hamcrest\Arrays\IsArrayWithSize::emptyArray();
144
+ }
145
+
146
+ /**
147
+ * Matches an empty array.
148
+ */
149
+ public static function nonEmptyArray()
150
+ {
151
+ return \Hamcrest\Arrays\IsArrayWithSize::nonEmptyArray();
152
+ }
153
+
154
+ /**
155
+ * Returns true if traversable is empty.
156
+ */
157
+ public static function emptyTraversable()
158
+ {
159
+ return \Hamcrest\Collection\IsEmptyTraversable::emptyTraversable();
160
+ }
161
+
162
+ /**
163
+ * Returns true if traversable is not empty.
164
+ */
165
+ public static function nonEmptyTraversable()
166
+ {
167
+ return \Hamcrest\Collection\IsEmptyTraversable::nonEmptyTraversable();
168
+ }
169
+
170
+ /**
171
+ * Does traversable size satisfy a given matcher?
172
+ */
173
+ public static function traversableWithSize($size)
174
+ {
175
+ return \Hamcrest\Collection\IsTraversableWithSize::traversableWithSize($size);
176
+ }
177
+
178
+ /**
179
+ * Evaluates to true only if ALL of the passed in matchers evaluate to true.
180
+ */
181
+ public static function allOf(/* args... */)
182
+ {
183
+ $args = func_get_args();
184
+ return call_user_func_array(array('\Hamcrest\Core\AllOf', 'allOf'), $args);
185
+ }
186
+
187
+ /**
188
+ * Evaluates to true if ANY of the passed in matchers evaluate to true.
189
+ */
190
+ public static function anyOf(/* args... */)
191
+ {
192
+ $args = func_get_args();
193
+ return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'anyOf'), $args);
194
+ }
195
+
196
+ /**
197
+ * Evaluates to false if ANY of the passed in matchers evaluate to true.
198
+ */
199
+ public static function noneOf(/* args... */)
200
+ {
201
+ $args = func_get_args();
202
+ return call_user_func_array(array('\Hamcrest\Core\AnyOf', 'noneOf'), $args);
203
+ }
204
+
205
+ /**
206
+ * This is useful for fluently combining matchers that must both pass.
207
+ * For example:
208
+ * <pre>
209
+ * assertThat($string, both(containsString("a"))->andAlso(containsString("b")));
210
+ * </pre>
211
+ */
212
+ public static function both(\Hamcrest\Matcher $matcher)
213
+ {
214
+ return \Hamcrest\Core\CombinableMatcher::both($matcher);
215
+ }
216
+
217
+ /**
218
+ * This is useful for fluently combining matchers where either may pass,
219
+ * for example:
220
+ * <pre>
221
+ * assertThat($string, either(containsString("a"))->orElse(containsString("b")));
222
+ * </pre>
223
+ */
224
+ public static function either(\Hamcrest\Matcher $matcher)
225
+ {
226
+ return \Hamcrest\Core\CombinableMatcher::either($matcher);
227
+ }
228
+
229
+ /**
230
+ * Wraps an existing matcher and overrides the description when it fails.
231
+ */
232
+ public static function describedAs(/* args... */)
233
+ {
234
+ $args = func_get_args();
235
+ return call_user_func_array(array('\Hamcrest\Core\DescribedAs', 'describedAs'), $args);
236
+ }
237
+
238
+ /**
239
+ * @param Matcher $itemMatcher
240
+ * A matcher to apply to every element in an array.
241
+ *
242
+ * @return \Hamcrest\Core\Every
243
+ * Evaluates to TRUE for a collection in which every item matches $itemMatcher
244
+ */
245
+ public static function everyItem(\Hamcrest\Matcher $itemMatcher)
246
+ {
247
+ return \Hamcrest\Core\Every::everyItem($itemMatcher);
248
+ }
249
+
250
+ /**
251
+ * Does array size satisfy a given matcher?
252
+ */
253
+ public static function hasToString($matcher)
254
+ {
255
+ return \Hamcrest\Core\HasToString::hasToString($matcher);
256
+ }
257
+
258
+ /**
259
+ * Decorates another Matcher, retaining the behavior but allowing tests
260
+ * to be slightly more expressive.
261
+ *
262
+ * For example: assertThat($cheese, equalTo($smelly))
263
+ * vs. assertThat($cheese, is(equalTo($smelly)))
264
+ */
265
+ public static function is($value)
266
+ {
267
+ return \Hamcrest\Core\Is::is($value);
268
+ }
269
+
270
+ /**
271
+ * This matcher always evaluates to true.
272
+ *
273
+ * @param string $description A meaningful string used when describing itself.
274
+ *
275
+ * @return \Hamcrest\Core\IsAnything
276
+ */
277
+ public static function anything($description = 'ANYTHING')
278
+ {
279
+ return \Hamcrest\Core\IsAnything::anything($description);
280
+ }
281
+
282
+ /**
283
+ * Test if the value is an array containing this matcher.
284
+ *
285
+ * Example:
286
+ * <pre>
287
+ * assertThat(array('a', 'b'), hasItem(equalTo('b')));
288
+ * //Convenience defaults to equalTo()
289
+ * assertThat(array('a', 'b'), hasItem('b'));
290
+ * </pre>
291
+ */
292
+ public static function hasItem(/* args... */)
293
+ {
294
+ $args = func_get_args();
295
+ return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItem'), $args);
296
+ }
297
+
298
+ /**
299
+ * Test if the value is an array containing elements that match all of these
300
+ * matchers.
301
+ *
302
+ * Example:
303
+ * <pre>
304
+ * assertThat(array('a', 'b', 'c'), hasItems(equalTo('a'), equalTo('b')));
305
+ * </pre>
306
+ */
307
+ public static function hasItems(/* args... */)
308
+ {
309
+ $args = func_get_args();
310
+ return call_user_func_array(array('\Hamcrest\Core\IsCollectionContaining', 'hasItems'), $args);
311
+ }
312
+
313
+ /**
314
+ * Is the value equal to another value, as tested by the use of the "=="
315
+ * comparison operator?
316
+ */
317
+ public static function equalTo($item)
318
+ {
319
+ return \Hamcrest\Core\IsEqual::equalTo($item);
320
+ }
321
+
322
+ /**
323
+ * Tests of the value is identical to $value as tested by the "===" operator.
324
+ */
325
+ public static function identicalTo($value)
326
+ {
327
+ return \Hamcrest\Core\IsIdentical::identicalTo($value);
328
+ }
329
+
330
+ /**
331
+ * Is the value an instance of a particular type?
332
+ * This version assumes no relationship between the required type and
333
+ * the signature of the method that sets it up, for example in
334
+ * <code>assertThat($anObject, anInstanceOf('Thing'));</code>
335
+ */
336
+ public static function anInstanceOf($theClass)
337
+ {
338
+ return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
339
+ }
340
+
341
+ /**
342
+ * Is the value an instance of a particular type?
343
+ * This version assumes no relationship between the required type and
344
+ * the signature of the method that sets it up, for example in
345
+ * <code>assertThat($anObject, anInstanceOf('Thing'));</code>
346
+ */
347
+ public static function any($theClass)
348
+ {
349
+ return \Hamcrest\Core\IsInstanceOf::anInstanceOf($theClass);
350
+ }
351
+
352
+ /**
353
+ * Matches if value does not match $value.
354
+ */
355
+ public static function not($value)
356
+ {
357
+ return \Hamcrest\Core\IsNot::not($value);
358
+ }
359
+
360
+ /**
361
+ * Matches if value is null.
362
+ */
363
+ public static function nullValue()
364
+ {
365
+ return \Hamcrest\Core\IsNull::nullValue();
366
+ }
367
+
368
+ /**
369
+ * Matches if value is not null.
370
+ */
371
+ public static function notNullValue()
372
+ {
373
+ return \Hamcrest\Core\IsNull::notNullValue();
374
+ }
375
+
376
+ /**
377
+ * Creates a new instance of IsSame.
378
+ *
379
+ * @param mixed $object
380
+ * The predicate evaluates to true only when the argument is
381
+ * this object.
382
+ *
383
+ * @return \Hamcrest\Core\IsSame
384
+ */
385
+ public static function sameInstance($object)
386
+ {
387
+ return \Hamcrest\Core\IsSame::sameInstance($object);
388
+ }
389
+
390
+ /**
391
+ * Is the value a particular built-in type?
392
+ */
393
+ public static function typeOf($theType)
394
+ {
395
+ return \Hamcrest\Core\IsTypeOf::typeOf($theType);
396
+ }
397
+
398
+ /**
399
+ * Matches if value (class, object, or array) has named $property.
400
+ */
401
+ public static function set($property)
402
+ {
403
+ return \Hamcrest\Core\Set::set($property);
404
+ }
405
+
406
+ /**
407
+ * Matches if value (class, object, or array) does not have named $property.
408
+ */
409
+ public static function notSet($property)
410
+ {
411
+ return \Hamcrest\Core\Set::notSet($property);
412
+ }
413
+
414
+ /**
415
+ * Matches if value is a number equal to $value within some range of
416
+ * acceptable error $delta.
417
+ */
418
+ public static function closeTo($value, $delta)
419
+ {
420
+ return \Hamcrest\Number\IsCloseTo::closeTo($value, $delta);
421
+ }
422
+
423
+ /**
424
+ * The value is not > $value, nor < $value.
425
+ */
426
+ public static function comparesEqualTo($value)
427
+ {
428
+ return \Hamcrest\Number\OrderingComparison::comparesEqualTo($value);
429
+ }
430
+
431
+ /**
432
+ * The value is > $value.
433
+ */
434
+ public static function greaterThan($value)
435
+ {
436
+ return \Hamcrest\Number\OrderingComparison::greaterThan($value);
437
+ }
438
+
439
+ /**
440
+ * The value is >= $value.
441
+ */
442
+ public static function greaterThanOrEqualTo($value)
443
+ {
444
+ return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
445
+ }
446
+
447
+ /**
448
+ * The value is >= $value.
449
+ */
450
+ public static function atLeast($value)
451
+ {
452
+ return \Hamcrest\Number\OrderingComparison::greaterThanOrEqualTo($value);
453
+ }
454
+
455
+ /**
456
+ * The value is < $value.
457
+ */
458
+ public static function lessThan($value)
459
+ {
460
+ return \Hamcrest\Number\OrderingComparison::lessThan($value);
461
+ }
462
+
463
+ /**
464
+ * The value is <= $value.
465
+ */
466
+ public static function lessThanOrEqualTo($value)
467
+ {
468
+ return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
469
+ }
470
+
471
+ /**
472
+ * The value is <= $value.
473
+ */
474
+ public static function atMost($value)
475
+ {
476
+ return \Hamcrest\Number\OrderingComparison::lessThanOrEqualTo($value);
477
+ }
478
+
479
+ /**
480
+ * Matches if value is a zero-length string.
481
+ */
482
+ public static function isEmptyString()
483
+ {
484
+ return \Hamcrest\Text\IsEmptyString::isEmptyString();
485
+ }
486
+
487
+ /**
488
+ * Matches if value is a zero-length string.
489
+ */
490
+ public static function emptyString()
491
+ {
492
+ return \Hamcrest\Text\IsEmptyString::isEmptyString();
493
+ }
494
+
495
+ /**
496
+ * Matches if value is null or a zero-length string.
497
+ */
498
+ public static function isEmptyOrNullString()
499
+ {
500
+ return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
501
+ }
502
+
503
+ /**
504
+ * Matches if value is null or a zero-length string.
505
+ */
506
+ public static function nullOrEmptyString()
507
+ {
508
+ return \Hamcrest\Text\IsEmptyString::isEmptyOrNullString();
509
+ }
510
+
511
+ /**
512
+ * Matches if value is a non-zero-length string.
513
+ */
514
+ public static function isNonEmptyString()
515
+ {
516
+ return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
517
+ }
518
+
519
+ /**
520
+ * Matches if value is a non-zero-length string.
521
+ */
522
+ public static function nonEmptyString()
523
+ {
524
+ return \Hamcrest\Text\IsEmptyString::isNonEmptyString();
525
+ }
526
+
527
+ /**
528
+ * Matches if value is a string equal to $string, regardless of the case.
529
+ */
530
+ public static function equalToIgnoringCase($string)
531
+ {
532
+ return \Hamcrest\Text\IsEqualIgnoringCase::equalToIgnoringCase($string);
533
+ }
534
+
535
+ /**
536
+ * Matches if value is a string equal to $string, regardless of whitespace.
537
+ */
538
+ public static function equalToIgnoringWhiteSpace($string)
539
+ {
540
+ return \Hamcrest\Text\IsEqualIgnoringWhiteSpace::equalToIgnoringWhiteSpace($string);
541
+ }
542
+
543
+ /**
544
+ * Matches if value is a string that matches regular expression $pattern.
545
+ */
546
+ public static function matchesPattern($pattern)
547
+ {
548
+ return \Hamcrest\Text\MatchesPattern::matchesPattern($pattern);
549
+ }
550
+
551
+ /**
552
+ * Matches if value is a string that contains $substring.
553
+ */
554
+ public static function containsString($substring)
555
+ {
556
+ return \Hamcrest\Text\StringContains::containsString($substring);
557
+ }
558
+
559
+ /**
560
+ * Matches if value is a string that contains $substring regardless of the case.
561
+ */
562
+ public static function containsStringIgnoringCase($substring)
563
+ {
564
+ return \Hamcrest\Text\StringContainsIgnoringCase::containsStringIgnoringCase($substring);
565
+ }
566
+
567
+ /**
568
+ * Matches if value contains $substrings in a constrained order.
569
+ */
570
+ public static function stringContainsInOrder(/* args... */)
571
+ {
572
+ $args = func_get_args();
573
+ return call_user_func_array(array('\Hamcrest\Text\StringContainsInOrder', 'stringContainsInOrder'), $args);
574
+ }
575
+
576
+ /**
577
+ * Matches if value is a string that ends with $substring.
578
+ */
579
+ public static function endsWith($substring)
580
+ {
581
+ return \Hamcrest\Text\StringEndsWith::endsWith($substring);
582
+ }
583
+
584
+ /**
585
+ * Matches if value is a string that starts with $substring.
586
+ */
587
+ public static function startsWith($substring)
588
+ {
589
+ return \Hamcrest\Text\StringStartsWith::startsWith($substring);
590
+ }
591
+
592
+ /**
593
+ * Is the value an array?
594
+ */
595
+ public static function arrayValue()
596
+ {
597
+ return \Hamcrest\Type\IsArray::arrayValue();
598
+ }
599
+
600
+ /**
601
+ * Is the value a boolean?
602
+ */
603
+ public static function booleanValue()
604
+ {
605
+ return \Hamcrest\Type\IsBoolean::booleanValue();
606
+ }
607
+
608
+ /**
609
+ * Is the value a boolean?
610
+ */
611
+ public static function boolValue()
612
+ {
613
+ return \Hamcrest\Type\IsBoolean::booleanValue();
614
+ }
615
+
616
+ /**
617
+ * Is the value callable?
618
+ */
619
+ public static function callableValue()
620
+ {
621
+ return \Hamcrest\Type\IsCallable::callableValue();
622
+ }
623
+
624
+ /**
625
+ * Is the value a float/double?
626
+ */
627
+ public static function doubleValue()
628
+ {
629
+ return \Hamcrest\Type\IsDouble::doubleValue();
630
+ }
631
+
632
+ /**
633
+ * Is the value a float/double?
634
+ */
635
+ public static function floatValue()
636
+ {
637
+ return \Hamcrest\Type\IsDouble::doubleValue();
638
+ }
639
+
640
+ /**
641
+ * Is the value an integer?
642
+ */
643
+ public static function integerValue()
644
+ {
645
+ return \Hamcrest\Type\IsInteger::integerValue();
646
+ }
647
+
648
+ /**
649
+ * Is the value an integer?
650
+ */
651
+ public static function intValue()
652
+ {
653
+ return \Hamcrest\Type\IsInteger::integerValue();
654
+ }
655
+
656
+ /**
657
+ * Is the value a numeric?
658
+ */
659
+ public static function numericValue()
660
+ {
661
+ return \Hamcrest\Type\IsNumeric::numericValue();
662
+ }
663
+
664
+ /**
665
+ * Is the value an object?
666
+ */
667
+ public static function objectValue()
668
+ {
669
+ return \Hamcrest\Type\IsObject::objectValue();
670
+ }
671
+
672
+ /**
673
+ * Is the value an object?
674
+ */
675
+ public static function anObject()
676
+ {
677
+ return \Hamcrest\Type\IsObject::objectValue();
678
+ }
679
+
680
+ /**
681
+ * Is the value a resource?
682
+ */
683
+ public static function resourceValue()
684
+ {
685
+ return \Hamcrest\Type\IsResource::resourceValue();
686
+ }
687
+
688
+ /**
689
+ * Is the value a scalar (boolean, integer, double, or string)?
690
+ */
691
+ public static function scalarValue()
692
+ {
693
+ return \Hamcrest\Type\IsScalar::scalarValue();
694
+ }
695
+
696
+ /**
697
+ * Is the value a string?
698
+ */
699
+ public static function stringValue()
700
+ {
701
+ return \Hamcrest\Type\IsString::stringValue();
702
+ }
703
+
704
+ /**
705
+ * Wraps <code>$matcher</code> with {@link Hamcrest\Core\IsEqual)
706
+ * if it's not a matcher and the XPath in <code>count()</code>
707
+ * if it's an integer.
708
+ */
709
+ public static function hasXPath($xpath, $matcher = null)
710
+ {
711
+ return \Hamcrest\Xml\HasXPath::hasXPath($xpath, $matcher);
712
+ }
713
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/NullDescription.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Null implementation of {@link Hamcrest\Description}.
10
+ */
11
+ class NullDescription implements Description
12
+ {
13
+
14
+ public function appendText($text)
15
+ {
16
+ return $this;
17
+ }
18
+
19
+ public function appendDescriptionOf(SelfDescribing $value)
20
+ {
21
+ return $this;
22
+ }
23
+
24
+ public function appendValue($value)
25
+ {
26
+ return $this;
27
+ }
28
+
29
+ public function appendValueList($start, $separator, $end, $values)
30
+ {
31
+ return $this;
32
+ }
33
+
34
+ public function appendList($start, $separator, $end, $values)
35
+ {
36
+ return $this;
37
+ }
38
+
39
+ public function __toString()
40
+ {
41
+ return '';
42
+ }
43
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/IsCloseTo.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Number;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+ use Hamcrest\Description;
8
+ use Hamcrest\TypeSafeMatcher;
9
+
10
+ /**
11
+ * Is the value a number equal to a value within some range of
12
+ * acceptable error?
13
+ */
14
+ class IsCloseTo extends TypeSafeMatcher
15
+ {
16
+
17
+ private $_value;
18
+ private $_delta;
19
+
20
+ public function __construct($value, $delta)
21
+ {
22
+ parent::__construct(self::TYPE_NUMERIC);
23
+
24
+ $this->_value = $value;
25
+ $this->_delta = $delta;
26
+ }
27
+
28
+ protected function matchesSafely($item)
29
+ {
30
+ return $this->_actualDelta($item) <= 0.0;
31
+ }
32
+
33
+ protected function describeMismatchSafely($item, Description $mismatchDescription)
34
+ {
35
+ $mismatchDescription->appendValue($item)
36
+ ->appendText(' differed by ')
37
+ ->appendValue($this->_actualDelta($item))
38
+ ;
39
+ }
40
+
41
+ public function describeTo(Description $description)
42
+ {
43
+ $description->appendText('a numeric value within ')
44
+ ->appendValue($this->_delta)
45
+ ->appendText(' of ')
46
+ ->appendValue($this->_value)
47
+ ;
48
+ }
49
+
50
+ /**
51
+ * Matches if value is a number equal to $value within some range of
52
+ * acceptable error $delta.
53
+ *
54
+ * @factory
55
+ */
56
+ public static function closeTo($value, $delta)
57
+ {
58
+ return new self($value, $delta);
59
+ }
60
+
61
+ // -- Private Methods
62
+
63
+ private function _actualDelta($item)
64
+ {
65
+ return (abs(($item - $this->_value)) - $this->_delta);
66
+ }
67
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Number/OrderingComparison.php ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Number;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ use Hamcrest\Description;
9
+ use Hamcrest\TypeSafeMatcher;
10
+
11
+ class OrderingComparison extends TypeSafeMatcher
12
+ {
13
+
14
+ private $_value;
15
+ private $_minCompare;
16
+ private $_maxCompare;
17
+
18
+ public function __construct($value, $minCompare, $maxCompare)
19
+ {
20
+ parent::__construct(self::TYPE_NUMERIC);
21
+
22
+ $this->_value = $value;
23
+ $this->_minCompare = $minCompare;
24
+ $this->_maxCompare = $maxCompare;
25
+ }
26
+
27
+ protected function matchesSafely($other)
28
+ {
29
+ $compare = $this->_compare($this->_value, $other);
30
+
31
+ return ($this->_minCompare <= $compare) && ($compare <= $this->_maxCompare);
32
+ }
33
+
34
+ protected function describeMismatchSafely($item, Description $mismatchDescription)
35
+ {
36
+ $mismatchDescription
37
+ ->appendValue($item)->appendText(' was ')
38
+ ->appendText($this->_comparison($this->_compare($this->_value, $item)))
39
+ ->appendText(' ')->appendValue($this->_value)
40
+ ;
41
+ }
42
+
43
+ public function describeTo(Description $description)
44
+ {
45
+ $description->appendText('a value ')
46
+ ->appendText($this->_comparison($this->_minCompare))
47
+ ;
48
+ if ($this->_minCompare != $this->_maxCompare) {
49
+ $description->appendText(' or ')
50
+ ->appendText($this->_comparison($this->_maxCompare))
51
+ ;
52
+ }
53
+ $description->appendText(' ')->appendValue($this->_value);
54
+ }
55
+
56
+ /**
57
+ * The value is not > $value, nor < $value.
58
+ *
59
+ * @factory
60
+ */
61
+ public static function comparesEqualTo($value)
62
+ {
63
+ return new self($value, 0, 0);
64
+ }
65
+
66
+ /**
67
+ * The value is > $value.
68
+ *
69
+ * @factory
70
+ */
71
+ public static function greaterThan($value)
72
+ {
73
+ return new self($value, -1, -1);
74
+ }
75
+
76
+ /**
77
+ * The value is >= $value.
78
+ *
79
+ * @factory atLeast
80
+ */
81
+ public static function greaterThanOrEqualTo($value)
82
+ {
83
+ return new self($value, -1, 0);
84
+ }
85
+
86
+ /**
87
+ * The value is < $value.
88
+ *
89
+ * @factory
90
+ */
91
+ public static function lessThan($value)
92
+ {
93
+ return new self($value, 1, 1);
94
+ }
95
+
96
+ /**
97
+ * The value is <= $value.
98
+ *
99
+ * @factory atMost
100
+ */
101
+ public static function lessThanOrEqualTo($value)
102
+ {
103
+ return new self($value, 0, 1);
104
+ }
105
+
106
+ // -- Private Methods
107
+
108
+ private function _compare($left, $right)
109
+ {
110
+ $a = $left;
111
+ $b = $right;
112
+
113
+ if ($a < $b) {
114
+ return -1;
115
+ } elseif ($a == $b) {
116
+ return 0;
117
+ } else {
118
+ return 1;
119
+ }
120
+ }
121
+
122
+ private function _comparison($compare)
123
+ {
124
+ if ($compare > 0) {
125
+ return 'less than';
126
+ } elseif ($compare == 0) {
127
+ return 'equal to';
128
+ } else {
129
+ return 'greater than';
130
+ }
131
+ }
132
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/SelfDescribing.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * The ability of an object to describe itself.
10
+ */
11
+ interface SelfDescribing
12
+ {
13
+
14
+ /**
15
+ * Generates a description of the object. The description may be part
16
+ * of a description of a larger object of which this is just a component,
17
+ * so it should be worded appropriately.
18
+ *
19
+ * @param \Hamcrest\Description $description
20
+ * The description to be built or appended to.
21
+ */
22
+ public function describeTo(Description $description);
23
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/StringDescription.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * A {@link Hamcrest\Description} that is stored as a string.
10
+ */
11
+ class StringDescription extends BaseDescription
12
+ {
13
+
14
+ private $_out;
15
+
16
+ public function __construct($out = '')
17
+ {
18
+ $this->_out = (string) $out;
19
+ }
20
+
21
+ public function __toString()
22
+ {
23
+ return $this->_out;
24
+ }
25
+
26
+ /**
27
+ * Return the description of a {@link Hamcrest\SelfDescribing} object as a
28
+ * String.
29
+ *
30
+ * @param \Hamcrest\SelfDescribing $selfDescribing
31
+ * The object to be described.
32
+ *
33
+ * @return string
34
+ * The description of the object.
35
+ */
36
+ public static function toString(SelfDescribing $selfDescribing)
37
+ {
38
+ $self = new self();
39
+
40
+ return (string) $self->appendDescriptionOf($selfDescribing);
41
+ }
42
+
43
+ /**
44
+ * Alias for {@link toString()}.
45
+ */
46
+ public static function asString(SelfDescribing $selfDescribing)
47
+ {
48
+ return self::toString($selfDescribing);
49
+ }
50
+
51
+ // -- Protected Methods
52
+
53
+ protected function append($str)
54
+ {
55
+ $this->_out .= $str;
56
+ }
57
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEmptyString.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+ use Hamcrest\BaseMatcher;
8
+ use Hamcrest\Core\AnyOf;
9
+ use Hamcrest\Core\IsNull;
10
+ use Hamcrest\Description;
11
+
12
+ /**
13
+ * Matches empty Strings (and null).
14
+ */
15
+ class IsEmptyString extends BaseMatcher
16
+ {
17
+
18
+ private static $_INSTANCE;
19
+ private static $_NULL_OR_EMPTY_INSTANCE;
20
+ private static $_NOT_INSTANCE;
21
+
22
+ private $_empty;
23
+
24
+ public function __construct($empty = true)
25
+ {
26
+ $this->_empty = $empty;
27
+ }
28
+
29
+ public function matches($item)
30
+ {
31
+ return $this->_empty
32
+ ? ($item === '')
33
+ : is_string($item) && $item !== '';
34
+ }
35
+
36
+ public function describeTo(Description $description)
37
+ {
38
+ $description->appendText($this->_empty ? 'an empty string' : 'a non-empty string');
39
+ }
40
+
41
+ /**
42
+ * Matches if value is a zero-length string.
43
+ *
44
+ * @factory emptyString
45
+ */
46
+ public static function isEmptyString()
47
+ {
48
+ if (!self::$_INSTANCE) {
49
+ self::$_INSTANCE = new self(true);
50
+ }
51
+
52
+ return self::$_INSTANCE;
53
+ }
54
+
55
+ /**
56
+ * Matches if value is null or a zero-length string.
57
+ *
58
+ * @factory nullOrEmptyString
59
+ */
60
+ public static function isEmptyOrNullString()
61
+ {
62
+ if (!self::$_NULL_OR_EMPTY_INSTANCE) {
63
+ self::$_NULL_OR_EMPTY_INSTANCE = AnyOf::anyOf(
64
+ IsNull::nullvalue(),
65
+ self::isEmptyString()
66
+ );
67
+ }
68
+
69
+ return self::$_NULL_OR_EMPTY_INSTANCE;
70
+ }
71
+
72
+ /**
73
+ * Matches if value is a non-zero-length string.
74
+ *
75
+ * @factory nonEmptyString
76
+ */
77
+ public static function isNonEmptyString()
78
+ {
79
+ if (!self::$_NOT_INSTANCE) {
80
+ self::$_NOT_INSTANCE = new self(false);
81
+ }
82
+
83
+ return self::$_NOT_INSTANCE;
84
+ }
85
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringCase.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+ use Hamcrest\Description;
8
+ use Hamcrest\TypeSafeMatcher;
9
+
10
+ /**
11
+ * Tests if a string is equal to another string, regardless of the case.
12
+ */
13
+ class IsEqualIgnoringCase extends TypeSafeMatcher
14
+ {
15
+
16
+ private $_string;
17
+
18
+ public function __construct($string)
19
+ {
20
+ parent::__construct(self::TYPE_STRING);
21
+
22
+ $this->_string = $string;
23
+ }
24
+
25
+ protected function matchesSafely($item)
26
+ {
27
+ return strtolower($this->_string) === strtolower($item);
28
+ }
29
+
30
+ protected function describeMismatchSafely($item, Description $mismatchDescription)
31
+ {
32
+ $mismatchDescription->appendText('was ')->appendText($item);
33
+ }
34
+
35
+ public function describeTo(Description $description)
36
+ {
37
+ $description->appendText('equalToIgnoringCase(')
38
+ ->appendValue($this->_string)
39
+ ->appendText(')')
40
+ ;
41
+ }
42
+
43
+ /**
44
+ * Matches if value is a string equal to $string, regardless of the case.
45
+ *
46
+ * @factory
47
+ */
48
+ public static function equalToIgnoringCase($string)
49
+ {
50
+ return new self($string);
51
+ }
52
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/IsEqualIgnoringWhiteSpace.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+ use Hamcrest\Description;
8
+ use Hamcrest\TypeSafeMatcher;
9
+
10
+ /**
11
+ * Tests if a string is equal to another string, ignoring any changes in
12
+ * whitespace.
13
+ */
14
+ class IsEqualIgnoringWhiteSpace extends TypeSafeMatcher
15
+ {
16
+
17
+ private $_string;
18
+
19
+ public function __construct($string)
20
+ {
21
+ parent::__construct(self::TYPE_STRING);
22
+
23
+ $this->_string = $string;
24
+ }
25
+
26
+ protected function matchesSafely($item)
27
+ {
28
+ return (strtolower($this->_stripSpace($item))
29
+ === strtolower($this->_stripSpace($this->_string)));
30
+ }
31
+
32
+ protected function describeMismatchSafely($item, Description $mismatchDescription)
33
+ {
34
+ $mismatchDescription->appendText('was ')->appendText($item);
35
+ }
36
+
37
+ public function describeTo(Description $description)
38
+ {
39
+ $description->appendText('equalToIgnoringWhiteSpace(')
40
+ ->appendValue($this->_string)
41
+ ->appendText(')')
42
+ ;
43
+ }
44
+
45
+ /**
46
+ * Matches if value is a string equal to $string, regardless of whitespace.
47
+ *
48
+ * @factory
49
+ */
50
+ public static function equalToIgnoringWhiteSpace($string)
51
+ {
52
+ return new self($string);
53
+ }
54
+
55
+ // -- Private Methods
56
+
57
+ private function _stripSpace($string)
58
+ {
59
+ $parts = preg_split("/[\r\n\t ]+/", $string);
60
+ foreach ($parts as $i => $part) {
61
+ $parts[$i] = trim($part, " \r\n\t");
62
+ }
63
+
64
+ return trim(implode(' ', $parts), " \r\n\t");
65
+ }
66
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/MatchesPattern.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Tests if the argument is a string that matches a regular expression.
10
+ */
11
+ class MatchesPattern extends SubstringMatcher
12
+ {
13
+
14
+ public function __construct($pattern)
15
+ {
16
+ parent::__construct($pattern);
17
+ }
18
+
19
+ /**
20
+ * Matches if value is a string that matches regular expression $pattern.
21
+ *
22
+ * @factory
23
+ */
24
+ public static function matchesPattern($pattern)
25
+ {
26
+ return new self($pattern);
27
+ }
28
+
29
+ // -- Protected Methods
30
+
31
+ protected function evalSubstringOf($item)
32
+ {
33
+ return preg_match($this->_substring, (string) $item) >= 1;
34
+ }
35
+
36
+ protected function relationship()
37
+ {
38
+ return 'matching';
39
+ }
40
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContains.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Tests if the argument is a string that contains a substring.
10
+ */
11
+ class StringContains extends SubstringMatcher
12
+ {
13
+
14
+ public function __construct($substring)
15
+ {
16
+ parent::__construct($substring);
17
+ }
18
+
19
+ public function ignoringCase()
20
+ {
21
+ return new StringContainsIgnoringCase($this->_substring);
22
+ }
23
+
24
+ /**
25
+ * Matches if value is a string that contains $substring.
26
+ *
27
+ * @factory
28
+ */
29
+ public static function containsString($substring)
30
+ {
31
+ return new self($substring);
32
+ }
33
+
34
+ // -- Protected Methods
35
+
36
+ protected function evalSubstringOf($item)
37
+ {
38
+ return (false !== strpos((string) $item, $this->_substring));
39
+ }
40
+
41
+ protected function relationship()
42
+ {
43
+ return 'containing';
44
+ }
45
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsIgnoringCase.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Tests if the argument is a string that contains a substring ignoring case.
10
+ */
11
+ class StringContainsIgnoringCase extends SubstringMatcher
12
+ {
13
+
14
+ public function __construct($substring)
15
+ {
16
+ parent::__construct($substring);
17
+ }
18
+
19
+ /**
20
+ * Matches if value is a string that contains $substring regardless of the case.
21
+ *
22
+ * @factory
23
+ */
24
+ public static function containsStringIgnoringCase($substring)
25
+ {
26
+ return new self($substring);
27
+ }
28
+
29
+ // -- Protected Methods
30
+
31
+ protected function evalSubstringOf($item)
32
+ {
33
+ return (false !== stripos((string) $item, $this->_substring));
34
+ }
35
+
36
+ protected function relationship()
37
+ {
38
+ return 'containing in any case';
39
+ }
40
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringContainsInOrder.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+ use Hamcrest\Description;
8
+ use Hamcrest\TypeSafeMatcher;
9
+
10
+ /**
11
+ * Tests if the value contains a series of substrings in a constrained order.
12
+ */
13
+ class StringContainsInOrder extends TypeSafeMatcher
14
+ {
15
+
16
+ private $_substrings;
17
+
18
+ public function __construct(array $substrings)
19
+ {
20
+ parent::__construct(self::TYPE_STRING);
21
+
22
+ $this->_substrings = $substrings;
23
+ }
24
+
25
+ protected function matchesSafely($item)
26
+ {
27
+ $fromIndex = 0;
28
+
29
+ foreach ($this->_substrings as $substring) {
30
+ if (false === $fromIndex = strpos($item, $substring, $fromIndex)) {
31
+ return false;
32
+ }
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ protected function describeMismatchSafely($item, Description $mismatchDescription)
39
+ {
40
+ $mismatchDescription->appendText('was ')->appendText($item);
41
+ }
42
+
43
+ public function describeTo(Description $description)
44
+ {
45
+ $description->appendText('a string containing ')
46
+ ->appendValueList('', ', ', '', $this->_substrings)
47
+ ->appendText(' in order')
48
+ ;
49
+ }
50
+
51
+ /**
52
+ * Matches if value contains $substrings in a constrained order.
53
+ *
54
+ * @factory ...
55
+ */
56
+ public static function stringContainsInOrder(/* args... */)
57
+ {
58
+ $args = func_get_args();
59
+
60
+ if (isset($args[0]) && is_array($args[0])) {
61
+ $args = $args[0];
62
+ }
63
+
64
+ return new self($args);
65
+ }
66
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringEndsWith.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Tests if the argument is a string that ends with a substring.
10
+ */
11
+ class StringEndsWith extends SubstringMatcher
12
+ {
13
+
14
+ public function __construct($substring)
15
+ {
16
+ parent::__construct($substring);
17
+ }
18
+
19
+ /**
20
+ * Matches if value is a string that ends with $substring.
21
+ *
22
+ * @factory
23
+ */
24
+ public static function endsWith($substring)
25
+ {
26
+ return new self($substring);
27
+ }
28
+
29
+ // -- Protected Methods
30
+
31
+ protected function evalSubstringOf($string)
32
+ {
33
+ return (substr($string, (-1 * strlen($this->_substring))) === $this->_substring);
34
+ }
35
+
36
+ protected function relationship()
37
+ {
38
+ return 'ending with';
39
+ }
40
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/StringStartsWith.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Tests if the argument is a string that contains a substring.
10
+ */
11
+ class StringStartsWith extends SubstringMatcher
12
+ {
13
+
14
+ public function __construct($substring)
15
+ {
16
+ parent::__construct($substring);
17
+ }
18
+
19
+ /**
20
+ * Matches if value is a string that starts with $substring.
21
+ *
22
+ * @factory
23
+ */
24
+ public static function startsWith($substring)
25
+ {
26
+ return new self($substring);
27
+ }
28
+
29
+ // -- Protected Methods
30
+
31
+ protected function evalSubstringOf($string)
32
+ {
33
+ return (substr($string, 0, strlen($this->_substring)) === $this->_substring);
34
+ }
35
+
36
+ protected function relationship()
37
+ {
38
+ return 'starting with';
39
+ }
40
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Text/SubstringMatcher.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Text;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+
8
+ use Hamcrest\Description;
9
+ use Hamcrest\TypeSafeMatcher;
10
+
11
+ abstract class SubstringMatcher extends TypeSafeMatcher
12
+ {
13
+
14
+ protected $_substring;
15
+
16
+ public function __construct($substring)
17
+ {
18
+ parent::__construct(self::TYPE_STRING);
19
+
20
+ $this->_substring = $substring;
21
+ }
22
+
23
+ protected function matchesSafely($item)
24
+ {
25
+ return $this->evalSubstringOf($item);
26
+ }
27
+
28
+ protected function describeMismatchSafely($item, Description $mismatchDescription)
29
+ {
30
+ $mismatchDescription->appendText('was "')->appendText($item)->appendText('"');
31
+ }
32
+
33
+ public function describeTo(Description $description)
34
+ {
35
+ $description->appendText('a string ')
36
+ ->appendText($this->relationship())
37
+ ->appendText(' ')
38
+ ->appendValue($this->_substring)
39
+ ;
40
+ }
41
+
42
+ abstract protected function evalSubstringOf($string);
43
+
44
+ abstract protected function relationship();
45
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsArray.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is an array.
11
+ */
12
+ class IsArray extends IsTypeOf
13
+ {
14
+
15
+ /**
16
+ * Creates a new instance of IsArray
17
+ */
18
+ public function __construct()
19
+ {
20
+ parent::__construct('array');
21
+ }
22
+
23
+ /**
24
+ * Is the value an array?
25
+ *
26
+ * @factory
27
+ */
28
+ public static function arrayValue()
29
+ {
30
+ return new self;
31
+ }
32
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsBoolean.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is a boolean.
11
+ */
12
+ class IsBoolean extends IsTypeOf
13
+ {
14
+
15
+ /**
16
+ * Creates a new instance of IsBoolean
17
+ */
18
+ public function __construct()
19
+ {
20
+ parent::__construct('boolean');
21
+ }
22
+
23
+ /**
24
+ * Is the value a boolean?
25
+ *
26
+ * @factory boolValue
27
+ */
28
+ public static function booleanValue()
29
+ {
30
+ return new self;
31
+ }
32
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsCallable.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is callable.
11
+ */
12
+ class IsCallable extends IsTypeOf
13
+ {
14
+
15
+ /**
16
+ * Creates a new instance of IsCallable
17
+ */
18
+ public function __construct()
19
+ {
20
+ parent::__construct('callable');
21
+ }
22
+
23
+ public function matches($item)
24
+ {
25
+ return is_callable($item);
26
+ }
27
+
28
+ /**
29
+ * Is the value callable?
30
+ *
31
+ * @factory
32
+ */
33
+ public static function callableValue()
34
+ {
35
+ return new self;
36
+ }
37
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsDouble.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is a float/double.
11
+ *
12
+ * PHP returns "double" for values of type "float".
13
+ */
14
+ class IsDouble extends IsTypeOf
15
+ {
16
+
17
+ /**
18
+ * Creates a new instance of IsDouble
19
+ */
20
+ public function __construct()
21
+ {
22
+ parent::__construct('double');
23
+ }
24
+
25
+ /**
26
+ * Is the value a float/double?
27
+ *
28
+ * @factory floatValue
29
+ */
30
+ public static function doubleValue()
31
+ {
32
+ return new self;
33
+ }
34
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsInteger.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is an integer.
11
+ */
12
+ class IsInteger extends IsTypeOf
13
+ {
14
+
15
+ /**
16
+ * Creates a new instance of IsInteger
17
+ */
18
+ public function __construct()
19
+ {
20
+ parent::__construct('integer');
21
+ }
22
+
23
+ /**
24
+ * Is the value an integer?
25
+ *
26
+ * @factory intValue
27
+ */
28
+ public static function integerValue()
29
+ {
30
+ return new self;
31
+ }
32
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsNumeric.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is numeric.
11
+ */
12
+ class IsNumeric extends IsTypeOf
13
+ {
14
+
15
+ public function __construct()
16
+ {
17
+ parent::__construct('number');
18
+ }
19
+
20
+ public function matches($item)
21
+ {
22
+ if ($this->isHexadecimal($item)) {
23
+ return true;
24
+ }
25
+
26
+ return is_numeric($item);
27
+ }
28
+
29
+ /**
30
+ * Return if the string passed is a valid hexadecimal number.
31
+ * This check is necessary because PHP 7 doesn't recognize hexadecimal string as numeric anymore.
32
+ *
33
+ * @param mixed $item
34
+ * @return boolean
35
+ */
36
+ private function isHexadecimal($item)
37
+ {
38
+ if (is_string($item) && preg_match('/^0x(.*)$/', $item, $matches)) {
39
+ return ctype_xdigit($matches[1]);
40
+ }
41
+
42
+ return false;
43
+ }
44
+
45
+ /**
46
+ * Is the value a numeric?
47
+ *
48
+ * @factory
49
+ */
50
+ public static function numericValue()
51
+ {
52
+ return new self;
53
+ }
54
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsObject.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is an object.
11
+ */
12
+ class IsObject extends IsTypeOf
13
+ {
14
+
15
+ /**
16
+ * Creates a new instance of IsObject
17
+ */
18
+ public function __construct()
19
+ {
20
+ parent::__construct('object');
21
+ }
22
+
23
+ /**
24
+ * Is the value an object?
25
+ *
26
+ * @factory anObject
27
+ */
28
+ public static function objectValue()
29
+ {
30
+ return new self;
31
+ }
32
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsResource.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is a resource.
11
+ */
12
+ class IsResource extends IsTypeOf
13
+ {
14
+
15
+ /**
16
+ * Creates a new instance of IsResource
17
+ */
18
+ public function __construct()
19
+ {
20
+ parent::__construct('resource');
21
+ }
22
+
23
+ /**
24
+ * Is the value a resource?
25
+ *
26
+ * @factory
27
+ */
28
+ public static function resourceValue()
29
+ {
30
+ return new self;
31
+ }
32
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsScalar.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is a scalar (boolean, integer, double, or string).
11
+ */
12
+ class IsScalar extends IsTypeOf
13
+ {
14
+
15
+ public function __construct()
16
+ {
17
+ parent::__construct('scalar');
18
+ }
19
+
20
+ public function matches($item)
21
+ {
22
+ return is_scalar($item);
23
+ }
24
+
25
+ /**
26
+ * Is the value a scalar (boolean, integer, double, or string)?
27
+ *
28
+ * @factory
29
+ */
30
+ public static function scalarValue()
31
+ {
32
+ return new self;
33
+ }
34
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Type/IsString.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Type;
3
+
4
+ /*
5
+ Copyright (c) 2010 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsTypeOf;
8
+
9
+ /**
10
+ * Tests whether the value is a string.
11
+ */
12
+ class IsString extends IsTypeOf
13
+ {
14
+
15
+ /**
16
+ * Creates a new instance of IsString
17
+ */
18
+ public function __construct()
19
+ {
20
+ parent::__construct('string');
21
+ }
22
+
23
+ /**
24
+ * Is the value a string?
25
+ *
26
+ * @factory
27
+ */
28
+ public static function stringValue()
29
+ {
30
+ return new self;
31
+ }
32
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeDiagnosingMatcher.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /**
5
+ * Convenient base class for Matchers that require a value of a specific type.
6
+ * This simply checks the type and then casts.
7
+ */
8
+
9
+ abstract class TypeSafeDiagnosingMatcher extends TypeSafeMatcher
10
+ {
11
+
12
+ final public function matchesSafely($item)
13
+ {
14
+ return $this->matchesSafelyWithDiagnosticDescription($item, new NullDescription());
15
+ }
16
+
17
+ final public function describeMismatchSafely($item, Description $mismatchDescription)
18
+ {
19
+ $this->matchesSafelyWithDiagnosticDescription($item, $mismatchDescription);
20
+ }
21
+
22
+ // -- Protected Methods
23
+
24
+ /**
25
+ * Subclasses should implement these. The item will already have been checked for
26
+ * the specific type.
27
+ */
28
+ abstract protected function matchesSafelyWithDiagnosticDescription($item, Description $mismatchDescription);
29
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/TypeSafeMatcher.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /**
5
+ * Convenient base class for Matchers that require a value of a specific type.
6
+ * This simply checks the type.
7
+ *
8
+ * While it may seem a useless exercise to have this in PHP, objects cannot
9
+ * be cast to certain data types such as numerics (or even strings if
10
+ * __toString() has not be defined).
11
+ */
12
+
13
+ abstract class TypeSafeMatcher extends BaseMatcher
14
+ {
15
+
16
+ /* Types that PHP can compare against */
17
+ const TYPE_ANY = 0;
18
+ const TYPE_STRING = 1;
19
+ const TYPE_NUMERIC = 2;
20
+ const TYPE_ARRAY = 3;
21
+ const TYPE_OBJECT = 4;
22
+ const TYPE_RESOURCE = 5;
23
+ const TYPE_BOOLEAN = 6;
24
+
25
+ /**
26
+ * The type that is required for a safe comparison
27
+ *
28
+ * @var int
29
+ */
30
+ private $_expectedType;
31
+
32
+ /**
33
+ * The subtype (e.g. class for objects) that is required
34
+ *
35
+ * @var string
36
+ */
37
+ private $_expectedSubtype;
38
+
39
+ public function __construct($expectedType, $expectedSubtype = null)
40
+ {
41
+ $this->_expectedType = $expectedType;
42
+ $this->_expectedSubtype = $expectedSubtype;
43
+ }
44
+
45
+ final public function matches($item)
46
+ {
47
+ return $this->_isSafeType($item) && $this->matchesSafely($item);
48
+ }
49
+
50
+ final public function describeMismatch($item, Description $mismatchDescription)
51
+ {
52
+ if (!$this->_isSafeType($item)) {
53
+ parent::describeMismatch($item, $mismatchDescription);
54
+ } else {
55
+ $this->describeMismatchSafely($item, $mismatchDescription);
56
+ }
57
+ }
58
+
59
+ // -- Protected Methods
60
+
61
+ /**
62
+ * The item will already have been checked for the specific type and subtype.
63
+ */
64
+ abstract protected function matchesSafely($item);
65
+
66
+ /**
67
+ * The item will already have been checked for the specific type and subtype.
68
+ */
69
+ abstract protected function describeMismatchSafely($item, Description $mismatchDescription);
70
+
71
+ // -- Private Methods
72
+
73
+ private function _isSafeType($value)
74
+ {
75
+ switch ($this->_expectedType) {
76
+
77
+ case self::TYPE_ANY:
78
+ return true;
79
+
80
+ case self::TYPE_STRING:
81
+ return is_string($value) || is_numeric($value);
82
+
83
+ case self::TYPE_NUMERIC:
84
+ return is_numeric($value) || is_string($value);
85
+
86
+ case self::TYPE_ARRAY:
87
+ return is_array($value);
88
+
89
+ case self::TYPE_OBJECT:
90
+ return is_object($value)
91
+ && ($this->_expectedSubtype === null
92
+ || $value instanceof $this->_expectedSubtype);
93
+
94
+ case self::TYPE_RESOURCE:
95
+ return is_resource($value)
96
+ && ($this->_expectedSubtype === null
97
+ || get_resource_type($value) == $this->_expectedSubtype);
98
+
99
+ case self::TYPE_BOOLEAN:
100
+ return true;
101
+
102
+ default:
103
+ return true;
104
+
105
+ }
106
+ }
107
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Util.php ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest;
3
+
4
+ /*
5
+ Copyright (c) 2012 hamcrest.org
6
+ */
7
+
8
+ /**
9
+ * Contains utility methods for handling Hamcrest matchers.
10
+ *
11
+ * @see Hamcrest\Matcher
12
+ */
13
+ class Util
14
+ {
15
+ public static function registerGlobalFunctions()
16
+ {
17
+ require_once __DIR__.'/../Hamcrest.php';
18
+ }
19
+
20
+ /**
21
+ * Wraps the item with an IsEqual matcher if it isn't a matcher already.
22
+ *
23
+ * @param mixed $item matcher or any value
24
+ * @return \Hamcrest\Matcher
25
+ */
26
+ public static function wrapValueWithIsEqual($item)
27
+ {
28
+ return ($item instanceof Matcher)
29
+ ? $item
30
+ : Core\IsEqual::equalTo($item)
31
+ ;
32
+ }
33
+
34
+ /**
35
+ * Throws an exception if any item in $matchers is not a Hamcrest\Matcher.
36
+ *
37
+ * @param array $matchers expected to contain only matchers
38
+ * @throws \InvalidArgumentException if any item is not a matcher
39
+ */
40
+ public static function checkAllAreMatchers(array $matchers)
41
+ {
42
+ foreach ($matchers as $m) {
43
+ if (!($m instanceof Matcher)) {
44
+ throw new \InvalidArgumentException(
45
+ 'Each argument or element must be a Hamcrest matcher'
46
+ );
47
+ }
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Returns a copy of $items where each non-Matcher item is replaced by
53
+ * a Hamcrest\Core\IsEqual matcher for the item. If the first and only item
54
+ * is an array, it is used as the $items array to support the old style
55
+ * of passing an array as the sole argument to a matcher.
56
+ *
57
+ * @param array $items contains items and matchers
58
+ * @return array<Matchers> all items are
59
+ */
60
+ public static function createMatcherArray(array $items)
61
+ {
62
+ //Extract single array item
63
+ if (count($items) == 1 && is_array($items[0])) {
64
+ $items = $items[0];
65
+ }
66
+
67
+ //Replace non-matchers
68
+ foreach ($items as &$item) {
69
+ if (!($item instanceof Matcher)) {
70
+ $item = Core\IsEqual::equalTo($item);
71
+ }
72
+ }
73
+
74
+ return $items;
75
+ }
76
+ }
vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest/Xml/HasXPath.php ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Hamcrest\Xml;
3
+
4
+ /*
5
+ Copyright (c) 2009 hamcrest.org
6
+ */
7
+ use Hamcrest\Core\IsEqual;
8
+ use Hamcrest\Description;
9
+ use Hamcrest\DiagnosingMatcher;
10
+ use Hamcrest\Matcher;
11
+
12
+ /**
13
+ * Matches if XPath applied to XML/HTML/XHTML document either
14
+ * evaluates to result matching the matcher or returns at least
15
+ * one node, matching the matcher if present.
16
+ */
17
+ class HasXPath extends DiagnosingMatcher
18
+ {
19
+
20
+ /**
21
+ * XPath to apply to the DOM.
22
+ *
23
+ * @var string
24
+ */
25
+ private $_xpath;
26
+
27
+ /**
28
+ * Optional matcher to apply to the XPath expression result
29
+ * or the content of the returned nodes.
30
+ *
31
+ * @var Matcher
32
+ */
33
+ private $_matcher;
34
+
35
+ public function __construct($xpath, Matcher $matcher = null)
36
+ {
37
+ $this->_xpath = $xpath;
38
+ $this->_matcher = $matcher;
39
+ }
40
+
41
+ /**
42
+ * Matches if the XPath matches against the DOM node and the matcher.
43
+ *
44
+ * @param string|\DOMNode $actual
45
+ * @param Description $mismatchDescription
46
+ * @return bool
47
+ */
48
+ protected function matchesWithDiagnosticDescription($actual, Description $mismatchDescription)
49
+ {
50
+ if (is_string($actual)) {
51
+ $actual = $this->createDocument($actual);
52
+ } elseif (!$actual instanceof \DOMNode) {
53
+ $mismatchDescription->appendText('was ')->appendValue($actual);
54
+
55
+ return false;
56
+ }
57
+ $result = $this->evaluate($actual);
58
+ if ($result instanceof \DOMNodeList) {
59
+ return $this->matchesContent($result, $mismatchDescription);
60
+ } else {
61
+ return $this->matchesExpression($result, $mismatchDescription);
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Creates and returns a <code>DOMDocument</code> from the given
67
+ * XML or HTML string.
68
+ *
69
+ * @param string $text
70
+ * @return \DOMDocument built from <code>$text</code>
71
+ * @throws \InvalidArgumentException if the document is not valid
72
+ */
73
+ protected function createDocument($text)
74
+ {
75
+ $document = new \DOMDocument();
76
+ if (preg_match('/^\s*<\?xml/', $text)) {
77
+ if (!@$document->loadXML($text)) {
78
+ throw new \InvalidArgumentException('Must pass a valid XML document');
79
+ }
80
+ } else {
81
+ if (!@$document->loadHTML($text)) {
82
+ throw new \InvalidArgumentException('Must pass a valid HTML or XHTML document');
83
+ }
84
+ }
85
+
86
+ return $document;
87
+ }
88
+
89
+ /**
90
+ * Applies the configured XPath to the DOM node and returns either
91
+ * the result if it's an expression or the node list if it's a query.
92
+ *
93
+ * @param \DOMNode $node context from which to issue query
94
+ * @return mixed result of expression or DOMNodeList from query
95
+ */
96
+ protected function evaluate(\DOMNode $node)
97
+ {
98
+ if ($node instanceof \DOMDocument) {
99
+ $xpathDocument = new \DOMXPath($node);
100
+
101
+ return $xpathDocument->evaluate($this->_xpath);
102
+ } else {
103
+ $xpathDocument = new \DOMXPath($node->ownerDocument);
104
+
105
+ return $xpathDocument->evaluate($this->_xpath, $node);
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Matches if the list of nodes is not empty and the content of at least
111
+ * one node matches the configured matcher, if supplied.
112
+ *
113
+ * @param \DOMNodeList $nodes selected by the XPath query
114
+ * @param Description $mismatchDescription
115
+ * @return bool
116
+ */
117
+ protected function matchesContent(\DOMNodeList $nodes, Description $mismatchDescription)
118
+ {
119
+ if ($nodes->length == 0) {
120
+ $mismatchDescription->appendText('XPath returned no results');
121
+ } elseif ($this->_matcher === null) {
122
+ return true;
123
+ } else {
124
+ foreach ($nodes as $node) {
125
+ if ($this->_matcher->matches($node->textContent)) {
126
+ return true;
127
+ }
128
+ }
129
+ $content = array();
130
+ foreach ($nodes as $node) {
131
+ $content[] = $node->textContent;
132
+ }
133
+ $mismatchDescription->appendText('XPath returned ')
134
+ ->appendValue($content);
135
+ }
136
+
137
+ return false;
138
+ }
139
+
140
+ /**
141
+ * Matches if the result of the XPath expression matches the configured
142
+ * matcher or evaluates to <code>true</code> if there is none.
143
+ *
144
+ * @param mixed $result result of the XPath expression
145
+ * @param Description $mismatchDescription
146
+ * @return bool
147
+ */
148
+ protected function matchesExpression($result, Description $mismatchDescription)
149
+ {
150
+ if ($this->_matcher === null) {
151
+ if ($result) {
152
+ return true;
153
+ }
154
+ $mismatchDescription->appendText('XPath expression result was ')
155
+ ->appendValue($result);
156
+ } else {
157
+ if ($this->_matcher->matches($result)) {
158
+ return true;
159
+ }
160
+ $mismatchDescription->appendText('XPath expression result ');
161
+ $this->_matcher->describeMismatch($result, $mismatchDescription);
162
+ }
163
+
164
+ return false;
165
+ }
166
+
167
+ public function describeTo(Description $description)
168
+ {
169
+ $description->appendText('XML or HTML document with XPath "')
170
+ ->appendText($this->_xpath)
171
+ ->appendText('"');
172
+ if ($this->_matcher !== null) {
173
+ $description->appendText(' ');
174
+ $this->_matcher->describeTo($description);
175
+ }
176
+ }
177
+
178
+ /**
179
+ * Wraps <code>$matcher</code> with {@link Hamcrest\Core\IsEqual)
180
+ * if it's not a matcher and the XPath in <code>count()</code>
181
+ * if it's an integer.
182
+ *
183
+ * @factory
184
+ */
185
+ public static function hasXPath($xpath, $matcher = null)
186
+ {
187
+ if ($matcher === null || $matcher instanceof Matcher) {
188
+ return new self($xpath, $matcher);
189
+ } elseif (is_int($matcher) && strpos($xpath, 'count(') !== 0) {
190
+ $xpath = 'count(' . $xpath . ')';
191
+ }
192
+
193
+ return new self($xpath, IsEqual::equalTo($matcher));
194
+ }
195
+ }
vendor/lucatume/args/codeception.yml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ actor: Tester
2
+ paths:
3
+ tests: tests
4
+ log: tests/_output
5
+ data: tests/_data
6
+ helpers: tests/_support
7
+ settings:
8
+ bootstrap: _bootstrap.php
9
+ colors: true
10
+ memory_limit: 1024M
11
+ modules:
12
+ config:
13
+ Db:
14
+ dsn: ''
15
+ user: ''
16
+ password: ''
17
+ dump: tests/_data/dump.sql
vendor/lucatume/function-mocker/cache/003718f94361bf05e7a0149d8c566eda.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php \Patchwork\CallRerouting\deployQueue();class Admin_Notices {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/248b6c7ab72e92c63d8ea2dc0000ba0c.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php \Patchwork\CallRerouting\deployQueue();class wpdb {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/35a0eb5e7c644778e349db32d7929a3b.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
2
+ class wpdb {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/51a4bafc9ebe4b76b8047ef2c4683321.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Cyr-To-Lat
4
+ *
5
+ * Plugin Name: Cyr-To-Lat
6
+ * Plugin URI: https://wordpress.org/plugins/cyr2lat/
7
+ * Description: Converts Cyrillic characters in post and term slugs to Latin characters. Useful for creating human-readable URLs. Based on the original plugin by Anton Skorobogatov.
8
+ * Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
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/
17
+ *
18
+ * @package cyr-to-lat
19
+ * @author Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
20
+ */
21
+
22
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
23
+
24
+ // @codeCoverageIgnoreStart
25
+ if ( ! \Patchwork\Redefinitions\defined(__NAMESPACE__, 'ABSPATH' ) ) {
26
+ exit; // Exit if accessed directly.
27
+ }
28
+ // @codeCoverageIgnoreEnd
29
+
30
+ if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ) ) {
31
+ return;
32
+ }
33
+
34
+ /**
35
+ * Plugin version.
36
+ */
37
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_VERSION', '4.5.1' );
38
+
39
+ /**
40
+ * Path to the plugin dir.
41
+ */
42
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_PATH', dirname( __FILE__ ) );
43
+
44
+ /**
45
+ * Plugin dir url.
46
+ */
47
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );
48
+
49
+ /**
50
+ * Main plugin file.
51
+ */
52
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_FILE', __FILE__ );
53
+
54
+ /**
55
+ * Plugin prefix.
56
+ */
57
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_PREFIX', 'cyr_to_lat' );
58
+
59
+ /**
60
+ * Post conversion action.
61
+ */
62
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_POST_CONVERSION_ACTION', 'post_conversion_action' );
63
+
64
+ /**
65
+ * Term conversion action.
66
+ */
67
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_TERM_CONVERSION_ACTION', 'term_conversion_action' );
68
+
69
+ /**
70
+ * Minimum required php version.
71
+ */
72
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION', '5.6' );
73
+
74
+ /**
75
+ * Minimum required max_input_vars value.
76
+ */
77
+ \Patchwork\Redefinitions\define(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS', 1000 );
78
+
79
+ /**
80
+ * Init plugin on plugin load.
81
+ */
82
+ require_once \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_PATH' ) . '/vendor/autoload.php';
83
+
84
+ $cyr_to_lat_requirements = new Requirements();
85
+
86
+ if ( ! $cyr_to_lat_requirements->are_requirements_met() ) {
87
+ return;
88
+ }
89
+
90
+ $cyr_to_lat_plugin = new Main();
91
+
vendor/lucatume/function-mocker/cache/539425a502f6acd0d5ae4dbbb111eebc.php ADDED
@@ -0,0 +1,1226 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Conversion tables.
4
+ *
5
+ * @package cyr-to-lat
6
+ */
7
+
8
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
9
+
10
+ use Cyr_To_Lat\Symfony\Polyfill\Mbstring\Mbstring;
11
+
12
+ /**
13
+ * Class Conversion_Tables
14
+ *
15
+ * @class Conversion_Tables
16
+ */
17
+ class Conversion_Tables {
18
+
19
+ /**
20
+ * Get conversion table by locale.
21
+ *
22
+ * @link https://ru.wikipedia.org/wiki/ISO_9
23
+ *
24
+ * @param string $locale WordPress locale.
25
+ *
26
+ * @return array
27
+ */
28
+ public static function get( $locale = '' ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
29
+ switch ( $locale ) {
30
+ // Belorussian.
31
+ case 'bel':
32
+ $table = [
33
+ 'А' => 'A',
34
+ 'Б' => 'B',
35
+ 'В' => 'V',
36
+ 'Г' => 'G',
37
+ 'Д' => 'D',
38
+ 'Е' => 'E',
39
+ 'Ё' => 'YO',
40
+ 'Ж' => 'ZH',
41
+ 'З' => 'Z',
42
+ 'І' => 'I',
43
+ 'Й' => 'J',
44
+ 'К' => 'K',
45
+ 'Л' => 'L',
46
+ 'М' => 'M',
47
+ 'Н' => 'N',
48
+ 'О' => 'O',
49
+ 'П' => 'P',
50
+ 'Р' => 'R',
51
+ 'С' => 'S',
52
+ 'Т' => 'T',
53
+ 'У' => 'U',
54
+ 'Ў' => 'U',
55
+ 'Ф' => 'F',
56
+ 'Х' => 'H',
57
+ 'Ц' => 'CZ',
58
+ 'Ч' => 'CH',
59
+ 'Ш' => 'SH',
60
+ 'Ы' => 'Y',
61
+ 'Ь' => '',
62
+ 'Э' => 'E',
63
+ 'Ю' => 'YU',
64
+ 'Я' => 'YA',
65
+ 'а' => 'a',
66
+ 'б' => 'b',
67
+ 'в' => 'v',
68
+ 'г' => 'g',
69
+ 'д' => 'd',
70
+ 'е' => 'e',
71
+ 'ё' => 'yo',
72
+ 'ж' => 'zh',
73
+ 'з' => 'z',
74
+ 'і' => 'i',
75
+ 'й' => 'j',
76
+ 'к' => 'k',
77
+ 'л' => 'l',
78
+ 'м' => 'm',
79
+ 'н' => 'n',
80
+ 'о' => 'o',
81
+ 'п' => 'p',
82
+ 'р' => 'r',
83
+ 'с' => 's',
84
+ 'т' => 't',
85
+ 'у' => 'u',
86
+ 'ў' => 'u',
87
+ 'ф' => 'f',
88
+ 'х' => 'h',
89
+ 'ц' => 'cz',
90
+ 'ч' => 'ch',
91
+ 'ш' => 'sh',
92
+ 'ы' => 'y',
93
+ 'ь' => '',
94
+ 'э' => 'e',
95
+ 'ю' => 'yu',
96
+ 'я' => 'ya',
97
+ ];
98
+ break;
99
+ // Ukrainian.
100
+ case 'uk':
101
+ $table = [
102
+ 'А' => 'A',
103
+ 'Б' => 'B',
104
+ 'В' => 'V',
105
+ 'Г' => 'G',
106
+ 'Ґ' => 'G',
107
+ 'Д' => 'D',
108
+ 'Е' => 'E',
109
+ 'Є' => 'YE',
110
+ 'Ж' => 'ZH',
111
+ 'З' => 'Z',
112
+ 'И' => 'Y',
113
+ 'І' => 'I',
114
+ 'Ї' => 'YI',
115
+ 'Й' => 'J',
116
+ 'К' => 'K',
117
+ 'Л' => 'L',
118
+ 'М' => 'M',
119
+ 'Н' => 'N',
120
+ 'О' => 'O',
121
+ 'П' => 'P',
122
+ 'Р' => 'R',
123
+ 'С' => 'S',
124
+ 'Т' => 'T',
125
+ 'У' => 'U',
126
+ 'Ф' => 'F',
127
+ 'Х' => 'H',
128
+ 'Ц' => 'CZ',
129
+ 'Ч' => 'CH',
130
+ 'Ш' => 'SH',
131
+ 'Щ' => 'SHH',
132
+ 'Ь' => '',
133
+ 'Ю' => 'YU',
134
+ 'Я' => 'YA',
135
+ 'а' => 'a',
136
+ 'б' => 'b',
137
+ 'в' => 'v',
138
+ 'г' => 'g',
139
+ 'ґ' => 'g',
140
+ 'д' => 'd',
141
+ 'е' => 'e',
142
+ 'є' => 'ye',
143
+ 'ж' => 'zh',
144
+ 'з' => 'z',
145
+ 'и' => 'y',
146
+ 'і' => 'i',
147
+ 'ї' => 'yi',
148
+ 'й' => 'j',
149
+ 'к' => 'k',
150
+ 'л' => 'l',
151
+ 'м' => 'm',
152
+ 'н' => 'n',
153
+ 'о' => 'o',
154
+ 'п' => 'p',
155
+ 'р' => 'r',
156
+ 'с' => 's',
157
+ 'т' => 't',
158
+ 'у' => 'u',
159
+ 'ф' => 'f',
160
+ 'х' => 'h',
161
+ 'ц' => 'cz',
162
+ 'ч' => 'ch',
163
+ 'ш' => 'sh',
164
+ 'щ' => 'shh',
165
+ 'ь' => '',
166
+ 'ю' => 'yu',
167
+ 'я' => 'ya',
168
+ ];
169
+ break;
170
+ // Bulgarian.
171
+ case 'bg_BG':
172
+ $table = [
173
+ 'А' => 'A',
174
+ 'Б' => 'B',
175
+ 'В' => 'V',
176
+ 'Г' => 'G',
177
+ 'Д' => 'D',
178
+ 'Е' => 'E',
179
+ 'Ж' => 'ZH',
180
+ 'З' => 'Z',
181
+ 'И' => 'I',
182
+ 'Й' => 'J',
183
+ 'К' => 'K',
184
+ 'Л' => 'L',
185
+ 'М' => 'M',
186
+ 'Н' => 'N',
187
+ 'О' => 'O',
188
+ 'П' => 'P',
189
+ 'Р' => 'R',
190
+ 'С' => 'S',
191
+ 'Т' => 'T',
192
+ 'У' => 'U',
193
+ 'Ф' => 'F',
194
+ 'Х' => 'H',
195
+ 'Ц' => 'CZ',
196
+ 'Ч' => 'CH',
197
+ 'Ш' => 'SH',
198
+ 'Щ' => 'STH',
199
+ 'Ъ' => 'A',
200
+ 'Ь' => '',
201
+ 'Ю' => 'YU',
202
+ 'Я' => 'YA',
203
+ 'а' => 'a',
204
+ 'б' => 'b',
205
+ 'в' => 'v',
206
+ 'г' => 'g',
207
+ 'д' => 'd',
208
+ 'е' => 'e',
209
+ 'ж' => 'zh',
210
+ 'з' => 'z',
211
+ 'и' => 'i',
212
+ 'й' => 'j',
213
+ 'к' => 'k',
214
+ 'л' => 'l',
215
+ 'м' => 'm',
216
+ 'н' => 'n',
217
+ 'о' => 'o',
218
+ 'п' => 'p',
219
+ 'р' => 'r',
220
+ 'с' => 's',
221
+ 'т' => 't',
222
+ 'у' => 'u',
223
+ 'ф' => 'f',
224
+ 'х' => 'h',
225
+ 'ц' => 'cz',
226
+ 'ч' => 'ch',
227
+ 'ш' => 'sh',
228
+ 'щ' => 'sth',
229
+ 'ъ' => 'a',
230
+ 'ь' => '',
231
+ 'ю' => 'yu',
232
+ 'я' => 'ya',
233
+ 'І' => 'I',
234
+ 'і' => 'i',
235
+ 'Ѣ' => 'YE',
236
+ 'ѣ' => 'ye',
237
+ 'Ѫ' => 'О',
238
+ 'ѫ' => 'о',
239
+ 'Ѳ' => 'FH',
240
+ 'ѳ' => 'fh',
241
+ 'Ѵ' => 'YH',
242
+ 'ѵ' => 'yh',
243
+ ];
244
+ break;
245
+ // Macedonian.
246
+ // @link https://ru.wikipedia.org/wiki/ISO_9#%D0%A2%D0%B0%D0%B1%D0%BB._2._%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5_%D0%91.
247
+ case 'mk_MK':
248
+ $table = [
249
+ 'А' => 'A',
250
+ 'Б' => 'B',
251
+ 'В' => 'V',
252
+ 'Г' => 'G',
253
+ 'Д' => 'D',
254
+ 'Ѓ' => 'G',
255
+ 'Е' => 'E',
256
+ 'Ж' => 'ZH',
257
+ 'З' => 'Z',
258
+ 'И' => 'I',
259
+ 'Ѕ' => 'Z',
260
+ 'Ј' => 'J',
261
+ 'К' => 'K',
262
+ 'Л' => 'L',
263
+ 'Љ' => 'L',
264
+ 'М' => 'M',
265
+ 'Н' => 'N',
266
+ 'Њ' => 'N',
267
+ 'О' => 'O',
268
+ 'П' => 'P',
269
+ 'Р' => 'R',
270
+ 'С' => 'S',
271
+ 'Т' => 'T',
272
+ 'Ќ' => 'K',
273
+ 'У' => 'U',
274
+ 'Ф' => 'F',
275
+ 'Х' => 'H',
276
+ 'Ц' => 'CZ',
277
+ 'Ч' => 'CH',
278
+ 'Џ' => 'DH',
279
+ 'Ш' => 'SH',
280
+ 'а' => 'a',
281
+ 'б' => 'b',
282
+ 'в' => 'v',
283
+ 'г' => 'g',
284
+ 'д' => 'd',
285
+ 'ѓ' => 'g',
286
+ 'е' => 'e',
287
+ 'ж' => 'zh',
288
+ 'з' => 'z',
289
+ 'и' => 'i',
290
+ 'ѕ' => 'z',
291
+ 'ј' => 'j',
292
+ 'к' => 'k',
293
+ 'л' => 'l',
294
+ 'љ' => 'l',
295
+ 'м' => 'm',
296
+ 'н' => 'n',
297
+ 'њ' => 'n',
298
+ 'о' => 'o',
299
+ 'п' => 'p',
300
+ 'р' => 'r',
301
+ 'с' => 's',
302
+ 'т' => 't',
303
+ 'ќ' => 'k',
304
+ 'у' => 'u',
305
+ 'ф' => 'f',
306
+ 'х' => 'h',
307
+ 'ц' => 'cz',
308
+ 'ч' => 'ch',
309
+ 'џ' => 'dh',
310
+ 'ш' => 'sh',
311
+ ];
312
+ break;
313
+ // Serbian.
314
+ case 'sr_RS':
315
+ $table = [
316
+ 'А' => 'A',
317
+ 'Б' => 'B',
318
+ 'В' => 'V',
319
+ 'Г' => 'G',
320
+ 'Д' => 'D',
321
+ 'Ђ' => 'Dj',
322
+ 'Е' => 'E',
323
+ 'Ж' => 'Z',
324
+ 'З' => 'Z',
325
+ 'И' => 'I',
326
+ 'J' => 'J',
327
+ 'К' => 'K',
328
+ 'Л' => 'L',
329
+ 'Љ' => 'Lj',
330
+ 'М' => 'M',
331
+ 'Н' => 'N',
332
+ 'Њ' => 'Nj',
333
+ 'О' => 'O',
334
+ 'П' => 'P',
335
+ 'Р' => 'R',
336
+ 'С' => 'S',
337
+ 'Т' => 'T',
338
+ 'Ћ' => 'C',
339
+ 'У' => 'U',
340
+ 'Ф' => 'F',
341
+ 'Х' => 'H',
342
+ 'Ц' => 'C',
343
+ 'Ч' => 'C',
344
+ 'Џ' => 'Dz',
345
+ 'Ш' => 'S',
346
+ 'а' => 'a',
347
+ 'б' => 'b',
348
+ 'в' => 'v',
349
+ 'г' => 'g',
350
+ 'д' => 'd',
351
+ 'ђ' => 'dj',
352
+ 'е' => 'e',
353
+ 'ж' => 'z',
354
+ 'з' => 'z',
355
+ 'и' => 'i',
356
+ 'j' => 'j',
357
+ 'к' => 'k',
358
+ 'л' => 'l',
359
+ 'љ' => 'lj',
360
+ 'м' => 'm',
361
+ 'н' => 'n',
362
+ 'њ' => 'nj',
363
+ 'о' => 'o',
364
+ 'п' => 'p',
365
+ 'р' => 'r',
366
+ 'с' => 's',
367
+ 'т' => 't',
368
+ 'ћ' => 'c',
369
+ 'у' => 'u',
370
+ 'ф' => 'f',
371
+ 'х' => 'h',
372
+ 'ц' => 'c',
373
+ 'ч' => 'c',
374
+ 'џ' => 'dz',
375
+ 'ш' => 's',
376
+ ];
377
+ break;
378
+ // Greek.
379
+ // @link https://en.wikipedia.org/wiki/Greek_alphabet.
380
+ case 'el':
381
+ $table = [
382
+ 'Α' => 'A',
383
+ 'Β' => 'B',
384
+ 'Γ' => 'G',
385
+ 'Δ' => 'D',
386
+ 'Ε' => 'E',
387
+ 'Ζ' => 'Z',
388
+ 'Η' => 'E',
389
+ 'Θ' => 'TH',
390
+ 'Ι' => 'I',
391
+ 'Κ' => 'K',
392
+ 'Λ' => 'L',
393
+ 'Μ' => 'M',
394
+ 'Ν' => 'N',
395
+ 'Ξ' => 'X',
396
+ 'Ο' => 'O',
397
+ 'Π' => 'P',
398
+ 'Ρ' => 'R',
399
+ 'Σ' => 'S',
400
+ 'Τ' => 'T',
401
+ 'Υ' => 'U',
402
+ 'Φ' => 'PH',
403
+ 'Χ' => 'KH',
404
+ 'Ψ' => 'PS',
405
+ 'Ω' => 'O',
406
+ 'α' => 'a',
407
+ 'β' => 'b',
408
+ 'γ' => 'g',
409
+ 'δ' => 'd',
410
+ 'ε' => 'e',
411
+ 'ζ' => 'z',
412
+ 'η' => 'e',
413
+ 'θ' => 'th',
414
+ 'ι' => 'i',
415
+ 'κ' => 'k',
416
+ 'λ' => 'l',
417
+ 'μ' => 'm',
418
+ 'ν' => 'n',
419
+ 'ξ' => 'x',
420
+ 'ο' => 'o',
421
+ 'π' => 'p',
422
+ 'ρ' => 'r',
423
+ 'σ' => 's',
424
+ 'ς' => 's',
425
+ 'τ' => 't',
426
+ 'υ' => 'u',
427
+ 'φ' => 'ph',
428
+ 'χ' => 'kh',
429
+ 'ψ' => 'ps',
430
+ 'ω' => 'o',
431
+ ];
432
+ break;
433
+ // Armenian.
434
+ // @link https://en.wikipedia.org/wiki/Romanization_of_Armenian.
435
+ case 'hy':
436
+ $table = [
437
+ 'Ա' => 'A',
438
+ 'Բ' => 'B',
439
+ 'Գ' => 'G',
440
+ 'Դ' => 'D',
441
+ 'Ե' => 'E',
442
+ 'Զ' => 'Z',
443
+ 'Է' => 'E',
444
+ 'Ը' => 'Y',
445
+ 'Թ' => 'T',
446
+ 'Ժ' => 'ZH',
447
+ 'Ի' => 'I',
448
+ 'Լ' => 'L',
449
+ 'Խ' => 'X',
450
+ 'Ծ' => 'C',
451
+ 'Կ' => 'K',
452
+ 'Հ' => 'H',
453
+ 'Ձ' => 'J',
454
+ 'Ղ' => 'GH',
455
+ 'Ճ' => 'CH',
456
+ 'Մ' => 'M',
457
+ 'Յ' => 'Y',
458
+ 'Ն' => 'N',
459
+ 'Շ' => 'SH',
460
+ 'Ո' => 'O',
461
+ 'Չ' => 'CH',
462
+ 'Պ' => 'P',
463
+ 'Ջ' => 'J',
464
+ 'Ռ' => 'RR',
465
+ 'Ս' => 'S',
466
+ 'Վ' => 'V',
467
+ 'Տ' => 'T',
468
+ 'Ր' => 'R',
469
+ 'Ց' => 'C',
470
+ 'Ւ' => 'W',
471
+ 'Փ' => 'P',
472
+ 'Ք' => 'Q',
473
+ 'Օ' => 'O',
474
+ 'Ֆ' => 'F',
475
+ 'ՈՒ' => 'U',
476
+ 'ա' => 'a',
477
+ 'բ' => 'b',
478
+ 'գ' => 'g',
479
+ 'դ' => 'd',
480
+ 'ե' => 'e',
481
+ 'զ' => 'z',
482
+ 'է' => 'e',
483
+ 'ը' => 'y',
484
+ 'թ' => 't',
485
+ 'ժ' => 'zh',
486
+ 'ի' => 'i',
487
+ 'լ' => 'l',
488
+ 'խ' => 'x',
489
+ 'ծ' => 'c',
490
+ 'կ' => 'k',
491
+ 'հ' => 'h',
492
+ 'ձ' => 'j',
493
+ 'ղ' => 'gh',
494
+ 'ճ' => 'ch',
495
+ 'մ' => 'm',
496
+ 'յ' => 'y',
497
+ 'ն' => 'n',
498
+ 'շ' => 'sh',
499
+ 'ո' => 'o',
500
+ 'չ' => 'ch',
501
+ 'պ' => 'p',
502
+ 'ջ' => 'j',
503
+ 'ռ' => 'rr',
504
+ 'ս' => 's',
505
+ 'վ' => 'v',
506
+ 'տ' => 't',
507
+ 'ր' => 'r',
508
+ 'ց' => 'c',
509
+ 'ւ' => 'w',
510
+ 'փ' => 'p',
511
+ 'ք' => 'q',
512
+ 'օ' => 'o',
513
+ 'ֆ' => 'f',
514
+ 'ու' => 'u',
515
+ 'և' => 'ew',
516
+ ];
517
+ break;
518
+ // Georgian.
519
+ case 'ka_GE':
520
+ $table = [
521
+ 'ა' => 'a',
522
+ 'ბ' => 'b',
523
+ 'გ' => 'g',
524
+ 'დ' => 'd',
525
+ 'ე' => 'e',
526
+ 'ვ' => 'v',
527
+ 'ზ' => 'z',
528
+ 'ჱ' => '',
529
+ 'თ' => 'th',
530
+ 'ი' => 'i',
531
+ 'კ' => 'k',
532
+ 'ლ' => 'l',
533
+ 'მ' => 'm',
534
+ 'ნ' => 'n',
535
+ 'ჲ' => '',
536
+ 'ო' => 'o',
537
+ 'პ' => 'p',
538
+ 'ჟ' => 'zh',
539
+ 'რ' => 'r',
540
+ 'ს' => 's',
541
+ 'ტ' => 't',
542
+ 'ჳ' => '',
543
+ 'უ' => 'u',
544
+ 'ფ' => 'ph',
545
+ 'ქ' => 'kh',
546
+ 'ღ' => 'gh',
547
+ 'ყ' => 'qh',
548
+ 'შ' => 'sh',
549
+ 'ჩ' => 'ch',
550
+ 'ც' => 'ts',
551
+ 'ძ' => 'dz',
552
+ 'წ' => 'c',
553
+ 'ჭ' => 'ch',
554
+ 'ხ' => 'kh',
555
+ 'ჴ' => '',
556
+ 'ჯ' => 'j',
557
+ 'ჰ' => 'h',
558
+ 'ჵ' => '',
559
+ ];
560
+ break;
561
+ // Kazakh.
562
+ case 'kk':
563
+ $table = [
564
+ 'А' => 'A',
565
+ 'Ә' => 'Ae',
566
+ 'Б' => 'B',
567
+ 'В' => 'V',
568
+ 'Г' => 'G',
569
+ 'Ғ' => 'Gh',
570
+ 'Д' => 'D',
571
+ 'Е' => 'E',
572
+ 'Ё' => 'YO',
573
+ 'Ж' => 'ZH',
574
+ 'З' => 'Z',
575
+ 'И' => 'I',
576
+ 'Й' => 'J',
577
+ 'К' => 'K',
578
+ 'Қ' => 'Q',
579
+ 'Л' => 'L',
580
+ 'М' => 'M',
581
+ 'Н' => 'N',
582
+ 'Ң' => 'Ng',
583
+ 'О' => 'O',
584
+ 'Ө' => 'Oe',
585
+ 'П' => 'P',
586
+ 'Р' => 'R',
587
+ 'С' => 'S',
588
+ 'Т' => 'T',
589
+ 'У' => 'W',
590
+ 'Ұ' => 'U',
591
+ 'Ү' => 'Ue',
592
+ 'Ф' => 'F',
593
+ 'Х' => 'H',
594
+ 'Һ' => 'H',
595
+ 'Ц' => 'C',
596
+ 'Ч' => 'CH',
597
+ 'Ш' => 'SH',
598
+ 'Щ' => 'SHH',
599
+ 'Ъ' => '',
600
+ 'Ы' => 'Y',
601
+ 'І' => 'I',
602
+ 'Ь' => '',
603
+ 'Э' => 'E',
604
+ 'Ю' => 'YU',
605
+ 'Я' => 'YA',
606
+ 'а' => 'a',
607
+ 'ә' => 'ae',
608
+ 'б' => 'b',
609
+ 'в' => 'v',
610
+ 'г' => 'g',
611
+ 'ғ' => 'gh',
612
+ 'д' => 'd',
613
+ 'е' => 'e',
614
+ 'ё' => 'yo',
615
+ 'ж' => 'zh',
616
+ 'з' => 'z',
617
+ 'и' => 'i',
618
+ 'й' => 'j',
619
+ 'к' => 'k',
620
+ 'қ' => 'q',
621
+ 'л' => 'l',
622
+ 'м' => 'm',
623
+ 'н' => 'n',
624
+ 'ң' => 'ng',
625
+ 'о' => 'o',
626
+ 'ө' => 'oe',
627
+ 'п' => 'p',
628
+ 'р' => 'r',
629
+ 'с' => 's',
630
+ 'т' => 't',
631
+ 'у' => 'w',
632
+ 'ұ' => 'u',
633
+ 'ү' => 'ue',
634
+ 'ф' => 'f',
635
+ 'х' => 'h',
636
+ 'һ' => 'h',
637
+ 'ц' => 'c',
638
+ 'ч' => 'ch',
639
+ 'ш' => 'sh',
640
+ 'щ' => 'shh',
641
+ 'ъ' => '',
642
+ 'ы' => 'y',
643
+ 'і' => 'i',
644
+ 'ь' => '',
645
+ 'э' => 'e',
646
+ 'ю' => 'yu',
647
+ 'я' => 'ya',
648
+ // Kazakh 2018 latin.
649
+ 'Á' => 'A',
650
+ 'Ǵ' => 'G',
651
+ 'I' => 'I',
652
+ 'Ń' => 'N',
653
+ 'Ó' => 'O',
654
+ 'Ú' => 'O',
655
+ 'Ý' => 'O',
656
+ 'á' => 'a',
657
+ 'ǵ' => 'g',
658
+ 'ı' => 'i',
659
+ 'ń' => 'n',
660
+ 'ó' => 'o',
661
+ 'ú' => 'o',
662
+ 'ý' => 'o',
663
+ ];
664
+ break;
665
+ // Hebrew.
666
+ case 'he_IL':
667
+ $table = [
668
+ 'א' => '',
669
+ 'ב' => 'b',
670
+ 'ג' => 'g',
671
+ 'ד' => 'd',
672
+ 'ה' => 'h',
673
+ 'ו' => 'w',
674
+ 'ז' => 'z',
675
+ 'ח' => 'x',
676
+ 'ט' => 't',
677
+ 'י' => 'y',
678
+ 'ך' => '',
679
+ 'כ' => 'kh',
680
+ 'ל' => 'l',
681
+ 'ם' => '',
682
+ 'מ' => 'm',
683
+ 'ן' => '',
684
+ 'נ' => 'n',
685
+ 'ס' => 's',
686
+ 'ע' => '',
687
+ 'ף' => '',
688
+ 'פ' => 'ph',
689
+ 'ץ' => '',
690
+ 'צ' => 's',
691
+ 'ק' => 'k',
692
+ 'ר' => 'r',
693
+ 'ש' => 'sh',
694
+ 'ת' => 'th',
695
+ ];
696
+ for ( $code = 0x0590; $code <= 0x05CF; $code ++ ) {
697
+ $table[ Mbstring::mb_chr( $code ) ] = '';
698
+ }
699
+ for ( $code = 0x05F0; $code <= 0x05F5; $code ++ ) {
700
+ $table[ Mbstring::mb_chr( $code ) ] = '';
701
+ }
702
+ for ( $code = 0xFB1D; $code <= 0xFB4F; $code ++ ) {
703
+ $table[ Mbstring::mb_chr( $code ) ] = '';
704
+ }
705
+ break;
706
+ // phpcs:disable PSR2.ControlStructures.SwitchDeclaration.TerminatingComment
707
+ case 'zh_CN':
708
+ case 'zh_HK':
709
+ case 'zh_SG':
710
+ case 'zh_TW':
711
+ // phpcs:enable PSR2.ControlStructures.SwitchDeclaration.TerminatingComment
712
+
713
+ // Chinese dictionary copied from Pinyin Permalinks plugin.
714
+ $table = [
715
+ 'A' => '啊阿吖嗄锕',
716
+ 'Ai' => '埃挨哎唉哀皑癌蔼矮艾碍爱隘捱嗳嫒瑷暧砹锿霭',
717
+ 'An' => '鞍氨安俺按暗岸胺案谙埯揞庵桉铵鹌黯',
718
+ 'Ang' => '肮昂盎',
719
+ 'Ao' => '凹敖熬翱袄傲奥懊澳坳拗嗷岙廒遨媪骜獒聱螯鏊鳌鏖',
720
+ 'Ba' => '芭捌扒叭吧笆八疤巴拔跋靶把坝霸罢爸茇菝岜灞钯粑鲅魃',
721
+ 'Bai' => '白柏百摆佰败拜稗捭掰',
722
+ 'Ban' => '斑班搬扳般颁板版扮拌伴瓣半办绊阪坂钣瘢癍舨',
723
+ 'Bang' => '邦帮梆榜膀绑棒磅蚌镑傍谤蒡浜',
724
+ 'Bao' => '苞胞包褒薄雹保堡饱宝抱报暴豹鲍爆曝勹葆孢煲鸨褓趵龅',
725
+ 'Bei' => '杯碑悲卑北辈背贝钡倍狈备惫焙被孛陂邶蓓呗悖碚鹎褙鐾鞴',
726
+ 'Ben' => '奔苯本笨畚坌锛',
727
+ 'Beng' => '崩绷甭泵蹦迸嘣甏',
728
+ 'Bi' => '逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必壁臂避陛匕俾荜荸萆薜吡哔狴庳愎滗濞弼妣婢嬖璧贲睥畀铋秕裨筚箅篦舭襞跸髀',
729
+ 'Bian' => '鞭边编贬扁便变卞辨辩辫遍匾弁苄忭汴缏煸砭碥窆褊蝙笾鳊',
730
+ 'Biao' => '标彪膘表婊骠飑飙飚镖镳瘭裱鳔',
731
+ 'Bie' => '鳖憋别瘪蹩',
732
+ 'Bin' => '彬斌濒滨宾摈傧豳缤玢殡膑镔髌鬓',
733
+ 'Bing' => '兵冰柄丙秉饼炳病并禀邴摒槟',
734
+ 'Bo' => '剥玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳卜亳啵饽檗擘礴钹鹁簸跛踣',
735
+ 'Bu' => '捕哺补埠不布步簿部怖卟逋瓿晡钚钸醭',
736
+ 'Ca' => '擦礤',
737
+ 'Cai' => '猜裁材才财睬踩采彩菜蔡',
738
+ 'Can' => '餐参蚕残惭惨灿孱骖璨粲黪',
739
+ 'Cang' => '苍舱仓沧藏伧',
740
+ 'Cao' => '操糙槽曹草嘈漕螬艚',
741
+ 'Ce' => '厕策侧册测恻',
742
+ 'Cen' => '岑涔',
743
+ 'Ceng' => '层蹭曾噌',
744
+ 'Cha' => '插叉茬茶查碴搽察岔差诧嚓猹馇汊姹杈槎檫锸镲衩',
745
+ 'Chai' => '拆柴豺侪钗瘥虿',
746
+ 'Chan' => '搀掺蝉馋谗缠铲产阐颤冁谄蒇廛忏潺澶羼婵骣觇禅蟾躔',
747
+ 'Chang' => '昌猖场尝常长偿肠厂敞畅唱倡伥鬯苌菖徜怅阊娼嫦昶氅鲳',
748
+ 'Chao' => '超抄钞朝嘲潮巢吵炒怊晁焯耖',
749
+ 'Che' => '车扯撤掣彻澈坼砗',
750
+ 'Chen' => '郴臣辰尘晨忱沉陈趁衬谌谶抻嗔宸琛榇碜龀',
751
+ 'Cheng' => '撑称城橙成呈乘程惩澄诚承逞骋秤丞埕枨柽塍瞠铖裎蛏酲',
752
+ 'Chi' => '吃痴持池迟弛驰耻齿侈尺赤翅斥炽傺墀茌叱哧啻嗤彳饬媸敕眵鸱瘛褫蚩螭笞篪豉踟魑',
753
+ 'Chong' => '充冲虫崇宠茺忡憧铳舂艟',
754
+ 'Chou' => '抽酬畴踌稠愁筹仇绸瞅丑臭俦帱惆瘳雠',
755
+ 'Chu' => '初出橱厨躇锄雏滁除楚础储矗搐触处畜亍刍怵憷绌杵楮樗褚蜍蹰黜',
756
+ 'Chuai' => '揣搋啜膪踹',
757
+ 'Chuan' => '川穿椽传船喘串舛遄氚钏舡',
758
+ 'Chuang' => '疮窗床闯创怆',
759
+ 'Chui' => '吹炊捶锤垂陲棰槌',
760
+ 'Chun' => '春椿醇唇淳纯蠢莼鹑蝽',
761
+ 'Chuo' => '戳绰辍踔龊',
762
+ 'Ci' => '疵茨磁雌辞慈瓷词此刺赐次茈祠鹚糍',
763
+ 'Cong' => '聪葱囱匆从丛苁淙骢琮璁枞',
764
+ 'Cou' => '凑楱辏腠',
765
+ 'Cu' => '粗醋簇促蔟徂猝殂蹙蹴',
766
+ 'Cuan' => '蹿篡窜汆撺爨镩',
767
+ 'Cui' => '摧崔催脆瘁粹淬翠萃啐悴璀榱毳',
768
+ 'Cun' => '村存寸忖皴',
769
+ 'Cuo' => '磋撮搓措挫错厝嵯脞锉矬痤鹾蹉',
770
+ 'Da' => '搭达答瘩打大耷哒嗒怛妲沓褡笪靼鞑',
771
+ 'Dai' => '呆歹傣戴带殆代贷袋待逮怠埭甙呔岱迨绐玳黛',
772
+ 'Dan' => '耽担丹单郸掸胆旦氮但惮淡诞弹蛋儋凼萏菪啖澹宕殚赕眈疸瘅聃箪',
773
+ 'Dang' => '当挡党荡档谠砀铛裆',
774
+ 'Dao' => '刀捣蹈倒岛祷导到稻悼道盗叨氘焘纛',
775
+ 'De' => '德得的锝',
776
+ 'Deng' => '蹬灯登等瞪凳邓噔嶝戥磴镫簦',
777
+ 'Di' => '堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔氐籴诋谛邸坻荻嘀娣柢棣觌祗砥碲睇镝羝骶',
778
+ 'Dia' => '嗲',
779
+ 'Dian' => '颠掂滇碘点典靛垫电佃甸店惦奠淀殿丶阽坫巅玷钿癜癫簟踮',
780
+ 'Diao' => '碉叼雕凋刁掉吊钓调铞貂鲷',
781
+ 'Die' => '跌爹碟蝶迭谍叠垤堞揲喋牒瓞耋鲽',
782
+ 'Ding' => '丁盯叮钉顶鼎锭定订仃啶玎腚碇町疔耵酊',
783
+ 'Diu' => '丢铥',
784
+ 'Dong' => '东冬董懂动栋侗恫冻洞垌咚岽峒氡胨胴硐鸫',
785
+ 'Dou' => '兜抖斗陡豆逗痘都蔸钭窦蚪篼',
786
+ 'Du' => '督毒犊独读堵睹赌杜镀肚度渡妒芏嘟渎椟牍蠹笃髑黩',
787
+ 'Duan' => '端短锻段断缎椴煅簖',
788
+ 'Dui' => '堆兑队对怼憝碓镦',
789
+ 'Dun' => '墩吨蹲敦顿钝盾遁沌炖砘礅盹趸',
790
+ 'Duo' => '掇哆多夺垛躲朵跺舵剁惰堕咄哚沲缍铎裰踱',
791
+ 'E' => '蛾峨鹅俄额讹娥恶厄扼遏鄂饿噩谔垩苊莪萼呃愕屙婀轭腭锇锷鹗颚鳄',
792
+ 'Ei' => '诶',
793
+ 'En' => '恩蒽摁嗯',
794
+ 'Er' => '而儿耳尔饵洱二贰迩珥铒鸸鲕',
795
+ 'Fa' => '发罚筏伐乏阀法珐垡砝',
796
+ 'Fan' => '藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛蕃蘩幡梵燔畈蹯',
797
+ 'Fang' => '坊芳方肪房防妨仿访纺放邡枋钫舫鲂',
798
+ 'Fei' => '菲非啡飞肥匪诽吠肺废沸费芾狒悱淝妃绯榧腓斐扉砩镄痱蜚篚翡霏鲱',
799
+ 'Fen' => '芬酚吩氛分纷坟焚汾粉奋份忿愤粪偾瀵棼鲼鼢',
800
+ 'Feng' => '丰封枫蜂峰锋风疯烽逢冯缝讽奉凤俸酆葑唪沣砜',
801
+ 'Fo' => '佛',
802
+ 'Fou' => '否缶',
803
+ 'Fu' => '夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐匐凫郛芙苻茯莩菔拊呋呒幞怫滏艴孚驸绂绋桴赙祓黻黼罘稃馥蚨蜉蝠蝮麸趺跗鲋鳆',
804
+ 'Ga' => '噶嘎垓尬尕尜旮钆',
805
+ 'Gai' => '该改概钙盖溉丐陔戤赅',
806
+ 'Gan' => '干甘杆柑竿肝赶感秆敢赣坩苷尴擀泔淦澉绀橄旰矸疳酐',
807
+ 'Gang' => '冈刚钢缸肛纲岗港杠戆罡筻',
808
+ 'Gao' => '篙皋高膏羔糕搞镐稿告睾诰郜藁缟槔槁杲锆',
809
+ 'Ge' => '哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各咯鬲仡哿圪塥嗝纥搿膈硌镉袼虼舸骼',
810
+ 'Gei' => '给',
811
+ 'Gen' => '根跟亘茛哏艮',
812
+ 'Geng' => '耕更庚羹埂耿梗哽赓绠鲠',
813
+ 'Gong' => '工攻功恭龚供躬公宫弓巩汞拱贡共珙肱蚣觥',
814
+ 'Gou' => '钩勾沟苟狗垢构购够佝诟岣遘媾缑枸觏彀笱篝鞲',
815
+ 'Gu' => '辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇嘏诂菰崮汩梏轱牯牿臌毂瞽罟钴锢鸪痼蛄酤觚鲴',
816
+ 'Gua' => '刮瓜剐寡挂褂卦诖呱栝胍鸹',
817
+ 'Guai' => '乖拐怪',
818
+ 'Guan' => '棺关官冠观管馆罐惯灌贯倌莞掼涫盥鹳鳏',
819
+ 'Guang' => '光广逛咣犷桄胱',
820
+ 'Gui' => '瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽匦刿庋宄妫炅晷皈簋鲑鳜',
821
+ 'Gun' => '辊滚棍衮绲磙鲧',
822
+ 'Guo' => '锅郭国果裹过馘埚掴呙帼崞猓椁虢聒蜾蝈',
823
+ 'Ha' => '哈铪',
824
+ 'Hai' => '骸孩海氦亥害骇嗨胲醢',
825
+ 'Han' => '酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉邗菡撖犴阚瀚晗焓顸颔蚶鼾',
826
+ 'Hang' => '夯杭航沆绗颃',
827
+ 'Hao' => '壕嚎豪毫郝好耗号浩蒿薅嗥嚆濠灏昊皓颢蚝',
828
+ 'He' => '呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺诃劾壑嗬阖曷盍颌蚵翮',
829
+ 'Hei' => '嘿黑',
830
+ 'Hen' => '痕很狠恨',
831
+ 'Heng' => '哼亨横衡恒蘅珩桁',
832
+ 'Hong' => '轰哄烘虹鸿洪宏弘红黉訇讧荭蕻薨闳泓',
833
+ 'Hou' => '喉侯猴吼厚候后堠後逅瘊篌糇鲎骺',
834
+ 'Hu' => '呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户冱唿囫岵猢怙惚浒滹琥槲轷觳烀煳戽扈祜瓠鹄鹕鹱笏醐斛鹘',
835
+ 'Hua' => '花哗华猾滑画划化话骅桦砉铧',
836
+ 'Huai' => '槐徊怀淮坏踝',
837
+ 'Huan' => '欢环桓还缓换患唤痪豢焕涣宦幻奂擐獾洹浣漶寰逭缳锾鲩鬟',
838
+ 'Huang' => '荒慌黄磺蝗簧皇凰惶煌晃幌恍谎隍徨湟潢遑璜肓癀蟥篁鳇',
839
+ 'Hui' => '灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘诙茴荟蕙咴喙隳洄彗缋桧晖恚虺蟪麾',
840
+ 'Hun' => '荤昏婚魂浑混诨馄阍溷珲',
841
+ 'Huo' => '豁活伙火获或惑霍货祸劐藿攉嚯夥钬锪镬耠蠖',
842
+ 'Ji' => '击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪藉亟乩剞佶偈墼芨芰荠蒺蕺掎叽咭哜唧岌嵴洎屐骥畿玑楫殛戟戢赍觊犄齑矶羁嵇稷瘠虮笈笄暨跻跽霁鲚鲫髻麂',
843
+ 'Jia' => '嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁伽郏葭岬浃迦珈戛胛恝铗镓痂瘕蛱笳袈跏',
844
+ 'Jian' => '歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僭谏谫菅蒹搛湔蹇謇缣枧楗戋戬牮犍毽腱睑锏鹣裥笕翦踺鲣鞯',
845
+ 'Jiang' => '僵姜将浆江疆蒋桨奖讲匠酱降茳洚绛缰犟礓耩糨豇',
846
+ 'Jiao' => '蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖佼僬艽茭挢噍徼姣敫皎鹪蛟醮跤鲛',
847
+ 'Jie' => '揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒芥界借介疥诫届讦诘拮喈嗟婕孑桀碣疖颉蚧羯鲒骱',
848
+ 'Jin' => '巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲卺荩堇噤馑廑妗缙瑾槿赆觐衿矜',
849
+ 'Jing' => '荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净刭儆阱菁獍憬泾迳弪婧肼胫腈旌箐',
850
+ 'Jiong' => '炯窘迥扃',
851
+ 'Jiu' => '揪究纠玖韭久灸九酒厩救旧臼舅咎就疚僦啾阄柩桕鸠鹫赳鬏',
852
+ 'Ju' => '鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧倨讵苣苴莒掬遽屦琚椐榘榉橘犋飓钜锔窭裾醵踽龃雎鞫',
853
+ 'Juan' => '捐鹃娟倦眷卷绢鄄狷涓桊蠲锩镌隽',
854
+ 'Jue' => '撅攫抉掘倔爵觉决诀绝厥劂谲矍蕨噘崛獗孓珏桷橛爝镢蹶觖',
855
+ 'Jun' => '均菌钧军君峻俊竣浚郡骏捃皲',
856
+ 'Ka' => '喀咖卡佧咔胩',
857
+ 'Kai' => '开揩楷凯慨剀垲蒈忾恺铠锎锴',
858
+ 'Kan' => '刊堪勘坎砍看侃莰戡龛瞰',
859
+ 'Kang' => '康慷糠扛抗亢炕伉闶钪',
860
+ 'Kao' => '考拷烤靠尻栲犒铐',
861
+ 'Ke' => '坷苛柯棵磕颗科壳咳可渴克刻客课嗑岢恪溘骒缂珂轲氪瞌钶锞稞疴窠颏蝌髁',
862
+ 'Ken' => '肯啃垦恳裉',
863
+ 'Keng' => '坑吭铿',
864
+ 'Kong' => '空恐孔控倥崆箜',
865
+ 'Kou' => '抠口扣寇芤蔻叩囗眍筘',
866
+ 'Ku' => '枯哭窟苦酷库裤刳堀喾绔骷',
867
+ 'Kua' => '夸垮挎跨胯侉',
868
+ 'Kuai' => '块筷侩快蒯郐哙狯浍脍',
869
+ 'Kuan' => '宽款髋',
870
+ 'Kuang' => '匡筐狂框矿眶旷况诓诳邝圹夼哐纩贶',
871
+ 'Kui' => '亏盔岿窥葵奎魁傀馈愧溃馗匮夔隗蒉揆喹喟悝愦逵暌睽聩蝰篑跬',
872
+ 'Kun' => '坤昆捆困悃阃琨锟醌鲲髡',
873
+ 'Kuo' => '括扩廓阔蛞',
874
+ 'La' => '垃拉喇蜡腊辣啦剌邋旯砬瘌',
875
+ 'Lai' => '莱来赖崃徕涞濑赉睐铼癞籁',
876
+ 'Lan' => '蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥岚漤榄斓罱镧褴',
877
+ 'Lang' => '琅榔狼廊郎朗浪蒗啷阆稂螂',
878
+ 'Lao' => '捞劳牢老佬姥酪烙涝唠崂忉栳铑铹痨耢醪',
879
+ 'Le' => '勒乐了仂叻泐鳓',
880
+ 'Lei' => '雷镭蕾磊累儡垒擂肋类泪羸诔嘞嫘缧檑耒酹',
881
+ 'Leng' => '棱楞冷塄愣',
882
+ 'Li' => '厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俪俚郦坜苈莅蓠藜呖唳喱猁溧澧逦娌嫠骊缡枥栎轹膦戾砺詈罹锂鹂疠疬蛎蜊蠡笠篥粝醴跞雳鲡鳢黧',
883
+ 'Lian' => '联莲连镰廉怜涟帘敛脸链恋炼练蔹奁潋濂琏楝殓臁裢裣蠊鲢',
884
+ 'Liang' => '俩粮凉梁粱良两辆量晾亮谅墚莨椋锒踉靓魉',
885
+ 'Liao' => '撩聊僚疗燎寥辽潦撂镣廖料蓼尥嘹獠寮缭钌鹩',
886
+ 'Lie' => '列裂烈劣猎冽埒捩咧洌趔躐鬣',
887
+ 'Lin' => '琳林磷霖临邻鳞淋凛赁吝拎蔺啉嶙廪懔遴檩辚瞵粼躏麟',
888
+ 'Ling' => '玲菱零龄铃伶羚凌灵陵岭领另令酃苓呤囹泠绫柃棂瓴聆蛉翎鲮',
889
+ 'Liu' => '溜琉榴硫馏留刘瘤流柳六浏遛骝绺旒熘锍镏鹨鎏',
890
+ 'Long' => '龙聋咙笼窿隆垄拢陇垅茏泷珑栊胧砻癃',
891
+ 'Lou' => '楼娄搂篓漏陋偻蒌喽嵝镂瘘耧蝼髅',
892
+ 'Lu' => '芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮垆撸噜泸渌漉逯璐栌橹轳辂辘氇胪镥鸬鹭簏舻鲈',
893
+ 'Luan' => '峦挛孪滦卵乱脔娈栾鸾銮',
894
+ 'Lue' => '掠略锊',
895
+ 'Lun' => '抡轮伦仑沦纶论囵',
896
+ 'Luo' => '萝螺罗逻锣箩骡裸落洛骆络倮蠃荦摞猡泺漯珞椤脶镙瘰雒',
897
+ 'Lv' => '驴吕铝侣旅履屡缕虑氯律滤绿捋闾榈膂稆褛',
898
+ 'Ma' => '妈麻玛码蚂马骂嘛吗唛犸杩蟆',
899
+ 'Mai' => '埋买麦卖迈脉劢荬霾',
900
+ 'Man' => '瞒馒蛮满蔓曼慢漫谩墁幔缦熳镘颟螨鳗鞔',
901
+ 'Mang' => '芒茫盲氓忙莽邙漭硭蟒',
902
+ 'Mao' => '猫茅锚毛矛铆卯茂冒帽貌贸袤茆峁泖瑁昴牦耄旄懋瞀蝥蟊髦',
903
+ 'Me' => '么麽',
904
+ 'Mei' => '玫枚梅酶霉煤没眉媒镁每美昧寐妹媚莓嵋猸浼湄楣镅鹛袂魅',
905
+ 'Men' => '门闷们扪焖懑钔',
906
+ 'Meng' => '萌蒙檬盟锰猛梦孟勐甍瞢懵朦礞虻蜢蠓艋艨',
907
+ 'Mi' => '眯醚靡糜迷谜弥米秘觅泌蜜密幂芈谧咪嘧猕汨宓弭脒祢敉縻麋',
908
+ 'Mian' => '棉眠绵冕免勉娩缅面沔渑湎腼眄',
909
+ 'Miao' => '苗描瞄藐秒渺庙妙喵邈缈杪淼眇鹋',
910
+ 'Mie' => '蔑灭乜咩蠛篾',
911
+ 'Min' => '民抿皿敏悯闽苠岷闵泯缗玟珉愍黾鳘',
912
+ 'Ming' => '明螟鸣铭名命冥茗溟暝瞑酩',
913
+ 'Miu' => '谬缪',
914
+ 'Mo' => '摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谟茉蓦馍嫫嬷殁镆秣瘼耱貊貘',
915
+ 'Mou' => '谋牟某侔哞眸蛑鍪',
916
+ 'Mu' => '拇牡亩姆母墓暮幕募慕木目睦牧穆仫坶苜沐毪钼',
917
+ 'Na' => '拿哪呐钠那娜纳讷捺肭镎衲',
918
+ 'Nai' => '氖乃奶耐奈鼐佴艿萘柰',
919
+ 'Nan' => '南男难喃囝囡楠腩蝻赧',
920
+ 'Nang' => '囊攮囔馕曩',
921
+ 'Nao' => '挠脑恼闹淖孬垴呶猱瑙硇铙蛲',
922
+ 'Ne' => '呢',
923
+ 'Nei' => '馁内',
924
+ 'Nen' => '嫩恁',
925
+ 'Neng' => '能',
926
+ 'Ni' => '妮霓倪泥尼拟你匿腻逆溺伲坭蘼猊怩昵旎睨铌鲵',
927
+ 'Nian' => '蔫拈年碾撵捻念廿埝辇黏鲇鲶',
928
+ 'Niang' => '娘酿',
929
+ 'Niao' => '鸟尿茑嬲脲袅',
930
+ 'Nie' => '捏聂孽啮镊镍涅陧蘖嗫颞臬蹑',
931
+ 'Nin' => '您',
932
+ 'Ning' => '柠狞凝宁拧泞佞咛甯聍',
933
+ 'Niu' => '牛扭钮纽狃忸妞',
934
+ 'Nong' => '脓浓农弄侬哝',
935
+ 'Nou' => '耨',
936
+ 'Nu' => '奴努怒弩胬孥驽',
937
+ 'Nuan' => '暖',
938
+ 'Nue' => '虐疟挪',
939
+ 'Nuo' => '懦糯诺傩搦喏锘',
940
+ 'Nv' => '女恧钕衄',
941
+ 'O' => '哦噢',
942
+ 'Ou' => '欧鸥殴藕呕偶沤讴怄瓯耦',
943
+ 'Pa' => '耙啪趴爬帕怕琶葩杷筢',
944
+ 'Pai' => '拍排牌徘湃派俳蒎哌',
945
+ 'Pan' => '攀潘盘磐盼畔判叛拚爿泮袢襻蟠蹒',
946
+ 'Pang' => '乓庞旁耪胖彷滂逄螃',
947
+ 'Pao' => '抛咆刨炮袍跑泡匏狍庖脬疱',
948
+ 'Pei' => '呸胚培裴赔陪配佩沛辔帔旆锫醅霈',
949
+ 'Pen' => '喷盆湓',
950
+ 'Peng' => '砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰堋嘭怦蟛',
951
+ 'Pi' => '辟坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬丕仳陴邳郫圮埤鼙芘擗噼庀淠媲纰枇甓罴铍癖疋蚍蜱貔',
952
+ 'Pian' => '篇偏片骗谝骈犏胼翩蹁',
953
+ 'Piao' => '飘漂瓢票剽嘌嫖缥殍瞟螵',
954
+ 'Pie' => '撇瞥丿苤氕',
955
+ 'Pin' => '拼频贫品聘姘嫔榀牝颦',
956
+ 'Ping' => '乒坪苹萍平凭瓶评屏俜娉枰鲆',
957
+ 'Po' => '坡泼颇婆破魄迫粕叵鄱珀钋钷皤笸',
958
+ 'Pou' => '剖裒掊',
959
+ 'Pu' => '扑铺仆莆葡菩蒲埔朴圃普浦谱瀑匍噗溥濮璞氆镤镨蹼',
960
+ 'Qi' => '期欺戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫亓圻芑芪萁萋葺蕲嘁屺岐汔淇骐绮琪琦杞桤槭耆祺憩碛颀蛴蜞綦鳍麒',
961
+ 'Qia' => '掐恰洽葜袷髂',
962
+ 'Qian' => '牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉倩佥阡芊芡掮岍悭慊骞搴褰缱椠肷愆钤虔箝',
963
+ 'Qiang' => '枪呛腔羌墙蔷强抢戕嫱樯戗炝锖锵镪襁蜣羟跄',
964
+ 'Qiao' => '橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍劁诮谯荞峤愀憔缲樵硗跷鞒',
965
+ 'Qie' => '切茄且怯窃郄惬妾挈锲箧趄',
966
+ 'Qin' => '钦侵亲秦琴勤芹擒禽寝沁芩揿吣嗪噙溱檎锓螓衾',
967
+ 'Qing' => '青轻氢倾卿清擎晴氰情顷请庆苘圊檠磬蜻罄綮謦鲭黥',
968
+ 'Qiong' => '琼穷邛茕穹蛩筇跫銎',
969
+ 'Qiu' => '秋丘邱球求囚酋泅俅巯犰湫逑遒楸赇虬蚯蝤裘糗鳅鼽',
970
+ 'Qu' => '趋区蛆曲躯屈驱渠取娶龋趣去诎劬蕖蘧岖衢阒璩觑氍朐祛磲鸲癯蛐蠼麴瞿黢',
971
+ 'Quan' => '圈颧权醛泉全痊拳犬券劝诠荃犭悛绻辁畎铨蜷筌鬈',
972
+ 'Que' => '缺炔瘸却鹊榷确雀阕阙悫',
973
+ 'Qun' => '裙群逡麇',
974
+ 'Ran' => '然燃冉染苒蚺髯',
975
+ 'Rang' => '瓤壤攘嚷让禳穰',
976
+ 'Rao' => '饶扰绕荛娆桡',
977
+ 'Re' => '惹热',
978
+ 'Ren' => '壬仁人忍韧任认刃妊纫仞荏饪轫稔衽',
979
+ 'Reng' => '扔仍',
980
+ 'Ri' => '日',
981
+ 'Rong' => '戎茸蓉荣融熔溶容绒冗嵘狨榕肜蝾',
982
+ 'Rou' => '揉柔肉糅蹂鞣',
983
+ 'Ru' => '茹蠕儒孺如辱乳汝入褥蓐薷嚅洳溽濡缛铷襦颥',
984
+ 'Ruan' => '软阮朊',
985
+ 'Rui' => '蕊瑞锐芮蕤枘睿蚋',
986
+ 'Run' => '闰润',
987
+ 'Ruo' => '若弱偌箬',
988
+ 'Sa' => '撒洒萨卅挲脎飒',
989
+ 'Sai' => '腮鳃塞赛噻',
990
+ 'San' => '三叁伞散仨彡馓毵',
991
+ 'Sang' => '桑嗓丧搡磉颡',
992
+ 'Sao' => '搔骚扫嫂埽缫臊瘙鳋',
993
+ 'Se' => '瑟色涩啬铯穑',
994
+ 'Sen' => '森',
995
+ 'Seng' => '僧',
996
+ 'Sha' => '莎砂杀刹沙纱傻啥煞唼歃铩痧裟霎鲨',
997
+ 'Shai' => '筛晒酾',
998
+ 'Shan' => '珊苫杉山删煽衫闪陕擅赡膳善汕扇缮栅讪鄯芟潸姗嬗骟膻钐疝蟮舢跚鳝',
999
+ 'Shang' => '墒伤商赏晌上尚裳垧绱殇熵觞',
1000
+ 'Shao' => '梢捎稍烧芍勺韶少哨邵绍劭潲杓蛸筲艄',
1001
+ 'She' => '奢赊蛇舌舍赦摄射慑涉社设厍佘猞滠畲麝',
1002
+ 'Shen' => '砷申呻伸身深娠绅神沈审婶甚肾慎渗什诜谂莘葚哂渖胂矧蜃糁',
1003
+ 'Sheng' => '声生甥牲升绳省盛剩胜圣嵊晟眚笙',
1004
+ 'Shi' => '匙师失狮施湿诗尸虱十石拾时食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试谥埘莳蓍弑轼贳炻礻铈舐筮豕鲥鲺',
1005
+ 'Shou' => '收手首守寿授售受瘦兽狩绶艏',
1006
+ 'Shu' => '蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕丨倏塾菽摅沭澍姝纾毹腧殳秫',
1007
+ 'Shua' => '刷耍唰',
1008
+ 'Shuai' => '率摔衰甩帅蟀',
1009
+ 'Shuan' => '栓拴闩涮',
1010
+ 'Shuang' => '霜双爽孀',
1011
+ 'Shui' => '谁水睡税',
1012
+ 'Shun' => '吮瞬顺舜',
1013
+ 'Shuo' => '说硕朔烁蒴搠妁槊铄',
1014
+ 'Si' => '斯撕嘶思私司丝死肆寺嗣四伺似饲巳厮俟兕厶咝汜泗澌姒驷缌祀锶鸶耜蛳笥',
1015
+ 'Song' => '松耸怂颂送宋讼诵凇菘崧嵩忪悚淞竦',
1016
+ 'Sou' => '搜艘擞嗽叟薮嗖嗾馊溲飕瞍锼螋',
1017
+ 'Su' => '苏酥俗素速粟僳塑溯宿诉肃夙谡蔌嗉愫涑簌觫稣',
1018
+ 'Suan' => '酸蒜算狻',
1019
+ 'Sui' => '虽隋随绥髓碎岁穗遂隧祟谇荽濉邃燧眭睢',
1020
+ 'Sun' => '孙损笋荪狲飧榫隼',
1021
+ 'Suo' => '蓑梭唆缩琐索锁所唢嗦嗍娑桫睃羧',
1022
+ 'Ta' => '塌他它她塔獭挞蹋踏闼溻遢榻铊趿鳎',
1023
+ 'Tai' => '胎苔抬台泰酞太态汰邰薹骀肽炱钛跆鲐',
1024
+ 'Tan' => '坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭郯昙忐钽锬覃',
1025
+ 'Tang' => '汤塘搪堂棠膛唐糖倘躺淌趟烫傥帑惝溏瑭樘铴镗耥螗螳羰醣',
1026
+ 'Tao' => '掏涛滔绦萄桃逃淘陶讨套鼗啕洮韬饕',
1027
+ 'Te' => '特忒忑慝铽',
1028
+ 'Teng' => '藤腾疼誊滕',
1029
+ 'Ti' => '梯剔踢锑提题蹄啼体替嚏惕涕剃屉倜悌逖绨缇鹈醍',
1030
+ 'Tian' => '天添填田甜恬舔腆掭忝阗殄畋',
1031
+ 'Tiao' => '挑条迢眺跳佻苕祧窕蜩笤粜龆鲦髫',
1032
+ 'Tie' => '贴铁帖萜餮',
1033
+ 'Ting' => '厅听烃汀廷停亭庭挺艇莛葶婷梃铤蜓霆',
1034
+ 'Tong' => '通桐酮瞳同铜彤童桶捅筒统痛佟仝茼嗵恸潼砼',
1035
+ 'Tou' => '偷投头透骰',
1036
+ 'Tu' => '凸秃突图徒途涂屠土吐兔堍荼菟钍酴',
1037
+ 'Tuan' => '湍团抟彖疃',
1038
+ 'Tui' => '推颓腿蜕褪退煺',
1039
+ 'Tun' => '囤吞屯臀氽饨暾豚',
1040
+ 'Tuo' => '拖托脱鸵陀驮驼椭妥拓唾佗坨庹沱柝柁橐砣箨酡跎鼍',
1041
+ 'Wa' => '挖哇蛙洼娃瓦袜佤娲腽',
1042
+ 'Wai' => '歪外崴',
1043
+ 'Wan' => '豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕剜芄菀纨绾琬脘畹蜿',
1044
+ 'Wang' => '汪王亡枉网往旺望忘妄罔惘辋魍',
1045
+ 'Wei' => '威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫偎诿隈圩葳薇帏帷嵬猥猬闱沩洧涠逶娓玮韪軎炜煨痿艉鲔',
1046
+ 'Wen' => '瘟温蚊文闻纹吻稳紊问刎夂阌汶璺攵雯',
1047
+ 'Weng' => '嗡翁瓮蓊蕹',
1048
+ 'Wo' => '挝蜗涡窝我斡卧握沃倭莴喔幄渥肟硪龌',
1049
+ 'Wu' => '巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误兀仵阢邬圬芴唔庑怃忤寤迕妩婺骛杌牾焐鹉鹜痦蜈鋈鼯',
1050
+ 'Xi' => '栖昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细僖兮隰郗茜菥葸蓰奚唏徙饩阋浠淅屣嬉玺樨曦觋欷歙熹禊禧皙穸裼蜥螅蟋舄舾羲粞翕醯蹊鼷',
1051
+ 'Xia' => '瞎虾匣霞辖暇峡侠狭下厦夏吓呷狎遐瑕柙硖罅黠',
1052
+ 'Xian' => '掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线冼苋莶藓岘猃暹娴氙燹祆鹇痫蚬筅籼酰跣跹霰',
1053
+ 'Xiang' => '相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象芗葙饷庠骧缃蟓鲞飨',
1054
+ 'Xiao' => '萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效哓崤潇逍骁绡枭枵筱箫魈',
1055
+ 'Xie' => '楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑偕亵勰燮薤撷獬廨渫瀣邂绁缬榭榍蹀躞',
1056
+ 'Xin' => '薪芯锌欣辛新忻心信衅囟馨昕歆镡鑫',
1057
+ 'Xing' => '星腥猩惺兴刑型形邢行醒幸杏性姓陉荇荥擤饧悻硎',
1058
+ 'Xiong' => '兄凶胸匈汹雄熊芎',
1059
+ 'Xiu' => '休修羞朽嗅锈秀袖绣咻岫馐庥溴鸺貅髹',
1060
+ 'Xu' => '墟戌需虚嘘须徐许蓄酗叙旭序恤絮婿绪续吁诩勖蓿洫溆顼栩煦盱胥糈醑',
1061
+ 'Xuan' => '轩喧宣悬旋玄选癣眩绚儇谖萱揎泫渲漩璇楦暄炫煊碹铉镟痃',
1062
+ 'Xue' => '靴薛学穴雪血谑噱泶踅鳕',
1063
+ 'Xun' => '勋熏循旬询寻驯巡殉汛训讯逊迅巽郇埙荀荨蕈薰峋徇獯恂洵浔曛醺鲟',
1064
+ 'Ya' => '压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶伢垭揠岈迓娅琊桠氩砑睚痖',
1065
+ 'Yan' => '焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验厣赝剡俨偃兖谳郾鄢埏菸崦恹闫阏湮滟妍嫣琰檐晏胭腌焱罨筵酽趼魇餍鼹',
1066
+ 'Yang' => '殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾徉怏泱炀烊恙蛘鞅',
1067
+ 'Yao' => '邀腰妖瑶摇尧遥窑谣姚咬舀药要耀钥夭爻吆崾徭幺珧杳轺曜肴铫鹞窈繇鳐',
1068
+ 'Ye' => '椰噎耶爷野冶也页掖业叶曳腋夜液靥谒邺揶晔烨铘',
1069
+ 'Yi' => '一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎刈劓佚佾诒圯埸懿苡荑薏弈奕挹弋呓咦咿嗌噫峄嶷猗饴怿怡悒漪迤驿缢殪轶贻欹旖熠眙钇镒镱痍瘗癔翊蜴舣羿翳酏黟',
1070
+ 'Yin' => '茵荫因殷音阴姻吟银淫寅饮尹引隐印胤鄞垠堙茚吲喑狺夤洇氤铟瘾窨蚓霪龈',
1071
+ 'Ying' => '英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映嬴郢茔莺萦蓥撄嘤膺滢潆瀛瑛璎楹媵鹦瘿颍罂',
1072
+ 'Yo' => '哟唷',
1073
+ 'Yong' => '拥佣臃痈庸雍踊蛹咏泳涌永恿勇用俑壅墉喁慵邕镛甬鳙饔',
1074
+ 'You' => '幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼卣攸侑莠莜莸尢呦囿宥柚猷牖铕疣蚰蚴蝣鱿黝鼬',
1075
+ 'Yu' => '迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁遇喻峪御愈欲狱育誉浴寓裕预豫驭禺毓伛俣谀谕萸蓣揄圄圉嵛狳饫馀庾阈鬻妪妤纡瑜昱觎腴欤於煜燠聿钰鹆鹬瘐瘀窬窳蜮蝓竽臾舁雩龉',
1076
+ 'Yuan' => '鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院垸塬芫掾圜沅媛瑗橼爰眢鸢螈箢鼋',
1077
+ 'Yue' => '曰约越跃岳粤月悦阅龠哕瀹樾刖钺',
1078
+ 'Yun' => '耘云郧匀陨允运蕴酝晕韵孕郓芸狁恽愠纭韫殒昀氲熨筠',
1079
+ 'Za' => '匝砸杂咋拶咂',
1080
+ 'Zai' => '栽哉灾宰载再在崽甾',
1081
+ 'Zan' => '咱攒暂赞瓒昝簪糌趱錾',
1082
+ 'Zang' => '赃脏葬奘驵臧',
1083
+ 'Zao' => '遭糟凿藻枣早澡蚤躁噪造皂灶燥唣',
1084
+ 'Ze' => '责择则泽仄赜啧帻迮昃笮箦舴',
1085
+ 'Zei' => '贼',
1086
+ 'Zen' => '怎谮',
1087
+ 'Zeng' => '增憎赠缯甑罾锃',
1088
+ 'Zha' => '扎喳渣札轧铡闸眨榨乍炸诈柞揸吒咤哳楂砟痄蚱齄',
1089
+ 'Zhai' => '摘斋宅窄债寨砦瘵',
1090
+ 'Zhan' => '瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽谵搌旃',
1091
+ 'Zhang' => '樟章彰漳张掌涨杖丈帐账仗胀瘴障仉鄣幛嶂獐嫜璋蟑',
1092
+ 'Zhao' => '招昭找沼赵照罩兆肇召诏棹钊笊',
1093
+ 'Zhe' => '遮折哲蛰辙者锗蔗这浙着乇谪摺柘辄磔鹧褶蜇螫赭',
1094
+ 'Zhen' => '珍斟真甄砧臻贞针侦枕疹诊震振镇阵帧圳蓁浈缜桢椹榛轸赈胗朕祯畛稹鸩箴',
1095
+ 'Zheng' => '蒸挣睁征狰争怔整拯正政症郑证诤峥徵钲铮筝',
1096
+ 'Zhi' => '芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒卮陟郅埴芷摭帙忮彘咫骘栉枳栀桎轵轾贽胝膣祉黹雉鸷痣蛭絷酯跖踬踯豸觯',
1097
+ 'Zhong' => '中盅忠钟衷终种肿重仲众冢锺螽舯踵',
1098
+ 'Zhou' => '舟周州洲诌粥轴肘帚咒皱宙昼骤荮啁妯纣绉胄碡籀酎',
1099
+ 'Zhu' => '珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻伫侏邾苎茱洙渚潴杼槠橥炷铢疰瘃竺箸舳翥躅麈',
1100
+ 'Zhua' => '抓爪',
1101
+ 'Zhuai' => '拽',
1102
+ 'Zhuan' => '专砖转撰赚篆啭馔颛',
1103
+ 'Zhuang' => '幢桩庄装妆撞壮状僮',
1104
+ 'Zhui' => '椎锥追赘坠缀萑惴骓缒隹',
1105
+ 'Zhun' => '谆准肫窀',
1106
+ 'Zhuo' => '捉拙卓桌琢茁酌啄灼浊倬诼擢浞涿濯禚斫镯',
1107
+ 'Zi' => '兹咨资姿滋淄孜紫仔籽滓子自渍字谘呲嵫姊孳缁梓辎赀恣眦锱秭耔笫粢趑訾龇鲻髭',
1108
+ 'Zong' => '鬃棕踪宗综总纵偬腙粽',
1109
+ 'Zou' => '邹走奏揍诹陬鄹驺鲰',
1110
+ 'Zu' => '租足卒族祖诅阻组俎菹镞',
1111
+ 'Zuan' => '钻纂攥缵躜',
1112
+ 'Zui' => '嘴醉最罪蕞觜',
1113
+ 'Zun' => '尊遵撙樽鳟',
1114
+ 'Zuo' => '昨左佐做作坐座阼唑嘬怍胙祚酢',
1115
+ ];
1116
+ break;
1117
+ case 'iso9':
1118
+ default:
1119
+ $table = [
1120
+ 'А' => 'A',
1121
+ 'Б' => 'B',
1122
+ 'В' => 'V',
1123
+ 'Г' => 'G',
1124
+ 'Д' => 'D',
1125
+ 'Е' => 'E',
1126
+ 'Ё' => 'YO',
1127
+ 'Ж' => 'ZH',
1128
+ 'З' => 'Z',
1129
+ 'И' => 'I',
1130
+ 'Й' => 'J',
1131
+ 'К' => 'K',
1132
+ 'Л' => 'L',
1133
+ 'М' => 'M',
1134
+ 'Н' => 'N',
1135
+ 'О' => 'O',
1136
+ 'П' => 'P',
1137
+ 'Р' => 'R',
1138
+ 'С' => 'S',
1139
+ 'Т' => 'T',
1140
+ 'У' => 'U',
1141
+ 'Ф' => 'F',
1142
+ 'Х' => 'H',
1143
+ 'Ц' => 'CZ',
1144
+ 'Ч' => 'CH',
1145
+ 'Ш' => 'SH',
1146
+ 'Щ' => 'SHH',
1147
+ 'Ъ' => '',
1148
+ 'Ы' => 'Y',
1149
+ 'Ь' => '',
1150
+ 'Э' => 'E',
1151
+ 'Ю' => 'YU',
1152
+ 'Я' => 'YA',
1153
+ 'а' => 'a',
1154
+ 'б' => 'b',
1155
+ 'в' => 'v',
1156
+ 'г' => 'g',
1157
+ 'д' => 'd',
1158
+ 'е' => 'e',
1159
+ 'ё' => 'yo',
1160
+ 'ж' => 'zh',
1161
+ 'з' => 'z',
1162
+ 'и' => 'i',
1163
+ 'й' => 'j',
1164
+ 'к' => 'k',
1165
+ 'л' => 'l',
1166
+ 'м' => 'm',
1167
+ 'н' => 'n',
1168
+ 'о' => 'o',
1169
+ 'п' => 'p',
1170
+ 'р' => 'r',
1171
+ 'с' => 's',
1172
+ 'т' => 't',
1173
+ 'у' => 'u',
1174
+ 'ф' => 'f',
1175
+ 'х' => 'h',
1176
+ 'ц' => 'cz',
1177
+ 'ч' => 'ch',
1178
+ 'ш' => 'sh',
1179
+ 'щ' => 'shh',
1180
+ 'ъ' => '',
1181
+ 'ы' => 'y',
1182
+ 'ь' => '',
1183
+ 'э' => 'e',
1184
+ 'ю' => 'yu',
1185
+ 'я' => 'ya',
1186
+ 'І' => 'I',
1187
+ 'і' => 'i',
1188
+ 'Ѣ' => 'YE',
1189
+ 'ѣ' => 'ye',
1190
+ 'Ѳ' => 'FH',
1191
+ 'ѳ' => 'fh',
1192
+ 'Ѵ' => 'YH',
1193
+ 'ѵ' => 'yh',
1194
+ ];
1195
+ }
1196
+
1197
+ return $table;
1198
+ }
1199
+
1200
+ /**
1201
+ * Get fix table for MacOS.
1202
+ * On MacOS, files containing characters in the table, are sometimes encoded improperly.
1203
+ *
1204
+ * @return array
1205
+ */
1206
+ public static function get_fix_table_for_mac() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
1207
+ /**
1208
+ * Keys in the table are standard ISO9 characters.
1209
+ *
1210
+ * Example of wrong encoding on Mac:
1211
+ * берЁзовыЙ-белозёрский - original input,
1212
+ * берЁзовыЙ-белозёрский.png - actual filename created on Mac (ЁёЙй are already wrongly encoded),
1213
+ * ber%d0%95%cc%88zovy%d0%98%cc%86-beloz%d0%B5%cc%88rski%d0%B8%cc%86.png - urlencode() of the above,
1214
+ * berËzovyĬ-belozërskiĭ.png - actual filename passed via standard ISO9 transliteration table,
1215
+ * berE%CC%88zovyI%CC%86-beloze%CC%88rskii%CC%86.png - urlencode() of the above.
1216
+ *
1217
+ * To avoid misunderstanding, we use urldecode() here.
1218
+ */
1219
+ return [
1220
+ 'Ё' => urldecode( '%d0%95%cc%88' ),
1221
+ 'ё' => urldecode( '%d0%B5%cc%88' ),
1222
+ 'Й' => urldecode( '%d0%98%cc%86' ),
1223
+ 'й' => urldecode( '%d0%B8%cc%86' ),
1224
+ ];
1225
+ }
1226
+ }\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/5c160974325c7689e4934dd71fd72c04.php ADDED
@@ -0,0 +1,401 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Main class of the plugin.
4
+ *
5
+ * @package cyr-to-lat
6
+ */
7
+
8
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
9
+
10
+ use wpdb;
11
+ use Exception;
12
+ use Cyr_To_Lat\Symfony\Polyfill\Mbstring\Mbstring;
13
+
14
+ /**
15
+ * Class Main
16
+ */
17
+ class Main {
18
+
19
+ /**
20
+ * Plugin settings.
21
+ *
22
+ * @var Settings
23
+ */
24
+ protected $settings;
25
+
26
+ /**
27
+ * Process posts instance.
28
+ *
29
+ * @var Post_Conversion_Process
30
+ */
31
+ protected $process_all_posts;
32
+
33
+ /**
34
+ * Process terms instance.
35
+ *
36
+ * @var Term_Conversion_Process
37
+ */
38
+ protected $process_all_terms;
39
+
40
+ /**
41
+ * Admin Notices instance.
42
+ *
43
+ * @var Admin_Notices
44
+ */
45
+ protected $admin_notices;
46
+
47
+ /**
48
+ * Converter instance.
49
+ *
50
+ * @var Converter
51
+ */
52
+ protected $converter;
53
+
54
+ /**
55
+ * WP_CLI instance.
56
+ *
57
+ * @var WP_CLI
58
+ */
59
+ protected $cli;
60
+
61
+ /**
62
+ * ACF instance.
63
+ *
64
+ * @var ACF
65
+ */
66
+ protected $acf;
67
+
68
+ /**
69
+ * Main constructor.
70
+ */
71
+ public function __construct() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
72
+ $this->settings = new Settings();
73
+ $this->process_all_posts = new Post_Conversion_Process( $this );
74
+ $this->process_all_terms = new Term_Conversion_Process( $this );
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
82
+ );
83
+
84
+ if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'WP_CLI' ) && \Patchwork\Redefinitions\constant(__NAMESPACE__, 'WP_CLI' ) ) {
85
+ $this->cli = new WP_CLI( $this->converter );
86
+ }
87
+
88
+ $this->acf = new ACF( $this->settings );
89
+
90
+ $this->init();
91
+ }
92
+
93
+ /**
94
+ * Init class.
95
+ */
96
+ public function init() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
97
+ if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'WP_CLI' ) && \Patchwork\Redefinitions\constant(__NAMESPACE__, 'WP_CLI' ) ) {
98
+ try {
99
+ /**
100
+ * Method WP_CLI::add_command() accepts class as callable.
101
+ *
102
+ * @noinspection PhpParamsInspection
103
+ */
104
+ \WP_CLI::add_command( 'cyr2lat', $this->cli );
105
+ } catch ( Exception $e ) {
106
+ return;
107
+ }
108
+ }
109
+
110
+ $this->init_hooks();
111
+ }
112
+
113
+ /**
114
+ * Init class hooks.
115
+ */
116
+ public function init_hooks() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
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
+ /**
123
+ * Sanitize title.
124
+ *
125
+ * @param string $title Sanitized title.
126
+ * @param string $raw_title The title prior to sanitization.
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 = '' ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
132
+ global $wpdb;
133
+
134
+ if ( ! $title ) {
135
+ return $title;
136
+ }
137
+
138
+ // Fixed bug with `_wp_old_slug` redirect.
139
+ if ( 'query' === $context ) {
140
+ return $title;
141
+ }
142
+
143
+ $title = urldecode( $title );
144
+ $pre = apply_filters( 'ctl_pre_sanitize_title', false, $title );
145
+
146
+ if ( false !== $pre ) {
147
+ return $pre;
148
+ }
149
+
150
+ $is_term = false;
151
+ // phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
152
+ $backtrace = debug_backtrace( ~DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS );
153
+ // phpcs:enable
154
+ foreach ( $backtrace as $backtrace_entry ) {
155
+ if ( 'wp_insert_term' === $backtrace_entry['function'] ) {
156
+ $is_term = true;
157
+ break;
158
+ }
159
+ }
160
+
161
+ // phpcs:disable WordPress.DB.DirectDatabaseQuery
162
+ $term = $is_term ? $wpdb->get_var( $wpdb->prepare( "SELECT slug FROM $wpdb->terms WHERE name = %s", $title ) ) : '';
163
+ // phpcs:enable
164
+
165
+ if ( ! empty( $term ) ) {
166
+ $title = $term;
167
+ } else {
168
+ $title = $this->is_wc_attribute_taxonomy( $title ) ? $title : $this->transliterate( $title );
169
+ }
170
+
171
+ return $title;
172
+ }
173
+
174
+ /**
175
+ * Check if title is an attribute taxonomy.
176
+ *
177
+ * @param string $title Title.
178
+ *
179
+ * @return bool
180
+ */
181
+ protected function is_wc_attribute_taxonomy( $title ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
182
+ if ( ! \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'wc_get_attribute_taxonomies' ) ) {
183
+ return false;
184
+ }
185
+
186
+ $attribute_taxonomies = wc_get_attribute_taxonomies();
187
+
188
+ foreach ( $attribute_taxonomies as $attribute_taxonomy ) {
189
+ if ( $title === $attribute_taxonomy->attribute_name ) {
190
+ return true;
191
+ }
192
+ }
193
+
194
+ return false;
195
+ }
196
+
197
+ /**
198
+ * Sanitize filename.
199
+ *
200
+ * @param string $filename Sanitized filename.
201
+ * @param string $filename_raw The filename prior to sanitization.
202
+ *
203
+ * @return string
204
+ */
205
+ public function sanitize_filename( $filename, $filename_raw ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
206
+ $pre = apply_filters( 'ctl_pre_sanitize_filename', false, $filename );
207
+
208
+ if ( false !== $pre ) {
209
+ return $pre;
210
+ }
211
+
212
+ if ( seems_utf8( $filename ) ) {
213
+ $filename = \Patchwork\Redefinitions\mb_strtolower(__NAMESPACE__, $filename );
214
+ }
215
+
216
+ return $this->transliterate( $filename );
217
+ }
218
+
219
+ /**
220
+ * Fix string encoding on MacOS.
221
+ *
222
+ * @param string $string String.
223
+ *
224
+ * @return string
225
+ */
226
+ private function fix_mac_string( $string ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
227
+ $table = $this->get_filtered_table();
228
+ $fix_table = Conversion_Tables::get_fix_table_for_mac();
229
+
230
+ $fix = [];
231
+ foreach ( $fix_table as $key => $value ) {
232
+ if ( isset( $table[ $key ] ) ) {
233
+ $fix[ $value ] = $table[ $key ];
234
+ }
235
+ }
236
+
237
+ return strtr( $string, $fix );
238
+ }
239
+
240
+ /**
241
+ * Split Chinese string by hyphens.
242
+ *
243
+ * @param string $string String.
244
+ * @param array $table Conversion table.
245
+ *
246
+ * @return string
247
+ */
248
+ protected function split_chinese_string( $string, $table ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
249
+ if ( ! $this->settings->is_chinese_locale() || mb_strlen( $string ) < 4 ) {
250
+ return $string;
251
+ }
252
+
253
+ $chars = Mbstring::mb_str_split( $string );
254
+ $string = '';
255
+
256
+ foreach ( $chars as $char ) {
257
+ if ( isset( $table[ $char ] ) ) {
258
+ $string .= '-' . $char . '-';
259
+ } else {
260
+ $string .= $char;
261
+ }
262
+ }
263
+
264
+ return $string;
265
+ }
266
+
267
+ /**
268
+ * Get transliteration table.
269
+ *
270
+ * @return array
271
+ */
272
+ private function get_filtered_table() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
273
+ return (array) apply_filters( 'ctl_table', $this->settings->get_table() );
274
+ }
275
+
276
+ /**
277
+ * Transliterate string using a table.
278
+ *
279
+ * @param string $string String.
280
+ *
281
+ * @return string
282
+ */
283
+ public function transliterate( $string ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
284
+ $table = $this->get_filtered_table();
285
+
286
+ $string = $this->fix_mac_string( $string );
287
+ $string = $this->split_chinese_string( $string, $table );
288
+ $string = strtr( $string, $table );
289
+
290
+ if ( \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'iconv' ) ) {
291
+ $new_string = iconv( 'UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string );
292
+ $string = $new_string ? $new_string : $string;
293
+ }
294
+
295
+ return $string;
296
+ }
297
+
298
+ /**
299
+ * Check if Classic Editor plugin is active.
300
+ *
301
+ * @link https://kagg.eu/how-to-catch-gutenberg/
302
+ *
303
+ * @return bool
304
+ */
305
+ private function is_classic_editor_plugin_active() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
306
+ // @codeCoverageIgnoreStart
307
+ if ( ! \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'is_plugin_active' ) ) {
308
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
309
+ }
310
+ // @codeCoverageIgnoreEnd
311
+
312
+ return is_plugin_active( 'classic-editor/classic-editor.php' );
313
+ }
314
+
315
+ /**
316
+ * Check if Block Editor is active.
317
+ * Must only be used after plugins_loaded action is fired.
318
+ *
319
+ * @link https://kagg.eu/how-to-catch-gutenberg/
320
+ *
321
+ * @return bool
322
+ */
323
+ private function is_gutenberg_editor_active() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
324
+
325
+ // Gutenberg plugin is installed and activated.
326
+ $gutenberg = ! ( false === has_filter( 'replace_editor', 'gutenberg_init' ) );
327
+
328
+ // Block editor since 5.0.
329
+ $block_editor = version_compare( $GLOBALS['wp_version'], '5.0-beta', '>' );
330
+
331
+ if ( ! $gutenberg && ! $block_editor ) {
332
+ return false;
333
+ }
334
+
335
+ if ( $this->is_classic_editor_plugin_active() ) {
336
+ $editor_option = get_option( 'classic-editor-replace' );
337
+ $block_editor_active = [ 'no-replace', 'block' ];
338
+
339
+ return in_array( $editor_option, $block_editor_active, true );
340
+ }
341
+
342
+ return true;
343
+ }
344
+
345
+ /**
346
+ * Gutenberg support
347
+ *
348
+ * @param array $data An array of slashed post data.
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 = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
354
+ global $current_screen;
355
+
356
+ if ( ! $this->is_gutenberg_editor_active() ) {
357
+ return $data;
358
+ }
359
+
360
+ // Run code only on post edit screen.
361
+ if ( ! ( $current_screen && 'post' === $current_screen->base ) ) {
362
+ return $data;
363
+ }
364
+
365
+ if (
366
+ ! $data['post_name'] && $data['post_title'] &&
367
+ ! in_array( $data['post_status'], [ 'auto-draft', 'revision' ], true )
368
+ ) {
369
+ $data['post_name'] = sanitize_title( $data['post_title'] );
370
+ }
371
+
372
+ return $data;
373
+ }
374
+
375
+ /**
376
+ * Changes array of items into string of items, separated by comma and sql-escaped
377
+ *
378
+ * @see https://coderwall.com/p/zepnaw
379
+ * @global wpdb $wpdb
380
+ *
381
+ * @param mixed|array $items item(s) to be joined into string.
382
+ * @param string $format %s or %d.
383
+ *
384
+ * @return string Items separated by comma and sql-escaped
385
+ */
386
+ public function prepare_in( $items, $format = '%s' ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
387
+ global $wpdb;
388
+
389
+ $items = (array) $items;
390
+ $how_many = count( $items );
391
+ if ( $how_many > 0 ) {
392
+ $placeholders = array_fill( 0, $how_many, $format );
393
+ $prepared_format = implode( ',', $placeholders );
394
+ $prepared_in = $wpdb->prepare( $prepared_format, $items ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
395
+ } else {
396
+ $prepared_in = '';
397
+ }
398
+
399
+ return $prepared_in;
400
+ }
401
+ }\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/5ef18fdb052a08d48b73f70c53e22f6f.php ADDED
@@ -0,0 +1,287 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Old slugs converter.
4
+ *
5
+ * @package cyr-to-lat
6
+ */
7
+
8
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
9
+
10
+ /**
11
+ * Class Converter
12
+ *
13
+ * @class Converter
14
+ */
15
+ class Converter {
16
+
17
+ /**
18
+ * Query arg in url to start conversion.
19
+ */
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.
34
+ *
35
+ * @var Main
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
+ *
49
+ * @var Post_Conversion_Process
50
+ */
51
+ private $process_all_posts;
52
+
53
+ /**
54
+ * Background process to convert terms.
55
+ *
56
+ * @var Term_Conversion_Process
57
+ */
58
+ private $process_all_terms;
59
+
60
+ /**
61
+ * Admin notices.
62
+ *
63
+ * @var Admin_Notices
64
+ */
65
+ private $admin_notices;
66
+
67
+ /**
68
+ * Option group.
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 ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
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;
89
+ $this->admin_notices = $admin_notices;
90
+
91
+ $this->init_hooks();
92
+ }
93
+
94
+ /**
95
+ * Init class hooks.
96
+ */
97
+ public function init_hooks() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
98
+ add_action( 'admin_init', [ $this, 'process_handler' ] );
99
+ add_action( 'admin_init', [ $this, 'conversion_notices' ] );
100
+ }
101
+
102
+ /**
103
+ * Show conversion notices.
104
+ */
105
+ public function conversion_notices() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
106
+ $posts_process_running = $this->process_all_posts->is_process_running();
107
+ $terms_process_running = $this->process_all_terms->is_process_running();
108
+
109
+ if ( ! $posts_process_running && ! $terms_process_running ) {
110
+ add_action( 'admin_init', [ $this, 'start_conversion' ], 20 );
111
+ }
112
+
113
+ if ( $posts_process_running ) {
114
+ $this->admin_notices->add_notice(
115
+ __( 'Cyr To Lat converts existing post slugs in the background process.', 'cyr2lat' ),
116
+ 'notice notice-info is-dismissible'
117
+ );
118
+ }
119
+
120
+ if ( $terms_process_running ) {
121
+ $this->admin_notices->add_notice(
122
+ __( 'Cyr To Lat converts existing term slugs in the background process.', 'cyr2lat' ),
123
+ 'notice notice-info is-dismissible'
124
+ );
125
+ }
126
+
127
+ if ( $this->process_all_posts->is_process_completed() ) {
128
+ $this->admin_notices->add_notice(
129
+ __( 'Cyr To Lat completed conversion of existing post slugs.', 'cyr2lat' ),
130
+ 'notice notice-success is-dismissible'
131
+ );
132
+ }
133
+
134
+ if ( $this->process_all_terms->is_process_completed() ) {
135
+ $this->admin_notices->add_notice(
136
+ __( 'Cyr To Lat completed conversion of existing term slugs.', 'cyr2lat' ),
137
+ 'notice notice-success is-dismissible'
138
+ );
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Check if we have to start conversion and start it.
144
+ */
145
+ public function start_conversion() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
146
+ if ( ! isset( $_POST['cyr2lat-convert'] ) ) {
147
+ return;
148
+ }
149
+ check_admin_referer( $this->option_group . '-options' );
150
+ $this->convert_existing_slugs();
151
+ }
152
+
153
+ /**
154
+ * Process handler.
155
+ */
156
+ public function process_handler() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
157
+ if ( ! isset( $_GET[ self::QUERY_ARG ] ) || ! isset( $_GET['_wpnonce'] ) ) {
158
+ return;
159
+ }
160
+
161
+ if ( ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), self::QUERY_ARG ) ) {
162
+ return;
163
+ }
164
+
165
+ $this->convert_existing_slugs();
166
+ }
167
+
168
+ /**
169
+ * Convert Existing Slugs.
170
+ *
171
+ * @param array $args Arguments for query.
172
+ */
173
+ public function convert_existing_slugs( $args = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
174
+ $this->convert_existing_post_slugs( $args );
175
+ $this->convert_existing_term_slugs();
176
+ }
177
+
178
+ /**
179
+ * Convert existing post slugs.
180
+ *
181
+ * @param array $args Arguments for query.
182
+ */
183
+ protected function convert_existing_post_slugs( $args = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
184
+ global $wpdb;
185
+
186
+ $post_types = get_post_types( [ 'public' => true ] );
187
+
188
+ $post_types += [ 'nav_menu_item' => 'nav_menu_item' ];
189
+
190
+ $defaults = [
191
+ 'post_type' => apply_filters( 'ctl_post_types', $post_types ),
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
209
+ $posts = $wpdb->get_results( $sql );
210
+ // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared
211
+
212
+ if ( ! $posts ) {
213
+ $this->admin_notices->add_notice(
214
+ __( 'Cyr To Lat has not found existing post slugs for conversion.', 'cyr2lat' ),
215
+ 'notice notice-info is-dismissible'
216
+ );
217
+
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
+ /**
237
+ * Convert existing term slugs.
238
+ */
239
+ protected function convert_existing_term_slugs() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
240
+ global $wpdb;
241
+
242
+ // phpcs:ignore WordPress.DB.DirectDatabaseQuery
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
+
251
+ if ( ! $terms ) {
252
+ $this->admin_notices->add_notice(
253
+ __( 'Cyr To Lat has not found existing term slugs for conversion.', 'cyr2lat' ),
254
+ 'notice notice-info is-dismissible'
255
+ );
256
+
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 ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
281
+ if ( \Patchwork\Redefinitions\defined(__NAMESPACE__, 'WP_DEBUG_LOG' ) && \Patchwork\Redefinitions\constant(__NAMESPACE__, 'WP_DEBUG_LOG' ) ) {
282
+ // @phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_error_log
283
+ \Patchwork\Redefinitions\error_log(__NAMESPACE__, 'Cyr To Lat: ' . $message );
284
+ // @phpcs:enable WordPress.PHP.DevelopmentFunctions.error_log_error_log
285
+ }
286
+ }
287
+ }\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/64c11395d6a993bb4748cbb13c06e511.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP-CLI support.
4
+ *
5
+ * @package cyr-to-lat
6
+ * @link https://github.com/mihdan/wp-rocket-cli/blob/master/command.php
7
+ */
8
+
9
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
10
+
11
+ use cli\progress\Bar;
12
+ use WP_CLI\NoOp;
13
+ use WP_CLI_Command;
14
+ use function WP_CLI\Utils\make_progress_bar;
15
+
16
+ /**
17
+ * Class WP_CLI
18
+ *
19
+ * @class WP_CLI
20
+ */
21
+ class WP_CLI extends WP_CLI_Command {
22
+
23
+ /**
24
+ * Converter class.
25
+ *
26
+ * @var Converter
27
+ */
28
+ private $converter;
29
+
30
+ /**
31
+ * WP_CLI constructor.
32
+ *
33
+ * @param Converter $converter Converter.
34
+ */
35
+ public function __construct( Converter $converter ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
36
+ parent::__construct();
37
+ $this->converter = $converter;
38
+ }
39
+
40
+ /**
41
+ * Regenerate old slugs.
42
+ *
43
+ * ## EXAMPLES
44
+ *
45
+ * $ wp cyr2lat regenerate
46
+ * Success: Regenerate Completed.
47
+ *
48
+ * @subcommand regenerate
49
+ *
50
+ * @param array $args Arguments.
51
+ * @param array $assoc_args Arguments in associative array.
52
+ */
53
+ public function regenerate( $args = [], $assoc_args = [] ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
54
+
55
+ /**
56
+ * Notify instance.
57
+ *
58
+ * @var Bar $notify
59
+ */
60
+ $notify = $this->make_progress_bar();
61
+
62
+ $result = [];
63
+
64
+ if ( ! empty( $assoc_args['post_status'] ) ) {
65
+ $result['post_status'] = explode( ',', $assoc_args['post_status'] );
66
+ $result['post_status'] = array_values( \Patchwork\Redefinitions\array_filter(__NAMESPACE__, \Patchwork\Redefinitions\array_map(__NAMESPACE__, 'trim', $result['post_status'] ) ) );
67
+ }
68
+
69
+ if ( ! empty( $assoc_args['post_type'] ) ) {
70
+ $result['post_type'] = explode( ',', $assoc_args['post_type'] );
71
+ $result['post_type'] = array_values( \Patchwork\Redefinitions\array_filter(__NAMESPACE__, \Patchwork\Redefinitions\array_map(__NAMESPACE__, 'trim', $result['post_type'] ) ) );
72
+ }
73
+
74
+ $this->converter->convert_existing_slugs( $result );
75
+ $notify->tick();
76
+ $notify->finish();
77
+
78
+ \WP_CLI::success( 'Regenerate Completed.' );
79
+ }
80
+
81
+ /**
82
+ * Make progress bar.
83
+ *
84
+ * @return Bar|NoOp
85
+ */
86
+ public function make_progress_bar() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
87
+ return make_progress_bar( 'Regenerate existing slugs', 1 );
88
+ }
89
+ }\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/7a6bb82a1570d399a0fc0211458a3b75.php ADDED
@@ -0,0 +1,234 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Class to check requirements of the plugin.
4
+ *
5
+ * @package cyr-to-lat
6
+ */
7
+
8
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
9
+
10
+ use WP_Filesystem_Direct;
11
+
12
+ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
13
+
14
+ /**
15
+ * Class Requirements
16
+ */
17
+ class Requirements {
18
+
19
+ /**
20
+ * Admin notices.
21
+ *
22
+ * @var Admin_Notices
23
+ */
24
+ protected $admin_notices;
25
+
26
+ /**
27
+ * WP file system direct.
28
+ *
29
+ * @var WP_Filesystem_Direct
30
+ */
31
+ protected $wp_filesystem;
32
+
33
+ /**
34
+ * Restrict notice to Cyr To Lat settings page.
35
+ *
36
+ * @var array
37
+ */
38
+ protected $cyr2lat_page;
39
+
40
+ /**
41
+ * Requirements constructor.
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 ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
47
+ $this->admin_notices = $admin_notices;
48
+ if ( ! $this->admin_notices ) {
49
+ $this->admin_notices = new Admin_Notices();
50
+ }
51
+
52
+ $this->cyr2lat_page = [ 'page' => Settings::SCREEN_ID ];
53
+
54
+ // @codeCoverageIgnoreStart
55
+ if ( ! \Patchwork\Redefinitions\function_exists(__NAMESPACE__, 'WP_Filesystem' ) ) {
56
+ require_once ABSPATH . 'wp-admin/includes/file.php';
57
+ }
58
+ // @codeCoverageIgnoreEnd
59
+
60
+ if ( ! WP_Filesystem() ) {
61
+ return;
62
+ }
63
+
64
+ $this->wp_filesystem = $wp_filesystem;
65
+ if ( ! $this->wp_filesystem ) {
66
+ $this->wp_filesystem = new WP_Filesystem_Direct( null );
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Check if requirements are met.
72
+ *
73
+ * @return bool
74
+ */
75
+ public function are_requirements_met() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
76
+ $is_php_version_required = $this->is_php_version_required();
77
+ $is_max_input_vars_required = $this->is_max_input_vars_required();
78
+
79
+ if ( ! $is_php_version_required ) {
80
+ add_action( 'admin_init', [ $this, 'deactivate_plugin' ] );
81
+ }
82
+
83
+ return $is_php_version_required && $is_max_input_vars_required;
84
+ }
85
+
86
+ /**
87
+ * Deactivate plugin.
88
+ */
89
+ public function deactivate_plugin() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
90
+ if ( is_plugin_active( plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ) ) ) {
91
+ deactivate_plugins( plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ) );
92
+ // phpcs:disable WordPress.Security.NonceVerification.Recommended
93
+ if ( isset( $_GET['activate'] ) ) {
94
+ unset( $_GET['activate'] );
95
+ }
96
+ // phpcs:enable WordPress.Security.NonceVerification.Recommended
97
+
98
+ $this->admin_notices->add_notice(
99
+ __( 'Cyr To Lat plugin has been deactivated.', 'cyr2lat' ),
100
+ 'notice notice-info is-dismissible'
101
+ );
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Check php version.
107
+ *
108
+ * @return bool
109
+ */
110
+ private function is_php_version_required() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
111
+ if ( version_compare( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION' ), \Patchwork\Redefinitions\phpversion(__NAMESPACE__), '>' ) ) {
112
+ /* translators: 1: Current PHP version number, 2: Cyr To Lat version, 3: Minimum required PHP version number */
113
+ $message = sprintf( __( 'Your server is running PHP version %1$s but Cyr To Lat %2$s requires at least %3$s.', 'cyr2lat' ), \Patchwork\Redefinitions\phpversion(__NAMESPACE__), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_MINIMUM_PHP_REQUIRED_VERSION' ) );
114
+
115
+ $this->admin_notices->add_notice( $message, 'notice notice-error' );
116
+
117
+ return false;
118
+ }
119
+
120
+ return true;
121
+ }
122
+
123
+ /**
124
+ * Check max_input_vars.
125
+ *
126
+ * @return bool
127
+ */
128
+ private function is_max_input_vars_required() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
129
+ if ( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) > \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'max_input_vars' ) ) {
130
+ if ( $this->wp_filesystem ) {
131
+ $this->try_to_fix_max_input_vars();
132
+ } else {
133
+ $this->admin_notices->add_notice(
134
+ __( 'Unable to get filesystem access.', 'cyr2lat' ),
135
+ 'notice notice-error',
136
+ $this->cyr2lat_page
137
+ );
138
+ $this->ask_to_increase_max_input_vars();
139
+
140
+ return true;
141
+ }
142
+ }
143
+
144
+ if ( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) > \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'max_input_vars' ) ) {
145
+ $mtime = $this->wp_filesystem->mtime( $this->get_user_ini_filename() );
146
+ $ini_ttl = intval( \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'user_ini.cache_ttl' ) );
147
+ $time_left = ( $mtime + $ini_ttl ) - \Patchwork\Redefinitions\time(__NAMESPACE__);
148
+
149
+ if ( 0 < $time_left ) {
150
+ /* translators: 1: max_input_vars value, 2: Cyr To Lat version, 3: Minimum required max_input_vars */
151
+ $message = sprintf( __( 'Your server is running PHP with max_input_vars=%1$d but Cyr To Lat %2$s requires at least %3$d.', 'cyr2lat' ), \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'max_input_vars' ), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ), \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) );
152
+
153
+ $message .= '<br>';
154
+ /* translators: 1: .user.ini filename */
155
+ $message .= sprintf( __( 'We have updated settings in %s.', 'cyr2lat' ), \Patchwork\Redefinitions\realpath(__NAMESPACE__, $this->get_user_ini_filename() ) );
156
+ $message .= '<br>';
157
+ /* translators: 1: Wait time in seconds */
158
+ $message .= sprintf( __( 'Please try again in %d s.', 'cyr2lat' ), $time_left );
159
+
160
+ $this->admin_notices->add_notice( $message, 'notice notice-error', $this->cyr2lat_page );
161
+ } else {
162
+ $this->ask_to_increase_max_input_vars();
163
+ }
164
+
165
+ return true;
166
+ }
167
+
168
+ return true;
169
+ }
170
+
171
+ /**
172
+ * Try to fix max_input_vars.
173
+ */
174
+ protected function try_to_fix_max_input_vars() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
175
+ $user_ini_filename = $this->get_user_ini_filename();
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
+ \Patchwork\Redefinitions\array_map(__NAMESPACE__, function ( $line ) use ( &$value ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
184
+ if ( preg_match( '/(?<![; ])\s*?(max_input_vars).*?=\D*?(\d+)/i', $line, $matches ) ) {
185
+ $value = (int) $matches[2];
186
+ }
187
+ },
188
+ $content_arr
189
+ );
190
+
191
+ if ( $value >= \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' ) ) {
192
+ return;
193
+ }
194
+
195
+ $content_arr = \Patchwork\Redefinitions\array_filter(__NAMESPACE__, $content_arr,
196
+ function ( $line ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
197
+ return false === strpos( $line, 'max_input_vars' );
198
+ }
199
+ );
200
+ if ( [ '' ] === $content_arr ) {
201
+ $content_arr = [];
202
+ }
203
+ $content_arr[] = 'max_input_vars = ' . \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_REQUIRED_MAX_INPUT_VARS' );
204
+ $content = implode( PHP_EOL, $content_arr );
205
+
206
+ $this->wp_filesystem->put_contents( $user_ini_filename, $content );
207
+ }
208
+
209
+ /**
210
+ * Get .user.ini filename.
211
+ *
212
+ * @return string
213
+ */
214
+ private function get_user_ini_filename() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
215
+ return ABSPATH . 'wp-admin/' . \Patchwork\Redefinitions\ini_get(__NAMESPACE__, 'user_ini.filename' );
216
+ }
217
+
218
+ /**
219
+ * Asl user to increase max_input_vars.
220
+ */
221
+ private function ask_to_increase_max_input_vars() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
222
+ $message = __( 'Please increase max input vars limit up to 1500.', 'cyr2lat' );
223
+
224
+ $message .= '<br>';
225
+ $message .= __( 'See: <a href="http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit" target="_blank">Increasing max input vars limit.</a>', 'cyr2lat' );
226
+
227
+ $this->admin_notices->add_notice(
228
+ $message,
229
+ 'notice notice-error',
230
+ [ 'page' => Settings::SCREEN_ID ]
231
+ );
232
+ }
233
+ }\Patchwork\CallRerouting\deployQueue();
234
+ }
vendor/lucatume/function-mocker/cache/7dd6f1c277a6c78d8318bbe76000ada3.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php \Patchwork\CallRerouting\deployQueue();class intercept {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/823ab44b7fe7fb35b7976f7a7fbf1e7a.php ADDED
@@ -0,0 +1,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Background old post slugs converting process
4
+ *
5
+ * @package cyr-to-lat
6
+ */
7
+
8
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
9
+
10
+ use stdClass;
11
+
12
+ /**
13
+ * Class Post_Conversion_Process
14
+ */
15
+ class Post_Conversion_Process extends Conversion_Process {
16
+
17
+ /**
18
+ * Site locale.
19
+ *
20
+ * @var string
21
+ */
22
+ private $locale;
23
+
24
+ /**
25
+ * Current post to convert.
26
+ *
27
+ * @var stdClass
28
+ */
29
+ private $post;
30
+
31
+ /**
32
+ * Process action name
33
+ *
34
+ * @var string
35
+ */
36
+ protected $action;
37
+
38
+ /**
39
+ * Post_Conversion_Process constructor.
40
+ *
41
+ * @param Main $main Plugin main class.
42
+ */
43
+ public function __construct( $main ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
44
+ $this->action = \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_POST_CONVERSION_ACTION' );
45
+ $this->locale = get_locale();
46
+
47
+ parent::__construct( $main );
48
+ }
49
+
50
+ /**
51
+ * Task. Updates single post
52
+ *
53
+ * @param stdClass $post Queue item to iterate over.
54
+ *
55
+ * @return mixed
56
+ */
57
+ protected function task( $post ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
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 );
76
+ $this->rename_thumbnails( $post->ID );
77
+ $this->update_attachment_metadata( $post->ID );
78
+ }
79
+ }
80
+
81
+ return false;
82
+ }
83
+
84
+ /**
85
+ * Rename attachment.
86
+ *
87
+ * @param int $post_id Post ID.
88
+ */
89
+ protected function rename_attachment( $post_id ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
90
+ $file = get_attached_file( $post_id );
91
+
92
+ if ( $file ) {
93
+ $updated = false;
94
+ $transliterated_file = $this->get_transliterated_file( $file );
95
+ $rename = $this->rename_file( $file, $transliterated_file );
96
+ if ( $rename ) {
97
+ $updated = update_attached_file( $post_id, $transliterated_file );
98
+ }
99
+
100
+ if ( $updated ) {
101
+ $this->log( __( 'Attachment file converted:', 'cyr2lat' ) . ' ' . $file . ' => ' . $transliterated_file );
102
+
103
+ return;
104
+ }
105
+ }
106
+
107
+ $this->log( __( 'Cannot convert attachment file for attachment id:', 'cyr2lat' ) . ' ' . $post_id );
108
+ }
109
+
110
+ /**
111
+ * Rename thumbnails.
112
+ *
113
+ * @param int $post_id Post ID.
114
+ */
115
+ protected function rename_thumbnails( $post_id ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
116
+ $sizes = get_intermediate_image_sizes();
117
+
118
+ foreach ( $sizes as $size ) {
119
+ $url = wp_get_attachment_image_src( $post_id, $size )[0];
120
+ $file = untrailingslashit( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'ABSPATH' ) ) . wp_make_link_relative( $url );
121
+ $transliterated_file = $this->get_transliterated_file( $file );
122
+
123
+ $rename = $this->rename_file( $file, $transliterated_file );
124
+ if ( $rename ) {
125
+ $this->log( __( 'Thumbnail file renamed:', 'cyr2lat' ) . ' ' . $file . ' => ' . $transliterated_file );
126
+ }
127
+ if ( false === $rename ) {
128
+ $this->log( __( 'Cannot rename thumbnail file:', 'cyr2lat' ) . ' ' . $file );
129
+ }
130
+ }
131
+ }
132
+
133
+ /**
134
+ * Update attachment metadata.
135
+ *
136
+ * @param int $attachment_id Attachment ID.
137
+ */
138
+ protected function update_attachment_metadata( $attachment_id ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
139
+ $meta = wp_get_attachment_metadata( $attachment_id );
140
+
141
+ if ( isset( $meta['file'] ) ) {
142
+ $meta['file'] = $this->main->transliterate( $meta['file'] );
143
+ }
144
+
145
+ if ( isset( $meta['sizes'] ) ) {
146
+ foreach ( $meta['sizes'] as $key => $size ) {
147
+ $meta['sizes'][ $key ]['file'] = $this->main->transliterate( $meta['sizes'][ $key ]['file'] );
148
+ }
149
+ }
150
+
151
+ wp_update_attachment_metadata( $attachment_id, $meta );
152
+ }
153
+
154
+ /**
155
+ * Get transliterated filename with path.
156
+ *
157
+ * @param string $file Filename.
158
+ *
159
+ * @return string
160
+ */
161
+ protected function get_transliterated_file( $file ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
162
+ $path = pathinfo( $file );
163
+ $transliterated_filename = $this->main->transliterate( $path['filename'] );
164
+
165
+ return $path['dirname'] . '/' . $transliterated_filename . '.' . $path['extension'];
166
+ }
167
+
168
+ /**
169
+ * Rename file.
170
+ * Return false if rename failed.
171
+ *
172
+ * @param string $file Full filename.
173
+ * @param string $new_file New full filename.
174
+ *
175
+ * @return bool|null
176
+ */
177
+ protected function rename_file( $file, $new_file ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
178
+ $path = pathinfo( $file );
179
+ $new_path = pathinfo( $new_file );
180
+
181
+ $filename = $path['filename'];
182
+ $new_filename = $new_path['filename'];
183
+
184
+ if ( $new_filename !== $filename ) {
185
+ return \Patchwork\Redefinitions\rename(__NAMESPACE__, $file, $new_file );
186
+ }
187
+
188
+ return null;
189
+ }
190
+
191
+ /**
192
+ * Complete
193
+ */
194
+ protected function complete() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
195
+ parent::complete();
196
+
197
+ $this->log( __( 'Post slugs conversion completed.', 'cyr2lat' ) );
198
+ }
199
+
200
+ /**
201
+ * Filter post locale
202
+ *
203
+ * @return string
204
+ */
205
+ public function filter_post_locale() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
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;
209
+ }
210
+ }\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/87c0186bd1f5eef7fac3cc830853843d.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php \Patchwork\CallRerouting\deployQueue();class WP_Screen {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/9c9e77b25faadb56dff570646e078dbf.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php \Patchwork\CallRerouting\deployQueue();class wp_api {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/ac2614677e1a12cb15d55208407c065d.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php \Patchwork\CallRerouting\deployQueue();class wp_api {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/c0ea46e7b4ef468cd221f627938ffc8a.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php \Patchwork\CallRerouting\deployQueue();class WP_Filesystem_Direct {}\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/c346f2492ecd70e9b3820fc0acea1c22.php ADDED
@@ -0,0 +1,768 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Settings.
4
+ *
5
+ * @package cyr-to-lat
6
+ */
7
+
8
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
9
+
10
+ use Cyr_To_Lat\Symfony\Polyfill\Mbstring\Mbstring;
11
+
12
+ /**
13
+ * Class Settings
14
+ *
15
+ * @class Settings
16
+ */
17
+ 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.
70
+ *
71
+ * @var array
72
+ */
73
+ protected $locales = [];
74
+
75
+ /**
76
+ * Settings constructor.
77
+ */
78
+ public function __construct() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
79
+ add_action( 'plugins_loaded', [ $this, 'init' ] );
80
+ }
81
+
82
+ /**
83
+ * Init plugin.
84
+ */
85
+ public function init() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
86
+ $this->load_plugin_textdomain();
87
+ $this->init_form_fields();
88
+ $this->init_settings();
89
+ $this->init_hooks();
90
+ }
91
+
92
+ /**
93
+ * Init class hooks.
94
+ */
95
+ public function init_hooks() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
96
+ add_filter(
97
+ 'plugin_action_links_' . plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ),
98
+ [ $this, 'add_settings_link' ],
99
+ 10,
100
+ 4
101
+ );
102
+
103
+ add_action( 'admin_menu', [ $this, 'add_settings_page' ] );
104
+ add_action( 'current_screen', [ $this, 'setup_sections' ] );
105
+ add_action( 'current_screen', [ $this, 'setup_fields' ] );
106
+
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
+ /**
113
+ * Add link to plugin setting page on plugins page.
114
+ *
115
+ * @param array $actions An array of plugin action links. By default this can include 'activate',
116
+ * 'deactivate', and 'delete'. With Multisite active this can also include
117
+ * 'network_active' and 'network_only' items.
118
+ * @param string $plugin_file Path to the plugin file relative to the plugins directory.
119
+ * @param array $plugin_data An array of plugin data. See `get_plugin_data()`.
120
+ * @param string $context The plugin context. By default this can include 'all', 'active', 'inactive',
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 ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
126
+ $ctl_actions = [
127
+ 'settings' =>
128
+ '<a href="' . admin_url( 'options-general.php?page=' . self::PAGE ) .
129
+ '" aria-label="' . esc_attr__( 'View Cyr To Lat settings', 'cyr2lat' ) . '">' .
130
+ esc_html__( 'Settings', 'cyr2lat' ) . '</a>',
131
+ ];
132
+
133
+ return array_merge( $ctl_actions, $actions );
134
+ }
135
+
136
+ /**
137
+ * Init locales.
138
+ */
139
+ protected function init_locales() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
140
+ if ( ! empty( $this->locales ) ) {
141
+ return;
142
+ }
143
+
144
+ $this->locales = [
145
+ 'iso9' => [
146
+ 'label' => __( 'ISO9 Table', 'cyr2lat' ),
147
+ ],
148
+ 'bel' => [
149
+ 'label' => __( 'bel Table', 'cyr2lat' ),
150
+ ],
151
+ 'uk' => [
152
+ 'label' => __( 'uk Table', 'cyr2lat' ),
153
+ ],
154
+ 'bg_BG' => [
155
+ 'label' => __( 'bg_BG Table', 'cyr2lat' ),
156
+ ],
157
+ 'mk_MK' => [
158
+ 'label' => __( 'mk_MK Table', 'cyr2lat' ),
159
+ ],
160
+ 'sr_RS' => [
161
+ 'label' => __( 'sr_RS Table', 'cyr2lat' ),
162
+ ],
163
+ 'el' => [
164
+ 'label' => __( 'el Table', 'cyr2lat' ),
165
+ ],
166
+ 'hy' => [
167
+ 'label' => __( 'hy Table', 'cyr2lat' ),
168
+ ],
169
+ 'ka_GE' => [
170
+ 'label' => __( 'ka_GE Table', 'cyr2lat' ),
171
+ ],
172
+ 'kk' => [
173
+ 'label' => __( 'kk Table', 'cyr2lat' ),
174
+ ],
175
+ 'he_IL' => [
176
+ 'label' => __( 'he_IL Table', 'cyr2lat' ),
177
+ ],
178
+ 'zh_CN' => [
179
+ 'label' => __( 'zh_CN Table', 'cyr2lat' ),
180
+ ],
181
+ ];
182
+ }
183
+
184
+ /**
185
+ * Get current locale.
186
+ *
187
+ * @return string
188
+ */
189
+ private function get_current_locale() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
190
+ $current_locale = get_locale();
191
+
192
+ return in_array( $current_locale, array_keys( $this->locales ), true ) ? $current_locale : 'iso9';
193
+ }
194
+
195
+ /**
196
+ * Init options form fields.
197
+ */
198
+ public function init_form_fields() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
199
+ $this->init_locales();
200
+
201
+ $current_locale = $this->get_current_locale();
202
+
203
+ $this->form_fields = [];
204
+
205
+ foreach ( $this->locales as $locale => $info ) {
206
+ $current = ( $locale === $current_locale ) ? '<br>' . __( '(current)', 'cyr2lat' ) : '';
207
+
208
+ $this->form_fields[ $locale ] = [
209
+ 'label' => $info['label'] . $current,
210
+ 'section' => $locale . '_section',
211
+ 'type' => 'table',
212
+ 'placeholder' => '',
213
+ 'helper' => '',
214
+ 'supplemental' => '',
215
+ 'default' => Conversion_Tables::get( $locale ),
216
+ ];
217
+ }
218
+ }
219
+
220
+ /**
221
+ * Initialise Settings.
222
+ *
223
+ * Store all settings in a single database entry
224
+ * and make sure the $settings array is either the default
225
+ * or the settings stored in the database.
226
+ */
227
+ public function init_settings() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
228
+ $this->settings = get_option( self::OPTION_NAME, null );
229
+
230
+ $form_fields = $this->get_form_fields();
231
+
232
+ // If there are no settings defined, use defaults.
233
+ if ( ! is_array( $this->settings ) ) {
234
+ $this->settings = array_merge( array_fill_keys( array_keys( $form_fields ), '' ), wp_list_pluck( $form_fields, 'default' ) );
235
+ } else {
236
+ $this->settings = array_merge( wp_list_pluck( $form_fields, 'default' ), $this->settings );
237
+ }
238
+ }
239
+
240
+ /**
241
+ * Get the form fields after they are initialized.
242
+ *
243
+ * @return array of options
244
+ */
245
+ public function get_form_fields() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
246
+ if ( empty( $this->form_fields ) ) {
247
+ $this->init_form_fields();
248
+ }
249
+
250
+ return \Patchwork\Redefinitions\array_map(__NAMESPACE__, [ $this, 'set_defaults' ], $this->form_fields );
251
+ }
252
+
253
+ /**
254
+ * Set default required properties for each field.
255
+ *
256
+ * @param array $field Settings field.
257
+ *
258
+ * @return array
259
+ */
260
+ protected function set_defaults( $field ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
261
+ if ( ! isset( $field['default'] ) ) {
262
+ $field['default'] = '';
263
+ }
264
+
265
+ return $field;
266
+ }
267
+
268
+ /**
269
+ * Add settings page to the menu.
270
+ */
271
+ public function add_settings_page() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
272
+ $parent_slug = 'options-general.php';
273
+ $page_title = __( 'Cyr To Lat', 'cyr2lat' );
274
+ $menu_title = __( 'Cyr To Lat', 'cyr2lat' );
275
+ $capability = 'manage_options';
276
+ $slug = self::PAGE;
277
+ $callback = [ $this, 'settings_page' ];
278
+ add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $slug, $callback );
279
+ }
280
+
281
+ /**
282
+ * Settings page.
283
+ */
284
+ public function settings_page() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
285
+ if ( ! $this->is_options_screen() ) {
286
+ return;
287
+ }
288
+
289
+ ?>
290
+ <div class="wrap">
291
+ <h2 id="title">
292
+ <?php
293
+ // Admin panel title.
294
+ echo( esc_html( __( 'Cyr To Lat Plugin Options', 'cyr2lat' ) ) );
295
+ ?>
296
+ </h2>
297
+
298
+ <form id="ctl-options" action="<?php echo esc_url( admin_url( 'options.php' ) ); ?>" method="post">
299
+ <?php
300
+ do_settings_sections( self::PAGE ); // Sections with options.
301
+ settings_fields( self::OPTION_GROUP ); // Hidden protection fields.
302
+ submit_button();
303
+ ?>
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
335
+ target="_blank"
336
+ href="https://wordpress.org/support/view/plugin-reviews/cyr2lat?rate=5#postform">
337
+ <?php echo esc_html( __( 'Leave a ★★★★★ plugin review on WordPress.org', 'cyr2lat' ) ); ?>
338
+ </a>
339
+ </div>
340
+ </div>
341
+ <?php
342
+ }
343
+
344
+ /**
345
+ * Setup settings sections.
346
+ */
347
+ public function setup_sections() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
348
+ if ( ! $this->is_options_screen() ) {
349
+ return;
350
+ }
351
+
352
+ foreach ( $this->form_fields as $form_field ) {
353
+ add_settings_section(
354
+ $form_field['section'],
355
+ $form_field['label'],
356
+ [ $this, 'section_callback' ],
357
+ self::PAGE
358
+ );
359
+ }
360
+ }
361
+
362
+ /**
363
+ * Section callback.
364
+ *
365
+ * @param array $arguments Section arguments.
366
+ */
367
+ public function section_callback( $arguments ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
368
+ $locale = str_replace( '_section', '', $arguments['id'] );
369
+ if ( $this->get_current_locale() === $locale ) {
370
+ echo '<div id="ctl-current"></div>';
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Setup settings fields.
376
+ */
377
+ public function setup_fields() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
378
+ if ( ! $this->is_options_screen() ) {
379
+ return;
380
+ }
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
+
390
+ add_settings_field(
391
+ $key,
392
+ $field['label'],
393
+ [ $this, 'field_callback' ],
394
+ self::PAGE,
395
+ $field['section'],
396
+ $field
397
+ );
398
+ }
399
+ }
400
+
401
+ /**
402
+ * Output settings field.
403
+ *
404
+ * @param array $arguments Field arguments.
405
+ */
406
+ public function field_callback( $arguments ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
407
+ if ( ! isset( $arguments['field_id'] ) ) {
408
+ return;
409
+ }
410
+
411
+ $value = $this->get_option( $arguments['field_id'] );
412
+
413
+ // Check which type of field we want.
414
+ switch ( $arguments['type'] ) {
415
+ case 'text':
416
+ case 'password':
417
+ case 'number':
418
+ printf(
419
+ '<input name="%1$s[%2$s]" id="%2$s" type="%3$s" placeholder="%4$s" value="%5$s" class="regular-text" />',
420
+ esc_html( self::OPTION_NAME ),
421
+ esc_attr( $arguments['field_id'] ),
422
+ esc_attr( $arguments['type'] ),
423
+ esc_attr( $arguments['placeholder'] ),
424
+ esc_html( $value )
425
+ );
426
+ break;
427
+ case 'textarea':
428
+ printf(
429
+ '<textarea name="%1$s[%2$s]" id="%2$s" placeholder="%3$s" rows="5" cols="50">%4$s</textarea>',
430
+ esc_html( self::OPTION_NAME ),
431
+ esc_attr( $arguments['field_id'] ),
432
+ esc_attr( $arguments['placeholder'] ),
433
+ wp_kses_post( $value )
434
+ );
435
+ break;
436
+ case 'checkbox':
437
+ case 'radio':
438
+ if ( 'checkbox' === $arguments['type'] ) {
439
+ $arguments['options'] = [ 'yes' => '' ];
440
+ }
441
+
442
+ if ( ! empty( $arguments['options'] ) && is_array( $arguments['options'] ) ) {
443
+ $options_markup = '';
444
+ $iterator = 0;
445
+ foreach ( $arguments['options'] as $key => $label ) {
446
+ $iterator ++;
447
+ $options_markup .= sprintf(
448
+ '<label for="%2$s_%7$s"><input id="%2$s_%7$s" name="%1$s[%2$s]" type="%3$s" value="%4$s" %5$s /> %6$s</label><br/>',
449
+ esc_html( self::OPTION_NAME ),
450
+ $arguments['field_id'],
451
+ $arguments['type'],
452
+ $key,
453
+ checked( $value, $key, false ),
454
+ $label,
455
+ $iterator
456
+ );
457
+ }
458
+ printf(
459
+ '<fieldset>%s</fieldset>',
460
+ wp_kses(
461
+ $options_markup,
462
+ [
463
+ 'label' => [
464
+ 'for' => [],
465
+ ],
466
+ 'input' => [
467
+ 'id' => [],
468
+ 'name' => [],
469
+ 'type' => [],
470
+ 'value' => [],
471
+ 'checked' => [],
472
+ ],
473
+ 'br' => [],
474
+ ]
475
+ )
476
+ );
477
+ }
478
+ break;
479
+ case 'select': // If it is a select dropdown.
480
+ if ( ! empty( $arguments['options'] ) && is_array( $arguments['options'] ) ) {
481
+ $options_markup = '';
482
+ foreach ( $arguments['options'] as $key => $label ) {
483
+ $options_markup .= sprintf(
484
+ '<option value="%s" %s>%s</option>',
485
+ $key,
486
+ selected( $value, $key, false ),
487
+ $label
488
+ );
489
+ }
490
+ printf(
491
+ '<select name="%1$s[%2$s]">%3$s</select>',
492
+ esc_html( self::OPTION_NAME ),
493
+ esc_html( $arguments['field_id'] ),
494
+ wp_kses(
495
+ $options_markup,
496
+ [
497
+ 'option' => [
498
+ 'value' => [],
499
+ 'selected' => [],
500
+ ],
501
+ ]
502
+ )
503
+ );
504
+ }
505
+ break;
506
+ case 'multiple': // If it is a multiple select dropdown.
507
+ if ( ! empty( $arguments['options'] ) && is_array( $arguments['options'] ) ) {
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>',
518
+ $key,
519
+ $selected,
520
+ $label
521
+ );
522
+ }
523
+ printf(
524
+ '<select multiple="multiple" name="%1$s[%2$s][]">%3$s</select>',
525
+ esc_html( self::OPTION_NAME ),
526
+ esc_html( $arguments['field_id'] ),
527
+ wp_kses(
528
+ $options_markup,
529
+ [
530
+ 'option' => [
531
+ 'value' => [],
532
+ 'selected' => [],
533
+ ],
534
+ ]
535
+ )
536
+ );
537
+ }
538
+ break;
539
+ case 'table':
540
+ if ( is_array( $value ) ) {
541
+ $iterator = 0;
542
+ foreach ( $value as $key => $cell_value ) {
543
+ $id = $arguments['field_id'] . '-' . $iterator;
544
+
545
+ echo '<div class="ctl-table-cell">';
546
+ printf(
547
+ '<label for="%1$s">%2$s</label>',
548
+ esc_html( $id ),
549
+ esc_html( $key )
550
+ );
551
+ printf(
552
+ '<input name="%1$s[%2$s][%3$s]" id="%4$s" type="%5$s" placeholder="%6$s" value="%7$s" class="regular-text" />',
553
+ esc_html( self::OPTION_NAME ),
554
+ esc_attr( $arguments['field_id'] ),
555
+ esc_attr( $key ),
556
+ esc_attr( $id ),
557
+ 'text',
558
+ esc_attr( $arguments['placeholder'] ),
559
+ esc_html( $cell_value )
560
+ );
561
+ echo '</div>';
562
+
563
+ $iterator ++;
564
+ }
565
+ }
566
+ break;
567
+ default:
568
+ break;
569
+ }
570
+
571
+ // If there is help text.
572
+ $helper = $arguments['helper'];
573
+ if ( $helper ) {
574
+ printf( '<span class="helper"> %s</span>', esc_html( $helper ) );
575
+ }
576
+
577
+ // If there is supplemental text.
578
+ $supplemental = $arguments['supplemental'];
579
+ if ( $supplemental ) {
580
+ printf( '<p class="description">%s</p>', esc_html( $supplemental ) );
581
+ }
582
+ }
583
+
584
+ /**
585
+ * Get plugin option.
586
+ *
587
+ * @param string $key Setting name.
588
+ * @param mixed $empty_value Empty value for this setting.
589
+ *
590
+ * @return string|array The value specified for the option or a default value for the option.
591
+ */
592
+ public function get_option( $key, $empty_value = null ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
593
+ if ( empty( $this->settings ) ) {
594
+ $this->init_settings();
595
+ }
596
+
597
+ // Get option default if unset.
598
+ if ( ! isset( $this->settings[ $key ] ) ) {
599
+ $form_fields = $this->get_form_fields();
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
+
607
+ return $this->settings[ $key ];
608
+ }
609
+
610
+ /**
611
+ * Get a field default value. Defaults to '' if not set.
612
+ *
613
+ * @param array $field Setting field default value.
614
+ *
615
+ * @return string
616
+ */
617
+ protected function get_field_default( $field ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
618
+ return empty( $field['default'] ) ? '' : $field['default'];
619
+ }
620
+
621
+ /**
622
+ * Set plugin option.
623
+ *
624
+ * @param string $key Setting name.
625
+ * @param mixed $value Setting value.
626
+ */
627
+ public function set_option( $key, $value ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
628
+ if ( empty( $this->settings ) ) {
629
+ $this->init_settings();
630
+ }
631
+
632
+ $this->settings[ $key ] = $value;
633
+ update_option( self::OPTION_NAME, $this->settings );
634
+ }
635
+
636
+ /**
637
+ * Filter plugin option update.
638
+ *
639
+ * @param mixed $value New option value.
640
+ * @param mixed $old_value Old option value.
641
+ * @param string $option Option name.
642
+ *
643
+ * @return mixed
644
+ */
645
+ public function pre_update_option_filter( $value, $old_value, $option ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
646
+ if ( $value === $old_value ) {
647
+ return $value;
648
+ }
649
+
650
+ // We save only one table, so merge with all existing tables.
651
+ if ( is_array( $old_value ) && ( is_array( $value ) ) ) {
652
+ $value = array_merge( $old_value, $value );
653
+ }
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
+
668
+ return $value;
669
+ }
670
+
671
+ /**
672
+ * Enqueue class scripts.
673
+ */
674
+ public function admin_enqueue_scripts() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
675
+ if ( ! $this->is_options_screen() ) {
676
+ return;
677
+ }
678
+
679
+ wp_enqueue_script(
680
+ 'cyr-to-lat-settings',
681
+ \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_URL' ) . '/dist/js/settings/app.js',
682
+ [],
683
+ \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' ),
684
+ true
685
+ );
686
+
687
+ wp_enqueue_style(
688
+ 'cyr-to-lat-admin',
689
+ \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_URL' ) . '/css/cyr-to-lat-admin.css',
690
+ [],
691
+ \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_VERSION' )
692
+ );
693
+ }
694
+
695
+ /**
696
+ * Load plugin text domain.
697
+ */
698
+ public function load_plugin_textdomain() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
699
+ load_plugin_textdomain(
700
+ 'cyr2lat',
701
+ false,
702
+ dirname( plugin_basename( \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_FILE' ) ) ) . '/languages/'
703
+ );
704
+ }
705
+
706
+ /**
707
+ * Get transliteration table.
708
+ *
709
+ * @return array
710
+ */
711
+ public function get_table() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
712
+ // List of locales: https://make.wordpress.org/polyglots/teams/.
713
+ $locale = get_locale();
714
+ $table = $this->get_option( $locale );
715
+ if ( empty( $table ) ) {
716
+ $table = $this->get_option( 'iso9' );
717
+ }
718
+
719
+ return $this->transpose_chinese_table( $table );
720
+ }
721
+
722
+ /**
723
+ * Is current locale a Chinese one.
724
+ *
725
+ * @return bool
726
+ */
727
+ public function is_chinese_locale() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
728
+ $chinese_locales = [ 'zh_CN', 'zh_HK', 'zh_SG', 'zh_TW' ];
729
+
730
+ return in_array( get_locale(), $chinese_locales, true );
731
+ }
732
+
733
+ /**
734
+ * Transpose Chinese table.
735
+ *
736
+ * Chinese tables are stored in different way, to show them compact.
737
+ *
738
+ * @param array $table Table.
739
+ *
740
+ * @return array
741
+ */
742
+ protected function transpose_chinese_table( $table ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
743
+ if ( ! $this->is_chinese_locale() ) {
744
+ return $table;
745
+ }
746
+
747
+ $transposed_table = [];
748
+ foreach ( $table as $key => $item ) {
749
+ $hieroglyphs = Mbstring::mb_str_split( $item );
750
+ foreach ( $hieroglyphs as $hieroglyph ) {
751
+ $transposed_table[ $hieroglyph ] = $key;
752
+ }
753
+ }
754
+
755
+ return $transposed_table;
756
+ }
757
+
758
+ /**
759
+ * Is current admin screen the plugin options screen.
760
+ *
761
+ * @return bool
762
+ */
763
+ protected function is_options_screen() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
764
+ $current_screen = get_current_screen();
765
+
766
+ return $current_screen && ( 'options' === $current_screen->id || self::SCREEN_ID === $current_screen->id );
767
+ }
768
+ }\Patchwork\CallRerouting\deployQueue();
vendor/lucatume/function-mocker/cache/d046cd1f76aeed79b57fe7d207f9c445.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Background old slugs converting process
4
+ *
5
+ * @package cyr-to-lat
6
+ */
7
+
8
+ namespace Cyr_To_Lat; \Patchwork\CallRerouting\deployQueue();
9
+
10
+ use Cyr_To_Lat\KAGG\WP_Background_Processing\WP_Background_Process;
11
+
12
+ /**
13
+ * Class Conversion_Process
14
+ */
15
+ class Conversion_Process extends WP_Background_Process {
16
+
17
+ /**
18
+ * Prefix
19
+ *
20
+ * @var string
21
+ */
22
+ protected $prefix;
23
+
24
+ /**
25
+ * Plugin main class
26
+ *
27
+ * @var Main
28
+ */
29
+ protected $main;
30
+
31
+ /**
32
+ * Conversion_Process constructor
33
+ *
34
+ * @param Main $main Plugin main class.
35
+ */
36
+ public function __construct( $main ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
37
+ $this->main = $main;
38
+ $this->prefix = \Patchwork\Redefinitions\constant(__NAMESPACE__, 'CYR_TO_LAT_PREFIX' );
39
+
40
+ parent::__construct();
41
+ }
42
+
43
+ /**
44
+ * Task. Updates single post or term.
45
+ *
46
+ * @param mixed $item Queue item to iterate over.
47
+ *
48
+ * @return mixed
49
+ */
50
+ protected function task( $item ) {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
51
+ return false;
52
+ }
53
+
54
+ /**
55
+ * Complete
56
+ */
57
+ protected function complete() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
58
+ parent::complete();
59
+
60
+ set_site_transient( $this->identifier . '_process_completed', microtime() );
61
+ }
62
+
63
+ /**
64
+ * Check if process is completed.
65
+ * Delete relevant transient.
66
+ */
67
+ public function is_process_completed() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_class():null;$__pwFrame=\count(\debug_backtrace(0));if(\Patchwork\CallRerouting\dispatch($__pwClass,$__pwCalledClass,__FUNCTION__,$__pwFrame,$__pwResult)){return$__pwResult;}}unset($__pwClass,$__pwCalledClass,$__pwResult,$__pwClosureName,$__pwFrame);
68
+ if ( get_site_transient( $this->identifier . '_process_completed' ) ) {
69
+ // Process is marked as completed.
70
+ // Delete relevant site transient.
71
+ delete_site_transient( $this->identifier . '_process_completed' );
72
+
73
+ return true;
74
+ }
75
+
76
+ return false;
77
+ }
78
+
79
+ // phpcs:disable Generic.CodeAnalysis.UselessOverridingMethod.Found
80
+ /**
81
+ * Is process running
82
+ *
83
+ * Check whether the current process is already running
84
+ * in a background process.
85
+ */
86
+ public function is_process_running() {$__pwClosureName=__NAMESPACE__?__NAMESPACE__."\\{closure}":"\\{closure}";$__pwClass=(__CLASS__&&__FUNCTION__!==$__pwClosureName)?__CLASS__:null;if(!empty(\Patchwork\CallRerouting\State::$routes[$__pwClass][__FUNCTION__])){$__pwCalledClass=$__pwClass?\get_called_