Bläddra i källkod

v11.0.3-20210517

Michael_xu 5 år sedan
förälder
incheckning
2b1299b408
100 ändrade filer med 10826 tillägg och 0 borttagningar
  1. 7
    0
      vendor/autoload.php
  2. 14
    0
      vendor/bin/phpunit
  3. 4
    0
      vendor/bin/phpunit.bat
  4. 479
    0
      vendor/composer/ClassLoader.php
  5. 679
    0
      vendor/composer/InstalledVersions.php
  6. 21
    0
      vendor/composer/LICENSE
  7. 456
    0
      vendor/composer/autoload_classmap.php
  8. 73
    0
      vendor/composer/autoload_files.php
  9. 10
    0
      vendor/composer/autoload_namespaces.php
  10. 34
    0
      vendor/composer/autoload_psr4.php
  11. 75
    0
      vendor/composer/autoload_real.php
  12. 708
    0
      vendor/composer/autoload_static.php
  13. 2653
    0
      vendor/composer/installed.json
  14. 420
    0
      vendor/composer/installed.php
  15. 26
    0
      vendor/composer/platform_check.php
  16. 41
    0
      vendor/doctrine/instantiator/.doctrine-project.json
  17. 3
    0
      vendor/doctrine/instantiator/.github/FUNDING.yml
  18. 48
    0
      vendor/doctrine/instantiator/.github/workflows/coding-standards.yml
  19. 91
    0
      vendor/doctrine/instantiator/.github/workflows/continuous-integration.yml
  20. 50
    0
      vendor/doctrine/instantiator/.github/workflows/phpbench.yml
  21. 45
    0
      vendor/doctrine/instantiator/.github/workflows/release-on-milestone-closed.yml
  22. 47
    0
      vendor/doctrine/instantiator/.github/workflows/static-analysis.yml
  23. 35
    0
      vendor/doctrine/instantiator/CONTRIBUTING.md
  24. 19
    0
      vendor/doctrine/instantiator/LICENSE
  25. 38
    0
      vendor/doctrine/instantiator/README.md
  26. 42
    0
      vendor/doctrine/instantiator/composer.json
  27. 68
    0
      vendor/doctrine/instantiator/docs/en/index.rst
  28. 4
    0
      vendor/doctrine/instantiator/docs/en/sidebar.rst
  29. 4
    0
      vendor/doctrine/instantiator/phpbench.json
  30. 50
    0
      vendor/doctrine/instantiator/phpcs.xml.dist
  31. 15
    0
      vendor/doctrine/instantiator/phpstan.neon.dist
  32. 12
    0
      vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
  33. 41
    0
      vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
  34. 57
    0
      vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
  35. 232
    0
      vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
  36. 23
    0
      vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
  37. 156
    0
      vendor/markbaker/complex/README.md
  38. 53
    0
      vendor/markbaker/complex/classes/Autoloader.php
  39. 38
    0
      vendor/markbaker/complex/classes/Bootstrap.php
  40. 390
    0
      vendor/markbaker/complex/classes/src/Complex.php
  41. 13
    0
      vendor/markbaker/complex/classes/src/Exception.php
  42. 29
    0
      vendor/markbaker/complex/classes/src/functions/abs.php
  43. 38
    0
      vendor/markbaker/complex/classes/src/functions/acos.php
  44. 34
    0
      vendor/markbaker/complex/classes/src/functions/acosh.php
  45. 25
    0
      vendor/markbaker/complex/classes/src/functions/acot.php
  46. 25
    0
      vendor/markbaker/complex/classes/src/functions/acoth.php
  47. 29
    0
      vendor/markbaker/complex/classes/src/functions/acsc.php
  48. 29
    0
      vendor/markbaker/complex/classes/src/functions/acsch.php
  49. 28
    0
      vendor/markbaker/complex/classes/src/functions/argument.php
  50. 29
    0
      vendor/markbaker/complex/classes/src/functions/asec.php
  51. 29
    0
      vendor/markbaker/complex/classes/src/functions/asech.php
  52. 37
    0
      vendor/markbaker/complex/classes/src/functions/asin.php
  53. 33
    0
      vendor/markbaker/complex/classes/src/functions/asinh.php
  54. 45
    0
      vendor/markbaker/complex/classes/src/functions/atan.php
  55. 38
    0
      vendor/markbaker/complex/classes/src/functions/atanh.php
  56. 28
    0
      vendor/markbaker/complex/classes/src/functions/conjugate.php
  57. 34
    0
      vendor/markbaker/complex/classes/src/functions/cos.php
  58. 32
    0
      vendor/markbaker/complex/classes/src/functions/cosh.php
  59. 29
    0
      vendor/markbaker/complex/classes/src/functions/cot.php
  60. 24
    0
      vendor/markbaker/complex/classes/src/functions/coth.php
  61. 29
    0
      vendor/markbaker/complex/classes/src/functions/csc.php
  62. 29
    0
      vendor/markbaker/complex/classes/src/functions/csch.php
  63. 34
    0
      vendor/markbaker/complex/classes/src/functions/exp.php
  64. 29
    0
      vendor/markbaker/complex/classes/src/functions/inverse.php
  65. 33
    0
      vendor/markbaker/complex/classes/src/functions/ln.php
  66. 32
    0
      vendor/markbaker/complex/classes/src/functions/log10.php
  67. 32
    0
      vendor/markbaker/complex/classes/src/functions/log2.php
  68. 31
    0
      vendor/markbaker/complex/classes/src/functions/negative.php
  69. 40
    0
      vendor/markbaker/complex/classes/src/functions/pow.php
  70. 28
    0
      vendor/markbaker/complex/classes/src/functions/rho.php
  71. 25
    0
      vendor/markbaker/complex/classes/src/functions/sec.php
  72. 25
    0
      vendor/markbaker/complex/classes/src/functions/sech.php
  73. 32
    0
      vendor/markbaker/complex/classes/src/functions/sin.php
  74. 32
    0
      vendor/markbaker/complex/classes/src/functions/sinh.php
  75. 29
    0
      vendor/markbaker/complex/classes/src/functions/sqrt.php
  76. 40
    0
      vendor/markbaker/complex/classes/src/functions/tan.php
  77. 35
    0
      vendor/markbaker/complex/classes/src/functions/tanh.php
  78. 38
    0
      vendor/markbaker/complex/classes/src/functions/theta.php
  79. 46
    0
      vendor/markbaker/complex/classes/src/operations/add.php
  80. 56
    0
      vendor/markbaker/complex/classes/src/operations/divideby.php
  81. 56
    0
      vendor/markbaker/complex/classes/src/operations/divideinto.php
  82. 48
    0
      vendor/markbaker/complex/classes/src/operations/multiply.php
  83. 46
    0
      vendor/markbaker/complex/classes/src/operations/subtract.php
  84. 94
    0
      vendor/markbaker/complex/composer.json
  85. 154
    0
      vendor/markbaker/complex/examples/complexTest.php
  86. 52
    0
      vendor/markbaker/complex/examples/testFunctions.php
  87. 34
    0
      vendor/markbaker/complex/examples/testOperations.php
  88. 25
    0
      vendor/markbaker/complex/license.md
  89. 112
    0
      vendor/markbaker/matrix/.github/workflows/main.yaml
  90. 207
    0
      vendor/markbaker/matrix/README.md
  91. 62
    0
      vendor/markbaker/matrix/buildPhar.php
  92. 70
    0
      vendor/markbaker/matrix/classes/src/Builder.php
  93. 27
    0
      vendor/markbaker/matrix/classes/src/Decomposition/Decomposition.php
  94. 260
    0
      vendor/markbaker/matrix/classes/src/Decomposition/LU.php
  95. 194
    0
      vendor/markbaker/matrix/classes/src/Decomposition/QR.php
  96. 13
    0
      vendor/markbaker/matrix/classes/src/Exception.php
  97. 337
    0
      vendor/markbaker/matrix/classes/src/Functions.php
  98. 423
    0
      vendor/markbaker/matrix/classes/src/Matrix.php
  99. 68
    0
      vendor/markbaker/matrix/classes/src/Operators/Addition.php
  100. 0
    0
      vendor/markbaker/matrix/classes/src/Operators/DirectSum.php

+ 7
- 0
vendor/autoload.php Visa fil

@@ -0,0 +1,7 @@
1
+<?php
2
+
3
+// autoload.php @generated by Composer
4
+
5
+require_once __DIR__ . '/composer/autoload_real.php';
6
+
7
+return ComposerAutoloaderInitc184f419bfb1b5c35adb1bc36e45b15e::getLoader();

+ 14
- 0
vendor/bin/phpunit Visa fil

@@ -0,0 +1,14 @@
1
+#!/usr/bin/env sh
2
+
3
+dir=$(cd "${0%[/\\]*}" > /dev/null; cd "../phpunit/phpunit" && pwd)
4
+
5
+if [ -d /proc/cygdrive ]; then
6
+    case $(which php) in
7
+        $(readlink -n /proc/cygdrive)/*)
8
+            # We are in Cygwin using Windows php, so the path must be translated
9
+            dir=$(cygpath -m "$dir");
10
+            ;;
11
+    esac
12
+fi
13
+
14
+"${dir}/phpunit" "$@"

+ 4
- 0
vendor/bin/phpunit.bat Visa fil

@@ -0,0 +1,4 @@
1
+@ECHO OFF
2
+setlocal DISABLEDELAYEDEXPANSION
3
+SET BIN_TARGET=%~dp0/../phpunit/phpunit/phpunit
4
+php "%BIN_TARGET%" %*

+ 479
- 0
vendor/composer/ClassLoader.php Visa fil

@@ -0,0 +1,479 @@
1
+<?php
2
+
3
+/*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ *     Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+namespace Composer\Autoload;
14
+
15
+/**
16
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
17
+ *
18
+ *     $loader = new \Composer\Autoload\ClassLoader();
19
+ *
20
+ *     // register classes with namespaces
21
+ *     $loader->add('Symfony\Component', __DIR__.'/component');
22
+ *     $loader->add('Symfony',           __DIR__.'/framework');
23
+ *
24
+ *     // activate the autoloader
25
+ *     $loader->register();
26
+ *
27
+ *     // to enable searching the include path (eg. for PEAR packages)
28
+ *     $loader->setUseIncludePath(true);
29
+ *
30
+ * In this example, if you try to use a class in the Symfony\Component
31
+ * namespace or one of its children (Symfony\Component\Console for instance),
32
+ * the autoloader will first look for the class under the component/
33
+ * directory, and it will then fallback to the framework/ directory if not
34
+ * found before giving up.
35
+ *
36
+ * This class is loosely based on the Symfony UniversalClassLoader.
37
+ *
38
+ * @author Fabien Potencier <fabien@symfony.com>
39
+ * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see    https://www.php-fig.org/psr/psr-0/
41
+ * @see    https://www.php-fig.org/psr/psr-4/
42
+ */
43
+class ClassLoader
44
+{
45
+    private $vendorDir;
46
+
47
+    // PSR-4
48
+    private $prefixLengthsPsr4 = array();
49
+    private $prefixDirsPsr4 = array();
50
+    private $fallbackDirsPsr4 = array();
51
+
52
+    // PSR-0
53
+    private $prefixesPsr0 = array();
54
+    private $fallbackDirsPsr0 = array();
55
+
56
+    private $useIncludePath = false;
57
+    private $classMap = array();
58
+    private $classMapAuthoritative = false;
59
+    private $missingClasses = array();
60
+    private $apcuPrefix;
61
+
62
+    private static $registeredLoaders = array();
63
+
64
+    public function __construct($vendorDir = null)
65
+    {
66
+        $this->vendorDir = $vendorDir;
67
+    }
68
+
69
+    public function getPrefixes()
70
+    {
71
+        if (!empty($this->prefixesPsr0)) {
72
+            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
73
+        }
74
+
75
+        return array();
76
+    }
77
+
78
+    public function getPrefixesPsr4()
79
+    {
80
+        return $this->prefixDirsPsr4;
81
+    }
82
+
83
+    public function getFallbackDirs()
84
+    {
85
+        return $this->fallbackDirsPsr0;
86
+    }
87
+
88
+    public function getFallbackDirsPsr4()
89
+    {
90
+        return $this->fallbackDirsPsr4;
91
+    }
92
+
93
+    public function getClassMap()
94
+    {
95
+        return $this->classMap;
96
+    }
97
+
98
+    /**
99
+     * @param array $classMap Class to filename map
100
+     */
101
+    public function addClassMap(array $classMap)
102
+    {
103
+        if ($this->classMap) {
104
+            $this->classMap = array_merge($this->classMap, $classMap);
105
+        } else {
106
+            $this->classMap = $classMap;
107
+        }
108
+    }
109
+
110
+    /**
111
+     * Registers a set of PSR-0 directories for a given prefix, either
112
+     * appending or prepending to the ones previously set for this prefix.
113
+     *
114
+     * @param string       $prefix  The prefix
115
+     * @param array|string $paths   The PSR-0 root directories
116
+     * @param bool         $prepend Whether to prepend the directories
117
+     */
118
+    public function add($prefix, $paths, $prepend = false)
119
+    {
120
+        if (!$prefix) {
121
+            if ($prepend) {
122
+                $this->fallbackDirsPsr0 = array_merge(
123
+                    (array) $paths,
124
+                    $this->fallbackDirsPsr0
125
+                );
126
+            } else {
127
+                $this->fallbackDirsPsr0 = array_merge(
128
+                    $this->fallbackDirsPsr0,
129
+                    (array) $paths
130
+                );
131
+            }
132
+
133
+            return;
134
+        }
135
+
136
+        $first = $prefix[0];
137
+        if (!isset($this->prefixesPsr0[$first][$prefix])) {
138
+            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
139
+
140
+            return;
141
+        }
142
+        if ($prepend) {
143
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
144
+                (array) $paths,
145
+                $this->prefixesPsr0[$first][$prefix]
146
+            );
147
+        } else {
148
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
149
+                $this->prefixesPsr0[$first][$prefix],
150
+                (array) $paths
151
+            );
152
+        }
153
+    }
154
+
155
+    /**
156
+     * Registers a set of PSR-4 directories for a given namespace, either
157
+     * appending or prepending to the ones previously set for this namespace.
158
+     *
159
+     * @param string       $prefix  The prefix/namespace, with trailing '\\'
160
+     * @param array|string $paths   The PSR-4 base directories
161
+     * @param bool         $prepend Whether to prepend the directories
162
+     *
163
+     * @throws \InvalidArgumentException
164
+     */
165
+    public function addPsr4($prefix, $paths, $prepend = false)
166
+    {
167
+        if (!$prefix) {
168
+            // Register directories for the root namespace.
169
+            if ($prepend) {
170
+                $this->fallbackDirsPsr4 = array_merge(
171
+                    (array) $paths,
172
+                    $this->fallbackDirsPsr4
173
+                );
174
+            } else {
175
+                $this->fallbackDirsPsr4 = array_merge(
176
+                    $this->fallbackDirsPsr4,
177
+                    (array) $paths
178
+                );
179
+            }
180
+        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
181
+            // Register directories for a new namespace.
182
+            $length = strlen($prefix);
183
+            if ('\\' !== $prefix[$length - 1]) {
184
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
185
+            }
186
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
187
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
188
+        } elseif ($prepend) {
189
+            // Prepend directories for an already registered namespace.
190
+            $this->prefixDirsPsr4[$prefix] = array_merge(
191
+                (array) $paths,
192
+                $this->prefixDirsPsr4[$prefix]
193
+            );
194
+        } else {
195
+            // Append directories for an already registered namespace.
196
+            $this->prefixDirsPsr4[$prefix] = array_merge(
197
+                $this->prefixDirsPsr4[$prefix],
198
+                (array) $paths
199
+            );
200
+        }
201
+    }
202
+
203
+    /**
204
+     * Registers a set of PSR-0 directories for a given prefix,
205
+     * replacing any others previously set for this prefix.
206
+     *
207
+     * @param string       $prefix The prefix
208
+     * @param array|string $paths  The PSR-0 base directories
209
+     */
210
+    public function set($prefix, $paths)
211
+    {
212
+        if (!$prefix) {
213
+            $this->fallbackDirsPsr0 = (array) $paths;
214
+        } else {
215
+            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
216
+        }
217
+    }
218
+
219
+    /**
220
+     * Registers a set of PSR-4 directories for a given namespace,
221
+     * replacing any others previously set for this namespace.
222
+     *
223
+     * @param string       $prefix The prefix/namespace, with trailing '\\'
224
+     * @param array|string $paths  The PSR-4 base directories
225
+     *
226
+     * @throws \InvalidArgumentException
227
+     */
228
+    public function setPsr4($prefix, $paths)
229
+    {
230
+        if (!$prefix) {
231
+            $this->fallbackDirsPsr4 = (array) $paths;
232
+        } else {
233
+            $length = strlen($prefix);
234
+            if ('\\' !== $prefix[$length - 1]) {
235
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
236
+            }
237
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
238
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
239
+        }
240
+    }
241
+
242
+    /**
243
+     * Turns on searching the include path for class files.
244
+     *
245
+     * @param bool $useIncludePath
246
+     */
247
+    public function setUseIncludePath($useIncludePath)
248
+    {
249
+        $this->useIncludePath = $useIncludePath;
250
+    }
251
+
252
+    /**
253
+     * Can be used to check if the autoloader uses the include path to check
254
+     * for classes.
255
+     *
256
+     * @return bool
257
+     */
258
+    public function getUseIncludePath()
259
+    {
260
+        return $this->useIncludePath;
261
+    }
262
+
263
+    /**
264
+     * Turns off searching the prefix and fallback directories for classes
265
+     * that have not been registered with the class map.
266
+     *
267
+     * @param bool $classMapAuthoritative
268
+     */
269
+    public function setClassMapAuthoritative($classMapAuthoritative)
270
+    {
271
+        $this->classMapAuthoritative = $classMapAuthoritative;
272
+    }
273
+
274
+    /**
275
+     * Should class lookup fail if not found in the current class map?
276
+     *
277
+     * @return bool
278
+     */
279
+    public function isClassMapAuthoritative()
280
+    {
281
+        return $this->classMapAuthoritative;
282
+    }
283
+
284
+    /**
285
+     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
286
+     *
287
+     * @param string|null $apcuPrefix
288
+     */
289
+    public function setApcuPrefix($apcuPrefix)
290
+    {
291
+        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
292
+    }
293
+
294
+    /**
295
+     * The APCu prefix in use, or null if APCu caching is not enabled.
296
+     *
297
+     * @return string|null
298
+     */
299
+    public function getApcuPrefix()
300
+    {
301
+        return $this->apcuPrefix;
302
+    }
303
+
304
+    /**
305
+     * Registers this instance as an autoloader.
306
+     *
307
+     * @param bool $prepend Whether to prepend the autoloader or not
308
+     */
309
+    public function register($prepend = false)
310
+    {
311
+        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
+
313
+        if (null === $this->vendorDir) {
314
+            return;
315
+        }
316
+
317
+        if ($prepend) {
318
+            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
319
+        } else {
320
+            unset(self::$registeredLoaders[$this->vendorDir]);
321
+            self::$registeredLoaders[$this->vendorDir] = $this;
322
+        }
323
+    }
324
+
325
+    /**
326
+     * Unregisters this instance as an autoloader.
327
+     */
328
+    public function unregister()
329
+    {
330
+        spl_autoload_unregister(array($this, 'loadClass'));
331
+
332
+        if (null !== $this->vendorDir) {
333
+            unset(self::$registeredLoaders[$this->vendorDir]);
334
+        }
335
+    }
336
+
337
+    /**
338
+     * Loads the given class or interface.
339
+     *
340
+     * @param  string    $class The name of the class
341
+     * @return bool|null True if loaded, null otherwise
342
+     */
343
+    public function loadClass($class)
344
+    {
345
+        if ($file = $this->findFile($class)) {
346
+            includeFile($file);
347
+
348
+            return true;
349
+        }
350
+    }
351
+
352
+    /**
353
+     * Finds the path to the file where the class is defined.
354
+     *
355
+     * @param string $class The name of the class
356
+     *
357
+     * @return string|false The path if found, false otherwise
358
+     */
359
+    public function findFile($class)
360
+    {
361
+        // class map lookup
362
+        if (isset($this->classMap[$class])) {
363
+            return $this->classMap[$class];
364
+        }
365
+        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
366
+            return false;
367
+        }
368
+        if (null !== $this->apcuPrefix) {
369
+            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
370
+            if ($hit) {
371
+                return $file;
372
+            }
373
+        }
374
+
375
+        $file = $this->findFileWithExtension($class, '.php');
376
+
377
+        // Search for Hack files if we are running on HHVM
378
+        if (false === $file && defined('HHVM_VERSION')) {
379
+            $file = $this->findFileWithExtension($class, '.hh');
380
+        }
381
+
382
+        if (null !== $this->apcuPrefix) {
383
+            apcu_add($this->apcuPrefix.$class, $file);
384
+        }
385
+
386
+        if (false === $file) {
387
+            // Remember that this class does not exist.
388
+            $this->missingClasses[$class] = true;
389
+        }
390
+
391
+        return $file;
392
+    }
393
+
394
+    /**
395
+     * Returns the currently registered loaders indexed by their corresponding vendor directories.
396
+     *
397
+     * @return self[]
398
+     */
399
+    public static function getRegisteredLoaders()
400
+    {
401
+        return self::$registeredLoaders;
402
+    }
403
+
404
+    private function findFileWithExtension($class, $ext)
405
+    {
406
+        // PSR-4 lookup
407
+        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
408
+
409
+        $first = $class[0];
410
+        if (isset($this->prefixLengthsPsr4[$first])) {
411
+            $subPath = $class;
412
+            while (false !== $lastPos = strrpos($subPath, '\\')) {
413
+                $subPath = substr($subPath, 0, $lastPos);
414
+                $search = $subPath . '\\';
415
+                if (isset($this->prefixDirsPsr4[$search])) {
416
+                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
417
+                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
418
+                        if (file_exists($file = $dir . $pathEnd)) {
419
+                            return $file;
420
+                        }
421
+                    }
422
+                }
423
+            }
424
+        }
425
+
426
+        // PSR-4 fallback dirs
427
+        foreach ($this->fallbackDirsPsr4 as $dir) {
428
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
429
+                return $file;
430
+            }
431
+        }
432
+
433
+        // PSR-0 lookup
434
+        if (false !== $pos = strrpos($class, '\\')) {
435
+            // namespaced class name
436
+            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
437
+                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
438
+        } else {
439
+            // PEAR-like class name
440
+            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
441
+        }
442
+
443
+        if (isset($this->prefixesPsr0[$first])) {
444
+            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
445
+                if (0 === strpos($class, $prefix)) {
446
+                    foreach ($dirs as $dir) {
447
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
448
+                            return $file;
449
+                        }
450
+                    }
451
+                }
452
+            }
453
+        }
454
+
455
+        // PSR-0 fallback dirs
456
+        foreach ($this->fallbackDirsPsr0 as $dir) {
457
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
458
+                return $file;
459
+            }
460
+        }
461
+
462
+        // PSR-0 include paths.
463
+        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
464
+            return $file;
465
+        }
466
+
467
+        return false;
468
+    }
469
+}
470
+
471
+/**
472
+ * Scope isolated include.
473
+ *
474
+ * Prevents access to $this/self from included files.
475
+ */
476
+function includeFile($file)
477
+{
478
+    include $file;
479
+}

+ 679
- 0
vendor/composer/InstalledVersions.php Visa fil

