diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
index 2ebbb1e..6887678 100644
--- a/.github/workflows/macos.yml
+++ b/.github/workflows/macos.yml
@@ -22,16 +22,5 @@ jobs:
run: |
rm -rf vendor
composer install
- - name: Generate key
- run: php artisan key:generate
- - name: Link Storage
- run: php artisan storage:link
- - name: Create Database
- run: |
- mkdir -p database
- touch database/database.sqlite
- - name: Execute tests (Unit and Feature tests) via PHPUnit
- env:
- DB_CONNECTION: sqlite
- DB_DATABASE: database/database.sqlite
+ - name: Execute tests via PHPUnit
run: vendor/bin/phpunit --stop-on-failure
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
index c46e912..2e676ac 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -22,16 +22,5 @@ jobs:
run: |
rm -rf vendor
composer install
- - name: Generate key
- run: php artisan key:generate
- - name: Link Storage
- run: php artisan storage:link
- - name: Create Database
- run: |
- mkdir -p database
- touch database/database.sqlite
- - name: Execute tests (Unit and Feature tests) via PHPUnit
- env:
- DB_CONNECTION: sqlite
- DB_DATABASE: database/database.sqlite
+ - name: Execute tests via PHPUnit
run: vendor/bin/phpunit --stop-on-failure
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 46d8f5e..27b3afd 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -22,16 +22,5 @@ jobs:
run: |
rm -rf vendor
composer install
- - name: Generate key
- run: php artisan key:generate
- - name: Link Storage
- run: php artisan storage:link
- - name: Create Database
- run: |
- mkdir -p database
- touch database/database.sqlite
- - name: Execute tests (Unit and Feature tests) via PHPUnit
- env:
- DB_CONNECTION: sqlite
- DB_DATABASE: database/database.sqlite
+ - name: Execute tests via PHPUnit
run: vendor/bin/phpunit --stop-on-failure
diff --git a/composer.json b/composer.json
index 28d9d62..262f9c3 100644
--- a/composer.json
+++ b/composer.json
@@ -11,6 +11,7 @@
}
},
"require-dev": {
- "heroku/heroku-buildpack-php": "*"
+ "heroku/heroku-buildpack-php": "*",
+ "phpunit/phpunit": "6.4.*"
}
}
diff --git a/panel/composer.json b/panel/composer.json
index fc57fd8..7c99b52 100644
--- a/panel/composer.json
+++ b/panel/composer.json
@@ -9,5 +9,8 @@
"panel\\util\\" : "src/main/php/util/",
"panel\\views\\" : "src/main/php/views/"
}
- }
+ },
+ "require-dev": {
+ "phpunit/phpunit": "6.4.*"
+ }
}
\ No newline at end of file
diff --git a/panel/vendor/bin/phpunit b/panel/vendor/bin/phpunit
new file mode 120000
index 0000000..2c48930
--- /dev/null
+++ b/panel/vendor/bin/phpunit
@@ -0,0 +1 @@
+../phpunit/phpunit/phpunit
\ No newline at end of file
diff --git a/panel/vendor/composer/autoload_classmap.php b/panel/vendor/composer/autoload_classmap.php
index 7a91153..7e9d6ce 100644
--- a/panel/vendor/composer/autoload_classmap.php
+++ b/panel/vendor/composer/autoload_classmap.php
@@ -6,4 +6,544 @@
$baseDir = dirname($vendorDir);
return array(
+ 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
+ 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
+ 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
+ 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
+ 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
+ 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
+ 'PHPUnit\\Framework\\Constraint\\ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
+ 'PHPUnit\\Framework\\Constraint\\Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
+ 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
+ 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
+ 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
+ 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
+ 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
+ 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
+ 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
+ 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
+ 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
+ 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
+ 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
+ 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
+ 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
+ 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
+ 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
+ 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
+ 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
+ 'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
+ 'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
+ 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
+ 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
+ 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
+ 'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
+ 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
+ 'PHPUnit\\Framework\\RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
+ 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
+ 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
+ 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
+ 'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
+ 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
+ 'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
+ 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
+ 'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
+ 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
+ 'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit\\Util\\Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
+ 'PHPUnit\\Util\\ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
+ 'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit\\Util\\Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
+ 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit\\Util\\Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
+ 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit\\Util\\InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
+ 'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
+ 'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
+ 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
+ 'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
+ 'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
+ 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
+ 'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
+ 'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
+ 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
+ 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Namespace.php',
+ 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
+ 'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
+ 'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Generator.php',
+ 'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation.php',
+ 'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/Object.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invocation/Static.php',
+ 'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Invokable.php',
+ 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
+ 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
+ 'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
+ 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/MockObject.php',
+ 'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
+ 'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub.php',
+ 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
+ 'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
+ 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
+ 'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/Return.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
+ 'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
+ 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
+ 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php',
+ 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
+ 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
+ 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
+ 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
+ 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php',
+ 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
+ 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php',
+ 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
+ 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php',
+ 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php',
+ 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
+ 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php',
+ 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php',
+ 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
+ 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php',
+ 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php',
+ 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php',
+ 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php',
+ 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php',
+ 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php',
+ 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php',
+ 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php',
+ 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php',
+ 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php',
+ 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
+ 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
+ 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
+ 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php',
+ 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php',
+ 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php',
+ 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php',
+ 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php',
+ 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
+ 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
+ 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php',
+ 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
+ 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
+ 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
+ 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
+ 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
+ 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
+ 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
+ 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php',
+ 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php',
+ 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
+ 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php',
+ 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php',
+ 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php',
+ 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/AbstractVersionConstraint.php',
+ 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/AndVersionConstraintGroup.php',
+ 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/AnyVersionConstraint.php',
+ 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/ExactVersionConstraint.php',
+ 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/Exception.php',
+ 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
+ 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/InvalidVersionException.php',
+ 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/OrVersionConstraintGroup.php',
+ 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
+ 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
+ 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
+ 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
+ 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php',
+ 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/VersionConstraint.php',
+ 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
+ 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
+ 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
+ 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
+ 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
+ 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
+ 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
+ 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
+ 'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php',
+ 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
+ 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
+ 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
+ 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
+ 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
+ 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
+ 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
+ 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
+ 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
+ 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
+ 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
+ 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
+ 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
+ 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
+ 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
+ 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
+ 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
+ 'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php',
+ 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
+ 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
+ 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
+ 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php',
+ 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
+ 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php',
+ 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
+ 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
+ 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
+ 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
+ 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
+ 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
+ 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
+ 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
+ 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php',
+ 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php',
+ 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php',
+ 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
+ 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
+ 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
);
diff --git a/panel/vendor/composer/autoload_files.php b/panel/vendor/composer/autoload_files.php
new file mode 100644
index 0000000..d931b8f
--- /dev/null
+++ b/panel/vendor/composer/autoload_files.php
@@ -0,0 +1,10 @@
+ $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
+);
diff --git a/panel/vendor/composer/autoload_psr4.php b/panel/vendor/composer/autoload_psr4.php
index 04beb6a..58dfdf9 100644
--- a/panel/vendor/composer/autoload_psr4.php
+++ b/panel/vendor/composer/autoload_psr4.php
@@ -6,6 +6,7 @@
$baseDir = dirname($vendorDir);
return array(
+ 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
'panel\\views\\' => array($baseDir . '/src/main/php/views'),
'panel\\util\\' => array($baseDir . '/src/main/php/util'),
'panel\\repositories\\' => array($baseDir . '/src/main/php/repositories'),
@@ -13,4 +14,8 @@
'panel\\dao\\' => array($baseDir . '/src/main/php/dao'),
'panel\\controllers\\' => array($baseDir . '/src/main/php/controllers'),
'panel\\config\\' => array($baseDir . '/src/main/php/config'),
+ 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
+ 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
+ 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
+ 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
);
diff --git a/panel/vendor/composer/autoload_real.php b/panel/vendor/composer/autoload_real.php
index 77c75ee..bb1fd72 100644
--- a/panel/vendor/composer/autoload_real.php
+++ b/panel/vendor/composer/autoload_real.php
@@ -50,6 +50,24 @@ public static function getLoader()
$loader->register(true);
+ if ($useStaticLoader) {
+ $includeFiles = Composer\Autoload\ComposerStaticInit4630986360581f4723d10687d24d5d01::$files;
+ } else {
+ $includeFiles = require __DIR__ . '/autoload_files.php';
+ }
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequire4630986360581f4723d10687d24d5d01($fileIdentifier, $file);
+ }
+
return $loader;
}
}
+
+function composerRequire4630986360581f4723d10687d24d5d01($fileIdentifier, $file)
+{
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ require $file;
+
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+ }
+}
diff --git a/panel/vendor/composer/autoload_static.php b/panel/vendor/composer/autoload_static.php
index 2800ce9..360f351 100644
--- a/panel/vendor/composer/autoload_static.php
+++ b/panel/vendor/composer/autoload_static.php
@@ -6,9 +6,14 @@
class ComposerStaticInit4630986360581f4723d10687d24d5d01
{
+ public static $files = array (
+ '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
+ );
+
public static $prefixLengthsPsr4 = array (
'p' =>
array (
+ 'phpDocumentor\\Reflection\\' => 25,
'panel\\views\\' => 12,
'panel\\util\\' => 11,
'panel\\repositories\\' => 19,
@@ -17,9 +22,28 @@ class ComposerStaticInit4630986360581f4723d10687d24d5d01
'panel\\controllers\\' => 18,
'panel\\config\\' => 13,
),
+ 'W' =>
+ array (
+ 'Webmozart\\Assert\\' => 17,
+ ),
+ 'P' =>
+ array (
+ 'Prophecy\\' => 9,
+ ),
+ 'D' =>
+ array (
+ 'Doctrine\\Instantiator\\' => 22,
+ 'DeepCopy\\' => 9,
+ ),
);
public static $prefixDirsPsr4 = array (
+ 'phpDocumentor\\Reflection\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
+ 1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
+ 2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
+ ),
'panel\\views\\' =>
array (
0 => __DIR__ . '/../..' . '/src/main/php/views',
@@ -48,6 +72,565 @@ class ComposerStaticInit4630986360581f4723d10687d24d5d01
array (
0 => __DIR__ . '/../..' . '/src/main/php/config',
),
+ 'Webmozart\\Assert\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webmozart/assert/src',
+ ),
+ 'Prophecy\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
+ ),
+ 'Doctrine\\Instantiator\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
+ ),
+ 'DeepCopy\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
+ ),
+ );
+
+ public static $classMap = array (
+ 'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
+ 'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
+ 'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
+ 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
+ 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
+ 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
+ 'PHPUnit\\Framework\\Constraint\\ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
+ 'PHPUnit\\Framework\\Constraint\\Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
+ 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
+ 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
+ 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
+ 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
+ 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
+ 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
+ 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
+ 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
+ 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
+ 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
+ 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalAnd.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalNot.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalOr.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LogicalXor.php',
+ 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/RegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
+ 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
+ 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatchesFormatDescription.php',
+ 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
+ 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
+ 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
+ 'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
+ 'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
+ 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
+ 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
+ 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
+ 'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
+ 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
+ 'PHPUnit\\Framework\\RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
+ 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
+ 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
+ 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
+ 'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
+ 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
+ 'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
+ 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
+ 'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
+ 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
+ 'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit\\Util\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
+ 'PHPUnit\\Util\\ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
+ 'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit\\Util\\Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
+ 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit\\Util\\Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
+ 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit\\Util\\InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
+ 'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
+ 'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
+ 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
+ 'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
+ 'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
+ 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
+ 'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/BadMethodCallException.php',
+ 'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Identity.php',
+ 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Match.php',
+ 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/MethodNameMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Namespace.php',
+ 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/ParametersMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Builder/Stub.php',
+ 'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/Exception.php',
+ 'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Generator.php',
+ 'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation.php',
+ 'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/Object.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invocation/Static.php',
+ 'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Invokable.php',
+ 'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyInvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/AnyParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/ConsecutiveParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Invocation.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtIndex.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtLeastOnce.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedAtMostCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/InvokedRecorder.php',
+ 'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/MethodName.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/Parameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Matcher/StatelessInvocation.php',
+ 'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockBuilder.php',
+ 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/MockObject.php',
+ 'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Exception/RuntimeException.php',
+ 'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub.php',
+ 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ConsecutiveCalls.php',
+ 'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/Exception.php',
+ 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/MatcherCollection.php',
+ 'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/Return.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnArgument.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnCallback.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnReference.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnSelf.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Stub/ReturnValueMap.php',
+ 'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Verifiable.php',
+ 'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
+ 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php',
+ 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
+ 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
+ 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
+ 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
+ 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php',
+ 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
+ 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php',
+ 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
+ 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php',
+ 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php',
+ 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
+ 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php',
+ 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php',
+ 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
+ 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php',
+ 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php',
+ 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php',
+ 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php',
+ 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php',
+ 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php',
+ 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php',
+ 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php',
+ 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php',
+ 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php',
+ 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
+ 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
+ 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
+ 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php',
+ 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php',
+ 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php',
+ 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php',
+ 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php',
+ 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
+ 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
+ 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php',
+ 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
+ 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
+ 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
+ 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
+ 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
+ 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
+ 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
+ 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php',
+ 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php',
+ 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
+ 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php',
+ 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php',
+ 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php',
+ 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AbstractVersionConstraint.php',
+ 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/AndVersionConstraintGroup.php',
+ 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/AnyVersionConstraint.php',
+ 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/ExactVersionConstraint.php',
+ 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/Exception.php',
+ 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php',
+ 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/InvalidVersionException.php',
+ 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/OrVersionConstraintGroup.php',
+ 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
+ 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php',
+ 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/SpecificMajorVersionConstraint.php',
+ 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/UnsupportedVersionConstraintException.php',
+ 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php',
+ 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraint.php',
+ 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
+ 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
+ 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
+ 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
+ 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
+ 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
+ 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
+ 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
+ 'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php',
+ 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
+ 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
+ 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
+ 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
+ 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
+ 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
+ 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
+ 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
+ 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
+ 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
+ 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
+ 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
+ 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
+ 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
+ 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
+ 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
+ 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
+ 'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php',
+ 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
+ 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
+ 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
+ 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php',
+ 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
+ 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php',
+ 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
+ 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
+ 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
+ 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
+ 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
+ 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
+ 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
+ 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
+ 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php',
+ 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php',
+ 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php',
+ 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
+ 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
+ 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
);
public static function getInitializer(ClassLoader $loader)
@@ -55,6 +638,7 @@ public static function getInitializer(ClassLoader $loader)
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit4630986360581f4723d10687d24d5d01::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit4630986360581f4723d10687d24d5d01::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit4630986360581f4723d10687d24d5d01::$classMap;
}, null, ClassLoader::class);
}
diff --git a/panel/vendor/composer/installed.json b/panel/vendor/composer/installed.json
index fe51488..7f1971b 100644
--- a/panel/vendor/composer/installed.json
+++ b/panel/vendor/composer/installed.json
@@ -1 +1,1575 @@
-[]
+[
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.1",
+ "version_normalized": "1.4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
+ },
+ "time": "2022-03-03T08:28:38+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ]
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.11.0",
+ "version_normalized": "1.11.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "time": "2022-03-03T13:19:32+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ]
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^1.0.1",
+ "php": "^5.6 || ^7.0"
+ },
+ "time": "2017-03-05T18:14:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "time": "2017-03-05T17:38:23+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "version_normalized": "2.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2020-06-27T09:03:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ]
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "version_normalized": "5.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "time": "2021-10-19T17:43:47+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "installation-source": "source",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock."
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.6.1",
+ "version_normalized": "1.6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "77a32518733312af16a44300404e945338981de3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
+ "reference": "77a32518733312af16a44300404e945338981de3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "time": "2022-03-15T21:29:03+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.10.3",
+ "version_normalized": "1.10.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+ "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5 || ^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ },
+ "time": "2020-03-05T15:02:03+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ]
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "5.3.2",
+ "version_normalized": "5.3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0",
+ "phpunit/php-file-iterator": "^1.4.2",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^2.0.1",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^3.0",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.5.5"
+ },
+ "time": "2018-04-06T15:36:58+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ]
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.5",
+ "version_normalized": "1.4.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "time": "2017-11-27T13:52:08+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ]
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "time": "2015-06-21T13:50:34+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ]
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.9",
+ "version_normalized": "1.0.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "time": "2017-02-26T11:10:40+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ]
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "2.0.2",
+ "version_normalized": "2.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2.4"
+ },
+ "time": "2017-11-27T05:48:46+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "abandoned": true
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "6.4.4",
+ "version_normalized": "6.4.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/562f7dc75d46510a4ed5d16189ae57fbe45a9932",
+ "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "^1.6.1",
+ "phar-io/manifest": "^1.0.1",
+ "phar-io/version": "^1.0",
+ "php": "^7.0",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^5.2.2",
+ "phpunit/php-file-iterator": "^1.4.2",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^1.0.9",
+ "phpunit/phpunit-mock-objects": "^4.0.3",
+ "sebastian/comparator": "^2.0.2",
+ "sebastian/diff": "^2.0",
+ "sebastian/environment": "^3.1",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^1.0",
+ "sebastian/version": "^2.0.1"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "3.0.2",
+ "phpunit/dbunit": "<3.0"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^1.1"
+ },
+ "time": "2017-11-08T11:26:09+00:00",
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.4.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ]
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "4.0.4",
+ "version_normalized": "4.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "2f789b59ab89669015ad984afa350c4ec577ade0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0",
+ "reference": "2f789b59ab89669015ad984afa350c4ec577ade0",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.5",
+ "php": "^7.0",
+ "phpunit/php-text-template": "^1.2.1",
+ "sebastian/exporter": "^3.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "time": "2017-08-03T14:08:16+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "abandoned": true
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5"
+ },
+ "time": "2020-11-30T08:15:22+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ]
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "2.1.3",
+ "version_normalized": "2.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/diff": "^2.0 || ^3.0",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.4"
+ },
+ "time": "2018-02-01T13:46:46+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ]
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2"
+ },
+ "time": "2017-08-03T08:09:46+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ]
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "3.1.0",
+ "version_normalized": "3.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.1"
+ },
+ "time": "2017-07-01T08:51:00+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ]
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "3.1.4",
+ "version_normalized": "3.1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
+ "reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^8.5"
+ },
+ "time": "2021-11-11T13:51:24+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ]
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "2.0.0",
+ "version_normalized": "2.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "time": "2017-04-27T15:39:26+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ]
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.4",
+ "version_normalized": "3.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
+ "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "time": "2020-11-30T07:40:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ]
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.1.2",
+ "version_normalized": "1.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
+ "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "time": "2020-11-30T07:37:18+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ]
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.1",
+ "version_normalized": "3.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
+ "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "time": "2020-11-30T07:34:24+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ]
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "time": "2015-07-28T20:34:47+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "time": "2016-10-03T07:35:21+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2021-07-28T10:34:58+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ]
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.11.0",
+ "version_normalized": "1.11.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "time": "2022-06-03T18:03:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ]
+ }
+]
diff --git a/panel/vendor/doctrine/instantiator/.doctrine-project.json b/panel/vendor/doctrine/instantiator/.doctrine-project.json
new file mode 100644
index 0000000..24ae36e
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/.doctrine-project.json
@@ -0,0 +1,47 @@
+{
+ "active": true,
+ "name": "Instantiator",
+ "slug": "instantiator",
+ "docsSlug": "doctrine-instantiator",
+ "codePath": "/src",
+ "versions": [
+ {
+ "name": "1.5",
+ "branchName": "1.5.x",
+ "slug": "latest",
+ "upcoming": true
+ },
+ {
+ "name": "1.4",
+ "branchName": "1.4.x",
+ "slug": "1.4",
+ "aliases": [
+ "current",
+ "stable"
+ ],
+ "maintained": true,
+ "current": true
+ },
+ {
+ "name": "1.3",
+ "branchName": "1.3.x",
+ "slug": "1.3",
+ "maintained": false
+ },
+ {
+ "name": "1.2",
+ "branchName": "1.2.x",
+ "slug": "1.2"
+ },
+ {
+ "name": "1.1",
+ "branchName": "1.1.x",
+ "slug": "1.1"
+ },
+ {
+ "name": "1.0",
+ "branchName": "1.0.x",
+ "slug": "1.0"
+ }
+ ]
+}
diff --git a/panel/vendor/doctrine/instantiator/CONTRIBUTING.md b/panel/vendor/doctrine/instantiator/CONTRIBUTING.md
new file mode 100644
index 0000000..c1a2c42
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/CONTRIBUTING.md
@@ -0,0 +1,35 @@
+# Contributing
+
+ * Follow the [Doctrine Coding Standard](https://github.com/doctrine/coding-standard)
+ * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
+ * Any contribution must provide tests for additional introduced conditions
+ * Any un-confirmed issue needs a failing test case before being accepted
+ * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
+
+## Installation
+
+To install the project and run the tests, you need to clone it first:
+
+```sh
+$ git clone git://github.com/doctrine/instantiator.git
+```
+
+You will then need to run a composer installation:
+
+```sh
+$ cd Instantiator
+$ curl -s https://getcomposer.org/installer | php
+$ php composer.phar update
+```
+
+## Testing
+
+The PHPUnit version to be used is the one installed as a dev- dependency via composer:
+
+```sh
+$ ./vendor/bin/phpunit
+```
+
+Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement
+won't be merged.
+
diff --git a/panel/vendor/doctrine/instantiator/LICENSE b/panel/vendor/doctrine/instantiator/LICENSE
new file mode 100644
index 0000000..4d983d1
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014 Doctrine Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/panel/vendor/doctrine/instantiator/README.md b/panel/vendor/doctrine/instantiator/README.md
new file mode 100644
index 0000000..4bc02b6
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/README.md
@@ -0,0 +1,38 @@
+# Instantiator
+
+This library provides a way of avoiding usage of constructors when instantiating PHP classes.
+
+[![Build Status](https://travis-ci.org/doctrine/instantiator.svg?branch=master)](https://travis-ci.org/doctrine/instantiator)
+[![Code Coverage](https://codecov.io/gh/doctrine/instantiator/branch/master/graph/badge.svg)](https://codecov.io/gh/doctrine/instantiator/branch/master)
+[![Dependency Status](https://www.versioneye.com/package/php--doctrine--instantiator/badge.svg)](https://www.versioneye.com/package/php--doctrine--instantiator)
+
+[![Latest Stable Version](https://poser.pugx.org/doctrine/instantiator/v/stable.png)](https://packagist.org/packages/doctrine/instantiator)
+[![Latest Unstable Version](https://poser.pugx.org/doctrine/instantiator/v/unstable.png)](https://packagist.org/packages/doctrine/instantiator)
+
+## Installation
+
+The suggested installation method is via [composer](https://getcomposer.org/):
+
+```sh
+php composer.phar require "doctrine/instantiator:~1.0.3"
+```
+
+## Usage
+
+The instantiator is able to create new instances of any class without using the constructor or any API of the class
+itself:
+
+```php
+$instantiator = new \Doctrine\Instantiator\Instantiator();
+
+$instance = $instantiator->instantiate(\My\ClassName\Here::class);
+```
+
+## Contributing
+
+Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out!
+
+## Credits
+
+This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which
+has been donated to the doctrine organization, and which is now deprecated in favour of this package.
diff --git a/panel/vendor/doctrine/instantiator/composer.json b/panel/vendor/doctrine/instantiator/composer.json
new file mode 100644
index 0000000..4fba95c
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/composer.json
@@ -0,0 +1,48 @@
+{
+ "name": "doctrine/instantiator",
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "type": "library",
+ "license": "MIT",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "instantiate",
+ "constructor"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "ext-phar": "*",
+ "ext-pdo": "*",
+ "doctrine/coding-standard": "^9",
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "autoload-dev": {
+ "psr-0": {
+ "DoctrineTest\\InstantiatorPerformance\\": "tests",
+ "DoctrineTest\\InstantiatorTest\\": "tests",
+ "DoctrineTest\\InstantiatorTestAsset\\": "tests"
+ }
+ },
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true
+ }
+ }
+}
diff --git a/panel/vendor/doctrine/instantiator/docs/en/index.rst b/panel/vendor/doctrine/instantiator/docs/en/index.rst
new file mode 100644
index 0000000..0c85da0
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/docs/en/index.rst
@@ -0,0 +1,68 @@
+Introduction
+============
+
+This library provides a way of avoiding usage of constructors when instantiating PHP classes.
+
+Installation
+============
+
+The suggested installation method is via `composer`_:
+
+.. code-block:: console
+
+ $ composer require doctrine/instantiator
+
+Usage
+=====
+
+The instantiator is able to create new instances of any class without
+using the constructor or any API of the class itself:
+
+.. code-block:: php
+
+ instantiate(User::class);
+
+Contributing
+============
+
+- Follow the `Doctrine Coding Standard`_
+- The project will follow strict `object calisthenics`_
+- Any contribution must provide tests for additional introduced
+ conditions
+- Any un-confirmed issue needs a failing test case before being
+ accepted
+- Pull requests must be sent from a new hotfix/feature branch, not from
+ ``master``.
+
+Testing
+=======
+
+The PHPUnit version to be used is the one installed as a dev- dependency
+via composer:
+
+.. code-block:: console
+
+ $ ./vendor/bin/phpunit
+
+Accepted coverage for new contributions is 80%. Any contribution not
+satisfying this requirement won’t be merged.
+
+Credits
+=======
+
+This library was migrated from `ocramius/instantiator`_, which has been
+donated to the doctrine organization, and which is now deprecated in
+favour of this package.
+
+.. _composer: https://getcomposer.org/
+.. _CONTRIBUTING.md: CONTRIBUTING.md
+.. _ocramius/instantiator: https://github.com/Ocramius/Instantiator
+.. _Doctrine Coding Standard: https://github.com/doctrine/coding-standard
+.. _object calisthenics: http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php
diff --git a/panel/vendor/doctrine/instantiator/docs/en/sidebar.rst b/panel/vendor/doctrine/instantiator/docs/en/sidebar.rst
new file mode 100644
index 0000000..0c36479
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/docs/en/sidebar.rst
@@ -0,0 +1,4 @@
+.. toctree::
+ :depth: 3
+
+ index
diff --git a/panel/vendor/doctrine/instantiator/psalm.xml b/panel/vendor/doctrine/instantiator/psalm.xml
new file mode 100644
index 0000000..e6270c1
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/psalm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
new file mode 100644
index 0000000..e6a5195
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
@@ -0,0 +1,12 @@
+ $reflectionClass
+ *
+ * @template T of object
+ */
+ public static function fromAbstractClass(ReflectionClass $reflectionClass): self
+ {
+ return new self(sprintf(
+ 'The provided class "%s" is abstract, and cannot be instantiated',
+ $reflectionClass->getName()
+ ));
+ }
+
+ public static function fromEnum(string $className): self
+ {
+ return new self(sprintf(
+ 'The provided class "%s" is an enum, and cannot be instantiated',
+ $className
+ ));
+ }
+}
diff --git a/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
new file mode 100644
index 0000000..4e55ac5
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
@@ -0,0 +1,59 @@
+ $reflectionClass
+ *
+ * @template T of object
+ */
+ public static function fromSerializationTriggeredException(
+ ReflectionClass $reflectionClass,
+ Exception $exception
+ ): self {
+ return new self(
+ sprintf(
+ 'An exception was raised while trying to instantiate an instance of "%s" via un-serialization',
+ $reflectionClass->getName()
+ ),
+ 0,
+ $exception
+ );
+ }
+
+ /**
+ * @phpstan-param ReflectionClass $reflectionClass
+ *
+ * @template T of object
+ */
+ public static function fromUncleanUnSerialization(
+ ReflectionClass $reflectionClass,
+ string $errorString,
+ int $errorCode,
+ string $errorFile,
+ int $errorLine
+ ): self {
+ return new self(
+ sprintf(
+ 'Could not produce an instance of "%s" via un-serialization, since an error was triggered '
+ . 'in file "%s" at line "%d"',
+ $reflectionClass->getName(),
+ $errorFile,
+ $errorLine
+ ),
+ 0,
+ new Exception($errorString, $errorCode)
+ );
+ }
+}
diff --git a/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
new file mode 100644
index 0000000..d616fa4
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
@@ -0,0 +1,260 @@
+ $className
+ *
+ * @return object
+ * @phpstan-return T
+ *
+ * @throws ExceptionInterface
+ *
+ * @template T of object
+ */
+ public function instantiate($className)
+ {
+ if (isset(self::$cachedCloneables[$className])) {
+ /**
+ * @phpstan-var T
+ */
+ $cachedCloneable = self::$cachedCloneables[$className];
+
+ return clone $cachedCloneable;
+ }
+
+ if (isset(self::$cachedInstantiators[$className])) {
+ $factory = self::$cachedInstantiators[$className];
+
+ return $factory();
+ }
+
+ return $this->buildAndCacheFromFactory($className);
+ }
+
+ /**
+ * Builds the requested object and caches it in static properties for performance
+ *
+ * @phpstan-param class-string $className
+ *
+ * @return object
+ * @phpstan-return T
+ *
+ * @template T of object
+ */
+ private function buildAndCacheFromFactory(string $className)
+ {
+ $factory = self::$cachedInstantiators[$className] = $this->buildFactory($className);
+ $instance = $factory();
+
+ if ($this->isSafeToClone(new ReflectionClass($instance))) {
+ self::$cachedCloneables[$className] = clone $instance;
+ }
+
+ return $instance;
+ }
+
+ /**
+ * Builds a callable capable of instantiating the given $className without
+ * invoking its constructor.
+ *
+ * @phpstan-param class-string $className
+ *
+ * @phpstan-return callable(): T
+ *
+ * @throws InvalidArgumentException
+ * @throws UnexpectedValueException
+ * @throws ReflectionException
+ *
+ * @template T of object
+ */
+ private function buildFactory(string $className): callable
+ {
+ $reflectionClass = $this->getReflectionClass($className);
+
+ if ($this->isInstantiableViaReflection($reflectionClass)) {
+ return [$reflectionClass, 'newInstanceWithoutConstructor'];
+ }
+
+ $serializedString = sprintf(
+ '%s:%d:"%s":0:{}',
+ is_subclass_of($className, Serializable::class) ? self::SERIALIZATION_FORMAT_USE_UNSERIALIZER : self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER,
+ strlen($className),
+ $className
+ );
+
+ $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString);
+
+ return static function () use ($serializedString) {
+ return unserialize($serializedString);
+ };
+ }
+
+ /**
+ * @phpstan-param class-string $className
+ *
+ * @phpstan-return ReflectionClass
+ *
+ * @throws InvalidArgumentException
+ * @throws ReflectionException
+ *
+ * @template T of object
+ */
+ private function getReflectionClass(string $className): ReflectionClass
+ {
+ if (! class_exists($className)) {
+ throw InvalidArgumentException::fromNonExistingClass($className);
+ }
+
+ if (PHP_VERSION_ID >= 80100 && enum_exists($className, false)) {
+ throw InvalidArgumentException::fromEnum($className);
+ }
+
+ $reflection = new ReflectionClass($className);
+
+ if ($reflection->isAbstract()) {
+ throw InvalidArgumentException::fromAbstractClass($reflection);
+ }
+
+ return $reflection;
+ }
+
+ /**
+ * @phpstan-param ReflectionClass $reflectionClass
+ *
+ * @throws UnexpectedValueException
+ *
+ * @template T of object
+ */
+ private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, string $serializedString): void
+ {
+ set_error_handler(static function (int $code, string $message, string $file, int $line) use ($reflectionClass, &$error): bool {
+ $error = UnexpectedValueException::fromUncleanUnSerialization(
+ $reflectionClass,
+ $message,
+ $code,
+ $file,
+ $line
+ );
+
+ return true;
+ });
+
+ try {
+ $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString);
+ } finally {
+ restore_error_handler();
+ }
+
+ if ($error) {
+ throw $error;
+ }
+ }
+
+ /**
+ * @phpstan-param ReflectionClass $reflectionClass
+ *
+ * @throws UnexpectedValueException
+ *
+ * @template T of object
+ */
+ private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, string $serializedString): void
+ {
+ try {
+ unserialize($serializedString);
+ } catch (Exception $exception) {
+ throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception);
+ }
+ }
+
+ /**
+ * @phpstan-param ReflectionClass $reflectionClass
+ *
+ * @template T of object
+ */
+ private function isInstantiableViaReflection(ReflectionClass $reflectionClass): bool
+ {
+ return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal());
+ }
+
+ /**
+ * Verifies whether the given class is to be considered internal
+ *
+ * @phpstan-param ReflectionClass $reflectionClass
+ *
+ * @template T of object
+ */
+ private function hasInternalAncestors(ReflectionClass $reflectionClass): bool
+ {
+ do {
+ if ($reflectionClass->isInternal()) {
+ return true;
+ }
+
+ $reflectionClass = $reflectionClass->getParentClass();
+ } while ($reflectionClass);
+
+ return false;
+ }
+
+ /**
+ * Checks if a class is cloneable
+ *
+ * Classes implementing `__clone` cannot be safely cloned, as that may cause side-effects.
+ *
+ * @phpstan-param ReflectionClass $reflectionClass
+ *
+ * @template T of object
+ */
+ private function isSafeToClone(ReflectionClass $reflectionClass): bool
+ {
+ return $reflectionClass->isCloneable()
+ && ! $reflectionClass->hasMethod('__clone')
+ && ! $reflectionClass->isSubclassOf(ArrayIterator::class);
+ }
+}
diff --git a/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
new file mode 100644
index 0000000..10508b5
--- /dev/null
+++ b/panel/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
@@ -0,0 +1,24 @@
+ $className
+ *
+ * @return object
+ * @phpstan-return T
+ *
+ * @throws ExceptionInterface
+ *
+ * @template T of object
+ */
+ public function instantiate($className);
+}
diff --git a/panel/vendor/myclabs/deep-copy/.github/FUNDING.yml b/panel/vendor/myclabs/deep-copy/.github/FUNDING.yml
new file mode 100644
index 0000000..b8da664
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: "packagist/myclabs/deep-copy"
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/panel/vendor/myclabs/deep-copy/.github/workflows/ci.yaml b/panel/vendor/myclabs/deep-copy/.github/workflows/ci.yaml
new file mode 100644
index 0000000..eac2812
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/.github/workflows/ci.yaml
@@ -0,0 +1,101 @@
+name: "Continuous Integration"
+
+on:
+ - pull_request
+ - push
+
+env:
+ COMPOSER_ROOT_VERSION: 1.99
+
+jobs:
+ composer-json-lint:
+ name: "Lint composer.json"
+
+ runs-on: "ubuntu-latest"
+
+ strategy:
+ matrix:
+ php-version:
+ - "8.1"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/checkout@v2"
+
+ - name: "Install PHP"
+ uses: "shivammathur/setup-php@v2"
+ with:
+ coverage: "none"
+ php-version: "${{ matrix.php-version }}"
+ tools: composer-normalize
+
+ - name: "Get composer cache directory"
+ id: composercache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: "Cache dependencies"
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composercache.outputs.dir }}
+ key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-${{ hashFiles('**/composer.json') }}
+ restore-keys: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-
+
+ - name: "Install dependencies"
+ run: "composer update --no-interaction --no-progress"
+
+ - name: "Validate composer.json"
+ run: "composer validate --strict"
+
+ - name: "Normalize composer.json"
+ run: "composer-normalize --dry-run"
+
+ tests:
+ name: "Tests"
+
+ runs-on: "ubuntu-latest"
+
+ strategy:
+ matrix:
+ php-version:
+ - "7.1"
+ - "7.2"
+ - "7.3"
+ - "7.4"
+ - "8.0"
+ - "8.1"
+ dependencies:
+ - "lowest"
+ - "highest"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/checkout@v2"
+
+ - name: "Install PHP"
+ uses: "shivammathur/setup-php@v2"
+ with:
+ php-version: "${{ matrix.php-version }}"
+ ini-values: zend.assertions=1
+
+ - name: "Get composer cache directory"
+ id: composercache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: "Cache dependencies"
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composercache.outputs.dir }}
+ key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-${{ hashFiles('**/composer.json') }}
+ restore-keys: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-
+
+ - name: "Install lowest dependencies"
+ if: ${{ matrix.dependencies == 'lowest' }}
+ run: "composer update --no-interaction --no-progress --prefer-lowest"
+
+ - name: "Install highest dependencies"
+ if: ${{ matrix.dependencies == 'highest' }}
+ run: "composer update --no-interaction --no-progress"
+
+ - name: "Run tests"
+ timeout-minutes: 3
+ run: "vendor/bin/phpunit"
diff --git a/panel/vendor/myclabs/deep-copy/LICENSE b/panel/vendor/myclabs/deep-copy/LICENSE
new file mode 100644
index 0000000..c3e8350
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 My C-Sense
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/panel/vendor/myclabs/deep-copy/README.md b/panel/vendor/myclabs/deep-copy/README.md
new file mode 100644
index 0000000..503e93d
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/README.md
@@ -0,0 +1,373 @@
+# DeepCopy
+
+DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph.
+
+[![Total Downloads](https://poser.pugx.org/myclabs/deep-copy/downloads.svg)](https://packagist.org/packages/myclabs/deep-copy)
+[![Integrate](https://github.com/myclabs/DeepCopy/workflows/ci/badge.svg?branch=1.x)](https://github.com/myclabs/DeepCopy/actions)
+
+## Table of Contents
+
+1. [How](#how)
+1. [Why](#why)
+ 1. [Using simply `clone`](#using-simply-clone)
+ 1. [Overriding `__clone()`](#overriding-__clone)
+ 1. [With `DeepCopy`](#with-deepcopy)
+1. [How it works](#how-it-works)
+1. [Going further](#going-further)
+ 1. [Matchers](#matchers)
+ 1. [Property name](#property-name)
+ 1. [Specific property](#specific-property)
+ 1. [Type](#type)
+ 1. [Filters](#filters)
+ 1. [`SetNullFilter`](#setnullfilter-filter)
+ 1. [`KeepFilter`](#keepfilter-filter)
+ 1. [`DoctrineCollectionFilter`](#doctrinecollectionfilter-filter)
+ 1. [`DoctrineEmptyCollectionFilter`](#doctrineemptycollectionfilter-filter)
+ 1. [`DoctrineProxyFilter`](#doctrineproxyfilter-filter)
+ 1. [`ReplaceFilter`](#replacefilter-type-filter)
+ 1. [`ShallowCopyFilter`](#shallowcopyfilter-type-filter)
+1. [Edge cases](#edge-cases)
+1. [Contributing](#contributing)
+ 1. [Tests](#tests)
+
+
+## How?
+
+Install with Composer:
+
+```
+composer require myclabs/deep-copy
+```
+
+Use it:
+
+```php
+use DeepCopy\DeepCopy;
+
+$copier = new DeepCopy();
+$myCopy = $copier->copy($myObject);
+```
+
+
+## Why?
+
+- How do you create copies of your objects?
+
+```php
+$myCopy = clone $myObject;
+```
+
+- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)?
+
+You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior
+yourself.
+
+- But how do you handle **cycles** in the association graph?
+
+Now you're in for a big mess :(
+
+![association graph](doc/graph.png)
+
+
+### Using simply `clone`
+
+![Using clone](doc/clone.png)
+
+
+### Overriding `__clone()`
+
+![Overriding __clone](doc/deep-clone.png)
+
+
+### With `DeepCopy`
+
+![With DeepCopy](doc/deep-copy.png)
+
+
+## How it works
+
+DeepCopy recursively traverses all the object's properties and clones them. To avoid cloning the same object twice it
+keeps a hash map of all instances and thus preserves the object graph.
+
+To use it:
+
+```php
+use function DeepCopy\deep_copy;
+
+$copy = deep_copy($var);
+```
+
+Alternatively, you can create your own `DeepCopy` instance to configure it differently for example:
+
+```php
+use DeepCopy\DeepCopy;
+
+$copier = new DeepCopy(true);
+
+$copy = $copier->copy($var);
+```
+
+You may want to roll your own deep copy function:
+
+```php
+namespace Acme;
+
+use DeepCopy\DeepCopy;
+
+function deep_copy($var)
+{
+ static $copier = null;
+
+ if (null === $copier) {
+ $copier = new DeepCopy(true);
+ }
+
+ return $copier->copy($var);
+}
+```
+
+
+## Going further
+
+You can add filters to customize the copy process.
+
+The method to add a filter is `DeepCopy\DeepCopy::addFilter($filter, $matcher)`,
+with `$filter` implementing `DeepCopy\Filter\Filter`
+and `$matcher` implementing `DeepCopy\Matcher\Matcher`.
+
+We provide some generic filters and matchers.
+
+
+### Matchers
+
+ - `DeepCopy\Matcher` applies on a object attribute.
+ - `DeepCopy\TypeMatcher` applies on any element found in graph, including array elements.
+
+
+#### Property name
+
+The `PropertyNameMatcher` will match a property by its name:
+
+```php
+use DeepCopy\Matcher\PropertyNameMatcher;
+
+// Will apply a filter to any property of any objects named "id"
+$matcher = new PropertyNameMatcher('id');
+```
+
+
+#### Specific property
+
+The `PropertyMatcher` will match a specific property of a specific class:
+
+```php
+use DeepCopy\Matcher\PropertyMatcher;
+
+// Will apply a filter to the property "id" of any objects of the class "MyClass"
+$matcher = new PropertyMatcher('MyClass', 'id');
+```
+
+
+#### Type
+
+The `TypeMatcher` will match any element by its type (instance of a class or any value that could be parameter of
+[gettype()](http://php.net/manual/en/function.gettype.php) function):
+
+```php
+use DeepCopy\TypeMatcher\TypeMatcher;
+
+// Will apply a filter to any object that is an instance of Doctrine\Common\Collections\Collection
+$matcher = new TypeMatcher('Doctrine\Common\Collections\Collection');
+```
+
+
+### Filters
+
+- `DeepCopy\Filter` applies a transformation to the object attribute matched by `DeepCopy\Matcher`
+- `DeepCopy\TypeFilter` applies a transformation to any element matched by `DeepCopy\TypeMatcher`
+
+
+#### `SetNullFilter` (filter)
+
+Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have
+any ID:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\SetNullFilter;
+use DeepCopy\Matcher\PropertyNameMatcher;
+
+$object = MyClass::load(123);
+echo $object->id; // 123
+
+$copier = new DeepCopy();
+$copier->addFilter(new SetNullFilter(), new PropertyNameMatcher('id'));
+
+$copy = $copier->copy($object);
+
+echo $copy->id; // null
+```
+
+
+#### `KeepFilter` (filter)
+
+If you want a property to remain untouched (for example, an association to an object):
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\KeepFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category'));
+
+$copy = $copier->copy($object);
+// $copy->category has not been touched
+```
+
+
+#### `DoctrineCollectionFilter` (filter)
+
+If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter;
+use DeepCopy\Matcher\PropertyTypeMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection'));
+
+$copy = $copier->copy($object);
+```
+
+
+#### `DoctrineEmptyCollectionFilter` (filter)
+
+If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the
+`DoctrineEmptyCollectionFilter`
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty'));
+
+$copy = $copier->copy($object);
+
+// $copy->myProperty will return an empty collection
+```
+
+
+#### `DoctrineProxyFilter` (filter)
+
+If you use Doctrine and use cloning on lazy loaded entities, you might encounter errors mentioning missing fields on a
+Doctrine proxy class (...\\\_\_CG\_\_\Proxy).
+You can use the `DoctrineProxyFilter` to load the actual entity behind the Doctrine proxy class.
+**Make sure, though, to put this as one of your very first filters in the filter chain so that the entity is loaded
+before other filters are applied!**
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineProxyFilter;
+use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineProxyFilter(), new DoctrineProxyMatcher());
+
+$copy = $copier->copy($object);
+
+// $copy should now contain a clone of all entities, including those that were not yet fully loaded.
+```
+
+
+#### `ReplaceFilter` (type filter)
+
+1. If you want to replace the value of a property:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\ReplaceFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$callback = function ($currentValue) {
+ return $currentValue . ' (copy)'
+};
+$copier->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title'));
+
+$copy = $copier->copy($object);
+
+// $copy->title will contain the data returned by the callback, e.g. 'The title (copy)'
+```
+
+2. If you want to replace whole element:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\ReplaceFilter;
+use DeepCopy\TypeMatcher\TypeMatcher;
+
+$copier = new DeepCopy();
+$callback = function (MyClass $myClass) {
+ return get_class($myClass);
+};
+$copier->addTypeFilter(new ReplaceFilter($callback), new TypeMatcher('MyClass'));
+
+$copy = $copier->copy([new MyClass, 'some string', new MyClass]);
+
+// $copy will contain ['MyClass', 'some string', 'MyClass']
+```
+
+
+The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable.
+
+
+#### `ShallowCopyFilter` (type filter)
+
+Stop *DeepCopy* from recursively copying element, using standard `clone` instead:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\ShallowCopyFilter;
+use DeepCopy\TypeMatcher\TypeMatcher;
+use Mockery as m;
+
+$this->deepCopy = new DeepCopy();
+$this->deepCopy->addTypeFilter(
+ new ShallowCopyFilter,
+ new TypeMatcher(m\MockInterface::class)
+);
+
+$myServiceWithMocks = new MyService(m::mock(MyDependency1::class), m::mock(MyDependency2::class));
+// All mocks will be just cloned, not deep copied
+```
+
+
+## Edge cases
+
+The following structures cannot be deep-copied with PHP Reflection. As a result they are shallow cloned and filters are
+not applied. There is two ways for you to handle them:
+
+- Implement your own `__clone()` method
+- Use a filter with a type matcher
+
+
+## Contributing
+
+DeepCopy is distributed under the MIT license.
+
+
+### Tests
+
+Running the tests is simple:
+
+```php
+vendor/bin/phpunit
+```
+
+### Support
+
+Get professional support via [the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-myclabs-deep-copy?utm_source=packagist-myclabs-deep-copy&utm_medium=referral&utm_campaign=readme).
diff --git a/panel/vendor/myclabs/deep-copy/composer.json b/panel/vendor/myclabs/deep-copy/composer.json
new file mode 100644
index 0000000..66fb34a
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/composer.json
@@ -0,0 +1,42 @@
+{
+ "name": "myclabs/deep-copy",
+ "description": "Create deep copies (clones) of your objects",
+ "license": "MIT",
+ "type": "library",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "DeepCopy\\": "fixtures/",
+ "DeepCopyTest\\": "tests/DeepCopyTest/"
+ }
+ },
+ "config": {
+ "sort-packages": true
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php
new file mode 100644
index 0000000..5e68c64
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php
@@ -0,0 +1,303 @@
+ Filter, 'matcher' => Matcher] pairs.
+ */
+ private $filters = [];
+
+ /**
+ * Type Filters to apply.
+ *
+ * @var array Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
+ */
+ private $typeFilters = [];
+
+ /**
+ * @var bool
+ */
+ private $skipUncloneable = false;
+
+ /**
+ * @var bool
+ */
+ private $useCloneMethod;
+
+ /**
+ * @param bool $useCloneMethod If set to true, when an object implements the __clone() function, it will be used
+ * instead of the regular deep cloning.
+ */
+ public function __construct($useCloneMethod = false)
+ {
+ $this->useCloneMethod = $useCloneMethod;
+
+ $this->addTypeFilter(new ArrayObjectFilter($this), new TypeMatcher(ArrayObject::class));
+ $this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class));
+ $this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class));
+ }
+
+ /**
+ * If enabled, will not throw an exception when coming across an uncloneable property.
+ *
+ * @param $skipUncloneable
+ *
+ * @return $this
+ */
+ public function skipUncloneable($skipUncloneable = true)
+ {
+ $this->skipUncloneable = $skipUncloneable;
+
+ return $this;
+ }
+
+ /**
+ * Deep copies the given object.
+ *
+ * @param mixed $object
+ *
+ * @return mixed
+ */
+ public function copy($object)
+ {
+ $this->hashMap = [];
+
+ return $this->recursiveCopy($object);
+ }
+
+ public function addFilter(Filter $filter, Matcher $matcher)
+ {
+ $this->filters[] = [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ];
+ }
+
+ public function prependFilter(Filter $filter, Matcher $matcher)
+ {
+ array_unshift($this->filters, [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ]);
+ }
+
+ public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher)
+ {
+ $this->typeFilters[] = [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ];
+ }
+
+ private function recursiveCopy($var)
+ {
+ // Matches Type Filter
+ if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) {
+ return $filter->apply($var);
+ }
+
+ // Resource
+ if (is_resource($var)) {
+ return $var;
+ }
+
+ // Array
+ if (is_array($var)) {
+ return $this->copyArray($var);
+ }
+
+ // Scalar
+ if (! is_object($var)) {
+ return $var;
+ }
+
+ // Enum
+ if (PHP_VERSION_ID >= 80100 && enum_exists(get_class($var))) {
+ return $var;
+ }
+
+ // Object
+ return $this->copyObject($var);
+ }
+
+ /**
+ * Copy an array
+ * @param array $array
+ * @return array
+ */
+ private function copyArray(array $array)
+ {
+ foreach ($array as $key => $value) {
+ $array[$key] = $this->recursiveCopy($value);
+ }
+
+ return $array;
+ }
+
+ /**
+ * Copies an object.
+ *
+ * @param object $object
+ *
+ * @throws CloneException
+ *
+ * @return object
+ */
+ private function copyObject($object)
+ {
+ $objectHash = spl_object_hash($object);
+
+ if (isset($this->hashMap[$objectHash])) {
+ return $this->hashMap[$objectHash];
+ }
+
+ $reflectedObject = new ReflectionObject($object);
+ $isCloneable = $reflectedObject->isCloneable();
+
+ if (false === $isCloneable) {
+ if ($this->skipUncloneable) {
+ $this->hashMap[$objectHash] = $object;
+
+ return $object;
+ }
+
+ throw new CloneException(
+ sprintf(
+ 'The class "%s" is not cloneable.',
+ $reflectedObject->getName()
+ )
+ );
+ }
+
+ $newObject = clone $object;
+ $this->hashMap[$objectHash] = $newObject;
+
+ if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) {
+ return $newObject;
+ }
+
+ if ($newObject instanceof DateTimeInterface || $newObject instanceof DateTimeZone) {
+ return $newObject;
+ }
+
+ foreach (ReflectionHelper::getProperties($reflectedObject) as $property) {
+ $this->copyObjectProperty($newObject, $property);
+ }
+
+ return $newObject;
+ }
+
+ private function copyObjectProperty($object, ReflectionProperty $property)
+ {
+ // Ignore static properties
+ if ($property->isStatic()) {
+ return;
+ }
+
+ // Apply the filters
+ foreach ($this->filters as $item) {
+ /** @var Matcher $matcher */
+ $matcher = $item['matcher'];
+ /** @var Filter $filter */
+ $filter = $item['filter'];
+
+ if ($matcher->matches($object, $property->getName())) {
+ $filter->apply(
+ $object,
+ $property->getName(),
+ function ($object) {
+ return $this->recursiveCopy($object);
+ }
+ );
+
+ // If a filter matches, we stop processing this property
+ return;
+ }
+ }
+
+ $property->setAccessible(true);
+
+ // Ignore uninitialized properties (for PHP >7.4)
+ if (method_exists($property, 'isInitialized') && !$property->isInitialized($object)) {
+ return;
+ }
+
+ $propertyValue = $property->getValue($object);
+
+ // Copy the property
+ $property->setValue($object, $this->recursiveCopy($propertyValue));
+ }
+
+ /**
+ * Returns first filter that matches variable, `null` if no such filter found.
+ *
+ * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and
+ * 'matcher' with value of type {@see TypeMatcher}
+ * @param mixed $var
+ *
+ * @return TypeFilter|null
+ */
+ private function getFirstMatchedTypeFilter(array $filterRecords, $var)
+ {
+ $matched = $this->first(
+ $filterRecords,
+ function (array $record) use ($var) {
+ /* @var TypeMatcher $matcher */
+ $matcher = $record['matcher'];
+
+ return $matcher->matches($var);
+ }
+ );
+
+ return isset($matched) ? $matched['filter'] : null;
+ }
+
+ /**
+ * Returns first element that matches predicate, `null` if no such element found.
+ *
+ * @param array $elements Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
+ * @param callable $predicate Predicate arguments are: element.
+ *
+ * @return array|null Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and 'matcher'
+ * with value of type {@see TypeMatcher} or `null`.
+ */
+ private function first(array $elements, callable $predicate)
+ {
+ foreach ($elements as $element) {
+ if (call_user_func($predicate, $element)) {
+ return $element;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
new file mode 100644
index 0000000..c046706
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
@@ -0,0 +1,9 @@
+setAccessible(true);
+ $oldCollection = $reflectionProperty->getValue($object);
+
+ $newCollection = $oldCollection->map(
+ function ($item) use ($objectCopier) {
+ return $objectCopier($item);
+ }
+ );
+
+ $reflectionProperty->setValue($object, $newCollection);
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
new file mode 100644
index 0000000..7b33fd5
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
@@ -0,0 +1,28 @@
+setAccessible(true);
+
+ $reflectionProperty->setValue($object, new ArrayCollection());
+ }
+}
\ No newline at end of file
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
new file mode 100644
index 0000000..8bee8f7
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
@@ -0,0 +1,22 @@
+__load();
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
new file mode 100644
index 0000000..85ba18c
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
@@ -0,0 +1,18 @@
+callback = $callable;
+ }
+
+ /**
+ * Replaces the object property by the result of the callback called with the object property.
+ *
+ * {@inheritdoc}
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+ $reflectionProperty->setAccessible(true);
+
+ $value = call_user_func($this->callback, $reflectionProperty->getValue($object));
+
+ $reflectionProperty->setValue($object, $value);
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
new file mode 100644
index 0000000..bea86b8
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
@@ -0,0 +1,24 @@
+setAccessible(true);
+ $reflectionProperty->setValue($object, null);
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
new file mode 100644
index 0000000..c5887b1
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
@@ -0,0 +1,22 @@
+class = $class;
+ $this->property = $property;
+ }
+
+ /**
+ * Matches a specific property of a specific class.
+ *
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ return ($object instanceof $this->class) && $property == $this->property;
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
new file mode 100644
index 0000000..c8ec0d2
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
@@ -0,0 +1,32 @@
+property = $property;
+ }
+
+ /**
+ * Matches a property by its name.
+ *
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ return $property == $this->property;
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
new file mode 100644
index 0000000..c7f4690
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
@@ -0,0 +1,52 @@
+propertyType = $propertyType;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ try {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+ } catch (ReflectionException $exception) {
+ return false;
+ }
+
+ $reflectionProperty->setAccessible(true);
+
+ // Uninitialized properties (for PHP >7.4)
+ if (method_exists($reflectionProperty, 'isInitialized') && !$reflectionProperty->isInitialized($object)) {
+ // null instanceof $this->propertyType
+ return false;
+ }
+
+ return $reflectionProperty->getValue($object) instanceof $this->propertyType;
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
new file mode 100644
index 0000000..742410c
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
@@ -0,0 +1,78 @@
+getProperties() does not return private properties from ancestor classes.
+ *
+ * @author muratyaman@gmail.com
+ * @see http://php.net/manual/en/reflectionclass.getproperties.php
+ *
+ * @param ReflectionClass $ref
+ *
+ * @return ReflectionProperty[]
+ */
+ public static function getProperties(ReflectionClass $ref)
+ {
+ $props = $ref->getProperties();
+ $propsArr = array();
+
+ foreach ($props as $prop) {
+ $propertyName = $prop->getName();
+ $propsArr[$propertyName] = $prop;
+ }
+
+ if ($parentClass = $ref->getParentClass()) {
+ $parentPropsArr = self::getProperties($parentClass);
+ foreach ($propsArr as $key => $property) {
+ $parentPropsArr[$key] = $property;
+ }
+
+ return $parentPropsArr;
+ }
+
+ return $propsArr;
+ }
+
+ /**
+ * Retrieves property by name from object and all its ancestors.
+ *
+ * @param object|string $object
+ * @param string $name
+ *
+ * @throws PropertyException
+ * @throws ReflectionException
+ *
+ * @return ReflectionProperty
+ */
+ public static function getProperty($object, $name)
+ {
+ $reflection = is_object($object) ? new ReflectionObject($object) : new ReflectionClass($object);
+
+ if ($reflection->hasProperty($name)) {
+ return $reflection->getProperty($name);
+ }
+
+ if ($parentClass = $reflection->getParentClass()) {
+ return self::getProperty($parentClass->getName(), $name);
+ }
+
+ throw new PropertyException(
+ sprintf(
+ 'The class "%s" doesn\'t have a property with the given name: "%s".',
+ is_object($object) ? get_class($object) : $object,
+ $name
+ )
+ );
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
new file mode 100644
index 0000000..becd1cf
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
@@ -0,0 +1,33 @@
+ $propertyValue) {
+ $copy->{$propertyName} = $propertyValue;
+ }
+
+ return $copy;
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
new file mode 100644
index 0000000..164f8b8
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
@@ -0,0 +1,30 @@
+callback = $callable;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($element)
+ {
+ return call_user_func($this->callback, $element);
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
new file mode 100644
index 0000000..a5fbd7a
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
@@ -0,0 +1,17 @@
+copier = $copier;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($arrayObject)
+ {
+ $clone = clone $arrayObject;
+ foreach ($arrayObject->getArrayCopy() as $k => $v) {
+ $clone->offsetSet($k, $this->copier->copy($v));
+ }
+
+ return $clone;
+ }
+}
+
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php
new file mode 100644
index 0000000..c5644cf
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php
@@ -0,0 +1,10 @@
+copier = $copier;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($element)
+ {
+ $newElement = clone $element;
+
+ $copy = $this->createCopyClosure();
+
+ return $copy($newElement);
+ }
+
+ private function createCopyClosure()
+ {
+ $copier = $this->copier;
+
+ $copy = function (SplDoublyLinkedList $list) use ($copier) {
+ // Replace each element in the list with a deep copy of itself
+ for ($i = 1; $i <= $list->count(); $i++) {
+ $copy = $copier->recursiveCopy($list->shift());
+
+ $list->push($copy);
+ }
+
+ return $list;
+ };
+
+ return Closure::bind($copy, null, DeepCopy::class);
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
new file mode 100644
index 0000000..5785a7d
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
@@ -0,0 +1,13 @@
+type = $type;
+ }
+
+ /**
+ * @param mixed $element
+ *
+ * @return boolean
+ */
+ public function matches($element)
+ {
+ return is_object($element) ? is_a($element, $this->type) : gettype($element) === $this->type;
+ }
+}
diff --git a/panel/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php b/panel/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
new file mode 100644
index 0000000..55dcc92
--- /dev/null
+++ b/panel/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
@@ -0,0 +1,20 @@
+copy($value);
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/.gitignore b/panel/vendor/phar-io/manifest/.gitignore
new file mode 100644
index 0000000..94d433b
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/.gitignore
@@ -0,0 +1,8 @@
+/.idea
+/.php_cs.cache
+/composer.lock
+/src/autoload.php
+/tools
+/vendor
+
+/build
diff --git a/panel/vendor/phar-io/manifest/.php_cs b/panel/vendor/phar-io/manifest/.php_cs
new file mode 100644
index 0000000..159d6a3
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/.php_cs
@@ -0,0 +1,67 @@
+files()
+ ->in('src')
+ ->in('tests')
+ ->name('*.php');
+
+return Symfony\CS\Config\Config::create()
+ ->setUsingCache(true)
+ ->level(\Symfony\CS\FixerInterface::NONE_LEVEL)
+ ->fixers(
+ array(
+ 'align_double_arrow',
+ 'align_equals',
+ 'concat_with_spaces',
+ 'duplicate_semicolon',
+ 'elseif',
+ 'empty_return',
+ 'encoding',
+ 'eof_ending',
+ 'extra_empty_lines',
+ 'function_call_space',
+ 'function_declaration',
+ 'indentation',
+ 'join_function',
+ 'line_after_namespace',
+ 'linefeed',
+ 'list_commas',
+ 'lowercase_constants',
+ 'lowercase_keywords',
+ 'method_argument_space',
+ 'multiple_use',
+ 'namespace_no_leading_whitespace',
+ 'no_blank_lines_after_class_opening',
+ 'no_empty_lines_after_phpdocs',
+ 'parenthesis',
+ 'php_closing_tag',
+ 'phpdoc_indent',
+ 'phpdoc_no_access',
+ 'phpdoc_no_empty_return',
+ 'phpdoc_no_package',
+ 'phpdoc_params',
+ 'phpdoc_scalar',
+ 'phpdoc_separation',
+ 'phpdoc_to_comment',
+ 'phpdoc_trim',
+ 'phpdoc_types',
+ 'phpdoc_var_without_name',
+ 'remove_lines_between_uses',
+ 'return',
+ 'self_accessor',
+ 'short_array_syntax',
+ 'short_tag',
+ 'single_line_after_imports',
+ 'single_quote',
+ 'spaces_before_semicolon',
+ 'spaces_cast',
+ 'ternary_spaces',
+ 'trailing_spaces',
+ 'trim_array_spaces',
+ 'unused_use',
+ 'visibility',
+ 'whitespacy_lines'
+ )
+ )
+ ->finder($finder);
+
diff --git a/panel/vendor/phar-io/manifest/.travis.yml b/panel/vendor/phar-io/manifest/.travis.yml
new file mode 100644
index 0000000..b4be10f
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/.travis.yml
@@ -0,0 +1,33 @@
+os:
+- linux
+
+language: php
+
+before_install:
+ - wget https://phar.io/releases/phive.phar
+ - wget https://phar.io/releases/phive.phar.asc
+ - gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys 0x9B2D5D79
+ - gpg --verify phive.phar.asc phive.phar
+ - chmod +x phive.phar
+ - sudo mv phive.phar /usr/bin/phive
+
+install:
+ - ant setup
+
+script: ./tools/phpunit
+
+php:
+ - 5.6
+ - 7.0
+ - 7.1
+ - 7.0snapshot
+ - 7.1snapshot
+ - master
+
+matrix:
+ allow_failures:
+ - php: master
+ fast_finish: true
+
+notifications:
+ email: false
diff --git a/panel/vendor/phar-io/manifest/LICENSE b/panel/vendor/phar-io/manifest/LICENSE
new file mode 100644
index 0000000..96051b1
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/LICENSE
@@ -0,0 +1,31 @@
+manifest
+
+Copyright (c) 2016 Arne Blankerts , Sebastian Heuer , Sebastian Bergmann , and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of Arne Blankerts nor the names of contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/panel/vendor/phar-io/manifest/README.md b/panel/vendor/phar-io/manifest/README.md
new file mode 100644
index 0000000..e6d0b05
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/README.md
@@ -0,0 +1,30 @@
+# Manifest
+
+Component for reading [phar.io](https://phar.io/) manifest information from a [PHP Archive (PHAR)](http://php.net/phar).
+
+[![Build Status](https://travis-ci.org/phar-io/manifest.svg?branch=master)](https://travis-ci.org/phar-io/manifest)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phar-io/manifest/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phar-io/manifest/?branch=master)
+[![SensioLabsInsight](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7/mini.png)](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require phar-io/manifest
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev phar-io/manifest
+
+## Usage
+
+```php
+use PharIo\Manifest\ManifestLoader;
+use PharIo\Manifest\ManifestSerializer;
+
+$manifest = ManifestLoader::fromFile('manifest.xml');
+
+var_dump($manifest);
+
+echo (new ManifestSerializer)->serializeToString($manifest);
+```
diff --git a/panel/vendor/phar-io/manifest/build.xml b/panel/vendor/phar-io/manifest/build.xml
new file mode 100644
index 0000000..fc6eb1a
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/build.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/composer.json b/panel/vendor/phar-io/manifest/composer.json
new file mode 100644
index 0000000..832134d
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/composer.json
@@ -0,0 +1,42 @@
+{
+ "name": "phar-io/manifest",
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues"
+ },
+ "require": {
+ "php": "^5.6 || ^7.0",
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^1.0.1"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
+
diff --git a/panel/vendor/phar-io/manifest/examples/example-01.php b/panel/vendor/phar-io/manifest/examples/example-01.php
new file mode 100644
index 0000000..345c407
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/examples/example-01.php
@@ -0,0 +1,23 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use PharIo\Manifest\ManifestLoader;
+use PharIo\Manifest\ManifestSerializer;
+
+require __DIR__ . '/../vendor/autoload.php';
+
+$manifest = ManifestLoader::fromFile(__DIR__ . '/../tests/_fixture/phpunit-5.6.5.xml');
+
+echo sprintf(
+ "Manifest for %s (%s):\n\n",
+ $manifest->getName(),
+ $manifest->getVersion()->getVersionString()
+);
+echo (new ManifestSerializer)->serializeToString($manifest);
diff --git a/panel/vendor/phar-io/manifest/phive.xml b/panel/vendor/phar-io/manifest/phive.xml
new file mode 100644
index 0000000..69f2f91
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/phive.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/phpunit.xml b/panel/vendor/phar-io/manifest/phpunit.xml
new file mode 100644
index 0000000..2d7708e
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/phpunit.xml
@@ -0,0 +1,20 @@
+
+
+
+ tests
+
+
+
+
+ src
+
+
+
diff --git a/panel/vendor/phar-io/manifest/src/ManifestDocumentMapper.php b/panel/vendor/phar-io/manifest/src/ManifestDocumentMapper.php
new file mode 100644
index 0000000..d41e4f9
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/ManifestDocumentMapper.php
@@ -0,0 +1,193 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+use PharIo\Version\Exception as VersionException;
+use PharIo\Version\VersionConstraintParser;
+
+class ManifestDocumentMapper {
+ /**
+ * @param ManifestDocument $document
+ *
+ * @returns Manifest
+ *
+ * @throws ManifestDocumentMapperException
+ */
+ public function map(ManifestDocument $document) {
+ try {
+ $contains = $document->getContainsElement();
+ $type = $this->mapType($contains);
+ $copyright = $this->mapCopyright($document->getCopyrightElement());
+ $requirements = $this->mapRequirements($document->getRequiresElement());
+ $bundledComponents = $this->mapBundledComponents($document);
+
+ return new Manifest(
+ new ApplicationName($contains->getName()),
+ new Version($contains->getVersion()),
+ $type,
+ $copyright,
+ $requirements,
+ $bundledComponents
+ );
+ } catch (VersionException $e) {
+ throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e);
+ } catch (Exception $e) {
+ throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e);
+ }
+ }
+
+ /**
+ * @param ContainsElement $contains
+ *
+ * @return Type
+ *
+ * @throws ManifestDocumentMapperException
+ */
+ private function mapType(ContainsElement $contains) {
+ switch ($contains->getType()) {
+ case 'application':
+ return Type::application();
+ case 'library':
+ return Type::library();
+ case 'extension':
+ return $this->mapExtension($contains->getExtensionElement());
+ }
+
+ throw new ManifestDocumentMapperException(
+ sprintf('Unsupported type %s', $contains->getType())
+ );
+ }
+
+ /**
+ * @param CopyrightElement $copyright
+ *
+ * @return CopyrightInformation
+ *
+ * @throws InvalidUrlException
+ * @throws InvalidEmailException
+ */
+ private function mapCopyright(CopyrightElement $copyright) {
+ $authors = new AuthorCollection();
+
+ foreach($copyright->getAuthorElements() as $authorElement) {
+ $authors->add(
+ new Author(
+ $authorElement->getName(),
+ new Email($authorElement->getEmail())
+ )
+ );
+ }
+
+ $licenseElement = $copyright->getLicenseElement();
+ $license = new License(
+ $licenseElement->getType(),
+ new Url($licenseElement->getUrl())
+ );
+
+ return new CopyrightInformation(
+ $authors,
+ $license
+ );
+ }
+
+ /**
+ * @param RequiresElement $requires
+ *
+ * @return RequirementCollection
+ *
+ * @throws ManifestDocumentMapperException
+ */
+ private function mapRequirements(RequiresElement $requires) {
+ $collection = new RequirementCollection();
+ $phpElement = $requires->getPHPElement();
+ $parser = new VersionConstraintParser;
+
+ try {
+ $versionConstraint = $parser->parse($phpElement->getVersion());
+ } catch (VersionException $e) {
+ throw new ManifestDocumentMapperException(
+ sprintf('Unsupported version constraint - %s', $e->getMessage()),
+ $e->getCode(),
+ $e
+ );
+ }
+
+ $collection->add(
+ new PhpVersionRequirement(
+ $versionConstraint
+ )
+ );
+
+ if (!$phpElement->hasExtElements()) {
+ return $collection;
+ }
+
+ foreach($phpElement->getExtElements() as $extElement) {
+ $collection->add(
+ new PhpExtensionRequirement($extElement->getName())
+ );
+ }
+
+ return $collection;
+ }
+
+ /**
+ * @param ManifestDocument $document
+ *
+ * @return BundledComponentCollection
+ */
+ private function mapBundledComponents(ManifestDocument $document) {
+ $collection = new BundledComponentCollection();
+
+ if (!$document->hasBundlesElement()) {
+ return $collection;
+ }
+
+ foreach($document->getBundlesElement()->getComponentElements() as $componentElement) {
+ $collection->add(
+ new BundledComponent(
+ $componentElement->getName(),
+ new Version(
+ $componentElement->getVersion()
+ )
+ )
+ );
+ }
+
+ return $collection;
+ }
+
+ /**
+ * @param ExtensionElement $extension
+ *
+ * @return Extension
+ *
+ * @throws ManifestDocumentMapperException
+ */
+ private function mapExtension(ExtensionElement $extension) {
+ try {
+ $parser = new VersionConstraintParser;
+ $versionConstraint = $parser->parse($extension->getCompatible());
+
+ return Type::extension(
+ new ApplicationName($extension->getFor()),
+ $versionConstraint
+ );
+ } catch (VersionException $e) {
+ throw new ManifestDocumentMapperException(
+ sprintf('Unsupported version constraint - %s', $e->getMessage()),
+ $e->getCode(),
+ $e
+ );
+ }
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/ManifestLoader.php b/panel/vendor/phar-io/manifest/src/ManifestLoader.php
new file mode 100644
index 0000000..81c5c90
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/ManifestLoader.php
@@ -0,0 +1,66 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ManifestLoader {
+ /**
+ * @param string $filename
+ *
+ * @return Manifest
+ *
+ * @throws ManifestLoaderException
+ */
+ public static function fromFile($filename) {
+ try {
+ return (new ManifestDocumentMapper())->map(
+ ManifestDocument::fromFile($filename)
+ );
+ } catch (Exception $e) {
+ throw new ManifestLoaderException(
+ sprintf('Loading %s failed.', $filename),
+ $e->getCode(),
+ $e
+ );
+ }
+ }
+
+ /**
+ * @param string $filename
+ *
+ * @return Manifest
+ *
+ * @throws ManifestLoaderException
+ */
+ public static function fromPhar($filename) {
+ return self::fromFile('phar://' . $filename . '/manifest.xml');
+ }
+
+ /**
+ * @param string $manifest
+ *
+ * @return Manifest
+ *
+ * @throws ManifestLoaderException
+ */
+ public static function fromString($manifest) {
+ try {
+ return (new ManifestDocumentMapper())->map(
+ ManifestDocument::fromString($manifest)
+ );
+ } catch (Exception $e) {
+ throw new ManifestLoaderException(
+ 'Processing string failed',
+ $e->getCode(),
+ $e
+ );
+ }
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/ManifestSerializer.php b/panel/vendor/phar-io/manifest/src/ManifestSerializer.php
new file mode 100644
index 0000000..4c18ddd
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/ManifestSerializer.php
@@ -0,0 +1,163 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\AnyVersionConstraint;
+use PharIo\Version\Version;
+use PharIo\Version\VersionConstraint;
+use XMLWriter;
+
+class ManifestSerializer {
+ /**
+ * @var XMLWriter
+ */
+ private $xmlWriter;
+
+ public function serializeToFile(Manifest $manifest, $filename) {
+ file_put_contents(
+ $filename,
+ $this->serializeToString($manifest)
+ );
+ }
+
+ public function serializeToString(Manifest $manifest) {
+ $this->startDocument();
+
+ $this->addContains($manifest->getName(), $manifest->getVersion(), $manifest->getType());
+ $this->addCopyright($manifest->getCopyrightInformation());
+ $this->addRequirements($manifest->getRequirements());
+ $this->addBundles($manifest->getBundledComponents());
+
+ return $this->finishDocument();
+ }
+
+ private function startDocument() {
+ $xmlWriter = new XMLWriter();
+ $xmlWriter->openMemory();
+ $xmlWriter->setIndent(true);
+ $xmlWriter->setIndentString(str_repeat(' ', 4));
+ $xmlWriter->startDocument('1.0', 'UTF-8');
+ $xmlWriter->startElement('phar');
+ $xmlWriter->writeAttribute('xmlns', 'https://phar.io/xml/manifest/1.0');
+
+ $this->xmlWriter = $xmlWriter;
+ }
+
+ private function finishDocument() {
+ $this->xmlWriter->endElement();
+ $this->xmlWriter->endDocument();
+
+ return $this->xmlWriter->outputMemory();
+ }
+
+ private function addContains($name, Version $version, Type $type) {
+ $this->xmlWriter->startElement('contains');
+ $this->xmlWriter->writeAttribute('name', $name);
+ $this->xmlWriter->writeAttribute('version', $version->getVersionString());
+
+ switch (true) {
+ case $type->isApplication(): {
+ $this->xmlWriter->writeAttribute('type', 'application');
+ break;
+ }
+
+ case $type->isLibrary(): {
+ $this->xmlWriter->writeAttribute('type', 'library');
+ break;
+ }
+
+ case $type->isExtension(): {
+ /* @var $type Extension */
+ $this->xmlWriter->writeAttribute('type', 'extension');
+ $this->addExtension($type->getApplicationName(), $type->getVersionConstraint());
+ break;
+ }
+
+ default: {
+ $this->xmlWriter->writeAttribute('type', 'custom');
+ }
+ }
+
+ $this->xmlWriter->endElement();
+ }
+
+ private function addCopyright(CopyrightInformation $copyrightInformation) {
+ $this->xmlWriter->startElement('copyright');
+
+ foreach($copyrightInformation->getAuthors() as $author) {
+ $this->xmlWriter->startElement('author');
+ $this->xmlWriter->writeAttribute('name', $author->getName());
+ $this->xmlWriter->writeAttribute('email', (string) $author->getEmail());
+ $this->xmlWriter->endElement();
+ }
+
+ $license = $copyrightInformation->getLicense();
+
+ $this->xmlWriter->startElement('license');
+ $this->xmlWriter->writeAttribute('type', $license->getName());
+ $this->xmlWriter->writeAttribute('url', $license->getUrl());
+ $this->xmlWriter->endElement();
+
+ $this->xmlWriter->endElement();
+ }
+
+ private function addRequirements(RequirementCollection $requirementCollection) {
+ $phpRequirement = new AnyVersionConstraint();
+ $extensions = [];
+
+ foreach($requirementCollection as $requirement) {
+ if ($requirement instanceof PhpVersionRequirement) {
+ $phpRequirement = $requirement->getVersionConstraint();
+ continue;
+ }
+
+ if ($requirement instanceof PhpExtensionRequirement) {
+ $extensions[] = (string) $requirement;
+ }
+ }
+
+ $this->xmlWriter->startElement('requires');
+ $this->xmlWriter->startElement('php');
+ $this->xmlWriter->writeAttribute('version', $phpRequirement->asString());
+
+ foreach($extensions as $extension) {
+ $this->xmlWriter->startElement('ext');
+ $this->xmlWriter->writeAttribute('name', $extension);
+ $this->xmlWriter->endElement();
+ }
+
+ $this->xmlWriter->endElement();
+ $this->xmlWriter->endElement();
+ }
+
+ private function addBundles(BundledComponentCollection $bundledComponentCollection) {
+ if (count($bundledComponentCollection) === 0) {
+ return;
+ }
+ $this->xmlWriter->startElement('bundles');
+
+ foreach($bundledComponentCollection as $bundledComponent) {
+ $this->xmlWriter->startElement('component');
+ $this->xmlWriter->writeAttribute('name', $bundledComponent->getName());
+ $this->xmlWriter->writeAttribute('version', $bundledComponent->getVersion()->getVersionString());
+ $this->xmlWriter->endElement();
+ }
+
+ $this->xmlWriter->endElement();
+ }
+
+ private function addExtension($application, VersionConstraint $versionConstraint) {
+ $this->xmlWriter->startElement('extension');
+ $this->xmlWriter->writeAttribute('for', $application);
+ $this->xmlWriter->writeAttribute('compatible', $versionConstraint->asString());
+ $this->xmlWriter->endElement();
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/exceptions/Exception.php b/panel/vendor/phar-io/manifest/src/exceptions/Exception.php
new file mode 100644
index 0000000..3ce46f2
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/exceptions/Exception.php
@@ -0,0 +1,14 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+interface Exception {
+}
diff --git a/panel/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php b/panel/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php
new file mode 100644
index 0000000..a53735a
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php
@@ -0,0 +1,16 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class InvalidApplicationNameException extends \InvalidArgumentException implements Exception {
+ const NotAString = 1;
+ const InvalidFormat = 2;
+}
diff --git a/panel/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php b/panel/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php
new file mode 100644
index 0000000..854399b
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php
@@ -0,0 +1,14 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class InvalidEmailException extends \InvalidArgumentException implements Exception {
+}
diff --git a/panel/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php b/panel/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php
new file mode 100644
index 0000000..cdd8323
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php
@@ -0,0 +1,14 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class InvalidUrlException extends \InvalidArgumentException implements Exception {
+}
diff --git a/panel/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php b/panel/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php
new file mode 100644
index 0000000..8b40195
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php
@@ -0,0 +1,6 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class Application extends Type {
+ /**
+ * @return bool
+ */
+ public function isApplication() {
+ return true;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/ApplicationName.php b/panel/vendor/phar-io/manifest/src/values/ApplicationName.php
new file mode 100644
index 0000000..1e71af4
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/ApplicationName.php
@@ -0,0 +1,65 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ApplicationName {
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * ApplicationName constructor.
+ *
+ * @param string $name
+ *
+ * @throws InvalidApplicationNameException
+ */
+ public function __construct($name) {
+ $this->ensureIsString($name);
+ $this->ensureValidFormat($name);
+ $this->name = $name;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return $this->name;
+ }
+
+ public function isEqual(ApplicationName $name) {
+ return $this->name === $name->name;
+ }
+
+ /**
+ * @param string $name
+ *
+ * @throws InvalidApplicationNameException
+ */
+ private function ensureValidFormat($name) {
+ if (!preg_match('#\w/\w#', $name)) {
+ throw new InvalidApplicationNameException(
+ sprintf('Format of name "%s" is not valid - expected: vendor/packagename', $name),
+ InvalidApplicationNameException::InvalidFormat
+ );
+ }
+ }
+
+ private function ensureIsString($name) {
+ if (!is_string($name)) {
+ throw new InvalidApplicationNameException(
+ 'Name must be a string',
+ InvalidApplicationNameException::NotAString
+ );
+ }
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Author.php b/panel/vendor/phar-io/manifest/src/values/Author.php
new file mode 100644
index 0000000..8295f51
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Author.php
@@ -0,0 +1,57 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class Author {
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var Email
+ */
+ private $email;
+
+ /**
+ * @param string $name
+ * @param Email $email
+ */
+ public function __construct($name, Email $email) {
+ $this->name = $name;
+ $this->email = $email;
+ }
+
+ /**
+ * @return string
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * @return Email
+ */
+ public function getEmail() {
+ return $this->email;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return sprintf(
+ '%s <%s>',
+ $this->name,
+ $this->email
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/AuthorCollection.php b/panel/vendor/phar-io/manifest/src/values/AuthorCollection.php
new file mode 100644
index 0000000..d915879
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/AuthorCollection.php
@@ -0,0 +1,43 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class AuthorCollection implements \Countable, \IteratorAggregate {
+ /**
+ * @var Author[]
+ */
+ private $authors = [];
+
+ public function add(Author $author) {
+ $this->authors[] = $author;
+ }
+
+ /**
+ * @return Author[]
+ */
+ public function getAuthors() {
+ return $this->authors;
+ }
+
+ /**
+ * @return int
+ */
+ public function count() {
+ return count($this->authors);
+ }
+
+ /**
+ * @return AuthorCollectionIterator
+ */
+ public function getIterator() {
+ return new AuthorCollectionIterator($this);
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php b/panel/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php
new file mode 100644
index 0000000..792a050
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php
@@ -0,0 +1,56 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class AuthorCollectionIterator implements \Iterator {
+ /**
+ * @var Author[]
+ */
+ private $authors = [];
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(AuthorCollection $authors) {
+ $this->authors = $authors->getAuthors();
+ }
+
+ public function rewind() {
+ $this->position = 0;
+ }
+
+ /**
+ * @return bool
+ */
+ public function valid() {
+ return $this->position < count($this->authors);
+ }
+
+ /**
+ * @return int
+ */
+ public function key() {
+ return $this->position;
+ }
+
+ /**
+ * @return Author
+ */
+ public function current() {
+ return $this->authors[$this->position];
+ }
+
+ public function next() {
+ $this->position++;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/BundledComponent.php b/panel/vendor/phar-io/manifest/src/values/BundledComponent.php
new file mode 100644
index 0000000..846d15a
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/BundledComponent.php
@@ -0,0 +1,48 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+
+class BundledComponent {
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var Version
+ */
+ private $version;
+
+ /**
+ * @param string $name
+ * @param Version $version
+ */
+ public function __construct($name, Version $version) {
+ $this->name = $name;
+ $this->version = $version;
+ }
+
+ /**
+ * @return string
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * @return Version
+ */
+ public function getVersion() {
+ return $this->version;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/BundledComponentCollection.php b/panel/vendor/phar-io/manifest/src/values/BundledComponentCollection.php
new file mode 100644
index 0000000..2dbb918
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/BundledComponentCollection.php
@@ -0,0 +1,43 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class BundledComponentCollection implements \Countable, \IteratorAggregate {
+ /**
+ * @var BundledComponent[]
+ */
+ private $bundledComponents = [];
+
+ public function add(BundledComponent $bundledComponent) {
+ $this->bundledComponents[] = $bundledComponent;
+ }
+
+ /**
+ * @return BundledComponent[]
+ */
+ public function getBundledComponents() {
+ return $this->bundledComponents;
+ }
+
+ /**
+ * @return int
+ */
+ public function count() {
+ return count($this->bundledComponents);
+ }
+
+ /**
+ * @return BundledComponentCollectionIterator
+ */
+ public function getIterator() {
+ return new BundledComponentCollectionIterator($this);
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php b/panel/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php
new file mode 100644
index 0000000..13b8f05
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php
@@ -0,0 +1,56 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class BundledComponentCollectionIterator implements \Iterator {
+ /**
+ * @var BundledComponent[]
+ */
+ private $bundledComponents = [];
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(BundledComponentCollection $bundledComponents) {
+ $this->bundledComponents = $bundledComponents->getBundledComponents();
+ }
+
+ public function rewind() {
+ $this->position = 0;
+ }
+
+ /**
+ * @return bool
+ */
+ public function valid() {
+ return $this->position < count($this->bundledComponents);
+ }
+
+ /**
+ * @return int
+ */
+ public function key() {
+ return $this->position;
+ }
+
+ /**
+ * @return BundledComponent
+ */
+ public function current() {
+ return $this->bundledComponents[$this->position];
+ }
+
+ public function next() {
+ $this->position++;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/CopyrightInformation.php b/panel/vendor/phar-io/manifest/src/values/CopyrightInformation.php
new file mode 100644
index 0000000..ece60b1
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/CopyrightInformation.php
@@ -0,0 +1,42 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class CopyrightInformation {
+ /**
+ * @var AuthorCollection
+ */
+ private $authors;
+
+ /**
+ * @var License
+ */
+ private $license;
+
+ public function __construct(AuthorCollection $authors, License $license) {
+ $this->authors = $authors;
+ $this->license = $license;
+ }
+
+ /**
+ * @return AuthorCollection
+ */
+ public function getAuthors() {
+ return $this->authors;
+ }
+
+ /**
+ * @return License
+ */
+ public function getLicense() {
+ return $this->license;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Email.php b/panel/vendor/phar-io/manifest/src/values/Email.php
new file mode 100644
index 0000000..57cce04
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Email.php
@@ -0,0 +1,47 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class Email {
+ /**
+ * @var string
+ */
+ private $email;
+
+ /**
+ * @param string $email
+ *
+ * @throws InvalidEmailException
+ */
+ public function __construct($email) {
+ $this->ensureEmailIsValid($email);
+
+ $this->email = $email;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return $this->email;
+ }
+
+ /**
+ * @param string $url
+ *
+ * @throws InvalidEmailException
+ */
+ private function ensureEmailIsValid($url) {
+ if (filter_var($url, \FILTER_VALIDATE_EMAIL) === false) {
+ throw new InvalidEmailException;
+ }
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Extension.php b/panel/vendor/phar-io/manifest/src/values/Extension.php
new file mode 100644
index 0000000..90d6a6f
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Extension.php
@@ -0,0 +1,75 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+use PharIo\Version\VersionConstraint;
+
+class Extension extends Type {
+ /**
+ * @var ApplicationName
+ */
+ private $application;
+
+ /**
+ * @var VersionConstraint
+ */
+ private $versionConstraint;
+
+ /**
+ * @param ApplicationName $application
+ * @param VersionConstraint $versionConstraint
+ */
+ public function __construct(ApplicationName $application, VersionConstraint $versionConstraint) {
+ $this->application = $application;
+ $this->versionConstraint = $versionConstraint;
+ }
+
+ /**
+ * @return ApplicationName
+ */
+ public function getApplicationName() {
+ return $this->application;
+ }
+
+ /**
+ * @return VersionConstraint
+ */
+ public function getVersionConstraint() {
+ return $this->versionConstraint;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isExtension() {
+ return true;
+ }
+
+ /**
+ * @param ApplicationName $name
+ *
+ * @return bool
+ */
+ public function isExtensionFor(ApplicationName $name) {
+ return $this->application->isEqual($name);
+ }
+
+ /**
+ * @param ApplicationName $name
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function isCompatibleWith(ApplicationName $name, Version $version) {
+ return $this->isExtensionFor($name) && $this->versionConstraint->complies($version);
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Library.php b/panel/vendor/phar-io/manifest/src/values/Library.php
new file mode 100644
index 0000000..a6ff944
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Library.php
@@ -0,0 +1,20 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class Library extends Type {
+ /**
+ * @return bool
+ */
+ public function isLibrary() {
+ return true;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/License.php b/panel/vendor/phar-io/manifest/src/values/License.php
new file mode 100644
index 0000000..e278670
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/License.php
@@ -0,0 +1,42 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class License {
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var Url
+ */
+ private $url;
+
+ public function __construct($name, Url $url) {
+ $this->name = $name;
+ $this->url = $url;
+ }
+
+ /**
+ * @return string
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * @return Url
+ */
+ public function getUrl() {
+ return $this->url;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Manifest.php b/panel/vendor/phar-io/manifest/src/values/Manifest.php
new file mode 100644
index 0000000..217acef
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Manifest.php
@@ -0,0 +1,138 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+
+class Manifest {
+ /**
+ * @var ApplicationName
+ */
+ private $name;
+
+ /**
+ * @var Version
+ */
+ private $version;
+
+ /**
+ * @var Type
+ */
+ private $type;
+
+ /**
+ * @var CopyrightInformation
+ */
+ private $copyrightInformation;
+
+ /**
+ * @var RequirementCollection
+ */
+ private $requirements;
+
+ /**
+ * @var BundledComponentCollection
+ */
+ private $bundledComponents;
+
+ public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) {
+ $this->name = $name;
+ $this->version = $version;
+ $this->type = $type;
+ $this->copyrightInformation = $copyrightInformation;
+ $this->requirements = $requirements;
+ $this->bundledComponents = $bundledComponents;
+ }
+
+ /**
+ * @return ApplicationName
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * @return Version
+ */
+ public function getVersion() {
+ return $this->version;
+ }
+
+ /**
+ * @return Type
+ */
+ public function getType() {
+ return $this->type;
+ }
+
+ /**
+ * @return CopyrightInformation
+ */
+ public function getCopyrightInformation() {
+ return $this->copyrightInformation;
+ }
+
+ /**
+ * @return RequirementCollection
+ */
+ public function getRequirements() {
+ return $this->requirements;
+ }
+
+ /**
+ * @return BundledComponentCollection
+ */
+ public function getBundledComponents() {
+ return $this->bundledComponents;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isApplication() {
+ return $this->type->isApplication();
+ }
+
+ /**
+ * @return bool
+ */
+ public function isLibrary() {
+ return $this->type->isLibrary();
+ }
+
+ /**
+ * @return bool
+ */
+ public function isExtension() {
+ return $this->type->isExtension();
+ }
+
+ /**
+ * @param ApplicationName $application
+ * @param Version|null $version
+ *
+ * @return bool
+ */
+ public function isExtensionFor(ApplicationName $application, Version $version = null) {
+ if (!$this->isExtension()) {
+ return false;
+ }
+
+ /** @var Extension $type */
+ $type = $this->type;
+
+ if ($version !== null) {
+ return $type->isCompatibleWith($application, $version);
+ }
+
+ return $type->isExtensionFor($application);
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php b/panel/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php
new file mode 100644
index 0000000..6dd9296
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php
@@ -0,0 +1,32 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class PhpExtensionRequirement implements Requirement {
+ /**
+ * @var string
+ */
+ private $extension;
+
+ /**
+ * @param string $extension
+ */
+ public function __construct($extension) {
+ $this->extension = $extension;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return $this->extension;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php b/panel/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php
new file mode 100644
index 0000000..8ad3e76
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php
@@ -0,0 +1,31 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\VersionConstraint;
+
+class PhpVersionRequirement implements Requirement {
+ /**
+ * @var VersionConstraint
+ */
+ private $versionConstraint;
+
+ public function __construct(VersionConstraint $versionConstraint) {
+ $this->versionConstraint = $versionConstraint;
+ }
+
+ /**
+ * @return VersionConstraint
+ */
+ public function getVersionConstraint() {
+ return $this->versionConstraint;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Requirement.php b/panel/vendor/phar-io/manifest/src/values/Requirement.php
new file mode 100644
index 0000000..03bb56d
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Requirement.php
@@ -0,0 +1,14 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+interface Requirement {
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/RequirementCollection.php b/panel/vendor/phar-io/manifest/src/values/RequirementCollection.php
new file mode 100644
index 0000000..af0e09b
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/RequirementCollection.php
@@ -0,0 +1,43 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class RequirementCollection implements \Countable, \IteratorAggregate {
+ /**
+ * @var Requirement[]
+ */
+ private $requirements = [];
+
+ public function add(Requirement $requirement) {
+ $this->requirements[] = $requirement;
+ }
+
+ /**
+ * @return Requirement[]
+ */
+ public function getRequirements() {
+ return $this->requirements;
+ }
+
+ /**
+ * @return int
+ */
+ public function count() {
+ return count($this->requirements);
+ }
+
+ /**
+ * @return RequirementCollectionIterator
+ */
+ public function getIterator() {
+ return new RequirementCollectionIterator($this);
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php b/panel/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php
new file mode 100644
index 0000000..9bb7003
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php
@@ -0,0 +1,56 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class RequirementCollectionIterator implements \Iterator {
+ /**
+ * @var Requirement[]
+ */
+ private $requirements = [];
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(RequirementCollection $requirements) {
+ $this->requirements = $requirements->getRequirements();
+ }
+
+ public function rewind() {
+ $this->position = 0;
+ }
+
+ /**
+ * @return bool
+ */
+ public function valid() {
+ return $this->position < count($this->requirements);
+ }
+
+ /**
+ * @return int
+ */
+ public function key() {
+ return $this->position;
+ }
+
+ /**
+ * @return Requirement
+ */
+ public function current() {
+ return $this->requirements[$this->position];
+ }
+
+ public function next() {
+ $this->position++;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Type.php b/panel/vendor/phar-io/manifest/src/values/Type.php
new file mode 100644
index 0000000..31fbd44
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Type.php
@@ -0,0 +1,60 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\VersionConstraint;
+
+abstract class Type {
+ /**
+ * @return Application
+ */
+ public static function application() {
+ return new Application;
+ }
+
+ /**
+ * @return Library
+ */
+ public static function library() {
+ return new Library;
+ }
+
+ /**
+ * @param ApplicationName $application
+ * @param VersionConstraint $versionConstraint
+ *
+ * @return Extension
+ */
+ public static function extension(ApplicationName $application, VersionConstraint $versionConstraint) {
+ return new Extension($application, $versionConstraint);
+ }
+
+ /**
+ * @return bool
+ */
+ public function isApplication() {
+ return false;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isLibrary() {
+ return false;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isExtension() {
+ return false;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/values/Url.php b/panel/vendor/phar-io/manifest/src/values/Url.php
new file mode 100644
index 0000000..37917c8
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/values/Url.php
@@ -0,0 +1,47 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class Url {
+ /**
+ * @var string
+ */
+ private $url;
+
+ /**
+ * @param string $url
+ *
+ * @throws InvalidUrlException
+ */
+ public function __construct($url) {
+ $this->ensureUrlIsValid($url);
+
+ $this->url = $url;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString() {
+ return $this->url;
+ }
+
+ /**
+ * @param string $url
+ *
+ * @throws InvalidUrlException
+ */
+ private function ensureUrlIsValid($url) {
+ if (filter_var($url, \FILTER_VALIDATE_URL) === false) {
+ throw new InvalidUrlException;
+ }
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/AuthorElement.php b/panel/vendor/phar-io/manifest/src/xml/AuthorElement.php
new file mode 100644
index 0000000..a32f397
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/AuthorElement.php
@@ -0,0 +1,21 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class AuthorElement extends ManifestElement {
+ public function getName() {
+ return $this->getAttributeValue('name');
+ }
+
+ public function getEmail() {
+ return $this->getAttributeValue('email');
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php b/panel/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php
new file mode 100644
index 0000000..1240d8c
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php
@@ -0,0 +1,19 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class AuthorElementCollection extends ElementCollection {
+ public function current() {
+ return new AuthorElement(
+ $this->getCurrentElement()
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/BundlesElement.php b/panel/vendor/phar-io/manifest/src/xml/BundlesElement.php
new file mode 100644
index 0000000..b90023e
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/BundlesElement.php
@@ -0,0 +1,19 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class BundlesElement extends ManifestElement {
+ public function getComponentElements() {
+ return new ComponentElementCollection(
+ $this->getChildrenByName('component')
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ComponentElement.php b/panel/vendor/phar-io/manifest/src/xml/ComponentElement.php
new file mode 100644
index 0000000..64ed6b0
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ComponentElement.php
@@ -0,0 +1,21 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ComponentElement extends ManifestElement {
+ public function getName() {
+ return $this->getAttributeValue('name');
+ }
+
+ public function getVersion() {
+ return $this->getAttributeValue('version');
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php b/panel/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php
new file mode 100644
index 0000000..9d375f9
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php
@@ -0,0 +1,19 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ComponentElementCollection extends ElementCollection {
+ public function current() {
+ return new ComponentElement(
+ $this->getCurrentElement()
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ContainsElement.php b/panel/vendor/phar-io/manifest/src/xml/ContainsElement.php
new file mode 100644
index 0000000..8172f33
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ContainsElement.php
@@ -0,0 +1,31 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ContainsElement extends ManifestElement {
+ public function getName() {
+ return $this->getAttributeValue('name');
+ }
+
+ public function getVersion() {
+ return $this->getAttributeValue('version');
+ }
+
+ public function getType() {
+ return $this->getAttributeValue('type');
+ }
+
+ public function getExtensionElement() {
+ return new ExtensionElement(
+ $this->getChildByName('extension')
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/CopyrightElement.php b/panel/vendor/phar-io/manifest/src/xml/CopyrightElement.php
new file mode 100644
index 0000000..bf7848e
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/CopyrightElement.php
@@ -0,0 +1,25 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class CopyrightElement extends ManifestElement {
+ public function getAuthorElements() {
+ return new AuthorElementCollection(
+ $this->getChildrenByName('author')
+ );
+ }
+
+ public function getLicenseElement() {
+ return new LicenseElement(
+ $this->getChildByName('license')
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ElementCollection.php b/panel/vendor/phar-io/manifest/src/xml/ElementCollection.php
new file mode 100644
index 0000000..284e77b
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ElementCollection.php
@@ -0,0 +1,58 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use DOMElement;
+use DOMNodeList;
+
+abstract class ElementCollection implements \Iterator {
+ /**
+ * @var DOMNodeList
+ */
+ private $nodeList;
+
+ private $position;
+
+ /**
+ * ElementCollection constructor.
+ *
+ * @param DOMNodeList $nodeList
+ */
+ public function __construct(DOMNodeList $nodeList) {
+ $this->nodeList = $nodeList;
+ $this->position = 0;
+ }
+
+ abstract public function current();
+
+ /**
+ * @return DOMElement
+ */
+ protected function getCurrentElement() {
+ return $this->nodeList->item($this->position);
+ }
+
+ public function next() {
+ $this->position++;
+ }
+
+ public function key() {
+ return $this->position;
+ }
+
+ public function valid() {
+ return $this->position < $this->nodeList->length;
+ }
+
+ public function rewind() {
+ $this->position = 0;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ExtElement.php b/panel/vendor/phar-io/manifest/src/xml/ExtElement.php
new file mode 100644
index 0000000..7a824ab
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ExtElement.php
@@ -0,0 +1,17 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ExtElement extends ManifestElement {
+ public function getName() {
+ return $this->getAttributeValue('name');
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ExtElementCollection.php b/panel/vendor/phar-io/manifest/src/xml/ExtElementCollection.php
new file mode 100644
index 0000000..17acc62
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ExtElementCollection.php
@@ -0,0 +1,20 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ExtElementCollection extends ElementCollection {
+ public function current() {
+ return new ExtElement(
+ $this->getCurrentElement()
+ );
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ExtensionElement.php b/panel/vendor/phar-io/manifest/src/xml/ExtensionElement.php
new file mode 100644
index 0000000..536c085
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ExtensionElement.php
@@ -0,0 +1,21 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class ExtensionElement extends ManifestElement {
+ public function getFor() {
+ return $this->getAttributeValue('for');
+ }
+
+ public function getCompatible() {
+ return $this->getAttributeValue('compatible');
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/LicenseElement.php b/panel/vendor/phar-io/manifest/src/xml/LicenseElement.php
new file mode 100644
index 0000000..ee001df
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/LicenseElement.php
@@ -0,0 +1,21 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class LicenseElement extends ManifestElement {
+ public function getType() {
+ return $this->getAttributeValue('type');
+ }
+
+ public function getUrl() {
+ return $this->getAttributeValue('url');
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ManifestDocument.php b/panel/vendor/phar-io/manifest/src/xml/ManifestDocument.php
new file mode 100644
index 0000000..9b0bd9d
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ManifestDocument.php
@@ -0,0 +1,118 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use DOMDocument;
+use DOMElement;
+
+class ManifestDocument {
+ const XMLNS = 'https://phar.io/xml/manifest/1.0';
+
+ /**
+ * @var DOMDocument
+ */
+ private $dom;
+
+ /**
+ * ManifestDocument constructor.
+ *
+ * @param DOMDocument $dom
+ */
+ private function __construct(DOMDocument $dom) {
+ $this->ensureCorrectDocumentType($dom);
+
+ $this->dom = $dom;
+ }
+
+ public static function fromFile($filename) {
+ if (!file_exists($filename)) {
+ throw new ManifestDocumentException(
+ sprintf('File "%s" not found', $filename)
+ );
+ }
+
+ return self::fromString(
+ file_get_contents($filename)
+ );
+ }
+
+ public static function fromString($xmlString) {
+ $prev = libxml_use_internal_errors(true);
+ libxml_clear_errors();
+
+ $dom = new DOMDocument();
+ $dom->loadXML($xmlString);
+
+ $errors = libxml_get_errors();
+ libxml_use_internal_errors($prev);
+
+ if (count($errors) !== 0) {
+ throw new ManifestDocumentLoadingException($errors);
+ }
+
+ return new self($dom);
+ }
+
+ public function getContainsElement() {
+ return new ContainsElement(
+ $this->fetchElementByName('contains')
+ );
+ }
+
+ public function getCopyrightElement() {
+ return new CopyrightElement(
+ $this->fetchElementByName('copyright')
+ );
+ }
+
+ public function getRequiresElement() {
+ return new RequiresElement(
+ $this->fetchElementByName('requires')
+ );
+ }
+
+ public function hasBundlesElement() {
+ return $this->dom->getElementsByTagNameNS(self::XMLNS, 'bundles')->length === 1;
+ }
+
+ public function getBundlesElement() {
+ return new BundlesElement(
+ $this->fetchElementByName('bundles')
+ );
+ }
+
+ private function ensureCorrectDocumentType(DOMDocument $dom) {
+ $root = $dom->documentElement;
+
+ if ($root->localName !== 'phar' || $root->namespaceURI !== self::XMLNS) {
+ throw new ManifestDocumentException('Not a phar.io manifest document');
+ }
+ }
+
+ /**
+ * @param $elementName
+ *
+ * @return DOMElement
+ *
+ * @throws ManifestDocumentException
+ */
+ private function fetchElementByName($elementName) {
+ $element = $this->dom->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
+
+ if (!$element instanceof DOMElement) {
+ throw new ManifestDocumentException(
+ sprintf('Element %s missing', $elementName)
+ );
+ }
+
+ return $element;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php b/panel/vendor/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php
new file mode 100644
index 0000000..59ac5c6
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ManifestDocumentLoadingException.php
@@ -0,0 +1,48 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use LibXMLError;
+
+class ManifestDocumentLoadingException extends \Exception implements Exception {
+ /**
+ * @var LibXMLError[]
+ */
+ private $libxmlErrors;
+
+ /**
+ * ManifestDocumentLoadingException constructor.
+ *
+ * @param LibXMLError[] $libxmlErrors
+ */
+ public function __construct(array $libxmlErrors) {
+ $this->libxmlErrors = $libxmlErrors;
+ $first = $this->libxmlErrors[0];
+
+ parent::__construct(
+ sprintf(
+ '%s (Line: %d / Column: %d / File: %s)',
+ $first->message,
+ $first->line,
+ $first->column,
+ $first->file
+ ),
+ $first->code
+ );
+ }
+
+ /**
+ * @return LibXMLError[]
+ */
+ public function getLibxmlErrors() {
+ return $this->libxmlErrors;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/ManifestElement.php b/panel/vendor/phar-io/manifest/src/xml/ManifestElement.php
new file mode 100644
index 0000000..09d07cc
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/ManifestElement.php
@@ -0,0 +1,100 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use DOMElement;
+use DOMNodeList;
+
+class ManifestElement {
+ const XMLNS = 'https://phar.io/xml/manifest/1.0';
+
+ /**
+ * @var DOMElement
+ */
+ private $element;
+
+ /**
+ * ContainsElement constructor.
+ *
+ * @param DOMElement $element
+ */
+ public function __construct(DOMElement $element) {
+ $this->element = $element;
+ }
+
+ /**
+ * @param string $name
+ *
+ * @return string
+ *
+ * @throws ManifestElementException
+ */
+ protected function getAttributeValue($name) {
+ if (!$this->element->hasAttribute($name)) {
+ throw new ManifestElementException(
+ sprintf(
+ 'Attribute %s not set on element %s',
+ $name,
+ $this->element->localName
+ )
+ );
+ }
+
+ return $this->element->getAttribute($name);
+ }
+
+ /**
+ * @param $elementName
+ *
+ * @return DOMElement
+ *
+ * @throws ManifestElementException
+ */
+ protected function getChildByName($elementName) {
+ $element = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
+
+ if (!$element instanceof DOMElement) {
+ throw new ManifestElementException(
+ sprintf('Element %s missing', $elementName)
+ );
+ }
+
+ return $element;
+ }
+
+ /**
+ * @param $elementName
+ *
+ * @return DOMNodeList
+ *
+ * @throws ManifestElementException
+ */
+ protected function getChildrenByName($elementName) {
+ $elementList = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName);
+
+ if ($elementList->length === 0) {
+ throw new ManifestElementException(
+ sprintf('Element(s) %s missing', $elementName)
+ );
+ }
+
+ return $elementList;
+ }
+
+ /**
+ * @param string $elementName
+ *
+ * @return bool
+ */
+ protected function hasChild($elementName) {
+ return $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->length !== 0;
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/PhpElement.php b/panel/vendor/phar-io/manifest/src/xml/PhpElement.php
new file mode 100644
index 0000000..e7340c0
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/PhpElement.php
@@ -0,0 +1,27 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class PhpElement extends ManifestElement {
+ public function getVersion() {
+ return $this->getAttributeValue('version');
+ }
+
+ public function hasExtElements() {
+ return $this->hasChild('ext');
+ }
+
+ public function getExtElements() {
+ return new ExtElementCollection(
+ $this->getChildrenByName('ext')
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/src/xml/RequiresElement.php b/panel/vendor/phar-io/manifest/src/xml/RequiresElement.php
new file mode 100644
index 0000000..5f41b2e
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/src/xml/RequiresElement.php
@@ -0,0 +1,19 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+class RequiresElement extends ManifestElement {
+ public function getPHPElement() {
+ return new PhpElement(
+ $this->getChildByName('php')
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/ManifestDocumentMapperTest.php b/panel/vendor/phar-io/manifest/tests/ManifestDocumentMapperTest.php
new file mode 100644
index 0000000..e261231
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/ManifestDocumentMapperTest.php
@@ -0,0 +1,110 @@
+assertInstanceOf(
+ Manifest::class,
+ $mapper->map($manifestDocument)
+ );
+ }
+
+ public function dataProvider() {
+ return [
+ 'application' => [__DIR__ . '/_fixture/phpunit-5.6.5.xml'],
+ 'library' => [__DIR__ . '/_fixture/library.xml'],
+ 'extension' => [__DIR__ . '/_fixture/extension.xml']
+ ];
+ }
+
+ public function testThrowsExceptionOnUnsupportedType() {
+ $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/custom.xml');
+ $mapper = new ManifestDocumentMapper();
+
+ $this->expectException(ManifestDocumentMapperException::class);
+ $mapper->map($manifestDocument);
+ }
+
+ public function testInvalidVersionInformationThrowsException() {
+ $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/invalidversion.xml');
+ $mapper = new ManifestDocumentMapper();
+
+ $this->expectException(ManifestDocumentMapperException::class);
+ $mapper->map($manifestDocument);
+ }
+
+ public function testInvalidVersionConstraintThrowsException() {
+ $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/invalidversionconstraint.xml');
+ $mapper = new ManifestDocumentMapper();
+
+ $this->expectException(ManifestDocumentMapperException::class);
+ $mapper->map($manifestDocument);
+ }
+
+ /**
+ * @uses \PharIo\Manifest\ExtensionElement
+ */
+ public function testInvalidCompatibleConstraintThrowsException() {
+ $manifestDocument = ManifestDocument::fromFile(__DIR__ . '/_fixture/extension-invalidcompatible.xml');
+ $mapper = new ManifestDocumentMapper();
+
+ $this->expectException(ManifestDocumentMapperException::class);
+ $mapper->map($manifestDocument);
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/ManifestLoaderTest.php b/panel/vendor/phar-io/manifest/tests/ManifestLoaderTest.php
new file mode 100644
index 0000000..73b682e
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/ManifestLoaderTest.php
@@ -0,0 +1,83 @@
+assertInstanceOf(
+ Manifest::class,
+ ManifestLoader::fromFile(__DIR__ . '/_fixture/library.xml')
+ );
+ }
+
+ public function testCanBeLoadedFromString() {
+ $this->assertInstanceOf(
+ Manifest::class,
+ ManifestLoader::fromString(
+ file_get_contents(__DIR__ . '/_fixture/library.xml')
+ )
+ );
+ }
+
+ public function testCanBeLoadedFromPhar() {
+ $this->assertInstanceOf(
+ Manifest::class,
+ ManifestLoader::fromPhar(__DIR__ . '/_fixture/test.phar')
+ );
+
+ }
+
+ public function testLoadingNonExistingFileThrowsException() {
+ $this->expectException(ManifestLoaderException::class);
+ ManifestLoader::fromFile('/not/existing');
+ }
+
+ /**
+ * @uses \PharIo\Manifest\ManifestDocumentLoadingException
+ */
+ public function testLoadingInvalidXmlThrowsException() {
+ $this->expectException(ManifestLoaderException::class);
+ ManifestLoader::fromString('');
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/ManifestSerializerTest.php b/panel/vendor/phar-io/manifest/tests/ManifestSerializerTest.php
new file mode 100644
index 0000000..4433020
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/ManifestSerializerTest.php
@@ -0,0 +1,114 @@
+assertXmlStringEqualsXmlString(
+ $expected,
+ $serializer->serializeToString($manifest)
+ );
+ }
+
+ public function dataProvider() {
+ return [
+ 'application' => [file_get_contents(__DIR__ . '/_fixture/phpunit-5.6.5.xml')],
+ 'library' => [file_get_contents(__DIR__ . '/_fixture/library.xml')],
+ 'extension' => [file_get_contents(__DIR__ . '/_fixture/extension.xml')]
+ ];
+ }
+
+ /**
+ * @uses \PharIo\Manifest\Library
+ * @uses \PharIo\Manifest\ApplicationName
+ */
+ public function testCanSerializeToFile() {
+ $src = __DIR__ . '/_fixture/library.xml';
+ $dest = '/tmp/' . uniqid('serializer', true);
+ $manifest = ManifestLoader::fromFile($src);
+ $serializer = new ManifestSerializer();
+ $serializer->serializeToFile($manifest, $dest);
+ $this->assertXmlFileEqualsXmlFile($src, $dest);
+ unlink($dest);
+ }
+
+ /**
+ * @uses \PharIo\Manifest\ApplicationName
+ */
+ public function testCanHandleUnknownType() {
+ $type = $this->getMockForAbstractClass(Type::class);
+ $manifest = new Manifest(
+ new ApplicationName('testvendor/testname'),
+ new Version('1.0.0'),
+ $type,
+ new CopyrightInformation(
+ new AuthorCollection(),
+ new License('bsd-3', new Url('https://some/uri'))
+ ),
+ new RequirementCollection(),
+ new BundledComponentCollection()
+ );
+
+ $serializer = new ManifestSerializer();
+ $this->assertXmlStringEqualsXmlFile(
+ __DIR__ . '/_fixture/custom.xml',
+ $serializer->serializeToString($manifest)
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/custom.xml b/panel/vendor/phar-io/manifest/tests/_fixture/custom.xml
new file mode 100644
index 0000000..4f43828
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/custom.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/extension-invalidcompatible.xml b/panel/vendor/phar-io/manifest/tests/_fixture/extension-invalidcompatible.xml
new file mode 100644
index 0000000..a78111c
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/extension-invalidcompatible.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/extension.xml b/panel/vendor/phar-io/manifest/tests/_fixture/extension.xml
new file mode 100644
index 0000000..a870aee
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/extension.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/invalidversion.xml b/panel/vendor/phar-io/manifest/tests/_fixture/invalidversion.xml
new file mode 100644
index 0000000..788dd4c
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/invalidversion.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/invalidversionconstraint.xml b/panel/vendor/phar-io/manifest/tests/_fixture/invalidversionconstraint.xml
new file mode 100644
index 0000000..f881f8b
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/invalidversionconstraint.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/library.xml b/panel/vendor/phar-io/manifest/tests/_fixture/library.xml
new file mode 100644
index 0000000..a5e2523
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/library.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/manifest.xml b/panel/vendor/phar-io/manifest/tests/_fixture/manifest.xml
new file mode 100644
index 0000000..a5e2523
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/manifest.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/phpunit-5.6.5.xml b/panel/vendor/phar-io/manifest/tests/_fixture/phpunit-5.6.5.xml
new file mode 100644
index 0000000..aadbea2
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/_fixture/phpunit-5.6.5.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/manifest/tests/_fixture/test.phar b/panel/vendor/phar-io/manifest/tests/_fixture/test.phar
new file mode 100644
index 0000000..d2a3e39
Binary files /dev/null and b/panel/vendor/phar-io/manifest/tests/_fixture/test.phar differ
diff --git a/panel/vendor/phar-io/manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.php b/panel/vendor/phar-io/manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.php
new file mode 100644
index 0000000..d87e84e
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/exceptions/ManifestDocumentLoadingExceptionTest.php
@@ -0,0 +1,19 @@
+loadXML('');
+ $exception = new ManifestDocumentLoadingException(libxml_get_errors());
+ libxml_use_internal_errors($prev);
+
+ $this->assertContainsOnlyInstancesOf(LibXMLError::class, $exception->getLibxmlErrors());
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/ApplicationNameTest.php b/panel/vendor/phar-io/manifest/tests/values/ApplicationNameTest.php
new file mode 100644
index 0000000..c959415
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/ApplicationNameTest.php
@@ -0,0 +1,48 @@
+assertInstanceOf(
+ ApplicationName::class,
+ new ApplicationName('foo/bar')
+ );
+ }
+
+ public function testUsingInvalidFormatForNameThrowsException() {
+ $this->expectException(InvalidApplicationNameException::class);
+ $this->expectExceptionCode(InvalidApplicationNameException::InvalidFormat);
+ new ApplicationName('foo');
+ }
+
+ public function testUsingWrongTypeForNameThrowsException() {
+ $this->expectException(InvalidApplicationNameException::class);
+ $this->expectExceptionCode(InvalidApplicationNameException::NotAString);
+ new ApplicationName(123);
+ }
+
+ public function testReturnsTrueForEqualNamesWhenCompared() {
+ $app = new ApplicationName('foo/bar');
+ $this->assertTrue(
+ $app->isEqual($app)
+ );
+ }
+
+ public function testReturnsFalseForNonEqualNamesWhenCompared() {
+ $app1 = new ApplicationName('foo/bar');
+ $app2 = new ApplicationName('foo/foo');
+ $this->assertFalse(
+ $app1->isEqual($app2)
+ );
+ }
+
+ public function testCanBeConvertedToString() {
+ $this->assertEquals(
+ 'foo/bar',
+ new ApplicationName('foo/bar')
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/ApplicationTest.php b/panel/vendor/phar-io/manifest/tests/values/ApplicationTest.php
new file mode 100644
index 0000000..86b5da6
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/ApplicationTest.php
@@ -0,0 +1,44 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\Application
+ * @covers PharIo\Manifest\Type
+ */
+class ApplicationTest extends TestCase {
+ /**
+ * @var Application
+ */
+ private $type;
+
+ protected function setUp() {
+ $this->type = Type::application();
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(Application::class, $this->type);
+ }
+
+ public function testIsApplication() {
+ $this->assertTrue($this->type->isApplication());
+ }
+
+ public function testIsNotLibrary() {
+ $this->assertFalse($this->type->isLibrary());
+ }
+
+ public function testIsNotExtension() {
+ $this->assertFalse($this->type->isExtension());
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/AuthorCollectionTest.php b/panel/vendor/phar-io/manifest/tests/values/AuthorCollectionTest.php
new file mode 100644
index 0000000..0fa1b95
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/AuthorCollectionTest.php
@@ -0,0 +1,62 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Manifest\AuthorCollection
+ * @covers \PharIo\Manifest\AuthorCollectionIterator
+ *
+ * @uses \PharIo\Manifest\Author
+ * @uses \PharIo\Manifest\Email
+ */
+class AuthorCollectionTest extends TestCase {
+ /**
+ * @var AuthorCollection
+ */
+ private $collection;
+
+ /**
+ * @var Author
+ */
+ private $item;
+
+ protected function setUp() {
+ $this->collection = new AuthorCollection;
+ $this->item = new Author('Joe Developer', new Email('user@example.com'));
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(AuthorCollection::class, $this->collection);
+ }
+
+ public function testCanBeCounted() {
+ $this->collection->add($this->item);
+
+ $this->assertCount(1, $this->collection);
+ }
+
+ public function testCanBeIterated() {
+ $this->collection->add(
+ new Author('Dummy First', new Email('dummy@example.com'))
+ );
+ $this->collection->add($this->item);
+ $this->assertContains($this->item, $this->collection);
+ }
+
+ public function testKeyPositionCanBeRetreived() {
+ $this->collection->add($this->item);
+ foreach($this->collection as $key => $item) {
+ $this->assertEquals(0, $key);
+ }
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/AuthorTest.php b/panel/vendor/phar-io/manifest/tests/values/AuthorTest.php
new file mode 100644
index 0000000..b7317fa
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/AuthorTest.php
@@ -0,0 +1,45 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\Author
+ *
+ * @uses PharIo\Manifest\Email
+ */
+class AuthorTest extends TestCase {
+ /**
+ * @var Author
+ */
+ private $author;
+
+ protected function setUp() {
+ $this->author = new Author('Joe Developer', new Email('user@example.com'));
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(Author::class, $this->author);
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals('Joe Developer', $this->author->getName());
+ }
+
+ public function testEmailCanBeRetrieved() {
+ $this->assertEquals('user@example.com', $this->author->getEmail());
+ }
+
+ public function testCanBeUsedAsString() {
+ $this->assertEquals('Joe Developer ', $this->author);
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/BundledComponentCollectionTest.php b/panel/vendor/phar-io/manifest/tests/values/BundledComponentCollectionTest.php
new file mode 100644
index 0000000..66cd0c4
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/BundledComponentCollectionTest.php
@@ -0,0 +1,63 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Manifest\BundledComponentCollection
+ * @covers \PharIo\Manifest\BundledComponentCollectionIterator
+ *
+ * @uses \PharIo\Manifest\BundledComponent
+ * @uses \PharIo\Version\Version
+ */
+class BundledComponentCollectionTest extends TestCase {
+ /**
+ * @var BundledComponentCollection
+ */
+ private $collection;
+
+ /**
+ * @var BundledComponent
+ */
+ private $item;
+
+ protected function setUp() {
+ $this->collection = new BundledComponentCollection;
+ $this->item = new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2'));
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(BundledComponentCollection::class, $this->collection);
+ }
+
+ public function testCanBeCounted() {
+ $this->collection->add($this->item);
+
+ $this->assertCount(1, $this->collection);
+ }
+
+ public function testCanBeIterated() {
+ $this->collection->add($this->createMock(BundledComponent::class));
+ $this->collection->add($this->item);
+
+ $this->assertContains($this->item, $this->collection);
+ }
+
+ public function testKeyPositionCanBeRetreived() {
+ $this->collection->add($this->item);
+ foreach($this->collection as $key => $item) {
+ $this->assertEquals(0, $key);
+ }
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/BundledComponentTest.php b/panel/vendor/phar-io/manifest/tests/values/BundledComponentTest.php
new file mode 100644
index 0000000..01b8e13
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/BundledComponentTest.php
@@ -0,0 +1,42 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\BundledComponent
+ *
+ * @uses \PharIo\Version\Version
+ */
+class BundledComponentTest extends TestCase {
+ /**
+ * @var BundledComponent
+ */
+ private $bundledComponent;
+
+ protected function setUp() {
+ $this->bundledComponent = new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2'));
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(BundledComponent::class, $this->bundledComponent);
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals('phpunit/php-code-coverage', $this->bundledComponent->getName());
+ }
+
+ public function testVersionCanBeRetrieved() {
+ $this->assertEquals('4.0.2', $this->bundledComponent->getVersion()->getVersionString());
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/CopyrightInformationTest.php b/panel/vendor/phar-io/manifest/tests/values/CopyrightInformationTest.php
new file mode 100644
index 0000000..de738f4
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/CopyrightInformationTest.php
@@ -0,0 +1,62 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\CopyrightInformation
+ *
+ * @uses PharIo\Manifest\AuthorCollection
+ * @uses PharIo\Manifest\AuthorCollectionIterator
+ * @uses PharIo\Manifest\Author
+ * @uses PharIo\Manifest\Email
+ * @uses PharIo\Manifest\License
+ * @uses PharIo\Manifest\Url
+ */
+class CopyrightInformationTest extends TestCase {
+ /**
+ * @var CopyrightInformation
+ */
+ private $copyrightInformation;
+
+ /**
+ * @var Author
+ */
+ private $author;
+
+ /**
+ * @var License
+ */
+ private $license;
+
+ protected function setUp() {
+ $this->author = new Author('Joe Developer', new Email('user@example.com'));
+ $this->license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE'));
+
+ $authors = new AuthorCollection;
+ $authors->add($this->author);
+
+ $this->copyrightInformation = new CopyrightInformation($authors, $this->license);
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(CopyrightInformation::class, $this->copyrightInformation);
+ }
+
+ public function testAuthorsCanBeRetrieved() {
+ $this->assertContains($this->author, $this->copyrightInformation->getAuthors());
+ }
+
+ public function testLicenseCanBeRetrieved() {
+ $this->assertEquals($this->license, $this->copyrightInformation->getLicense());
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/EmailTest.php b/panel/vendor/phar-io/manifest/tests/values/EmailTest.php
new file mode 100644
index 0000000..ee38531
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/EmailTest.php
@@ -0,0 +1,35 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\Email
+ */
+class EmailTest extends TestCase {
+ public function testCanBeCreatedForValidEmail() {
+ $this->assertInstanceOf(Email::class, new Email('user@example.com'));
+ }
+
+ public function testCanBeUsedAsString() {
+ $this->assertEquals('user@example.com', new Email('user@example.com'));
+ }
+
+ /**
+ * @covers PharIo\Manifest\InvalidEmailException
+ */
+ public function testCannotBeCreatedForInvalidEmail() {
+ $this->expectException(InvalidEmailException::class);
+
+ new Email('invalid');
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/ExtensionTest.php b/panel/vendor/phar-io/manifest/tests/values/ExtensionTest.php
new file mode 100644
index 0000000..1c9d676
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/ExtensionTest.php
@@ -0,0 +1,109 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\AnyVersionConstraint;
+use PharIo\Version\Version;
+use PharIo\Version\VersionConstraint;
+use PharIo\Version\VersionConstraintParser;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Manifest\Extension
+ * @covers \PharIo\Manifest\Type
+ *
+ * @uses \PharIo\Version\VersionConstraint
+ * @uses \PharIo\Manifest\ApplicationName
+ */
+class ExtensionTest extends TestCase {
+ /**
+ * @var Extension
+ */
+ private $type;
+
+ /**
+ * @var ApplicationName|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $name;
+
+ protected function setUp() {
+ $this->name = $this->createMock(ApplicationName::class);
+ $this->type = Type::extension($this->name, new AnyVersionConstraint);
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(Extension::class, $this->type);
+ }
+
+ public function testIsNotApplication() {
+ $this->assertFalse($this->type->isApplication());
+ }
+
+ public function testIsNotLibrary() {
+ $this->assertFalse($this->type->isLibrary());
+ }
+
+ public function testIsExtension() {
+ $this->assertTrue($this->type->isExtension());
+ }
+
+ public function testApplicationCanBeRetrieved()
+ {
+ $this->assertInstanceOf(ApplicationName::class, $this->type->getApplicationName());
+ }
+
+ public function testVersionConstraintCanBeRetrieved() {
+ $this->assertInstanceOf(
+ VersionConstraint::class,
+ $this->type->getVersionConstraint()
+ );
+ }
+
+ public function testApplicationCanBeQueried()
+ {
+ $this->name->method('isEqual')->willReturn(true);
+ $this->assertTrue(
+ $this->type->isExtensionFor($this->createMock(ApplicationName::class))
+ );
+ }
+
+ public function testCompatibleWithReturnsTrueForMatchingVersionConstraintAndApplicaiton() {
+ $app = new ApplicationName('foo/bar');
+ $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0'));
+ $version = new Version('1.0.0');
+
+ $this->assertTrue(
+ $extension->isCompatibleWith($app, $version)
+ );
+ }
+
+ public function testCompatibleWithReturnsFalseForNotMatchingVersionConstraint() {
+ $app = new ApplicationName('foo/bar');
+ $extension = Type::extension($app, (new VersionConstraintParser)->parse('^1.0'));
+ $version = new Version('2.0.0');
+
+ $this->assertFalse(
+ $extension->isCompatibleWith($app, $version)
+ );
+ }
+
+ public function testCompatibleWithReturnsFalseForNotMatchingApplication() {
+ $app1 = new ApplicationName('foo/bar');
+ $app2 = new ApplicationName('foo/foo');
+ $extension = Type::extension($app1, (new VersionConstraintParser)->parse('^1.0'));
+ $version = new Version('1.0.0');
+
+ $this->assertFalse(
+ $extension->isCompatibleWith($app2, $version)
+ );
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/LibraryTest.php b/panel/vendor/phar-io/manifest/tests/values/LibraryTest.php
new file mode 100644
index 0000000..f8d1c64
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/LibraryTest.php
@@ -0,0 +1,44 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\Library
+ * @covers PharIo\Manifest\Type
+ */
+class LibraryTest extends TestCase {
+ /**
+ * @var Library
+ */
+ private $type;
+
+ protected function setUp() {
+ $this->type = Type::library();
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(Library::class, $this->type);
+ }
+
+ public function testIsNotApplication() {
+ $this->assertFalse($this->type->isApplication());
+ }
+
+ public function testIsLibrary() {
+ $this->assertTrue($this->type->isLibrary());
+ }
+
+ public function testIsNotExtension() {
+ $this->assertFalse($this->type->isExtension());
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/LicenseTest.php b/panel/vendor/phar-io/manifest/tests/values/LicenseTest.php
new file mode 100644
index 0000000..c9c5c3c
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/LicenseTest.php
@@ -0,0 +1,41 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\License
+ *
+ * @uses PharIo\Manifest\Url
+ */
+class LicenseTest extends TestCase {
+ /**
+ * @var License
+ */
+ private $license;
+
+ protected function setUp() {
+ $this->license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE'));
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(License::class, $this->license);
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals('BSD-3-Clause', $this->license->getName());
+ }
+
+ public function testUrlCanBeRetrieved() {
+ $this->assertEquals('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE', $this->license->getUrl());
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/ManifestTest.php b/panel/vendor/phar-io/manifest/tests/values/ManifestTest.php
new file mode 100644
index 0000000..cff0a68
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/ManifestTest.php
@@ -0,0 +1,187 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+use PharIo\Version\AnyVersionConstraint;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Manifest\Manifest
+ *
+ * @uses \PharIo\Manifest\ApplicationName
+ * @uses \PharIo\Manifest\Author
+ * @uses \PharIo\Manifest\AuthorCollection
+ * @uses \PharIo\Manifest\BundledComponent
+ * @uses \PharIo\Manifest\BundledComponentCollection
+ * @uses \PharIo\Manifest\CopyrightInformation
+ * @uses \PharIo\Manifest\Email
+ * @uses \PharIo\Manifest\License
+ * @uses \PharIo\Manifest\RequirementCollection
+ * @uses \PharIo\Manifest\PhpVersionRequirement
+ * @uses \PharIo\Manifest\Type
+ * @uses \PharIo\Manifest\Application
+ * @uses \PharIo\Manifest\Url
+ * @uses \PharIo\Version\Version
+ * @uses \PharIo\Version\VersionConstraint
+ */
+class ManifestTest extends TestCase {
+ /**
+ * @var ApplicationName
+ */
+ private $name;
+
+ /**
+ * @var Version
+ */
+ private $version;
+
+ /**
+ * @var Type
+ */
+ private $type;
+
+ /**
+ * @var CopyrightInformation
+ */
+ private $copyrightInformation;
+
+ /**
+ * @var RequirementCollection
+ */
+ private $requirements;
+
+ /**
+ * @var BundledComponentCollection
+ */
+ private $bundledComponents;
+
+ /**
+ * @var Manifest
+ */
+ private $manifest;
+
+ protected function setUp() {
+ $this->version = new Version('5.6.5');
+
+ $this->type = Type::application();
+
+ $author = new Author('Joe Developer', new Email('user@example.com'));
+ $license = new License('BSD-3-Clause', new Url('https://github.com/sebastianbergmann/phpunit/blob/master/LICENSE'));
+
+ $authors = new AuthorCollection;
+ $authors->add($author);
+
+ $this->copyrightInformation = new CopyrightInformation($authors, $license);
+
+ $this->requirements = new RequirementCollection;
+ $this->requirements->add(new PhpVersionRequirement(new AnyVersionConstraint));
+
+ $this->bundledComponents = new BundledComponentCollection;
+ $this->bundledComponents->add(new BundledComponent('phpunit/php-code-coverage', new Version('4.0.2')));
+
+ $this->name = new ApplicationName('phpunit/phpunit');
+
+ $this->manifest = new Manifest(
+ $this->name,
+ $this->version,
+ $this->type,
+ $this->copyrightInformation,
+ $this->requirements,
+ $this->bundledComponents
+ );
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(Manifest::class, $this->manifest);
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals($this->name, $this->manifest->getName());
+ }
+
+ public function testVersionCanBeRetrieved() {
+ $this->assertEquals($this->version, $this->manifest->getVersion());
+ }
+
+ public function testTypeCanBeRetrieved() {
+ $this->assertEquals($this->type, $this->manifest->getType());
+ }
+
+ public function testTypeCanBeQueried() {
+ $this->assertTrue($this->manifest->isApplication());
+ $this->assertFalse($this->manifest->isLibrary());
+ $this->assertFalse($this->manifest->isExtension());
+ }
+
+ public function testCopyrightInformationCanBeRetrieved() {
+ $this->assertEquals($this->copyrightInformation, $this->manifest->getCopyrightInformation());
+ }
+
+ public function testRequirementsCanBeRetrieved() {
+ $this->assertEquals($this->requirements, $this->manifest->getRequirements());
+ }
+
+ public function testBundledComponentsCanBeRetrieved() {
+ $this->assertEquals($this->bundledComponents, $this->manifest->getBundledComponents());
+ }
+
+ /**
+ * @uses \PharIo\Manifest\Extension
+ */
+ public function testExtendedApplicationCanBeQueriedForExtension()
+ {
+ $appName = new ApplicationName('foo/bar');
+ $manifest = new Manifest(
+ new ApplicationName('foo/foo'),
+ new Version('1.0.0'),
+ Type::extension($appName, new AnyVersionConstraint),
+ $this->copyrightInformation,
+ new RequirementCollection,
+ new BundledComponentCollection
+ );
+
+ $this->assertTrue($manifest->isExtensionFor($appName));
+ }
+
+ public function testNonExtensionReturnsFalseWhenQueriesForExtension() {
+ $appName = new ApplicationName('foo/bar');
+ $manifest = new Manifest(
+ new ApplicationName('foo/foo'),
+ new Version('1.0.0'),
+ Type::library(),
+ $this->copyrightInformation,
+ new RequirementCollection,
+ new BundledComponentCollection
+ );
+
+ $this->assertFalse($manifest->isExtensionFor($appName));
+ }
+
+ /**
+ * @uses \PharIo\Manifest\Extension
+ */
+ public function testExtendedApplicationCanBeQueriedForExtensionWithVersion()
+ {
+ $appName = new ApplicationName('foo/bar');
+ $manifest = new Manifest(
+ new ApplicationName('foo/foo'),
+ new Version('1.0.0'),
+ Type::extension($appName, new AnyVersionConstraint),
+ $this->copyrightInformation,
+ new RequirementCollection,
+ new BundledComponentCollection
+ );
+
+ $this->assertTrue($manifest->isExtensionFor($appName, new Version('1.2.3')));
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/PhpExtensionRequirementTest.php b/panel/vendor/phar-io/manifest/tests/values/PhpExtensionRequirementTest.php
new file mode 100644
index 0000000..ae1c058
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/PhpExtensionRequirementTest.php
@@ -0,0 +1,26 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\PhpExtensionRequirement
+ */
+class PhpExtensionRequirementTest extends TestCase {
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(PhpExtensionRequirement::class, new PhpExtensionRequirement('dom'));
+ }
+
+ public function testCanBeUsedAsString() {
+ $this->assertEquals('dom', new PhpExtensionRequirement('dom'));
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/PhpVersionRequirementTest.php b/panel/vendor/phar-io/manifest/tests/values/PhpVersionRequirementTest.php
new file mode 100644
index 0000000..67ac41a
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/PhpVersionRequirementTest.php
@@ -0,0 +1,38 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\ExactVersionConstraint;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\PhpVersionRequirement
+ *
+ * @uses \PharIo\Version\VersionConstraint
+ */
+class PhpVersionRequirementTest extends TestCase {
+ /**
+ * @var PhpVersionRequirement
+ */
+ private $requirement;
+
+ protected function setUp() {
+ $this->requirement = new PhpVersionRequirement(new ExactVersionConstraint('7.1.0'));
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(PhpVersionRequirement::class, $this->requirement);
+ }
+
+ public function testVersionConstraintCanBeRetrieved() {
+ $this->assertEquals('7.1.0', $this->requirement->getVersionConstraint()->asString());
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/RequirementCollectionTest.php b/panel/vendor/phar-io/manifest/tests/values/RequirementCollectionTest.php
new file mode 100644
index 0000000..2afeb1a
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/RequirementCollectionTest.php
@@ -0,0 +1,63 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PharIo\Version\ExactVersionConstraint;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Manifest\RequirementCollection
+ * @covers \PharIo\Manifest\RequirementCollectionIterator
+ *
+ * @uses \PharIo\Manifest\PhpVersionRequirement
+ * @uses \PharIo\Version\VersionConstraint
+ */
+class RequirementCollectionTest extends TestCase {
+ /**
+ * @var RequirementCollection
+ */
+ private $collection;
+
+ /**
+ * @var Requirement
+ */
+ private $item;
+
+ protected function setUp() {
+ $this->collection = new RequirementCollection;
+ $this->item = new PhpVersionRequirement(new ExactVersionConstraint('7.1.0'));
+ }
+
+ public function testCanBeCreated() {
+ $this->assertInstanceOf(RequirementCollection::class, $this->collection);
+ }
+
+ public function testCanBeCounted() {
+ $this->collection->add($this->item);
+
+ $this->assertCount(1, $this->collection);
+ }
+
+ public function testCanBeIterated() {
+ $this->collection->add(new PhpVersionRequirement(new ExactVersionConstraint('5.6.0')));
+ $this->collection->add($this->item);
+
+ $this->assertContains($this->item, $this->collection);
+ }
+
+ public function testKeyPositionCanBeRetreived() {
+ $this->collection->add($this->item);
+ foreach($this->collection as $key => $item) {
+ $this->assertEquals(0, $key);
+ }
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/values/UrlTest.php b/panel/vendor/phar-io/manifest/tests/values/UrlTest.php
new file mode 100644
index 0000000..20f09c1
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/values/UrlTest.php
@@ -0,0 +1,35 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Manifest;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Manifest\Url
+ */
+class UrlTest extends TestCase {
+ public function testCanBeCreatedForValidUrl() {
+ $this->assertInstanceOf(Url::class, new Url('https://phar.io/'));
+ }
+
+ public function testCanBeUsedAsString() {
+ $this->assertEquals('https://phar.io/', new Url('https://phar.io/'));
+ }
+
+ /**
+ * @covers PharIo\Manifest\InvalidUrlException
+ */
+ public function testCannotBeCreatedForInvalidUrl() {
+ $this->expectException(InvalidUrlException::class);
+
+ new Url('invalid');
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/AuthorElementCollectionTest.php b/panel/vendor/phar-io/manifest/tests/xml/AuthorElementCollectionTest.php
new file mode 100644
index 0000000..327a7e3
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/AuthorElementCollectionTest.php
@@ -0,0 +1,18 @@
+loadXML('');
+ $collection = new AuthorElementCollection($dom->childNodes);
+
+ foreach($collection as $authorElement) {
+ $this->assertInstanceOf(AuthorElement::class, $authorElement);
+ }
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/AuthorElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/AuthorElementTest.php
new file mode 100644
index 0000000..430c0ca
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/AuthorElementTest.php
@@ -0,0 +1,25 @@
+loadXML('');
+ $this->author = new AuthorElement($dom->documentElement);
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals('Reiner Zufall', $this->author->getName());
+ }
+
+ public function testEmailCanBeRetrieved() {
+ $this->assertEquals('reiner@zufall.de', $this->author->getEmail());
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/BundlesElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/BundlesElementTest.php
new file mode 100644
index 0000000..7972617
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/BundlesElementTest.php
@@ -0,0 +1,41 @@
+dom = new DOMDocument();
+ $this->dom->loadXML('');
+ $this->bundles = new BundlesElement($this->dom->documentElement);
+ }
+
+ public function testThrowsExceptionWhenGetComponentElementsIsCalledButNodesAreMissing() {
+ $this->expectException(ManifestElementException::class);
+ $this->bundles->getComponentElements();
+ }
+
+ public function testGetComponentElementsReturnsComponentElementCollection() {
+ $this->addComponent();
+ $this->assertInstanceOf(
+ ComponentElementCollection::class, $this->bundles->getComponentElements()
+ );
+ }
+
+ private function addComponent() {
+ $this->dom->documentElement->appendChild(
+ $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'component')
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/ComponentElementCollectionTest.php b/panel/vendor/phar-io/manifest/tests/xml/ComponentElementCollectionTest.php
new file mode 100644
index 0000000..3a2716f
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/ComponentElementCollectionTest.php
@@ -0,0 +1,18 @@
+loadXML('');
+ $collection = new ComponentElementCollection($dom->childNodes);
+
+ foreach($collection as $componentElement) {
+ $this->assertInstanceOf(ComponentElement::class, $componentElement);
+ }
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/ComponentElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/ComponentElementTest.php
new file mode 100644
index 0000000..ab89fbd
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/ComponentElementTest.php
@@ -0,0 +1,25 @@
+loadXML('');
+ $this->component = new ComponentElement($dom->documentElement);
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals('phar-io/phive', $this->component->getName());
+ }
+
+ public function testEmailCanBeRetrieved() {
+ $this->assertEquals('0.6.0', $this->component->getVersion());
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/ContainsElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/ContainsElementTest.php
new file mode 100644
index 0000000..f77313d
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/ContainsElementTest.php
@@ -0,0 +1,63 @@
+loadXML('');
+ $this->domElement = $dom->documentElement;
+ $this->contains = new ContainsElement($this->domElement);
+ }
+
+ public function testVersionCanBeRetrieved() {
+ $this->assertEquals('5.6.5', $this->contains->getVersion());
+ }
+
+ public function testThrowsExceptionWhenVersionAttributeIsMissing() {
+ $this->domElement->removeAttribute('version');
+ $this->expectException(ManifestElementException::class);
+ $this->contains->getVersion();
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals('phpunit/phpunit', $this->contains->getName());
+ }
+
+ public function testThrowsExceptionWhenNameAttributeIsMissing() {
+ $this->domElement->removeAttribute('name');
+ $this->expectException(ManifestElementException::class);
+ $this->contains->getName();
+ }
+
+ public function testTypeCanBeRetrieved() {
+ $this->assertEquals('application', $this->contains->getType());
+ }
+
+ public function testThrowsExceptionWhenTypeAttributeIsMissing() {
+ $this->domElement->removeAttribute('type');
+ $this->expectException(ManifestElementException::class);
+ $this->contains->getType();
+ }
+
+ public function testGetExtensionElementReturnsExtensionElement() {
+ $this->domElement->appendChild(
+ $this->domElement->ownerDocument->createElementNS('https://phar.io/xml/manifest/1.0', 'extension')
+ );
+ $this->assertInstanceOf(ExtensionElement::class, $this->contains->getExtensionElement());
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/CopyrightElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/CopyrightElementTest.php
new file mode 100644
index 0000000..9ad8eb3
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/CopyrightElementTest.php
@@ -0,0 +1,52 @@
+dom = new DOMDocument();
+ $this->dom->loadXML('');
+ $this->copyright = new CopyrightElement($this->dom->documentElement);
+ }
+
+ public function testThrowsExceptionWhenGetAuthroElementsIsCalledButNodesAreMissing() {
+ $this->expectException(ManifestElementException::class);
+ $this->copyright->getAuthorElements();
+ }
+
+ public function testThrowsExceptionWhenGetLicenseElementIsCalledButNodeIsMissing() {
+ $this->expectException(ManifestElementException::class);
+ $this->copyright->getLicenseElement();
+ }
+
+ public function testGetAuthorElementsReturnsAuthorElementCollection() {
+ $this->dom->documentElement->appendChild(
+ $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'author')
+ );
+ $this->assertInstanceOf(
+ AuthorElementCollection::class, $this->copyright->getAuthorElements()
+ );
+ }
+
+ public function testGetLicenseElementReturnsLicenseElement() {
+ $this->dom->documentElement->appendChild(
+ $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'license')
+ );
+ $this->assertInstanceOf(
+ LicenseElement::class, $this->copyright->getLicenseElement()
+ );
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/ExtElementCollectionTest.php b/panel/vendor/phar-io/manifest/tests/xml/ExtElementCollectionTest.php
new file mode 100644
index 0000000..463e4d6
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/ExtElementCollectionTest.php
@@ -0,0 +1,19 @@
+loadXML('');
+ $collection = new ExtElementCollection($dom->childNodes);
+
+ foreach($collection as $position => $extElement) {
+ $this->assertInstanceOf(ExtElement::class, $extElement);
+ $this->assertEquals(0, $position);
+ }
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/ExtElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/ExtElementTest.php
new file mode 100644
index 0000000..097b522
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/ExtElementTest.php
@@ -0,0 +1,21 @@
+loadXML('');
+ $this->ext = new ExtElement($dom->documentElement);
+ }
+
+ public function testNameCanBeRetrieved() {
+ $this->assertEquals('dom', $this->ext->getName());
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/ExtensionElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/ExtensionElementTest.php
new file mode 100644
index 0000000..2ae0112
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/ExtensionElementTest.php
@@ -0,0 +1,25 @@
+loadXML('');
+ $this->extension = new ExtensionElement($dom->documentElement);
+ }
+
+ public function testNForCanBeRetrieved() {
+ $this->assertEquals('phar-io/phive', $this->extension->getFor());
+ }
+
+ public function testCompatibleVersionConstraintCanBeRetrieved() {
+ $this->assertEquals('~0.6', $this->extension->getCompatible());
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/LicenseElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/LicenseElementTest.php
new file mode 100644
index 0000000..00d4a6c
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/LicenseElementTest.php
@@ -0,0 +1,25 @@
+loadXML('');
+ $this->license = new LicenseElement($dom->documentElement);
+ }
+
+ public function testTypeCanBeRetrieved() {
+ $this->assertEquals('BSD-3', $this->license->getType());
+ }
+
+ public function testUrlCanBeRetrieved() {
+ $this->assertEquals('https://some.tld/LICENSE', $this->license->getUrl());
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/ManifestDocumentTest.php b/panel/vendor/phar-io/manifest/tests/xml/ManifestDocumentTest.php
new file mode 100644
index 0000000..b5bb8cd
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/ManifestDocumentTest.php
@@ -0,0 +1,110 @@
+expectException(ManifestDocumentException::class);
+ ManifestDocument::fromFile('/does/not/exist');
+ }
+
+ public function testCanBeCreatedFromFile() {
+ $this->assertInstanceOf(
+ ManifestDocument::class,
+ ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml')
+ );
+ }
+
+ public function testCaneBeConstructedFromString() {
+ $content = file_get_contents(__DIR__ . '/../_fixture/phpunit-5.6.5.xml');
+ $this->assertInstanceOf(
+ ManifestDocument::class,
+ ManifestDocument::fromString($content)
+ );
+ }
+
+ public function testThrowsExceptionOnInvalidXML() {
+ $this->expectException(ManifestDocumentLoadingException::class);
+ ManifestDocument::fromString('');
+ }
+
+ public function testLoadingDocumentWithWrongRootNameThrowsException() {
+ $this->expectException(ManifestDocumentException::class);
+ ManifestDocument::fromString('');
+ }
+
+ public function testLoadingDocumentWithWrongNamespaceThrowsException() {
+ $this->expectException(ManifestDocumentException::class);
+ ManifestDocument::fromString('');
+ }
+
+ public function testContainsElementCanBeRetrieved() {
+ $this->assertInstanceOf(
+ ContainsElement::class,
+ $this->loadFixture()->getContainsElement()
+ );
+ }
+
+ public function testRequiresElementCanBeRetrieved() {
+ $this->assertInstanceOf(
+ RequiresElement::class,
+ $this->loadFixture()->getRequiresElement()
+ );
+ }
+
+ public function testCopyrightElementCanBeRetrieved() {
+ $this->assertInstanceOf(
+ CopyrightElement::class,
+ $this->loadFixture()->getCopyrightElement()
+ );
+ }
+
+ public function testBundlesElementCanBeRetrieved() {
+ $this->assertInstanceOf(
+ BundlesElement::class,
+ $this->loadFixture()->getBundlesElement()
+ );
+ }
+
+ public function testThrowsExceptionWhenContainsIsMissing() {
+ $this->expectException(ManifestDocumentException::class);
+ $this->loadEmptyFixture()->getContainsElement();
+ }
+
+ public function testThrowsExceptionWhenCopyirhgtIsMissing() {
+ $this->expectException(ManifestDocumentException::class);
+ $this->loadEmptyFixture()->getCopyrightElement();
+ }
+
+ public function testThrowsExceptionWhenRequiresIsMissing() {
+ $this->expectException(ManifestDocumentException::class);
+ $this->loadEmptyFixture()->getRequiresElement();
+ }
+
+ public function testThrowsExceptionWhenBundlesIsMissing() {
+ $this->expectException(ManifestDocumentException::class);
+ $this->loadEmptyFixture()->getBundlesElement();
+ }
+
+ public function testHasBundlesReturnsTrueWhenBundlesNodeIsPresent() {
+ $this->assertTrue(
+ $this->loadFixture()->hasBundlesElement()
+ );
+ }
+
+ public function testHasBundlesReturnsFalseWhenBundlesNoNodeIsPresent() {
+ $this->assertFalse(
+ $this->loadEmptyFixture()->hasBundlesElement()
+ );
+ }
+
+ private function loadFixture() {
+ return ManifestDocument::fromFile(__DIR__ . '/../_fixture/phpunit-5.6.5.xml');
+ }
+
+ private function loadEmptyFixture() {
+ return ManifestDocument::fromString(
+ ''
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/PhpElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/PhpElementTest.php
new file mode 100644
index 0000000..546187a
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/PhpElementTest.php
@@ -0,0 +1,48 @@
+dom = new DOMDocument();
+ $this->dom->loadXML('');
+ $this->php = new PhpElement($this->dom->documentElement);
+ }
+
+ public function testVersionConstraintCanBeRetrieved() {
+ $this->assertEquals('^5.6 || ^7.0', $this->php->getVersion());
+ }
+
+ public function testHasExtElementsReturnsFalseWhenNoExtensionsAreRequired() {
+ $this->assertFalse($this->php->hasExtElements());
+ }
+
+ public function testHasExtElementsReturnsTrueWhenExtensionsAreRequired() {
+ $this->addExtElement();
+ $this->assertTrue($this->php->hasExtElements());
+ }
+
+ public function testGetExtElementsReturnsExtElementCollection() {
+ $this->addExtElement();
+ $this->assertInstanceOf(ExtElementCollection::class, $this->php->getExtElements());
+ }
+
+ private function addExtElement() {
+ $this->dom->documentElement->appendChild(
+ $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'ext')
+ );
+ }
+
+}
diff --git a/panel/vendor/phar-io/manifest/tests/xml/RequiresElementTest.php b/panel/vendor/phar-io/manifest/tests/xml/RequiresElementTest.php
new file mode 100644
index 0000000..907b0a6
--- /dev/null
+++ b/panel/vendor/phar-io/manifest/tests/xml/RequiresElementTest.php
@@ -0,0 +1,37 @@
+dom = new DOMDocument();
+ $this->dom->loadXML('');
+ $this->requires = new RequiresElement($this->dom->documentElement);
+ }
+
+ public function testThrowsExceptionWhenGetPhpElementIsCalledButElementIsMissing() {
+ $this->expectException(ManifestElementException::class);
+ $this->requires->getPHPElement();
+ }
+
+ public function testHasExtElementsReturnsTrueWhenExtensionsAreRequired() {
+ $this->dom->documentElement->appendChild(
+ $this->dom->createElementNS('https://phar.io/xml/manifest/1.0', 'php')
+ );
+
+ $this->assertInstanceOf(PhpElement::class, $this->requires->getPHPElement());
+ }
+
+}
diff --git a/panel/vendor/phar-io/version/.gitignore b/panel/vendor/phar-io/version/.gitignore
new file mode 100644
index 0000000..1c8f2e6
--- /dev/null
+++ b/panel/vendor/phar-io/version/.gitignore
@@ -0,0 +1,7 @@
+/.idea
+/.php_cs.cache
+/composer.lock
+/src/autoload.php
+/tools
+/vendor
+
diff --git a/panel/vendor/phar-io/version/.php_cs b/panel/vendor/phar-io/version/.php_cs
new file mode 100644
index 0000000..159d6a3
--- /dev/null
+++ b/panel/vendor/phar-io/version/.php_cs
@@ -0,0 +1,67 @@
+files()
+ ->in('src')
+ ->in('tests')
+ ->name('*.php');
+
+return Symfony\CS\Config\Config::create()
+ ->setUsingCache(true)
+ ->level(\Symfony\CS\FixerInterface::NONE_LEVEL)
+ ->fixers(
+ array(
+ 'align_double_arrow',
+ 'align_equals',
+ 'concat_with_spaces',
+ 'duplicate_semicolon',
+ 'elseif',
+ 'empty_return',
+ 'encoding',
+ 'eof_ending',
+ 'extra_empty_lines',
+ 'function_call_space',
+ 'function_declaration',
+ 'indentation',
+ 'join_function',
+ 'line_after_namespace',
+ 'linefeed',
+ 'list_commas',
+ 'lowercase_constants',
+ 'lowercase_keywords',
+ 'method_argument_space',
+ 'multiple_use',
+ 'namespace_no_leading_whitespace',
+ 'no_blank_lines_after_class_opening',
+ 'no_empty_lines_after_phpdocs',
+ 'parenthesis',
+ 'php_closing_tag',
+ 'phpdoc_indent',
+ 'phpdoc_no_access',
+ 'phpdoc_no_empty_return',
+ 'phpdoc_no_package',
+ 'phpdoc_params',
+ 'phpdoc_scalar',
+ 'phpdoc_separation',
+ 'phpdoc_to_comment',
+ 'phpdoc_trim',
+ 'phpdoc_types',
+ 'phpdoc_var_without_name',
+ 'remove_lines_between_uses',
+ 'return',
+ 'self_accessor',
+ 'short_array_syntax',
+ 'short_tag',
+ 'single_line_after_imports',
+ 'single_quote',
+ 'spaces_before_semicolon',
+ 'spaces_cast',
+ 'ternary_spaces',
+ 'trailing_spaces',
+ 'trim_array_spaces',
+ 'unused_use',
+ 'visibility',
+ 'whitespacy_lines'
+ )
+ )
+ ->finder($finder);
+
diff --git a/panel/vendor/phar-io/version/.travis.yml b/panel/vendor/phar-io/version/.travis.yml
new file mode 100644
index 0000000..b4be10f
--- /dev/null
+++ b/panel/vendor/phar-io/version/.travis.yml
@@ -0,0 +1,33 @@
+os:
+- linux
+
+language: php
+
+before_install:
+ - wget https://phar.io/releases/phive.phar
+ - wget https://phar.io/releases/phive.phar.asc
+ - gpg --keyserver hkps.pool.sks-keyservers.net --recv-keys 0x9B2D5D79
+ - gpg --verify phive.phar.asc phive.phar
+ - chmod +x phive.phar
+ - sudo mv phive.phar /usr/bin/phive
+
+install:
+ - ant setup
+
+script: ./tools/phpunit
+
+php:
+ - 5.6
+ - 7.0
+ - 7.1
+ - 7.0snapshot
+ - 7.1snapshot
+ - master
+
+matrix:
+ allow_failures:
+ - php: master
+ fast_finish: true
+
+notifications:
+ email: false
diff --git a/panel/vendor/phar-io/version/LICENSE b/panel/vendor/phar-io/version/LICENSE
new file mode 100644
index 0000000..359dbc5
--- /dev/null
+++ b/panel/vendor/phar-io/version/LICENSE
@@ -0,0 +1,31 @@
+phar-io/version
+
+Copyright (c) 2016-2017 Arne Blankerts , Sebastian Heuer and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of Arne Blankerts nor the names of contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/panel/vendor/phar-io/version/README.md b/panel/vendor/phar-io/version/README.md
new file mode 100644
index 0000000..df448f8
--- /dev/null
+++ b/panel/vendor/phar-io/version/README.md
@@ -0,0 +1,16 @@
+# Version
+
+Library for handling version information and constraints
+
+[![Build Status](https://travis-ci.org/phar-io/version.svg?branch=master)](https://travis-ci.org/phar-io/version)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require phar-io/version
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev phar-io/version
+
diff --git a/panel/vendor/phar-io/version/build.xml b/panel/vendor/phar-io/version/build.xml
new file mode 100644
index 0000000..943c957
--- /dev/null
+++ b/panel/vendor/phar-io/version/build.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/panel/vendor/phar-io/version/composer.json b/panel/vendor/phar-io/version/composer.json
new file mode 100644
index 0000000..891e8b1
--- /dev/null
+++ b/panel/vendor/phar-io/version/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "phar-io/version",
+ "description": "Library for handling version information and constraints",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues"
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ }
+}
+
diff --git a/panel/vendor/phar-io/version/phive.xml b/panel/vendor/phar-io/version/phive.xml
new file mode 100644
index 0000000..0c3bc6f
--- /dev/null
+++ b/panel/vendor/phar-io/version/phive.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/panel/vendor/phar-io/version/phpunit.xml b/panel/vendor/phar-io/version/phpunit.xml
new file mode 100644
index 0000000..c21ffbc
--- /dev/null
+++ b/panel/vendor/phar-io/version/phpunit.xml
@@ -0,0 +1,19 @@
+
+
+
+ tests
+
+
+
+
+ src
+
+
+
diff --git a/panel/vendor/phar-io/version/src/AbstractVersionConstraint.php b/panel/vendor/phar-io/version/src/AbstractVersionConstraint.php
new file mode 100644
index 0000000..b732dbc
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/AbstractVersionConstraint.php
@@ -0,0 +1,32 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+abstract class AbstractVersionConstraint implements VersionConstraint {
+ /**
+ * @var string
+ */
+ private $originalValue = '';
+
+ /**
+ * @param string $originalValue
+ */
+ public function __construct($originalValue) {
+ $this->originalValue = $originalValue;
+ }
+
+ /**
+ * @return string
+ */
+ public function asString() {
+ return $this->originalValue;
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/AndVersionConstraintGroup.php b/panel/vendor/phar-io/version/src/AndVersionConstraintGroup.php
new file mode 100644
index 0000000..455dcd1
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/AndVersionConstraintGroup.php
@@ -0,0 +1,43 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class AndVersionConstraintGroup extends AbstractVersionConstraint {
+ /**
+ * @var VersionConstraint[]
+ */
+ private $constraints = [];
+
+ /**
+ * @param string $originalValue
+ * @param VersionConstraint[] $constraints
+ */
+ public function __construct($originalValue, array $constraints) {
+ parent::__construct($originalValue);
+
+ $this->constraints = $constraints;
+ }
+
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version) {
+ foreach ($this->constraints as $constraint) {
+ if (!$constraint->complies($version)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/AnyVersionConstraint.php b/panel/vendor/phar-io/version/src/AnyVersionConstraint.php
new file mode 100644
index 0000000..13ca2ef
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/AnyVersionConstraint.php
@@ -0,0 +1,29 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class AnyVersionConstraint implements VersionConstraint {
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version) {
+ return true;
+ }
+
+ /**
+ * @return string
+ */
+ public function asString() {
+ return '*';
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/ExactVersionConstraint.php b/panel/vendor/phar-io/version/src/ExactVersionConstraint.php
new file mode 100644
index 0000000..b214117
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/ExactVersionConstraint.php
@@ -0,0 +1,22 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class ExactVersionConstraint extends AbstractVersionConstraint {
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version) {
+ return $this->asString() == $version->getVersionString();
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/Exception.php b/panel/vendor/phar-io/version/src/Exception.php
new file mode 100644
index 0000000..b99e4dd
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/Exception.php
@@ -0,0 +1,14 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+interface Exception {
+}
diff --git a/panel/vendor/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php b/panel/vendor/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php
new file mode 100644
index 0000000..a237d79
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/GreaterThanOrEqualToVersionConstraint.php
@@ -0,0 +1,38 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class GreaterThanOrEqualToVersionConstraint extends AbstractVersionConstraint {
+ /**
+ * @var Version
+ */
+ private $minimalVersion;
+
+ /**
+ * @param string $originalValue
+ * @param Version $minimalVersion
+ */
+ public function __construct($originalValue, Version $minimalVersion) {
+ parent::__construct($originalValue);
+
+ $this->minimalVersion = $minimalVersion;
+ }
+
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version) {
+ return $version->getVersionString() == $this->minimalVersion->getVersionString() ||
+ $version->isGreaterThan($this->minimalVersion);
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/InvalidVersionException.php b/panel/vendor/phar-io/version/src/InvalidVersionException.php
new file mode 100644
index 0000000..e52f5d7
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/InvalidVersionException.php
@@ -0,0 +1,5 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class OrVersionConstraintGroup extends AbstractVersionConstraint {
+ /**
+ * @var VersionConstraint[]
+ */
+ private $constraints = [];
+
+ /**
+ * @param string $originalValue
+ * @param VersionConstraint[] $constraints
+ */
+ public function __construct($originalValue, array $constraints) {
+ parent::__construct($originalValue);
+
+ $this->constraints = $constraints;
+ }
+
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version) {
+ foreach ($this->constraints as $constraint) {
+ if ($constraint->complies($version)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/PreReleaseSuffix.php b/panel/vendor/phar-io/version/src/PreReleaseSuffix.php
new file mode 100644
index 0000000..d9e7ee7
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/PreReleaseSuffix.php
@@ -0,0 +1,41 @@
+value = $value;
+ $this->number = $number;
+ }
+
+ /**
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * @return int|null
+ */
+ public function getNumber()
+ {
+ return $this->number;
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php b/panel/vendor/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php
new file mode 100644
index 0000000..dbeaa06
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/SpecificMajorAndMinorVersionConstraint.php
@@ -0,0 +1,48 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class SpecificMajorAndMinorVersionConstraint extends AbstractVersionConstraint {
+ /**
+ * @var int
+ */
+ private $major = 0;
+
+ /**
+ * @var int
+ */
+ private $minor = 0;
+
+ /**
+ * @param string $originalValue
+ * @param int $major
+ * @param int $minor
+ */
+ public function __construct($originalValue, $major, $minor) {
+ parent::__construct($originalValue);
+
+ $this->major = $major;
+ $this->minor = $minor;
+ }
+
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version) {
+ if ($version->getMajor()->getValue() != $this->major) {
+ return false;
+ }
+
+ return $version->getMinor()->getValue() == $this->minor;
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/SpecificMajorVersionConstraint.php b/panel/vendor/phar-io/version/src/SpecificMajorVersionConstraint.php
new file mode 100644
index 0000000..51b12d9
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/SpecificMajorVersionConstraint.php
@@ -0,0 +1,37 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class SpecificMajorVersionConstraint extends AbstractVersionConstraint {
+ /**
+ * @var int
+ */
+ private $major = 0;
+
+ /**
+ * @param string $originalValue
+ * @param int $major
+ */
+ public function __construct($originalValue, $major) {
+ parent::__construct($originalValue);
+
+ $this->major = $major;
+ }
+
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version) {
+ return $version->getMajor()->getValue() == $this->major;
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/UnsupportedVersionConstraintException.php b/panel/vendor/phar-io/version/src/UnsupportedVersionConstraintException.php
new file mode 100644
index 0000000..45488c2
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/UnsupportedVersionConstraintException.php
@@ -0,0 +1,14 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+final class UnsupportedVersionConstraintException extends \RuntimeException implements Exception {
+}
diff --git a/panel/vendor/phar-io/version/src/Version.php b/panel/vendor/phar-io/version/src/Version.php
new file mode 100644
index 0000000..825ed44
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/Version.php
@@ -0,0 +1,162 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class Version {
+ /**
+ * @var VersionNumber
+ */
+ private $major;
+
+ /**
+ * @var VersionNumber
+ */
+ private $minor;
+
+ /**
+ * @var VersionNumber
+ */
+ private $patch;
+
+ /**
+ * @var PreReleaseSuffix
+ */
+ private $preReleaseSuffix;
+
+ /**
+ * @var string
+ */
+ private $versionString = '';
+
+ /**
+ * @param string $versionString
+ */
+ public function __construct($versionString) {
+ $this->ensureVersionStringIsValid($versionString);
+
+ $this->versionString = $versionString;
+ }
+
+ /**
+ * @param array $matches
+ */
+ private function parseVersion(array $matches) {
+ $this->major = new VersionNumber($matches['Major']);
+ $this->minor = new VersionNumber($matches['Minor']);
+ $this->patch = isset($matches['Patch']) ? new VersionNumber($matches['Patch']) : new VersionNumber(null);
+
+ if (isset($matches['ReleaseType'])) {
+ $preReleaseNumber = isset($matches['ReleaseTypeCount']) ? (int) $matches['ReleaseTypeCount'] : null;
+
+ $this->preReleaseSuffix = new PreReleaseSuffix($matches['ReleaseType'], $preReleaseNumber);
+ }
+ }
+
+ /**
+ * @return PreReleaseSuffix
+ */
+ public function getPreReleaseSuffix()
+ {
+ return $this->preReleaseSuffix;
+ }
+
+ /**
+ * @return string
+ */
+ public function getVersionString() {
+ return $this->versionString;
+ }
+
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function isGreaterThan(Version $version) {
+ if ($version->getMajor()->getValue() > $this->getMajor()->getValue()) {
+ return false;
+ }
+
+ if ($version->getMajor()->getValue() < $this->getMajor()->getValue()) {
+ return true;
+ }
+
+ if ($version->getMinor()->getValue() > $this->getMinor()->getValue()) {
+ return false;
+ }
+
+ if ($version->getMinor()->getValue() < $this->getMinor()->getValue()) {
+ return true;
+ }
+
+ if ($version->getPatch()->getValue() >= $this->getPatch()->getValue()) {
+ return false;
+ }
+
+ if ($version->getPatch()->getValue() < $this->getPatch()->getValue()) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * @return VersionNumber
+ */
+ public function getMajor() {
+ return $this->major;
+ }
+
+ /**
+ * @return VersionNumber
+ */
+ public function getMinor() {
+ return $this->minor;
+ }
+
+ /**
+ * @return VersionNumber
+ */
+ public function getPatch() {
+ return $this->patch;
+ }
+
+ /**
+ * @param string $version
+ *
+ * @throws InvalidVersionException
+ */
+ private function ensureVersionStringIsValid($version) {
+ $regex = '/^v?
+ (?(0|(?:[1-9][0-9]*)))
+ \\.
+ (?(0|(?:[1-9][0-9]*)))
+ (\\.
+ (?(0|(?:[1-9][0-9]*)))
+ )?
+ (?:
+ -
+ (?(?:(dev|beta|b|RC|alpha|a|patch|p)))
+ (?:
+ (?[0-9])
+ )?
+ )?
+ $/x';
+
+ if (preg_match($regex, $version, $matches) !== 1) {
+ throw new InvalidVersionException(
+ sprintf("Version string '%s' does not follow SemVer semantics", $version)
+ );
+ }
+
+ $this->parseVersion($matches);
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/VersionConstraint.php b/panel/vendor/phar-io/version/src/VersionConstraint.php
new file mode 100644
index 0000000..9558163
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/VersionConstraint.php
@@ -0,0 +1,26 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+interface VersionConstraint {
+ /**
+ * @param Version $version
+ *
+ * @return bool
+ */
+ public function complies(Version $version);
+
+ /**
+ * @return string
+ */
+ public function asString();
+
+}
diff --git a/panel/vendor/phar-io/version/src/VersionConstraintParser.php b/panel/vendor/phar-io/version/src/VersionConstraintParser.php
new file mode 100644
index 0000000..0a24f87
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/VersionConstraintParser.php
@@ -0,0 +1,122 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class VersionConstraintParser {
+ /**
+ * @param string $value
+ *
+ * @return VersionConstraint
+ *
+ * @throws UnsupportedVersionConstraintException
+ */
+ public function parse($value) {
+
+ if (strpos($value, '||') !== false) {
+ return $this->handleOrGroup($value);
+ }
+
+ if (!preg_match('/^[\^~\*]?[\d.\*]+$/', $value)) {
+ throw new UnsupportedVersionConstraintException(
+ sprintf('Version constraint %s is not supported.', $value)
+ );
+ }
+
+ switch ($value[0]) {
+ case '~':
+ return $this->handleTildeOperator($value);
+ case '^':
+ return $this->handleCaretOperator($value);
+ }
+
+ $version = new VersionConstraintValue($value);
+
+ if ($version->getMajor()->isAny()) {
+ return new AnyVersionConstraint();
+ }
+
+ if ($version->getMinor()->isAny()) {
+ return new SpecificMajorVersionConstraint(
+ $value,
+ $version->getMajor()->getValue()
+ );
+ }
+
+ if ($version->getPatch()->isAny()) {
+ return new SpecificMajorAndMinorVersionConstraint(
+ $value,
+ $version->getMajor()->getValue(),
+ $version->getMinor()->getValue()
+ );
+ }
+
+ return new ExactVersionConstraint($value);
+ }
+
+ /**
+ * @param $value
+ *
+ * @return OrVersionConstraintGroup
+ */
+ private function handleOrGroup($value) {
+ $constraints = [];
+
+ foreach (explode('||', $value) as $groupSegment) {
+ $constraints[] = $this->parse(trim($groupSegment));
+ }
+
+ return new OrVersionConstraintGroup($value, $constraints);
+ }
+
+ /**
+ * @param string $value
+ *
+ * @return AndVersionConstraintGroup
+ */
+ private function handleTildeOperator($value) {
+ $version = new Version(substr($value, 1));
+ $constraints = [
+ new GreaterThanOrEqualToVersionConstraint($value, $version)
+ ];
+
+ if ($version->getPatch()->isAny()) {
+ $constraints[] = new SpecificMajorVersionConstraint(
+ $value,
+ $version->getMajor()->getValue()
+ );
+ } else {
+ $constraints[] = new SpecificMajorAndMinorVersionConstraint(
+ $value,
+ $version->getMajor()->getValue(),
+ $version->getMinor()->getValue()
+ );
+ }
+
+ return new AndVersionConstraintGroup($value, $constraints);
+ }
+
+ /**
+ * @param string $value
+ *
+ * @return AndVersionConstraintGroup
+ */
+ private function handleCaretOperator($value) {
+ $version = new Version(substr($value, 1));
+
+ return new AndVersionConstraintGroup(
+ $value,
+ [
+ new GreaterThanOrEqualToVersionConstraint($value, $version),
+ new SpecificMajorVersionConstraint($value, $version->getMajor()->getValue())
+ ]
+ );
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/VersionConstraintValue.php b/panel/vendor/phar-io/version/src/VersionConstraintValue.php
new file mode 100644
index 0000000..ad59068
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/VersionConstraintValue.php
@@ -0,0 +1,123 @@
+versionString = $versionString;
+
+ $this->parseVersion($versionString);
+ }
+
+ /**
+ * @param $versionString
+ */
+ private function parseVersion($versionString) {
+ $this->extractBuildMetaData($versionString);
+ $this->extractLabel($versionString);
+
+ $versionSegments = explode('.', $versionString);
+ $this->major = new VersionNumber($versionSegments[0]);
+
+ $minorValue = isset($versionSegments[1]) ? $versionSegments[1] : null;
+ $patchValue = isset($versionSegments[2]) ? $versionSegments[2] : null;
+
+ $this->minor = new VersionNumber($minorValue);
+ $this->patch = new VersionNumber($patchValue);
+ }
+
+ /**
+ * @param string $versionString
+ */
+ private function extractBuildMetaData(&$versionString) {
+ if (preg_match('/\+(.*)/', $versionString, $matches) == 1) {
+ $this->buildMetaData = $matches[1];
+ $versionString = str_replace($matches[0], '', $versionString);
+ }
+ }
+
+ /**
+ * @param string $versionString
+ */
+ private function extractLabel(&$versionString) {
+ if (preg_match('/\-(.*)/', $versionString, $matches) == 1) {
+ $this->label = $matches[1];
+ $versionString = str_replace($matches[0], '', $versionString);
+ }
+ }
+
+ /**
+ * @return string
+ */
+ public function getLabel() {
+ return $this->label;
+ }
+
+ /**
+ * @return string
+ */
+ public function getBuildMetaData() {
+ return $this->buildMetaData;
+ }
+
+ /**
+ * @return string
+ */
+ public function getVersionString() {
+ return $this->versionString;
+ }
+
+ /**
+ * @return VersionNumber
+ */
+ public function getMajor() {
+ return $this->major;
+ }
+
+ /**
+ * @return VersionNumber
+ */
+ public function getMinor() {
+ return $this->minor;
+ }
+
+ /**
+ * @return VersionNumber
+ */
+ public function getPatch() {
+ return $this->patch;
+ }
+}
diff --git a/panel/vendor/phar-io/version/src/VersionNumber.php b/panel/vendor/phar-io/version/src/VersionNumber.php
new file mode 100644
index 0000000..ab512ed
--- /dev/null
+++ b/panel/vendor/phar-io/version/src/VersionNumber.php
@@ -0,0 +1,41 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+class VersionNumber {
+ /**
+ * @var int
+ */
+ private $value;
+
+ /**
+ * @param mixed $value
+ */
+ public function __construct($value) {
+ if (is_numeric($value)) {
+ $this->value = $value;
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ public function isAny() {
+ return $this->value === null;
+ }
+
+ /**
+ * @return int
+ */
+ public function getValue() {
+ return $this->value;
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php b/panel/vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php
new file mode 100644
index 0000000..683e9d0
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Integration/VersionConstraintParserTest.php
@@ -0,0 +1,125 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Version\VersionConstraintParser
+ */
+class VersionConstraintParserTest extends TestCase {
+ /**
+ * @dataProvider versionStringProvider
+ *
+ * @param string $versionString
+ * @param VersionConstraint $expectedConstraint
+ */
+ public function testReturnsExpectedConstraint($versionString, VersionConstraint $expectedConstraint) {
+ $parser = new VersionConstraintParser;
+
+ $this->assertEquals($expectedConstraint, $parser->parse($versionString));
+ }
+
+ /**
+ * @dataProvider unsupportedVersionStringProvider
+ *
+ * @param string $versionString
+ */
+ public function testThrowsExceptionIfVersionStringIsNotSupported($versionString) {
+ $parser = new VersionConstraintParser;
+
+ $this->expectException(UnsupportedVersionConstraintException::class);
+
+ $parser->parse($versionString);
+ }
+
+ /**
+ * @return array
+ */
+ public function versionStringProvider() {
+ return [
+ ['1.0.2', new ExactVersionConstraint('1.0.2')],
+ [
+ '~4.6',
+ new AndVersionConstraintGroup(
+ '~4.6',
+ [
+ new GreaterThanOrEqualToVersionConstraint('~4.6', new Version('4.6')),
+ new SpecificMajorVersionConstraint('~4.6', 4)
+ ]
+ )
+ ],
+ [
+ '~4.6.2',
+ new AndVersionConstraintGroup(
+ '~4.6.2',
+ [
+ new GreaterThanOrEqualToVersionConstraint('~4.6.2', new Version('4.6.2')),
+ new SpecificMajorAndMinorVersionConstraint('~4.6.2', 4, 6)
+ ]
+ )
+ ],
+ [
+ '^2.6.1',
+ new AndVersionConstraintGroup(
+ '^2.6.1',
+ [
+ new GreaterThanOrEqualToVersionConstraint('^2.6.1', new Version('2.6.1')),
+ new SpecificMajorVersionConstraint('^2.6.1', 2)
+ ]
+ )
+ ],
+ ['5.1.*', new SpecificMajorAndMinorVersionConstraint('5.1.*', 5, 1)],
+ ['5.*', new SpecificMajorVersionConstraint('5.*', 5)],
+ ['*', new AnyVersionConstraint()],
+ [
+ '1.0.2 || 1.0.5',
+ new OrVersionConstraintGroup(
+ '1.0.2 || 1.0.5',
+ [
+ new ExactVersionConstraint('1.0.2'),
+ new ExactVersionConstraint('1.0.5')
+ ]
+ )
+ ],
+ [
+ '^5.6 || ^7.0',
+ new OrVersionConstraintGroup(
+ '^5.6 || ^7.0',
+ [
+ new AndVersionConstraintGroup(
+ '^5.6', [
+ new GreaterThanOrEqualToVersionConstraint('^5.6', new Version('5.6')),
+ new SpecificMajorVersionConstraint('^5.6', 5)
+ ]
+ ),
+ new AndVersionConstraintGroup(
+ '^7.0', [
+ new GreaterThanOrEqualToVersionConstraint('^7.0', new Version('7.0')),
+ new SpecificMajorVersionConstraint('^7.0', 7)
+ ]
+ )
+ ]
+ )
+ ]
+ ];
+ }
+
+ public function unsupportedVersionStringProvider() {
+ return [
+ ['foo'],
+ ['+1.0.2'],
+ ['>=2.0'],
+ ['^5.6 || >= 7.0'],
+ ['2.0 || foo']
+ ];
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/AbstractVersionConstraintTest.php b/panel/vendor/phar-io/version/tests/Unit/AbstractVersionConstraintTest.php
new file mode 100644
index 0000000..c618566
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/AbstractVersionConstraintTest.php
@@ -0,0 +1,25 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Version\AbstractVersionConstraint
+ */
+class AbstractVersionConstraintTest extends TestCase {
+ public function testAsString() {
+ /** @var AbstractVersionConstraint|\PHPUnit_Framework_MockObject_MockObject $constraint */
+ $constraint = $this->getMockForAbstractClass(AbstractVersionConstraint::class, ['foo']);
+
+ $this->assertSame('foo', $constraint->asString());
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/AndVersionConstraintGroupTest.php b/panel/vendor/phar-io/version/tests/Unit/AndVersionConstraintGroupTest.php
new file mode 100644
index 0000000..ce7f5da
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/AndVersionConstraintGroupTest.php
@@ -0,0 +1,52 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Version\AndVersionConstraintGroup
+ */
+class AndVersionConstraintGroupTest extends TestCase {
+ public function testReturnsFalseIfOneConstraintReturnsFalse() {
+ $firstConstraint = $this->createMock(VersionConstraint::class);
+ $secondConstraint = $this->createMock(VersionConstraint::class);
+
+ $firstConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(true));
+
+ $secondConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(false));
+
+ $group = new AndVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
+
+ $this->assertFalse($group->complies(new Version('1.0.0')));
+ }
+
+ public function testReturnsTrueIfAllConstraintsReturnsTrue() {
+ $firstConstraint = $this->createMock(VersionConstraint::class);
+ $secondConstraint = $this->createMock(VersionConstraint::class);
+
+ $firstConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(true));
+
+ $secondConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(true));
+
+ $group = new AndVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
+
+ $this->assertTrue($group->complies(new Version('1.0.0')));
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/AnyVersionConstraintTest.php b/panel/vendor/phar-io/version/tests/Unit/AnyVersionConstraintTest.php
new file mode 100644
index 0000000..331785e
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/AnyVersionConstraintTest.php
@@ -0,0 +1,41 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Version\AnyVersionConstraint
+ */
+class AnyVersionConstraintTest extends TestCase {
+ public function versionProvider() {
+ return [
+ [new Version('1.0.2')],
+ [new Version('4.8')],
+ [new Version('0.1.1-dev')]
+ ];
+ }
+
+ /**
+ * @dataProvider versionProvider
+ *
+ * @param Version $version
+ */
+ public function testReturnsTrue(Version $version) {
+ $constraint = new AnyVersionConstraint;
+
+ $this->assertTrue($constraint->complies($version));
+ }
+
+ public function testAsString() {
+ $this->assertSame('*', (new AnyVersionConstraint())->asString());
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/ExactVersionConstraintTest.php b/panel/vendor/phar-io/version/tests/Unit/ExactVersionConstraintTest.php
new file mode 100644
index 0000000..6b906fa
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/ExactVersionConstraintTest.php
@@ -0,0 +1,58 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Version\ExactVersionConstraint
+ */
+class ExactVersionConstraintTest extends TestCase {
+ public function compliantVersionProvider() {
+ return [
+ ['1.0.2', new Version('1.0.2')],
+ ['4.8.9', new Version('4.8.9')],
+ ['4.8', new Version('4.8')],
+ ];
+ }
+
+ public function nonCompliantVersionProvider() {
+ return [
+ ['1.0.2', new Version('1.0.3')],
+ ['4.8.9', new Version('4.7.9')],
+ ['4.8', new Version('4.8.5')],
+ ];
+ }
+
+ /**
+ * @dataProvider compliantVersionProvider
+ *
+ * @param string $constraintValue
+ * @param Version $version
+ */
+ public function testReturnsTrueForCompliantVersion($constraintValue, Version $version) {
+ $constraint = new ExactVersionConstraint($constraintValue);
+
+ $this->assertTrue($constraint->complies($version));
+ }
+
+ /**
+ * @dataProvider nonCompliantVersionProvider
+ *
+ * @param string $constraintValue
+ * @param Version $version
+ */
+ public function testReturnsFalseForNonCompliantVersion($constraintValue, Version $version) {
+ $constraint = new ExactVersionConstraint($constraintValue);
+
+ $this->assertFalse($constraint->complies($version));
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.php b/panel/vendor/phar-io/version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.php
new file mode 100644
index 0000000..2ae54a8
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/GreaterThanOrEqualToVersionConstraintTest.php
@@ -0,0 +1,47 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Version\GreaterThanOrEqualToVersionConstraint
+ */
+class GreaterThanOrEqualToVersionConstraintTest extends TestCase {
+ public function versionProvider() {
+ return [
+ // compliant versions
+ [new Version('1.0.2'), new Version('1.0.2'), true],
+ [new Version('1.0.2'), new Version('1.0.3'), true],
+ [new Version('1.0.2'), new Version('1.1.1'), true],
+ [new Version('1.0.2'), new Version('2.0.0'), true],
+ [new Version('1.0.2'), new Version('1.0.3'), true],
+ // non-compliant versions
+ [new Version('1.0.2'), new Version('1.0.1'), false],
+ [new Version('1.9.8'), new Version('0.9.9'), false],
+ [new Version('2.3.1'), new Version('2.2.3'), false],
+ [new Version('3.0.2'), new Version('2.9.9'), false],
+ ];
+ }
+
+ /**
+ * @dataProvider versionProvider
+ *
+ * @param Version $constraintVersion
+ * @param Version $version
+ * @param bool $expectedResult
+ */
+ public function testReturnsTrueForCompliantVersions(Version $constraintVersion, Version $version, $expectedResult) {
+ $constraint = new GreaterThanOrEqualToVersionConstraint('foo', $constraintVersion);
+
+ $this->assertSame($expectedResult, $constraint->complies($version));
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/OrVersionConstraintGroupTest.php b/panel/vendor/phar-io/version/tests/Unit/OrVersionConstraintGroupTest.php
new file mode 100644
index 0000000..4c6f594
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/OrVersionConstraintGroupTest.php
@@ -0,0 +1,65 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Version\OrVersionConstraintGroup
+ */
+class OrVersionConstraintGroupTest extends TestCase {
+ public function testReturnsTrueIfOneConstraintReturnsFalse() {
+ $firstConstraint = $this->createMock(VersionConstraint::class);
+ $secondConstraint = $this->createMock(VersionConstraint::class);
+
+ $firstConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(false));
+
+ $secondConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(true));
+
+ $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
+
+ $this->assertTrue($group->complies(new Version('1.0.0')));
+ }
+
+ public function testReturnsTrueIfAllConstraintsReturnsTrue() {
+ $firstConstraint = $this->createMock(VersionConstraint::class);
+ $secondConstraint = $this->createMock(VersionConstraint::class);
+
+ $firstConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(true));
+
+ $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
+
+ $this->assertTrue($group->complies(new Version('1.0.0')));
+ }
+
+ public function testReturnsFalseIfAllConstraintsReturnsFalse() {
+ $firstConstraint = $this->createMock(VersionConstraint::class);
+ $secondConstraint = $this->createMock(VersionConstraint::class);
+
+ $firstConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(false));
+
+ $secondConstraint->expects($this->once())
+ ->method('complies')
+ ->will($this->returnValue(false));
+
+ $group = new OrVersionConstraintGroup('foo', [$firstConstraint, $secondConstraint]);
+
+ $this->assertFalse($group->complies(new Version('1.0.0')));
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.php b/panel/vendor/phar-io/version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.php
new file mode 100644
index 0000000..d3ab123
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/SpecificMajorAndMinorVersionConstraintTest.php
@@ -0,0 +1,45 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Version\SpecificMajorAndMinorVersionConstraint
+ */
+class SpecificMajorAndMinorVersionConstraintTest extends TestCase {
+ public function versionProvider() {
+ return [
+ // compliant versions
+ [1, 0, new Version('1.0.2'), true],
+ [1, 0, new Version('1.0.3'), true],
+ [1, 1, new Version('1.1.1'), true],
+ // non-compliant versions
+ [2, 9, new Version('0.9.9'), false],
+ [3, 2, new Version('2.2.3'), false],
+ [2, 8, new Version('2.9.9'), false],
+ ];
+ }
+
+ /**
+ * @dataProvider versionProvider
+ *
+ * @param int $major
+ * @param int $minor
+ * @param Version $version
+ * @param bool $expectedResult
+ */
+ public function testReturnsTrueForCompliantVersions($major, $minor, Version $version, $expectedResult) {
+ $constraint = new SpecificMajorAndMinorVersionConstraint('foo', $major, $minor);
+
+ $this->assertSame($expectedResult, $constraint->complies($version));
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/SpecificMajorVersionConstraintTest.php b/panel/vendor/phar-io/version/tests/Unit/SpecificMajorVersionConstraintTest.php
new file mode 100644
index 0000000..fc78c7e
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/SpecificMajorVersionConstraintTest.php
@@ -0,0 +1,44 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers PharIo\Version\SpecificMajorVersionConstraint
+ */
+class SpecificMajorVersionConstraintTest extends TestCase {
+ public function versionProvider() {
+ return [
+ // compliant versions
+ [1, new Version('1.0.2'), true],
+ [1, new Version('1.0.3'), true],
+ [1, new Version('1.1.1'), true],
+ // non-compliant versions
+ [2, new Version('0.9.9'), false],
+ [3, new Version('2.2.3'), false],
+ [3, new Version('2.9.9'), false],
+ ];
+ }
+
+ /**
+ * @dataProvider versionProvider
+ *
+ * @param int $major
+ * @param Version $version
+ * @param bool $expectedResult
+ */
+ public function testReturnsTrueForCompliantVersions($major, Version $version, $expectedResult) {
+ $constraint = new SpecificMajorVersionConstraint('foo', $major);
+
+ $this->assertSame($expectedResult, $constraint->complies($version));
+ }
+}
diff --git a/panel/vendor/phar-io/version/tests/Unit/VersionTest.php b/panel/vendor/phar-io/version/tests/Unit/VersionTest.php
new file mode 100644
index 0000000..4d0eee4
--- /dev/null
+++ b/panel/vendor/phar-io/version/tests/Unit/VersionTest.php
@@ -0,0 +1,104 @@
+, Sebastian Heuer , Sebastian Bergmann
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace PharIo\Version;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @covers \PharIo\Version\Version
+ */
+class VersionTest extends TestCase {
+ /**
+ * @dataProvider versionProvider
+ *
+ * @param string $versionString
+ * @param string $expectedMajor
+ * @param string $expectedMinor
+ * @param string $expectedPatch
+ * @param string $expectedPreReleaseValue
+ * @param int $expectedReleaseCount
+ */
+ public function testParsesVersionNumbers($versionString, $expectedMajor, $expectedMinor, $expectedPatch, $expectedPreReleaseValue = '', $expectedReleaseCount = 0) {
+ $version = new Version($versionString);
+
+ $this->assertSame($expectedMajor, $version->getMajor()->getValue());
+ $this->assertSame($expectedMinor, $version->getMinor()->getValue());
+ $this->assertSame($expectedPatch, $version->getPatch()->getValue());
+ if ($expectedPreReleaseValue !== '') {
+ $this->assertSame($expectedPreReleaseValue, $version->getPreReleaseSuffix()->getValue());
+ }
+ if ($expectedReleaseCount !== 0) {
+ $this->assertSame($expectedReleaseCount, $version->getPreReleaseSuffix()->getNumber());
+ }
+
+ $this->assertSame($versionString, $version->getVersionString());
+ }
+
+ public function versionProvider() {
+ return [
+ ['0.0.1', '0', '0', '1'],
+ ['0.1.2', '0', '1', '2'],
+ ['1.0.0-alpha', '1', '0', '0', 'alpha'],
+ ['3.4.12-dev3', '3', '4', '12', 'dev', 3],
+ ];
+ }
+
+ /**
+ * @dataProvider versionGreaterThanProvider
+ *
+ * @param Version $versionA
+ * @param Version $versionB
+ * @param bool $expectedResult
+ */
+ public function testIsGreaterThan(Version $versionA, Version $versionB, $expectedResult) {
+ $this->assertSame($expectedResult, $versionA->isGreaterThan($versionB));
+ }
+
+ /**
+ * @return array
+ */
+ public function versionGreaterThanProvider() {
+ return [
+ [new Version('1.0.0'), new Version('1.0.1'), false],
+ [new Version('1.0.1'), new Version('1.0.0'), true],
+ [new Version('1.1.0'), new Version('1.0.1'), true],
+ [new Version('1.1.0'), new Version('2.0.1'), false],
+ [new Version('1.1.0'), new Version('1.1.0'), false],
+ [new Version('2.5.8'), new Version('1.6.8'), true],
+ [new Version('2.5.8'), new Version('2.6.8'), false],
+ [new Version('2.5.8'), new Version('3.1.2'), false],
+ ];
+ }
+
+ /**
+ * @dataProvider invalidVersionStringProvider
+ *
+ * @param string $versionString
+ */
+ public function testThrowsExceptionIfVersionStringDoesNotFollowSemVer($versionString)
+ {
+ $this->expectException(InvalidVersionException::class);
+ new Version($versionString);
+ }
+
+ /**
+ * @return array
+ */
+ public function invalidVersionStringProvider()
+ {
+ return [
+ ['foo'],
+ ['0.0.1-dev+ABC', '0', '0', '1', 'dev', 'ABC'],
+ ['1.0.0-x.7.z.92', '1', '0', '0', 'x.7.z.92']
+ ];
+ }
+
+}
diff --git a/panel/vendor/phpdocumentor/reflection-common/.github/dependabot.yml b/panel/vendor/phpdocumentor/reflection-common/.github/dependabot.yml
new file mode 100644
index 0000000..c630ffa
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/.github/dependabot.yml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+- package-ecosystem: composer
+ directory: "/"
+ schedule:
+ interval: daily
+ open-pull-requests-limit: 10
diff --git a/panel/vendor/phpdocumentor/reflection-common/.github/workflows/push.yml b/panel/vendor/phpdocumentor/reflection-common/.github/workflows/push.yml
new file mode 100644
index 0000000..484410e
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/.github/workflows/push.yml
@@ -0,0 +1,223 @@
+on:
+ push:
+ branches:
+ - 2.x
+ pull_request:
+name: Qa workflow
+jobs:
+ setup:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+
+ - name: Restore/cache tools folder
+ uses: actions/cache@v1
+ with:
+ path: tools
+ key: all-tools-${{ github.sha }}
+ restore-keys: |
+ all-tools-${{ github.sha }}-
+ all-tools-
+
+ - name: composer
+ uses: docker://composer
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: install --no-interaction --prefer-dist --optimize-autoloader
+
+ - name: Install phive
+ run: make install-phive
+
+ - name: Install PHAR dependencies
+ run: tools/phive.phar --no-progress install --copy --trust-gpg-keys 4AA394086372C20A,8A03EA3B385DBAA1 --force-accept-unsigned
+
+ phpunit-with-coverage:
+ runs-on: ubuntu-latest
+ name: Unit tests
+ needs: setup
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: 7.2
+ ini-values: memory_limit=2G, display_errors=On, error_reporting=-1
+ coverage: pcov
+
+ - name: Restore/cache tools folder
+ uses: actions/cache@v1
+ with:
+ path: tools
+ key: all-tools-${{ github.sha }}
+ restore-keys: |
+ all-tools-${{ github.sha }}-
+ all-tools-
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ubuntu-latest-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ubuntu-latest-composer-
+
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+
+ - name: Run PHPUnit
+ run: php tools/phpunit
+
+ phpunit:
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ matrix:
+ operating-system:
+ - ubuntu-latest
+ - windows-latest
+ - macOS-latest
+ php-versions: ['7.2', '7.3', '7.4', '8.0']
+ name: Unit tests for PHP version ${{ matrix.php-versions }} on ${{ matrix.operating-system }}
+ needs:
+ - setup
+ - phpunit-with-coverage
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Restore/cache tools folder
+ uses: actions/cache@v1
+ with:
+ path: tools
+ key: all-tools-${{ github.sha }}
+ restore-keys: |
+ all-tools-${{ github.sha }}-
+ all-tools-
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ ini-values: memory_limit=2G, display_errors=On, error_reporting=-1
+ coverage: none
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+
+ - name: Run PHPUnit
+ continue-on-error: true
+ run: php tools/phpunit
+
+ codestyle:
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+ - name: Code style check
+ uses: phpDocumentor/coding-standard@latest
+ with:
+ args: -s
+
+ phpstan:
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+ - name: PHPStan
+ uses: phpDocumentor/phpstan-ga@latest
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: analyse src --configuration phpstan.neon
+
+ psalm:
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: 7.2
+ ini-values: memory_limit=2G, display_errors=On, error_reporting=-1
+ tools: psalm
+ coverage: none
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+
+ - name: Psalm
+ run: psalm --output-format=github
+
+ bc_check:
+ name: BC Check
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+ - name: fetch tags
+ run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+ - name: Roave BC Check
+ uses: docker://nyholm/roave-bc-check-ga
diff --git a/panel/vendor/phpdocumentor/reflection-common/LICENSE b/panel/vendor/phpdocumentor/reflection-common/LICENSE
new file mode 100644
index 0000000..ed6926c
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 phpDocumentor
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/panel/vendor/phpdocumentor/reflection-common/README.md b/panel/vendor/phpdocumentor/reflection-common/README.md
new file mode 100644
index 0000000..70f830d
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/README.md
@@ -0,0 +1,11 @@
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+![Qa workflow](https://github.com/phpDocumentor/ReflectionCommon/workflows/Qa%20workflow/badge.svg)
+[![Coveralls Coverage](https://img.shields.io/coveralls/github/phpDocumentor/ReflectionCommon.svg)](https://coveralls.io/github/phpDocumentor/ReflectionCommon?branch=master)
+[![Scrutinizer Code Coverage](https://img.shields.io/scrutinizer/coverage/g/phpDocumentor/ReflectionCommon.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionCommon/?branch=master)
+[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/phpDocumentor/ReflectionCommon.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionCommon/?branch=master)
+[![Stable Version](https://img.shields.io/packagist/v/phpDocumentor/Reflection-Common.svg)](https://packagist.org/packages/phpDocumentor/Reflection-Common)
+[![Unstable Version](https://img.shields.io/packagist/vpre/phpDocumentor/Reflection-Common.svg)](https://packagist.org/packages/phpDocumentor/Reflection-Common)
+
+
+ReflectionCommon
+================
diff --git a/panel/vendor/phpdocumentor/reflection-common/composer.json b/panel/vendor/phpdocumentor/reflection-common/composer.json
new file mode 100644
index 0000000..4d128b4
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/composer.json
@@ -0,0 +1,28 @@
+{
+ "name": "phpdocumentor/reflection-common",
+ "keywords": ["phpdoc", "phpDocumentor", "reflection", "static analysis", "FQSEN"],
+ "homepage": "http://www.phpdoc.org",
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "autoload" : {
+ "psr-4" : {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "require-dev": {
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ }
+}
diff --git a/panel/vendor/phpdocumentor/reflection-common/src/Element.php b/panel/vendor/phpdocumentor/reflection-common/src/Element.php
new file mode 100644
index 0000000..8923e4f
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/src/Element.php
@@ -0,0 +1,30 @@
+fqsen = $fqsen;
+
+ if (isset($matches[2])) {
+ $this->name = $matches[2];
+ } else {
+ $matches = explode('\\', $fqsen);
+ $name = end($matches);
+ assert(is_string($name));
+ $this->name = trim($name, '()');
+ }
+ }
+
+ /**
+ * converts this class to string.
+ */
+ public function __toString() : string
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns the name of the element without path.
+ */
+ public function getName() : string
+ {
+ return $this->name;
+ }
+}
diff --git a/panel/vendor/phpdocumentor/reflection-common/src/Location.php b/panel/vendor/phpdocumentor/reflection-common/src/Location.php
new file mode 100644
index 0000000..177deed
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/src/Location.php
@@ -0,0 +1,53 @@
+lineNumber = $lineNumber;
+ $this->columnNumber = $columnNumber;
+ }
+
+ /**
+ * Returns the line number that is covered by this location.
+ */
+ public function getLineNumber() : int
+ {
+ return $this->lineNumber;
+ }
+
+ /**
+ * Returns the column number (character position on a line) for this location object.
+ */
+ public function getColumnNumber() : int
+ {
+ return $this->columnNumber;
+ }
+}
diff --git a/panel/vendor/phpdocumentor/reflection-common/src/Project.php b/panel/vendor/phpdocumentor/reflection-common/src/Project.php
new file mode 100644
index 0000000..57839fd
--- /dev/null
+++ b/panel/vendor/phpdocumentor/reflection-common/src/Project.php
@@ -0,0 +1,25 @@
+ please note that if you want to pass partial class names that additional steps are necessary, see the
+ > chapter `Resolving partial classes and FQSENs` for more information.
+
+Where the FqsenResolver can resolve:
+
+- Constant expressions (i.e. `@see \MyNamespace\MY_CONSTANT`)
+- Function expressions (i.e. `@see \MyNamespace\myFunction()`)
+- Class expressions (i.e. `@see \MyNamespace\MyClass`)
+- Interface expressions (i.e. `@see \MyNamespace\MyInterface`)
+- Trait expressions (i.e. `@see \MyNamespace\MyTrait`)
+- Class constant expressions (i.e. `@see \MyNamespace\MyClass::MY_CONSTANT`)
+- Property expressions (i.e. `@see \MyNamespace\MyClass::$myProperty`)
+- Method expressions (i.e. `@see \MyNamespace\MyClass::myMethod()`)
+
+## Resolving a type
+
+In order to resolve a type you will have to instantiate the class `\phpDocumentor\Reflection\TypeResolver` and call its `resolve` method like this:
+
+```php
+$typeResolver = new \phpDocumentor\Reflection\TypeResolver();
+$type = $typeResolver->resolve('string|integer');
+```
+
+In this example you will receive a Value Object of class `\phpDocumentor\Reflection\Types\Compound` that has two
+elements, one of type `\phpDocumentor\Reflection\Types\String_` and one of type
+`\phpDocumentor\Reflection\Types\Integer`.
+
+The real power of this resolver is in its capability to expand partial class names into fully qualified class names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply.
+
+### Resolving nullable types
+
+Php 7.1 introduced nullable types e.g. `?string`. Type resolver will resolve the original type without the nullable notation `?`
+just like it would do without the `?`. After that the type is wrapped in a `\phpDocumentor\Reflection\Types\Nullable` object.
+The `Nullable` type has a method to fetch the actual type.
+
+## Resolving an FQSEN
+
+A Fully Qualified Structural Element Name is a reference to another element in your code bases and can be resolved using the `\phpDocumentor\Reflection\FqsenResolver` class' `resolve` method, like this:
+
+```php
+$fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver();
+$fqsen = $fqsenResolver->resolve('\phpDocumentor\Reflection\FqsenResolver::resolve()');
+```
+
+In this example we resolve a Fully Qualified Structural Element Name (meaning that it includes the full namespace, class name and element name) and receive a Value Object of type `\phpDocumentor\Reflection\Fqsen`.
+
+The real power of this resolver is in its capability to expand partial element names into Fully Qualified Structural Element Names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply.
+
+## Resolving partial Classes and Structural Element Names
+
+Perhaps the best feature of this library is that it knows how to resolve partial class names into fully qualified class names.
+
+For example, you have this file:
+
+```php
+namespace My\Example;
+
+use phpDocumentor\Reflection\Types;
+
+class Classy
+{
+ /**
+ * @var Types\Context
+ * @see Classy::otherFunction()
+ */
+ public function __construct($context) {}
+
+ public function otherFunction(){}
+}
+```
+
+Suppose that you would want to resolve (and expand) the type in the `@var` tag and the element name in the `@see` tag.
+
+For the resolvers to know how to expand partial names you have to provide a bit of _Context_ for them by instantiating a new class named `\phpDocumentor\Reflection\Types\Context` with the name of the namespace and the aliases that are in play.
+
+### Creating a Context
+
+You can do this by manually creating a Context like this:
+
+```php
+$context = new \phpDocumentor\Reflection\Types\Context(
+ '\My\Example',
+ [ 'Types' => '\phpDocumentor\Reflection\Types']
+);
+```
+
+Or by using the `\phpDocumentor\Reflection\Types\ContextFactory` to instantiate a new context based on a Reflector object or by providing the namespace that you'd like to extract and the source code of the file in which the given type expression occurs.
+
+```php
+$contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory();
+$context = $contextFactory->createFromReflector(new ReflectionMethod('\My\Example\Classy', '__construct'));
+```
+
+or
+
+```php
+$contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory();
+$context = $contextFactory->createForNamespace('\My\Example', file_get_contents('My/Example/Classy.php'));
+```
+
+### Using the Context
+
+After you have obtained a Context it is just a matter of passing it along with the `resolve` method of either Resolver class as second argument and the Resolvers will take this into account when resolving partial names.
+
+To obtain the resolved class name for the `@var` tag in the example above you can do:
+
+```php
+$typeResolver = new \phpDocumentor\Reflection\TypeResolver();
+$type = $typeResolver->resolve('Types\Context', $context);
+```
+
+When you do this you will receive an object of class `\phpDocumentor\Reflection\Types\Object_` for which you can call the `getFqsen` method to receive a Value Object that represents the complete FQSEN. So that would be `phpDocumentor\Reflection\Types\Context`.
+
+> Why is the FQSEN wrapped in another object `Object_`?
+>
+> The resolve method of the TypeResolver only returns object with the interface `Type` and the FQSEN is a common type that does not represent a Type. Also: in some cases a type can represent an "Untyped Object", meaning that it is an object (signified by the `object` keyword) but does not refer to a specific element using an FQSEN.
+
+Another example is on how to resolve the FQSEN of a method as can be seen with the `@see` tag in the example above. To resolve that you can do the following:
+
+```php
+$fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver();
+$type = $fqsenResolver->resolve('Classy::otherFunction()', $context);
+```
+
+Because Classy is a Class in the current namespace its FQSEN will have the `My\Example` namespace and by calling the `resolve` method of the FQSEN Resolver you will receive an `Fqsen` object that refers to `\My\Example\Classy::otherFunction()`.
diff --git a/panel/vendor/phpdocumentor/type-resolver/composer.json b/panel/vendor/phpdocumentor/type-resolver/composer.json
new file mode 100644
index 0000000..4dbf623
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/composer.json
@@ -0,0 +1,35 @@
+{
+ "name": "phpdocumentor/type-resolver",
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "type": "library",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": ["tests/unit", "tests/benchmark"]
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php b/panel/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php
new file mode 100644
index 0000000..068fa20
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php
@@ -0,0 +1,80 @@
+isFqsen($fqsen)) {
+ return new Fqsen($fqsen);
+ }
+
+ return $this->resolvePartialStructuralElementName($fqsen, $context);
+ }
+
+ /**
+ * Tests whether the given type is a Fully Qualified Structural Element Name.
+ */
+ private function isFqsen(string $type): bool
+ {
+ return strpos($type, self::OPERATOR_NAMESPACE) === 0;
+ }
+
+ /**
+ * Resolves a partial Structural Element Name (i.e. `Reflection\DocBlock`) to its FQSEN representation
+ * (i.e. `\phpDocumentor\Reflection\DocBlock`) based on the Namespace and aliases mentioned in the Context.
+ *
+ * @throws InvalidArgumentException When type is not a valid FQSEN.
+ */
+ private function resolvePartialStructuralElementName(string $type, Context $context): Fqsen
+ {
+ $typeParts = explode(self::OPERATOR_NAMESPACE, $type, 2);
+
+ $namespaceAliases = $context->getNamespaceAliases();
+
+ // if the first segment is not an alias; prepend namespace name and return
+ if (!isset($namespaceAliases[$typeParts[0]])) {
+ $namespace = $context->getNamespace();
+ if ($namespace !== '') {
+ $namespace .= self::OPERATOR_NAMESPACE;
+ }
+
+ return new Fqsen(self::OPERATOR_NAMESPACE . $namespace . $type);
+ }
+
+ $typeParts[0] = $namespaceAliases[$typeParts[0]];
+
+ return new Fqsen(self::OPERATOR_NAMESPACE . implode(self::OPERATOR_NAMESPACE, $typeParts));
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/PseudoType.php b/panel/vendor/phpdocumentor/type-resolver/src/PseudoType.php
new file mode 100644
index 0000000..dd91ed7
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/PseudoType.php
@@ -0,0 +1,19 @@
+minValue = $minValue;
+ $this->maxValue = $maxValue;
+ }
+
+ public function underlyingType(): Type
+ {
+ return new Integer();
+ }
+
+ public function getMinValue(): string
+ {
+ return $this->minValue;
+ }
+
+ public function getMaxValue(): string
+ {
+ return $this->maxValue;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'int<' . $this->minValue . ', ' . $this->maxValue . '>';
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/PseudoTypes/List_.php b/panel/vendor/phpdocumentor/type-resolver/src/PseudoTypes/List_.php
new file mode 100644
index 0000000..f9f0c6b
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/PseudoTypes/List_.php
@@ -0,0 +1,50 @@
+valueType instanceof Mixed_) {
+ return 'list';
+ }
+
+ return 'list<' . $this->valueType . '>';
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LiteralString.php b/panel/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LiteralString.php
new file mode 100644
index 0000000..690f782
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LiteralString.php
@@ -0,0 +1,39 @@
+ List of recognized keywords and unto which Value Object they map
+ * @psalm-var array>
+ */
+ private $keywords = [
+ 'string' => Types\String_::class,
+ 'class-string' => Types\ClassString::class,
+ 'interface-string' => Types\InterfaceString::class,
+ 'html-escaped-string' => PseudoTypes\HtmlEscapedString::class,
+ 'lowercase-string' => PseudoTypes\LowercaseString::class,
+ 'non-empty-lowercase-string' => PseudoTypes\NonEmptyLowercaseString::class,
+ 'non-empty-string' => PseudoTypes\NonEmptyString::class,
+ 'numeric-string' => PseudoTypes\NumericString::class,
+ 'numeric' => PseudoTypes\Numeric_::class,
+ 'trait-string' => PseudoTypes\TraitString::class,
+ 'int' => Types\Integer::class,
+ 'integer' => Types\Integer::class,
+ 'positive-int' => PseudoTypes\PositiveInteger::class,
+ 'negative-int' => PseudoTypes\NegativeInteger::class,
+ 'bool' => Types\Boolean::class,
+ 'boolean' => Types\Boolean::class,
+ 'real' => Types\Float_::class,
+ 'float' => Types\Float_::class,
+ 'double' => Types\Float_::class,
+ 'object' => Types\Object_::class,
+ 'mixed' => Types\Mixed_::class,
+ 'array' => Types\Array_::class,
+ 'array-key' => Types\ArrayKey::class,
+ 'resource' => Types\Resource_::class,
+ 'void' => Types\Void_::class,
+ 'null' => Types\Null_::class,
+ 'scalar' => Types\Scalar::class,
+ 'callback' => Types\Callable_::class,
+ 'callable' => Types\Callable_::class,
+ 'callable-string' => PseudoTypes\CallableString::class,
+ 'false' => PseudoTypes\False_::class,
+ 'true' => PseudoTypes\True_::class,
+ 'literal-string' => PseudoTypes\LiteralString::class,
+ 'self' => Types\Self_::class,
+ '$this' => Types\This::class,
+ 'static' => Types\Static_::class,
+ 'parent' => Types\Parent_::class,
+ 'iterable' => Types\Iterable_::class,
+ 'never' => Types\Never_::class,
+ 'list' => PseudoTypes\List_::class,
+ ];
+
+ /**
+ * @var FqsenResolver
+ * @psalm-readonly
+ */
+ private $fqsenResolver;
+
+ /**
+ * Initializes this TypeResolver with the means to create and resolve Fqsen objects.
+ */
+ public function __construct(?FqsenResolver $fqsenResolver = null)
+ {
+ $this->fqsenResolver = $fqsenResolver ?: new FqsenResolver();
+ }
+
+ /**
+ * Analyzes the given type and returns the FQCN variant.
+ *
+ * When a type is provided this method checks whether it is not a keyword or
+ * Fully Qualified Class Name. If so it will use the given namespace and
+ * aliases to expand the type to a FQCN representation.
+ *
+ * This method only works as expected if the namespace and aliases are set;
+ * no dynamic reflection is being performed here.
+ *
+ * @uses Context::getNamespaceAliases() to check whether the first part of the relative type name should not be
+ * replaced with another namespace.
+ * @uses Context::getNamespace() to determine with what to prefix the type name.
+ *
+ * @param string $type The relative or absolute type.
+ */
+ public function resolve(string $type, ?Context $context = null): Type
+ {
+ $type = trim($type);
+ if (!$type) {
+ throw new InvalidArgumentException('Attempted to resolve "' . $type . '" but it appears to be empty');
+ }
+
+ if ($context === null) {
+ $context = new Context('');
+ }
+
+ // split the type string into tokens `|`, `?`, `<`, `>`, `,`, `(`, `)`, `[]`, '<', '>' and type names
+ $tokens = preg_split(
+ '/(\\||\\?|<|>|&|, ?|\\(|\\)|\\[\\]+)/',
+ $type,
+ -1,
+ PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
+ );
+
+ if ($tokens === false) {
+ throw new InvalidArgumentException('Unable to split the type string "' . $type . '" into tokens');
+ }
+
+ /** @var ArrayIterator $tokenIterator */
+ $tokenIterator = new ArrayIterator($tokens);
+
+ return $this->parseTypes($tokenIterator, $context, self::PARSER_IN_COMPOUND);
+ }
+
+ /**
+ * Analyse each tokens and creates types
+ *
+ * @param ArrayIterator $tokens the iterator on tokens
+ * @param int $parserContext on of self::PARSER_* constants, indicating
+ * the context where we are in the parsing
+ */
+ private function parseTypes(ArrayIterator $tokens, Context $context, int $parserContext): Type
+ {
+ $types = [];
+ $token = '';
+ $compoundToken = '|';
+ while ($tokens->valid()) {
+ $token = $tokens->current();
+ if ($token === null) {
+ throw new RuntimeException(
+ 'Unexpected nullable character'
+ );
+ }
+
+ if ($token === '|' || $token === '&') {
+ if (count($types) === 0) {
+ throw new RuntimeException(
+ 'A type is missing before a type separator'
+ );
+ }
+
+ if (
+ !in_array($parserContext, [
+ self::PARSER_IN_COMPOUND,
+ self::PARSER_IN_ARRAY_EXPRESSION,
+ self::PARSER_IN_COLLECTION_EXPRESSION,
+ ], true)
+ ) {
+ throw new RuntimeException(
+ 'Unexpected type separator'
+ );
+ }
+
+ $compoundToken = $token;
+ $tokens->next();
+ } elseif ($token === '?') {
+ if (
+ !in_array($parserContext, [
+ self::PARSER_IN_COMPOUND,
+ self::PARSER_IN_ARRAY_EXPRESSION,
+ self::PARSER_IN_COLLECTION_EXPRESSION,
+ ], true)
+ ) {
+ throw new RuntimeException(
+ 'Unexpected nullable character'
+ );
+ }
+
+ $tokens->next();
+ $type = $this->parseTypes($tokens, $context, self::PARSER_IN_NULLABLE);
+ $types[] = new Nullable($type);
+ } elseif ($token === '(') {
+ $tokens->next();
+ $type = $this->parseTypes($tokens, $context, self::PARSER_IN_ARRAY_EXPRESSION);
+
+ $token = $tokens->current();
+ if ($token === null) { // Someone did not properly close their array expression ..
+ break;
+ }
+
+ $tokens->next();
+
+ $resolvedType = new Expression($type);
+
+ $types[] = $resolvedType;
+ } elseif ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION && isset($token[0]) && $token[0] === ')') {
+ break;
+ } elseif ($token === '<') {
+ if (count($types) === 0) {
+ throw new RuntimeException(
+ 'Unexpected collection operator "<", class name is missing'
+ );
+ }
+
+ $classType = array_pop($types);
+ if ($classType !== null) {
+ if ((string) $classType === 'class-string') {
+ $types[] = $this->resolveClassString($tokens, $context);
+ } elseif ((string) $classType === 'int') {
+ $types[] = $this->resolveIntRange($tokens);
+ } elseif ((string) $classType === 'interface-string') {
+ $types[] = $this->resolveInterfaceString($tokens, $context);
+ } else {
+ $types[] = $this->resolveCollection($tokens, $classType, $context);
+ }
+ }
+
+ $tokens->next();
+ } elseif (
+ $parserContext === self::PARSER_IN_COLLECTION_EXPRESSION
+ && ($token === '>' || trim($token) === ',')
+ ) {
+ break;
+ } elseif ($token === self::OPERATOR_ARRAY) {
+ end($types);
+ $last = key($types);
+ if ($last === null) {
+ throw new InvalidArgumentException('Unexpected array operator');
+ }
+
+ $lastItem = $types[$last];
+ if ($lastItem instanceof Expression) {
+ $lastItem = $lastItem->getValueType();
+ }
+
+ $types[$last] = new Array_($lastItem);
+
+ $tokens->next();
+ } else {
+ $type = $this->resolveSingleType($token, $context);
+ $tokens->next();
+ if ($parserContext === self::PARSER_IN_NULLABLE) {
+ return $type;
+ }
+
+ $types[] = $type;
+ }
+ }
+
+ if ($token === '|' || $token === '&') {
+ throw new RuntimeException(
+ 'A type is missing after a type separator'
+ );
+ }
+
+ if (count($types) === 0) {
+ if ($parserContext === self::PARSER_IN_NULLABLE) {
+ throw new RuntimeException(
+ 'A type is missing after a nullable character'
+ );
+ }
+
+ if ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION) {
+ throw new RuntimeException(
+ 'A type is missing in an array expression'
+ );
+ }
+
+ if ($parserContext === self::PARSER_IN_COLLECTION_EXPRESSION) {
+ throw new RuntimeException(
+ 'A type is missing in a collection expression'
+ );
+ }
+ } elseif (count($types) === 1) {
+ return current($types);
+ }
+
+ if ($compoundToken === '|') {
+ return new Compound(array_values($types));
+ }
+
+ return new Intersection(array_values($types));
+ }
+
+ /**
+ * resolve the given type into a type object
+ *
+ * @param string $type the type string, representing a single type
+ *
+ * @return Type|Array_|Object_
+ *
+ * @psalm-mutation-free
+ */
+ private function resolveSingleType(string $type, Context $context): object
+ {
+ switch (true) {
+ case $this->isKeyword($type):
+ return $this->resolveKeyword($type);
+
+ case $this->isFqsen($type):
+ return $this->resolveTypedObject($type);
+
+ case $this->isPartialStructuralElementName($type):
+ return $this->resolveTypedObject($type, $context);
+
+ // @codeCoverageIgnoreStart
+ default:
+ // I haven't got the foggiest how the logic would come here but added this as a defense.
+ throw new RuntimeException(
+ 'Unable to resolve type "' . $type . '", there is no known method to resolve it'
+ );
+ }
+
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * Adds a keyword to the list of Keywords and associates it with a specific Value Object.
+ *
+ * @psalm-param class-string $typeClassName
+ */
+ public function addKeyword(string $keyword, string $typeClassName): void
+ {
+ if (!class_exists($typeClassName)) {
+ throw new InvalidArgumentException(
+ 'The Value Object that needs to be created with a keyword "' . $keyword . '" must be an existing class'
+ . ' but we could not find the class ' . $typeClassName
+ );
+ }
+
+ $interfaces = class_implements($typeClassName);
+ if ($interfaces === false) {
+ throw new InvalidArgumentException(
+ 'The Value Object that needs to be created with a keyword "' . $keyword . '" must be an existing class'
+ . ' but we could not find the class ' . $typeClassName
+ );
+ }
+
+ if (!in_array(Type::class, $interfaces, true)) {
+ throw new InvalidArgumentException(
+ 'The class "' . $typeClassName . '" must implement the interface "phpDocumentor\Reflection\Type"'
+ );
+ }
+
+ $this->keywords[$keyword] = $typeClassName;
+ }
+
+ /**
+ * Detects whether the given type represents a PHPDoc keyword.
+ *
+ * @param string $type A relative or absolute type as defined in the phpDocumentor documentation.
+ *
+ * @psalm-mutation-free
+ */
+ private function isKeyword(string $type): bool
+ {
+ return array_key_exists(strtolower($type), $this->keywords);
+ }
+
+ /**
+ * Detects whether the given type represents a relative structural element name.
+ *
+ * @param string $type A relative or absolute type as defined in the phpDocumentor documentation.
+ *
+ * @psalm-mutation-free
+ */
+ private function isPartialStructuralElementName(string $type): bool
+ {
+ return (isset($type[0]) && $type[0] !== self::OPERATOR_NAMESPACE) && !$this->isKeyword($type);
+ }
+
+ /**
+ * Tests whether the given type is a Fully Qualified Structural Element Name.
+ *
+ * @psalm-mutation-free
+ */
+ private function isFqsen(string $type): bool
+ {
+ return strpos($type, self::OPERATOR_NAMESPACE) === 0;
+ }
+
+ /**
+ * Resolves the given keyword (such as `string`) into a Type object representing that keyword.
+ *
+ * @psalm-mutation-free
+ */
+ private function resolveKeyword(string $type): Type
+ {
+ $className = $this->keywords[strtolower($type)];
+
+ return new $className();
+ }
+
+ /**
+ * Resolves the given FQSEN string into an FQSEN object.
+ *
+ * @psalm-mutation-free
+ */
+ private function resolveTypedObject(string $type, ?Context $context = null): Object_
+ {
+ return new Object_($this->fqsenResolver->resolve($type, $context));
+ }
+
+ /**
+ * Resolves class string
+ *
+ * @param ArrayIterator $tokens
+ */
+ private function resolveClassString(ArrayIterator $tokens, Context $context): Type
+ {
+ $tokens->next();
+
+ $classType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+
+ if (!$classType instanceof Object_ || $classType->getFqsen() === null) {
+ throw new RuntimeException(
+ $classType . ' is not a class string'
+ );
+ }
+
+ $token = $tokens->current();
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'class-string: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ return new ClassString($classType->getFqsen());
+ }
+
+ /**
+ * Resolves integer ranges
+ *
+ * @param ArrayIterator $tokens
+ */
+ private function resolveIntRange(ArrayIterator $tokens): Type
+ {
+ $tokens->next();
+
+ $token = '';
+ $minValue = null;
+ $maxValue = null;
+ $commaFound = false;
+ $tokenCounter = 0;
+ while ($tokens->valid()) {
+ $tokenCounter++;
+ $token = $tokens->current();
+ if ($token === null) {
+ throw new RuntimeException(
+ 'Unexpected nullable character'
+ );
+ }
+
+ $token = trim($token);
+
+ if ($token === '>') {
+ break;
+ }
+
+ if ($token === ',') {
+ $commaFound = true;
+ }
+
+ if ($commaFound === false && $minValue === null) {
+ if (is_numeric($token) || $token === 'max' || $token === 'min') {
+ $minValue = $token;
+ }
+ }
+
+ if ($commaFound === true && $maxValue === null) {
+ if (is_numeric($token) || $token === 'max' || $token === 'min') {
+ $maxValue = $token;
+ }
+ }
+
+ $tokens->next();
+ }
+
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'interface-string: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ if ($minValue === null || $maxValue === null || $tokenCounter > 4) {
+ throw new RuntimeException(
+ 'int has not the correct format'
+ );
+ }
+
+ return new IntegerRange($minValue, $maxValue);
+ }
+
+ /**
+ * Resolves class string
+ *
+ * @param ArrayIterator $tokens
+ */
+ private function resolveInterfaceString(ArrayIterator $tokens, Context $context): Type
+ {
+ $tokens->next();
+
+ $classType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+
+ if (!$classType instanceof Object_ || $classType->getFqsen() === null) {
+ throw new RuntimeException(
+ $classType . ' is not a interface string'
+ );
+ }
+
+ $token = $tokens->current();
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'interface-string: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ return new InterfaceString($classType->getFqsen());
+ }
+
+ /**
+ * Resolves the collection values and keys
+ *
+ * @param ArrayIterator $tokens
+ *
+ * @return Array_|Iterable_|Collection
+ */
+ private function resolveCollection(ArrayIterator $tokens, Type $classType, Context $context): Type
+ {
+ $isArray = ((string) $classType === 'array');
+ $isIterable = ((string) $classType === 'iterable');
+ $isList = ((string) $classType === 'list');
+
+ // allow only "array", "iterable" or class name before "<"
+ if (
+ !$isArray && !$isIterable && !$isList
+ && (!$classType instanceof Object_ || $classType->getFqsen() === null)
+ ) {
+ throw new RuntimeException(
+ $classType . ' is not a collection'
+ );
+ }
+
+ $tokens->next();
+
+ $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+ $keyType = null;
+
+ $token = $tokens->current();
+ if ($token !== null && trim($token) === ',' && !$isList) {
+ // if we have a comma, then we just parsed the key type, not the value type
+ $keyType = $valueType;
+ if ($isArray) {
+ // check the key type for an "array" collection. We allow only
+ // strings or integers.
+ if (
+ !$keyType instanceof ArrayKey &&
+ !$keyType instanceof String_ &&
+ !$keyType instanceof Integer &&
+ !$keyType instanceof Compound
+ ) {
+ throw new RuntimeException(
+ 'An array can have only integers or strings as keys'
+ );
+ }
+
+ if ($keyType instanceof Compound) {
+ foreach ($keyType->getIterator() as $item) {
+ if (
+ !$item instanceof ArrayKey &&
+ !$item instanceof String_ &&
+ !$item instanceof Integer
+ ) {
+ throw new RuntimeException(
+ 'An array can have only integers or strings as keys'
+ );
+ }
+ }
+ }
+ }
+
+ $tokens->next();
+ // now let's parse the value type
+ $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+ }
+
+ $token = $tokens->current();
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'Collection: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ if ($isArray) {
+ return new Array_($valueType, $keyType);
+ }
+
+ if ($isIterable) {
+ return new Iterable_($valueType, $keyType);
+ }
+
+ if ($isList) {
+ return new List_($valueType);
+ }
+
+ if ($classType instanceof Object_) {
+ return $this->makeCollectionFromObject($classType, $valueType, $keyType);
+ }
+
+ throw new RuntimeException('Invalid $classType provided');
+ }
+
+ /**
+ * @psalm-pure
+ */
+ private function makeCollectionFromObject(Object_ $object, Type $valueType, ?Type $keyType = null): Collection
+ {
+ return new Collection($object->getFqsen(), $valueType, $keyType);
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php b/panel/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php
new file mode 100644
index 0000000..b674862
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php
@@ -0,0 +1,83 @@
+valueType = $valueType;
+ $this->defaultKeyType = new Compound([new String_(), new Integer()]);
+ $this->keyType = $keyType;
+ }
+
+ /**
+ * Returns the type for the keys of this array.
+ */
+ public function getKeyType(): Type
+ {
+ return $this->keyType ?? $this->defaultKeyType;
+ }
+
+ /**
+ * Returns the value for the keys of this array.
+ */
+ public function getValueType(): Type
+ {
+ return $this->valueType;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ if ($this->keyType) {
+ return 'array<' . $this->keyType . ',' . $this->valueType . '>';
+ }
+
+ if ($this->valueType instanceof Mixed_) {
+ return 'array';
+ }
+
+ if ($this->valueType instanceof Compound) {
+ return '(' . $this->valueType . ')[]';
+ }
+
+ return $this->valueType . '[]';
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/Types/AggregatedType.php b/panel/vendor/phpdocumentor/type-resolver/src/Types/AggregatedType.php
new file mode 100644
index 0000000..472a1cd
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/Types/AggregatedType.php
@@ -0,0 +1,125 @@
+
+ */
+abstract class AggregatedType implements Type, IteratorAggregate
+{
+ /**
+ * @psalm-allow-private-mutation
+ * @var array
+ */
+ private $types = [];
+
+ /** @var string */
+ private $token;
+
+ /**
+ * @param array $types
+ */
+ public function __construct(array $types, string $token)
+ {
+ foreach ($types as $type) {
+ $this->add($type);
+ }
+
+ $this->token = $token;
+ }
+
+ /**
+ * Returns the type at the given index.
+ */
+ public function get(int $index): ?Type
+ {
+ if (!$this->has($index)) {
+ return null;
+ }
+
+ return $this->types[$index];
+ }
+
+ /**
+ * Tests if this compound type has a type with the given index.
+ */
+ public function has(int $index): bool
+ {
+ return array_key_exists($index, $this->types);
+ }
+
+ /**
+ * Tests if this compound type contains the given type.
+ */
+ public function contains(Type $type): bool
+ {
+ foreach ($this->types as $typePart) {
+ // if the type is duplicate; do not add it
+ if ((string) $typePart === (string) $type) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return implode($this->token, $this->types);
+ }
+
+ /**
+ * @return ArrayIterator
+ */
+ public function getIterator(): ArrayIterator
+ {
+ return new ArrayIterator($this->types);
+ }
+
+ /**
+ * @psalm-suppress ImpureMethodCall
+ */
+ private function add(Type $type): void
+ {
+ if ($type instanceof self) {
+ foreach ($type->getIterator() as $subType) {
+ $this->add($subType);
+ }
+
+ return;
+ }
+
+ // if the type is duplicate; do not add it
+ if ($this->contains($type)) {
+ return;
+ }
+
+ $this->types[] = $type;
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/Types/ArrayKey.php b/panel/vendor/phpdocumentor/type-resolver/src/Types/ArrayKey.php
new file mode 100644
index 0000000..cf86df0
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/Types/ArrayKey.php
@@ -0,0 +1,42 @@
+fqsen = $fqsen;
+ }
+
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns the FQSEN associated with this object.
+ */
+ public function getFqsen(): ?Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ if ($this->fqsen === null) {
+ return 'class-string';
+ }
+
+ return 'class-string<' . (string) $this->fqsen . '>';
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/Types/Collection.php b/panel/vendor/phpdocumentor/type-resolver/src/Types/Collection.php
new file mode 100644
index 0000000..943cc22
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/Types/Collection.php
@@ -0,0 +1,68 @@
+`
+ * 2. `ACollectionObject`
+ *
+ * - ACollectionObject can be 'array' or an object that can act as an array
+ * - aValueType and aKeyType can be any type expression
+ *
+ * @psalm-immutable
+ */
+final class Collection extends AbstractList
+{
+ /** @var Fqsen|null */
+ private $fqsen;
+
+ /**
+ * Initializes this representation of an array with the given Type or Fqsen.
+ */
+ public function __construct(?Fqsen $fqsen, Type $valueType, ?Type $keyType = null)
+ {
+ parent::__construct($valueType, $keyType);
+
+ $this->fqsen = $fqsen;
+ }
+
+ /**
+ * Returns the FQSEN associated with this object.
+ */
+ public function getFqsen(): ?Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ $objectType = (string) ($this->fqsen ?? 'object');
+
+ if ($this->keyType === null) {
+ return $objectType . '<' . $this->valueType . '>';
+ }
+
+ return $objectType . '<' . $this->keyType . ',' . $this->valueType . '>';
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/Types/Compound.php b/panel/vendor/phpdocumentor/type-resolver/src/Types/Compound.php
new file mode 100644
index 0000000..ad426cc
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/Types/Compound.php
@@ -0,0 +1,38 @@
+ $types
+ */
+ public function __construct(array $types)
+ {
+ parent::__construct($types, '|');
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/Types/Context.php b/panel/vendor/phpdocumentor/type-resolver/src/Types/Context.php
new file mode 100644
index 0000000..79aadaf
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/Types/Context.php
@@ -0,0 +1,95 @@
+ Fully Qualified Namespace.
+ * @psalm-var array
+ */
+ private $namespaceAliases;
+
+ /**
+ * Initializes the new context and normalizes all passed namespaces to be in Qualified Namespace Name (QNN)
+ * format (without a preceding `\`).
+ *
+ * @param string $namespace The namespace where this DocBlock resides in.
+ * @param string[] $namespaceAliases List of namespace aliases => Fully Qualified Namespace.
+ * @psalm-param array $namespaceAliases
+ */
+ public function __construct(string $namespace, array $namespaceAliases = [])
+ {
+ $this->namespace = $namespace !== 'global' && $namespace !== 'default'
+ ? trim($namespace, '\\')
+ : '';
+
+ foreach ($namespaceAliases as $alias => $fqnn) {
+ if ($fqnn[0] === '\\') {
+ $fqnn = substr($fqnn, 1);
+ }
+
+ if ($fqnn[strlen($fqnn) - 1] === '\\') {
+ $fqnn = substr($fqnn, 0, -1);
+ }
+
+ $namespaceAliases[$alias] = $fqnn;
+ }
+
+ $this->namespaceAliases = $namespaceAliases;
+ }
+
+ /**
+ * Returns the Qualified Namespace Name (thus without `\` in front) where the associated element is in.
+ */
+ public function getNamespace(): string
+ {
+ return $this->namespace;
+ }
+
+ /**
+ * Returns a list of Qualified Namespace Names (thus without `\` in front) that are imported, the keys represent
+ * the alias for the imported Namespace.
+ *
+ * @return string[]
+ * @psalm-return array
+ */
+ public function getNamespaceAliases(): array
+ {
+ return $this->namespaceAliases;
+ }
+}
diff --git a/panel/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php b/panel/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php
new file mode 100644
index 0000000..892ee0f
--- /dev/null
+++ b/panel/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php
@@ -0,0 +1,420 @@
+ $reflector */
+
+ return $this->createFromReflectionClass($reflector);
+ }
+
+ if ($reflector instanceof ReflectionParameter) {
+ return $this->createFromReflectionParameter($reflector);
+ }
+
+ if ($reflector instanceof ReflectionMethod) {
+ return $this->createFromReflectionMethod($reflector);
+ }
+
+ if ($reflector instanceof ReflectionProperty) {
+ return $this->createFromReflectionProperty($reflector);
+ }
+
+ if ($reflector instanceof ReflectionClassConstant) {
+ return $this->createFromReflectionClassConstant($reflector);
+ }
+
+ throw new UnexpectedValueException('Unhandled \Reflector instance given: ' . get_class($reflector));
+ }
+
+ private function createFromReflectionParameter(ReflectionParameter $parameter): Context
+ {
+ $class = $parameter->getDeclaringClass();
+ if (!$class) {
+ throw new InvalidArgumentException('Unable to get class of ' . $parameter->getName());
+ }
+
+ return $this->createFromReflectionClass($class);
+ }
+
+ private function createFromReflectionMethod(ReflectionMethod $method): Context
+ {
+ $class = $method->getDeclaringClass();
+
+ return $this->createFromReflectionClass($class);
+ }
+
+ private function createFromReflectionProperty(ReflectionProperty $property): Context
+ {
+ $class = $property->getDeclaringClass();
+
+ return $this->createFromReflectionClass($class);
+ }
+
+ private function createFromReflectionClassConstant(ReflectionClassConstant $constant): Context
+ {
+ //phpcs:ignore SlevomatCodingStandard.Commenting.InlineDocCommentDeclaration.MissingVariable
+ /** @phpstan-var ReflectionClass