@@ -0,0 +1,679 @@
1
+<?php
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+namespace Composer;
14
+
15
+use Composer\Autoload\ClassLoader;
16
+use Composer\Semver\VersionParser;
17
+
18
+
19
+
20
+
21
+
22
+
23
+class InstalledVersions
24
+{
25
+private static $installed = array (
26
+  'root' => 
27
+  array (
28
+    'pretty_version' => 'dev-master',
29
+    'version' => 'dev-master',
30
+    'aliases' => 
31
+    array (
32
+    ),
33
+    'reference' => '7088f600d8002ab34d9457e48bfdaf2050cebf68',
34
+    'name' => 'topthink/think',
35
+  ),
36
+  'versions' => 
37
+  array (
38
+    'doctrine/instantiator' => 
39
+    array (
40
+      'pretty_version' => '1.4.0',
41
+      'version' => '1.4.0.0',
42
+      'aliases' => 
43
+      array (
44
+      ),
45
+      'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
46
+    ),
47
+    'markbaker/complex' => 
48
+    array (
49
+      'pretty_version' => '1.5.0',
50
+      'version' => '1.5.0.0',
51
+      'aliases' => 
52
+      array (
53
+      ),
54
+      'reference' => 'c3131244e29c08d44fefb49e0dd35021e9e39dd2',
55
+    ),
56
+    'markbaker/matrix' => 
57
+    array (
58
+      'pretty_version' => '1.2.3',
59
+      'version' => '1.2.3.0',
60
+      'aliases' => 
61
+      array (
62
+      ),
63
+      'reference' => '44bb1ab01811116f01fe216ab37d921dccc6c10d',
64
+    ),
65
+    'pclzip/pclzip' => 
66
+    array (
67
+      'pretty_version' => '2.8.2',
68
+      'version' => '2.8.2.0',
69
+      'aliases' => 
70
+      array (
71
+      ),
72
+      'reference' => '19dd1de9d3f5fc4d7d70175b4c344dee329f45fd',
73
+    ),
74
+    'phpdocumentor/reflection-common' => 
75
+    array (
76
+      'pretty_version' => '2.2.0',
77
+      'version' => '2.2.0.0',
78
+      'aliases' => 
79
+      array (
80
+      ),
81
+      'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
82
+    ),
83
+    'phpdocumentor/reflection-docblock' => 
84
+    array (
85
+      'pretty_version' => '5.2.2',
86
+      'version' => '5.2.2.0',
87
+      'aliases' => 
88
+      array (
89
+      ),
90
+      'reference' => '069a785b2141f5bcf49f3e353548dc1cce6df556',
91
+    ),
92
+    'phpdocumentor/type-resolver' => 
93
+    array (
94
+      'pretty_version' => '1.4.0',
95
+      'version' => '1.4.0.0',
96
+      'aliases' => 
97
+      array (
98
+      ),
99
+      'reference' => '6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0',
100
+    ),
101
+    'phpoffice/common' => 
102
+    array (
103
+      'pretty_version' => '0.2.9',
104
+      'version' => '0.2.9.0',
105
+      'aliases' => 
106
+      array (
107
+      ),
108
+      'reference' => 'edb5d32b1e3400a35a5c91e2539ed6f6ce925e4d',
109
+    ),
110
+    'phpoffice/phpexcel' => 
111
+    array (
112
+      'pretty_version' => '1.8.0',
113
+      'version' => '1.8.0.0',
114
+      'aliases' => 
115
+      array (
116
+      ),
117
+      'reference' => 'e69a5e4d0ffa7fb6f171859e0a04346e580df30b',
118
+    ),
119
+    'phpoffice/phpspreadsheet' => 
120
+    array (
121
+      'pretty_version' => '1.8.0',
122
+      'version' => '1.8.0.0',
123
+      'aliases' => 
124
+      array (
125
+      ),
126
+      'reference' => '0e6238c69e863b58aeece61e48ea032696c6dccd',
127
+    ),
128
+    'phpoffice/phpword' => 
129
+    array (
130
+      'pretty_version' => '0.17.0',
131
+      'version' => '0.17.0.0',
132
+      'aliases' => 
133
+      array (
134
+      ),
135
+      'reference' => 'b8346af548d399acd9e30fc76ab0c55c2fec03a5',
136
+    ),
137
+    'phpspec/prophecy' => 
138
+    array (
139
+      'pretty_version' => 'v1.10.3',
140
+      'version' => '1.10.3.0',
141
+      'aliases' => 
142
+      array (
143
+      ),
144
+      'reference' => '451c3cd1418cf640de218914901e51b064abb093',
145
+    ),
146
+    'phpunit/php-code-coverage' => 
147
+    array (
148
+      'pretty_version' => '2.2.4',
149
+      'version' => '2.2.4.0',
150
+      'aliases' => 
151
+      array (
152
+      ),
153
+      'reference' => 'eabf68b476ac7d0f73793aada060f1c1a9bf8979',
154
+    ),
155
+    'phpunit/php-file-iterator' => 
156
+    array (
157
+      'pretty_version' => '1.4.5',
158
+      'version' => '1.4.5.0',
159
+      'aliases' => 
160
+      array (
161
+      ),
162
+      'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4',
163
+    ),
164
+    'phpunit/php-text-template' => 
165
+    array (
166
+      'pretty_version' => '1.2.1',
167
+      'version' => '1.2.1.0',
168
+      'aliases' => 
169
+      array (
170
+      ),
171
+      'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
172
+    ),
173
+    'phpunit/php-timer' => 
174
+    array (
175
+      'pretty_version' => '1.0.9',
176
+      'version' => '1.0.9.0',
177
+      'aliases' => 
178
+      array (
179
+      ),
180
+      'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f',
181
+    ),
182
+    'phpunit/php-token-stream' => 
183
+    array (
184
+      'pretty_version' => '1.4.12',
185
+      'version' => '1.4.12.0',
186
+      'aliases' => 
187
+      array (
188
+      ),
189
+      'reference' => '1ce90ba27c42e4e44e6d8458241466380b51fa16',
190
+    ),
191
+    'phpunit/phpunit' => 
192
+    array (
193
+      'pretty_version' => '4.8.36',
194
+      'version' => '4.8.36.0',
195
+      'aliases' => 
196
+      array (
197
+      ),
198
+      'reference' => '46023de9a91eec7dfb06cc56cb4e260017298517',
199
+    ),
200
+    'phpunit/phpunit-mock-objects' => 
201
+    array (
202
+      'pretty_version' => '2.3.8',
203
+      'version' => '2.3.8.0',
204
+      'aliases' => 
205
+      array (
206
+      ),
207
+      'reference' => 'ac8e7a3db35738d56ee9a76e78a4e03d97628983',
208
+    ),
209
+    'psr/simple-cache' => 
210
+    array (
211
+      'pretty_version' => '1.0.1',
212
+      'version' => '1.0.1.0',
213
+      'aliases' => 
214
+      array (
215
+      ),
216
+      'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
217
+    ),
218
+    'sebastian/comparator' => 
219
+    array (
220
+      'pretty_version' => '1.2.4',
221
+      'version' => '1.2.4.0',
222
+      'aliases' => 
223
+      array (
224
+      ),
225
+      'reference' => '2b7424b55f5047b47ac6e5ccb20b2aea4011d9be',
226
+    ),
227
+    'sebastian/diff' => 
228
+    array (
229
+      'pretty_version' => '1.4.3',
230
+      'version' => '1.4.3.0',
231
+      'aliases' => 
232
+      array (
233
+      ),
234
+      'reference' => '7f066a26a962dbe58ddea9f72a4e82874a3975a4',
235
+    ),
236
+    'sebastian/environment' => 
237
+    array (
238
+      'pretty_version' => '1.3.8',
239
+      'version' => '1.3.8.0',
240
+      'aliases' => 
241
+      array (
242
+      ),
243
+      'reference' => 'be2c607e43ce4c89ecd60e75c6a85c126e754aea',
244
+    ),
245
+    'sebastian/exporter' => 
246
+    array (
247
+      'pretty_version' => '1.2.2',
248
+      'version' => '1.2.2.0',
249
+      'aliases' => 
250
+      array (
251
+      ),
252
+      'reference' => '42c4c2eec485ee3e159ec9884f95b431287edde4',
253
+    ),
254
+    'sebastian/global-state' => 
255
+    array (
256
+      'pretty_version' => '1.1.1',
257
+      'version' => '1.1.1.0',
258
+      'aliases' => 
259
+      array (
260
+      ),
261
+      'reference' => 'bc37d50fea7d017d3d340f230811c9f1d7280af4',
262
+    ),
263
+    'sebastian/recursion-context' => 
264
+    array (
265
+      'pretty_version' => '1.0.5',
266
+      'version' => '1.0.5.0',
267
+      'aliases' => 
268
+      array (
269
+      ),
270
+      'reference' => 'b19cc3298482a335a95f3016d2f8a6950f0fbcd7',
271
+    ),
272
+    'sebastian/version' => 
273
+    array (
274
+      'pretty_version' => '1.0.6',
275
+      'version' => '1.0.6.0',
276
+      'aliases' => 
277
+      array (
278
+      ),
279
+      'reference' => '58b3a85e7999757d6ad81c787a1fbf5ff6c628c6',
280
+    ),
281
+    'symfony/dom-crawler' => 
282
+    array (
283
+      'pretty_version' => 'v2.8.52',
284
+      'version' => '2.8.52.0',
285
+      'aliases' => 
286
+      array (
287
+      ),
288
+      'reference' => '2cdc7d3909eea6f982a6298d2e9ab7db01b6403c',
289
+    ),
290
+    'symfony/polyfill-ctype' => 
291
+    array (
292
+      'pretty_version' => 'v1.22.1',
293
+      'version' => '1.22.1.0',
294
+      'aliases' => 
295
+      array (
296
+      ),
297
+      'reference' => 'c6c942b1ac76c82448322025e084cadc56048b4e',
298
+    ),
299
+    'symfony/polyfill-mbstring' => 
300
+    array (
301
+      'pretty_version' => 'v1.22.1',
302
+      'version' => '1.22.1.0',
303
+      'aliases' => 
304
+      array (
305
+      ),
306
+      'reference' => '5232de97ee3b75b0360528dae24e73db49566ab1',
307
+    ),
308
+    'symfony/yaml' => 
309
+    array (
310
+      'pretty_version' => 'v3.4.47',
311
+      'version' => '3.4.47.0',
312
+      'aliases' => 
313
+      array (
314
+      ),
315
+      'reference' => '88289caa3c166321883f67fe5130188ebbb47094',
316
+    ),
317
+    'topthink/framework' => 
318
+    array (
319
+      'pretty_version' => 'v5.0.24',
320
+      'version' => '5.0.24.0',
321
+      'aliases' => 
322
+      array (
323
+      ),
324
+      'reference' => 'c255c22b2f5fa30f320ecf6c1d29f7740eb3e8be',
325
+    ),
326
+    'topthink/think' => 
327
+    array (
328
+      'pretty_version' => 'dev-master',
329
+      'version' => 'dev-master',
330
+      'aliases' => 
331
+      array (
332
+      ),
333
+      'reference' => '7088f600d8002ab34d9457e48bfdaf2050cebf68',
334
+    ),
335
+    'topthink/think-helper' => 
336
+    array (
337
+      'pretty_version' => 'v1.0.7',
338
+      'version' => '1.0.7.0',
339
+      'aliases' => 
340
+      array (
341
+      ),
342
+      'reference' => '5f92178606c8ce131d36b37a57c58eb71e55f019',
343
+    ),
344
+    'topthink/think-image' => 
345
+    array (
346
+      'pretty_version' => 'v1.0.7',
347
+      'version' => '1.0.7.0',
348
+      'aliases' => 
349
+      array (
350
+      ),
351
+      'reference' => '8586cf47f117481c6d415b20f7dedf62e79d5512',
352
+    ),
353
+    'topthink/think-installer' => 
354
+    array (
355
+      'pretty_version' => 'v1.0.14',
356
+      'version' => '1.0.14.0',
357
+      'aliases' => 
358
+      array (
359
+      ),
360
+      'reference' => 'eae1740ac264a55c06134b6685dfb9f837d004d1',
361
+    ),
362
+    'topthink/think-migration' => 
363
+    array (
364
+      'pretty_version' => 'v1.1.1',
365
+      'version' => '1.1.1.0',
366
+      'aliases' => 
367
+      array (
368
+      ),
369
+      'reference' => '8e489f8d38a39876690c0e00fcf9a54ae92c4d3d',
370
+    ),
371
+    'topthink/think-mongo' => 
372
+    array (
373
+      'pretty_version' => 'v1.8.5',
374
+      'version' => '1.8.5.0',
375
+      'aliases' => 
376
+      array (
377
+      ),
378
+      'reference' => '657cc79bd5f090a58b0cc83776073dd69c83a3d1',
379
+    ),
380
+    'topthink/think-queue' => 
381
+    array (
382
+      'pretty_version' => 'v1.1.6',
383
+      'version' => '1.1.6.0',
384
+      'aliases' => 
385
+      array (
386
+      ),
387
+      'reference' => '250650eb0e8ea5af4cfdc7ae46f3f4e0a24ac245',
388
+    ),
389
+    'topthink/think-sae' => 
390
+    array (
391
+      'pretty_version' => 'v1.1',
392
+      'version' => '1.1.0.0',
393
+      'aliases' => 
394
+      array (
395
+      ),
396
+      'reference' => 'e31ee4ec073c0ffc5dbc7292f8268661e5265091',
397
+    ),
398
+    'topthink/think-testing' => 
399
+    array (
400
+      'pretty_version' => 'v1.0.6',
401
+      'version' => '1.0.6.0',
402
+      'aliases' => 
403
+      array (
404
+      ),
405
+      'reference' => 'e89794e5c58aa5587f7b08038e9468150870b185',
406
+    ),
407
+    'topthink/think-worker' => 
408
+    array (
409
+      'pretty_version' => 'v1.0.0',
410
+      'version' => '1.0.0.0',
411
+      'aliases' => 
412
+      array (
413
+      ),
414
+      'reference' => 'f48ca8e5d8324aace15cdbf0f3de751397ef803f',
415
+    ),
416
+    'webmozart/assert' => 
417
+    array (
418
+      'pretty_version' => '1.10.0',
419
+      'version' => '1.10.0.0',
420
+      'aliases' => 
421
+      array (
422
+      ),
423
+      'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
424
+    ),
425
+    'workerman/workerman' => 
426
+    array (
427
+      'pretty_version' => 'v3.5.31',
428
+      'version' => '3.5.31.0',
429
+      'aliases' => 
430
+      array (
431
+      ),
432
+      'reference' => 'b73ddc45b3c7299f330923a2bde23ca6e974fd96',
433
+    ),
434
+    'zendframework/zend-escaper' => 
435
+    array (
436
+      'pretty_version' => '2.6.1',
437
+      'version' => '2.6.1.0',
438
+      'aliases' => 
439
+      array (
440
+      ),
441
+      'reference' => '3801caa21b0ca6aca57fa1c42b08d35c395ebd5f',
442
+    ),
443
+  ),
444
+);
445
+private static $canGetVendors;
446
+private static $installedByVendor = array();
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+public static function getInstalledPackages()
455
+{
456
+$packages = array();
457
+foreach (self::getInstalled() as $installed) {
458
+$packages[] = array_keys($installed['versions']);
459
+}
460
+
461
+
462
+if (1 === \count($packages)) {
463
+return $packages[0];
464
+}
465
+
466
+return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
467
+}
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+
477
+public static function isInstalled($packageName)
478
+{
479
+foreach (self::getInstalled() as $installed) {
480
+if (isset($installed['versions'][$packageName])) {
481
+return true;
482
+}
483
+}
484
+
485
+return false;
486
+}
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+public static function satisfies(VersionParser $parser, $packageName, $constraint)
502
+{
503
+$constraint = $parser->parseConstraints($constraint);
504
+$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
505
+
506
+return $provided->matches($constraint);
507
+}
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+public static function getVersionRanges($packageName)
519
+{
520
+foreach (self::getInstalled() as $installed) {
521
+if (!isset($installed['versions'][$packageName])) {
522
+continue;
523
+}
524
+
525
+$ranges = array();
526
+if (isset($installed['versions'][$packageName]['pretty_version'])) {
527
+$ranges[] = $installed['versions'][$packageName]['pretty_version'];
528
+}
529
+if (array_key_exists('aliases', $installed['versions'][$packageName])) {
530
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
531
+}
532
+if (array_key_exists('replaced', $installed['versions'][$packageName])) {
533
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
534
+}
535
+if (array_key_exists('provided', $installed['versions'][$packageName])) {
536
+$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
537
+}
538
+
539
+return implode(' || ', $ranges);
540
+}
541
+
542
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
543
+}
544
+
545
+
546
+
547
+
548
+
549
+public static function getVersion($packageName)
550
+{
551
+foreach (self::getInstalled() as $installed) {
552
+if (!isset($installed['versions'][$packageName])) {
553
+continue;
554
+}
555
+
556
+if (!isset($installed['versions'][$packageName]['version'])) {
557
+return null;
558
+}
559
+
560
+return $installed['versions'][$packageName]['version'];
561
+}
562
+
563
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
564
+}
565
+
566
+
567
+
568
+
569
+
570
+public static function getPrettyVersion($packageName)
571
+{
572
+foreach (self::getInstalled() as $installed) {
573
+if (!isset($installed['versions'][$packageName])) {
574
+continue;
575
+}
576
+
577
+if (!isset($installed['versions'][$packageName]['pretty_version'])) {
578
+return null;
579
+}
580
+
581
+return $installed['versions'][$packageName]['pretty_version'];
582
+}
583
+
584
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
585
+}
586
+
587
+
588
+
589
+
590
+
591
+public static function getReference($packageName)
592
+{
593
+foreach (self::getInstalled() as $installed) {
594
+if (!isset($installed['versions'][$packageName])) {
595
+continue;
596
+}
597
+
598
+if (!isset($installed['versions'][$packageName]['reference'])) {
599
+return null;
600
+}
601
+
602
+return $installed['versions'][$packageName]['reference'];
603
+}
604
+
605
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
606
+}
607
+
608
+
609
+
610
+
611
+
612
+public static function getRootPackage()
613
+{
614
+$installed = self::getInstalled();
615
+
616
+return $installed[0]['root'];
617
+}
618
+
619
+
620
+
621
+
622
+
623
+
624
+
625
+public static function getRawData()
626
+{
627
+return self::$installed;
628
+}
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+
648
+public static function reload($data)
649
+{
650
+self::$installed = $data;
651
+self::$installedByVendor = array();
652
+}
653
+
654
+
655
+
656
+
657
+private static function getInstalled()
658
+{
659
+if (null === self::$canGetVendors) {
660
+self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
661
+}
662
+
663
+$installed = array();
664
+
665
+if (self::$canGetVendors) {
666
+foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
667
+if (isset(self::$installedByVendor[$vendorDir])) {
668
+$installed[] = self::$installedByVendor[$vendorDir];
669
+} elseif (is_file($vendorDir.'/composer/installed.php')) {
670
+$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
671
+}
672
+}
673
+}
674
+
675
+$installed[] = self::$installed;
676
+
677
+return $installed;
678
+}
679
+}

+ 21
- 0
vendor/composer/LICENSE Visa fil

@@ -0,0 +1,21 @@
1
+
2
+Copyright (c) Nils Adermann, Jordi Boggiano
3
+
4
+Permission is hereby granted, free of charge, to any person obtaining a copy
5
+of this software and associated documentation files (the "Software"), to deal
6
+in the Software without restriction, including without limitation the rights
7
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+copies of the Software, and to permit persons to whom the Software is furnished
9
+to do so, subject to the following conditions:
10
+
11
+The above copyright notice and this permission notice shall be included in all
12
+copies or substantial portions of the Software.
13
+
14
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+THE SOFTWARE.
21
+

+ 456
- 0
vendor/composer/autoload_classmap.php Visa fil

@@ -0,0 +1,456 @@
1
+<?php
2
+
3
+// autoload_classmap.php @generated by Composer
4
+
5
+$vendorDir = dirname(dirname(__FILE__));
6
+$baseDir = dirname($vendorDir);
7
+
8
+return array(
9
+    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
+    'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
11
+    'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
12
+    'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
13
+    'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
14
+    'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
15
+    'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
16
+    'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
17
+    'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
18
+    'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
19
+    'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
20
+    'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
21
+    'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
22
+    'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
23
+    'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
24
+    'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
25
+    'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
26
+    'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php',
27
+    'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
28
+    'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
29
+    'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
30
+    'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
31
+    'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php',
32
+    'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php',
33
+    'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
34
+    'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
35
+    'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
36
+    'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
37
+    'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
38
+    'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
39
+    'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
40
+    'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
41
+    'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
42
+    'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
43
+    'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
44
+    'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
45
+    'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
46
+    'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
47
+    'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
48
+    'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
49
+    'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
50
+    'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
51
+    'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
52
+    'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
53
+    'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
54
+    'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
55
+    'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
56
+    'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
57
+    'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
58
+    'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
59
+    'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
60
+    'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
61
+    'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
62
+    'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
63
+    'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
64
+    'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
65
+    'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
66
+    'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
67
+    'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
68
+    'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
69
+    'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
70
+    'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
71
+    'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
72
+    'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php',
73
+    'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
74
+    'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
75
+    'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
76
+    'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
77
+    'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
78
+    'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
79
+    'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
80
+    'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
81
+    'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
82
+    'PHPUnit_Framework_InvalidCoversTargetError' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php',
83
+    'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
84
+    'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
85
+    'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
86
+    'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
87
+    'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
88
+    'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
89
+    'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
90
+    'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
91
+    'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
92
+    'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
93
+    'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
94
+    'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
95
+    'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
96
+    'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
97
+    'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
98
+    'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
99
+    'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
100
+    'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
101
+    'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
102
+    'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
103
+    'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
104
+    'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
105
+    'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
106
+    'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
107
+    'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
108
+    'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
109
+    'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
110
+    'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
111
+    'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
112
+    'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
113
+    'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
114
+    'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
115
+    'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
116
+    'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
117
+    'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
118
+    'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
119
+    'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
120
+    'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
121
+    'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
122
+    'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
123
+    'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
124
+    'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
125
+    'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
126
+    'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
127
+    'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
128
+    'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
129
+    'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
130
+    'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
131
+    'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
132
+    'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
133
+    'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
134
+    'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
135
+    'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
136
+    'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
137
+    'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
138
+    'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
139
+    'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
140
+    'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
141
+    'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
142
+    'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
143
+    'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
144
+    'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
145
+    'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
146
+    'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
147
+    'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php',
148
+    'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
149
+    'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
150
+    'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php',
151
+    'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
152
+    'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
153
+    'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
154
+    'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
155
+    'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
156
+    'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
157
+    'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
158
+    'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
159
+    'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
160
+    'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
161
+    'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
162
+    'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
163
+    'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
164
+    'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
165
+    'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
166
+    'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php',
167
+    'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
168
+    'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php',
169
+    'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php',
170
+    'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php',
171
+    'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php',
172
+    'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
173
+    'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php',
174
+    'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php',
175
+    'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
176
+    'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
177
+    'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
178
+    'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
179
+    'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
180
+    'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
181
+    'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
182
+    'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php',
183
+    'PHP_CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
184
+    'PHP_CodeCoverage_Driver' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php',
185
+    'PHP_CodeCoverage_Driver_HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php',
186
+    'PHP_CodeCoverage_Driver_PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php',
187
+    'PHP_CodeCoverage_Driver_Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php',
188
+    'PHP_CodeCoverage_Exception' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php',
189
+    'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php',
190
+    'PHP_CodeCoverage_Filter' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php',
191
+    'PHP_CodeCoverage_Report_Clover' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php',
192
+    'PHP_CodeCoverage_Report_Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php',
193
+    'PHP_CodeCoverage_Report_Factory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php',
194
+    'PHP_CodeCoverage_Report_HTML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php',
195
+    'PHP_CodeCoverage_Report_HTML_Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php',
196
+    'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php',
197
+    'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php',
198
+    'PHP_CodeCoverage_Report_HTML_Renderer_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php',
199
+    'PHP_CodeCoverage_Report_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php',
200
+    'PHP_CodeCoverage_Report_Node_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php',
201
+    'PHP_CodeCoverage_Report_Node_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php',
202
+    'PHP_CodeCoverage_Report_Node_Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php',
203
+    'PHP_CodeCoverage_Report_PHP' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php',
204
+    'PHP_CodeCoverage_Report_Text' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php',
205
+    'PHP_CodeCoverage_Report_XML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php',
206
+    'PHP_CodeCoverage_Report_XML_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php',
207
+    'PHP_CodeCoverage_Report_XML_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php',
208
+    'PHP_CodeCoverage_Report_XML_File_Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php',
209
+    'PHP_CodeCoverage_Report_XML_File_Method' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php',
210
+    'PHP_CodeCoverage_Report_XML_File_Report' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php',
211
+    'PHP_CodeCoverage_Report_XML_File_Unit' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php',
212
+    'PHP_CodeCoverage_Report_XML_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php',
213
+    'PHP_CodeCoverage_Report_XML_Project' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php',
214
+    'PHP_CodeCoverage_Report_XML_Tests' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php',
215
+    'PHP_CodeCoverage_Report_XML_Totals' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php',
216
+    'PHP_CodeCoverage_Util' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php',
217
+    'PHP_CodeCoverage_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php',
218
+    'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
219
+    'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
220
+    'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
221
+    'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
222
+    'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
223
+    'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
224
+    'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
225
+    'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
226
+    'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
227
+    'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
228
+    'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
229
+    'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
230
+    'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
231
+    'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
232
+    'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
233
+    'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
234
+    'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
235
+    'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
236
+    'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
237
+    'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
238
+    'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
239
+    'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
240
+    'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
241
+    'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
242
+    'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
243
+    'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
244
+    'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
245
+    'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
246
+    'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
247
+    'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
248
+    'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
249
+    'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
250
+    'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
251
+    'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
252
+    'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
253
+    'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
254
+    'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
255
+    'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
256
+    'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
257
+    'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
258
+    'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
259
+    'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
260
+    'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
261
+    'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
262
+    'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
263
+    'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
264
+    'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
265
+    'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
266
+    'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
267
+    'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
268
+    'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
269
+    'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
270
+    'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
271
+    'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
272
+    'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
273
+    'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
274
+    'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
275
+    'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
276
+    'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
277
+    'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
278
+    'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
279
+    'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
280
+    'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
281
+    'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
282
+    'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
283
+    'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
284
+    'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
285
+    'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
286
+    'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
287
+    'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
288
+    'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
289
+    'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
290
+    'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
291
+    'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
292
+    'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
293
+    'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
294
+    'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
295
+    'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
296
+    'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
297
+    'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
298
+    'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
299
+    'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
300
+    'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
301
+    'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
302
+    'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
303
+    'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
304
+    'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
305
+    'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
306
+    'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
307
+    'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
308
+    'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
309
+    'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
310
+    'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
311
+    'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
312
+    'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
313
+    'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
314
+    'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
315
+    'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
316
+    'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
317
+    'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
318
+    'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
319
+    'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
320
+    'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
321
+    'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
322
+    'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
323
+    'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
324
+    'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
325
+    'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
326
+    'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
327
+    'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
328
+    'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
329
+    'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
330
+    'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
331
+    'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
332
+    'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
333
+    'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
334
+    'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
335
+    'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
336
+    'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
337
+    'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
338
+    'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
339
+    'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
340
+    'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
341
+    'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
342
+    'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
343
+    'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
344
+    'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
345
+    'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
346
+    'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
347
+    'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
348
+    'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
349
+    'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
350
+    'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
351
+    'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
352
+    'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
353
+    'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
354
+    'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
355
+    'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
356
+    'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
357
+    'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
358
+    'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
359
+    'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
360
+    'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
361
+    'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
362
+    'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
363
+    'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
364
+    'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
365
+    'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
366
+    'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
367
+    'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
368
+    'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
369
+    'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
370
+    'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
371
+    'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
372
+    'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
373
+    'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
374
+    'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
375
+    'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
376
+    'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
377
+    'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
378
+    'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
379
+    'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
380
+    'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
381
+    'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
382
+    'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
383
+    'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
384
+    'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
385
+    'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
386
+    'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
387
+    'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php',
388
+    'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
389
+    'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
390
+    'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
391
+    'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
392
+    'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
393
+    'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
394
+    'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
395
+    'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
396
+    'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
397
+    'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
398
+    'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
399
+    'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
400
+    'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
401
+    'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
402
+    'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
403
+    'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
404
+    'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
405
+    'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
406
+    'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
407
+    'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
408
+    'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
409
+    'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
410
+    'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
411
+    'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
412
+    'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
413
+    'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
414
+    'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
415
+    'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
416
+    'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
417
+    'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
418
+    'PclZip' => $vendorDir . '/pclzip/pclzip/pclzip.lib.php',
419
+    'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
420
+    'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
421
+    'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
422
+    'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
423
+    'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
424
+    'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
425
+    'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
426
+    'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
427
+    'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
428
+    'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
429
+    'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
430
+    'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
431
+    'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
432
+    'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
433
+    'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
434
+    'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
435
+    'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
436
+    'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
437
+    'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
438
+    'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
439
+    'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
440
+    'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
441
+    'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
442
+    'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
443
+    'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
444
+    'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
445
+    'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
446
+    'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
447
+    'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php',
448
+    'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
449
+    'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php',
450
+    'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
451
+    'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
452
+    'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
453
+    'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
454
+    'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
455
+    'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
456
+);

+ 73
- 0
vendor/composer/autoload_files.php Visa fil

@@ -0,0 +1,73 @@
1
+<?php
2
+
3
+// autoload_files.php @generated by Composer
4
+
5
+$vendorDir = dirname(dirname(__FILE__));
6
+$baseDir = dirname($vendorDir);
7
+
8
+return array(
9
+    '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
10
+    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
11
+    '9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php',
12
+    'abede361264e2ae69ec1eee813a101af' => $vendorDir . '/markbaker/complex/classes/src/functions/abs.php',
13
+    '21a5860fbef5be28db5ddfbc3cca67c4' => $vendorDir . '/markbaker/complex/classes/src/functions/acos.php',
14
+    '1546e3f9d127f2a9bb2d1b6c31c26ef1' => $vendorDir . '/markbaker/complex/classes/src/functions/acosh.php',
15
+    'd2516f7f4fba5ea5905f494b4a8262e0' => $vendorDir . '/markbaker/complex/classes/src/functions/acot.php',
16
+    '4511163d560956219b96882c0980b65e' => $vendorDir . '/markbaker/complex/classes/src/functions/acoth.php',
17
+    'c361f5616dc2a8da4fa3e137077cd4ea' => $vendorDir . '/markbaker/complex/classes/src/functions/acsc.php',
18
+    '02d68920fc98da71991ce569c91df0f6' => $vendorDir . '/markbaker/complex/classes/src/functions/acsch.php',
19
+    '88e19525eae308b4a6aa3419364875d3' => $vendorDir . '/markbaker/complex/classes/src/functions/argument.php',
20
+    '60e8e2d0827b58bfc904f13957e51849' => $vendorDir . '/markbaker/complex/classes/src/functions/asec.php',
21
+    '13d2f040713999eab66c359b4d79871d' => $vendorDir . '/markbaker/complex/classes/src/functions/asech.php',
22
+    '838ab38beb32c68a79d3cd2c007d5a04' => $vendorDir . '/markbaker/complex/classes/src/functions/asin.php',
23
+    'bb28eccd0f8f008333a1b3c163d604ac' => $vendorDir . '/markbaker/complex/classes/src/functions/asinh.php',
24
+    '9e483de83558c98f7d3feaa402c78cb3' => $vendorDir . '/markbaker/complex/classes/src/functions/atan.php',
25
+    '36b74b5b765ded91ee58c8ee3c0e85e3' => $vendorDir . '/markbaker/complex/classes/src/functions/atanh.php',
26
+    '05c15ee9510da7fd6bf6136f436500c0' => $vendorDir . '/markbaker/complex/classes/src/functions/conjugate.php',
27
+    'd3208dfbce2505e370788f9f22f6785f' => $vendorDir . '/markbaker/complex/classes/src/functions/cos.php',
28
+    '141cf1fb3a3046f8b64534b0ebab33ca' => $vendorDir . '/markbaker/complex/classes/src/functions/cosh.php',
29
+    'be660df75fd0dbe7fa7c03b7434b3294' => $vendorDir . '/markbaker/complex/classes/src/functions/cot.php',
30
+    '01e31ea298a51bc9e91517e3ce6b9e76' => $vendorDir . '/markbaker/complex/classes/src/functions/coth.php',
31
+    '803ddd97f7b1da68982a7b087c3476f6' => $vendorDir . '/markbaker/complex/classes/src/functions/csc.php',
32
+    '3001cdfd101ec3c32da34ee43c2e149b' => $vendorDir . '/markbaker/complex/classes/src/functions/csch.php',
33
+    '77b2d7629ef2a93fabb8c56754a91051' => $vendorDir . '/markbaker/complex/classes/src/functions/exp.php',
34
+    '4a4471296dec796c21d4f4b6552396a9' => $vendorDir . '/markbaker/complex/classes/src/functions/inverse.php',
35
+    'c3e9897e1744b88deb56fcdc39d34d85' => $vendorDir . '/markbaker/complex/classes/src/functions/ln.php',
36
+    'a83cacf2de942cff288de15a83afd26d' => $vendorDir . '/markbaker/complex/classes/src/functions/log2.php',
37
+    '6a861dacc9ee2f3061241d4c7772fa21' => $vendorDir . '/markbaker/complex/classes/src/functions/log10.php',
38
+    '4d2522d968c8ba78d6c13548a1b4200e' => $vendorDir . '/markbaker/complex/classes/src/functions/negative.php',
39
+    'fd587ca933fc0447fa5ab4843bdd97f7' => $vendorDir . '/markbaker/complex/classes/src/functions/pow.php',
40
+    '383ef01c62028fc78cd4388082fce3c2' => $vendorDir . '/markbaker/complex/classes/src/functions/rho.php',
41
+    '150fbd1b95029dc47292da97ecab9375' => $vendorDir . '/markbaker/complex/classes/src/functions/sec.php',
42
+    '549abd9bae174286d660bdaa07407c68' => $vendorDir . '/markbaker/complex/classes/src/functions/sech.php',
43
+    '6bfbf5eaea6b17a0ed85cb21ba80370c' => $vendorDir . '/markbaker/complex/classes/src/functions/sin.php',
44
+    '22efe13f1a497b8e199540ae2d9dc59c' => $vendorDir . '/markbaker/complex/classes/src/functions/sinh.php',
45
+    'e90135ab8e787795a509ed7147de207d' => $vendorDir . '/markbaker/complex/classes/src/functions/sqrt.php',
46
+    'bb0a7923ffc6a90919cd64ec54ff06bc' => $vendorDir . '/markbaker/complex/classes/src/functions/tan.php',
47
+    '2d302f32ce0fd4e433dd91c5bb404a28' => $vendorDir . '/markbaker/complex/classes/src/functions/tanh.php',
48
+    '24dd4658a952171a4ee79218c4f9fd06' => $vendorDir . '/markbaker/complex/classes/src/functions/theta.php',
49
+    'e49b7876281d6f5bc39536dde96d1f4a' => $vendorDir . '/markbaker/complex/classes/src/operations/add.php',
50
+    '47596e02b43cd6da7700134fd08f88cf' => $vendorDir . '/markbaker/complex/classes/src/operations/subtract.php',
51
+    '883af48563631547925fa4c3b48ead07' => $vendorDir . '/markbaker/complex/classes/src/operations/multiply.php',
52
+    'f190e3308e6ca23234a2875edc985c03' => $vendorDir . '/markbaker/complex/classes/src/operations/divideby.php',
53
+    'ac9e33ce6841aa5bf5d16d465a2f03a7' => $vendorDir . '/markbaker/complex/classes/src/operations/divideinto.php',
54
+    '3af723442581d6c310bf44543f9f5c60' => $vendorDir . '/markbaker/matrix/classes/src/Functions/adjoint.php',
55
+    'd803221834c8b57fec95debb5406a797' => $vendorDir . '/markbaker/matrix/classes/src/Functions/antidiagonal.php',
56
+    '4714cafbd3be4c72c274a25eae9396bb' => $vendorDir . '/markbaker/matrix/classes/src/Functions/cofactors.php',
57
+    '89719dc7c77436609d1c1c31f0797b8f' => $vendorDir . '/markbaker/matrix/classes/src/Functions/determinant.php',
58
+    'c28af79ec7730859d83f2d4310b8dd0b' => $vendorDir . '/markbaker/matrix/classes/src/Functions/diagonal.php',
59
+    'c5d82bf1ac485e445f911e55789ab4e6' => $vendorDir . '/markbaker/matrix/classes/src/Functions/identity.php',
60
+    '0d2d594de24a247f7a33499e933aa21e' => $vendorDir . '/markbaker/matrix/classes/src/Functions/inverse.php',
61
+    'f37c25880804a014ef40c8bffbab1b10' => $vendorDir . '/markbaker/matrix/classes/src/Functions/minors.php',
62
+    'd6e4e42171df0dbea253b3067fefda38' => $vendorDir . '/markbaker/matrix/classes/src/Functions/trace.php',
63
+    '2c9b19fa954fd3e6fcc7e7a1383caddd' => $vendorDir . '/markbaker/matrix/classes/src/Functions/transpose.php',
64
+    '0a538fc9b897450ec362480ebbebe94f' => $vendorDir . '/markbaker/matrix/classes/src/Operations/add.php',
65
+    'f0843f7f4089ec2343c7445544356385' => $vendorDir . '/markbaker/matrix/classes/src/Operations/directsum.php',
66
+    'ad3e8c29aa16d134661a414265677b61' => $vendorDir . '/markbaker/matrix/classes/src/Operations/subtract.php',
67
+    '8d37dad4703fab45bfec9dd0bbf3278e' => $vendorDir . '/markbaker/matrix/classes/src/Operations/multiply.php',
68
+    '4888a6f58c08148ebe17682f9ce9b2a8' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideby.php',
69
+    'eef6fa3879d3efa347cd24d5eb348f85' => $vendorDir . '/markbaker/matrix/classes/src/Operations/divideinto.php',
70
+    'ddc3cd2a04224f9638c5d0de6a69c7e3' => $vendorDir . '/topthink/think-migration/src/config.php',
71
+    'cc56288302d9df745d97c934d6a6e5f0' => $vendorDir . '/topthink/think-queue/src/common.php',
72
+    '72c97b53391125cae04082a81029f42d' => $vendorDir . '/topthink/think-testing/src/config.php',
73
+);

+ 10
- 0
vendor/composer/autoload_namespaces.php Visa fil

@@ -0,0 +1,10 @@
1
+<?php
2
+
3
+// autoload_namespaces.php @generated by Composer
4
+
5
+$vendorDir = dirname(dirname(__FILE__));
6
+$baseDir = dirname($vendorDir);
7
+
8
+return array(
9
+    'PHPExcel' => array($vendorDir . '/phpoffice/phpexcel/Classes'),
10
+);

+ 34
- 0
vendor/composer/autoload_psr4.php Visa fil

@@ -0,0 +1,34 @@
1
+<?php
2
+
3
+// autoload_psr4.php @generated by Composer
4
+
5
+$vendorDir = dirname(dirname(__FILE__));
6
+$baseDir = dirname($vendorDir);
7
+
8
+return array(
9
+    'think\\worker\\' => array($vendorDir . '/topthink/think-worker/src'),
10
+    'think\\testing\\' => array($vendorDir . '/topthink/think-testing/src'),
11
+    'think\\sae\\' => array($vendorDir . '/topthink/think-sae/src'),
12
+    'think\\mongo\\' => array($vendorDir . '/topthink/think-mongo/src'),
13
+    'think\\migration\\' => array($vendorDir . '/topthink/think-migration/src'),
14
+    'think\\helper\\' => array($vendorDir . '/topthink/think-helper/src'),
15
+    'think\\composer\\' => array($vendorDir . '/topthink/think-installer/src'),
16
+    'think\\' => array($baseDir . '/thinkphp/library/think', $vendorDir . '/topthink/think-image/src', $vendorDir . '/topthink/think-queue/src'),
17
+    'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/reflection-docblock/src', $vendorDir . '/phpdocumentor/type-resolver/src'),
18
+    'Zend\\Escaper\\' => array($vendorDir . '/zendframework/zend-escaper/src'),
19
+    'Workerman\\' => array($vendorDir . '/workerman/workerman'),
20
+    'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
21
+    'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
22
+    'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
23
+    'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
24
+    'Symfony\\Component\\DomCrawler\\' => array($vendorDir . '/symfony/dom-crawler'),
25
+    'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
26
+    'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
27
+    'PhpOffice\\PhpWord\\' => array($vendorDir . '/phpoffice/phpword/src/PhpWord'),
28
+    'PhpOffice\\PhpSpreadsheet\\' => array($vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet'),
29
+    'PhpOffice\\Common\\' => array($vendorDir . '/phpoffice/common/src/Common'),
30
+    'Phinx\\' => array($vendorDir . '/topthink/think-migration/phinx/src/Phinx'),
31
+    'Matrix\\' => array($vendorDir . '/markbaker/matrix/classes/src'),
32
+    'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
33
+    'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'),
34
+);

+ 75
- 0
vendor/composer/autoload_real.php Visa fil

@@ -0,0 +1,75 @@
1
+<?php
2
+
3
+// autoload_real.php @generated by Composer
4
+
5
+class ComposerAutoloaderInitc184f419bfb1b5c35adb1bc36e45b15e
6
+{
7
+    private static $loader;
8
+
9
+    public static function loadClassLoader($class)
10
+    {
11
+        if ('Composer\Autoload\ClassLoader' === $class) {
12
+            require __DIR__ . '/ClassLoader.php';
13
+        }
14
+    }
15
+
16
+    /**
17
+     * @return \Composer\Autoload\ClassLoader
18
+     */
19
+    public static function getLoader()
20
+    {
21
+        if (null !== self::$loader) {
22
+            return self::$loader;
23
+        }
24
+
25
+        require __DIR__ . '/platform_check.php';
26
+
27
+        spl_autoload_register(array('ComposerAutoloaderInitc184f419bfb1b5c35adb1bc36e45b15e', 'loadClassLoader'), true, true);
28
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
+        spl_autoload_unregister(array('ComposerAutoloaderInitc184f419bfb1b5c35adb1bc36e45b15e', 'loadClassLoader'));
30
+
31
+        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
+        if ($useStaticLoader) {
33
+            require __DIR__ . '/autoload_static.php';
34
+
35
+            call_user_func(\Composer\Autoload\ComposerStaticInitc184f419bfb1b5c35adb1bc36e45b15e::getInitializer($loader));
36
+        } else {
37
+            $map = require __DIR__ . '/autoload_namespaces.php';
38
+            foreach ($map as $namespace => $path) {
39
+                $loader->set($namespace, $path);
40
+            }
41
+
42
+            $map = require __DIR__ . '/autoload_psr4.php';
43
+            foreach ($map as $namespace => $path) {
44
+                $loader->setPsr4($namespace, $path);
45
+            }
46
+
47
+            $classMap = require __DIR__ . '/autoload_classmap.php';
48
+            if ($classMap) {
49
+                $loader->addClassMap($classMap);
50
+            }
51
+        }
52
+
53
+        $loader->register(true);
54
+
55
+        if ($useStaticLoader) {
56
+            $includeFiles = Composer\Autoload\ComposerStaticInitc184f419bfb1b5c35adb1bc36e45b15e::$files;
57
+        } else {
58
+            $includeFiles = require __DIR__ . '/autoload_files.php';
59
+        }
60
+        foreach ($includeFiles as $fileIdentifier => $file) {
61
+            composerRequirec184f419bfb1b5c35adb1bc36e45b15e($fileIdentifier, $file);
62
+        }
63
+
64
+        return $loader;
65
+    }
66
+}
67
+
68
+function composerRequirec184f419bfb1b5c35adb1bc36e45b15e($fileIdentifier, $file)
69
+{
70
+    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
+        require $file;
72
+
73
+        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
74
+    }
75
+}

+ 708
- 0
vendor/composer/autoload_static.php Visa fil

@@ -0,0 +1,708 @@
1
+<?php
2
+
3
+// autoload_static.php @generated by Composer
4
+
5
+namespace Composer\Autoload;
6
+
7
+class ComposerStaticInitc184f419bfb1b5c35adb1bc36e45b15e
8
+{
9
+    public static $files = array (
10
+        '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
11
+        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
12
+        '9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php',
13
+        'abede361264e2ae69ec1eee813a101af' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/abs.php',
14
+        '21a5860fbef5be28db5ddfbc3cca67c4' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acos.php',
15
+        '1546e3f9d127f2a9bb2d1b6c31c26ef1' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acosh.php',
16
+        'd2516f7f4fba5ea5905f494b4a8262e0' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acot.php',
17
+        '4511163d560956219b96882c0980b65e' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acoth.php',
18
+        'c361f5616dc2a8da4fa3e137077cd4ea' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acsc.php',
19
+        '02d68920fc98da71991ce569c91df0f6' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/acsch.php',
20
+        '88e19525eae308b4a6aa3419364875d3' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/argument.php',
21
+        '60e8e2d0827b58bfc904f13957e51849' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/asec.php',
22
+        '13d2f040713999eab66c359b4d79871d' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/asech.php',
23
+        '838ab38beb32c68a79d3cd2c007d5a04' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/asin.php',
24
+        'bb28eccd0f8f008333a1b3c163d604ac' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/asinh.php',
25
+        '9e483de83558c98f7d3feaa402c78cb3' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/atan.php',
26
+        '36b74b5b765ded91ee58c8ee3c0e85e3' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/atanh.php',
27
+        '05c15ee9510da7fd6bf6136f436500c0' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/conjugate.php',
28
+        'd3208dfbce2505e370788f9f22f6785f' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/cos.php',
29
+        '141cf1fb3a3046f8b64534b0ebab33ca' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/cosh.php',
30
+        'be660df75fd0dbe7fa7c03b7434b3294' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/cot.php',
31
+        '01e31ea298a51bc9e91517e3ce6b9e76' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/coth.php',
32
+        '803ddd97f7b1da68982a7b087c3476f6' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/csc.php',
33
+        '3001cdfd101ec3c32da34ee43c2e149b' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/csch.php',
34
+        '77b2d7629ef2a93fabb8c56754a91051' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/exp.php',
35
+        '4a4471296dec796c21d4f4b6552396a9' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/inverse.php',
36
+        'c3e9897e1744b88deb56fcdc39d34d85' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/ln.php',
37
+        'a83cacf2de942cff288de15a83afd26d' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/log2.php',
38
+        '6a861dacc9ee2f3061241d4c7772fa21' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/log10.php',
39
+        '4d2522d968c8ba78d6c13548a1b4200e' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/negative.php',
40
+        'fd587ca933fc0447fa5ab4843bdd97f7' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/pow.php',
41
+        '383ef01c62028fc78cd4388082fce3c2' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/rho.php',
42
+        '150fbd1b95029dc47292da97ecab9375' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/sec.php',
43
+        '549abd9bae174286d660bdaa07407c68' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/sech.php',
44
+        '6bfbf5eaea6b17a0ed85cb21ba80370c' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/sin.php',
45
+        '22efe13f1a497b8e199540ae2d9dc59c' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/sinh.php',
46
+        'e90135ab8e787795a509ed7147de207d' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/sqrt.php',
47
+        'bb0a7923ffc6a90919cd64ec54ff06bc' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/tan.php',
48
+        '2d302f32ce0fd4e433dd91c5bb404a28' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/tanh.php',
49
+        '24dd4658a952171a4ee79218c4f9fd06' => __DIR__ . '/..' . '/markbaker/complex/classes/src/functions/theta.php',
50
+        'e49b7876281d6f5bc39536dde96d1f4a' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/add.php',
51
+        '47596e02b43cd6da7700134fd08f88cf' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/subtract.php',
52
+        '883af48563631547925fa4c3b48ead07' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/multiply.php',
53
+        'f190e3308e6ca23234a2875edc985c03' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/divideby.php',
54
+        'ac9e33ce6841aa5bf5d16d465a2f03a7' => __DIR__ . '/..' . '/markbaker/complex/classes/src/operations/divideinto.php',
55
+        '3af723442581d6c310bf44543f9f5c60' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/adjoint.php',
56
+        'd803221834c8b57fec95debb5406a797' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/antidiagonal.php',
57
+        '4714cafbd3be4c72c274a25eae9396bb' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/cofactors.php',
58
+        '89719dc7c77436609d1c1c31f0797b8f' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/determinant.php',
59
+        'c28af79ec7730859d83f2d4310b8dd0b' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/diagonal.php',
60
+        'c5d82bf1ac485e445f911e55789ab4e6' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/identity.php',
61
+        '0d2d594de24a247f7a33499e933aa21e' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/inverse.php',
62
+        'f37c25880804a014ef40c8bffbab1b10' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/minors.php',
63
+        'd6e4e42171df0dbea253b3067fefda38' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/trace.php',
64
+        '2c9b19fa954fd3e6fcc7e7a1383caddd' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Functions/transpose.php',
65
+        '0a538fc9b897450ec362480ebbebe94f' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/add.php',
66
+        'f0843f7f4089ec2343c7445544356385' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/directsum.php',
67
+        'ad3e8c29aa16d134661a414265677b61' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/subtract.php',
68
+        '8d37dad4703fab45bfec9dd0bbf3278e' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/multiply.php',
69
+        '4888a6f58c08148ebe17682f9ce9b2a8' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideby.php',
70
+        'eef6fa3879d3efa347cd24d5eb348f85' => __DIR__ . '/..' . '/markbaker/matrix/classes/src/Operations/divideinto.php',
71
+        'ddc3cd2a04224f9638c5d0de6a69c7e3' => __DIR__ . '/..' . '/topthink/think-migration/src/config.php',
72
+        'cc56288302d9df745d97c934d6a6e5f0' => __DIR__ . '/..' . '/topthink/think-queue/src/common.php',
73
+        '72c97b53391125cae04082a81029f42d' => __DIR__ . '/..' . '/topthink/think-testing/src/config.php',
74
+    );
75
+
76
+    public static $prefixLengthsPsr4 = array (
77
+        't' => 
78
+        array (
79
+            'think\\worker\\' => 13,
80
+            'think\\testing\\' => 14,
81
+            'think\\sae\\' => 10,
82
+            'think\\mongo\\' => 12,
83
+            'think\\migration\\' => 16,
84
+            'think\\helper\\' => 13,
85
+            'think\\composer\\' => 15,
86
+            'think\\' => 6,
87
+        ),
88
+        'p' => 
89
+        array (
90
+            'phpDocumentor\\Reflection\\' => 25,
91
+        ),
92
+        'Z' => 
93
+        array (
94
+            'Zend\\Escaper\\' => 13,
95
+        ),
96
+        'W' => 
97
+        array (
98
+            'Workerman\\' => 10,
99
+            'Webmozart\\Assert\\' => 17,
100
+        ),
101
+        'S' => 
102
+        array (
103
+            'Symfony\\Polyfill\\Mbstring\\' => 26,
104
+            'Symfony\\Polyfill\\Ctype\\' => 23,
105
+            'Symfony\\Component\\Yaml\\' => 23,
106
+            'Symfony\\Component\\DomCrawler\\' => 29,
107
+        ),
108
+        'P' => 
109
+        array (
110
+            'Psr\\SimpleCache\\' => 16,
111
+            'Prophecy\\' => 9,
112
+            'PhpOffice\\PhpWord\\' => 18,
113
+            'PhpOffice\\PhpSpreadsheet\\' => 25,
114
+            'PhpOffice\\Common\\' => 17,
115
+            'Phinx\\' => 6,
116
+        ),
117
+        'M' => 
118
+        array (
119
+            'Matrix\\' => 7,
120
+        ),
121
+        'D' => 
122
+        array (
123
+            'Doctrine\\Instantiator\\' => 22,
124
+        ),
125
+        'C' => 
126
+        array (
127
+            'Complex\\' => 8,
128
+        ),
129
+    );
130
+
131
+    public static $prefixDirsPsr4 = array (
132
+        'think\\worker\\' => 
133
+        array (
134
+            0 => __DIR__ . '/..' . '/topthink/think-worker/src',
135
+        ),
136
+        'think\\testing\\' => 
137
+        array (
138
+            0 => __DIR__ . '/..' . '/topthink/think-testing/src',
139
+        ),
140
+        'think\\sae\\' => 
141
+        array (
142
+            0 => __DIR__ . '/..' . '/topthink/think-sae/src',
143
+        ),
144
+        'think\\mongo\\' => 
145
+        array (
146
+            0 => __DIR__ . '/..' . '/topthink/think-mongo/src',
147
+        ),
148
+        'think\\migration\\' => 
149
+        array (
150
+            0 => __DIR__ . '/..' . '/topthink/think-migration/src',
151
+        ),
152
+        'think\\helper\\' => 
153
+        array (
154
+            0 => __DIR__ . '/..' . '/topthink/think-helper/src',
155
+        ),
156
+        'think\\composer\\' => 
157
+        array (
158
+            0 => __DIR__ . '/..' . '/topthink/think-installer/src',
159
+        ),
160
+        'think\\' => 
161
+        array (
162
+            0 => __DIR__ . '/../..' . '/thinkphp/library/think',
163
+            1 => __DIR__ . '/..' . '/topthink/think-image/src',
164
+            2 => __DIR__ . '/..' . '/topthink/think-queue/src',
165
+        ),
166
+        'phpDocumentor\\Reflection\\' => 
167
+        array (
168
+            0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
169
+            1 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
170
+            2 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
171
+        ),
172
+        'Zend\\Escaper\\' => 
173
+        array (
174
+            0 => __DIR__ . '/..' . '/zendframework/zend-escaper/src',
175
+        ),
176
+        'Workerman\\' => 
177
+        array (
178
+            0 => __DIR__ . '/..' . '/workerman/workerman',
179
+        ),
180
+        'Webmozart\\Assert\\' => 
181
+        array (
182
+            0 => __DIR__ . '/..' . '/webmozart/assert/src',
183
+        ),
184
+        'Symfony\\Polyfill\\Mbstring\\' => 
185
+        array (
186
+            0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
187
+        ),
188
+        'Symfony\\Polyfill\\Ctype\\' => 
189
+        array (
190
+            0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
191
+        ),
192
+        'Symfony\\Component\\Yaml\\' => 
193
+        array (
194
+            0 => __DIR__ . '/..' . '/symfony/yaml',
195
+        ),
196
+        'Symfony\\Component\\DomCrawler\\' => 
197
+        array (
198
+            0 => __DIR__ . '/..' . '/symfony/dom-crawler',
199
+        ),
200
+        'Psr\\SimpleCache\\' => 
201
+        array (
202
+            0 => __DIR__ . '/..' . '/psr/simple-cache/src',
203
+        ),
204
+        'Prophecy\\' => 
205
+        array (
206
+            0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
207
+        ),
208
+        'PhpOffice\\PhpWord\\' => 
209
+        array (
210
+            0 => __DIR__ . '/..' . '/phpoffice/phpword/src/PhpWord',
211
+        ),
212
+        'PhpOffice\\PhpSpreadsheet\\' => 
213
+        array (
214
+            0 => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet',
215
+        ),
216
+        'PhpOffice\\Common\\' => 
217
+        array (
218
+            0 => __DIR__ . '/..' . '/phpoffice/common/src/Common',
219
+        ),
220
+        'Phinx\\' => 
221
+        array (
222
+            0 => __DIR__ . '/..' . '/topthink/think-migration/phinx/src/Phinx',
223
+        ),
224
+        'Matrix\\' => 
225
+        array (
226
+            0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src',
227
+        ),
228
+        'Doctrine\\Instantiator\\' => 
229
+        array (
230
+            0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
231
+        ),
232
+        'Complex\\' => 
233
+        array (
234
+            0 => __DIR__ . '/..' . '/markbaker/complex/classes/src',
235
+        ),
236
+    );
237
+
238
+    public static $prefixesPsr0 = array (
239
+        'P' => 
240
+        array (
241
+            'PHPExcel' => 
242
+            array (
243
+                0 => __DIR__ . '/..' . '/phpoffice/phpexcel/Classes',
244
+            ),
245
+        ),
246
+    );
247
+
248
+    public static $classMap = array (
249
+        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
250
+        'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
251
+        'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
252
+        'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
253
+        'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
254
+        'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
255
+        'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
256
+        'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
257
+        'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
258
+        'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
259
+        'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
260
+        'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
261
+        'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
262
+        'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
263
+        'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
264
+        'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
265
+        'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
266
+        'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php',
267
+        'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
268
+        'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
269
+        'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
270
+        'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
271
+        'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php',
272
+        'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php',
273
+        'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
274
+        'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
275
+        'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
276
+        'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
277
+        'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
278
+        'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
279
+        'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
280
+        'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
281
+        'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
282
+        'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
283
+        'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
284
+        'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
285
+        'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
286
+        'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
287
+        'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
288
+        'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
289
+        'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
290
+        'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
291
+        'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
292
+        'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
293
+        'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
294
+        'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
295
+        'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
296
+        'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
297
+        'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
298
+        'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
299
+        'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
300
+        'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
301
+        'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
302
+        'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
303
+        'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
304
+        'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
305
+        'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
306
+        'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
307
+        'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
308
+        'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
309
+        'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
310
+        'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
311
+        'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
312
+        'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php',
313
+        'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
314
+        'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
315
+        'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
316
+        'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
317
+        'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
318
+        'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
319
+        'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
320
+        'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
321
+        'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
322
+        'PHPUnit_Framework_InvalidCoversTargetError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php',
323
+        'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
324
+        'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
325
+        'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
326
+        'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
327
+        'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
328
+        'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
329
+        'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
330
+        'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
331
+        'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
332
+        'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
333
+        'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
334
+        'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
335
+        'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
336
+        'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
337
+        'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
338
+        'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
339
+        'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
340
+        'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
341
+        'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
342
+        'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
343
+        'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
344
+        'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
345
+        'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
346
+        'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
347
+        'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
348
+        'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
349
+        'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
350
+        'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
351
+        'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
352
+        'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
353
+        'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
354
+        'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
355
+        'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
356
+        'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
357
+        'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
358
+        'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
359
+        'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
360
+        'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
361
+        'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
362
+        'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
363
+        'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
364
+        'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
365
+        'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
366
+        'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
367
+        'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
368
+        'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
369
+        'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
370
+        'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
371
+        'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
372
+        'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
373
+        'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
374
+        'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
375
+        'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
376
+        'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
377
+        'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
378
+        'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
379
+        'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
380
+        'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
381
+        'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
382
+        'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
383
+        'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
384
+        'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
385
+        'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
386
+        'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
387
+        'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php',
388
+        'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
389
+        'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
390
+        'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php',
391
+        'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
392
+        'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
393
+        'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
394
+        'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
395
+        'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
396
+        'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
397
+        'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
398
+        'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
399
+        'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
400
+        'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
401
+        'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
402
+        'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
403
+        'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
404
+        'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
405
+        'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
406
+        'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php',
407
+        'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
408
+        'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php',
409
+        'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php',
410
+        'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php',
411
+        'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php',
412
+        'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
413
+        'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php',
414
+        'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php',
415
+        'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
416
+        'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
417
+        'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
418
+        'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
419
+        'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
420
+        'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
421
+        'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
422
+        'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php',
423
+        'PHP_CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
424
+        'PHP_CodeCoverage_Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php',
425
+        'PHP_CodeCoverage_Driver_HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php',
426
+        'PHP_CodeCoverage_Driver_PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php',
427
+        'PHP_CodeCoverage_Driver_Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php',
428
+        'PHP_CodeCoverage_Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php',
429
+        'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php',
430
+        'PHP_CodeCoverage_Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php',
431
+        'PHP_CodeCoverage_Report_Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php',
432
+        'PHP_CodeCoverage_Report_Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php',
433
+        'PHP_CodeCoverage_Report_Factory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php',
434
+        'PHP_CodeCoverage_Report_HTML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php',
435
+        'PHP_CodeCoverage_Report_HTML_Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php',
436
+        'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php',
437
+        'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php',
438
+        'PHP_CodeCoverage_Report_HTML_Renderer_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php',
439
+        'PHP_CodeCoverage_Report_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php',
440
+        'PHP_CodeCoverage_Report_Node_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php',
441
+        'PHP_CodeCoverage_Report_Node_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php',
442
+        'PHP_CodeCoverage_Report_Node_Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php',
443
+        'PHP_CodeCoverage_Report_PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php',
444
+        'PHP_CodeCoverage_Report_Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php',
445
+        'PHP_CodeCoverage_Report_XML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php',
446
+        'PHP_CodeCoverage_Report_XML_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php',
447
+        'PHP_CodeCoverage_Report_XML_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php',
448
+        'PHP_CodeCoverage_Report_XML_File_Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php',
449
+        'PHP_CodeCoverage_Report_XML_File_Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php',
450
+        'PHP_CodeCoverage_Report_XML_File_Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php',
451
+        'PHP_CodeCoverage_Report_XML_File_Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php',
452
+        'PHP_CodeCoverage_Report_XML_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php',
453
+        'PHP_CodeCoverage_Report_XML_Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php',
454
+        'PHP_CodeCoverage_Report_XML_Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php',
455
+        'PHP_CodeCoverage_Report_XML_Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php',
456
+        'PHP_CodeCoverage_Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php',
457
+        'PHP_CodeCoverage_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php',
458
+        'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
459
+        'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
460
+        'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
461
+        'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
462
+        'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
463
+        'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
464
+        'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
465
+        'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
466
+        'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
467
+        'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
468
+        'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
469
+        'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
470
+        'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
471
+        'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
472
+        'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
473
+        'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
474
+        'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
475
+        'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
476
+        'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
477
+        'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
478
+        'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
479
+        'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
480
+        'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
481
+        'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
482
+        'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
483
+        'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
484
+        'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
485
+        'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
486
+        'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
487
+        'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
488
+        'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
489
+        'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
490
+        'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
491
+        'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
492
+        'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
493
+        'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
494
+        'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
495
+        'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
496
+        'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
497
+        'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
498
+        'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
499
+        'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
500
+        'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
501
+        'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
502
+        'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
503
+        'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
504
+        'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
505
+        'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
506
+        'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
507
+        'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
508
+        'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
509
+        'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
510
+        'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
511
+        'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
512
+        'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
513
+        'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
514
+        'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
515
+        'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
516
+        'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
517
+        'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
518
+        'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
519
+        'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
520
+        'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
521
+        'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
522
+        'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
523
+        'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
524
+        'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
525
+        'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
526
+        'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
527
+        'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
528
+        'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
529
+        'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
530
+        'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
531
+        'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
532
+        'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
533
+        'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
534
+        'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
535
+        'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
536
+        'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
537
+        'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
538
+        'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
539
+        'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
540
+        'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
541
+        'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
542
+        'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
543
+        'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
544
+        'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
545
+        'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
546
+        'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
547
+        'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
548
+        'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
549
+        'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
550
+        'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
551
+        'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
552
+        'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
553
+        'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
554
+        'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
555
+        'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
556
+        'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
557
+        'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
558
+        'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
559
+        'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
560
+        'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
561
+        'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
562
+        'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
563
+        'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
564
+        'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
565
+        'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
566
+        'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
567
+        'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
568
+        'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
569
+        'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
570
+        'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
571
+        'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
572
+        'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
573
+        'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
574
+        'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
575
+        'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
576
+        'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
577
+        'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
578
+        'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
579
+        'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
580
+        'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
581
+        'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
582
+        'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
583
+        'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
584
+        'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
585
+        'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
586
+        'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
587
+        'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
588
+        'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
589
+        'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
590
+        'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
591
+        'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
592
+        'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
593
+        'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
594
+        'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
595
+        'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
596
+        'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
597
+        'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
598
+        'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
599
+        'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
600
+        'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
601
+        'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
602
+        'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
603
+        'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
604
+        'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
605
+        'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
606
+        'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
607
+        'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
608
+        'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
609
+        'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
610
+        'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
611
+        'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
612
+        'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
613
+        'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
614
+        'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
615
+        'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
616
+        'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
617
+        'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
618
+        'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
619
+        'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
620
+        'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
621
+        'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
622
+        'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
623
+        'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
624
+        'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
625
+        'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
626
+        'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
627
+        'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php',
628
+        'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
629
+        'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
630
+        'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
631
+        'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
632
+        'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
633
+        'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
634
+        'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
635
+        'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
636
+        'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
637
+        'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
638
+        'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
639
+        'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
640
+        'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
641
+        'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
642
+        'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
643
+        'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
644
+        'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
645
+        'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
646
+        'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
647
+        'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
648
+        'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
649
+        'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
650
+        'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
651
+        'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
652
+        'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
653
+        'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
654
+        'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
655
+        'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
656
+        'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
657
+        'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
658
+        'PclZip' => __DIR__ . '/..' . '/pclzip/pclzip/pclzip.lib.php',
659
+        'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
660
+        'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
661
+        'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
662
+        'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
663
+        'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
664
+        'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
665
+        'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
666
+        'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
667
+        'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
668
+        'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
669
+        'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
670
+        'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
671
+        'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
672
+        'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
673
+        'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
674
+        'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
675
+        'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
676
+        'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
677
+        'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
678
+        'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
679
+        'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
680
+        'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
681
+        'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
682
+        'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
683
+        'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
684
+        'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
685
+        'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
686
+        'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
687
+        'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php',
688
+        'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
689
+        'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php',
690
+        'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
691
+        'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
692
+        'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
693
+        'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
694
+        'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
695
+        'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
696
+    );
697
+
698
+    public static function getInitializer(ClassLoader $loader)
699
+    {
700
+        return \Closure::bind(function () use ($loader) {
701
+            $loader->prefixLengthsPsr4 = ComposerStaticInitc184f419bfb1b5c35adb1bc36e45b15e::$prefixLengthsPsr4;
702
+            $loader->prefixDirsPsr4 = ComposerStaticInitc184f419bfb1b5c35adb1bc36e45b15e::$prefixDirsPsr4;
703
+            $loader->prefixesPsr0 = ComposerStaticInitc184f419bfb1b5c35adb1bc36e45b15e::$prefixesPsr0;
704
+            $loader->classMap = ComposerStaticInitc184f419bfb1b5c35adb1bc36e45b15e::$classMap;
705
+
706
+        }, null, ClassLoader::class);
707
+    }
708
+}

+ 2653
- 0
vendor/composer/installed.json
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 420
- 0
vendor/composer/installed.php Visa fil

@@ -0,0 +1,420 @@
1
+<?php return array (
2
+  'root' => 
3
+  array (
4
+    'pretty_version' => 'dev-master',
5
+    'version' => 'dev-master',
6
+    'aliases' => 
7
+    array (
8
+    ),
9
+    'reference' => '7088f600d8002ab34d9457e48bfdaf2050cebf68',
10
+    'name' => 'topthink/think',
11
+  ),
12
+  'versions' => 
13
+  array (
14
+    'doctrine/instantiator' => 
15
+    array (
16
+      'pretty_version' => '1.4.0',
17
+      'version' => '1.4.0.0',
18
+      'aliases' => 
19
+      array (
20
+      ),
21
+      'reference' => 'd56bf6102915de5702778fe20f2de3b2fe570b5b',
22
+    ),
23
+    'markbaker/complex' => 
24
+    array (
25
+      'pretty_version' => '1.5.0',
26
+      'version' => '1.5.0.0',
27
+      'aliases' => 
28
+      array (
29
+      ),
30
+      'reference' => 'c3131244e29c08d44fefb49e0dd35021e9e39dd2',
31
+    ),
32
+    'markbaker/matrix' => 
33
+    array (
34
+      'pretty_version' => '1.2.3',
35
+      'version' => '1.2.3.0',
36
+      'aliases' => 
37
+      array (
38
+      ),
39
+      'reference' => '44bb1ab01811116f01fe216ab37d921dccc6c10d',
40
+    ),
41
+    'pclzip/pclzip' => 
42
+    array (
43
+      'pretty_version' => '2.8.2',
44
+      'version' => '2.8.2.0',
45
+      'aliases' => 
46
+      array (
47
+      ),
48
+      'reference' => '19dd1de9d3f5fc4d7d70175b4c344dee329f45fd',
49
+    ),
50
+    'phpdocumentor/reflection-common' => 
51
+    array (
52
+      'pretty_version' => '2.2.0',
53
+      'version' => '2.2.0.0',
54
+      'aliases' => 
55
+      array (
56
+      ),
57
+      'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
58
+    ),
59
+    'phpdocumentor/reflection-docblock' => 
60
+    array (
61
+      'pretty_version' => '5.2.2',
62
+      'version' => '5.2.2.0',
63
+      'aliases' => 
64
+      array (
65
+      ),
66
+      'reference' => '069a785b2141f5bcf49f3e353548dc1cce6df556',
67
+    ),
68
+    'phpdocumentor/type-resolver' => 
69
+    array (
70
+      'pretty_version' => '1.4.0',
71
+      'version' => '1.4.0.0',
72
+      'aliases' => 
73
+      array (
74
+      ),
75
+      'reference' => '6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0',
76
+    ),
77
+    'phpoffice/common' => 
78
+    array (
79
+      'pretty_version' => '0.2.9',
80
+      'version' => '0.2.9.0',
81
+      'aliases' => 
82
+      array (
83
+      ),
84
+      'reference' => 'edb5d32b1e3400a35a5c91e2539ed6f6ce925e4d',
85
+    ),
86
+    'phpoffice/phpexcel' => 
87
+    array (
88
+      'pretty_version' => '1.8.0',
89
+      'version' => '1.8.0.0',
90
+      'aliases' => 
91
+      array (
92
+      ),
93
+      'reference' => 'e69a5e4d0ffa7fb6f171859e0a04346e580df30b',
94
+    ),
95
+    'phpoffice/phpspreadsheet' => 
96
+    array (
97
+      'pretty_version' => '1.8.0',
98
+      'version' => '1.8.0.0',
99
+      'aliases' => 
100
+      array (
101
+      ),
102
+      'reference' => '0e6238c69e863b58aeece61e48ea032696c6dccd',
103
+    ),
104
+    'phpoffice/phpword' => 
105
+    array (
106
+      'pretty_version' => '0.17.0',
107
+      'version' => '0.17.0.0',
108
+      'aliases' => 
109
+      array (
110
+      ),
111
+      'reference' => 'b8346af548d399acd9e30fc76ab0c55c2fec03a5',
112
+    ),
113
+    'phpspec/prophecy' => 
114
+    array (
115
+      'pretty_version' => 'v1.10.3',
116
+      'version' => '1.10.3.0',
117
+      'aliases' => 
118
+      array (
119
+      ),
120
+      'reference' => '451c3cd1418cf640de218914901e51b064abb093',
121
+    ),
122
+    'phpunit/php-code-coverage' => 
123
+    array (
124
+      'pretty_version' => '2.2.4',
125
+      'version' => '2.2.4.0',
126
+      'aliases' => 
127
+      array (
128
+      ),
129
+      'reference' => 'eabf68b476ac7d0f73793aada060f1c1a9bf8979',
130
+    ),
131
+    'phpunit/php-file-iterator' => 
132
+    array (
133
+      'pretty_version' => '1.4.5',
134
+      'version' => '1.4.5.0',
135
+      'aliases' => 
136
+      array (
137
+      ),
138
+      'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4',
139
+    ),
140
+    'phpunit/php-text-template' => 
141
+    array (
142
+      'pretty_version' => '1.2.1',
143
+      'version' => '1.2.1.0',
144
+      'aliases' => 
145
+      array (
146
+      ),
147
+      'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
148
+    ),
149
+    'phpunit/php-timer' => 
150
+    array (
151
+      'pretty_version' => '1.0.9',
152
+      'version' => '1.0.9.0',
153
+      'aliases' => 
154
+      array (
155
+      ),
156
+      'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f',
157
+    ),
158
+    'phpunit/php-token-stream' => 
159
+    array (
160
+      'pretty_version' => '1.4.12',
161
+      'version' => '1.4.12.0',
162
+      'aliases' => 
163
+      array (
164
+      ),
165
+      'reference' => '1ce90ba27c42e4e44e6d8458241466380b51fa16',
166
+    ),
167
+    'phpunit/phpunit' => 
168
+    array (
169
+      'pretty_version' => '4.8.36',
170
+      'version' => '4.8.36.0',
171
+      'aliases' => 
172
+      array (
173
+      ),
174
+      'reference' => '46023de9a91eec7dfb06cc56cb4e260017298517',
175
+    ),
176
+    'phpunit/phpunit-mock-objects' => 
177
+    array (
178
+      'pretty_version' => '2.3.8',
179
+      'version' => '2.3.8.0',
180
+      'aliases' => 
181
+      array (
182
+      ),
183
+      'reference' => 'ac8e7a3db35738d56ee9a76e78a4e03d97628983',
184
+    ),
185
+    'psr/simple-cache' => 
186
+    array (
187
+      'pretty_version' => '1.0.1',
188
+      'version' => '1.0.1.0',
189
+      'aliases' => 
190
+      array (
191
+      ),
192
+      'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
193
+    ),
194
+    'sebastian/comparator' => 
195
+    array (
196
+      'pretty_version' => '1.2.4',
197
+      'version' => '1.2.4.0',
198
+      'aliases' => 
199
+      array (
200
+      ),
201
+      'reference' => '2b7424b55f5047b47ac6e5ccb20b2aea4011d9be',
202
+    ),
203
+    'sebastian/diff' => 
204
+    array (
205
+      'pretty_version' => '1.4.3',
206
+      'version' => '1.4.3.0',
207
+      'aliases' => 
208
+      array (
209
+      ),
210
+      'reference' => '7f066a26a962dbe58ddea9f72a4e82874a3975a4',
211
+    ),
212
+    'sebastian/environment' => 
213
+    array (
214
+      'pretty_version' => '1.3.8',
215
+      'version' => '1.3.8.0',
216
+      'aliases' => 
217
+      array (
218
+      ),
219
+      'reference' => 'be2c607e43ce4c89ecd60e75c6a85c126e754aea',
220
+    ),
221
+    'sebastian/exporter' => 
222
+    array (
223
+      'pretty_version' => '1.2.2',
224
+      'version' => '1.2.2.0',
225
+      'aliases' => 
226
+      array (
227
+      ),
228
+      'reference' => '42c4c2eec485ee3e159ec9884f95b431287edde4',
229
+    ),
230
+    'sebastian/global-state' => 
231
+    array (
232
+      'pretty_version' => '1.1.1',
233
+      'version' => '1.1.1.0',
234
+      'aliases' => 
235
+      array (
236
+      ),
237
+      'reference' => 'bc37d50fea7d017d3d340f230811c9f1d7280af4',
238
+    ),
239
+    'sebastian/recursion-context' => 
240
+    array (
241
+      'pretty_version' => '1.0.5',
242
+      'version' => '1.0.5.0',
243
+      'aliases' => 
244
+      array (
245
+      ),
246
+      'reference' => 'b19cc3298482a335a95f3016d2f8a6950f0fbcd7',
247
+    ),
248
+    'sebastian/version' => 
249
+    array (
250
+      'pretty_version' => '1.0.6',
251
+      'version' => '1.0.6.0',
252
+      'aliases' => 
253
+      array (
254
+      ),
255
+      'reference' => '58b3a85e7999757d6ad81c787a1fbf5ff6c628c6',
256
+    ),
257
+    'symfony/dom-crawler' => 
258
+    array (
259
+      'pretty_version' => 'v2.8.52',
260
+      'version' => '2.8.52.0',
261
+      'aliases' => 
262
+      array (
263
+      ),
264
+      'reference' => '2cdc7d3909eea6f982a6298d2e9ab7db01b6403c',
265
+    ),
266
+    'symfony/polyfill-ctype' => 
267
+    array (
268
+      'pretty_version' => 'v1.22.1',
269
+      'version' => '1.22.1.0',
270
+      'aliases' => 
271
+      array (
272
+      ),
273
+      'reference' => 'c6c942b1ac76c82448322025e084cadc56048b4e',
274
+    ),
275
+    'symfony/polyfill-mbstring' => 
276
+    array (
277
+      'pretty_version' => 'v1.22.1',
278
+      'version' => '1.22.1.0',
279
+      'aliases' => 
280
+      array (
281
+      ),
282
+      'reference' => '5232de97ee3b75b0360528dae24e73db49566ab1',
283
+    ),
284
+    'symfony/yaml' => 
285
+    array (
286
+      'pretty_version' => 'v3.4.47',
287
+      'version' => '3.4.47.0',
288
+      'aliases' => 
289
+      array (
290
+      ),
291
+      'reference' => '88289caa3c166321883f67fe5130188ebbb47094',
292
+    ),
293
+    'topthink/framework' => 
294
+    array (
295
+      'pretty_version' => 'v5.0.24',
296
+      'version' => '5.0.24.0',
297
+      'aliases' => 
298
+      array (
299
+      ),
300
+      'reference' => 'c255c22b2f5fa30f320ecf6c1d29f7740eb3e8be',
301
+    ),
302
+    'topthink/think' => 
303
+    array (
304
+      'pretty_version' => 'dev-master',
305
+      'version' => 'dev-master',
306
+      'aliases' => 
307
+      array (
308
+      ),
309
+      'reference' => '7088f600d8002ab34d9457e48bfdaf2050cebf68',
310
+    ),
311
+    'topthink/think-helper' => 
312
+    array (
313
+      'pretty_version' => 'v1.0.7',
314
+      'version' => '1.0.7.0',
315
+      'aliases' => 
316
+      array (
317
+      ),
318
+      'reference' => '5f92178606c8ce131d36b37a57c58eb71e55f019',
319
+    ),
320
+    'topthink/think-image' => 
321
+    array (
322
+      'pretty_version' => 'v1.0.7',
323
+      'version' => '1.0.7.0',
324
+      'aliases' => 
325
+      array (
326
+      ),
327
+      'reference' => '8586cf47f117481c6d415b20f7dedf62e79d5512',
328
+    ),
329
+    'topthink/think-installer' => 
330
+    array (
331
+      'pretty_version' => 'v1.0.14',
332
+      'version' => '1.0.14.0',
333
+      'aliases' => 
334
+      array (
335
+      ),
336
+      'reference' => 'eae1740ac264a55c06134b6685dfb9f837d004d1',
337
+    ),
338
+    'topthink/think-migration' => 
339
+    array (
340
+      'pretty_version' => 'v1.1.1',
341
+      'version' => '1.1.1.0',
342
+      'aliases' => 
343
+      array (
344
+      ),
345
+      'reference' => '8e489f8d38a39876690c0e00fcf9a54ae92c4d3d',
346
+    ),
347
+    'topthink/think-mongo' => 
348
+    array (
349
+      'pretty_version' => 'v1.8.5',
350
+      'version' => '1.8.5.0',
351
+      'aliases' => 
352
+      array (
353
+      ),
354
+      'reference' => '657cc79bd5f090a58b0cc83776073dd69c83a3d1',
355
+    ),
356
+    'topthink/think-queue' => 
357
+    array (
358
+      'pretty_version' => 'v1.1.6',
359
+      'version' => '1.1.6.0',
360
+      'aliases' => 
361
+      array (
362
+      ),
363
+      'reference' => '250650eb0e8ea5af4cfdc7ae46f3f4e0a24ac245',
364
+    ),
365
+    'topthink/think-sae' => 
366
+    array (
367
+      'pretty_version' => 'v1.1',
368
+      'version' => '1.1.0.0',
369
+      'aliases' => 
370
+      array (
371
+      ),
372
+      'reference' => 'e31ee4ec073c0ffc5dbc7292f8268661e5265091',
373
+    ),
374
+    'topthink/think-testing' => 
375
+    array (
376
+      'pretty_version' => 'v1.0.6',
377
+      'version' => '1.0.6.0',
378
+      'aliases' => 
379
+      array (
380
+      ),
381
+      'reference' => 'e89794e5c58aa5587f7b08038e9468150870b185',
382
+    ),
383
+    'topthink/think-worker' => 
384
+    array (
385
+      'pretty_version' => 'v1.0.0',
386
+      'version' => '1.0.0.0',
387
+      'aliases' => 
388
+      array (
389
+      ),
390
+      'reference' => 'f48ca8e5d8324aace15cdbf0f3de751397ef803f',
391
+    ),
392
+    'webmozart/assert' => 
393
+    array (
394
+      'pretty_version' => '1.10.0',
395
+      'version' => '1.10.0.0',
396
+      'aliases' => 
397
+      array (
398
+      ),
399
+      'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
400
+    ),
401
+    'workerman/workerman' => 
402
+    array (
403
+      'pretty_version' => 'v3.5.31',
404
+      'version' => '3.5.31.0',
405
+      'aliases' => 
406
+      array (
407
+      ),
408
+      'reference' => 'b73ddc45b3c7299f330923a2bde23ca6e974fd96',
409
+    ),
410
+    'zendframework/zend-escaper' => 
411
+    array (
412
+      'pretty_version' => '2.6.1',
413
+      'version' => '2.6.1.0',
414
+      'aliases' => 
415
+      array (
416
+      ),
417
+      'reference' => '3801caa21b0ca6aca57fa1c42b08d35c395ebd5f',
418
+    ),
419
+  ),
420
+);

+ 26
- 0
vendor/composer/platform_check.php Visa fil

@@ -0,0 +1,26 @@
1
+<?php
2
+
3
+// platform_check.php @generated by Composer
4
+
5
+$issues = array();
6
+
7
+if (!(PHP_VERSION_ID >= 70200)) {
8
+    $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
9
+}
10
+
11
+if ($issues) {
12
+    if (!headers_sent()) {
13
+        header('HTTP/1.1 500 Internal Server Error');
14
+    }
15
+    if (!ini_get('display_errors')) {
16
+        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
+            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
+        } elseif (!headers_sent()) {
19
+            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
+        }
21
+    }
22
+    trigger_error(
23
+        'Composer detected issues in your platform: ' . implode(' ', $issues),
24
+        E_USER_ERROR
25
+    );
26
+}

+ 41
- 0
vendor/doctrine/instantiator/.doctrine-project.json Visa fil

@@ -0,0 +1,41 @@
1
+{
2
+    "active": true,
3
+    "name": "Instantiator",
4
+    "slug": "instantiator",
5
+    "docsSlug": "doctrine-instantiator",
6
+    "codePath": "/src",
7
+    "versions": [
8
+        {
9
+            "name": "1.4",
10
+            "branchName": "master",
11
+            "slug": "latest",
12
+            "upcoming": true
13
+        },
14
+        {
15
+            "name": "1.3",
16
+            "branchName": "1.3.x",
17
+            "slug": "1.3",
18
+            "aliases": [
19
+                "current",
20
+                "stable"
21
+            ],
22
+            "maintained": true,
23
+            "current": true
24
+        },
25
+        {
26
+            "name": "1.2",
27
+            "branchName": "1.2.x",
28
+            "slug": "1.2"
29
+        },
30
+        {
31
+            "name": "1.1",
32
+            "branchName": "1.1.x",
33
+            "slug": "1.1"
34
+        },
35
+        {
36
+            "name": "1.0",
37
+            "branchName": "1.0.x",
38
+            "slug": "1.0"
39
+        }
40
+    ]
41
+}

+ 3
- 0
vendor/doctrine/instantiator/.github/FUNDING.yml Visa fil

@@ -0,0 +1,3 @@
1
+patreon: phpdoctrine
2
+tidelift: packagist/doctrine%2Finstantiator
3
+custom: https://www.doctrine-project.org/sponsorship.html

+ 48
- 0
vendor/doctrine/instantiator/.github/workflows/coding-standards.yml Visa fil

@@ -0,0 +1,48 @@
1
+
2
+name: "Coding Standards"
3
+
4
+on:
5
+  pull_request:
6
+    branches:
7
+      - "*.x"
8
+  push:
9
+    branches:
10
+      - "*.x"
11
+
12
+env:
13
+  COMPOSER_ROOT_VERSION: "1.4"
14
+
15
+jobs:
16
+  coding-standards:
17
+    name: "Coding Standards"
18
+    runs-on: "ubuntu-20.04"
19
+
20
+    strategy:
21
+      matrix:
22
+        php-version:
23
+          - "7.4"
24
+
25
+    steps:
26
+      - name: "Checkout"
27
+        uses: "actions/checkout@v2"
28
+
29
+      - name: "Install PHP"
30
+        uses: "shivammathur/setup-php@v2"
31
+        with:
32
+          coverage: "none"
33
+          php-version: "${{ matrix.php-version }}"
34
+          tools: "cs2pr"
35
+
36
+      - name: "Cache dependencies installed with Composer"
37
+        uses: "actions/cache@v2"
38
+        with:
39
+          path: "~/.composer/cache"
40
+          key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
41
+          restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
42
+
43
+      - name: "Install dependencies with Composer"
44
+        run: "composer install --no-interaction --no-progress"
45
+
46
+      # https://github.com/doctrine/.github/issues/3
47
+      - name: "Run PHP_CodeSniffer"
48
+        run: "vendor/bin/phpcs -q --no-colors --report=checkstyle | cs2pr"

+ 91
- 0
vendor/doctrine/instantiator/.github/workflows/continuous-integration.yml Visa fil

@@ -0,0 +1,91 @@
1
+
2
+name: "Continuous Integration"
3
+
4
+on:
5
+  pull_request:
6
+    branches:
7
+      - "*.x"
8
+  push:
9
+    branches:
10
+      - "*.x"
11
+
12
+env:
13
+  fail-fast: true
14
+  COMPOSER_ROOT_VERSION: "1.4"
15
+
16
+jobs:
17
+  phpunit:
18
+    name: "PHPUnit with SQLite"
19
+    runs-on: "ubuntu-20.04"
20
+
21
+    strategy:
22
+      matrix:
23
+        php-version:
24
+          - "7.1"
25
+          - "7.2"
26
+          - "7.3"
27
+          - "7.4"
28
+          - "8.0"
29
+
30
+    steps:
31
+      - name: "Checkout"
32
+        uses: "actions/checkout@v2"
33
+        with:
34
+          fetch-depth: 2
35
+
36
+      - name: "Install PHP with XDebug"
37
+        uses: "shivammathur/setup-php@v2"
38
+        if: "${{ matrix.php-version == '7.1' }}"
39
+        with:
40
+          php-version: "${{ matrix.php-version }}"
41
+          coverage: "xdebug"
42
+          ini-values: "zend.assertions=1"
43
+
44
+      - name: "Install PHP with PCOV"
45
+        uses: "shivammathur/setup-php@v2"
46
+        if: "${{ matrix.php-version != '7.1' }}"
47
+        with:
48
+          php-version: "${{ matrix.php-version }}"
49
+          coverage: "pcov"
50
+          ini-values: "zend.assertions=1"
51
+
52
+      - name: "Cache dependencies installed with composer"
53
+        uses: "actions/cache@v2"
54
+        with:
55
+          path: "~/.composer/cache"
56
+          key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
57
+          restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
58
+
59
+      - name: "Install dependencies with composer"
60
+        run: "composer update --no-interaction --no-progress"
61
+
62
+      - name: "Run PHPUnit"
63
+        run: "vendor/bin/phpunit --coverage-clover=coverage.xml"
64
+
65
+      - name: "Upload coverage file"
66
+        uses: "actions/upload-artifact@v2"
67
+        with:
68
+          name: "phpunit-${{ matrix.php-version }}.coverage"
69
+          path: "coverage.xml"
70
+
71
+  upload_coverage:
72
+    name: "Upload coverage to Codecov"
73
+    runs-on: "ubuntu-20.04"
74
+    needs:
75
+      - "phpunit"
76
+
77
+    steps:
78
+      - name: "Checkout"
79
+        uses: "actions/checkout@v2"
80
+        with:
81
+          fetch-depth: 2
82
+
83
+      - name: "Download coverage files"
84
+        uses: "actions/download-artifact@v2"
85
+        with:
86
+          path: "reports"
87
+
88
+      - name: "Upload to Codecov"
89
+        uses: "codecov/codecov-action@v1"
90
+        with:
91
+          directory: reports

+ 50
- 0
vendor/doctrine/instantiator/.github/workflows/phpbench.yml Visa fil

@@ -0,0 +1,50 @@
1
+
2
+name: "Performance benchmark"
3
+
4
+on:
5
+  pull_request:
6
+    branches:
7
+      - "*.x"
8
+  push:
9
+    branches:
10
+      - "*.x"
11
+
12
+env:
13
+  fail-fast: true
14
+  COMPOSER_ROOT_VERSION: "1.4"
15
+
16
+jobs:
17
+  phpbench:
18
+    name: "PHPBench"
19
+    runs-on: "ubuntu-20.04"
20
+
21
+    strategy:
22
+      matrix:
23
+        php-version:
24
+          - "7.4"
25
+
26
+    steps:
27
+      - name: "Checkout"
28
+        uses: "actions/checkout@v2"
29
+        with:
30
+          fetch-depth: 2
31
+
32
+      - name: "Install PHP"
33
+        uses: "shivammathur/setup-php@v2"
34
+        with:
35
+          php-version: "${{ matrix.php-version }}"
36
+          coverage: "pcov"
37
+          ini-values: "zend.assertions=1"
38
+
39
+      - name: "Cache dependencies installed with composer"
40
+        uses: "actions/cache@v2"
41
+        with:
42
+          path: "~/.composer/cache"
43
+          key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
44
+          restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
45
+
46
+      - name: "Install dependencies with composer"
47
+        run: "composer update --no-interaction --no-progress"
48
+
49
+      - name: "Run PHPBench"
50
+        run: "php ./vendor/bin/phpbench run --iterations=3 --warmup=1 --report=aggregate"

+ 45
- 0
vendor/doctrine/instantiator/.github/workflows/release-on-milestone-closed.yml Visa fil

@@ -0,0 +1,45 @@
1
+name: "Automatic Releases"
2
+
3
+on:
4
+  milestone:
5
+    types:
6
+      - "closed"
7
+
8
+jobs:
9
+  release:
10
+    name: "Git tag, release & create merge-up PR"
11
+    runs-on: "ubuntu-20.04"
12
+
13
+    steps:
14
+      - name: "Checkout"
15
+        uses: "actions/checkout@v2"
16
+
17
+      - name: "Release"
18
+        uses: "laminas/automatic-releases@v1"
19
+        with:
20
+          command-name: "laminas:automatic-releases:release"
21
+        env:
22
+          "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
23
+          "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
24
+          "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
25
+          "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
26
+
27
+      - name: "Create Merge-Up Pull Request"
28
+        uses: "laminas/automatic-releases@v1"
29
+        with:
30
+          command-name: "laminas:automatic-releases:create-merge-up-pull-request"
31
+        env:
32
+          "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
33
+          "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
34
+          "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
35
+          "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
36
+
37
+      - name: "Create new milestones"
38
+        uses: "laminas/automatic-releases@v1"
39
+        with:
40
+          command-name: "laminas:automatic-releases:create-milestones"
41
+        env:
42
+          "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
43
+          "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
44
+          "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
45
+          "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}

+ 47
- 0
vendor/doctrine/instantiator/.github/workflows/static-analysis.yml Visa fil

@@ -0,0 +1,47 @@
1
+
2
+name: "Static Analysis"
3
+
4
+on:
5
+  pull_request:
6
+    branches:
7
+      - "*.x"
8
+  push:
9
+    branches:
10
+      - "*.x"
11
+
12
+env:
13
+  COMPOSER_ROOT_VERSION: "1.4"
14
+
15
+jobs:
16
+  static-analysis-phpstan:
17
+    name: "Static Analysis with PHPStan"
18
+    runs-on: "ubuntu-20.04"
19
+
20
+    strategy:
21
+      matrix:
22
+        php-version:
23
+          - "7.4"
24
+
25
+    steps:
26
+      - name: "Checkout code"
27
+        uses: "actions/checkout@v2"
28
+
29
+      - name: "Install PHP"
30
+        uses: "shivammathur/setup-php@v2"
31
+        with:
32
+          coverage: "none"
33
+          php-version: "${{ matrix.php-version }}"
34
+          tools: "cs2pr"
35
+
36
+      - name: "Cache dependencies installed with composer"
37
+        uses: "actions/cache@v2"
38
+        with:
39
+          path: "~/.composer/cache"
40
+          key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}"
41
+          restore-keys: "php-${{ matrix.php-version }}-composer-locked-"
42
+
43
+      - name: "Install dependencies with composer"
44
+        run: "composer install --no-interaction --no-progress"
45
+
46
+      - name: "Run a static analysis with phpstan/phpstan"
47
+        run: "vendor/bin/phpstan analyse --error-format=checkstyle | cs2pr"

+ 35
- 0
vendor/doctrine/instantiator/CONTRIBUTING.md Visa fil

@@ -0,0 +1,35 @@
1
+# Contributing
2
+
3
+ * Follow the [Doctrine Coding Standard](https://github.com/doctrine/coding-standard)
4
+ * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
5
+ * Any contribution must provide tests for additional introduced conditions
6
+ * Any un-confirmed issue needs a failing test case before being accepted
7
+ * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
8
+
9
+## Installation
10
+
11
+To install the project and run the tests, you need to clone it first:
12
+
13
+```sh
14
+$ git clone git://github.com/doctrine/instantiator.git
15
+```
16
+
17
+You will then need to run a composer installation:
18
+
19
+```sh
20
+$ cd Instantiator
21
+$ curl -s https://getcomposer.org/installer | php
22
+$ php composer.phar update
23
+```
24
+
25
+## Testing
26
+
27
+The PHPUnit version to be used is the one installed as a dev- dependency via composer:
28
+
29
+```sh
30
+$ ./vendor/bin/phpunit
31
+```
32
+
33
+Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement 
34
+won't be merged.
35
+

+ 19
- 0
vendor/doctrine/instantiator/LICENSE Visa fil

@@ -0,0 +1,19 @@
1
+Copyright (c) 2014 Doctrine Project
2
+
3
+Permission is hereby granted, free of charge, to any person obtaining a copy of
4
+this software and associated documentation files (the "Software"), to deal in
5
+the Software without restriction, including without limitation the rights to
6
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
7
+of the Software, and to permit persons to whom the Software is furnished to do
8
+so, subject to the following conditions:
9
+
10
+The above copyright notice and this permission notice shall be included in all
11
+copies or substantial portions of the Software.
12
+
13
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
+SOFTWARE.

+ 38
- 0
vendor/doctrine/instantiator/README.md Visa fil

@@ -0,0 +1,38 @@
1
+# Instantiator
2
+
3
+This library provides a way of avoiding usage of constructors when instantiating PHP classes.
4
+
5
+[![Build Status](https://travis-ci.org/doctrine/instantiator.svg?branch=master)](https://travis-ci.org/doctrine/instantiator)
6
+[![Code Coverage](https://codecov.io/gh/doctrine/instantiator/branch/master/graph/badge.svg)](https://codecov.io/gh/doctrine/instantiator/branch/master)
7
+[![Dependency Status](https://www.versioneye.com/package/php--doctrine--instantiator/badge.svg)](https://www.versioneye.com/package/php--doctrine--instantiator)
8
+
9
+[![Latest Stable Version](https://poser.pugx.org/doctrine/instantiator/v/stable.png)](https://packagist.org/packages/doctrine/instantiator)
10
+[![Latest Unstable Version](https://poser.pugx.org/doctrine/instantiator/v/unstable.png)](https://packagist.org/packages/doctrine/instantiator)
11
+
12
+## Installation
13
+
14
+The suggested installation method is via [composer](https://getcomposer.org/):
15
+
16
+```sh
17
+php composer.phar require "doctrine/instantiator:~1.0.3"
18
+```
19
+
20
+## Usage
21
+
22
+The instantiator is able to create new instances of any class without using the constructor or any API of the class
23
+itself:
24
+
25
+```php
26
+$instantiator = new \Doctrine\Instantiator\Instantiator();
27
+
28
+$instance = $instantiator->instantiate(\My\ClassName\Here::class);
29
+```
30
+
31
+## Contributing
32
+
33
+Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out!
34
+
35
+## Credits
36
+
37
+This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which
38
+has been donated to the doctrine organization, and which is now deprecated in favour of this package.

+ 42
- 0
vendor/doctrine/instantiator/composer.json Visa fil

@@ -0,0 +1,42 @@
1
+{
2
+    "name":              "doctrine/instantiator",
3
+    "description":       "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
4
+    "type":              "library",
5
+    "license":           "MIT",
6
+    "homepage":          "https://www.doctrine-project.org/projects/instantiator.html",
7
+    "keywords":          [
8
+        "instantiate",
9
+        "constructor"
10
+    ],
11
+    "authors": [
12
+        {
13
+            "name":     "Marco Pivetta",
14
+            "email":    "ocramius@gmail.com",
15
+            "homepage": "https://ocramius.github.io/"
16
+        }
17
+    ],
18
+    "require": {
19
+        "php": "^7.1 || ^8.0"
20
+    },
21
+    "require-dev": {
22
+        "ext-phar":                  "*",
23
+        "ext-pdo":                   "*",
24
+        "doctrine/coding-standard":  "^8.0",
25
+        "phpbench/phpbench":         "^0.13 || 1.0.0-alpha2",
26
+        "phpstan/phpstan":           "^0.12",
27
+        "phpstan/phpstan-phpunit":   "^0.12",
28
+        "phpunit/phpunit":           "^7.0 || ^8.0 || ^9.0"
29
+    },
30
+    "autoload": {
31
+        "psr-4": {
32
+            "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
33
+        }
34
+    },
35
+    "autoload-dev": {
36
+        "psr-0": {
37
+            "DoctrineTest\\InstantiatorPerformance\\": "tests",
38
+            "DoctrineTest\\InstantiatorTest\\": "tests",
39
+            "DoctrineTest\\InstantiatorTestAsset\\": "tests"
40
+        }
41
+    }
42
+}

+ 68
- 0
vendor/doctrine/instantiator/docs/en/index.rst Visa fil

@@ -0,0 +1,68 @@
1
+Introduction
2
+============
3
+
4
+This library provides a way of avoiding usage of constructors when instantiating PHP classes.
5
+
6
+Installation
7
+============
8
+
9
+The suggested installation method is via `composer`_:
10
+
11
+.. code-block:: console
12
+
13
+   $ composer require doctrine/instantiator
14
+
15
+Usage
16
+=====
17
+
18
+The instantiator is able to create new instances of any class without
19
+using the constructor or any API of the class itself:
20
+
21
+.. code-block:: php
22
+
23
+    <?php
24
+
25
+    use Doctrine\Instantiator\Instantiator;
26
+    use App\Entities\User;
27
+
28
+    $instantiator = new Instantiator();
29
+
30
+    $user = $instantiator->instantiate(User::class);
31
+
32
+Contributing
33
+============
34
+
35
+-  Follow the `Doctrine Coding Standard`_
36
+-  The project will follow strict `object calisthenics`_
37
+-  Any contribution must provide tests for additional introduced
38
+   conditions
39
+-  Any un-confirmed issue needs a failing test case before being
40
+   accepted
41
+-  Pull requests must be sent from a new hotfix/feature branch, not from
42
+   ``master``.
43
+
44
+Testing
45
+=======
46
+
47
+The PHPUnit version to be used is the one installed as a dev- dependency
48
+via composer:
49
+
50
+.. code-block:: console
51
+
52
+   $ ./vendor/bin/phpunit
53
+
54
+Accepted coverage for new contributions is 80%. Any contribution not
55
+satisfying this requirement won’t be merged.
56
+
57
+Credits
58
+=======
59
+
60
+This library was migrated from `ocramius/instantiator`_, which has been
61
+donated to the doctrine organization, and which is now deprecated in
62
+favour of this package.
63
+
64
+.. _composer: https://getcomposer.org/
65
+.. _CONTRIBUTING.md: CONTRIBUTING.md
66
+.. _ocramius/instantiator: https://github.com/Ocramius/Instantiator
67
+.. _Doctrine Coding Standard: https://github.com/doctrine/coding-standard
68
+.. _object calisthenics: http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php

+ 4
- 0
vendor/doctrine/instantiator/docs/en/sidebar.rst Visa fil

@@ -0,0 +1,4 @@
1
+.. toctree::
2
+    :depth: 3
3
+
4
+    index

+ 4
- 0
vendor/doctrine/instantiator/phpbench.json Visa fil

@@ -0,0 +1,4 @@
1
+{
2
+    "bootstrap": "vendor/autoload.php",
3
+    "path": "tests/DoctrineTest/InstantiatorPerformance"
4
+}

+ 50
- 0
vendor/doctrine/instantiator/phpcs.xml.dist Visa fil

@@ -0,0 +1,50 @@
1
+<?xml version="1.0"?>
2
+<ruleset>
3
+    <arg name="basepath" value="."/>
4
+    <arg name="extensions" value="php"/>
5
+    <arg name="parallel" value="80"/>
6
+    <arg name="cache" value=".phpcs-cache"/>
7
+    <arg name="colors"/>
8
+
9
+    <!-- Ignore warnings, show progress of the run and show sniff names -->
10
+    <arg value="nps"/>
11
+
12
+    <file>src</file>
13
+    <file>tests</file>
14
+
15
+    <rule ref="Doctrine">
16
+        <exclude name="SlevomatCodingStandard.TypeHints.DeclareStrictTypes"/>
17
+        <exclude name="SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingParameterTypeHint"/>
18
+        <exclude name="SlevomatCodingStandard.TypeHints.TypeHintDeclaration.MissingReturnTypeHint"/>
19
+        <exclude name="SlevomatCodingStandard.Exceptions.ReferenceThrowableOnly.ReferencedGeneralException"/>
20
+    </rule>
21
+
22
+    <!-- Disable the rules that will require PHP 7.4 -->
23
+    <rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint">
24
+        <properties>
25
+            <property name="enableNativeTypeHint" value="false"/>
26
+        </properties>
27
+    </rule>
28
+
29
+    <rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint">
30
+        <exclude-pattern>*/src/*</exclude-pattern>
31
+    </rule>
32
+
33
+    <rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint">
34
+        <exclude-pattern>*/src/*</exclude-pattern>
35
+    </rule>
36
+
37
+    <rule ref="SlevomatCodingStandard.Classes.SuperfluousAbstractClassNaming">
38
+        <exclude-pattern>tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php</exclude-pattern>
39
+    </rule>
40
+
41
+    <rule ref="SlevomatCodingStandard.Classes.SuperfluousExceptionNaming">
42
+        <exclude-pattern>src/Doctrine/Instantiator/Exception/UnexpectedValueException.php</exclude-pattern>
43
+        <exclude-pattern>src/Doctrine/Instantiator/Exception/InvalidArgumentException.php</exclude-pattern>
44
+    </rule>
45
+
46
+    <rule ref="SlevomatCodingStandard.Classes.SuperfluousInterfaceNaming">
47
+        <exclude-pattern>src/Doctrine/Instantiator/Exception/ExceptionInterface.php</exclude-pattern>
48
+        <exclude-pattern>src/Doctrine/Instantiator/InstantiatorInterface.php</exclude-pattern>
49
+    </rule>
50
+</ruleset>

+ 15
- 0
vendor/doctrine/instantiator/phpstan.neon.dist Visa fil

@@ -0,0 +1,15 @@
1
+includes:
2
+    - vendor/phpstan/phpstan-phpunit/extension.neon
3
+    - vendor/phpstan/phpstan-phpunit/rules.neon
4
+
5
+parameters:
6
+    level: max
7
+    paths:
8
+        - src
9
+        - tests
10
+
11
+    ignoreErrors:
12
+        # dynamic properties confuse static analysis
13
+        -
14
+            message: '#Access to an undefined property object::\$foo\.#'
15
+            path: '*/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php'

+ 12
- 0
vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php Visa fil

@@ -0,0 +1,12 @@
1
+<?php
2
+
3
+namespace Doctrine\Instantiator\Exception;
4
+
5
+use Throwable;
6
+
7
+/**
8
+ * Base exception marker interface for the instantiator component
9
+ */
10
+interface ExceptionInterface extends Throwable
11
+{
12
+}

+ 41
- 0
vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php Visa fil

@@ -0,0 +1,41 @@
1
+<?php
2
+
3
+namespace Doctrine\Instantiator\Exception;
4
+
5
+use InvalidArgumentException as BaseInvalidArgumentException;
6
+use ReflectionClass;
7
+
8
+use function interface_exists;
9
+use function sprintf;
10
+use function trait_exists;
11
+
12
+/**
13
+ * Exception for invalid arguments provided to the instantiator
14
+ */
15
+class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface
16
+{
17
+    public static function fromNonExistingClass(string $className): self
18
+    {
19
+        if (interface_exists($className)) {
20
+            return new self(sprintf('The provided type "%s" is an interface, and can not be instantiated', $className));
21
+        }
22
+
23
+        if (trait_exists($className)) {
24
+            return new self(sprintf('The provided type "%s" is a trait, and can not be instantiated', $className));
25
+        }
26
+
27
+        return new self(sprintf('The provided class "%s" does not exist', $className));
28
+    }
29
+
30
+    /**
31
+     * @template T of object
32
+     * @phpstan-param ReflectionClass<T> $reflectionClass
33
+     */
34
+    public static function fromAbstractClass(ReflectionClass $reflectionClass): self
35
+    {
36
+        return new self(sprintf(
37
+            'The provided class "%s" is abstract, and can not be instantiated',
38
+            $reflectionClass->getName()
39
+        ));
40
+    }
41
+}

+ 57
- 0
vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php Visa fil

@@ -0,0 +1,57 @@
1
+<?php
2
+
3
+namespace Doctrine\Instantiator\Exception;
4
+
5
+use Exception;
6
+use ReflectionClass;
7
+use UnexpectedValueException as BaseUnexpectedValueException;
8
+
9
+use function sprintf;
10
+
11
+/**
12
+ * Exception for given parameters causing invalid/unexpected state on instantiation
13
+ */
14
+class UnexpectedValueException extends BaseUnexpectedValueException implements ExceptionInterface
15
+{
16
+    /**
17
+     * @template T of object
18
+     * @phpstan-param ReflectionClass<T> $reflectionClass
19
+     */
20
+    public static function fromSerializationTriggeredException(
21
+        ReflectionClass $reflectionClass,
22
+        Exception $exception
23
+    ): self {
24
+        return new self(
25
+            sprintf(
26
+                'An exception was raised while trying to instantiate an instance of "%s" via un-serialization',
27
+                $reflectionClass->getName()
28
+            ),
29
+            0,
30
+            $exception
31
+        );
32
+    }
33
+
34
+    /**
35
+     * @template T of object
36
+     * @phpstan-param ReflectionClass<T> $reflectionClass
37
+     */
38
+    public static function fromUncleanUnSerialization(
39
+        ReflectionClass $reflectionClass,
40
+        string $errorString,
41
+        int $errorCode,
42
+        string $errorFile,
43
+        int $errorLine
44
+    ): self {
45
+        return new self(
46
+            sprintf(
47
+                'Could not produce an instance of "%s" via un-serialization, since an error was triggered '
48
+                . 'in file "%s" at line "%d"',
49
+                $reflectionClass->getName(),
50
+                $errorFile,
51
+                $errorLine
52
+            ),
53
+            0,
54
+            new Exception($errorString, $errorCode)
55
+        );
56
+    }
57
+}

+ 232
- 0
vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php Visa fil

@@ -0,0 +1,232 @@
1
+<?php
2
+
3
+namespace Doctrine\Instantiator;
4
+
5
+use ArrayIterator;
6
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
7
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
8
+use Exception;
9
+use ReflectionClass;
10
+use ReflectionException;
11
+use Serializable;
12
+
13
+use function class_exists;
14
+use function is_subclass_of;
15
+use function restore_error_handler;
16
+use function set_error_handler;
17
+use function sprintf;
18
+use function strlen;
19
+use function unserialize;
20
+
21
+final class Instantiator implements InstantiatorInterface
22
+{
23
+    /**
24
+     * Markers used internally by PHP to define whether {@see \unserialize} should invoke
25
+     * the method {@see \Serializable::unserialize()} when dealing with classes implementing
26
+     * the {@see \Serializable} interface.
27
+     */
28
+    public const SERIALIZATION_FORMAT_USE_UNSERIALIZER   = 'C';
29
+    public const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O';
30
+
31
+    /**
32
+     * Used to instantiate specific classes, indexed by class name.
33
+     *
34
+     * @var callable[]
35
+     */
36
+    private static $cachedInstantiators = [];
37
+
38
+    /**
39
+     * Array of objects that can directly be cloned, indexed by class name.
40
+     *
41
+     * @var object[]
42
+     */
43
+    private static $cachedCloneables = [];
44
+
45
+    /**
46
+     * {@inheritDoc}
47
+     */
48
+    public function instantiate($className)
49
+    {
50
+        if (isset(self::$cachedCloneables[$className])) {
51
+            return clone self::$cachedCloneables[$className];
52
+        }
53
+
54
+        if (isset(self::$cachedInstantiators[$className])) {
55
+            $factory = self::$cachedInstantiators[$className];
56
+
57
+            return $factory();
58
+        }
59
+
60
+        return $this->buildAndCacheFromFactory($className);
61
+    }
62
+
63
+    /**
64
+     * Builds the requested object and caches it in static properties for performance
65
+     *
66
+     * @return object
67
+     *
68
+     * @template T of object
69
+     * @phpstan-param class-string<T> $className
70
+     *
71
+     * @phpstan-return T
72
+     */
73
+    private function buildAndCacheFromFactory(string $className)
74
+    {
75
+        $factory  = self::$cachedInstantiators[$className] = $this->buildFactory($className);
76
+        $instance = $factory();
77
+
78
+        if ($this->isSafeToClone(new ReflectionClass($instance))) {
79
+            self::$cachedCloneables[$className] = clone $instance;
80
+        }
81
+
82
+        return $instance;
83
+    }
84
+
85
+    /**
86
+     * Builds a callable capable of instantiating the given $className without
87
+     * invoking its constructor.
88
+     *
89
+     * @throws InvalidArgumentException
90
+     * @throws UnexpectedValueException
91
+     * @throws ReflectionException
92
+     *
93
+     * @template T of object
94
+     * @phpstan-param class-string<T> $className
95
+     *
96
+     * @phpstan-return callable(): T
97
+     */
98
+    private function buildFactory(string $className): callable
99
+    {
100
+        $reflectionClass = $this->getReflectionClass($className);
101
+
102
+        if ($this->isInstantiableViaReflection($reflectionClass)) {
103
+            return [$reflectionClass, 'newInstanceWithoutConstructor'];
104
+        }
105
+
106
+        $serializedString = sprintf(
107
+            '%s:%d:"%s":0:{}',
108
+            is_subclass_of($className, Serializable::class) ? self::SERIALIZATION_FORMAT_USE_UNSERIALIZER : self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER,
109
+            strlen($className),
110
+            $className
111
+        );
112
+
113
+        $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString);
114
+
115
+        return static function () use ($serializedString) {
116
+            return unserialize($serializedString);
117
+        };
118
+    }
119
+
120
+    /**
121
+     * @throws InvalidArgumentException
122
+     * @throws ReflectionException
123
+     *
124
+     * @template T of object
125
+     * @phpstan-param class-string<T> $className
126
+     *
127
+     * @phpstan-return ReflectionClass<T>
128
+     */
129
+    private function getReflectionClass(string $className): ReflectionClass
130
+    {
131
+        if (! class_exists($className)) {
132
+            throw InvalidArgumentException::fromNonExistingClass($className);
133
+        }
134
+
135
+        $reflection = new ReflectionClass($className);
136
+
137
+        if ($reflection->isAbstract()) {
138
+            throw InvalidArgumentException::fromAbstractClass($reflection);
139
+        }
140
+
141
+        return $reflection;
142
+    }
143
+
144
+    /**
145
+     * @throws UnexpectedValueException
146
+     *
147
+     * @template T of object
148
+     * @phpstan-param ReflectionClass<T> $reflectionClass
149
+     */
150
+    private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, string $serializedString): void
151
+    {
152
+        set_error_handler(static function (int $code, string $message, string $file, int $line) use ($reflectionClass, &$error): bool {
153
+            $error = UnexpectedValueException::fromUncleanUnSerialization(
154
+                $reflectionClass,
155
+                $message,
156
+                $code,
157
+                $file,
158
+                $line
159
+            );
160
+
161
+            return true;
162
+        });
163
+
164
+        try {
165
+            $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString);
166
+        } finally {
167
+            restore_error_handler();
168
+        }
169
+
170
+        if ($error) {
171
+            throw $error;
172
+        }
173
+    }
174
+
175
+    /**
176
+     * @throws UnexpectedValueException
177
+     *
178
+     * @template T of object
179
+     * @phpstan-param ReflectionClass<T> $reflectionClass
180
+     */
181
+    private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, string $serializedString): void
182
+    {
183
+        try {
184
+            unserialize($serializedString);
185
+        } catch (Exception $exception) {
186
+            throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception);
187
+        }
188
+    }
189
+
190
+    /**
191
+     * @template T of object
192
+     * @phpstan-param ReflectionClass<T> $reflectionClass
193
+     */
194
+    private function isInstantiableViaReflection(ReflectionClass $reflectionClass): bool
195
+    {
196
+        return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal());
197
+    }
198
+
199
+    /**
200
+     * Verifies whether the given class is to be considered internal
201
+     *
202
+     * @template T of object
203
+     * @phpstan-param ReflectionClass<T> $reflectionClass
204
+     */
205
+    private function hasInternalAncestors(ReflectionClass $reflectionClass): bool
206
+    {
207
+        do {
208
+            if ($reflectionClass->isInternal()) {
209
+                return true;
210
+            }
211
+
212
+            $reflectionClass = $reflectionClass->getParentClass();
213
+        } while ($reflectionClass);
214
+
215
+        return false;
216
+    }
217
+
218
+    /**
219
+     * Checks if a class is cloneable
220
+     *
221
+     * Classes implementing `__clone` cannot be safely cloned, as that may cause side-effects.
222
+     *
223
+     * @template T of object
224
+     * @phpstan-param ReflectionClass<T> $reflectionClass
225
+     */
226
+    private function isSafeToClone(ReflectionClass $reflectionClass): bool
227
+    {
228
+        return $reflectionClass->isCloneable()
229
+            && ! $reflectionClass->hasMethod('__clone')
230
+            && ! $reflectionClass->isSubclassOf(ArrayIterator::class);
231
+    }
232
+}

+ 23
- 0
vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php Visa fil

@@ -0,0 +1,23 @@
1
+<?php
2
+
3
+namespace Doctrine\Instantiator;
4
+
5
+use Doctrine\Instantiator\Exception\ExceptionInterface;
6
+
7
+/**
8
+ * Instantiator provides utility methods to build objects without invoking their constructors
9
+ */
10
+interface InstantiatorInterface
11
+{
12
+    /**
13
+     * @param string $className
14
+     *
15
+     * @return object
16
+     *
17
+     * @throws ExceptionInterface
18
+     *
19
+     * @template T of object
20
+     * @phpstan-param class-string<T> $className
21
+     */
22
+    public function instantiate($className);
23
+}

+ 156
- 0
vendor/markbaker/complex/README.md Visa fil

@@ -0,0 +1,156 @@
1
+PHPComplex
2
+==========
3
+
4
+---
5
+
6
+PHP Class for handling Complex numbers
7
+
8
+Master: [![Build Status](https://travis-ci.org/MarkBaker/PHPComplex.png?branch=master)](http://travis-ci.org/MarkBaker/PHPComplex)
9
+
10
+Develop: [![Build Status](https://travis-ci.org/MarkBaker/PHPComplex.png?branch=develop)](http://travis-ci.org/MarkBaker/PHPComplex)
11
+
12
+[![Complex Numbers](https://imgs.xkcd.com/comics/complex_numbers_2x.png)](https://xkcd.com/2028/)
13
+
14
+---
15
+
16
+The library currently provides the following operations:
17
+
18
+ - addition
19
+ - subtraction
20
+ - multiplication
21
+ - division
22
+    - division by
23
+    - division into
24
+
25
+together with functions for 
26
+
27
+ - theta (polar theta angle)
28
+ - rho (polar distance/radius)
29
+ - conjugate
30
+ * negative
31
+ - inverse (1 / complex)
32
+ - cos (cosine)
33
+ - acos (inverse cosine)
34
+ - cosh (hyperbolic cosine)
35
+ - acosh (inverse hyperbolic cosine)
36
+ - sin (sine)
37
+ - asin (inverse sine)
38
+ - sinh (hyperbolic sine)
39
+ - asinh (inverse hyperbolic sine)
40
+ - sec (secant)
41
+ - asec (inverse secant)
42
+ - sech (hyperbolic secant)
43
+ - asech (inverse hyperbolic secant)
44
+ - csc (cosecant)
45
+ - acsc (inverse cosecant)
46
+ - csch (hyperbolic secant)
47
+ - acsch (inverse hyperbolic secant)
48
+ - tan (tangent)
49
+ - atan (inverse tangent)
50
+ - tanh (hyperbolic tangent)
51
+ - atanh (inverse hyperbolic tangent)
52
+ - cot (cotangent)
53
+ - acot (inverse cotangent)
54
+ - coth (hyperbolic cotangent)
55
+ - acoth (inverse hyperbolic cotangent)
56
+ - sqrt (square root)
57
+ - exp (exponential)
58
+ - ln (natural log)
59
+ - log10 (base-10 log)
60
+ - log2 (base-2 log)
61
+ - pow (raised to the power of a real number)
62
+ 
63
+ 
64
+---
65
+
66
+# Usage
67
+
68
+To create a new complex object, you can provide either the real, imaginary and suffix parts as individual values, or as an array of values passed passed to the constructor; or a string representing the value. e.g
69
+
70
+```
71
+$real = 1.23;
72
+$imaginary = -4.56;
73
+$suffix = 'i';
74
+
75
+$complexObject = new Complex\Complex($real, $imaginary, $suffix);
76
+```
77
+or
78
+```
79
+$real = 1.23;
80
+$imaginary = -4.56;
81
+$suffix = 'i';
82
+
83
+$arguments = [$real, $imaginary, $suffix];
84
+
85
+$complexObject = new Complex\Complex($arguments);
86
+```
87
+or
88
+```
89
+$complexString = '1.23-4.56i';
90
+
91
+$complexObject = new Complex\Complex($complexString);
92
+```
93
+
94
+Complex objects are immutable: whenever you call a method or pass a complex value to a function that returns a complex value, a new Complex object will be returned, and the original will remain unchanged.
95
+This also allows you to chain multiple methods as you would for a fluent interface (as long as they are methods that will return a Complex result).
96
+
97
+## Performing Mathematical Operations
98
+
99
+To perform mathematical operations with Complex values, you can call the appropriate method against a complex value, passing other values as arguments
100
+
101
+```
102
+$complexString1 = '1.23-4.56i';
103
+$complexString2 = '2.34+5.67i';
104
+
105
+$complexObject = new Complex\Complex($complexString1);
106
+echo $complexObject->add($complexString2);
107
+```
108
+or pass all values to the appropriate function
109
+```
110
+$complexString1 = '1.23-4.56i';
111
+$complexString2 = '2.34+5.67i';
112
+
113
+echo Complex\add($complexString1, $complexString2);
114
+```
115
+If you want to perform the same operation against multiple values (e.g. to add three or more complex numbers), then you can pass multiple arguments to any of the operations.
116
+
117
+You can pass these arguments as Complex objects, or as an array or string that will parse to a complex object.
118
+
119
+## Using functions
120
+
121
+When calling any of the available functions for a complex value, you can either call the relevant method for the Complex object
122
+```
123
+$complexString = '1.23-4.56i';
124
+
125
+$complexObject = new Complex\Complex($complexString);
126
+echo $complexObject->sinh();
127
+```
128
+or you can call the function as you would in procedural code, passing the Complex object as an argument 
129
+```
130
+$complexString = '1.23-4.56i';
131
+
132
+$complexObject = new Complex\Complex($complexString);
133
+echo Complex\sinh($complexObject);
134
+```
135
+When called procedurally using the function, you can pass in the argument as a Complex object, or as an array or string that will parse to a complex object.
136
+```
137
+$complexString = '1.23-4.56i';
138
+
139
+echo Complex\sinh($complexString);
140
+```
141
+
142
+In the case of the `pow()` function (the only implemented function that requires an additional argument) you need to pass both arguments when calling the function procedurally
143
+
144
+```
145
+$complexString = '1.23-4.56i';
146
+
147
+$complexObject = new Complex\Complex($complexString);
148
+echo Complex\pow($complexObject, 2);
149
+```
150
+or pass the additional argument when calling the method
151
+```
152
+$complexString = '1.23-4.56i';
153
+
154
+$complexObject = new Complex\Complex($complexString);
155
+echo $complexObject->pow(2);
156
+```

+ 53
- 0
vendor/markbaker/complex/classes/Autoloader.php Visa fil

@@ -0,0 +1,53 @@
1
+<?php
2
+
3
+namespace Complex;
4
+
5
+/**
6
+ *
7
+ * Autoloader for Complex classes
8
+ *
9
+ * @package Complex
10
+ * @copyright  Copyright (c) 2014 Mark Baker (https://github.com/MarkBaker/PHPComplex)
11
+ * @license    https://opensource.org/licenses/MIT          MIT
12
+ */
13
+class Autoloader
14
+{
15
+    /**
16
+     * Register the Autoloader with SPL
17
+     *
18
+     */
19
+    public static function Register()
20
+    {
21
+        if (function_exists('__autoload')) {
22
+            //    Register any existing autoloader function with SPL, so we don't get any clashes
23
+            spl_autoload_register('__autoload');
24
+        }
25
+        //    Register ourselves with SPL
26
+        return spl_autoload_register(['Complex\\Autoloader', 'Load']);
27
+    }
28
+
29
+
30
+    /**
31
+     * Autoload a class identified by name
32
+     *
33
+     * @param    string    $pClassName    Name of the object to load
34
+     */
35
+    public static function Load($pClassName)
36
+    {
37
+        if ((class_exists($pClassName, false)) || (strpos($pClassName, 'Complex\\') !== 0)) {
38
+            // Either already loaded, or not a Complex class request
39
+            return false;
40
+        }
41
+
42
+        $pClassFilePath = __DIR__ . DIRECTORY_SEPARATOR .
43
+                          'src' . DIRECTORY_SEPARATOR .
44
+                          str_replace(['Complex\\', '\\'], ['', '/'], $pClassName) .
45
+                          '.php';
46
+
47
+        if ((file_exists($pClassFilePath) === false) || (is_readable($pClassFilePath) === false)) {
48
+            // Can't load
49
+            return false;
50
+        }
51
+        require($pClassFilePath);
52
+    }
53
+}

+ 38
- 0
vendor/markbaker/complex/classes/Bootstrap.php Visa fil

@@ -0,0 +1,38 @@
1
+<?php
2
+
3
+include_once __DIR__ . '/Autoloader.php';
4
+
5
+\Complex\Autoloader::Register();
6
+
7
+
8
+abstract class FilesystemRegexFilter extends RecursiveRegexIterator
9
+{
10
+    protected $regex;
11
+    public function __construct(RecursiveIterator $it, $regex)
12
+    {
13
+        $this->regex = $regex;
14
+        parent::__construct($it, $regex);
15
+    }
16
+}
17
+
18
+class FilenameFilter extends FilesystemRegexFilter
19
+{
20
+    // Filter files against the regex
21
+    public function accept()
22
+    {
23
+        return (!$this->isFile() || preg_match($this->regex, $this->getFilename()));
24
+    }
25
+}
26
+
27
+
28
+$srcFolder = __DIR__ . DIRECTORY_SEPARATOR . 'src';
29
+$srcDirectory = new RecursiveDirectoryIterator($srcFolder);
30
+
31
+$filteredFileList = new FilenameFilter($srcDirectory, '/(?:php)$/i');
32
+$filteredFileList = new FilenameFilter($filteredFileList, '/^(?!.*(Complex|Exception)\.php).*$/i');
33
+
34
+foreach (new RecursiveIteratorIterator($filteredFileList) as $file) {
35
+    if ($file->isFile()) {
36
+        include_once $file;
37
+    }
38
+}

+ 390
- 0
vendor/markbaker/complex/classes/src/Complex.php Visa fil

@@ -0,0 +1,390 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Class for the management of Complex numbers
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Complex Number object.
14
+ *
15
+ * @package Complex
16
+ *
17
+ * @method float abs()
18
+ * @method Complex acos()
19
+ * @method Complex acosh()
20
+ * @method Complex acot()
21
+ * @method Complex acoth()
22
+ * @method Complex acsc()
23
+ * @method Complex acsch()
24
+ * @method float argument()
25
+ * @method Complex asec()
26
+ * @method Complex asech()
27
+ * @method Complex asin()
28
+ * @method Complex asinh()
29
+ * @method Complex atan()
30
+ * @method Complex atanh()
31
+ * @method Complex conjugate()
32
+ * @method Complex cos()
33
+ * @method Complex cosh()
34
+ * @method Complex cot()
35
+ * @method Complex coth()
36
+ * @method Complex csc()
37
+ * @method Complex csch()
38
+ * @method Complex exp()
39
+ * @method Complex inverse()
40
+ * @method Complex ln()
41
+ * @method Complex log2()
42
+ * @method Complex log10()
43
+ * @method Complex negative()
44
+ * @method Complex pow(int|float $power)
45
+ * @method float rho()
46
+ * @method Complex sec()
47
+ * @method Complex sech()
48
+ * @method Complex sin()
49
+ * @method Complex sinh()
50
+ * @method Complex sqrt()
51
+ * @method Complex tan()
52
+ * @method Complex tanh()
53
+ * @method float theta()
54
+ * @method Complex add(...$complexValues)
55
+ * @method Complex subtract(...$complexValues)
56
+ * @method Complex multiply(...$complexValues)
57
+ * @method Complex divideby(...$complexValues)
58
+ * @method Complex divideinto(...$complexValues)
59
+ */
60
+class Complex
61
+{
62
+    /**
63
+     * @constant    Euler's Number.
64
+     */
65
+    const EULER = 2.7182818284590452353602874713526624977572;
66
+
67
+    /**
68
+     * @constant    Regexp to split an input string into real and imaginary components and suffix
69
+     */
70
+    const NUMBER_SPLIT_REGEXP =
71
+        '` ^
72
+            (                                   # Real part
73
+                [-+]?(\d+\.?\d*|\d*\.?\d+)          # Real value (integer or float)
74
+                ([Ee][-+]?[0-2]?\d{1,3})?           # Optional real exponent for scientific format
75
+            )
76
+            (                                   # Imaginary part
77
+                [-+]?(\d+\.?\d*|\d*\.?\d+)          # Imaginary value (integer or float)
78
+                ([Ee][-+]?[0-2]?\d{1,3})?           # Optional imaginary exponent for scientific format
79
+            )?
80
+            (                                   # Imaginary part is optional
81
+                ([-+]?)                             # Imaginary (implicit 1 or -1) only
82
+                ([ij]?)                             # Imaginary i or j - depending on whether mathematical or engineering
83
+            )
84
+        $`uix';
85
+
86
+    /**
87
+     * @var    float    $realPart    The value of of this complex number on the real plane.
88
+     */
89
+    protected $realPart = 0.0;
90
+
91
+    /**
92
+     * @var    float    $imaginaryPart    The value of of this complex number on the imaginary plane.
93
+     */
94
+    protected $imaginaryPart = 0.0;
95
+
96
+    /**
97
+     * @var    string    $suffix    The suffix for this complex number (i or j).
98
+     */
99
+    protected $suffix;
100
+
101
+
102
+    /**
103
+     * Validates whether the argument is a valid complex number, converting scalar or array values if possible
104
+     *
105
+     * @param     mixed    $complexNumber   The value to parse
106
+     * @return    array
107
+     * @throws    Exception    If the argument isn't a Complex number or cannot be converted to one
108
+     */
109
+    private static function parseComplex($complexNumber)
110
+    {
111
+        // Test for real number, with no imaginary part
112
+        if (is_numeric($complexNumber)) {
113
+            return [$complexNumber, 0, null];
114
+        }
115
+
116
+        // Fix silly human errors
117
+        $complexNumber = str_replace(
118
+            ['+-', '-+', '++', '--'],
119
+            ['-', '-', '+', '+'],
120
+            $complexNumber
121
+        );
122
+
123
+        // Basic validation of string, to parse out real and imaginary parts, and any suffix
124
+        $validComplex = preg_match(
125
+            self::NUMBER_SPLIT_REGEXP,
126
+            $complexNumber,
127
+            $complexParts
128
+        );
129
+
130
+        if (!$validComplex) {
131
+            // Neither real nor imaginary part, so test to see if we actually have a suffix
132
+            $validComplex = preg_match('/^([\-\+]?)([ij])$/ui', $complexNumber, $complexParts);
133
+            if (!$validComplex) {
134
+                throw new Exception('Invalid complex number');
135
+            }
136
+            // We have a suffix, so set the real to 0, the imaginary to either 1 or -1 (as defined by the sign)
137
+            $imaginary = 1;
138
+            if ($complexParts[1] === '-') {
139
+                $imaginary = 0 - $imaginary;
140
+            }
141
+            return [0, $imaginary, $complexParts[2]];
142
+        }
143
+
144
+        // If we don't have an imaginary part, identify whether it should be +1 or -1...
145
+        if (($complexParts[4] === '') && ($complexParts[9] !== '')) {
146
+            if ($complexParts[7] !== $complexParts[9]) {
147
+                $complexParts[4] = 1;
148
+                if ($complexParts[8] === '-') {
149
+                    $complexParts[4] = -1;
150
+                }
151
+            } else {
152
+                // ... or if we have only the real and no imaginary part
153
+                //  (in which case our real should be the imaginary)
154
+                $complexParts[4] = $complexParts[1];
155
+                $complexParts[1] = 0;
156
+            }
157
+        }
158
+
159
+        // Return real and imaginary parts and suffix as an array, and set a default suffix if user input lazily
160
+        return [
161
+            $complexParts[1],
162
+            $complexParts[4],
163
+            !empty($complexParts[9]) ? $complexParts[9] : 'i'
164
+        ];
165
+    }
166
+
167
+
168
+    public function __construct($realPart = 0.0, $imaginaryPart = null, $suffix = 'i')
169
+    {
170
+        if ($imaginaryPart === null) {
171
+            if (is_array($realPart)) {
172
+                // We have an array of (potentially) real and imaginary parts, and any suffix
173
+                list ($realPart, $imaginaryPart, $suffix) = array_values($realPart) + [0.0, 0.0, 'i'];
174
+            } elseif ((is_string($realPart)) || (is_numeric($realPart))) {
175
+                // We've been given a string to parse to extract the real and imaginary parts, and any suffix
176
+                list($realPart, $imaginaryPart, $suffix) = self::parseComplex($realPart);
177
+            }
178
+        }
179
+
180
+        if ($imaginaryPart != 0.0 && empty($suffix)) {
181
+            $suffix = 'i';
182
+        } elseif ($imaginaryPart == 0.0 && !empty($suffix)) {
183
+            $suffix = '';
184
+        }
185
+
186
+        // Set parsed values in our properties
187
+        $this->realPart = (float) $realPart;
188
+        $this->imaginaryPart = (float) $imaginaryPart;
189
+        $this->suffix = strtolower($suffix);
190
+    }
191
+
192
+    /**
193
+     * Gets the real part of this complex number
194
+     *
195
+     * @return Float
196
+     */
197
+    public function getReal()
198
+    {
199
+        return $this->realPart;
200
+    }
201
+
202
+    /**
203
+     * Gets the imaginary part of this complex number
204
+     *
205
+     * @return Float
206
+     */
207
+    public function getImaginary()
208
+    {
209
+        return $this->imaginaryPart;
210
+    }
211
+
212
+    /**
213
+     * Gets the suffix of this complex number
214
+     *
215
+     * @return String
216
+     */
217
+    public function getSuffix()
218
+    {
219
+        return $this->suffix;
220
+    }
221
+
222
+    /**
223
+     * Returns true if this is a real value, false if a complex value
224
+     *
225
+     * @return Bool
226
+     */
227
+    public function isReal()
228
+    {
229
+        return $this->imaginaryPart == 0.0;
230
+    }
231
+
232
+    /**
233
+     * Returns true if this is a complex value, false if a real value
234
+     *
235
+     * @return Bool
236
+     */
237
+    public function isComplex()
238
+    {
239
+        return !$this->isReal();
240
+    }
241
+
242
+    public function format()
243
+    {
244
+        $str = "";
245
+        if ($this->imaginaryPart != 0.0) {
246
+            if (\abs($this->imaginaryPart) != 1.0) {
247
+                $str .= $this->imaginaryPart . $this->suffix;
248
+            } else {
249
+                $str .= (($this->imaginaryPart < 0.0) ? '-' : '') . $this->suffix;
250
+            }
251
+        }
252
+        if ($this->realPart != 0.0) {
253
+            if (($str) && ($this->imaginaryPart > 0.0)) {
254
+                $str = "+" . $str;
255
+            }
256
+            $str = $this->realPart . $str;
257
+        }
258
+        if (!$str) {
259
+            $str = "0.0";
260
+        }
261
+
262
+        return $str;
263
+    }
264
+
265
+    public function __toString()
266
+    {
267
+        return $this->format();
268
+    }
269
+
270
+    /**
271
+     * Validates whether the argument is a valid complex number, converting scalar or array values if possible
272
+     *
273
+     * @param     mixed    $complex   The value to validate
274
+     * @return    Complex
275
+     * @throws    Exception    If the argument isn't a Complex number or cannot be converted to one
276
+     */
277
+    public static function validateComplexArgument($complex)
278
+    {
279
+        if (is_scalar($complex) || is_array($complex)) {
280
+            $complex = new Complex($complex);
281
+        } elseif (!is_object($complex) || !($complex instanceof Complex)) {
282
+            throw new Exception('Value is not a valid complex number');
283
+        }
284
+
285
+        return $complex;
286
+    }
287
+
288
+    /**
289
+     * Returns the reverse of this complex number
290
+     *
291
+     * @return    Complex
292
+     */
293
+    public function reverse()
294
+    {
295
+        return new Complex(
296
+            $this->imaginaryPart,
297
+            $this->realPart,
298
+            ($this->realPart == 0.0) ? null : $this->suffix
299
+        );
300
+    }
301
+
302
+    public function invertImaginary()
303
+    {
304
+        return new Complex(
305
+            $this->realPart,
306
+            $this->imaginaryPart * -1,
307
+            ($this->imaginaryPart == 0.0) ? null : $this->suffix
308
+        );
309
+    }
310
+
311
+    public function invertReal()
312
+    {
313
+        return new Complex(
314
+            $this->realPart * -1,
315
+            $this->imaginaryPart,
316
+            ($this->imaginaryPart == 0.0) ? null : $this->suffix
317
+        );
318
+    }
319
+
320
+    protected static $functions = [
321
+        'abs',
322
+        'acos',
323
+        'acosh',
324
+        'acot',
325
+        'acoth',
326
+        'acsc',
327
+        'acsch',
328
+        'argument',
329
+        'asec',
330
+        'asech',
331
+        'asin',
332
+        'asinh',
333
+        'atan',
334
+        'atanh',
335
+        'conjugate',
336
+        'cos',
337
+        'cosh',
338
+        'cot',
339
+        'coth',
340
+        'csc',
341
+        'csch',
342
+        'exp',
343
+        'inverse',
344
+        'ln',
345
+        'log2',
346
+        'log10',
347
+        'negative',
348
+        'pow',
349
+        'rho',
350
+        'sec',
351
+        'sech',
352
+        'sin',
353
+        'sinh',
354
+        'sqrt',
355
+        'tan',
356
+        'tanh',
357
+        'theta',
358
+    ];
359
+
360
+    protected static $operations = [
361
+        'add',
362
+        'subtract',
363
+        'multiply',
364
+        'divideby',
365
+        'divideinto',
366
+    ];
367
+
368
+    /**
369
+     * Returns the result of the function call or operation
370
+     *
371
+     * @return    Complex|float
372
+     * @throws    Exception|\InvalidArgumentException
373
+     */
374
+    public function __call($functionName, $arguments)
375
+    {
376
+        $functionName = strtolower(str_replace('_', '', $functionName));
377
+
378
+        // Test for function calls
379
+        if (in_array($functionName, self::$functions, true)) {
380
+            $functionName = "\\" . __NAMESPACE__ . "\\{$functionName}";
381
+            return $functionName($this, ...$arguments);
382
+        }
383
+        // Test for operation calls
384
+        if (in_array($functionName, self::$operations, true)) {
385
+            $functionName = "\\" . __NAMESPACE__ . "\\{$functionName}";
386
+            return $functionName($this, ...$arguments);
387
+        }
388
+        throw new Exception('Function or Operation does not exist');
389
+    }
390
+}

+ 13
- 0
vendor/markbaker/complex/classes/src/Exception.php Visa fil

@@ -0,0 +1,13 @@
1
+<?php
2
+
3
+/**
4
+ * Exception.
5
+ *
6
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
7
+ * @license    https://opensource.org/licenses/MIT    MIT
8
+ */
9
+namespace Complex;
10
+
11
+class Exception extends \Exception
12
+{
13
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/abs.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex abs() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the absolute value (modulus) of a complex number.
14
+ * Also known as the rho of the complex number, i.e. the distance/radius
15
+ *   from the centrepoint to the representation of the number in polar coordinates.
16
+ *
17
+ * This function is a synonym for rho()
18
+ *
19
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
20
+ * @return    float            The absolute (or rho) value of the complex argument.
21
+ * @throws    Exception        If argument isn't a valid real or complex number.
22
+ *
23
+ * @see    rho
24
+ *
25
+ */
26
+function abs($complex)
27
+{
28
+    return rho($complex);
29
+}

+ 38
- 0
vendor/markbaker/complex/classes/src/functions/acos.php Visa fil

@@ -0,0 +1,38 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex acos() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse cosine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse cosine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function acos($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    $square = clone $complex;
24
+    $square = multiply($square, $complex);
25
+    $invsqrt = new Complex(1.0);
26
+    $invsqrt = subtract($invsqrt, $square);
27
+    $invsqrt = sqrt($invsqrt);
28
+    $adjust = new Complex(
29
+        $complex->getReal() - $invsqrt->getImaginary(),
30
+        $complex->getImaginary() + $invsqrt->getReal()
31
+    );
32
+    $log = ln($adjust);
33
+
34
+    return new Complex(
35
+        $log->getImaginary(),
36
+        -1 * $log->getReal()
37
+    );
38
+}

+ 34
- 0
vendor/markbaker/complex/classes/src/functions/acosh.php Visa fil

@@ -0,0 +1,34 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex acosh() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse hyperbolic cosine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse hyperbolic cosine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function acosh($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if ($complex->isReal() && ($complex->getReal() > 1)) {
24
+        return new Complex(\acosh($complex->getReal()));
25
+    }
26
+
27
+    $acosh = acos($complex)
28
+        ->reverse();
29
+    if ($acosh->getReal() < 0.0) {
30
+        $acosh = $acosh->invertReal();
31
+    }
32
+
33
+    return $acosh;
34
+}

+ 25
- 0
vendor/markbaker/complex/classes/src/functions/acot.php Visa fil

@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex acot() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse cotangent of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse cotangent of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function acot($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    return atan(inverse($complex));
25
+}

+ 25
- 0
vendor/markbaker/complex/classes/src/functions/acoth.php Visa fil

@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex acoth() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse hyperbolic cotangent of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse hyperbolic cotangent of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function acoth($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    return atanh(inverse($complex));
25
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/acsc.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex acsc() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse cosecant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse cosecant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function acsc($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        return INF;
26
+    }
27
+
28
+    return asin(inverse($complex));
29
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/acsch.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex acsch() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse hyperbolic cosecant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse hyperbolic cosecant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function acsch($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        return INF;
26
+    }
27
+
28
+    return asinh(inverse($complex));
29
+}

+ 28
- 0
vendor/markbaker/complex/classes/src/functions/argument.php Visa fil

@@ -0,0 +1,28 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex argument() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the argument of a complex number.
14
+ * Also known as the theta of the complex number, i.e. the angle in radians
15
+ *   from the real axis to the representation of the number in polar coordinates.
16
+ *
17
+ * This function is a synonym for theta()
18
+ *
19
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
20
+ * @return    float            The argument (or theta) value of the complex argument.
21
+ * @throws    Exception        If argument isn't a valid real or complex number.
22
+ *
23
+ * @see    theta
24
+ */
25
+function argument($complex)
26
+{
27
+    return theta($complex);
28
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/asec.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex asec() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse secant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse secant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function asec($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        return INF;
26
+    }
27
+
28
+    return acos(inverse($complex));
29
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/asech.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex asech() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse hyperbolic secant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse hyperbolic secant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function asech($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        return INF;
26
+    }
27
+
28
+    return acosh(inverse($complex));
29
+}

+ 37
- 0
vendor/markbaker/complex/classes/src/functions/asin.php Visa fil

@@ -0,0 +1,37 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex asin() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse sine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse sine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function asin($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    $square = multiply($complex, $complex);
24
+    $invsqrt = new Complex(1.0);
25
+    $invsqrt = subtract($invsqrt, $square);
26
+    $invsqrt = sqrt($invsqrt);
27
+    $adjust = new Complex(
28
+        $invsqrt->getReal() - $complex->getImaginary(),
29
+        $invsqrt->getImaginary() + $complex->getReal()
30
+    );
31
+    $log = ln($adjust);
32
+
33
+    return new Complex(
34
+        $log->getImaginary(),
35
+        -1 * $log->getReal()
36
+    );
37
+}

+ 33
- 0
vendor/markbaker/complex/classes/src/functions/asinh.php Visa fil

@@ -0,0 +1,33 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex asinh() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse hyperbolic sine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse hyperbolic sine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function asinh($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if ($complex->isReal() && ($complex->getReal() > 1)) {
24
+        return new Complex(\asinh($complex->getReal()));
25
+    }
26
+
27
+    $asinh = clone $complex;
28
+    $asinh = $asinh->reverse()
29
+        ->invertReal();
30
+    $asinh = asin($asinh);
31
+    return $asinh->reverse()
32
+        ->invertImaginary();
33
+}

+ 45
- 0
vendor/markbaker/complex/classes/src/functions/atan.php Visa fil

@@ -0,0 +1,45 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex atan() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+//include_once 'Math/Complex.php';
13
+//include_once 'Math/ComplexOp.php';
14
+
15
+/**
16
+ * Returns the inverse tangent of a complex number.
17
+ *
18
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
19
+ * @return    Complex          The inverse tangent of the complex argument.
20
+ * @throws    Exception        If argument isn't a valid real or complex number.
21
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
22
+ */
23
+function atan($complex)
24
+{
25
+    $complex = Complex::validateComplexArgument($complex);
26
+
27
+    if ($complex->isReal()) {
28
+        return new Complex(\atan($complex->getReal()));
29
+    }
30
+
31
+    $t1Value = new Complex(-1 * $complex->getImaginary(), $complex->getReal());
32
+    $uValue = new Complex(1, 0);
33
+
34
+    $d1Value = clone $uValue;
35
+    $d1Value = subtract($d1Value, $t1Value);
36
+    $d2Value = add($t1Value, $uValue);
37
+    $uResult = $d1Value->divideBy($d2Value);
38
+    $uResult = ln($uResult);
39
+
40
+    return new Complex(
41
+        (($uResult->getImaginary() == M_PI) ? -M_PI : $uResult->getImaginary()) * -0.5,
42
+        $uResult->getReal() * 0.5,
43
+        $complex->getSuffix()
44
+    );
45
+}

+ 38
- 0
vendor/markbaker/complex/classes/src/functions/atanh.php Visa fil

@@ -0,0 +1,38 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex atanh() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse hyperbolic tangent of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse hyperbolic tangent of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function atanh($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if ($complex->isReal()) {
24
+        $real = $complex->getReal();
25
+        if ($real >= -1.0 && $real <= 1.0) {
26
+            return new Complex(\atanh($real));
27
+        } else {
28
+            return new Complex(\atanh(1 / $real), (($real < 0.0) ? M_PI_2 : -1 * M_PI_2));
29
+        }
30
+    }
31
+
32
+    $iComplex = clone $complex;
33
+    $iComplex = $iComplex->invertImaginary()
34
+        ->reverse();
35
+    return atan($iComplex)
36
+        ->invertReal()
37
+        ->reverse();
38
+}

+ 28
- 0
vendor/markbaker/complex/classes/src/functions/conjugate.php Visa fil

@@ -0,0 +1,28 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex conjugate() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the complex conjugate of a complex number
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The conjugate of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function conjugate($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    return new Complex(
24
+        $complex->getReal(),
25
+        -1 * $complex->getImaginary(),
26
+        $complex->getSuffix()
27
+    );
28
+}

+ 34
- 0
vendor/markbaker/complex/classes/src/functions/cos.php Visa fil

@@ -0,0 +1,34 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex cos() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the cosine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The cosine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function cos($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if ($complex->isReal()) {
24
+        return new Complex(\cos($complex->getReal()));
25
+    }
26
+
27
+    return conjugate(
28
+        new Complex(
29
+            \cos($complex->getReal()) * \cosh($complex->getImaginary()),
30
+            \sin($complex->getReal()) * \sinh($complex->getImaginary()),
31
+            $complex->getSuffix()
32
+        )
33
+    );
34
+}

+ 32
- 0
vendor/markbaker/complex/classes/src/functions/cosh.php Visa fil

@@ -0,0 +1,32 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex cosh() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the hyperbolic cosine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The hyperbolic cosine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function cosh($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if ($complex->isReal()) {
24
+        return new Complex(\cosh($complex->getReal()));
25
+    }
26
+
27
+    return new Complex(
28
+        \cosh($complex->getReal()) * \cos($complex->getImaginary()),
29
+        \sinh($complex->getReal()) * \sin($complex->getImaginary()),
30
+        $complex->getSuffix()
31
+    );
32
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/cot.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex cot() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the cotangent of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The cotangent of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function cot($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        return new Complex(INF);
26
+    }
27
+
28
+    return inverse(tan($complex));
29
+}

+ 24
- 0
vendor/markbaker/complex/classes/src/functions/coth.php Visa fil

@@ -0,0 +1,24 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex coth() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the hyperbolic cotangent of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The hyperbolic cotangent of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function coth($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+    return inverse(tanh($complex));
24
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/csc.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex csc() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the cosecant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The cosecant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function csc($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        return INF;
26
+    }
27
+
28
+    return inverse(sin($complex));
29
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/csch.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex csch() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the hyperbolic cosecant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The hyperbolic cosecant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function csch($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        return INF;
26
+    }
27
+
28
+    return inverse(sinh($complex));
29
+}

+ 34
- 0
vendor/markbaker/complex/classes/src/functions/exp.php Visa fil

@@ -0,0 +1,34 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex exp() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the exponential of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The exponential of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function exp($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if (($complex->getReal() == 0.0) && (\abs($complex->getImaginary()) == M_PI)) {
24
+        return new Complex(-1.0, 0.0);
25
+    }
26
+
27
+    $rho = \exp($complex->getReal());
28
+ 
29
+    return new Complex(
30
+        $rho * \cos($complex->getImaginary()),
31
+        $rho * \sin($complex->getImaginary()),
32
+        $complex->getSuffix()
33
+    );
34
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/inverse.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex inverse() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the inverse of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The inverse of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function inverse($complex)
21
+{
22
+    $complex = clone Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
25
+        throw new \InvalidArgumentException('Division by zero');
26
+    }
27
+
28
+    return $complex->divideInto(1.0);
29
+}

+ 33
- 0
vendor/markbaker/complex/classes/src/functions/ln.php Visa fil

@@ -0,0 +1,33 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex ln() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the natural logarithm of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The natural logarithm of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException  If the real and the imaginary parts are both zero
19
+ */
20
+function ln($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if (($complex->getReal() == 0.0) && ($complex->getImaginary() == 0.0)) {
25
+        throw new \InvalidArgumentException();
26
+    }
27
+
28
+    return new Complex(
29
+        \log(rho($complex)),
30
+        theta($complex),
31
+        $complex->getSuffix()
32
+    );
33
+}

+ 32
- 0
vendor/markbaker/complex/classes/src/functions/log10.php Visa fil

@@ -0,0 +1,32 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex log10() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the common logarithm (base 10) of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The common logarithm (base 10) of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException  If the real and the imaginary parts are both zero
19
+ */
20
+function log10($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if (($complex->getReal() == 0.0) && ($complex->getImaginary() == 0.0)) {
25
+        throw new \InvalidArgumentException();
26
+    } elseif (($complex->getReal() > 0.0) && ($complex->getImaginary() == 0.0)) {
27
+        return new Complex(\log10($complex->getReal()), 0.0, $complex->getSuffix());
28
+    }
29
+
30
+    return ln($complex)
31
+        ->multiply(\log10(Complex::EULER));
32
+}

+ 32
- 0
vendor/markbaker/complex/classes/src/functions/log2.php Visa fil

@@ -0,0 +1,32 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex log2() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the base-2 logarithm of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The base-2 logarithm of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException  If the real and the imaginary parts are both zero
19
+ */
20
+function log2($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if (($complex->getReal() == 0.0) && ($complex->getImaginary() == 0.0)) {
25
+        throw new \InvalidArgumentException();
26
+    } elseif (($complex->getReal() > 0.0) && ($complex->getImaginary() == 0.0)) {
27
+        return new Complex(\log($complex->getReal(), 2), 0.0, $complex->getSuffix());
28
+    }
29
+
30
+    return ln($complex)
31
+        ->multiply(\log(Complex::EULER, 2));
32
+}

+ 31
- 0
vendor/markbaker/complex/classes/src/functions/negative.php Visa fil

@@ -0,0 +1,31 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex negative() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the negative of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    float            The negative value of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ *
19
+ * @see    rho
20
+ *
21
+ */
22
+function negative($complex)
23
+{
24
+    $complex = Complex::validateComplexArgument($complex);
25
+
26
+    return new Complex(
27
+        -1 * $complex->getReal(),
28
+        -1 * $complex->getImaginary(),
29
+        $complex->getSuffix()
30
+    );
31
+}

+ 40
- 0
vendor/markbaker/complex/classes/src/functions/pow.php Visa fil

@@ -0,0 +1,40 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex pow() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns a complex number raised to a power.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @param     float|integer    $power      The power to raise this value to
17
+ * @return    Complex          The complex argument raised to the real power.
18
+ * @throws    Exception        If the power argument isn't a valid real
19
+ */
20
+function pow($complex, $power)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if (!is_numeric($power)) {
25
+        throw new Exception('Power argument must be a real number');
26
+    }
27
+
28
+    if ($complex->getImaginary() == 0.0 && $complex->getReal() >= 0.0) {
29
+        return new Complex(\pow($complex->getReal(), $power));
30
+    }
31
+
32
+    $rValue = \sqrt(($complex->getReal() * $complex->getReal()) + ($complex->getImaginary() * $complex->getImaginary()));
33
+    $rPower = \pow($rValue, $power);
34
+    $theta = $complex->argument() * $power;
35
+    if ($theta == 0) {
36
+        return new Complex(1);
37
+    }
38
+
39
+    return new Complex($rPower * \cos($theta), $rPower * \sin($theta), $complex->getSuffix());
40
+}

+ 28
- 0
vendor/markbaker/complex/classes/src/functions/rho.php Visa fil

@@ -0,0 +1,28 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex rho() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the rho of a complex number.
14
+ * This is the distance/radius from the centrepoint to the representation of the number in polar coordinates.
15
+ *
16
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
17
+ * @return    float            The rho value of the complex argument.
18
+ * @throws    Exception        If argument isn't a valid real or complex number.
19
+ */
20
+function rho($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    return \sqrt(
25
+        ($complex->getReal() * $complex->getReal()) +
26
+        ($complex->getImaginary() * $complex->getImaginary())
27
+    );
28
+}

+ 25
- 0
vendor/markbaker/complex/classes/src/functions/sec.php Visa fil

@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex sec() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the secant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The secant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function sec($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    return inverse(cos($complex));
25
+}

+ 25
- 0
vendor/markbaker/complex/classes/src/functions/sech.php Visa fil

@@ -0,0 +1,25 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex sech() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the hyperbolic secant of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The hyperbolic secant of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function sech($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    return inverse(cosh($complex));
25
+}

+ 32
- 0
vendor/markbaker/complex/classes/src/functions/sin.php Visa fil

@@ -0,0 +1,32 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex sin() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the sine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The sine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function sin($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if ($complex->isReal()) {
24
+        return new Complex(\sin($complex->getReal()));
25
+    }
26
+
27
+    return new Complex(
28
+        \sin($complex->getReal()) * \cosh($complex->getImaginary()),
29
+        \cos($complex->getReal()) * \sinh($complex->getImaginary()),
30
+        $complex->getSuffix()
31
+    );
32
+}

+ 32
- 0
vendor/markbaker/complex/classes/src/functions/sinh.php Visa fil

@@ -0,0 +1,32 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex sinh() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the hyperbolic sine of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The hyperbolic sine of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function sinh($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    if ($complex->isReal()) {
24
+        return new Complex(\sinh($complex->getReal()));
25
+    }
26
+
27
+    return new Complex(
28
+        \sinh($complex->getReal()) * \cos($complex->getImaginary()),
29
+        \cosh($complex->getReal()) * \sin($complex->getImaginary()),
30
+        $complex->getSuffix()
31
+    );
32
+}

+ 29
- 0
vendor/markbaker/complex/classes/src/functions/sqrt.php Visa fil

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex sqrt() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the square root of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The Square root of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ */
19
+function sqrt($complex)
20
+{
21
+    $complex = Complex::validateComplexArgument($complex);
22
+
23
+    $theta = theta($complex);
24
+    $delta1 = \cos($theta / 2);
25
+    $delta2 = \sin($theta / 2);
26
+    $rho = \sqrt(rho($complex));
27
+
28
+    return new Complex($delta1 * $rho, $delta2 * $rho, $complex->getSuffix());
29
+}

+ 40
- 0
vendor/markbaker/complex/classes/src/functions/tan.php Visa fil

@@ -0,0 +1,40 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex tan() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the tangent of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The tangent of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function tan($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->isReal()) {
25
+        return new Complex(\tan($complex->getReal()));
26
+    }
27
+
28
+    $real = $complex->getReal();
29
+    $imaginary = $complex->getImaginary();
30
+    $divisor = 1 + \pow(\tan($real), 2) * \pow(\tanh($imaginary), 2);
31
+    if ($divisor == 0.0) {
32
+        throw new \InvalidArgumentException('Division by zero');
33
+    }
34
+
35
+    return new Complex(
36
+        \pow(sech($imaginary)->getReal(), 2) * \tan($real) / $divisor,
37
+        \pow(sec($real)->getReal(), 2) * \tanh($imaginary) / $divisor,
38
+        $complex->getSuffix()
39
+    );
40
+}

+ 35
- 0
vendor/markbaker/complex/classes/src/functions/tanh.php Visa fil

@@ -0,0 +1,35 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex tanh() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the hyperbolic tangent of a complex number.
14
+ *
15
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
16
+ * @return    Complex          The hyperbolic tangent of the complex argument.
17
+ * @throws    Exception        If argument isn't a valid real or complex number.
18
+ * @throws    \InvalidArgumentException    If function would result in a division by zero
19
+ */
20
+function tanh($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+    $real = $complex->getReal();
24
+    $imaginary = $complex->getImaginary();
25
+    $divisor = \cos($imaginary) * \cos($imaginary) + \sinh($real) * \sinh($real);
26
+    if ($divisor == 0.0) {
27
+        throw new \InvalidArgumentException('Division by zero');
28
+    }
29
+
30
+    return new Complex(
31
+        \sinh($real) * \cosh($real) / $divisor,
32
+        0.5 * \sin(2 * $imaginary) / $divisor,
33
+        $complex->getSuffix()
34
+    );
35
+}

+ 38
- 0
vendor/markbaker/complex/classes/src/functions/theta.php Visa fil

@@ -0,0 +1,38 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex theta() function
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Returns the theta of a complex number.
14
+ *   This is the angle in radians from the real axis to the representation of the number in polar coordinates.
15
+ *
16
+ * @param     Complex|mixed    $complex    Complex number or a numeric value.
17
+ * @return    float            The theta value of the complex argument.
18
+ * @throws    Exception        If argument isn't a valid real or complex number.
19
+ */
20
+function theta($complex)
21
+{
22
+    $complex = Complex::validateComplexArgument($complex);
23
+
24
+    if ($complex->getReal() == 0.0) {
25
+        if ($complex->isReal()) {
26
+            return 0.0;
27
+        } elseif ($complex->getImaginary() < 0.0) {
28
+            return M_PI / -2;
29
+        }
30
+        return M_PI / 2;
31
+    } elseif ($complex->getReal() > 0.0) {
32
+        return \atan($complex->getImaginary() / $complex->getReal());
33
+    } elseif ($complex->getImaginary() < 0.0) {
34
+        return -(M_PI - \atan(\abs($complex->getImaginary()) / \abs($complex->getReal())));
35
+    }
36
+
37
+    return M_PI - \atan($complex->getImaginary() / \abs($complex->getReal()));
38
+}

+ 46
- 0
vendor/markbaker/complex/classes/src/operations/add.php Visa fil

@@ -0,0 +1,46 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex addition operation
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Adds two or more complex numbers
14
+ *
15
+ * @param     array of string|integer|float|Complex    $complexValues   The numbers to add
16
+ * @return    Complex
17
+ */
18
+function add(...$complexValues)
19
+{
20
+    if (count($complexValues) < 2) {
21
+        throw new \Exception('This function requires at least 2 arguments');
22
+    }
23
+
24
+    $base = array_shift($complexValues);
25
+    $result = clone Complex::validateComplexArgument($base);
26
+
27
+    foreach ($complexValues as $complex) {
28
+        $complex = Complex::validateComplexArgument($complex);
29
+
30
+        if ($result->isComplex() && $complex->isComplex() &&
31
+            $result->getSuffix() !== $complex->getSuffix()) {
32
+            throw new Exception('Suffix Mismatch');
33
+        }
34
+
35
+        $real = $result->getReal() + $complex->getReal();
36
+        $imaginary = $result->getImaginary() + $complex->getImaginary();
37
+
38
+        $result = new Complex(
39
+            $real,
40
+            $imaginary,
41
+            ($imaginary == 0.0) ? null : max($result->getSuffix(), $complex->getSuffix())
42
+        );
43
+    }
44
+
45
+    return $result;
46
+}

+ 56
- 0
vendor/markbaker/complex/classes/src/operations/divideby.php Visa fil

@@ -0,0 +1,56 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex division operation
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Divides two or more complex numbers
14
+ *
15
+ * @param     array of string|integer|float|Complex    $complexValues   The numbers to divide
16
+ * @return    Complex
17
+ */
18
+function divideby(...$complexValues)
19
+{
20
+    if (count($complexValues) < 2) {
21
+        throw new \Exception('This function requires at least 2 arguments');
22
+    }
23
+
24
+    $base = array_shift($complexValues);
25
+    $result = clone Complex::validateComplexArgument($base);
26
+
27
+    foreach ($complexValues as $complex) {
28
+        $complex = Complex::validateComplexArgument($complex);
29
+
30
+        if ($result->isComplex() && $complex->isComplex() &&
31
+            $result->getSuffix() !== $complex->getSuffix()) {
32
+            throw new Exception('Suffix Mismatch');
33
+        }
34
+        if ($complex->getReal() == 0.0 && $complex->getImaginary() == 0.0) {
35
+            throw new \InvalidArgumentException('Division by zero');
36
+        }
37
+
38
+        $delta1 = ($result->getReal() * $complex->getReal()) +
39
+            ($result->getImaginary() * $complex->getImaginary());
40
+        $delta2 = ($result->getImaginary() * $complex->getReal()) -
41
+            ($result->getReal() * $complex->getImaginary());
42
+        $delta3 = ($complex->getReal() * $complex->getReal()) +
43
+            ($complex->getImaginary() * $complex->getImaginary());
44
+
45
+        $real = $delta1 / $delta3;
46
+        $imaginary = $delta2 / $delta3;
47
+
48
+        $result = new Complex(
49
+            $real,
50
+            $imaginary,
51
+            ($imaginary == 0.0) ? null : max($result->getSuffix(), $complex->getSuffix())
52
+        );
53
+    }
54
+
55
+    return $result;
56
+}

+ 56
- 0
vendor/markbaker/complex/classes/src/operations/divideinto.php Visa fil

@@ -0,0 +1,56 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex division operation
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Divides two or more complex numbers
14
+ *
15
+ * @param     array of string|integer|float|Complex    $complexValues   The numbers to divide
16
+ * @return    Complex
17
+ */
18
+function divideinto(...$complexValues)
19
+{
20
+    if (count($complexValues) < 2) {
21
+        throw new \Exception('This function requires at least 2 arguments');
22
+    }
23
+
24
+    $base = array_shift($complexValues);
25
+    $result = clone Complex::validateComplexArgument($base);
26
+
27
+    foreach ($complexValues as $complex) {
28
+        $complex = Complex::validateComplexArgument($complex);
29
+
30
+        if ($result->isComplex() && $complex->isComplex() &&
31
+            $result->getSuffix() !== $complex->getSuffix()) {
32
+            throw new Exception('Suffix Mismatch');
33
+        }
34
+        if ($result->getReal() == 0.0 && $result->getImaginary() == 0.0) {
35
+            throw new \InvalidArgumentException('Division by zero');
36
+        }
37
+
38
+        $delta1 = ($complex->getReal() * $result->getReal()) +
39
+            ($complex->getImaginary() * $result->getImaginary());
40
+        $delta2 = ($complex->getImaginary() * $result->getReal()) -
41
+            ($complex->getReal() * $result->getImaginary());
42
+        $delta3 = ($result->getReal() * $result->getReal()) +
43
+            ($result->getImaginary() * $result->getImaginary());
44
+
45
+        $real = $delta1 / $delta3;
46
+        $imaginary = $delta2 / $delta3;
47
+
48
+        $result = new Complex(
49
+            $real,
50
+            $imaginary,
51
+            ($imaginary == 0.0) ? null : max($result->getSuffix(), $complex->getSuffix())
52
+        );
53
+    }
54
+
55
+    return $result;
56
+}

+ 48
- 0
vendor/markbaker/complex/classes/src/operations/multiply.php Visa fil

@@ -0,0 +1,48 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex multiplication operation
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Multiplies two or more complex numbers
14
+ *
15
+ * @param     array of string|integer|float|Complex    $complexValues   The numbers to multiply
16
+ * @return    Complex
17
+ */
18
+function multiply(...$complexValues)
19
+{
20
+    if (count($complexValues) < 2) {
21
+        throw new \Exception('This function requires at least 2 arguments');
22
+    }
23
+
24
+    $base = array_shift($complexValues);
25
+    $result = clone Complex::validateComplexArgument($base);
26
+
27
+    foreach ($complexValues as $complex) {
28
+        $complex = Complex::validateComplexArgument($complex);
29
+
30
+        if ($result->isComplex() && $complex->isComplex() &&
31
+            $result->getSuffix() !== $complex->getSuffix()) {
32
+            throw new Exception('Suffix Mismatch');
33
+        }
34
+
35
+        $real = ($result->getReal() * $complex->getReal()) -
36
+            ($result->getImaginary() * $complex->getImaginary());
37
+        $imaginary = ($result->getReal() * $complex->getImaginary()) +
38
+            ($result->getImaginary() * $complex->getReal());
39
+
40
+        $result = new Complex(
41
+            $real,
42
+            $imaginary,
43
+            ($imaginary == 0.0) ? null : max($result->getSuffix(), $complex->getSuffix())
44
+        );
45
+    }
46
+
47
+    return $result;
48
+}

+ 46
- 0
vendor/markbaker/complex/classes/src/operations/subtract.php Visa fil

@@ -0,0 +1,46 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Function code for the complex subtraction operation
6
+ *
7
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPComplex)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+namespace Complex;
11
+
12
+/**
13
+ * Subtracts two or more complex numbers
14
+ *
15
+ * @param     array of string|integer|float|Complex    $complexValues   The numbers to subtract
16
+ * @return    Complex
17
+ */
18
+function subtract(...$complexValues)
19
+{
20
+    if (count($complexValues) < 2) {
21
+        throw new \Exception('This function requires at least 2 arguments');
22
+    }
23
+
24
+    $base = array_shift($complexValues);
25
+    $result = clone Complex::validateComplexArgument($base);
26
+
27
+    foreach ($complexValues as $complex) {
28
+        $complex = Complex::validateComplexArgument($complex);
29
+
30
+        if ($result->isComplex() && $complex->isComplex() &&
31
+            $result->getSuffix() !== $complex->getSuffix()) {
32
+            throw new Exception('Suffix Mismatch');
33
+        }
34
+
35
+        $real = $result->getReal() - $complex->getReal();
36
+        $imaginary = $result->getImaginary() - $complex->getImaginary();
37
+
38
+        $result = new Complex(
39
+            $real,
40
+            $imaginary,
41
+            ($imaginary == 0.0) ? null : max($result->getSuffix(), $complex->getSuffix())
42
+        );
43
+    }
44
+
45
+    return $result;
46
+}

+ 94
- 0
vendor/markbaker/complex/composer.json Visa fil

@@ -0,0 +1,94 @@
1
+{
2
+    "name": "markbaker/complex",
3
+    "type": "library",
4
+    "description": "PHP Class for working with complex numbers",
5
+    "keywords": ["complex", "mathematics"],
6
+    "homepage": "https://github.com/MarkBaker/PHPComplex",
7
+    "license": "MIT",
8
+    "authors": [
9
+        {
10
+            "name": "Mark Baker",
11
+            "email": "mark@lange.demon.co.uk"
12
+        }
13
+    ],
14
+    "require": {
15
+        "php": "^5.6.0|^7.0"
16
+    },
17
+    "require-dev": {
18
+        "phpunit/phpunit": "^4.8.35|^5.0|^6.0|^7.0",
19
+        "phpdocumentor/phpdocumentor":"2.*",
20
+        "phpmd/phpmd": "2.*",
21
+        "sebastian/phpcpd": "2.*",
22
+        "phploc/phploc": "^4.0|^5.0|^6.0|^7.0",
23
+        "squizlabs/php_codesniffer": "^3.4.0",
24
+        "phpcompatibility/php-compatibility": "^9.0",
25
+        "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0"
26
+    },
27
+    "autoload": {
28
+        "psr-4": {
29
+            "Complex\\": "classes/src/"
30
+        },
31
+        "files": [
32
+            "classes/src/functions/abs.php",
33
+            "classes/src/functions/acos.php",
34
+            "classes/src/functions/acosh.php",
35
+            "classes/src/functions/acot.php",
36
+            "classes/src/functions/acoth.php",
37
+            "classes/src/functions/acsc.php",
38
+            "classes/src/functions/acsch.php",
39
+            "classes/src/functions/argument.php",
40
+            "classes/src/functions/asec.php",
41
+            "classes/src/functions/asech.php",
42
+            "classes/src/functions/asin.php",
43
+            "classes/src/functions/asinh.php",
44
+            "classes/src/functions/atan.php",
45
+            "classes/src/functions/atanh.php",
46
+            "classes/src/functions/conjugate.php",
47
+            "classes/src/functions/cos.php",
48
+            "classes/src/functions/cosh.php",
49
+            "classes/src/functions/cot.php",
50
+            "classes/src/functions/coth.php",
51
+            "classes/src/functions/csc.php",
52
+            "classes/src/functions/csch.php",
53
+            "classes/src/functions/exp.php",
54
+            "classes/src/functions/inverse.php",
55
+            "classes/src/functions/ln.php",
56
+            "classes/src/functions/log2.php",
57
+            "classes/src/functions/log10.php",
58
+            "classes/src/functions/negative.php",
59
+            "classes/src/functions/pow.php",
60
+            "classes/src/functions/rho.php",
61
+            "classes/src/functions/sec.php",
62
+            "classes/src/functions/sech.php",
63
+            "classes/src/functions/sin.php",
64
+            "classes/src/functions/sinh.php",
65
+            "classes/src/functions/sqrt.php",
66
+            "classes/src/functions/tan.php",
67
+            "classes/src/functions/tanh.php",
68
+            "classes/src/functions/theta.php",
69
+            "classes/src/operations/add.php",
70
+            "classes/src/operations/subtract.php",
71
+            "classes/src/operations/multiply.php",
72
+            "classes/src/operations/divideby.php",
73
+            "classes/src/operations/divideinto.php"
74
+        ]
75
+    },
76
+    "scripts": {
77
+        "style": [
78
+            "phpcs --report-width=200 --report=summary,full -n"
79
+        ],
80
+        "mess": [
81
+            "phpmd classes/src/ xml codesize,unusedcode,design,naming -n"
82
+        ],
83
+        "lines": [
84
+            "phploc classes/src/ -n"
85
+        ],
86
+        "cpd": [
87
+            "phpcpd classes/src/ -n"
88
+        ],
89
+        "versions": [
90
+            "phpcs --report-width=200 --report=summary,full classes/src/ --standard=PHPCompatibility --runtime-set testVersion 5.6- -n"
91
+        ]
92
+    },
93
+    "minimum-stability": "dev"
94
+}

+ 154
- 0
vendor/markbaker/complex/examples/complexTest.php Visa fil

@@ -0,0 +1,154 @@
1
+<?php
2
+
3
+use Complex\Complex as Complex;
4
+
5
+include('../classes/Bootstrap.php');
6
+
7
+echo 'Create', PHP_EOL;
8
+
9
+$x = new Complex(123);
10
+echo $x, PHP_EOL;
11
+
12
+$x = new Complex(123, 456);
13
+echo $x, PHP_EOL;
14
+
15
+$x = new Complex(array(123,456,'j'));
16
+echo $x, PHP_EOL;
17
+
18
+$x = new Complex('1.23e-4--2.34e-5i');
19
+echo $x, PHP_EOL;
20
+
21
+
22
+echo PHP_EOL, 'Add', PHP_EOL;
23
+
24
+$x = new Complex(123);
25
+$x->add(456);
26
+echo $x, PHP_EOL;
27
+
28
+$x = new Complex(123.456);
29
+$x->add(789.012);
30
+echo $x, PHP_EOL;
31
+
32
+$x = new Complex(123.456, 78.90);
33
+$x->add(new Complex(-987.654, -32.1));
34
+echo $x, PHP_EOL;
35
+
36
+$x = new Complex(123.456, 78.90);
37
+$x->add(-987.654);
38
+echo $x, PHP_EOL;
39
+
40
+$x = new Complex(-987.654, -32.1);
41
+$x->add(new Complex(0, 1));
42
+echo $x, PHP_EOL;
43
+
44
+$x = new Complex(-987.654, -32.1);
45
+$x->add(new Complex(0, -1));
46
+echo $x, PHP_EOL;
47
+
48
+
49
+echo PHP_EOL, 'Subtract', PHP_EOL;
50
+
51
+$x = new Complex(123);
52
+$x->subtract(456);
53
+echo $x, PHP_EOL;
54
+
55
+$x = new Complex(123.456);
56
+$x->subtract(789.012);
57
+echo $x, PHP_EOL;
58
+
59
+$x = new Complex(123.456, 78.90);
60
+$x->subtract(new Complex(-987.654, -32.1));
61
+echo $x, PHP_EOL;
62
+
63
+$x = new Complex(123.456, 78.90);
64
+$x->subtract(-987.654);
65
+echo $x, PHP_EOL;
66
+
67
+$x = new Complex(-987.654, -32.1);
68
+$x->subtract(new Complex(0, 1));
69
+echo $x, PHP_EOL;
70
+
71
+$x = new Complex(-987.654, -32.1);
72
+$x->subtract(new Complex(0, -1));
73
+echo $x, PHP_EOL;
74
+
75
+
76
+echo PHP_EOL, 'Multiply', PHP_EOL;
77
+
78
+$x = new Complex(123);
79
+$x->multiply(456);
80
+echo $x, PHP_EOL;
81
+
82
+$x = new Complex(123.456);
83
+$x->multiply(789.012);
84
+echo $x, PHP_EOL;
85
+
86
+$x = new Complex(123.456, 78.90);
87
+$x->multiply(new Complex(-987.654, -32.1));
88
+echo $x, PHP_EOL;
89
+
90
+$x = new Complex(123.456, 78.90);
91
+$x->multiply(-987.654);
92
+echo $x, PHP_EOL;
93
+
94
+$x = new Complex(-987.654, -32.1);
95
+$x->multiply(new Complex(0, 1));
96
+echo $x, PHP_EOL;
97
+
98
+$x = new Complex(-987.654, -32.1);
99
+$x->multiply(new Complex(0, -1));
100
+echo $x, PHP_EOL;
101
+
102
+
103
+echo PHP_EOL, 'Divide By', PHP_EOL;
104
+
105
+$x = new Complex(123);
106
+$x->divideBy(456);
107
+echo $x, PHP_EOL;
108
+
109
+$x = new Complex(123.456);
110
+$x->divideBy(789.012);
111
+echo $x, PHP_EOL;
112
+
113
+$x = new Complex(123.456, 78.90);
114
+$x->divideBy(new Complex(-987.654, -32.1));
115
+echo $x, PHP_EOL;
116
+
117
+$x = new Complex(123.456, 78.90);
118
+$x->divideBy(-987.654);
119
+echo $x, PHP_EOL;
120
+
121
+$x = new Complex(-987.654, -32.1);
122
+$x->divideBy(new Complex(0, 1));
123
+echo $x, PHP_EOL;
124
+
125
+$x = new Complex(-987.654, -32.1);
126
+$x->divideBy(new Complex(0, -1));
127
+echo $x, PHP_EOL;
128
+
129
+
130
+echo PHP_EOL, 'Divide Into', PHP_EOL;
131
+
132
+$x = new Complex(123);
133
+$x->divideInto(456);
134
+echo $x, PHP_EOL;
135
+
136
+$x = new Complex(123.456);
137
+$x->divideInto(789.012);
138
+echo $x, PHP_EOL;
139
+
140
+$x = new Complex(123.456, 78.90);
141
+$x->divideInto(new Complex(-987.654, -32.1));
142
+echo $x, PHP_EOL;
143
+
144
+$x = new Complex(123.456, 78.90);
145
+$x->divideInto(-987.654);
146
+echo $x, PHP_EOL;
147
+
148
+$x = new Complex(-987.654, -32.1);
149
+$x->divideInto(new Complex(0, 1));
150
+echo $x, PHP_EOL;
151
+
152
+$x = new Complex(-987.654, -32.1);
153
+$x->divideInto(new Complex(0, -1));
154
+echo $x, PHP_EOL;

+ 52
- 0
vendor/markbaker/complex/examples/testFunctions.php Visa fil

@@ -0,0 +1,52 @@
1
+<?php
2
+
3
+namespace Complex;
4
+
5
+include('../classes/Bootstrap.php');
6
+
7
+echo 'Function Examples', PHP_EOL;
8
+
9
+$functions = array(
10
+    'abs',
11
+    'acos',
12
+    'acosh',
13
+    'acsc',
14
+    'acsch',
15
+    'argument',
16
+    'asec',
17
+    'asech',
18
+    'asin',
19
+    'asinh',
20
+    'conjugate',
21
+    'cos',
22
+    'cosh',
23
+    'csc',
24
+    'csch',
25
+    'exp',
26
+    'inverse',
27
+    'ln',
28
+    'log2',
29
+    'log10',
30
+    'rho',
31
+    'sec',
32
+    'sech',
33
+    'sin',
34
+    'sinh',
35
+    'sqrt',
36
+    'theta'
37
+);
38
+
39
+for ($real = -3.5; $real <= 3.5; $real += 0.5) {
40
+    for ($imaginary = -3.5; $imaginary <= 3.5; $imaginary += 0.5) {
41
+        foreach ($functions as $function) {
42
+            $complexFunction = __NAMESPACE__ . '\\' . $function;
43
+            $complex = new Complex($real, $imaginary);
44
+            try {
45
+                echo $function, '(', $complex, ') = ', $complexFunction($complex), PHP_EOL;
46
+            } catch (\Exception $e) {
47
+                echo $function, '(', $complex, ') ERROR: ', $e->getMessage(), PHP_EOL;
48
+            }
49
+        }
50
+        echo PHP_EOL;
51
+    }
52
+}

+ 34
- 0
vendor/markbaker/complex/examples/testOperations.php Visa fil

@@ -0,0 +1,34 @@
1
+<?php
2
+
3
+use Complex\Complex as Complex;
4
+
5
+include('../classes/Bootstrap.php');
6
+
7
+$values = [
8
+    new Complex(123),
9
+    new Complex(456, 123),
10
+    new Complex(0.0, 456),
11
+];
12
+
13
+foreach ($values as $value) {
14
+    echo $value, PHP_EOL;
15
+}
16
+
17
+echo 'Addition', PHP_EOL;
18
+
19
+$result = \Complex\add(...$values);
20
+echo '=> ', $result, PHP_EOL;
21
+
22
+echo PHP_EOL;
23
+
24
+echo 'Subtraction', PHP_EOL;
25
+
26
+$result = \Complex\subtract(...$values);
27
+echo '=> ', $result, PHP_EOL;
28
+
29
+echo PHP_EOL;
30
+
31
+echo 'Multiplication', PHP_EOL;
32
+
33
+$result = \Complex\multiply(...$values);
34
+echo '=> ', $result, PHP_EOL;

+ 25
- 0
vendor/markbaker/complex/license.md Visa fil

@@ -0,0 +1,25 @@
1
+The MIT License (MIT)
2
+=====================
3
+
4
+Copyright © `2017` `Mark Baker`
5
+
6
+Permission is hereby granted, free of charge, to any person
7
+obtaining a copy of this software and associated documentation
8
+files (the “Software”), to deal in the Software without
9
+restriction, including without limitation the rights to use,
10
+copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+copies of the Software, and to permit persons to whom the
12
+Software is furnished to do so, subject to the following
13
+conditions:
14
+
15
+The above copyright notice and this permission notice shall be
16
+included in all copies or substantial portions of the Software.
17
+
18
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
19
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25
+OTHER DEALINGS IN THE SOFTWARE.

+ 112
- 0
vendor/markbaker/matrix/.github/workflows/main.yaml Visa fil

@@ -0,0 +1,112 @@
1
+name: main
2
+on: [ push, pull_request ]
3
+jobs:
4
+  test:
5
+    runs-on: ubuntu-latest
6
+    strategy:
7
+      matrix:
8
+        php-version:
9
+          - '5.6'
10
+          - '7.0'
11
+          - '7.1'
12
+          - '7.2'
13
+          - '7.3'
14
+          - '7.4'
15
+
16
+    name: PHP ${{ matrix.php-version }}
17
+
18
+    steps:
19
+      - name: Checkout
20
+        uses: actions/checkout@v2
21
+
22
+      - name: Setup PHP, with composer and extensions
23
+        uses: shivammathur/setup-php@v2
24
+        with:
25
+          php-version: ${{ matrix.php-version }}
26
+          extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
27
+          coverage: none
28
+
29
+      - name: Get composer cache directory
30
+        id: composer-cache
31
+        run: echo "::set-output name=dir::$(composer config cache-files-dir)"
32
+
33
+      - name: Cache composer dependencies
34
+        uses: actions/cache@v2
35
+        with:
36
+          path: ${{ steps.composer-cache.outputs.dir }}
37
+          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
38
+          restore-keys: ${{ runner.os }}-composer-
39
+
40
+      - name: Install dependencies
41
+        run: composer install --no-progress --prefer-dist --optimize-autoloader ${{ steps.composer-lock.outputs.flags }}
42
+
43
+      - name: Setup problem matchers for PHP
44
+        run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
45
+
46
+      - name: Setup problem matchers for PHPUnit
47
+        run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
48
+
49
+      - name: Test with PHPUnit
50
+        run: ./vendor/bin/phpunit
51
+
52
+  phpcs:
53
+    runs-on: ubuntu-latest
54
+    steps:
55
+      - name: Checkout
56
+        uses: actions/checkout@v2
57
+
58
+      - name: Setup PHP, with composer and extensions
59
+        uses: shivammathur/setup-php@v2
60
+        with:
61
+          php-version: 7.4
62
+          extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
63
+          coverage: none
64
+          tools: cs2pr
65
+
66
+      - name: Get composer cache directory
67
+        id: composer-cache
68
+        run: echo "::set-output name=dir::$(composer config cache-files-dir)"
69
+
70
+      - name: Cache composer dependencies
71
+        uses: actions/cache@v2
72
+        with:
73
+          path: ${{ steps.composer-cache.outputs.dir }}
74
+          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
75
+          restore-keys: ${{ runner.os }}-composer-
76
+
77
+      - name: Install dependencies
78
+        run: composer install --no-progress --prefer-dist --optimize-autoloader
79
+
80
+      - name: Code style with PHP_CodeSniffer
81
+        run: ./vendor/bin/phpcs -q --report=checkstyle | cs2pr --graceful-warnings --colorize
82
+
83
+  coverage:
84
+    runs-on: ubuntu-latest
85
+    steps:
86
+      - name: Checkout
87
+        uses: actions/checkout@v2
88
+
89
+      - name: Setup PHP, with composer and extensions
90
+        uses: shivammathur/setup-php@v2
91
+        with:
92
+          php-version: 7.4
93
+          extensions: ctype, dom, gd, iconv, fileinfo, libxml, mbstring, simplexml, xml, xmlreader, xmlwriter, zip, zlib
94
+          coverage: pcov
95
+
96
+      - name: Get composer cache directory
97
+        id: composer-cache
98
+        run: echo "::set-output name=dir::$(composer config cache-files-dir)"
99
+
100
+      - name: Cache composer dependencies
101
+        uses: actions/cache@v2
102
+        with:
103
+          path: ${{ steps.composer-cache.outputs.dir }}
104
+          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
105
+          restore-keys: ${{ runner.os }}-composer-
106
+
107
+      - name: Install dependencies
108
+        run: composer install --no-progress --prefer-dist --optimize-autoloader
109
+
110
+      - name: Coverage
111
+        run: |
112
+          ./vendor/bin/phpunit --coverage-text

+ 207
- 0
vendor/markbaker/matrix/README.md Visa fil

@@ -0,0 +1,207 @@
1
+PHPMatrix
2
+==========
3
+
4
+---
5
+
6
+PHP Class for handling Matrices
7
+
8
+[![Build Status](https://travis-ci.org/MarkBaker/PHPMatrix.png?branch=1.2)](http://travis-ci.org/MarkBaker/PHPMatrix)
9
+
10
+[![Matrix Transform](https://imgs.xkcd.com/comics/matrix_transform.png)](https://xkcd.com/184/)
11
+
12
+Matrix Transform
13
+
14
+---
15
+
16
+This library currently provides the following operations:
17
+
18
+- addition
19
+- direct sum
20
+- subtraction
21
+- multiplication
22
+- division (using [A].[B]<sup>-1</sup>)
23
+   - division by
24
+   - division into
25
+
26
+together with functions for
27
+
28
+- adjoint
29
+- antidiagonal
30
+- cofactors
31
+- determinant
32
+- diagonal
33
+- identity
34
+- inverse
35
+- minors
36
+- trace
37
+- transpose
38
+- solve
39
+
40
+  Given Matrices A and B, calculate X for A.X = B
41
+
42
+and classes for
43
+
44
+- Decomposition
45
+   - LU Decomposition with partial row pivoting,
46
+
47
+     such that [P].[A] = [L].[U] and [A] = [P]<sup>|</sup>.[L].[U]
48
+   - QR Decomposition
49
+
50
+     such that [A] = [Q].[R]
51
+
52
+## TO DO
53
+
54
+- power() function
55
+- Decomposition
56
+    - Cholesky Decomposition
57
+    - EigenValue Decomposition
58
+        - EigenValues
59
+        - EigenVectors
60
+
61
+---
62
+
63
+# Usage
64
+
65
+To create a new Matrix object, provide an array as the constructor argument
66
+
67
+```php
68
+$grid = [
69
+    [16,  3,  2, 13],
70
+    [ 5, 10, 11,  8],
71
+    [ 9,  6,  7, 12],
72
+    [ 4, 15, 14,  1],
73
+];
74
+
75
+$matrix = new Matrix\Matrix($grid);
76
+```
77
+The `Builder` class provides helper methods for creating specific matrices, specifically an identity matrix of a specified size; or a matrix of a specified dimensions, with every cell containing a set value.
78
+```php
79
+$matrix = Matrix\Builder::createFilledMatrix(1, 5, 3);
80
+```
81
+Will create a matrix of 5 rows and 3 columns, filled with a `1` in every cell; while
82
+```php
83
+$matrix = Matrix\Builder::createIdentityMatrix(3);
84
+```
85
+will create a 3x3 identity matrix.
86
+
87
+
88
+Matrix objects are immutable: whenever you call a method or pass a grid to a function that returns a matrix value, a new Matrix object will be returned, and the original will remain unchanged. This also allows you to chain multiple methods as you would for a fluent interface (as long as they are methods that will return a Matrix result).
89
+
90
+## Performing Mathematical Operations
91
+
92
+To perform mathematical operations with Matrices, you can call the appropriate method against a matrix value, passing other values as arguments
93
+
94
+```php
95
+$matrix1 = new Matrix\Matrix([
96
+    [2, 7, 6],
97
+    [9, 5, 1],
98
+    [4, 3, 8],
99
+]);
100
+$matrix2 = new Matrix\Matrix([
101
+    [1, 2, 3],
102
+    [4, 5, 6],
103
+    [7, 8, 9],
104
+]);
105
+
106
+var_dump($matrix1->multiply($matrix2)->toArray());
107
+```
108
+or pass all values to the appropriate function
109
+```php
110
+$matrix1 = new Matrix\Matrix([
111
+    [2, 7, 6],
112
+    [9, 5, 1],
113
+    [4, 3, 8],
114
+]);
115
+$matrix2 = new Matrix\Matrix([
116
+    [1, 2, 3],
117
+    [4, 5, 6],
118
+    [7, 8, 9],
119
+]);
120
+
121
+var_dump(Matrix\multiply($matrix1, $matrix2)->toArray());
122
+```
123
+You can pass in the arguments as Matrix objects, or as arrays.
124
+
125
+If you want to perform the same operation against multiple values (e.g. to add three or more matrices), then you can pass multiple arguments to any of the operations.
126
+
127
+## Using functions
128
+
129
+When calling any of the available functions for a matrix value, you can either call the relevant method for the Matrix object
130
+```php
131
+$grid = [
132
+    [16,  3,  2, 13],
133
+    [ 5, 10, 11,  8],
134
+    [ 9,  6,  7, 12],
135
+    [ 4, 15, 14,  1],
136
+];
137
+
138
+$matrix = new Matrix\Matrix($grid);
139
+
140
+echo $matrix->trace();
141
+```
142
+or you can call the function as you would in procedural code, passing the Matrix object as an argument
143
+```php
144
+$grid = [
145
+    [16,  3,  2, 13],
146
+    [ 5, 10, 11,  8],
147
+    [ 9,  6,  7, 12],
148
+    [ 4, 15, 14,  1],
149
+];
150
+
151
+$matrix = new Matrix\Matrix($grid);
152
+echo Matrix\trace($matrix);
153
+```
154
+When called procedurally using the function, you can pass in the argument as a Matrix object, or as an array.
155
+```php
156
+$grid = [
157
+    [16,  3,  2, 13],
158
+    [ 5, 10, 11,  8],
159
+    [ 9,  6,  7, 12],
160
+    [ 4, 15, 14,  1],
161
+];
162
+
163
+echo Matrix\trace($grid);
164
+```
165
+As an alternative, it is also possible to call the method directly from the `Functions` class.
166
+```php
167
+$grid = [
168
+    [16,  3,  2, 13],
169
+    [ 5, 10, 11,  8],
170
+    [ 9,  6,  7, 12],
171
+    [ 4, 15, 14,  1],
172
+];
173
+
174
+$matrix = new Matrix\Matrix($grid);
175
+echo Matrix\Functions::trace($matrix);
176
+```
177
+Used this way, methods must be called statically, and the argument must be the Matrix object, and cannot be an array.
178
+
179
+## Decomposition
180
+
181
+The library also provides classes for matrix decomposition. You can access these using
182
+```php
183
+$grid = [
184
+    [1, 2],
185
+    [3, 4],
186
+];
187
+
188
+$matrix = new Matrix\Matrix($grid);
189
+
190
+$decomposition = new Matrix\Decomposition\QR($matrix);
191
+$Q = $decomposition->getQ();
192
+$R = $decomposition->getR();
193
+```
194
+
195
+or alternatively us the `Decomposition` factory, identifying which form of decomposition you want to use
196
+```php
197
+$grid = [
198
+    [1, 2],
199
+    [3, 4],
200
+];
201
+
202
+$matrix = new Matrix\Matrix($grid);
203
+
204
+$decomposition = Matrix\Decomposition\Decomposition::decomposition(Matrix\Decomposition\Decomposition::QR, $matrix);
205
+$Q = $decomposition->getQ();
206
+$R = $decomposition->getR();
207
+```

+ 62
- 0
vendor/markbaker/matrix/buildPhar.php Visa fil

@@ -0,0 +1,62 @@
1
+<?php
2
+
3
+# required: PHP 5.3+ and zlib extension
4
+
5
+// ini option check
6
+if (ini_get('phar.readonly')) {
7
+    echo "php.ini: set the 'phar.readonly' option to 0 to enable phar creation\n";
8
+    exit(1);
9
+}
10
+
11
+// output name
12
+$pharName = 'Matrix.phar';
13
+
14
+// target folder
15
+$sourceDir = __DIR__ . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . 'src' . DIRECTORY_SEPARATOR;
16
+
17
+// default meta information
18
+$metaData = array(
19
+    'Author'      => 'Mark Baker <mark@lange.demon.co.uk>',
20
+    'Description' => 'PHP Class for working with Matrix numbers',
21
+    'Copyright'   => 'Mark Baker (c) 2013-' . date('Y'),
22
+    'Timestamp'   => time(),
23
+    'Version'     => '0.1.0',
24
+    'Date'        => date('Y-m-d')
25
+);
26
+
27
+// cleanup
28
+if (file_exists($pharName)) {
29
+    echo "Removed: {$pharName}\n";
30
+    unlink($pharName);
31
+}
32
+
33
+echo "Building phar file...\n";
34
+
35
+// the phar object
36
+$phar = new Phar($pharName, null, 'Matrix');
37
+$phar->buildFromDirectory($sourceDir);
38
+$phar->setStub(
39
+<<<'EOT'
40
+<?php
41
+    spl_autoload_register(function ($className) {
42
+        include 'phar://' . $className . '.php';
43
+    });
44
+
45
+    try {
46
+        Phar::mapPhar();
47
+    } catch (PharException $e) {
48
+        error_log($e->getMessage());
49
+        exit(1);
50
+    }
51
+
52
+    include 'phar://functions/sqrt.php';
53
+
54
+    __HALT_COMPILER();
55
+EOT
56
+);
57
+$phar->setMetadata($metaData);
58
+$phar->compressFiles(Phar::GZ);
59
+
60
+echo "Complete.\n";
61
+
62
+exit();

+ 70
- 0
vendor/markbaker/matrix/classes/src/Builder.php Visa fil

@@ -0,0 +1,70 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Class for the creating "special" Matrices
6
+ *
7
+ * @copyright  Copyright (c) 2018 Mark Baker (https://github.com/MarkBaker/PHPMatrix)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+
11
+namespace Matrix;
12
+
13
+/**
14
+ * Matrix Builder class.
15
+ *
16
+ * @package Matrix
17
+ */
18
+class Builder
19
+{
20
+    /**
21
+     * Create a new matrix of specified dimensions, and filled with a specified value
22
+     * If the column argument isn't provided, then a square matrix will be created
23
+     *
24
+     * @param mixed $value
25
+     * @param int $rows
26
+     * @param int|null $columns
27
+     * @return Matrix
28
+     * @throws Exception
29
+     */
30
+    public static function createFilledMatrix($value, $rows, $columns = null)
31
+    {
32
+        if ($columns === null) {
33
+            $columns = $rows;
34
+        }
35
+
36
+        $rows = Matrix::validateRow($rows);
37
+        $columns = Matrix::validateColumn($columns);
38
+
39
+        return new Matrix(
40
+            array_fill(
41
+                0,
42
+                $rows,
43
+                array_fill(
44
+                    0,
45
+                    $columns,
46
+                    $value
47
+                )
48
+            )
49
+        );
50
+    }
51
+
52
+    /**
53
+     * Create a new identity matrix of specified dimensions
54
+     * This will always be a square matrix, with the number of rows and columns matching the provided dimension
55
+     *
56
+     * @param int $dimensions
57
+     * @return Matrix
58
+     * @throws Exception
59
+     */
60
+    public static function createIdentityMatrix($dimensions)
61
+    {
62
+        $grid = static::createFilledMatrix(null, $dimensions)->toArray();
63
+
64
+        for ($x = 0; $x < $dimensions; ++$x) {
65
+            $grid[$x][$x] = 1;
66
+        }
67
+
68
+        return new Matrix($grid);
69
+    }
70
+}

+ 27
- 0
vendor/markbaker/matrix/classes/src/Decomposition/Decomposition.php Visa fil

@@ -0,0 +1,27 @@
1
+<?php
2
+
3
+namespace Matrix\Decomposition;
4
+
5
+use Matrix\Exception;
6
+use Matrix\Matrix;
7
+
8
+class Decomposition
9
+{
10
+    const LU = 'LU';
11
+    const QR = 'QR';
12
+
13
+    /**
14
+     * @throws Exception
15
+     */
16
+    public static function decomposition($type, Matrix $matrix)
17
+    {
18
+        switch (strtoupper($type)) {
19
+            case self::LU:
20
+                return new LU($matrix);
21
+            case self::QR:
22
+                return new QR($matrix);
23
+            default:
24
+                throw new Exception('Invalid Decomposition');
25
+        }
26
+    }
27
+}

+ 260
- 0
vendor/markbaker/matrix/classes/src/Decomposition/LU.php Visa fil

@@ -0,0 +1,260 @@
1
+<?php
2
+
3
+namespace Matrix\Decomposition;
4
+
5
+use Matrix\Exception;
6
+use Matrix\Matrix;
7
+
8
+class LU
9
+{
10
+    private $luMatrix;
11
+    private $rows;
12
+    private $columns;
13
+
14
+    private $pivot = [];
15
+
16
+    public function __construct(Matrix $matrix)
17
+    {
18
+        $this->luMatrix = $matrix->toArray();
19
+        $this->rows = $matrix->rows;
20
+        $this->columns = $matrix->columns;
21
+
22
+        $this->buildPivot();
23
+    }
24
+
25
+    /**
26
+     * Get lower triangular factor.
27
+     *
28
+     * @return Matrix Lower triangular factor
29
+     */
30
+    public function getL()
31
+    {
32
+        $lower = [];
33
+
34
+        $columns = min($this->rows, $this->columns);
35
+        for ($row = 0; $row < $this->rows; ++$row) {
36
+            for ($column = 0; $column < $columns; ++$column) {
37
+                if ($row > $column) {
38
+                    $lower[$row][$column] = $this->luMatrix[$row][$column];
39
+                } elseif ($row === $column) {
40
+                    $lower[$row][$column] = 1.0;
41
+                } else {
42
+                    $lower[$row][$column] = 0.0;
43
+                }
44
+            }
45
+        }
46
+
47
+        return new Matrix($lower);
48
+    }
49
+
50
+    /**
51
+     * Get upper triangular factor.
52
+     *
53
+     * @return Matrix Upper triangular factor
54
+     */
55
+    public function getU()
56
+    {
57
+        $upper = [];
58
+
59
+        $rows = min($this->rows, $this->columns);
60
+        for ($row = 0; $row < $rows; ++$row) {
61
+            for ($column = 0; $column < $this->columns; ++$column) {
62
+                if ($row <= $column) {
63
+                    $upper[$row][$column] = $this->luMatrix[$row][$column];
64
+                } else {
65
+                    $upper[$row][$column] = 0.0;
66
+                }
67
+            }
68
+        }
69
+
70
+        return new Matrix($upper);
71
+    }
72
+
73
+    /**
74
+     * Return pivot permutation vector.
75
+     *
76
+     * @return Matrix Pivot matrix
77
+     */
78
+    public function getP()
79
+    {
80
+        $pMatrix = [];
81
+
82
+        $pivots = $this->pivot;
83
+        $pivotCount = count($pivots);
84
+        foreach ($pivots as $row => $pivot) {
85
+            $pMatrix[$row] = array_fill(0, $pivotCount, 0);
86
+            $pMatrix[$row][$pivot] = 1;
87
+        }
88
+
89
+        return new Matrix($pMatrix);
90
+    }
91
+
92
+    /**
93
+     * Return pivot permutation vector.
94
+     *
95
+     * @return array Pivot vector
96
+     */
97
+    public function getPivot()
98
+    {
99
+        return $this->pivot;
100
+    }
101
+
102
+    /**
103
+     *    Is the matrix nonsingular?
104
+     *
105
+     * @return bool true if U, and hence A, is nonsingular
106
+     */
107
+    public function isNonsingular()
108
+    {
109
+        for ($diagonal = 0; $diagonal < $this->columns; ++$diagonal) {
110
+            if ($this->luMatrix[$diagonal][$diagonal] === 0.0) {
111
+                return false;
112
+            }
113
+        }
114
+
115
+        return true;
116
+    }
117
+
118
+    private function buildPivot()
119
+    {
120
+        for ($row = 0; $row < $this->rows; ++$row) {
121
+            $this->pivot[$row] = $row;
122
+        }
123
+
124
+        for ($column = 0; $column < $this->columns; ++$column) {
125
+            $luColumn = $this->localisedReferenceColumn($column);
126
+
127
+            $this->applyTransformations($column, $luColumn);
128
+
129
+            $pivot = $this->findPivot($column, $luColumn);
130
+            if ($pivot !== $column) {
131
+                $this->pivotExchange($pivot, $column);
132
+            }
133
+
134
+            $this->computeMultipliers($column);
135
+
136
+            unset($luColumn);
137
+        }
138
+    }
139
+
140
+    private function localisedReferenceColumn($column)
141
+    {
142
+        $luColumn = [];
143
+
144
+        for ($row = 0; $row < $this->rows; ++$row) {
145
+            $luColumn[$row] = &$this->luMatrix[$row][$column];
146
+        }
147
+
148
+        return $luColumn;
149
+    }
150
+
151
+    private function applyTransformations($column, array $luColumn)
152
+    {
153
+        for ($row = 0; $row < $this->rows; ++$row) {
154
+            $luRow = $this->luMatrix[$row];
155
+            // Most of the time is spent in the following dot product.
156
+            $kmax = min($row, $column);
157
+            $sValue = 0.0;
158
+            for ($kValue = 0; $kValue < $kmax; ++$kValue) {
159
+                $sValue += $luRow[$kValue] * $luColumn[$kValue];
160
+            }
161
+            $luRow[$column] = $luColumn[$row] -= $sValue;
162
+        }
163
+    }
164
+
165
+    private function findPivot($column, array $luColumn)
166
+    {
167
+        $pivot = $column;
168
+        for ($row = $column + 1; $row < $this->rows; ++$row) {
169
+            if (abs($luColumn[$row]) > abs($luColumn[$pivot])) {
170
+                $pivot = $row;
171
+            }
172
+        }
173
+
174
+        return $pivot;
175
+    }
176
+
177
+    private function pivotExchange($pivot, $column)
178
+    {
179
+        for ($kValue = 0; $kValue < $this->columns; ++$kValue) {
180
+            $tValue = $this->luMatrix[$pivot][$kValue];
181
+            $this->luMatrix[$pivot][$kValue] = $this->luMatrix[$column][$kValue];
182
+            $this->luMatrix[$column][$kValue] = $tValue;
183
+        }
184
+
185
+        $lValue = $this->pivot[$pivot];
186
+        $this->pivot[$pivot] = $this->pivot[$column];
187
+        $this->pivot[$column] = $lValue;
188
+    }
189
+
190
+    private function computeMultipliers($diagonal)
191
+    {
192
+        if (($diagonal < $this->rows) && ($this->luMatrix[$diagonal][$diagonal] != 0.0)) {
193
+            for ($row = $diagonal + 1; $row < $this->rows; ++$row) {
194
+                $this->luMatrix[$row][$diagonal] /= $this->luMatrix[$diagonal][$diagonal];
195
+            }
196
+        }
197
+    }
198
+
199
+    private function pivotB(Matrix $B)
200
+    {
201
+        $X = [];
202
+        foreach ($this->pivot as $rowId) {
203
+            $row = $B->getRows($rowId + 1)->toArray();
204
+            $X[] = array_pop($row);
205
+        }
206
+
207
+        return $X;
208
+    }
209
+
210
+    /**
211
+     * Solve A*X = B.
212
+     *
213
+     * @param Matrix $B a Matrix with as many rows as A and any number of columns
214
+     *
215
+     * @throws Exception
216
+     *
217
+     * @return Matrix X so that L*U*X = B(piv,:)
218
+     */
219
+    public function solve(Matrix $B)
220
+    {
221
+        if ($B->rows !== $this->rows) {
222
+            throw new Exception('Matrix row dimensions are not equal');
223
+        }
224
+
225
+        if ($this->rows !== $this->columns) {
226
+            throw new Exception('LU solve() only works on square matrices');
227
+        }
228
+
229
+        if (!$this->isNonsingular()) {
230
+            throw new Exception('Can only perform operation on singular matrix');
231
+        }
232
+
233
+        // Copy right hand side with pivoting
234
+        $nx = $B->columns;
235
+        $X = $this->pivotB($B);
236
+
237
+        // Solve L*Y = B(piv,:)
238
+        for ($k = 0; $k < $this->columns; ++$k) {
239
+            for ($i = $k + 1; $i < $this->columns; ++$i) {
240
+                for ($j = 0; $j < $nx; ++$j) {
241
+                    $X[$i][$j] -= $X[$k][$j] * $this->luMatrix[$i][$k];
242
+                }
243
+            }
244
+        }
245
+
246
+        // Solve U*X = Y;
247
+        for ($k = $this->columns - 1; $k >= 0; --$k) {
248
+            for ($j = 0; $j < $nx; ++$j) {
249
+                $X[$k][$j] /= $this->luMatrix[$k][$k];
250
+            }
251
+            for ($i = 0; $i < $k; ++$i) {
252
+                for ($j = 0; $j < $nx; ++$j) {
253
+                    $X[$i][$j] -= $X[$k][$j] * $this->luMatrix[$i][$k];
254
+                }
255
+            }
256
+        }
257
+
258
+        return new Matrix($X);
259
+    }
260
+}

+ 194
- 0
vendor/markbaker/matrix/classes/src/Decomposition/QR.php Visa fil

@@ -0,0 +1,194 @@
1
+<?php
2
+
3
+namespace Matrix\Decomposition;
4
+
5
+use Matrix\Exception;
6
+use Matrix\Matrix;
7
+
8
+class QR
9
+{
10
+    private $qrMatrix;
11
+    private $rows;
12
+    private $columns;
13
+
14
+    private $rDiagonal = [];
15
+
16
+    public function __construct(Matrix $matrix)
17
+    {
18
+        $this->qrMatrix = $matrix->toArray();
19
+        $this->rows = $matrix->rows;
20
+        $this->columns = $matrix->columns;
21
+
22
+        $this->decompose();
23
+    }
24
+
25
+    public function getHouseholdVectors()
26
+    {
27
+        $householdVectors = [];
28
+        for ($row = 0; $row < $this->rows; ++$row) {
29
+            for ($column = 0; $column < $this->columns; ++$column) {
30
+                if ($row >= $column) {
31
+                    $householdVectors[$row][$column] = $this->qrMatrix[$row][$column];
32
+                } else {
33
+                    $householdVectors[$row][$column] = 0.0;
34
+                }
35
+            }
36
+        }
37
+
38
+        return new Matrix($householdVectors);
39
+    }
40
+
41
+    public function getQ()
42
+    {
43
+        $qGrid = [];
44
+
45
+        $rowCount = $this->rows;
46
+        for ($k = $this->columns - 1; $k >= 0; --$k) {
47
+            for ($i = 0; $i < $this->rows; ++$i) {
48
+                $qGrid[$i][$k] = 0.0;
49
+            }
50
+            $qGrid[$k][$k] = 1.0;
51
+            if ($this->columns > $this->rows) {
52
+                $qGrid = array_slice($qGrid, 0, $this->rows);
53
+            }
54
+
55
+            for ($j = $k; $j < $this->columns; ++$j) {
56
+                if (isset($this->qrMatrix[$k], $this->qrMatrix[$k][$k]) && $this->qrMatrix[$k][$k] != 0.0) {
57
+                    $s = 0.0;
58
+                    for ($i = $k; $i < $this->rows; ++$i) {
59
+                        $s += $this->qrMatrix[$i][$k] * $qGrid[$i][$j];
60
+                    }
61
+                    $s = -$s / $this->qrMatrix[$k][$k];
62
+                    for ($i = $k; $i < $this->rows; ++$i) {
63
+                        $qGrid[$i][$j] += $s * $this->qrMatrix[$i][$k];
64
+                    }
65
+                }
66
+            }
67
+        }
68
+
69
+        array_walk(
70
+            $qGrid,
71
+            function (&$row) use ($rowCount) {
72
+                $row = array_reverse($row);
73
+                $row = array_slice($row, 0, $rowCount);
74
+            }
75
+        );
76
+
77
+        return new Matrix($qGrid);
78
+    }
79
+
80
+    public function getR()
81
+    {
82
+        $rGrid = [];
83
+
84
+        for ($row = 0; $row < $this->columns; ++$row) {
85
+            for ($column = 0; $column < $this->columns; ++$column) {
86
+                if ($row < $column) {
87
+                    $rGrid[$row][$column] = isset($this->qrMatrix[$row][$column]) ? $this->qrMatrix[$row][$column] : 0.0;
88
+                } elseif ($row === $column) {
89
+                    $rGrid[$row][$column] = isset($this->rDiagonal[$row]) ? $this->rDiagonal[$row] : 0.0;
90
+                } else {
91
+                    $rGrid[$row][$column] = 0.0;
92
+                }
93
+            }
94
+        }
95
+
96
+        if ($this->columns > $this->rows) {
97
+            $rGrid = array_slice($rGrid, 0, $this->rows);
98
+        }
99
+
100
+        return new Matrix($rGrid);
101
+    }
102
+
103
+    private function hypo($a, $b)
104
+    {
105
+        if (abs($a) > abs($b)) {
106
+            $r = $b / $a;
107
+            $r = abs($a) * sqrt(1 + $r * $r);
108
+        } elseif ($b != 0.0) {
109
+            $r = $a / $b;
110
+            $r = abs($b) * sqrt(1 + $r * $r);
111
+        } else {
112
+            $r = 0.0;
113
+        }
114
+
115
+        return $r;
116
+    }
117
+
118
+    /**
119
+     * QR Decomposition computed by Householder reflections.
120
+     */
121
+    private function decompose()
122
+    {
123
+        for ($k = 0; $k < $this->columns; ++$k) {
124
+            // Compute 2-norm of k-th column without under/overflow.
125
+            $norm = 0.0;
126
+            for ($i = $k; $i < $this->rows; ++$i) {
127
+                $norm = $this->hypo($norm, $this->qrMatrix[$i][$k]);
128
+            }
129
+            if ($norm != 0.0) {
130
+                // Form k-th Householder vector.
131
+                if ($this->qrMatrix[$k][$k] < 0.0) {
132
+                    $norm = -$norm;
133
+                }
134
+                for ($i = $k; $i < $this->rows; ++$i) {
135
+                    $this->qrMatrix[$i][$k] /= $norm;
136
+                }
137
+                $this->qrMatrix[$k][$k] += 1.0;
138
+                // Apply transformation to remaining columns.
139
+                for ($j = $k + 1; $j < $this->columns; ++$j) {
140
+                    $s = 0.0;
141
+                    for ($i = $k; $i < $this->rows; ++$i) {
142
+                        $s += $this->qrMatrix[$i][$k] * $this->qrMatrix[$i][$j];
143
+                    }
144
+                    $s = -$s / $this->qrMatrix[$k][$k];
145
+                    for ($i = $k; $i < $this->rows; ++$i) {
146
+                        $this->qrMatrix[$i][$j] += $s * $this->qrMatrix[$i][$k];
147
+                    }
148
+                }
149
+            }
150
+            $this->rDiagonal[$k] = -$norm;
151
+        }
152
+    }
153
+
154
+    /**
155
+     * @return bool
156
+     */
157
+    public function isFullRank()
158
+    {
159
+        for ($j = 0; $j < $this->columns; ++$j) {
160
+            if ($this->rDiagonal[$j] == 0.0) {
161
+                return false;
162
+            }
163
+        }
164
+
165
+        return true;
166
+    }
167
+
168
+    /**
169
+     * Least squares solution of A*X = B.
170
+     *
171
+     * @param Matrix $B a Matrix with as many rows as A and any number of columns
172
+     *
173
+     * @throws Exception
174
+     *
175
+     * @return Matrix matrix that minimizes the two norm of Q*R*X-B
176
+     */
177
+    public function solve(Matrix $B)
178
+    {
179
+        if ($B->rows !== $this->rows) {
180
+            throw new Exception('Matrix row dimensions are not equal');
181
+        }
182
+
183
+        if (!$this->isFullRank()) {
184
+            throw new Exception('Can only perform this operation on a full-rank matrix');
185
+        }
186
+
187
+        // Compute Y = transpose(Q)*B
188
+        $Y = $this->getQ()->transpose()
189
+            ->multiply($B);
190
+        // Solve R*X = Y;
191
+        return $this->getR()->inverse()
192
+            ->multiply($Y);
193
+    }
194
+}

+ 13
- 0
vendor/markbaker/matrix/classes/src/Exception.php Visa fil

@@ -0,0 +1,13 @@
1
+<?php
2
+
3
+/**
4
+ * Exception.
5
+ *
6
+ * @copyright  Copyright (c) 2013-2018 Mark Baker (https://github.com/MarkBaker/PHPMatrix)
7
+ * @license    https://opensource.org/licenses/MIT    MIT
8
+ */
9
+namespace Matrix;
10
+
11
+class Exception extends \Exception
12
+{
13
+}

+ 337
- 0
vendor/markbaker/matrix/classes/src/Functions.php Visa fil

@@ -0,0 +1,337 @@
1
+<?php
2
+
3
+namespace Matrix;
4
+
5
+class Functions
6
+{
7
+    /**
8
+     * Calculate the adjoint of the matrix
9
+     *
10
+     * @param Matrix $matrix The matrix whose adjoint we wish to calculate
11
+     * @return Matrix
12
+     *
13
+     * @throws Exception
14
+     */
15
+    private static function getAdjoint(Matrix $matrix)
16
+    {
17
+        return self::transpose(
18
+            self::getCofactors($matrix)
19
+        );
20
+    }
21
+
22
+    /**
23
+     * Return the adjoint of this matrix
24
+     * The adjugate, classical adjoint, or adjunct of a square matrix is the transpose of its cofactor matrix.
25
+     * The adjugate has sometimes been called the "adjoint", but today the "adjoint" of a matrix normally refers
26
+     *     to its corresponding adjoint operator, which is its conjugate transpose.
27
+     *
28
+     * @param Matrix $matrix The matrix whose adjoint we wish to calculate
29
+     * @return Matrix
30
+     * @throws Exception
31
+     **/
32
+    public static function adjoint(Matrix $matrix)
33
+    {
34
+        if (!$matrix->isSquare()) {
35
+            throw new Exception('Adjoint can only be calculated for a square matrix');
36
+        }
37
+
38
+        return self::getAdjoint($matrix);
39
+    }
40
+
41
+    /**
42
+     * Calculate the cofactors of the matrix
43
+     *
44
+     * @param Matrix $matrix The matrix whose cofactors we wish to calculate
45
+     * @return Matrix
46
+     *
47
+     * @throws Exception
48
+     */
49
+    private static function getCofactors(Matrix $matrix)
50
+    {
51
+        $cofactors = self::getMinors($matrix);
52
+        $dimensions = $matrix->rows;
53
+
54
+        $cof = 1;
55
+        for ($i = 0; $i < $dimensions; ++$i) {
56
+            $cofs = $cof;
57
+            for ($j = 0; $j < $dimensions; ++$j) {
58
+                $cofactors[$i][$j] *= $cofs;
59
+                $cofs = -$cofs;
60
+            }
61
+            $cof = -$cof;
62
+        }
63
+
64
+        return new Matrix($cofactors);
65
+    }
66
+
67
+    /**
68
+     * Return the cofactors of this matrix
69
+     *
70
+     * @param Matrix $matrix The matrix whose cofactors we wish to calculate
71
+     * @return Matrix
72
+     *
73
+     * @throws Exception
74
+     */
75
+    public static function cofactors(Matrix $matrix)
76
+    {
77
+        if (!$matrix->isSquare()) {
78
+            throw new Exception('Cofactors can only be calculated for a square matrix');
79
+        }
80
+
81
+        return self::getCofactors($matrix);
82
+    }
83
+
84
+    /**
85
+     * @param Matrix $matrix
86
+     * @param int $row
87
+     * @param int $column
88
+     * @return float
89
+     * @throws Exception
90
+     */
91
+    private static function getDeterminantSegment(Matrix $matrix, $row, $column)
92
+    {
93
+        $tmpMatrix = $matrix->toArray();
94
+        unset($tmpMatrix[$row]);
95
+        array_walk(
96
+            $tmpMatrix,
97
+            function (&$row) use ($column) {
98
+                unset($row[$column]);
99
+            }
100
+        );
101
+
102
+        return self::getDeterminant(new Matrix($tmpMatrix));
103
+    }
104
+
105
+    /**
106
+     * Calculate the determinant of the matrix
107
+     *
108
+     * @param Matrix $matrix The matrix whose determinant we wish to calculate
109
+     * @return float
110
+     *
111
+     * @throws Exception
112
+     */
113
+    private static function getDeterminant(Matrix $matrix)
114
+    {
115
+        $dimensions = $matrix->rows;
116
+        $determinant = 0;
117
+
118
+        switch ($dimensions) {
119
+            case 1:
120
+                $determinant = $matrix->getValue(1, 1);
121
+                break;
122
+            case 2:
123
+                $determinant = $matrix->getValue(1, 1) * $matrix->getValue(2, 2) -
124
+                    $matrix->getValue(1, 2) * $matrix->getValue(2, 1);
125
+                break;
126
+            default:
127
+                for ($i = 1; $i <= $dimensions; ++$i) {
128
+                    $det = $matrix->getValue(1, $i) * self::getDeterminantSegment($matrix, 0, $i - 1);
129
+                    if (($i % 2) == 0) {
130
+                        $determinant -= $det;
131
+                    } else {
132
+                        $determinant += $det;
133
+                    }
134
+                }
135
+                break;
136
+        }
137
+
138
+        return $determinant;
139
+    }
140
+
141
+    /**
142
+     * Return the determinant of this matrix
143
+     *
144
+     * @param Matrix $matrix The matrix whose determinant we wish to calculate
145
+     * @return float
146
+     * @throws Exception
147
+     **/
148
+    public static function determinant(Matrix $matrix)
149
+    {
150
+        if (!$matrix->isSquare()) {
151
+            throw new Exception('Determinant can only be calculated for a square matrix');
152
+        }
153
+
154
+        return self::getDeterminant($matrix);
155
+    }
156
+
157
+    /**
158
+     * Return the diagonal of this matrix
159
+     *
160
+     * @param Matrix $matrix The matrix whose diagonal we wish to calculate
161
+     * @return Matrix
162
+     * @throws Exception
163
+     **/
164
+    public static function diagonal(Matrix $matrix)
165
+    {
166
+        if (!$matrix->isSquare()) {
167
+            throw new Exception('Diagonal can only be extracted from a square matrix');
168
+        }
169
+
170
+        $dimensions = $matrix->rows;
171
+        $grid = Builder::createFilledMatrix(0, $dimensions, $dimensions)
172
+            ->toArray();
173
+
174
+        for ($i = 0; $i < $dimensions; ++$i) {
175
+            $grid[$i][$i] = $matrix->getValue($i + 1, $i + 1);
176
+        }
177
+
178
+        return new Matrix($grid);
179
+    }
180
+
181
+    /**
182
+     * Return the antidiagonal of this matrix
183
+     *
184
+     * @param Matrix $matrix The matrix whose antidiagonal we wish to calculate
185
+     * @return Matrix
186
+     * @throws Exception
187
+     **/
188
+    public static function antidiagonal(Matrix $matrix)
189
+    {
190
+        if (!$matrix->isSquare()) {
191
+            throw new Exception('Anti-Diagonal can only be extracted from a square matrix');
192
+        }
193
+
194
+        $dimensions = $matrix->rows;
195
+        $grid = Builder::createFilledMatrix(0, $dimensions, $dimensions)
196
+            ->toArray();
197
+
198
+        for ($i = 0; $i < $dimensions; ++$i) {
199
+            $grid[$i][$dimensions - $i - 1] = $matrix->getValue($i + 1, $dimensions - $i);
200
+        }
201
+
202
+        return new Matrix($grid);
203
+    }
204
+
205
+    /**
206
+     * Return the identity matrix
207
+     * The identity matrix, or sometimes ambiguously called a unit matrix, of size n is the n × n square matrix
208
+     *   with ones on the main diagonal and zeros elsewhere
209
+     *
210
+     * @param Matrix $matrix The matrix whose identity we wish to calculate
211
+     * @return Matrix
212
+     * @throws Exception
213
+     **/
214
+    public static function identity(Matrix $matrix)
215
+    {
216
+        if (!$matrix->isSquare()) {
217
+            throw new Exception('Identity can only be created for a square matrix');
218
+        }
219
+
220
+        $dimensions = $matrix->rows;
221
+
222
+        return Builder::createIdentityMatrix($dimensions);
223
+    }
224
+
225
+    /**
226
+     * Return the inverse of this matrix
227
+     *
228
+     * @param Matrix $matrix The matrix whose inverse we wish to calculate
229
+     * @return Matrix
230
+     * @throws Exception
231
+     **/
232
+    public static function inverse(Matrix $matrix)
233
+    {
234
+        if (!$matrix->isSquare()) {
235
+            throw new Exception('Inverse can only be calculated for a square matrix');
236
+        }
237
+
238
+        $determinant = self::getDeterminant($matrix);
239
+        if ($determinant == 0.0) {
240
+            throw new Exception('Inverse can only be calculated for a matrix with a non-zero determinant');
241
+        }
242
+
243
+        if ($matrix->rows == 1) {
244
+            return new Matrix([[1 / $matrix->getValue(1, 1)]]);
245
+        }
246
+
247
+        return self::getAdjoint($matrix)
248
+            ->multiply(1 / $determinant);
249
+    }
250
+
251
+    /**
252
+     * Calculate the minors of the matrix
253
+     *
254
+     * @param Matrix $matrix The matrix whose minors we wish to calculate
255
+     * @return array[]
256
+     *
257
+     * @throws Exception
258
+     */
259
+    protected static function getMinors(Matrix $matrix)
260
+    {
261
+        $minors = $matrix->toArray();
262
+        $dimensions = $matrix->rows;
263
+        if ($dimensions == 1) {
264
+            return $minors;
265
+        }
266
+
267
+        for ($i = 0; $i < $dimensions; ++$i) {
268
+            for ($j = 0; $j < $dimensions; ++$j) {
269
+                $minors[$i][$j] = self::getDeterminantSegment($matrix, $i, $j);
270
+            }
271
+        }
272
+
273
+        return $minors;
274
+    }
275
+
276
+    /**
277
+     * Return the minors of the matrix
278
+     * The minor of a matrix A is the determinant of some smaller square matrix, cut down from A by removing one or
279
+     *     more of its rows or columns.
280
+     * Minors obtained by removing just one row and one column from square matrices (first minors) are required for
281
+     *     calculating matrix cofactors, which in turn are useful for computing both the determinant and inverse of
282
+     *     square matrices.
283
+     *
284
+     * @param Matrix $matrix The matrix whose minors we wish to calculate
285
+     * @return Matrix
286
+     * @throws Exception
287
+     **/
288
+    public static function minors(Matrix $matrix)
289
+    {
290
+        if (!$matrix->isSquare()) {
291
+            throw new Exception('Minors can only be calculated for a square matrix');
292
+        }
293
+
294
+        return new Matrix(self::getMinors($matrix));
295
+    }
296
+
297
+    /**
298
+     * Return the trace of this matrix
299
+     * The trace is defined as the sum of the elements on the main diagonal (the diagonal from the upper left to the lower right)
300
+     *     of the matrix
301
+     *
302
+     * @param Matrix $matrix The matrix whose trace we wish to calculate
303
+     * @return float
304
+     * @throws Exception
305
+     **/
306
+    public static function trace(Matrix $matrix)
307
+    {
308
+        if (!$matrix->isSquare()) {
309
+            throw new Exception('Trace can only be extracted from a square matrix');
310
+        }
311
+
312
+        $dimensions = $matrix->rows;
313
+        $result = 0;
314
+        for ($i = 1; $i <= $dimensions; ++$i) {
315
+            $result += $matrix->getValue($i, $i);
316
+        }
317
+
318
+        return $result;
319
+    }
320
+
321
+    /**
322
+     * Return the transpose of this matrix
323
+     *
324
+     * @param Matrix $matrix The matrix whose transpose we wish to calculate
325
+     * @return Matrix
326
+     **/
327
+    public static function transpose(Matrix $matrix)
328
+    {
329
+        $array = array_values(array_merge([null], $matrix->toArray()));
330
+        $grid = call_user_func_array(
331
+            'array_map',
332
+            $array
333
+        );
334
+
335
+        return new Matrix($grid);
336
+    }
337
+}

+ 423
- 0
vendor/markbaker/matrix/classes/src/Matrix.php Visa fil

@@ -0,0 +1,423 @@
1
+<?php
2
+
3
+/**
4
+ *
5
+ * Class for the management of Matrices
6
+ *
7
+ * @copyright  Copyright (c) 2018 Mark Baker (https://github.com/MarkBaker/PHPMatrix)
8
+ * @license    https://opensource.org/licenses/MIT    MIT
9
+ */
10
+
11
+namespace Matrix;
12
+
13
+use Generator;
14
+use Matrix\Decomposition\LU;
15
+use Matrix\Decomposition\QR;
16
+
17
+/**
18
+ * Matrix object.
19
+ *
20
+ * @package Matrix
21
+ *
22
+ * @property-read int $rows The number of rows in the matrix
23
+ * @property-read int $columns The number of columns in the matrix
24
+ * @method Matrix antidiagonal()
25
+ * @method Matrix adjoint()
26
+ * @method Matrix cofactors()
27
+ * @method float determinant()
28
+ * @method Matrix diagonal()
29
+ * @method Matrix identity()
30
+ * @method Matrix inverse()
31
+ * @method Matrix pseudoInverse()
32
+ * @method Matrix minors()
33
+ * @method float trace()
34
+ * @method Matrix transpose()
35
+ * @method Matrix add(...$matrices)
36
+ * @method Matrix subtract(...$matrices)
37
+ * @method Matrix multiply(...$matrices)
38
+ * @method Matrix divideby(...$matrices)
39
+ * @method Matrix divideinto(...$matrices)
40
+ * @method Matrix directsum(...$matrices)
41
+ */
42
+class Matrix
43
+{
44
+    protected $rows;
45
+    protected $columns;
46
+    protected $grid = [];
47
+
48
+    /*
49
+     * Create a new Matrix object from an array of values
50
+     *
51
+     * @param array $grid
52
+     */
53
+    final public function __construct(array $grid)
54
+    {
55
+        $this->buildFromArray(array_values($grid));
56
+    }
57
+
58
+    /*
59
+     * Create a new Matrix object from an array of values
60
+     *
61
+     * @param array $grid
62
+     */
63
+    protected function buildFromArray(array $grid)
64
+    {
65
+        $this->rows = count($grid);
66
+        $columns = array_reduce(
67
+            $grid,
68
+            function ($carry, $value) {
69
+                return max($carry, is_array($value) ? count($value) : 1);
70
+            }
71
+        );
72
+        $this->columns = $columns;
73
+
74
+        array_walk(
75
+            $grid,
76
+            function (&$value) use ($columns) {
77
+                if (!is_array($value)) {
78
+                    $value = [$value];
79
+                }
80
+                $value = array_pad(array_values($value), $columns, null);
81
+            }
82
+        );
83
+
84
+        $this->grid = $grid;
85
+    }
86
+
87
+    /**
88
+     * Validate that a row number is a positive integer
89
+     *
90
+     * @param int $row
91
+     * @return int
92
+     * @throws Exception
93
+     */
94
+    public static function validateRow($row)
95
+    {
96
+        if ((!is_numeric($row)) || (intval($row) < 1)) {
97
+            throw new Exception('Invalid Row');
98
+        }
99
+
100
+        return (int)$row;
101
+    }
102
+
103
+    /**
104
+     * Validate that a column number is a positive integer
105
+     *
106
+     * @param int $column
107
+     * @return int
108
+     * @throws Exception
109
+     */
110
+    public static function validateColumn($column)
111
+    {
112
+        if ((!is_numeric($column)) || (intval($column) < 1)) {
113
+            throw new Exception('Invalid Column');
114
+        }
115
+
116
+        return (int)$column;
117
+    }
118
+
119
+    /**
120
+     * Validate that a row number falls within the set of rows for this matrix
121
+     *
122
+     * @param int $row
123
+     * @return int
124
+     * @throws Exception
125
+     */
126
+    protected function validateRowInRange($row)
127
+    {
128
+        $row = static::validateRow($row);
129
+        if ($row > $this->rows) {
130
+            throw new Exception('Requested Row exceeds matrix size');
131
+        }
132
+
133
+        return $row;
134
+    }
135
+
136
+    /**
137
+     * Validate that a column number falls within the set of columns for this matrix
138
+     *
139
+     * @param int $column
140
+     * @return int
141
+     * @throws Exception
142
+     */
143
+    protected function validateColumnInRange($column)
144
+    {
145
+        $column = static::validateColumn($column);
146
+        if ($column > $this->columns) {
147
+            throw new Exception('Requested Column exceeds matrix size');
148
+        }
149
+
150
+        return $column;
151
+    }
152
+
153
+    /**
154
+     * Return a new matrix as a subset of rows from this matrix, starting at row number $row, and $rowCount rows
155
+     * A $rowCount value of 0 will return all rows of the matrix from $row
156
+     * A negative $rowCount value will return rows until that many rows from the end of the matrix
157
+     *
158
+     * Note that row numbers start from 1, not from 0
159
+     *
160
+     * @param int $row
161
+     * @param int $rowCount
162
+     * @return static
163
+     * @throws Exception
164
+     */
165
+    public function getRows($row, $rowCount = 1)
166
+    {
167
+        $row = $this->validateRowInRange($row);
168
+        if ($rowCount === 0) {
169
+            $rowCount = $this->rows - $row + 1;
170
+        }
171
+
172
+        return new static(array_slice($this->grid, $row - 1, (int)$rowCount));
173
+    }
174
+
175
+    /**
176
+     * Return a new matrix as a subset of columns from this matrix, starting at column number $column, and $columnCount columns
177
+     * A $columnCount value of 0 will return all columns of the matrix from $column
178
+     * A negative $columnCount value will return columns until that many columns from the end of the matrix
179
+     *
180
+     * Note that column numbers start from 1, not from 0
181
+     *
182
+     * @param int $column
183
+     * @param int $columnCount
184
+     * @return Matrix
185
+     * @throws Exception
186
+     */
187
+    public function getColumns($column, $columnCount = 1)
188
+    {
189
+        $column = $this->validateColumnInRange($column);
190
+        if ($columnCount < 1) {
191
+            $columnCount = $this->columns + $columnCount - $column + 1;
192
+        }
193
+
194
+        $grid = [];
195
+        for ($i = $column - 1; $i < $column + $columnCount - 1; ++$i) {
196
+            $grid[] = array_column($this->grid, $i);
197
+        }
198
+
199
+        return (new static($grid))->transpose();
200
+    }
201
+
202
+    /**
203
+     * Return a new matrix as a subset of rows from this matrix, dropping rows starting at row number $row,
204
+     *     and $rowCount rows
205
+     * A negative $rowCount value will drop rows until that many rows from the end of the matrix
206
+     * A $rowCount value of 0 will remove all rows of the matrix from $row
207
+     *
208
+     * Note that row numbers start from 1, not from 0
209
+     *
210
+     * @param int $row
211
+     * @param int $rowCount
212
+     * @return static
213
+     * @throws Exception
214
+     */
215
+    public function dropRows($row, $rowCount = 1)
216
+    {
217
+        $this->validateRowInRange($row);
218
+        if ($rowCount === 0) {
219
+            $rowCount = $this->rows - $row + 1;
220
+        }
221
+
222
+        $grid = $this->grid;
223
+        array_splice($grid, $row - 1, (int)$rowCount);
224
+
225
+        return new static($grid);
226
+    }
227
+
228
+    /**
229
+     * Return a new matrix as a subset of columns from this matrix, dropping columns starting at column number $column,
230
+     *     and $columnCount columns
231
+     * A negative $columnCount value will drop columns until that many columns from the end of the matrix
232
+     * A $columnCount value of 0 will remove all columns of the matrix from $column
233
+     *
234
+     * Note that column numbers start from 1, not from 0
235
+     *
236
+     * @param int $column
237
+     * @param int $columnCount
238
+     * @return static
239
+     * @throws Exception
240
+     */
241
+    public function dropColumns($column, $columnCount = 1)
242
+    {
243
+        $this->validateColumnInRange($column);
244
+        if ($columnCount < 1) {
245
+            $columnCount = $this->columns + $columnCount - $column + 1;
246
+        }
247
+
248
+        $grid = $this->grid;
249
+        array_walk(
250
+            $grid,
251
+            function (&$row) use ($column, $columnCount) {
252
+                array_splice($row, $column - 1, (int)$columnCount);
253
+            }
254
+        );
255
+
256
+        return new static($grid);
257
+    }
258
+
259
+    /**
260
+     * Return a value from this matrix, from the "cell" identified by the row and column numbers
261
+     * Note that row and column numbers start from 1, not from 0
262
+     *
263
+     * @param int $row
264
+     * @param int $column
265
+     * @return mixed
266
+     * @throws Exception
267
+     */
268
+    public function getValue($row, $column)
269
+    {
270
+        $row = $this->validateRowInRange($row);
271
+        $column = $this->validateColumnInRange($column);
272
+
273
+        return $this->grid[$row - 1][$column - 1];
274
+    }
275
+
276
+    /**
277
+     * Returns a Generator that will yield each row of the matrix in turn as a vector matrix
278
+     *     or the value of each cell if the matrix is a column vector
279
+     *
280
+     * @return Generator|Matrix[]|mixed[]
281
+     */
282
+    public function rows()
283
+    {
284
+        foreach ($this->grid as $i => $row) {
285
+            yield $i + 1 => ($this->columns == 1)
286
+                ? $row[0]
287
+                : new static([$row]);
288
+        }
289
+    }
290
+
291
+    /**
292
+     * Returns a Generator that will yield each column of the matrix in turn as a vector matrix
293
+     *     or the value of each cell if the matrix is a row vector
294
+     *
295
+     * @return Generator|Matrix[]|mixed[]
296
+     */
297
+    public function columns()
298
+    {
299
+        for ($i = 0; $i < $this->columns; ++$i) {
300
+            yield $i + 1 => ($this->rows == 1)
301
+                ? $this->grid[0][$i]
302
+                : new static(array_column($this->grid, $i));
303
+        }
304
+    }
305
+
306
+    /**
307
+     * Identify if the row and column dimensions of this matrix are equal,
308
+     *     i.e. if it is a "square" matrix
309
+     *
310
+     * @return bool
311
+     */
312
+    public function isSquare()
313
+    {
314
+        return $this->rows == $this->columns;
315
+    }
316
+
317
+    /**
318
+     * Identify if this matrix is a vector
319
+     *     i.e. if it comprises only a single row or a single column
320
+     *
321
+     * @return bool
322
+     */
323
+    public function isVector()
324
+    {
325
+        return $this->rows == 1 || $this->columns == 1;
326
+    }
327
+
328
+    /**
329
+     * Return the matrix as a 2-dimensional array
330
+     *
331
+     * @return array
332
+     */
333
+    public function toArray()
334
+    {
335
+        return $this->grid;
336
+    }
337
+
338
+    /**
339
+     * Solve A*X = B.
340
+     *
341
+     * @param Matrix $B Right hand side
342
+     *
343
+     * @throws Exception
344
+     *
345
+     * @return Matrix ... Solution if A is square, least squares solution otherwise
346
+     */
347
+    public function solve(Matrix $B)
348
+    {
349
+        if ($this->columns === $this->rows) {
350
+            return (new LU($this))->solve($B);
351
+        }
352
+
353
+        return (new QR($this))->solve($B);
354
+    }
355
+
356
+    protected static $getters = [
357
+        'rows',
358
+        'columns',
359
+    ];
360
+
361
+    /**
362
+     * Access specific properties as read-only (no setters)
363
+     *
364
+     * @param string $propertyName
365
+     * @return mixed
366
+     * @throws Exception
367
+     */
368
+    public function __get($propertyName)
369
+    {
370
+        $propertyName = strtolower($propertyName);
371
+
372
+        // Test for function calls
373
+        if (in_array($propertyName, self::$getters)) {
374
+            return $this->$propertyName;
375
+        }
376
+
377
+        throw new Exception('Property does not exist');
378
+    }
379
+
380
+    protected static $functions = [
381
+        'antidiagonal',
382
+        'adjoint',
383
+        'cofactors',
384
+        'determinant',
385
+        'diagonal',
386
+        'identity',
387
+        'inverse',
388
+        'minors',
389
+        'trace',
390
+        'transpose',
391
+    ];
392
+
393
+    protected static $operations = [
394
+        'add',
395
+        'subtract',
396
+        'multiply',
397
+        'divideby',
398
+        'divideinto',
399
+        'directsum',
400
+    ];
401
+
402
+    /**
403
+     * Returns the result of the function call or operation
404
+     *
405
+     * @param string $functionName
406
+     * @param mixed[] $arguments
407
+     * @return Matrix|float
408
+     * @throws Exception
409
+     */
410
+    public function __call($functionName, $arguments)
411
+    {
412
+        $functionName = strtolower(str_replace('_', '', $functionName));
413
+
414
+        if (in_array($functionName, self::$functions, true) || in_array($functionName, self::$operations, true)) {
415
+            $functionName = "\\" . __NAMESPACE__ . "\\{$functionName}";
416
+            if (is_callable($functionName)) {
417
+                $arguments = array_values(array_merge([$this], $arguments));
418
+                return call_user_func_array($functionName, $arguments);
419
+            }
420
+        }
421
+        throw new Exception('Function or Operation does not exist');
422
+    }
423
+}

+ 68
- 0
vendor/markbaker/matrix/classes/src/Operators/Addition.php Visa fil

@@ -0,0 +1,68 @@
1
+<?php
2
+
3
+namespace Matrix\Operators;
4
+
5
+use Matrix\Matrix;
6
+use Matrix\Exception;
7
+
8
+class Addition extends Operator
9
+{
10
+    /**
11
+     * Execute the addition
12
+     *
13
+     * @param mixed $value The matrix or numeric value to add to the current base value
14
+     * @throws Exception If the provided argument is not appropriate for the operation
15
+     * @return $this The operation object, allowing multiple additions to be chained
16
+     **/
17
+    public function execute($value)
18
+    {
19
+        if (is_array($value)) {
20
+            $value = new Matrix($value);
21
+        }
22
+
23
+        if (is_object($value) && ($value instanceof Matrix)) {
24
+            return $this->addMatrix($value);
25
+        } elseif (is_numeric($value)) {
26
+            return $this->addScalar($value);
27
+        }
28
+
29
+        throw new Exception('Invalid argument for addition');
30
+    }
31
+
32
+    /**
33
+     * Execute the addition for a scalar
34
+     *
35
+     * @param mixed $value The numeric value to add to the current base value
36
+     * @return $this The operation object, allowing multiple additions to be chained
37
+     **/
38
+    protected function addScalar($value)
39
+    {
40
+        for ($row = 0; $row < $this->rows; ++$row) {
41
+            for ($column = 0; $column < $this->columns; ++$column) {
42
+                $this->matrix[$row][$column] += $value;
43
+            }
44
+        }
45
+
46
+        return $this;
47
+    }
48
+
49
+    /**
50
+     * Execute the addition for a matrix
51
+     *
52
+     * @param Matrix $value The numeric value to add to the current base value
53
+     * @return $this The operation object, allowing multiple additions to be chained
54
+     * @throws Exception If the provided argument is not appropriate for the operation
55
+     **/
56
+    protected function addMatrix(Matrix $value)
57
+    {
58
+        $this->validateMatchingDimensions($value);
59
+
60
+        for ($row = 0; $row < $this->rows; ++$row) {
61
+            for ($column = 0; $column < $this->columns; ++$column) {
62
+                $this->matrix[$row][$column] += $value->getValue($row + 1, $column + 1);
63
+            }
64
+        }
65
+
66
+        return $this;
67
+    }
68
+}

+ 0
- 0
vendor/markbaker/matrix/classes/src/Operators/DirectSum.php Visa fil


Vissa filer visades inte eftersom för många filer har ändrats